TDME2  1.9.200
BasePropertiesSubController.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <array>
4 #include <map>
5 #include <memory>
6 #include <string>
7 #include <vector>
8 
9 #include <tdme/tdme.h>
19 
20 using std::array;
21 using std::map;
22 using std::string;
23 using std::unique_ptr;
24 using std::vector;
25 
37 
38 /**
39  * Prototype base sub screen controller
40  * @author Andreas Drewke
41  */
43 {
44 private:
45  EditorView* editorView { nullptr };
46  unique_ptr<BasePropertiesSubView> view;
47  PopUps* popUps { nullptr };
48  GUIScreenNode* screenNode { nullptr };
49  string rootNodeId;
50 
51  array<string, 1> applyPropertyNodes = {
52  "property_value"
53  };
54 
55  array<string, 2> applyBaseNodes = {
56  "base_name",
57  "base_description"
58  };
59 
61 
62 public:
63  // forbid class copy
65 
66  /**
67  * Public constructor
68  * @param editorView editor view
69  * @param rootNode root node
70  */
71  BasePropertiesSubController(EditorView* editorView, const string& rootNode);
72 
73  /**
74  * Destructor
75  */
77 
78  /**
79  * Init
80  * @param screenNode screen node
81  */
83 
84  /**
85  * Create base properties XML for outliner
86  * @param baseProperties base properties
87  * @param xml xml
88  */
89  void createBasePropertiesXML(BaseProperties* baseProperties, string& xml);
90 
91  /**
92  * Set property base details
93  * @param baseProperties base properties
94  * @param prototype prototype or nullptr
95  */
96  void setBasePropertiesDetails(BaseProperties* baseProperties, Prototype* prototype = nullptr);
97 
98  /**
99  * Apply property base details
100  * @param baseProperties base properties
101  */
102  void applyPropertyDetails(BaseProperties* baseProperties);
103 
104  /**
105  * Set property details
106  * @param baseProperties base properties
107  * @param propertyName property name
108  */
109  void setPropertyDetails(BaseProperties* baseProperties, const string& propertyName);
110 
111  /**
112  * Update details panel
113  * @param baseProperties base properties
114  * @param outlinerNode outliner node
115  * @param prototype prototype or nullptr
116  */
117  void updateDetails(BaseProperties* baseProperties, const string& outlinerNode, Prototype* prototype = nullptr);
118 
119  /**
120  * Apply property details
121  * @param baseProperties base properties
122  * @param propertyName property name
123  */
124  void applyPropertyDetails(BaseProperties* baseProperties, const string& propertyName);
125 
126  /**
127  * Create property
128  * @param baseProperties base properties
129  */
130  void createProperty(BaseProperties* baseProperties);
131 
132  /**
133  * Start rename property
134  * @param baseProperties base properties
135  * @param propertyName property name
136  */
137  void startRenameProperty(BaseProperties* baseProperties, const string& propertyName);
138 
139  /**
140  * Rename property
141  * @param baseProperties base properties
142  */
143  void renameProperty(BaseProperties* baseProperties);
144 
145  /**
146  * On value changed
147  * @param node node
148  * @param baseProperties base properties
149  * @param prototype prototype or nullptr
150  * @return if this event has been handled
151  */
152  bool onChange(GUIElementNode* node, BaseProperties* baseProperties, Prototype* prototype = nullptr);
153 
154  /**
155  * On action performed
156  * @param type type
157  * @param node node
158  * @param baseProperties base properties
159  * @return if this event has been handled
160  */
161  bool onAction(GUIActionListenerType type, GUIElementNode* node, BaseProperties* baseProperties);
162 
163  /**
164  * On focus
165  * @param node node
166  * @param baseProperties base properties
167  * @return if this event has been handled
168  */
169  bool onFocus(GUIElementNode* node, BaseProperties* baseProperties);
170 
171  /**
172  * On unfocus
173  * @param node node
174  * @param baseProperties base properties
175  * @return if this event has been handled
176  */
177  bool onUnfocus(GUIElementNode* node, BaseProperties* baseProperties);
178 
179  /**
180  * On context menu requested
181  * @param node node
182  * @param mouseX unscaled mouse X position
183  * @param mouseY unscaled mouse Y position
184  * @param baseProperties base properties
185  */
186  void onContextMenuRequest(GUIElementNode* node, int mouseX, int mouseY, BaseProperties* baseProperties);
187 
188  /**
189  * Apply property value
190  * @param baseProperties base properties
191  */
192  void applyPropertyValue(BaseProperties* baseProperties);
193 
194  /**
195  * Show the information pop up / modal
196  * @param caption caption
197  * @param message message
198  */
199  void showInfoPopUp(const string& caption, const string& message);
200 
201 };
Base property model class.
Definition: BaseProperty.h:15
Prototype definition.
Definition: Prototype.h:55
GUI screen node that represents a screen that can be rendered via GUI system.
Definition: GUIScreenNode.h:72
Pop ups controller accessor class.
Definition: PopUps.h:29
bool onChange(GUIElementNode *node, BaseProperties *baseProperties, Prototype *prototype=nullptr)
On value changed.
void setBasePropertiesDetails(BaseProperties *baseProperties, Prototype *prototype=nullptr)
Set property base details.
void applyPropertyDetails(BaseProperties *baseProperties)
Apply property base details.
bool onUnfocus(GUIElementNode *node, BaseProperties *baseProperties)
On unfocus.
void onContextMenuRequest(GUIElementNode *node, int mouseX, int mouseY, BaseProperties *baseProperties)
On context menu requested.
bool onAction(GUIActionListenerType type, GUIElementNode *node, BaseProperties *baseProperties)
On action performed.
void setPropertyDetails(BaseProperties *baseProperties, const string &propertyName)
Set property details.
bool onFocus(GUIElementNode *node, BaseProperties *baseProperties)
On focus.
void updateDetails(BaseProperties *baseProperties, const string &outlinerNode, Prototype *prototype=nullptr)
Update details panel.
void createBasePropertiesXML(BaseProperties *baseProperties, string &xml)
Create base properties XML for outliner.
void showInfoPopUp(const string &caption, const string &message)
Show the information pop up / modal.
BasePropertiesSubController(EditorView *editorView, const string &rootNode)
Public constructor.
void startRenameProperty(BaseProperties *baseProperties, const string &propertyName)
Start rename property.
Mutable utf8 aware string class.
Definition: MutableString.h:23
Action Interface.
Definition: Action.h:11
#define FORBID_CLASS_COPY(CLASS)
Definition: tdme.h:6