FifeGUI 0.2.0
A C++ GUI library designed for games.
fcn::ToggleButton Class Reference

#include <togglebutton.hpp>

Inheritance diagram for fcn::ToggleButton:
fcn::ImageButton fcn::Button fcn::Widget fcn::MouseListener fcn::KeyListener fcn::FocusListener fcn::WidgetListener

Public Member Functions

std::string const & getGroup () const
virtual bool isSelected () const
void keyReleased (KeyEvent &keyEvent) override
void mouseReleased (MouseEvent &mouseEvent) override
ToggleButton & operator= (ToggleButton &&)=delete
ToggleButton & operator= (ToggleButton const &)=delete
void setGroup (std::string const &group)
virtual void setSelected (bool selected)
 ToggleButton (std::string const &caption, std::string const &group, bool selected=false)
 ToggleButton (ToggleButton &&)=delete
 ToggleButton (ToggleButton const &)=delete
virtual void toggleSelected ()
Public Member Functions inherited from fcn::ImageButton
void adjustSize () override
void draw (fcn::Graphics *graphics) override
Image const * getDownImage () const
Image const * getHoverImage () const
Image const * getInactiveDownImage () const
Image const * getInactiveHoverImage () const
Image const * getInactiveUpImage () const
Image const * getUpImage () const
 ImageButton (Image const *image)
 ImageButton (ImageButton &&)=delete
 ImageButton (ImageButton const &)=delete
 ImageButton (std::string const &filename)
ImageButton & operator= (ImageButton &&)=delete
ImageButton & operator= (ImageButton const &)=delete
void resizeToContent (bool recursion) override
void setDownImage (Image const *image)
void setDownImage (std::string const &filename)
void setHoverImage (Image const *image)
void setHoverImage (std::string const &filename)
void setInactiveDownImage (Image const *image)
void setInactiveDownImage (std::string const &filename)
void setInactiveHoverImage (Image const *image)
void setInactiveHoverImage (std::string const &filename)
void setInactiveUpImage (Image const *image)
void setInactiveUpImage (std::string const &filename)
void setUpImage (Image const *image)
void setUpImage (std::string const &filename)
Public Member Functions inherited from fcn::Button
void ancestorHidden (Event const &e) override
 Button (Button &&)=delete
 Button (Button const &)=delete
 Button (std::string caption)
void focusLost (Event const &event) override
void fontChanged () override
Graphics::Alignment getAlignment () const
std::string const & getCaption () const
int getDownXOffset () const
int getDownYOffset () const
bool isActive () const
void keyPressed (KeyEvent &keyEvent) override
void mouseDragged (MouseEvent &mouseEvent) override
void mouseEntered (MouseEvent &mouseEvent) override
void mouseExited (MouseEvent &mouseEvent) override
void mousePressed (MouseEvent &mouseEvent) override
Button & operator= (Button &&)=delete
Button & operator= (Button const &)=delete
void resizeToContent ()
void setActive (bool state)
void setAlignment (Graphics::Alignment alignment)
void setCaption (std::string const &caption)
void setDownOffset (int x, int y)
void setDownXOffset (int offset)
void setDownYOffset (int offset)
Public Member Functions inherited from fcn::Widget
virtual void _draw (Graphics *graphics)
virtual FocusHandler_getFocusHandler ()
virtual std::list< FocusListener * > const & _getFocusListeners ()
virtual FocusHandler_getInternalFocusHandler ()
virtual std::list< KeyListener * > const & _getKeyListeners ()
virtual std::list< MouseListener * > const & _getMouseListeners ()
virtual void _logic ()
virtual void _setFocusHandler (FocusHandler *focusHandler)
virtual void _setParent (Widget *parent)
void adaptLayout ()
virtual void adaptLayout (bool top)
void addActionListener (ActionListener *actionListener)
void addDeathListener (DeathListener *deathListener)
void addFocusListener (FocusListener *focusListener)
void addKeyListener (KeyListener *keyListener)
void addMouseListener (MouseListener *mouseListener)
void addWidgetListener (WidgetListener *widgetListener)
virtual void drawBorder (Graphics *graphics)
virtual void drawOutline (Graphics *graphics)
virtual void drawSelectionFrame (Graphics *graphics)
void expandContent ()
virtual void expandContent (bool recursion)
virtual void focusNext ()
virtual void focusPrevious ()
virtual void getAbsolutePosition (int &x, int &y) const
std::string const & getActionEventId () const
Color const & getBackgroundColor () const
Color const & getBaseColor () const
Color const & getBorderColor () const
unsigned int getBorderSize () const
virtual Rectangle getChildrenArea ()
unsigned int getChildrenCount () const
Rectangle const & getDimension () const
Size const & getFixedSize () const
FontgetFont () const
Color const & getForegroundColor () const
int getHeight () const
std::string const & getId () const
void getLastPosition (int &x, int &y) const
int getMarginBottom () const
int getMarginLeft () const
int getMarginRight () const
int getMarginTop () const
Size const & getMaxSize () const
Size const & getMinSize () const
Color const & getOutlineColor () const
unsigned int getOutlineSize () const
unsigned int getPaddingBottom () const
unsigned int getPaddingLeft () const
unsigned int getPaddingRight () const
unsigned int getPaddingTop () const
virtual WidgetgetParent () const
Color const & getSelectionColor () const
SelectionMode getSelectionMode () const
virtual WidgetgetTop () const
unsigned int getVisibleChildrenCount () const
WidgetgetWidgetAt (int x, int y)
virtual WidgetgetWidgetAt (int x, int y, Widget *exclude)
std::list< Widget * > getWidgetsIn (Rectangle const &area)
virtual std::list< Widget * > getWidgetsIn (Rectangle const &area, Widget *ignore)
int getWidth () const
int getX () const
int getY () const
bool isEnabled () const
bool isFixedSize () const
bool isFocusable () const
virtual bool isFocused () const
bool isHorizontalExpand () const
bool isLastPositionSet () const
virtual bool isLayouted ()
virtual bool isModalFocusable () const
virtual bool isModalFocused () const
virtual bool isModalMouseInputFocusable () const
virtual bool isModalMouseInputFocused () const
bool isSetVisible () const
bool isTabInEnabled () const
bool isTabOutEnabled () const
bool isVerticalExpand () const
bool isVisible () const
virtual void logic ()
virtual void moveToBottom (Widget *widget)
virtual void moveToTop (Widget *widget)
Widgetoperator= (Widget &&)=delete
Widgetoperator= (Widget const &)=delete
virtual void releaseModalFocus ()
virtual void releaseModalMouseInputFocus ()
void removeActionListener (ActionListener *actionListener)
void removeDeathListener (DeathListener *deathListener)
void removeFocusListener (FocusListener *focusListener)
void removeKeyListener (KeyListener *keyListener)
void removeMouseListener (MouseListener *mouseListener)
void removeWidgetListener (WidgetListener *widgetListener)
virtual void requestFocus ()
virtual void requestModalFocus ()
virtual void requestModalMouseInputFocus ()
virtual void requestMoveToBottom ()
virtual void requestMoveToTop ()
void resizeToContent ()
void setActionEventId (std::string const &actionEventId)
virtual void setBackgroundColor (Color const &color)
virtual void setBaseColor (Color const &color)
virtual void setBorderColor (Color const &color)
void setBorderSize (unsigned int size)
void setDimension (Rectangle const &dimension)
void setEnabled (bool enabled)
void setFixedSize (Size const &size)
void setFocusable (bool focusable)
virtual void setFont (Font *font)
virtual void setForegroundColor (Color const &color)
void setHeight (int height)
void setHorizontalExpand (bool expand)
void setId (std::string const &id)
void setInternalFocusHandler (FocusHandler *internalFocusHandler)
void setLastPosition (int x, int y)
void setMargin (int margin)
void setMarginBottom (int margin)
void setMarginLeft (int margin)
void setMarginRight (int margin)
void setMarginTop (int margin)
void setMaxSize (Size const &size)
void setMinSize (Size const &size)
virtual void setOutlineColor (Color const &color)
void setOutlineSize (unsigned int size)
void setPadding (unsigned int padding)
void setPaddingBottom (unsigned int padding)
void setPaddingLeft (unsigned int padding)
void setPaddingRight (unsigned int padding)
void setPaddingTop (unsigned int padding)
void setPosition (int x, int y)
virtual void setSelectionColor (Color const &color)
virtual void setSelectionMode (SelectionMode mode)
void setSize (int width, int height)
void setTabInEnabled (bool enabled)
void setTabOutEnabled (bool enabled)
void setVerticalExpand (bool expand)
void setVisible (bool visible)
void setWidth (int width)
void setX (int x)
void setY (int y)
virtual void showPart (Rectangle rectangle)
virtual void showWidgetPart (Widget *widget, Rectangle area)
 Widget ()
 Widget (Widget &&)=delete
 Widget (Widget const &)=delete
Public Member Functions inherited from fcn::MouseListener
virtual void mouseClicked (MouseEvent &mouseEvent)
 MouseListener (MouseListener &&)=default
 MouseListener (MouseListener const &)=default
virtual void mouseMoved (MouseEvent &mouseEvent)
virtual void mouseWheelMovedDown (MouseEvent &mouseEvent)
virtual void mouseWheelMovedLeft (MouseEvent &mouseEvent)
virtual void mouseWheelMovedRight (MouseEvent &mouseEvent)
virtual void mouseWheelMovedUp (MouseEvent &mouseEvent)
MouseListener & operator= (MouseListener &&)=default
MouseListener & operator= (MouseListener const &)=default
Public Member Functions inherited from fcn::KeyListener
 KeyListener (KeyListener &&)=default
 KeyListener (KeyListener const &)=default
KeyListener & operator= (KeyListener &&)=default
KeyListener & operator= (KeyListener const &)=default
Public Member Functions inherited from fcn::FocusListener
virtual void focusGained (Event const &event)
 FocusListener (FocusListener &&)=delete
 FocusListener (FocusListener const &)=delete
FocusListener & operator= (FocusListener &&)=delete
FocusListener & operator= (FocusListener const &)=delete
Public Member Functions inherited from fcn::WidgetListener
virtual void ancestorMoved (Event const &event)
virtual void ancestorShown (Event const &event)
WidgetListener & operator= (WidgetListener &&)=default
WidgetListener & operator= (WidgetListener const &)=default
virtual void widgetHidden (Event const &event)
 WidgetListener (WidgetListener &&)=default
 WidgetListener (WidgetListener const &)=default
virtual void widgetMoved (Event const &event)
virtual void widgetResized (Event const &event)
virtual void widgetShown (Event const &event)

Protected Types

using GroupIterator = GroupMap::iterator
using GroupMap = std::multimap<std::string, ToggleButton*>

Protected Member Functions

bool isPressed () const override
Protected Member Functions inherited from fcn::ImageButton
void adjustSizeImpl () override
void setImage (Image const *image, ImageType type)
void setImage (std::string const &filename, ImageType type)
Protected Member Functions inherited from fcn::Widget
void add (Widget *widget)
void calculateSize ()
void distributeActionEvent ()
void distributeAncestorHiddenEvent (Widget *ancestor)
void distributeAncestorMovedEvent (Widget *ancestor)
void distributeAncestorShownEvent (Widget *ancestor)
void distributeHiddenEvent ()
void distributeMovedEvent ()
void distributeResizedEvent ()
void distributeShownEvent ()
virtual WidgetfindWidgetById (std::string const &id)
std::list< Widget * > const & getChildren () const
virtual void remove (Widget *widget)
virtual void removeAllChildren ()
void resizeToChildren ()
Protected Member Functions inherited from fcn::MouseListener
 MouseListener ()=default
Protected Member Functions inherited from fcn::KeyListener
 KeyListener ()=default
Protected Member Functions inherited from fcn::FocusListener
 FocusListener ()=default
Protected Member Functions inherited from fcn::WidgetListener
 WidgetListener ()=default

Protected Attributes

std::string mGroup
bool mSelected {false}
Protected Attributes inherited from fcn::ImageButton
std::vector< Image const * > mImages
std::vector< std::unique_ptr< Image const > > mOwnedImages
Protected Attributes inherited from fcn::Button
Graphics::Alignment mAlignment {Graphics::Alignment::Center}
std::string mCaption
bool mHasMouse {false}
bool mKeyPressed {false}
bool mMousePressed {false}
bool mState {true}
int mXOffset {1}
int mYOffset {1}
Protected Attributes inherited from fcn::Widget
std::string mActionEventId
std::list< ActionListener * > mActionListeners
Color mBackgroundColor {0xf9fafb}
Color mBaseColor {0xe5e7eb}
Color mBorderColor {0xd1d5db}
unsigned int mBorderSize {0}
std::list< Widget * > mChildren
FontmCurrentFont {nullptr}
std::list< DeathListener * > mDeathListeners
Rectangle mDimension
bool mEnabled {true}
Size mFixedSize {-1, -1}
bool mFixedSizeUsed {false}
bool mFocusable {false}
FocusHandlermFocusHandler {nullptr}
std::list< FocusListener * > mFocusListeners
Color mForegroundColor {0x1f2933}
bool mHExpand {false}
std::string mId
FocusHandlermInternalFocusHandler {nullptr}
std::list< KeyListener * > mKeyListeners
int mLastX {0}
int mLastY {0}
int mMarginBottom {0}
int mMarginLeft {0}
int mMarginRight {0}
int mMarginTop {0}
Size mMaxSize {std::numeric_limits<int>::max(), std::numeric_limits<int>::max()}
Size mMinSize {0, 0}
std::list< MouseListener * > mMouseListeners
Rectangle mOffsetRect
Color mOutlineColor {0x9ca3af}
unsigned int mOutlineSize {0}
unsigned int mPaddingBottom {0}
unsigned int mPaddingLeft {0}
unsigned int mPaddingRight {0}
unsigned int mPaddingTop {0}
WidgetmParent {nullptr}
Color mSelectionColor {0x3b82f6}
SelectionMode mSelectionMode {SelectionMode::None}
bool mTabIn {true}
bool mTabOut {true}
bool mVExpand {false}
bool mVisible {true}
std::list< WidgetListener * > mWidgetListeners

Static Protected Attributes

static GroupMap mGroupMap
Static Protected Attributes inherited from fcn::Widget
static DefaultFont mDefaultFont
static FontmGlobalFont = nullptr
static DeathListenermGuiDeathListener = nullptr
static VisibilityEventHandlermVisibilityEventHandler = nullptr
static std::list< Widget * > mWidgetInstances

Additional Inherited Members

Public Types inherited from fcn::ImageButton
enum class  ImageType : uint8_t {
  Up = 0 , Down = 1 , Hover = 2 , Up_Inactive = 3 ,
  Down_Inactive = 4 , Hover_Inactive = 5
}
Public Types inherited from fcn::Widget
enum class  SelectionMode : uint8_t { None = 0 , Border = 1 , Background = 2 }
Static Public Member Functions inherited from fcn::Widget
static DeathListener_getGuiDeathListener ()
static VisibilityEventHandler_getVisibilityEventHandler ()
static void _setGuiDeathListener (DeathListener *deathListener)
static void _setVisibilityEventHandler (VisibilityEventHandler *visibilityEventHandler)
static void setGlobalFont (Font *font)
static bool widgetExists (Widget const *widget)

Detailed Description

An implementation of a toggleable button.

If the button is in a group, all other buttons in that group will be untoggled when a button gets toggled. If the button is already toggled, you can untoggle it by clicking on it.

If a toggle button's state changes an action event will be sent to all action listeners of the toggle button.

Definition at line 26 of file togglebutton.hpp.

Member Typedef Documentation

◆ GroupIterator

using fcn::ToggleButton::GroupIterator = GroupMap::iterator
protected

Typdef.

Definition at line 119 of file togglebutton.hpp.

◆ GroupMap

using fcn::ToggleButton::GroupMap = std::multimap<std::string, ToggleButton*>
protected

Typdef.

Definition at line 114 of file togglebutton.hpp.

Constructor & Destructor Documentation

◆ ToggleButton() [1/2]

fcn::ToggleButton::ToggleButton ( )

Definition at line 13 of file togglebutton.cpp.

◆ ToggleButton() [2/2]

fcn::ToggleButton::ToggleButton ( std::string const & caption,
std::string const & group,
bool selected = false )

Constructor.

The toggle button will be automatically resized to fit the caption.

Parameters
captionThe caption of the toggle button.
groupThe group the toggle button should belong to.
selectedTrue if the toggle button should be selected.

Definition at line 19 of file togglebutton.cpp.

References fcn::ImageButton::adjustSize(), fcn::Button::setCaption(), setGroup(), and setSelected().

◆ ~ToggleButton()

fcn::ToggleButton::~ToggleButton ( )
override

Definition at line 27 of file togglebutton.cpp.

Member Function Documentation

◆ getGroup()

std::string const & fcn::ToggleButton::getGroup ( ) const

Gets the group the toggle button belongs to.

Returns
The group the toggle button belongs to.
See also
setGroup

Definition at line 85 of file togglebutton.cpp.

References mGroup.

◆ isPressed()

bool fcn::ToggleButton::isPressed ( ) const
overrideprotectedvirtual

Checks if the button is pressed.

Convenient method to use when overloading the draw method of the button.

Returns
True if the button is pressed, false otherwise.

Reimplemented from fcn::Button.

Definition at line 90 of file togglebutton.cpp.

References isSelected().

◆ isSelected()

bool fcn::ToggleButton::isSelected ( ) const
virtual

Checks if the check box is selected.

Returns
True if the check box is selected, false otherwise.
See also
setSelected

Definition at line 33 of file togglebutton.cpp.

References mSelected.

Referenced by isPressed(), and toggleSelected().

◆ keyReleased()

void fcn::ToggleButton::keyReleased ( KeyEvent & keyEvent)
overridevirtual

Called if a key is released when the widget has keyboard focus.

Parameters
keyEventDescribes the event.

Reimplemented from fcn::Button.

Definition at line 95 of file togglebutton.cpp.

References fcn::InputEvent::consume(), fcn::KeyEvent::getKey(), fcn::Key::getValue(), fcn::Button::mKeyPressed, and toggleSelected().

◆ mouseReleased()

void fcn::ToggleButton::mouseReleased ( MouseEvent & mouseEvent)
overridevirtual

Called when a mouse button has been released on the widget area.

Parameters
mouseEventDescribes the event.

Reimplemented from fcn::Button.

Definition at line 106 of file togglebutton.cpp.

References fcn::InputEvent::consume(), fcn::MouseEvent::getButton(), fcn::Button::mHasMouse, fcn::Button::mMousePressed, and toggleSelected().

◆ setGroup()

void fcn::ToggleButton::setGroup ( std::string const & group)

Sets the group the toggle button should belong to.

Note that a toggle button group is unique per application, not per Gui object as the group is stored in a static map.

Parameters
groupThe name of the group.
See also
getGroup

Definition at line 62 of file togglebutton.cpp.

References mGroup, and mGroupMap.

Referenced by ToggleButton().

◆ setSelected()

void fcn::ToggleButton::setSelected ( bool selected)
virtual

Sets the check box to be selected or not.

Parameters
selectedTrue if the check box should be set as selected.
See also
isSelected

Definition at line 38 of file togglebutton.cpp.

References mGroup, mGroupMap, and mSelected.

Referenced by ToggleButton(), and toggleSelected().

◆ toggleSelected()

void fcn::ToggleButton::toggleSelected ( )
virtual

Toggles the check box between being selected and not being selected.

It distribute a ActionEvent.

Definition at line 56 of file togglebutton.cpp.

References fcn::Widget::distributeActionEvent(), isSelected(), and setSelected().

Referenced by keyReleased(), and mouseReleased().

Member Data Documentation

◆ mGroup

std::string fcn::ToggleButton::mGroup
protected

Holds the group of the toggle button.

Definition at line 109 of file togglebutton.hpp.

Referenced by getGroup(), setGroup(), and setSelected().

◆ mGroupMap

ToggleButton::GroupMap fcn::ToggleButton::mGroupMap
staticprotected

Holds all available toggle button groups.

Definition at line 124 of file togglebutton.hpp.

Referenced by setGroup(), and setSelected().

◆ mSelected

bool fcn::ToggleButton::mSelected {false}
protected

True if the check box is selected, false otherwise.

Definition at line 104 of file togglebutton.hpp.

Referenced by isSelected(), and setSelected().


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