SuperTuxKart
|
A static text/icons/tabs bar widget. More...
#include <ribbon_widget.hpp>
Classes | |
class | IRibbonListener |
Public Member Functions | |
RibbonWidget (const RibbonType type=RIBBON_COMBO) | |
virtual void | add () OVERRIDE |
Create and add the irrLicht widget(s) associated with this object. | |
void | setListener (IRibbonListener *listener) |
Sets a listener that will be notified of changes on this ribbon. | |
RibbonType | getRibbonType () const |
Returns the type of this ribbon (see the GUI module overview page for detailed descriptions) | |
RibbonFlip | getRibbonFlip () const |
Returns the flip direction of thin ribbon. | |
int | getActiveChildrenNumber (const int playerID) const |
Returns the number of active items within the ribbon. | |
int | getSelection (const int playerID) const |
Returns the numerical ID of the selected item within the ribbon. | |
const std::string & | getSelectionIDString (const int playerID) |
Returns the string ID (internal name) of the selection. | |
irr::core::stringw | getSelectionText (const int playerID) |
Returns the user-visible text of the selection. | |
void | setSelection (const int i, const int playerID) |
Sets the ID of the selected item within the ribbon. | |
void | select (std::string item, const int playerID) |
Select an item in the ribbon by its internal name. | |
void | setLabel (const unsigned int id, irr::core::stringw new_name) |
This method can be used to rename an item. | |
void | setItemVisible (const unsigned int id, bool visible) |
void | setFlip (RibbonFlip direction) |
int | findItemNamed (const char *internalName) |
Returns the ID of the item, or -1 if not found. | |
GUIEngine::Widget * | findWidgetNamed (const char *interalName) |
Returns the the widget, or NULL if not found. | |
void | addTextChild (const core::stringw &text, const std::string &id) |
Dynamically (at runtime) add a text item to this ribbon. | |
void | addIconChild (const core::stringw &text, const std::string &id, const int w, const int h, const std::string &icon, const IconButtonWidget::IconPathType iconPathType=IconButtonWidget::ICON_PATH_TYPE_RELATIVE) |
Dynamically (at runtime) add an icon item to this ribbon. | |
void | clearAllChildren () |
clear all children of this ribbon (likely because new ones will be added soon after) | |
void | removeChildNamed (const char *name) |
clear one child from this ribbon | |
PtrVector< Widget > & | getRibbonChildren () |
virtual EventPropagation | onActivationInput (const int playerID) OVERRIDE |
Public Member Functions inherited from GUIEngine::Widget | |
Widget (WidgetType type, bool reserve_id=false) | |
virtual void | setEventCallbackActive (Input::InputType type, bool active) |
Allow (or not) an event callback for this widget based on input type. | |
virtual bool | isEventCallbackActive (Input::InputType type) const |
Return if there should be an event callback for this widget based on input type. | |
void | setParent (irr::gui::IGUIElement *parent) |
Set the irrlicht widget to be used as parent of this widget next time Widget::add() is invoked on this widget. | |
virtual void | setVisible (bool visible) |
Sets the widget (and its children, if any) visible or not. | |
virtual void | setCollapsed (bool collapsed, Screen *calling_screen=NULL) |
Sets the widget (and its children, if any) collapsed or not. | |
virtual void | setCollapsed (bool collapsed, int uncollapsed_height, Screen *calling_screen=NULL) |
Sets the widget (and its children, if any) collapsed or not. | |
bool | isVisible () const |
Returns if the element is visible. | |
bool | isCollapsed () const |
Returns whether the element is collapsed (through setCollapsed). | |
bool | isActivated () const |
virtual EventPropagation | onActivationInput (const int playerID) |
virtual void | move (const int x, const int y, const int w, const int h) |
Call to resize/move the widget. | |
bool | isSelected (const int playerID) const |
Get whether this widget is selected (only makes sense in some cases where a widget is part of a bigger widget, e.g. | |
void | setSelected (const int playerID, bool state) |
bool | isBottomBar () const |
bool | isTopBar () const |
bool | ok () const |
virtual EventPropagation | onClick () |
Gets called when the widget is active and got clicked. | |
virtual irr::core::dimension2di | getDimension () const |
virtual void | setActive (bool active=true) |
Sets an widget to be either activated or deactivated (i.e. | |
template<typename T > | |
T * | getIrrlichtElement () |
Get the underlying irrLicht GUI element, casted to the right type. | |
template<typename T > | |
const T * | getIrrlichtElement () const |
Get the underlying irrLicht GUI element, casted to the right type; const version. | |
irr::gui::IGUIElement * | getIrrlichtElement () |
Get the underlying irrLicht GUI element. | |
void | moveIrrlichtElement () |
bool | isSameIrrlichtWidgetAs (const Widget *ref) const |
virtual void | setText (const irr::core::stringw &s) |
Sets the text of a widget from a wchar_t. | |
const irr::core::stringw & | getText () const |
Returns the text of a widget. | |
WidgetType | getType () const |
int | getID () const |
Get the irrlicht widget ID attributed to this widget. | |
bool | isFocusable () const |
Get whether this object is allowed to receive focus. | |
void | setFocusable (bool f) |
void | setFocusForPlayer (const int playerID) |
Focus the widget for the given player. | |
bool | isFocusedForPlayer (const int playerID) |
Find whether this widget is focused by a given player. | |
void | unsetFocusForPlayer (const int playerID) |
Internal method, do not call it. | |
const PtrVector< Widget > & | getChildren () const |
PtrVector< Widget > & | getChildren () |
bool | deleteChild (const char *id) |
removes and deletes the child with the given PROP_ID | |
virtual void | update (float delta) |
Override in children to possibly receive updates (you may need to register to them first) | |
virtual void | elementRemoved () |
Called when irrLicht widgets cleared. | |
bool | searchInsideMe () const |
virtual int | getWidthNeededAroundLabel () const |
When inferring widget size from its label length, this method will be called to if/how much space must be added to the raw label's size for the widget to be large enough. | |
virtual int | getHeightNeededAroundLabel () const |
When inferring widget size from its label length, this method will be called to if/how much space must be added to the raw label's size for the widget to be large enough. | |
void | setBadge (BadgeType badge_bit) |
adds a particular badge to this widget. | |
void | unsetBadge (BadgeType badge_bit) |
removes a particular bade from this widget, if it had it. | |
void | resetAllBadges () |
sets this widget to have no badge | |
int | getBadges () const |
Get which badges are currently on this widget. | |
bool | hasTooltip () const |
irr::core::stringw | getTooltipText () const |
Only call if hasTooltip() returned true. | |
void | setTooltip (irr::core::stringw s) |
Public Attributes | |
Widget * | m_mouse_focus |
Contains which element within the ribbon is currently focused by player 0 (used by the skin to show mouse hovers over items that are not selected). | |
Public Attributes inherited from GUIEngine::Widget | |
Widget * | m_event_handler |
This is set to NULL by default; set to something else in a widget to mean that events happening on this widget should also be passed to m_event_handler->transmitEvent, which is usually the parent analysing events from its children. | |
bool | m_supports_multiplayer |
Whether this widget supports multiplayer interaction (i.e. | |
int | m_tab_down_root |
Instead of searching for widget IDs smaller/greater than that of this object, navigation through widgets will start from these IDs (if they are set). | |
int | m_tab_up_root |
Instead of searching for widget IDs smaller/greater than that of this object, navigation through widgets will start from these IDs (if they are set). | |
int | m_x |
Coordinates of the widget once added (the difference between those x/h and PROP_WIDTH/PROP_HEIGHT is that the props are read in raw form from the XML file; PROP_WIDTH can then be e.g. | |
int | m_y |
int | m_w |
int | m_h |
bool | m_show_bounding_box |
Whether to show a bounding box around this widget (used for sections) | |
bool | m_is_bounding_box_round |
Only used if m_show_bounding_box is true. | |
int | m_reserved_id |
Used in two cases : 1) For 'placeholder' divisions; at the time the layout is created, there is nothing to place there yet, but we know there eventually will. | |
std::map< Property, std::string > | m_properties |
A map that holds values for all specified widget properties (in the XML file) | |
Public Attributes inherited from GUIEngine::SkinWidgetContainer | |
int | m_skin_x |
int | m_skin_y |
int | m_skin_w |
int | m_skin_h |
bool | m_skin_dest_areas_inited |
bool | m_skin_dest_areas_yflip_inited |
int | m_skin_dest_x |
int | m_skin_dest_y |
int | m_skin_dest_x2 |
int | m_skin_dest_y2 |
core::rect< s32 > | m_skin_dest_area_left |
core::rect< s32 > | m_skin_dest_area_center |
core::rect< s32 > | m_skin_dest_area_right |
core::rect< s32 > | m_skin_dest_area_top |
core::rect< s32 > | m_skin_dest_area_bottom |
core::rect< s32 > | m_skin_dest_area_top_left |
core::rect< s32 > | m_skin_dest_area_top_right |
core::rect< s32 > | m_skin_dest_area_bottom_left |
core::rect< s32 > | m_skin_dest_area_bottom_right |
core::rect< s32 > | m_skin_dest_area_left_yflip |
core::rect< s32 > | m_skin_dest_area_center_yflip |
core::rect< s32 > | m_skin_dest_area_right_yflip |
core::rect< s32 > | m_skin_dest_area_top_yflip |
core::rect< s32 > | m_skin_dest_area_bottom_yflip |
core::rect< s32 > | m_skin_dest_area_top_left_yflip |
core::rect< s32 > | m_skin_dest_area_top_right_yflip |
core::rect< s32 > | m_skin_dest_area_bottom_left_yflip |
core::rect< s32 > | m_skin_dest_area_bottom_right_yflip |
short | m_skin_r |
short | m_skin_g |
short | m_skin_b |
Private Member Functions | |
void | updateSelection () |
Each item within the ribbon holds a flag saying whether it is selected or not. | |
virtual EventPropagation | rightPressed (const int playerID=0) OVERRIDE |
Callbacks. | |
virtual EventPropagation | leftPressed (const int playerID=0) OVERRIDE |
called when left key is pressed and focus is on widget. | |
virtual EventPropagation | upPressed (const int playerID=0) OVERRIDE |
called when up key is pressed and focus is on widget. | |
virtual EventPropagation | downPressed (const int playerID=0) OVERRIDE |
called when down key is pressed and focus is on widget. | |
EventPropagation | moveToNextItem (const bool horizontally, const bool reverse, const int playerID) |
EventPropagation | propagationType (const bool horizontally) |
void | selectNextActiveWidget (const bool horizontally, const bool reverse, const int playerID, const int old_selection) |
Move to the next child widget in the requested direction. | |
virtual EventPropagation | mouseHovered (Widget *child, const int playerID) OVERRIDE |
used when you set eventSupervisors - see m_event_handler explainations below called when one of a widget's children is hovered. | |
virtual EventPropagation | transmitEvent (Widget *w, const std::string &originator, const int playerID=0) OVERRIDE |
All widgets, including their parents (m_event_handler) will be notified on event through this call. | |
virtual EventPropagation | focused (const int playerID) OVERRIDE |
override in children if you need to know when the widget is focused. | |
virtual void | unfocused (const int playerID, Widget *new_focus) OVERRIDE |
override in children if you need to know when the widget is unfocused. | |
virtual EventPropagation | onClick () OVERRIDE |
Gets called when the widget is active and got clicked. | |
Private Attributes | |
int | m_selection [MAX_PLAYER_COUNT] |
RibbonType | m_ribbon_type |
The type of this ribbon (toolbar, combo, tabs, vertical tabs) | |
RibbonFlip | m_ribbon_flip |
The flip direction of this ribbon. | |
PtrVector< irr::gui::IGUIStaticText, REF > | m_labels |
IRibbonListener * | m_listener |
PtrVector< Widget > | m_active_children |
Friends | |
class | DynamicRibbonWidget |
class | EventHandler |
Additional Inherited Members | |
Static Public Member Functions inherited from GUIEngine::Widget | |
static void | resetIDCounters () |
When switching to a new screen, this function will be called to reset ID counters (so we start again from ID 0, and don't grow to big numbers) | |
static int | getNewID () |
Provides a new unique ID on each call, for widgets that can be focused. | |
static int | getNewNoFocusID () |
Provides a new unique ID on each call, for widgets that can not be focused. | |
static bool | isFocusableId (const int id) |
get whether the given ID represents an ID of a widget that can be focused | |
virtual EventPropagation | rightPressed (const int playerID) |
called when right key is pressed and focus is on widget. | |
virtual EventPropagation | leftPressed (const int playerID) |
called when left key is pressed and focus is on widget. | |
virtual EventPropagation | upPressed (const int playerID) |
called when up key is pressed and focus is on widget. | |
virtual EventPropagation | downPressed (const int playerID) |
called when down key is pressed and focus is on widget. | |
virtual EventPropagation | mouseHovered (Widget *child, const int playerID) |
used when you set eventSupervisors - see m_event_handler explainations below called when one of a widget's children is hovered. | |
virtual EventPropagation | focused (const int playerID) |
override in children if you need to know when the widget is focused. | |
virtual void | unfocused (const int playerID, Widget *new_focus) |
override in children if you need to know when the widget is unfocused. | |
Protected Attributes inherited from GUIEngine::Widget | |
unsigned int | m_magic_number |
std::bitset< Input::IT_LAST+1 > | m_active_event_callback |
int | m_absolute_x |
Used during loading, by the layout engine. | |
int | m_absolute_y |
int | m_absolute_w |
int | m_absolute_h |
int | m_absolute_reverse_x |
int | m_absolute_reverse_y |
float | m_relative_x |
float | m_relative_y |
float | m_relative_w |
float | m_relative_h |
irr::core::stringw | m_text |
PROP_TEXT is a special case : since it can be translated it can't go in the map above, which uses narrow strings. | |
bool | m_title_font |
When true, this widget shall use a bigger and more colourful font. | |
bool | m_selected [MAX_PLAYER_COUNT] |
Can be used in children to indicate whether a widget is selected or not. | |
bool | m_check_inside_me |
Whether to descend in the children of this widget when searching a widget from its ID or name. | |
irr::gui::IGUIElement * | m_parent |
An irrlicht parent (most often used to put widgets in dialogs) | |
irr::gui::IGUIElement * | m_element |
IrrLicht widget created to represent this object. | |
int | m_id |
numerical ID used by irrLicht to identify this widget (not the same as the string identificator specified in the XML file) | |
bool | m_player_focus [MAX_PLAYER_COUNT] |
Usually, only one widget at a time can be focused. | |
bool | m_reserve_id |
Whether to reserve an ID in 'm_reserved_id' when widget is added. | |
WidgetType | m_type |
Type of this widget. | |
PtrVector< Widget > | m_children |
If this widget has any children, they go here. | |
int | m_badges |
A bitmask of which badges to show, if any; choices are *_BADGE, defined above. | |
bool | m_deactivated |
A simple flag that can be raised to deactivate this widget. | |
bool | m_is_visible |
A flag to indicate whether this widget should be visible or not. | |
bool | m_focusable |
Set to false if widget is something that should not receive focus. | |
bool | m_bottom_bar |
bool | m_top_bar |
int | m_badge_x_shift |
If a badge wouldn't look too pretty on the very side of the widget. | |
bool | m_has_tooltip |
irr::core::stringw | m_tooltip_text |
int | m_uncollapsed_height |
height of the widget before it was collapsed (only set if widget got collapsed) | |
bool | m_is_collapsed |
A flag to indicate whether this widget got collapsed. | |
A static text/icons/tabs bar widget.
The contents of this ribbon are static.
|
virtual |
Create and add the irrLicht widget(s) associated with this object.
Call after Widget was read from XML file and laid out.
Reimplemented from GUIEngine::Widget.
void RibbonWidget::addIconChild | ( | const core::stringw & | text, |
const std::string & | id, | ||
const int | w, | ||
const int | h, | ||
const std::string & | icon, | ||
const IconButtonWidget::IconPathType | iconPathType = IconButtonWidget::ICON_PATH_TYPE_RELATIVE |
||
) |
Dynamically (at runtime) add an icon item to this ribbon.
void RibbonWidget::addTextChild | ( | const core::stringw & | text, |
const std::string & | id | ||
) |
Dynamically (at runtime) add a text item to this ribbon.
void RibbonWidget::clearAllChildren | ( | ) |
clear all children of this ribbon (likely because new ones will be added soon after)
|
privatevirtual |
called when down key is pressed and focus is on widget.
Returns 'EVENT_LET' if user's event handler should be notified of a change. Override in children to be notified of up/down events and/or make the event propagate to the user's event handler.
Reimplemented from GUIEngine::Widget.
|
privatevirtual |
override in children if you need to know when the widget is focused.
Reimplemented from GUIEngine::Widget.
|
privatevirtual |
called when left key is pressed and focus is on widget.
Returns 'EVENT_LET' if user's event handler should be notified of a change. Override in children to be notified of left/right events and/or make the event propagate to the user's event handler.
Reimplemented from GUIEngine::Widget.
|
privatevirtual |
used when you set eventSupervisors - see m_event_handler explainations below called when one of a widget's children is hovered.
Reimplemented from GUIEngine::Widget.
|
virtual |
Reimplemented from GUIEngine::Widget.
|
privatevirtual |
Gets called when the widget is active and got clicked.
(Only works for button widgets for now.)
Reimplemented from GUIEngine::Widget.
void RibbonWidget::removeChildNamed | ( | const char * | name | ) |
clear one child from this ribbon
|
privatevirtual |
Callbacks.
Reimplemented from GUIEngine::Widget.
|
private |
Move to the next child widget in the requested direction.
If it is inactive, move again, until it finds an activated child or test all childs
void RibbonWidget::setLabel | ( | const unsigned int | id, |
irr::core::stringw | new_name | ||
) |
This method can be used to rename an item.
Has no effect for ribbons without individual labels.
id | The index of the item to rename, in range [0 .. item count - 1] |
|
inline |
Sets a listener that will be notified of changes on this ribbon.
Does not take ownership of the listener, i.e. will not delete it. You may call this with the listener parameter set to NULL to remove the listener.
|
privatevirtual |
All widgets, including their parents (m_event_handler) will be notified on event through this call.
Must return whether main (GUI engine user) event callback should be notified or not. Note that in the case of a hierarchy of widgets (with m_event_handler), only the topmost widget of the chain decides whether the main handler is notified; return value is not read for others.
Reimplemented from GUIEngine::Widget.
|
privatevirtual |
override in children if you need to know when the widget is unfocused.
Reimplemented from GUIEngine::Widget.
|
private |
Each item within the ribbon holds a flag saying whether it is selected or not.
This method updates the flag in all of this ribbon's children. Called everytime selection changes.
|
privatevirtual |
called when up key is pressed and focus is on widget.
Returns 'EVENT_LET' if user's event handler should be notified of a change. Override in children to be notified of up/down events and/or make the event propagate to the user's event handler.
Reimplemented from GUIEngine::Widget.
Widget* GUIEngine::RibbonWidget::m_mouse_focus |
Contains which element within the ribbon is currently focused by player 0 (used by the skin to show mouse hovers over items that are not selected).
Only used for COMBO and TAB ribbons.