X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/957f5ab77abb14c70c60f18196e1e0d39292ee59..97ee90eec5faa0f361c47e39ee14299d07bbb50b:/contrib/samples/foldbar/foldpanelbar/foldpanelbartest.cpp diff --git a/contrib/samples/foldbar/foldpanelbar/foldpanelbartest.cpp b/contrib/samples/foldbar/foldpanelbar/foldpanelbartest.cpp index 69a3bed261..2a17ea90f5 100644 --- a/contrib/samples/foldbar/foldpanelbar/foldpanelbartest.cpp +++ b/contrib/samples/foldbar/foldpanelbar/foldpanelbartest.cpp @@ -1,8 +1,12 @@ - ///////////////////////////////////////////////////////////////////////////// -// 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 ///////////////////////////////////////////////////////////////////////////// @@ -16,12 +20,6 @@ #include "wx/wx.h" #endif -enum -{ - ID_COLLAPSEME = 10000, - ID_EXPANDME -}; - #include "wx/foldbar/foldpanelbar.h" #include "foldtestpanel.h" @@ -30,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 @@ -51,21 +47,25 @@ 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 + // 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() @@ -78,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) @@ -105,13 +111,12 @@ 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; } // ---------------------------------------------------------------------------- @@ -119,71 +124,96 @@ bool MyApp::OnInit() // ---------------------------------------------------------------------------- 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)) @@ -195,14 +225,19 @@ 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)); }