You.i Engine
YiDevWidget.h
Go to the documentation of this file.
1 #ifndef _YI_DEV_WIDGET_H_
2 #define _YI_DEV_WIDGET_H_
3 
5 #include "debug/YiDevPanel.h"
7 #include "utility/YiRtti.h"
8 #include "utility/YiString.h"
9 #include "utility/YiTimer.h"
10 
11 class CYISceneNode;
12 
38 {
39 public:
43  enum STATE
44  {
45  OFF,
46  ON,
49  };
50 
51  CYIDevWidget(const CYIString &title, const CYIString &subtitle = "");
52  virtual ~CYIDevWidget();
53 
57  bool IsUsingIndicator() const;
58 
64  bool IsUsingSimulatedKeys() const;
65 
71  bool IsCapturingAllEvents() const;
72 
78  bool IsUsingConfigurationItems() const;
79 
83  STATE GetState() const;
84 
88  virtual const CYIString &GetTitle() const;
89 
93  virtual const CYIString &GetSubtitle() const;
94 
98  void SetParentPanel(CYIDevPanel *pPanel, uint32_t uIndexInPanel);
99 
103  uint32_t GetIndexInPanel() const;
104 
108  void UpdateWidgetState();
109 
115  virtual void OnPanelItemClicked() = 0;
116 
120  virtual void RefreshState() {};
121 
125  virtual void OnConfigureButtonClicked();
126 
130  virtual void OnConfigurationItemClicked(int32_t nButtonID);
131 
135  virtual void OnConfigurationSubpanelClosed();
136 
140  virtual void OnDraw() {};
141 
145  virtual bool OnUpdate(bool *pbSkipUpdate = nullptr);
146 
150  virtual bool OnHandleKeyInputs(const CYIKeyEvent &keyEvent);
151 
155  virtual bool OnHandleActionInputs(int32_t nX, int32_t nY, int32_t nWheelDelta, uint8_t uButton, YI_EVENT_TYPE eEventType, uint8_t uPointerID, bool bHover);
156 
160  virtual bool OnPreFilterEvent(const std::shared_ptr<CYIEventDispatcher> &pDispatcher, CYIEvent *pEvent, CYIEventHandler *pDestination);
161 
166 
170  bool SimulateKeyPress(const CYIKeyEvent &keyEvent);
171 
176 
177 protected:
181  void SetUseSimulatedKeys(bool bUseSimulatedKeys);
182 
186  void SetCaptureAllEvents(bool bCaptureAllEvents);
187 
193  void SetUsesConfigurationItems(bool bUsesConfigurationItems);
194 
202  virtual std::vector<std::pair<CYIString, CYIString> > GetConfigurationButtonTitles();
203 
207  CYISceneNode *GetLogicalRoot() const;
208 
210  uint32_t m_uIndexInPanel;
214 
215 private:
216  void OnTimerExpired();
217 
218  CYITimer m_timer;
219  bool m_bUseSimulatedKeys;
220  bool m_bCaptureAllEvents;
221  bool m_bUseConfigurationItems;
222  bool m_bActionDown;
223  CYIKeyEvent m_lastKeyEvent;
224 
225  YI_TYPE_BASES(CYIDevWidget);
226 };
227 
230 #endif
virtual void OnConfigurationItemClicked(int32_t nButtonID)
virtual void OnConfigureButtonClicked()
Class for key events.
Definition: YiKeyEvent.h:15
Allows registering of event filters which can be used to perform processing on an event before and af...
Definition: YiEventHandler.h:25
virtual std::vector< std::pair< CYIString, CYIString > > GetConfigurationButtonTitles()
Base class for events.
Definition: YiEvent.h:489
virtual bool OnHandleKeyInputs(const CYIKeyEvent &keyEvent)
void SetUseSimulatedKeys(bool bUseSimulatedKeys)
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
YI_EVENT_TYPE
The event type of the CYIEvent class instance.
Definition: YiEvent.h:23
void SetParentPanel(CYIDevPanel *pPanel, uint32_t uIndexInPanel)
bool IsUsingConfigurationItems() const
void UpdateWidgetState()
The base class for an object accessible from script source code.
Definition: YiScriptableObject.h:28
virtual bool OnPreFilterEvent(const std::shared_ptr< CYIEventDispatcher > &pDispatcher, CYIEvent *pEvent, CYIEventHandler *pDestination)
bool SimulateKeyPress(const CYIKeyEvent &keyEvent)
void SetUsesConfigurationItems(bool bUsesConfigurationItems)
virtual void RefreshState()
Definition: YiDevWidget.h:120
virtual void OnPanelItemClicked()=0
CYIDevPanel * m_pParentPanel
Definition: YiDevWidget.h:209
void SimulatedKeyPressesEnded()
bool IsUsingIndicator() const
CYIString m_title
Definition: YiDevWidget.h:212
CYIDevWidget(const CYIString &title, const CYIString &subtitle="")
A low-precision timer driven by the update loop.
Definition: YiTimer.h:29
virtual bool OnUpdate(bool *pbSkipUpdate=nullptr)
uint32_t GetIndexInPanel() const
A scene node is the base type for all nodes which are used by the scene manager; it is an integral pa...
Definition: YiSceneNode.h:114
CYIString m_subtitle
Definition: YiDevWidget.h:213
Indicates that this widget does not make use of states.
Definition: YiDevWidget.h:47
Definition: YiSignalHandler.h:174
Indicates that the widget is active/on.
Definition: YiDevWidget.h:46
uint32_t m_uIndexInPanel
Definition: YiDevWidget.h:210
STATE
Definition: YiDevWidget.h:43
The base class for all dev widgets.
Definition: YiDevWidget.h:37
Indicates that the widget is inactive/off.
Definition: YiDevWidget.h:45
void SimulatePanelItemClicked()
virtual ~CYIDevWidget()
STATE GetState() const
virtual bool OnHandleActionInputs(int32_t nX, int32_t nY, int32_t nWheelDelta, uint8_t uButton, YI_EVENT_TYPE eEventType, uint8_t uPointerID, bool bHover)
This file contains the classes and macros used to implement RTTI in You.i Engine. ...
bool IsCapturingAllEvents() const
A class used to manipulate developer utilities.
Definition: YiDevPanel.h:52
void SetCaptureAllEvents(bool bCaptureAllEvents)
virtual const CYIString & GetTitle() const
Indicates that this widget cannot (currently) be activated.
Definition: YiDevWidget.h:48
CYISceneNode * GetLogicalRoot() const
STATE m_eState
Definition: YiDevWidget.h:211
virtual const CYIString & GetSubtitle() const
virtual void OnConfigurationSubpanelClosed()
bool IsUsingSimulatedKeys() const
virtual void OnDraw()
Definition: YiDevWidget.h:140