]> git.saurik.com Git - wxWidgets.git/blob - contrib/samples/fl/fl_sample2.cpp
implemented IsModified() and DiscardEdits()
[wxWidgets.git] / contrib / samples / fl / fl_sample2.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: fl_sample2.cpp
3 // Purpose: Contrib. demo
4 // Author: Aleksandras Gluchovas
5 // Modified by: Sebastian Haase (June 21, 2001)
6 // Created: 24/11/98
7 // RCS-ID: $Id$
8 // Copyright: (c) Aleksandras Gluchovas
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
11
12 // For compilers that support precompilation, includes "wx/wx.h".
13 #include "wx/wxprec.h"
14
15 #ifdef __BORLANDC__
16 #pragma hdrstop
17 #endif
18
19 #ifndef WX_PRECOMP
20 #include "wx/wx.h"
21 #endif
22
23 #include "wx/textctrl.h"
24
25 // fl headers
26 #include "wx/fl/controlbar.h"
27
28 // plugins used
29 #include "wx/fl/barhintspl.h"
30 #include "wx/fl/hintanimpl.h"
31
32 #define ID_LOAD 102
33 #define ID_STORE 103
34 #define ID_QUIT 104
35
36
37 class MyApp: public wxApp
38 {
39 public:
40 bool OnInit(void);
41 };
42
43 class MyFrame: public wxFrame
44 {
45 protected:
46 wxFrameLayout* mpLayout;
47 wxWindow* mpClientWnd;
48
49 wxTextCtrl* CreateTextCtrl( const wxString& value );
50
51 public:
52 MyFrame( wxWindow* parent, const wxChar *title );
53 ~MyFrame();
54
55 void populateMyFrame();
56 void OnLoad( wxCommandEvent& event );
57 void OnStore( wxCommandEvent& event );
58 void OnQuit( wxCommandEvent& event );
59
60 bool OnClose(void) { return TRUE; }
61
62 DECLARE_EVENT_TABLE()
63 };
64
65 /***** Implementation for class MyApp *****/
66
67 IMPLEMENT_APP (MyApp)
68
69 bool MyApp::OnInit(void)
70 {
71 // wxWindows boiler-plate:
72
73 MyFrame *frame = new MyFrame(NULL, _("wxFrameLayout sample"));
74
75 wxMenu *file_menu = new wxMenu;
76
77 file_menu->Append( ID_LOAD, _("&Load layout") );
78 file_menu->Append( ID_STORE, _("&Store layout") );
79 file_menu->AppendSeparator();
80
81 file_menu->Append( ID_QUIT, _("E&xit") );
82
83 wxMenuBar *menu_bar = new wxMenuBar;
84
85 menu_bar->Append(file_menu, _("&File"));
86
87 frame->CreateStatusBar(3);
88 frame->SetMenuBar(menu_bar);
89
90 frame->Show(TRUE);
91 SetTopWindow(frame);
92 frame->populateMyFrame();
93
94 return TRUE;
95 }
96
97 /***** Immlementation for class MyFrame *****/
98
99 BEGIN_EVENT_TABLE(MyFrame, wxFrame)
100 EVT_MENU( ID_LOAD, MyFrame::OnLoad )
101 EVT_MENU( ID_STORE, MyFrame::OnStore )
102 EVT_MENU( ID_QUIT, MyFrame::OnQuit )
103 END_EVENT_TABLE()
104
105 MyFrame::MyFrame( wxWindow* parent, const wxChar *title )
106 : wxFrame( parent, -1, _("NewTest-II"), wxDefaultPosition,
107 wxSize( 700, 500 ),
108 wxCLIP_CHILDREN | wxMINIMIZE_BOX | wxMAXIMIZE_BOX |
109 wxTHICK_FRAME | wxSYSTEM_MENU | wxCAPTION,
110 wxT("freimas") )
111 {
112 }
113
114 void MyFrame::populateMyFrame()
115 {
116 mpClientWnd = CreateTextCtrl( _("Client window") );
117
118 mpLayout = new wxFrameLayout( this, mpClientWnd );
119
120 /// mpLayout->PushDefaultPlugins();
121 /// mpLayout->AddPlugin( CLASSINFO( cbBarHintsPlugin ) ); // facny "X"es and beveal for barso
122 /// //mpLayout->AddPlugin( CLASSINFO( cbHintAnimationPlugin ) );
123
124 cbDimInfo sizes( 80,65, // when docked horizontally
125 80,165, // when docked vertically
126 180,30, // when floated
127 TRUE, // the bar is fixed-size
128 5, // vertical gap (bar border)
129 5 // horizontal gap (bar border)
130 );
131
132 // drop-in 20 bars
133 for( int i = 1; i <= 10; ++i )
134 {
135 wxSleep(1);
136 wxYield(); // CHECK!
137
138 wxChar buf[4];
139 wxSprintf( buf, wxT("%d"), i );
140 wxString name = wxString(wxT("Bar-"));
141 name += buf;
142
143 //sizes.mIsFixed = i % 2 > 0; // every fifth bar is not fixed-size
144
145 if ( !sizes.mIsFixed ) name += wxT(" (flexible)");
146 // mpLayout->AddBar( CreateTextCtrl(name),// bar window
147 mpLayout->AddBar( new wxTextCtrl(this, -1, name),// bar window
148 sizes, i % MAX_PANES,// alignment ( 0-top,1-bottom, etc)
149 0, // insert into 0th row (vert. position)
150 0, // offset from the start of row (in pixels)
151 name // name to refere in customization pop-ups
152 );
153
154 mpLayout->RecalcLayout(true);
155
156 // Layout();
157 // Refresh();
158 }
159 }
160
161 MyFrame::~MyFrame()
162 {
163 // layout is not a window, should be released manually
164 if ( mpLayout )
165 delete mpLayout;
166 }
167
168 wxTextCtrl* MyFrame::CreateTextCtrl( const wxString& value )
169 {
170 wxTextCtrl* pCtrl = new wxTextCtrl( this, -1, value,
171 wxPoint(0,0), wxSize(1,1), wxTE_MULTILINE );
172
173 pCtrl->SetBackgroundColour( wxColour( 255,255,255 ) );
174
175 return pCtrl;
176 }
177
178 void MyFrame::OnLoad( wxCommandEvent& event )
179 {
180 wxMessageBox(wxT("Hey - you found a BIG question-mark !!"));
181 }
182
183 void MyFrame::OnStore( wxCommandEvent& event )
184 {
185 wxMessageBox(wxT("Hey - you found another BIG question-mark !!"));
186 }
187
188 void MyFrame::OnQuit( wxCommandEvent& event )
189 {
190 Show( FALSE ); // TRICK:: hide it, to avoid flickered destruction
191
192 Close(TRUE);
193 }
194