TGUI  1.0-beta
Loading...
Searching...
No Matches
Signal.hpp
1
2//
3// TGUI - Texus' Graphical User Interface
4// Copyright (C) 2012-2022 Bruno Van de Velde (vdv_b@tgui.eu)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages arising from the use of this software.
8//
9// Permission is granted to anyone to use this software for any purpose,
10// including commercial applications, and to alter it and redistribute it freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25
26#ifndef TGUI_SIGNAL_HPP
27#define TGUI_SIGNAL_HPP
28
30
31#include <TGUI/Global.hpp>
32#include <TGUI/String.hpp>
33#include <TGUI/Color.hpp>
34#include <TGUI/Vector2.hpp>
35#include <TGUI/Animation.hpp>
36#include <TGUI/Filesystem.hpp>
37#include <unordered_map>
38#include <type_traits>
39#include <functional>
40#include <typeindex>
41#include <memory>
42#include <vector>
43#include <deque>
44
45#undef MessageBox // windows.h defines MessageBox when NOMB isn't defined before including windows.h
46
48
49namespace tgui
50{
51 class Widget;
52 class ChildWindow;
53
57 class TGUI_API Signal
58 {
59 public:
60
64 virtual ~Signal() = default;
65
66
73 Signal(String&& name, std::size_t extraParameters = 0) :
74 m_name{std::move(name)}
75 {
76 if (1 + extraParameters > m_parameters.size())
77 m_parameters.resize(1 + extraParameters);
78 }
79
80
84 Signal(const Signal& other);
85
86
90 Signal(Signal&& other) noexcept = default;
91
92
96 Signal& operator=(const Signal& other);
97
98
102 Signal& operator=(Signal&& other) noexcept = default;
103
104
113 template <typename Func, typename... BoundArgs>
114 unsigned int operator()(const Func& func, const BoundArgs&... args)
115 {
116 return connect(func, args...);
117 }
118
119
128 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&...)>>::value>* = nullptr>
129 unsigned int connect(const Func& func, const BoundArgs&... args)
130 {
131 const auto id = ++m_lastSignalId;
132#if defined(__cpp_if_constexpr) && (__cpp_if_constexpr >= 201606L)
133 if constexpr(sizeof...(BoundArgs) == 0)
134 m_handlers[id] = func;
135 else
136#endif
137 {
138 m_handlers[id] = [=]{ invokeFunc(func, args...); };
139 }
140
141 return id;
142 }
143
144
153 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., std::shared_ptr<Widget>, const String&)>>::value>* = nullptr>
154 unsigned int connectEx(const Func& func, const BoundArgs&... args)
155 {
156 // The name is copied so that the lambda does not depend on the 'this' pointer
157 return connect([func, name=m_name, args...](){ invokeFunc(func, args..., getWidget(), name); });
158 }
159
160
168 bool disconnect(unsigned int id);
169
170
175
176
184 bool emit(const Widget* widget);
185
186
193 {
194 return m_name;
195 }
196
197
206 void setEnabled(bool enabled)
207 {
208 m_enabled = enabled;
209 }
210
211
220 bool isEnabled() const
221 {
222 return m_enabled;
223 }
224
225
227 protected:
228
232 static std::shared_ptr<Widget> getWidget();
233
234
238 template <typename Type>
239 static const std::decay_t<Type>& dereferenceParam(std::size_t paramIndex)
240 {
241 return *static_cast<const std::decay_t<Type>*>(m_parameters[paramIndex]);
242 }
243
244
245#if defined(__cpp_lib_invoke) && (__cpp_lib_invoke >= 201411L)
246 template <typename Func, typename... Args>
247 static void invokeFunc(Func&& func, Args&&... args)
248 {
249 std::invoke(std::forward<Func>(func), std::forward<Args>(args)...);
250 }
251#else
252 // std::invoke only exists in c++17 so we use our own implementation to support c++14 compilers
253 template <typename Func, typename... Args, typename std::enable_if<std::is_member_pointer<std::decay_t<Func>>::value>::type* = nullptr>
254 static void invokeFunc(Func&& func, Args&&... args)
255 {
256 (std::mem_fn(func))(std::forward<Args>(args)...);
257 }
258
259 template <typename Func, typename... Args, typename std::enable_if<!std::is_member_pointer<std::decay_t<Func>>::value>::type* = nullptr>
260 static void invokeFunc(Func&& func, Args&&... args)
261 {
262 std::forward<Func>(func)(std::forward<Args>(args)...);
263 }
264#endif
265
266
268 protected:
269
270 bool m_enabled = true;
271 String m_name;
272 std::unordered_map<unsigned int, std::function<void()>> m_handlers;
273
274 static unsigned int m_lastSignalId;
275 static std::deque<const void*> m_parameters;
276 };
277
278
285 template <typename T>
286 class SignalTyped : public Signal
287 {
288 public:
289
294 Signal{std::move(name), 1}
295 {
296 }
297
298
307 template <typename Func, typename... BoundArgs>
308 unsigned int operator()(const Func& func, const BoundArgs&... args)
309 {
310 return connect(func, args...);
311 }
312
313
322 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&...)>>::value>* = nullptr>
323 unsigned int connect(const Func& func, const BoundArgs&... args)
324 {
325 return Signal::connect(func, args...);
326 }
327
328
337 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., T)>>::value>* = nullptr>
338 unsigned int connect(const Func& func, const BoundArgs&... args)
339 {
340 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<T>(1)); });
341 }
342
343
352 bool emit(const Widget* widget, T param)
353 {
354 if (m_handlers.empty())
355 return false;
356
357 m_parameters[1] = static_cast<const void*>(&param);
358 return Signal::emit(widget);
359 }
360 };
361
362
369 template <typename T1, typename T2>
370 class SignalTyped2 : public Signal
371 {
372 public:
373
378 Signal{std::move(name), 2}
379 {
380 }
381
382
391 template <typename Func, typename... BoundArgs>
392 unsigned int operator()(const Func& func, const BoundArgs&... args)
393 {
394 return connect(func, args...);
395 }
396
397
406 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&...)>>::value>* = nullptr>
407 unsigned int connect(const Func& func, const BoundArgs&... args)
408 {
409 return Signal::connect(func, args...);
410 }
411
412
421 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., T1, T2)>>::value>* = nullptr>
422 unsigned int connect(const Func& func, const BoundArgs&... args)
423 {
424 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<T1>(1), dereferenceParam<T2>(2)); });
425 }
426
427
437 bool emit(const Widget* widget, T1 param1, T2 param2)
438 {
439 if (m_handlers.empty())
440 return false;
441
442 m_parameters[1] = static_cast<const void*>(&param1);
443 m_parameters[2] = static_cast<const void*>(&param2);
444 return Signal::emit(widget);
445 }
446 };
447
457
458
465 class TGUI_API SignalChildWindow : public Signal
466 {
467 public:
468
473 Signal{std::move(name), 1}
474 {
475 }
476
477
486 template <typename Func, typename... BoundArgs>
487 unsigned int operator()(const Func& func, const BoundArgs&... args)
488 {
489 return connect(func, args...);
490 }
491
492
501 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&...)>>::value>* = nullptr>
502 unsigned int connect(const Func& func, const BoundArgs&... args)
503 {
504 return Signal::connect(func, args...);
505 }
506
507
516 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., const std::shared_ptr<ChildWindow>&)>>::value>* = nullptr>
517 unsigned int connect(const Func& func, const BoundArgs&... args)
518 {
519 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceChildWindow()); });
520 }
521
522
530 bool emit(ChildWindow* param);
531
532
534 private:
535
539 static std::shared_ptr<ChildWindow> dereferenceChildWindow();
540
541
543 };
544
545
554 class TGUI_API SignalItem : public Signal
555 {
556 public:
557
562 Signal{std::move(name), 3}
563 {
564 }
565
566
575 template <typename Func, typename... BoundArgs>
576 unsigned int operator()(const Func& func, const BoundArgs&... args)
577 {
578 return connect(func, args...);
579 }
580
581
590 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&...)>>::value>* = nullptr>
591 unsigned int connect(const Func& func, const BoundArgs&... args)
592 {
593 return Signal::connect(func, args...);
594 }
595
596
605 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., int)>>::value>* = nullptr>
606 unsigned int connect(const Func& func, const BoundArgs&... args)
607 {
608 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<int>(1)); });
609 }
610
611
620 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., const String&)>>::value>* = nullptr>
621 unsigned int connect(const Func& func, const BoundArgs&... args)
622 {
623 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<String>(2)); });
624 }
625
626
635 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., const String&, const String&)>>::value>* = nullptr>
636 unsigned int connect(const Func& func, const BoundArgs&... args)
637 {
638 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<String>(2), dereferenceParam<String>(3)); });
639 }
640
641
652 bool emit(const Widget* widget, int index, const String& item, const String& id);
653
654
656 };
657
658
667 class TGUI_API SignalFileDialogPaths : public Signal
668 {
669 public:
670
675 Signal{std::move(name), 3}
676 {
677 }
678
687 template <typename Func, typename... BoundArgs>
688 unsigned int operator()(const Func& func, const BoundArgs&... args)
689 {
690 return connect(func, args...);
691 }
692
701 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&...)>>::value>* = nullptr>
702 unsigned int connect(const Func& func, const BoundArgs&... args)
703 {
704 return Signal::connect(func, args...);
705 }
706
715 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., const String&)>>::value>* = nullptr>
716 unsigned int connect(const Func& func, const BoundArgs&... args)
717 {
718 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<String>(1)); });
719 }
720
729 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., const Filesystem::Path&)>>::value>* = nullptr>
730 unsigned int connect(const Func& func, const BoundArgs&... args)
731 {
732 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<Filesystem::Path>(2)); });
733 }
734
743 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., const std::vector<Filesystem::Path>&)>>::value>* = nullptr>
744 unsigned int connect(const Func& func, const BoundArgs&... args)
745 {
746 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<std::vector<Filesystem::Path>>(3)); });
747 }
748
757 bool emit(const Widget* widget, const std::vector<Filesystem::Path>& paths);
758 };
759
760
769 class TGUI_API SignalShowEffect : public Signal
770 {
771 public:
772
777 Signal{std::move(name), 2}
778 {
779 }
780
781
790 template <typename Func, typename... BoundArgs>
791 unsigned int operator()(const Func& func, const BoundArgs&... args)
792 {
793 return connect(func, args...);
794 }
795
796
805 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&...)>>::value>* = nullptr>
806 unsigned int connect(const Func& func, const BoundArgs&... args)
807 {
808 return Signal::connect(func, args...);
809 }
810
811
820 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., ShowEffectType)>>::value>* = nullptr>
821 unsigned int connect(const Func& func, const BoundArgs&... args)
822 {
823 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<ShowEffectType>(1)); });
824 }
825
826
835 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., bool)>>::value>* = nullptr>
836 unsigned int connect(const Func& func, const BoundArgs&... args)
837 {
838 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<bool>(2)); });
839 }
840
841
850 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., ShowEffectType, bool)>>::value>* = nullptr>
851 unsigned int connect(const Func& func, const BoundArgs&... args)
852 {
853 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<ShowEffectType>(1), dereferenceParam<bool>(2)); });
854 }
855
856
866 bool emit(const Widget* widget, ShowEffectType type, bool visible);
867
868
870 };
871
872
879 class TGUI_API SignalAnimationType : public Signal
880 {
881 public:
882
887 Signal{std::move(name), 1}
888 {
889 }
890
891
900 template <typename Func, typename... BoundArgs>
901 unsigned int operator()(const Func& func, const BoundArgs&... args)
902 {
903 return connect(func, args...);
904 }
905
906
915 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&...)>>::value>* = nullptr>
916 unsigned int connect(const Func& func, const BoundArgs&... args)
917 {
918 return Signal::connect(func, args...);
919 }
920
921
930 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., AnimationType)>>::value>* = nullptr>
931 unsigned int connect(const Func& func, const BoundArgs&... args)
932 {
933 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<AnimationType>(1)); });
934 }
935
936
945 bool emit(const Widget* widget, AnimationType type);
946
947
949 };
950
951
959 class TGUI_API SignalItemHierarchy : public Signal
960 {
961 public:
962
967 Signal{std::move(name), 2}
968 {
969 }
970
971
980 template <typename Func, typename... BoundArgs>
981 unsigned int operator()(const Func& func, const BoundArgs&... args)
982 {
983 return connect(func, args...);
984 }
985
986
995 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&...)>>::value>* = nullptr>
996 unsigned int connect(const Func& func, const BoundArgs&... args)
997 {
998 return Signal::connect(func, args...);
999 }
1000
1001
1010 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., const String&)>>::value>* = nullptr>
1011 unsigned int connect(const Func& func, const BoundArgs&... args)
1012 {
1013 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<String>(1)); });
1014 }
1015
1016
1025 template <typename Func, typename... BoundArgs, typename std::enable_if_t<std::is_convertible<Func, std::function<void(const BoundArgs&..., const std::vector<String>&)>>::value>* = nullptr>
1026 unsigned int connect(const Func& func, const BoundArgs&... args)
1027 {
1028 return Signal::connect([=]{ invokeFunc(func, args..., dereferenceParam<std::vector<String>>(2)); });
1029 }
1030
1031
1041 bool emit(const Widget* widget, const String& item, const std::vector<String>& fullItem);
1042
1043
1045 };
1046
1048}
1049
1051
1052#endif // TGUI_SIGNAL_HPP
Child window widget.
Definition: ChildWindow.hpp:44
Object to represent paths on a filesystem.
Definition: Filesystem.hpp:56
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:880
unsigned int connect(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:916
unsigned int operator()(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:901
SignalAnimationType(String &&name)
Constructor.
Definition: Signal.hpp:886
bool emit(const Widget *widget, AnimationType type)
Call all connected signal handlers.
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:466
SignalChildWindow(String &&name)
Constructor.
Definition: Signal.hpp:472
bool emit(ChildWindow *param)
Call all connected signal handlers.
unsigned int connect(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:517
unsigned int operator()(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:487
unsigned int connect(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:502
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:668
unsigned int operator()(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:688
unsigned int connect(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:702
unsigned int connect(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:744
bool emit(const Widget *widget, const std::vector< Filesystem::Path > &paths)
Call all connected signal handlers.
SignalFileDialogPaths(String &&name)
Constructor.
Definition: Signal.hpp:674
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:960
unsigned int connect(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:1026
unsigned int connect(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:996
SignalItemHierarchy(String &&name)
Constructor.
Definition: Signal.hpp:966
bool emit(const Widget *widget, const String &item, const std::vector< String > &fullItem)
Call all connected signal handlers.
unsigned int operator()(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:981
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:555
bool emit(const Widget *widget, int index, const String &item, const String &id)
Call all connected signal handlers.
unsigned int operator()(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:576
SignalItem(String &&name)
Constructor.
Definition: Signal.hpp:561
unsigned int connect(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:591
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:770
unsigned int connect(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:806
unsigned int operator()(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:791
bool emit(const Widget *widget, ShowEffectType type, bool visible)
Call all connected signal handlers.
SignalShowEffect(String &&name)
Constructor.
Definition: Signal.hpp:776
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:371
bool emit(const Widget *widget, T1 param1, T2 param2)
Call all connected signal handlers.
Definition: Signal.hpp:437
unsigned int connect(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:407
SignalTyped2(String &&name)
Constructor.
Definition: Signal.hpp:377
unsigned int operator()(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:392
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:287
SignalTyped(String &&name)
Constructor.
Definition: Signal.hpp:293
unsigned int operator()(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:308
bool emit(const Widget *widget, T param)
Call all connected signal handlers.
Definition: Signal.hpp:352
unsigned int connect(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:323
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:58
bool emit(const Widget *widget)
Call all connected signal handlers.
Signal(const Signal &other)
Copy constructor which will not copy the signal handlers.
static const std::decay_t< Type > & dereferenceParam(std::size_t paramIndex)
Turns the void* parameters back into its original type right before calling the callback function.
Definition: Signal.hpp:239
unsigned int operator()(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:114
bool isEnabled() const
Returns whether this signal calls the connected functions when triggered.
Definition: Signal.hpp:220
void disconnectAll()
Disconnect all signal handler from this signal.
void setEnabled(bool enabled)
Changes whether this signal calls the connected functions when triggered.
Definition: Signal.hpp:206
bool disconnect(unsigned int id)
Disconnect a signal handler from this signal.
Signal & operator=(const Signal &other)
Copy assignment operator which will not copy the signal handlers.
String getName() const
Returns the name given to the signal.
Definition: Signal.hpp:192
unsigned int connect(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:129
virtual ~Signal()=default
Default destructor.
Signal(String &&name, std::size_t extraParameters=0)
Constructor.
Definition: Signal.hpp:73
Signal & operator=(Signal &&other) noexcept=default
Default move assignment operator.
Signal(Signal &&other) noexcept=default
Default move constructor.
static std::shared_ptr< Widget > getWidget()
Extracts the widget stored in the first parameter.
unsigned int connectEx(const Func &func, const BoundArgs &... args)
Connects a signal handler that will be called when this signal is emitted.
Definition: Signal.hpp:154
Wrapper class to store strings.
Definition: String.hpp:79
The parent class for every widget.
Definition: Widget.hpp:70
Namespace that contains all TGUI functions and classes.
Definition: AbsoluteOrRelativeValue.hpp:36
ShowEffectType
Type of effect to show/hide widget.
Definition: Animation.hpp:44
AnimationType
Type of animation.
Definition: Animation.hpp:63