#define __GTKTREECTRLH_G__
#ifdef __GNUG__
-#pragma interface
+#pragma interface "treectrl.h"
#endif
#include "wx/defs.h"
class wxGenericTreeItem;
class wxTreeCtrl;
+class wxImageList;
+
//-----------------------------------------------------------------------------
// constants
//-----------------------------------------------------------------------------
class WXDLLEXPORT wxTreeItem: public wxObject
{
+public:
+ long m_mask;
+ long m_itemId;
+ long m_state;
+ long m_stateMask;
+ wxString m_text;
+ int m_image;
+ int m_selectedImage;
+ int m_children;
+ long m_data;
+
+ wxTreeItem();
+
+ // Accessors
+ inline long GetMask() const { return m_mask; }
+ inline long GetItemId() const { return m_itemId; }
+ inline long GetState() const { return m_state; }
+ inline long GetStateMask() const { return m_stateMask; }
+ inline wxString GetText() const { return m_text; }
+ inline int GetImage() const { return m_image; }
+ inline int GetSelectedImage() const { return m_selectedImage; }
+ inline int GetChildren() const { return m_children; }
+ inline long GetData() const { return m_data; }
+
+ inline void SetMask(long mask) { m_mask = mask; }
+ inline void SetItemId(long id) { m_itemId = m_itemId = id; }
+ inline void GetState(long state) { m_state = state; }
+ inline void SetStateMask(long stateMask) { m_stateMask = stateMask; }
+ inline void GetText(const wxString& text) { m_text = text; }
+ inline void SetImage(int image) { m_image = image; }
+ inline void SetSelectedImage(int selImage) { m_selectedImage = selImage; }
+ inline void SetChildren(int children) { m_children = children; }
+ inline void SetData(long data) { m_data = data; }
+
DECLARE_DYNAMIC_CLASS(wxTreeItem)
-
- public:
- long m_mask;
- long m_itemId;
- long m_state;
- long m_stateMask;
- wxString m_text;
- int m_image;
- int m_selectedImage;
- int m_children;
- long m_data;
-
- wxTreeItem(void);
};
//-----------------------------------------------------------------------------
DECLARE_DYNAMIC_CLASS(wxTreeEvent)
public:
- wxTreeEvent(WXTYPE commandType = 0, int id = 0);
+ wxTreeEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
int m_code;
wxTreeItem m_item;
long m_oldItem;
wxPoint m_pointDrag;
+
+ inline long GetOldItem() const { return m_oldItem; }
+ inline wxTreeItem& GetItem() const { return (wxTreeItem&) m_item; }
+ inline wxPoint GetPoint() const { return m_pointDrag; }
+ inline void SetCode(int code) { m_code = code; }
+ inline int GetCode() const { return m_code; }
};
typedef void (wxEvtHandler::*wxTreeEventFunction)(wxTreeEvent&);
-#define EVT_TREE_BEGIN_DRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL },
-#define EVT_TREE_BEGIN_RDRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_RDRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL },
-#define EVT_TREE_BEGIN_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL },
-#define EVT_TREE_END_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_END_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL },
-#define EVT_TREE_DELETE_ITEM(id, fn) { wxEVT_COMMAND_TREE_DELETE_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL },
-#define EVT_TREE_GET_INFO(id, fn) { wxEVT_COMMAND_TREE_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL },
-#define EVT_TREE_SET_INFO(id, fn) { wxEVT_COMMAND_TREE_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL },
-#define EVT_TREE_ITEM_EXPANDED(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL },
-#define EVT_TREE_ITEM_EXPANDING(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL },
-#define EVT_TREE_SEL_CHANGED(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL },
-#define EVT_TREE_SEL_CHANGING(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL },
-#define EVT_TREE_KEY_DOWN(id, fn) { wxEVT_COMMAND_TREE_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL },
+#define EVT_TREE_BEGIN_DRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
+#define EVT_TREE_BEGIN_RDRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_RDRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
+#define EVT_TREE_BEGIN_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
+#define EVT_TREE_END_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_END_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
+#define EVT_TREE_DELETE_ITEM(id, fn) { wxEVT_COMMAND_TREE_DELETE_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
+#define EVT_TREE_GET_INFO(id, fn) { wxEVT_COMMAND_TREE_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
+#define EVT_TREE_SET_INFO(id, fn) { wxEVT_COMMAND_TREE_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
+#define EVT_TREE_ITEM_EXPANDED(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
+#define EVT_TREE_ITEM_EXPANDING(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
+#define EVT_TREE_ITEM_COLLAPSED(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
+#define EVT_TREE_ITEM_COLLAPSING(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
+#define EVT_TREE_SEL_CHANGED(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
+#define EVT_TREE_SEL_CHANGING(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
+#define EVT_TREE_KEY_DOWN(id, fn) { wxEVT_COMMAND_TREE_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL },
//-----------------------------------------------------------------------------
// wxGenericTreeItem
//-----------------------------------------------------------------------------
-class WXDLLEXPORT wxGenericTreeItem: public wxObject
+class WXDLLEXPORT wxGenericTreeItem: public wxTreeItem
{
DECLARE_DYNAMIC_CLASS(wxGenericTreeItem)
-
- public:
- long m_itemId;
- long m_state;
- wxString m_text;
- int m_image;
- int m_selectedImage;
-// int m_children;
- bool m_hasChildren;
- long m_data;
+ public:
+ bool m_hasChildren,
+ m_isCollapsed;
int m_x,m_y;
int m_height,m_width;
wxList m_children;
wxGenericTreeItem *m_parent;
bool m_hasHilight;
-
- wxGenericTreeItem(void) {};
+
+ wxGenericTreeItem() {};
wxGenericTreeItem( wxGenericTreeItem *parent );
wxGenericTreeItem( wxGenericTreeItem *parent, const wxTreeItem& item, wxDC *dc );
void SetItem( const wxTreeItem &item, wxDC *dc );
void SetText( const wxString &text, wxDC *dc );
- void Reset(void);
+ void Reset();
void GetItem( wxTreeItem &item ) const;
void AddChild( const wxTreeItem &item );
- bool HasChildren(void);
- bool HasPlus(void);
- int NumberOfVisibleDescendents(void);
- int NumberOfVisibleChildren(void);
+ bool HasChildren();
+ bool HasPlus();
+ int NumberOfVisibleDescendents();
+ int NumberOfVisibleChildren();
wxGenericTreeItem *FindItem( long itemId ) const;
void AddChild( wxGenericTreeItem *child );
void SetCross( int x, int y );
void SendSelected( wxWindow *target );
void SendDelete( wxWindow *target );
void SendExpand( wxWindow *target );
+ void SendCollapse( wxWindow *target );
void SetHilight( bool set = TRUE );
- bool HasHilight(void);
+ bool HasHilight();
+ bool IsExpanded() const { return !m_isCollapsed; }
};
//-----------------------------------------------------------------------------
class wxTreeCtrl: public wxScrolledWindow
{
- DECLARE_DYNAMIC_CLASS(wxTreeCtrl)
+public:
+ wxTreeCtrl();
+ wxTreeCtrl(wxWindow *parent, const wxWindowID id = -1,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxTR_HAS_BUTTONS,
+ const wxString& name = "wxTreeCtrl" );
+ ~wxTreeCtrl();
+ bool Create(wxWindow *parent, const wxWindowID id = -1,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxTR_HAS_BUTTONS,
+ const wxString& name = "wxTreeCtrl");
+
+ int GetCount() const;
+ long InsertItem( long parent, const wxString& label, int image = -1,
+ int selImage = -1, long insertAfter = wxTREE_INSERT_LAST );
+ long InsertItem( long parent, wxTreeItem &info,
+ long insertAfter = wxTREE_INSERT_LAST );
+ void DeleteItem( long item );
+ void DeleteChildren( long item );
+ bool DeleteAllItems();
+ bool ExpandItem(long item) { return ExpandItem(item, wxTREE_EXPAND_EXPAND); }
+ bool CollapseItem(long item) { return ExpandItem(item, wxTREE_EXPAND_COLLAPSE); }
+ bool ToggleItem(long item) { return ExpandItem(item, wxTREE_EXPAND_TOGGLE); }
+ bool ExpandItem( long item, int action );
+
+ // is the item expanded now?
+ bool IsItemExpanded(long item)
+ {
+ wxGenericTreeItem *pItem = FindItem(item);
+ return pItem && (pItem->GetState() & wxTREE_STATE_EXPANDED);
+ }
+
+ bool GetItem( wxTreeItem &info ) const;
+ long GetItemData( long item ) const;
+ wxString GetItemText( long item ) const;
+ int GetItemImage(long item) const;
+ long GetParent( long item ) const;
+ long GetRootItem() const;
+ long GetChild(long item) const;
+ long GetNextItem(long item, int code) const;
+ long GetSelection() const;
+ bool SelectItem( long item );
+ bool ItemHasChildren( long item ) const;
+ void SetIndent( int indent );
+ int GetIndent() const;
+ bool SetItem( wxTreeItem &info );
+ bool SetItemData( long item, long data );
+ bool SetItemText( long item, const wxString &text );
+ void SetItemImage(long item, int image, int imageSel) const;
+ long HitTest( const wxPoint& point, int &flags );
- public:
-
- wxTreeCtrl(void);
- wxTreeCtrl(wxWindow *parent, const wxWindowID id = -1,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- const long style = wxTR_HAS_BUTTONS,
- const wxString& name = "wxTreeCtrl" );
- ~wxTreeCtrl(void);
- bool Create(wxWindow *parent, const wxWindowID id = -1,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- const long style = wxTR_HAS_BUTTONS,
- const wxString& name = "wxTreeCtrl");
-
- int GetCount(void) const;
- long InsertItem( const long parent, const wxString& label, const int image = -1,
- const int selImage = -1, const long insertAfter = wxTREE_INSERT_LAST );
- long InsertItem( const long parent, wxTreeItem &info, const long insertAfter = wxTREE_INSERT_LAST );
- bool DeleteAllItems(void);
- bool ExpandItem( const long item, const int action );
- bool GetItem( wxTreeItem &info ) const;
- long GetItemData( const long item ) const;
- wxString GetItemText( const long item ) const;
- long GetParent( const long item ) const;
- long GetRootItem(void) const;
- long GetSelection(void) const;
- bool SelectItem( const long item ) const;
- bool ItemHasChildren( const long item ) const;
- void SetIndent( const int indent );
- int GetIndent(void) const;
- bool SetItem( wxTreeItem &info );
- bool SetItemData( const long item, const long data );
- bool SetItemText( const long item, const wxString &text );
- long HitTest( const wxPoint& point, int &flags );
+ int GetItemState(long item, long stateMask) const;
+ bool SetItemState(long item, long state, long stateMask);
+
+ void AdjustMyScrollbars();
+ void PaintLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level, int &y );
+ void OnPaint( const wxPaintEvent &event );
+ void OnSetFocus( const wxFocusEvent &event );
+ void OnKillFocus( const wxFocusEvent &event );
+ void OnChar( wxKeyEvent &event );
+ void OnMouse( const wxMouseEvent &event );
+
+ wxImageList *GetImageList(int which = wxIMAGE_LIST_NORMAL) const;
+ void SetImageList(wxImageList *imageList, int which = wxIMAGE_LIST_NORMAL);
+
+private:
+ // set the selection to the specified item generating appropriate event(s)
+ void SelectItem(wxGenericTreeItem *item);
+
+ wxGenericTreeItem *m_anchor;
+ wxGenericTreeItem *m_current;
+ bool m_hasFocus;
+ int m_xScroll,m_yScroll;
+ int m_indent;
+ long m_lastId;
+ int m_lineHeight;
+ wxPen m_dottedPen;
+ bool m_isCreated;
+ wxBrush *m_hilightBrush;
+ wxImageList *m_imageList;
+ wxImageList *m_smallImageList;
+
+ void CalculateLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level, int &y );
+ void CalculatePositions();
+ wxGenericTreeItem *FindItem( long itemId ) const;
+ void RefreshLine( wxGenericTreeItem *item );
- void AdjustMyScrollbars(void);
- void PaintLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level, int &y );
- void OnPaint( const wxPaintEvent &event );
- void OnSetFocus( const wxFocusEvent &event );
- void OnKillFocus( const wxFocusEvent &event );
- void OnChar( wxKeyEvent &event );
- void OnMouse( const wxMouseEvent &event );
-
- private:
-
- wxGenericTreeItem *m_anchor;
- wxGenericTreeItem *m_current;
- bool m_hasFocus;
- int m_xScroll,m_yScroll;
- int m_indent;
- long m_lastId;
- int m_lineHeight;
- wxPen m_dottedPen;
- bool m_isCreated;
- wxPaintDC *m_dc;
- wxBrush *m_hilightBrush;
-
- void CalculateLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level, int &y );
- void CalculatePositions(void);
- wxGenericTreeItem *FindItem( const long itemId ) const;
- void RefreshLine( wxGenericTreeItem *item );
-
DECLARE_EVENT_TABLE()
+ DECLARE_DYNAMIC_CLASS(wxTreeCtrl)
};
#endif