X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/99109c0ff1c29c7c977c073f9f8e0bf4b8e728f7..f01fbad837f6be9afed3e346b1b28dced163c9f5:/wxPython/contrib/gizmos/gizmos.i?ds=inline diff --git a/wxPython/contrib/gizmos/gizmos.i b/wxPython/contrib/gizmos/gizmos.i index b76d189788..2a3821483a 100644 --- a/wxPython/contrib/gizmos/gizmos.i +++ b/wxPython/contrib/gizmos/gizmos.i @@ -10,23 +10,29 @@ // 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 #include +#include #include #include #include - -#include "treelistctrl.h" + +#include "wx/treelistctrl.h" #include "wx/wxPython/pytree.h" %} @@ -35,14 +41,15 @@ %import windows.i %import controls.i -%pythoncode { wx = _core } -%pythoncode { __docfilter__ = wx.__DocFilter(globals()) } +%pythoncode { import wx } +%pythoncode { __docfilter__ = wx._core.__DocFilter(globals()) } MAKE_CONST_WXSTRING2(DynamicSashNameStr, wxT("dynamicSashWindow")); MAKE_CONST_WXSTRING2(EditableListBoxNameStr, wxT("editableListBox")); MAKE_CONST_WXSTRING2(TreeListCtrlNameStr, wxT("treelistctrl")); - +MAKE_CONST_WXSTRING(StaticPictureNameStr); + MAKE_CONST_WXSTRING_NOSWIG(EmptyString); @@ -51,13 +58,13 @@ MAKE_CONST_WXSTRING_NOSWIG(EmptyString); //--------------------------------------------------------------------------- enum { - wxEVT_DYNAMIC_SASH_SPLIT, - wxEVT_DYNAMIC_SASH_UNIFY, - wxDS_MANAGE_SCROLLBARS, wxDS_DRAG_CORNER, }; +%constant wxEventType wxEVT_DYNAMIC_SASH_SPLIT; +%constant wxEventType wxEVT_DYNAMIC_SASH_UNIFY; + /* wxDynamicSashSplitEvents are sent to your view by wxDynamicSashWindow @@ -134,18 +141,20 @@ public: */ +MustHaveApp(wxDynamicSashWindow); + class wxDynamicSashWindow : public wxWindow { public: %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(); + %RenameCtor(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); @@ -172,14 +181,15 @@ enum { // This class provides a composite control that lets the // user easily enter list of strings +MustHaveApp(wxEditableListBox); class wxEditableListBox : public wxPanel { public: %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, @@ -197,7 +207,7 @@ public: } } - wxListCtrl* GetListCtrl(); + wxPyListCtrl* GetListCtrl(); wxBitmapButton* GetDelButton(); wxBitmapButton* GetNewButton(); wxBitmapButton* GetUpButton(); @@ -222,6 +232,8 @@ public: typedef wxTreeCtrl wxPyTreeCtrl; %} +MustHaveApp(wxRemotelyScrolledTreeCtrl); + class wxRemotelyScrolledTreeCtrl: public wxPyTreeCtrl { public: @@ -273,11 +285,11 @@ public: virtual void DrawItem(wxDC& dc, wxTreeItemId id, const wxRect& rect) { bool found; - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "DrawItem"))) { - PyObject* dcobj = wxPyMake_wxObject(&dc); - PyObject* idobj = wxPyConstructObject((void*)&id, wxT("wxTreeItemId"), False); - PyObject* recobj= wxPyConstructObject((void*)&rect, wxT("wxRect"), False); + PyObject* dcobj = wxPyMake_wxObject(&dc,false); + PyObject* idobj = wxPyConstructObject((void*)&id, wxT("wxTreeItemId"), false); + PyObject* recobj= wxPyConstructObject((void*)&rect, wxT("wxRect"), false); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOO)", dcobj, idobj, recobj)); Py_DECREF(dcobj); Py_DECREF(idobj); @@ -293,7 +305,10 @@ public: %} -%name(TreeCompanionWindow) class wxPyTreeCompanionWindow: public wxWindow +MustHaveApp(wxPyTreeCompanionWindow); + +%rename(TreeCompanionWindow) wxPyTreeCompanionWindow; +class wxPyTreeCompanionWindow: public wxWindow { public: %pythonAppend wxPyTreeCompanionWindow "self._setOORInfo(self);self._setCallbackInfo(self, TreeCompanionWindow)" @@ -318,6 +333,8 @@ public: * than the usual one. */ +MustHaveApp(wxThinSplitterWindow); + class wxThinSplitterWindow: public wxSplitterWindow { public: @@ -341,6 +358,8 @@ public: * scroll appropriately. */ +MustHaveApp(wxSplitterScrolledWindow); + class wxSplitterScrolledWindow: public wxScrolledWindow { public: @@ -370,6 +389,8 @@ enum wxLEDValueAlign }; +MustHaveApp(wxLEDNumberCtrl); + class wxLEDNumberCtrl : public wxControl { public: @@ -380,7 +401,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxLED_ALIGN_LEFT | wxLED_DRAW_FADED); - %name(PreLEDNumberCtrl) wxLEDNumberCtrl(); + %RenameCtor(PreLEDNumberCtrl, wxLEDNumberCtrl()); bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, @@ -416,6 +437,20 @@ enum { }; +enum { + // flags for FindItem + wxTL_SEARCH_VISIBLE, + wxTL_SEARCH_LEVEL, + wxTL_SEARCH_FULL, + wxTL_SEARCH_PARTIAL, + wxTL_SEARCH_NOCASE +}; + +enum { + // extra tree styles + wxTR_DONT_ADJUST_MAC +}; +%pythoncode { wx.TR_DONT_ADJUST_MAC = TR_DONT_ADJUST_MAC } class wxTreeListColumnInfo: public wxObject { @@ -423,14 +458,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); @@ -458,7 +497,7 @@ public: const wxTreeItemId& item2) { int rval = 0; bool found; - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t 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); @@ -483,7 +522,10 @@ IMPLEMENT_ABSTRACT_CLASS(wxPyTreeListCtrl, wxTreeListCtrl) -%name(TreeListCtrl) class wxPyTreeListCtrl : public wxControl +MustHaveApp(wxPyTreeListCtrl); + +%rename(TreeListCtrl) wxPyTreeListCtrl; +class wxPyTreeListCtrl : public wxControl { public: %pythonAppend wxPyTreeListCtrl "self._setOORInfo(self);self._setCallbackInfo(self, TreeListCtrl)" @@ -495,7 +537,7 @@ public: long style = wxTR_DEFAULT_STYLE, const wxValidator &validator = wxDefaultValidator, const wxString& name = wxPyTreeListCtrlNameStr ); - %name(PreTreeListCtrl)wxPyTreeListCtrl(); + %RenameCtor(PreTreeListCtrl, wxPyTreeListCtrl()); bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, @@ -506,7 +548,7 @@ public: void _setCallbackInfo(PyObject* self, PyObject* _class); - + // get the total number of items in the control size_t GetCount() const; @@ -516,10 +558,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); @@ -553,11 +591,14 @@ public: // adds a column void AddColumn(const wxString& text); - %name(AddColumnInfo) void AddColumn(const wxTreeListColumnInfo& col); +// void AddColumn(const wxString& text, +// size_t width, +// wxTreeListColumnAlign alignment = wxTL_ALIGN_LEFT); + %Rename(AddColumnInfo, void, AddColumn(const wxTreeListColumnInfo& col)); // inserts a column before the given one void InsertColumn(size_t before, const wxString& text); - %name(InsertColumnInfo) void InsertColumn(size_t before, const wxTreeListColumnInfo& col); + %Rename(InsertColumnInfo, void, InsertColumn(size_t before, const wxTreeListColumnInfo& col)); // deletes the given column - does not delete the corresponding column // of each item @@ -586,6 +627,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) @@ -663,17 +706,17 @@ public: // allow the user to expand the items which don't have any children now // - but instead add them only when needed, thus minimizing memory // usage and loading time. - void SetItemHasChildren(const wxTreeItemId& item, bool has = True); + void SetItemHasChildren(const wxTreeItemId& item, bool has = true); // the item will be shown in bold - void SetItemBold(const wxTreeItemId& item, bool bold = True); + 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); @@ -701,7 +744,7 @@ public: // if 'recursively' is False, only immediate children count, otherwise // the returned number is the number of all items in this branch - size_t GetChildrenCount(const wxTreeItemId& item, bool recursively = True); + size_t GetChildrenCount(const wxTreeItemId& item, bool recursively = true); // wxTreeItemId.IsOk() will return False if there is no such item @@ -716,14 +759,14 @@ public: //size_t GetSelections(wxArrayTreeItemIds&) const; %extend { PyObject* GetSelections() { - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); PyObject* rval = PyList_New(0); wxArrayTreeItemIds array; size_t num, x; num = self->GetSelections(array); for (x=0; x < num; x++) { wxTreeItemId *tii = new wxTreeItemId(array.Item(x)); - PyObject* item = wxPyConstructObject((void*)tii, wxT("wxTreeItemId"), True); + PyObject* item = wxPyConstructObject((void*)tii, wxT("wxTreeItemId"), true); PyList_Append(rval, item); } wxPyEndBlockThreads(blocked); @@ -733,7 +776,7 @@ public: // 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 @@ -743,17 +786,19 @@ 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; + void* cookie = 0; wxTreeItemId* ritem = new wxTreeItemId(self->GetFirstChild(item, cookie)); - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t 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)); + PyTuple_SET_ITEM(tup, 1, wxPyMakeSwigPtr(cookie, wxT("void"))); wxPyEndBlockThreads(blocked); return tup; } @@ -763,15 +808,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) { + PyObject* GetNextChild(const wxTreeItemId& item, void* cookie) { wxTreeItemId* ritem = new wxTreeItemId(self->GetNextChild(item, cookie)); - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t 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)); + 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 @@ -816,12 +865,12 @@ public: wxPyTreeItemData *data = NULL); // insert a new item before the one with the given index - %name(InsertItemBefore) - wxTreeItemId InsertItem(const wxTreeItemId& parent, + %Rename(InsertItemBefore, + wxTreeItemId, InsertItem(const wxTreeItemId& parent, size_t index, const wxString& text, int image = -1, int selectedImage = -1, - wxPyTreeItemData *data = NULL); + wxPyTreeItemData *data = NULL)); // insert a new item in as the last child of the parent wxTreeItemId AppendItem(const wxTreeItemId& parent, @@ -860,9 +909,11 @@ public: void UnselectAll(); // select this item - void SelectItem(const wxTreeItemId& item, bool unselect_others=True, - bool extended_select=False); + 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); @@ -875,10 +926,10 @@ public: %extend { // get the bounding rectangle of the item (or of its label only) - PyObject* GetBoundingRect(const wxTreeItemId& item, bool textOnly = False) { + PyObject* GetBoundingRect(const wxTreeItemId& item, bool textOnly = false) { wxRect rect; if (self->GetBoundingRect(item, rect, textOnly)) { - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); wxRect* r = new wxRect(rect); PyObject* val = wxPyConstructObject((void*)r, wxT("wxRect"), 1); wxPyEndBlockThreads(blocked); @@ -900,19 +951,63 @@ 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; + // searching + wxTreeItemId FindItem (const wxTreeItemId& item, const wxString& str, int flags = 0); - // set the selected item image - void SetItemSelectedImage(const wxTreeItemId& item, int image); + wxWindow* GetHeaderWindow() const; + wxScrolledWindow* GetMainWindow() const; +}; - wxWindow* GetHeaderWindow() const; - wxWindow* GetMainWindow() const; +//---------------------------------------------------------------------- +enum +{ + wxSCALE_HORIZONTAL, + wxSCALE_VERTICAL, + wxSCALE_UNIFORM, + wxSCALE_CUSTOM }; +MustHaveApp(wxStaticPicture); + +class wxStaticPicture : public wxControl +{ +public: + %pythonAppend wxStaticPicture "self._setOORInfo(self)" + %pythonAppend wxStaticPicture() "" + + wxStaticPicture( wxWindow* parent, wxWindowID id=-1, + const wxBitmap& label=wxNullBitmap, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxPyStaticPictureNameStr ); + %RenameCtor(PreStaticPicture, wxStaticPicture()); + + bool Create( wxWindow* parent, wxWindowID id=-1, + const wxBitmap& label=wxNullBitmap, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxPyStaticPictureNameStr ); + + void SetBitmap( const wxBitmap& bmp ); + wxBitmap GetBitmap() const; + void SetIcon( const wxIcon& icon ); + wxIcon GetIcon() const; + + void SetAlignment( int align ); + int GetAlignment() const; + + void SetScale( int scale ); + int GetScale() const; + + void SetCustomScale( float sx, float sy ); + void GetCustomScale( float* OUTPUT, float* OUTPUT ) const; + +}; //---------------------------------------------------------------------- @@ -930,8 +1025,3 @@ public: //---------------------------------------------------------------------- //---------------------------------------------------------------------- - - - - -