#include <multimenu_button.hpp>
Public Member Functions | |
| multimenu_button (const implementation::builder_multimenu_button &builder) | |
| virtual void | set_active (const bool active) override |
| See styled_widget::set_active. More... | |
| virtual bool | get_active () const override |
| See styled_widget::get_active. More... | |
| virtual unsigned | get_state () const override |
| See styled_widget::get_state. More... | |
| void | set_max_shown (const unsigned max) |
| Sets the maximum number of selected elements shown on the label. More... | |
| unsigned | get_max_shown () |
| Get the maximum number of selected elements shown on the label. More... | |
| unsigned | num_options () |
| Get the number of options available in the menu. More... | |
| void | select_option (const unsigned option, const bool selected=true) |
| Select an option in the menu. More... | |
| void | select_options (const boost::dynamic_bitset<> &states) |
| Set the options selected in the menu. More... | |
| void | set_values (const std::vector<::config > &values) |
| Set the available menu options. More... | |
| boost::dynamic_bitset | get_toggle_states () const |
| Get the current state of the menu options. More... | |
| void | reset_toggle_states () |
| Deselect all the menu options. More... | |
Public Member Functions inherited from gui2::styled_widget | |
| styled_widget (const implementation::builder_styled_widget &builder, const std::string &control_type) | |
| Constructor. More... | |
| virtual void | set_members (const widget_item &data) |
| Sets the members of the styled_widget. More... | |
| bool | disable_click_dismiss () const override |
| See widget::disable_click_dismiss. More... | |
| virtual iteration::walker_ptr | create_walker () override |
| See widget::create_walker. More... | |
| point | get_config_minimum_size () const |
| Gets the minimum size as defined in the config. More... | |
| point | get_config_default_size () const |
| Gets the default size as defined in the config. More... | |
| point | get_config_maximum_size () const |
| Gets the best size as defined in the config. More... | |
| virtual unsigned | get_characters_per_line () const |
| Returns the number of characters per line. More... | |
| virtual bool | get_link_aware () const |
| Returns whether the label should be link_aware, in in rendering and in searching for links with get_link. More... | |
| virtual color_t | get_link_color () const |
| Returns the color string to be used with links. More... | |
| virtual void | layout_initialize (const bool full_initialization) override |
| See widget::layout_initialize. More... | |
| virtual void | request_reduce_width (const unsigned maximum_width) override |
| See widget::request_reduce_width. More... | |
| virtual void | request_reduce_height (const unsigned maximum_height) override |
| See widget::request_reduce_height. More... | |
| virtual void | place (const point &origin, const point &size) override |
| See widget::place. More... | |
| virtual widget * | find_at (const point &coordinate, const bool must_be_active) override |
| See widget::find_at. More... | |
| virtual const widget * | find_at (const point &coordinate, const bool must_be_active) const override |
| See widget::find_at. More... | |
| widget * | find (const std::string_view id, const bool must_be_active) override |
| See widget::find. More... | |
| const widget * | find (const std::string_view id, const bool must_be_active) const override |
| See widget::find. More... | |
| bool | get_use_tooltip_on_label_overflow () const |
| void | set_use_tooltip_on_label_overflow (const bool use_tooltip=true) |
| const t_string & | get_label () const |
| virtual void | set_label (const t_string &text) |
| virtual void | set_use_markup (bool use_markup) |
| bool | get_use_markup () const |
| const t_string & | tooltip () const |
| void | set_tooltip (const t_string &tooltip) |
| const t_string & | help_message () const |
| void | set_help_message (const t_string &help_message) |
| std::vector< canvas > & | get_canvases () |
| canvas & | get_canvas (const unsigned index) |
| virtual void | set_text_alignment (const PangoAlignment text_alignment) |
| PangoAlignment | get_text_alignment () const |
| void | set_text_ellipse_mode (const PangoEllipsizeMode ellipse_mode) |
| PangoEllipsizeMode | get_text_ellipse_mode () const |
| Get the text's ellipsize mode. More... | |
Public Member Functions inherited from gui2::widget | |
| widget (const widget &)=delete | |
| widget & | operator= (const widget &)=delete |
| widget () | |
| widget (const builder_widget &builder) | |
| Constructor. More... | |
| virtual | ~widget () override |
| void | set_id (const std::string &id) |
| const std::string & | id () const |
| window * | get_window () |
| Get the parent window. More... | |
| const window * | get_window () const |
| The constant version of get_window. More... | |
| grid * | get_parent_grid () |
| Get the parent grid. More... | |
| const grid * | get_parent_grid () const |
| void | set_parent (widget *parent) |
| widget * | parent () |
| virtual void | demand_reduce_width (const unsigned maximum_width) |
| Tries to reduce the width of a widget. More... | |
| virtual void | demand_reduce_height (const unsigned maximum_height) |
| Tries to reduce the height of a widget. More... | |
| point | get_best_size () const |
| Gets the best size for the widget. More... | |
| virtual bool | can_mouse_focus () const |
| Whether the mouse move/click event go 'through' this widget. More... | |
| virtual bool | can_wrap () const |
| Can the widget wrap. More... | |
| virtual void | set_origin (const point &origin) |
| Sets the origin of the widget. More... | |
| virtual void | set_size (const point &size) |
| Sets the size of the widget. More... | |
| virtual void | move (const int x_offset, const int y_offset) |
| Moves a widget. More... | |
| virtual void | set_horizontal_alignment (const std::string &alignment) |
| Sets the horizontal alignment of the widget within its parent grid. More... | |
| virtual void | set_vertical_alignment (const std::string &alignment) |
| Sets the horizontal alignment of the widget within its parent grid. More... | |
| virtual void | layout_children () |
| Allows a widget to update its children. More... | |
| point | get_origin () const |
| Returns the screen origin of the widget. More... | |
| point | get_size () const |
| Returns the size of the widget. More... | |
| rect | get_rectangle () const |
| Gets the bounding rectangle of the widget on the screen. More... | |
| int | get_x () const |
| int | get_y () const |
| unsigned | get_width () const |
| unsigned | get_height () const |
| void | set_linked_group (const std::string &linked_group) |
| std::string | get_linked_group () const |
| rect | calculate_blitting_rectangle () const |
| Calculates the blitting rectangle of the widget. More... | |
| rect | calculate_clipping_rectangle () const |
| Calculates the clipping rectangle of the widget. More... | |
| bool | draw_background () |
| Draws the background of a widget. More... | |
| void | draw_children () |
| Draws the children of a widget. More... | |
| bool | draw_foreground () |
| Draws the foreground of the widget. More... | |
| rect | get_dirty_rectangle () const |
| Gets the dirty rectangle of the widget. More... | |
| virtual void | set_visible_rectangle (const rect &rectangle) |
| Sets the visible rectangle for a widget. More... | |
| void | queue_redraw () |
| Indicates that this widget should be redrawn. More... | |
| void | queue_redraw (const rect ®ion) |
| Indicate that specific region of the screen should be redrawn. More... | |
| void | set_visible (const visibility visible) |
| visibility | get_visible () const |
| void | set_visible (bool visible) |
| Sets widget to visible if visible is true, else invisible. More... | |
| redraw_action | get_drawing_action () const |
| void | set_debug_border_mode (const debug_border debug_border_mode) |
| void | set_debug_border_color (const color_t debug_border_color) |
| virtual bool | has_widget (const widget &widget) const |
| Does the widget contain the widget. More... | |
| template<class T > | |
| T * | find_widget (const std::string_view id, const bool must_be_active, const bool must_exist) |
| Gets a widget with the wanted id. More... | |
| template<class T > | |
| const T * | find_widget (const std::string_view id, const bool must_be_active, const bool must_exist) const |
| template<class T > | |
| T & | find_widget (const std::string_view id, const bool must_be_active=false) |
| Gets a widget with the wanted id. More... | |
| template<class T > | |
| const T & | find_widget (const std::string_view id, const bool must_be_active=false) const |
Public Member Functions inherited from gui2::event_executor | |
| event_executor () | |
| virtual | ~event_executor () |
| void | set_wants_mouse_hover (const bool hover=true) |
| bool | wants_mouse_hover () const |
| void | set_wants_mouse_left_double_click (const bool click=true) |
| bool | wants_mouse_left_double_click () const |
| void | set_wants_mouse_middle_double_click (const bool click=true) |
| bool | wants_mouse_middle_double_click () const |
| event_executor & | set_wants_mouse_right_double_click (const bool click=true) |
| bool | wants_mouse_right_double_click () const |
Public Member Functions inherited from gui2::event::dispatcher | |
| dispatcher () | |
| virtual | ~dispatcher () |
| void | connect () |
| Connects the dispatcher to the event handler. More... | |
| void | disconnect () |
| Disconnects the dispatcher from the event handler. More... | |
| bool | is_connected () const |
| Return whether the dispatcher is currently connected. More... | |
| bool | has_event (const ui_event event, const event_queue_type event_type) |
| bool | fire (const ui_event event, widget &target) |
| Fires an event which has no extra parameters. More... | |
| bool | fire (const ui_event event, widget &target, const point &coordinate) |
| Fires an event which takes a coordinate parameter. More... | |
| bool | fire (const ui_event event, widget &target, const SDL_Keycode key, const SDL_Keymod modifier, const std::string &unicode) |
| Fires an event which takes keyboard parameters. More... | |
| bool | fire (const ui_event event, widget &target, const point &pos, const point &distance) |
| Fires an event which takes touch-motion parameters. More... | |
| bool | fire (const ui_event event, widget &target, const point ¢er, float dTheta, float dDist, uint8_t numFingers) |
| Fires an event which takes touch-gesture parameters. More... | |
| bool | fire (const ui_event event, widget &target, void *) |
| Fires an event which takes notification parameters. More... | |
| bool | fire (const ui_event event, widget &target, const message &msg) |
| Fires an event which takes message parameters. More... | |
| bool | fire (const ui_event event, widget &target, const SDL_Event &sdlevent) |
| Fires an event that's a raw SDL event. More... | |
| bool | fire (const ui_event event, widget &target, const std::string &text, int32_t start, int32_t len) |
| Fires an event which takes text input parameters. More... | |
| template<ui_event E, typename F > | |
| void | connect_signal (const F &func, const queue_position position=back_child) |
| Adds a callback to the appropriate queue based on event type. More... | |
| template<ui_event E, typename F > | |
| void | disconnect_signal (const F &func, const queue_position position=back_child) |
| Removes a callback from the appropriate queue based on event type. More... | |
| void | capture_mouse () |
| Captures the mouse. More... | |
| void | release_mouse () |
| Releases the mouse capture. More... | |
| void | set_mouse_behavior (const mouse_behavior mouse_behavior) |
| mouse_behavior | get_mouse_behavior () const |
| void | set_want_keyboard_input (const bool want_keyboard_input) |
| bool | get_want_keyboard_input () const |
| template<typename Func > | |
| void | register_hotkey (const hotkey::HOTKEY_COMMAND id, Func &&function) |
| Registers a hotkey. More... | |
| bool | execute_hotkey (const hotkey::HOTKEY_COMMAND id) |
| Executes a hotkey. More... | |
Public Member Functions inherited from enable_lua_ptr< widget > | |
| enable_lua_ptr (widget *tp) | |
| enable_lua_ptr (enable_lua_ptr &&o) | |
| The weak_ptrs are pointing to o's shared_ptr's control block, so to keep existing weak_ptrs valid the existing control block is reused instead of replaced. More... | |
| enable_lua_ptr & | operator= (enable_lua_ptr &&o) |
Static Public Member Functions | |
| static const std::string & | type () |
| Static type getter that does not rely on the widget being constructed. More... | |
Private Types | |
| enum | state_t { ENABLED , DISABLED , PRESSED , FOCUSED } |
| Possible states of the widget. More... | |
Private Member Functions | |
| void | set_state (const state_t state) |
| void | update_config_from_toggle_states () |
| void | update_label () |
| virtual const std::string & | get_control_type () const override |
| Inherited from styled_widget, implemented by REGISTER_WIDGET. More... | |
| void | signal_handler_mouse_enter (const event::ui_event event, bool &handled) |
| void | signal_handler_mouse_leave (const event::ui_event event, bool &handled) |
| void | signal_handler_left_button_down (const event::ui_event event, bool &handled) |
| void | signal_handler_left_button_up (const event::ui_event event, bool &handled) |
| void | signal_handler_left_button_click (const event::ui_event event, bool &handled) |
| void | signal_handler_notify_changed () |
Private Attributes | |
| state_t | state_ |
| Current state of the widget. More... | |
| unsigned | max_shown_ |
| The maximum number of selected states to list in the label. More... | |
| std::vector<::config > | values_ |
| boost::dynamic_bitset | toggle_states_ |
| dialogs::drop_down_menu * | droplist_ |
Additional Inherited Members | |
Public Types inherited from gui2::widget | |
| enum class | visibility { visible , hidden , invisible } |
| Visibility settings done by the user. More... | |
| enum class | redraw_action { full , partly , none } |
| Visibility set by the engine. More... | |
| enum class | debug_border { none , outline , fill } |
Public Types inherited from gui2::event::dispatcher | |
| enum | event_queue_type { pre = 1 , child = 2 , post = 4 } |
| enum | queue_position { front_pre_child , back_pre_child , front_child , back_child , front_post_child , back_post_child } |
| The position where to add a new callback in the signal handler. More... | |
| enum class | mouse_behavior { all , hit , none } |
| The behavior of the mouse events. More... | |
Protected Member Functions inherited from gui2::styled_widget | |
| virtual point | calculate_best_size () const override |
| See widget::calculate_best_size. More... | |
| resolution_definition_ptr | get_config () |
| resolution_definition_const_ptr | get_config () const |
| template<typename T > | |
| std::shared_ptr< const typename T::resolution > | cast_config_to () const |
| Casts the current resolution definition config to the respective type of a derived widget. More... | |
| virtual void | update_canvas () |
| Updates the canvas(ses). More... | |
| unsigned int | get_text_font_size () const |
| Resolves and returns the text_font_size. More... | |
| int | get_text_maximum_width () const |
| Returns the maximum width available for the text. More... | |
| int | get_text_maximum_height () const |
| Returns the maximum height available for the text. More... | |
| virtual bool | impl_draw_background () override |
| See widget::impl_draw_background. More... | |
| virtual bool | impl_draw_foreground () override |
| See widget::impl_draw_foreground. More... | |
| std::string | get_label_token (const point &position, std::string_view delimiters=" \n\r\t") const |
| Exposes font::pango_text::get_token, for the text label of this styled_widget. More... | |
| std::string | get_label_link (const point &position) const |
Protected Member Functions inherited from gui2::widget | |
| void | set_layout_size (const point &size) |
| const point & | layout_size () const |
| void | clear_layout_size () |
| Throws away layout_size_. More... | |
Definition at line 35 of file multimenu_button.hpp.
|
private |
Possible states of the widget.
Note the order of the states must be the same as defined in settings.hpp.
| Enumerator | |
|---|---|
| ENABLED | |
| DISABLED | |
| PRESSED | |
| FOCUSED | |
Definition at line 127 of file multimenu_button.hpp.
|
explicit |
Definition at line 42 of file multimenu_button.cpp.
References signal_handler_left_button_click(), signal_handler_left_button_down(), signal_handler_left_button_up(), signal_handler_mouse_enter(), signal_handler_mouse_leave(), and signal_handler_notify_changed().
|
overridevirtual |
See styled_widget::get_active.
Implements gui2::styled_widget.
Definition at line 77 of file multimenu_button.cpp.
References DISABLED, and state_.
Referenced by set_active().
|
overrideprivatevirtual |
Inherited from styled_widget, implemented by REGISTER_WIDGET.
Implements gui2::styled_widget.
|
inline |
Get the maximum number of selected elements shown on the label.
Definition at line 69 of file multimenu_button.hpp.
References max_shown_.
|
overridevirtual |
Implements gui2::styled_widget.
Definition at line 82 of file multimenu_button.cpp.
References state_.
|
inline |
Get the current state of the menu options.
Definition at line 111 of file multimenu_button.hpp.
References toggle_states_.
Referenced by gui2::dialogs::editor_edit_pbl::create_cfg(), gui2::dialogs::addon_manager::get_lang_filter_visibility(), gui2::dialogs::addon_manager::get_type_filter_visibility(), and gui2::dialogs::preferences_dialog::hotkey_filter_callback().
|
inline |
Get the number of options available in the menu.
Definition at line 79 of file multimenu_button.hpp.
References values_.
Referenced by gui2::dialogs::campaign_selection::pre_show().
| void gui2::multimenu_button::reset_toggle_states | ( | ) |
Deselect all the menu options.
Definition at line 194 of file multimenu_button.cpp.
References toggle_states_, update_config_from_toggle_states(), and update_label().
| void gui2::multimenu_button::select_option | ( | const unsigned | option, |
| const bool | selected = true |
||
| ) |
Select an option in the menu.
| option | The option to select |
| selected | True to select it, or false to deselect it |
Definition at line 209 of file multimenu_button.cpp.
References toggle_states_, update_config_from_toggle_states(), update_label(), and values_.
Referenced by gui2::dialogs::campaign_selection::pre_show(), and gui2::dialogs::editor_edit_pbl::pre_show().
| void gui2::multimenu_button::select_options | ( | const boost::dynamic_bitset<> & | states | ) |
Set the options selected in the menu.
| states | A mask specifying which options to select and deselect |
Definition at line 217 of file multimenu_button.cpp.
References toggle_states_, update_config_from_toggle_states(), update_label(), and values_.
Referenced by gui2::dialogs::campaign_selection::pre_show().
|
overridevirtual |
See styled_widget::set_active.
Implements gui2::styled_widget.
Definition at line 70 of file multimenu_button.cpp.
References DISABLED, ENABLED, get_active(), and set_state().
Referenced by gui2::dialogs::campaign_selection::pre_show().
|
inline |
Sets the maximum number of selected elements shown on the label.
If more are selected, the label will say "and N others".
| max | The maximum number of elements to show |
Definition at line 59 of file multimenu_button.hpp.
References max_shown_.
|
private |
Definition at line 87 of file multimenu_button.cpp.
References gui2::widget::queue_redraw(), and state_.
Referenced by set_active(), signal_handler_left_button_down(), signal_handler_left_button_up(), signal_handler_mouse_enter(), and signal_handler_mouse_leave().
| void gui2::multimenu_button::set_values | ( | const std::vector<::config > & | values | ) |
Set the available menu options.
| values | A list of options to show in the menu |
Definition at line 225 of file multimenu_button.cpp.
References _(), gui2::widget::queue_redraw(), gui2::styled_widget::set_label(), toggle_states_, utils::views::values, and values_.
Referenced by gui2::dialogs::addon_manager::pre_show(), gui2::dialogs::campaign_selection::pre_show(), gui2::dialogs::editor_edit_pbl::pre_show(), and gui2::dialogs::editor_edit_unit::pre_show().
|
private |
Definition at line 132 of file multimenu_button.cpp.
References DBG_GUI_E, droplist_, gui2::widget::get_window(), LOG_HEADER, sound::play_UI_sound(), gui2::dialogs::modal_dialog::show(), gui2::settings::sound_button_click, update_config_from_toggle_states(), and values_.
Referenced by multimenu_button().
|
private |
Definition at line 111 of file multimenu_button.cpp.
References DBG_GUI_E, gui2::widget::get_window(), LOG_HEADER, gui2::window::mouse_capture(), PRESSED, and set_state().
Referenced by multimenu_button().
|
private |
Definition at line 124 of file multimenu_button.cpp.
References DBG_GUI_E, FOCUSED, LOG_HEADER, and set_state().
Referenced by multimenu_button().
|
private |
Definition at line 95 of file multimenu_button.cpp.
References DBG_GUI_E, FOCUSED, LOG_HEADER, and set_state().
Referenced by multimenu_button().
|
private |
Definition at line 103 of file multimenu_button.cpp.
References DBG_GUI_E, ENABLED, LOG_HEADER, and set_state().
Referenced by multimenu_button().
|
private |
Definition at line 201 of file multimenu_button.cpp.
References droplist_, gui2::dialogs::drop_down_menu::get_toggle_states(), toggle_states_, and update_label().
Referenced by multimenu_button().
|
static |
Static type getter that does not rely on the widget being constructed.
|
private |
Definition at line 185 of file multimenu_button.cpp.
References c, i, toggle_states_, and values_.
Referenced by reset_toggle_states(), select_option(), select_options(), and signal_handler_left_button_click().
|
private |
Definition at line 159 of file multimenu_button.cpp.
References _(), utils::format_conjunct_list(), i, max_shown_, gui2::styled_widget::set_label(), toggle_states_, values_, and VNGETTEXT.
Referenced by reset_toggle_states(), select_option(), select_options(), and signal_handler_notify_changed().
|
private |
Definition at line 153 of file multimenu_button.hpp.
Referenced by signal_handler_left_button_click(), and signal_handler_notify_changed().
|
private |
The maximum number of selected states to list in the label.
Definition at line 147 of file multimenu_button.hpp.
Referenced by get_max_shown(), set_max_shown(), and update_label().
|
private |
Current state of the widget.
The state of the widget determines what to render and how the widget reacts to certain 'events'.
Definition at line 142 of file multimenu_button.hpp.
Referenced by get_active(), get_state(), and set_state().
|
private |
Definition at line 151 of file multimenu_button.hpp.
Referenced by get_toggle_states(), reset_toggle_states(), select_option(), select_options(), set_values(), signal_handler_notify_changed(), update_config_from_toggle_states(), and update_label().
|
private |
Definition at line 149 of file multimenu_button.hpp.
Referenced by num_options(), select_option(), select_options(), set_values(), signal_handler_left_button_click(), update_config_from_toggle_states(), and update_label().