]> 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 8f32ad8800c810277c4bb453b4c3b50a00abba20..b458c4535c4c5182c1c0aad8bd05533aa0ed83a2 100644 (file)
@@ -1,5 +1,3 @@
-%module misc
-%{
 /////////////////////////////////////////////////////////////////////////////
 // Name:        misc.i
 // Purpose:     Definitions of miscelaneous functions and classes
 /////////////////////////////////////////////////////////////////////////////
 // Name:        misc.i
 // Purpose:     Definitions of miscelaneous functions and classes
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
 
+%module misc
 
 
+%{
 #include "helpers.h"
 #include <wx/resource.h>
 #include "helpers.h"
 #include <wx/resource.h>
+#include <wx/tooltip.h>
+#include <wx/busyinfo.h>
 %}
 
 //----------------------------------------------------------------------
 %}
 
 //----------------------------------------------------------------------
 // Import some definitions of other classes, etc.
 %import _defs.i
 
 // Import some definitions of other classes, etc.
 %import _defs.i
 
-//---------------------------------------------------------------------------
 
 
+//---------------------------------------------------------------------------
 
 
 class wxSize {
 public:
 
 
 class wxSize {
 public:
+    long x;
+    long y;
     %name(width) long x;
     %name(height)long y;
 
     wxSize(long w=0, long h=0);
     ~wxSize();
     void Set(long w, long h);
     %name(width) long x;
     %name(height)long y;
 
     wxSize(long w=0, long h=0);
     ~wxSize();
     void Set(long w, long h);
-    %name(GetWidth) long GetX();
-    %name(GetHeight)long GetY();
+    long GetX();
+    long GetY();
+    long GetWidth();
+    long GetHeight();
+    void SetWidth(long w);
+    void SetHeight(long h);
 
     %addmethods {
 
     %addmethods {
-        PyObject* __str__() {
+        PyObject* asTuple() {
             PyObject* tup = PyTuple_New(2);
             PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
             PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
             return tup;
         }
     }
             PyObject* tup = PyTuple_New(2);
             PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
             PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
             return tup;
         }
     }
+    %pragma(python) addtoclass = "def __str__(self): return str(self.asTuple())"
+    %pragma(python) addtoclass = "def __repr__(self): return str(self.asTuple())"
+
 };
 
 //---------------------------------------------------------------------------
 };
 
 //---------------------------------------------------------------------------
@@ -58,8 +69,24 @@ public:
     double y;
     wxRealPoint(double x=0.0, double y=0.0);
     ~wxRealPoint();
     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;
 class wxPoint {
 public:
     long x;
@@ -72,124 +99,173 @@ public:
             self->x = x;
             self->y = y;
         }
             self->x = x;
             self->y = y;
         }
-        PyObject* __str__() {
+        PyObject* asTuple() {
             PyObject* tup = PyTuple_New(2);
             PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
             PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
             return tup;
         }
     }
             PyObject* tup = PyTuple_New(2);
             PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
             PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(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 wxRect {
 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);
+
+
+    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, 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)
+    "
 
 
-   long x, y, width, height;
 };
 
 
 };
 
 
+//  %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
-
-char* 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
 
 
 //---------------------------------------------------------------------------
 // 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();
 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);
-wxWindow * wxGetActiveWindow();
+long wxExecute(const wxString& command, int sync = FALSE);
 long wxGetElapsedTime(bool resetTimer = TRUE);
 long wxGetElapsedTime(bool resetTimer = TRUE);
+#ifdef __WXMSW__
 long wxGetFreeMemory();
 long wxGetFreeMemory();
+#endif
 void wxGetMousePosition(int* OUTPUT, int* OUTPUT);
 bool wxIsBusy();
 wxString wxNow();
 bool wxShell(const wxString& command = wxPyEmptyStr);
 void wxStartTimer();
 void wxGetMousePosition(int* OUTPUT, int* OUTPUT);
 bool wxIsBusy();
 wxString wxNow();
 bool wxShell(const wxString& command = wxPyEmptyStr);
 void wxStartTimer();
+int wxGetOsVersion(int *OUTPUT, int *OUTPUT);
+
+void wxSleep(int secs);
 bool wxYield();
 bool wxYield();
+bool wxSafeYield();
+void wxEnableTopLevelWindows(bool enable);
 
 
-int wxGetOsVersion(int *OUTPUT, int *OUTPUT);
 %inline %{
     char* wxGetResource(char *section, char *entry, char *file = NULL) {
         char * retval;
 %inline %{
     char* wxGetResource(char *section, char *entry, char *file = NULL) {
         char * retval;
@@ -198,20 +274,7 @@ int wxGetOsVersion(int *OUTPUT, int *OUTPUT);
     }
 %}
 
     }
 %}
 
-//---------------------------------------------------------------------------
-// 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);
 
 //----------------------------------------------------------------------
 
 
 //----------------------------------------------------------------------
 
@@ -219,7 +282,8 @@ class wxPyTimer {
 public:
     wxPyTimer(PyObject* notify);
     ~wxPyTimer();
 public:
     wxPyTimer(PyObject* notify);
     ~wxPyTimer();
-    int Interval();
+    int GetInterval();
+    bool IsOneShot();
     void Start(int milliseconds=-1, int oneShot=FALSE);
     void Stop();
 };
     void Start(int milliseconds=-1, int oneShot=FALSE);
     void Stop();
 };
@@ -246,9 +310,9 @@ public:
 
     void Above(wxWindow *otherWin, int margin=0);
     void Absolute(int value);
 
     void Above(wxWindow *otherWin, int margin=0);
     void Absolute(int value);
-    void AsIs(void);
+    void AsIs();
     void Below(wxWindow *otherWin, int margin=0);
     void Below(wxWindow *otherWin, int margin=0);
-    void Unconstrained(void);
+    void Unconstrained();
     void LeftOf(wxWindow *otherWin, int margin=0);
     void PercentOf(wxWindow *otherWin, wxEdge edge, int percent);
     void RightOf(wxWindow *otherWin, int margin=0);
     void LeftOf(wxWindow *otherWin, int margin=0);
     void PercentOf(wxWindow *otherWin, wxEdge edge, int percent);
     void RightOf(wxWindow *otherWin, int margin=0);
@@ -274,13 +338,79 @@ public:
 }
 
 
 }
 
 
+//---------------------------------------------------------------------------
+// Regions, etc.
+
+enum wxRegionContain {
+       wxOutRegion, wxPartRegion, wxInRegion
+};
+
+
+class wxRegion {
+public:
+    wxRegion();
+    ~wxRegion();
+
+    void Clear();
+    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(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 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);
+};
+
+
+
+class wxRegionIterator {
+public:
+    wxRegionIterator(const wxRegion& region);
+    ~wxRegionIterator();
+
+    long GetX();
+    long GetY();
+    long GetW();
+    long GetWidth();
+    long GetH();
+    long GetHeight();
+    wxRect GetRect();
+    bool HaveRects();
+    void Reset();
+
+    %addmethods {
+        void Next() {
+            (*self) ++;
+        }
+    };
+};
+
+
+
 //---------------------------------------------------------------------------
 // Accelerator Entry and Table
 
 class wxAcceleratorEntry {
 public:
     wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0);
 //---------------------------------------------------------------------------
 // Accelerator Entry and Table
 
 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();
 
     void Set(int flags, int keyCode, int Cmd);
     int GetFlags();
@@ -293,17 +423,20 @@ class wxAcceleratorTable {
 public:
     // Can also accept a list of 3-tuples
     wxAcceleratorTable(int LCOUNT, wxAcceleratorEntry* LIST);
 public:
     // Can also accept a list of 3-tuples
     wxAcceleratorTable(int LCOUNT, wxAcceleratorEntry* LIST);
-    // ~wxAcceleratorEntry(); *** ?
+    ~wxAcceleratorTable();
 
 };
 
 //---------------------------------------------------------------------------
 
 };
 
 //---------------------------------------------------------------------------
-/////////////////////////////////////////////////////////////////////////////
-//
-// $Log$
-// Revision 1.1  1998/08/09 08:25:51  RD
-// Initial version
-//
-//
+
+class wxBusyInfo {
+public:
+    wxBusyInfo(const wxString& message);
+    ~wxBusyInfo();
+};
+
+
+
+//---------------------------------------------------------------------------