Updated wxColumnSorterMixin to also be able to place sort icons on the

column headers, and updated the wxListCtrl demo to show it off by
using wxColumnSorterMixin.

Other odds and ends...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2001-09-03 22:41:18 +00:00
parent 0188c70233
commit 6d19860fe8
14 changed files with 2659 additions and 1723 deletions

View File

@@ -19,7 +19,7 @@ Added XRCed to the wxPython Tools directory, contributed by Roman
Rolinsky. Rolinsky.
Added a new "constructor" to most of the window classes that calls the Added a new "constructor" to most of the window classes that calls the
default C++ contructor, (the on with no parameters) and also added the default C++ contructor, (the one with no parameters) and also added the
coresponding Create(...) method. This allows you to do a 2-step coresponding Create(...) method. This allows you to do a 2-step
creation of windows which is sometimes required for doing things such creation of windows which is sometimes required for doing things such
as setting extended style flags before the window is created, or for as setting extended style flags before the window is created, or for
@@ -31,6 +31,10 @@ etc.
Updated to version 1.39 of Scintilla and updated wxStyledTextCtrl Updated to version 1.39 of Scintilla and updated wxStyledTextCtrl
accordingly. accordingly.
Updated wxColumnSorterMixin to also be able to place sort icons on the
column headers, and updated the wxListCtrl demo to show it off by
using wxColumnSorterMixin.
2.3.1 2.3.1

View File

@@ -73,9 +73,12 @@ include src/gtk/*.cpp
include src/gtk/*.h include src/gtk/*.h
include src/gtk/*.py include src/gtk/*.py
# src/motif/*.cpp include tools/*.py
# src/motif/*.h tools\XRCed\CHANGES
# src/motif/*.py tools\XRCed\TODO
tools\XRCed\README
tools\XRCed\*.py
tools\XRCed\*.xrc
include contrib/glcanvas/*.i include contrib/glcanvas/*.i

View File

@@ -24,16 +24,17 @@ import images
_treeList = [ _treeList = [
('New since last release', ['ContextHelp', ('New since last release', ['ContextHelp',
'PyCrust', 'PyCrust',
'VirtualListCtrl' 'VirtualListCtrl',
'wxListCtrl',
]), ]),
('Managed Windows', ['wxFrame', 'wxDialog', 'wxMiniFrame']), ('Windows', ['wxFrame', 'wxDialog', 'wxMiniFrame',
'',
('Non-Managed Windows', ['wxGrid', 'wxSashWindow', 'wxGrid', 'wxSashWindow',
'wxScrolledWindow', 'wxSplitterWindow', 'wxScrolledWindow', 'wxSplitterWindow',
'wxStatusBar', 'wxNotebook', 'wxStatusBar', 'wxNotebook',
'wxHtmlWindow', 'wxHtmlWindow',
'wxStyledTextCtrl_1', 'wxStyledTextCtrl_2',]), 'wxStyledTextCtrl_1', 'wxStyledTextCtrl_2',]),
('Common Dialogs', ['wxColourDialog', 'wxDirDialog', 'wxFileDialog', ('Common Dialogs', ['wxColourDialog', 'wxDirDialog', 'wxFileDialog',
'wxSingleChoiceDialog', 'wxTextEntryDialog', 'wxSingleChoiceDialog', 'wxTextEntryDialog',

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

View File

@@ -48,6 +48,9 @@ command_lines = [
"-a -n GridBG bmp_source/GridBG.gif images.py", "-a -n GridBG bmp_source/GridBG.gif images.py",
"-a -n SmallUpArrow -m #0000FF bmp_source/sm_up.bmp images.py",
"-a -n SmallDnArrow -m #0000FF bmp_source/sm_down.bmp images.py",
] ]

File diff suppressed because it is too large Load Diff

View File

@@ -12,6 +12,7 @@
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
from wxPython.wx import * from wxPython.wx import *
from wxPython.lib.mixins.listctrl import wxColumnSorterMixin
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@@ -59,7 +60,7 @@ musicdata = {
import images import images
class TestListCtrlPanel(wxPanel): class TestListCtrlPanel(wxPanel, wxColumnSorterMixin):
def __init__(self, parent, log): def __init__(self, parent, log):
wxPanel.__init__(self, parent, -1, style=wxWANTS_CHARS) wxPanel.__init__(self, parent, -1, style=wxWANTS_CHARS)
@@ -70,6 +71,11 @@ class TestListCtrlPanel(wxPanel):
bmp = images.getSmilesBitmap() bmp = images.getSmilesBitmap()
#idx1 = self.il.AddWithColourMask(bmp, wxWHITE) #idx1 = self.il.AddWithColourMask(bmp, wxWHITE)
idx1 = self.il.Add(bmp) idx1 = self.il.Add(bmp)
bmp = images.getSmallUpArrowBitmap()
self.sm_up = self.il.Add(bmp)
bmp = images.getSmallDnArrowBitmap()
self.sm_dn = self.il.Add(bmp)
self.list = wxListCtrl(self, tID, self.list = wxListCtrl(self, tID,
style=wxLC_REPORT|wxSUNKEN_BORDER)#|wxLC_VRULES|wxLC_HRULES) style=wxLC_REPORT|wxSUNKEN_BORDER)#|wxLC_VRULES|wxLC_HRULES)
@@ -78,9 +84,29 @@ class TestListCtrlPanel(wxPanel):
# Why doesn't this show up on MSW??? # Why doesn't this show up on MSW???
self.list.SetToolTip(wxToolTip("This is a ToolTip!")) self.list.SetToolTip(wxToolTip("This is a ToolTip!"))
self.list.InsertColumn(0, "Artist") if 0:
self.list.InsertColumn(1, "Title", wxLIST_FORMAT_RIGHT) # for normal simple columns, you can add them like this:
self.list.InsertColumn(2, "Genre") self.list.InsertColumn(0, "Artist")
self.list.InsertColumn(1, "Title", wxLIST_FORMAT_RIGHT)
self.list.InsertColumn(2, "Genre")
else:
# but since we want images on the column header we have to do it the hard way:
info = wxListItem()
info.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_IMAGE | wxLIST_MASK_FORMAT
info.m_image = -1
info.m_format = 0
info.m_text = "Artist"
self.list.InsertColumnInfo(0, info)
info.m_format = wxLIST_FORMAT_RIGHT
info.m_text = "Title"
self.list.InsertColumnInfo(1, info)
info.m_format = 0
info.m_text = "Genre"
self.list.InsertColumnInfo(2, info)
items = musicdata.items() items = musicdata.items()
for x in range(len(items)): for x in range(len(items)):
key, data = items[x] key, data = items[x]
@@ -89,20 +115,22 @@ class TestListCtrlPanel(wxPanel):
self.list.SetStringItem(x, 2, data[2]) self.list.SetStringItem(x, 2, data[2])
self.list.SetItemData(x, key) self.list.SetItemData(x, key)
# Now that the list exists we can init the other base class,
# see wxPython/lib/mixins/listctrl.py
self.itemDataMap = musicdata
wxColumnSorterMixin.__init__(self, 3)
#self.SortListItems(0, true)
self.list.SetColumnWidth(0, wxLIST_AUTOSIZE) self.list.SetColumnWidth(0, wxLIST_AUTOSIZE)
self.list.SetColumnWidth(1, wxLIST_AUTOSIZE) self.list.SetColumnWidth(1, wxLIST_AUTOSIZE)
##self.list.SetColumnWidth(2, wxLIST_AUTOSIZE)
# show how to select an item
self.list.SetItemState(5, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED) self.list.SetItemState(5, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED)
#self.list.SetItemState(25, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED) # show how to change the colour of a couple items
#self.list.EnsureVisible(25)
# show how to change the colour of an item
item = self.list.GetItem(1) item = self.list.GetItem(1)
item.SetTextColour(wxBLUE) item.SetTextColour(wxBLUE)
self.list.SetItem(item) self.list.SetItem(item)
item = self.list.GetItem(4) item = self.list.GetItem(4)
item.SetTextColour(wxRED) item.SetTextColour(wxRED)
self.list.SetItem(item) self.list.SetItem(item)
@@ -113,6 +141,11 @@ class TestListCtrlPanel(wxPanel):
EVT_LIST_ITEM_ACTIVATED(self, tID, self.OnItemActivated) EVT_LIST_ITEM_ACTIVATED(self, tID, self.OnItemActivated)
EVT_LIST_DELETE_ITEM(self, tID, self.OnItemDelete) EVT_LIST_DELETE_ITEM(self, tID, self.OnItemDelete)
EVT_LIST_COL_CLICK(self, tID, self.OnColClick) EVT_LIST_COL_CLICK(self, tID, self.OnColClick)
EVT_LIST_COL_RIGHT_CLICK(self, tID, self.OnColRightClick)
EVT_LIST_COL_BEGIN_DRAG(self, tID, self.OnColBeginDrag)
EVT_LIST_COL_DRAGGING(self, tID, self.OnColDragging)
EVT_LIST_COL_END_DRAG(self, tID, self.OnColEndDrag)
EVT_LEFT_DCLICK(self.list, self.OnDoubleClick) EVT_LEFT_DCLICK(self.list, self.OnDoubleClick)
EVT_RIGHT_DOWN(self.list, self.OnRightDown) EVT_RIGHT_DOWN(self.list, self.OnRightDown)
@@ -123,6 +156,16 @@ class TestListCtrlPanel(wxPanel):
EVT_RIGHT_UP(self.list, self.OnRightClick) EVT_RIGHT_UP(self.list, self.OnRightClick)
# Used by the wxColumnSorterMixin, see wxPython/lib/mixins/listctrl.py
def GetListCtrl(self):
return self.list
# Used by the wxColumnSorterMixin, see wxPython/lib/mixins/listctrl.py
def GetSortImages(self):
return (self.sm_dn, self.sm_up)
def OnRightDown(self, event): def OnRightDown(self, event):
self.x = event.GetX() self.x = event.GetX()
self.y = event.GetY() self.y = event.GetY()
@@ -156,19 +199,19 @@ class TestListCtrlPanel(wxPanel):
self.log.WriteText("OnItemDelete\n") self.log.WriteText("OnItemDelete\n")
def OnColClick(self, event): def OnColClick(self, event):
self.log.WriteText("OnColClick: %d\n" % event.m_col) self.log.WriteText("OnColClick: %d\n" % event.GetColumn())
self.col = event.m_col
self.list.SortItems(self.ColumnSorter)
def ColumnSorter(self, key1, key2): def OnColRightClick(self, event):
item1 = musicdata[key1][self.col] self.log.WriteText("OnColRightClick: %d\n" % event.GetColumn())
item2 = musicdata[key2][self.col]
# when the items are identical, compare someting else to make the sort key unique... def OnColBeginDrag(self, event):
if item1 == item2: return key1 - key2 self.log.WriteText("OnColBeginDrag\n")
elif item1 < item2: return -1
else: return 1
def OnColDragging(self, event):
self.log.WriteText("OnColDragging\n")
def OnColEndDrag(self, event):
self.log.WriteText("OnColEndDrag\n")
def OnDoubleClick(self, event): def OnDoubleClick(self, event):
self.log.WriteText("OnDoubleClick item %s\n" % self.list.GetItemText(self.currentItem)) self.log.WriteText("OnDoubleClick item %s\n" % self.list.GetItemText(self.currentItem))

View File

@@ -113,6 +113,11 @@ Source: "%(WXDIR)s\docs\htmlhelp\wx.chm"; DestDir: "{app}\wxPython\docs"; Comp
Source: "%(WXDIR)s\docs\htmlhelp\ogl.chm"; DestDir: "{app}\wxPython\docs"; Components: docs Source: "%(WXDIR)s\docs\htmlhelp\ogl.chm"; DestDir: "{app}\wxPython\docs"; Components: docs
Source: "tools\*.py"; DestDir: "{app}\wxPython\tools"; Components: tools Source: "tools\*.py"; DestDir: "{app}\wxPython\tools"; Components: tools
Source: "tools\XRCed\CHANGES"; DestDir: "{app}\wxPython\tools\XRCed"; Components: tools
Source: "tools\XRCed\TODO"; DestDir: "{app}\wxPython\tools\XRCed"; Components: tools
Source: "tools\XRCed\README"; DestDir: "{app}\wxPython\tools\XRCed"; Components: tools
Source: "tools\XRCed\*.py"; DestDir: "{app}\wxPython\tools\XRCed"; Components: tools
Source: "tools\XRCed\*.xrc"; DestDir: "{app}\wxPython\tools\XRCed"; Components: tools
Source: "samples\doodle\*.py"; DestDir: "{app}\wxPython\samples\doodle"; Components: samples Source: "samples\doodle\*.py"; DestDir: "{app}\wxPython\samples\doodle"; Components: samples
Source: "samples\doodle\*.txt"; DestDir: "{app}\wxPython\samples\doodle"; Components: samples Source: "samples\doodle\*.txt"; DestDir: "{app}\wxPython\samples\doodle"; Components: samples

View File

@@ -60,6 +60,11 @@ enum {
wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK, wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK,
wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxEVT_COMMAND_LIST_ITEM_ACTIVATED,
wxEVT_COMMAND_LIST_CACHE_HINT, 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): def EVT_LIST_COL_CLICK(win, id, func):
win.Connect(id, -1, wxEVT_COMMAND_LIST_COL_CLICK, 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): def EVT_LIST_ITEM_RIGHT_CLICK(win, id, func):
win.Connect(id, -1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, func) win.Connect(id, -1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, func)
@@ -142,6 +159,7 @@ enum {
wxLC_MASK_ALIGN, wxLC_MASK_ALIGN,
wxLC_MASK_SORT, wxLC_MASK_SORT,
wxLC_USER_TEXT,
}; };
@@ -308,6 +326,8 @@ public:
class wxListEvent: public wxNotifyEvent { class wxListEvent: public wxNotifyEvent {
public: public:
wxListEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
int m_code; int m_code;
long m_itemIndex; long m_itemIndex;
long m_oldItemIndex; long m_oldItemIndex;
@@ -329,6 +349,9 @@ public:
long GetData(); long GetData();
long GetMask(); long GetMask();
const wxListItem& GetItem(); const wxListItem& GetItem();
long GetCacheFrom();
long GetCacheTo();
}; };
@@ -633,11 +656,42 @@ public:
} }
} }
%pragma(python) addtoclass = "
# Some helpers...
def Select(self, idx, on=true):
'''[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 wxCALLBACK wxPyListCtrl_SortItems(long item1, long item2, long funcPtr) {
int retval = 0; int retval = 0;
PyObject* func = (PyObject*)funcPtr; PyObject* func = (PyObject*)funcPtr;
@@ -657,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 // wxTreeCtrl flags

View File

@@ -129,7 +129,7 @@ IMPLEMENT_ABSTRACT_CLASS(wxPyListCtrl, wxListCtrl);
IMP_PYCALLBACK_STRING_LONGLONG(wxPyListCtrl, wxListCtrl, OnGetItemText); IMP_PYCALLBACK_STRING_LONGLONG(wxPyListCtrl, wxListCtrl, OnGetItemText);
IMP_PYCALLBACK_INT_LONG(wxPyListCtrl, wxListCtrl, OnGetItemImage); IMP_PYCALLBACK_INT_LONG(wxPyListCtrl, wxListCtrl, OnGetItemImage);
IMP_PYCALLBACK_LISTATTR_LONG(wxPyListCtrl, wxListCtrl, OnGetItemAttr); IMP_PYCALLBACK_LISTATTR_LONG(wxPyListCtrl, wxListCtrl, OnGetItemAttr);
// Python aware sorting function for wxPyListCtrl
int wxCALLBACK wxPyListCtrl_SortItems(long item1, long item2, long funcPtr) { int wxCALLBACK wxPyListCtrl_SortItems(long item1, long item2, long funcPtr) {
int retval = 0; int retval = 0;
PyObject* func = (PyObject*)funcPtr; PyObject* func = (PyObject*)funcPtr;
@@ -2154,6 +2154,34 @@ static void *SwigwxListEventTowxObject(void *ptr) {
return (void *) dest; return (void *) dest;
} }
#define new_wxListEvent(_swigarg0,_swigarg1) (new wxListEvent(_swigarg0,_swigarg1))
static PyObject *_wrap_new_wxListEvent(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
wxListEvent * _result;
wxEventType _arg0 = (wxEventType ) wxEVT_NULL;
int _arg1 = (int ) 0;
char *_kwnames[] = { "commandType","id", NULL };
char _ptemp[128];
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|ii:new_wxListEvent",_kwnames,&_arg0,&_arg1))
return NULL;
{
wxPy_BEGIN_ALLOW_THREADS;
_result = (wxListEvent *)new_wxListEvent(_arg0,_arg1);
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} if (_result) {
SWIG_MakePtr(_ptemp, (char *) _result,"_wxListEvent_p");
_resultobj = Py_BuildValue("s",_ptemp);
} else {
Py_INCREF(Py_None);
_resultobj = Py_None;
}
return _resultobj;
}
#define wxListEvent_m_code_set(_swigobj,_swigval) (_swigobj->m_code = _swigval,_swigval) #define wxListEvent_m_code_set(_swigobj,_swigval) (_swigobj->m_code = _swigval,_swigval)
static PyObject *_wrap_wxListEvent_m_code_set(PyObject *self, PyObject *args, PyObject *kwargs) { static PyObject *_wrap_wxListEvent_m_code_set(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj; PyObject * _resultobj;
@@ -2957,6 +2985,62 @@ static PyObject *_wrap_wxListEvent_GetItem(PyObject *self, PyObject *args, PyObj
return _resultobj; return _resultobj;
} }
#define wxListEvent_GetCacheFrom(_swigobj) (_swigobj->GetCacheFrom())
static PyObject *_wrap_wxListEvent_GetCacheFrom(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
long _result;
wxListEvent * _arg0;
PyObject * _argo0 = 0;
char *_kwnames[] = { "self", NULL };
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxListEvent_GetCacheFrom",_kwnames,&_argo0))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListEvent_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListEvent_GetCacheFrom. Expected _wxListEvent_p.");
return NULL;
}
}
{
wxPy_BEGIN_ALLOW_THREADS;
_result = (long )wxListEvent_GetCacheFrom(_arg0);
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} _resultobj = Py_BuildValue("l",_result);
return _resultobj;
}
#define wxListEvent_GetCacheTo(_swigobj) (_swigobj->GetCacheTo())
static PyObject *_wrap_wxListEvent_GetCacheTo(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
long _result;
wxListEvent * _arg0;
PyObject * _argo0 = 0;
char *_kwnames[] = { "self", NULL };
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxListEvent_GetCacheTo",_kwnames,&_argo0))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListEvent_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListEvent_GetCacheTo. Expected _wxListEvent_p.");
return NULL;
}
}
{
wxPy_BEGIN_ALLOW_THREADS;
_result = (long )wxListEvent_GetCacheTo(_arg0);
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} _resultobj = Py_BuildValue("l",_result);
return _resultobj;
}
static void *SwigwxPyListCtrlTowxControl(void *ptr) { static void *SwigwxPyListCtrlTowxControl(void *ptr) {
wxPyListCtrl *src; wxPyListCtrl *src;
wxControl *dest; wxControl *dest;
@@ -5219,6 +5303,486 @@ static PyObject *_wrap_wxListCtrl_SortItems(PyObject *self, PyObject *args, PyOb
return _resultobj; return _resultobj;
} }
static void *SwigwxListViewTowxPyListCtrl(void *ptr) {
wxListView *src;
wxPyListCtrl *dest;
src = (wxListView *) ptr;
dest = (wxPyListCtrl *) src;
return (void *) dest;
}
static void *SwigwxListViewTowxControl(void *ptr) {
wxListView *src;
wxControl *dest;
src = (wxListView *) ptr;
dest = (wxControl *) src;
return (void *) dest;
}
static void *SwigwxListViewTowxWindow(void *ptr) {
wxListView *src;
wxWindow *dest;
src = (wxListView *) ptr;
dest = (wxWindow *) src;
return (void *) dest;
}
static void *SwigwxListViewTowxEvtHandler(void *ptr) {
wxListView *src;
wxEvtHandler *dest;
src = (wxListView *) ptr;
dest = (wxEvtHandler *) src;
return (void *) dest;
}
static void *SwigwxListViewTowxObject(void *ptr) {
wxListView *src;
wxObject *dest;
src = (wxListView *) ptr;
dest = (wxObject *) src;
return (void *) dest;
}
#define new_wxListView(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5,_swigarg6) (new wxListView(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5,_swigarg6))
static PyObject *_wrap_new_wxListView(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
wxListView * _result;
wxWindow * _arg0;
wxWindowID _arg1 = (wxWindowID ) -1;
wxPoint * _arg2 = (wxPoint *) &wxDefaultPosition;
wxSize * _arg3 = (wxSize *) &wxDefaultSize;
long _arg4 = (long ) (wxLC_REPORT);
wxValidator * _arg5 = (wxValidator *) &wxDefaultValidator;
wxString * _arg6 = (wxString *) &"listctrl";
PyObject * _argo0 = 0;
wxPoint temp;
PyObject * _obj2 = 0;
wxSize temp0;
PyObject * _obj3 = 0;
PyObject * _argo5 = 0;
PyObject * _obj6 = 0;
char *_kwnames[] = { "parent","id","pos","size","style","validator","name", NULL };
char _ptemp[128];
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|iOOlOO:new_wxListView",_kwnames,&_argo0,&_arg1,&_obj2,&_obj3,&_arg4,&_argo5,&_obj6))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxListView. Expected _wxWindow_p.");
return NULL;
}
}
if (_obj2)
{
_arg2 = &temp;
if (! wxPoint_helper(_obj2, &_arg2))
return NULL;
}
if (_obj3)
{
_arg3 = &temp0;
if (! wxSize_helper(_obj3, &_arg3))
return NULL;
}
if (_argo5) {
if (_argo5 == Py_None) { _arg5 = NULL; }
else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxListView. Expected _wxValidator_p.");
return NULL;
}
}
if (_obj6)
{
#if PYTHON_API_VERSION >= 1009
char* tmpPtr; int tmpSize;
if (!PyString_Check(_obj6) && !PyUnicode_Check(_obj6)) {
PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
return NULL;
}
if (PyString_AsStringAndSize(_obj6, &tmpPtr, &tmpSize) == -1)
return NULL;
_arg6 = new wxString(tmpPtr, tmpSize);
#else
if (!PyString_Check(_obj6)) {
PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
return NULL;
}
_arg6 = new wxString(PyString_AS_STRING(_obj6), PyString_GET_SIZE(_obj6));
#endif
}
{
wxPy_BEGIN_ALLOW_THREADS;
_result = (wxListView *)new_wxListView(_arg0,_arg1,*_arg2,*_arg3,_arg4,*_arg5,*_arg6);
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} if (_result) {
SWIG_MakePtr(_ptemp, (char *) _result,"_wxListView_p");
_resultobj = Py_BuildValue("s",_ptemp);
} else {
Py_INCREF(Py_None);
_resultobj = Py_None;
}
{
if (_obj6)
delete _arg6;
}
return _resultobj;
}
#define new_wxPreListView() (new wxListView())
static PyObject *_wrap_new_wxPreListView(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
wxListView * _result;
char *_kwnames[] = { NULL };
char _ptemp[128];
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxPreListView",_kwnames))
return NULL;
{
wxPy_BEGIN_ALLOW_THREADS;
_result = (wxListView *)new_wxPreListView();
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} if (_result) {
SWIG_MakePtr(_ptemp, (char *) _result,"_wxListView_p");
_resultobj = Py_BuildValue("s",_ptemp);
} else {
Py_INCREF(Py_None);
_resultobj = Py_None;
}
return _resultobj;
}
#define wxListView_Create(_swigobj,_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5,_swigarg6) (_swigobj->Create(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5,_swigarg6))
static PyObject *_wrap_wxListView_Create(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
bool _result;
wxListView * _arg0;
wxWindow * _arg1;
wxWindowID _arg2 = (wxWindowID ) -1;
wxPoint * _arg3 = (wxPoint *) &wxDefaultPosition;
wxSize * _arg4 = (wxSize *) &wxDefaultSize;
long _arg5 = (long ) (wxLC_REPORT);
wxValidator * _arg6 = (wxValidator *) &wxDefaultValidator;
wxString * _arg7 = (wxString *) &"listctrl";
PyObject * _argo0 = 0;
PyObject * _argo1 = 0;
wxPoint temp;
PyObject * _obj3 = 0;
wxSize temp0;
PyObject * _obj4 = 0;
PyObject * _argo6 = 0;
PyObject * _obj7 = 0;
char *_kwnames[] = { "self","parent","id","pos","size","style","validator","name", NULL };
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|iOOlOO:wxListView_Create",_kwnames,&_argo0,&_argo1,&_arg2,&_obj3,&_obj4,&_arg5,&_argo6,&_obj7))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListView_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListView_Create. Expected _wxListView_p.");
return NULL;
}
}
if (_argo1) {
if (_argo1 == Py_None) { _arg1 = NULL; }
else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxListView_Create. Expected _wxWindow_p.");
return NULL;
}
}
if (_obj3)
{
_arg3 = &temp;
if (! wxPoint_helper(_obj3, &_arg3))
return NULL;
}
if (_obj4)
{
_arg4 = &temp0;
if (! wxSize_helper(_obj4, &_arg4))
return NULL;
}
if (_argo6) {
if (_argo6 == Py_None) { _arg6 = NULL; }
else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxListView_Create. Expected _wxValidator_p.");
return NULL;
}
}
if (_obj7)
{
#if PYTHON_API_VERSION >= 1009
char* tmpPtr; int tmpSize;
if (!PyString_Check(_obj7) && !PyUnicode_Check(_obj7)) {
PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
return NULL;
}
if (PyString_AsStringAndSize(_obj7, &tmpPtr, &tmpSize) == -1)
return NULL;
_arg7 = new wxString(tmpPtr, tmpSize);
#else
if (!PyString_Check(_obj7)) {
PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
return NULL;
}
_arg7 = new wxString(PyString_AS_STRING(_obj7), PyString_GET_SIZE(_obj7));
#endif
}
{
wxPy_BEGIN_ALLOW_THREADS;
_result = (bool )wxListView_Create(_arg0,_arg1,_arg2,*_arg3,*_arg4,_arg5,*_arg6,*_arg7);
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} _resultobj = Py_BuildValue("i",_result);
{
if (_obj7)
delete _arg7;
}
return _resultobj;
}
#define wxListView_Select(_swigobj,_swigarg0,_swigarg1) (_swigobj->Select(_swigarg0,_swigarg1))
static PyObject *_wrap_wxListView_Select(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
wxListView * _arg0;
long _arg1;
bool _arg2 = (bool ) TRUE;
PyObject * _argo0 = 0;
int tempbool2 = (int) TRUE;
char *_kwnames[] = { "self","n","on", NULL };
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol|i:wxListView_Select",_kwnames,&_argo0,&_arg1,&tempbool2))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListView_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListView_Select. Expected _wxListView_p.");
return NULL;
}
}
_arg2 = (bool ) tempbool2;
{
wxPy_BEGIN_ALLOW_THREADS;
wxListView_Select(_arg0,_arg1,_arg2);
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} Py_INCREF(Py_None);
_resultobj = Py_None;
return _resultobj;
}
#define wxListView_Focus(_swigobj,_swigarg0) (_swigobj->Focus(_swigarg0))
static PyObject *_wrap_wxListView_Focus(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
wxListView * _arg0;
long _arg1;
PyObject * _argo0 = 0;
char *_kwnames[] = { "self","index", NULL };
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxListView_Focus",_kwnames,&_argo0,&_arg1))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListView_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListView_Focus. Expected _wxListView_p.");
return NULL;
}
}
{
wxPy_BEGIN_ALLOW_THREADS;
wxListView_Focus(_arg0,_arg1);
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} Py_INCREF(Py_None);
_resultobj = Py_None;
return _resultobj;
}
#define wxListView_GetFocusedItem(_swigobj) (_swigobj->GetFocusedItem())
static PyObject *_wrap_wxListView_GetFocusedItem(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
long _result;
wxListView * _arg0;
PyObject * _argo0 = 0;
char *_kwnames[] = { "self", NULL };
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxListView_GetFocusedItem",_kwnames,&_argo0))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListView_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListView_GetFocusedItem. Expected _wxListView_p.");
return NULL;
}
}
{
wxPy_BEGIN_ALLOW_THREADS;
_result = (long )wxListView_GetFocusedItem(_arg0);
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} _resultobj = Py_BuildValue("l",_result);
return _resultobj;
}
#define wxListView_GetNextSelected(_swigobj,_swigarg0) (_swigobj->GetNextSelected(_swigarg0))
static PyObject *_wrap_wxListView_GetNextSelected(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
long _result;
wxListView * _arg0;
long _arg1;
PyObject * _argo0 = 0;
char *_kwnames[] = { "self","item", NULL };
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxListView_GetNextSelected",_kwnames,&_argo0,&_arg1))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListView_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListView_GetNextSelected. Expected _wxListView_p.");
return NULL;
}
}
{
wxPy_BEGIN_ALLOW_THREADS;
_result = (long )wxListView_GetNextSelected(_arg0,_arg1);
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} _resultobj = Py_BuildValue("l",_result);
return _resultobj;
}
#define wxListView_GetFirstSelected(_swigobj) (_swigobj->GetFirstSelected())
static PyObject *_wrap_wxListView_GetFirstSelected(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
long _result;
wxListView * _arg0;
PyObject * _argo0 = 0;
char *_kwnames[] = { "self", NULL };
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxListView_GetFirstSelected",_kwnames,&_argo0))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListView_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListView_GetFirstSelected. Expected _wxListView_p.");
return NULL;
}
}
{
wxPy_BEGIN_ALLOW_THREADS;
_result = (long )wxListView_GetFirstSelected(_arg0);
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} _resultobj = Py_BuildValue("l",_result);
return _resultobj;
}
#define wxListView_IsSelected(_swigobj,_swigarg0) (_swigobj->IsSelected(_swigarg0))
static PyObject *_wrap_wxListView_IsSelected(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
bool _result;
wxListView * _arg0;
long _arg1;
PyObject * _argo0 = 0;
char *_kwnames[] = { "self","index", NULL };
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxListView_IsSelected",_kwnames,&_argo0,&_arg1))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListView_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListView_IsSelected. Expected _wxListView_p.");
return NULL;
}
}
{
wxPy_BEGIN_ALLOW_THREADS;
_result = (bool )wxListView_IsSelected(_arg0,_arg1);
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} _resultobj = Py_BuildValue("i",_result);
return _resultobj;
}
#define wxListView_SetColumnImage(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetColumnImage(_swigarg0,_swigarg1))
static PyObject *_wrap_wxListView_SetColumnImage(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
wxListView * _arg0;
int _arg1;
int _arg2;
PyObject * _argo0 = 0;
char *_kwnames[] = { "self","col","image", NULL };
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxListView_SetColumnImage",_kwnames,&_argo0,&_arg1,&_arg2))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListView_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListView_SetColumnImage. Expected _wxListView_p.");
return NULL;
}
}
{
wxPy_BEGIN_ALLOW_THREADS;
wxListView_SetColumnImage(_arg0,_arg1,_arg2);
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} Py_INCREF(Py_None);
_resultobj = Py_None;
return _resultobj;
}
#define wxListView_ClearColumnImage(_swigobj,_swigarg0) (_swigobj->ClearColumnImage(_swigarg0))
static PyObject *_wrap_wxListView_ClearColumnImage(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
wxListView * _arg0;
int _arg1;
PyObject * _argo0 = 0;
char *_kwnames[] = { "self","col", NULL };
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxListView_ClearColumnImage",_kwnames,&_argo0,&_arg1))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListView_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListView_ClearColumnImage. Expected _wxListView_p.");
return NULL;
}
}
{
wxPy_BEGIN_ALLOW_THREADS;
wxListView_ClearColumnImage(_arg0,_arg1);
wxPy_END_ALLOW_THREADS;
if (PyErr_Occurred()) return NULL;
} Py_INCREF(Py_None);
_resultobj = Py_None;
return _resultobj;
}
#define new_wxTreeItemAttr(_swigarg0,_swigarg1,_swigarg2) (new wxTreeItemAttr(_swigarg0,_swigarg1,_swigarg2)) #define new_wxTreeItemAttr(_swigarg0,_swigarg1,_swigarg2) (new wxTreeItemAttr(_swigarg0,_swigarg1,_swigarg2))
static PyObject *_wrap_new_wxTreeItemAttr(PyObject *self, PyObject *args, PyObject *kwargs) { static PyObject *_wrap_new_wxTreeItemAttr(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj; PyObject * _resultobj;
@@ -9180,6 +9744,17 @@ static PyMethodDef controls2cMethods[] = {
{ "wxTreeItemAttr_SetBackgroundColour", (PyCFunction) _wrap_wxTreeItemAttr_SetBackgroundColour, METH_VARARGS | METH_KEYWORDS }, { "wxTreeItemAttr_SetBackgroundColour", (PyCFunction) _wrap_wxTreeItemAttr_SetBackgroundColour, METH_VARARGS | METH_KEYWORDS },
{ "wxTreeItemAttr_SetTextColour", (PyCFunction) _wrap_wxTreeItemAttr_SetTextColour, METH_VARARGS | METH_KEYWORDS }, { "wxTreeItemAttr_SetTextColour", (PyCFunction) _wrap_wxTreeItemAttr_SetTextColour, METH_VARARGS | METH_KEYWORDS },
{ "new_wxTreeItemAttr", (PyCFunction) _wrap_new_wxTreeItemAttr, METH_VARARGS | METH_KEYWORDS }, { "new_wxTreeItemAttr", (PyCFunction) _wrap_new_wxTreeItemAttr, METH_VARARGS | METH_KEYWORDS },
{ "wxListView_ClearColumnImage", (PyCFunction) _wrap_wxListView_ClearColumnImage, METH_VARARGS | METH_KEYWORDS },
{ "wxListView_SetColumnImage", (PyCFunction) _wrap_wxListView_SetColumnImage, METH_VARARGS | METH_KEYWORDS },
{ "wxListView_IsSelected", (PyCFunction) _wrap_wxListView_IsSelected, METH_VARARGS | METH_KEYWORDS },
{ "wxListView_GetFirstSelected", (PyCFunction) _wrap_wxListView_GetFirstSelected, METH_VARARGS | METH_KEYWORDS },
{ "wxListView_GetNextSelected", (PyCFunction) _wrap_wxListView_GetNextSelected, METH_VARARGS | METH_KEYWORDS },
{ "wxListView_GetFocusedItem", (PyCFunction) _wrap_wxListView_GetFocusedItem, METH_VARARGS | METH_KEYWORDS },
{ "wxListView_Focus", (PyCFunction) _wrap_wxListView_Focus, METH_VARARGS | METH_KEYWORDS },
{ "wxListView_Select", (PyCFunction) _wrap_wxListView_Select, METH_VARARGS | METH_KEYWORDS },
{ "wxListView_Create", (PyCFunction) _wrap_wxListView_Create, METH_VARARGS | METH_KEYWORDS },
{ "new_wxPreListView", (PyCFunction) _wrap_new_wxPreListView, METH_VARARGS | METH_KEYWORDS },
{ "new_wxListView", (PyCFunction) _wrap_new_wxListView, METH_VARARGS | METH_KEYWORDS },
{ "wxListCtrl_SortItems", (PyCFunction) _wrap_wxListCtrl_SortItems, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_SortItems", (PyCFunction) _wrap_wxListCtrl_SortItems, METH_VARARGS | METH_KEYWORDS },
{ "wxListCtrl_ScrollList", (PyCFunction) _wrap_wxListCtrl_ScrollList, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_ScrollList", (PyCFunction) _wrap_wxListCtrl_ScrollList, METH_VARARGS | METH_KEYWORDS },
{ "wxListCtrl_SetItemCount", (PyCFunction) _wrap_wxListCtrl_SetItemCount, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_SetItemCount", (PyCFunction) _wrap_wxListCtrl_SetItemCount, METH_VARARGS | METH_KEYWORDS },
@@ -9243,6 +9818,8 @@ static PyMethodDef controls2cMethods[] = {
{ "wxListCtrl_Create", (PyCFunction) _wrap_wxListCtrl_Create, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_Create", (PyCFunction) _wrap_wxListCtrl_Create, METH_VARARGS | METH_KEYWORDS },
{ "new_wxPreListCtrl", (PyCFunction) _wrap_new_wxPreListCtrl, METH_VARARGS | METH_KEYWORDS }, { "new_wxPreListCtrl", (PyCFunction) _wrap_new_wxPreListCtrl, METH_VARARGS | METH_KEYWORDS },
{ "new_wxListCtrl", (PyCFunction) _wrap_new_wxListCtrl, METH_VARARGS | METH_KEYWORDS }, { "new_wxListCtrl", (PyCFunction) _wrap_new_wxListCtrl, METH_VARARGS | METH_KEYWORDS },
{ "wxListEvent_GetCacheTo", (PyCFunction) _wrap_wxListEvent_GetCacheTo, METH_VARARGS | METH_KEYWORDS },
{ "wxListEvent_GetCacheFrom", (PyCFunction) _wrap_wxListEvent_GetCacheFrom, METH_VARARGS | METH_KEYWORDS },
{ "wxListEvent_GetItem", (PyCFunction) _wrap_wxListEvent_GetItem, METH_VARARGS | METH_KEYWORDS }, { "wxListEvent_GetItem", (PyCFunction) _wrap_wxListEvent_GetItem, METH_VARARGS | METH_KEYWORDS },
{ "wxListEvent_GetMask", (PyCFunction) _wrap_wxListEvent_GetMask, METH_VARARGS | METH_KEYWORDS }, { "wxListEvent_GetMask", (PyCFunction) _wrap_wxListEvent_GetMask, METH_VARARGS | METH_KEYWORDS },
{ "wxListEvent_GetData", (PyCFunction) _wrap_wxListEvent_GetData, METH_VARARGS | METH_KEYWORDS }, { "wxListEvent_GetData", (PyCFunction) _wrap_wxListEvent_GetData, METH_VARARGS | METH_KEYWORDS },
@@ -9270,6 +9847,7 @@ static PyMethodDef controls2cMethods[] = {
{ "wxListEvent_m_itemIndex_set", (PyCFunction) _wrap_wxListEvent_m_itemIndex_set, METH_VARARGS | METH_KEYWORDS }, { "wxListEvent_m_itemIndex_set", (PyCFunction) _wrap_wxListEvent_m_itemIndex_set, METH_VARARGS | METH_KEYWORDS },
{ "wxListEvent_m_code_get", (PyCFunction) _wrap_wxListEvent_m_code_get, METH_VARARGS | METH_KEYWORDS }, { "wxListEvent_m_code_get", (PyCFunction) _wrap_wxListEvent_m_code_get, METH_VARARGS | METH_KEYWORDS },
{ "wxListEvent_m_code_set", (PyCFunction) _wrap_wxListEvent_m_code_set, METH_VARARGS | METH_KEYWORDS }, { "wxListEvent_m_code_set", (PyCFunction) _wrap_wxListEvent_m_code_set, METH_VARARGS | METH_KEYWORDS },
{ "new_wxListEvent", (PyCFunction) _wrap_new_wxListEvent, METH_VARARGS | METH_KEYWORDS },
{ "wxListItem_m_width_get", (PyCFunction) _wrap_wxListItem_m_width_get, METH_VARARGS | METH_KEYWORDS }, { "wxListItem_m_width_get", (PyCFunction) _wrap_wxListItem_m_width_get, METH_VARARGS | METH_KEYWORDS },
{ "wxListItem_m_width_set", (PyCFunction) _wrap_wxListItem_m_width_set, METH_VARARGS | METH_KEYWORDS }, { "wxListItem_m_width_set", (PyCFunction) _wrap_wxListItem_m_width_set, METH_VARARGS | METH_KEYWORDS },
{ "wxListItem_m_format_get", (PyCFunction) _wrap_wxListItem_m_format_get, METH_VARARGS | METH_KEYWORDS }, { "wxListItem_m_format_get", (PyCFunction) _wrap_wxListItem_m_format_get, METH_VARARGS | METH_KEYWORDS },
@@ -9394,6 +9972,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
{ "_wxObject","_wxPyTreeCtrl",SwigwxPyTreeCtrlTowxObject}, { "_wxObject","_wxPyTreeCtrl",SwigwxPyTreeCtrlTowxObject},
{ "_wxObject","_wxTreeEvent",SwigwxTreeEventTowxObject}, { "_wxObject","_wxTreeEvent",SwigwxTreeEventTowxObject},
{ "_wxObject","_wxPyTreeItemData",SwigwxPyTreeItemDataTowxObject}, { "_wxObject","_wxPyTreeItemData",SwigwxPyTreeItemDataTowxObject},
{ "_wxObject","_wxListView",SwigwxListViewTowxObject},
{ "_wxObject","_wxPyListCtrl",SwigwxPyListCtrlTowxObject}, { "_wxObject","_wxPyListCtrl",SwigwxPyListCtrlTowxObject},
{ "_wxObject","_wxListEvent",SwigwxListEventTowxObject}, { "_wxObject","_wxListEvent",SwigwxListEventTowxObject},
{ "_wxObject","_wxListItem",SwigwxListItemTowxObject}, { "_wxObject","_wxListItem",SwigwxListItemTowxObject},
@@ -9401,6 +9980,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
{ "_signed_short","_short",0}, { "_signed_short","_short",0},
{ "_unsigned_char","_byte",0}, { "_unsigned_char","_byte",0},
{ "_wxControl","_wxPyTreeCtrl",SwigwxPyTreeCtrlTowxControl}, { "_wxControl","_wxPyTreeCtrl",SwigwxPyTreeCtrlTowxControl},
{ "_wxControl","_wxListView",SwigwxListViewTowxControl},
{ "_wxControl","_wxPyListCtrl",SwigwxPyListCtrlTowxControl}, { "_wxControl","_wxPyListCtrl",SwigwxPyListCtrlTowxControl},
{ "_unsigned_int","_wxCoord",0}, { "_unsigned_int","_wxCoord",0},
{ "_unsigned_int","_wxPrintQuality",0}, { "_unsigned_int","_wxPrintQuality",0},
@@ -9446,9 +10026,12 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
{ "_wxCoord","_size_t",0}, { "_wxCoord","_size_t",0},
{ "_wxCoord","_time_t",0}, { "_wxCoord","_time_t",0},
{ "_wxCoord","_wxPrintQuality",0}, { "_wxCoord","_wxPrintQuality",0},
{ "_wxPyListCtrl","_wxListView",SwigwxListViewTowxPyListCtrl},
{ "_wxEvtHandler","_wxPyTreeCtrl",SwigwxPyTreeCtrlTowxEvtHandler}, { "_wxEvtHandler","_wxPyTreeCtrl",SwigwxPyTreeCtrlTowxEvtHandler},
{ "_wxEvtHandler","_wxListView",SwigwxListViewTowxEvtHandler},
{ "_wxEvtHandler","_wxPyListCtrl",SwigwxPyListCtrlTowxEvtHandler}, { "_wxEvtHandler","_wxPyListCtrl",SwigwxPyListCtrlTowxEvtHandler},
{ "_wxWindow","_wxPyTreeCtrl",SwigwxPyTreeCtrlTowxWindow}, { "_wxWindow","_wxPyTreeCtrl",SwigwxPyTreeCtrlTowxWindow},
{ "_wxWindow","_wxListView",SwigwxListViewTowxWindow},
{ "_wxWindow","_wxPyListCtrl",SwigwxPyListCtrlTowxWindow}, { "_wxWindow","_wxPyListCtrl",SwigwxPyListCtrlTowxWindow},
{0,0,0}}; {0,0,0}};
@@ -9478,6 +10061,10 @@ SWIGEXPORT(void) initcontrols2c() {
PyDict_SetItemString(d,"wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK", PyInt_FromLong((long) wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK)); PyDict_SetItemString(d,"wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK", PyInt_FromLong((long) wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK));
PyDict_SetItemString(d,"wxEVT_COMMAND_LIST_ITEM_ACTIVATED", PyInt_FromLong((long) wxEVT_COMMAND_LIST_ITEM_ACTIVATED)); PyDict_SetItemString(d,"wxEVT_COMMAND_LIST_ITEM_ACTIVATED", PyInt_FromLong((long) wxEVT_COMMAND_LIST_ITEM_ACTIVATED));
PyDict_SetItemString(d,"wxEVT_COMMAND_LIST_CACHE_HINT", PyInt_FromLong((long) wxEVT_COMMAND_LIST_CACHE_HINT)); PyDict_SetItemString(d,"wxEVT_COMMAND_LIST_CACHE_HINT", PyInt_FromLong((long) wxEVT_COMMAND_LIST_CACHE_HINT));
PyDict_SetItemString(d,"wxEVT_COMMAND_LIST_COL_RIGHT_CLICK", PyInt_FromLong((long) wxEVT_COMMAND_LIST_COL_RIGHT_CLICK));
PyDict_SetItemString(d,"wxEVT_COMMAND_LIST_COL_BEGIN_DRAG", PyInt_FromLong((long) wxEVT_COMMAND_LIST_COL_BEGIN_DRAG));
PyDict_SetItemString(d,"wxEVT_COMMAND_LIST_COL_DRAGGING", PyInt_FromLong((long) wxEVT_COMMAND_LIST_COL_DRAGGING));
PyDict_SetItemString(d,"wxEVT_COMMAND_LIST_COL_END_DRAG", PyInt_FromLong((long) wxEVT_COMMAND_LIST_COL_END_DRAG));
PyDict_SetItemString(d,"wxLC_VRULES", PyInt_FromLong((long) wxLC_VRULES)); PyDict_SetItemString(d,"wxLC_VRULES", PyInt_FromLong((long) wxLC_VRULES));
PyDict_SetItemString(d,"wxLC_HRULES", PyInt_FromLong((long) wxLC_HRULES)); PyDict_SetItemString(d,"wxLC_HRULES", PyInt_FromLong((long) wxLC_HRULES));
PyDict_SetItemString(d,"wxLC_ICON", PyInt_FromLong((long) wxLC_ICON)); PyDict_SetItemString(d,"wxLC_ICON", PyInt_FromLong((long) wxLC_ICON));
@@ -9497,6 +10084,7 @@ SWIGEXPORT(void) initcontrols2c() {
PyDict_SetItemString(d,"wxLC_MASK_TYPE", PyInt_FromLong((long) wxLC_MASK_TYPE)); PyDict_SetItemString(d,"wxLC_MASK_TYPE", PyInt_FromLong((long) wxLC_MASK_TYPE));
PyDict_SetItemString(d,"wxLC_MASK_ALIGN", PyInt_FromLong((long) wxLC_MASK_ALIGN)); PyDict_SetItemString(d,"wxLC_MASK_ALIGN", PyInt_FromLong((long) wxLC_MASK_ALIGN));
PyDict_SetItemString(d,"wxLC_MASK_SORT", PyInt_FromLong((long) wxLC_MASK_SORT)); PyDict_SetItemString(d,"wxLC_MASK_SORT", PyInt_FromLong((long) wxLC_MASK_SORT));
PyDict_SetItemString(d,"wxLC_USER_TEXT", PyInt_FromLong((long) wxLC_USER_TEXT));
PyDict_SetItemString(d,"wxLIST_MASK_STATE", PyInt_FromLong((long) wxLIST_MASK_STATE)); PyDict_SetItemString(d,"wxLIST_MASK_STATE", PyInt_FromLong((long) wxLIST_MASK_STATE));
PyDict_SetItemString(d,"wxLIST_MASK_TEXT", PyInt_FromLong((long) wxLIST_MASK_TEXT)); PyDict_SetItemString(d,"wxLIST_MASK_TEXT", PyInt_FromLong((long) wxLIST_MASK_TEXT));
PyDict_SetItemString(d,"wxLIST_MASK_IMAGE", PyInt_FromLong((long) wxLIST_MASK_IMAGE)); PyDict_SetItemString(d,"wxLIST_MASK_IMAGE", PyInt_FromLong((long) wxLIST_MASK_IMAGE));

View File

@@ -53,6 +53,18 @@ def EVT_LIST_INSERT_ITEM(win, id, func):
def EVT_LIST_COL_CLICK(win, id, func): def EVT_LIST_COL_CLICK(win, id, func):
win.Connect(id, -1, wxEVT_COMMAND_LIST_COL_CLICK, 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): def EVT_LIST_ITEM_RIGHT_CLICK(win, id, func):
win.Connect(id, -1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, func) win.Connect(id, -1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, func)
@@ -371,6 +383,12 @@ class wxListEventPtr(wxNotifyEventPtr):
def GetItem(self, *_args, **_kwargs): def GetItem(self, *_args, **_kwargs):
val = apply(controls2c.wxListEvent_GetItem,(self,) + _args, _kwargs) val = apply(controls2c.wxListEvent_GetItem,(self,) + _args, _kwargs)
return val return val
def GetCacheFrom(self, *_args, **_kwargs):
val = apply(controls2c.wxListEvent_GetCacheFrom,(self,) + _args, _kwargs)
return val
def GetCacheTo(self, *_args, **_kwargs):
val = apply(controls2c.wxListEvent_GetCacheTo,(self,) + _args, _kwargs)
return val
def __setattr__(self,name,value): def __setattr__(self,name,value):
if name == "m_code" : if name == "m_code" :
controls2c.wxListEvent_m_code_set(self,value) controls2c.wxListEvent_m_code_set(self,value)
@@ -413,8 +431,9 @@ class wxListEventPtr(wxNotifyEventPtr):
def __repr__(self): def __repr__(self):
return "<C wxListEvent instance at %s>" % (self.this,) return "<C wxListEvent instance at %s>" % (self.this,)
class wxListEvent(wxListEventPtr): class wxListEvent(wxListEventPtr):
def __init__(self,this): def __init__(self,*_args,**_kwargs):
self.this = this self.this = apply(controls2c.new_wxListEvent,_args,_kwargs)
self.thisown = 1
@@ -618,6 +637,37 @@ class wxListCtrlPtr(wxControlPtr):
val.thisown = 1 val.thisown = 1
return val return val
# Some helpers...
def Select(self, idx, on=true):
'''[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)
class wxListCtrl(wxListCtrlPtr): class wxListCtrl(wxListCtrlPtr):
def __init__(self,*_args,**_kwargs): def __init__(self,*_args,**_kwargs):
self.this = apply(controls2c.new_wxListCtrl,_args,_kwargs) self.this = apply(controls2c.new_wxListCtrl,_args,_kwargs)
@@ -632,6 +682,52 @@ def wxPreListCtrl(*_args,**_kwargs):
return val return val
class wxListViewPtr(wxListCtrlPtr):
def __init__(self,this):
self.this = this
self.thisown = 0
def Create(self, *_args, **_kwargs):
val = apply(controls2c.wxListView_Create,(self,) + _args, _kwargs)
return val
def Select(self, *_args, **_kwargs):
val = apply(controls2c.wxListView_Select,(self,) + _args, _kwargs)
return val
def Focus(self, *_args, **_kwargs):
val = apply(controls2c.wxListView_Focus,(self,) + _args, _kwargs)
return val
def GetFocusedItem(self, *_args, **_kwargs):
val = apply(controls2c.wxListView_GetFocusedItem,(self,) + _args, _kwargs)
return val
def GetNextSelected(self, *_args, **_kwargs):
val = apply(controls2c.wxListView_GetNextSelected,(self,) + _args, _kwargs)
return val
def GetFirstSelected(self, *_args, **_kwargs):
val = apply(controls2c.wxListView_GetFirstSelected,(self,) + _args, _kwargs)
return val
def IsSelected(self, *_args, **_kwargs):
val = apply(controls2c.wxListView_IsSelected,(self,) + _args, _kwargs)
return val
def SetColumnImage(self, *_args, **_kwargs):
val = apply(controls2c.wxListView_SetColumnImage,(self,) + _args, _kwargs)
return val
def ClearColumnImage(self, *_args, **_kwargs):
val = apply(controls2c.wxListView_ClearColumnImage,(self,) + _args, _kwargs)
return val
def __repr__(self):
return "<C wxListView instance at %s>" % (self.this,)
class wxListView(wxListViewPtr):
def __init__(self,*_args,**_kwargs):
self.this = apply(controls2c.new_wxListView,_args,_kwargs)
self.thisown = 1
def wxPreListView(*_args,**_kwargs):
val = wxListViewPtr(apply(controls2c.new_wxPreListView,_args,_kwargs))
val.thisown = 1
return val
class wxTreeItemAttrPtr : class wxTreeItemAttrPtr :
def __init__(self,this): def __init__(self,this):
self.this = this self.this = this
@@ -1048,6 +1144,10 @@ wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK = controls2c.wxEVT_COMMAND_LIST_ITEM_RIGHT_C
wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK = controls2c.wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK = controls2c.wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK
wxEVT_COMMAND_LIST_ITEM_ACTIVATED = controls2c.wxEVT_COMMAND_LIST_ITEM_ACTIVATED wxEVT_COMMAND_LIST_ITEM_ACTIVATED = controls2c.wxEVT_COMMAND_LIST_ITEM_ACTIVATED
wxEVT_COMMAND_LIST_CACHE_HINT = controls2c.wxEVT_COMMAND_LIST_CACHE_HINT wxEVT_COMMAND_LIST_CACHE_HINT = controls2c.wxEVT_COMMAND_LIST_CACHE_HINT
wxEVT_COMMAND_LIST_COL_RIGHT_CLICK = controls2c.wxEVT_COMMAND_LIST_COL_RIGHT_CLICK
wxEVT_COMMAND_LIST_COL_BEGIN_DRAG = controls2c.wxEVT_COMMAND_LIST_COL_BEGIN_DRAG
wxEVT_COMMAND_LIST_COL_DRAGGING = controls2c.wxEVT_COMMAND_LIST_COL_DRAGGING
wxEVT_COMMAND_LIST_COL_END_DRAG = controls2c.wxEVT_COMMAND_LIST_COL_END_DRAG
wxLC_VRULES = controls2c.wxLC_VRULES wxLC_VRULES = controls2c.wxLC_VRULES
wxLC_HRULES = controls2c.wxLC_HRULES wxLC_HRULES = controls2c.wxLC_HRULES
wxLC_ICON = controls2c.wxLC_ICON wxLC_ICON = controls2c.wxLC_ICON
@@ -1067,6 +1167,7 @@ wxLC_SORT_DESCENDING = controls2c.wxLC_SORT_DESCENDING
wxLC_MASK_TYPE = controls2c.wxLC_MASK_TYPE wxLC_MASK_TYPE = controls2c.wxLC_MASK_TYPE
wxLC_MASK_ALIGN = controls2c.wxLC_MASK_ALIGN wxLC_MASK_ALIGN = controls2c.wxLC_MASK_ALIGN
wxLC_MASK_SORT = controls2c.wxLC_MASK_SORT wxLC_MASK_SORT = controls2c.wxLC_MASK_SORT
wxLC_USER_TEXT = controls2c.wxLC_USER_TEXT
wxLIST_MASK_STATE = controls2c.wxLIST_MASK_STATE wxLIST_MASK_STATE = controls2c.wxLIST_MASK_STATE
wxLIST_MASK_TEXT = controls2c.wxLIST_MASK_TEXT wxLIST_MASK_TEXT = controls2c.wxLIST_MASK_TEXT
wxLIST_MASK_IMAGE = controls2c.wxLIST_MASK_IMAGE wxLIST_MASK_IMAGE = controls2c.wxLIST_MASK_IMAGE

View File

@@ -1,3 +1,39 @@
*.py
*.pyc *.pyc
*.pyd *.pyd
__init__.py
__version__.py
calendar.py
clip_dnd.py
cmndlgs.py
controls.py
controls2.py
events.py
filesys.py
frames.py
gdi.py
glcanvas.py
grid.py
help.py
html.py
htmlhelp.py
image.py
mdi.py
misc.py
misc2.py
ogl.py
oglbasic.py
oglcanvas.py
oglshapes.py
oglshapes2.py
printfw.py
sizers.py
stattool.py
stc.py
stc_.py
streams.py
utils.py
windows.py
windows2.py
windows3.py
wx.py
xrc.py

View File

@@ -34,53 +34,99 @@ class wxColumnSorterMixin:
objects representing the values in each column. These values objects representing the values in each column. These values
are compared in the column sorter to determine sort order. are compared in the column sorter to determine sort order.
Interesting methods to override are GetColumnSorter,
GetSecondarySortValues, and GetSortImages. See below for details.
""" """
def __init__(self, numColumns): def __init__(self, numColumns):
self._colSortFlag = [0] * numColumns self._colSortFlag = [0] * numColumns
self._col = 0 self._col = -1
self._colSortFlag[self._col] = 1
list = self.GetListCtrl() list = self.GetListCtrl()
if not list: if not list:
raise ValueError, "No wxListCtrl available" raise ValueError, "No wxListCtrl available"
EVT_LIST_COL_CLICK(list, list.GetId(), self.OnColClick) EVT_LIST_COL_CLICK(list, list.GetId(), self.__OnColClick)
def SortListItems(self, col=-1, ascending=1): def SortListItems(self, col=-1, ascending=1):
"""Sort the list on demand. Can also be used to set the sort column and order.""" """Sort the list on demand. Can also be used to set the sort column and order."""
oldCol = self._col
if col != -1: if col != -1:
self._col = col self._col = col
self._colSortFlag[col] = ascending self._colSortFlag[col] = ascending
self.GetListCtrl().SortItems(self.ColumnSorter) self.GetListCtrl().SortItems(self.GetColumnSorter())
self.__updateImages(oldCol)
def OnColClick(self, evt):
self._col = col = evt.m_col
self._colSortFlag[col] = not self._colSortFlag[col]
self.GetListCtrl().SortItems(self.ColumnSorter)
def ColumnSorter(self, key1, key2):
col = self._col
sortFlag = self._colSortFlag[col]
item1 = self.itemDataMap[key1][col]
item2 = self.itemDataMap[key2][col]
if item1 == item2: return 0
if sortFlag:
if item1 < item2: return -1
else: return 1
else:
if item1 > item2: return -1
else: return 1
def GetColumnWidths(self): def GetColumnWidths(self):
"""
Returns a list of column widths. Can be used to help restore the current
view later.
"""
list = self.GetListCtrl() list = self.GetListCtrl()
rv = [] rv = []
for x in range(len(self._colSortFlag)): for x in range(len(self._colSortFlag)):
rv.append(list.GetColumnWidth(x)) rv.append(list.GetColumnWidth(x))
return rv return rv
def GetSortImages(self):
"""
Returns a tuple of image list indexesthe indexes in the image list for an image to be put on the column
header when sorting in descending order.
"""
return (-1, -1) # (decending, ascending) image IDs
def GetColumnSorter(self):
"""Returns a callable object to be used for comparing column values when sorting."""
return self.__ColumnSorter
def GetSecondarySortValues(self, col, key1, key2):
"""Returns a tuple of 2 values to use for secondary sort values when the
items in the selected column match equal. The default just returns the
item data values."""
return (key1, key2)
def __OnColClick(self, evt):
oldCol = self._col
self._col = col = evt.GetColumn()
self._colSortFlag[col] = not self._colSortFlag[col]
self.GetListCtrl().SortItems(self.GetColumnSorter())
self.__updateImages(oldCol)
evt.Skip()
def __ColumnSorter(self, key1, key2):
col = self._col
ascending = self._colSortFlag[col]
item1 = self.itemDataMap[key1][col]
item2 = self.itemDataMap[key2][col]
cmpVal = cmp(item1, item2)
# If the items are equal then pick something else to make the sort value unique
if cmpVal == 0:
cmpVal = apply(cmp, self.GetSecondarySortValues(col, key1, key2))
if ascending:
return cmpVal
else:
return -cmpVal
def __updateImages(self, oldCol):
sortImages = self.GetSortImages()
if self._col != -1 and sortImages[0] != -1:
img = sortImages[self._colSortFlag[self._col]]
list = self.GetListCtrl()
if oldCol != -1:
list.ClearColumnImage(oldCol)
list.SetColumnImage(self._col, img)
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------