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:
Vadim Zeitlin
1999-04-12 11:48:06 +00:00
parent a0fdaceeb1
commit 5f939e78ef
2 changed files with 324 additions and 288 deletions

View File

@@ -63,6 +63,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(TreeTest_Recreate, MyFrame::OnRecreate) EVT_MENU(TreeTest_Recreate, MyFrame::OnRecreate)
EVT_MENU(TreeTest_CollapseAndReset, MyFrame::OnCollapseAndReset) EVT_MENU(TreeTest_CollapseAndReset, MyFrame::OnCollapseAndReset)
EVT_MENU(TreeTest_EnsureVisible, MyFrame::OnEnsureVisible) EVT_MENU(TreeTest_EnsureVisible, MyFrame::OnEnsureVisible)
EVT_MENU(TreeTest_AddItem, MyFrame::OnAddItem)
END_EVENT_TABLE() END_EVENT_TABLE()
BEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl) BEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl)
@@ -81,6 +82,7 @@ BEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl)
EVT_TREE_SEL_CHANGING(TreeTest_Ctrl, MyTreeCtrl::OnSelChanging) EVT_TREE_SEL_CHANGING(TreeTest_Ctrl, MyTreeCtrl::OnSelChanging)
EVT_TREE_KEY_DOWN(TreeTest_Ctrl, MyTreeCtrl::OnTreeKeyDown) EVT_TREE_KEY_DOWN(TreeTest_Ctrl, MyTreeCtrl::OnTreeKeyDown)
EVT_TREE_ITEM_ACTIVATED(TreeTest_Ctrl, MyTreeCtrl::OnItemActivated) EVT_TREE_ITEM_ACTIVATED(TreeTest_Ctrl, MyTreeCtrl::OnItemActivated)
EVT_RIGHT_DCLICK(MyTreeCtrl::OnRMouseDClick)
END_EVENT_TABLE() END_EVENT_TABLE()
IMPLEMENT_APP(MyApp) IMPLEMENT_APP(MyApp)
@@ -112,32 +114,37 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
// Make a menubar // Make a menubar
wxMenu *file_menu = new wxMenu, 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->Append(TreeTest_About, "&About...");
file_menu->AppendSeparator(); file_menu->AppendSeparator();
file_menu->Append(TreeTest_Quit, "E&xit"); 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_Recreate, "&Recreate the tree");
tree_menu->Append(TreeTest_CollapseAndReset, "C&ollapse and reset"); tree_menu->Append(TreeTest_CollapseAndReset, "C&ollapse and reset");
tree_menu->AppendSeparator(); tree_menu->AppendSeparator();
tree_menu->Append(TreeTest_AddItem, "Append a &new item");
tree_menu->Append(TreeTest_Delete, "&Delete this item"); tree_menu->Append(TreeTest_Delete, "&Delete this item");
tree_menu->Append(TreeTest_DeleteChildren, "Delete &children"); tree_menu->Append(TreeTest_DeleteChildren, "Delete &children");
tree_menu->Append(TreeTest_DeleteAll, "Delete &all items"); tree_menu->Append(TreeTest_DeleteAll, "Delete &all items");
tree_menu->AppendSeparator(); tree_menu->AppendSeparator();
tree_menu->Append(TreeTest_Sort, "Sort children of current item"); tree_menu->Append(TreeTest_Sort, "Sort children of current item");
tree_menu->Append(TreeTest_SortRev, "Sort in reversed order"); 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 &not bold");
tree_menu->AppendSeparator(); tree_menu->AppendSeparator();
tree_menu->Append(TreeTest_EnsureVisible, "Make the last item &visible"); 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 &not bold");
wxMenuBar *menu_bar = new wxMenuBar; wxMenuBar *menu_bar = new wxMenuBar;
menu_bar->Append(file_menu, "&File"); menu_bar->Append(file_menu, "&File");
menu_bar->Append(tree_menu, "&Tree"); menu_bar->Append(tree_menu, "&Tree");
menu_bar->Append(item_menu, "&Item");
SetMenuBar(menu_bar); SetMenuBar(menu_bar);
m_treeCtrl = new MyTreeCtrl(this, TreeTest_Ctrl, m_treeCtrl = new MyTreeCtrl(this, TreeTest_Ctrl,
@@ -277,6 +284,18 @@ void MyFrame::OnEnsureVisible(wxCommandEvent& event)
m_treeCtrl->DoEnsureVisible(); 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 // MyTreeCtrl implementation
IMPLEMENT_DYNAMIC_CLASS(MyTreeCtrl, wxTreeCtrl) IMPLEMENT_DYNAMIC_CLASS(MyTreeCtrl, wxTreeCtrl)
@@ -445,6 +464,19 @@ void MyTreeCtrl::OnItemActivated(wxTreeEvent&WXUNUSED(event))
wxLogMessage("OnItemActivated"); 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) static inline const char *Bool2String(bool b)
{ {
return b ? "" : "not "; return b ? "" : "not ";

View File

@@ -22,6 +22,7 @@ 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: private:
wxString m_desc; wxString m_desc;
@@ -57,19 +58,18 @@ public:
void OnSelChanging(wxTreeEvent& event); void OnSelChanging(wxTreeEvent& event);
void OnTreeKeyDown(wxTreeEvent& event); void OnTreeKeyDown(wxTreeEvent& event);
void OnItemActivated(wxTreeEvent& event); void OnItemActivated(wxTreeEvent& event);
void OnRMouseDClick(wxMouseEvent& event);
void GetItemsRecursively(const wxTreeItemId& idParent, long cookie); void GetItemsRecursively(const wxTreeItemId& idParent, long cookie);
void AddTestItemsToTree(size_t numChildren, void AddTestItemsToTree(size_t numChildren, size_t depth);
size_t depth);
void DoSortChildren(const wxTreeItemId& item, bool reverse = FALSE) void DoSortChildren(const wxTreeItemId& item, bool reverse = FALSE)
{ m_reverseSort = reverse; wxTreeCtrl::SortChildren(item); } { m_reverseSort = reverse; wxTreeCtrl::SortChildren(item); }
void DoEnsureVisible() { EnsureVisible(m_lastItem); } void DoEnsureVisible() { EnsureVisible(m_lastItem); }
protected: protected:
virtual int OnCompareItems(const wxTreeItemId& item1, virtual int OnCompareItems(const wxTreeItemId& i1, const wxTreeItemId& i2);
const wxTreeItemId& item2);
private: private:
void AddItemsRecursively(const wxTreeItemId& idParent, void AddItemsRecursively(const wxTreeItemId& idParent,
@@ -100,6 +100,7 @@ public:
// menu callbacks // menu callbacks
void OnQuit(wxCommandEvent& event); void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event); void OnAbout(wxCommandEvent& event);
void OnDump(wxCommandEvent& event); void OnDump(wxCommandEvent& event);
void OnDelete(wxCommandEvent& event); void OnDelete(wxCommandEvent& event);
void OnDeleteChildren(wxCommandEvent& event); void OnDeleteChildren(wxCommandEvent& event);
@@ -116,6 +117,8 @@ public:
void OnSort(wxCommandEvent& event) { DoSort(); } void OnSort(wxCommandEvent& event) { DoSort(); }
void OnSortRev(wxCommandEvent& event) { DoSort(TRUE); } void OnSortRev(wxCommandEvent& event) { DoSort(TRUE); }
void OnAddItem(wxCommandEvent& event);
private: private:
void DoSort(bool reverse = FALSE); void DoSort(bool reverse = FALSE);
@@ -143,5 +146,6 @@ enum
TreeTest_Recreate, TreeTest_Recreate,
TreeTest_CollapseAndReset, TreeTest_CollapseAndReset,
TreeTest_EnsureVisible, TreeTest_EnsureVisible,
TreeTest_AddItem,
TreeTest_Ctrl = 100 TreeTest_Ctrl = 100
}; };