• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/amule/wxWidgets-2.8.12/contrib/samples/deprecated/treelay/
1///////////////////////////////////////////////////////////////////////////////
2// Name:        treelay.cpp
3// Purpose:     wxTreeLayout sample
4// Author:      Julian Smart
5// Modified by:
6// Created:     7/4/98
7// RCS-ID:      $Id: treelay.cpp 29463 2004-09-27 19:24:45Z ABX $
8// Copyright:   (c) 1998 Julian Smart
9// Licence:     wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12// For compilers that support precompilation, includes "wx.h".
13#include "wx/wxprec.h"
14
15#ifdef __BORLANDC__
16#pragma hdrstop
17#endif
18
19#ifndef WX_PRECOMP
20#include "wx/wx.h"
21#endif
22
23#include "wx/deprecated/setup.h"
24
25#if !wxUSE_TREELAYOUT
26#error Please set wxUSE_TREELAYOUT to 1 in contrib/include/wx/deprecated/setup.h and recompile.
27#endif
28
29#include "wx/deprecated/treelay.h"
30
31#include "treelay.h"
32
33wxTreeLayoutStored *myTree = (wxTreeLayoutStored *) NULL;
34
35// A macro needed for some compilers (AIX) that need 'main' to be defined
36// in the application itself.
37IMPLEMENT_APP(MyApp)
38
39// The `main program' equivalent, creating the windows and returning the
40// main frame
41bool MyApp::OnInit()
42{
43  // Create the main frame window
44  MyFrame* frame = new MyFrame(NULL, _T("Tree Test"), wxDefaultPosition, wxSize(400, 550));
45
46#if wxUSE_STATUSBAR
47  // Give it a status line
48  frame->CreateStatusBar(2);
49#endif // wxUSE_STATUSBAR
50
51  // Give it an icon
52#ifdef __WINDOWS__
53  wxIcon icon(_T("tree_icn"));
54  frame->SetIcon(icon);
55#endif
56
57  // Make a menubar
58  wxMenu *file_menu = new wxMenu;
59  file_menu->Append(TEST_LEFT_RIGHT, _T("&Left to right"),                _T("Redraw left to right"));
60  file_menu->Append(TEST_TOP_BOTTOM, _T("&Top to bottom"),                _T("Redraw top to bottom"));
61  file_menu->AppendSeparator();
62  file_menu->Append(TEST_QUIT, _T("E&xit"),                _T("Quit program"));
63
64  wxMenu *help_menu = new wxMenu;
65  help_menu->Append(TEST_ABOUT, _T("&About"),              _T("About Tree Test"));
66
67  wxMenuBar* menu_bar = new wxMenuBar;
68
69  menu_bar->Append(file_menu, _T("&File"));
70  menu_bar->Append(help_menu, _T("&Help"));
71
72  // Associate the menu bar with the frame
73  frame->SetMenuBar(menu_bar);
74
75  MyCanvas *canvas = new MyCanvas(frame);
76
77  // Give it scrollbars: the virtual canvas is 20 * 50 = 1000 pixels in each direction
78  canvas->SetScrollbars(20, 20, 50, 50);
79  frame->canvas = canvas;
80
81  myTree = new wxTreeLayoutStored();
82
83  wxClientDC dc(canvas);
84  wxFont font(10, wxROMAN, wxNORMAL, wxBOLD);
85  dc.SetFont(font);
86  TreeTest(*myTree, dc);
87
88  frame->Show(true);
89
90#if wxUSE_STATUSBAR
91  frame->SetStatusText(_T("Hello, tree!"));
92#endif // wxUSE_STATUSBAR
93
94  // Return the main frame window
95  return true;
96}
97
98int MyApp::OnExit()
99{
100    if (myTree)
101    {
102        delete myTree;
103        myTree = (wxTreeLayoutStored *) NULL;
104    }
105
106    return 0;
107}
108
109void MyApp::TreeTest(wxTreeLayoutStored& tree, wxDC& dc)
110{
111  tree.Initialize(200);
112
113  tree.AddChild(_T("animal"));
114  tree.AddChild(_T("mammal"), _T("animal"));
115  tree.AddChild(_T("insect"), _T("animal"));
116  tree.AddChild(_T("bird"), _T("animal"));
117
118  tree.AddChild(_T("man"), _T("mammal"));
119  tree.AddChild(_T("cat"), _T("mammal"));
120  tree.AddChild(_T("dog"), _T("mammal"));
121  tree.AddChild(_T("giraffe"), _T("mammal"));
122  tree.AddChild(_T("elephant"), _T("mammal"));
123  tree.AddChild(_T("donkey"), _T("mammal"));
124  tree.AddChild(_T("horse"), _T("mammal"));
125
126  tree.AddChild(_T("fido"), _T("dog"));
127  tree.AddChild(_T("domestic cat"), _T("cat"));
128  tree.AddChild(_T("lion"), _T("cat"));
129  tree.AddChild(_T("tiger"), _T("cat"));
130  tree.AddChild(_T("felix"), _T("domestic cat"));
131  tree.AddChild(_T("socks"), _T("domestic cat"));
132
133  tree.AddChild(_T("beetle"), _T("insect"));
134  tree.AddChild(_T("earwig"), _T("insect"));
135  tree.AddChild(_T("eagle"), _T("bird"));
136  tree.AddChild(_T("bluetit"), _T("bird"));
137  tree.AddChild(_T("sparrow"), _T("bird"));
138  tree.AddChild(_T("blackbird"), _T("bird"));
139  tree.AddChild(_T("emu"), _T("bird"));
140  tree.AddChild(_T("crow"), _T("bird"));
141
142  tree.DoLayout(dc);
143}
144
145BEGIN_EVENT_TABLE(MyFrame, wxFrame)
146  EVT_MENU(TEST_QUIT, MyFrame::OnQuit)
147  EVT_MENU(TEST_ABOUT, MyFrame::OnAbout)
148  EVT_MENU(TEST_LEFT_RIGHT, MyFrame::OnLeftRight)
149  EVT_MENU(TEST_TOP_BOTTOM, MyFrame::OnTopBottom)
150  EVT_CLOSE(MyFrame::OnCloseWindow)
151END_EVENT_TABLE()
152
153// Define my frame constructor
154MyFrame::MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size):
155  wxFrame(parent, wxID_ANY, title, pos, size)
156{
157}
158
159void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
160{
161    Close(true);
162}
163
164void MyFrame::OnLeftRight(wxCommandEvent& WXUNUSED(event))
165{
166      if (myTree)
167      {
168        myTree->SetOrientation(false);
169        wxClientDC dc(canvas);
170        wxFont font(10, wxROMAN, wxNORMAL, wxBOLD);
171        dc.SetFont(font);
172        wxGetApp().TreeTest(*myTree, dc);
173        canvas->Refresh();
174      }
175}
176
177void MyFrame::OnTopBottom(wxCommandEvent& WXUNUSED(event))
178{
179      if (myTree)
180      {
181        myTree->SetOrientation(true);
182        wxClientDC dc(canvas);
183        wxFont font(10, wxROMAN, wxNORMAL, wxBOLD);
184        dc.SetFont(font);
185        wxGetApp().TreeTest(*myTree, dc);
186        canvas->Refresh();
187      }
188}
189
190void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
191{
192      (void)wxMessageBox(_T("wxWidgets tree library demo Vsn 2.0\nAuthor: Julian Smart (c) 1998"), _T("About tree test"));
193}
194
195void MyFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
196{
197  Destroy();
198}
199
200BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
201    EVT_PAINT(MyCanvas::OnPaint)
202END_EVENT_TABLE()
203
204// Define a constructor for my canvas
205MyCanvas::MyCanvas(wxWindow *parent):
206 wxScrolledWindow(parent, wxID_ANY)
207{
208    SetBackgroundColour(*wxWHITE);
209}
210
211// Define the repainting behaviour
212void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event))
213{
214    wxPaintDC dc(this);
215    PrepareDC(dc);
216    if (myTree)
217    {
218        wxFont font(10, wxROMAN, wxNORMAL, wxBOLD);
219        dc.SetFont(font);
220        myTree->Draw(dc);
221    }
222}
223
224