]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/palmos/control.h
Further performance optimizations
[wxWidgets.git] / include / wx / palmos / control.h
index a74f58cc0bc97b22470cece18a7f1ce979dcd50b..caa3a804a4511117817347625792e516357c2281 100644 (file)
@@ -1,28 +1,24 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        control.h
+// Name:        wx/palmos/control.h
 // Purpose:     wxControl class
-// Author:      William Osborne
-// Modified by:
+// Author:      William Osborne - minimal working wxPalmOS port
+// Modified by: Wlodzimierz ABX Skiba - native implementation
 // Created:     10/13/04
-// RCS-ID:      $Id
-// Copyright:   (c) William Osborne
+// RCS-ID:      $Id$
+// Copyright:   (c) William Osborne, Wlodzimierz Skiba
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #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
+class WXDLLIMPEXP_CORE 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);
     }
 
@@ -44,6 +41,14 @@ public:
     // Simulates an event
     virtual void Command(wxCommandEvent& event) { ProcessCommand(event); }
 
+    virtual bool Enable( bool enable = true );
+    virtual bool IsEnabled() const;
+
+    virtual bool Show( bool show = true );
+    virtual bool IsShown() const;
+
+    virtual void SetLabel(const wxString& label);
+    //virtual wxString GetLabel();
 
     // implementation from now on
     // --------------------------
@@ -59,61 +64,57 @@ public:
     // Calls the callback and appropriate event handlers
     bool ProcessCommand(wxCommandEvent& event);
 
-    // MSW-specific
-#ifdef __WIN95__
-    virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
-#endif // Win95
-
-    // For ownerdraw items
-    virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *WXUNUSED(item)) { return FALSE; };
-    virtual bool MSWOnMeasure(WXMEASUREITEMSTRUCT *WXUNUSED(item)) { return FALSE; };
-
     const wxArrayLong& GetSubcontrols() const { return m_subControls; }
 
     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;
 
-    // create the control of the given Windows class: this is typically called
+    // 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 MSWCreateControl(const wxChar *classname,
-                          const wxString& label,
-                          const wxPoint& pos,
-                          const wxSize& size);
-
-    // NB: the method below is deprecated now, with MSWGetStyle() the method
-    //     above should be used instead! Once all the controls are updated to
-    //     implement MSWGetStyle() this version will disappear.
-    //
-    // create the control of the given class with the given style (combination
-    // of WS_XXX flags, i.e. Windows style, not wxWidgets one), returns
-    // FALSE if creation failed
-    //
-    // All parameters except classname and style are optional, if the
-    // size/position are not given, they should be set later with SetSize()
-    // and, label (the title of the window), of course, is left empty. The
-    // extended style is determined from the style and the app 3D settings
-    // automatically if it's not specified explicitly.
-    bool MSWCreateControl(const wxChar *classname,
-                          WXDWORD style,
-                          const wxPoint& pos = wxDefaultPosition,
-                          const wxSize& size = wxDefaultSize,
-                          const wxString& label = wxEmptyString,
-                          WXDWORD exstyle = (WXDWORD)-1);
-
-    // default style for the control include WS_TABSTOP if it AcceptsFocus()
-    virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
+    bool PalmCreateControl(int palmStyle,
+                           const wxString& label,
+                           const wxPoint& pos,
+                           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
@@ -127,7 +128,25 @@ protected:
     // holds the ids (not HWNDs!) of the sub controls
     wxArrayLong m_subControls;
 
+    // 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()
 };