X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c3d434725bd76bc0306b9751e722ed70bd776876..a407ff6ae8668b8f37b139a9420bcc041fa8adc1:/include/wx/os2/control.h diff --git a/include/wx/os2/control.h b/include/wx/os2/control.h index d2aac6bbc7..661efc7b06 100644 --- a/include/wx/os2/control.h +++ b/include/wx/os2/control.h @@ -1,50 +1,163 @@ ///////////////////////////////////////////////////////////////////////////// // Name: control.h // Purpose: wxControl class -// Author: AUTHOR +// Author: David Webster // Modified by: -// Created: ??/??/98 +// Created: 09/17/99 // RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_CONTROL_H_ #define _WX_CONTROL_H_ -#ifdef __GNUG__ -#pragma interface "control.h" -#endif - -#include "wx/window.h" -#include "wx/list.h" -#include "wx/validate.h" +#include "wx/dynarray.h" // General item class -class WXDLLEXPORT wxControl: public wxControlBase +class WXDLLEXPORT wxControl : public wxControlBase { - DECLARE_ABSTRACT_CLASS(wxControl) + DECLARE_ABSTRACT_CLASS(wxControl) + public: wxControl(); - ~wxControl(); + wxControl( wxWindow* pParent + ,wxWindowID vId + ,const wxPoint& rPos = wxDefaultPosition + ,const wxSize& rSize = wxDefaultSize + ,long lStyle = 0 +#if wxUSE_VALIDATORS + ,const wxValidator& rValidator = wxDefaultValidator +#endif + ,const wxString& rsName = wxControlNameStr + ) + { + Create( pParent + ,vId + ,rPos + ,rSize + ,lStyle + ,rValidator + ,rsName + ); + } + virtual ~wxControl(); + + bool Create( wxWindow* pParent + ,wxWindowID vId + ,const wxPoint& rPos = wxDefaultPosition + ,const wxSize& rSize = wxDefaultSize + ,long lStyle = 0 +#if wxUSE_VALIDATORS + ,const wxValidator& rValidator = wxDefaultValidator +#endif + ,const wxString& rsName = wxControlNameStr + ); + + // + // Simulates an event + // + virtual void Command(wxCommandEvent& rEvent) { ProcessCommand(rEvent); } + + // + // Implementation from now on + // -------------------------- + // + + // + // Calls the callback and appropriate event handlers + // + bool ProcessCommand(wxCommandEvent& rEvent); + + // + // For ownerdraw items + // + virtual bool OS2OnDraw(WXDRAWITEMSTRUCT* WXUNUSED(pItem)) { return FALSE; }; + virtual bool OS2OnMeasure(WXMEASUREITEMSTRUCT* WXUNUSED(pItem)) { return FALSE; }; - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; // Simulates an event - virtual void ProcessCommand(wxCommandEvent& event); // Calls the callback and - // appropriate event handlers - virtual void SetLabel(const wxString& label); - virtual wxString GetLabel() const ; + wxArrayLong& GetSubcontrols() { return m_aSubControls; } + void OnEraseBackground(wxEraseEvent& rEvent); + virtual WXHBRUSH OnCtlColor( WXHDC hDC + ,WXHWND pWnd + ,WXUINT nCtlColor + ,WXUINT uMessage + ,WXWPARAM wParam + ,WXLPARAM lParam + ); - // Places item in centre of panel - so can't be used BEFORE panel->Fit() - void Centre(int direction = wxHORIZONTAL); - inline void Callback(const wxFunction function) { m_callback = function; }; // Adds callback +#if WXWIN_COMPATIBILITY + virtual void SetButtonColour(const wxColour& WXUNUSED(rCol)) { } + wxColour* GetButtonColour(void) const { return NULL; } - inline wxFunction GetCallback() { return m_callback; } + inline virtual void SetLabelFont(const wxFont& rFont); + inline virtual void SetButtonFont(const wxFont& rFont); + inline wxFont& GetLabelFont(void) const; + inline wxFont& GetButtonFont(void) const; + + // + // Adds callback + // + inline void Callback(const wxFunction function); + wxFunction GetCallback(void) { return m_callback; } protected: - wxFunction m_callback; // Callback associated with the window + wxFunction m_callback; // Callback associated with the window +#endif // WXWIN_COMPATIBILITY + +public: + // + // For controls like radiobuttons which are really composite + // + wxArrayLong m_aSubControls; -DECLARE_EVENT_TABLE() -}; + virtual wxSize DoGetBestSize(void) const; + bool OS2CreateControl( wxWindow* pParent + ,wxWindowID lId + ,const wxPoint& rPos + ,const wxSize& rSize + ,long lStyle +#if wxUSE_VALIDATORS + ,const wxValidator& rValidator #endif - // _WX_CONTROL_H_ + ,const wxString& rsName + ); + // + // Create the control of the given class with the given style, returns FALSE + // if creation failed. + // + bool OS2CreateControl( const wxChar* zClassname + ,WXDWORD dwStyle + ,const wxPoint& rPos = wxDefaultPosition + ,const wxSize& rSize = wxDefaultSize + ,const wxString& rsLabel = wxEmptyString + ,WXDWORD dwExstyle = (WXDWORD)-1 + ); + + // + // Determine the extended styles combination for this window (may slightly + // modify styl parameter) + // + WXDWORD GetExStyle(WXDWORD& rStyle) const; + + inline int GetXComp(void) const {return m_nXComp;} + inline int GetYComp(void) const {return m_nYComp;} + inline void SetXComp(const int nXComp) {m_nXComp = nXComp;} + inline void SetYComp(const int nYComp) {m_nYComp = nYComp;} + +private: + int m_nXComp; + int m_nYComp; + DECLARE_EVENT_TABLE() +}; // end of wxControl + +#if WXWIN_COMPATIBILITY + inline void wxControl::Callback(const wxFunction f) { m_callback = f; }; + inline wxFont& wxControl::GetLabelFont(void) const { return GetFont(); } + inline wxFont& wxControl::GetButtonFont(void) const { return GetFont(); } + inline void wxControl::SetLabelFont(const wxFont& rFont) { SetFont(rFont); } + inline void wxControl::SetButtonFont(const wxFont& rFont) { SetFont(rFont); } +#endif // WXWIN_COMPATIBILITY + +#endif // _WX_CONTROL_H_ +