X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0dbd6262a9ee7d735fb3930707346298f71b2cb7..e5aea7214deb0443b068b1deb4a81772572d849e:/include/wx/mac/control.h diff --git a/include/wx/mac/control.h b/include/wx/mac/control.h index c75756a72a..cf3288535d 100644 --- a/include/wx/mac/control.h +++ b/include/wx/mac/control.h @@ -16,35 +16,116 @@ #pragma interface "control.h" #endif -#include "wx/window.h" -#include "wx/list.h" -#include "wx/validate.h" +WXDLLEXPORT_DATA(extern const wxChar*) wxControlNameStr; // General item class -class WXDLLEXPORT wxControl: public wxWindow +class WXDLLEXPORT wxControl : public wxControlBase { - DECLARE_ABSTRACT_CLASS(wxControl) + DECLARE_ABSTRACT_CLASS(wxControl) + public: wxControl(); - ~wxControl(); + wxControl(wxWindow *parent, wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, long style = 0, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxControlNameStr) + { + Create(parent, id, pos, size, style, validator, name); + } + + bool Create(wxWindow *parent, wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, long style = 0, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxControlNameStr); + virtual ~wxControl(); + + // Simulates an event + virtual void Command(wxCommandEvent& event) { ProcessCommand(event); } + + // implementation from now on + // -------------------------- + + // Calls the callback and appropriate event handlers + bool ProcessCommand(wxCommandEvent& event); + virtual void SetLabel(const wxString& title) ; + + wxList& GetSubcontrols() { return m_subControls; } + + void OnEraseBackground(wxEraseEvent& event); + + virtual bool Enable(bool enabled) ; + virtual bool Show(bool show = TRUE) ; + + virtual void MacRedrawControl () ; + virtual void MacHandleControlClick( ControlHandle control , SInt16 controlpart ) ; + virtual void MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString label , + const wxPoint& pos, + const wxSize& size, long style, + const wxValidator& validator, + const wxString& name , + Rect *outBounds , + StringPtr maclabel ) ; + virtual void MacPostControlCreate() ; + virtual void MacAdjustControlRect() ; + virtual ControlHandle MacGetContainerForEmbedding() ; + virtual void MacSuperChangedPosition() ; + virtual void MacSuperEnabled( bool enabled ) ; + virtual void MacSuperShown( bool show ) ; + virtual bool MacCanFocus() const ; + + virtual void DoSetSize(int x, int y,int width, int height,int sizeFlags ) ; + virtual void OnKeyDown( wxKeyEvent &event ) ; + virtual void OnMouseEvent( wxMouseEvent &event ) ; + virtual void OnPaint(wxPaintEvent& event) ; + virtual void Refresh(bool eraseBack = TRUE, const wxRect *rect = NULL) ; + ControlHandle GetMacControl() { return m_macControl ;} + +#if WXWIN_COMPATIBILITY + virtual void SetButtonColour(const wxColour& WXUNUSED(col)) { } + wxColour* GetButtonColour() const { return NULL; } - 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 ; + inline virtual void SetLabelFont(const wxFont& font); + inline virtual void SetButtonFont(const wxFont& font); + inline wxFont& GetLabelFont() const; + inline wxFont& GetButtonFont() const; - // 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 + // Adds callback + inline void Callback(const wxFunction function); - inline wxFunction GetCallback() { return m_callback; } + wxFunction GetCallback() { return m_callback; } protected: wxFunction m_callback; // Callback associated with the window +#endif // WXWIN_COMPATIBILITY -DECLARE_EVENT_TABLE() +protected: + // For controls like radiobuttons which are really composite + ControlHandle m_macControl ; + bool m_macControlIsShown ; + wxList m_subControls; + int m_macHorizontalBorder ; + int m_macVerticalBorder ; + + virtual wxSize DoGetBestSize() const; + +private: + DECLARE_EVENT_TABLE() }; + +#if WXWIN_COMPATIBILITY + inline void wxControl::Callback(const wxFunction f) { m_callback = f; }; + inline wxFont& wxControl::GetLabelFont() const { return GetFont(); } + inline wxFont& wxControl::GetButtonFont() const { return GetFont(); } + inline void wxControl::SetLabelFont(const wxFont& font) { SetFont(font); } + inline void wxControl::SetButtonFont(const wxFont& font) { SetFont(font); } +#endif // WXWIN_COMPATIBILITY + +wxControl *wxFindControlFromMacControl(ControlHandle inControl ) ; +void wxAssociateControlWithMacControl(ControlHandle inControl, wxControl *control) ; +void wxRemoveMacControlAssociation(wxControl *control) ; + #endif // _WX_CONTROL_H_