class WXDLLIMPEXP_PLOT wxPlotXAxisArea;
class WXDLLIMPEXP_PLOT wxPlotYAxisArea;
class WXDLLIMPEXP_PLOT wxPlotWindow;
+class WXDLLIMPEXP_CORE wxStaticText;
//-----------------------------------------------------------------------------
// consts
void SetStartY( double startY )
{ m_startY = startY; }
- double GetStartY()
+ double GetStartY() const
{ return m_startY; }
void SetEndY( double endY )
{ m_endY = endY; }
- double GetEndY()
+ double GetEndY() const
{ return m_endY; }
void SetOffsetY( int offsetY )
{ m_offsetY = offsetY; }
- int GetOffsetY()
+ int GetOffsetY() const
{ return m_offsetY; }
void SetPenNormal( const wxPen &pen )
void SetPenSelected( const wxPen &pen )
{ m_penSelected = pen; }
+ const wxPen& GetPenNormal() const
+ { return m_penNormal; }
+ const wxPen& GetPenSelected() const
+ { return m_penSelected; }
+
private:
int m_offsetY;
double m_startY;
void ResetScrollbar();
+ void AddChartTitle( const wxString&, wxFont = *wxNORMAL_FONT, wxColour = *wxBLACK );
+
private:
friend class wxPlotArea;
friend class wxPlotXAxisArea;
bool m_scrollOnThumbRelease;
bool m_enlargeAroundWindowCentre;
+ wxString m_title;
+ wxFont m_titleFont;
+ wxColour m_titleColour;
+ wxStaticText* m_titleStaticText;
+ wxBoxSizer* m_plotAndTitleSizer;
+
+ void DrawChartTitle();
+
DECLARE_CLASS(wxPlotWindow)
DECLARE_EVENT_TABLE()
};
m_plot->SetUnitsPerValue( 0.01 );
// m_plot->SetScrollOnThumbRelease( true );
+ //Add a blue, 16pt chart title
+ wxString titleText( _T("The Chart Title") );
+ wxFont titleFont( *wxNORMAL_FONT );
+ titleFont.SetPointSize( 16 );
+ wxColour titleColour( *wxBLUE );
+ m_plot->AddChartTitle( titleText, titleFont, titleColour );
+
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 );
#include "wx/log.h"
#include "wx/intl.h"
#include "wx/dcclient.h"
+#include "wx/stattext.h"
#endif
#include "wx/plot/plot.h"
IMPLEMENT_ABSTRACT_CLASS(wxPlotCurve, wxObject)
wxPlotCurve::wxPlotCurve( int offsetY, double startY, double endY )
+: m_penNormal(*wxGREY_PEN), m_penSelected(*wxBLACK_PEN)
{
m_offsetY = offsetY;
m_startY = startY;
wxPlotCurve *curve = (wxPlotCurve*) node->GetData();
if (curve == m_owner->GetCurrentCurve())
- dc.SetPen( *wxBLACK_PEN );
+ dc.SetPen( curve->GetPenSelected() );
else
- dc.SetPen( *wxGREY_PEN );
+ dc.SetPen( curve->GetPenNormal() );
DrawCurve( &dc, curve, update_x-1, update_x+update_width+2 );
END_EVENT_TABLE()
wxPlotWindow::wxPlotWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, int flag )
- : wxScrolledWindow( parent, id, pos, size, flag, _T("plotcanvas") )
+ : wxScrolledWindow( parent, id, pos, size, flag, _T("plotcanvas") ),
+ m_titleStaticText( NULL )
{
m_xUnitsPerValue = 1.0;
m_xZoom = 1.0;
wxBoxSizer *plotsizer = new wxBoxSizer( wxHORIZONTAL );
+ //Add sizer to hold the title and plot.
+ //Title to be added later.
+ m_plotAndTitleSizer = new wxBoxSizer( wxVERTICAL );
+ m_plotAndTitleSizer->Add( plotsizer, 1, wxEXPAND | wxTOP, 10 );
+
if ((GetWindowStyleFlag() & wxPLOT_Y_AXIS) != 0)
{
m_yaxis = new wxPlotYAxisArea( this );
m_xaxis = (wxPlotXAxisArea*) NULL;
}
- mainsizer->Add( plotsizer, 1, wxEXPAND );
+ mainsizer->Add( m_plotAndTitleSizer, 1, wxEXPAND );
SetAutoLayout( true );
SetSizer( mainsizer );
(int)(((max*m_xZoom)/wxPLOT_SCROLL_STEP)+1), 0 );
}
+void wxPlotWindow::AddChartTitle(const wxString& title, wxFont font,
+ wxColour colour)
+{
+ m_title = title;
+ m_titleFont = font;
+ m_titleColour = colour;
+ DrawChartTitle();
+}
+
+void wxPlotWindow::DrawChartTitle()
+{
+ if(m_title.size() != 0)
+ {
+ //If it is already added, remove child and delete
+ if(m_titleStaticText)
+ {
+ RemoveChild( m_titleStaticText );
+ m_titleStaticText->Destroy();
+ }
+
+ //Create the text control and set the font, colour
+ m_titleStaticText = new wxStaticText( this, -1, m_title );
+ m_titleStaticText->SetFont( m_titleFont );
+ m_titleStaticText->SetForegroundColour( m_titleColour );
+
+ //Create a sizer for the title. Prepend it to the Plot + Title sizer.
+ wxBoxSizer* titleSizer = new wxBoxSizer( wxHORIZONTAL );
+ titleSizer->Add( m_titleStaticText, 0, wxALIGN_CENTER | wxALL, 10 );
+ m_plotAndTitleSizer->Prepend( titleSizer, 0, wxALIGN_CENTER_HORIZONTAL );
+
+ //Finally, force layout
+ m_plotAndTitleSizer->Layout();
+ }
+}
+
void wxPlotWindow::RedrawXAxis()
{
if (m_xaxis)
- m_xaxis->Refresh( false );
+ m_xaxis->Refresh( true );
}
void wxPlotWindow::RedrawYAxis()
if (m_yaxis)
m_yaxis->Refresh( true );
m_area->Refresh( true );
+
+ DrawChartTitle();
}
void wxPlotWindow::OnZoomIn( wxCommandEvent& WXUNUSED(event) )