X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/694759cfeb701f8b96d720e72f760cc21e2e6b00..b854b7b82e033d1dbd9d300402df50ec5e1e8b74:/utils/wxPython/src/misc.i diff --git a/utils/wxPython/src/misc.i b/utils/wxPython/src/misc.i index 4c0a08255a..b458c4535c 100644 --- a/utils/wxPython/src/misc.i +++ b/utils/wxPython/src/misc.i @@ -114,29 +114,35 @@ 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(); - long GetX(); - void SetX(long X); - long GetY(); - void SetY(long Y); - long GetWidth(); - void SetWidth(long w); - long GetHeight(); - void SetHeight(long h); + int GetX(); + void SetX(int X); + int GetY(); + void SetY(int Y); + int GetWidth(); + void SetWidth(int w); + int GetHeight(); + void SetHeight(int h); - wxPoint GetPosition(); - wxSize GetSize(); + wxPoint GetPosition(); + wxSize GetSize(); - long GetLeft(); - long GetTop(); - long GetBottom(); - long GetRight(); + int GetLeft(); + int GetTop(); + int GetBottom(); + int GetRight(); - long x, y, width, height; + void SetLeft(int left); + void SetRight(int right); + void SetTop(int top); + void SetBottom(int bottom); + + + int x, y, width, height; %addmethods { PyObject* asTuple() { @@ -150,9 +156,86 @@ public: } %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; +// } +// %} + + +%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; + } +%} //--------------------------------------------------------------------------- @@ -166,7 +249,7 @@ void wxRegisterId(long id); void wxBell(); void wxDisplaySize(int *OUTPUT, int *OUTPUT); void wxEndBusyCursor(); -long wxExecute(const wxString& command, bool sync = FALSE); +long wxExecute(const wxString& command, int sync = FALSE); long wxGetElapsedTime(bool resetTimer = TRUE); #ifdef __WXMSW__ long wxGetFreeMemory(); @@ -272,13 +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); + + 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(); - 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); };