+ RedrawYAxis();
+}
+
+wxPlotCurve *wxPlotWindow::GetCurrent()
+{
+ return m_current;
+}
+
+void wxPlotWindow::Move( wxPlotCurve* curve, int pixels_up )
+{
+ m_area->DeleteCurve( curve );
+
+ curve->SetOffsetY( curve->GetOffsetY() + pixels_up );
+
+ m_area->Refresh( FALSE );
+
+ RedrawYAxis();
+}
+
+void wxPlotWindow::OnMoveUp( wxCommandEvent& WXUNUSED(event) )
+{
+ if (!m_current) return;
+
+ Move( m_current, 25 );
+}
+
+void wxPlotWindow::OnMoveDown( wxCommandEvent& WXUNUSED(event) )
+{
+ if (!m_current) return;
+
+ Move( m_current, -25 );
+}
+
+void wxPlotWindow::Enlarge( wxPlotCurve *curve, double factor )
+{
+ m_area->DeleteCurve( curve );
+
+ double range = curve->GetEndY() - curve->GetStartY();
+ double new_range = range * factor;
+ double middle = curve->GetEndY() - range/2;
+ curve->SetStartY( middle - new_range / 2 );
+ curve->SetEndY( middle + new_range / 2 );
+
+ m_area->Refresh( FALSE );
+
+ RedrawYAxis();
+}
+
+void wxPlotWindow::OnEnlarge100( wxCommandEvent& WXUNUSED(event) )
+{
+ if (!m_current) return;
+
+ Enlarge( m_current, 2.0 );
+}
+
+void wxPlotWindow::OnEnlarge50( wxCommandEvent& WXUNUSED(event) )
+{
+ if (!m_current) return;
+
+ Enlarge( m_current, 1.5 );
+}
+
+void wxPlotWindow::OnShrink50( wxCommandEvent& WXUNUSED(event) )
+{
+ if (!m_current) return;
+
+ Enlarge( m_current, 0.5 );
+}
+
+void wxPlotWindow::OnShrink33( wxCommandEvent& WXUNUSED(event) )
+{
+ if (!m_current) return;