X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/db0ff83efbd6105c04d5ab84c85094e887e97b9a..b9ac87bc5cbe46227195e32c44e25831f8206e3c:/wxPython/src/controls2.i?ds=inline diff --git a/wxPython/src/controls2.i b/wxPython/src/controls2.i index 36512cc58b..323166e3a8 100644 --- a/wxPython/src/controls2.i +++ b/wxPython/src/controls2.i @@ -52,6 +52,11 @@ static const wxString wxPyEmptyString(wxT("")); %} + +%{ + static const long longzero = 0; +%} + //---------------------------------------------------------------------- enum { @@ -344,14 +349,17 @@ class wxListEvent: public wxNotifyEvent { public: wxListEvent(wxEventType commandType = wxEVT_NULL, int id = 0); +%readonly int m_code; long m_oldItemIndex; long m_itemIndex; int m_col; wxPoint m_pointDrag; wxListItem m_item; +%readwrite - int GetCode(); + int GetKeyCode(); + %pragma(python) addtoclass = "GetCode = GetKeyCode" long GetIndex(); int GetColumn(); wxPoint GetPoint(); @@ -437,14 +445,15 @@ public: %addmethods { %new wxListItem* GetColumn(int col) { wxListItem item; + item.SetMask(0xFFFF); if (self->GetColumn(col, item)) return new wxListItem(item); else return NULL; } - } // The OOR typemaps don't know what to do with the %new, so fix it up. + } // The OOR typemaps don't know what to do with the %new, so fix it up. %pragma(python) addtoclass = " - def GetItem(self, *_args, **_kwargs): + def GetColumn(self, *_args, **_kwargs): val = apply(controls2c.wxListCtrl_GetColumn,(self,) + _args, _kwargs) if val is not None: val.thisown = 1 return val @@ -485,11 +494,10 @@ public: %pragma(python) addtoclass = " def GetItem(self, *_args, **_kwargs): val = apply(controls2c.wxListCtrl_GetItem,(self,) + _args, _kwargs) - val.thisown = 1 + if val is not None: val.thisown = 1 return val " - // Sets information about the item bool SetItem(wxListItem& info) ; @@ -551,6 +559,10 @@ public: // view, otherwise the large icon view. int GetItemSpacing(bool isSmall) const; +#ifndef __WXMSW__ + void SetItemSpacing( int spacing, bool isSmall = FALSE ); +#endif + // Gets the number of selected items in the list control int GetSelectedItemCount() const; @@ -615,6 +627,8 @@ public: // End label editing, optionally cancelling the edit bool EndEditLabel(bool cancel); +#else + void EditLabel(long item); #endif // Ensures this item is visible @@ -667,21 +681,11 @@ public: // to scroll. If in report view mode, y specifies the number of lines to scroll. bool ScrollList(int dx, int dy); - // bool SortItems(wxListCtrlCompare fn, long data); - %addmethods { - // Sort items. - // func is a function which takes 2 long arguments: item1, item2. - // item1 is the long data associated with a first item (NOT the index). - // item2 is the long data associated with a second item (NOT the index). - // The return value is a negative number if the first item should precede the second - // item, a positive number of the second item should precede the first, - // or zero if the two items are equivalent. - bool SortItems(PyObject* func) { - if (!PyCallable_Check(func)) - return FALSE; - return self->SortItems(wxPyListCtrl_SortItems, (long)func); - } - } + void SetItemTextColour( long item, const wxColour& col); + wxColour GetItemTextColour( long item ) const; + void SetItemBackgroundColour( long item, const wxColour &col); + wxColour GetItemBackgroundColour( long item ) const; + %pragma(python) addtoclass = " # Some helpers... @@ -701,6 +705,14 @@ public: '''get the currently focused item or -1 if none''' return self.GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_FOCUSED) + def GetFirstSelected(self, *args): + '''return first selected item, or -1 when none''' + return self.GetNextSelected(-1) + + def GetNextSelected(self, item): + '''return subsequent selected items, or -1 when no more''' + return self.GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED) + def IsSelected(self, idx): '''return TRUE if the item is selected''' return self.GetItemState(idx, wxLIST_STATE_SELECTED) != 0 @@ -718,12 +730,44 @@ public: '''Append an item to the list control. The entry parameter should be a sequence with an item for each column''' if len(entry): + if wx.wxUSE_UNICODE: + cvtfunc = unicode + else: + cvtfunc = str pos = self.GetItemCount() - self.InsertStringItem(pos, str(entry[0])) + self.InsertStringItem(pos, cvtfunc(entry[0])) for i in range(1, len(entry)): - self.SetStringItem(pos, i, str(entry[i])) + self.SetStringItem(pos, i, cvtfunc(entry[i])) return pos " + + + // bool SortItems(wxListCtrlCompare fn, long data); + %addmethods { + // Sort items. + // func is a function which takes 2 long arguments: item1, item2. + // item1 is the long data associated with a first item (NOT the index). + // item2 is the long data associated with a second item (NOT the index). + // The return value is a negative number if the first item should precede the second + // item, a positive number of the second item should precede the first, + // or zero if the two items are equivalent. + bool SortItems(PyObject* func) { + if (!PyCallable_Check(func)) + return FALSE; + return self->SortItems(wxPyListCtrl_SortItems, (long)func); + } + } + + + %addmethods { + wxWindow* GetMainWindow() { + #ifdef __WXMSW__ + return self; + #else + return (wxWindow*)self->m_mainWin; + #endif + } + } }; @@ -1027,8 +1071,10 @@ public: wxTreeItemId GetOldItem(); wxPoint GetPoint(); const wxKeyEvent& GetKeyEvent(); - int GetCode(); + int GetKeyCode(); + %pragma(python) addtoclass = "GetCode = GetKeyCode" const wxString& GetLabel(); + bool IsEditCancelled() const; }; @@ -1061,11 +1107,13 @@ public: int rval = 0; bool found; wxPyBeginBlockThreads(); - if ((found = m_myInst.findCallback("OnCompareItems"))) - rval = m_myInst.callCallback(Py_BuildValue( - "(OO)", - wxPyConstructObject((void*)&item1, "wxTreeItemId"), - wxPyConstructObject((void*)&item2, "wxTreeItemId"))); + if ((found = m_myInst.findCallback("OnCompareItems"))) { + PyObject *o1 = wxPyConstructObject((void*)&item1, wxT("wxTreeItemId")); + PyObject *o2 = wxPyConstructObject((void*)&item2, wxT("wxTreeItemId")); + rval = m_myInst.callCallback(Py_BuildValue("(OO)",o1,o2)); + Py_DECREF(o1); + Py_DECREF(o2); + } wxPyEndBlockThreads(); if (! found) rval = wxTreeCtrl::OnCompareItems(item1, item2); @@ -1174,6 +1222,16 @@ public: } + // get the item's text colour + wxColour GetItemTextColour(const wxTreeItemId& item) const; + + // get the item's background colour + wxColour GetItemBackgroundColour(const wxTreeItemId& item) const; + + // get the item's font + wxFont GetItemFont(const wxTreeItemId& item) const; + + bool IsVisible(const wxTreeItemId& item); bool ItemHasChildren(const wxTreeItemId& item); bool IsExpanded(const wxTreeItemId& item); @@ -1181,7 +1239,7 @@ public: wxTreeItemId GetRootItem(); wxTreeItemId GetSelection(); - %name(GetItemParent) wxTreeItemId GetParent(const wxTreeItemId& item); + wxTreeItemId GetItemParent(const wxTreeItemId& item); //size_t GetSelections(wxArrayTreeItemIds& selection); %addmethods { PyObject* GetSelections() { @@ -1192,7 +1250,7 @@ public: num = self->GetSelections(array); for (x=0; x < num; x++) { wxTreeItemId *tii = new wxTreeItemId(array.Item(x)); - PyObject* item = wxPyConstructObject((void*)tii, "wxTreeItemId", TRUE); + PyObject* item = wxPyConstructObject((void*)tii, wxT("wxTreeItemId"), TRUE); PyList_Append(rval, item); } wxPyEndBlockThreads(); @@ -1204,7 +1262,7 @@ public: size_t GetChildrenCount(const wxTreeItemId& item, bool recursively = TRUE); - wxTreeItemId GetFirstChild(const wxTreeItemId& item, long& INOUT); + wxTreeItemId GetFirstChild(const wxTreeItemId& item, long& INOUT = longzero); wxTreeItemId GetNextChild(const wxTreeItemId& item, long& INOUT); wxTreeItemId GetNextSibling(const wxTreeItemId& item); wxTreeItemId GetPrevSibling(const wxTreeItemId& item); @@ -1252,12 +1310,11 @@ public: void SelectItem(const wxTreeItemId& item); void EnsureVisible(const wxTreeItemId& item); void ScrollTo(const wxTreeItemId& item); -#ifdef __WXMSW__ - wxTextCtrl* EditLabel(const wxTreeItemId& item); + wxTextCtrl* GetEditControl(); - void EndEditLabel(const wxTreeItemId& item, int discardChanges = FALSE); -#else void EditLabel(const wxTreeItemId& item); +#ifdef __WXMSW__ + void EndEditLabel(const wxTreeItemId& item, int discardChanges = FALSE); #endif void SortChildren(const wxTreeItemId& item); @@ -1283,7 +1340,7 @@ public: if (self->GetBoundingRect(item, rect, textOnly)) { wxPyBeginBlockThreads(); wxRect* r = new wxRect(rect); - PyObject* val = wxPyConstructObject((void*)r, "wxRect"); + PyObject* val = wxPyConstructObject((void*)r, wxT("wxRect")); wxPyEndBlockThreads(); return val; } @@ -1325,7 +1382,7 @@ enum { wxDIRCTRL_SELECT_FIRST, wxDIRCTRL_SHOW_FILTERS, wxDIRCTRL_3D_INTERNAL, - wxDIRCTRL_EDITABLE, + wxDIRCTRL_EDIT_LABELS, wxID_TREECTRL, wxID_FILTERLISTCTRL,