]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/os2/spinctrl.h
added wxMenu::AppendSubMenu() to avoid having to specify a dummy id when adding a...
[wxWidgets.git] / include / wx / os2 / spinctrl.h
index 7423d7e2aa56c2f68c66c399159a5487513c5533..8e7feec3a4774b350eb869b8672deaee5e3ae1d3 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_PTR(wxSpinCtrl *, wxArraySpins);
 
 // ----------------------------------------------------------------------------
 // Under Win32 and OS2 PM, wxSpinCtrl is a wxSpinButton with a buddy
@@ -24,56 +27,102 @@ 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 = 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, value, pos, size, style, min, max, initial, name);
+        Create(pParent, vId, rsValue, rPos, rSize, lStyle, nMin, nMax, nInitial, rsName);
     }
-
-    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"));
-
-    // a wxTextCtrl-like method (but we can't have GetValue returning wxString
+    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& text);
+    //
+    void SetValue(const wxString& rsText);
 
+    //
     // implementation only from now on
     // -------------------------------
+    //
+    virtual bool Enable(bool bEnable = true);
 
-    virtual void SetValue(int val) { wxSpinButton::SetValue(val); }
-    virtual int GetValue() const;
-    virtual bool SetFont(const wxFont &font);
+    virtual int  GetValue(void) const;
 
-    virtual bool Enable(bool enable = TRUE);
-    virtual bool Show(bool show = TRUE);
-protected:
-    void DoMoveWindow(int x, int y, int width, int height);
+    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 wxSize DoGetBestSize() const;
+    virtual bool Show(bool bShow = true);
 
-    // the handler for wxSpinButton events
-    void OnSpinChange(wxSpinEvent& event);
+    //
+    // wxSpinButton doesn't accept focus, but we do
+    //
+    inline virtual bool AcceptsFocus(void) const { return false; }
 
-    WXHWND m_hwndBuddy;
+    //
+    // 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:
+    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;
+    static wxArraySpins             m_svAllSpins;
 
 private:
     DECLARE_DYNAMIC_CLASS(wxSpinCtrl)
     DECLARE_EVENT_TABLE()
-};
+}; // end of CLASS wxSpinCtrl
 
 #endif // _WX_MSW_SPINCTRL_H_
-
-