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
, const wxChar
*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 // wxWidgets 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"));
87 frame
->CreateStatusBar(3);
88 #endif // wxUSE_STATUSBAR
89 frame
->SetMenuBar(menu_bar
);
98 /***** Immlementation for class MyFrame *****/
100 BEGIN_EVENT_TABLE(MyFrame
, wxFrame
)
101 EVT_MENU( ID_LOAD
, MyFrame::OnLoad
)
102 EVT_MENU( ID_STORE
, MyFrame::OnStore
)
103 EVT_MENU( ID_QUIT
, MyFrame::OnQuit
)
106 MyFrame::MyFrame( wxWindow
* parent
, const wxChar
*title
)
107 : wxFrame( parent
, wxID_ANY
, title
, wxDefaultPosition
,
109 wxCLIP_CHILDREN
| wxMINIMIZE_BOX
| wxMAXIMIZE_BOX
|
110 wxRESIZE_BORDER
| wxSYSTEM_MENU
| wxCAPTION
| wxCLOSE_BOX
,
113 mpInternalFrm
= (wxPanel
*)this;
115 mpClientWnd
= CreateTextCtrl( _("Client window") );
117 // btw, creation of internal frame is needed for wxGtk version
118 // to act correctly (since menu-bar is a separate window there..)
120 mpLayout
= new wxFrameLayout( mpInternalFrm
, mpClientWnd
);
122 #if defined(__WXGTK__) || defined(__WXX11__)
123 // real-time dosn't work well under wxGtk yet
124 cbCommonPaneProperties props
;
125 mpLayout
->GetPaneProperties( props
);
127 props
.mRealTimeUpdatesOn
= false; // off
129 mpLayout
->SetPaneProperties( props
, wxALL_PANES
);
132 mpLayout
->PushDefaultPlugins();
133 mpLayout
->AddPlugin( CLASSINFO( cbBarHintsPlugin
) ); // facny "X"es and beveal for barso
134 //mpLayout->AddPlugin( CLASSINFO( cbHintAnimationPlugin ) );
136 cbDimInfo
sizes( 80,65, // when docked horizontally
137 80,65, // when docked vertically
138 80,30, // when floated
139 true, // the bar is fixed-size
140 5, // vertical gap (bar border)
141 5 // horizontal gap (bar border)
145 for( int i
= 1; i
<= 20; ++i
)
148 wxSprintf( buf
, wxT("%d"), i
);
149 wxString name
= wxString(wxT("Bar-"));
152 sizes
.mIsFixed
= i
% 5 > 0; // every fifth bar is not fixed-size
154 if ( !sizes
.mIsFixed
) name
+= wxT(" (flexible)");
156 mpLayout
->AddBar( CreateTextCtrl(name
),// bar window
157 sizes
, i
% MAX_PANES
,// alignment ( 0-top,1-bottom, etc)
158 0, // insert into 0th row (vert. position)
159 0, // offset from the start of row (in pixels)
160 name
// name to refere in customization pop-ups
167 // layout is not a window, should be released manually
172 wxTextCtrl
* MyFrame::CreateTextCtrl( const wxString
& value
)
174 wxTextCtrl
* pCtrl
= new wxTextCtrl( mpInternalFrm
, wxID_ANY
, value
,
175 wxPoint(0,0), wxSize(1,1), wxTE_MULTILINE
);
177 pCtrl
->SetBackgroundColour( wxColour( 255,255,255 ) );
182 void MyFrame::OnLoad( wxCommandEvent
& WXUNUSED(event
) )
184 wxMessageBox(wxT("Hey - you found a BIG question-mark !!"));
187 void MyFrame::OnStore( wxCommandEvent
& WXUNUSED(event
) )
189 wxMessageBox(wxT("Hey - you found another BIG question-mark !!"));
192 void MyFrame::OnQuit( wxCommandEvent
& WXUNUSED(event
) )
194 Show( false ); // TRICK:: hide it, to avoid flickered destruction