X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..9fd9e47a93dfcdd99c2722e288a0f28a51ce6f5f:/wxPython/src/misc.i diff --git a/wxPython/src/misc.i b/wxPython/src/misc.i index 6f0312e99e..92f95b87da 100644 --- a/wxPython/src/misc.i +++ b/wxPython/src/misc.i @@ -29,7 +29,28 @@ //--------------------------------------------------------------------------- +%{ + // Put some wx default wxChar* values into wxStrings. + static const wxString wxPyEmptyString(wxT("")); +%} +//--------------------------------------------------------------------------- + + +class wxObject { +public: + + %addmethods { + wxString GetClassName() { + return self->GetClassInfo()->GetClassName(); + } + void Destroy() { + delete self; + } + } +}; + +//--------------------------------------------------------------------------- class wxSize { public: @@ -50,14 +71,31 @@ public: %addmethods { PyObject* asTuple() { + wxPyBeginBlockThreads(); PyObject* tup = PyTuple_New(2); PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x)); PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y)); + wxPyEndBlockThreads(); return tup; } + + int __cmp__(const wxSize* sz) { + if (! sz) return 1; + if (*self == *sz) return 0; + return -1; + } } - %pragma(python) addtoclass = "def __str__(self): return str(self.asTuple())" - %pragma(python) addtoclass = "def __repr__(self): return str(self.asTuple())" + + %pragma(python) addtoclass = " + def __str__(self): return str(self.asTuple()) + def __repr__(self): return str(self.asTuple()) + def __len__(self): return len(self.asTuple()) + def __getitem__(self, index): return self.asTuple()[index] + def __setitem__(self, index, val): + if index == 0: self.width = val + elif index == 1: self.height = val + else: raise IndexError +" }; @@ -76,14 +114,40 @@ public: self->y = y; } PyObject* asTuple() { + wxPyBeginBlockThreads(); PyObject* tup = PyTuple_New(2); PyTuple_SET_ITEM(tup, 0, PyFloat_FromDouble(self->x)); PyTuple_SET_ITEM(tup, 1, PyFloat_FromDouble(self->y)); + wxPyEndBlockThreads(); return tup; } + + wxRealPoint __add__(const wxRealPoint* p) { + if (! p) return *self; + return *self + *p; + } + + wxRealPoint __sub__(const wxRealPoint* p) { + if (! p) return *self; + return *self - *p; + } + + int __cmp__(const wxRealPoint* p) { + if (! p) return 1; + if (*self == *p) return 0; + return -1; + } } - %pragma(python) addtoclass = "def __str__(self): return str(self.asTuple())" - %pragma(python) addtoclass = "def __repr__(self): return str(self.asTuple())" + %pragma(python) addtoclass = " + def __str__(self): return str(self.asTuple()) + def __repr__(self): return str(self.asTuple()) + def __len__(self): return len(self.asTuple()) + def __getitem__(self, index): return self.asTuple()[index] + def __setitem__(self, index, val): + if index == 0: self.width = val + elif index == 1: self.height = val + else: raise IndexError +" }; @@ -100,14 +164,40 @@ public: self->y = y; } PyObject* asTuple() { + wxPyBeginBlockThreads(); PyObject* tup = PyTuple_New(2); PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x)); PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y)); + wxPyEndBlockThreads(); return tup; } + + wxPoint __add__(const wxPoint* p) { + if (! p) return *self; + return *self + *p; + } + + wxPoint __sub__(const wxPoint* p) { + if (! p) return *self; + return *self - *p; + } + + int __cmp__(const wxPoint* p) { + if (! p) return 1; + if (*self == *p) return 0; + return -1; + } } - %pragma(python) addtoclass = "def __str__(self): return str(self.asTuple())" - %pragma(python) addtoclass = "def __repr__(self): return str(self.asTuple())" + %pragma(python) addtoclass = " + def __str__(self): return str(self.asTuple()) + def __repr__(self): return str(self.asTuple()) + def __len__(self): return len(self.asTuple()) + def __getitem__(self, index): return self.asTuple()[index] + def __setitem__(self, index, val): + if index == 0: self.x = val + elif index == 1: self.y = val + else: raise IndexError +" }; //--------------------------------------------------------------------------- @@ -148,11 +238,13 @@ public: %addmethods { PyObject* asTuple() { + wxPyBeginBlockThreads(); 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)); + wxPyEndBlockThreads(); return tup; } @@ -162,14 +254,24 @@ public: } int __cmp__(const wxRect* rect) { - if (! rect) return 0; - return *self == *rect; + if (! rect) return 1; + if (*self == *rect) return 0; + return -1; } } - %pragma(python) addtoclass = "def __str__(self): return str(self.asTuple())" - %pragma(python) addtoclass = "def __repr__(self): return str(self.asTuple())" %pragma(python) addtoclass = " + def __str__(self): return str(self.asTuple()) + def __repr__(self): return str(self.asTuple()) + def __len__(self): return len(self.asTuple()) + def __getitem__(self, index): return self.asTuple()[index] + def __setitem__(self, index, val): + if index == 0: self.x = val + elif index == 1: self.y = val + elif index == 2: self.width = val + elif index == 3: self.height = val + else: raise IndexError + # override the __getattr__ made by SWIG def __getattr__(self, name): d = { @@ -222,11 +324,13 @@ public: dest = reg1.GetBox(); if (dest != wxRect(0,0,0,0)) { - bool doSave = wxPyRestoreThread(); + wxPyBeginBlockThreads(); wxRect* newRect = new wxRect(dest); obj = wxPyConstructObject((void*)newRect, "wxRect"); - PyObject_SetAttrString(obj, "thisown", PyInt_FromLong(1)); - wxPySaveThread(doSave); + PyObject* one = PyInt_FromLong(1); + PyObject_SetAttrString(obj, "thisown", one); + Py_DECREF(one); + wxPyEndBlockThreads(); return obj; } Py_INCREF(Py_None); @@ -242,11 +346,11 @@ long wxNewId(); void wxRegisterId(long id); %name(NewId) long wxNewId(); %name(RegisterId) void wxRegisterId(long id); +long wxGetCurrentId(); void wxBell(); -void wxDisplaySize(int *OUTPUT, int *OUTPUT); void wxEndBusyCursor(); -long wxExecute(const wxString& command, int sync = FALSE); + long wxGetElapsedTime(bool resetTimer = TRUE); #ifdef __WXMSW__ long wxGetFreeMemory(); @@ -254,18 +358,21 @@ long wxGetFreeMemory(); void wxGetMousePosition(int* OUTPUT, int* OUTPUT); bool wxIsBusy(); wxString wxNow(); -bool wxShell(const wxString& command = wxPyEmptyStr); +bool wxShell(const wxString& command = wxPyEmptyString); void wxStartTimer(); int wxGetOsVersion(int *OUTPUT, int *OUTPUT); +wxString wxGetOsDescription(); void wxSleep(int secs); +void wxUsleep(unsigned long milliseconds); bool wxYield(); -bool wxSafeYield(); +bool wxYieldIfNeeded(); void wxEnableTopLevelWindows(bool enable); %inline %{ - char* wxGetResource(char *section, char *entry, char *file = NULL) { - char * retval; + wxString wxGetResource(const wxString& section, const wxString& entry, + const wxString& file = wxPyEmptyString) { + wxChar * retval; wxGetResource(section, entry, &retval, file); return retval; } @@ -273,6 +380,19 @@ void wxEnableTopLevelWindows(bool enable); wxString wxStripMenuCodes(const wxString& in); + +wxString wxGetEmailAddress(); +wxString wxGetHostName(); +wxString wxGetFullHostName(); +wxString wxGetUserId(); +wxString wxGetUserName(); +wxString wxGetHomeDir(); +wxString wxGetUserHome(const wxString& user = wxPyEmptyString); + + +// When wxApp gets the virtual method magic then enable this. +// bool wxHandleFatalExceptions(bool doIt = TRUE); + //---------------------------------------------------------------------- enum wxEdge { wxLeft, wxTop, wxRight, wxBottom, wxWidth, wxHeight, @@ -288,7 +408,7 @@ enum wxRelationship { wxUnconstrained = 0, wxAbsolute }; -class wxIndividualLayoutConstraint { +class wxIndividualLayoutConstraint : public wxObject { public: // wxIndividualLayoutConstraint(); // ~wxIndividualLayoutConstraint(); @@ -306,7 +426,7 @@ public: }; -class wxLayoutConstraints { +class wxLayoutConstraints : public wxObject { public: wxLayoutConstraints(); @@ -323,71 +443,6 @@ 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 @@ -404,7 +459,7 @@ public: }; -class wxAcceleratorTable { +class wxAcceleratorTable : public wxObject { public: // Can also accept a list of 3-tuples wxAcceleratorTable(int LCOUNT, wxAcceleratorEntry* choices); @@ -412,6 +467,7 @@ public: }; +wxAcceleratorEntry *wxGetAccelFromString(const wxString& label); %readonly %{ @@ -426,14 +482,14 @@ extern wxAcceleratorTable wxNullAcceleratorTable; //--------------------------------------------------------------------------- -class wxBusyInfo { +class wxBusyInfo : public wxObject { public: wxBusyInfo(const wxString& message); ~wxBusyInfo(); }; - //--------------------------------------------------------------------------- +