• 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/foldbar/foldpanelbar/
1/////////////////////////////////////////////////////////////////////////////
2// Name:        foldpanelbartest.cpp
3// Purpose:
4// Author:      Jorgen Bodde
5// Modified by: ABX - 19/12/2004 : possibility of horizontal orientation
6//                               : wxWidgets coding standards
7// Created:     18/06/2004
8// RCS-ID:      $Id: foldpanelbartest.cpp 33159 2005-03-29 18:03:57Z ABX $
9// Copyright:   (c) Jorgen Bodde
10// Licence:     wxWindows licence
11/////////////////////////////////////////////////////////////////////////////
12
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/foldbar/foldpanelbar.h"
24#include "foldtestpanel.h"
25
26// ----------------------------------------------------------------------------
27// resources
28// ----------------------------------------------------------------------------
29
30// the application icon (under Windows and OS/2 it is in resources)
31#include "sample.xpm"
32
33// ----------------------------------------------------------------------------
34// MyApp Class
35// ----------------------------------------------------------------------------
36
37class MyApp : public wxApp
38{
39public:
40    virtual bool OnInit();
41};
42
43// ----------------------------------------------------------------------------
44// MyAppFrame Class
45// ----------------------------------------------------------------------------
46
47class MyAppFrame : public wxFrame
48{
49public:
50    MyAppFrame(const wxString& title,
51               const wxPoint& pos = wxDefaultPosition,
52               const wxSize& size = wxDefaultSize,
53               long style = wxDEFAULT_FRAME_STYLE);
54
55private:
56    void OnQuit(wxCommandEvent& event);
57    void OnAbout(wxCommandEvent& event);
58    void OnOrientation(wxCommandEvent& event);
59
60    // extra handlers for the bar, to show how it works
61
62    void OnCollapseMe(wxCommandEvent &event);
63    void OnExpandMe(wxCommandEvent &event);
64
65private:
66    wxMenuBar *CreateMenuBar();
67    void CreateFoldBar(bool vertical = true);
68    wxFoldPanelBar *m_pnl;
69
70private:
71    DECLARE_EVENT_TABLE()
72};
73
74// ----------------------------------------------------------------------------
75// constants
76// ----------------------------------------------------------------------------
77
78enum
79{
80    // menu items
81    FoldPanelBarTest_Quit = wxID_EXIT,
82    FoldPanelBarTest_About = wxID_ABOUT,
83    ID_COLLAPSEME = wxID_HIGHEST,
84    ID_EXPANDME,
85    FoldPanelBarTest_Horizontal,
86    FoldPanelBarTest_Vertical
87};
88
89// ----------------------------------------------------------------------------
90// event tables and other macros for wxWidgets
91// ----------------------------------------------------------------------------
92
93BEGIN_EVENT_TABLE(MyAppFrame, wxFrame)
94    EVT_MENU(FoldPanelBarTest_Quit,       MyAppFrame::OnQuit)
95    EVT_MENU(FoldPanelBarTest_About,      MyAppFrame::OnAbout)
96    EVT_MENU(FoldPanelBarTest_Horizontal, MyAppFrame::OnOrientation)
97    EVT_MENU(FoldPanelBarTest_Vertical,   MyAppFrame::OnOrientation)
98    EVT_BUTTON(ID_COLLAPSEME,             MyAppFrame::OnCollapseMe)
99    EVT_BUTTON(ID_EXPANDME,               MyAppFrame::OnExpandMe)
100END_EVENT_TABLE()
101
102IMPLEMENT_APP(MyApp)
103
104// ============================================================================
105// implementation
106// ============================================================================
107
108// ----------------------------------------------------------------------------
109// MyApp Implementation
110// ----------------------------------------------------------------------------
111
112bool MyApp::OnInit()
113{
114    MyAppFrame *frame = new MyAppFrame(_T("FoldPanelBarTest wxWidgets Test Application"));
115
116    SetTopWindow(frame);
117
118    frame->Show(true);
119    return true;
120}
121
122// ----------------------------------------------------------------------------
123// MyAppFrame Implementation
124// ----------------------------------------------------------------------------
125
126MyAppFrame::MyAppFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style)
127       : wxFrame(NULL, wxID_ANY, title, pos, size, style), m_pnl(NULL)
128{
129    SetIcon(wxIcon(sample_xpm));
130
131    SetMenuBar(CreateMenuBar());
132
133    CreateFoldBar();
134
135    CreateStatusBar(2);
136    SetStatusText(_T("Welcome to wxWidgets!"));
137}
138
139wxMenuBar *MyAppFrame::CreateMenuBar()
140{
141    wxMenu *menuFile = new wxMenu;
142    menuFile->Append(FoldPanelBarTest_Horizontal, _T("&Horizontal\tAlt-H"));
143    menuFile->Append(FoldPanelBarTest_Vertical, _T("&Vertical\tAlt-V"));
144    menuFile->AppendSeparator();
145    menuFile->Append(FoldPanelBarTest_Quit, _T("E&xit\tAlt-X"), _T("Quit this program"));
146
147    wxMenu *helpMenu = new wxMenu;
148    helpMenu->Append(FoldPanelBarTest_About, _T("&About...\tF1"), _T("Show about dialog"));
149
150    wxMenuBar *value = new wxMenuBar();
151    value->Append(menuFile, _T("&File"));
152    value->Append(helpMenu, _T("&Help"));
153
154    return value;
155}
156
157void MyAppFrame::CreateFoldBar(bool vertical)
158{
159    if (vertical)
160        SetSize(200,500);
161    else
162        SetSize(900,200);
163
164    wxFoldPanelBar *bar = new wxFoldPanelBar(this,
165                                             wxID_ANY,
166                                             wxDefaultPosition,
167                                             wxDefaultSize,
168                                             wxFPB_DEFAULT_STYLE | ( vertical ? wxFPB_VERTICAL : wxFPB_HORIZONTAL ) ,
169                                             wxFPB_COLLAPSE_TO_BOTTOM);
170
171    wxFoldPanel item = bar->AddFoldPanel(_T("Test me"), false);
172    bar->AddFoldPanelWindow(item, new wxButton(item.GetParent(), ID_COLLAPSEME, _T("Collapse Me")));
173
174    item = bar->AddFoldPanel(_T("Test me too!"), true);
175    bar->AddFoldPanelWindow(item, new wxButton(item.GetParent(), ID_EXPANDME, _T("Expand first one")));
176    bar->AddFoldPanelSeperator(item);
177    bar->AddFoldPanelWindow(item, new FoldTestPanel(item.GetParent(), wxID_ANY));
178
179    bar->AddFoldPanelSeperator(item);
180
181    bar->AddFoldPanelWindow(item, new wxTextCtrl(item.GetParent(), wxID_ANY, _T("Comment")), wxFPB_ALIGN_WIDTH, wxFPB_DEFAULT_SPACING, 20);
182
183    item = bar->AddFoldPanel(_T("Some opinions ..."), false);
184    bar->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("I like this")));
185    if( vertical)
186    {
187        // do not add this for horizontal for better presentation
188        bar->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("And also this")));
189        bar->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("And gimme this too")));
190    }
191
192    bar->AddFoldPanelSeperator(item);
193
194    bar->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("Check this too if you like")));
195    if( vertical)
196    {
197        // do not add this for horizontal for better presentation
198        bar->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("What about this")));
199    }
200
201    item = bar->AddFoldPanel(_T("Choose one ..."), false);
202    bar->AddFoldPanelWindow(item, new wxStaticText(item.GetParent(), wxID_ANY, _T("Enter your comment")));
203    bar->AddFoldPanelWindow(item, new wxTextCtrl(item.GetParent(), wxID_ANY, _T("Comment")), wxFPB_ALIGN_WIDTH, wxFPB_DEFAULT_SPACING, 20);
204
205    if (m_pnl) m_pnl->Destroy();
206
207    m_pnl = bar;
208
209    wxSize size = GetClientSize();
210    m_pnl->SetSize( 0, 0, size.GetWidth(), size.GetHeight() );
211}
212
213void MyAppFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
214{
215    // true is to force the frame to close
216    Close(true);
217}
218
219void MyAppFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
220{
221    wxString msg;
222    msg.Printf( _T("This is the About dialog of the FoldPanelBarTest application.\n")
223                _T("Welcome to %s"), wxVERSION_STRING);
224
225    wxMessageBox(msg, _T("About FoldPanelBarTest"), wxOK | wxICON_INFORMATION, this);
226}
227
228void MyAppFrame::OnOrientation(wxCommandEvent& event)
229{
230    CreateFoldBar(event.GetId()==FoldPanelBarTest_Vertical);
231}
232
233void MyAppFrame::OnCollapseMe(wxCommandEvent &WXUNUSED(event))
234{
235    wxFoldPanel item = m_pnl->Item(0);
236    m_pnl->Collapse(item);
237}
238
239void MyAppFrame::OnExpandMe(wxCommandEvent &WXUNUSED(event))
240{
241    m_pnl->Expand(m_pnl->Item(0));
242    m_pnl->Collapse(m_pnl->Item(1));
243}
244