home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / contrib / samples / fl / fl_sample1 / fl_sample1.cpp < prev    next >
C/C++ Source or Header  |  2002-03-21  |  6KB  |  197 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        fl_sample1.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: fl_sample1.cpp,v 1.2 2002/03/21 10:32:02 JS Exp $
  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. class MyApp: public wxApp
  37. public:
  38.     bool OnInit(void);
  39. };
  40.  
  41. class MyFrame: public wxFrame
  42. {
  43. protected:
  44.     wxFrameLayout* mpLayout;
  45.     wxWindow*      mpClientWnd;
  46.     wxPanel*       mpInternalFrm;
  47.     
  48.     wxTextCtrl* CreateTextCtrl( const wxString& value );
  49.     
  50. public:
  51.     MyFrame( wxWindow* parent, char *title );
  52.     ~MyFrame();
  53.     
  54.     void OnLoad( wxCommandEvent& event );
  55.     void OnStore( wxCommandEvent& event );
  56.     void OnQuit( wxCommandEvent& event );
  57.     
  58.     bool OnClose(void) { return TRUE; }
  59.     
  60.     DECLARE_EVENT_TABLE()
  61. };
  62.  
  63. /***** Implementation for class MyApp *****/
  64.  
  65. IMPLEMENT_APP    (MyApp)
  66.  
  67. bool MyApp::OnInit(void)
  68. {
  69.     // wxWindows boiler-plate:
  70.     
  71.     MyFrame *frame = new MyFrame(NULL, "wxFrameLayout sample");
  72.     
  73.     wxMenu *file_menu = new wxMenu;
  74.     
  75.     file_menu->Append( ID_LOAD,  "&Load layout"  );
  76.     file_menu->Append( ID_STORE, "&Store layout"  );
  77.     file_menu->AppendSeparator();
  78.     
  79.     file_menu->Append( ID_QUIT, "E&xit" );
  80.     
  81.     wxMenuBar *menu_bar = new wxMenuBar;
  82.     
  83.     menu_bar->Append(file_menu, "&File");
  84.     
  85.     frame->CreateStatusBar(3);
  86.     frame->SetMenuBar(menu_bar);
  87.     
  88.     frame->Show(TRUE);
  89.     
  90.     SetTopWindow(frame);
  91.     
  92.     return TRUE;
  93. }
  94.  
  95. /***** Immlementation for class MyFrame *****/
  96.  
  97. BEGIN_EVENT_TABLE(MyFrame, wxFrame)
  98.     EVT_MENU( ID_LOAD,  MyFrame::OnLoad  )
  99.     EVT_MENU( ID_STORE, MyFrame::OnStore )
  100.     EVT_MENU( ID_QUIT,  MyFrame::OnQuit  )
  101. END_EVENT_TABLE()
  102.  
  103. MyFrame::MyFrame( wxWindow* parent, char *title )
  104.     : wxFrame( parent, -1, "NewTest-II", wxDefaultPosition,
  105.           wxSize( 700, 500 ),
  106.           wxCLIP_CHILDREN | wxMINIMIZE_BOX | wxMAXIMIZE_BOX |
  107.           wxTHICK_FRAME   | wxSYSTEM_MENU  | wxCAPTION,
  108.           "freimas" )
  109. {
  110.     mpInternalFrm = (wxPanel*)this;
  111.     
  112.     mpClientWnd = CreateTextCtrl( "Client window" );
  113.     
  114.     // btw, creation of internal frame is needed for wxGtk version
  115.     // to act correctly (since menu-bar is a separate window there..)
  116.     
  117.     mpLayout = new wxFrameLayout( mpInternalFrm, mpClientWnd );
  118.     
  119. #if defined(__WXGTK__) || defined(__WXX11__)
  120.     // real-time dosn't work well under wxGtk yet
  121.     cbCommonPaneProperties props;
  122.     mpLayout->GetPaneProperties( props );
  123.     
  124.     props.mRealTimeUpdatesOn = FALSE; // off
  125.     
  126.     mpLayout->SetPaneProperties( props, wxALL_PANES );    
  127. #endif
  128.     
  129.     mpLayout->PushDefaultPlugins();
  130.     mpLayout->AddPlugin( CLASSINFO( cbBarHintsPlugin ) ); // facny "X"es and beveal for barso
  131.     //mpLayout->AddPlugin( CLASSINFO( cbHintAnimationPlugin ) );
  132.     
  133.     cbDimInfo sizes( 80,65, // when docked horizontally      
  134.                      80,65, // when docked vertically        
  135.                      80,30, // when floated                  
  136.                      TRUE,  // the bar is fixed-size
  137.                      5,     // vertical gap (bar border)
  138.                      5      // horizontal gap (bar border)
  139.                    ); 
  140.     
  141.     // drop-in 20 bars
  142.     for( int i = 1; i <= 20; ++i )
  143.     {
  144.         char buf[4];
  145.         sprintf( buf, "%d", i );
  146.         wxString name = wxString("Bar-");
  147.         name += buf;
  148.         
  149.         sizes.mIsFixed = i % 5 > 0; // every fifth bar is not fixed-size
  150.         
  151.         if ( !sizes.mIsFixed ) name += " (flexible)";
  152.         
  153.         mpLayout->AddBar( CreateTextCtrl(name),// bar window
  154.                           sizes, i % MAX_PANES,// alignment ( 0-top,1-bottom, etc)
  155.                           0,                   // insert into 0th row (vert. position)
  156.                           0,                   // offset from the start of row (in pixels)
  157.                           name                 // name to refere in customization pop-ups
  158.                         );
  159.     }
  160. }
  161.  
  162. MyFrame::~MyFrame()
  163. {
  164.     // layout is not a window, should be released manually
  165.     if ( mpLayout ) 
  166.         delete mpLayout;
  167. }
  168.  
  169. wxTextCtrl* MyFrame::CreateTextCtrl( const wxString& value )
  170. {
  171.     wxTextCtrl* pCtrl = new wxTextCtrl( mpInternalFrm, -1, value, 
  172.                                 wxPoint(0,0), wxSize(1,1), wxTE_MULTILINE );
  173.     
  174.     pCtrl->SetBackgroundColour( wxColour( 255,255,255 ) );
  175.     
  176.     return pCtrl;
  177. }
  178.  
  179. void MyFrame::OnLoad( wxCommandEvent& event )
  180. {
  181.     wxMessageBox("Hey - you found a BIG question-mark !!");
  182. }
  183.  
  184. void MyFrame::OnStore( wxCommandEvent& event )
  185. {
  186.     wxMessageBox("Hey - you found another BIG question-mark !!");
  187. }
  188.  
  189. void MyFrame::OnQuit( wxCommandEvent& event )
  190. {
  191.     Show( FALSE ); // TRICK:: hide it, to avoid flickered destruction
  192.     
  193.     Close(TRUE);
  194. }
  195.  
  196.