X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d426c97e9a8563ff5539a9c86acf2cfb03fbf5bc..c5fb56c07a3718798459a69c74b3124ab58c65b5:/utils/wxPython/src/windows.i diff --git a/utils/wxPython/src/windows.i b/utils/wxPython/src/windows.i index 1a8ef667e5..d4ebce8bbd 100644 --- a/utils/wxPython/src/windows.i +++ b/utils/wxPython/src/windows.i @@ -28,14 +28,25 @@ %import misc.i %import gdi.i -%pragma(python) code = "import wx" +%pragma(python) code = "import wx" //--------------------------------------------------------------------------- class wxEvtHandler { public: bool ProcessEvent(wxEvent& event); + //bool SearchEventTable(wxEventTable& table, wxEvent& event); + + bool GetEvtHandlerEnabled(); + void SetEvtHandlerEnabled(bool enabled); + + wxEvtHandler* GetNextHandler(); + wxEvtHandler* GetPreviousHandler(); + void SetNextHandler(wxEvtHandler* handler); + void SetPreviousHandler(wxEvtHandler* handler); + + %addmethods { void Connect( int id, int lastId, int eventType, PyObject* func) { if (PyCallable_Check(func)) { @@ -48,6 +59,91 @@ public: }; +//---------------------------------------------------------------------- + +class wxValidator : public wxEvtHandler { +public: + wxValidator(); + //~wxValidator(); + + wxValidator* Clone(); + wxWindow* GetWindow(); + void SetWindow(wxWindow* window); +}; + +%inline %{ + bool wxValidator_IsSilent() { + return wxValidator::IsSilent(); + } + + void wxValidator_SetBellOnError(int doIt = TRUE) { + wxValidator::SetBellOnError(doIt); + } +%} + +//---------------------------------------------------------------------- +%{ +class wxPyValidator : public wxValidator { + DECLARE_DYNAMIC_CLASS(wxPyValidator); +public: + wxPyValidator() { + } +// wxPyValidator(const wxPyValidator& other); + + ~wxPyValidator() { + } + + wxObject* wxPyValidator::Clone() const { + wxPyValidator* ptr = NULL; + wxPyValidator* self = (wxPyValidator*)this; + + bool doSave = wxPyRestoreThread(); + if (self->m_myInst.findCallback("Clone")) { + PyObject* ro; + ro = self->m_myInst.callCallbackObj(Py_BuildValue("()")); + SWIG_GetPtrObj(ro, (void **)&ptr, "_wxPyValidator_p"); + } + // This is very dangerous!!! But is the only way I could find + // to squash a memory leak. Currently it is okay, but if the + // validator architecture in wxWindows ever changes, problems + // could arise. + delete self; + + wxPySaveThread(doSave); + return ptr; +} + + + DEC_PYCALLBACK_BOOL_WXWIN(Validate); + DEC_PYCALLBACK_BOOL_(TransferToWindow); + DEC_PYCALLBACK_BOOL_(TransferFromWindow); + + PYPRIVATE; +// PyObject* m_data; +}; + +IMP_PYCALLBACK_BOOL_WXWIN(wxPyValidator, wxValidator, Validate); +IMP_PYCALLBACK_BOOL_(wxPyValidator, wxValidator, TransferToWindow); +IMP_PYCALLBACK_BOOL_(wxPyValidator, wxValidator, TransferFromWindow); + +IMPLEMENT_DYNAMIC_CLASS(wxPyValidator, wxValidator); + +%} + +class wxPyValidator : public wxValidator { +public: + wxPyValidator(); +// ~wxPyValidator(); + + %addmethods { + void Destroy() { delete self; } + } + + void _setSelf(PyObject* self, int incref=TRUE); + %pragma(python) addtomethod = "__init__:self._setSelf(self, 0)" + +}; + //---------------------------------------------------------------------- %apply int * INOUT { int* x, int* y }; @@ -94,7 +190,6 @@ public: } } - int GetCharHeight(); int GetCharWidth(); %name(GetClientSizeTuple) void GetClientSize(int *OUTPUT, int *OUTPUT); @@ -105,6 +200,11 @@ public: wxFont& GetFont(); wxColour GetForegroundColour(); wxWindow * GetGrandParent(); + %addmethods { + long GetHandle() { + return (long)self->GetHandle(); + } + } int GetId(); wxString GetLabel(); void SetLabel(const wxString& label); @@ -156,9 +256,12 @@ public: void ScrollWindow(int dx, int dy, const wxRect* rect = NULL); void SetAcceleratorTable(const wxAcceleratorTable& accel); void SetAutoLayout(bool autoLayout); + bool GetAutoLayout(); void SetBackgroundColour(const wxColour& colour); void SetConstraints(wxLayoutConstraints *constraints); + void UnsetConstraints(wxLayoutConstraints *constraints); void SetFocus(); + bool AcceptsFocus(); void SetFont(const wxFont& font); void SetForegroundColour(const wxColour& colour); void SetId(int id); @@ -202,6 +305,11 @@ public: %name(SetToolTipString)void SetToolTip(const wxString &tip); void SetToolTip(wxToolTip *tooltip); wxToolTip* GetToolTip(); + + void SetSizer(wxSizer* sizer); + wxValidator* GetValidator(); + void SetValidator(const wxValidator& validator); + }; //%clear int* x, int* y; @@ -322,6 +430,10 @@ public: int noUnitsX, int noUnitsY, int xPos = 0, int yPos = 0); void ViewStart(int* OUTPUT, int* OUTPUT); + + void CalcScrolledPosition( int x, int y, int *OUTPUT, int *OUTPUT); + void CalcUnscrolledPosition( int x, int y, int *OUTPUT, int *OUTPUT); + }; //---------------------------------------------------------------------- @@ -336,9 +448,7 @@ public: int checkable = FALSE); %name(AppendMenu)void Append(int id, const wxString& item, wxMenu *subMenu, const wxString& helpString = wxPyEmptyStr); -#ifndef __WXGTK__ %name(AppendItem)void Append(const wxMenuItem* item); -#endif void AppendSeparator(); void Break(); @@ -384,22 +494,26 @@ public: void Append(wxMenu *menu, const wxString& title); void Check(int id, bool flag); - bool Checked(int id); +// bool Checked(int id); void Enable(int id, bool enable); - bool Enabled(int id); +// bool Enabled(int id); + bool IsChecked(int id); + bool IsEnabled(int id); int FindMenuItem(const wxString& menuString, const wxString& itemString); wxMenuItem * FindItemForId(int id); -#ifdef __WXMSW__ + void SetLabel(int id, const wxString& label); void EnableTop(int pos, bool enable); wxString GetHelpString(int id); wxString GetLabel(int id); void SetHelpString(int id, const wxString& helpString); - void SetLabel(int id, const wxString& label); wxString GetLabelTop(int pos); void SetLabelTop(int pos, const wxString& label); -#endif int GetMenuCount(); wxMenu* GetMenu(int i); + void Refresh(); + wxMenu *Replace(size_t pos, wxMenu *menu, const wxString& title); + wxMenu *Remove(size_t pos); + }; @@ -407,29 +521,29 @@ public: class wxMenuItem { public: -#ifndef __WXGTK__ +//#ifndef __WXGTK__ wxMenuItem(wxMenu* parentMenu=NULL, int id=ID_SEPARATOR, const wxString& text = wxPyEmptyStr, const wxString& helpString = wxPyEmptyStr, bool checkable = FALSE, wxMenu* subMenu = NULL); -#else - wxMenuItem(); -#endif +//#else +// wxMenuItem(); +//#endif bool IsSeparator(); bool IsEnabled(); bool IsChecked(); bool IsCheckable(); + bool IsSubMenu(); int GetId(); + void SetId(int id); wxMenu* GetSubMenu(); - void SetName(const wxString& strName); - wxString GetName(); wxString GetHelp(); void SetHelp(const wxString& strHelp); void Enable(bool bDoEnable = TRUE); void Check(bool bDoCheck = TRUE); -#ifdef __WXMSW__ +//#ifdef __WXMSW__ wxColour& GetBackgroundColour(); wxBitmap GetBitmap(bool checked = TRUE); wxFont& GetFont(); @@ -439,9 +553,13 @@ public: void SetBitmaps(const wxBitmap& checked, const wxBitmap& unchecked = wxNullBitmap); void SetFont(const wxFont& font); void SetMarginWidth(int width); + void SetText(const wxString& str); + const wxString& GetText(); void SetTextColour(const wxColour& colour); void DeleteSubMenu(); -#endif + void SetCheckable(bool checkable); + void SetSubMenu(wxMenu *menu); +//#endif }; //---------------------------------------------------------------------------