]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/treectrl/treetest.cpp
Fixed spurious selection of combobox text during resize
[wxWidgets.git] / samples / treectrl / treetest.cpp
index 13ba5b3b37bf8ee777f599d2a3b5b1a630f89765..d140808b4de4c1e159d7cd08bbc764fb9ad8599d 100644 (file)
@@ -27,6 +27,7 @@
 #endif
 
 #include "wx/colordlg.h"
+#include "wx/numdlg.h"
 
 #include "wx/image.h"
 #include "wx/imaglist.h"
@@ -112,6 +113,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     MENU_LINK(IncSpacing)
     MENU_LINK(DecSpacing)
     MENU_LINK(ToggleIcon)
+    MENU_LINK(SelectRoot)
 #undef MENU_LINK
 
 END_EVENT_TABLE()
@@ -153,17 +155,20 @@ bool MyApp::OnInit()
     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
@@ -184,20 +189,20 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
     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..."));
@@ -213,6 +218,7 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
     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"));
@@ -252,20 +258,23 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
     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);
 
 #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?
@@ -275,11 +284,14 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
     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()
@@ -351,7 +363,11 @@ void MyFrame::OnIdle(wxIdleEvent& event)
 
 void MyFrame::OnSize(wxSizeEvent& event)
 {
-    if ( m_treeCtrl && m_textCtrl )
+    if ( m_treeCtrl
+#if wxUSE_LOG
+                    && m_textCtrl
+#endif // wxUSE_LOG
+                                  )
     {
         Resize();
     }
@@ -362,13 +378,18 @@ void MyFrame::OnSize(wxSizeEvent& event)
 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))
@@ -406,7 +427,7 @@ void MyFrame::OnCount(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);
 }
@@ -465,6 +486,11 @@ void MyFrame::OnSelect(wxCommandEvent& WXUNUSED(event))
     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();
@@ -520,7 +546,7 @@ void MyFrame::OnSetImageSize(wxCommandEvent& WXUNUSED(event))
         return;
 
     m_treeCtrl->CreateImageList(size);
-    wxGetApp().SetShowImages(TRUE);
+    wxGetApp().SetShowImages(true);
 }
 
 void MyFrame::OnToggleImages(wxCommandEvent& WXUNUSED(event))
@@ -528,12 +554,12 @@ 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);
     }
 }
 
@@ -543,12 +569,12 @@ void MyFrame::OnToggleButtons(wxCommandEvent& WXUNUSED(event))
     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
 }
@@ -644,7 +670,7 @@ MyTreeCtrl::MyTreeCtrl(wxWindow *parent, const wxWindowID id,
                        long style)
           : wxTreeCtrl(parent, id, pos, size, style)
 {
-    m_reverseSort = FALSE;
+    m_reverseSort = false;
 
     CreateImageList();
 
@@ -665,7 +691,7 @@ void MyTreeCtrl::CreateImageList(int size)
         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;
@@ -702,7 +728,7 @@ void MyTreeCtrl::CreateButtonsImageList(int 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;
@@ -732,10 +758,6 @@ void MyTreeCtrl::CreateButtonsImageList(int WXUNUSED(size))
 #endif
 }
 
-MyTreeCtrl::~MyTreeCtrl()
-{
-}
-
 int MyTreeCtrl::OnCompareItems(const wxTreeItemId& item1,
                                const wxTreeItemId& item2)
 {
@@ -1142,7 +1164,7 @@ void MyTreeCtrl::OnContextMenu(wxContextMenuEvent& event)
     {
         //attempt to guess where to show the menu
         if (item.IsOk())
-        {   
+        {
             //if an item was clicked, show menu to the right of it
             wxRect rect;
             GetBoundingRect(item, rect, true); //true = only the label
@@ -1158,7 +1180,7 @@ void MyTreeCtrl::OnContextMenu(wxContextMenuEvent& event)
         //event was generated by mouse, use supplied coords
         pt = ScreenToClient(pt);
     }
-    
+
     ShowMenu(item, pt);
 }
 
@@ -1210,5 +1232,5 @@ void MyTreeItemData::ShowInfo(wxTreeCtrl *tree)
                  Bool2String(tree->IsExpanded(GetId())),
                  Bool2String(tree->IsBold(GetId())),
                  tree->GetChildrenCount(GetId()),
-                 tree->GetChildrenCount(GetId(), FALSE));
+                 tree->GetChildrenCount(GetId(), false));
 }