2008-03-08 08:52:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: button.h
|
2008-03-10 11:24:38 -04:00
|
|
|
// Purpose: interface of wxButton
|
2008-03-08 08:52:38 -05:00
|
|
|
// Author: wxWidgets team
|
|
|
|
// RCS-ID: $Id$
|
2010-07-13 09:29:13 -04:00
|
|
|
// Licence: wxWindows licence
|
2008-03-08 08:52:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
/**
|
|
|
|
@class wxButton
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-16 20:47:38 -04:00
|
|
|
A button is a control that contains a text string, and is one of the most
|
|
|
|
common elements of a GUI.
|
|
|
|
|
|
|
|
It may be placed on a @ref wxDialog "dialog box" or on a @ref wxPanel panel,
|
|
|
|
or indeed on almost any other window.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@beginStyleTable
|
2008-04-06 10:43:04 -04:00
|
|
|
@style{wxBU_LEFT}
|
2009-06-17 18:13:46 -04:00
|
|
|
Left-justifies the label. Windows and GTK+ only.
|
2008-04-06 10:43:04 -04:00
|
|
|
@style{wxBU_TOP}
|
2009-06-17 18:13:46 -04:00
|
|
|
Aligns the label to the top of the button. Windows and GTK+ only.
|
2008-04-06 10:43:04 -04:00
|
|
|
@style{wxBU_RIGHT}
|
2009-06-17 18:13:46 -04:00
|
|
|
Right-justifies the bitmap label. Windows and GTK+ only.
|
2008-04-06 10:43:04 -04:00
|
|
|
@style{wxBU_BOTTOM}
|
2009-06-17 18:13:46 -04:00
|
|
|
Aligns the label to the bottom of the button. Windows and GTK+ only.
|
2008-04-06 10:43:04 -04:00
|
|
|
@style{wxBU_EXACTFIT}
|
2009-06-17 18:13:46 -04:00
|
|
|
Creates the button as small as possible instead of making it of the
|
|
|
|
standard size (which is the default behaviour ).
|
|
|
|
@style{wxBU_NOTEXT}
|
|
|
|
Disables the display of the text label in the button even if it has one
|
|
|
|
or its id is one of the standard stock ids with an associated label:
|
|
|
|
without using this style a button which is only supposed to show a
|
|
|
|
bitmap but uses a standard id would display a label too.
|
2008-04-06 10:43:04 -04:00
|
|
|
@style{wxBORDER_NONE}
|
2009-06-20 16:05:52 -04:00
|
|
|
Creates a button without border. This is currently implemented in MSW,
|
2009-06-20 23:01:53 -04:00
|
|
|
GTK2 and OSX/Carbon ports but in the latter only applies to buttons
|
|
|
|
with bitmaps and using bitmap of one of the standard sizes only, namely
|
2009-06-20 16:05:52 -04:00
|
|
|
128*128, 48*48, 24*24 or 16*16. In all the other cases wxBORDER_NONE is
|
|
|
|
ignored under OSX.
|
2008-03-08 08:52:38 -05:00
|
|
|
@endStyleTable
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2009-06-15 19:18:06 -04:00
|
|
|
By default, i.e. if none of the alignment styles are specified, the label
|
|
|
|
is centered both horizontally and vertically. If the button has both a
|
|
|
|
label and a bitmap, the alignment styles above specify the location of the
|
|
|
|
rectangle combining both the label and the bitmap and the bitmap position
|
|
|
|
set with wxButton::SetBitmapPosition() defines the relative position of the
|
|
|
|
bitmap with respect to the label (however currently non-default alignment
|
|
|
|
combinations are not implemented on all platforms).
|
|
|
|
|
2009-02-18 12:58:51 -05:00
|
|
|
@beginEventEmissionTable{wxCommandEvent}
|
2008-04-06 10:43:04 -04:00
|
|
|
@event{EVT_BUTTON(id, func)}
|
2011-01-06 14:52:14 -05:00
|
|
|
Process a @c wxEVT_COMMAND_BUTTON_CLICKED event, when the button is clicked.
|
2008-03-08 08:52:38 -05:00
|
|
|
@endEventTable
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2009-06-14 18:55:24 -04:00
|
|
|
|
2009-06-20 23:01:53 -04:00
|
|
|
Since version 2.9.1 wxButton supports showing both text and an image
|
|
|
|
(currently only when using wxMSW, wxGTK or wxOSX/Cocoa ports), see
|
2009-06-14 18:55:24 -04:00
|
|
|
SetBitmap() and SetBitmapLabel(), SetBitmapDisabled() &c methods. In the
|
|
|
|
previous wxWidgets versions this functionality was only available in (the
|
|
|
|
now trivial) wxBitmapButton class which was only capable of showing an
|
|
|
|
image without text.
|
|
|
|
|
|
|
|
A button may have either a single image for all states or different images
|
2009-06-20 23:01:53 -04:00
|
|
|
for the following states (different images are not currently supported
|
|
|
|
under OS X where the normal image is used for all states):
|
2009-06-14 18:55:24 -04:00
|
|
|
@li @b normal: the default state
|
|
|
|
@li @b disabled: bitmap shown when the button is disabled.
|
|
|
|
@li @b pressed: bitmap shown when the button is pushed (e.g. while the user
|
|
|
|
keeps the mouse button pressed on it)
|
|
|
|
@li @b focus: bitmap shown when the button has keyboard focus (but is not
|
|
|
|
pressed as in this case the button is in the pressed state)
|
|
|
|
@li @b current: bitmap shown when the mouse is over the button (but it is
|
|
|
|
not pressed although it may have focus). Notice that if current bitmap
|
|
|
|
is not specified but the current platform UI uses hover images for the
|
|
|
|
buttons (such as Windows XP or GTK+), then the focus bitmap is used for
|
|
|
|
hover state as well. This makes it possible to set focus bitmap only to
|
|
|
|
get reasonably good behaviour on all platforms.
|
|
|
|
|
|
|
|
All of the bitmaps must be of the same size and the normal bitmap must be
|
|
|
|
set first (to a valid bitmap), before setting any other ones.
|
|
|
|
|
|
|
|
The position of the image inside the button be configured using
|
|
|
|
SetBitmapPosition(). By default the image is on the left of the text.
|
|
|
|
|
2010-03-02 20:08:19 -05:00
|
|
|
Please also notice that GTK+ uses a global setting called @c
|
|
|
|
gtk-button-images to determine if the images should be shown in the buttons
|
|
|
|
at all. If it is off (which is the case in e.g. Gnome 2.28 by default), no
|
|
|
|
images will be shown, consistently with the native behaviour.
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxcore}
|
|
|
|
@category{ctrl}
|
2008-10-13 04:05:18 -04:00
|
|
|
@appearance{button.png}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
@see wxBitmapButton
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
class wxButton : public wxControl
|
|
|
|
{
|
|
|
|
public:
|
2008-03-16 20:47:38 -04:00
|
|
|
/**
|
|
|
|
Default ctor.
|
|
|
|
*/
|
|
|
|
wxButton();
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
Constructor, creating and showing a button.
|
2008-03-16 20:47:38 -04:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
The preferred way to create standard buttons is to use default value of
|
2008-03-16 20:47:38 -04:00
|
|
|
@a label. If no label is supplied and @a id is one of standard IDs from
|
2010-08-11 12:03:46 -04:00
|
|
|
@ref page_stockitems "this list", a standard label will be used. In
|
|
|
|
other words, if you use a predefined @c wxID_XXX constant, just omit
|
|
|
|
the label completely rather than specifying it. In particular, help
|
|
|
|
buttons (the ones with @a id of @c wxID_HELP) under Mac OS X can't
|
|
|
|
display any label at all and while wxButton will detect if the standard
|
|
|
|
"Help" label is used and ignore it, using any other label will prevent
|
|
|
|
the button from correctly appearing as a help button and so should be
|
|
|
|
avoided.
|
|
|
|
|
2008-03-16 20:47:38 -04:00
|
|
|
|
|
|
|
In addition to that, the button will be decorated with stock icons under GTK+ 2.
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param parent
|
2008-03-09 08:33:59 -04:00
|
|
|
Parent window. Must not be @NULL.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param id
|
2008-03-09 08:33:59 -04:00
|
|
|
Button identifier. A value of wxID_ANY indicates a default value.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param label
|
2008-03-09 08:33:59 -04:00
|
|
|
Text to be displayed on the button.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param pos
|
2008-03-09 08:33:59 -04:00
|
|
|
Button position.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param size
|
2008-03-09 08:33:59 -04:00
|
|
|
Button size. If the default size is specified then the button is sized
|
|
|
|
appropriately for the text.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param style
|
2008-03-16 20:47:38 -04:00
|
|
|
Window style. See wxButton class description.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param validator
|
2008-03-09 08:33:59 -04:00
|
|
|
Window validator.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param name
|
2008-03-09 08:33:59 -04:00
|
|
|
Window name.
|
2008-03-16 20:47:38 -04:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see Create(), wxValidator
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-08 09:43:31 -05:00
|
|
|
wxButton(wxWindow* parent, wxWindowID id,
|
|
|
|
const wxString& label = wxEmptyString,
|
|
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
|
|
const wxSize& size = wxDefaultSize,
|
|
|
|
long style = 0,
|
|
|
|
const wxValidator& validator = wxDefaultValidator,
|
2008-03-25 08:22:08 -04:00
|
|
|
const wxString& name = wxButtonNameStr);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
Button creation function for two-step creation.
|
|
|
|
For more details, see wxButton().
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
bool Create(wxWindow* parent, wxWindowID id,
|
|
|
|
const wxString& label = wxEmptyString,
|
|
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
|
|
const wxSize& size = wxDefaultSize,
|
|
|
|
long style = 0,
|
2008-03-25 08:22:08 -04:00
|
|
|
const wxValidator& validator = wxDefaultValidator,
|
|
|
|
const wxString& name = wxButtonNameStr);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2010-02-08 14:52:00 -05:00
|
|
|
/**
|
|
|
|
Returns @true if an authentication needed symbol is displayed on the
|
|
|
|
button.
|
|
|
|
|
|
|
|
@remarks This method always returns @false if the platform is not
|
|
|
|
Windows Vista or newer.
|
|
|
|
|
|
|
|
@see SetAuthNeeded()
|
|
|
|
|
|
|
|
@since 2.9.1
|
|
|
|
*/
|
|
|
|
bool GetAuthNeeded() const;
|
|
|
|
|
2009-06-14 18:55:24 -04:00
|
|
|
/**
|
|
|
|
Return the bitmap shown by the button.
|
|
|
|
|
|
|
|
The returned bitmap may be invalid only if the button doesn't show any
|
|
|
|
images.
|
|
|
|
|
|
|
|
@see SetBitmap()
|
|
|
|
|
|
|
|
@since 2.9.1
|
|
|
|
*/
|
|
|
|
wxBitmap GetBitmap() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
Returns the bitmap used when the mouse is over the button, which may be
|
|
|
|
invalid.
|
|
|
|
|
|
|
|
@see SetBitmapCurrent()
|
|
|
|
|
|
|
|
@since 2.9.1 (available as wxBitmapButton::GetBitmapHover() in previous
|
|
|
|
versions)
|
|
|
|
*/
|
|
|
|
wxBitmap GetBitmapCurrent() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
Returns the bitmap for the disabled state, which may be invalid.
|
|
|
|
|
|
|
|
@see SetBitmapDisabled()
|
|
|
|
|
|
|
|
@since 2.9.1 (available in wxBitmapButton only in previous versions)
|
|
|
|
*/
|
|
|
|
wxBitmap GetBitmapDisabled() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
Returns the bitmap for the focused state, which may be invalid.
|
|
|
|
|
|
|
|
@see SetBitmapFocus()
|
|
|
|
|
|
|
|
@since 2.9.1 (available in wxBitmapButton only in previous versions)
|
|
|
|
*/
|
|
|
|
wxBitmap GetBitmapFocus() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
Returns the bitmap for the normal state.
|
|
|
|
|
|
|
|
This is exactly the same as GetBitmap() but uses a name
|
|
|
|
backwards-compatible with wxBitmapButton.
|
|
|
|
|
|
|
|
@see SetBitmap(), SetBitmapLabel()
|
|
|
|
|
|
|
|
@since 2.9.1 (available in wxBitmapButton only in previous versions)
|
|
|
|
*/
|
|
|
|
wxBitmap GetBitmapLabel() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
Returns the bitmap for the pressed state, which may be invalid.
|
|
|
|
|
|
|
|
@see SetBitmapPressed()
|
|
|
|
|
|
|
|
@since 2.9.1 (available as wxBitmapButton::GetBitmapSelected() in
|
|
|
|
previous versions)
|
|
|
|
*/
|
|
|
|
wxBitmap GetBitmapPressed() const;
|
|
|
|
|
2010-03-01 19:23:31 -05:00
|
|
|
/**
|
|
|
|
Get the margins between the bitmap and the text of the button.
|
|
|
|
|
|
|
|
@see SetBitmapMargins()
|
|
|
|
|
|
|
|
@since 2.9.1
|
|
|
|
*/
|
|
|
|
wxSize GetBitmapMargins();
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
Returns the default size for the buttons. It is advised to make all the dialog
|
|
|
|
buttons of the same size and this function allows to retrieve the (platform and
|
|
|
|
current font dependent size) which should be the best suited for this.
|
|
|
|
*/
|
2008-03-24 18:17:25 -04:00
|
|
|
static wxSize GetDefaultSize();
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns the string label for the button.
|
2008-03-16 20:47:38 -04:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see SetLabel()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
wxString GetLabel() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2010-02-08 14:52:00 -05:00
|
|
|
/**
|
|
|
|
Sets whether an authentication needed symbol should be displayed on the
|
|
|
|
button.
|
|
|
|
|
|
|
|
@remarks This method doesn't do anything if the platform is not Windows
|
|
|
|
Vista or newer.
|
|
|
|
|
|
|
|
@see GetAuthNeeded()
|
|
|
|
|
|
|
|
@since 2.9.1
|
|
|
|
*/
|
|
|
|
void SetAuthNeeded(bool needed = true);
|
|
|
|
|
2009-06-14 18:55:24 -04:00
|
|
|
/**
|
|
|
|
Sets the bitmap to display in the button.
|
|
|
|
|
|
|
|
The bitmap is displayed together with the button label. This method
|
|
|
|
sets up a single bitmap which is used in all button states, use
|
|
|
|
SetBitmapDisabled(), SetBitmapPressed(), SetBitmapCurrent() or
|
|
|
|
SetBitmapFocus() to change the individual images used in different
|
|
|
|
states.
|
|
|
|
|
|
|
|
@param bitmap
|
|
|
|
The bitmap to display in the button. May be invalid to remove any
|
|
|
|
currently displayed bitmap.
|
|
|
|
@param dir
|
|
|
|
The position of the bitmap inside the button. By default it is
|
|
|
|
positioned to the left of the text, near to the left button border.
|
|
|
|
Other possible values include wxRIGHT, wxTOP and wxBOTTOM.
|
|
|
|
|
|
|
|
@see SetBitmapPosition(), SetBitmapMargins()
|
|
|
|
|
|
|
|
@since 2.9.1
|
|
|
|
*/
|
|
|
|
void SetBitmap(const wxBitmap& bitmap, wxDirection dir = wxLEFT);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the bitmap to be shown when the mouse is over the button.
|
|
|
|
|
|
|
|
@see GetBitmapCurrent()
|
|
|
|
|
|
|
|
@since 2.9.1 (available as wxBitmapButton::SetBitmapHover() in previous
|
|
|
|
versions)
|
|
|
|
*/
|
|
|
|
void SetBitmapCurrent(const wxBitmap& bitmap);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the bitmap for the disabled button appearance.
|
|
|
|
|
|
|
|
@see GetBitmapDisabled(), SetBitmapLabel(),
|
|
|
|
SetBitmapPressed(), SetBitmapFocus()
|
|
|
|
|
|
|
|
@since 2.9.1 (available in wxBitmapButton only in previous versions)
|
|
|
|
*/
|
|
|
|
void SetBitmapDisabled(const wxBitmap& bitmap);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the bitmap for the button appearance when it has the keyboard
|
|
|
|
focus.
|
|
|
|
|
|
|
|
@see GetBitmapFocus(), SetBitmapLabel(),
|
|
|
|
SetBitmapPressed(), SetBitmapDisabled()
|
|
|
|
|
|
|
|
@since 2.9.1 (available in wxBitmapButton only in previous versions)
|
|
|
|
*/
|
|
|
|
void SetBitmapFocus(const wxBitmap& bitmap);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the bitmap label for the button.
|
|
|
|
|
|
|
|
@remarks This is the bitmap used for the unselected state, and for all
|
|
|
|
other states if no other bitmaps are provided.
|
|
|
|
|
|
|
|
@see SetBitmap(), GetBitmapLabel()
|
|
|
|
|
|
|
|
@since 2.9.1 (available in wxBitmapButton only in previous versions)
|
|
|
|
*/
|
|
|
|
void SetBitmapLabel(const wxBitmap& bitmap);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the bitmap for the selected (depressed) button appearance.
|
|
|
|
|
|
|
|
@since 2.9.1 (available as wxBitmapButton::SetBitmapSelected() in
|
|
|
|
previous versions)
|
|
|
|
*/
|
|
|
|
void SetBitmapPressed(const wxBitmap& bitmap);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Set the margins between the bitmap and the text of the button.
|
|
|
|
|
|
|
|
This method is currently only implemented under MSW. If it is not
|
|
|
|
called, default margin is used around the bitmap.
|
|
|
|
|
|
|
|
@see SetBitmap(), SetBitmapPosition()
|
|
|
|
|
|
|
|
@since 2.9.1
|
|
|
|
*/
|
|
|
|
//@{
|
|
|
|
void SetBitmapMargins(wxCoord x, wxCoord y);
|
|
|
|
void SetBitmapMargins(const wxSize& sz);
|
|
|
|
//@}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Set the position at which the bitmap is displayed.
|
|
|
|
|
|
|
|
This method should only be called if the button does have an associated
|
|
|
|
bitmap.
|
|
|
|
|
|
|
|
@since 2.9.1
|
|
|
|
|
|
|
|
@param dir
|
|
|
|
Direction in which the bitmap should be positioned, one of wxLEFT,
|
|
|
|
wxRIGHT, wxTOP or wxBOTTOM.
|
|
|
|
*/
|
|
|
|
void SetBitmapPosition(wxDirection dir);
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
2008-03-27 17:14:31 -04:00
|
|
|
This sets the button to be the default item in its top-level window
|
|
|
|
(e.g. the panel or the dialog box containing it).
|
2008-03-16 20:47:38 -04:00
|
|
|
|
|
|
|
As normal, pressing return causes the default button to be depressed when
|
|
|
|
the return key is pressed.
|
|
|
|
|
|
|
|
See also wxWindow::SetFocus() which sets the keyboard focus for windows
|
|
|
|
and text panel items, and wxTopLevelWindow::SetDefaultItem().
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@remarks Under Windows, only dialog box buttons respond to this function.
|
2008-03-27 17:14:31 -04:00
|
|
|
|
2008-05-10 21:38:53 -04:00
|
|
|
@return the old default item (possibly NULL)
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-27 17:14:31 -04:00
|
|
|
virtual wxWindow* SetDefault();
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the string label for the button.
|
2008-03-16 20:47:38 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param label
|
2008-03-09 08:33:59 -04:00
|
|
|
The label to set.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetLabel(const wxString& label);
|
|
|
|
};
|
2008-03-10 11:24:38 -04:00
|
|
|
|