Fixed Reparent (added heaps of debug code for this) Small mods to glcanvas git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3799 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			190 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        treetest.h
 | |
| // Purpose:     wxTreeCtrl sample
 | |
| // Author:      Julian Smart
 | |
| // Modified by:
 | |
| // Created:     04/01/98
 | |
| // RCS-ID:      $Id$
 | |
| // Copyright:   (c) Julian Smart and Markus Holzem
 | |
| // Licence:     wxWindows license
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| // Define a new application type
 | |
| class MyApp : public wxApp
 | |
| {
 | |
| public:
 | |
|     bool OnInit();
 | |
| };
 | |
| 
 | |
| class MyTreeItemData : public wxTreeItemData
 | |
| {
 | |
| public:
 | |
|     MyTreeItemData(const wxString& desc) : m_desc(desc) { }
 | |
| 
 | |
|     void ShowInfo(wxTreeCtrl *tree);
 | |
|     const char *GetDesc() const { return m_desc.c_str(); }
 | |
| 
 | |
| private:
 | |
|     wxString m_desc;
 | |
| };
 | |
| 
 | |
| class MyTreeCtrl : public wxTreeCtrl
 | |
| {
 | |
| public:
 | |
|     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;
 | |
|     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();
 | |
| 
 | |
|     // 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); }
 | |
| 
 | |
|     void OnAddItem(wxCommandEvent& event);
 | |
| 
 | |
|     void OnIncIndent(wxCommandEvent& event);
 | |
|     void OnDecIndent(wxCommandEvent& event);
 | |
| 
 | |
|     void OnIncSpacing(wxCommandEvent& event);
 | |
|     void OnDecSpacing(wxCommandEvent& event);
 | |
| 
 | |
|     void OnToggleIcon(wxCommandEvent& event);
 | |
| 
 | |
| private:
 | |
|     void DoSort(bool reverse = FALSE);
 | |
| 
 | |
|     MyTreeCtrl *m_treeCtrl;
 | |
| 
 | |
|     void DoSetBold(bool bold = TRUE);
 | |
| 
 | |
|     DECLARE_EVENT_TABLE()
 | |
| };
 | |
| 
 | |
| // menu and control ids
 | |
| enum
 | |
| {
 | |
|     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_IncIndent,
 | |
|     TreeTest_DecIndent,
 | |
|     TreeTest_IncSpacing,
 | |
|     TreeTest_DecSpacing,
 | |
|     TreeTest_ToggleIcon,
 | |
|     TreeTest_Select,
 | |
|     TreeTest_Unselect,
 | |
|     TreeTest_Ctrl = 1000
 | |
| };
 |