///////////////////////////////////////////////////////////////////////////// // Name: main.cpp // Purpose: Contrib. demo // Author: Aleksandras Gluchovas // Modified by: // Created: 24/11/98 // RCS-ID: $Id$ // Copyright: (c) Aleksandras Gluchovas // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ #pragma implementation "fl_sample.cpp" #pragma interface "fl_sample.cpp" #endif // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "controlbar.h" // plugins used #include "barhintspl.h" #include "hintanimpl.h" #include "wx/textctrl.h" // ADDED by alex (linker complaints...): #ifndef wxDUMMY_OBJ_INCLUDED char wxDummyChar=0; #endif #define ID_LOAD 102 #define ID_STORE 103 #define ID_QUIT 104 #define LAYOUT_FILE "layouts.dat" class MyApp: public wxApp { public: bool OnInit(void); }; class MyFrame: public wxFrame { protected: wxFrameLayout* mpLayout; wxWindow* mpClientWnd; wxPanel* mpInternalFrm; wxTextCtrl* CreateTextCtrl( const wxString& value ); public: MyFrame( wxWindow* parent, char *title ); ~MyFrame(); void OnQuit( wxCommandEvent& event ); bool OnClose(void) { return TRUE; } DECLARE_EVENT_TABLE() }; /***** Implementation for class MyApp *****/ IMPLEMENT_APP (MyApp) bool MyApp::OnInit(void) { // wxWindows boiler-plate: MyFrame *frame = new MyFrame(NULL, "wxFrameLayout sample"); wxMenu *file_menu = new wxMenu; file_menu->Append( ID_LOAD, "&Load layout" ); file_menu->Append( ID_STORE, "&Store layout" ); file_menu->AppendSeparator(); file_menu->Append( ID_QUIT, "E&xit" ); wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append(file_menu, "&File"); frame->CreateStatusBar(3); frame->SetMenuBar(menu_bar); frame->Show(TRUE); SetTopWindow(frame); return TRUE; } /***** Immlementation for class MyFrame *****/ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU( ID_QUIT, MyFrame::OnQuit ) END_EVENT_TABLE() MyFrame::MyFrame( wxWindow* parent, char *title ) : wxFrame( parent, -1, "NewTest-II", wxDefaultPosition, wxSize( 700, 500 ), wxCLIP_CHILDREN | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxTHICK_FRAME | wxSYSTEM_MENU | wxCAPTION, "freimas" ) { #ifdef __WXMSW__ mpInternalFrm = (wxPanel*)this; #else mpInternalFrm = new wxPanel( this, -1 ); #endif mpClientWnd = CreateTextCtrl( "Client window" ); // btw, creation of internal frame is needed for wxGtk version // to act correctly (since menu-bar is a separate window there..) mpLayout = new wxFrameLayout( mpInternalFrm, mpClientWnd ); #ifdef __WXGTK__ // real-time dosn't work well under wxGtk yet cbCommonPaneProperties props; mpLayout->GetPaneProperties( props ); props.mRealTimeUpdatesOn = FALSE; // off mpLayout->SetPaneProperties( props, wxALL_PANES ); #endif mpLayout->PushDefaultPlugins(); mpLayout->AddPlugin( CLASSINFO( cbBarHintsPlugin ) ); // facny "X"es and beveal for barso //mpLayout->AddPlugin( CLASSINFO( cbHintAnimationPlugin ) ); cbDimInfo sizes( 80,65, // when docked horizontally 80,65, // when docked vertically 80,30, // when floated TRUE, // the bar is fixed-size 5, // vertical gap (bar border) 5 // horizontal gap (bar border) ); // drop-in 20 bars for( int i = 1; i <= 10; ++i ) { char buf[4]; sprintf( buf, "%d", i ); wxString name = wxString("Bar-"); name += buf; sizes.mIsFixed = i % 5 > 0; // every fifth bar is not fixed-size if ( !sizes.mIsFixed ) name += " (flexible)"; mpLayout->AddBar( CreateTextCtrl(name),// bar window sizes, i % MAX_PANES,// alignment ( 0-top,1-bottom, etc) 0, // insert into 0th row (vert. position) 0, // offset from the start of row (in pixels) name // name to refere in customization pop-ups ); } } MyFrame::~MyFrame() { // layout is not a window, should be released manually if ( mpLayout ) delete mpLayout; } wxTextCtrl* MyFrame::CreateTextCtrl( const wxString& value ) { wxTextCtrl* pCtrl = new wxTextCtrl( mpInternalFrm, -1, value, wxPoint(0,0), wxSize(1,1), wxTE_MULTILINE ); pCtrl->SetBackgroundColour( wxColour( 255,255,255 ) ); return pCtrl; } void MyFrame::OnQuit( wxCommandEvent& event ) { Show( FALSE ); // TRICK:: hide it, to avoid flickered destruction Close(TRUE); } #ifdef __HACK_MY_MSDEV40__ ////////////// new 2.0-magic (linker errors...) //////////////// wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) { wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" ); wxToolBar* toolBar = OnCreateToolBar(style, id, name); if (toolBar) { SetToolBar(toolBar); PositionToolBar(); return toolBar; } else { return NULL; } } wxToolBar* wxFrame::OnCreateToolBar(long style, wxWindowID id, const wxString& name) { return new wxToolBar(this, id, wxDefaultPosition, wxDefaultSize, style, name); } #endif