]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/palmos/control.h
Better fix
[wxWidgets.git] / include / wx / palmos / control.h
index db397571b0573f889f18c34f28ac447c1742dcc6..849ad78d2603706508e0619366577f164aff45a6 100644 (file)
 #ifndef _WX_CONTROL_H_
 #define _WX_CONTROL_H_
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma interface "control.h"
-#endif
-
 #include "wx/dynarray.h"
 
 // General item class
 class WXDLLEXPORT wxControl : public wxControlBase
 {
 public:
-    wxControl() { }
+    wxControl() { Init(); }
 
     wxControl(wxWindow *parent, wxWindowID id,
               const wxPoint& pos = wxDefaultPosition,
@@ -30,6 +26,7 @@ public:
               const wxValidator& validator = wxDefaultValidator,
               const wxString& name = wxControlNameStr)
     {
+        Init();
         Create(parent, id, pos, size, style, validator, name);
     }
 
@@ -51,7 +48,7 @@ public:
     virtual bool IsShown() const;
 
     virtual void SetLabel(const wxString& label);
-    virtual wxString GetLabel();
+    //virtual wxString GetLabel();
 
     // implementation from now on
     // --------------------------
@@ -71,27 +68,53 @@ public:
 
     void OnEraseBackground(wxEraseEvent& event);
 
-    virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
-            WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
-
 protected:
+    // regardless how deeply we are in wxWidgets hierarchy always get correct form
+    WXFORMPTR GetParentForm() const;
+    WXFORMPTR GetObjectFormIndex(uint16_t& index) const;
+    void* GetObjectPtr() const;
+
     // choose the default border for this window
     virtual wxBorder GetDefaultBorder() const;
 
+    // on/off-like controls
+    void SetBoolValue(bool value);
+    bool GetBoolValue() const;
+    void SetIntValue(int val);
+
+    // native labels access
+    void SetFieldLabel(const wxString& label);
+    void SetControlLabel(const wxString& label);
+    wxString GetFieldLabel();
+    wxString GetControlLabel();
+
     // return default best size (doesn't really make any sense, override this)
     virtual wxSize DoGetBestSize() const;
 
+    // getting and setting sizes
+    virtual void DoGetPosition( int *x, int *y ) const;
+    virtual void DoGetSize( int *width, int *height ) const;
+    virtual void DoMoveWindow(int x, int y, int width, int height);
+
     // create the control of the given ControlStyleType: this is typically called
     // from Create() method of the derived class passing its label, pos and
     // size parameter (style parameter is not needed because m_windowStyle is
     // supposed to had been already set and so is used instead when this
     // function is called)
-    bool PalmCreateControl(ControlStyleType style,
-                           wxWindow *parent,
-                           wxWindowID id,
+    bool PalmCreateControl(int palmStyle,
                            const wxString& label,
                            const wxPoint& pos,
-                           const wxSize& size);
+                           const wxSize& size,
+                           uint8_t groupID = 0);
+    inline bool IsPalmControl() const { return m_palmControl; }
+
+    bool PalmCreateField(const wxString& label,
+                         const wxPoint& pos,
+                         const wxSize& size,
+                         bool editable,
+                         bool underlined,
+                         int justification);
+    inline bool IsPalmField() const { return m_palmField; }
 
     // this is a helper for the derived class GetClassDefaultAttributes()
     // implementation: it returns the right colours for the classes which
@@ -105,9 +128,25 @@ protected:
     // holds the ids (not HWNDs!) of the sub controls
     wxArrayLong m_subControls;
 
-    ControlType *m_control;
+    // m_label stores label in case of wxButton, wxCheckBox, wxToggleButton etc.
+    // We must ensure that it persists for as long as it is being displayed
+    // (that is, for as long as the control is displayed or until we call
+    // CtlSetLabel() with a new string), and we must free the string after
+    // it is no longer in use (typically after the form containing the
+    // control is freed).
+    wxString m_label;
 
 private:
+
+    bool m_palmControl:1;
+    bool m_palmField:1;
+
+    // common part of all ctors
+    void Init();
+
+    virtual void DoGetBounds( WXRECTANGLEPTR rect ) const;
+    virtual void DoSetBounds( WXRECTANGLEPTR rect );
+
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxControl)
     DECLARE_EVENT_TABLE()
 };