1///////////////////////////////////////////////////////////////////////////// 2// Name: wx/spinbutt.h 3// Purpose: wxSpinButtonBase class 4// Author: Julian Smart, Vadim Zeitlin 5// Modified by: 6// Created: 23.07.99 7// RCS-ID: $Id: spinbutt.h 61872 2009-09-09 22:37:05Z VZ $ 8// Copyright: (c) Julian Smart 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_SPINBUTT_H_BASE_ 13#define _WX_SPINBUTT_H_BASE_ 14 15// ---------------------------------------------------------------------------- 16// headers 17// ---------------------------------------------------------------------------- 18 19#include "wx/defs.h" 20 21#if wxUSE_SPINBTN 22 23#include "wx/control.h" 24#include "wx/event.h" 25 26#define wxSPIN_BUTTON_NAME wxT("wxSpinButton") 27 28// ---------------------------------------------------------------------------- 29// The wxSpinButton is like a small scrollbar than is often placed next 30// to a text control. 31// 32// Styles: 33// wxSP_HORIZONTAL: horizontal spin button 34// wxSP_VERTICAL: vertical spin button (the default) 35// wxSP_ARROW_KEYS: arrow keys increment/decrement value 36// wxSP_WRAP: value wraps at either end 37// ---------------------------------------------------------------------------- 38 39class WXDLLEXPORT wxSpinButtonBase : public wxControl 40{ 41public: 42 // ctor initializes the range with the default (0..100) values 43 wxSpinButtonBase() { m_min = 0; m_max = 100; } 44 45 // accessors 46 virtual int GetValue() const = 0; 47 virtual int GetMin() const { return m_min; } 48 virtual int GetMax() const { return m_max; } 49 50 // operations 51 virtual void SetValue(int val) = 0; 52 virtual void SetMin(int minVal) { SetRange ( minVal , m_max ) ; } 53 virtual void SetMax(int maxVal) { SetRange ( m_min , maxVal ) ; } 54 virtual void SetRange(int minVal, int maxVal) 55 { 56 m_min = minVal; 57 m_max = maxVal; 58 } 59 60 // is this spin button vertically oriented? 61 bool IsVertical() const { return (m_windowStyle & wxSP_VERTICAL) != 0; } 62 63protected: 64 // the range value 65 int m_min; 66 int m_max; 67 68 DECLARE_NO_COPY_CLASS(wxSpinButtonBase) 69}; 70 71// ---------------------------------------------------------------------------- 72// include the declaration of the real class 73// ---------------------------------------------------------------------------- 74 75#if defined(__WXUNIVERSAL__) 76 #include "wx/univ/spinbutt.h" 77#elif defined(__WXMSW__) 78 #include "wx/msw/spinbutt.h" 79#elif defined(__WXMOTIF__) 80 #include "wx/motif/spinbutt.h" 81#elif defined(__WXGTK20__) 82 #include "wx/gtk/spinbutt.h" 83#elif defined(__WXGTK__) 84 #include "wx/gtk1/spinbutt.h" 85#elif defined(__WXMAC__) 86 #include "wx/mac/spinbutt.h" 87#elif defined(__WXCOCOA__) 88 #include "wx/cocoa/spinbutt.h" 89#elif defined(__WXPM__) 90 #include "wx/os2/spinbutt.h" 91#endif 92 93// ---------------------------------------------------------------------------- 94// the wxSpinButton event 95// ---------------------------------------------------------------------------- 96 97class WXDLLEXPORT wxSpinEvent : public wxNotifyEvent 98{ 99public: 100 wxSpinEvent(wxEventType commandType = wxEVT_NULL, int winid = 0) 101 : wxNotifyEvent(commandType, winid) 102 { 103 } 104 105 // get the current value of the control 106 int GetPosition() const { return m_commandInt; } 107 void SetPosition(int pos) { m_commandInt = pos; } 108 109private: 110 DECLARE_DYNAMIC_CLASS_NO_COPY(wxSpinEvent) 111}; 112 113typedef void (wxEvtHandler::*wxSpinEventFunction)(wxSpinEvent&); 114 115#define wxSpinEventHandler(func) \ 116 (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxSpinEventFunction, &func) 117 118// macros for handling spin events 119#define EVT_SPIN_UP(winid, func) \ 120 wx__DECLARE_EVT1(wxEVT_SCROLL_LINEUP, winid, wxSpinEventHandler(func)) 121#define EVT_SPIN_DOWN(winid, func) \ 122 wx__DECLARE_EVT1(wxEVT_SCROLL_LINEDOWN, winid, wxSpinEventHandler(func)) 123#define EVT_SPIN(winid, func) \ 124 wx__DECLARE_EVT1(wxEVT_SCROLL_THUMBTRACK, winid, wxSpinEventHandler(func)) 125 126#endif // wxUSE_SPINBTN 127 128#endif 129 // _WX_SPINBUTT_H_BASE_ 130