OpenTwin 0.1
OpenTwin
 
Loading...
Searching...
No Matches
UiComponent.h
Go to the documentation of this file.
1/*
2 * UiComponent.h
3 *
4 * Created on: 10/02/2021
5 * Author: Alexander Kuester
6 * Copyright (c) 2021, OpenTwin
7 */
8
9#pragma once
10
11// OpenTwin header
12#include "OTCore/Flags.h"
13#include "OTCore/ServiceBase.h" // Base class
14#include "OTGui/GuiTypes.h"
19
20// C++ header
21#include <list>
22#include <map>
23#include <string>
24
25namespace ot {
26
27 class ApplicationBase;
28
29 namespace components {
30
32 public:
33
40
51
53 const std::string & _name,
54 const std::string & _type,
55 const std::string & _url,
56 serviceID_t _id,
57 ApplicationBase * _application
58 );
59
60 virtual ~UiComponent();
61
62 // #####################################################################################################################
63
64 // Element creation
65
68 void addMenuPage(
69 const std::string & _pageName
70 );
71
75 void addMenuGroup(
76 const std::string & _pageName,
77 const std::string & _groupName
78 );
79
83 void addMenuSubGroup(
84 const std::string & _pageName,
85 const std::string & _groupName,
86 const std::string & _subgroupName
87 );
88
98 void addMenuButton(
99 const std::string & _pageName,
100 const std::string & _groupName,
101 const std::string & _buttonName,
102 const std::string & _text,
103 const LockTypeFlags & _lockTypes,
104 const std::string & _iconName,
105 const std::string & _iconFolder = std::string("Default"),
106 const std::string & _keySequence = std::string("")
107 );
108
110 ot::MenuButtonDescription& _menuButtonDescription,
111 const LockTypeFlags& _lockTypes,
112 const std::string & _iconName,
113 const std::string & _iconFolder = std::string("Default"),
114 const std::string & _keySequence = std::string("")
115 );
116
117
128 void addMenuButton(
129 const std::string & _pageName,
130 const std::string & _groupName,
131 const std::string & _subgroupName,
132 const std::string & _buttonName,
133 const std::string & _text,
134 const LockTypeFlags& _lockTypes,
135 const std::string & _iconName,
136 const std::string & _iconFolder = std::string("Default"),
137 const std::string & _keySequence = std::string("")
138 );
139
146 void addMenuCheckbox(
147 const std::string & _pageName,
148 const std::string & _groupName,
149 const std::string & _checkboxName,
150 const std::string & _checkboxText,
151 bool _isChecked,
152 const LockTypeFlags& _lockTypes
153 );
154
162 void addMenuCheckbox(
163 const std::string & _pageName,
164 const std::string & _groupName,
165 const std::string & _subgroupName,
166 const std::string & _checkboxName,
167 const std::string & _checkboxText,
168 bool _isChecked,
169 const LockTypeFlags& _lockTypes
170 );
171
178 void addMenuLineEdit(
179 const std::string & _pageName,
180 const std::string & _groupName,
181 const std::string & _lineEditName,
182 const std::string & _labelText,
183 const std::string & _initialText,
184 const LockTypeFlags& _lockTypes
185 );
186
194 void addMenuLineEdit(
195 const std::string & _pageName,
196 const std::string & _groupName,
197 const std::string & _subgroupName,
198 const std::string & _lineEditName,
199 const std::string & _labelText,
200 const std::string & _initialText,
201 const LockTypeFlags& _lockTypes
202 );
203
204 void activateMenuPage(
205 const std::string & _pageName
206 );
207
211 void addShortcut(
212 const std::string & _keySequence
213 );
214
218 void createRubberband(
219 const std::string & _note,
220 const std::string & _configurationJson
221 );
222
223 // #####################################################################################################################
224
225 // Control manipulation
226
230 void setControlToolTip(
231 const std::string & _controlName,
232 const std::string & _toolTipText
233 ) const;
234
240 void setControlToolTip(
241 const std::string & _pageName,
242 const std::string & _groupName,
243 const std::string & _controlName,
244 const std::string & _toolTipText
245 ) const;
246
253 void setControlToolTip(
254 const std::string & _gepaName,
255 const std::string & _groupName,
256 const std::string & _subgroupName,
257 const std::string & _controlName,
258 const std::string & _toolTipText
259 ) const;
260
264 void setControlsEnabledState(
265 const std::list<std::string> & _enabledControls,
266 const std::list<std::string> & _disabledControls
267 ) const;
268
273 void setLineEditValues(
274 const std::string & _controlName,
275 const std::string & _text,
276 bool _errorState = false
277 ) const;
278
282 void setCheckboxValues(
283 const std::string & _controlName,
284 bool _checkedState
285 ) const;
286
289 void lockUI(
290 const LockTypeFlags& _lockTypes
291 ) const;
292
295 void unlockUI(
296 const LockTypeFlags& _lockTypes
297 ) const;
298
302 void setProgressInformation(std::string message, bool continuous);
303
306 void setProgress(int percentage);
307
309 void closeProgressInformation(void);
310
313 void switchMenuTab(
314 const std::string & _pageName
315 ) const;
316
318 void registerForModelEvents(void) const;
319
321 void deregisterForModelEvents(void) const;
322
325 void addIconSearchPath(const std::string& _iconPath);
326
328 void notifyUiSetupCompleted(void);
329
330 // #####################################################################################################################
331
332 // Information IO
333
336 void displayMessage(const std::string& _message) const;
337
340 void displayStyledMessage(const StyledTextBuilder& _builder) const;
341
344 void displayErrorPrompt(
345 const std::string & _message
346 ) const;
347
350 void displayWarningPrompt(
351 const std::string & _message
352 ) const;
353
356 void displayInformationPrompt(
357 const std::string & _message
358 ) const;
359
365 void addControlNameToList(
366 std::list<std::string> & _list,
367 const std::string & _pageName,
368 const std::string & _groupName,
369 const std::string & _controlName
370 );
371
378 void addControlNameToList(
379 std::list<std::string> & _list,
380 const std::string & _pageName,
381 const std::string & _groupName,
382 const std::string & _subgroupName,
383 const std::string & _controlName
384 );
385
386 // #####################################################################################################################
387
388 // Element deletion
389
391 void removeUIElements(const std::list<std::string> & _itemList);
392
394 void removeAllUIElements(void);
395
396 // #####################################################################################################################
397
398 // View manipulation
399
400 void enterEntitySelectionMode(
401 UID _visualizationModelUID,
402 entitySelectionType _selectionType,
403 bool _allowMultipleSelection,
404 const std::string & _filter,
405 entitySelectionAction _actionType,
406 const std::string & _message,
407 const std::map<std::string, std::string> & _options,
408 ot::serviceID_t _serviceToReplyTo
409 ) const;
410
411 // #####################################################################################################################
412
413 void freeze3DView(UID _visualizationModelUID, bool _flag);
414 void refreshSelection(UID _visualizationModelUID);
415 void refreshAllViews(UID visualizationModelID);
416 void sendUpdatedControlState(void);
417 void setControlState(const std::string controlName, bool enabled);
418
419 bool sendMessage(bool _queue, JsonDocument& _doc, std::string& _response);
420
421 protected:
422
425 bool controlNameExists(const std::string & _name) const;
427 std::list<std::string> m_uiElements;
428 std::map<std::string, bool> m_uiControlState;
429 std::map<std::string, bool> m_uiControlStateInUI;
430
431 private:
432 friend class ApplicationBase;
433 void sendSettingsData(const PropertyGridCfg& _config);
434
435 UiComponent(const UiComponent &) = delete;
436 UiComponent & operator = (const UiComponent &) = delete;
437
438 };
439
440 }
441}
#define OT_SERVICEFOUNDATION_API_EXPORT
Definition FoundationAPIExport.h:7
Definition ApplicationBase.h:45
JSON document.
Definition JSON.h:276
Definition PropertyGridCfg.h:21
General service information. The ServiceBase class is used to store the general service information.
Definition ServiceBase.h:23
Definition StyledTextBuilder.h:16
Definition UiComponent.h:31
ApplicationBase * m_application
Definition UiComponent.h:426
std::list< std::string > m_uiElements
The application base this component belings to.
Definition UiComponent.h:427
std::map< std::string, bool > m_uiControlState
List of all UI elements that werde created by this component.
Definition UiComponent.h:428
entitySelectionAction
Definition UiComponent.h:41
@ CHAMFER_EDGE
Definition UiComponent.h:48
@ BOOLEAN_INTERSECT
Definition UiComponent.h:46
@ REMOVE_FACE
Definition UiComponent.h:43
@ TRANSFORM_SHAPES
Definition UiComponent.h:47
@ BOOLEAN_SUBTRACT
Definition UiComponent.h:45
@ PORT
Definition UiComponent.h:42
@ BOOLEAN_ADD
Definition UiComponent.h:44
std::map< std::string, bool > m_uiControlStateInUI
Definition UiComponent.h:429
entitySelectionType
Definition UiComponent.h:34
@ FACE
Definition UiComponent.h:35
@ SHAPE
Definition UiComponent.h:37
@ EDGE
Definition UiComponent.h:36
void addMenuButton(ot::MenuButtonDescription &_menuButtonDescription, const LockTypeFlags &_lockTypes, const std::string &_iconName, const std::string &_iconFolder=std::string("Default"), const std::string &_keySequence=std::string(""))
Definition Connector.h:8
unsigned long UID
Unique identifier (32 bit unsigned integer)
Definition CoreTypes.h:27
unsigned short serviceID_t
ID type used to identify a service (16 bit unsigned integer).
Definition CoreTypes.h:14