X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/47b378bd88260611387af8604a1c8f62355350ab..19b409860202ab9bdc27dab3d17f388c1a1d9717:/include/wx/tbarbase.h diff --git a/include/wx/tbarbase.h b/include/wx/tbarbase.h index fb221036f6..14d03e032b 100644 --- a/include/wx/tbarbase.h +++ b/include/wx/tbarbase.h @@ -24,17 +24,17 @@ #include "wx/list.h" #include "wx/control.h" -class WXDLLEXPORT wxToolBarBase; -class WXDLLEXPORT wxToolBarToolBase; -class WXDLLEXPORT wxImage; +class WXDLLIMPEXP_FWD_CORE wxToolBarBase; +class WXDLLIMPEXP_FWD_CORE wxToolBarToolBase; +class WXDLLIMPEXP_FWD_CORE wxImage; // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- -extern WXDLLEXPORT_DATA(const wxChar) wxToolBarNameStr[]; -extern WXDLLEXPORT_DATA(const wxSize) wxDefaultSize; -extern WXDLLEXPORT_DATA(const wxPoint) wxDefaultPosition; +extern WXDLLIMPEXP_DATA_CORE(const char) wxToolBarNameStr[]; +extern WXDLLIMPEXP_DATA_CORE(const wxSize) wxDefaultSize; +extern WXDLLIMPEXP_DATA_CORE(const wxPoint) wxDefaultPosition; enum wxToolBarToolStyle { @@ -54,29 +54,30 @@ enum wxToolBarToolStyle // for the applications status bar. // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxToolBarToolBase : public wxObject +class WXDLLIMPEXP_CORE wxToolBarToolBase : public wxObject { public: // ctors & dtor // ------------ - wxToolBarToolBase(wxToolBarBase *tbar = (wxToolBarBase *)NULL, + wxToolBarToolBase(wxToolBarBase *tbar = NULL, int toolid = wxID_SEPARATOR, const wxString& label = wxEmptyString, const wxBitmap& bmpNormal = wxNullBitmap, const wxBitmap& bmpDisabled = wxNullBitmap, wxItemKind kind = wxITEM_NORMAL, - wxObject *clientData = (wxObject *) NULL, + wxObject *clientData = NULL, const wxString& shortHelpString = wxEmptyString, const wxString& longHelpString = wxEmptyString) : m_label(label), m_shortHelpString(shortHelpString), - m_longHelpString(longHelpString) + m_longHelpString(longHelpString), + m_dropdownMenu(NULL) { m_tbar = tbar; m_id = toolid; if (m_id == wxID_ANY) - m_id = wxNewId(); + m_id = wxWindow::NewControlId(); m_clientData = clientData; m_bmpNormal = bmpNormal; @@ -106,9 +107,11 @@ public: m_toggled = false; m_toolStyle = wxTOOL_STYLE_CONTROL; + + m_dropdownMenu = 0; } - virtual ~wxToolBarToolBase(){} + virtual ~wxToolBarToolBase(); // accessors // --------- @@ -118,7 +121,7 @@ public: wxControl *GetControl() const { - wxASSERT_MSG( IsControl(), _T("this toolbar tool is not a control") ); + wxASSERT_MSG( IsControl(), wxT("this toolbar tool is not a control") ); return m_control; } @@ -132,7 +135,7 @@ public: int GetStyle() const { return m_toolStyle; } wxItemKind GetKind() const { - wxASSERT_MSG( IsButton(), _T("only makes sense for buttons") ); + wxASSERT_MSG( IsButton(), wxT("only makes sense for buttons") ); return m_kind; } @@ -168,16 +171,16 @@ public: } // modifiers: return true if the state really changed - bool Enable(bool enable); - bool Toggle(bool toggle); - bool SetToggle(bool toggle); - bool SetShortHelp(const wxString& help); - bool SetLongHelp(const wxString& help); + virtual bool Enable(bool enable); + virtual bool Toggle(bool toggle); + virtual bool SetToggle(bool toggle); + virtual bool SetShortHelp(const wxString& help); + virtual bool SetLongHelp(const wxString& help); void Toggle() { Toggle(!IsToggled()); } - void SetNormalBitmap(const wxBitmap& bmp) { m_bmpNormal = bmp; } - void SetDisabledBitmap(const wxBitmap& bmp) { m_bmpDisabled = bmp; } + virtual void SetNormalBitmap(const wxBitmap& bmp) { m_bmpNormal = bmp; } + virtual void SetDisabledBitmap(const wxBitmap& bmp) { m_bmpDisabled = bmp; } virtual void SetLabel(const wxString& label) { m_label = label; } @@ -194,15 +197,20 @@ public: } // add tool to/remove it from a toolbar - virtual void Detach() { m_tbar = (wxToolBarBase *)NULL; } + virtual void Detach() { m_tbar = NULL; } virtual void Attach(wxToolBarBase *tbar) { m_tbar = tbar; } + // 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; } + protected: wxToolBarBase *m_tbar; // the toolbar to which we belong (may be NULL) // tool parameters int m_toolStyle; // see enum wxToolBarToolStyle - int m_id; // the tool id, wxID_SEPARATOR for separator + wxWindowIDRef m_id; // the tool id, wxID_SEPARATOR for separator wxItemKind m_kind; // for normal buttons may be wxITEM_NORMAL/CHECK/RADIO // as controls have their own client data, no need to waste memory @@ -227,6 +235,8 @@ protected: wxString m_shortHelpString; wxString m_longHelpString; + wxMenu *m_dropdownMenu; + DECLARE_DYNAMIC_CLASS_NO_COPY(wxToolBarToolBase) }; @@ -237,7 +247,7 @@ WX_DECLARE_EXPORTED_LIST(wxToolBarToolBase, wxToolBarToolsList); // the base class for all toolbars // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxToolBarBase : public wxControl +class WXDLLIMPEXP_CORE wxToolBarBase : public wxControl { public: wxToolBarBase(); @@ -351,6 +361,9 @@ public: // must be called after all buttons have been created to finish toolbar // initialisation + // + // derived class versions should call the base one first, before doing + // platform-specific stuff virtual bool Realize(); // tools state @@ -384,7 +397,7 @@ public: virtual void SetToolDisabledBitmap(int WXUNUSED(id), const wxBitmap& WXUNUSED(bitmap)) {} - + // margins/packing/separation // -------------------------- @@ -433,13 +446,13 @@ public: wxToolBarToolBase *FindById(int toolid) const; // return true if this is a vertical toolbar, otherwise false - bool IsVertical() const { return HasFlag(wxTB_LEFT | wxTB_RIGHT); } - + bool IsVertical() const; +#if WXWIN_COMPATIBILITY_2_8 // the old versions of the various methods kept for compatibility // don't use in the new code! // -------------------------------------------------------------- - + wxDEPRECATED_INLINE( wxToolBarToolBase *AddTool(int toolid, const wxBitmap& bitmap, const wxBitmap& bmpDisabled, @@ -447,23 +460,23 @@ public: wxObject *clientData = NULL, const wxString& shortHelpString = wxEmptyString, const wxString& longHelpString = wxEmptyString) - { + , return AddTool(toolid, wxEmptyString, bitmap, bmpDisabled, toggle ? wxITEM_CHECK : wxITEM_NORMAL, shortHelpString, longHelpString, clientData); - } - + ) + wxDEPRECATED_INLINE( wxToolBarToolBase *AddTool(int toolid, const wxBitmap& bitmap, const wxString& shortHelpString = wxEmptyString, const wxString& longHelpString = wxEmptyString) - { + , return AddTool(toolid, wxEmptyString, bitmap, wxNullBitmap, wxITEM_NORMAL, shortHelpString, longHelpString, NULL); - } - + ) + wxDEPRECATED_INLINE( wxToolBarToolBase *AddTool(int toolid, const wxBitmap& bitmap, const wxBitmap& bmpDisabled, @@ -473,12 +486,12 @@ public: wxObject *clientData = NULL, const wxString& shortHelp = wxEmptyString, const wxString& longHelp = wxEmptyString) - { + , return DoAddTool(toolid, wxEmptyString, bitmap, bmpDisabled, toggle ? wxITEM_CHECK : wxITEM_NORMAL, shortHelp, longHelp, clientData, xPos, yPos); - } - + ) + wxDEPRECATED_INLINE( wxToolBarToolBase *InsertTool(size_t pos, int toolid, const wxBitmap& bitmap, @@ -487,11 +500,12 @@ public: wxObject *clientData = NULL, const wxString& shortHelp = wxEmptyString, const wxString& longHelp = wxEmptyString) - { + , return InsertTool(pos, toolid, wxEmptyString, bitmap, bmpDisabled, toggle ? wxITEM_CHECK : wxITEM_NORMAL, shortHelp, longHelp, clientData); - } + ) +#endif // WXWIN_COMPATIBILITY_2_8 // event handlers // -------------- @@ -525,6 +539,9 @@ public: // don't want toolbars to accept the focus virtual bool AcceptsFocus() const { return false; } + // Set dropdown menu + bool SetDropdownMenu(int toolid, wxMenu *menu); + protected: // to implement in derived classes // ------------------------------- @@ -588,6 +605,10 @@ protected: // un-toggle all buttons in the same radio group void UnToggleRadioGroup(wxToolBarToolBase *tool); + // make the size of the buttons big enough to fit the largest bitmap size + void AdjustToolBitmapSize(); + + // the list of all our tools wxToolBarToolsList m_tools; @@ -608,7 +629,7 @@ protected: private: DECLARE_EVENT_TABLE() - DECLARE_NO_COPY_CLASS(wxToolBarBase) + wxDECLARE_NO_COPY_CLASS(wxToolBarBase); }; // deprecated function for creating the image for disabled buttons, use