X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e9159fe8e8f1b3653c506805cbb79280aa2a0f38..e4a7bbfc1ebf7434b7c291e6fb4a060dcd9b0aee:/wxPython/src/windows.i diff --git a/wxPython/src/windows.i b/wxPython/src/windows.i index c245360dc6..d63b8d5f36 100644 --- a/wxPython/src/windows.i +++ b/wxPython/src/windows.i @@ -33,6 +33,14 @@ %pragma(python) code = "import wx" +//---------------------------------------------------------------------- + +%{ + // Put some wx default wxChar* values into wxStrings. + DECLARE_DEF_STRING(PanelNameStr); + static const wxString wxPyEmptyString(wxT("")); +%} + //--------------------------------------------------------------------------- class wxEvtHandler : public wxObject { @@ -79,7 +87,7 @@ public: %addmethods { void _setOORInfo(PyObject* _self) { - self->SetClientObject(new wxPyClientData(_self)); + self->SetClientObject(new wxPyOORClientData(_self)); } } }; @@ -174,20 +182,19 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - char* name = "panel"); + const wxString& name = wxPyPanelNameStr); %name(wxPreWindow)wxWindow(); bool Create(wxWindow* parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - char* name = "panel"); + const wxString& name = wxPyPanelNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreWindow:val._setOORInfo(val)" - void CaptureMouse(); void Center(int direction = wxBOTH); void Centre(int direction = wxBOTH); void CentreOnParent(int direction = wxBOTH ); @@ -209,10 +216,17 @@ public: void DragAcceptFiles(bool accept); #endif void Enable(bool enable); - //bool FakePopupMenu(wxMenu* menu, int x, int y); + void Disable(); + + // Find child window by ID or name %name(FindWindowById) wxWindow* FindWindow(long id); %name(FindWindowByName) wxWindow* FindWindow(const wxString& name); + void Fit(); + + // set virtual size to satisfy children + void FitInside(); + wxColour GetBackgroundColour(); wxBorder GetBorder() const; @@ -282,7 +296,9 @@ public: bool IsShown(); bool IsTopLevel(); void Layout(); +#ifdef wxUSE_WX_RESOURCES bool LoadFromResource(wxWindow* parent, const wxString& resourceName, const wxResourceTable* resourceTable = NULL); +#endif void Lower(); void MakeModal(bool flag=TRUE); %name(MoveXY)void Move(int x, int y, int flags = wxSIZE_USE_EXISTING); @@ -305,7 +321,7 @@ public: void Refresh(bool eraseBackground = TRUE, const wxRect* rect = NULL); void RefreshRect(const wxRect& rect); - void ReleaseMouse(); + void AddChild(wxWindow* child); void RemoveChild(wxWindow* child); bool Reparent( wxWindow* newParent ); @@ -320,6 +336,7 @@ public: void SetConstraints(wxLayoutConstraints *constraints); void UnsetConstraints(wxLayoutConstraints *constraints); void SetFocus(); + void SetFocusFromKbd(); bool AcceptsFocus(); void SetFont(const wxFont& font); void SetForegroundColour(const wxColour& colour); @@ -343,11 +360,25 @@ public: } } - void SetSizeHints(int minW=-1, int minH=-1, int maxW=-1, int maxH=-1, int incW=-1, int incH=-1); + void SetSizeHints(int minW, int minH, + int maxW=-1, int maxH=-1, + int incW=-1, int incH=-1); + void SetVirtualSizeHints( int minW, int minH, + int maxW = -1, int maxH = -1 ); + + void SetVirtualSize( const wxSize &size ); + %name(SetVirtualSizeWH)void SetVirtualSize( int x, int y ); + + wxSize GetVirtualSize() const; + %name(GetVirtualSizeTuple)void GetVirtualSize( int *OUTPUT, int *OUTPUT ) const; + + wxSize GetBestVirtualSize(); + %name(SetClientSizeWH)void SetClientSize(int width, int height); void SetClientSize(const wxSize& size); //void SetPalette(wxPalette* palette); - void SetCursor(const wxCursor& cursor); + bool SetCursor(const wxCursor& cursor); + wxCursor& GetCursor(); void SetEventHandler(wxEvtHandler* handler); void SetExtraStyle(long exStyle); void SetTitle(const wxString& title); @@ -356,7 +387,6 @@ public: bool TransferDataToWindow(); void UpdateWindowUI(); bool Validate(); - void WarpPointer(int x, int y); %name(ConvertDialogPointToPixels) wxPoint ConvertDialogToPixels(const wxPoint& pt); %name(ConvertDialogSizeToPixels) wxSize ConvertDialogToPixels(const wxSize& sz); @@ -372,6 +402,7 @@ public: wxToolTip* GetToolTip(); void SetSizer(wxSizer* sizer, bool deleteOld=TRUE); + void SetSizerAndFit(wxSizer *sizer, bool deleteOld=TRUE); wxSizer* GetSizer(); // Track if this window is a member of a sizer @@ -381,21 +412,26 @@ 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(); wxSize GetMaxSize(); + // There are times (and windows) where 'Best' size and 'Min' size + // are vastly out of sync. This should be remedied somehow, but in + // the meantime, this method will return the larger of BestSize + // (the window's smallest legible size), and any user specified + // MinSize hint. + wxSize GetAdjustedBestSize(); + void SetCaret(wxCaret *caret); wxCaret *GetCaret(); %pragma(python) addtoclass = "# replaces broken shadow method def GetCaret(self, *_args, **_kwargs): from misc2 import wxCaretPtr - val = apply(windowsc.wxWindow_GetCaret,(self,) + _args, _kwargs) + val = windowsc.wxWindow_GetCaret(self, *_args, **_kwargs) if val: val = wxCaretPtr(val) return val " @@ -430,6 +466,26 @@ public: wxWindow* GetDefaultItem(); wxWindow* SetDefaultItem(wxWindow *btn); + void SetTmpDefaultItem(wxWindow *win); + + // move the mouse to the specified position + void WarpPointer(int x, int y); + + // start or end mouse capture, these functions maintain the stack of + // windows having captured the mouse and after calling ReleaseMouse() + // the mouse is not released but returns to the window which had had + // captured it previously (if any) + void CaptureMouse(); + void ReleaseMouse(); + + // get the window which currently captures the mouse or NULL + static wxWindow *GetCapture(); + + // does this window have the capture? + bool HasCapture() const; + + void SetThemeEnabled(bool enable); + bool GetThemeEnabled(); }; @@ -462,6 +518,27 @@ wxWindow* wxWindow_FromHWND(unsigned long hWnd) { #endif +// Unfortunatly the names of these new static methods clash with the +// names wxPython has been using forever for the overloaded +// wxWindow::FindWindow, so instead of swigging them as statics create +// standalone functions for them. +%inline %{ +wxWindow* wxFindWindowById( long id, const wxWindow *parent = NULL ) { + return wxWindow::FindWindowById(id, parent); +} + +wxWindow* wxFindWindowByName( const wxString& name, + const wxWindow *parent = NULL ) { + return wxWindow::FindWindowByName(name, parent); +} + +wxWindow* wxFindWindowByLabel( const wxString& label, + const wxWindow *parent = NULL ) { + return wxWindow::FindWindowByLabel(label, parent); +} +%} + + //--------------------------------------------------------------------------- class wxPanel : public wxWindow { @@ -471,7 +548,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, - const char* name = "panel"); + const wxString& name = wxPyPanelNameStr); %name(wxPrePanel)wxPanel(); bool Create(wxWindow* parent, @@ -479,7 +556,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, - const char* name = "panel"); + const wxString& name = wxPyPanelNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPrePanel:val._setOORInfo(val)" @@ -502,7 +579,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxHSCROLL | wxVSCROLL, - char* name = "scrolledWindow"); + const wxString& name = wxPyPanelNameStr); %name(wxPreScrolledWindow)wxScrolledWindow(); bool Create(wxWindow* parent, @@ -510,7 +587,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxHSCROLL | wxVSCROLL, - char* name = "scrolledWindow"); + const wxString& name = wxPyPanelNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreScrolledWindow:val._setOORInfo(val)" @@ -519,7 +596,6 @@ public: int GetScrollPageSize(int orient); void GetScrollPixelsPerUnit(int* OUTPUT, int* OUTPUT); wxWindow* GetTargetWindow(); - void GetVirtualSize(int* OUTPUT, int* OUTPUT); bool IsRetained(); void PrepareDC(wxDC& dc); void Scroll(int x, int y); @@ -540,17 +616,17 @@ public: %pragma(python) addtoclass = " def CalcScrolledPosition(self, *args): if len(args) == 1: - return apply(self.CalcScrolledPosition1, args) + return self.CalcScrolledPosition1(*args) elif len(args) == 2: - return apply(self.CalcScrolledPosition2, args) + return self.CalcScrolledPosition2(*args) else: raise TypeError, 'Invalid parameters: only (x,y) or (point) allowed' def CalcUnscrolledPosition(self, *args): if len(args) == 1: - return apply(self.CalcUnscrolledPosition1, args) + return self.CalcUnscrolledPosition1(*args) elif len(args) == 2: - return apply(self.CalcUnscrolledPosition2, args) + return self.CalcUnscrolledPosition2(*args) else: raise TypeError, 'Invalid parameters: only (x,y) or (point) allowed' " @@ -562,6 +638,10 @@ public: void AdjustScrollbars(); bool Layout(); + + // Set the x, y scrolling increments. + void SetScrollRate( int xstep, int ystep ); + }; //---------------------------------------------------------------------- @@ -569,62 +649,62 @@ public: class wxMenu : public wxEvtHandler { public: - wxMenu(const wxString& title = wxEmptyString, long style = 0); + wxMenu(const wxString& title = wxPyEmptyString, long style = 0); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" void Append(int id, const wxString& item, - const wxString& helpString = wxEmptyString, - wxItemKind kind = wxItem_Normal); + const wxString& helpString = wxPyEmptyString, + wxItemKind kind = wxITEM_NORMAL); %name(AppendMenu)void Append(int id, const wxString& item, wxMenu *subMenu, - const wxString& helpString = wxEmptyString); + const wxString& helpString = wxPyEmptyString); %name(AppendItem)void Append(const wxMenuItem* item); void AppendCheckItem(int id, const wxString& text, - const wxString& help = wxEmptyString); + const wxString& help = wxPyEmptyString); void AppendRadioItem(int id, const wxString& text, - const wxString& help = wxEmptyString); + const wxString& help = wxPyEmptyString); void AppendSeparator(); void Insert(size_t pos, int id, const wxString& text, - const wxString& help = wxEmptyString, - wxItemKind kind = wxItem_Normal); + const wxString& help = wxPyEmptyString, + wxItemKind kind = wxITEM_NORMAL); void InsertSeparator(size_t pos); void InsertCheckItem(size_t pos, int id, const wxString& text, - const wxString& help = wxEmptyString); + const wxString& help = wxPyEmptyString); void InsertRadioItem(size_t pos, int id, const wxString& text, - const wxString& help = wxEmptyString); + const wxString& help = wxPyEmptyString); %name(InsertMenu)void Insert(size_t pos, int id, const wxString& text, wxMenu *submenu, - const wxString& help = wxEmptyString); + const wxString& help = wxPyEmptyString); %name(InsertItem)bool Insert(size_t pos, wxMenuItem *item); void Prepend(int id, const wxString& text, - const wxString& help = wxEmptyString, - wxItemKind kind = wxItem_Normal); + const wxString& help = wxPyEmptyString, + wxItemKind kind = wxITEM_NORMAL); void PrependSeparator(); void PrependCheckItem(int id, const wxString& text, - const wxString& help = wxEmptyString); + const wxString& help = wxPyEmptyString); void PrependRadioItem(int id, const wxString& text, - const wxString& help = wxEmptyString); + const wxString& help = wxPyEmptyString); %name(PrependMenu)void Prepend(int id, const wxString& text, wxMenu *submenu, - const wxString& help = wxEmptyString); + const wxString& help = wxPyEmptyString); %name(PrependItem)void Prepend(wxMenuItem *item); @@ -653,8 +733,6 @@ public: %name(RemoveItem) wxMenuItem *Remove(wxMenuItem *item); - - %addmethods { void Destroy() { delete self; } } @@ -700,6 +778,7 @@ public: wxMenu *Replace(size_t pos, wxMenu *menu, const wxString& title); wxMenu *Remove(size_t pos); void EnableTop(size_t pos, bool enable); + bool IsEnabledTop(size_t pos); void SetLabelTop(size_t pos, const wxString& label); wxString GetLabelTop(size_t pos); int FindMenu(const wxString& title); @@ -724,13 +803,14 @@ public: class wxMenuItem : public wxObject { public: wxMenuItem(wxMenu* parentMenu=NULL, int id=wxID_SEPARATOR, - const wxString& text = wxEmptyString, - const wxString& help = wxEmptyString, - wxItemKind kind = wxItem_Normal, + const wxString& text = wxPyEmptyString, + const wxString& help = wxPyEmptyString, + wxItemKind kind = wxITEM_NORMAL, wxMenu* subMenu = NULL); wxMenu *GetMenu(); + void SetMenu(wxMenu* menu); void SetId(int id); int GetId(); bool IsSeparator(); @@ -766,18 +846,18 @@ public: wxColour GetBackgroundColour(); void SetBitmaps(const wxBitmap& bmpChecked, const wxBitmap& bmpUnchecked = wxNullBitmap); - void SetBitmap(const wxBitmap& bmpChecked); - wxBitmap GetBitmap(bool bChecked = TRUE); + //void SetBitmap(const wxBitmap& bmpChecked); + //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 + + void SetBitmap(const wxBitmap& bitmap); + const wxBitmap& GetBitmap(); + }; //---------------------------------------------------------------------------