]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/plot/plot.cpp
Added SetSelectionMode
[wxWidgets.git] / samples / plot / plot.cpp
index 50a1932c3935864220869cf932019b6501d2d03a..447944fd7bc1dab66fb888bfdcff84c87b8bcbee 100644 (file)
@@ -45,7 +45,7 @@ public:
     virtual wxInt32 GetStartX()
         { return 0; }
     virtual wxInt32 GetEndX()
     virtual wxInt32 GetStartX()
         { return 0; }
     virtual wxInt32 GetEndX()
-        { return 10000; }
+        { return 7000; }
     
     virtual double GetY( wxInt32 x )
         { 
     
     virtual double GetY( wxInt32 x )
         { 
@@ -64,6 +64,9 @@ public:
 
     void OnAbout( wxCommandEvent &event );
     void OnQuit( wxCommandEvent &event );
 
     void OnAbout( wxCommandEvent &event );
     void OnQuit( wxCommandEvent &event );
+    
+    void OnPlotClick( wxPlotEvent &event );
+    void OnPlotDClick( wxPlotEvent &event );
 
     wxPlotWindow   *m_plot;
     wxTextCtrl     *m_log;
 
     wxPlotWindow   *m_plot;
     wxTextCtrl     *m_log;
@@ -93,8 +96,10 @@ const int ID_ABOUT = 109;
 IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
 
 BEGIN_EVENT_TABLE(MyFrame,wxFrame)
 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_ABOUT, MyFrame::OnAbout)
+  EVT_MENU             (ID_QUIT,  MyFrame::OnQuit)
+  EVT_PLOT_CLICKED         ( -1,  MyFrame::OnPlotClick)
+  EVT_PLOT_DOUBLECLICKED   ( -1,  MyFrame::OnPlotDClick)
 END_EVENT_TABLE()
 
 MyFrame::MyFrame()
 END_EVENT_TABLE()
 
 MyFrame::MyFrame()
@@ -114,11 +119,17 @@ MyFrame::MyFrame()
     int widths[] = { -1, 100 };
     SetStatusWidths( 2, widths );
 
     int widths[] = { -1, 100 };
     SetStatusWidths( 2, widths );
 
-    m_plot = new wxPlotWindow( this, -1, wxPoint(0,0), wxSize(100,100), wxSUNKEN_BORDER );
-    m_plot->SetScrollbars( 10, 10, 500, 0 );
+    m_plot = new wxPlotWindow( this, -1, wxPoint(0,0), wxSize(100,100), wxSUNKEN_BORDER | wxPLOT_DEFAULT );
+    m_plot->SetUnitsPerValue( 0.01 );
 
     m_plot->Add( new MyPlotCurve( 0,  -1.5, 1.5 ) );
     m_plot->Add( new MyPlotCurve( 50, -1.5, 1.5 ) );
 
     m_plot->Add( new MyPlotCurve( 0,  -1.5, 1.5 ) );
     m_plot->Add( new MyPlotCurve( 50, -1.5, 1.5 ) );
+    wxPlotOnOffCurve *oo = new wxPlotOnOffCurve( 10 );
+    oo->Add( 10, 20 );
+    oo->Add( 25, 30 );
+    oo->Add( 100, 400 );
+    oo->Add( 1000, 2000 );
+    m_plot->Add( oo );
   
     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 ) );
   
     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 ) );
@@ -145,6 +156,20 @@ void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
                       "About wxPlotWindow Demo", wxICON_INFORMATION | wxOK );
 }
 
                       "About wxPlotWindow Demo", wxICON_INFORMATION | wxOK );
 }
 
+void MyFrame::OnPlotClick( wxPlotEvent &event )
+{
+    double x = event.GetPosition() * m_plot->GetUnitsPerValue();
+    double y = event.GetCurve()->GetY( event.GetPosition() );
+    wxLogMessage( "Clicked on curve at x coordinate: %f, value: %f", x, y );
+}
+
+void MyFrame::OnPlotDClick( wxPlotEvent &event )
+{
+    double x = event.GetPosition() * m_plot->GetUnitsPerValue();
+    double y = event.GetCurve()->GetY( event.GetPosition() );
+    wxLogMessage( "Double clicked on curve at x coordinate: %f, value: %f", x, y );
+}
+
 //-----------------------------------------------------------------------------
 // MyApp
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // MyApp
 //-----------------------------------------------------------------------------