X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c6c593e88d75fe89320eafddeb547b3c058c34d8..4e1c35f810f574af79e649fa37171dfa7fc775ee:/wxPython/src/windows.i diff --git a/wxPython/src/windows.i b/wxPython/src/windows.i index 4867c07566..484cfeb360 100644 --- a/wxPython/src/windows.i +++ b/wxPython/src/windows.i @@ -33,8 +33,12 @@ %pragma(python) code = "import wx" +//---------------------------------------------------------------------- + %{ - static wxString wxPyEmptyStr(""); + // Put some wx default wxChar* values into wxStrings. + DECLARE_DEF_STRING(PanelNameStr); + static const wxString wxPyEmptyString(wxT("")); %} //--------------------------------------------------------------------------- @@ -83,7 +87,7 @@ public: %addmethods { void _setOORInfo(PyObject* _self) { - self->SetClientObject(new wxPyClientData(_self)); + self->SetClientObject(new wxPyOORClientData(_self)); } } }; @@ -178,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 ); @@ -218,6 +221,7 @@ public: %name(FindWindowByName) wxWindow* FindWindow(const wxString& name); void Fit(); wxColour GetBackgroundColour(); + wxBorder GetBorder() const; //wxList& GetChildren(); %addmethods { @@ -231,6 +235,15 @@ public: int GetCharWidth(); %name(GetClientSizeTuple) void GetClientSize(int *OUTPUT, int *OUTPUT); wxSize GetClientSize(); + + // get the origin of the client area of the window relative to the + // window top left corner (the client area may be shifted because of + // the borders, scrollbars, other decorations...) + wxPoint GetClientAreaOrigin() const; + + // get the client rectangle in window (i.e. client) coordinates + wxRect GetClientRect() const; + wxLayoutConstraints * GetConstraints(); wxEvtHandler* GetEventHandler(); @@ -264,7 +277,9 @@ public: long GetWindowStyleFlag(); void SetWindowStyleFlag(long style); void SetWindowStyle(long style); + bool HasScrollbar(int orient) const; bool Hide(); + wxHitTest HitTest(const wxPoint& pt); void InitDialog(); bool IsEnabled(); bool IsExposed( int x, int y, int w=0, int h=0 ); @@ -277,8 +292,8 @@ public: bool LoadFromResource(wxWindow* parent, const wxString& resourceName, const wxResourceTable* resourceTable = NULL); void Lower(); void MakeModal(bool flag=TRUE); - %name(MoveXY)void Move(int x, int y); - void Move(const wxPoint& point); + %name(MoveXY)void Move(int x, int y, int flags = wxSIZE_USE_EXISTING); + void Move(const wxPoint& point, int flags = wxSIZE_USE_EXISTING); wxEvtHandler* PopEventHandler(bool deleteHandler = FALSE); void PushEventHandler(wxEvtHandler* handler); @@ -297,7 +312,6 @@ public: void Refresh(bool eraseBackground = TRUE, const wxRect* rect = NULL); void RefreshRect(const wxRect& rect); - void ReleaseMouse(); void RemoveChild(wxWindow* child); bool Reparent( wxWindow* newParent ); @@ -312,6 +326,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); @@ -326,8 +341,8 @@ public: self->SetSize(size); } - void SetPosition(const wxPoint& pos) { - self->Move(pos); + void SetPosition(const wxPoint& pos, int flags = wxSIZE_USE_EXISTING) { + self->Move(pos, flags); } void SetRect(const wxRect& rect, int sizeFlags=wxSIZE_AUTO) { @@ -335,7 +350,18 @@ 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; + %name(SetClientSizeWH)void SetClientSize(int width, int height); void SetClientSize(const wxSize& size); //void SetPalette(wxPalette* palette); @@ -346,8 +372,8 @@ public: bool Show(bool show=TRUE); bool TransferDataFromWindow(); 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); @@ -362,9 +388,14 @@ public: void SetToolTip(wxToolTip *tooltip); wxToolTip* GetToolTip(); - void SetSizer(wxSizer* sizer); + 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 + void SetContainingSizer(wxSizer* sizer); + wxSizer *GetContainingSizer() const; + wxValidator* GetValidator(); void SetValidator(const wxValidator& validator); @@ -375,6 +406,7 @@ public: #endif wxSize GetBestSize(); + wxSize GetMaxSize(); void SetCaret(wxCaret *caret); wxCaret *GetCaret(); @@ -392,6 +424,7 @@ public: wxString GetHelpText(); void SetHelpText(const wxString& helpText); + void SetHelpTextForId(const wxString& text); bool ScrollLines(int lines); bool ScrollPages(int pages); @@ -413,8 +446,25 @@ public: void OnPaint(wxPaintEvent& event); #endif - wxButton* GetDefaultItem(); - void SetDefaultItem(wxButton *btn); + wxWindow* GetDefaultItem(); + wxWindow* SetDefaultItem(wxWindow *btn); + + + // 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; }; @@ -456,7 +506,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, @@ -464,7 +514,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)" @@ -487,7 +537,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, @@ -495,7 +545,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)" @@ -504,7 +554,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); @@ -516,14 +565,41 @@ public: void GetViewStart(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); + %name(CalcScrolledPosition1)wxPoint CalcScrolledPosition(const wxPoint& pt); + %name(CalcScrolledPosition2)void CalcScrolledPosition( int x, int y, int *OUTPUT, int *OUTPUT); + + %name(CalcUnscrolledPosition1)wxPoint CalcUnscrolledPosition(const wxPoint& pt); + %name(CalcUnscrolledPosition2)void CalcUnscrolledPosition( int x, int y, int *OUTPUT, int *OUTPUT); + + %pragma(python) addtoclass = " + def CalcScrolledPosition(self, *args): + if len(args) == 1: + return apply(self.CalcScrolledPosition1, args) + elif len(args) == 2: + return apply(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) + elif len(args) == 2: + return apply(self.CalcUnscrolledPosition2, args) + else: + raise TypeError, 'Invalid parameters: only (x,y) or (point) allowed' +" void SetScale(double xs, double ys); double GetScaleX(); double GetScaleY(); void AdjustScrollbars(); + + bool Layout(); + + // Set the x, y scrolling increments. + void SetScrollRate( int xstep, int ystep ); + }; //---------------------------------------------------------------------- @@ -531,18 +607,65 @@ public: class wxMenu : public wxEvtHandler { public: - wxMenu(const wxString& title = wxPyEmptyStr, 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 = wxPyEmptyStr, - int checkable = FALSE); + const wxString& helpString = wxPyEmptyString, + wxItemKind kind = wxITEM_NORMAL); %name(AppendMenu)void Append(int id, const wxString& item, wxMenu *subMenu, - const wxString& helpString = wxPyEmptyStr); + const wxString& helpString = wxPyEmptyString); %name(AppendItem)void Append(const wxMenuItem* item); - + void AppendCheckItem(int id, + const wxString& text, + const wxString& help = wxPyEmptyString); + void AppendRadioItem(int id, + const wxString& text, + const wxString& help = wxPyEmptyString); void AppendSeparator(); + + + void Insert(size_t pos, + int id, + const wxString& text, + 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 = wxPyEmptyString); + void InsertRadioItem(size_t pos, + int id, + const wxString& text, + const wxString& help = wxPyEmptyString); + %name(InsertMenu)void Insert(size_t pos, + int id, + const wxString& text, + wxMenu *submenu, + const wxString& help = wxPyEmptyString); + %name(InsertItem)bool Insert(size_t pos, wxMenuItem *item); + + + void Prepend(int id, + const wxString& text, + const wxString& help = wxPyEmptyString, + wxItemKind kind = wxITEM_NORMAL); + void PrependSeparator(); + void PrependCheckItem(int id, + const wxString& text, + const wxString& help = wxPyEmptyString); + void PrependRadioItem(int id, + const wxString& text, + const wxString& help = wxPyEmptyString); + %name(PrependMenu)void Prepend(int id, + const wxString& text, + wxMenu *submenu, + const wxString& help = wxPyEmptyString); + %name(PrependItem)void Prepend(wxMenuItem *item); + + void Break(); void Check(int id, bool flag); bool IsChecked(int id); @@ -564,10 +687,12 @@ public: bool Delete(int id); %name(DeleteItem)bool Delete(wxMenuItem *item); - bool Insert(size_t pos, wxMenuItem *item); wxMenuItem *Remove(int id); %name(RemoveItem) wxMenuItem *Remove(wxMenuItem *item); + + + %addmethods { void Destroy() { delete self; } } @@ -637,9 +762,10 @@ public: class wxMenuItem : public wxObject { public: wxMenuItem(wxMenu* parentMenu=NULL, int id=wxID_SEPARATOR, - const wxString& text = wxPyEmptyStr, - const wxString& help = wxPyEmptyStr, - bool isCheckable = FALSE, wxMenu* subMenu = NULL); + const wxString& text = wxPyEmptyString, + const wxString& help = wxPyEmptyString, + wxItemKind kind = wxITEM_NORMAL, + wxMenu* subMenu = NULL); wxMenu *GetMenu(); @@ -649,6 +775,7 @@ public: void SetText(const wxString& str); wxString GetLabel(); const wxString& GetText(); + wxItemKind GetKind(); void SetCheckable(bool checkable); bool IsCheckable(); bool IsSubMenu(); @@ -665,6 +792,7 @@ public: void SetAccel(wxAcceleratorEntry *accel); static wxString GetLabelFromText(const wxString& text); +// static wxAcceleratorEntry *GetAccelFromString(const wxString& label); // wxOwnerDrawn methods #ifdef __WXMSW__