Button object, which can present a text label or an image. More...
#include <UTButton.h>
Public Member Functions | |
Button_t (const String_t &label) | |
virtual | ~Button_t () |
virtual void | SetMinMaxSize (float min_width, float max_width, float min_height, float max_height) |
const String_t & | Label () const |
void | SetLabel (const String_t &label) |
void | SetAction (Message_t *message_to_send, const AbstractMessageDestination_t &destination) |
void | Disable () |
bool | IsEnabled () const |
const Message_t * | ActionMessage () const |
virtual void | MouseChanged (const Point_t &point, bool mouse_inside_view, bool left_mouse_button_down, bool left_mouse_button_double_clicked, bool right_mouse_button_down_if_present) |
Protected Member Functions | |
virtual void | LBoundsChanged (const Rect_t &old_lbounds, const Rect_t &new_lbounds) |
virtual void | Paint (const Region_t &clip_to) |
Non-core library: UTgui
Button object, which can present a text label or an image
Definition at line 48 of file UTButton.h.
Button_t::Button_t | ( | const String_t & | label | ) |
Button constructor which displays a text label in a button with the target platform's look for buttons. The minimum size will be set to something appropriate to accommodate the label with the normal style for a button on the target platform. The maximum height will equal the minimum width. The maximum width will be -1, meaning unlimited.
virtual Button_t::~Button_t | ( | ) | [virtual] |
Button destructor.
virtual void Button_t::SetMinMaxSize | ( | float | min_width, | |
float | max_width, | |||
float | min_height, | |||
float | max_height | |||
) | [virtual] |
Use of this function is prohibited for buttons, since the minimum size can change at any time due to user theme changes, and on some platforms, the minimum size is only a guess until the button is realized by showing the root level window in which it is contained. SetPFrame can be used instead by a custom container if needed, acting upon min/max size information delivered by ChildMinMaxSizeChanged when the size requirements become available or change.
If you are tempted to use SetMinMaxSize in order to make several buttons in a layout have the same width, there is a better way. Instead, LayoutView_t::SetColumnsUseSameMinWidth can be used to force the columns containing the buttons to have the same width. If the columns also have a weight of zero, the buttons will not grow larger than the largest minimum size of the set of buttons.
Reimplemented from View_t.
const String_t & Button_t::Label | ( | ) | const [inline] |
Returns the label of the button.
Definition at line 195 of file UTButton.h.
void Button_t::SetLabel | ( | const String_t & | label | ) |
Sets the label. The minimum width and height will be reset as described for the Button_t constructor.
void Button_t::SetAction | ( | Message_t * | message_to_send, | |
const AbstractMessageDestination_t & | destination | |||
) |
Sets the action to be taken when the button is clicked by the user, and enables the button.
void Button_t::Disable | ( | ) |
Disables the button, deleting the action message and clearing the action destination to which the message would have been sent.
bool Button_t::IsEnabled | ( | ) | const [inline] |
Returns whether the button is enabled, which is the case if it has a valid action and target.
const Message_t* Button_t::ActionMessage | ( | ) | const [inline] |
Returns the action message if the item is enabled, or NULL if it is disabled.
virtual void Button_t::MouseChanged | ( | const Point_t & | point, | |
bool | mouse_inside_view, | |||
bool | left_mouse_button_down, | |||
bool | left_mouse_button_double_clicked, | |||
bool | right_mouse_button_down_if_present | |||
) | [virtual] |
Virtual function invoked when the mouse is moving over the view, but not over any of its children. If a child view has a parent view (as opposed to being the root window) and needs to propogate this call up though, it can of course convert the point to its parent's coordinate system and call the parent's MouseChanged function. MouseChanged will be called whenever mouse button states change. Note that the right mouse button might not be physically present, especially on Apple hardware. That being the case, any functions that would be accessed through the right button MUST be available by other means. For example, all context menu options available by right clicking on something should also be available from the main menu. This is important on other operating systems as well, because the availability of a context menu might not be obvious to all users. MouseChanged will be called once after thex mouse has left the view, either by moving outside its lbounds or onto another window that is higher in the Z-order and overlapping with this view in X and Y. A view may not delete itself inside this call. If a button subclass needs to respond to the MouseChanged event in that way, it must do so asynchronously (by sending a message to a MessageReceiver_t in the App_t nessage loop, probably itself).
Reimplemented from View_t.
virtual void Button_t::LBoundsChanged | ( | const Rect_t & | old_lbounds, | |
const Rect_t & | new_lbounds | |||
) | [protected, virtual] |
Called when the view's lbounds has changed. This due to the view having been resized. The upper left corner will always be at x=0, y=0.
Reimplemented from View_t.
virtual void Button_t::Paint | ( | const Region_t & | clip_to | ) | [protected, virtual] |
Called when the button should be painted.
Because a view's edges are specified in coordinates for which integers are at the middle of a pixel which is deemed to be included in the view, the view bounds are, for painting purposes, expanded by a half pixel. This is reflected in the clip_to region. If a view had bounds of (10, 10, 20, 20) and were to be entirely painted, the clip_to region would be comprised of a single rectangle whose coordinates would be (9.5, 9.5, 20.5, 20.5).
Reimplemented from View_t.