X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/25832b3f2bd566e5b68f066d97e0e79d2bbbd17f..c7206e642459697310df2051e76068307584aa14:/wxPython/src/windows.i diff --git a/wxPython/src/windows.i b/wxPython/src/windows.i index 85b0a9aafd..133605331c 100644 --- a/wxPython/src/windows.i +++ b/wxPython/src/windows.i @@ -63,6 +63,14 @@ public: (wxObjectEventFunction) &wxPyCallback::EventThunker, new wxPyCallback(func)); } + else if (func == Py_None) { + self->Disconnect(id, lastId, eventType, + (wxObjectEventFunction) + &wxPyCallback::EventThunker); + } + else { + PyErr_SetString(PyExc_TypeError, "Expected callable object or None."); + } } bool Disconnect(int id, int lastId = -1, @@ -73,30 +81,11 @@ public: } } -// %pragma(python) addtoclass = " -// _prop_list_ = {} -// " -// %pragma(python) addtoclass = " -// def __getattr__(self, name): -// pl = self._prop_list_ -// if pl.has_key(name): -// getFunc, setFunc = pl[name] -// if getFunc: -// return getattr(self, getFunc)() -// else: -// raise TypeError, '%s property is write-only' % name -// raise AttributeError, name - -// def __setattr__(self, name, value): -// pl = self._prop_list_ -// if pl.has_key(name): -// getFunc, setFunc = pl[name] -// if setFunc: -// return getattr(self, setFunc)(value) -// else: -// raise TypeError, '%s property is read-only' % name -// self.__dict__[name] = value -// " + %addmethods { + void _setOORInfo(PyObject* _self) { + self->SetClientObject(new wxPyClientData(_self)); + } + } }; @@ -107,6 +96,8 @@ public: wxValidator(); //~wxValidator(); + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" + wxValidator* Clone(); wxWindow* GetWindow(); void SetWindow(wxWindow* window); @@ -114,13 +105,6 @@ public: static bool IsSilent(); static void SetBellOnError(int doIt = TRUE); -// // Properties list -// %pragma(python) addtoclass = " -// _prop_list_ = { -// 'window' : ('GetWindow', 'SetWindow'), -// } -// _prop_list_.update(wxEvtHandler._prop_list_) -// " }; @@ -135,11 +119,11 @@ public: ~wxPyValidator() { } - wxObject* wxPyValidator::Clone() const { + wxObject* Clone() const { wxPyValidator* ptr = NULL; wxPyValidator* self = (wxPyValidator*)this; - bool doSave = wxPyRestoreThread(); + wxPyBeginBlockThreads(); if (self->m_myInst.findCallback("Clone")) { PyObject* ro; ro = self->m_myInst.callCallbackObj(Py_BuildValue("()")); @@ -148,13 +132,13 @@ public: Py_DECREF(ro); } } + wxPyEndBlockThreads(); + // 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; } @@ -178,9 +162,10 @@ class wxPyValidator : public wxValidator { public: wxPyValidator(); - void _setSelf(PyObject* self, PyObject* _class, int incref=TRUE); - %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyValidator, 1)" + void _setCallbackInfo(PyObject* self, PyObject* _class, int incref=TRUE); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyValidator, 1)" + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" }; //---------------------------------------------------------------------- @@ -189,14 +174,22 @@ public: class wxWindow : public wxEvtHandler { public: - wxWindow(wxWindow* parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, char* name = "panel"); + %name(wxPreWindow)wxWindow(); + + bool Create(wxWindow* parent, const wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + char* name = "panel"); + + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" + %pragma(python) addtomethod = "wxPreWindow:val._setOORInfo(val)" - %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)" void CaptureMouse(); void Center(int direction = wxBOTH); @@ -206,6 +199,8 @@ public: void CentreOnScreen(int direction = wxBOTH ); void CenterOnScreen(int direction = wxBOTH ); + void Clear(); + // (uses apply'ed INOUT typemap, see above) %name(ClientToScreenXY)void ClientToScreen(int* x, int* y); wxPoint ClientToScreen(const wxPoint& pt); @@ -239,7 +234,7 @@ public: wxLayoutConstraints * GetConstraints(); wxEvtHandler* GetEventHandler(); - wxFont& GetFont(); + wxFont GetFont(); wxColour GetForegroundColour(); wxWindow * GetGrandParent(); %addmethods { @@ -281,7 +276,7 @@ public: void Layout(); bool LoadFromResource(wxWindow* parent, const wxString& resourceName, const wxResourceTable* resourceTable = NULL); void Lower(); - void MakeModal(bool flag); + void MakeModal(bool flag=TRUE); %name(MoveXY)void Move(int x, int y); void Move(const wxPoint& point); @@ -293,6 +288,8 @@ public: void Raise(); void Refresh(bool eraseBackground = TRUE, const wxRect* rect = NULL); + void RefreshRect(const wxRect& rect); + void ReleaseMouse(); void RemoveChild(wxWindow* child); bool Reparent( wxWindow* newParent ); @@ -302,7 +299,6 @@ public: wxPoint ScreenToClient(const wxPoint& pt); 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); @@ -336,11 +332,11 @@ public: %name(SetClientSizeWH)void SetClientSize(int width, int height); void SetClientSize(const wxSize& size); //void SetPalette(wxPalette* palette); - void SetCursor(const wxCursor&cursor); + void SetCursor(const wxCursor& cursor); void SetEventHandler(wxEvtHandler* handler); void SetExtraStyle(long exStyle); void SetTitle(const wxString& title); - bool Show(bool show); + bool Show(bool show=TRUE); bool TransferDataFromWindow(); bool TransferDataToWindow(); bool Validate(); @@ -365,9 +361,11 @@ public: wxValidator* GetValidator(); void SetValidator(const wxValidator& validator); +#ifndef __WXMAC__ void SetDropTarget(wxDropTarget* target); wxDropTarget* GetDropTarget(); %pragma(python) addtomethod = "SetDropTarget:_args[0].thisown = 0" +#endif wxSize GetBestSize(); @@ -381,39 +379,35 @@ public: return val " + void Freeze(); + void Thaw(); + void Update(); + + wxString GetHelpText(); + void SetHelpText(const wxString& helpText); + + bool ScrollLines(int lines); + bool ScrollPages(int pages); + bool LineUp(); + bool LineDown(); + bool PageUp(); + bool PageDown(); + + static wxWindow* FindFocus(); + static int NewControlId(); + static int NextControlId(int id); + static int PrevControlId(int id); -// // Properties list -// %pragma(python) addtoclass = " -// _prop_list_ = { -// 'size' : ('GetSize', 'SetSize'), -// 'enabled' : ('IsEnabled', 'Enable'), -// 'background' : ('GetBackgroundColour', 'SetBackgroundColour'), -// 'foreground' : ('GetForegroundColour', 'SetForegroundColour'), -// 'children' : ('GetChildren', None), -// 'charHeight' : ('GetCharHeight', None), -// 'charWidth' : ('GetCharWidth', None), -// 'clientSize' : ('GetClientSize', 'SetClientSize'), -// 'font' : ('GetFont', 'SetFont'), -// 'grandParent' : ('GetGrandParent', None), -// 'handle' : ('GetHandle', None), -// 'label' : ('GetLabel', 'SetLabel'), -// 'name' : ('GetName', 'SetName'), -// 'parent' : ('GetParent', None), -// 'position' : ('GetPosition', 'SetPosition'), -// 'title' : ('GetTitle', 'SetTitle'), -// 'style' : ('GetWindowStyleFlag', 'SetWindowStyleFlag'), -// 'visible' : ('IsShown', 'Show'), -// 'toolTip' : ('GetToolTip', 'SetToolTip'), -// 'sizer' : ('GetSizer', 'SetSizer'), -// 'validator' : ('GetValidator', 'SetValidator'), -// 'dropTarget' : ('GetDropTarget', 'SetDropTarget'), -// 'caret' : ('GetCaret', 'SetCaret'), -// 'autoLayout' : ('GetAutoLayout', 'SetAutoLayout'), -// 'constraints' : ('GetConstraints', 'SetConstraints'), - -// } -// _prop_list_.update(wxEvtHandler._prop_list_) -// " + void SetAcceleratorTable(const wxAcceleratorTable& accel); + wxAcceleratorTable *GetAcceleratorTable(); + +#ifdef __WXMSW__ + // A way to do the native draw first... Too bad it isn't in wxGTK too. + void OnPaint(wxPaintEvent& event); +#endif + + wxButton* GetDefaultItem(); + void SetDefaultItem(wxButton *btn); }; @@ -433,12 +427,6 @@ def wxDLG_SZE(win, size_width, height=None): return win.ConvertDialogSizeToPixels(wxSize(size_width, height)) " -%inline %{ - wxWindow* wxWindow_FindFocus() { - return wxWindow::FindFocus(); - } -%} - #ifdef __WXMSW__ %inline %{ @@ -451,18 +439,6 @@ wxWindow* wxWindow_FromHWND(unsigned long hWnd) { %} #endif -%inline %{ - int wxWindow_NewControlId() { - return wxWindow::NewControlId(); - } - int wxWindow_NextControlId(int id) { - return wxWindow::NextControlId(id); - } - int wxWindow_PrevControlId(int id) { - return wxWindow::PrevControlId(id); - } -%} - //--------------------------------------------------------------------------- @@ -474,49 +450,28 @@ public: const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, const char* name = "panel"); + %name(wxPrePanel)wxPanel(); + + bool Create(wxWindow* parent, + const wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxTAB_TRAVERSAL, + const char* name = "panel"); - %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)" + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" + %pragma(python) addtomethod = "wxPrePanel:val._setOORInfo(val)" void InitDialog(); - wxButton* GetDefaultItem(); - void SetDefaultItem(wxButton *btn); }; //--------------------------------------------------------------------------- -class wxDialog : public wxPanel { -public: - wxDialog(wxWindow* parent, - const wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const char* name = "dialogBox"); - - %pragma(python) addtomethod = "__init__:#wx._StdDialogCallbacks(self)" - void Centre(int direction = wxBOTH); - void EndModal(int retCode); - wxString GetTitle(); - void Iconize(bool iconize); - bool IsIconized(); - void SetModal(bool flag); - bool IsModal(); - void SetTitle(const wxString& title); - bool Show(bool show); - int ShowModal(); - - int GetReturnCode(); - void SetReturnCode(int retCode); +// TODO: Add wrappers for the wxScrollHelper class, make wxScrolledWindow +// derive from it and wxPanel. - wxSizer* CreateTextSizer( const wxString &message ); - wxSizer* CreateButtonSizer( long flags ); - -}; - -//--------------------------------------------------------------------------- class wxScrolledWindow : public wxPanel { public: @@ -526,9 +481,17 @@ public: const wxSize& size = wxDefaultSize, long style = wxHSCROLL | wxVSCROLL, char* name = "scrolledWindow"); + %name(wxPreScrolledWindow)wxScrolledWindow(); - %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)" - %pragma(python) addtomethod = "__init__:#wx._StdOnScrollCallbacks(self)" + bool Create(wxWindow* parent, + const wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxHSCROLL | wxVSCROLL, + char* name = "scrolledWindow"); + + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" + %pragma(python) addtomethod = "wxPreScrolledWindow:val._setOORInfo(val)" void EnableScrolling(bool xScrolling, bool yScrolling); int GetScrollPageSize(int orient); @@ -544,7 +507,7 @@ public: void SetScrollPageSize(int orient, int pageSize); void SetTargetWindow(wxWindow* window); void GetViewStart(int* OUTPUT, int* OUTPUT); - void ViewStart(int* OUTPUT, int* OUTPUT); + %pragma(python) addtoclass = "ViewStart = GetViewStart" void CalcScrolledPosition( int x, int y, int *OUTPUT, int *OUTPUT); void CalcUnscrolledPosition( int x, int y, int *OUTPUT, int *OUTPUT); @@ -563,6 +526,8 @@ class wxMenu : public wxEvtHandler { public: wxMenu(const wxString& title = wxPyEmptyStr, long style = 0); + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" + void Append(int id, const wxString& item, const wxString& helpString = wxPyEmptyStr, int checkable = FALSE); @@ -632,6 +597,8 @@ class wxMenuBar : public wxWindow { public: wxMenuBar(long style = 0); + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" + bool Append(wxMenu *menu, const wxString& title); bool Insert(size_t pos, wxMenu *menu, const wxString& title); size_t GetMenuCount(); @@ -641,6 +608,7 @@ public: void EnableTop(size_t pos, bool enable); void SetLabelTop(size_t pos, const wxString& label); wxString GetLabelTop(size_t pos); + int FindMenu(const wxString& title); int FindMenuItem(const wxString& menuString, const wxString& itemString); %name(FindItemById)wxMenuItem* FindItem(int id/*, wxMenu **menu = NULL*/); void Enable(int id, bool enable); @@ -694,7 +662,7 @@ public: // wxOwnerDrawn methods #ifdef __WXMSW__ void SetFont(const wxFont& font); - wxFont& GetFont(); + wxFont GetFont(); void SetTextColour(const wxColour& colText); wxColour GetTextColour(); void SetBackgroundColour(const wxColour& colBack); @@ -702,7 +670,7 @@ public: void SetBitmaps(const wxBitmap& bmpChecked, const wxBitmap& bmpUnchecked = wxNullBitmap); void SetBitmap(const wxBitmap& bmpChecked); - const wxBitmap& GetBitmap(bool bChecked = TRUE); + wxBitmap GetBitmap(bool bChecked = TRUE); void SetMarginWidth(int nWidth); int GetMarginWidth(); static int GetDefaultMarginWidth();