1 /////////////////////////////////////////////////////////////////////////////
2 // Name: fl_sample1.cpp
3 // Purpose: Contrib. demo
4 // Author: Aleksandras Gluchovas
5 // Modified by: Sebastian Haase (June 21, 2001)
8 // Copyright: (c) Aleksandras Gluchovas
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
12 // For compilers that support precompilation, includes "wx/wx.h".
13 #include "wx/wxprec.h"
23 #include "wx/textctrl.h"
26 #include "wx/fl/controlbar.h"
29 #include "wx/fl/barhintspl.h"
30 #include "wx/fl/hintanimpl.h"
36 class MyApp
: public wxApp
42 class MyFrame
: public wxFrame
45 wxFrameLayout
* mpLayout
;
46 wxWindow
* mpClientWnd
;
47 wxPanel
* mpInternalFrm
;
49 wxTextCtrl
* CreateTextCtrl( const wxString
& value
);
52 MyFrame( wxWindow
* parent
, char *title
);
55 void OnLoad( wxCommandEvent
& event
);
56 void OnStore( wxCommandEvent
& event
);
57 void OnQuit( wxCommandEvent
& event
);
59 bool OnClose(void) { return TRUE
; }
64 /***** Implementation for class MyApp *****/
68 bool MyApp::OnInit(void)
70 // wxWindows boiler-plate:
72 MyFrame
*frame
= new MyFrame(NULL
, "wxFrameLayout sample");
74 wxMenu
*file_menu
= new wxMenu
;
76 file_menu
->Append( ID_LOAD
, "&Load layout" );
77 file_menu
->Append( ID_STORE
, "&Store layout" );
78 file_menu
->AppendSeparator();
80 file_menu
->Append( ID_QUIT
, "E&xit" );
82 wxMenuBar
*menu_bar
= new wxMenuBar
;
84 menu_bar
->Append(file_menu
, "&File");
86 frame
->CreateStatusBar(3);
87 frame
->SetMenuBar(menu_bar
);
96 /***** Immlementation for class MyFrame *****/
98 BEGIN_EVENT_TABLE(MyFrame
, wxFrame
)
99 EVT_MENU( ID_LOAD
, MyFrame::OnLoad
)
100 EVT_MENU( ID_STORE
, MyFrame::OnStore
)
101 EVT_MENU( ID_QUIT
, MyFrame::OnQuit
)
104 MyFrame::MyFrame( wxWindow
* parent
, char *title
)
105 : wxFrame( parent
, -1, "NewTest-II", wxDefaultPosition
,
107 wxCLIP_CHILDREN
| wxMINIMIZE_BOX
| wxMAXIMIZE_BOX
|
108 wxTHICK_FRAME
| wxSYSTEM_MENU
| wxCAPTION
,
111 mpInternalFrm
= (wxPanel
*)this;
113 mpClientWnd
= CreateTextCtrl( "Client window" );
115 // btw, creation of internal frame is needed for wxGtk version
116 // to act correctly (since menu-bar is a separate window there..)
118 mpLayout
= new wxFrameLayout( mpInternalFrm
, mpClientWnd
);
120 #if defined(__WXGTK__) || defined(__WXX11__)
121 // real-time dosn't work well under wxGtk yet
122 cbCommonPaneProperties props
;
123 mpLayout
->GetPaneProperties( props
);
125 props
.mRealTimeUpdatesOn
= FALSE
; // off
127 mpLayout
->SetPaneProperties( props
, wxALL_PANES
);
130 mpLayout
->PushDefaultPlugins();
131 mpLayout
->AddPlugin( CLASSINFO( cbBarHintsPlugin
) ); // facny "X"es and beveal for barso
132 //mpLayout->AddPlugin( CLASSINFO( cbHintAnimationPlugin ) );
134 cbDimInfo
sizes( 80,65, // when docked horizontally
135 80,65, // when docked vertically
136 80,30, // when floated
137 TRUE
, // the bar is fixed-size
138 5, // vertical gap (bar border)
139 5 // horizontal gap (bar border)
143 for( int i
= 1; i
<= 20; ++i
)
146 sprintf( buf
, "%d", i
);
147 wxString name
= wxString("Bar-");
150 sizes
.mIsFixed
= i
% 5 > 0; // every fifth bar is not fixed-size
152 if ( !sizes
.mIsFixed
) name
+= " (flexible)";
154 mpLayout
->AddBar( CreateTextCtrl(name
),// bar window
155 sizes
, i
% MAX_PANES
,// alignment ( 0-top,1-bottom, etc)
156 0, // insert into 0th row (vert. position)
157 0, // offset from the start of row (in pixels)
158 name
// name to refere in customization pop-ups
165 // layout is not a window, should be released manually
170 wxTextCtrl
* MyFrame::CreateTextCtrl( const wxString
& value
)
172 wxTextCtrl
* pCtrl
= new wxTextCtrl( mpInternalFrm
, -1, value
,
173 wxPoint(0,0), wxSize(1,1), wxTE_MULTILINE
);
175 pCtrl
->SetBackgroundColour( wxColour( 255,255,255 ) );
180 void MyFrame::OnLoad( wxCommandEvent
& event
)
182 wxMessageBox("Hey - you found a BIG question-mark !!");
185 void MyFrame::OnStore( wxCommandEvent
& event
)
187 wxMessageBox("Hey - you found another BIG question-mark !!");
190 void MyFrame::OnQuit( wxCommandEvent
& event
)
192 Show( FALSE
); // TRICK:: hide it, to avoid flickered destruction