]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/samples/gizmos/splittree/tree.cpp
Makefile.in: remove CVS dirs
[wxWidgets.git] / contrib / samples / gizmos / splittree / tree.cpp
index 9276e9b423587eb4c4e558509b3a80a8b7cacb05..a889a0060c0e60994b056e858195c9f1c797ab36 100644 (file)
     #include "wx/wx.h"
 #endif
 
+#if !defined(__WXMSW__) || wxUSE_XPM_IN_MSW
+/* Closed folder */
+static char * icon1_xpm[] = {
+/* width height ncolors chars_per_pixel */
+"16 16 6 1",
+/* colors */
+"   s None  c None",
+".  c #000000",
+"+  c #c0c0c0",
+"@  c #808080",
+"#  c #ffff00",
+"$  c #ffffff",
+/* pixels */
+"                ",
+"   @@@@@        ",
+"  @#+#+#@       ",
+" @#+#+#+#@@@@@@ ",
+" @$$$$$$$$$$$$@.",
+" @$#+#+#+#+#+#@.",
+" @$+#+#+#+#+#+@.",
+" @$#+#+#+#+#+#@.",
+" @$+#+#+#+#+#+@.",
+" @$#+#+#+#+#+#@.",
+" @$+#+#+#+#+#+@.",
+" @$#+#+#+#+#+#@.",
+" @@@@@@@@@@@@@@.",
+"  ..............",
+"                ",
+"                "};
+
+/* File */
+static char * icon2_xpm[] = {
+/* width height ncolors chars_per_pixel */
+"16 16 3 1",
+/* colors */
+"     s None    c None",
+".    c #000000",
+"+    c #ffffff",
+/* pixels */
+"                ",
+"  ........      ",
+"  .++++++..     ",
+"  .+.+.++.+.    ",
+"  .++++++....   ",
+"  .+.+.+++++.   ",
+"  .+++++++++.   ",
+"  .+.+.+.+.+.   ",
+"  .+++++++++.   ",
+"  .+.+.+.+.+.   ",
+"  .+++++++++.   ",
+"  .+.+.+.+.+.   ",
+"  .+++++++++.   ",
+"  ...........   ",
+"                ",
+"                "};
+#endif
+
 #include "wx/imaglist.h"
 #include "tree.h"
 
@@ -41,7 +98,7 @@
 // resources
 // ----------------------------------------------------------------------------
 // the application icon
-#if defined(__WXGTK__) || defined(__WXMOTIF__)
+#if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__)
     #include "mondrian.xpm"
 #endif
 
@@ -112,8 +169,10 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
     m_splitter = new wxThinSplitterWindow(m_scrolledWindow, idSPLITTER_WINDOW, wxDefaultPosition,
                wxDefaultSize, wxSP_3DBORDER | wxCLIP_CHILDREN /* | wxSP_LIVE_UPDATE */);
        m_splitter->SetSashSize(2);
-    m_tree = new TestTree(m_splitter, idTREE_CTRL, wxDefaultPosition,
-               wxDefaultSize, wxTR_HAS_BUTTONS | wxTR_NO_LINES | wxNO_BORDER );
+
+       /* Note the wxTR_ROW_LINES style: draws horizontal lines between items */
+    m_tree = new TestTree(m_splitter , idTREE_CTRL, wxDefaultPosition,
+               wxDefaultSize, wxTR_HAS_BUTTONS | wxTR_NO_LINES | wxNO_BORDER | wxTR_ROW_LINES );
     m_valueWindow = new TestValueWindow(m_splitter, idVALUE_WINDOW, wxDefaultPosition,
                wxDefaultSize, wxNO_BORDER);
     m_splitter->SplitVertically(m_tree, m_valueWindow);
@@ -123,6 +182,10 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
 
        m_scrolledWindow->EnableScrolling(FALSE, FALSE);
 
+       // Let the two controls know about each other
+       m_valueWindow->SetTreeCtrl(m_tree);
+       m_tree->SetCompanionWindow(m_valueWindow);
+
     // set the frame icon
     SetIcon(wxICON(mondrian));
 
@@ -156,7 +219,7 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
 void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
 {
     wxString msg;
-    msg.Printf( _T("This is the about dialog of tree sample.\n")
+    msg.Printf( _T("This is the about dialog of splittree sample.\n")
                 _T("Welcome to %s"), wxVERSION_STRING);
 
     wxMessageBox(msg, "About Tree Test", wxOK | wxICON_INFORMATION, this);
@@ -169,7 +232,6 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
 IMPLEMENT_CLASS(TestTree, wxRemotelyScrolledTreeCtrl)
 
 BEGIN_EVENT_TABLE(TestTree, wxRemotelyScrolledTreeCtrl)
-       EVT_PAINT(TestTree::OnPaint)
 END_EVENT_TABLE()
 
 TestTree::TestTree(wxWindow* parent, wxWindowID id, const wxPoint& pt,
@@ -180,21 +242,9 @@ TestTree::TestTree(wxWindow* parent, wxWindowID id, const wxPoint& pt,
 #if !defined(__WXMSW__) // || wxUSE_XPM_IN_MSW
     m_imageList->Add(wxIcon(icon1_xpm));
     m_imageList->Add(wxIcon(icon2_xpm));
-    m_imageList->Add(wxIcon(icon3_xpm));
-    m_imageList->Add(wxIcon(icon4_xpm));
-    m_imageList->Add(wxIcon(icon5_xpm));
-    m_imageList->Add(wxIcon(icon6_xpm));
-    m_imageList->Add(wxIcon(icon7_xpm));
-    m_imageList->Add(wxIcon(icon8_xpm));
 #elif defined(__WXMSW__)
     m_imageList->Add(wxIcon(wxT("wxICON_SMALL_CLOSED_FOLDER"), wxBITMAP_TYPE_ICO_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_OPEN_FOLDER"), wxBITMAP_TYPE_ICO_RESOURCE));
     m_imageList->Add(wxIcon(wxT("wxICON_SMALL_FILE"), wxBITMAP_TYPE_ICO_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_COMPUTER"), wxBITMAP_TYPE_ICO_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_DRIVE"), wxBITMAP_TYPE_ICO_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_CDROM"), wxBITMAP_TYPE_ICO_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_FLOPPY"), wxBITMAP_TYPE_ICO_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_REMOVEABLE"), wxBITMAP_TYPE_ICO_RESOURCE));
 #else
 #error "Sorry, we don't have icons available for this platforms."
 #endif
@@ -202,18 +252,18 @@ TestTree::TestTree(wxWindow* parent, wxWindowID id, const wxPoint& pt,
 
                
        // Add some dummy items
-       wxTreeItemId rootId = AddRoot(_("Root"), 3, -1);
+       wxTreeItemId rootId = AddRoot(_("Root"), -1, -1);
        int i;
        for (i = 1; i <= 20; i++)
        {
                wxString label;
                label.Printf(wxT("Item %d"), i);
                wxTreeItemId id = AppendItem(rootId, label, 0);
-               SetItemImage( id, 1, wxTreeItemIcon_Expanded );
+               //SetItemImage( id, 1, wxTreeItemIcon_Expanded );
 
                int j;
                for (j = 0; j < 10; j++)
-                       AppendItem(id, _("Child"), 2);
+                       AppendItem(id, _("Child"), 1);
        }
        Expand(rootId);
 }
@@ -224,66 +274,20 @@ TestTree::~TestTree()
        delete m_imageList;
 }
 
-void TestTree::OnPaint(wxPaintEvent& event)
-{
-       wxPaintDC dc(this);
-
-       wxTreeCtrl::OnPaint(event);
-
-    // Reset the device origin since it may have been set
-    dc.SetDeviceOrigin(0, 0);
-
-       wxSize sz = GetClientSize();
-
-       wxPen pen(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DLIGHT), 1, wxSOLID);
-       dc.SetPen(pen);
-       dc.SetBrush(* wxTRANSPARENT_BRUSH);
-
-       wxRect itemRect;
-       if (GetBoundingRect(GetRootItem(), itemRect))
-       {
-               int itemHeight = itemRect.GetHeight();
-               wxRect rcClient = GetRect();
-               wxRect itemRect;
-               int cy=0;
-               wxTreeItemId h, lastH;
-               for(h=GetFirstVisibleItem();h;h=GetNextVisible(h))
-               {
-                       if (GetBoundingRect(h, itemRect))
-                       {
-                               cy = itemRect.GetTop();
-                               dc.DrawLine(rcClient.x, cy, rcClient.x + rcClient.width, cy);
-                               lastH = h;
-                               //cy += itemHeight;
-                       }
-               }
-               if (GetBoundingRect(lastH, itemRect))
-               {
-                       cy = itemRect.GetBottom();
-                       dc.DrawLine(rcClient.x, cy, rcClient.x + rcClient.width, cy);
-               }
-       }
-}
-
 /*
  * TestValueWindow
  */
 
 //IMPLEMENT_CLASS(TestValueWindow, wxWindow)
 
-BEGIN_EVENT_TABLE(TestValueWindow, wxWindow)
-       EVT_SIZE(TestValueWindow::OnSize)
+BEGIN_EVENT_TABLE(TestValueWindow, wxTreeCompanionWindow)
 END_EVENT_TABLE()
 
 TestValueWindow::TestValueWindow(wxWindow* parent, wxWindowID id,
       const wxPoint& pos,
       const wxSize& sz,
       long style):
-      wxWindow(parent, id, pos, sz, style)
+      wxTreeCompanionWindow(parent, id, pos, sz, style)
 {
        SetBackgroundColour(* wxWHITE);
 }
-
-void TestValueWindow::OnSize(wxSizeEvent& event)
-{
-}