]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/treectrl/treectrl.cpp
wxFileSelector should have file name only, not path, passed to 3rd arg
[wxWidgets.git] / samples / treectrl / treectrl.cpp
index 15a8cb2a6d759c82b401393b9a323e7a5beaaccd..e04b74f31442af5cf4c64b19aff9d451bd2fc63b 100644 (file)
@@ -9,9 +9,12 @@
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
 
+// important: the #pragma argument must be different from treectrl.cpp,
+// otherwise gcc gets confused (as there is also treectrl.cpp in the library
+// which has identical #pragma) and the sample crashes on startup!
 #ifdef __GNUG__
-  #pragma implementation
-  #pragma interface
+  #pragma interface "treetest.cpp"
+  #pragma implementation "treetest.cpp"
 #endif
 
 // For compilers that support precompilation, includes "wx/wx.h".
@@ -95,7 +98,11 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU(TreeTest_ToggleIcon, MyFrame::OnToggleIcon)
 END_EVENT_TABLE()
 
+#if USE_GENERIC_TREECTRL
+BEGIN_EVENT_TABLE(MyTreeCtrl, wxGenericTreeCtrl)
+#else
 BEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl)
+#endif
     EVT_TREE_BEGIN_DRAG(TreeTest_Ctrl, MyTreeCtrl::OnBeginDrag)
     EVT_TREE_BEGIN_RDRAG(TreeTest_Ctrl, MyTreeCtrl::OnBeginRDrag)
     EVT_TREE_END_DRAG(TreeTest_Ctrl, MyTreeCtrl::OnEndDrag)
@@ -208,7 +215,7 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
 
     m_treeCtrl = new MyTreeCtrl(this, TreeTest_Ctrl,
                                 wxDefaultPosition, wxDefaultSize,
-                                wxTR_HAS_BUTTONS |
+                                wxTR_HAS_BUTTONS | // wxTR_NO_LINES |
                                 wxTR_EDIT_LABELS |
 #ifndef NO_VARIABLE_HEIGHT
                                 wxTR_HAS_VARIABLE_ROW_HEIGHT |
@@ -428,7 +435,18 @@ void MyFrame::OnSetImageSize(wxCommandEvent& event)
 
 void MyFrame::OnToggleImages(wxCommandEvent& event)
 {
-    wxGetApp().SetShowImages(!wxGetApp().ShowImages());
+    if ( wxGetApp().ShowImages() )
+    {
+        m_treeCtrl->CreateImageList(-1);
+
+        wxGetApp().SetShowImages(FALSE);
+    }
+    else
+    {
+        m_treeCtrl->CreateImageList();
+
+        wxGetApp().SetShowImages(TRUE);
+    }
 
     OnRecreate(event);
 }
@@ -499,7 +517,11 @@ void MyFrame::OnToggleIcon(wxCommandEvent& WXUNUSED(event))
 }
 
 // MyTreeCtrl implementation
+#if USE_GENERIC_TREECTRL
+IMPLEMENT_DYNAMIC_CLASS(MyTreeCtrl, wxGenericTreeCtrl)
+#else
 IMPLEMENT_DYNAMIC_CLASS(MyTreeCtrl, wxTreeCtrl)
+#endif
 
 MyTreeCtrl::MyTreeCtrl(wxWindow *parent, const wxWindowID id,
                        const wxPoint& pos, const wxSize& size,
@@ -522,42 +544,42 @@ void MyTreeCtrl::CreateImageList(int size)
     if ( size == -1 )
     {
         m_imageListNormal = NULL;
-
-        return;
     }
+    else
+    {
+        // Make an image list containing small icons
+        m_imageListNormal = new wxImageList(size, size, TRUE);
 
-    // Make an image list containing small icons
-    m_imageListNormal = new wxImageList(size, size, TRUE);
-
-    // should correspond to TreeCtrlIcon_xxx enum
+        // should correspond to TreeCtrlIcon_xxx enum
 #if defined(__WXMSW__) && defined(__WIN16__)
-    m_imageListNormal->Add(wxBitmap("bitmap1", wxBITMAP_TYPE_BMP_RESOURCE));
-    m_imageListNormal->Add(wxBitmap("bitmap2", wxBITMAP_TYPE_BMP_RESOURCE));
-    m_imageListNormal->Add(wxBitmap("bitmap3", wxBITMAP_TYPE_BMP_RESOURCE));
-    m_imageListNormal->Add(wxBitmap("bitmap4", wxBITMAP_TYPE_BMP_RESOURCE));
-    m_imageListNormal->Add(wxBitmap("bitmap5", wxBITMAP_TYPE_BMP_RESOURCE));
-#else
-    wxIcon icons[5];
-    icons[0] = wxICON(icon1);
-    icons[1] = wxICON(icon2);
-    icons[2] = wxICON(icon3);
-    icons[3] = wxICON(icon4);
-    icons[4] = wxICON(icon5);
-
-    int sizeOrig = icons[0].GetWidth();
-    for ( size_t i = 0; i < WXSIZEOF(icons); i++ )
-    {
-        if ( size == sizeOrig )
-        {
-            m_imageListNormal->Add(icons[i]);
-        }
-        else
+        m_imageListNormal->Add(wxBitmap("bitmap1", wxBITMAP_TYPE_BMP_RESOURCE));
+        m_imageListNormal->Add(wxBitmap("bitmap2", wxBITMAP_TYPE_BMP_RESOURCE));
+        m_imageListNormal->Add(wxBitmap("bitmap3", wxBITMAP_TYPE_BMP_RESOURCE));
+        m_imageListNormal->Add(wxBitmap("bitmap4", wxBITMAP_TYPE_BMP_RESOURCE));
+        m_imageListNormal->Add(wxBitmap("bitmap5", wxBITMAP_TYPE_BMP_RESOURCE));
+#else // !MSW
+        wxIcon icons[5];
+        icons[0] = wxICON(icon1);
+        icons[1] = wxICON(icon2);
+        icons[2] = wxICON(icon3);
+        icons[3] = wxICON(icon4);
+        icons[4] = wxICON(icon5);
+
+        int sizeOrig = icons[0].GetWidth();
+        for ( size_t i = 0; i < WXSIZEOF(icons); i++ )
         {
-            m_imageListNormal->Add(wxImage(icons[i]).Rescale(size, size).
-                                    ConvertToBitmap());
+            if ( size == sizeOrig )
+            {
+                m_imageListNormal->Add(icons[i]);
+            }
+            else
+            {
+                m_imageListNormal->Add(wxImage(icons[i]).Rescale(size, size).
+                                        ConvertToBitmap());
+            }
         }
+#endif // MSW/!MSW
     }
-#endif
 
     SetImageList(m_imageListNormal);
 }