1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxPlotWindow
4 // Author: Robert Roebling
7 // Copyright: (c) Robert Roebling
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
17 #include "wx/dynarray.h"
20 #include "wx/scrolwin.h"
22 #ifdef WXMAKINGDLL_PLOT
23 #define WXDLLIMPEXP_PLOT WXEXPORT
24 #define WXDLLIMPEXP_DATA_PLOT(type) WXEXPORT type
25 #elif defined(WXUSINGDLL)
26 #define WXDLLIMPEXP_PLOT WXIMPORT
27 #define WXDLLIMPEXP_DATA_PLOT(type) WXIMPORT type
28 #else // not making nor using DLL
29 #define WXDLLIMPEXP_PLOT
30 #define WXDLLIMPEXP_DATA_PLOT(type) type
33 //-----------------------------------------------------------------------------
35 //-----------------------------------------------------------------------------
37 class WXDLLIMPEXP_PLOT wxPlotEvent
;
38 class WXDLLIMPEXP_PLOT wxPlotCurve
;
39 class WXDLLIMPEXP_PLOT wxPlotValues
;
40 class WXDLLIMPEXP_PLOT wxPlotArea
;
41 class WXDLLIMPEXP_PLOT wxPlotXAxisArea
;
42 class WXDLLIMPEXP_PLOT wxPlotYAxisArea
;
43 class WXDLLIMPEXP_PLOT wxPlotWindow
;
44 class WXDLLIMPEXP_CORE wxStaticText
;
46 //-----------------------------------------------------------------------------
48 //-----------------------------------------------------------------------------
50 BEGIN_DECLARE_EVENT_TYPES()
51 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_SEL_CHANGING
, 941)
52 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_SEL_CHANGED
, 921)
53 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_CLICKED
, 922)
54 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_DOUBLECLICKED
, 923)
55 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_ZOOM_IN
, 924)
56 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_ZOOM_OUT
, 925)
57 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_VALUE_SEL_CREATING
, 926)
58 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_VALUE_SEL_CREATED
, 927)
59 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_VALUE_SEL_CHANGING
, 928)
60 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_VALUE_SEL_CHANGED
, 929)
61 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_SEL_CREATING
, 930)
62 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_SEL_CREATED
, 931)
63 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_SEL_CHANGING
, 932)
64 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_SEL_CHANGED
, 933)
65 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_BEGIN_X_LABEL_EDIT
, 934)
66 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_END_X_LABEL_EDIT
, 935)
67 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_BEGIN_Y_LABEL_EDIT
, 936)
68 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_END_Y_LABEL_EDIT
, 937)
69 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_BEGIN_TITLE_EDIT
, 938)
70 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_END_TITLE_EDIT
, 939)
71 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_CREATE
, 940)
72 END_DECLARE_EVENT_TYPES()
74 #define wxPLOT_X_AXIS 0x0004
75 #define wxPLOT_Y_AXIS 0x0008
76 #define wxPLOT_BUTTON_MOVE 0x0010
77 #define wxPLOT_BUTTON_ZOOM 0x0020
78 #define wxPLOT_BUTTON_ENLARGE 0x0040
80 #define wxPLOT_BUTTON_ALL (wxPLOT_BUTTON_MOVE|wxPLOT_BUTTON_ZOOM|wxPLOT_BUTTON_ENLARGE)
81 #define wxPLOT_DEFAULT (wxPLOT_X_AXIS|wxPLOT_Y_AXIS | wxPLOT_BUTTON_ALL)
83 //-----------------------------------------------------------------------------
85 //-----------------------------------------------------------------------------
87 class WXDLLIMPEXP_PLOT wxPlotEvent
: public wxNotifyEvent
90 wxPlotEvent( wxEventType commandType
= wxEVT_NULL
, int id
= 0 );
92 wxPlotCurve
*GetCurve()
94 void SetCurve( wxPlotCurve
*curve
)
99 void SetZoom( double zoom
)
102 wxInt32
GetPosition()
103 { return m_position
; }
104 void SetPosition( wxInt32 pos
)
105 { m_position
= pos
; }
108 wxPlotCurve
*m_curve
;
113 //-----------------------------------------------------------------------------
115 //-----------------------------------------------------------------------------
117 class WXDLLIMPEXP_PLOT wxPlotCurve
: public wxObject
120 wxPlotCurve( int offsetY
, double startY
, double endY
);
122 virtual wxInt32
GetStartX() = 0;
123 virtual wxInt32
GetEndX() = 0;
125 virtual double GetY( wxInt32 x
) = 0;
127 void SetStartY( double startY
)
128 { m_startY
= startY
; }
129 double GetStartY() const
131 void SetEndY( double endY
)
133 double GetEndY() const
135 void SetOffsetY( int offsetY
)
136 { m_offsetY
= offsetY
; }
137 int GetOffsetY() const
138 { return m_offsetY
; }
140 void SetPenNormal( const wxPen
&pen
)
141 { m_penNormal
= pen
; }
142 void SetPenSelected( const wxPen
&pen
)
143 { m_penSelected
= pen
; }
145 const wxPen
& GetPenNormal() const
146 { return m_penNormal
; }
147 const wxPen
& GetPenSelected() const
148 { return m_penSelected
; }
157 DECLARE_ABSTRACT_CLASS(wxPlotCurve
)
160 //-----------------------------------------------------------------------------
162 //-----------------------------------------------------------------------------
164 class WXDLLIMPEXP_PLOT wxPlotOnOff
174 WX_DECLARE_OBJARRAY_WITH_DECL(wxPlotOnOff
, wxArrayPlotOnOff
,
175 class WXDLLIMPEXP_PLOT
);
177 class WXDLLIMPEXP_PLOT wxPlotOnOffCurve
: public wxObject
180 wxPlotOnOffCurve( int offsetY
);
187 void SetOffsetY( int offsetY
)
188 { m_offsetY
= offsetY
; }
190 { return m_offsetY
; }
192 void Add( wxInt32 on
, wxInt32 off
, void *clientData
= NULL
);
195 wxInt32
GetOn( size_t index
);
196 wxInt32
GetOff( size_t index
);
197 void* GetClientData( size_t index
);
198 wxPlotOnOff
*GetAt( size_t index
);
200 virtual void DrawOnLine( wxDC
&dc
, wxCoord y
, wxCoord start
, wxCoord end
, void *clientData
);
201 virtual void DrawOffLine( wxDC
&dc
, wxCoord y
, wxCoord start
, wxCoord end
);
208 wxArrayPlotOnOff m_marks
;
210 DECLARE_CLASS(wxPlotOnOffCurve
)
213 //-----------------------------------------------------------------------------
215 //-----------------------------------------------------------------------------
217 class WXDLLIMPEXP_PLOT wxPlotArea
: public wxWindow
221 wxPlotArea( wxPlotWindow
*parent
);
223 void OnPaint( wxPaintEvent
&event
);
224 void OnMouse( wxMouseEvent
&event
);
226 void DrawCurve( wxDC
*dc
, wxPlotCurve
*curve
, int from
= -1, int to
= -1 );
227 void DrawOnOffCurve( wxDC
*dc
, wxPlotOnOffCurve
*curve
, int from
= -1, int to
= -1 );
228 void DeleteCurve( wxPlotCurve
*curve
, int from
= -1, int to
= -1 );
230 virtual void ScrollWindow( int dx
, int dy
, const wxRect
*rect
);
233 wxPlotWindow
*m_owner
;
236 DECLARE_CLASS(wxPlotArea
)
237 DECLARE_EVENT_TABLE()
240 //-----------------------------------------------------------------------------
242 //-----------------------------------------------------------------------------
244 class WXDLLIMPEXP_PLOT wxPlotXAxisArea
: public wxWindow
248 wxPlotXAxisArea( wxPlotWindow
*parent
);
250 void OnPaint( wxPaintEvent
&event
);
251 void OnMouse( wxMouseEvent
&event
);
254 wxPlotWindow
*m_owner
;
256 DECLARE_CLASS(wxPlotXAxisArea
)
257 DECLARE_EVENT_TABLE()
260 //-----------------------------------------------------------------------------
262 //-----------------------------------------------------------------------------
264 class WXDLLIMPEXP_PLOT wxPlotYAxisArea
: public wxWindow
268 wxPlotYAxisArea( wxPlotWindow
*parent
);
270 void OnPaint( wxPaintEvent
&event
);
271 void OnMouse( wxMouseEvent
&event
);
274 wxPlotWindow
*m_owner
;
276 DECLARE_CLASS(wxPlotYAxisArea
)
277 DECLARE_EVENT_TABLE()
280 //-----------------------------------------------------------------------------
282 //-----------------------------------------------------------------------------
284 class WXDLLIMPEXP_PLOT wxPlotWindow
: public wxScrolledWindow
288 wxPlotWindow(wxWindow
*parent
,
289 wxWindowID id
= wxID_ANY
,
290 const wxPoint
& pos
= wxDefaultPosition
,
291 const wxSize
& size
= wxDefaultSize
,
292 int flags
= wxPLOT_DEFAULT
);
298 void Add( wxPlotCurve
*curve
);
299 void Delete( wxPlotCurve
* curve
);
302 wxPlotCurve
*GetAt( size_t n
);
304 void SetCurrentCurve( wxPlotCurve
* current
);
305 wxPlotCurve
*GetCurrentCurve();
307 // mark list accessors
308 // -------------------
310 void Add( wxPlotOnOffCurve
*curve
);
311 void Delete( wxPlotOnOffCurve
* curve
);
313 size_t GetOnOffCurveCount();
314 wxPlotOnOffCurve
*GetOnOffCurveAt( size_t n
);
316 // vertical representation
317 // -----------------------
319 void Move( wxPlotCurve
* curve
, int pixels_up
);
320 void Enlarge( wxPlotCurve
*curve
, double factor
);
322 // horizontal representation
323 // -------------------------
325 void SetUnitsPerValue( double upv
);
326 double GetUnitsPerValue()
327 { return m_xUnitsPerValue
; }
329 void SetZoom( double zoom
);
336 void SetScrollOnThumbRelease( bool scrollOnThumbRelease
= true )
337 { m_scrollOnThumbRelease
= scrollOnThumbRelease
; }
338 bool GetScrollOnThumbRelease()
339 { return m_scrollOnThumbRelease
; }
341 void SetEnlargeAroundWindowCentre( bool enlargeAroundWindowCentre
= true )
342 { m_enlargeAroundWindowCentre
= enlargeAroundWindowCentre
; }
343 bool GetEnlargeAroundWindowCentre()
344 { return m_enlargeAroundWindowCentre
; }
346 // events (may be overridden)
347 // --------------------------
349 void OnMoveUp( wxCommandEvent
& event
);
350 void OnMoveDown( wxCommandEvent
& event
);
352 void OnEnlarge( wxCommandEvent
& event
);
353 void OnShrink( wxCommandEvent
& event
);
354 void OnZoomIn( wxCommandEvent
& event
);
355 void OnZoomOut( wxCommandEvent
& event
);
357 void OnScroll2( wxScrollWinEvent
& event
);
362 void RedrawEverything();
366 void ResetScrollbar();
368 void AddChartTitle( const wxString
&, wxFont
= *wxNORMAL_FONT
, wxColour
= *wxBLACK
);
371 friend class wxPlotArea
;
372 friend class wxPlotXAxisArea
;
373 friend class wxPlotYAxisArea
;
375 double m_xUnitsPerValue
;
379 wxList m_onOffCurves
;
382 wxPlotXAxisArea
*m_xaxis
;
383 wxPlotYAxisArea
*m_yaxis
;
384 wxPlotCurve
*m_current
;
386 bool m_scrollOnThumbRelease
;
387 bool m_enlargeAroundWindowCentre
;
391 wxColour m_titleColour
;
392 wxStaticText
* m_titleStaticText
;
393 wxBoxSizer
* m_plotAndTitleSizer
;
395 void DrawChartTitle();
397 DECLARE_CLASS(wxPlotWindow
)
398 DECLARE_EVENT_TABLE()
401 // ----------------------------------------------------------------------------
403 // ----------------------------------------------------------------------------
405 typedef void (wxEvtHandler::*wxPlotEventFunction
)(wxPlotEvent
&);
407 #if WXWIN_COMPATIBILITY_EVENT_TYPES
409 #define EVT_PLOT(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
410 #define EVT_PLOT_SEL_CHANGING(id, fn) { wxEVT_PLOT_SEL_CHANGING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
411 #define EVT_PLOT_SEL_CHANGED(id, fn) { wxEVT_PLOT_SEL_CHANGED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
412 #define EVT_PLOT_CLICKED(id, fn) { wxEVT_PLOT_CLICKED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
413 #define EVT_PLOT_DOUBLECLICKED(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
414 #define EVT_PLOT_ZOOM_IN(id, fn) { wxEVT_PLOT_ZOOM_IN, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
415 #define EVT_PLOT_ZOOM_OUT(id, fn) { wxEVT_PLOT_ZOOM_OUT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
416 #define EVT_PLOT_VALUE_SEL_CREATING(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
417 #define EVT_PLOT_VALUE_SEL_CREATED(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
418 #define EVT_PLOT_VALUE_SEL_CHANGING(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
419 #define EVT_PLOT_VALUE_SEL_CHANGED(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
420 #define EVT_PLOT_AREA_SEL_CREATING(id, fn) { wxEVT_PLOT_AREA_SEL_CREATING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
421 #define EVT_PLOT_AREA_SEL_CREATED(id, fn) { wxEVT_PLOT_AREA_SEL_CREATED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
422 #define EVT_PLOT_AREA_SEL_CHANGING(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGING, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
423 #define EVT_PLOT_AREA_SEL_CHANGED(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
424 #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 },
425 #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 },
426 #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 },
427 #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 },
428 #define EVT_PLOT_BEGIN_TITLE_EDIT(id, fn) { wxEVT_PLOT_BEGIN_TITLE_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
429 #define EVT_PLOT_END_TITLE_EDIT(id, fn) { wxEVT_PLOT_END_TITLE_EDIT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
433 #define EVT_PLOT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_DOUBLECLICKED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
434 #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 ),
435 #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 ),
436 #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 ),
437 #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 ),
438 #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 ),
439 #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 ),
440 #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 ),
441 #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 ),
442 #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 ),
443 #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 ),
444 #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 ),
445 #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 ),
446 #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 ),
447 #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 ),
448 #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 ),
449 #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 ),
450 #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 ),
451 #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 ),
452 #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 ),
453 #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 ),