]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/os2/spinctrl.h
fixed Cygwin compilation (there's no _get_osfhandle)
[wxWidgets.git] / include / wx / os2 / spinctrl.h
index b71c6bc271a4a011adbb2c28b362c396d7289f5a..5a0983870b0f0e00f5afa6ce990583fe083f1833 100644 (file)
@@ -13,6 +13,9 @@
 #define _WX_MSW_SPINCTRL_H_
 
 #include "wx/spinbutt.h"    // the base class
+#include "wx/dynarray.h"
+class WXDLLEXPORT wxSpinCtrl;
+WX_DEFINE_EXPORTED_ARRAY(wxSpinCtrl *, wxArraySpins);
 
 // ----------------------------------------------------------------------------
 // Under Win32 and OS2 PM, wxSpinCtrl is a wxSpinButton with a buddy
@@ -24,35 +27,103 @@ class WXDLLEXPORT wxSpinCtrl : public wxSpinButton
 {
 public:
     wxSpinCtrl() { }
-
-    wxSpinCtrl(wxWindow *parent,
-               wxWindowID id = -1,
-               const wxString& value = wxEmptyString,
-               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 = -1
+               ,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, value, 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 = -1
+               ,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;
 
-    bool Create(wxWindow *parent,
-                wxWindowID id = -1,
-                const wxString& value = wxEmptyString,
-                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"));
+           virtual bool SetFont(const wxFont &rFont);
+           virtual void SetFocus(void);
+    inline virtual void SetValue(int nVal) { wxSpinButton::SetValue(nVal); }
+                   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:
-    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;
+
+    //
+    // The handler for wxSpinButton events
+    //
+    void OnSpinChange(wxSpinEvent& rEvent);
+    void OnChar(wxKeyEvent& rEvent);
+    void OnSetFocus(wxFocusEvent& rEvent);
 
-    WXHWND m_hwndBuddy;
+    WXHWND                          m_hWndBuddy;
+    static wxArraySpins             m_svAllSpins;
 
+private:
     DECLARE_DYNAMIC_CLASS(wxSpinCtrl)
-};
+    DECLARE_EVENT_TABLE()
+}; // end of CLASS wxSpinCtrl
 
 #endif // _WX_MSW_SPINCTRL_H_