]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/samples/canvas/test/test.cpp
Added wxCanvasLine, Freeze() and Thaw() and mouse events (untested)
[wxWidgets.git] / contrib / samples / canvas / test / test.cpp
index e31de9ae4a136eb120cd955b9fd3b0eee4c9d088..6f109d3f2c497b71c73c878c045d16caf9ce0b01 100644 (file)
@@ -20,6 +20,8 @@
 #include <wx/image.h>
 #include <wx/file.h>
 #include <wx/timer.h>
+#include <wx/log.h>
+
 
 #include "smile.xpm"
 
@@ -43,10 +45,13 @@ public:
     void OnQuit( wxCommandEvent &event );
     void OnTimer( wxTimerEvent &event );
 
-    wxCanvas        *m_canvas;
-    wxCanvasObject  *m_sm1;
-    wxCanvasObject  *m_sm2;
-    wxTimer         *m_timer;
+    wxCanvas         *m_canvas;
+    wxCanvasObject   *m_sm1;
+    wxCanvasObject   *m_sm2;
+    wxCanvasObject   *m_sm3;
+    wxCanvasObject   *m_sm4;
+    wxTimer          *m_timer;
+    wxTextCtrl       *m_log;
 
 private:
     DECLARE_DYNAMIC_CLASS(MyFrame)
@@ -85,51 +90,76 @@ END_EVENT_TABLE()
 
 MyFrame::MyFrame()
        : wxFrame( (wxFrame *)NULL, -1, "wxCanvas sample",
-                  wxPoint(20,20), wxSize(470,360) )
+                  wxPoint(20,20), wxSize(470,460) )
 {
-  wxMenu *file_menu = new wxMenu();
-  file_menu->Append( ID_ABOUT, "&About...");
-  file_menu->AppendSeparator();
-  file_menu->Append( ID_QUIT, "E&xit");
+    wxMenu *file_menu = new wxMenu();
+    file_menu->Append( ID_ABOUT, "&About...");
+    file_menu->AppendSeparator();
+    file_menu->Append( ID_QUIT, "E&xit");
+
+    wxMenuBar *menu_bar = new wxMenuBar();
+    menu_bar->Append(file_menu, "&File");
+
+    SetMenuBar( menu_bar );
+
+    CreateStatusBar(2);
+    int widths[] = { -1, 100 };
+    SetStatusWidths( 2, widths );
+
+    m_canvas = new wxCanvas( this, -1, wxPoint(0,0), wxSize(10,10) );
+    
+    m_canvas->Freeze();
+
+    m_canvas->SetArea( 400, 600 );
+    m_canvas->SetColour( 255, 255, 255 );
 
-  wxMenuBar *menu_bar = new wxMenuBar();
-  menu_bar->Append(file_menu, "&File");
+    wxBitmap bitmap( smile_xpm );
+    wxImage image( bitmap );
 
-  SetMenuBar( menu_bar );
+    m_sm1 = new wxCanvasImage( image, 0, 70 );
+    m_canvas->Append( m_sm1 );
 
-  CreateStatusBar(2);
-  int widths[] = { -1, 100 };
-  SetStatusWidths( 2, widths );
+    int i;
+    for (i = 10; i < 300; i+=10)
+        m_canvas->Append( new wxCanvasRect( i,50,3,140, 255,0,0 ) );
 
-  m_canvas = new wxCanvas( this, -1, wxPoint(0,0), wxSize(10,10) );
+    m_sm2 = new wxCanvasImage( image, 0, 140 );
+    m_canvas->Append( m_sm2 );
 
-  m_canvas->SetArea( 400, 600 );
-  m_canvas->SetColour( 255, 255, 255 );
+    for (i = 15; i < 300; i+=10)
+        m_canvas->Append( new wxCanvasRect( i,50,3,140, 255,0,0 ) );
 
-  wxBitmap bitmap( smile_xpm );
-  wxImage image( bitmap );
+    wxButton *button = new wxButton( m_canvas, -1, "Hello", wxPoint(80,50) );
+    m_canvas->Append( new wxCanvasControl( button ) );
 
-  m_sm1 = new wxCanvasImage( image, 0, 70 );
-  m_canvas->Append( m_sm1 );
+    m_canvas->Append( new wxCanvasText( "Hello", 180, 50,
+                      wxGetApp().GetFontPath() + "/times.ttf", 20 ) );
 
-  int i;
-  for (i = 10; i < 300; i+=10)
-      m_canvas->Append( new wxCanvasRect( i,50,3,140, 255,0,0 ) );
+    m_sm3 = new wxCanvasImage( image, 0, 210 );
+    m_canvas->Append( m_sm3 );
 
-  m_sm2 = new wxCanvasImage( image, 0, 140 );
-  m_canvas->Append( m_sm2 );
+    for (i = 10; i < 300; i+=10)
+        m_canvas->Append( new wxCanvasLine( 10,150,i,200, 0,255,0 ) );
+                    
+    m_sm4 = new wxCanvasImage( image, 0, 270 );
+    m_canvas->Append( m_sm4 );
 
-  for (i = 15; i < 300; i+=10)
-      m_canvas->Append( new wxCanvasRect( i,50,3,140, 255,0,0 ) );
+    m_canvas->Thaw();
 
-  wxButton *button = new wxButton( m_canvas, -1, "Hello", wxPoint(80,50) );
-  m_canvas->Append( new wxCanvasControl( button ) );
+    m_log = new wxTextCtrl( this, -1, "", 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_canvas, 1, wxEXPAND );
+    topsizer->Add( m_log, 0, wxEXPAND );
 
-  m_canvas->Append( new wxCanvasText( "Hello", 180, 50,
-                    wxGetApp().GetFontPath() + "/times.ttf", 20 ) );
+    SetAutoLayout( TRUE );
+    SetSizer( topsizer );
 
-  m_timer = new wxTimer( this );
-  m_timer->Start( 100, FALSE );
+    m_timer = new wxTimer( this );
+    m_timer->Start( 100, FALSE );
 }
 
 MyFrame::~MyFrame()
@@ -146,6 +176,8 @@ void MyFrame::OnTimer( wxTimerEvent &WXUNUSED(event) )
 {
     m_sm1->Move( m_sm1->GetX()+1, m_sm1->GetY() );
     m_sm2->Move( m_sm2->GetX()+1, m_sm2->GetY() );
+    m_sm3->Move( m_sm3->GetX()+1, m_sm3->GetY() );
+    m_sm4->Move( m_sm4->GetX()+1, m_sm4->GetY() );
     wxWakeUpIdle();
 }