// Name: wx/palmos/control.h
// Purpose: wxControl class
// Author: William Osborne - minimal working wxPalmOS port
-// Modified by:
+// Modified by: Wlodzimierz ABX Skiba - native implementation
// Created: 10/13/04
// RCS-ID: $Id$
-// Copyright: (c) William Osborne
+// 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
{
public:
- wxControl() { }
+ wxControl() { Init(); }
wxControl(wxWindow *parent, wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxControlNameStr)
{
+ Init();
Create(parent, id, pos, size, style, validator, name);
}
// 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
// --------------------------
// 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
// 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()
};