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
;
48 //-----------------------------------------------------------------------------
50 //-----------------------------------------------------------------------------
52 BEGIN_DECLARE_EVENT_TYPES()
53 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_SEL_CHANGING
, 0)
54 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_SEL_CHANGED
, 0)
55 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_CLICKED
, 0)
56 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_DOUBLECLICKED
, 0)
57 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_ZOOM_IN
, 0)
58 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_ZOOM_OUT
, 0)
59 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_VALUE_SEL_CREATING
, 0)
60 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_VALUE_SEL_CREATED
, 0)
61 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_VALUE_SEL_CHANGING
, 0)
62 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_VALUE_SEL_CHANGED
, 0)
63 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_SEL_CREATING
, 0)
64 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_SEL_CREATED
, 0)
65 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_SEL_CHANGING
, 0)
66 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_SEL_CHANGED
, 0)
67 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_BEGIN_X_LABEL_EDIT
, 0)
68 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_END_X_LABEL_EDIT
, 0)
69 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_BEGIN_Y_LABEL_EDIT
, 0)
70 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_END_Y_LABEL_EDIT
, 0)
71 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_BEGIN_TITLE_EDIT
, 0)
72 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_END_TITLE_EDIT
, 0)
73 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PLOT
, wxEVT_PLOT_AREA_CREATE
, 0)
74 END_DECLARE_EVENT_TYPES()
76 #define wxPLOT_X_AXIS 0x0004
77 #define wxPLOT_Y_AXIS 0x0008
78 #define wxPLOT_BUTTON_MOVE 0x0010
79 #define wxPLOT_BUTTON_ZOOM 0x0020
80 #define wxPLOT_BUTTON_ENLARGE 0x0040
82 #define wxPLOT_BUTTON_ALL (wxPLOT_BUTTON_MOVE|wxPLOT_BUTTON_ZOOM|wxPLOT_BUTTON_ENLARGE)
83 #define wxPLOT_DEFAULT (wxPLOT_X_AXIS|wxPLOT_Y_AXIS | wxPLOT_BUTTON_ALL)
85 //-----------------------------------------------------------------------------
87 //-----------------------------------------------------------------------------
89 class WXDLLIMPEXP_PLOT wxPlotEvent
: public wxNotifyEvent
92 wxPlotEvent( wxEventType commandType
= wxEVT_NULL
, int id
= 0 );
94 wxPlotCurve
*GetCurve()
96 void SetCurve( wxPlotCurve
*curve
)
101 void SetZoom( double zoom
)
104 wxInt32
GetPosition()
105 { return m_position
; }
106 void SetPosition( wxInt32 pos
)
107 { m_position
= pos
; }
110 wxPlotCurve
*m_curve
;
115 //-----------------------------------------------------------------------------
117 //-----------------------------------------------------------------------------
119 class WXDLLIMPEXP_PLOT wxPlotCurve
: public wxObject
122 wxPlotCurve( int offsetY
, double startY
, double endY
);
124 virtual wxInt32
GetStartX() = 0;
125 virtual wxInt32
GetEndX() = 0;
127 virtual double GetY( wxInt32 x
) = 0;
129 void SetStartY( double startY
)
130 { m_startY
= startY
; }
133 void SetEndY( double endY
)
137 void SetOffsetY( int offsetY
)
138 { m_offsetY
= offsetY
; }
140 { return m_offsetY
; }
142 void SetPenNormal( const wxPen
&pen
)
143 { m_penNormal
= pen
; }
144 void SetPenSelected( const wxPen
&pen
)
145 { m_penSelected
= pen
; }
154 DECLARE_ABSTRACT_CLASS(wxPlotCurve
)
157 //-----------------------------------------------------------------------------
159 //-----------------------------------------------------------------------------
161 class WXDLLIMPEXP_PLOT wxPlotOnOff
171 WX_DECLARE_OBJARRAY_WITH_DECL(wxPlotOnOff
, wxArrayPlotOnOff
,
172 class WXDLLIMPEXP_PLOT
);
174 class WXDLLIMPEXP_PLOT wxPlotOnOffCurve
: public wxObject
177 wxPlotOnOffCurve( int offsetY
);
184 void SetOffsetY( int offsetY
)
185 { m_offsetY
= offsetY
; }
187 { return m_offsetY
; }
189 void Add( wxInt32 on
, wxInt32 off
, void *clientData
= NULL
);
192 wxInt32
GetOn( size_t index
);
193 wxInt32
GetOff( size_t index
);
194 void* GetClientData( size_t index
);
195 wxPlotOnOff
*GetAt( size_t index
);
197 virtual void DrawOnLine( wxDC
&dc
, wxCoord y
, wxCoord start
, wxCoord end
, void *clientData
);
198 virtual void DrawOffLine( wxDC
&dc
, wxCoord y
, wxCoord start
, wxCoord end
);
205 wxArrayPlotOnOff m_marks
;
207 DECLARE_CLASS(wxPlotOnOffCurve
)
210 //-----------------------------------------------------------------------------
212 //-----------------------------------------------------------------------------
214 class WXDLLIMPEXP_PLOT wxPlotArea
: public wxWindow
218 wxPlotArea( wxPlotWindow
*parent
);
220 void OnPaint( wxPaintEvent
&event
);
221 void OnMouse( wxMouseEvent
&event
);
223 void DrawCurve( wxDC
*dc
, wxPlotCurve
*curve
, int from
= -1, int to
= -1 );
224 void DrawOnOffCurve( wxDC
*dc
, wxPlotOnOffCurve
*curve
, int from
= -1, int to
= -1 );
225 void DeleteCurve( wxPlotCurve
*curve
, int from
= -1, int to
= -1 );
227 virtual void ScrollWindow( int dx
, int dy
, const wxRect
*rect
);
230 wxPlotWindow
*m_owner
;
233 DECLARE_CLASS(wxPlotArea
)
234 DECLARE_EVENT_TABLE()
237 //-----------------------------------------------------------------------------
239 //-----------------------------------------------------------------------------
241 class WXDLLIMPEXP_PLOT wxPlotXAxisArea
: public wxWindow
245 wxPlotXAxisArea( wxPlotWindow
*parent
);
247 void OnPaint( wxPaintEvent
&event
);
248 void OnMouse( wxMouseEvent
&event
);
251 wxPlotWindow
*m_owner
;
253 DECLARE_CLASS(wxPlotXAxisArea
)
254 DECLARE_EVENT_TABLE()
257 //-----------------------------------------------------------------------------
259 //-----------------------------------------------------------------------------
261 class WXDLLIMPEXP_PLOT wxPlotYAxisArea
: public wxWindow
265 wxPlotYAxisArea( wxPlotWindow
*parent
);
267 void OnPaint( wxPaintEvent
&event
);
268 void OnMouse( wxMouseEvent
&event
);
271 wxPlotWindow
*m_owner
;
273 DECLARE_CLASS(wxPlotYAxisArea
)
274 DECLARE_EVENT_TABLE()
277 //-----------------------------------------------------------------------------
279 //-----------------------------------------------------------------------------
281 class WXDLLIMPEXP_PLOT wxPlotWindow
: public wxScrolledWindow
285 wxPlotWindow( wxWindow
*parent
, wxWindowID id
, const wxPoint
&pos
, const wxSize
&size
, int flags
= wxPLOT_DEFAULT
);
291 void Add( wxPlotCurve
*curve
);
292 void Delete( wxPlotCurve
* curve
);
295 wxPlotCurve
*GetAt( size_t n
);
297 void SetCurrentCurve( wxPlotCurve
* current
);
298 wxPlotCurve
*GetCurrentCurve();
300 // mark list accessors
301 // -------------------
303 void Add( wxPlotOnOffCurve
*curve
);
304 void Delete( wxPlotOnOffCurve
* curve
);
306 size_t GetOnOffCurveCount();
307 wxPlotOnOffCurve
*GetOnOffCurveAt( size_t n
);
309 // vertical representation
310 // -----------------------
312 void Move( wxPlotCurve
* curve
, int pixels_up
);
313 void Enlarge( wxPlotCurve
*curve
, double factor
);
315 // horizontal representation
316 // -------------------------
318 void SetUnitsPerValue( double upv
);
319 double GetUnitsPerValue()
320 { return m_xUnitsPerValue
; }
322 void SetZoom( double zoom
);
329 void SetScrollOnThumbRelease( bool scrollOnThumbRelease
= TRUE
)
330 { m_scrollOnThumbRelease
= scrollOnThumbRelease
; }
331 bool GetScrollOnThumbRelease()
332 { return m_scrollOnThumbRelease
; }
334 void SetEnlargeAroundWindowCentre( bool enlargeAroundWindowCentre
= TRUE
)
335 { m_enlargeAroundWindowCentre
= enlargeAroundWindowCentre
; }
336 bool GetEnlargeAroundWindowCentre()
337 { return m_enlargeAroundWindowCentre
; }
339 // events (may be overridden)
340 // --------------------------
342 void OnMoveUp( wxCommandEvent
& event
);
343 void OnMoveDown( wxCommandEvent
& event
);
345 void OnEnlarge( wxCommandEvent
& event
);
346 void OnShrink( wxCommandEvent
& event
);
347 void OnZoomIn( wxCommandEvent
& event
);
348 void OnZoomOut( wxCommandEvent
& event
);
350 void OnScroll2( wxScrollWinEvent
& event
);
355 void RedrawEverything();
359 void ResetScrollbar();
362 friend class wxPlotArea
;
363 friend class wxPlotXAxisArea
;
364 friend class wxPlotYAxisArea
;
366 double m_xUnitsPerValue
;
370 wxList m_onOffCurves
;
373 wxPlotXAxisArea
*m_xaxis
;
374 wxPlotYAxisArea
*m_yaxis
;
375 wxPlotCurve
*m_current
;
377 bool m_scrollOnThumbRelease
;
378 bool m_enlargeAroundWindowCentre
;
380 DECLARE_CLASS(wxPlotWindow
)
381 DECLARE_EVENT_TABLE()
384 // ----------------------------------------------------------------------------
386 // ----------------------------------------------------------------------------
388 typedef void (wxEvtHandler::*wxPlotEventFunction
)(wxPlotEvent
&);
390 #if WXWIN_COMPATIBILITY_EVENT_TYPES
392 #define EVT_PLOT(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
393 #define EVT_PLOT_SEL_CHANGING(id, fn) { wxEVT_PLOT_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
394 #define EVT_PLOT_SEL_CHANGED(id, fn) { wxEVT_PLOT_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
395 #define EVT_PLOT_CLICKED(id, fn) { wxEVT_PLOT_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
396 #define EVT_PLOT_DOUBLECLICKED(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
397 #define EVT_PLOT_ZOOM_IN(id, fn) { wxEVT_PLOT_ZOOM_IN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
398 #define EVT_PLOT_ZOOM_OUT(id, fn) { wxEVT_PLOT_ZOOM_OUT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
399 #define EVT_PLOT_VALUE_SEL_CREATING(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
400 #define EVT_PLOT_VALUE_SEL_CREATED(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
401 #define EVT_PLOT_VALUE_SEL_CHANGING(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
402 #define EVT_PLOT_VALUE_SEL_CHANGED(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
403 #define EVT_PLOT_AREA_SEL_CREATING(id, fn) { wxEVT_PLOT_AREA_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
404 #define EVT_PLOT_AREA_SEL_CREATED(id, fn) { wxEVT_PLOT_AREA_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
405 #define EVT_PLOT_AREA_SEL_CHANGING(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
406 #define EVT_PLOT_AREA_SEL_CHANGED(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
407 #define EVT_PLOT_BEGIN_X_LABEL_EDIT(id, fn) { wxEVT_PLOT_BEGIN_X_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
408 #define EVT_PLOT_END_X_LABEL_EDIT(id, fn) { wxEVT_PLOT_END_X_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
409 #define EVT_PLOT_BEGIN_Y_LABEL_EDIT(id, fn) { wxEVT_PLOT_BEGIN_Y_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
410 #define EVT_PLOT_END_Y_LABEL_EDIT(id, fn) { wxEVT_PLOT_END_Y_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
411 #define EVT_PLOT_BEGIN_TITLE_EDIT(id, fn) { wxEVT_PLOT_BEGIN_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
412 #define EVT_PLOT_END_TITLE_EDIT(id, fn) { wxEVT_PLOT_END_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
416 #define EVT_PLOT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
417 #define EVT_PLOT_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
418 #define EVT_PLOT_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
419 #define EVT_PLOT_CLICKED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
420 #define EVT_PLOT_DOUBLECLICKED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
421 #define EVT_PLOT_ZOOM_IN(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_ZOOM_IN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
422 #define EVT_PLOT_ZOOM_OUT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_ZOOM_OUT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
423 #define EVT_PLOT_VALUE_SEL_CREATING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
424 #define EVT_PLOT_VALUE_SEL_CREATED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
425 #define EVT_PLOT_VALUE_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
426 #define EVT_PLOT_VALUE_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
427 #define EVT_PLOT_AREA_SEL_CREATING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
428 #define EVT_PLOT_AREA_SEL_CREATED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
429 #define EVT_PLOT_AREA_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
430 #define EVT_PLOT_AREA_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
431 #define EVT_PLOT_BEGIN_X_LABEL_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_BEGIN_X_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
432 #define EVT_PLOT_END_X_LABEL_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_END_X_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
433 #define EVT_PLOT_BEGIN_Y_LABEL_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_BEGIN_Y_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
434 #define EVT_PLOT_END_Y_LABEL_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_END_Y_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
435 #define EVT_PLOT_BEGIN_TITLE_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_BEGIN_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
436 #define EVT_PLOT_END_TITLE_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_END_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),