HoverRace  2.0
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
HoverRace::Display::ActionButton Class Reference

A button that's bound to a controller action. More...

#include <ActionButton.h>

+ Inheritance diagram for HoverRace::Display::ActionButton:

Public Member Functions

 ActionButton (Display &display, uiLayoutFlags_t layoutFlags=0)
 Constructor for automatically-sized button with automatic label. More...
 
 ActionButton (Display &display, const std::string &text, uiLayoutFlags_t layoutFlags=0)
 Constructor for automatically-sized button with fixed label. More...
 
 ActionButton (Display &display, const Vec2 &size, uiLayoutFlags_t layoutFlags=0)
 Constructor for fixed-sized button with automatic label. More...
 
 ActionButton (Display &display, const Vec2 &size, const std::string &text, uiLayoutFlags_t layoutFlags=0)
 Constructor for fixed-sized button with fixed label. More...
 
virtual ~ActionButton ()
 
void AttachAction (Control::InputEventController &controller, Control::InputEventController::VoidActionPtr action)
 Attach an action to the button. More...
 
void DetachAction ()
 Detach the currently-attached action (if any). More...
 
- Public Member Functions inherited from HoverRace::Display::Button
 Button (Display &display, const std::string &text, uiLayoutFlags_t layoutFlags=0)
 Constructor for automatically-sized button. More...
 
 Button (Display &display, const Vec2 &size, const std::string &text, uiLayoutFlags_t layoutFlags=0)
 Constructor for fixed-sized button. More...
 
virtual ~Button ()
 
void AttachView (Display &disp) override
 
void FireModelUpdate (int prop) override
 Indicate that a model property has changed. More...
 
BoxGetBackgroundChild () const
 
BaseContainerGetContentsChild () const
 
FillBoxGetHighlightChild () const
 
BoxGetIcon () const
 
BoxGetIconChild () const
 
LabelGetLabelChild () const
 
PictureGetPictureChild () const
 
const std::string & GetText () const
 
Alignment getTextAlignment () const
 
Vec3 Measure () override
 Calculate the size of the component. More...
 
bool OnNavigate (const Control::Nav &nav) override
 
void SetContents (std::shared_ptr< BaseContainer > contents)
 Set a container of widgets to render as the contents of the button. More...
 
void SetFixedWidth (double width)
 Enable auto-sizing on the height only (i.e. More...
 
void SetIcon (std::shared_ptr< Box > icon)
 Set the optional icon to appear on the button, in addition to the text. More...
 
void SetText (const std::string &text)
 
void SetTextAlignment (Alignment textAlignment)
 Sets the alignment of the text within the button. More...
 
void SetTexture (std::shared_ptr< Res< Texture >> image)
 Set the background image. More...
 
std::shared_ptr< BoxShareIcon () const
 
std::shared_ptr< Res< Texture > > ShareTexture () const
 
- Public Member Functions inherited from HoverRace::Display::ClickRegion
 ClickRegion (Display &display, uiLayoutFlags_t layoutFlags=0)
 Constructor for automatically-sized button. More...
 
 ClickRegion (Display &display, const Vec2 &size, uiLayoutFlags_t layoutFlags=0)
 Constructor for fixed-sized button. More...
 
virtual ~ClickRegion ()
 
void AttachView (Display &disp) override
 
clickedSignal_tGetClickedSignal ()
 
const Vec2GetSize ()
 Retrieve the size of the button. More...
 
bool IsAutoSize () const
 Check if automatic sizing is enabled. More...
 
bool IsEnabled () const
 Check if the widget is enabled. More...
 
Vec3 Measure () override
 Calculate the size of the component. More...
 
bool OnAction () override
 
bool OnMouseMoved (const Vec2 &pos) override
 
bool OnMousePressed (const Control::Mouse::Click &click) override
 
bool OnMouseReleased (const Control::Mouse::Click &click) override
 
void SetAutoSize ()
 Enable automatic sizing. More...
 
void SetEnabled (bool enabled)
 
void SetSize (const Vec2 &size)
 Set the button to a fixed size. More...
 
void SetSize (double w, double h)
 Convenience function for SetSize(const Vec2&). More...
 
bool TryFocus (const Control::Nav &nav=Control::Nav::NEUTRAL) override
 Attempts to give this widget focus. More...
 
- Public Member Functions inherited from HoverRace::Display::UiViewModel
 UiViewModel (uiLayoutFlags_t layoutFlags=0)
 
virtual ~UiViewModel ()
 
virtual void DropFocus ()
 Force this widget to give up focus, if it is currently focused. More...
 
Vec2 GetAlignedPos (const Vec2 &pos, double w, double h) const
 Retrieve an arbitrary position adjusted by the current alignment. More...
 
Vec2 GetAlignedPos (double w, double h) const
 Retrieve the position adjusted by the current alignment. More...
 
Alignment GetAlignment () const
 Retrieve the alignment of the component. More...
 
focusRelinquishedSignal_tGetFocusRelinquishedSignal ()
 
focusRequestedSignal_tGetFocusRequestedSignal ()
 
uiLayoutFlags_t GetLayoutFlags () const
 Retrieve the layout flags. More...
 
const Vec2GetPos () const
 Get the position of the component. More...
 
const Vec2GetTranslation () const
 Retrieves the position translation. More...
 
bool IsFocused () const
 Check if this widget currently has input focus. More...
 
uiLayoutFlags_t IsLayoutFloating () const
 
uiLayoutFlags_t IsLayoutUnscaled () const
 
virtual bool OnMouseScrolled (const Control::Mouse::Scroll &)
 
void RequestFocus ()
 Attempt to hand over the input focus to this widget. More...
 
void SetAlignment (Alignment alignment)
 Set the alignment of the component. More...
 
void SetPos (const Vec2 &pos)
 Set the position of the component. More...
 
void SetPos (double x, double y)
 Convenience function for SetPos(const Vec2&). More...
 
void SetTranslation (const Vec2 &translation)
 Sets the position translation. More...
 
void SetTranslation (double x, double y)
 Convenience function for SetTranslation(const Vec2&). More...
 
- Public Member Functions inherited from HoverRace::Display::ViewModel
 ViewModel ()
 
virtual ~ViewModel ()
 
ViewGetView () const
 
void PrepareRender ()
 
void Render ()
 
void SetView (std::unique_ptr< View > &&view)
 

Protected Member Functions

virtual void FireClickedSignal ()
 
- Protected Member Functions inherited from HoverRace::Display::Button
void Layout () override
 Adjust the size and position of any child elements. More...
 
- Protected Member Functions inherited from HoverRace::Display::ClickRegion
bool IsPressed () const
 
virtual void OnMouseDrag (const Vec2 &relPos)
 Handle when the mouse is dragged over the widget. More...
 
void RequestSizing ()
 Indicate that the size of the button may have changed, when auto-sizing is enabled. More...
 
Vec2 ScreenPosToRel (const Vec2 &pos)
 Convert screen coordinates to relative (widget) coordinates. More...
 
void SetPressed (bool pressed)
 
bool TestHit (const Vec2 &pos)
 Check if the coordinates of an event are within the bounds of this component. More...
 
- Protected Member Functions inherited from HoverRace::Display::UiViewModel
void RelinquishFocus (const Control::Nav &nav)
 Voluntarily give up input focus, passing it on to the next widget. More...
 
void SetFocused (bool focused)
 Set the focused state. More...
 
- Protected Member Functions inherited from HoverRace::Display::ViewModel
template<class T >
void AttachViewDynamic (Display &disp, T *self)
 
void RequestLayout ()
 Indicate that the current layout is out-of-date and needs to be adjusted. More...
 

Private Types

using SUPER = Button
 

Private Member Functions

void InitKeycap ()
 

Private Attributes

std::weak_ptr< Control::InputEventController::VoidActionPtr::element_type > action
 
bool armed
 
std::string fixedText
 
std::shared_ptr< KeycapIconkeycap
 

Additional Inherited Members

- Public Types inherited from HoverRace::Display::ClickRegion
using clickedSignal_t = boost::signals2::signal< void(ClickRegion &)>
 
- Public Types inherited from HoverRace::Display::UiViewModel
enum  Alignment {
  Alignment::NW, Alignment::N, Alignment::NE, Alignment::E,
  Alignment::SE, Alignment::S, Alignment::SW, Alignment::W,
  Alignment::CENTER
}
 Imagine the component pinned to the container with a thumbtack. More...
 
using focusRelinquishedSignal_t = boost::signals2::signal< void(UiViewModel &, const Control::Nav &)>
 
using focusRequestedSignal_t = boost::signals2::signal< void(UiViewModel &)>
 
- Protected Attributes inherited from HoverRace::Display::ClickRegion
Displaydisplay
 

Detailed Description

A button that's bound to a controller action.

This button gets its text from the hotkey and label of the attached action.

When the button is clicked, then it fires both the "clicked" signal as well as the attached action. That way, if the scene is already listening to the action, it doesn't need to explicitly set the clicked signal on the button.

Author
Michael Imamura

Member Typedef Documentation

Constructor & Destructor Documentation

HoverRace::Display::ActionButton::ActionButton ( Display display,
uiLayoutFlags_t  layoutFlags = 0 
)

Constructor for automatically-sized button with automatic label.

Note
The button will have no text until an action is attached.
Parameters
displayThe display child elements will be attached to.
layoutFlagsOptional layout flags.
HoverRace::Display::ActionButton::ActionButton ( Display display,
const std::string &  text,
uiLayoutFlags_t  layoutFlags = 0 
)

Constructor for automatically-sized button with fixed label.

Note
The button will have no text until an action is attached.
Parameters
displayThe display child elements will be attached to.
textThe fixed label (will not be set from controller).
layoutFlagsOptional layout flags.
HoverRace::Display::ActionButton::ActionButton ( Display display,
const Vec2 size,
uiLayoutFlags_t  layoutFlags = 0 
)

Constructor for fixed-sized button with automatic label.

Note
The button will have no text until an action is attached.
Parameters
displayThe display child elements will be attached to.
sizeThe fixed button size.
layoutFlagsOptional layout flags.
HoverRace::Display::ActionButton::ActionButton ( Display display,
const Vec2 size,
const std::string &  text,
uiLayoutFlags_t  layoutFlags = 0 
)

Constructor for fixed-sized button with fixed label.

Note
The button will have no text until an action is attached.
Parameters
displayThe display child elements will be attached to.
sizeThe fixed button size.
textThe fixed label (will not be set from controller).
layoutFlagsOptional layout flags.
HoverRace::Display::ActionButton::~ActionButton ( )
virtual

Member Function Documentation

void HoverRace::Display::ActionButton::AttachAction ( Control::InputEventController controller,
Control::InputEventController::VoidActionPtr  action 
)

Attach an action to the button.

This updates the button's text with the name and hotkey of the action. Clicking on the button will fire the attached action. This is typically called from Client::Scene::AttachController.

Parameters
controllerThe controller that owns the action.
actionThe action to attach.
void HoverRace::Display::ActionButton::DetachAction ( )

Detach the currently-attached action (if any).

Note
It is usually unnecessary to call this from Client::Scene::DetachController since this class maintains a weak reference to the attached action.
void HoverRace::Display::ActionButton::FireClickedSignal ( )
protectedvirtual

Reimplemented from HoverRace::Display::ClickRegion.

void HoverRace::Display::ActionButton::InitKeycap ( )
private

Member Data Documentation

std::weak_ptr<Control::InputEventController::VoidActionPtr::element_type> HoverRace::Display::ActionButton::action
private
bool HoverRace::Display::ActionButton::armed
private
std::string HoverRace::Display::ActionButton::fixedText
private
std::shared_ptr<KeycapIcon> HoverRace::Display::ActionButton::keycap
private

The documentation for this class was generated from the following files: