#include <wx/treectrl.h>
#include <wx/imaglist.h>
#include <wx/dirctrl.h>
+
+#include "pytree.h"
%}
//----------------------------------------------------------------------
} // 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 = apply(controls2c.wxListCtrl_GetColumn,(self,) + _args, _kwargs)
+ val = controls2c.wxListCtrl_GetColumn(self, *_args, **_kwargs)
if val is not None: val.thisown = 1
return val
"
} // 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 = controls2c.wxListCtrl_GetItem(self, *_args, **_kwargs)
if val is not None: val.thisown = 1
return val
"
};
-//----------------------------------------------------------------------
+//--------------------------------------------------------------------------------
+//--------------------------------------------------------------------------------
// wxTreeCtrl flags
enum {
wxTR_NO_BUTTONS,
wxTR_HAS_BUTTONS,
- wxTR_TWIST_BUTTONS,
wxTR_NO_LINES,
- wxTR_MAC_BUTTONS,
- wxTR_AQUA_BUTTONS,
+ wxTR_LINES_AT_ROOT,
wxTR_SINGLE,
wxTR_MULTIPLE,
wxTR_EXTENDED,
- wxTR_FULL_ROW_HIGHLIGHT,
+ wxTR_HAS_VARIABLE_ROW_HEIGHT,
wxTR_EDIT_LABELS,
- wxTR_LINES_AT_ROOT,
wxTR_HIDE_ROOT,
wxTR_ROW_LINES,
- wxTR_HAS_VARIABLE_ROW_HEIGHT,
+ 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,
};
def EVT_TREE_BEGIN_RDRAG(win, id, func):
win.Connect(id, -1, wxEVT_COMMAND_TREE_BEGIN_RDRAG, func)
-def EVT_TREE_END_DRAG(win, id, func):
- win.Connect(id, -1, wxEVT_COMMAND_TREE_END_DRAG, func)
-
def EVT_TREE_BEGIN_LABEL_EDIT(win, id, func):
win.Connect(id, -1, wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, 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:
wxTreeItemId();
~wxTreeItemId();
bool IsOk();
- %pragma(python) addtoclass = "Ok = 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() {
- wxPyBeginBlockThreads();
- Py_DECREF(m_obj);
- wxPyEndBlockThreads();
- }
- PyObject* GetData() {
- Py_INCREF(m_obj);
- return m_obj;
- }
-
- void SetData(PyObject* obj) {
- wxPyBeginBlockThreads();
- Py_DECREF(m_obj);
- wxPyEndBlockThreads();
- m_obj = obj;
- Py_INCREF(obj);
- }
-
- PyObject* m_obj;
-};
-%}
-
-
-
-%name(wxTreeItemData) class wxPyTreeItemData : public wxObject {
+%name(wxTreeItemData) class wxPyTreeItemData {
public:
wxPyTreeItemData(PyObject* obj = NULL);
public:
wxTreeEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
- wxTreeItemId GetItem();
- wxTreeItemId GetOldItem();
- wxPoint GetPoint();
- const wxKeyEvent& GetKeyEvent();
- int GetKeyCode();
- %pragma(python) addtoclass = "GetCode = GetKeyCode"
- const wxString& GetLabel();
+ // 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);
+
};
%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,
- const wxString& name = wxPy_TreeCtrlNameStr);
+ 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();
bool Create(wxWindow *parent, wxWindowID id = -1,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxPy_TreeCtrlNameStr);
+ 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)"
if (self->GetBoundingRect(item, rect, textOnly)) {
wxPyBeginBlockThreads();
wxRect* r = new wxRect(rect);
- PyObject* val = wxPyConstructObject((void*)r, wxT("wxRect"));
+ PyObject* val = wxPyConstructObject((void*)r, wxT("wxRect"), 1);
wxPyEndBlockThreads();
return val;
}
%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)
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
};
+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();
+};
+
+
//----------------------------------------------------------------------
//----------------------------------------------------------------------