]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/treectrl.h
Fixed a small wxDialog thing
[wxWidgets.git] / include / wx / generic / treectrl.h
index 03cee90cff159dd1bc10b5eceaf7aaf88997ae12..8e9af202975f69432d9d9b4e0b119a9b8174bc1f 100644 (file)
@@ -185,20 +185,20 @@ class WXDLLEXPORT wxTreeEvent: public wxCommandEvent
 
 typedef void (wxEvtHandler::*wxTreeEventFunction)(wxTreeEvent&);
 
 
 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_ITEM_COLLAPSED(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL },
-#define EVT_TREE_ITEM_COLLAPSING(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSING, 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
 
 //-----------------------------------------------------------------------------
 // wxGenericTreeItem
@@ -276,15 +276,28 @@ public:
   void DeleteItem( long item );
   void DeleteChildren( long item );
   bool DeleteAllItems();
   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 );
   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;
   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;
   long GetSelection() const;
-  bool SelectItem( long item ) const;
+  bool SelectItem( long item );
   bool ItemHasChildren( long item ) const;
   void SetIndent( int indent );
   int GetIndent() const;
   bool ItemHasChildren( long item ) const;
   void SetIndent( int indent );
   int GetIndent() const;
@@ -293,6 +306,9 @@ public:
   bool SetItemText( long item, const wxString &text );
   void SetItemImage(long item, int image, int imageSel) const;
   long HitTest( const wxPoint& point, int &flags );
   bool SetItemText( long item, const wxString &text );
   void SetItemImage(long item, int image, int imageSel) const;
   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 AdjustMyScrollbars();
   void PaintLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level, int &y );
@@ -302,10 +318,13 @@ public:
   void OnChar( wxKeyEvent &event );
   void OnMouse( const wxMouseEvent &event );
 
   void OnChar( wxKeyEvent &event );
   void OnMouse( const wxMouseEvent &event );
 
-  void SetImageList(wxImageList *imageList) { m_imageList = imageList; }
-  wxImageList *GetImageList() const { return m_imageList; }
+  wxImageList *GetImageList(int which = wxIMAGE_LIST_NORMAL) const;
+  void SetImageList(wxImageList *imageList, int which = wxIMAGE_LIST_NORMAL);
 
 private:
 
 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;
   wxGenericTreeItem   *m_anchor;
   wxGenericTreeItem   *m_current;
   bool                 m_hasFocus;
@@ -315,9 +334,9 @@ private:
   int                  m_lineHeight;
   wxPen                m_dottedPen;
   bool                 m_isCreated;
   int                  m_lineHeight;
   wxPen                m_dottedPen;
   bool                 m_isCreated;
-  wxPaintDC           *m_dc;
   wxBrush             *m_hilightBrush;
   wxImageList         *m_imageList;
   wxBrush             *m_hilightBrush;
   wxImageList         *m_imageList;
+  wxImageList         *m_smallImageList;
 
   void CalculateLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level, int &y );
   void CalculatePositions();
 
   void CalculateLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level, int &y );
   void CalculatePositions();