home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / include / wx / spinbutt.h < prev    next >
C/C++ Source or Header  |  2001-08-25  |  4KB  |  127 lines

  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,v 1.21 2001/08/25 14:52:26 VZ Exp $
  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 _T("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.  
  39. class WXDLLEXPORT wxSpinButtonBase : public wxControl
  40. {
  41. public:
  42.     wxSpinButtonBase() { InitBase(); }
  43.  
  44.     // accessors
  45.     virtual int GetValue() const = 0;
  46.     virtual int GetMin() const { return m_min; }
  47.     virtual int GetMax() const { return m_max; }
  48.  
  49.     // operations
  50.     virtual void SetValue(int val) = 0;
  51.     virtual void SetRange(int minVal, int maxVal)
  52.     {
  53.         m_min = minVal;
  54.         m_max = maxVal;
  55.     }
  56.  
  57.     // is this spin button vertically oriented?
  58.     bool IsVertical() const { return (m_windowStyle & wxSP_VERTICAL) != 0; }
  59.  
  60. protected:
  61.     // init the base part of the control
  62.     void InitBase()
  63.     {
  64.         m_min = 0;
  65.         m_max = 100;
  66.     }
  67.  
  68.     // the range value
  69.     int   m_min;
  70.     int   m_max;
  71. };
  72.  
  73. // ----------------------------------------------------------------------------
  74. // include the declaration of the real class
  75. // ----------------------------------------------------------------------------
  76.  
  77. #if defined(__WXUNIVERSAL__)
  78.     #include "wx/univ/spinbutt.h"
  79. #elif defined(__WXMSW__) && defined(__WIN95__)
  80.     #include "wx/msw/spinbutt.h"
  81. #elif defined(__WXMOTIF__)
  82.     #include "wx/motif/spinbutt.h"
  83. #elif defined(__WXGTK__)
  84.     #include "wx/gtk/spinbutt.h"
  85. #elif defined(__WXMAC__)
  86.     #include "wx/mac/spinbutt.h"
  87. #elif defined(__WXPM__)
  88.     #include "wx/os2/spinbutt.h"
  89. #elif defined(__WXSTUBS__)
  90.     #include "wx/stubs/spinbutt.h"
  91. #endif
  92.  
  93. // ----------------------------------------------------------------------------
  94. // the wxSpinButton event
  95. // ----------------------------------------------------------------------------
  96.  
  97. class WXDLLEXPORT wxSpinEvent : public wxNotifyEvent
  98. {
  99. public:
  100.     wxSpinEvent(wxEventType commandType = wxEVT_NULL, int id = 0)
  101.            : wxNotifyEvent(commandType, id)
  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.  
  109. private:
  110.     DECLARE_DYNAMIC_CLASS(wxSpinEvent)
  111. };
  112.  
  113. typedef void (wxEvtHandler::*wxSpinEventFunction)(wxSpinEvent&);
  114.  
  115. // macros for handling spin events
  116. #define EVT_SPIN_UP(id, func) \
  117.     DECLARE_EVENT_TABLE_ENTRY( wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func, NULL ),
  118. #define EVT_SPIN_DOWN(id, func) \
  119.     DECLARE_EVENT_TABLE_ENTRY( wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func, NULL ),
  120. #define EVT_SPIN(id, func) \
  121.     DECLARE_EVENT_TABLE_ENTRY( wxEVT_SCROLL_THUMBTRACK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func, NULL ),
  122.  
  123. #endif // wxUSE_SPINBTN
  124.  
  125. #endif
  126.     // _WX_SPINBUTT_H_BASE_
  127.