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)
|
||||
|
||||
@@ -392,10 +411,10 @@ void MyTreeCtrl::GetItemsRecursively(const wxTreeItemId& idParent, long cookie)
|
||||
|
||||
// avoid repetition
|
||||
#define TREE_EVENT_HANDLER(name) \
|
||||
void MyTreeCtrl::name(wxTreeEvent& WXUNUSED(event)) \
|
||||
{ \
|
||||
void MyTreeCtrl::name(wxTreeEvent& WXUNUSED(event)) \
|
||||
{ \
|
||||
wxLogMessage(#name); \
|
||||
}
|
||||
}
|
||||
|
||||
TREE_EVENT_HANDLER(OnBeginDrag)
|
||||
TREE_EVENT_HANDLER(OnBeginRDrag)
|
||||
@@ -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