#endif
#include "wx/colordlg.h"
+#include "wx/numdlg.h"
#include "wx/image.h"
#include "wx/imaglist.h"
#include "icon3.xpm"
#include "icon4.xpm"
#include "icon5.xpm"
+
+#if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXMGL__)
#include "mondrian.xpm"
+#endif
// verify that the item is ok and insult the user if it is not
#define MENU_LINK(name) EVT_MENU(TreeTest_##name, MyFrame::On##name)
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
+ EVT_IDLE(MyFrame::OnIdle)
EVT_SIZE(MyFrame::OnSize)
MENU_LINK(Quit)
MENU_LINK(IncSpacing)
MENU_LINK(DecSpacing)
MENU_LINK(ToggleIcon)
+ MENU_LINK(SelectRoot)
#undef MENU_LINK
END_EVENT_TABLE()
MyFrame *frame = new MyFrame(wxT("wxTreeCtrl Test"), 50, 50, 450, 600);
// Show the frame
- frame->Show(TRUE);
+ frame->Show(true);
SetTopWindow(frame);
- return TRUE;
+ return true;
}
// My frame constructor
MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
- : wxFrame((wxFrame *)NULL, -1, title, wxPoint(x, y), wxSize(w, h)),
- m_treeCtrl(NULL), m_textCtrl(NULL)
+ : wxFrame((wxFrame *)NULL, wxID_ANY, title, wxPoint(x, y), wxSize(w, h)),
+ m_treeCtrl(NULL)
+#if wxUSE_LOG
+ , m_textCtrl(NULL)
+#endif // wxUSE_LOG
{
// This reduces flicker effects - even better would be to define
// OnEraseBackground to do nothing. When the tree control's scrollbars are
file_menu->AppendSeparator();
file_menu->Append(TreeTest_Quit, wxT("E&xit\tAlt-X"));
- style_menu->Append(TreeTest_TogButtons, wxT("Toggle &normal buttons"), wxT(""), TRUE);
- style_menu->Append(TreeTest_TogTwist, wxT("Toggle &twister buttons"), wxT(""), TRUE);
- style_menu->Append(TreeTest_ToggleButtons, wxT("Toggle image &buttons"), wxT(""), TRUE);
+ style_menu->AppendCheckItem(TreeTest_TogButtons, wxT("Toggle &normal buttons"));
+ style_menu->AppendCheckItem(TreeTest_TogTwist, wxT("Toggle &twister buttons"));
+ style_menu->AppendCheckItem(TreeTest_ToggleButtons, wxT("Toggle image &buttons"));
style_menu->AppendSeparator();
- style_menu->Append(TreeTest_TogLines, wxT("Toggle &connecting lines"), wxT(""), TRUE);
- style_menu->Append(TreeTest_TogRootLines, wxT("Toggle &lines at root"), wxT(""), TRUE);
- style_menu->Append(TreeTest_TogHideRoot, wxT("Toggle &hidden root"), wxT(""), TRUE);
- style_menu->Append(TreeTest_TogBorder, wxT("Toggle &item border"), wxT(""), TRUE);
- style_menu->Append(TreeTest_TogFullHighlight, wxT("Toggle &full row highlight"), wxT(""), TRUE);
- style_menu->Append(TreeTest_TogEdit, wxT("Toggle &edit mode"), wxT(""), TRUE);
+ style_menu->AppendCheckItem(TreeTest_TogLines, wxT("Toggle &connecting lines"));
+ style_menu->AppendCheckItem(TreeTest_TogRootLines, wxT("Toggle &lines at root"));
+ style_menu->AppendCheckItem(TreeTest_TogHideRoot, wxT("Toggle &hidden root"));
+ style_menu->AppendCheckItem(TreeTest_TogBorder, wxT("Toggle &item border"));
+ style_menu->AppendCheckItem(TreeTest_TogFullHighlight, wxT("Toggle &full row highlight"));
+ style_menu->AppendCheckItem(TreeTest_TogEdit, wxT("Toggle &edit mode"));
#ifndef NO_MULTIPLE_SELECTION
- style_menu->Append(TreeTest_ToggleSel, wxT("Toggle &selection mode"), wxT(""), TRUE);
+ style_menu->AppendCheckItem(TreeTest_ToggleSel, wxT("Toggle &selection mode"));
#endif // NO_MULTIPLE_SELECTION
- style_menu->Append(TreeTest_ToggleImages, wxT("Toggle show ima&ges"), wxT(""), TRUE);
+ style_menu->AppendCheckItem(TreeTest_ToggleImages, wxT("Toggle show ima&ges"));
style_menu->Append(TreeTest_SetImageSize, wxT("Set image si&ze..."));
style_menu->AppendSeparator();
style_menu->Append(TreeTest_SetFgColour, wxT("Set &foreground colour..."));
tree_menu->Append(TreeTest_Delete, wxT("&Delete this item"));
tree_menu->Append(TreeTest_DeleteChildren, wxT("Delete &children"));
tree_menu->Append(TreeTest_DeleteAll, wxT("Delete &all items"));
+ tree_menu->Append(TreeTest_SelectRoot, wxT("Select root item"));
tree_menu->AppendSeparator();
tree_menu->Append(TreeTest_Count, wxT("Count children of current item"));
tree_menu->Append(TreeTest_CountRec, wxT("Recursively count children of current item"));
SetMenuBar(menu_bar);
#endif // wxUSE_MENUS
+#if wxUSE_LOG
// create the controls
- m_textCtrl = new wxTextCtrl(this, -1, wxT(""),
+ m_textCtrl = new wxTextCtrl(this, wxID_ANY, wxT(""),
wxDefaultPosition, wxDefaultSize,
wxTE_MULTILINE | wxSUNKEN_BORDER);
+#endif // wxUSE_LOG
CreateTreeWithDefStyle();
- menu_bar->Check(TreeTest_ToggleImages, TRUE);
+ menu_bar->Check(TreeTest_ToggleImages, true);
- // create a status bar with 3 panes
- CreateStatusBar(3);
- SetStatusText(wxT(""), 0);
+#if wxUSE_STATUSBAR
+ // create a status bar
+ CreateStatusBar(2);
+#endif // wxUSE_STATUSBAR
+#if wxUSE_LOG
#ifdef __WXMOTIF__
// For some reason, we get a memcpy crash in wxLogStream::DoLogStream
// on gcc/wxMotif, if we use wxLogTextCtl. Maybe it's just gcc?
wxLogTextCtrl *logWindow = new wxLogTextCtrl(m_textCtrl);
delete wxLog::SetActiveTarget(logWindow);
#endif
+#endif // wxUSE_LOG
}
MyFrame::~MyFrame()
{
+#if wxUSE_LOG
delete wxLog::SetActiveTarget(NULL);
+#endif // wxUSE_LOG
}
void MyFrame::CreateTreeWithDefStyle()
GetMenuBar()->Check(id, (style & flag) != 0);
}
+void MyFrame::OnIdle(wxIdleEvent& event)
+{
+#if wxUSE_STATUSBAR
+ if ( m_treeCtrl )
+ {
+ wxTreeItemId idRoot = m_treeCtrl->GetRootItem();
+
+ SetStatusText(wxString::Format
+ (
+ _T("Root/last item is %svisible/%svisible"),
+ m_treeCtrl->IsVisible(idRoot) ? _T("") : _T("not "),
+ m_treeCtrl->IsVisible(m_treeCtrl->GetLastChild(idRoot))
+ ? _T("") : _T("not ")
+ ), 1);
+ }
+#endif // wxUSE_STATUSBAR
+
+ event.Skip();
+}
+
void MyFrame::OnSize(wxSizeEvent& event)
{
- if ( m_treeCtrl && m_textCtrl )
+ if ( m_treeCtrl
+#if wxUSE_LOG
+ && m_textCtrl
+#endif // wxUSE_LOG
+ )
{
Resize();
}
void MyFrame::Resize()
{
wxSize size = GetClientSize();
- m_treeCtrl->SetSize(0, 0, size.x, 2*size.y/3);
+ m_treeCtrl->SetSize(0, 0, size.x, size.y
+#if !wxUSE_LOG
+ );
+#else
+ *2/3);
m_textCtrl->SetSize(0, 2*size.y/3, size.x, size.y/3);
+#endif
}
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
- Close(TRUE);
+ Close(true);
}
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
CHECK_ITEM( item );
- int i = m_treeCtrl->GetChildrenCount( item, FALSE );
+ int i = m_treeCtrl->GetChildrenCount( item, false );
wxLogMessage(wxT("%d children"), i);
}
m_treeCtrl->SelectItem(m_treeCtrl->GetSelection());
}
+void MyFrame::OnSelectRoot(wxCommandEvent& WXUNUSED(event))
+{
+ m_treeCtrl->SelectItem(m_treeCtrl->GetRootItem());
+}
+
void MyFrame::OnUnselect(wxCommandEvent& WXUNUSED(event))
{
m_treeCtrl->UnselectAll();
return;
m_treeCtrl->CreateImageList(size);
- wxGetApp().SetShowImages(TRUE);
+ wxGetApp().SetShowImages(true);
}
void MyFrame::OnToggleImages(wxCommandEvent& WXUNUSED(event))
if ( wxGetApp().ShowImages() )
{
m_treeCtrl->CreateImageList(-1);
- wxGetApp().SetShowImages(FALSE);
+ wxGetApp().SetShowImages(false);
}
else
{
m_treeCtrl->CreateImageList(0);
- wxGetApp().SetShowImages(TRUE);
+ wxGetApp().SetShowImages(true);
}
}
if ( wxGetApp().ShowButtons() )
{
m_treeCtrl->CreateButtonsImageList(-1);
- wxGetApp().SetShowButtons(FALSE);
+ wxGetApp().SetShowButtons(false);
}
else
{
m_treeCtrl->CreateButtonsImageList(15);
- wxGetApp().SetShowButtons(TRUE);
+ wxGetApp().SetShowButtons(true);
}
#endif
}
long style)
: wxTreeCtrl(parent, id, pos, size, style)
{
- m_reverseSort = FALSE;
+ m_reverseSort = false;
CreateImageList();
m_imageSize = size;
// Make an image list containing small icons
- wxImageList *images = new wxImageList(size, size, TRUE);
+ wxImageList *images = new wxImageList(size, size, true);
// should correspond to TreeCtrlIcon_xxx enum
wxBusyCursor wait;
}
// Make an image list containing small icons
- wxImageList *images = new wxImageList(size, size, TRUE);
+ wxImageList *images = new wxImageList(size, size, true);
// should correspond to TreeCtrlIcon_xxx enum
wxBusyCursor wait;
Bool2String(tree->IsExpanded(GetId())),
Bool2String(tree->IsBold(GetId())),
tree->GetChildrenCount(GetId()),
- tree->GetChildrenCount(GetId(), FALSE));
+ tree->GetChildrenCount(GetId(), false));
}