1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxPlotWindow
4 // Author: Robert Roebling
7 // Copyright: (c) Robert Roebling
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
15 #if defined(__GNUG__) && !defined(__APPLE__)
16 #pragma interface "plot.h"
21 #include "wx/scrolwin.h"
23 #include "wx/dynarray.h"
25 #ifdef WXMAKINGDLL_PLOT
26 #define WXDLLIMPEXP_PLOT WXEXPORT
27 #define WXDLLIMPEXP_DATA_PLOT(type) WXEXPORT type
28 #elif defined(WXUSINGDLL)
29 #define WXDLLIMPEXP_PLOT WXIMPORT
30 #define WXDLLIMPEXP_DATA_PLOT(type) WXIMPORT type
31 #else // not making nor using DLL
32 #define WXDLLIMPEXP_PLOT
33 #define WXDLLIMPEXP_DATA_PLOT(type) type
36 //-----------------------------------------------------------------------------
38 //-----------------------------------------------------------------------------
40 class WXDLLIMPEXP_PLOT wxPlotEvent
;
41 class WXDLLIMPEXP_PLOT wxPlotCurve
;
42 class WXDLLIMPEXP_PLOT wxPlotValues
;
43 class WXDLLIMPEXP_PLOT wxPlotArea
;
44 class WXDLLIMPEXP_PLOT wxPlotXAxisArea
;
45 class WXDLLIMPEXP_PLOT wxPlotYAxisArea
;
46 class WXDLLIMPEXP_PLOT wxPlotWindow
;
47 class WXDLLIMPEXP_CORE wxStaticText
;
49 //-----------------------------------------------------------------------------
51 //-----------------------------------------------------------------------------
53 BEGIN_DECLARE_EVENT_TYPES()
54 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_SEL_CHANGING
, 941)
55 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_SEL_CHANGED
, 921)
56 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_CLICKED
, 922)
57 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_DOUBLECLICKED
, 923)
58 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_ZOOM_IN
, 924)
59 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_ZOOM_OUT
, 925)
60 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_VALUE_SEL_CREATING
, 926)
61 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_VALUE_SEL_CREATED
, 927)
62 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_VALUE_SEL_CHANGING
, 928)
63 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_VALUE_SEL_CHANGED
, 929)
64 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_SEL_CREATING
, 930)
65 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_SEL_CREATED
, 931)
66 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_SEL_CHANGING
, 932)
67 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_SEL_CHANGED
, 933)
68 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_BEGIN_X_LABEL_EDIT
, 934)
69 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_END_X_LABEL_EDIT
, 935)
70 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_BEGIN_Y_LABEL_EDIT
, 936)
71 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_END_Y_LABEL_EDIT
, 937)
72 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_BEGIN_TITLE_EDIT
, 938)
73 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_END_TITLE_EDIT
, 939)
74 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_CREATE
, 940)
75 END_DECLARE_EVENT_TYPES()
77 #define wxPLOT_X_AXIS 0x0004
78 #define wxPLOT_Y_AXIS 0x0008
79 #define wxPLOT_BUTTON_MOVE 0x0010
80 #define wxPLOT_BUTTON_ZOOM 0x0020
81 #define wxPLOT_BUTTON_ENLARGE 0x0040
83 #define wxPLOT_BUTTON_ALL (wxPLOT_BUTTON_MOVE|wxPLOT_BUTTON_ZOOM|wxPLOT_BUTTON_ENLARGE)
84 #define wxPLOT_DEFAULT (wxPLOT_X_AXIS|wxPLOT_Y_AXIS | wxPLOT_BUTTON_ALL)
86 //-----------------------------------------------------------------------------
88 //-----------------------------------------------------------------------------
90 class WXDLLIMPEXP_PLOT wxPlotEvent
: public wxNotifyEvent
93 wxPlotEvent( wxEventType commandType
= wxEVT_NULL
, int id
= 0 );
95 wxPlotCurve
*GetCurve()
97 void SetCurve( wxPlotCurve
*curve
)
102 void SetZoom( double zoom
)
105 wxInt32
GetPosition()
106 { return m_position
; }
107 void SetPosition( wxInt32 pos
)
108 { m_position
= pos
; }
111 wxPlotCurve
*m_curve
;
116 //-----------------------------------------------------------------------------
118 //-----------------------------------------------------------------------------
120 class WXDLLIMPEXP_PLOT wxPlotCurve
: public wxObject
123 wxPlotCurve( int offsetY
, double startY
, double endY
);
125 virtual wxInt32
GetStartX() = 0;
126 virtual wxInt32
GetEndX() = 0;
128 virtual double GetY( wxInt32 x
) = 0;
130 void SetStartY( double startY
)
131 { m_startY
= startY
; }
132 double GetStartY() const
134 void SetEndY( double endY
)
136 double GetEndY() const
138 void SetOffsetY( int offsetY
)
139 { m_offsetY
= offsetY
; }
140 int GetOffsetY() const
141 { return m_offsetY
; }
143 void SetPenNormal( const wxPen
&pen
)
144 { m_penNormal
= pen
; }
145 void SetPenSelected( const wxPen
&pen
)
146 { m_penSelected
= pen
; }
148 const wxPen
& GetPenNormal() const
149 { return m_penNormal
; }
150 const wxPen
& GetPenSelected() const
151 { return m_penSelected
; }
160 DECLARE_ABSTRACT_CLASS(wxPlotCurve
)
163 //-----------------------------------------------------------------------------
165 //-----------------------------------------------------------------------------
167 class WXDLLIMPEXP_PLOT wxPlotOnOff
177 WX_DECLARE_OBJARRAY_WITH_DECL(wxPlotOnOff
, wxArrayPlotOnOff
,
178 class WXDLLIMPEXP_PLOT
);
180 class WXDLLIMPEXP_PLOT wxPlotOnOffCurve
: public wxObject
183 wxPlotOnOffCurve( int offsetY
);
190 void SetOffsetY( int offsetY
)
191 { m_offsetY
= offsetY
; }
193 { return m_offsetY
; }
195 void Add( wxInt32 on
, wxInt32 off
, void *clientData
= NULL
);
198 wxInt32
GetOn( size_t index
);
199 wxInt32
GetOff( size_t index
);
200 void* GetClientData( size_t index
);
201 wxPlotOnOff
*GetAt( size_t index
);
203 virtual void DrawOnLine( wxDC
&dc
, wxCoord y
, wxCoord start
, wxCoord end
, void *clientData
);
204 virtual void DrawOffLine( wxDC
&dc
, wxCoord y
, wxCoord start
, wxCoord end
);
211 wxArrayPlotOnOff m_marks
;
213 DECLARE_CLASS(wxPlotOnOffCurve
)
216 //-----------------------------------------------------------------------------
218 //-----------------------------------------------------------------------------
220 class WXDLLIMPEXP_PLOT wxPlotArea
: public wxWindow
224 wxPlotArea( wxPlotWindow
*parent
);
226 void OnPaint( wxPaintEvent
&event
);
227 void OnMouse( wxMouseEvent
&event
);
229 void DrawCurve( wxDC
*dc
, wxPlotCurve
*curve
, int from
= -1, int to
= -1 );
230 void DrawOnOffCurve( wxDC
*dc
, wxPlotOnOffCurve
*curve
, int from
= -1, int to
= -1 );
231 void DeleteCurve( wxPlotCurve
*curve
, int from
= -1, int to
= -1 );
233 virtual void ScrollWindow( int dx
, int dy
, const wxRect
*rect
);
236 wxPlotWindow
*m_owner
;
239 DECLARE_CLASS(wxPlotArea
)
240 DECLARE_EVENT_TABLE()
243 //-----------------------------------------------------------------------------
245 //-----------------------------------------------------------------------------
247 class WXDLLIMPEXP_PLOT wxPlotXAxisArea
: public wxWindow
251 wxPlotXAxisArea( wxPlotWindow
*parent
);
253 void OnPaint( wxPaintEvent
&event
);
254 void OnMouse( wxMouseEvent
&event
);
257 wxPlotWindow
*m_owner
;
259 DECLARE_CLASS(wxPlotXAxisArea
)
260 DECLARE_EVENT_TABLE()
263 //-----------------------------------------------------------------------------
265 //-----------------------------------------------------------------------------
267 class WXDLLIMPEXP_PLOT wxPlotYAxisArea
: public wxWindow
271 wxPlotYAxisArea( wxPlotWindow
*parent
);
273 void OnPaint( wxPaintEvent
&event
);
274 void OnMouse( wxMouseEvent
&event
);
277 wxPlotWindow
*m_owner
;
279 DECLARE_CLASS(wxPlotYAxisArea
)
280 DECLARE_EVENT_TABLE()
283 //-----------------------------------------------------------------------------
285 //-----------------------------------------------------------------------------
287 class WXDLLIMPEXP_PLOT wxPlotWindow
: public wxScrolledWindow
291 wxPlotWindow( wxWindow
*parent
, wxWindowID id
, const wxPoint
&pos
, const wxSize
&size
, int flags
= wxPLOT_DEFAULT
);
297 void Add( wxPlotCurve
*curve
);
298 void Delete( wxPlotCurve
* curve
);
301 wxPlotCurve
*GetAt( size_t n
);
303 void SetCurrentCurve( wxPlotCurve
* current
);
304 wxPlotCurve
*GetCurrentCurve();
306 // mark list accessors
307 // -------------------
309 void Add( wxPlotOnOffCurve
*curve
);
310 void Delete( wxPlotOnOffCurve
* curve
);
312 size_t GetOnOffCurveCount();
313 wxPlotOnOffCurve
*GetOnOffCurveAt( size_t n
);
315 // vertical representation
316 // -----------------------
318 void Move( wxPlotCurve
* curve
, int pixels_up
);
319 void Enlarge( wxPlotCurve
*curve
, double factor
);
321 // horizontal representation
322 // -------------------------
324 void SetUnitsPerValue( double upv
);
325 double GetUnitsPerValue()
326 { return m_xUnitsPerValue
; }
328 void SetZoom( double zoom
);
335 void SetScrollOnThumbRelease( bool scrollOnThumbRelease
= true )
336 { m_scrollOnThumbRelease
= scrollOnThumbRelease
; }
337 bool GetScrollOnThumbRelease()
338 { return m_scrollOnThumbRelease
; }
340 void SetEnlargeAroundWindowCentre( bool enlargeAroundWindowCentre
= true )
341 { m_enlargeAroundWindowCentre
= enlargeAroundWindowCentre
; }
342 bool GetEnlargeAroundWindowCentre()
343 { return m_enlargeAroundWindowCentre
; }
345 // events (may be overridden)
346 // --------------------------
348 void OnMoveUp( wxCommandEvent
& event
);
349 void OnMoveDown( wxCommandEvent
& event
);
351 void OnEnlarge( wxCommandEvent
& event
);
352 void OnShrink( wxCommandEvent
& event
);
353 void OnZoomIn( wxCommandEvent
& event
);
354 void OnZoomOut( wxCommandEvent
& event
);
356 void OnScroll2( wxScrollWinEvent
& event
);
361 void RedrawEverything();
365 void ResetScrollbar();
367 void AddChartTitle( const wxString
&, wxFont
= *wxNORMAL_FONT
, wxColour
= *wxBLACK
);
370 friend class wxPlotArea
;
371 friend class wxPlotXAxisArea
;
372 friend class wxPlotYAxisArea
;
374 double m_xUnitsPerValue
;
378 wxList m_onOffCurves
;
381 wxPlotXAxisArea
*m_xaxis
;
382 wxPlotYAxisArea
*m_yaxis
;
383 wxPlotCurve
*m_current
;
385 bool m_scrollOnThumbRelease
;
386 bool m_enlargeAroundWindowCentre
;
390 wxColour m_titleColour
;
391 wxStaticText
* m_titleStaticText
;
392 wxBoxSizer
* m_plotAndTitleSizer
;
394 void DrawChartTitle();
396 DECLARE_CLASS(wxPlotWindow
)
397 DECLARE_EVENT_TABLE()
400 // ----------------------------------------------------------------------------
402 // ----------------------------------------------------------------------------
404 typedef void (wxEvtHandler::*wxPlotEventFunction
)(wxPlotEvent
&);
406 #if WXWIN_COMPATIBILITY_EVENT_TYPES
408 #define EVT_PLOT(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
409 #define EVT_PLOT_SEL_CHANGING(id, fn) { wxEVT_PLOT_SEL_CHANGING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
410 #define EVT_PLOT_SEL_CHANGED(id, fn) { wxEVT_PLOT_SEL_CHANGED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
411 #define EVT_PLOT_CLICKED(id, fn) { wxEVT_PLOT_CLICKED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
412 #define EVT_PLOT_DOUBLECLICKED(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
413 #define EVT_PLOT_ZOOM_IN(id, fn) { wxEVT_PLOT_ZOOM_IN, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
414 #define EVT_PLOT_ZOOM_OUT(id, fn) { wxEVT_PLOT_ZOOM_OUT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
415 #define EVT_PLOT_VALUE_SEL_CREATING(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
416 #define EVT_PLOT_VALUE_SEL_CREATED(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
417 #define EVT_PLOT_VALUE_SEL_CHANGING(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
418 #define EVT_PLOT_VALUE_SEL_CHANGED(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
419 #define EVT_PLOT_AREA_SEL_CREATING(id, fn) { wxEVT_PLOT_AREA_SEL_CREATING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
420 #define EVT_PLOT_AREA_SEL_CREATED(id, fn) { wxEVT_PLOT_AREA_SEL_CREATED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
421 #define EVT_PLOT_AREA_SEL_CHANGING(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
422 #define EVT_PLOT_AREA_SEL_CHANGED(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
423 #define EVT_PLOT_BEGIN_X_LABEL_EDIT(id, fn) { wxEVT_PLOT_BEGIN_X_LABEL_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
424 #define EVT_PLOT_END_X_LABEL_EDIT(id, fn) { wxEVT_PLOT_END_X_LABEL_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
425 #define EVT_PLOT_BEGIN_Y_LABEL_EDIT(id, fn) { wxEVT_PLOT_BEGIN_Y_LABEL_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
426 #define EVT_PLOT_END_Y_LABEL_EDIT(id, fn) { wxEVT_PLOT_END_Y_LABEL_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
427 #define EVT_PLOT_BEGIN_TITLE_EDIT(id, fn) { wxEVT_PLOT_BEGIN_TITLE_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
428 #define EVT_PLOT_END_TITLE_EDIT(id, fn) { wxEVT_PLOT_END_TITLE_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
432 #define EVT_PLOT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_DOUBLECLICKED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
433 #define EVT_PLOT_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_SEL_CHANGING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
434 #define EVT_PLOT_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_SEL_CHANGED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
435 #define EVT_PLOT_CLICKED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_CLICKED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
436 #define EVT_PLOT_DOUBLECLICKED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_DOUBLECLICKED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
437 #define EVT_PLOT_ZOOM_IN(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_ZOOM_IN, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
438 #define EVT_PLOT_ZOOM_OUT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_ZOOM_OUT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
439 #define EVT_PLOT_VALUE_SEL_CREATING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CREATING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
440 #define EVT_PLOT_VALUE_SEL_CREATED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CREATED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
441 #define EVT_PLOT_VALUE_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CHANGING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
442 #define EVT_PLOT_VALUE_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CHANGED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
443 #define EVT_PLOT_AREA_SEL_CREATING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CREATING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
444 #define EVT_PLOT_AREA_SEL_CREATED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CREATED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
445 #define EVT_PLOT_AREA_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CHANGING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
446 #define EVT_PLOT_AREA_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CHANGED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
447 #define EVT_PLOT_BEGIN_X_LABEL_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_BEGIN_X_LABEL_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
448 #define EVT_PLOT_END_X_LABEL_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_END_X_LABEL_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
449 #define EVT_PLOT_BEGIN_Y_LABEL_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_BEGIN_Y_LABEL_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
450 #define EVT_PLOT_END_Y_LABEL_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_END_Y_LABEL_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
451 #define EVT_PLOT_BEGIN_TITLE_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_BEGIN_TITLE_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
452 #define EVT_PLOT_END_TITLE_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_END_TITLE_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),