X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1b8c7ba607a15a2ff8a04448138df9ffff7df6c5..9ac884500ce30c58e24b0a6af1288b576d2e03e4:/wxPython/src/_listctrl.i diff --git a/wxPython/src/_listctrl.i b/wxPython/src/_listctrl.i index 0d3269c53f..af9def88fa 100644 --- a/wxPython/src/_listctrl.i +++ b/wxPython/src/_listctrl.i @@ -19,7 +19,7 @@ #include %} -MAKE_CONST_WXSTRING2(ListCtrlNameStr, _T("wxListCtrl")); +MAKE_CONST_WXSTRING(ListCtrlNameStr); //--------------------------------------------------------------------------- %newgroup @@ -84,6 +84,9 @@ enum { wxLIST_HITTEST_TOLEFT, wxLIST_HITTEST_TORIGHT, wxLIST_HITTEST_ONITEM, + +// GetSubItemRect constants + wxLIST_GETSUBITEMRECT_WHOLEITEM, }; @@ -153,7 +156,7 @@ public: wxListItemAttr(const wxColour& colText = wxNullColour, const wxColour& colBack = wxNullColour, const wxFont& font = wxNullFont); - + ~wxListItemAttr(); // setters void SetTextColour(const wxColour& colText); @@ -169,7 +172,14 @@ public: wxColour GetBackgroundColour(); wxFont GetFont(); + void AssignFrom(const wxListItemAttr& source); + + %pythonPrepend Destroy "args[0].this.own(False)" %extend { void Destroy() { delete self; } } + + %property(BackgroundColour, GetBackgroundColour, SetBackgroundColour, doc="See `GetBackgroundColour` and `SetBackgroundColour`"); + %property(Font, GetFont, SetFont, doc="See `GetFont` and `SetFont`"); + %property(TextColour, GetTextColour, SetTextColour, doc="See `GetTextColour` and `SetTextColour`"); }; @@ -182,9 +192,15 @@ public: // wxListItem: the item or column info, used to exchange data with wxListCtrl class wxListItem : public wxObject { public: + // turn off this typemap + %typemap(out) wxListItem*; + wxListItem(); ~wxListItem(); + // Turn it back on again + %typemap(out) wxListItem* { $result = wxPyMake_wxObject($1, $owner); } + // resetting void Clear(); void ClearAttributes(); @@ -239,6 +255,19 @@ public: int m_format; // left, right, centre int m_width; // width of column + %property(Align, GetAlign, SetAlign, doc="See `GetAlign` and `SetAlign`"); + %property(Attributes, GetAttributes, doc="See `GetAttributes`"); + %property(BackgroundColour, GetBackgroundColour, SetBackgroundColour, doc="See `GetBackgroundColour` and `SetBackgroundColour`"); + %property(Column, GetColumn, SetColumn, doc="See `GetColumn` and `SetColumn`"); + %property(Data, GetData, SetData, doc="See `GetData` and `SetData`"); + %property(Font, GetFont, SetFont, doc="See `GetFont` and `SetFont`"); + %property(Id, GetId, SetId, doc="See `GetId` and `SetId`"); + %property(Image, GetImage, SetImage, doc="See `GetImage` and `SetImage`"); + %property(Mask, GetMask, SetMask, doc="See `GetMask` and `SetMask`"); + %property(State, GetState, SetState, doc="See `GetState` and `SetState`"); + %property(Text, GetText, SetText, doc="See `GetText` and `SetText`"); + %property(TextColour, GetTextColour, SetTextColour, doc="See `GetTextColour` and `SetTextColour`"); + %property(Width, GetWidth, SetWidth, doc="See `GetWidth` and `SetWidth`"); }; @@ -279,6 +308,20 @@ public: // was label editing canceled? (for wxEVT_COMMAND_LIST_END_LABEL_EDIT only) bool IsEditCancelled() const; void SetEditCanceled(bool editCancelled); + + %property(CacheFrom, GetCacheFrom, doc="See `GetCacheFrom`"); + %property(CacheTo, GetCacheTo, doc="See `GetCacheTo`"); + %property(Column, GetColumn, doc="See `GetColumn`"); + %property(Data, GetData, doc="See `GetData`"); + %property(Image, GetImage, doc="See `GetImage`"); + %property(Index, GetIndex, doc="See `GetIndex`"); + %property(Item, GetItem, doc="See `GetItem`"); + %property(KeyCode, GetKeyCode, doc="See `GetKeyCode`"); + %property(Label, GetLabel, doc="See `GetLabel`"); + %property(Mask, GetMask, doc="See `GetMask`"); + %property(Point, GetPoint, doc="See `GetPoint`"); + %property(Text, GetText, doc="See `GetText`"); + }; /* List control event types */ @@ -288,8 +331,6 @@ public: %constant wxEventType wxEVT_COMMAND_LIST_END_LABEL_EDIT; %constant wxEventType wxEVT_COMMAND_LIST_DELETE_ITEM; %constant wxEventType wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS; -%constant wxEventType wxEVT_COMMAND_LIST_GET_INFO; -%constant wxEventType wxEVT_COMMAND_LIST_SET_INFO; %constant wxEventType wxEVT_COMMAND_LIST_ITEM_SELECTED; %constant wxEventType wxEVT_COMMAND_LIST_ITEM_DESELECTED; %constant wxEventType wxEVT_COMMAND_LIST_KEY_DOWN; @@ -305,7 +346,11 @@ public: %constant wxEventType wxEVT_COMMAND_LIST_COL_END_DRAG; %constant wxEventType wxEVT_COMMAND_LIST_ITEM_FOCUSED; - +// WXWIN_COMPATIBILITY_2_4 +#if 0 +%constant wxEventType wxEVT_COMMAND_LIST_GET_INFO; +%constant wxEventType wxEVT_COMMAND_LIST_SET_INFO; +#endif %pythoncode { @@ -315,8 +360,10 @@ EVT_LIST_BEGIN_LABEL_EDIT = wx.PyEventBinder(wxEVT_COMMAND_LIST_BEGIN_LABEL_EDI EVT_LIST_END_LABEL_EDIT = wx.PyEventBinder(wxEVT_COMMAND_LIST_END_LABEL_EDIT , 1) EVT_LIST_DELETE_ITEM = wx.PyEventBinder(wxEVT_COMMAND_LIST_DELETE_ITEM , 1) EVT_LIST_DELETE_ALL_ITEMS = wx.PyEventBinder(wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS , 1) -EVT_LIST_GET_INFO = wx.PyEventBinder(wxEVT_COMMAND_LIST_GET_INFO , 1) -EVT_LIST_SET_INFO = wx.PyEventBinder(wxEVT_COMMAND_LIST_SET_INFO , 1) +#WXWIN_COMPATIBILITY_2_4 +#EVT_LIST_GET_INFO = wx.PyEventBinder(wxEVT_COMMAND_LIST_GET_INFO , 1) +#EVT_LIST_SET_INFO = wx.PyEventBinder(wxEVT_COMMAND_LIST_SET_INFO , 1) +#END WXWIN_COMPATIBILITY_2_4 EVT_LIST_ITEM_SELECTED = wx.PyEventBinder(wxEVT_COMMAND_LIST_ITEM_SELECTED , 1) EVT_LIST_ITEM_DESELECTED = wx.PyEventBinder(wxEVT_COMMAND_LIST_ITEM_DESELECTED , 1) EVT_LIST_KEY_DOWN = wx.PyEventBinder(wxEVT_COMMAND_LIST_KEY_DOWN , 1) @@ -332,8 +379,9 @@ EVT_LIST_COL_DRAGGING = wx.PyEventBinder(wxEVT_COMMAND_LIST_COL_DRAGGING EVT_LIST_COL_END_DRAG = wx.PyEventBinder(wxEVT_COMMAND_LIST_COL_END_DRAG , 1) EVT_LIST_ITEM_FOCUSED = wx.PyEventBinder(wxEVT_COMMAND_LIST_ITEM_FOCUSED , 1) -EVT_LIST_GET_INFO = wx._deprecated(EVT_LIST_GET_INFO) -EVT_LIST_SET_INFO = wx._deprecated(EVT_LIST_SET_INFO) +#WXWIN_COMPATIBILITY_2_4 +#EVT_LIST_GET_INFO = wx._deprecated(EVT_LIST_GET_INFO) +#EVT_LIST_SET_INFO = wx._deprecated(EVT_LIST_SET_INFO) } //--------------------------------------------------------------------------- @@ -344,7 +392,7 @@ EVT_LIST_SET_INFO = wx._deprecated(EVT_LIST_SET_INFO) static int wxCALLBACK wxPyListCtrl_SortItems(long item1, long item2, long funcPtr) { int retval = 0; PyObject* func = (PyObject*)funcPtr; - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); PyObject* args = Py_BuildValue("(ii)", item1, item2); PyObject* result = PyEval_CallObject(func, args); @@ -363,7 +411,7 @@ EVT_LIST_SET_INFO = wx._deprecated(EVT_LIST_SET_INFO) %{ // C++ Version of a Python aware class class wxPyListCtrl : public wxListCtrl { - DECLARE_ABSTRACT_CLASS(wxPyListCtrl); + DECLARE_ABSTRACT_CLASS(wxPyListCtrl) public: wxPyListCtrl() : wxListCtrl() {} wxPyListCtrl(wxWindow* parent, wxWindowID id, @@ -388,6 +436,7 @@ public: // use the virtual version to avoid a confusing assert in the base class DEC_PYCALLBACK_INT_LONG_virtual(OnGetItemImage); + DEC_PYCALLBACK_INT_LONGLONG(OnGetItemColumnImage); PYPRIVATE; }; @@ -397,18 +446,23 @@ IMPLEMENT_ABSTRACT_CLASS(wxPyListCtrl, wxListCtrl); IMP_PYCALLBACK_STRING_LONGLONG(wxPyListCtrl, wxListCtrl, OnGetItemText); IMP_PYCALLBACK_LISTATTR_LONG(wxPyListCtrl, wxListCtrl, OnGetItemAttr); IMP_PYCALLBACK_INT_LONG_virtual(wxPyListCtrl, wxListCtrl, OnGetItemImage); - -%} +IMP_PYCALLBACK_INT_LONGLONG(wxPyListCtrl, wxListCtrl, OnGetItemColumnImage); +%} +// NOTE: The following option is set in _settings.i +// # Until the new native control for wxMac is up to par, still use the generic one. +// SystemOptions.SetOptionInt("mac.listctrl.always_use_generic", 1) MustHaveApp(wxPyListCtrl); %rename(ListCtrl) wxPyListCtrl; class wxPyListCtrl : public wxControl { public: + // turn off this typemap + %typemap(out) wxPyListCtrl*; %pythonAppend wxPyListCtrl "self._setOORInfo(self);self._setCallbackInfo(self, ListCtrl)" %pythonAppend wxPyListCtrl() "" @@ -421,6 +475,9 @@ public: const wxString& name = wxPyListCtrlNameStr); %RenameCtor(PreListCtrl, wxPyListCtrl()); + // Turn it back on again + %typemap(out) wxPyListCtrl* { $result = wxPyMake_wxObject($1, $owner); } + bool Create(wxWindow* parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, @@ -473,10 +530,8 @@ public: // return the total area occupied by all the items (icon/small icon only) wxRect GetViewRect() const; -#ifdef __WXMSW__ // Gets the edit control for editing labels. wxTextCtrl* GetEditControl() const; -#endif // Gets information about the item %pythonAppend GetItem "if val is not None: val.thisown = 1"; // %newobject doesn't work with OOR typemap @@ -505,6 +560,7 @@ public: // Sets the item image bool SetItemImage(long item, int image, int selImage=-1) ; + bool SetItemColumnImage( long item, long column, int image ); // Gets the item text wxString GetItemText(long item) const ; @@ -535,6 +591,13 @@ public: self->GetItemRect(item, rect, code); return rect; } + +// MSW only so far... +// wxRect GetSubItemRect(long item, long subItem, int code = wxLIST_RECT_BOUNDS) { +// wxRect rect; +// self->GetSubItemRect(item, subItem, rect, code); +// return rect; +// } } @@ -549,9 +612,11 @@ public: // get the horizontal and vertical components of the item spacing wxSize GetItemSpacing() const; + %pythoncode { GetItemSpacing = wx._deprecated(GetItemSpacing) } #ifndef __WXMSW__ void SetItemSpacing( int spacing, bool isSmall = false ); + %pythoncode { SetItemSpacing = wx._deprecated(SetItemSpacing) } #endif // Gets the number of selected items in the list control @@ -585,11 +650,9 @@ public: // Sets the image list void SetImageList(wxImageList *imageList, int which); - // is there a way to tell SWIG to disown this??? - - %apply SWIGTYPE *DISOWN { wxImageList *imageList }; + %disownarg( wxImageList *imageList ); void AssignImageList(wxImageList *imageList, int which); - %clear wxImageList *imageList; + %cleardisown( wxImageList *imageList ); // are we in report mode? bool InReportView() const; @@ -649,23 +712,36 @@ public: long, HitTest(const wxPoint& point, int& OUTPUT), "HitTest(Point point) -> (item, where)", "Determines which item (if any) is at the specified point, giving -details in the second return value (see wxLIST_HITTEST_... flags.)", ""); +details in the second return value (see wx.LIST_HITTEST flags.)", ""); + + DocDeclAStrName( + long, HitTest(const wxPoint& point, int& OUTPUT, long* OUTPUT), + "HitTestSubItem(Point point) -> (item, where, subItem)", + "Determines which item (if any) is at the specified point, giving details in +the second return value (see wx.LIST_HITTEST flags) and also the subItem, if +any.", "", + HitTestSubItem); + // Inserts an item, returning the index of the new item if successful, // -1 otherwise. long InsertItem(wxListItem& info); // Insert a string item - %Rename(InsertStringItem, long, InsertItem(long index, const wxString& label)); + %Rename(InsertStringItem, + long, InsertItem(long index, const wxString& label, int imageIndex=-1)); // Insert an image item - %Rename(InsertImageItem, long, InsertItem(long index, int imageIndex)); + %Rename(InsertImageItem, + long, InsertItem(long index, int imageIndex)); // Insert an image/string item - %Rename(InsertImageStringItem, long, InsertItem(long index, const wxString& label, int imageIndex)); + %Rename(InsertImageStringItem, + long, InsertItem(long index, const wxString& label, int imageIndex)); // For list view mode (only), inserts a column. - %Rename(InsertColumnInfo, long, InsertColumn(long col, wxListItem& info)); + %Rename(InsertColumnItem, long, InsertColumn(long col, wxListItem& info)); + %pythoncode { InsertColumnInfo = InsertColumnItem } long InsertColumn(long col, const wxString& heading, @@ -687,6 +763,9 @@ details in the second return value (see wxLIST_HITTEST_... flags.)", ""); void SetItemBackgroundColour( long item, const wxColour &col); wxColour GetItemBackgroundColour( long item ) const; + // Font of an item. + void SetItemFont( long item, const wxFont &f); + wxFont GetItemFont( long item ) const; %pythoncode { %# @@ -716,7 +795,7 @@ details in the second return value (see wxLIST_HITTEST_... flags.)", ""); def IsSelected(self, idx): '''return True if the item is selected''' - return self.GetItemState(idx, wx.LIST_STATE_SELECTED) != 0 + return (self.GetItemState(idx, wx.LIST_STATE_SELECTED) & wx.LIST_STATE_SELECTED) != 0 def SetColumnImage(self, col, image): item = self.GetColumn(col) @@ -769,7 +848,7 @@ details in the second return value (see wxLIST_HITTEST_... flags.)", ""); %extend { wxWindow* GetMainWindow() { - #ifdef __WXMSW__ + #if defined(__WXMSW__) || defined(__WXMAC__) return self; #else return (wxWindow*)self->m_mainWin; @@ -779,6 +858,18 @@ details in the second return value (see wxLIST_HITTEST_... flags.)", ""); static wxVisualAttributes GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); + + %property(ColumnCount, GetColumnCount, doc="See `GetColumnCount`"); + %property(CountPerPage, GetCountPerPage, doc="See `GetCountPerPage`"); + %property(EditControl, GetEditControl, doc="See `GetEditControl`"); + %property(FocusedItem, GetFocusedItem, doc="See `GetFocusedItem`"); + %property(ImageList, GetImageList, SetImageList, doc="See `GetImageList` and `SetImageList`"); + %property(ItemCount, GetItemCount, SetItemCount, doc="See `GetItemCount` and `SetItemCount`"); + %property(MainWindow, GetMainWindow, doc="See `GetMainWindow`"); + %property(SelectedItemCount, GetSelectedItemCount, doc="See `GetSelectedItemCount`"); + %property(TextColour, GetTextColour, SetTextColour, doc="See `GetTextColour` and `SetTextColour`"); + %property(TopItem, GetTopItem, doc="See `GetTopItem`"); + %property(ViewRect, GetViewRect, doc="See `GetViewRect`"); }; @@ -831,6 +922,8 @@ public: void SetColumnImage(int col, int image); void ClearColumnImage(int col); + + %property(FocusedItem, GetFocusedItem, doc="See `GetFocusedItem`"); };