X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ffecfa5aeb540b54914739dbb8603edbbd4c00a0..2f45f5545f8f0c422e7d320f00e2ce068bd671b0:/include/wx/palmos/control.h diff --git a/include/wx/palmos/control.h b/include/wx/palmos/control.h index a74f58cc0b..caa3a804a4 100644 --- a/include/wx/palmos/control.h +++ b/include/wx/palmos/control.h @@ -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() };