X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7bf854050fd5c04469d4334524433a31d4ba997a..18ba9da6b94a34129b6b04494033905a213a0114:/utils/wxPython/src/windows.i diff --git a/utils/wxPython/src/windows.i b/utils/wxPython/src/windows.i index ef487cde8c..6bfda45ad5 100644 --- a/utils/wxPython/src/windows.i +++ b/utils/wxPython/src/windows.i @@ -1,5 +1,3 @@ -%module windows -%{ ///////////////////////////////////////////////////////////////////////////// // Name: windows.i // Purpose: SWIG definitions of various window classes @@ -13,8 +11,10 @@ ///////////////////////////////////////////////////////////////////////////// +%module windows + +%{ #include "helpers.h" -#include #include %} @@ -28,16 +28,19 @@ %import misc.i %import gdi.i +%pragma(python) code = "import wx" + //--------------------------------------------------------------------------- class wxEvtHandler { public: + bool ProcessEvent(wxEvent& event); %addmethods { void Connect( int id, int lastId, int eventType, PyObject* func) { if (PyCallable_Check(func)) { self->Connect(id, lastId, eventType, - (wxObjectEventFunction) wxPyCallback::EventThunker, + (wxObjectEventFunction) &wxPyCallback::EventThunker, new wxPyCallback(func)); } } @@ -47,6 +50,7 @@ public: //---------------------------------------------------------------------- +%apply int * INOUT { int* x, int* y }; class wxWindow : public wxEvtHandler { public: @@ -57,76 +61,101 @@ public: long style = 0, char* name = "panel"); + %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)" void CaptureMouse(); - void Center(int direction = wxHORIZONTAL); - void Centre(int direction = wxHORIZONTAL); - void ClientToScreen(int *BOTH, int *BOTH); + void Center(int direction = wxBOTH); + void Centre(int direction = wxBOTH); + void CentreOnParent(int direction = wxBOTH ); + void CenterOnParent(int direction = wxBOTH ); + + // (uses apply'ed INOUT typemap, see above) + %name(ClientToScreenXY)void ClientToScreen(int* x, int* y); + wxPoint ClientToScreen(const wxPoint& pt); + bool Close(int force = FALSE); bool Destroy(); void DestroyChildren(); +#ifdef __WXMSW__ void DragAcceptFiles(bool accept); +#endif void Enable(bool enable); //bool FakePopupMenu(wxMenu* menu, int x, int y); + %name(FindWindowById) wxWindow* FindWindow(long id); + %name(FindWindowByName) wxWindow* FindWindow(const wxString& name); void Fit(); wxColour GetBackgroundColour(); int GetCharHeight(); int GetCharWidth(); - void GetClientSize(int *OUTPUT, int *OUTPUT); + %name(GetClientSizeTuple) void GetClientSize(int *OUTPUT, int *OUTPUT); + wxSize GetClientSize(); wxLayoutConstraints * GetConstraints(); - wxButton* GetDefaultItem(); - //wxEvtHandler* GetEventHandler(); - wxFont* GetFont(); + wxEvtHandler* GetEventHandler(); + + wxFont& GetFont(); wxColour GetForegroundColour(); wxWindow * GetGrandParent(); int GetId(); - void GetPosition(int *OUTPUT, int *OUTPUT); - wxString& GetLabel(); - wxString& GetName(); + wxString GetLabel(); + void SetLabel(const wxString& label); + wxString GetName(); wxWindow * GetParent(); - int GetReturnCode(); + %name(GetPositionTuple) void GetPosition(int *OUTPUT, int *OUTPUT); + wxPoint GetPosition(); + wxRect GetRect(); int GetScrollThumb(int orientation); int GetScrollPos(int orientation); int GetScrollRange(int orientation); - void GetSize(int *OUTPUT, int *OUTPUT); - void GetTextExtent(const wxString& string, int *OUTPUT, int *OUTPUT); // int* descent = NULL, int* externalLeading = NULL, const wxFont* font = NULL, bool use16 = FALSE) - wxString& GetTitle(); + %name(GetSizeTuple) void GetSize(int *OUTPUT, int *OUTPUT); + wxSize GetSize(); + void GetTextExtent(const wxString& string, int *OUTPUT, int *OUTPUT); + %name(GetFullTextExtent)void GetTextExtent(const wxString& string, + int *OUTPUT, int *OUTPUT, int *OUTPUT, int* OUTPUT, + const wxFont* font = NULL); //, bool use16 = FALSE) + wxString GetTitle(); + wxRegion GetUpdateRegion(); long GetWindowStyleFlag(); + bool Hide(); void InitDialog(); bool IsEnabled(); bool IsRetained(); bool IsShown(); + bool IsTopLevel(); void Layout(); bool LoadFromResource(wxWindow* parent, const wxString& resourceName, const wxResourceTable* resourceTable = NULL); void Lower(); void MakeModal(bool flag); - void Move(int x, int y); + %name(MoveXY)void Move(int x, int y); + void Move(const wxPoint& point); + + wxEvtHandler* PopEventHandler(bool deleteHandler = FALSE); + void PushEventHandler(wxEvtHandler* handler); - //wxEvtHandler* PopEventHandler(bool deleteHandler = FALSE); - bool PopupMenu(wxMenu *menu, int x, int y); - //void PushEventHandler(wxEvtHandler* handler); + %name(PopupMenuXY)bool PopupMenu(wxMenu *menu, int x, int y); + bool PopupMenu(wxMenu *menu, const wxPoint& pos); void Raise(); void Refresh(bool eraseBackground = TRUE, const wxRect* rect = NULL); void ReleaseMouse(); - void ScreenToClient(int *BOTH, int *BOTH); + bool Reparent( wxWindow* newParent ); + + // (uses apply'ed INOUT typemap, see above) + %name(ScreenToClientXY)void ScreenToClient(int *x, int *y); + wxPoint ScreenToClient(const wxPoint& pt); + void ScrollWindow(int dx, int dy, const wxRect* rect = NULL); + void SetAcceleratorTable(const wxAcceleratorTable& accel); void SetAutoLayout(bool autoLayout); void SetBackgroundColour(const wxColour& colour); void SetConstraints(wxLayoutConstraints *constraints); - void SetDoubleClick(bool allowDoubleClick); void SetFocus(); void SetFont(const wxFont& font); void SetForegroundColour(const wxColour& colour); void SetId(int id); void SetName(const wxString& name); - void SetReturnCode(int retCode); void SetScrollbar(int orientation, int position, int thumbSize, int range, bool refresh = TRUE); void SetScrollPos(int orientation, int pos, bool refresh = TRUE); - //void SetSize(int x, int y, int width, int height, int sizeFlags=wxSIZE_AUTO); - //%name(SetSizeOnly) void SetSize(int width, int height); - %name(SetDimensions) void SetSize(int x, int y, int width, int height, int sizeFlags=wxSIZE_AUTO); %addmethods { void SetSize(const wxSize& size) { @@ -139,11 +168,11 @@ public: } void SetSizeHints(int minW=-1, int minH=-1, int maxW=-1, int maxH=-1, int incW=-1, int incH=-1); - void SetClientSize(int width, int height); + %name(SetClientSizeWH)void SetClientSize(int width, int height); + void SetClientSize(const wxSize& size); //void SetPalette(wxPalette* palette); - //void SetColourMap(wxColourMap *colourMap); void SetCursor(const wxCursor&cursor); - //void SetEventHandler(wxEvtHandler* handler); + void SetEventHandler(wxEvtHandler* handler); void SetTitle(const wxString& title); bool Show(bool show); bool TransferDataFromWindow(); @@ -151,10 +180,39 @@ public: bool Validate(); void WarpPointer(int x, int y); + %name(ConvertDialogPointToPixels) wxPoint ConvertDialogToPixels(const wxPoint& pt); + %name(ConvertDialogSizeToPixels) wxSize ConvertDialogToPixels(const wxSize& sz); + + %name(DLG_PNT) wxPoint ConvertDialogToPixels(const wxPoint& pt); + %name(DLG_SZE) wxSize ConvertDialogToPixels(const wxSize& sz); + + %name(ConvertPixelPointToDialog) wxPoint ConvertPixelsToDialog(const wxPoint& pt); + %name(ConvertPixelSizeToDialog) wxSize ConvertPixelsToDialog(const wxSize& sz); + + %name(SetToolTipString)void SetToolTip(const wxString &tip); + void SetToolTip(wxToolTip *tooltip); + wxToolTip* GetToolTip(); }; +//%clear int* x, int* y; + + -// Static method(s) +%pragma(python) code = " +def wxDLG_PNT(win, point_or_x, y=None): + if y is None: + return win.ConvertDialogPointToPixels(point_or_x) + else: + return win.ConvertDialogPointToPixels(wxPoint(point_or_x, y)) + +def wxDLG_SZE(win, size_width, height=None): + if height is None: + return win.ConvertDialogSizeToPixels(size_width) + else: + return win.ConvertDialogSizeToPixels(wxSize(size_width, height)) +" + +#ifdef __WXMSW__ %inline %{ wxWindow* wxWindow_FindFocus() { return wxWindow::FindFocus(); @@ -162,47 +220,17 @@ public: %} -//---------------------------------------------------------------------- - -class wxFrame : public wxWindow { -public: - wxFrame(wxWindow* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos = wxPyDefaultPosition, - const wxSize& size = wxPyDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - char* name = "frame"); - - void Centre(int direction = wxBOTH); - void Command(int id); - bool CreateStatusBar(int number = 1); - wxMenuBar* GetMenuBar(); - wxStatusBar* GetStatusBar(); - wxString& GetTitle(); - void Iconize(bool iconize); - bool IsIconized(); - // *** removed *** void LoadAccelerators(const wxString& table); - void SetAcceleratorTable(const wxAcceleratorTable& accel); - - void Maximize(bool maximize); - void SetIcon(const wxIcon& icon); - void SetMenuBar(wxMenuBar* menuBar); - void SetStatusText(const wxString& text, int number = 0); - void SetStatusWidths(int LCOUNT, int* LIST); // use typemap - void SetTitle(const wxString& title); - -}; - -//--------------------------------------------------------------------------- +%inline %{ +wxWindow* wxWindow_FromHWND(unsigned long hWnd) { + wxWindow* win = new wxWindow; + win->SetHWND(hWnd); + win->SubclassWin(hWnd); + return win; +} +%} +#endif -class wxMiniFrame : public wxFrame { -public: - wxMiniFrame(wxWindow* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos = wxPyDefaultPosition, - const wxSize& size = wxPyDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - char* name = "frame"); -}; //--------------------------------------------------------------------------- @@ -215,7 +243,20 @@ public: long style = wxTAB_TRAVERSAL, const char* name = "panel"); + %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)" + 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 +" }; //--------------------------------------------------------------------------- @@ -230,21 +271,26 @@ public: 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(); - bool IsModal(); void SetModal(bool flag); + bool IsModal(); void SetTitle(const wxString& title); bool Show(bool show); int ShowModal(); + + int GetReturnCode(); + void SetReturnCode(int retCode); }; //--------------------------------------------------------------------------- -class wxScrolledWindow : public wxWindow { +class wxScrolledWindow : public wxPanel { public: wxScrolledWindow(wxWindow* parent, const wxWindowID id = -1, @@ -253,6 +299,9 @@ public: long style = wxHSCROLL | wxVSCROLL, char* name = "scrolledWindow"); + %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)" + %pragma(python) addtomethod = "__init__:wx._StdOnScrollCallbacks(self)" + void EnableScrolling(bool xScrolling, bool yScrolling); void GetScrollPixelsPerUnit(int* OUTPUT, int* OUTPUT); void GetVirtualSize(int* OUTPUT, int* OUTPUT); @@ -270,28 +319,40 @@ public: class wxMenu : public wxEvtHandler { public: - wxMenu(const wxString& title = wxPyEmptyStr); + wxMenu(const wxString& title = wxPyEmptyStr, long style = 0); void Append(int id, const wxString& item, const wxString& helpString = wxPyEmptyStr, 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(); void Check(int id, bool flag); - bool Checked(int id); void Enable(int id, bool enable); int FindItem(const wxString& itemString); + wxString GetTitle(); + void SetTitle(const wxString& title); wxMenuItem* FindItemForId(int id); - wxString& GetHelpString(int id); + wxString GetHelpString(int id); wxString GetLabel(int id); - wxString GetTitle(); void SetHelpString(int id, const wxString& helpString); + bool IsChecked(int id); + bool IsEnabled(int id); void SetLabel(int id, const wxString& label); - void SetTitle(const wxString& title); -}; + void UpdateUI(wxEvtHandler* source = NULL); + %addmethods { + void Destroy() { + delete self; + } + } + +}; // @@ -299,11 +360,11 @@ public: // be used for PopupMenus, but you must retain a referece to it while using // it. // -class wxPyMenu : public wxMenu { -public: - wxPyMenu(const wxString& title = wxPyEmptyStr, PyObject* func = NULL); - ~wxPyMenu(); -}; +// class wxPyMenu : public wxMenu { +// public: +// wxPyMenu(const wxString& title = wxPyEmptyStr, PyObject* func = NULL); +// ~wxPyMenu(); +// }; //---------------------------------------------------------------------- @@ -315,15 +376,20 @@ public: void Check(int id, bool flag); bool Checked(int id); void Enable(int id, bool enable); - void EnableTop(int pos, bool enable); + bool Enabled(int id); int FindMenuItem(const wxString& menuString, const wxString& itemString); wxMenuItem * FindItemForId(int id); +#ifdef __WXMSW__ + void EnableTop(int pos, bool enable); wxString GetHelpString(int id); wxString GetLabel(int id); - wxString GetLabelTop(int pos); 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); }; @@ -331,28 +397,43 @@ public: class wxMenuItem { public: +#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 + bool IsSeparator(); bool IsEnabled(); bool IsChecked(); + bool IsCheckable(); int GetId(); - const wxString& GetHelp(); 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__ + wxColour& GetBackgroundColour(); + wxBitmap GetBitmap(bool checked = TRUE); + wxFont& GetFont(); + int GetMarginWidth(); + wxColour& GetTextColour(); + void SetBackgroundColour(const wxColour& colour); + void SetBitmaps(const wxBitmap& checked, const wxBitmap& unchecked = wxNullBitmap); + void SetFont(const wxFont& font); + void SetMarginWidth(int width); + void SetTextColour(const wxColour& colour); void DeleteSubMenu(); - const wxString& GetName(); - bool IsCheckable(); +#endif }; //--------------------------------------------------------------------------- -///////////////////////////////////////////////////////////////////////////// -// -// $Log$ -// Revision 1.1 1998/08/09 08:25:52 RD -// Initial version -// -//