HitTest test added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2097 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -63,6 +63,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
 | 
			
		||||
    EVT_MENU(TreeTest_Recreate, MyFrame::OnRecreate)
 | 
			
		||||
    EVT_MENU(TreeTest_CollapseAndReset, MyFrame::OnCollapseAndReset)
 | 
			
		||||
    EVT_MENU(TreeTest_EnsureVisible, MyFrame::OnEnsureVisible)
 | 
			
		||||
    EVT_MENU(TreeTest_AddItem, MyFrame::OnAddItem)
 | 
			
		||||
END_EVENT_TABLE()
 | 
			
		||||
 | 
			
		||||
BEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl)
 | 
			
		||||
@@ -81,6 +82,7 @@ BEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl)
 | 
			
		||||
    EVT_TREE_SEL_CHANGING(TreeTest_Ctrl, MyTreeCtrl::OnSelChanging)
 | 
			
		||||
    EVT_TREE_KEY_DOWN(TreeTest_Ctrl, MyTreeCtrl::OnTreeKeyDown)
 | 
			
		||||
    EVT_TREE_ITEM_ACTIVATED(TreeTest_Ctrl, MyTreeCtrl::OnItemActivated)
 | 
			
		||||
    EVT_RIGHT_DCLICK(MyTreeCtrl::OnRMouseDClick)
 | 
			
		||||
END_EVENT_TABLE()
 | 
			
		||||
 | 
			
		||||
IMPLEMENT_APP(MyApp)
 | 
			
		||||
@@ -112,32 +114,37 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
 | 
			
		||||
 | 
			
		||||
    // Make a menubar
 | 
			
		||||
    wxMenu *file_menu = new wxMenu,
 | 
			
		||||
         *tree_menu = new wxMenu;
 | 
			
		||||
           *tree_menu = new wxMenu,
 | 
			
		||||
           *item_menu = new wxMenu;
 | 
			
		||||
 | 
			
		||||
    file_menu->Append(TreeTest_About, "&About...");
 | 
			
		||||
    file_menu->AppendSeparator();
 | 
			
		||||
    file_menu->Append(TreeTest_Quit, "E&xit");
 | 
			
		||||
 | 
			
		||||
  tree_menu->Append(TreeTest_Dump, "D&ump tree items");
 | 
			
		||||
    tree_menu->Append(TreeTest_Recreate, "&Recreate the tree");
 | 
			
		||||
    tree_menu->Append(TreeTest_CollapseAndReset, "C&ollapse and reset");
 | 
			
		||||
    tree_menu->AppendSeparator();
 | 
			
		||||
    tree_menu->Append(TreeTest_AddItem, "Append a &new item");
 | 
			
		||||
    tree_menu->Append(TreeTest_Delete, "&Delete this item");
 | 
			
		||||
    tree_menu->Append(TreeTest_DeleteChildren, "Delete &children");
 | 
			
		||||
    tree_menu->Append(TreeTest_DeleteAll, "Delete &all items");
 | 
			
		||||
    tree_menu->AppendSeparator();
 | 
			
		||||
    tree_menu->Append(TreeTest_Sort, "Sort children of current item");
 | 
			
		||||
    tree_menu->Append(TreeTest_SortRev, "Sort in reversed order");
 | 
			
		||||
  tree_menu->Append(TreeTest_Rename, "Rename item...");
 | 
			
		||||
  tree_menu->AppendSeparator();
 | 
			
		||||
  tree_menu->Append(TreeTest_Bold, "Make item &bold");
 | 
			
		||||
  tree_menu->Append(TreeTest_UnBold, "Make item ¬ bold");
 | 
			
		||||
    tree_menu->AppendSeparator();
 | 
			
		||||
    tree_menu->Append(TreeTest_EnsureVisible, "Make the last item &visible");
 | 
			
		||||
 | 
			
		||||
    item_menu->Append(TreeTest_Dump, "&Dump item children");
 | 
			
		||||
    item_menu->AppendSeparator();
 | 
			
		||||
    item_menu->Append(TreeTest_Rename, "&Rename item...");
 | 
			
		||||
    item_menu->AppendSeparator();
 | 
			
		||||
    item_menu->Append(TreeTest_Bold, "Make item &bold");
 | 
			
		||||
    item_menu->Append(TreeTest_UnBold, "Make item ¬ bold");
 | 
			
		||||
 | 
			
		||||
    wxMenuBar *menu_bar = new wxMenuBar;
 | 
			
		||||
    menu_bar->Append(file_menu, "&File");
 | 
			
		||||
    menu_bar->Append(tree_menu, "&Tree");
 | 
			
		||||
    menu_bar->Append(item_menu, "&Item");
 | 
			
		||||
    SetMenuBar(menu_bar);
 | 
			
		||||
 | 
			
		||||
    m_treeCtrl = new MyTreeCtrl(this, TreeTest_Ctrl,
 | 
			
		||||
@@ -277,6 +284,18 @@ void MyFrame::OnEnsureVisible(wxCommandEvent& event)
 | 
			
		||||
    m_treeCtrl->DoEnsureVisible();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MyFrame::OnAddItem(wxCommandEvent& WXUNUSED(event))
 | 
			
		||||
{
 | 
			
		||||
    static int s_num = 0;
 | 
			
		||||
 | 
			
		||||
    wxString text;
 | 
			
		||||
    text.Printf("Item #%d", ++s_num);
 | 
			
		||||
 | 
			
		||||
    m_treeCtrl->AppendItem(m_treeCtrl->GetRootItem(),
 | 
			
		||||
                           text,
 | 
			
		||||
                           MyTreeCtrl::TreeCtrlIcon_File);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MyTreeCtrl implementation
 | 
			
		||||
IMPLEMENT_DYNAMIC_CLASS(MyTreeCtrl, wxTreeCtrl)
 | 
			
		||||
 | 
			
		||||
@@ -445,6 +464,19 @@ void MyTreeCtrl::OnItemActivated(wxTreeEvent&WXUNUSED(event))
 | 
			
		||||
    wxLogMessage("OnItemActivated");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MyTreeCtrl::OnRMouseDClick(wxMouseEvent& event)
 | 
			
		||||
{
 | 
			
		||||
    wxTreeItemId id = HitTest(event.GetPosition());
 | 
			
		||||
    if ( !id )
 | 
			
		||||
        wxLogMessage("No item under mouse");
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        MyTreeItemData *item = (MyTreeItemData *)GetItemData(id);
 | 
			
		||||
        if ( item )
 | 
			
		||||
            wxLogMessage("Item '%s' under mouse", item->GetDesc());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline const char *Bool2String(bool b)
 | 
			
		||||
{
 | 
			
		||||
    return b ? "" : "not ";
 | 
			
		||||
 
 | 
			
		||||
@@ -22,6 +22,7 @@ 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;
 | 
			
		||||
@@ -57,19 +58,18 @@ public:
 | 
			
		||||
    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 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); }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
  virtual int OnCompareItems(const wxTreeItemId& item1,
 | 
			
		||||
                             const wxTreeItemId& item2);
 | 
			
		||||
    virtual int OnCompareItems(const wxTreeItemId& i1, const wxTreeItemId& i2);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    void AddItemsRecursively(const wxTreeItemId& idParent,
 | 
			
		||||
@@ -100,6 +100,7 @@ public:
 | 
			
		||||
    // menu callbacks
 | 
			
		||||
    void OnQuit(wxCommandEvent& event);
 | 
			
		||||
    void OnAbout(wxCommandEvent& event);
 | 
			
		||||
 | 
			
		||||
    void OnDump(wxCommandEvent& event);
 | 
			
		||||
    void OnDelete(wxCommandEvent& event);
 | 
			
		||||
    void OnDeleteChildren(wxCommandEvent& event);
 | 
			
		||||
@@ -116,6 +117,8 @@ public:
 | 
			
		||||
    void OnSort(wxCommandEvent& event) { DoSort(); }
 | 
			
		||||
    void OnSortRev(wxCommandEvent& event) { DoSort(TRUE); }
 | 
			
		||||
 | 
			
		||||
    void OnAddItem(wxCommandEvent& event);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    void DoSort(bool reverse = FALSE);
 | 
			
		||||
 | 
			
		||||
@@ -143,5 +146,6 @@ enum
 | 
			
		||||
    TreeTest_Recreate,
 | 
			
		||||
    TreeTest_CollapseAndReset,
 | 
			
		||||
    TreeTest_EnsureVisible,
 | 
			
		||||
    TreeTest_AddItem,
 | 
			
		||||
    TreeTest_Ctrl = 100
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user