]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/samples/foldbar/foldpanelbar/foldpanelbartest.cpp
Avoid warnings from mgl headers if possible.
[wxWidgets.git] / contrib / samples / foldbar / foldpanelbar / foldpanelbartest.cpp
index 69a3bed2611c7fe9c90c4df945872d8d5d7b9076..2a17ea90f560ede0a318ca4f6d32b90ba357f699 100644 (file)
@@ -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
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
     #include "wx/wx.h"
 #endif
 
     #include "wx/wx.h"
 #endif
 
-enum
-{
-       ID_COLLAPSEME = 10000,
-       ID_EXPANDME
-};
-
 #include "wx/foldbar/foldpanelbar.h"
 #include "foldtestpanel.h"
 
 #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)
 // ----------------------------------------------------------------------------
 
 // 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
 
 // ----------------------------------------------------------------------------
 // MyApp Class
@@ -51,21 +47,25 @@ public:
 class MyAppFrame : public wxFrame
 {
 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);
 
 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:
 
 private:
-       wxMenuBar *CreateMenuBar();
-       wxFoldPanelBar *_pnl;
+    wxMenuBar *CreateMenuBar();
+    void CreateFoldBar(bool vertical = true);
+    wxFoldPanelBar *m_pnl;
 
 private:
     DECLARE_EVENT_TABLE()
 
 private:
     DECLARE_EVENT_TABLE()
@@ -78,19 +78,25 @@ private:
 enum
 {
     // menu items
 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)
 // ----------------------------------------------------------------------------
 
 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)
 END_EVENT_TABLE()
 
 IMPLEMENT_APP(MyApp)
@@ -105,13 +111,12 @@ IMPLEMENT_APP(MyApp)
 
 bool MyApp::OnInit()
 {
 
 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)
 // ----------------------------------------------------------------------------
 
 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());
 
 
     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 *MyAppFrame::CreateMenuBar()
 {
-       wxMenuBar *value = 0;
-       
     wxMenu *menuFile = new wxMenu;
     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"));
 
     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"));
     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))
 {
 
 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))
 }
 
 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);
 }
 
     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));
 }
 }