X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/00b6c4e33bdb2fcc1b56d429653963182608674b..8de28db94f9d03acfcbbbac841c26a2c40223618:/wxPython/src/controls2.i diff --git a/wxPython/src/controls2.i b/wxPython/src/controls2.i index 4539b8e79d..01436fa680 100644 --- a/wxPython/src/controls2.i +++ b/wxPython/src/controls2.i @@ -60,6 +60,11 @@ enum { wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK, wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxEVT_COMMAND_LIST_CACHE_HINT, + wxEVT_COMMAND_LIST_COL_RIGHT_CLICK, + wxEVT_COMMAND_LIST_COL_BEGIN_DRAG, + wxEVT_COMMAND_LIST_COL_DRAGGING, + wxEVT_COMMAND_LIST_COL_END_DRAG, + }; @@ -103,6 +108,18 @@ def EVT_LIST_INSERT_ITEM(win, id, func): def EVT_LIST_COL_CLICK(win, id, func): win.Connect(id, -1, wxEVT_COMMAND_LIST_COL_CLICK, func) +def EVT_LIST_COL_RIGHT_CLICK(win, id, func): + win.Connect(id, -1, wxEVT_COMMAND_LIST_COL_RIGHT_CLICK, func) + +def EVT_LIST_COL_BEGIN_DRAG(win, id, func): + win.Connect(id, -1, wxEVT_COMMAND_LIST_COL_BEGIN_DRAG, func) + +def EVT_LIST_COL_DRAGGING(win, id, func): + win.Connect(id, -1, wxEVT_COMMAND_LIST_COL_DRAGGING, func) + +def EVT_LIST_COL_END_DRAG(win, id, func): + win.Connect(id, -1, wxEVT_COMMAND_LIST_COL_END_DRAG, func) + def EVT_LIST_ITEM_RIGHT_CLICK(win, id, func): win.Connect(id, -1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, func) @@ -142,6 +159,7 @@ enum { wxLC_MASK_ALIGN, wxLC_MASK_SORT, + wxLC_USER_TEXT, }; @@ -308,6 +326,8 @@ public: class wxListEvent: public wxNotifyEvent { public: + wxListEvent(wxEventType commandType = wxEVT_NULL, int id = 0); + int m_code; long m_itemIndex; long m_oldItemIndex; @@ -329,13 +349,17 @@ public: long GetData(); long GetMask(); const wxListItem& GetItem(); + + long GetCacheFrom(); + long GetCacheTo(); }; -%{ +%{ // C++ Version of a Python aware class class wxPyListCtrl : public wxListCtrl { DECLARE_ABSTRACT_CLASS(wxPyListCtrl); public: + wxPyListCtrl() : wxListCtrl() {} wxPyListCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, @@ -344,6 +368,15 @@ public: char* name) : wxListCtrl(parent, id, pos, size, style, validator, name) {} + bool Create(wxWindow* parent, wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style, + const wxValidator& validator, + char* name) { + return wxListCtrl::Create(parent, id, pos, size, style, validator, name); + } + DEC_PYCALLBACK_STRING_LONGLONG(OnGetItemText); DEC_PYCALLBACK_INT_LONG(OnGetItemImage); DEC_PYCALLBACK_LISTATTR_LONG(OnGetItemAttr); @@ -367,9 +400,16 @@ public: long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, char* name = "listCtrl"); + %name(wxPreListCtrl)wxPyListCtrl(); + + bool Create(wxWindow* parent, wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxLC_ICON, + const wxValidator& validator = wxDefaultValidator, + char* name = "listCtrl"); void _setSelf(PyObject* self, PyObject* _class); - %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)" %pragma(python) addtomethod = "__init__:self._setSelf(self, wxListCtrl)" @@ -616,11 +656,42 @@ public: } } + %pragma(python) addtoclass = " + # Some helpers... + + def Select(self, idx, on=1): + '''[de]select an item''' + if on: state = wxLIST_STATE_SELECTED + else: state = 0 + self.SetItemState(idx, state, wxLIST_STATE_SELECTED) + + def Focus(self, idx): + '''Focus and show the given item''' + self.SetItemState(idx, wxLIST_STATE_FOCUSED, wxLIST_STATE_FOCUSED) + self.EnsureVisible(idx) + + def GetFocusedItem(self): + '''get the currently focused item or -1 if none''' + return self.GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_FOCUSED) + + def IsSelected(self, idx): + '''return TRUE if the item is selected''' + return self.GetItemState(idx, wxLIST_STATE_SELECTED) != 0 + + def SetColumnImage(self, col, image): + item = wxListItem() + item.SetMask(wxLIST_MASK_IMAGE) + item.SetImage(image) + self.SetColumn(col, item) + + def ClearColumnImage(self, col): + self.SetColumnImage(col, -1) + " }; -%{ +%{ // Python aware sorting function for wxPyListCtrl int wxCALLBACK wxPyListCtrl_SortItems(long item1, long item2, long funcPtr) { int retval = 0; PyObject* func = (PyObject*)funcPtr; @@ -640,6 +711,50 @@ public: %} +//---------------------------------------------------------------------- + +class wxListView : public wxPyListCtrl +{ +public: + wxListView( wxWindow *parent, + wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxLC_REPORT, + const wxValidator& validator = wxDefaultValidator, + const wxString &name = "listctrl" ); + %name(wxPreListView)wxListView(); + + bool Create( wxWindow *parent, + wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxLC_REPORT, + const wxValidator& validator = wxDefaultValidator, + const wxString &name = "listctrl" ); + + + // [de]select an item + void Select(long n, bool on = TRUE); + + // focus and show the given item + void Focus(long index); + + // get the currently focused item or -1 if none + long GetFocusedItem() const; + + // get first and subsequent selected items, return -1 when no more + long GetNextSelected(long item) const; + long GetFirstSelected() const; + + // return TRUE if the item is selected + bool IsSelected(long index); + + void SetColumnImage(int col, int image); + void ClearColumnImage(int col); +}; + + //---------------------------------------------------------------------- // wxTreeCtrl flags @@ -875,10 +990,11 @@ public: -%{ +%{ // C++ version of Python aware wxTreeCtrl class wxPyTreeCtrl : public wxTreeCtrl { DECLARE_ABSTRACT_CLASS(wxPyTreeCtrl); public: + wxPyTreeCtrl() : wxTreeCtrl() {} wxPyTreeCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, @@ -887,6 +1003,16 @@ public: char* name) : wxTreeCtrl(parent, id, pos, size, style, validator, name) {} + bool Create(wxWindow *parent, wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style, + const wxValidator& validator, + char* name) { + return wxTreeCtrl::Create(parent, id, pos, size, style, validator, name); + } + + int OnCompareItems(const wxTreeItemId& item1, const wxTreeItemId& item2) { int rval = 0; @@ -921,9 +1047,16 @@ public: long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT, const wxValidator& validator = wxDefaultValidator, char* name = "wxTreeCtrl"); + %name(wxPreTreeCtrl)wxPyTreeCtrl(); + + bool Create(wxWindow *parent, wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT, + const wxValidator& validator = wxDefaultValidator, + char* name = "wxTreeCtrl"); void _setSelf(PyObject* self, PyObject* _class); - %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)" %pragma(python) addtomethod = "__init__:self._setSelf(self, wxTreeCtrl)" size_t GetCount(); @@ -1135,69 +1268,6 @@ public: }; -//---------------------------------------------------------------------- - -#ifdef SKIPTHIS -#ifdef __WXMSW__ - - -enum { - /* tab control event types */ - wxEVT_COMMAND_TAB_SEL_CHANGED, - wxEVT_COMMAND_TAB_SEL_CHANGING, -}; - - -class wxTabEvent : public wxCommandEvent { -public: -}; - - - -class wxTabCtrl : public wxControl { -public: - wxTabCtrl(wxWindow* parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - char* name = "tabCtrl"); - - %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)" - - bool DeleteAllItems(); - bool DeleteItem(int item); - wxImageList* GetImageList(); - int GetItemCount(); - // TODO: void* GetItemData(); - int GetItemImage(int item); - - %addmethods { - %new wxRect* GetItemRect(int item) { - wxRect* rect = new wxRect; - self->GetItemRect(item, *rect); - return rect; - } - } - - wxString GetItemText(int item); - bool GetRowCount(); - int GetSelection(); - int HitTest(const wxPoint& pt, long& OUTPUT); - void InsertItem(int item, const wxString& text, - int imageId = -1, void* clientData = NULL); - // TODO: bool SetItemData(int item, void* data); - bool SetItemImage(int item, int image); - void SetImageList(wxImageList* imageList); - void SetItemSize(const wxSize& size); - bool SetItemText(int item, const wxString& text); - void SetPadding(const wxSize& padding); - int SetSelection(int item); - -}; - -#endif -#endif - //---------------------------------------------------------------------- %init %{