HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
Data Structures | Public Types | Public Member Functions | Data Fields
hi::v1::toggle_widget Class Reference

#include <hikogui/widgets/toggle_widget.hpp>

Inheritance diagram for hi::v1::toggle_widget:
hi::v1::widget hi::v1::widget_intf

Data Structures

struct  attributes_type
 

Public Types

using super = widget
 
using delegate_type = toggle_delegate
 

Public Member Functions

 hi_num_valid_arguments (consteval static, num_default_delegate_arguments, default_toggle_delegate)
 
 hi_call_left_arguments (static, make_default_delegate, make_shared_ctad< default_toggle_delegate >)
 
 hi_call_right_arguments (static, make_attributes, attributes_type)
 
 toggle_widget (widget_intf const *parent, attributes_type attributes, std::shared_ptr< delegate_type > delegate) noexcept
 Construct a toggle widget.
 
template<typename... Args>
requires (num_default_delegate_arguments<Args...>() != 0)
 toggle_widget (widget_intf const *parent, Args &&...args)
 Construct a toggle widget with a default button delegate.
 
- Public Member Functions inherited from hi::v1::widget
 widget (widget_intf const *parent) noexcept
 Constructor for creating sub views.
 
 widget () noexcept
 Constructor for creating sub views.
 
 widget (const widget &)=delete
 
widgetoperator= (const widget &)=delete
 
 widget (widget &&)=delete
 
widgetoperator= (widget &&)=delete
 
generator< widget_intf & > children (bool include_invisible) noexcept override
 Get a list of child widgets.
 
hitbox hitbox_test (point2 position) const noexcept override
 Find the widget that is under the mouse cursor.
 
virtual hitbox hitbox_test_from_parent (point2 position) const noexcept
 Call hitbox_test from a parent widget.
 
virtual hitbox hitbox_test_from_parent (point2 position, hitbox sibling_hitbox) const noexcept
 Call hitbox_test from a parent widget.
 
bool accepts_keyboard_focus (keyboard_focus_group group) const noexcept override
 Check if the widget will accept keyboard focus.
 
box_constraints update_constraints () noexcept override
 Update the constraints of the widget.
 
void set_layout (widget_layout const &context) noexcept override
 Update the internal layout of the widget.
 
void draw (draw_context const &context) noexcept override
 Draw the widget.
 
bool process_event (gui_event const &event) const noexcept override
 Send a event to the window.
 
void request_redraw () const noexcept override
 Request the widget to be redrawn on the next frame.
 
bool handle_event (gui_event const &event) noexcept override
 Handle command.
 
bool handle_event_recursive (gui_event const &event, std::vector< widget_id > const &reject_list=std::vector< widget_id >{}) noexcept override
 Handle command recursive.
 
virtual widget_id find_next_widget (widget_id current_keyboard_widget, keyboard_focus_group group, keyboard_focus_direction direction) const noexcept override
 Find the next widget that handles keyboard focus.
 
void scroll_to_show (hi::aarectangle rectangle) noexcept override
 Scroll to show the given rectangle on the window.
 
void set_window (gui_window *window) noexcept override
 Set the window for this tree of widgets.
 
gui_window * window () const noexcept override
 Get the window that the widget is owned by.
 
hi::theme const & theme () const noexcept
 
gfx_surface const * surface () const noexcept
 
virtual color foreground_color () const noexcept
 
virtual color focus_color () const noexcept
 
virtual color accent_color () const noexcept
 
virtual color label_color () const noexcept
 
virtual generator< widget_intf & > children (bool include_invisible) noexcept=0
 Get a list of child widgets.
 
virtual generator< widget_intf const & > children (bool include_invisible) const noexcept final
 Get a list of child widgets.
 
virtual void scroll_to_show (hi::aarectangle rectangle) noexcept=0
 Scroll to show the given rectangle on the window.
 
void scroll_to_show () noexcept
 Scroll to show the important part of the widget.
 
- Public Member Functions inherited from hi::v1::widget_intf
 widget_intf (widget_intf const *parent) noexcept
 
template<forward_of< void()> Func>
callback< void()> subscribe (Func &&func, callback_flags flags=callback_flags::synchronous) noexcept
 Subscribe a callback to be called when an action is completed by the widget.
 
auto operator co_await () const noexcept
 Await until an action is completed by the widget.
 
size_t layer () const noexcept
 
void set_layer (size_t new_layer) noexcept
 
widget_mode mode () const noexcept
 
void set_mode (widget_mode new_mode) noexcept
 
widget_value value () const noexcept
 
void set_value (widget_value new_value) noexcept
 
widget_phase phase () const noexcept
 
void set_pressed (bool pressed) noexcept
 
void set_hover (bool hover) noexcept
 
void set_active (bool active) noexcept
 
bool focus () const noexcept
 
void set_focus (bool new_focus) noexcept
 
widget_layout const & layout () const noexcept
 Get the current layout for this widget.
 
std::vector< widget_id > parent_chain () const noexcept
 Get a list of parents of a given widget.
 
void scroll_to_show () noexcept
 Scroll to show the important part of the widget.
 

Data Fields

attributes_type attributes
 
std::shared_ptr< delegate_typedelegate
 The delegate that controls the button widget.
 
- Data Fields inherited from hi::v1::widget
observer< extent2minimum = extent2{}
 The minimum size this widget is allowed to be.
 
observer< extent2maximum = extent2::large()
 The maximum size this widget is allowed to be.
 
- Data Fields inherited from hi::v1::widget_intf
widget_id id = {}
 The numeric identifier of a widget.
 
widget_intfparent = nullptr
 Pointer to the parent widget.
 
notifier< void()> notifier
 Notifier which is called after an action is completed by a widget.
 
observer< widget_statestate
 The current state of the widget.
 

Detailed Description

A GUI widget that permits the user to make a binary choice.

A toggle is very similar to a toggle_widget. The semantic difference between a toggle and a toggle is:

A toggle is a button with three different states with different visual representation:

Each time a user activates the toggle-button it toggles between the 'on' and 'off' states. If the toggle is in the 'other' state an activation will switch it to the 'off' state.

A toggle cannot itself switch state to 'other', this state may be caused by external factors.

In the following example we create a toggle widget on the window which observes value. When the value is 1 the toggle is 'on', when the value is 2 the toggle is 'off'.

observer<int> value = 0;
auto& tb = widget->content().emplace<toggle_with_label_widget>("B1", value, 1, 2);
tb.attributes.on_label = txt("on");
tb.attributes.off_label = txt("off");
tb.attributes.other_label = txt("other");

Constructor & Destructor Documentation

◆ toggle_widget() [1/2]

hi::v1::toggle_widget::toggle_widget ( widget_intf const * parent,
attributes_type attributes,
std::shared_ptr< delegate_type > delegate )
inlinenoexcept

Construct a toggle widget.

Parameters
parentThe parent widget that owns this toggle widget.
delegateThe delegate to use to manage the state of the toggle button.

◆ toggle_widget() [2/2]

template<typename... Args>
requires (num_default_delegate_arguments<Args...>() != 0)
hi::v1::toggle_widget::toggle_widget ( widget_intf const * parent,
Args &&... args )
inline

Construct a toggle widget with a default button delegate.

Parameters
parentThe parent widget that owns this toggle widget.
argsThe arguments to the default_toggle_delegate followed by arguments to attributes_type

Field Documentation

◆ delegate

std::shared_ptr<delegate_type> hi::v1::toggle_widget::delegate

The delegate that controls the button widget.


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