#include <wx/listctrl.h>
#include <wx/treectrl.h>
#include <wx/imaglist.h>
+#include <wx/dirctrl.h>
+
+#include "pytree.h"
%}
//----------------------------------------------------------------------
//----------------------------------------------------------------------
+%{
+ // Put some wx default wxChar* values into wxStrings.
+ const wxChar* wxListCtrlNameStr = _T("wxListCtrl");
+ DECLARE_DEF_STRING(ListCtrlNameStr);
+
+ const wxChar* wx_TreeCtrlNameStr = _T("wxTreeCtrl");
+ DECLARE_DEF_STRING(_TreeCtrlNameStr);
+ DECLARE_DEF_STRING(DirDialogDefaultFolderStr);
+
+ static const wxString wxPyEmptyString(wxT(""));
+%}
+
+
+%{
+ static const long longzero = 0;
+%}
+
//----------------------------------------------------------------------
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,
+ wxEVT_COMMAND_LIST_ITEM_FOCUSED,
};
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)
def EVT_LIST_CACHE_HINT(win, id, func):
win.Connect(id, -1, wxEVT_COMMAND_LIST_CACHE_HINT, func)
+
+def EVT_LIST_ITEM_FOCUSED(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_LIST_ITEM_FOCUSED, func)
"
wxLC_MASK_ALIGN,
wxLC_MASK_SORT,
+ wxLC_USER_TEXT,
};
bool HasBackgroundColour();
bool HasFont();
- const wxColour& GetTextColour();
- const wxColour& GetBackgroundColour();
- const wxFont& GetFont();
+ wxColour GetTextColour();
+ wxColour GetBackgroundColour();
+ wxFont GetFont();
};
class wxListEvent: public wxNotifyEvent {
public:
+ wxListEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
+
+%readonly
int m_code;
- long m_itemIndex;
long m_oldItemIndex;
+ long m_itemIndex;
int m_col;
- bool m_cancelled;
wxPoint m_pointDrag;
wxListItem m_item;
+%readwrite
- int GetCode();
+ int GetKeyCode();
+ %pragma(python) addtoclass = "GetCode = GetKeyCode"
long GetIndex();
- long GetOldIndex();
- long GetOldItem();
int GetColumn();
- bool Cancelled();
wxPoint GetPoint();
const wxString& GetLabel();
const wxString& GetText();
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,
long style,
const wxValidator& validator,
- char* name) :
+ const wxString& 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,
+ const wxString& 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);
%}
+
%name(wxListCtrl)class wxPyListCtrl : public wxControl {
public:
wxPyListCtrl(wxWindow* parent, wxWindowID id = -1,
const wxSize& size = wxDefaultSize,
long style = wxLC_ICON,
const wxValidator& validator = wxDefaultValidator,
- char* name = "listCtrl");
+ const wxString& name = wxPyListCtrlNameStr);
+ %name(wxPreListCtrl)wxPyListCtrl();
- void _setSelf(PyObject* self, PyObject* _class);
- %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)"
- %pragma(python) addtomethod = "__init__:self._setSelf(self, wxListCtrl)"
+ bool Create(wxWindow* parent, wxWindowID id = -1,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxLC_ICON,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxPyListCtrlNameStr);
+
+ void _setCallbackInfo(PyObject* self, PyObject* _class);
+ %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxListCtrl)"
+ %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ %pragma(python) addtomethod = "wxPreListCtrl:val._setOORInfo(val)"
// Set the control colours
bool SetForegroundColour(const wxColour& col);
bool SetBackgroundColour(const wxColour& col);
// Gets information about this column
- bool GetColumn(int col, wxListItem& item) const;
+ // bool GetColumn(int col, wxListItem& item) const;
+ %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.
+ %pragma(python) addtoclass = "
+ def GetColumn(self, *_args, **_kwargs):
+ val = controls2c.wxListCtrl_GetColumn(self, *_args, **_kwargs)
+ if val is not None: val.thisown = 1
+ return val
+ "
// Sets information about this column
bool SetColumn(int col, wxListItem& item) ;
} // The OOR typemaps don't know what to do with the %new, so fix it up.
%pragma(python) addtoclass = "
def GetItem(self, *_args, **_kwargs):
- val = apply(controls2c.wxListCtrl_GetItem,(self,) + _args, _kwargs)
- val.thisown = 1
+ val = controls2c.wxListCtrl_GetItem(self, *_args, **_kwargs)
+ if val is not None: val.thisown = 1
return val
"
-
// Sets information about the item
bool SetItem(wxListItem& info) ;
//bool GetItemRect(long item, wxRect& rect, int code = wxLIST_RECT_BOUNDS) const ;
//bool GetItemPosition(long item, wxPoint& pos) const ;
+
+ // Gets the item position
%addmethods {
- // Gets the item position
%new wxPoint* GetItemPosition(long item) {
wxPoint* pos = new wxPoint;
self->GetItemPosition(item, *pos);
int GetItemCount() const;
// Gets the number of columns in the list control
- int GetColumnCount() const { return m_colCount; }
+ int GetColumnCount() const;
// Retrieves the spacing between icons in pixels.
// If small is TRUE, gets the spacing for the small icon
// 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;
void RefreshItem(long item);
void RefreshItems(long itemFrom, long itemTo);
-
-
-
// Arranges the items
bool Arrange(int flag = wxLIST_ALIGN_DEFAULT);
// End label editing, optionally cancelling the edit
bool EndEditLabel(bool cancel);
+#else
+ void EditLabel(long item);
#endif
// Ensures this item is visible
// to scroll. If in report view mode, y specifies the number of lines to scroll.
bool ScrollList(int dx, int dy);
+ 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...
+
+ 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 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
+
+ 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)
+
+ def Append(self, entry):
+ '''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, cvtfunc(entry[0]))
+ for i in range(1, len(entry)):
+ self.SetStringItem(pos, i, cvtfunc(entry[i]))
+ return pos
+ "
+
+
// bool SortItems(wxListCtrlCompare fn, long data);
%addmethods {
// Sort items.
}
}
+
+ %addmethods {
+ wxWindow* GetMainWindow() {
+ #ifdef __WXMSW__
+ return self;
+ #else
+ return (wxWindow*)self->m_mainWin;
+ #endif
+ }
+ }
};
-%{
+%{ // Python aware sorting function for wxPyListCtrl
int wxCALLBACK wxPyListCtrl_SortItems(long item1, long item2, long funcPtr) {
int retval = 0;
PyObject* func = (PyObject*)funcPtr;
- bool doSave = wxPyRestoreThread();
+ wxPyBeginBlockThreads();
PyObject* args = Py_BuildValue("(ii)", item1, item2);
PyObject* result = PyEval_CallObject(func, args);
Py_DECREF(result);
}
- wxPySaveThread(doSave);
+ wxPyEndBlockThreads();
return retval;
}
//----------------------------------------------------------------------
+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 = wxPyListCtrlNameStr);
+ %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 = wxPyListCtrlNameStr);
+
+ %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ %pragma(python) addtomethod = "wxPreListView:val._setOORInfo(val)"
+
+ // [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
+enum {
+ wxTR_NO_BUTTONS,
+ wxTR_HAS_BUTTONS,
+ wxTR_NO_LINES,
+ wxTR_LINES_AT_ROOT,
+
+ wxTR_SINGLE,
+ wxTR_MULTIPLE,
+ wxTR_EXTENDED,
+ wxTR_HAS_VARIABLE_ROW_HEIGHT,
+
+ wxTR_EDIT_LABELS,
+ wxTR_HIDE_ROOT,
+ wxTR_ROW_LINES,
+
+ wxTR_FULL_ROW_HIGHLIGHT,
+ wxTR_DEFAULT_STYLE,
+
+ wxTR_TWIST_BUTTONS,
+ wxTR_MAC_BUTTONS,
+ wxTR_AQUA_BUTTONS,
+};
+
+
enum wxTreeItemIcon
{
wxTreeItemIcon_Normal, // not selected, not expanded
wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK,
wxEVT_COMMAND_TREE_ITEM_MIDDLE_CLICK,
wxEVT_COMMAND_TREE_END_DRAG,
+ wxEVT_COMMAND_TREE_STATE_IMAGE_CLICK,
+};
+
+
+%pragma(python) code = "
+# wxTreeCtrl events
+def EVT_TREE_BEGIN_DRAG(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_BEGIN_DRAG, func)
+
+def EVT_TREE_BEGIN_RDRAG(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_BEGIN_RDRAG, func)
+
+def EVT_TREE_BEGIN_LABEL_EDIT(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, func)
+
+def EVT_TREE_END_LABEL_EDIT(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_END_LABEL_EDIT, func)
+
+def EVT_TREE_GET_INFO(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_GET_INFO, func)
+
+def EVT_TREE_SET_INFO(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_SET_INFO, func)
+
+def EVT_TREE_ITEM_EXPANDED(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_ITEM_EXPANDED, func)
+
+def EVT_TREE_ITEM_EXPANDING(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_ITEM_EXPANDING, func)
+
+def EVT_TREE_ITEM_COLLAPSED(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_ITEM_COLLAPSED, func)
+
+def EVT_TREE_ITEM_COLLAPSING(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_ITEM_COLLAPSING, func)
+
+def EVT_TREE_SEL_CHANGED(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_SEL_CHANGED, func)
+
+def EVT_TREE_SEL_CHANGING(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_SEL_CHANGING, func)
+
+def EVT_TREE_KEY_DOWN(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_KEY_DOWN, func)
+
+def EVT_TREE_DELETE_ITEM(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_DELETE_ITEM, func)
+
+def EVT_TREE_ITEM_ACTIVATED(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_ITEM_ACTIVATED, func)
+
+def EVT_TREE_ITEM_RIGHT_CLICK(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK, func)
+
+def EVT_TREE_ITEM_MIDDLE_CLICK(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_ITEM_MIDDLE_CLICK, func)
+
+def EVT_TREE_END_DRAG(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_END_DRAG, func)
+
+def EVT_TREE_STATE_IMAGE_CLICK(win, id, func):
+ win.Connect(id, -1, wxEVT_COMMAND_TREE_STATE_IMAGE_CLICK, func)
+
+"
+
+
+typedef void *wxTreeItemIdValue;
+
+
+class wxTreeItemAttr
+{
+public:
+ // ctors
+ //wxTreeItemAttr() { }
+ wxTreeItemAttr(const wxColour& colText = wxNullColour,
+ const wxColour& colBack = wxNullColour,
+ const wxFont& font = wxNullFont);
+
+ // setters
+ void SetTextColour(const wxColour& colText);
+ void SetBackgroundColour(const wxColour& colBack);
+ void SetFont(const wxFont& font);
+
+ // accessors
+ bool HasTextColour();
+ bool HasBackgroundColour();
+ bool HasFont();
+
+ wxColour GetTextColour();
+ wxColour GetBackgroundColour();
+ wxFont GetFont();
};
wxTreeItemId();
~wxTreeItemId();
bool IsOk();
+ %pragma(python) addtoclass = "
+ Ok = IsOk
+ def __nonzero__(self):
+ return self.IsOk()
+"
%addmethods {
int __cmp__(wxTreeItemId* other) {
-%{
-class wxPyTreeItemData : public wxTreeItemData {
-public:
- wxPyTreeItemData(PyObject* obj = NULL) {
- if (obj == NULL)
- obj = Py_None;
- Py_INCREF(obj);
- m_obj = obj;
- }
- ~wxPyTreeItemData() {
- bool doSave = wxPyRestoreThread();
- Py_DECREF(m_obj);
- wxPySaveThread(doSave);
- }
-
- PyObject* GetData() {
- Py_INCREF(m_obj);
- return m_obj;
- }
-
- void SetData(PyObject* obj) {
- bool doSave = wxPyRestoreThread();
- Py_DECREF(m_obj);
- wxPySaveThread(doSave);
- m_obj = obj;
- Py_INCREF(obj);
- }
-
- PyObject* m_obj;
-};
-%}
-
-
-
-%name(wxTreeItemData) class wxPyTreeItemData : public wxObject {
+%name(wxTreeItemData) class wxPyTreeItemData {
public:
wxPyTreeItemData(PyObject* obj = NULL);
class wxTreeEvent : public wxNotifyEvent {
public:
- wxTreeItemId GetItem();
- wxTreeItemId GetOldItem();
- wxPoint GetPoint();
- int GetCode();
- const wxString& GetLabel();
+ wxTreeEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
+
+ // get the item on which the operation was performed or the newly
+ // selected item for wxEVT_COMMAND_TREE_SEL_CHANGED/ING events
+ wxTreeItemId GetItem() const;
+ void SetItem(const wxTreeItemId& item);
+
+ // for wxEVT_COMMAND_TREE_SEL_CHANGED/ING events, get the previously
+ // selected item
+ wxTreeItemId GetOldItem() const;
+ void SetOldItem(const wxTreeItemId& item);
+
+ // the point where the mouse was when the drag operation started (for
+ // wxEVT_COMMAND_TREE_BEGIN_(R)DRAG events only) or click position
+ wxPoint GetPoint() const;
+ void SetPoint(const wxPoint& pt);
+
+ // keyboard data (for wxEVT_COMMAND_TREE_KEY_DOWN only)
+ const wxKeyEvent& GetKeyEvent() const;
+ int GetKeyCode() const;
+ void SetKeyEvent(const wxKeyEvent& evt);
+
+ // label (for EVT_TREE_{BEGIN|END}_LABEL_EDIT only)
+ const wxString& GetLabel() const;
+ void SetLabel(const wxString& label);
+
+ // edit cancel flag (for EVT_TREE_{BEGIN|END}_LABEL_EDIT only)
+ bool IsEditCancelled() const;
+ void SetEditCanceled(bool editCancelled);
+
};
-%{
+%{ // 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,
long style,
const wxValidator& validator,
- char* name) :
+ const wxString& 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,
+ const wxString& name) {
+ return wxTreeCtrl::Create(parent, id, pos, size, style, validator, name);
+ }
+
+
int OnCompareItems(const wxTreeItemId& item1,
const wxTreeItemId& item2) {
int rval = 0;
- bool doSave = wxPyRestoreThread();
- if (m_myInst.findCallback("OnCompareItems"))
- rval = m_myInst.callCallback(Py_BuildValue(
- "(OO)",
- wxPyConstructObject((void*)&item1, "wxTreeItemId"),
- wxPyConstructObject((void*)&item2, "wxTreeItemId")));
- else
+ bool found;
+ wxPyBeginBlockThreads();
+ 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);
- wxPySaveThread(doSave);
return rval;
}
PYPRIVATE;
%name(wxTreeCtrl)class wxPyTreeCtrl : public wxControl {
public:
wxPyTreeCtrl(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");
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxTR_DEFAULT_STYLE,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxPy_TreeCtrlNameStr);
+ %name(wxPreTreeCtrl)wxPyTreeCtrl();
- void _setSelf(PyObject* self, PyObject* _class);
- %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)"
- %pragma(python) addtomethod = "__init__:self._setSelf(self, wxTreeCtrl)"
+ bool Create(wxWindow *parent, wxWindowID id = -1,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxTR_DEFAULT_STYLE,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxPy_TreeCtrlNameStr);
+
+ void _setCallbackInfo(PyObject* self, PyObject* _class);
+ %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxTreeCtrl)"
+
+ %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ %pragma(python) addtomethod = "wxPreTreeCtrl:val._setOORInfo(val)"
- void AssignImageList(wxImageList* imageList);
- %pragma(python) addtomethod = "AssignImageList:_args[0].thisown = 0"
size_t GetCount();
unsigned int GetIndent();
void SetIndent(unsigned int indent);
wxImageList *GetStateImageList();
void SetImageList(wxImageList *imageList);
void SetStateImageList(wxImageList *imageList);
+ void AssignImageList(wxImageList* imageList);
+ %pragma(python) addtomethod = "AssignImageList:_args[0].thisown = 0"
+ void AssignStateImageList(wxImageList* imageList);
+ %pragma(python) addtomethod = "AssignStateImageList:_args[0].thisown = 0"
unsigned int GetSpacing();
void SetSpacing(unsigned int spacing);
}
+ // 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);
wxTreeItemId GetRootItem();
wxTreeItemId GetSelection();
- %name(GetItemParent) wxTreeItemId GetParent(const wxTreeItemId& item);
+ wxTreeItemId GetItemParent(const wxTreeItemId& item);
//size_t GetSelections(wxArrayTreeItemIds& selection);
%addmethods {
PyObject* GetSelections() {
- bool doSave = wxPyRestoreThread();
+ 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, "wxTreeItemId", TRUE);
+ PyObject* item = wxPyConstructObject((void*)tii, wxT("wxTreeItemId"), TRUE);
PyList_Append(rval, item);
}
- wxPySaveThread(doSave);
+ wxPyEndBlockThreads();
return rval;
}
}
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);
size_t before,
const wxString& text,
int image = -1, int selectedImage = -1,
- wxTreeItemData *data = NULL);
+ wxPyTreeItemData *data = NULL);
wxTreeItemId AppendItem(const wxTreeItemId& parent,
const wxString& text,
int image = -1, int selectedImage = -1,
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);
#ifdef __WXMSW__
void SetItemDropHighlight(const wxTreeItemId& item, int highlight = TRUE);
+#endif
//bool GetBoundingRect(const wxTreeItemId& item, wxRect& rect, int textOnly = FALSE)
%addmethods {
PyObject* GetBoundingRect(const wxTreeItemId& item, int textOnly = FALSE) {
wxRect rect;
if (self->GetBoundingRect(item, rect, textOnly)) {
- bool doSave = wxPyRestoreThread();
+ wxPyBeginBlockThreads();
wxRect* r = new wxRect(rect);
- PyObject* val = wxPyConstructObject((void*)r, "wxRect");
- wxPySaveThread(doSave);
+ PyObject* val = wxPyConstructObject((void*)r, wxT("wxRect"), 1);
+ wxPyEndBlockThreads();
return val;
}
else {
}
}
}
-#endif
+
%pragma(python) addtoclass = "
# Redefine some methods that SWIG gets a bit confused on...
def GetFirstChild(self, *_args, **_kwargs):
- val1,val2 = apply(controls2c.wxTreeCtrl_GetFirstChild,(self,) + _args, _kwargs)
+ val1,val2 = controls2c.wxTreeCtrl_GetFirstChild(self, *_args, **_kwargs)
val1 = wxTreeItemIdPtr(val1)
val1.thisown = 1
return (val1,val2)
def GetNextChild(self, *_args, **_kwargs):
- val1,val2 = apply(controls2c.wxTreeCtrl_GetNextChild,(self,) + _args, _kwargs)
+ val1,val2 = controls2c.wxTreeCtrl_GetNextChild(self, *_args, **_kwargs)
val1 = wxTreeItemIdPtr(val1)
val1.thisown = 1
return (val1,val2)
def HitTest(self, *_args, **_kwargs):
- val1, val2 = apply(controls2c.wxTreeCtrl_HitTest,(self,) + _args, _kwargs)
+ val1, val2 = controls2c.wxTreeCtrl_HitTest(self, *_args, **_kwargs)
val1 = wxTreeItemIdPtr(val1)
val1.thisown = 1
return (val1,val2)
"
+
};
//----------------------------------------------------------------------
-#ifdef SKIPTHIS
-#ifdef __WXMSW__
-
enum {
- /* tab control event types */
- wxEVT_COMMAND_TAB_SEL_CHANGED,
- wxEVT_COMMAND_TAB_SEL_CHANGING,
+ wxDIRCTRL_DIR_ONLY,
+ wxDIRCTRL_SELECT_FIRST,
+ wxDIRCTRL_SHOW_FILTERS,
+ wxDIRCTRL_3D_INTERNAL,
+ wxDIRCTRL_EDIT_LABELS,
+
+ wxID_TREECTRL,
+ wxID_FILTERLISTCTRL,
};
-class wxTabEvent : public wxCommandEvent {
+class wxDirItemData : public wxObject // wxTreeItemData
+{
public:
+ wxDirItemData(const wxString& path, const wxString& name, bool isDir);
+// ~wxDirItemDataEx();
+ void SetNewDirName( wxString path );
+ wxString m_path, m_name;
+ bool m_isHidden;
+ bool m_isExpanded;
+ bool m_isDir;
};
+class wxGenericDirCtrl: public wxControl
+{
+public:
+ wxGenericDirCtrl(wxWindow *parent, const wxWindowID id = -1,
+ const wxString& dir = wxPyDirDialogDefaultFolderStr,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxDIRCTRL_3D_INTERNAL|wxSUNKEN_BORDER,
+ const wxString& filter = wxPyEmptyString,
+ int defaultFilter = 0,
+ const wxString& name = wxPy_TreeCtrlNameStr);
+ %name(wxPreGenericDirCtrl)wxGenericDirCtrl();
+
+ %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ %pragma(python) addtomethod = "wxPreGenericDirCtrl:val._setOORInfo(val)"
+
+ bool Create(wxWindow *parent, const wxWindowID id = -1,
+ const wxString& dir = wxPyDirDialogDefaultFolderStr,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxDIRCTRL_3D_INTERNAL|wxSUNKEN_BORDER,
+ const wxString& filter = wxPyEmptyString,
+ int defaultFilter = 0,
+ const wxString& name = wxPy_TreeCtrlNameStr);
+
+
+ // Try to expand as much of the given path as possible.
+ bool ExpandPath(const wxString& path);
+
+ // Accessors
+
+ inline wxString GetDefaultPath() const;
+ void SetDefaultPath(const wxString& path);
+
+ // Get dir or filename
+ wxString GetPath() const ;
+
+ // Get selected filename path only (else empty string).
+ // I.e. don't count a directory as a selection
+ wxString GetFilePath() const ;
+ void SetPath(const wxString& path) ;
+
+ void ShowHidden( bool show );
+ bool GetShowHidden();
+
+ wxString GetFilter() const;
+ void SetFilter(const wxString& filter);
+
+ int GetFilterIndex() const;
+ void SetFilterIndex(int n) ;
+
+ wxTreeItemId GetRootId();
+
+ wxTreeCtrl* GetTreeCtrl() const;
+ wxDirFilterListCtrl* GetFilterListCtrl() const;
+
+ // Collapse & expand the tree, thus re-creating it from scratch:
+ void ReCreateTree();
+
+// //// Helpers
+// void SetupSections();
+// // Parse the filter into an array of filters and an array of descriptions
+// int ParseFilter(const wxString& filterStr, wxArrayString& filters, wxArrayString& descriptions);
+// // Find the child that matches the first part of 'path'.
+// // E.g. if a child path is "/usr" and 'path' is "/usr/include"
+// // then the child for /usr is returned.
+// // If the path string has been used (we're at the leaf), done is set to TRUE
+// wxTreeItemId FindChild(wxTreeItemId parentId, const wxString& path, bool& done);
+};
-class wxTabCtrl : public wxControl {
+
+class wxDirFilterListCtrl: public wxChoice
+{
public:
- wxTabCtrl(wxWindow* parent, wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- char* name = "tabCtrl");
+ wxDirFilterListCtrl(wxGenericDirCtrl* parent, const wxWindowID id = -1,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0);
+ %name(wxPreDirFilterListCtrl)wxDirFilterListCtrl();
- %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)"
+ %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ %pragma(python) addtomethod = "wxPreDirFilterListCtrl:val._setOORInfo(val)"
- bool DeleteAllItems();
- bool DeleteItem(int item);
- wxImageList* GetImageList();
- int GetItemCount();
- // TODO: void* GetItemData();
- int GetItemImage(int item);
+ bool Create(wxGenericDirCtrl* parent, const wxWindowID id = -1,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0);
- %addmethods {
- %new wxRect* GetItemRect(int item) {
- wxRect* rect = new wxRect;
- self->GetItemRect(item, *rect);
- return rect;
- }
- }
+//// Operations
+ void FillFilterList(const wxString& filter, int defaultFilter);
+};
- 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);
+class wxFileIconsTable
+{
+public:
+ wxFileIconsTable();
+ ~wxFileIconsTable();
+
+ enum iconId_Type
+ {
+ folder,
+ folder_open,
+ computer,
+ drive,
+ cdrom,
+ floppy,
+ removeable,
+ file,
+ executable
+ };
+
+ int GetIconID(const wxString& extension, const wxString& mime = wxEmptyString);
+ wxImageList *GetSmallImageList();
};
-#endif
-#endif
+//----------------------------------------------------------------------
//----------------------------------------------------------------------
%init %{
+ // Map renamed classes back to their common name for OOR
wxPyPtrTypeMap_Add("wxTreeItemData", "wxPyTreeItemData");
wxPyPtrTypeMap_Add("wxTreeCtrl", "wxPyTreeCtrl");
+ wxPyPtrTypeMap_Add("wxListCtrl", "wxPyListCtrl");
%}
//----------------------------------------------------------------------