]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/src/misc.i
it is now possible to add custom buttons into wxHtmlHelpFrame's toolbar
[wxWidgets.git] / utils / wxPython / src / misc.i
index 4c0a08255ac80fa16547714f2cc45d0b1d20e054..b458c4535c4c5182c1c0aad8bd05533aa0ed83a2 100644 (file)
@@ -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);
 };