TGUI
0.9.5
|
Base class for the Gui. More...
#include <TGUI/GuiBase.hpp>
Public Member Functions | |
GuiBase (const GuiBase ©)=delete | |
GuiBase & | operator= (const GuiBase &right)=delete |
void | setAbsoluteViewport (const FloatRect &viewport) |
Sets the part of the screen to which the gui will render in pixels. | |
void | setRelativeViewport (const FloatRect &viewport) |
Sets the part of the screen to which the gui will render as a ratio relative to the window size. | |
RelFloatRect | getViewport () const |
Returns to which part of the screen the gui will render. | |
void | setAbsoluteView (const FloatRect &view) |
Sets the part of the gui that will be used to fill the viewport in pixels. | |
void | setRelativeView (const FloatRect &view) |
Sets the part of the gui that will be used to fill the viewport. | |
RelFloatRect | getView () const |
Returns the part of the gui that will be used to fill the viewport. | |
bool | handleEvent (Event event) |
Passes the event to the widgets. | |
void | setTabKeyUsageEnabled (bool enabled) |
When the tab key usage is enabled, pressing tab will focus another widget. | |
bool | isTabKeyUsageEnabled () const |
Returns whether the tab key usage is enabled (if so, pressing tab will focus another widget) | |
virtual void | draw ()=0 |
Draws all the widgets that were added to the gui. | |
RootContainer::Ptr | getContainer () const |
Returns the internal container of the Gui. | |
void | setFont (const Font &font) |
Changes the global font. | |
Font | getFont () const |
Returns the global font for this gui. | |
const std::vector< Widget::Ptr > & | getWidgets () const |
Returns a list of all the widgets. | |
void | add (const Widget::Ptr &widgetPtr, const String &widgetName="") |
Adds a widget to the container. | |
Widget::Ptr | get (const String &widgetName) const |
Returns a pointer to an earlier created widget. | |
template<class T > | |
T::Ptr | get (const String &widgetName) const |
Returns a pointer to an earlier created widget. | |
bool | remove (const Widget::Ptr &widget) |
Removes a single widget that was added to the container. | |
void | removeAllWidgets () |
Removes all widgets that were added to the container. | |
Widget::Ptr | getFocusedChild () const |
Returns the child widget that is focused inside this container. | |
Widget::Ptr | getFocusedLeaf () const |
Returns the leaf child widget that is focused inside this container. | |
Widget::Ptr | getWidgetAtPosition (Vector2f pos) const |
Returns the leaf child widget that is located at the given position. | |
Widget::Ptr | getWidgetBelowMouseCursor (Vector2i mousePos) const |
Returns the leaf child widget below the mouse. | |
bool | focusNextWidget (bool recursive=true) |
Focuses the next widget in the gui. | |
bool | focusPreviousWidget (bool recursive=true) |
Focuses the previous widget in the gui. | |
void | unfocusAllWidgets () |
Unfocus all the widgets. | |
void | moveWidgetToFront (const Widget::Ptr &widget) |
Places a widget before all other widgets, to the front of the z-order. | |
void | moveWidgetToBack (const Widget::Ptr &widget) |
Places a widget behind all other widgets, to the back of the z-order. | |
std::size_t | moveWidgetForward (const Widget::Ptr &widget) |
Places a widget one step forward in the z-order. | |
std::size_t | moveWidgetBackward (const Widget::Ptr &widget) |
Places a widget one step backward in the z-order. | |
bool | setWidgetIndex (const Widget::Ptr &widget, std::size_t index) |
Changes the index of a widget in this container. | |
int | getWidgetIndex (const Widget::Ptr &widget) const |
Returns the current index of a widget in this container. | |
void | setOpacity (float opacity) |
Changes the opacity of all widgets. | |
float | getOpacity () const |
Returns the opacity of all the widgets. | |
void | setTextSize (unsigned int size) |
Changes the character size of all existing and future child widgets. | |
unsigned int | getTextSize () const |
Returns the character size for future child widgets (and for existing widgets where the size wasn't changed) | |
void | loadWidgetsFromFile (const String &filename, bool replaceExisting=true) |
Loads the child widgets from a text file. | |
void | saveWidgetsToFile (const String &filename) |
Saves the child widgets to a text file. | |
void | loadWidgetsFromStream (std::stringstream &stream, bool replaceExisting=true) |
Loads the child widgets from a string stream. | |
void | loadWidgetsFromStream (std::stringstream &&stream, bool replaceExisting=true) |
Loads the child widgets from a string stream. | |
void | saveWidgetsToStream (std::stringstream &stream) const |
Saves this the child widgets to a text file. | |
void | setOverrideMouseCursor (Cursor::Type type) |
Overrides which cursor gets shown. | |
void | restoreOverrideMouseCursor () |
Undoes the effect of the last call to setOverrideCursor. | |
void | requestMouseCursor (Cursor::Type type) |
Function that is used by widgets to change the mouse cursor. | |
void | setDrawingUpdatesTime (bool drawUpdatesTime) |
Sets whether drawing the gui will automatically update the internal clock or whether the user does it manually. | |
bool | updateTime () |
Updates the internal clock (for timers, animations and blinking edit cursors) | |
bool | updateTime (Duration elapsedTime) |
Vector2f | mapPixelToView (int x, int y) const |
virtual void | mainLoop ()=0 |
Give the gui control over the main loop. | |
Public Attributes | |
SignalFloatRect | onViewChange = {"ViewChanged"} |
The view was changed. Optional parameter: new view rectangle. | |
Protected Member Functions | |
virtual void | init () |
virtual void | updateContainerSize () |
Protected Attributes | |
std::chrono::steady_clock::time_point | m_lastUpdateTime |
bool | m_windowFocused = true |
RootContainer::Ptr | m_container = nullptr |
Widget::Ptr | m_visibleToolTip = nullptr |
Duration | m_tooltipTime |
bool | m_tooltipPossible = false |
Vector2f | m_toolTipRelativePos |
Vector2f | m_lastMousePos |
RelFloatRect | m_viewport {RelativeValue{0}, RelativeValue{0}, RelativeValue{1}, RelativeValue{1}} |
RelFloatRect | m_view {RelativeValue{0}, RelativeValue{0}, RelativeValue{1}, RelativeValue{1}} |
FloatRect | m_lastView |
bool | m_drawUpdatesTime = true |
bool | m_tabKeyUsageEnabled = true |
Cursor::Type | m_requestedMouseCursor = Cursor::Type::Arrow |
std::stack< Cursor::Type > | m_overrideMouseCursors |
Base class for the Gui.
void tgui::GuiBase::add | ( | const Widget::Ptr & | widgetPtr, |
const String & | widgetName = "" |
||
) |
Adds a widget to the container.
widgetPtr | Pointer to the widget you would like to add |
widgetName | If you want to access the widget later then you must do this with this name |
|
pure virtual |
Draws all the widgets that were added to the gui.
Implemented in tgui::GuiSDL, and tgui::GuiSFML.
bool tgui::GuiBase::focusNextWidget | ( | bool | recursive = true | ) |
Focuses the next widget in the gui.
recursive | If the focused widget is a container, should the next widget inside it be focused instead of focusing the sibling of the container? |
bool tgui::GuiBase::focusPreviousWidget | ( | bool | recursive = true | ) |
Focuses the previous widget in the gui.
recursive | If the focused widget is a container, should the next widget inside it be focused instead of focusing the sibling of the container? |
Widget::Ptr tgui::GuiBase::get | ( | const String & | widgetName | ) | const |
Returns a pointer to an earlier created widget.
widgetName | The name that was given to the widget when it was added to the container |
The gui will first search for widgets that are direct children of it, but when none of the child widgets match the given name, a recursive search will be performed.
|
inline |
Returns a pointer to an earlier created widget.
widgetName | The name that was given to the widget when it was added to the container |
The gui will first search for widgets that are direct children of it, but when none of the child widgets match the given name, a recursive search will be performed.
RootContainer::Ptr tgui::GuiBase::getContainer | ( | ) | const |
Returns the internal container of the Gui.
This could be useful when having a function that should accept both the gui and e.g. a child window as parameter.
Widget::Ptr tgui::GuiBase::getFocusedChild | ( | ) | const |
Returns the child widget that is focused inside this container.
If the focused widget is a container then a pointer to that container is returned. If you want to know which widget is focused inside that container (recursively) then you should use the getFocusedLeaf() function.
Widget::Ptr tgui::GuiBase::getFocusedLeaf | ( | ) | const |
Returns the leaf child widget that is focused inside this container.
If the focused widget is a container then the getFocusedLeaf() is recursively called on that container. If you want to limit the search to only direct children of this container then you should use the getFocusedChild() function.
Font tgui::GuiBase::getFont | ( | ) | const |
Returns the global font for this gui.
float tgui::GuiBase::getOpacity | ( | ) | const |
Returns the opacity of all the widgets.
unsigned int tgui::GuiBase::getTextSize | ( | ) | const |
Returns the character size for future child widgets (and for existing widgets where the size wasn't changed)
RelFloatRect tgui::GuiBase::getView | ( | ) | const |
Returns the part of the gui that will be used to fill the viewport.
By default the view will have the same size as the viewport.
RelFloatRect tgui::GuiBase::getViewport | ( | ) | const |
Returns to which part of the screen the gui will render.
By default the viewport will fill the entire screen.
Widget::Ptr tgui::GuiBase::getWidgetAtPosition | ( | Vector2f | pos | ) | const |
Returns the leaf child widget that is located at the given position.
pos | The location where the widget will be searched, relative to the gui view |
Widget::Ptr tgui::GuiBase::getWidgetBelowMouseCursor | ( | Vector2i | mousePos | ) | const |
Returns the leaf child widget below the mouse.
mousePos | Position of the mouse, in pixel coordinates, relative the the window |
int tgui::GuiBase::getWidgetIndex | ( | const Widget::Ptr & | widget | ) | const |
Returns the current index of a widget in this container.
const std::vector< Widget::Ptr > & tgui::GuiBase::getWidgets | ( | ) | const |
Returns a list of all the widgets.
bool tgui::GuiBase::handleEvent | ( | Event | event | ) |
Passes the event to the widgets.
event | The event that was polled from the window |
void tgui::GuiBase::loadWidgetsFromFile | ( | const String & | filename, |
bool | replaceExisting = true |
||
) |
Loads the child widgets from a text file.
filename | Filename of the widget file |
replaceExisting | Remove existing widgets first if there are any |
void tgui::GuiBase::loadWidgetsFromStream | ( | std::stringstream && | stream, |
bool | replaceExisting = true |
||
) |
Loads the child widgets from a string stream.
stream | stringstream that contains the widget file |
replaceExisting | Remove existing widgets first if there are any |
void tgui::GuiBase::loadWidgetsFromStream | ( | std::stringstream & | stream, |
bool | replaceExisting = true |
||
) |
Loads the child widgets from a string stream.
stream | stringstream that contains the widget file |
replaceExisting | Remove existing widgets first if there are any |
|
pure virtual |
Give the gui control over the main loop.
This function is only intended in cases where your program only needs to respond to gui events. For multimedia applications, games, or other programs where you want a high framerate or do a lot of processing in the main loop, you should use your own main loop.
Implemented in tgui::GuiSDL, and tgui::GuiSFML.
std::size_t tgui::GuiBase::moveWidgetBackward | ( | const Widget::Ptr & | widget | ) |
Places a widget one step backward in the z-order.
widget | The widget that should be moved one step backward |
std::size_t tgui::GuiBase::moveWidgetForward | ( | const Widget::Ptr & | widget | ) |
Places a widget one step forward in the z-order.
widget | The widget that should be moved one step forward |
void tgui::GuiBase::moveWidgetToBack | ( | const Widget::Ptr & | widget | ) |
Places a widget behind all other widgets, to the back of the z-order.
widget | The widget that should be moved to the back |
void tgui::GuiBase::moveWidgetToFront | ( | const Widget::Ptr & | widget | ) |
Places a widget before all other widgets, to the front of the z-order.
widget | The widget that should be moved to the front |
bool tgui::GuiBase::remove | ( | const Widget::Ptr & | widget | ) |
Removes a single widget that was added to the container.
widget | Pointer to the widget to remove |
void tgui::GuiBase::requestMouseCursor | ( | Cursor::Type | type | ) |
Function that is used by widgets to change the mouse cursor.
type | The requested cursor |
This function is used to change the mouse cursor when the mouse enters or leaves a widget. If you want to choose a cursor that doesn't get changed when moving the mouse then use setOverrideMouseCursor. If an override cursor is already set then this function won't be able to change the cursor. When all overrides are removed with restoreOverrideMouseCursor then the mouse cursor will be changed to what was last requested here.
void tgui::GuiBase::restoreOverrideMouseCursor | ( | ) |
Undoes the effect of the last call to setOverrideCursor.
This function has to be called for each call to setOverrideCursor. If the stack of overriden cursors becomes empty then widgets will be able to change the cursor again.
void tgui::GuiBase::saveWidgetsToFile | ( | const String & | filename | ) |
Saves the child widgets to a text file.
filename | Filename of the widget file |
Exception | when file could not be opened for writing |
void tgui::GuiBase::saveWidgetsToStream | ( | std::stringstream & | stream | ) | const |
Saves this the child widgets to a text file.
stream | stringstream to which the widget file will be added |
void tgui::GuiBase::setAbsoluteView | ( | const FloatRect & | view | ) |
Sets the part of the gui that will be used to fill the viewport in pixels.
view | Rect of the gui that will be stretched to fill the viewport |
No stretching will occur when the view has the same size as the viewport (default).
Example code to use the contents of the gui container from top-left (200,100) to bottom-right (600, 400) and stetch it to fill the viewport (which equals the entire window by default):
void tgui::GuiBase::setAbsoluteViewport | ( | const FloatRect & | viewport | ) |
Sets the part of the screen to which the gui will render in pixels.
viewport | Rect of the window to which the gui should draw |
Example code to render the gui on only the right side of an 800x600 window:
void tgui::GuiBase::setDrawingUpdatesTime | ( | bool | drawUpdatesTime | ) |
Sets whether drawing the gui will automatically update the internal clock or whether the user does it manually.
drawUpdatesTime | True if gui.draw() updates the clock (default), false if gui.updateTime() has to be called |
void tgui::GuiBase::setFont | ( | const Font & | font | ) |
Changes the global font.
font | Font to use |
void tgui::GuiBase::setOpacity | ( | float | opacity | ) |
Changes the opacity of all widgets.
opacity | The opacity of the widgets. 0 means completely transparent, while 1 (default) means fully opaque |
void tgui::GuiBase::setOverrideMouseCursor | ( | Cursor::Type | type | ) |
Overrides which cursor gets shown.
type | Which cursor to show |
Until restoreOverrideCursor is called, the cursor will no longer be changed by widgets. If setOverrideCursor is called multiple times, the cursors are stacked and calling restoreOverrideCursor will only pop the last added cursor from the stack.
void tgui::GuiBase::setRelativeView | ( | const FloatRect & | view | ) |
Sets the part of the gui that will be used to fill the viewport.
view | Rect of the gui that will be stretched to fill the viewport, relative to the viewport size |
The default view is (0, 0, 1, 1) so that no scaling happens even when the viewport is changed.
Example code to zoom in on the gui and display everything at 2x the size:
void tgui::GuiBase::setRelativeViewport | ( | const FloatRect & | viewport | ) |
Sets the part of the screen to which the gui will render as a ratio relative to the window size.
viewport | Rect of the window to which the gui should draw, relative to the window size |
The default viewport is set to (0, 0, 1, 1) so that it fills the entire window.
Example code to render the gui on only the right side of window:
void tgui::GuiBase::setTextSize | ( | unsigned int | size | ) |
Changes the character size of all existing and future child widgets.
size | The new text size |
The text size specified in this function overrides the global text size property. By default, the gui does not pass any text size to the widgets and the widgets will use the global text size as default value.
bool tgui::GuiBase::setWidgetIndex | ( | const Widget::Ptr & | widget, |
std::size_t | index | ||
) |
Changes the index of a widget in this container.
Widgets are drawn in the order of the list, so overlapping widgets with a higher index will appear on top of others.
widget | Widget that is to be moved to a different index |
index | New index of the widget, corresponding to the widget position after the widget has been moved |
bool tgui::GuiBase::updateTime | ( | ) |
Updates the internal clock (for timers, animations and blinking edit cursors)
You do not need to call this function unless you set DrawingUpdatesTime to false (it is true by default).