// Author: Julian Smart
// Modified by:
// Created: 04/01/98
-// RCS-ID: $Id$
-// Copyright: (c) Julian Smart and Markus Holzem
-// Licence: wxWindows license
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// Define a new application
class MyApp: public wxApp
{
public:
- MyApp();
+ MyApp(){};
bool OnInit();
};
-// Define a new frame
-class MyTextWindow;
-class MyWindow;
-
-class MyFrame: public wxFrame
+// the main frame class
+class MyFrame : public wxFrame
{
public:
- wxPanel *panel;
- MyTextWindow *text_window;
- MyWindow *canvas;
- MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h);
- void OnSize(wxSizeEvent& event);
- void Draw(wxDC& dc, bool draw_bitmaps = TRUE);
-
- void LoadFile(wxCommandEvent& event);
- void Quit(wxCommandEvent& event);
- void TestSizers(wxCommandEvent& event);
+ MyFrame();
+
+ void TestProportions(wxCommandEvent& event);
+ void TestFlexSizers(wxCommandEvent& event);
void TestNotebookSizers(wxCommandEvent& event);
- void About(wxCommandEvent& event);
+ void TestGridBagSizer(wxCommandEvent& event);
+ void TestNested(wxCommandEvent& event);
+ void TestSetMinimal(wxCommandEvent& event);
+ void TestWrap(wxCommandEvent& event);
+
+ void OnAbout(wxCommandEvent& event);
+ void OnQuit(wxCommandEvent& event);
private:
DECLARE_EVENT_TABLE()
};
-// Define a new text subwindow that can respond to drag-and-drop
-class MyTextWindow: public wxTextCtrl
+// a frame showing the box sizer proportions
+class MyProportionsFrame : public wxFrame
{
public:
- MyTextWindow(wxFrame *frame, int x=-1, int y=-1, int width=-1, int height=-1,
- long style=wxTE_MULTILINE):
- wxTextCtrl(frame, -1, "", wxPoint(x, y), wxSize(width, height), style)
- {
- }
+ MyProportionsFrame(wxFrame *parent);
+
+protected:
+ void UpdateProportions();
+ void OnProportionChanged(wxSpinEvent& event);
+ void OnProportionUpdated(wxCommandEvent& event);
+
+ wxSpinCtrl *m_spins[3]; // size can be changed without changing anything else
+ wxSizer *m_sizer;
};
-// Define a new canvas which can receive some events
-class MyWindow: public wxWindow
+// a frame using flex sizers for layout
+class MyFlexSizerFrame : public wxFrame
{
public:
- MyWindow(wxFrame *frame, int x, int y, int w, int h, long style = wxRETAINED);
- ~MyWindow();
- void OnPaint(wxPaintEvent& event);
+ MyFlexSizerFrame(wxFrame* parent);
+
+private:
+ void InitFlexSizer(wxFlexGridSizer *sizer, wxWindow* parent);
+};
+
+
+// a dialog using notebook sizer for layout
+class MySizerDialog : public wxDialog
+{
+public:
+ MySizerDialog(wxWindow *parent, const wxString &title );
+};
+
+
+// a frame using wxGridBagSizer for layout
+class MyGridBagSizerFrame : public wxFrame
+{
+public:
+ MyGridBagSizerFrame(wxFrame* parent);
+
+ void OnHideBtn(wxCommandEvent&);
+ void OnShowBtn(wxCommandEvent&);
+ void OnMoveBtn(wxCommandEvent&);
+
+private:
+ wxGridBagSizer* m_gbs;
+ wxPanel* m_panel;
+ wxButton* m_hideBtn;
+ wxButton* m_showBtn;
+ wxTextCtrl* m_hideTxt;
+
+ wxButton* m_moveBtn1;
+ wxButton* m_moveBtn2;
+ wxGBPosition m_lastPos;
-private:
DECLARE_EVENT_TABLE()
};
-class MySizerFrame: public wxFrame
+
+// a frame for testing simple setting of "default size"
+class MySimpleSizerFrame : public wxFrame
{
public:
- wxPanel *panel;
- MySizerFrame(wxFrame *frame, char *title, int x, int y );
+ MySimpleSizerFrame(wxFrame* parent);
+
+ void OnSetSmallSize( wxCommandEvent &event);
+ void OnSetBigSize( wxCommandEvent &event);
+
+private:
+ wxTextCtrl *m_target;
+
+ DECLARE_EVENT_TABLE()
+};
+
+
+// a frame for testing simple setting of a frame containing
+// a sizer containing a panel containing a sizer containing
+// controls
+class MyNestedSizerFrame : public wxFrame
+{
+public:
+ MyNestedSizerFrame(wxFrame* parent);
+
+
+private:
+ wxTextCtrl *m_target;
+};
+
+// a frame with several wrapping sizers
+
+class MyWrapSizerFrame: public wxFrame
+{
+public:
+ MyWrapSizerFrame(wxFrame* parent);
+
+private:
+ void OnAddCheckbox(wxCommandEvent& event);
+ void OnRemoveCheckbox(wxCommandEvent& event);
+
+ void DoAddCheckbox();
+
+ wxWindow* m_checkboxParent;
+ wxSizer* m_wrapSizer;
+
+ DECLARE_EVENT_TABLE()
+};
+
+// controls and menu constants
+enum
+{
+ LAYOUT_TEST_SIZER = 101,
+ LAYOUT_TEST_NB_SIZER,
+ LAYOUT_TEST_GB_SIZER,
+ LAYOUT_TEST_PROPORTIONS,
+ LAYOUT_TEST_SET_MINIMAL,
+ LAYOUT_TEST_NESTED,
+ LAYOUT_TEST_WRAP,
+ LAYOUT_QUIT = wxID_EXIT,
+ LAYOUT_ABOUT = wxID_ABOUT
};
-#define LAYOUT_QUIT 100
-#define LAYOUT_TEST 101
-#define LAYOUT_ABOUT 102
-#define LAYOUT_LOAD_FILE 103
-#define LAYOUT_TEST_SIZER 104
-#define LAYOUT_TEST_NB 105