TDME2  1.9.200
GUIScreenNode.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 #include <string>
5 #include <unordered_map>
6 #include <unordered_set>
7 #include <vector>
8 
9 #include <tdme/tdme.h>
14 #include <tdme/gui/fwd-tdme.h>
23 
24 using std::string;
25 using std::to_string;
26 using std::unique_ptr;
27 using std::unordered_map;
28 using std::unordered_set;
29 using std::vector;
30 
62 using tdme::gui::GUI;
65 
66 /**
67  * GUI screen node that represents a screen that can be rendered via GUI system
68  * @author Andreas Drewke
69  */
71  : public GUIParentNode
72 {
73  friend class tdme::gui::GUI;
74  friend class tdme::gui::GUIParser;
75  friend class GUIElementNode;
76  friend class GUINode;
77  friend class GUINodeConditions;
78  friend class GUIParentNode;
80 
81 private:
84  string fileName;
85  GUI* gui { nullptr };
89  unordered_map<string, GUINode*> nodesById;
90  unordered_map<string, GUINode*> tickNodesById;
91  vector<GUINode*> floatingNodes;
92  vector<GUIActionListener*> actionListener;
93  vector<GUIChangeListener*> changeListener;
94  vector<GUIMouseOverListener*> mouseOverListener;
95  vector<GUIContextMenuRequestListener*> contextMenuRequestListener;
96  vector<GUIFocusListener*> focusListener;
97  vector<GUIMoveListener*> moveListener;
98  vector<GUITooltipRequestListener*> tooltipRequestListener;
99  vector<GUIDragRequestListener*> dragRequestListener;
101  vector<GUINode*> childControllerNodes;
103  unordered_set<string> invalidateLayoutNodeIds;
104  unordered_map<string, unordered_set<string>> elementNodeToNodeMapping;
105 
106  bool enabled;
107  bool popUp;
108 
109  unordered_map<int64_t, string> timedExpressions;
110 
113  const string& node,
114  const string& toNode
115  ):
116  node(node),
117  toNode(toNode)
118  {}
119  string node;
120  string toNode;
121  };
122 
123  vector<ScrollToNodeStruct> scrollToNodesX;
124  vector<ScrollToNodeStruct> scrollToNodesY;
125 
126  unordered_map<string, GUIFont*> fontCache;
127  unordered_map<string, Texture*> imageCache;
128 
129  struct ForwardEvent {
130  enum EventType {
143  };
146  const string& nodeId,
147  int mouseX,
148  int mouseY,
149  int type
150  ):
152  nodeId(nodeId),
153  mouseX(mouseX),
154  mouseY(mouseY),
155  type(type)
156  {}
158  string nodeId;
159  int mouseX { -1 };
160  int mouseY { -1 };
161  int type { -1 };
162  };
163 
164  vector<ForwardEvent> forwardEventList;
165 
167 
168  unique_ptr<GUIMiniScript> script;
169  bool scriptOnActionAvailable { false };
170  bool scriptOnChangeAvailable { false };
173  bool scriptOnFocusAvailable { false };
174  bool scriptOnUnfocusAvailable { false };
175  bool scriptOnMoveAvailable { false };
180  bool scriptOnTickAvailable { false };
181 
182  EngineMiniScript::ScriptVariable miniScriptArguments;
183 
184  Context* context { nullptr };
185 
186 public:
187  /**
188  * @return screen filename or complete file path
189  */
190  inline const string& getFileName() {
191  return fileName;
192  }
193 
194  /**
195  * @return application root path name
196  */
197  inline const string& getApplicationRootPathName() {
199  }
200 
201  /**
202  * @return application sub folder path name
203  */
204  inline const string& getApplicationSubPathName() {
205  return applicationSubPathName;
206  }
207 
208  /**
209  * @return GUI
210  */
211  GUI* getGUI();
212 
213  /**
214  * Set GUI
215  * @param gui gui
216  */
217  void setGUI(GUI* gui);
218 
219  /**
220  * @return screen width
221  */
222  inline int getScreenWidth() {
223  return screenWidth;
224  }
225 
226  /**
227  * @return screen height
228  */
229  inline int getScreenHeight() {
230  return screenHeight;
231  }
232 
233  /**
234  * @return is enabled
235  */
236  inline bool isEnabled() {
237  return enabled;
238  }
239 
240  /**
241  * Set enabled
242  * @param enabled enabled
243  */
244  void setEnabled(bool enabled);
245 
246  /**
247  * @return is pop up
248  */
249  inline bool isPopUp() {
250  return popUp;
251  }
252 
253  /**
254  * Set pop up
255  * @param popUp pop up
256  */
257  void setPopUp(bool popUp);
258 
259  /**
260  * @return floating nodes
261  */
262  const vector<GUINode*>& getFloatingNodes();
263 
264  /**
265  * Register deferred scroll to node X
266  * @param node node
267  * @param toNode to node
268  */
269  inline void scrollToNodeX(const string& node, const string& toNode) {
270  scrollToNodesX.emplace_back(
271  node,
272  toNode
273  );
274  }
275 
276  /**
277  * Register deferred scroll to node Y
278  * @param node node
279  * @param toNode to node
280  */
281  inline void scrollToNodeY(const string& node, const string& toNode) {
282  scrollToNodesY.emplace_back(
283  node,
284  toNode
285  );
286  }
287 
288 protected:
289 
290  // overridden methods
291  bool isContentNode() override;
292  const string getNodeType() override;
293 
294 private:
295 
296  /**
297  * Initialize mini script
298  */
299  void initializeMiniScript();
300 
301  /**
302  * Add node
303  * @param node node
304  * @return success
305  */
306  bool addNode(GUINode* node);
307 
308  /**
309  * Add node
310  * @param node node
311  * @return success
312  */
313  bool removeNode(GUINode* node);
314 
315  /**
316  * Calls registered tick nodes controller tick method
317  */
318  void tick();
319 
320  /**
321  * Forward events
322  */
323  void forwardEvents();
324 
325  /**
326  * Clear events
327  */
328  inline void clearEvents() {
329  forwardEventList.clear();
330  }
331 
332 public:
333  // forbid class copy
335 
336  /**
337  * Constructor
338  * @oaram fileName file name or complete file path
339  * @param applicationRootPath application root path
340  * @param applicationSubPathName application sub path name which is usually "engine" or "project"
341  * @param flow flow
342  * @param overflowX overflow x
343  * @param overflowY overflow y
344  * @param alignments alignments
345  * @param requestedConstraints requested constraints
346  * @param backgroundColor background color
347  * @param backgroundImage background image
348  * @param backgroundImageScale9Grid background image scale 9 grid
349  * @param backgroundImageEffectColorMul background image effect color mul
350  * @param backgroundImageEffectColorAdd background image effect color add
351  * @param border border
352  * @param padding padding
353  * @param sizeConstraints size constraints
354  * @param showOn show on
355  * @param hideOn hide on
356  * @param tooltip tooltip
357  * @param scrollable scrollable
358  * @param popUp pop up
359  * @param scriptFileName EngineMiniScript script file name
360  * @param miniScriptArguments mini script arguments
361  * @param context application logic context
362  * @throws tdme::gui::GUIParserException
363  */
365  const string& fileName,
366  const string& applicationRootPathName,
367  const string& applicationSubPathName,
368  const string& id,
374  const GUIColor& backgroundColor,
375  const string& backgroundImage,
379  const GUINode_Border& border,
380  const GUINode_Padding& padding,
382  const GUINodeConditions& showOn,
383  const GUINodeConditions& hideOn,
384  const string& tooltip,
385  bool scrollable,
386  bool popUp,
387  const string& scriptFileName,
388  const EngineMiniScript::ScriptVariable& miniScriptArguments,
390  );
391 
392  /**
393  * Destructor
394  */
395  ~GUIScreenNode();
396 
397  /**
398  * @return content width
399  */
400  int getContentWidth() override;
401 
402  /**
403  * @return content height
404  */
405  int getContentHeight() override;
406 
407  /**
408  * Layout
409  */
410  void layout() override;
411 
412  /**
413  * Mark a node to be invalidated regarding layout
414  * @param node node
415  * @return first node that requires a layout in tree
416  */
417  inline void invalidateLayout(GUINode* node) {
418  invalidateLayoutNodeIds.insert(node->getId());
419  }
420 
421  /**
422  * Actually do the invalidate layout
423  * @param node node
424  * @return (parent)node thats need a layout
425  */
427 
428  /**
429  * Actually do the nodes marked for layout invalidation
430  */
431  void invalidateLayouts();
432 
433  /**
434  * Force layout node content (e.g. child nodes or content) without determining parent nodes to be layouted
435  * this does also does call layouted nodes post layout method
436  * @param node node
437  */
438  void forceLayout(GUINode* node);
439 
440  /**
441  * Scroll to nodes
442  */
443  void scrollToNodes();
444 
445  /**
446  * Set screen size
447  * @param width width
448  * @param height height
449  */
450  void setScreenSize(int width, int height);
451 
452  /**
453  * Get GUI node by id
454  * @param nodeId nodeId
455  * @return GUI node or null
456  */
457  inline GUINode* getNodeById(const string& nodeId) {
458  auto nodesByIdIt = nodesById.find(nodeId);
459  if (nodesByIdIt == nodesById.end()) {
460  return nullptr;
461  }
462  return nodesByIdIt->second;
463  }
464 
465  /**
466  * Remove GUI node by id
467  * @param nodeId nodeId
468  * @param resetScrollOffsets reset scroll offsets
469  */
470  void removeNodeById(const string& nodeId, bool resetScrollOffsets);
471 
472  /**
473  * Get inner GUI node by id
474  * @param nodeId nodeId
475  * @return GUI node or null
476  */
477  inline GUINode* getInnerNodeById(const string& nodeId) {
478  return getNodeById(nodeId + "_inner");
479  }
480 
481  /**
482  * Allocate node id
483  * @return node id
484  */
485  inline const string allocateNodeId() {
486  return "<" + to_string(nodeCounter++) + ">";
487  }
488 
489  /**
490  * Render screen
491  * @param guiRenderer gui renderer
492  */
493  void render(GUIRenderer* guiRenderer) override;
494 
495  /**
496  * Render floating nodes
497  * @param guiRenderer gui renderer
498  */
499  void renderFloatingNodes(GUIRenderer* guiRenderer);
500 
501  /**
502  * Determine focussed nodes
503  * @param parentNode parent node
504  * @param focusableNodes focusable nodes
505  */
506  void determineFocussedNodes(GUIParentNode* parentNode, vector<GUIElementNode*>& focusableNodes);
507 
508  // overridden methods
509  void determineMouseEventNodes(GUIMouseEvent* event, bool floatingNode, unordered_set<string>& eventNodeIds, unordered_set<string>& eventFloatingNodeIds, int flags = DETERMINEMOUSEEVENTNODES_FLAG_NONE) override;
510 
511  /**
512  * Add action listener
513  * @param listener listener
514  */
515  void addActionListener(GUIActionListener* listener);
516 
517  /**
518  * Remove action listener
519  * @param listener listener
520  */
521  void removeActionListener(GUIActionListener* listener);
522 
523  /**
524  * @return input event handler
525  */
527 
528  /**
529  * Set input event handler
530  * @param inputEventHandler input event handler
531  */
533 
534  /**
535  * Forward action event
536  * @param type type
537  * @param node node
538  */
540 
541  /**
542  * Add change listener
543  * @param listener listener
544  */
545  void addChangeListener(GUIChangeListener* listener);
546 
547  /**
548  * Remove change listener
549  * @param listener listener
550  */
551  void removeChangeListener(GUIChangeListener* listener);
552 
553  /**
554  * Forward change event
555  * @param node node
556  */
557  void forwardChange(GUIElementNode* node);
558 
559  /**
560  * Add mouse over listener
561  * @param listener listener
562  */
564 
565  /**
566  * Remove mouse over listener
567  * @param listener listener
568  */
570 
571  /**
572  * Forward mouse over event
573  * @param node node
574  */
575  void forwardMouseOver(GUIElementNode* node);
576 
577  /**
578  * Add context menu request listener
579  * @param listener listener
580  */
582 
583  /**
584  * Remove context menu request listener
585  * @param listener listener
586  */
588 
589  /**
590  * Forward context menu request event
591  * @param node node
592  * @param mouseX unscaled mouse X position
593  * @param mouseY unscaled mouse Y position
594  */
595  void forwardContextMenuRequest(GUIElementNode* node, int mouseX, int mouseY);
596 
597  /**
598  * Add focus listener
599  * @param listener listener
600  */
601  void addFocusListener(GUIFocusListener* listener);
602 
603  /**
604  * Remove focus listener
605  * @param listener listener
606  */
607  void removeFocusListener(GUIFocusListener* listener);
608 
609  /**
610  * Forward focus event
611  * @param node node
612  */
613  void forwardFocus(GUIElementNode* node);
614 
615  /**
616  * Forward unfocus event
617  * @param node node
618  */
619  void forwardUnfocus(GUIElementNode* node);
620 
621  /**
622  * Add move listener
623  * @param listener listener
624  */
625  void addMoveListener(GUIMoveListener* listener);
626 
627  /**
628  * Remove move listener
629  * @param listener listener
630  */
631  void removeMoveListener(GUIMoveListener* listener);
632 
633  /**
634  * Returns if move is accepted by move listener
635  * @param node node
636  * @return move is accepted
637  */
638  bool isMoveAccepted(GUINode* node);
639 
640  /**
641  * Forward move event
642  * @param node node
643  */
644  void forwardMove(GUINode* node);
645 
646  /**
647  * Forward move release event
648  * @param node node
649  * @param mouseX unscaled mouse x
650  * @param mouseY unscaled mouse y
651  */
652  void forwardMoveRelease(GUINode* node, int mouseX, int mouseY);
653 
654  /**
655  * Add tooltip request listener
656  * @param listener listener
657  */
659 
660  /**
661  * Remove tooltip request listener
662  * @param listener listener
663  */
665 
666  /**
667  * Forward tooltip show request event
668  * @param node node
669  * @param mouseX unscaled mouse X position
670  * @param mouseY unscaled mouse Y position
671  */
672  void forwardTooltipShowRequest(GUINode* node, int mouseX, int mouseY);
673 
674  /**
675  * Forward tooltip close request event
676  */
678 
679  /**
680  * Add drag request listener
681  * @param listener listener
682  */
684 
685  /**
686  * Remove drag request listener
687  * @param listener listener
688  */
690 
691  /**
692  * Forward drag request event
693  * @param node node
694  * @param mouseX unscaled mouse X position
695  * @param mouseY unscaled mouse Y position
696  */
697  void forwardDragRequest(GUIElementNode* node, int mouseX, int mouseY);
698 
699  /**
700  * @return if haveing given node registered as tick node
701  */
702  inline bool hasTickNode(GUINode* node) {
703  return tickNodesById.find(node->getId()) != tickNodesById.end();
704  }
705 
706  /**
707  * Add tick node, registered node controllers will have a tick once per frame
708  * @param node node
709  */
710  inline void addTickNode(GUINode* node) {
711  tickNodesById[node->getId()] = node;
712  }
713 
714  /**
715  * Remove tick node
716  * @param node node
717  */
718  inline void removeTickNode(GUINode* node) {
719  tickNodesById.erase(node->getId());
720  }
721 
722  /**
723  * Get values
724  * @param values values
725  */
726  void getValues(unordered_map<string, MutableString>& values);
727 
728  /**
729  * Set values
730  * @param values values
731  */
732  void setValues(const unordered_map<string, MutableString>& values);
733 
734  /**
735  * @return size constraints
736  */
738  return sizeConstraints;
739  }
740 
741  /**
742  * Create size constraints
743  * @param minWidth min width
744  * @param minHeight min height
745  * @param maxWidth max width
746  * @param maxHeight max height
747  */
748  static GUIScreenNode_SizeConstraints createSizeConstraints(const string& minWidth, const string& minHeight, const string& maxWidth, const string& maxHeight);
749 
750  /**
751  * Add a timed expression
752  * @param time time
753  * @param expression expression
754  */
755  inline void addTimedExpression(int64_t time, const string& expression) {
756  timedExpressions[time]+= timedExpressions[time].empty() == false?";" + expression:expression;
757  }
758 
759  /**
760  * Add node to element node dependency
761  * @param elementNodeId element node id
762  * @param nodeId node id that depends on element node condition changes
763  */
764  inline void addNodeElementNodeDependency(const string& elementNodeId, const string& nodeId) {
765  elementNodeToNodeMapping[elementNodeId].insert(nodeId);
766  }
767 
768  /**
769  * Get font
770  * @param fileName file name
771  * @param size size
772  * @throws tdme::os::filesystem::FileSystemException
773  * @return font
774  */
775  GUIFont* getFont(const string& fileName, int size);
776 
777  /**
778  * Get image
779  * @param fileName file name
780  * @throws tdme::os::filesystem::FileSystemException
781  * @return texture
782  */
783  Texture* getImage(const string& fileName);
784 
785  /**
786  * @return foccussed border color
787  */
789  return foccussedBorderColor;
790  }
791 
792  /**
793  * @return mini script script attached to this screen
794  */
796  return script.get();
797  }
798 
799  /**
800  * @return application logic context
801  */
802  inline Context* getContext() {
803  return context;
804  }
805 
806  /**
807  * Get project path and filename of given file name
808  * @param fileName project fileName that can be relative to project path or absolute
809  * @param projectFilePathName computed project file path name
810  * @param projectFileFileName computed project file file name
811  */
812  void getProjectFilePathNameAndFileName(const string &fileName, string& projectFilePathName, string& projectFileFileName);
813 
814 };
Texture entity.
Definition: Texture.h:24
GUI parser.
Definition: GUIParser.h:40
GUI module class.
Definition: GUI.h:64
GUI element node conditions.
GUI node base class.
Definition: GUINode.h:64
GUINodeConditions hideOn
Definition: GUINode.h:162
GUIColor backgroundImageEffectColorMul
Definition: GUINode.h:157
GUINode_Border border
Definition: GUINode.h:160
GUINode_Scale9Grid backgroundImageScale9Grid
Definition: GUINode.h:156
GUIColor backgroundImageEffectColorAdd
Definition: GUINode.h:158
GUIParentNode * parentNode
Definition: GUINode.h:148
GUINode_Padding padding
Definition: GUINode.h:159
GUINode_RequestedConstraints requestedConstraints
Definition: GUINode.h:151
static constexpr int DETERMINEMOUSEEVENTNODES_FLAG_NONE
Definition: GUINode.h:319
GUINode_Alignments alignments
Definition: GUINode.h:150
const string & getId()
Definition: GUINode.h:339
GUINodeConditions showOn
Definition: GUINode.h:161
GUINode_Flow * flow
Definition: GUINode.h:86
GUI parent node base class thats supporting child nodes.
Definition: GUIParentNode.h:42
GUIParentNode_Overflow * overflowX
Definition: GUIParentNode.h:66
GUIParentNode_Overflow * overflowY
Definition: GUIParentNode.h:67
GUI screen node that represents a screen that can be rendered via GUI system.
Definition: GUIScreenNode.h:72
GUIInputEventHandler * inputEventHandler
void setInputEventHandler(GUIInputEventHandler *inputEventHandler)
Set input event handler.
void getProjectFilePathNameAndFileName(const string &fileName, string &projectFilePathName, string &projectFileFileName)
Get project path and filename of given file name.
void invalidateLayout(GUINode *node)
Mark a node to be invalidated regarding layout.
const string getNodeType() override
void clearEvents()
Clear events.
void determineFocussedNodes(GUIParentNode *parentNode, vector< GUIElementNode * > &focusableNodes)
Determine focussed nodes.
bool removeNode(GUINode *node)
Add node.
vector< ForwardEvent > forwardEventList
void scrollToNodeX(const string &node, const string &toNode)
Register deferred scroll to node X.
void forwardEvents()
Forward events.
void removeDragRequestListener(GUIDragRequestListener *listener)
Remove drag request listener.
void scrollToNodeY(const string &node, const string &toNode)
Register deferred scroll to node Y.
void setEnabled(bool enabled)
Set enabled.
GUIInputEventHandler * getInputEventHandler()
unordered_map< string, GUINode * > tickNodesById
Definition: GUIScreenNode.h:90
void forwardChange(GUIElementNode *node)
Forward change event.
bool hasTickNode(GUINode *node)
void addContextMenuRequestListener(GUIContextMenuRequestListener *listener)
Add context menu request listener.
void addMoveListener(GUIMoveListener *listener)
Add move listener.
vector< GUIMouseOverListener * > mouseOverListener
Definition: GUIScreenNode.h:94
void forwardContextMenuRequest(GUIElementNode *node, int mouseX, int mouseY)
Forward context menu request event.
void addTimedExpression(int64_t time, const string &expression)
Add a timed expression.
vector< GUINode * > childControllerNodes
void forwardTooltipShowRequest(GUINode *node, int mouseX, int mouseY)
Forward tooltip show request event.
void addDragRequestListener(GUIDragRequestListener *listener)
Add drag request listener.
void scrollToNodes()
Scroll to nodes.
void addChangeListener(GUIChangeListener *listener)
Add change listener.
void removeContextMenuRequestListener(GUIContextMenuRequestListener *listener)
Remove context menu request listener.
void setPopUp(bool popUp)
Set pop up.
void addTooltipRequestListener(GUITooltipRequestListener *listener)
Add tooltip request listener.
vector< GUIChangeListener * > changeListener
Definition: GUIScreenNode.h:93
void setValues(const unordered_map< string, MutableString > &values)
Set values.
GUINode * forceInvalidateLayout(GUINode *node)
Actually do the invalidate layout.
void removeChangeListener(GUIChangeListener *listener)
Remove change listener.
void removeTooltipRequestListener(GUITooltipRequestListener *listener)
Remove tooltip request listener.
void removeNodeById(const string &nodeId, bool resetScrollOffsets)
Remove GUI node by id.
void layout() override
Layout.
void removeActionListener(GUIActionListener *listener)
Remove action listener.
void removeFocusListener(GUIFocusListener *listener)
Remove focus listener.
void removeMouseOverListener(GUIMouseOverListener *listener)
Remove mouse over listener.
void removeMoveListener(GUIMoveListener *listener)
Remove move listener.
void forwardAction(GUIActionListenerType type, GUIElementNode *node)
Forward action event.
vector< GUIFocusListener * > focusListener
Definition: GUIScreenNode.h:96
bool isMoveAccepted(GUINode *node)
Returns if move is accepted by move listener.
static GUIScreenNode_SizeConstraints createSizeConstraints(const string &minWidth, const string &minHeight, const string &maxWidth, const string &maxHeight)
Create size constraints.
void tick()
Calls registered tick nodes controller tick method.
void addMouseOverListener(GUIMouseOverListener *listener)
Add mouse over listener.
void renderFloatingNodes(GUIRenderer *guiRenderer)
Render floating nodes.
void removeTickNode(GUINode *node)
Remove tick node.
void determineMouseEventNodes(GUIMouseEvent *event, bool floatingNode, unordered_set< string > &eventNodeIds, unordered_set< string > &eventFloatingNodeIds, int flags=DETERMINEMOUSEEVENTNODES_FLAG_NONE) override
Determine mouse event nodes.
const string & getApplicationRootPathName()
unique_ptr< GUIMiniScript > script
unordered_map< string, Texture * > imageCache
GUIScreenNode_SizeConstraints sizeConstraints
vector< ScrollToNodeStruct > scrollToNodesY
void setScreenSize(int width, int height)
Set screen size.
GUIFont * getFont(const string &fileName, int size)
Get font.
void getValues(unordered_map< string, MutableString > &values)
Get values.
const GUIColor & getFoccussedBorderColor()
vector< GUIActionListener * > actionListener
Definition: GUIScreenNode.h:92
const string & getApplicationSubPathName()
void render(GUIRenderer *guiRenderer) override
Render screen.
void addActionListener(GUIActionListener *listener)
Add action listener.
void initializeMiniScript()
Initialize mini script.
GUIScreenNode_SizeConstraints & getSizeConstraints()
const string allocateNodeId()
Allocate node id.
void forwardMove(GUINode *node)
Forward move event.
unordered_map< string, GUINode * > nodesById
Definition: GUIScreenNode.h:89
vector< GUIDragRequestListener * > dragRequestListener
Definition: GUIScreenNode.h:99
void forwardMouseOver(GUIElementNode *node)
Forward mouse over event.
void forwardUnfocus(GUIElementNode *node)
Forward unfocus event.
vector< GUINode * > floatingNodes
Definition: GUIScreenNode.h:91
bool addNode(GUINode *node)
Add node.
void invalidateLayouts()
Actually do the nodes marked for layout invalidation.
unordered_map< int64_t, string > timedExpressions
unordered_map< string, unordered_set< string > > elementNodeToNodeMapping
void setGUI(GUI *gui)
Set GUI.
void forwardTooltipCloseRequest()
Forward tooltip close request event.
vector< GUIMoveListener * > moveListener
Definition: GUIScreenNode.h:97
void forwardMoveRelease(GUINode *node, int mouseX, int mouseY)
Forward move release event.
unordered_map< string, GUIFont * > fontCache
void forwardFocus(GUIElementNode *node)
Forward focus event.
EngineMiniScript::ScriptVariable miniScriptArguments
vector< ScrollToNodeStruct > scrollToNodesX
vector< GUITooltipRequestListener * > tooltipRequestListener
Definition: GUIScreenNode.h:98
void addFocusListener(GUIFocusListener *listener)
Add focus listener.
void addTickNode(GUINode *node)
Add tick node, registered node controllers will have a tick once per frame.
unordered_set< string > invalidateLayoutNodeIds
GUINode * getInnerNodeById(const string &nodeId)
Get inner GUI node by id.
Texture * getImage(const string &fileName)
Get image.
void forceLayout(GUINode *node)
Force layout node content (e.g.
void forwardDragRequest(GUIElementNode *node, int mouseX, int mouseY)
Forward drag request event.
vector< GUIContextMenuRequestListener * > contextMenuRequestListener
Definition: GUIScreenNode.h:95
GUINode * getNodeById(const string &nodeId)
Get GUI node by id.
void addNodeElementNodeDependency(const string &elementNodeId, const string &nodeId)
Add node to element node dependency.
const vector< GUINode * > & getFloatingNodes()
GUI font class.
Definition: GUIFont.h:41
Mutable utf8 aware string class.
Definition: MutableString.h:23
GUI action listener interface.
GUI change listener interface.
GUI focus listener interface.
GUI input event handler interface.
GUI move listener interface.
GUI node border entity.
GUI node padding entity.
GUI node scale 9 grid entity.
ForwardEvent(EventType eventType, const string &nodeId, int mouseX, int mouseY, int type)
ScrollToNodeStruct(const string &node, const string &toNode)
#define FORBID_CLASS_COPY(CLASS)
Definition: tdme.h:6