]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/scrollsub/scrollsub.cpp
wx-config2.6
[wxWidgets.git] / samples / scrollsub / scrollsub.cpp
index 3d16d9e91dab40aac2b02f1ccb51e2623d049a8c..7f90285eb75146045561bbf8f1469e0b350ed8f2 100644 (file)
@@ -115,7 +115,9 @@ public:
     void OnFullScreen( wxCommandEvent &event );
 
     wxScrolledWindow   *m_scrolled;
+#if wxUSE_LOG
     wxTextCtrl         *m_log;
+#endif // wxUSE_LOG
 
 private:
     DECLARE_DYNAMIC_CLASS(MyFrame)
@@ -144,12 +146,12 @@ END_EVENT_TABLE()
 
 MyScrolledWindow::MyScrolledWindow( wxWindow *parent, wxWindowID id,
                     const wxPoint &pos, const wxSize &size )
-        : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER, "test canvas" )
+        : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER, _T("test canvas") )
 {
-    MyTopLabels *top = new MyTopLabels( this, -1, wxDefaultPosition, wxSize(-1,25) );
-    MyRightLabels *right = new MyRightLabels( this, -1, wxDefaultPosition, wxSize(60,-1) );
+    MyTopLabels *top = new MyTopLabels( this, wxID_ANY, wxDefaultPosition, wxSize(wxDefaultCoord,25) );
+    MyRightLabels *right = new MyRightLabels( this, wxID_ANY, wxDefaultPosition, wxSize(60,wxDefaultCoord) );
 
-    m_canvas = new MyCanvas( this, top, right, -1, wxDefaultPosition, wxDefaultSize );
+    m_canvas = new MyCanvas( this, top, right, wxID_ANY, wxDefaultPosition, wxDefaultSize );
 
     SetTargetWindow( m_canvas );
 
@@ -171,7 +173,7 @@ MyScrolledWindow::MyScrolledWindow( wxWindow *parent, wxWindowID id,
 
     mainsizer->Add( middlesizer, 1, wxEXPAND );
 
-    SetAutoLayout( TRUE );
+    SetAutoLayout( true );
     SetSizer( mainsizer );
 }
 
@@ -207,13 +209,24 @@ MyTopLabels::MyTopLabels( wxScrolledWindow *parent, wxWindowID id, const wxPoint
     m_owner = parent;
 }
 
-void MyTopLabels::OnPaint( wxPaintEvent &event )
+void MyTopLabels::OnPaint( wxPaintEvent& WXUNUSED(event) )
 {
     wxPaintDC dc(this);
-    m_owner->PrepareDC( dc );
-    dc.DrawText( "Column 1", 5, 5 );
-    dc.DrawText( "Column 2", 105, 5 );
-    dc.DrawText( "Column 3", 205, 5 );
+
+    // This is wrong..  it will translate both x and y if the
+    // window is scrolled, the label windows are active in one
+    // direction only.  Do the action below instead -- RL.
+    //m_owner->PrepareDC( dc );
+
+    int xScrollUnits, xOrigin;
+
+    m_owner->GetViewStart( &xOrigin, 0 );
+    m_owner->GetScrollPixelsPerUnit( &xScrollUnits, 0 );
+    dc.SetDeviceOrigin( -xOrigin * xScrollUnits, 0 );
+
+    dc.DrawText( _T("Column 1"), 5, 5 );
+    dc.DrawText( _T("Column 2"), 105, 5 );
+    dc.DrawText( _T("Column 3"), 205, 5 );
 }
 
 // MyRightLabels
@@ -230,16 +243,27 @@ MyRightLabels::MyRightLabels( wxScrolledWindow *parent, wxWindowID id, const wxP
     m_owner = parent;
 }
 
-void MyRightLabels::OnPaint( wxPaintEvent &event )
+void MyRightLabels::OnPaint( wxPaintEvent& WXUNUSED(event) )
 {
     wxPaintDC dc(this);
-    m_owner->PrepareDC( dc );
-    dc.DrawText( "Row 1", 5, 5 );
-    dc.DrawText( "Row 2", 5, 30 );
-    dc.DrawText( "Row 3", 5, 55 );
-    dc.DrawText( "Row 4", 5, 80 );
-    dc.DrawText( "Row 5", 5, 105 );
-    dc.DrawText( "Row 6", 5, 130 );
+
+    // This is wrong..  it will translate both x and y if the
+    // window is scrolled, the label windows are active in one
+    // direction only.  Do the action below instead -- RL.
+    //m_owner->PrepareDC( dc );
+
+    int yScrollUnits, yOrigin;
+
+    m_owner->GetViewStart( 0, &yOrigin );
+    m_owner->GetScrollPixelsPerUnit( 0, &yScrollUnits );
+    dc.SetDeviceOrigin( 0, -yOrigin * yScrollUnits );
+
+    dc.DrawText( _T("Row 1"), 5, 5 );
+    dc.DrawText( _T("Row 2"), 5, 30 );
+    dc.DrawText( _T("Row 3"), 5, 55 );
+    dc.DrawText( _T("Row 4"), 5, 80 );
+    dc.DrawText( _T("Row 5"), 5, 105 );
+    dc.DrawText( _T("Row 6"), 5, 130 );
 }
 
 // MyCanvas
@@ -252,17 +276,20 @@ END_EVENT_TABLE()
 
 MyCanvas::MyCanvas( wxScrolledWindow *parent, MyTopLabels *top, MyRightLabels *right,
     wxWindowID id, const wxPoint &pos, const wxSize &size )
-        : wxPanel( parent, id, pos, size, wxSUNKEN_BORDER, "test canvas" )
+        : wxPanel( parent, id, pos, size, wxSUNKEN_BORDER, _T("test canvas") )
 {
     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, wxID_ANY, _T("Hallo I"), wxPoint(0,50), wxSize(100,25) );
+    (void)new wxButton( this, wxID_ANY, _T("Hallo II"), wxPoint(200,50), wxSize(100,25) );
+
+    (void)new wxTextCtrl( this, wxID_ANY, _T("Text I"), wxPoint(0,100), wxSize(100,25) );
+    (void)new wxTextCtrl( this, wxID_ANY, _T("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) );
+    (void)new wxComboBox( this, wxID_ANY, _T("ComboBox I"), wxPoint(0,150), wxSize(100,25));
+    (void)new wxComboBox( this, wxID_ANY, _T("ComboBox II"), wxPoint(200,150), wxSize(100,25));
 
     SetBackgroundColour( wxT("WHEAT") );
 
@@ -310,7 +337,7 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
         {
             wxLogMessage( wxT("Redraw first cell") );
             dc.DrawRectangle( 0, 0, 100, 25 );
-            dc.DrawText( "First Cell", 5, 5 );
+            dc.DrawText( _T("First Cell"), 5, 5 );
         }
     }
 
@@ -325,7 +352,7 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
         {
             wxLogMessage( wxT("Redraw second cell") );
             dc.DrawRectangle( 200, 0, 100, 25 );
-            dc.DrawText( "Second Cell", 205, 5 );
+            dc.DrawText( _T("Second Cell"), 205, 5 );
         }
     }
 
@@ -353,41 +380,47 @@ BEGIN_EVENT_TABLE(MyFrame,wxFrame)
 END_EVENT_TABLE()
 
 MyFrame::MyFrame()
-       : wxFrame( (wxFrame *)NULL, -1, "wxScrolledWindow sample",
+       : wxFrame( (wxFrame *)NULL, wxID_ANY, _T("wxScrolledWindow sample"),
                   wxPoint(20,20), wxSize(470,500) )
 {
     wxMenu *file_menu = new wxMenu();
-    file_menu->Append( ID_ABOUT, "&About...");
-    file_menu->Append( ID_FULL, "&Full screen on/off");
-    file_menu->Append( ID_QUIT, "E&xit\tAlt-X");
+    file_menu->Append( ID_ABOUT, _T("&About..."));
+    file_menu->Append( ID_FULL, _T("&Full screen on/off"));
+    file_menu->Append( ID_QUIT, _T("E&xit\tAlt-X"));
 
     wxMenuBar *menu_bar = new wxMenuBar();
-    menu_bar->Append(file_menu, "&File");
+    menu_bar->Append(file_menu, _T("&File"));
 
     SetMenuBar( menu_bar );
 
+#if wxUSE_STATUSBAR
     CreateStatusBar(2);
     int widths[] = { -1, 100 };
     SetStatusWidths( 2, widths );
+#endif // wxUSE_STATUSBAR
 
-    m_scrolled = new MyScrolledWindow( this, -1, wxDefaultPosition, wxSize(100,100) );
-    m_scrolled->SetScrollbars( 10, 10, 50, 100 );
+    m_scrolled = new MyScrolledWindow( this, wxID_ANY, wxDefaultPosition, wxSize(100,100) );
+    m_scrolled->SetScrollbars( 10, 10, 50, 50 );
 
-    m_log = new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE );
+#if wxUSE_LOG
+    m_log = new wxTextCtrl( this, wxID_ANY, _T("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;
+#endif // wxUSE_LOG
 
     wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
     topsizer->Add( m_scrolled, 1, wxEXPAND );
+#if wxUSE_LOG
     topsizer->Add( m_log, 0, wxEXPAND );
+#endif // wxUSE_LOG
 
-    SetAutoLayout( TRUE );
+    SetAutoLayout( true );
     SetSizer( topsizer );
 }
 
 void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
 {
-  Close( TRUE );
+  Close( true );
 }
 
 void MyFrame::OnFullScreen( wxCommandEvent &WXUNUSED(event) )
@@ -397,9 +430,9 @@ void MyFrame::OnFullScreen( wxCommandEvent &WXUNUSED(event) )
 
 void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
 {
-  (void)wxMessageBox( "wxScroll demo II\n"
-                      "Robert Roebling (c) 1998",
-                      "About wxScroll II Demo", wxICON_INFORMATION | wxOK );
+  (void)wxMessageBox( _T("wxScroll demo II\n")
+                      _T("Robert Roebling (c) 1998"),
+                      _T("About wxScroll II Demo"), wxICON_INFORMATION | wxOK );
 }
 
 //-----------------------------------------------------------------------------
@@ -409,8 +442,8 @@ void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
 bool MyApp::OnInit()
 {
     wxFrame *frame = new MyFrame();
-    frame->Show( TRUE );
+    frame->Show( true );
 
-    return TRUE;
+    return true;
 }