X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f857e441bf68aa9c7585aefd26b64f0728387062..97ee90eec5faa0f361c47e39ee14299d07bbb50b:/contrib/samples/foldbar/foldpanelbar/foldpanelbartest.cpp?ds=inline diff --git a/contrib/samples/foldbar/foldpanelbar/foldpanelbartest.cpp b/contrib/samples/foldbar/foldpanelbar/foldpanelbartest.cpp index 67f061286c..2a17ea90f5 100644 --- a/contrib/samples/foldbar/foldpanelbar/foldpanelbartest.cpp +++ b/contrib/samples/foldbar/foldpanelbar/foldpanelbartest.cpp @@ -2,7 +2,8 @@ // Name: foldpanelbartest.cpp // Purpose: // Author: Jorgen Bodde -// Modified by: +// Modified by: ABX - 19/12/2004 : possibility of horizontal orientation +// : wxWidgets coding standards // Created: 18/06/2004 // RCS-ID: $Id$ // Copyright: (c) Jorgen Bodde @@ -19,12 +20,6 @@ #include "wx/wx.h" #endif -enum -{ - ID_COLLAPSEME = 10000, - ID_EXPANDME -}; - #include "wx/foldbar/foldpanelbar.h" #include "foldtestpanel.h" @@ -33,9 +28,7 @@ enum // ---------------------------------------------------------------------------- // 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 @@ -54,12 +47,15 @@ public: 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 @@ -68,7 +64,8 @@ private: private: wxMenuBar *CreateMenuBar(); - wxFoldPanelBar *_pnl; + void CreateFoldBar(bool vertical = true); + wxFoldPanelBar *m_pnl; private: DECLARE_EVENT_TABLE() @@ -81,19 +78,25 @@ private: 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) @@ -108,8 +111,7 @@ 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); @@ -122,49 +124,24 @@ bool MyApp::OnInit() // ---------------------------------------------------------------------------- MyAppFrame::MyAppFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style) - : wxFrame(NULL, wxID_ANY, 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, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxFPB_DEFAULT_STYLE, wxFPB_COLLAPSE_TO_BOTTOM); - - wxFoldPanel item = _pnl->AddFoldPanel(_T("Test me"), false); - _pnl->AddFoldPanelWindow(item, new wxButton(item.GetParent(), ID_COLLAPSEME, _T("Collapse Me"))); - - item = _pnl->AddFoldPanel(_T("Test me too!"), true); - _pnl->AddFoldPanelWindow(item, new wxButton(item.GetParent(), ID_EXPANDME, _T("Expand first one"))); - _pnl->AddFoldPanelSeperator(item); - _pnl->AddFoldPanelWindow(item, new FoldTestPanel(item.GetParent(), wxID_ANY)); - - _pnl->AddFoldPanelSeperator(item); - - _pnl->AddFoldPanelWindow(item, new wxTextCtrl(item.GetParent(), wxID_ANY, _T("Comment")), wxFPB_ALIGN_WIDTH, wxFPB_DEFAULT_YSPACING, 20); - - item = _pnl->AddFoldPanel(_T("Some opinions ..."), false); - _pnl->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("I like this"))); - _pnl->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("And also this"))); - _pnl->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("And gimme this too"))); - - _pnl->AddFoldPanelSeperator(item); - - _pnl->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("Check this too if you like"))); - _pnl->AddFoldPanelWindow(item, new wxCheckBox(item.GetParent(), wxID_ANY, _T("What about this"))); - - - item = _pnl->AddFoldPanel(_T("Choose one ..."), false); - _pnl->AddFoldPanelWindow(item, new wxStaticText(item.GetParent(), wxID_ANY, _T("Enter your comment"))); - _pnl->AddFoldPanelWindow(item, new wxTextCtrl(item.GetParent(), wxID_ANY, _T("Comment")), wxFPB_ALIGN_WIDTH, wxFPB_DEFAULT_YSPACING, 20); + CreateFoldBar(); + CreateStatusBar(2); + SetStatusText(_T("Welcome to wxWidgets!")); } wxMenuBar *MyAppFrame::CreateMenuBar() { 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; @@ -177,9 +154,61 @@ wxMenuBar *MyAppFrame::CreateMenuBar() return value; } -// event handlers - - +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)) { @@ -196,14 +225,19 @@ void MyAppFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) wxMessageBox(msg, _T("About FoldPanelBarTest"), wxOK | wxICON_INFORMATION, this); } +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 &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)); }