]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/os2/spinctrl.h
wxUniv: implement wxSYS_VSCROLL_X/Y metrics in wxUniv code, they depend on the theme...
[wxWidgets.git] / include / wx / os2 / spinctrl.h
index c6bfbf2889d740307067cc6c8b895816067bcf47..1b37a27fd2d9c4e6cc26b4e648eb17c66c3d1787 100644 (file)
 #define _WX_MSW_SPINCTRL_H_
 
 #include "wx/spinbutt.h"    // the base class
 #define _WX_MSW_SPINCTRL_H_
 
 #include "wx/spinbutt.h"    // the base class
+#include "wx/dynarray.h"
+class WXDLLIMPEXP_FWD_CORE wxSpinCtrl;
+WX_DEFINE_EXPORTED_ARRAY_PTR(wxSpinCtrl *, wxArraySpins);
 
 // ----------------------------------------------------------------------------
 
 // ----------------------------------------------------------------------------
-// Under Win32 and OS2 PM, wxSpinCtrl is a wxSpinButton with a buddy 
+// Under Win32 and OS2 PM, wxSpinCtrl is a wxSpinButton with a buddy
 // text window whose contents is automatically updated when the spin
 // control is clicked.
 // ----------------------------------------------------------------------------
 
 // text window whose contents is automatically updated when the spin
 // control is clicked.
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxSpinCtrl : public wxSpinButton
+class WXDLLIMPEXP_CORE wxSpinCtrl : public wxSpinButton
 {
 public:
     wxSpinCtrl() { }
 {
 public:
     wxSpinCtrl() { }
-
-    wxSpinCtrl(wxWindow *parent,
-               wxWindowID id = -1,
-               const wxPoint& pos = wxDefaultPosition,
-               const wxSize& size = wxDefaultSize,
-               long style = wxSP_ARROW_KEYS,
-               int min = 0, int max = 100, int initial = 0,
-               const wxString& name = _T("wxSpinCtrl"))
+    wxSpinCtrl( wxWindow*       pParent
+               ,wxWindowID      vId = wxID_ANY
+               ,const wxString& rsValue = wxEmptyString
+               ,const wxPoint&  rPos = wxDefaultPosition
+               ,const wxSize&   rSize = wxDefaultSize
+               ,long            lStyle = wxSP_ARROW_KEYS
+               ,int             nMin = 0
+               ,int             nMax = 100
+               ,int             nInitial = 0
+               ,const wxString& rsName = _T("wxSpinCtrl")
+              )
     {
     {
-        Create(parent, id, pos, size, style, min, max, initial, name);
+        Create(pParent, vId, rsValue, rPos, rSize, lStyle, nMin, nMax, nInitial, rsName);
     }
     }
+    virtual ~wxSpinCtrl();
+
+    bool Create(wxWindow*       pParent
+               ,wxWindowID      vId = wxID_ANY
+               ,const wxString& rsValue = wxEmptyString
+               ,const wxPoint&  rPos = wxDefaultPosition
+               ,const wxSize&   rSize = wxDefaultSize
+               ,long            lStyle = wxSP_ARROW_KEYS
+               ,int             nMin = 0
+               ,int             nMax = 100
+               ,int             nInitial = 0
+               ,const wxString& rsName = _T("wxSpinCtrl")
+              );
+
+    //
+    // A wxTextCtrl-like method (but we can't have GetValue returning wxString
+    // because the base class already has one returning int!)
+    //
+    void SetValue(const wxString& rsText);
+
+    //
+    // implementation only from now on
+    // -------------------------------
+    //
+    virtual bool Enable(bool bEnable = true);
+
+    virtual int  GetValue(void) const;
+
+    virtual bool SetFont(const wxFont &rFont);
+    virtual void SetFocus(void);
+
+    inline virtual void SetValue(int nVal) { wxSpinButton::SetValue(nVal); }
 
 
-    bool Create(wxWindow *parent,
-                wxWindowID id = -1,
-                const wxPoint& pos = wxDefaultPosition,
-                const wxSize& size = wxDefaultSize,
-                long style = wxSP_ARROW_KEYS,
-                int min = 0, int max = 100, int initial = 0,
-                const wxString& name = _T("wxSpinCtrl"));
+    void SetSelection(long lFrom, long lTo);
+
+    virtual bool Show(bool bShow = true);
+
+    //
+    // wxSpinButton doesn't accept focus, but we do
+    //
+    inline virtual bool AcceptsFocus(void) const { return false; }
+
+    //
+    // Return the spinctrl object whose buddy is the given window or NULL
+    // Doesn't really do much under OS/2
+    //
+    static wxSpinCtrl*  GetSpinForTextCtrl(WXHWND hWndBuddy);
+
+    //
+    // Process a WM_COMMAND generated by the buddy text control
+    //
+    bool ProcessTextCommand( WXWORD wCmd
+                            ,WXWORD wId
+                           );
 
 protected:
 
 protected:
-    void DoMoveWindow(int x, int y, int width, int height);
+    virtual void          DoGetPosition( int* nlX
+                                        ,int* nlY
+                                       ) const;
+    void                  DoMoveWindow( int nX
+                                       ,int nY
+                                       ,int nWidth
+                                       ,int nHeight
+                                      );
+    virtual wxSize        DoGetBestSize(void) const;
+    virtual void          DoGetSize( int* pnWidth
+                                    ,int* pnHeight
+                                   ) const;
 
 
-    WXHWND m_hwndBuddy;
+    //
+    // The handler for wxSpinButton events
+    //
+    void OnSpinChange(wxSpinEvent& rEvent);
+    void OnChar(wxKeyEvent& rEvent);
+    void OnSetFocus(wxFocusEvent& rEvent);
 
 
+    WXHWND                          m_hWndBuddy;
+    static wxArraySpins             m_svAllSpins;
+
+private:
     DECLARE_DYNAMIC_CLASS(wxSpinCtrl)
     DECLARE_DYNAMIC_CLASS(wxSpinCtrl)
-};
+    DECLARE_EVENT_TABLE()
+}; // end of CLASS wxSpinCtrl
 
 #endif // _WX_MSW_SPINCTRL_H_
 
 #endif // _WX_MSW_SPINCTRL_H_
-
-