X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a7daf7ea0e0805d67cd8d87be2fc5e84c48695ca..438959cca892a7651634cc3a7aad4819ac49b23c:/include/wx/tbarbase.h?ds=inline diff --git a/include/wx/tbarbase.h b/include/wx/tbarbase.h index e68a1d7037..709b7c53ea 100644 --- a/include/wx/tbarbase.h +++ b/include/wx/tbarbase.h @@ -101,11 +101,6 @@ public: m_control = control; } - m_toolStyle = wxTOOL_STYLE_CONTROL; - - m_dropdownMenu = 0; - } - virtual ~wxToolBarToolBase(); // accessors @@ -123,10 +118,12 @@ public: wxToolBarBase *GetToolBar() const { return m_tbar; } - // style + // style/kind + bool IsStretchable() const { return m_stretchable; } bool IsButton() const { return m_toolStyle == wxTOOL_STYLE_BUTTON; } bool IsControl() const { return m_toolStyle == wxTOOL_STYLE_CONTROL; } bool IsSeparator() const { return m_toolStyle == wxTOOL_STYLE_SEPARATOR; } + bool IsStretchableSpace() const { return IsSeparator() && IsStretchable(); } int GetStyle() const { return m_toolStyle; } wxItemKind GetKind() const { @@ -135,6 +132,13 @@ public: return m_kind; } + void MakeStretchable() + { + wxASSERT_MSG( IsSeparator(), "only separators can be stretchable" ); + + m_stretchable = true; + } + // state bool IsEnabled() const { return m_enabled; } bool IsToggled() const { return m_toggled; } @@ -195,10 +199,12 @@ public: virtual void Detach() { m_tbar = NULL; } virtual void Attach(wxToolBarBase *tbar) { m_tbar = tbar; } +#if wxUSE_MENUS // these methods are only for tools of wxITEM_DROPDOWN kind (but even such // tools can have a NULL associated menu) virtual void SetDropdownMenu(wxMenu *menu); wxMenu *GetDropdownMenu() const { return m_dropdownMenu; } +#endif protected: // common part of all ctors @@ -214,16 +220,20 @@ protected: m_clientData = NULL; + m_stretchable = false; m_toggled = false; m_enabled = true; +#if wxUSE_MENUS m_dropdownMenu = NULL; +#endif + } wxToolBarBase *m_tbar; // the toolbar to which we belong (may be NULL) // tool parameters - int m_toolStyle; // see enum wxToolBarToolStyle + wxToolBarToolStyle m_toolStyle; wxWindowIDRef m_id; // the tool id, wxID_SEPARATOR for separator wxItemKind m_kind; // for normal buttons may be wxITEM_NORMAL/CHECK/RADIO @@ -234,6 +244,9 @@ protected: wxControl *m_control; }; + // true if this tool is stretchable: currently is only value for separators + bool m_stretchable; + // tool state bool m_toggled; bool m_enabled; @@ -249,7 +262,9 @@ protected: wxString m_shortHelpString; wxString m_longHelpString; +#if wxUSE_MENUS wxMenu *m_dropdownMenu; +#endif DECLARE_DYNAMIC_CLASS_NO_COPY(wxToolBarToolBase) }; @@ -362,6 +377,12 @@ public: virtual wxToolBarToolBase *AddSeparator(); virtual wxToolBarToolBase *InsertSeparator(size_t pos); + // add a stretchable space to the toolbar: this is similar to a separator + // except that it's always blank and that all the extra space the toolbar + // has is [equally] distributed among the stretchable spaces in it + virtual wxToolBarToolBase *AddStretchableSpace(); + virtual wxToolBarToolBase *InsertStretchableSpace(size_t pos); + // remove the tool from the toolbar: the caller is responsible for actually // deleting the pointer virtual wxToolBarToolBase *RemoveTool(int toolid); @@ -452,7 +473,7 @@ public: { return GetToolBitmapSize(); } // returns a (non separator) tool containing the point (x, y) or NULL if - // there is no tool at this point (corrdinates are client) + // there is no tool at this point (coordinates are client) virtual wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y) const = 0; @@ -462,6 +483,10 @@ public: // return true if this is a vertical toolbar, otherwise false bool IsVertical() const; + // these methods allow to access tools by their index in the toolbar + size_t GetToolsCount() const { return m_tools.GetCount(); } + const wxToolBarToolBase *GetToolByPos(int pos) const { return m_tools[pos]; } + #if WXWIN_COMPATIBILITY_2_8 // the old versions of the various methods kept for compatibility // don't use in the new code! @@ -542,21 +567,51 @@ public: // use GetToolMargins() instead wxSize GetMargins() const { return GetToolMargins(); } + // Tool factories, + // helper functions to create toolbar tools + // ------------------------- + virtual wxToolBarToolBase *CreateTool(int toolid, + const wxString& label, + const wxBitmap& bmpNormal, + const wxBitmap& bmpDisabled = wxNullBitmap, + wxItemKind kind = wxITEM_NORMAL, + wxObject *clientData = NULL, + const wxString& shortHelp = wxEmptyString, + const wxString& longHelp = wxEmptyString) = 0; + + virtual wxToolBarToolBase *CreateTool(wxControl *control, + const wxString& label) = 0; + + // this one is not virtual but just a simple helper/wrapper around + // CreateTool() for separators + wxToolBarToolBase *CreateSeparator() + { + return CreateTool(wxID_SEPARATOR, + wxEmptyString, + wxNullBitmap, wxNullBitmap, + wxITEM_SEPARATOR, NULL, + wxEmptyString, wxEmptyString); + } + + // implementation only from now on // ------------------------------- - size_t GetToolsCount() const { return m_tools.GetCount(); } - // Do the toolbar button updates (check for EVT_UPDATE_UI handlers) virtual void UpdateWindowUI(long flags = wxUPDATE_UI_NONE) ; // don't want toolbars to accept the focus virtual bool AcceptsFocus() const { return false; } +#if wxUSE_MENUS // Set dropdown menu bool SetDropdownMenu(int toolid, wxMenu *menu); +#endif protected: + // choose the default border for this window + virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; } + // to implement in derived classes // ------------------------------- @@ -593,18 +648,6 @@ protected: // called when the tools "can be toggled" flag changes virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle) = 0; - // the functions to create toolbar tools - virtual wxToolBarToolBase *CreateTool(int toolid, - const wxString& label, - const wxBitmap& bmpNormal, - const wxBitmap& bmpDisabled, - wxItemKind kind, - wxObject *clientData, - const wxString& shortHelp, - const wxString& longHelp) = 0; - - virtual wxToolBarToolBase *CreateTool(wxControl *control, - const wxString& label) = 0; // helper functions // ----------------