X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b57bdb5a3f6dab3282480629b76986a90d86a901..b854b7b82e033d1dbd9d300402df50ec5e1e8b74:/utils/wxPython/src/misc.i?ds=sidebyside diff --git a/utils/wxPython/src/misc.i b/utils/wxPython/src/misc.i index 7c3205c38e..b458c4535c 100644 --- a/utils/wxPython/src/misc.i +++ b/utils/wxPython/src/misc.i @@ -16,6 +16,7 @@ #include "helpers.h" #include #include +#include %} //---------------------------------------------------------------------- @@ -26,8 +27,8 @@ // Import some definitions of other classes, etc. %import _defs.i -//--------------------------------------------------------------------------- +//--------------------------------------------------------------------------- class wxSize { @@ -42,8 +43,10 @@ public: void Set(long w, long h); long GetX(); long GetY(); - %name(GetWidth) long GetX(); - %name(GetHeight)long GetY(); + long GetWidth(); + long GetHeight(); + void SetWidth(long w); + void SetHeight(long h); %addmethods { PyObject* asTuple() { @@ -66,8 +69,24 @@ public: double y; wxRealPoint(double x=0.0, double y=0.0); ~wxRealPoint(); + + %addmethods { + void Set(double x, double y) { + self->x = x; + self->y = y; + } + PyObject* asTuple() { + PyObject* tup = PyTuple_New(2); + PyTuple_SET_ITEM(tup, 0, PyFloat_FromDouble(self->x)); + PyTuple_SET_ITEM(tup, 1, PyFloat_FromDouble(self->y)); + return tup; + } + } + %pragma(python) addtoclass = "def __str__(self): return str(self.asTuple())" + %pragma(python) addtoclass = "def __repr__(self): return str(self.asTuple())" }; + class wxPoint { public: long x; @@ -95,128 +114,157 @@ public: class wxRect { public: - wxRect(long x=0, long y=0, long w=0, long h=0); - // TODO: do this one too... wxRect(const wxPoint& pos, const wxSize& size); - ~wxRect(); + wxRect(int x=0, int y=0, int w=0, int h=0); + // TODO: do this one too... wxRect(const wxPoint& pos, const wxSize& size); + ~wxRect(); + + int GetX(); + void SetX(int X); + int GetY(); + void SetY(int Y); + int GetWidth(); + void SetWidth(int w); + int GetHeight(); + void SetHeight(int h); - long GetX(); - void SetX(long X); - long GetY(); - void SetY(long Y); - long GetWidth(); - void SetWidth(long w); - long GetHeight(); - void SetHeight(long h); + wxPoint GetPosition(); + wxSize GetSize(); - wxPoint GetPosition(); - wxSize GetSize(); + int GetLeft(); + int GetTop(); + int GetBottom(); + int GetRight(); - long GetLeft(); - long GetTop(); - long GetBottom(); - long GetRight(); + void SetLeft(int left); + void SetRight(int right); + void SetTop(int top); + void SetBottom(int bottom); - long x, y, width, height; + + int x, y, width, height; %addmethods { PyObject* asTuple() { PyObject* tup = PyTuple_New(4); PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x)); PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y)); - PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->width)); - PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->height)); + PyTuple_SET_ITEM(tup, 2, PyInt_FromLong(self->width)); + PyTuple_SET_ITEM(tup, 3, PyInt_FromLong(self->height)); return tup; } } %pragma(python) addtoclass = "def __str__(self): return str(self.asTuple())" %pragma(python) addtoclass = "def __repr__(self): return str(self.asTuple())" + %pragma(python) addtoclass = " + # override the __getattr__ made by SWIG + def __getattr__(self, name): + d = { + 'x' : miscc.wxRect_x_get, + 'y' : miscc.wxRect_y_get, + 'width' : miscc.wxRect_width_get, + 'height' : miscc.wxRect_height_get, + 'top' : miscc.wxRect_GetTop, + 'bottom' : miscc.wxRect_GetBottom, + 'left' : miscc.wxRect_GetLeft, + 'right' : miscc.wxRect_GetRight, + } + try: + func = d[name] + except KeyError: + raise AttributeError,name + return func(self) + + # and also the __setattr__ + def __setattr__(self, name, value): + d = { + 'x' : miscc.wxRect_x_set, + 'y' : miscc.wxRect_y_set, + 'width' : miscc.wxRect_width_set, + 'height' : miscc.wxRect_height_set, + 'top' : miscc.wxRect_SetTop, + 'bottom' : miscc.wxRect_SetBottom, + 'left' : miscc.wxRect_SetLeft, + 'right' : miscc.wxRect_SetRight, + } + try: + func = d[name] + except KeyError: + self.__dict__[name] = value + return + func(self, value) + " + }; +// %inline %{ +// bool wxIntersectRect(wxRect* dest, wxRect* r1, wxRect* r2) { +// wxRegion reg1(*r1); +// wxRegion reg2(*r2); +// bool success; +// *dest = wxRect(0,0,0,0); +// success = reg1.Intersect(reg2); +// if (success) { +// *dest = reg1.GetBox(); +// return *dest != wxRect(0,0,0,0); +// } +// return FALSE; +// } +// %} -//--------------------------------------------------------------------------- -// Dialog Functions - -wxString wxFileSelector(char* message, - char* default_path = NULL, - char* default_filename = NULL, - char* default_extension = NULL, - char* wildcard = "*.*", - int flags = 0, - wxWindow *parent = NULL, - int x = -1, int y = -1); - -wxString wxGetTextFromUser(const wxString& message, - const wxString& caption = wxPyEmptyStr, - const wxString& default_value = wxPyEmptyStr, - wxWindow *parent = NULL, - int x = -1, int y = -1, - bool centre = TRUE); - -// TODO: Need to custom wrap this one... -// int wxGetMultipleChoice(char* message, char* caption, -// int LCOUNT, char** LIST, -// int nsel, int *selection, -// wxWindow *parent = NULL, int x = -1, int y = -1, -// bool centre = TRUE, int width=150, int height=200); - - -wxString wxGetSingleChoice(const wxString& message, const wxString& caption, - int LCOUNT, wxString* LIST, - wxWindow *parent = NULL, - int x = -1, int y = -1, - bool centre = TRUE, - int width=150, int height=200); - -int wxGetSingleChoiceIndex(const wxString& message, const wxString& caption, - int LCOUNT, wxString* LIST, - wxWindow *parent = NULL, - int x = -1, int y = -1, - bool centre = TRUE, - int width=150, int height=200); - - -int wxMessageBox(const wxString& message, - const wxString& caption = wxPyEmptyStr, - int style = wxOK | wxCENTRE, - wxWindow *parent = NULL, - int x = -1, int y = -1); -//--------------------------------------------------------------------------- -// GDI Functions +%inline %{ + PyObject* wxIntersectRect(wxRect* r1, wxRect* r2) { + wxRegion reg1(*r1); + wxRegion reg2(*r2); + wxRect dest(0,0,0,0); + PyObject* obj; + + reg1.Intersect(reg2); + dest = reg1.GetBox(); + + if (dest != wxRect(0,0,0,0)) { + bool doSave = wxPyRestoreThread(); + wxRect* newRect = new wxRect(dest); + obj = wxPyConstructObject((void*)newRect, "wxRect"); + PyObject_SetAttrString(obj, "thisown", PyInt_FromLong(1)); + wxPySaveThread(doSave); + return obj; + } + Py_INCREF(Py_None); + return Py_None; + } +%} -bool wxColourDisplay(); -int wxDisplayDepth(); -void wxSetCursor(wxCursor& cursor); //--------------------------------------------------------------------------- // Miscellaneous functions -long NewId(); -void RegisterId(long id); -void wxBeginBusyCursor(wxCursor *cursor = wxHOURGLASS_CURSOR); +long wxNewId(); +void wxRegisterId(long id); +%name(NewId) long wxNewId(); +%name(RegisterId) void wxRegisterId(long id); + void wxBell(); void wxDisplaySize(int *OUTPUT, int *OUTPUT); void wxEndBusyCursor(); -long wxExecute(const wxString& command, bool sync = FALSE); -wxWindow * wxFindWindowByLabel(const wxString& label, wxWindow *parent=NULL); -wxWindow * wxFindWindowByName(const wxString& name, wxWindow *parent=NULL); -#ifdef __WXMSW__ -wxWindow * wxGetActiveWindow(); +long wxExecute(const wxString& command, int sync = FALSE); long wxGetElapsedTime(bool resetTimer = TRUE); +#ifdef __WXMSW__ long wxGetFreeMemory(); #endif void wxGetMousePosition(int* OUTPUT, int* OUTPUT); bool wxIsBusy(); wxString wxNow(); -#ifdef __WXMSW__ bool wxShell(const wxString& command = wxPyEmptyStr); void wxStartTimer(); int wxGetOsVersion(int *OUTPUT, int *OUTPUT); -#endif +void wxSleep(int secs); bool wxYield(); +bool wxSafeYield(); +void wxEnableTopLevelWindows(bool enable); %inline %{ char* wxGetResource(char *section, char *entry, char *file = NULL) { @@ -226,20 +274,7 @@ bool wxYield(); } %} -//--------------------------------------------------------------------------- -// Resource System - -bool wxResourceAddIdentifier(char *name, int value); -void wxResourceClear(void); -wxBitmap wxResourceCreateBitmap(char *resource); -wxIcon wxResourceCreateIcon(char *resource); -wxMenuBar * wxResourceCreateMenuBar(char *resource); -int wxResourceGetIdentifier(char *name); -bool wxResourceParseData(char *resource, wxResourceTable *table = NULL); -bool wxResourceParseFile(char *filename, wxResourceTable *table = NULL); -bool wxResourceParseString(char *resource, wxResourceTable *table = NULL); - - +wxString wxStripMenuCodes(const wxString& in); //---------------------------------------------------------------------- @@ -247,7 +282,8 @@ class wxPyTimer { public: wxPyTimer(PyObject* notify); ~wxPyTimer(); - int Interval(); + int GetInterval(); + bool IsOneShot(); void Start(int milliseconds=-1, int oneShot=FALSE); void Stop(); }; @@ -319,15 +355,27 @@ public: wxRegionContain Contains(long x, long y); %name(ContainsPoint)wxRegionContain Contains(const wxPoint& pt); %name(ContainsRect)wxRegionContain Contains(const wxRect& rect); + %name(ContainsRectDim)wxRegionContain Contains(long x, long y, long w, long h); wxRect GetBox(); - bool Intersect(const wxRect& rect); -#ifdef __WXMSW__ + + bool Intersect(long x, long y, long width, long height); + %name(IntersectRect)bool Intersect(const wxRect& rect); + %name(IntersectRegion)bool Intersect(const wxRegion& region); + bool IsEmpty(); -#endif - bool Subtract(const wxRect& rect); - bool Union(const wxRect& rect); - bool Xor(const wxRect& rect); + + bool Union(long x, long y, long width, long height); + %name(UnionRect)bool Union(const wxRect& rect); + %name(UnionRegion)bool Union(const wxRegion& region); + + bool Subtract(long x, long y, long width, long height); + %name(SubtractRect)bool Subtract(const wxRect& rect); + %name(SubtractRegion)bool Subtract(const wxRegion& region); + + bool Xor(long x, long y, long width, long height); + %name(XorRect)bool Xor(const wxRect& rect); + %name(XorRegion)bool Xor(const wxRegion& region); }; @@ -362,7 +410,7 @@ public: class wxAcceleratorEntry { public: wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0); - //~wxAcceleratorEntry(); *** ? + ~wxAcceleratorEntry(); void Set(int flags, int keyCode, int Cmd); int GetFlags(); @@ -375,117 +423,20 @@ class wxAcceleratorTable { public: // Can also accept a list of 3-tuples wxAcceleratorTable(int LCOUNT, wxAcceleratorEntry* LIST); - // ~wxAcceleratorEntry(); *** ? + ~wxAcceleratorTable(); }; //--------------------------------------------------------------------------- -// wxToolTip -class wxToolTip { +class wxBusyInfo { public: - wxToolTip(const wxString &tip); - - void SetTip(const wxString& tip); - wxString GetTip(); -#ifndef __WXGTK__ - void SetWindow(wxWindow *win); -#endif - wxWindow *GetWindow(); + wxBusyInfo(const wxString& message); + ~wxBusyInfo(); }; -%inline %{ - void wxToolTip_Enable(bool flag) { - wxToolTip::Enable(flag); - } - - void wxToolTip_SetDelay(long milliseconds) { - wxToolTip::SetDelay(milliseconds); - } -%} //--------------------------------------------------------------------------- -///////////////////////////////////////////////////////////////////////////// -// -// $Log$ -// Revision 1.12 1999/02/20 10:02:37 RD -// Changes needed to enable wxGTK compatibility. -// -// Revision 1.11 1999/02/20 09:03:01 RD -// Added wxWindow_FromHWND(hWnd) for wxMSW to construct a wxWindow from a -// window handle. If you can get the window handle into the python code, -// it should just work... More news on this later. -// -// Added wxImageList, wxToolTip. -// -// Re-enabled wxConfig.DeleteAll() since it is reportedly fixed for the -// wxRegConfig class. -// -// As usual, some bug fixes, tweaks, etc. -// -// Revision 1.10 1999/01/30 07:30:14 RD -// -// Added wxSashWindow, wxSashEvent, wxLayoutAlgorithm, etc. -// -// Various cleanup, tweaks, minor additions, etc. to maintain -// compatibility with the current wxWindows. -// -// Revision 1.9 1998/12/16 22:10:55 RD -// -// Tweaks needed to be able to build wxPython with wxGTK. -// -// Revision 1.8 1998/12/15 20:41:22 RD -// Changed the import semantics from "from wxPython import *" to "from -// wxPython.wx import *" This is for people who are worried about -// namespace pollution, they can use "from wxPython import wx" and then -// prefix all the wxPython identifiers with "wx." -// -// Added wxTaskbarIcon for wxMSW. -// -// Made the events work for wxGrid. -// -// Added wxConfig. -// -// Added wxMiniFrame for wxGTK, (untested.) -// -// Changed many of the args and return values that were pointers to gdi -// objects to references to reflect changes in the wxWindows API. -// -// Other assorted fixes and additions. -// -// Revision 1.7 1998/11/25 08:45:27 RD -// -// Added wxPalette, wxRegion, wxRegionIterator, wxTaskbarIcon -// Added events for wxGrid -// Other various fixes and additions -// -// Revision 1.6 1998/11/15 23:03:46 RD -// Removing some ifdef's for wxGTK -// -// Revision 1.5 1998/10/20 06:43:59 RD -// New wxTreeCtrl wrappers (untested) -// some changes in helpers -// etc. -// -// Revision 1.4 1998/08/18 19:48:19 RD -// more wxGTK compatibility things. -// -// It builds now but there are serious runtime problems... -// -// Revision 1.3 1998/08/16 04:31:10 RD -// More wxGTK work. -// -// Revision 1.2 1998/08/15 07:36:41 RD -// - Moved the header in the .i files out of the code that gets put into -// the .cpp files. It caused CVS conflicts because of the RCS ID being -// different each time. -// -// - A few minor fixes. -// -// Revision 1.1 1998/08/09 08:25:51 RD -// Initial version -// -//