X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bb69632a56a827bed4cfae842bfffa88259ac1aa..427861bde09badef1a2950ad799e69fac6b4a48a:/interface/wx/toolbar.h?ds=sidebyside diff --git a/interface/wx/toolbar.h b/interface/wx/toolbar.h index 45705ce735..90f2cab465 100644 --- a/interface/wx/toolbar.h +++ b/interface/wx/toolbar.h @@ -12,14 +12,23 @@ A toolbar is a bar of buttons and/or other controls usually placed below the menu bar in a wxFrame. - You may create a toolbar that is managed by the frame, by calling + You may create a toolbar that is managed by a frame calling wxFrame::CreateToolBar(). Under Pocket PC, you should always use this function for creating the toolbar to be managed by the frame, so that wxWidgets can use a combined menubar and toolbar. Where you manage your - own toolbars, create a wxToolBar as usual. + own toolbars, create wxToolBar as usual. - The meaning of a "separator" is a vertical line under Windows and simple - space under GTK+. + There are several different types of tools you can add to a toolbar. + These types are controlled by the ::wxItemKind enumeration. + + Note that many methods in wxToolBar such as wxToolBar::AddTool return a + @c wxToolBarToolBase* object. + This should be regarded as an opaque handle representing the newly added + toolbar item, providing access to its id and position within the toolbar. + Changes to the item's state should be made through calls to wxToolBar methods, + for example wxToolBar::EnableTool. + Calls to @c wxToolBarToolBase methods (undocumented by purpose) will not change + the visible state of the item within the the tool bar. wxMSW note: Note that under wxMSW toolbar paints tools to reflect system-wide colours. If you use more than 16 colours in your tool bitmaps, @@ -27,12 +36,12 @@ bitmaps will inadvertently be mapped to system colours. To do this, set the msw.remap system option before creating the toolbar: @code - wxSystemOptions::SetOption(wxT("msw.remap"), 0); + wxSystemOptions::SetOption("msw.remap", 0); @endcode If you wish to use 32-bit images (which include an alpha channel for transparency) use: @code - wxSystemOptions::SetOption(wxT("msw.remap"), 2); + wxSystemOptions::SetOption("msw.remap", 2); @endcode Then colour remapping is switched off, and a transparent background used. But only use this option under Windows XP with true colour: @@ -40,9 +49,6 @@ if (wxTheApp->GetComCtl32Version() >= 600 && ::wxDisplayDepth() >= 32) @endcode - There are several different types of tools you can add to a toolbar. These - types are controlled by the ::wxItemKind enumeration. - @beginStyleTable @style{wxTB_FLAT} Gives the toolbar a flat look (Windows and GTK only). @@ -75,11 +81,11 @@ Align the toolbar at the right side of parent window. @endStyleTable - See also @ref overview_windowstyles. Note that the Win32 native toolbar + See also @ref overview_windowstyles. Note that the wxMSW native toolbar ignores @c wxTB_NOICONS style. Also, toggling the @c wxTB_TEXT works only if the style was initially on. - @beginEventTable{wxCommandEvent} + @beginEventEmissionTable{wxCommandEvent} @event{EVT_TOOL(id, func)} Process a @c wxEVT_COMMAND_TOOL_CLICKED event (a synonym for @c wxEVT_COMMAND_MENU_SELECTED). Pass the id of the tool. @@ -92,14 +98,14 @@ The same as EVT_TOOL_RANGE(). @event{EVT_TOOL_RCLICKED(id, func)} Process a @c wxEVT_COMMAND_TOOL_RCLICKED event. Pass the id of the - tool. + tool. (Not available on wxOSX.) @event{EVT_TOOL_RCLICKED_RANGE(id1, id2, func)} Process a @c wxEVT_COMMAND_TOOL_RCLICKED event for a range of ids. Pass - the ids of the tools. + the ids of the tools. (Not available on wxOSX.) @event{EVT_TOOL_ENTER(id, func)} Process a @c wxEVT_COMMAND_TOOL_ENTER event. Pass the id of the toolbar itself. The value of wxCommandEvent::GetSelection() is the tool id, or - -1 if the mouse cursor has moved off a tool. + -1 if the mouse cursor has moved off a tool. (Not available on wxOSX.) @event{EVT_TOOL_DROPDOWN(id, func)} Process a @c wxEVT_COMMAND_TOOL_DROPDOWN_CLICKED event. If unhandled, displays the default dropdown menu set using @@ -111,8 +117,8 @@ button. The event handler functions take a wxCommandEvent argument. For most event macros, the identifier of the tool is passed, but for EVT_TOOL_ENTER() the toolbar window identifier is passed and the tool identifier is retrieved - from the wxCommandEvent. This is because the identifier may be -1 when the - mouse moves off a tool, and -1 is not allowed as an identifier in the event + from the wxCommandEvent. This is because the identifier may be @c wxID_ANY when the + mouse moves off a tool, and @c wxID_ANY is not allowed as an identifier in the event system. @library{wxcore} @@ -136,25 +142,25 @@ public: @param id Window identifier. If -1, will automatically create an identifier. @param pos - Window position. ::wxDefaultPosition is (-1, -1) which indicates that - wxWidgets should generate a default position for the window. If - using the wxWindow class directly, supply an actual position. + Window position. ::wxDefaultPosition indicates that wxWidgets should + generate a default position for the window. + If using the wxWindow class directly, supply an actual position. @param size - Window size. ::wxDefaultSize is (-1, -1) which indicates that - wxWidgets should generate a default size for the window. + Window size. ::wxDefaultSize indicates that wxWidgets should generate + a default size for the window. @param style - Window style. See wxToolBar for details. + Window style. See wxToolBar initial description for details. @param name Window name. @remarks After a toolbar is created, you use AddTool() and perhaps - AddSeparator(), and then you must call Realize() to construct and - display the toolbar tools. + AddSeparator(), and then you must call Realize() to construct + and display the toolbar tools. */ wxToolBar(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxTB_HORIZONTAL | wxBORDER_NONE, + long style = wxTB_HORIZONTAL, const wxString& name = wxToolBarNameStr); /** @@ -218,10 +224,32 @@ public: /** Adds a separator for spacing groups of tools. - @see AddTool(), SetToolSeparation() + Notice that the separator uses the look appropriate for the current + platform so it can be a vertical line (MSW, some versions of GTK) or + just an empty space or something else. + + @see AddTool(), SetToolSeparation(), AddStretchableSpace() */ virtual wxToolBarToolBase* AddSeparator(); + /** + Adds a stretchable space to the toolbar. + + Any space not taken up by the fixed items (all items except for + stretchable spaces) is distributed in equal measure between the + stretchable spaces in the toolbar. The most common use for this method + is to add a single stretchable space before the items which should be + right-aligned in the toolbar, but more exotic possibilities are + possible, e.g. a stretchable space may be added in the beginning and + the end of the toolbar to centre all toolbar items. + + @see AddTool(), AddSeparator(), InsertStretchableSpace() + + @since 2.9.1 + */ + wxToolBarToolBase *AddStretchableSpace(); + + //@{ /** Adds a tool to the toolbar. @@ -229,7 +257,7 @@ public: The tool to be added. @remarks After you have added tools to a toolbar, you must call - Realize() in order to have the tools appear. + Realize() in order to have the tools appear. @see AddSeparator(), AddCheckTool(), AddRadioTool(), InsertTool(), DeleteTool(), Realize(), SetDropdownMenu() @@ -284,11 +312,6 @@ public: The bitmap used when the tool is disabled. If it is equal to ::wxNullBitmap (default), the disabled bitmap is automatically generated by greying the normal one. - @param shortHelpString - This string is used for the tools tooltip. - @param longHelpString - This string is shown in the statusbar (if any) of the parent frame - when the mouse pointer is inside the tool. @param kind May be ::wxITEM_NORMAL for a normal button (default), ::wxITEM_CHECK for a checkable tool (such tool stays pressed after it had been @@ -297,6 +320,11 @@ public: whenever another button in the group is checked. ::wxITEM_DROPDOWN specifies that a drop-down menu button will appear next to the tool button (only GTK+ and MSW). Call SetDropdownMenu() afterwards. + @param shortHelpString + This string is used for the tools tooltip. + @param longHelpString + This string is shown in the statusbar (if any) of the parent frame + when the mouse pointer is inside the tool. @param clientData An optional pointer to client data which can be retrieved later using GetToolClientData(). @@ -314,6 +342,7 @@ public: const wxString& shortHelpString = wxEmptyString, const wxString& longHelpString = wxEmptyString, wxObject* clientData = NULL); + //@} /** Deletes all the tools in the toolbar. @@ -392,8 +421,15 @@ public: wxSize GetMargins() const; /** - Returns the size of bitmap that the toolbar expects to have. The default - bitmap size is 16 by 15 pixels. + Returns the size of bitmap that the toolbar expects to have. + + The default bitmap size is platform-dependent: for example, it is 16*15 + for MSW and 24*24 for GTK. This size does @em not necessarily indicate + the best size to use for the toolbars on the given platform, for this + you should use @c wxArtProvider::GetNativeSizeHint(wxART_TOOLBAR) but + in any case, as the bitmap size is deduced automatically from the size + of the bitmaps associated with the tools added to the toolbar, it is + usually unnecessary to call SetToolBitmapSize() explicitly. @remarks Note that this is the size of the bitmap you pass to AddTool(), and not the eventual size of the tool button. @@ -402,6 +438,17 @@ public: */ virtual wxSize GetToolBitmapSize() const; + /** + Returns a pointer to the tool at ordinal position @a pos. + + Don't confuse this with FindToolForPosition(). + + @since 2.9.1 + + @see GetToolsCount() + */ + const wxToolBarToolBase *GetToolByPos(int pos) const; + /** Get any client data associated with the tool. @@ -506,6 +553,17 @@ public: */ virtual wxToolBarToolBase* InsertSeparator(size_t pos); + /** + Inserts a stretchable space at the given position. + + See AddStretchableSpace() for details about stretchable spaces. + + @see InsertTool(), InsertSeparator() + + @since 2.9.1 + */ + wxToolBarToolBase *InsertStretchableSpace(size_t pos); + //@{ /** Inserts the tool with the specified attributes into the toolbar at the @@ -514,14 +572,18 @@ public: You must call Realize() for the change to take place. @see AddTool(), InsertControl(), InsertSeparator() + + @return The newly inserted tool or @NULL on failure. Notice that with + the overload taking @a tool parameter the caller is responsible for + deleting the tool in the latter case. */ wxToolBarToolBase* InsertTool(size_t pos, int toolId, const wxBitmap& bitmap1, const wxBitmap& bitmap2 = wxNullBitmap, bool isToggle = false, wxObject* clientData = NULL, - const wxString& shortHelpString = "", - const wxString& longHelpString = ""); + const wxString& shortHelpString = wxEmptyString, + const wxString& longHelpString = wxEmptyString); wxToolBarToolBase* InsertTool(size_t pos, wxToolBarToolBase* tool); //@} @@ -618,6 +680,7 @@ public: */ bool SetDropdownMenu(int id, wxMenu* menu); + //@{ /** Set the values to be used as margins for the toolbar. @@ -647,6 +710,7 @@ public: @see GetMargins(), wxSize */ void SetMargins(const wxSize& size); + //@} /** Sets the default size of each tool bitmap. The default bitmap size is 16