#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"
// resources
// ----------------------------------------------------------------------------
// the application icon
-#if defined(__WXGTK__) || defined(__WXMOTIF__)
+#if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__)
#include "mondrian.xpm"
#endif
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);
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));
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);
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,
#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
// 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);
}
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)
-{
-}