wxMSW::wxTreeCtrl has multiple selection too (somewhat documented)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -33,12 +33,13 @@
|
||||
|
||||
#include "math.h"
|
||||
|
||||
#include "treetest.h"
|
||||
|
||||
#ifdef __WXMSW__
|
||||
#define NO_ADVANCED_FEATURES
|
||||
//#define NO_MULTIPLE_SELECTION
|
||||
#define NO_VARIABLE_HEIGHT
|
||||
#endif
|
||||
|
||||
#include "treetest.h"
|
||||
|
||||
// under Windows the icons are in the .rc file
|
||||
#ifndef __WXMSW__
|
||||
#include "icon1.xpm"
|
||||
@@ -59,7 +60,11 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||
EVT_MENU(TreeTest_Quit, MyFrame::OnQuit)
|
||||
EVT_MENU(TreeTest_About, MyFrame::OnAbout)
|
||||
EVT_MENU(TreeTest_Dump, MyFrame::OnDump)
|
||||
EVT_MENU(TreeTest_Dump_Selected, MyFrame::OnDumpSelected)
|
||||
#ifndef NO_MULTIPLE_SELECTION
|
||||
EVT_MENU(TreeTest_DumpSelected, MyFrame::OnDumpSelected)
|
||||
EVT_MENU(TreeTest_Select, MyFrame::OnSelect)
|
||||
EVT_MENU(TreeTest_Unselect, MyFrame::OnUnselect)
|
||||
#endif // NO_MULTIPLE_SELECTION
|
||||
EVT_MENU(TreeTest_Rename, MyFrame::OnRename)
|
||||
EVT_MENU(TreeTest_Sort, MyFrame::OnSort)
|
||||
EVT_MENU(TreeTest_SortRev, MyFrame::OnSortRev)
|
||||
@@ -76,6 +81,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||
EVT_MENU(TreeTest_DecIndent, MyFrame::OnDecIndent)
|
||||
EVT_MENU(TreeTest_IncSpacing, MyFrame::OnIncSpacing)
|
||||
EVT_MENU(TreeTest_DecSpacing, MyFrame::OnDecSpacing)
|
||||
EVT_MENU(TreeTest_ToggleIcon, MyFrame::OnToggleIcon)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
BEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl)
|
||||
@@ -153,14 +159,20 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
|
||||
tree_menu->Append(TreeTest_DecSpacing, "Reduce spacing by 5 points\tCtrl-R");
|
||||
|
||||
item_menu->Append(TreeTest_Dump, "&Dump item children");
|
||||
#ifndef NO_ADVANCED_FEATURES
|
||||
item_menu->Append(TreeTest_Dump_Selected, "Dump selected items\tAlt-S");
|
||||
#endif
|
||||
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");
|
||||
item_menu->AppendSeparator();
|
||||
item_menu->Append(TreeTest_ToggleIcon, "Toggle the items &icon");
|
||||
|
||||
#ifndef NO_MULTIPLE_SELECTION
|
||||
item_menu->AppendSeparator();
|
||||
item_menu->Append(TreeTest_DumpSelected, "Dump selected items\tAlt-D");
|
||||
item_menu->Append(TreeTest_Select, "Select current item\tAlt-S");
|
||||
item_menu->Append(TreeTest_Unselect, "Unselect everything\tAlt-U");
|
||||
#endif
|
||||
|
||||
wxMenuBar *menu_bar = new wxMenuBar;
|
||||
menu_bar->Append(file_menu, "&File");
|
||||
@@ -172,10 +184,8 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
wxTR_HAS_BUTTONS |
|
||||
wxTR_EDIT_LABELS |
|
||||
#ifndef NO_ADVANCED_FEATURES
|
||||
wxTR_MULTIPLE |
|
||||
wxTR_HAS_VARIABLE_ROW_HEIGHT |
|
||||
#endif
|
||||
wxSUNKEN_BORDER);
|
||||
wxTextCtrl *textCtrl = new wxTextCtrl(this, -1, "",
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
@@ -268,20 +278,33 @@ void MyFrame::OnDump(wxCommandEvent& WXUNUSED(event))
|
||||
m_treeCtrl->GetItemsRecursively(root, -1);
|
||||
}
|
||||
|
||||
#ifndef NO_MULTIPLE_SELECTION
|
||||
|
||||
void MyFrame::OnDumpSelected(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
#ifndef NO_ADVANCED_FEATURES
|
||||
wxArrayTreeItemIds array;
|
||||
wxArrayTreeItemIds array;
|
||||
|
||||
m_treeCtrl->GetSelections(array);
|
||||
size_t nos=array.Count();
|
||||
wxLogMessage(wxString("items selected : ")<< (int)nos);
|
||||
size_t count = m_treeCtrl->GetSelections(array);
|
||||
wxLogMessage(_T("%u items selected"), count);
|
||||
|
||||
for (size_t n=0; n<nos; ++n)
|
||||
wxLogMessage(m_treeCtrl->GetItemText(array.Item(n)));
|
||||
#endif
|
||||
for ( size_t n = 0; n < count; n++ )
|
||||
{
|
||||
wxLogMessage("\t%s", m_treeCtrl->GetItemText(array.Item(n)).c_str());
|
||||
}
|
||||
}
|
||||
|
||||
void MyFrame::OnSelect(wxCommandEvent& event)
|
||||
{
|
||||
m_treeCtrl->SelectItem(m_treeCtrl->GetSelection());
|
||||
}
|
||||
|
||||
void MyFrame::OnUnselect(wxCommandEvent& event)
|
||||
{
|
||||
m_treeCtrl->UnselectAll();
|
||||
}
|
||||
|
||||
#endif // NO_MULTIPLE_SELECTION
|
||||
|
||||
void MyFrame::DoSetBold(bool bold)
|
||||
{
|
||||
wxTreeItemId item = m_treeCtrl->GetSelection();
|
||||
@@ -370,6 +393,15 @@ void MyFrame::OnDecSpacing(wxCommandEvent& WXUNUSED(event))
|
||||
m_treeCtrl->SetSpacing( indent-5 );
|
||||
}
|
||||
|
||||
void MyFrame::OnToggleIcon(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
wxTreeItemId item = m_treeCtrl->GetSelection();
|
||||
|
||||
CHECK_ITEM( item );
|
||||
|
||||
m_treeCtrl->DoToggleIcon(item);
|
||||
}
|
||||
|
||||
// MyTreeCtrl implementation
|
||||
IMPLEMENT_DYNAMIC_CLASS(MyTreeCtrl, wxTreeCtrl)
|
||||
|
||||
@@ -379,7 +411,7 @@ MyTreeCtrl::MyTreeCtrl(wxWindow *parent, const wxWindowID id,
|
||||
: wxTreeCtrl(parent, id, pos, size, style)
|
||||
{
|
||||
#if (USE_TR_HAS_VARIABLE_ROW_HIGHT && wxUSE_LIBJPEG)
|
||||
wxImage::AddHandler(new wxJPEGHandler);
|
||||
wxImage::AddHandler(new wxJPEGHandler);
|
||||
wxImage image;
|
||||
|
||||
image.LoadFile(wxString("horse.jpg"), wxBITMAP_TYPE_JPEG );
|
||||
@@ -450,8 +482,7 @@ void MyTreeCtrl::AddItemsRecursively(const wxTreeItemId& idParent,
|
||||
else
|
||||
str.Printf("%s child %d", "Folder", n + 1);
|
||||
|
||||
// int image = depth == 1 ? TreeCtrlIcon_File : TreeCtrlIcon_Folder;
|
||||
int image = depth == 1 ? -1 : TreeCtrlIcon_Folder;
|
||||
int image = depth == 1 ? TreeCtrlIcon_File : TreeCtrlIcon_Folder;
|
||||
wxTreeItemId id = AppendItem(idParent, str, image, image,
|
||||
new MyTreeItemData(str));
|
||||
|
||||
@@ -489,7 +520,7 @@ void MyTreeCtrl::GetItemsRecursively(const wxTreeItemId& idParent, long cookie)
|
||||
if(id <= 0)
|
||||
return;
|
||||
|
||||
wxString text=GetItemText(id);
|
||||
wxString text = GetItemText(id);
|
||||
wxLogMessage(text);
|
||||
|
||||
if (ItemHasChildren(id))
|
||||
@@ -498,6 +529,14 @@ void MyTreeCtrl::GetItemsRecursively(const wxTreeItemId& idParent, long cookie)
|
||||
GetItemsRecursively(idParent, cookie);
|
||||
}
|
||||
|
||||
void MyTreeCtrl::DoToggleIcon(const wxTreeItemId& item)
|
||||
{
|
||||
int image = GetItemImage(item) == TreeCtrlIcon_Folder ? TreeCtrlIcon_File
|
||||
: TreeCtrlIcon_Folder;
|
||||
|
||||
SetItemImage(item, image);
|
||||
}
|
||||
|
||||
|
||||
// avoid repetition
|
||||
#define TREE_EVENT_HANDLER(name) \
|
||||
|
Reference in New Issue
Block a user