-
/////////////////////////////////////////////////////////////////////////////
-// Name: FoldPanelBarTest.cpp
-// Purpose: FoldPanelBarTest Test application
-// Created: 06/18/04
+// Name: foldpanelbartest.cpp
+// Purpose:
+// Author: Jorgen Bodde
+// Modified by: ABX - 19/12/2004 : possibility of horizontal orientation
+// : wxWidgets coding standards
+// Created: 18/06/2004
+// RCS-ID: $Id$
+// Copyright: (c) Jorgen Bodde
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/wx.h"
#endif
-enum
-{
- ID_COLLAPSEME = 10000,
- ID_EXPANDME
-};
-
#include "wx/foldbar/foldpanelbar.h"
#include "foldtestpanel.h"
// ----------------------------------------------------------------------------
// the application icon (under Windows and OS/2 it is in resources)
-#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXMGL__) || defined(__WXX11__)
- #include "mondrian.xpm"
-#endif
+#include "sample.xpm"
// ----------------------------------------------------------------------------
// MyApp Class
class MyAppFrame : public wxFrame
{
public:
- MyAppFrame(const wxString& title, const wxPoint& pos, const wxSize& size,
- long style = wxDEFAULT_FRAME_STYLE);
+ MyAppFrame(const wxString& title,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxDEFAULT_FRAME_STYLE);
private:
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
+ void OnOrientation(wxCommandEvent& event);
- // extra handlers for the bar, to show how it works
+ // extra handlers for the bar, to show how it works
- void OnCollapseMe(wxCommandEvent &event);
- void OnExpandMe(wxCommandEvent &event);
+ void OnCollapseMe(wxCommandEvent &event);
+ void OnExpandMe(wxCommandEvent &event);
private:
- wxMenuBar *CreateMenuBar();
- wxFoldPanelBar *_pnl;
+ wxMenuBar *CreateMenuBar();
+ void CreateFoldBar(bool vertical = true);
+ wxFoldPanelBar *m_pnl;
private:
DECLARE_EVENT_TABLE()
enum
{
// menu items
- FoldPanelBarTest_Quit = 1,
- FoldPanelBarTest_About = wxID_ABOUT
+ FoldPanelBarTest_Quit = wxID_EXIT,
+ FoldPanelBarTest_About = wxID_ABOUT,
+ ID_COLLAPSEME = wxID_HIGHEST,
+ ID_EXPANDME,
+ FoldPanelBarTest_Horizontal,
+ FoldPanelBarTest_Vertical
};
// ----------------------------------------------------------------------------
-// event tables and other macros for wxWindows
+// event tables and other macros for wxWidgets
// ----------------------------------------------------------------------------
BEGIN_EVENT_TABLE(MyAppFrame, wxFrame)
- EVT_MENU(FoldPanelBarTest_Quit, MyAppFrame::OnQuit)
- EVT_MENU(FoldPanelBarTest_About, MyAppFrame::OnAbout)
- EVT_BUTTON(ID_COLLAPSEME, MyAppFrame::OnCollapseMe)
- EVT_BUTTON(ID_EXPANDME, MyAppFrame::OnExpandMe)
+ EVT_MENU(FoldPanelBarTest_Quit, MyAppFrame::OnQuit)
+ EVT_MENU(FoldPanelBarTest_About, MyAppFrame::OnAbout)
+ EVT_MENU(FoldPanelBarTest_Horizontal, MyAppFrame::OnOrientation)
+ EVT_MENU(FoldPanelBarTest_Vertical, MyAppFrame::OnOrientation)
+ EVT_BUTTON(ID_COLLAPSEME, MyAppFrame::OnCollapseMe)
+ EVT_BUTTON(ID_EXPANDME, MyAppFrame::OnExpandMe)
END_EVENT_TABLE()
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
- MyAppFrame *frame = new MyAppFrame(_T("FoldPanelBarTest wxWindows Test Application"),
- wxPoint(50, 50), wxSize(200, 500));
+ MyAppFrame *frame = new MyAppFrame(_T("FoldPanelBarTest wxWidgets Test Application"));
- SetTopWindow(frame);
+ SetTopWindow(frame);
- frame->Show(TRUE);
- return TRUE;
+ frame->Show(true);
+ return true;
}
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
MyAppFrame::MyAppFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style)
- : wxFrame(NULL, -1, title, pos, size, style)
+ : wxFrame(NULL, wxID_ANY, title, pos, size, style), m_pnl(NULL)
{
- SetIcon(wxICON(mondrian));
+ SetIcon(wxIcon(sample_xpm));
SetMenuBar(CreateMenuBar());
- CreateStatusBar(2);
- SetStatusText(_T("Welcome to wxWindows!"));
-
- _pnl = new wxFoldPanelBar(this, -1, wxDefaultPosition, wxDefaultSize, wxFPB_DEFAULT_STYLE, wxFPB_COLLAPSE_TO_BOTTOM);
-
- wxFoldPanel item = _pnl->AddFoldPanel("Test me", false);
- _pnl->AddFoldPanelWindow(item, new wxButton(item.GetParent(), ID_COLLAPSEME, "Collapse Me"));
-
- item = _pnl->AddFoldPanel("Test me too!", true);
- _pnl->AddFoldPanelWindow(item, new wxButton(item.GetParent(), ID_EXPANDME, "Expand first one"));
- _pnl->AddFoldPanelSeperator(item);
- _pnl->AddFoldPanelWindow(item, new FoldTestPanel(item.GetParent(), -1));
-
- _pnl->AddFoldPanelSeperator(item);
-
- _pnl->AddFoldPanelWindow(item, new wxTextCtrl(item.GetParent(), -1, "Comment"), wxFPB_ALIGN_WIDTH, wxFPB_DEFAULT_YSPACING, 20);
-
- item = _pnl->AddFoldPanel("Some opinions ...", false);
- _pnl->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), -1, "I like this"));
- _pnl->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), -1, "And also this"));
- _pnl->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), -1, "And gimme this too"));
-
- _pnl->AddFoldPanelSeperator(item);
-
- _pnl->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), -1, "Check this too if you like"));
- _pnl->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), -1, "What about this"));
-
-
- item = _pnl->AddFoldPanel("Choose one ...", false);
- _pnl->AddFoldPanelWindow(item, new wxStaticText(item.GetParent(), -1, "Enter your comment"));
- _pnl->AddFoldPanelWindow(item, new wxTextCtrl(item.GetParent(), -1, "Comment"), wxFPB_ALIGN_WIDTH, wxFPB_DEFAULT_YSPACING, 20);
+ CreateFoldBar();
+ CreateStatusBar(2);
+ SetStatusText(_T("Welcome to wxWidgets!"));
}
wxMenuBar *MyAppFrame::CreateMenuBar()
{
- wxMenuBar *value = 0;
-
wxMenu *menuFile = new wxMenu;
+ menuFile->Append(FoldPanelBarTest_Horizontal, _T("&Horizontal\tAlt-H"));
+ menuFile->Append(FoldPanelBarTest_Vertical, _T("&Vertical\tAlt-V"));
+ menuFile->AppendSeparator();
menuFile->Append(FoldPanelBarTest_Quit, _T("E&xit\tAlt-X"), _T("Quit this program"));
wxMenu *helpMenu = new wxMenu;
helpMenu->Append(FoldPanelBarTest_About, _T("&About...\tF1"), _T("Show about dialog"));
- value = new wxMenuBar();
+ wxMenuBar *value = new wxMenuBar();
value->Append(menuFile, _T("&File"));
value->Append(helpMenu, _T("&Help"));
-
- return value;
-}
-
-// event handlers
+ return value;
+}
+void MyAppFrame::CreateFoldBar(bool vertical)
+{
+ if (vertical)
+ SetSize(200,500);
+ else
+ SetSize(900,200);
+
+ wxFoldPanelBar *bar = new wxFoldPanelBar(this,
+ wxID_ANY,
+ wxDefaultPosition,
+ wxDefaultSize,
+ wxFPB_DEFAULT_STYLE | ( vertical ? wxFPB_VERTICAL : wxFPB_HORIZONTAL ) ,
+ wxFPB_COLLAPSE_TO_BOTTOM);
+
+ wxFoldPanel item = bar->AddFoldPanel(_T("Test me"), false);
+ bar->AddFoldPanelWindow(item, new wxButton(item.GetParent(), ID_COLLAPSEME, _T("Collapse Me")));
+
+ item = bar->AddFoldPanel(_T("Test me too!"), true);
+ bar->AddFoldPanelWindow(item, new wxButton(item.GetParent(), ID_EXPANDME, _T("Expand first one")));
+ bar->AddFoldPanelSeperator(item);
+ bar->AddFoldPanelWindow(item, new FoldTestPanel(item.GetParent(), wxID_ANY));
+
+ bar->AddFoldPanelSeperator(item);
+
+ bar->AddFoldPanelWindow(item, new wxTextCtrl(item.GetParent(), wxID_ANY, _T("Comment")), wxFPB_ALIGN_WIDTH, wxFPB_DEFAULT_SPACING, 20);
+
+ item = bar->AddFoldPanel(_T("Some opinions ..."), false);
+ bar->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("I like this")));
+ if( vertical)
+ {
+ // do not add this for horizontal for better presentation
+ bar->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("And also this")));
+ bar->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("And gimme this too")));
+ }
+
+ bar->AddFoldPanelSeperator(item);
+
+ bar->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("Check this too if you like")));
+ if( vertical)
+ {
+ // do not add this for horizontal for better presentation
+ bar->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("What about this")));
+ }
+
+ item = bar->AddFoldPanel(_T("Choose one ..."), false);
+ bar->AddFoldPanelWindow(item, new wxStaticText(item.GetParent(), wxID_ANY, _T("Enter your comment")));
+ bar->AddFoldPanelWindow(item, new wxTextCtrl(item.GetParent(), wxID_ANY, _T("Comment")), wxFPB_ALIGN_WIDTH, wxFPB_DEFAULT_SPACING, 20);
+
+ if (m_pnl) m_pnl->Destroy();
+
+ m_pnl = bar;
+
+ wxSize size = GetClientSize();
+ m_pnl->SetSize( 0, 0, size.GetWidth(), size.GetHeight() );
+}
void MyAppFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
- // TRUE is to force the frame to close
- Close(TRUE);
+ // true is to force the frame to close
+ Close(true);
}
void MyAppFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
wxMessageBox(msg, _T("About FoldPanelBarTest"), wxOK | wxICON_INFORMATION, this);
}
-void MyAppFrame::OnCollapseMe(wxCommandEvent &event)
+void MyAppFrame::OnOrientation(wxCommandEvent& event)
+{
+ CreateFoldBar(event.GetId()==FoldPanelBarTest_Vertical);
+}
+
+void MyAppFrame::OnCollapseMe(wxCommandEvent &WXUNUSED(event))
{
- wxFoldPanel item = _pnl->Item(0);
- _pnl->Collapse(item);
+ wxFoldPanel item = m_pnl->Item(0);
+ m_pnl->Collapse(item);
}
-void MyAppFrame::OnExpandMe(wxCommandEvent &event)
+void MyAppFrame::OnExpandMe(wxCommandEvent &WXUNUSED(event))
{
- _pnl->Expand(_pnl->Item(0));
- _pnl->Collapse(_pnl->Item(1));
+ m_pnl->Expand(m_pnl->Item(0));
+ m_pnl->Collapse(m_pnl->Item(1));
}