]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/scrollsub/scrollsub.cpp
fix for focus handling in generic wxListCtrl
[wxWidgets.git] / samples / scrollsub / scrollsub.cpp
index 330f41013bfe7ab25f0a73a05c02ce48cae461ae..c7ce613e4ef8505047bbe6666c20aafec5929413 100644 (file)
@@ -55,12 +55,12 @@ class MyTopLabels: public wxWindow
 public:
     MyTopLabels() {}
     MyTopLabels( wxScrolledWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size );
 public:
     MyTopLabels() {}
     MyTopLabels( wxScrolledWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size );
-   
+
     void OnPaint( wxPaintEvent &event );
     void OnPaint( wxPaintEvent &event );
-    
+
 private:
     wxScrolledWindow   *m_owner;
 private:
     wxScrolledWindow   *m_owner;
-    
+
     DECLARE_DYNAMIC_CLASS(MyTopLabels)
     DECLARE_EVENT_TABLE()
 };
     DECLARE_DYNAMIC_CLASS(MyTopLabels)
     DECLARE_EVENT_TABLE()
 };
@@ -72,12 +72,12 @@ class MyRightLabels: public wxWindow
 public:
     MyRightLabels() {}
     MyRightLabels( wxScrolledWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size );
 public:
     MyRightLabels() {}
     MyRightLabels( wxScrolledWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size );
-   
+
     void OnPaint( wxPaintEvent &event );
     void OnPaint( wxPaintEvent &event );
-    
+
 private:
     wxScrolledWindow   *m_owner;
 private:
     wxScrolledWindow   *m_owner;
-    
+
     DECLARE_DYNAMIC_CLASS(MyRightLabels)
     DECLARE_EVENT_TABLE()
 };
     DECLARE_DYNAMIC_CLASS(MyRightLabels)
     DECLARE_EVENT_TABLE()
 };
@@ -112,6 +112,7 @@ public:
 
     void OnAbout( wxCommandEvent &event );
     void OnQuit( wxCommandEvent &event );
 
     void OnAbout( wxCommandEvent &event );
     void OnQuit( wxCommandEvent &event );
+    void OnFullScreen( wxCommandEvent &event );
 
     wxScrolledWindow   *m_scrolled;
     wxTextCtrl         *m_log;
 
     wxScrolledWindow   *m_scrolled;
     wxTextCtrl         *m_log;
@@ -149,25 +150,25 @@ MyScrolledWindow::MyScrolledWindow( wxWindow *parent, wxWindowID id,
     MyRightLabels *right = new MyRightLabels( this, -1, wxDefaultPosition, wxSize(60,-1) );
 
     m_canvas = new MyCanvas( this, top, right, -1, wxDefaultPosition, wxDefaultSize );
     MyRightLabels *right = new MyRightLabels( this, -1, wxDefaultPosition, wxSize(60,-1) );
 
     m_canvas = new MyCanvas( this, top, right, -1, wxDefaultPosition, wxDefaultSize );
-    
+
     SetTargetWindow( m_canvas );
 
     SetTargetWindow( m_canvas );
 
-    SetBackgroundColour( "WHEAT" );
-  
+    SetBackgroundColour( wxT("WHEAT") );
+
     SetCursor( wxCursor( wxCURSOR_HAND ) );
     SetCursor( wxCursor( wxCURSOR_HAND ) );
-    
+
     wxBoxSizer *mainsizer = new wxBoxSizer( wxVERTICAL );
     wxBoxSizer *mainsizer = new wxBoxSizer( wxVERTICAL );
-    
+
     wxBoxSizer *topsizer = new wxBoxSizer( wxHORIZONTAL );
     topsizer->Add( 60,25 );
     wxBoxSizer *topsizer = new wxBoxSizer( wxHORIZONTAL );
     topsizer->Add( 60,25 );
-    topsizer->Add( top, 1 );
-    
+    topsizer->Add( top, 1, wxEXPAND );
+
     mainsizer->Add( topsizer, 0, wxEXPAND );
     mainsizer->Add( topsizer, 0, wxEXPAND );
-    
+
     wxBoxSizer *middlesizer = new wxBoxSizer( wxHORIZONTAL );
     middlesizer->Add( right, 0, wxEXPAND );
     middlesizer->Add( m_canvas, 1, wxEXPAND );
     wxBoxSizer *middlesizer = new wxBoxSizer( wxHORIZONTAL );
     middlesizer->Add( right, 0, wxEXPAND );
     middlesizer->Add( m_canvas, 1, wxEXPAND );
-    
+
     mainsizer->Add( middlesizer, 1, wxEXPAND );
 
     SetAutoLayout( TRUE );
     mainsizer->Add( middlesizer, 1, wxEXPAND );
 
     SetAutoLayout( TRUE );
@@ -184,7 +185,7 @@ void MyScrolledWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
 
 /*
     wxSize size( GetClientSize() );
 
 /*
     wxSize size( GetClientSize() );
-    
+
     long w,h;
     dc.GetTextExtent( wxT("Headline"), &w, &h );
 
     long w,h;
     dc.GetTextExtent( wxT("Headline"), &w, &h );
 
@@ -210,9 +211,9 @@ void MyTopLabels::OnPaint( wxPaintEvent &event )
 {
     wxPaintDC dc(this);
     m_owner->PrepareDC( dc );
 {
     wxPaintDC dc(this);
     m_owner->PrepareDC( dc );
-    dc.DrawText( "Colummn 1", 5, 5 );
-    dc.DrawText( "Colummn 2", 105, 5 );
-    dc.DrawText( "Colummn 3", 205, 5 );
+    dc.DrawText( "Column 1", 5, 5 );
+    dc.DrawText( "Column 2", 105, 5 );
+    dc.DrawText( "Column 3", 205, 5 );
 }
 
 // MyRightLabels
 }
 
 // MyRightLabels
@@ -256,15 +257,15 @@ MyCanvas::MyCanvas( wxScrolledWindow *parent, MyTopLabels *top, MyRightLabels *r
     m_owner = parent;
     m_topLabels = top;
     m_rightLabels = right;
     m_owner = parent;
     m_topLabels = top;
     m_rightLabels = right;
-    
+
     (void)new wxButton( this, -1, "Hallo I", wxPoint(0,50), wxSize(100,25) );
     (void)new wxButton( this, -1, "Hallo II", wxPoint(200,50), wxSize(100,25) );
     (void)new wxButton( this, -1, "Hallo I", wxPoint(0,50), wxSize(100,25) );
     (void)new wxButton( this, -1, "Hallo II", wxPoint(200,50), wxSize(100,25) );
-    
+
     (void)new wxTextCtrl( this, -1, "Text I", wxPoint(0,100), wxSize(100,25) );
     (void)new wxTextCtrl( this, -1, "Text II", wxPoint(200,100), wxSize(100,25) );
 
     (void)new wxTextCtrl( this, -1, "Text I", wxPoint(0,100), wxSize(100,25) );
     (void)new wxTextCtrl( this, -1, "Text II", wxPoint(200,100), wxSize(100,25) );
 
-    SetBackgroundColour( "WHEAT" );
-  
+    SetBackgroundColour( wxT("WHEAT") );
+
     SetCursor( wxCursor( wxCURSOR_IBEAM ) );
 }
 
     SetCursor( wxCursor( wxCURSOR_IBEAM ) );
 }
 
@@ -278,27 +279,27 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
     m_owner->PrepareDC( dc );
 
     dc.SetPen( *wxBLACK_PEN );
     m_owner->PrepareDC( dc );
 
     dc.SetPen( *wxBLACK_PEN );
-    
+
     // OK, let's assume we are a grid control and we have two
     // grid cells. Here in OnPaint we want to know which cell
     // to redraw so that we prevent redrawing cells that don't
     // need to get redrawn. We have one cell at (0,0) and one
     // more at (200,0), both having a size of (100,25).
     // OK, let's assume we are a grid control and we have two
     // grid cells. Here in OnPaint we want to know which cell
     // to redraw so that we prevent redrawing cells that don't
     // need to get redrawn. We have one cell at (0,0) and one
     // more at (200,0), both having a size of (100,25).
-    
-    // We can query how much the window has been scrolled 
+
+    // We can query how much the window has been scrolled
     // by calling CalcUnscrolledPosition()
     // by calling CalcUnscrolledPosition()
-    
+
     int scroll_x = 0;
     int scroll_y = 0;
     m_owner->CalcUnscrolledPosition( scroll_x, scroll_y, &scroll_x, &scroll_y );
     int scroll_x = 0;
     int scroll_y = 0;
     m_owner->CalcUnscrolledPosition( scroll_x, scroll_y, &scroll_x, &scroll_y );
-    
+
     // We also need to know the size of the window to see which
     // cells are completely hidden and not get redrawn
     // We also need to know the size of the window to see which
     // cells are completely hidden and not get redrawn
-    
+
     int size_x = 0;
     int size_y = 0;
     GetClientSize( &size_x, &size_y );
     int size_x = 0;
     int size_y = 0;
     GetClientSize( &size_x, &size_y );
-    
+
     // First cell: (0,0)(100,25)
     // It it on screen?
     if ((0+100-scroll_x > 0) && (0+25-scroll_y > 0) &&
     // First cell: (0,0)(100,25)
     // It it on screen?
     if ((0+100-scroll_x > 0) && (0+25-scroll_y > 0) &&
@@ -307,13 +308,13 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
         // Has the region on screen been exposed?
            if (IsExposed(0,0,100,25))
            {
         // Has the region on screen been exposed?
            if (IsExposed(0,0,100,25))
            {
-               wxLogMessage( "Redraw first cell" );
+               wxLogMessage( wxT("Redraw first cell") );
             dc.DrawRectangle( 0, 0, 100, 25 );
                dc.DrawText( "First Cell", 5, 5 );
            }
     }
             dc.DrawRectangle( 0, 0, 100, 25 );
                dc.DrawText( "First Cell", 5, 5 );
            }
     }
-    
-    
+
+
     // Second cell: (0,200)(100,25)
     // It it on screen?
     if ((200+100-scroll_x > 0) && (0+25-scroll_y > 0) &&
     // Second cell: (0,200)(100,25)
     // It it on screen?
     if ((200+100-scroll_x > 0) && (0+25-scroll_y > 0) &&
@@ -322,12 +323,12 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
         // Has the region on screen been exposed?
            if (IsExposed(200,0,100,25))
            {
         // Has the region on screen been exposed?
            if (IsExposed(200,0,100,25))
            {
-               wxLogMessage( "Redraw second cell" );
+               wxLogMessage( wxT("Redraw second cell") );
             dc.DrawRectangle( 200, 0, 100, 25 );
                dc.DrawText( "Second Cell", 205, 5 );
            }
     }
             dc.DrawRectangle( 200, 0, 100, 25 );
                dc.DrawText( "Second Cell", 205, 5 );
            }
     }
-    
+
 }
 
 void MyCanvas::ScrollWindow( int dx, int dy, const wxRect *rect )
 }
 
 void MyCanvas::ScrollWindow( int dx, int dy, const wxRect *rect )
@@ -340,13 +341,15 @@ void MyCanvas::ScrollWindow( int dx, int dy, const wxRect *rect )
 // MyFrame
 
 const int ID_QUIT  = 108;
 // MyFrame
 
 const int ID_QUIT  = 108;
-const int ID_ABOUT = 109;
+const int ID_FULL  = 109;
+const int ID_ABOUT = 110;
 
 IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
 
 BEGIN_EVENT_TABLE(MyFrame,wxFrame)
   EVT_MENU    (ID_ABOUT, MyFrame::OnAbout)
   EVT_MENU    (ID_QUIT,  MyFrame::OnQuit)
 
 IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
 
 BEGIN_EVENT_TABLE(MyFrame,wxFrame)
   EVT_MENU    (ID_ABOUT, MyFrame::OnAbout)
   EVT_MENU    (ID_QUIT,  MyFrame::OnQuit)
+  EVT_MENU    (ID_FULL,  MyFrame::OnFullScreen)
 END_EVENT_TABLE()
 
 MyFrame::MyFrame()
 END_EVENT_TABLE()
 
 MyFrame::MyFrame()
@@ -354,7 +357,8 @@ MyFrame::MyFrame()
                   wxPoint(20,20), wxSize(470,500) )
 {
     wxMenu *file_menu = new wxMenu();
                   wxPoint(20,20), wxSize(470,500) )
 {
     wxMenu *file_menu = new wxMenu();
-    file_menu->Append( ID_ABOUT, "&About..");
+    file_menu->Append( ID_ABOUT, "&About...");
+    file_menu->Append( ID_FULL, "&Full screen on/off");
     file_menu->Append( ID_QUIT, "E&xit\tAlt-X");
 
     wxMenuBar *menu_bar = new wxMenuBar();
     file_menu->Append( ID_QUIT, "E&xit\tAlt-X");
 
     wxMenuBar *menu_bar = new wxMenuBar();
@@ -368,11 +372,11 @@ MyFrame::MyFrame()
 
     m_scrolled = new MyScrolledWindow( this, -1, wxDefaultPosition, wxSize(100,100) );
     m_scrolled->SetScrollbars( 10, 10, 50, 100 );
 
     m_scrolled = new MyScrolledWindow( this, -1, wxDefaultPosition, wxSize(100,100) );
     m_scrolled->SetScrollbars( 10, 10, 50, 100 );
-  
+
     m_log = new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE );
     wxLog *old_log = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) );
     delete old_log;
     m_log = new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE );
     wxLog *old_log = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) );
     delete old_log;
-    
+
     wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
     topsizer->Add( m_scrolled, 1, wxEXPAND );
     topsizer->Add( m_log, 0, wxEXPAND );
     wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
     topsizer->Add( m_scrolled, 1, wxEXPAND );
     topsizer->Add( m_log, 0, wxEXPAND );
@@ -386,6 +390,11 @@ void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
   Close( TRUE );
 }
 
   Close( TRUE );
 }
 
+void MyFrame::OnFullScreen( wxCommandEvent &WXUNUSED(event) )
+{
+   ShowFullScreen( !IsFullScreen(), wxFULLSCREEN_NOBORDER|wxFULLSCREEN_NOCAPTION );
+}
+
 void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
 {
   (void)wxMessageBox( "wxScroll demo II\n"
 void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
 {
   (void)wxMessageBox( "wxScroll demo II\n"