X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..bf44306ebca5d26e204ef17851516d844bc2f0a7:/wxPython/src/windows.i diff --git a/wxPython/src/windows.i b/wxPython/src/windows.i index 1867774874..68734a57dd 100644 --- a/wxPython/src/windows.i +++ b/wxPython/src/windows.i @@ -16,6 +16,7 @@ %{ #include "helpers.h" #include +#include %} //---------------------------------------------------------------------- @@ -31,10 +32,17 @@ %pragma(python) code = "import wx" + +%{ + static wxString wxPyEmptyStr(""); +%} + //--------------------------------------------------------------------------- -class wxEvtHandler { +class wxEvtHandler : public wxObject { public: + wxEvtHandler(); + bool ProcessEvent(wxEvent& event); void AddPendingEvent(wxEvent& event); //bool SearchEventTable(wxEventTable& table, wxEvent& event); @@ -63,34 +71,8 @@ public: (wxObjectEventFunction) &wxPyCallback::EventThunker); } - } - %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 -// " }; @@ -105,24 +87,11 @@ public: wxWindow* GetWindow(); void SetWindow(wxWindow* window); - // Properties list - %pragma(python) addtoclass = " - _prop_list_ = { - 'window' : ('GetWindow', 'SetWindow'), - } - _prop_list_.update(wxEvtHandler._prop_list_) - " -}; + static bool IsSilent(); + static void SetBellOnError(int doIt = TRUE); -%inline %{ - bool wxValidator_IsSilent() { - return wxValidator::IsSilent(); - } +}; - void wxValidator_SetBellOnError(int doIt = TRUE) { - wxValidator::SetBellOnError(doIt); - } -%} //---------------------------------------------------------------------- %{ @@ -131,16 +100,15 @@ class wxPyValidator : public wxValidator { public: wxPyValidator() { } -// wxPyValidator(const wxPyValidator& other); ~wxPyValidator() { } - wxObject* wxPyValidator::Clone() const { + wxObject* Clone() const { wxPyValidator* ptr = NULL; wxPyValidator* self = (wxPyValidator*)this; - bool doSave = wxPyRestoreThread(); + wxPyTState* state = wxPyBeginBlockThreads(); if (self->m_myInst.findCallback("Clone")) { PyObject* ro; ro = self->m_myInst.callCallbackObj(Py_BuildValue("()")); @@ -149,22 +117,22 @@ public: Py_DECREF(ro); } } + wxPyEndBlockThreads(state); + // 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); @@ -178,12 +146,9 @@ IMPLEMENT_DYNAMIC_CLASS(wxPyValidator, wxValidator); class wxPyValidator : public wxValidator { public: wxPyValidator(); -// ~wxPyValidator(); - - %addmethods { void Destroy() { delete self; } } void _setSelf(PyObject* self, PyObject* _class, int incref=TRUE); - %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyValidator, 0)" + %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyValidator, 1)" }; @@ -193,20 +158,28 @@ public: class wxWindow : public wxEvtHandler { public: - wxWindow(wxWindow* parent, const wxWindowID id, - const wxPoint& pos = wxPyDefaultPosition, - const wxSize& size = wxPyDefaultSize, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, long style = 0, char* name = "panel"); + %name(wxPreWindow)wxWindow(); - %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)" + bool Create(wxWindow* parent, const wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + char* name = "panel"); void CaptureMouse(); void Center(int direction = wxBOTH); void Centre(int direction = wxBOTH); void CentreOnParent(int direction = wxBOTH ); void CenterOnParent(int direction = wxBOTH ); + 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); @@ -215,6 +188,7 @@ public: bool Close(int force = FALSE); bool Destroy(); void DestroyChildren(); + bool IsBeingDeleted(); #ifdef __WXMSW__ void DragAcceptFiles(bool accept); #endif @@ -282,7 +256,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); @@ -294,6 +268,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 ); @@ -303,7 +279,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); @@ -327,6 +302,10 @@ public: void SetPosition(const wxPoint& pos) { self->Move(pos); } + + void SetRect(const wxRect& rect, int sizeFlags=wxSIZE_AUTO) { + self->SetSize(rect, sizeFlags); + } } void SetSizeHints(int minW=-1, int minH=-1, int maxW=-1, int maxH=-1, int incW=-1, int incH=-1); @@ -335,6 +314,7 @@ public: //void SetPalette(wxPalette* palette); void SetCursor(const wxCursor&cursor); void SetEventHandler(wxEvtHandler* handler); + void SetExtraStyle(long exStyle); void SetTitle(const wxString& title); bool Show(bool show); bool TransferDataFromWindow(); @@ -377,42 +357,29 @@ public: return val " + void Freeze(); + void Thaw(); + void Update(); - // 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'), + wxString GetHelpText(); + void SetHelpText(const wxString& helpText); - } - _prop_list_.update(wxEvtHandler._prop_list_) - " + 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); + + void SetAcceleratorTable(const wxAcceleratorTable& accel); + wxAcceleratorTable *GetAcceleratorTable(); }; -//%clear int* x, int* y; @@ -430,14 +397,8 @@ def wxDLG_SZE(win, size_width, height=None): return win.ConvertDialogSizeToPixels(wxSize(size_width, height)) " -#ifdef __WXMSW__ -%inline %{ - wxWindow* wxWindow_FindFocus() { - return wxWindow::FindFocus(); - } -%} - +#ifdef __WXMSW__ %inline %{ wxWindow* wxWindow_FromHWND(unsigned long hWnd) { wxWindow* win = new wxWindow; @@ -448,18 +409,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); - } -%} - //--------------------------------------------------------------------------- @@ -467,69 +416,48 @@ class wxPanel : public wxWindow { public: wxPanel(wxWindow* parent, const wxWindowID id, - const wxPoint& pos = wxPyDefaultPosition, - const wxSize& size = wxPyDefaultSize, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, const char* name = "panel"); + %name(wxPrePanel)wxPanel(); - %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)" + bool Create(wxWindow* parent, + const wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxTAB_TRAVERSAL, + const char* name = "panel"); void InitDialog(); wxButton* GetDefaultItem(); void SetDefaultItem(wxButton *btn); - // fix some SWIG trouble... - %pragma(python) addtoclass = " - def GetDefaultItem(self): - import controls - val = windowsc.wxPanel_GetDefaultItem(self.this) - val = controls.wxButtonPtr(val) - return val -" }; //--------------------------------------------------------------------------- -class wxDialog : public wxPanel { -public: - wxDialog(wxWindow* parent, - const wxWindowID id, - const wxString& title, - const wxPoint& pos = wxPyDefaultPosition, - const wxSize& size = wxPyDefaultSize, - 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. -//--------------------------------------------------------------------------- class wxScrolledWindow : public wxPanel { public: wxScrolledWindow(wxWindow* parent, const wxWindowID id = -1, - const wxPoint& pos = wxPyDefaultPosition, - const wxSize& size = wxPyDefaultSize, + const wxPoint& pos = wxDefaultPosition, + 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"); void EnableScrolling(bool xScrolling, bool yScrolling); int GetScrollPageSize(int orient); @@ -545,11 +473,16 @@ 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); + void SetScale(double xs, double ys); + double GetScaleX(); + double GetScaleY(); + + void AdjustScrollbars(); }; //---------------------------------------------------------------------- @@ -626,7 +559,7 @@ public: class wxMenuBar : public wxWindow { public: - wxMenuBar(); + wxMenuBar(long style = 0); bool Append(wxMenu *menu, const wxString& title); bool Insert(size_t pos, wxMenu *menu, const wxString& title); @@ -637,6 +570,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); @@ -655,7 +589,7 @@ public: //---------------------------------------------------------------------- -class wxMenuItem { +class wxMenuItem : public wxObject { public: wxMenuItem(wxMenu* parentMenu=NULL, int id=wxID_SEPARATOR, const wxString& text = wxPyEmptyStr, @@ -685,6 +619,30 @@ public: wxAcceleratorEntry *GetAccel(); void SetAccel(wxAcceleratorEntry *accel); + static wxString GetLabelFromText(const wxString& text); + + // wxOwnerDrawn methods +#ifdef __WXMSW__ + void SetFont(const wxFont& font); + wxFont& GetFont(); + void SetTextColour(const wxColour& colText); + wxColour GetTextColour(); + void SetBackgroundColour(const wxColour& colBack); + wxColour GetBackgroundColour(); + void SetBitmaps(const wxBitmap& bmpChecked, + const wxBitmap& bmpUnchecked = wxNullBitmap); + void SetBitmap(const wxBitmap& bmpChecked); + const wxBitmap& GetBitmap(bool bChecked = TRUE); + void SetMarginWidth(int nWidth); + int GetMarginWidth(); + static int GetDefaultMarginWidth(); + //void SetName(const wxString& strName); + //const wxString& GetName(); + //void SetCheckable(bool checkable); + //bool IsCheckable(); + bool IsOwnerDrawn(); + void ResetOwnerDrawn(); +#endif }; //---------------------------------------------------------------------------