]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/src/misc.i
Did splitting of wxEntry for wxMSW. Not nearly as complex as wxGTK
[wxWidgets.git] / utils / wxPython / src / misc.i
index 7e77b88026b5b3c4003a26ba2c156390e59785c6..482871611a5ba0fc3b2ecf6cc07bede0adabb9a4 100644 (file)
@@ -16,6 +16,7 @@
 #include "helpers.h"
 #include <wx/resource.h>
 #include <wx/tooltip.h>
+#include <wx/busyinfo.h>
 %}
 
 //----------------------------------------------------------------------
@@ -68,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;
@@ -97,100 +114,129 @@ 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();
 
+    int  GetLeft();
+    int  GetTop();
+    int  GetBottom();
+    int  GetRight();
 
-   wxPoint GetPosition();
-   wxSize GetSize();
+    void SetLeft(int left);
+    void SetRight(int right);
+    void SetTop(int top);
+    void SetBottom(int bottom);
 
-   long  GetLeft();
-   long  GetTop();
-   long  GetBottom();
-   long  GetRight();
 
-   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
@@ -200,24 +246,20 @@ void wxRegisterId(long id);
 %name(NewId) long wxNewId();
 %name(RegisterId) void wxRegisterId(long id);
 
-void wxBeginBusyCursor(wxCursor *cursor = wxHOURGLASS_CURSOR);
 void wxBell();
 void wxDisplaySize(int *OUTPUT, int *OUTPUT);
 void wxEndBusyCursor();
-long wxExecute(const wxString& command, bool sync = FALSE);
-#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();
@@ -232,20 +274,7 @@ void wxEnableTopLevelWindows(bool enable);
     }
 %}
 
-//---------------------------------------------------------------------------
-// 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);
 
 //----------------------------------------------------------------------
 
@@ -253,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();
 };
@@ -325,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);
 };
 
 
@@ -368,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();
@@ -380,9 +422,21 @@ public:
 class wxAcceleratorTable {
 public:
     // Can also accept a list of 3-tuples
-    wxAcceleratorTable(int LCOUNT, wxAcceleratorEntry* LIST);
-    // ~wxAcceleratorEntry(); *** ?
+    wxAcceleratorTable(int LCOUNT, wxAcceleratorEntry* choices);
+    ~wxAcceleratorTable();
 
 };
 
 //---------------------------------------------------------------------------
+
+class wxBusyInfo {
+public:
+    wxBusyInfo(const wxString& message);
+    ~wxBusyInfo();
+};
+
+
+
+//---------------------------------------------------------------------------
+
+