]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/treectrl/treetest.h
several mingw32 compilation fixes
[wxWidgets.git] / samples / treectrl / treetest.h
index 8ca521827db78dd01d95bf5506291c672a629636..0c0cd5739568b5b76265b694fdd5e7bd1972ab39 100644 (file)
 class MyApp : public wxApp
 {
 public:
-  bool OnInit();
+    bool OnInit();
 };
 
 class MyTreeItemData : public wxTreeItemData
 {
 public:
-  MyTreeItemData(const wxString& desc) : m_desc(desc) { }
+    MyTreeItemData(const wxString& desc) : m_desc(desc) { }
 
-  void ShowInfo(wxTreeCtrl *tree);
+    void ShowInfo(wxTreeCtrl *tree);
+    const char *GetDesc() const { return m_desc.c_str(); }
 
 private:
-  wxString m_desc;
+    wxString m_desc;
 };
 
 class MyTreeCtrl : public wxTreeCtrl
 {
 public:
-  enum
-  {
-    TreeCtrlIcon_File,
-    TreeCtrlIcon_Folder
-  };
-
-  MyTreeCtrl(wxWindow *parent, const wxWindowID id,
-             const wxPoint& pos, const wxSize& size,
-             long style);
-  virtual ~MyTreeCtrl();
-
-  void OnBeginDrag(wxTreeEvent& event);
-  void OnBeginRDrag(wxTreeEvent& event);
-  void OnBeginLabelEdit(wxTreeEvent& event);
-  void OnEndLabelEdit(wxTreeEvent& event);
-  void OnDeleteItem(wxTreeEvent& event);
-  void OnGetInfo(wxTreeEvent& event);
-  void OnSetInfo(wxTreeEvent& event);
-  void OnItemExpanded(wxTreeEvent& event);
-  void OnItemExpanding(wxTreeEvent& event);
-  void OnItemCollapsed(wxTreeEvent& event);
-  void OnItemCollapsing(wxTreeEvent& event);
-  void OnSelChanged(wxTreeEvent& event);
-  void OnSelChanging(wxTreeEvent& event);
-  void OnTreeKeyDown(wxTreeEvent& event);
-  void OnItemActivated(wxTreeEvent& event);
-
-  void GetItemsRecursively(const wxTreeItemId& idParent, long cookie);
-
-  void AddTestItemsToTree(size_t numChildren,
-                          size_t depth);
+    enum
+    {
+        TreeCtrlIcon_File,
+        TreeCtrlIcon_FileSelected,
+        TreeCtrlIcon_Folder,
+        TreeCtrlIcon_FolderSelected,
+        TreeCtrlIcon_FolderOpened
+    };
+
+    MyTreeCtrl() { }
+    MyTreeCtrl(wxWindow *parent, const wxWindowID id,
+               const wxPoint& pos, const wxSize& size,
+               long style);
+    virtual ~MyTreeCtrl();
+
+    void OnBeginDrag(wxTreeEvent& event);
+    void OnBeginRDrag(wxTreeEvent& event);
+    void OnBeginLabelEdit(wxTreeEvent& event);
+    void OnEndLabelEdit(wxTreeEvent& event);
+    void OnDeleteItem(wxTreeEvent& event);
+    void OnGetInfo(wxTreeEvent& event);
+    void OnSetInfo(wxTreeEvent& event);
+    void OnItemExpanded(wxTreeEvent& event);
+    void OnItemExpanding(wxTreeEvent& event);
+    void OnItemCollapsed(wxTreeEvent& event);
+    void OnItemCollapsing(wxTreeEvent& event);
+    void OnSelChanged(wxTreeEvent& event);
+    void OnSelChanging(wxTreeEvent& event);
+    void OnTreeKeyDown(wxTreeEvent& event);
+    void OnItemActivated(wxTreeEvent& event);
+    void OnRMouseDClick(wxMouseEvent& event);
+
+    void GetItemsRecursively(const wxTreeItemId& idParent, long cookie);
+
+    void AddTestItemsToTree(size_t numChildren, size_t depth);
+
+    void DoSortChildren(const wxTreeItemId& item, bool reverse = FALSE)
+        { m_reverseSort = reverse; wxTreeCtrl::SortChildren(item); }
+    void DoEnsureVisible() { EnsureVisible(m_lastItem); }
+
+    void DoToggleIcon(const wxTreeItemId& item);
+
+protected:
+    virtual int OnCompareItems(const wxTreeItemId& i1, const wxTreeItemId& i2);
+
+    // is this the test item which we use in several event handlers?
+    bool IsTestItem(const wxTreeItemId& item)
+    {
+        // the test item is the first child folder
+        return GetParent(item) == GetRootItem() && !GetPrevSibling(item);
+    }
 
 private:
-  void AddItemsRecursively(const wxTreeItemId& idParent,
-                           size_t nChildren,
-                           size_t depth,
-                           size_t folder);
-
-  wxImageList *m_imageListNormal;
-
-  DECLARE_EVENT_TABLE()
+    void AddItemsRecursively(const wxTreeItemId& idParent,
+                             size_t nChildren,
+                             size_t depth,
+                             size_t folder);
+
+    wxImageList *m_imageListNormal;
+    bool         m_reverseSort;           // flag for OnCompareItems
+    wxTreeItemId m_lastItem;              // for OnEnsureVisible()
+
+    // NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS()
+    //     if you want your overloaded OnCompareItems() to be called.
+    //     OTOH, if you don't want it you may omit the next line - this will
+    //     make default (alphabetical) sorting much faster under wxMSW.
+    DECLARE_DYNAMIC_CLASS(MyTreeCtrl)
+    DECLARE_EVENT_TABLE()
 };
 
 // Define a new frame type
 class MyFrame: public wxFrame
 {
 public:
-  // ctor and dtor
-  MyFrame(const wxString& title, int x, int y, int w, int h);
-  virtual ~MyFrame();
+    // ctor and dtor
+    MyFrame(const wxString& title, int x, int y, int w, int h);
+    virtual ~MyFrame();
+
+    // menu callbacks
+    void OnQuit(wxCommandEvent& event);
+    void OnAbout(wxCommandEvent& event);
+
+    void OnDump(wxCommandEvent& event);
+#ifndef NO_MULTIPLE_SELECTION
+    void OnDumpSelected(wxCommandEvent& event);
+    void OnSelect(wxCommandEvent& event);
+    void OnUnselect(wxCommandEvent& event);
+#endif // NO_MULTIPLE_SELECTION
+    void OnDelete(wxCommandEvent& event);
+    void OnDeleteChildren(wxCommandEvent& event);
+    void OnDeleteAll(wxCommandEvent& event);
+    void OnRecreate(wxCommandEvent& event);
+    void OnCollapseAndReset(wxCommandEvent& event);
+
+    void OnSetBold(wxCommandEvent& WXUNUSED(event)) { DoSetBold(TRUE); }
+    void OnClearBold(wxCommandEvent& WXUNUSED(event)) { DoSetBold(FALSE); }
+
+    void OnEnsureVisible(wxCommandEvent& event);
+
+    void OnCount(wxCommandEvent& event);
+    void OnCountRec(wxCommandEvent& event);
+
+    void OnRename(wxCommandEvent& event);
+    void OnSort(wxCommandEvent& event) { DoSort(); }
+    void OnSortRev(wxCommandEvent& event) { DoSort(TRUE); }
 
-  // menu callbacks
-  void OnQuit(wxCommandEvent& event);
-  void OnAbout(wxCommandEvent& event);
-  void OnDump(wxCommandEvent& event);
-  void OnDelete(wxCommandEvent& event);
-  void OnDeleteAll(wxCommandEvent& event);
-  void OnRecreate(wxCommandEvent& event);
+    void OnAddItem(wxCommandEvent& event);
+    void OnInsertItem(wxCommandEvent& event);
 
-  void OnSetBold(wxCommandEvent& WXUNUSED(event)) { DoSetBold(TRUE); }
-  void OnClearBold(wxCommandEvent& WXUNUSED(event)) { DoSetBold(FALSE); }
+    void OnIncIndent(wxCommandEvent& event);
+    void OnDecIndent(wxCommandEvent& event);
+
+    void OnIncSpacing(wxCommandEvent& event);
+    void OnDecSpacing(wxCommandEvent& event);
+
+    void OnToggleIcon(wxCommandEvent& event);
 
 private:
-  MyTreeCtrl *m_treeCtrl;
+    void DoSort(bool reverse = FALSE);
 
-  void DoSetBold(bool bold = TRUE);
+    MyTreeCtrl *m_treeCtrl;
 
-  DECLARE_EVENT_TABLE()
-};
+    void DoSetBold(bool bold = TRUE);
 
-// menu and control ids
-enum
-{
-  TreeTest_Quit,
-  TreeTest_About,
-  TreeTest_Dump,
-  TreeTest_Bold,
-  TreeTest_UnBold,
-  TreeTest_Delete,
-  TreeTest_DeleteAll,
-  TreeTest_Recreate,
-  TreeTest_Ctrl = 100
+    DECLARE_EVENT_TABLE()
 };
 
+// menu and control ids
 enum
 {
-  TreeCtrlIcon_File,
-  TreeCtrlIcon_Folder
+    TreeTest_Quit,
+    TreeTest_About,
+    TreeTest_Dump,
+    TreeTest_DumpSelected,
+    TreeTest_Count,
+    TreeTest_CountRec,
+    TreeTest_Sort,
+    TreeTest_SortRev,
+    TreeTest_Bold,
+    TreeTest_UnBold,
+    TreeTest_Rename,
+    TreeTest_Delete,
+    TreeTest_DeleteChildren,
+    TreeTest_DeleteAll,
+    TreeTest_Recreate,
+    TreeTest_CollapseAndReset,
+    TreeTest_EnsureVisible,
+    TreeTest_AddItem,
+    TreeTest_InsertItem,
+    TreeTest_IncIndent,
+    TreeTest_DecIndent,
+    TreeTest_IncSpacing,
+    TreeTest_DecSpacing,
+    TreeTest_ToggleIcon,
+    TreeTest_Select,
+    TreeTest_Unselect,
+    TreeTest_Ctrl = 1000
 };