X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dd9f7fea29e3f8bb61861f52984b7943512346ac..015fd9ef4833ec3d8b0043a1c7e448c8be4f734a:/wxPython/contrib/gizmos/gizmos.i diff --git a/wxPython/contrib/gizmos/gizmos.i b/wxPython/contrib/gizmos/gizmos.i index 8213bd273a..5e7044221c 100644 --- a/wxPython/contrib/gizmos/gizmos.i +++ b/wxPython/contrib/gizmos/gizmos.i @@ -10,13 +10,18 @@ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// -%module gizmos +%define DOCSTRING +"Various *gizmo* classes: `DynamicSashWindow`, `EditableListBox`, +`LEDNumberCtrl`, `TreeListCtrl`, etc." +%enddef + +%module(package="wx", docstring=DOCSTRING) gizmos %{ #include "wx/wxPython/wxPython.h" #include "wx/wxPython/pyclasses.h" - + #include #include #include @@ -25,22 +30,26 @@ #include #include #include - -#include "treelistctrl.h" + +#include "wx/treelistctrl.h" #include "wx/wxPython/pytree.h" - - static const wxString wxPyDynamicSashNameStr(wxT("dynamicSashWindow")); - static const wxString wxPyEditableListBoxNameStr(wxT("editableListBox")); - static const wxString wxPyTreeListCtrlNameStr(wxT("treelistctrl")); - static const wxString wxPyEmptyString(wxT("")); %} //--------------------------------------------------------------------------- %import windows.i %import controls.i -%pythoncode { wx = core } +%pythoncode { wx = _core } +%pythoncode { __docfilter__ = wx.__DocFilter(globals()) } + + +MAKE_CONST_WXSTRING2(DynamicSashNameStr, wxT("dynamicSashWindow")); +MAKE_CONST_WXSTRING2(EditableListBoxNameStr, wxT("editableListBox")); +MAKE_CONST_WXSTRING2(TreeListCtrlNameStr, wxT("treelistctrl")); + +MAKE_CONST_WXSTRING_NOSWIG(EmptyString); + %include _gizmos_rename.i @@ -130,18 +139,20 @@ public: */ +MustHaveApp(wxDynamicSashWindow); + class wxDynamicSashWindow : public wxWindow { public: - %addtofunc wxDynamicSashWindow "self._setOORInfo(self)" - %addtofunc wxDynamicSashWindow() "" + %pythonAppend wxDynamicSashWindow "self._setOORInfo(self)" + %pythonAppend wxDynamicSashWindow() "" - wxDynamicSashWindow(wxWindow *parent, wxWindowID id, + wxDynamicSashWindow(wxWindow *parent, wxWindowID id=-1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxCLIP_CHILDREN | wxDS_MANAGE_SCROLLBARS | wxDS_DRAG_CORNER, const wxString& name = wxPyDynamicSashNameStr); %name(PreDynamicSashWindow)wxDynamicSashWindow(); - bool Create(wxWindow *parent, wxWindowID id, + bool Create(wxWindow *parent, wxWindowID id=-1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxCLIP_CHILDREN | wxDS_MANAGE_SCROLLBARS | wxDS_DRAG_CORNER, const wxString& name = wxPyDynamicSashNameStr); @@ -168,14 +179,15 @@ enum { // This class provides a composite control that lets the // user easily enter list of strings +MustHaveApp(wxEditableListBox); class wxEditableListBox : public wxPanel { public: - %addtofunc wxEditableListBox "self._setOORInfo(self)" - %addtofunc wxEditableListBox() "" + %pythonAppend wxEditableListBox "self._setOORInfo(self)" + %pythonAppend wxEditableListBox() "" - wxEditableListBox(wxWindow *parent, wxWindowID id, - const wxString& label, + wxEditableListBox(wxWindow *parent, wxWindowID id=-1, + const wxString& label = wxPyEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxEL_ALLOW_NEW | wxEL_ALLOW_EDIT | wxEL_ALLOW_DELETE, @@ -218,11 +230,13 @@ public: typedef wxTreeCtrl wxPyTreeCtrl; %} +MustHaveApp(wxRemotelyScrolledTreeCtrl); + class wxRemotelyScrolledTreeCtrl: public wxPyTreeCtrl { public: - %addtofunc wxRemotelyScrolledTreeCtrl "self._setOORInfo(self)" - %addtofunc wxRemotelyScrolledTreeCtrl() "" + %pythonAppend wxRemotelyScrolledTreeCtrl "self._setOORInfo(self)" + %pythonAppend wxRemotelyScrolledTreeCtrl() "" wxRemotelyScrolledTreeCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, @@ -269,7 +283,7 @@ public: virtual void DrawItem(wxDC& dc, wxTreeItemId id, const wxRect& rect) { bool found; - wxPyBeginBlockThreads(); + bool blocked = wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "DrawItem"))) { PyObject* dcobj = wxPyMake_wxObject(&dc); PyObject* idobj = wxPyConstructObject((void*)&id, wxT("wxTreeItemId"), False); @@ -279,7 +293,7 @@ public: Py_DECREF(idobj); Py_DECREF(recobj); } - wxPyEndBlockThreads(); + wxPyEndBlockThreads(blocked); if (! found) wxTreeCompanionWindow::DrawItem(dc, id, rect); } @@ -289,11 +303,13 @@ public: %} +MustHaveApp(wxPyTreeCompanionWindow); + %name(TreeCompanionWindow) class wxPyTreeCompanionWindow: public wxWindow { public: - %addtofunc wxPyTreeCompanionWindow "self._setOORInfo(self);self._setCallbackInfo(self, TreeCompanionWindow)" - %addtofunc wxPyTreeCompanionWindow() "" + %pythonAppend wxPyTreeCompanionWindow "self._setOORInfo(self);self._setCallbackInfo(self, TreeCompanionWindow)" + %pythonAppend wxPyTreeCompanionWindow() "" wxPyTreeCompanionWindow(wxWindow* parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, @@ -314,11 +330,13 @@ public: * than the usual one. */ +MustHaveApp(wxThinSplitterWindow); + class wxThinSplitterWindow: public wxSplitterWindow { public: - %addtofunc wxThinSplitterWindow "self._setOORInfo(self)" - %addtofunc wxThinSplitterWindow() "" + %pythonAppend wxThinSplitterWindow "self._setOORInfo(self)" + %pythonAppend wxThinSplitterWindow() "" wxThinSplitterWindow(wxWindow* parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, @@ -337,11 +355,13 @@ public: * scroll appropriately. */ +MustHaveApp(wxSplitterScrolledWindow); + class wxSplitterScrolledWindow: public wxScrolledWindow { public: - %addtofunc wxSplitterScrolledWindow "self._setOORInfo(self)" - %addtofunc wxSplitterScrolledWindow() "" + %pythonAppend wxSplitterScrolledWindow "self._setOORInfo(self)" + %pythonAppend wxSplitterScrolledWindow() "" wxSplitterScrolledWindow(wxWindow* parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, @@ -366,11 +386,13 @@ enum wxLEDValueAlign }; +MustHaveApp(wxLEDNumberCtrl); + class wxLEDNumberCtrl : public wxControl { public: - %addtofunc wxLEDNumberCtrl "self._setOORInfo(self)" - %addtofunc wxLEDNumberCtrl() "" + %pythonAppend wxLEDNumberCtrl "self._setOORInfo(self)" + %pythonAppend wxLEDNumberCtrl() "" wxLEDNumberCtrl(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, @@ -412,6 +434,15 @@ enum { }; +enum { + // flags for FindItem + wxTL_SEARCH_VISIBLE, + wxTL_SEARCH_LEVEL, + wxTL_SEARCH_FULL, + wxTL_SEARCH_PARTIAL, + wxTL_SEARCH_NOCASE +}; + class wxTreeListColumnInfo: public wxObject { @@ -419,14 +450,18 @@ public: wxTreeListColumnInfo(const wxString& text = wxPyEmptyString, int image = -1, size_t width = 100, + bool shown = True, wxTreeListColumnAlign alignment = wxTL_ALIGN_LEFT); + bool GetShown() const; wxTreeListColumnAlign GetAlignment() const; wxString GetText() const; int GetImage() const; int GetSelectedImage() const; size_t GetWidth() const; + // TODO: These all actually return wxTreeListColumnInfo&, any problem with doing it for Python too? + void SetShown(bool shown); void SetAlignment(wxTreeListColumnAlign alignment); void SetText(const wxString& text); void SetImage(int image); @@ -454,7 +489,7 @@ public: const wxTreeItemId& item2) { int rval = 0; bool found; - wxPyBeginBlockThreads(); + bool blocked = wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "OnCompareItems"))) { PyObject *o1 = wxPyConstructObject((void*)&item1, wxT("wxTreeItemId"), 0); PyObject *o2 = wxPyConstructObject((void*)&item2, wxT("wxTreeItemId"), 0); @@ -462,7 +497,7 @@ public: Py_DECREF(o1); Py_DECREF(o2); } - wxPyEndBlockThreads(); + wxPyEndBlockThreads(blocked); if (! found) rval = wxTreeListCtrl::OnCompareItems(item1, item2); return rval; @@ -479,11 +514,13 @@ IMPLEMENT_ABSTRACT_CLASS(wxPyTreeListCtrl, wxTreeListCtrl) +MustHaveApp(wxPyTreeListCtrl); + %name(TreeListCtrl) class wxPyTreeListCtrl : public wxControl { public: - %addtofunc wxPyTreeListCtrl "self._setOORInfo(self);self._setCallbackInfo(self, TreeListCtrl)" - %addtofunc wxPyTreeListCtrl() "" + %pythonAppend wxPyTreeListCtrl "self._setOORInfo(self);self._setCallbackInfo(self, TreeListCtrl)" + %pythonAppend wxPyTreeListCtrl() "" wxPyTreeListCtrl(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, @@ -502,7 +539,7 @@ public: void _setCallbackInfo(PyObject* self, PyObject* _class); - + // get the total number of items in the control size_t GetCount() const; @@ -512,10 +549,6 @@ public: unsigned int GetIndent() const; void SetIndent(unsigned int indent); - // spacing is the number of pixels between the start and the Text - unsigned int GetSpacing() const; - void SetSpacing(unsigned int spacing); - // line spacing is the space above and below the text on each line unsigned int GetLineSpacing() const; void SetLineSpacing(unsigned int spacing); @@ -540,19 +573,18 @@ public: void SetStateImageList(wxImageList *imageList); void SetButtonsImageList(wxImageList *imageList); - %addtofunc AssignImageList "args[1].thisown = 0"; + %apply SWIGTYPE *DISOWN { wxImageList *imageList }; void AssignImageList(wxImageList *imageList); - - %addtofunc AssignStateImageList "args[1].thisown = 0"; void AssignStateImageList(wxImageList *imageList); - - %addtofunc AssignButtonsImageList "args[1].thisown = 0"; void AssignButtonsImageList(wxImageList *imageList); - + %clear wxImageList *imageList; // adds a column void AddColumn(const wxString& text); +// void AddColumn(const wxString& text, +// size_t width, +// wxTreeListColumnAlign alignment = wxTL_ALIGN_LEFT); %name(AddColumnInfo) void AddColumn(const wxTreeListColumnInfo& col); // inserts a column before the given one @@ -586,6 +618,8 @@ public: void SetColumnImage(size_t column, int image); int GetColumnImage(size_t column) const; + void ShowColumn(size_t column, bool shown); + bool IsColumnShown(size_t column) const; %extend { // retrieves item's label of the given column (main column by default) @@ -655,6 +689,8 @@ public: data->SetData(obj); } } + %pythoncode { GetPyData = GetItemPyData } + %pythoncode { SetPyData = SetItemPyData } // force appearance of [+] button near the item. This is useful to @@ -667,11 +703,11 @@ public: void SetItemBold(const wxTreeItemId& item, bool bold = True); // set the item's text colour - void SetItemTextColour(const wxTreeItemId& item, const wxColour& col); + void SetItemTextColour(const wxTreeItemId& item, const wxColour& colour); // set the item's background colour void SetItemBackgroundColour(const wxTreeItemId& item, - const wxColour& col); + const wxColour& colour); // set the item's font (should be of the same height for all items) void SetItemFont(const wxTreeItemId& item, const wxFont& font); @@ -714,7 +750,7 @@ public: //size_t GetSelections(wxArrayTreeItemIds&) const; %extend { PyObject* GetSelections() { - wxPyBeginBlockThreads(); + bool blocked = wxPyBeginBlockThreads(); PyObject* rval = PyList_New(0); wxArrayTreeItemIds array; size_t num, x; @@ -724,14 +760,14 @@ public: PyObject* item = wxPyConstructObject((void*)tii, wxT("wxTreeItemId"), True); PyList_Append(rval, item); } - wxPyEndBlockThreads(); + wxPyEndBlockThreads(blocked); return rval; } } // get the parent of this item (may return NULL if root) - %name(GetItemParent)wxTreeItemId GetParent(const wxTreeItemId& item) const; + wxTreeItemId GetItemParent(const wxTreeItemId& item) const; // for this enumeration function you must pass in a "cookie" parameter // which is opaque for the application but is necessary for the library @@ -741,18 +777,20 @@ public: // the same! + // NOTE: These are a copy of the same methods in _treectrl.i, be sure to + // update both at the same time. (Or find a good way to refactor!) %extend { // Get the first child of this item. Returns a wxTreeItemId and an // opaque "cookie" value that should be passed to GetNextChild in // order to continue the search. PyObject* GetFirstChild(const wxTreeItemId& item) { - long cookie = 0; - wxTreeItemId ritem = self->GetFirstChild(item, cookie); - wxPyBeginBlockThreads(); + void* cookie = 0; + wxTreeItemId* ritem = new wxTreeItemId(self->GetFirstChild(item, cookie)); + bool blocked = wxPyBeginBlockThreads(); PyObject* tup = PyTuple_New(2); - PyTuple_SET_ITEM(tup, 0, wxPyConstructObject(&ritem, wxT("wxTreeItemId"), true)); - PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(cookie)); - wxPyEndBlockThreads(); + PyTuple_SET_ITEM(tup, 0, wxPyConstructObject(ritem, wxT("wxTreeItemId"), True)); + PyTuple_SET_ITEM(tup, 1, wxPyMakeSwigPtr(cookie, wxT("void"))); + wxPyEndBlockThreads(blocked); return tup; } @@ -761,15 +799,19 @@ public: // value returned from GetFirstChild or the previous GetNextChild. // Returns a wxTreeItemId and an opaque "cookie" value that should be // passed to GetNextChild in order to continue the search. - PyObject* GetNextChild(const wxTreeItemId& item, long cookie) { - wxTreeItemId ritem = self->GetNextChild(item, cookie); - wxPyBeginBlockThreads(); + PyObject* GetNextChild(const wxTreeItemId& item, void* cookie) { + wxTreeItemId* ritem = new wxTreeItemId(self->GetNextChild(item, cookie)); + bool blocked = wxPyBeginBlockThreads(); PyObject* tup = PyTuple_New(2); - PyTuple_SET_ITEM(tup, 0, wxPyConstructObject(&ritem, wxT("wxTreeItemId"), true)); - PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(cookie)); - wxPyEndBlockThreads(); + PyTuple_SET_ITEM(tup, 0, wxPyConstructObject(ritem, wxT("wxTreeItemId"), True)); + PyTuple_SET_ITEM(tup, 1, wxPyMakeSwigPtr(cookie, wxT("void"))); + wxPyEndBlockThreads(blocked); return tup; - } + } + + + // TODO: GetPrevChild + } // get the last child of this item - this method doesn't use cookies @@ -861,6 +903,8 @@ public: void SelectItem(const wxTreeItemId& item, bool unselect_others=True, bool extended_select=False); + void SelectAll(bool extended_select=False); + // make sure this item is visible (expanding the parent item and/or // scrolling to this item if necessary) void EnsureVisible(const wxTreeItemId& item); @@ -876,10 +920,10 @@ public: PyObject* GetBoundingRect(const wxTreeItemId& item, bool textOnly = False) { wxRect rect; if (self->GetBoundingRect(item, rect, textOnly)) { - wxPyBeginBlockThreads(); + bool blocked = wxPyBeginBlockThreads(); wxRect* r = new wxRect(rect); PyObject* val = wxPyConstructObject((void*)r, wxT("wxRect"), 1); - wxPyEndBlockThreads(); + wxPyEndBlockThreads(blocked); return val; } else { @@ -898,12 +942,8 @@ public: // sort the children of this item using OnCompareItems void SortChildren(const wxTreeItemId& item); - // get the selected item image - int GetItemSelectedImage(const wxTreeItemId& item) const; - - // set the selected item image - void SetItemSelectedImage(const wxTreeItemId& item, int image); - + // searching + wxTreeItemId FindItem (const wxTreeItemId& item, const wxString& str, int flags = 0); wxWindow* GetHeaderWindow() const; wxWindow* GetMainWindow() const; @@ -928,8 +968,3 @@ public: //---------------------------------------------------------------------- //---------------------------------------------------------------------- - - - - -