Gazebo Gui

API Reference

8.3.0
MainWindow.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2017 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 #ifndef GZ_GUI_MAINWINDOW_HH_
18 #define GZ_GUI_MAINWINDOW_HH_
19 
20 #include <map>
21 #include <memory>
22 #include <set>
23 #include <string>
24 #include <vector>
25 
26 #include <gz/common/Console.hh>
27 
28 #include "gz/gui/qt.h"
29 #include "gz/gui/Export.hh"
30 
31 #ifdef _WIN32
32 // Disable warning C4251 which is triggered by
33 // std::unique_ptr
34 #pragma warning(push)
35 #pragma warning(disable: 4251)
36 #endif
37 
38 namespace gz::gui
39 {
40  Q_NAMESPACE
41  class MainWindowPrivate;
42  struct WindowConfig;
43 
45  enum class ExitAction
46  {
48  CLOSE_GUI,
51  };
53  Q_ENUM_NS(ExitAction)
55 
59  class GZ_GUI_VISIBLE MainWindow : public QObject
60  {
61  Q_OBJECT
62 
64  Q_PROPERTY(
65  int pluginCount
66  READ PluginCount
67  WRITE SetPluginCount
68  NOTIFY PluginCountChanged
69  )
70 
71 
72  Q_PROPERTY(
73  QString materialTheme
74  READ MaterialTheme
75  WRITE SetMaterialTheme
76  NOTIFY MaterialThemeChanged
77  )
78 
79 
80  Q_PROPERTY(
81  QString materialPrimary
82  READ MaterialPrimary
83  WRITE SetMaterialPrimary
84  NOTIFY MaterialPrimaryChanged
85  )
86 
87 
88  Q_PROPERTY(
89  QString materialAccent
90  READ MaterialAccent
91  WRITE SetMaterialAccent
92  NOTIFY MaterialAccentChanged
93  )
94 
95 
97  Q_PROPERTY(
98  QString toolBarColorLight
99  READ ToolBarColorLight
100  WRITE SetToolBarColorLight
101  NOTIFY ToolBarColorLightChanged
102  )
103 
104 
106  Q_PROPERTY(
107  QString toolBarTextColorLight
108  READ ToolBarTextColorLight
109  WRITE SetToolBarTextColorLight
110  NOTIFY ToolBarTextColorLightChanged
111  )
112 
113 
115  Q_PROPERTY(
116  QString toolBarColorDark
117  READ ToolBarColorDark
118  WRITE SetToolBarColorDark
119  NOTIFY ToolBarColorDarkChanged
120  )
121 
122 
124  Q_PROPERTY(
125  QString toolBarTextColorDark
126  READ ToolBarTextColorDark
127  WRITE SetToolBarTextColorDark
128  NOTIFY ToolBarTextColorDarkChanged
129  )
130 
131 
133  Q_PROPERTY(
134  QString pluginToolBarColorLight
135  READ PluginToolBarColorLight
136  WRITE SetPluginToolBarColorLight
137  NOTIFY PluginToolBarColorLightChanged
138  )
139 
140 
142  Q_PROPERTY(
143  QString pluginToolBarTextColorLight
144  READ PluginToolBarTextColorLight
145  WRITE SetPluginToolBarTextColorLight
146  NOTIFY PluginToolBarTextColorLightChanged
147  )
148 
149 
151  Q_PROPERTY(
152  QString pluginToolBarColorDark
153  READ PluginToolBarColorDark
154  WRITE SetPluginToolBarColorDark
155  NOTIFY PluginToolBarColorDarkChanged
156  )
157 
158 
160  Q_PROPERTY(
161  QString pluginToolBarTextColorDark
162  READ PluginToolBarTextColorDark
163  WRITE SetPluginToolBarTextColorDark
164  NOTIFY PluginToolBarTextColorDarkChanged
165  )
166 
167 
168  Q_PROPERTY(
169  bool showDrawer
170  READ ShowDrawer
171  WRITE SetShowDrawer
172  NOTIFY ShowDrawerChanged
173  )
174 
175 
176  Q_PROPERTY(
177  bool showDefaultDrawerOpts
178  READ ShowDefaultDrawerOpts
179  WRITE SetShowDefaultDrawerOpts
180  NOTIFY ShowDefaultDrawerOptsChanged
181  )
182 
183 
184  Q_PROPERTY(
185  bool showPluginMenu
186  READ ShowPluginMenu
187  WRITE SetShowPluginMenu
188  NOTIFY ShowPluginMenuChanged
189  )
190 
191 
192  Q_PROPERTY(
193  ExitAction defaultExitAction
194  READ DefaultExitAction
195  WRITE SetDefaultExitAction
196  NOTIFY DefaultExitActionChanged
197  )
198 
199 
200  Q_PROPERTY(
201  bool showDialogOnExit
202  READ ShowDialogOnExit
203  WRITE SetShowDialogOnExit
204  NOTIFY ShowDialogOnExitChanged
205  )
206 
207 
208  Q_PROPERTY(
209  QString dialogOnExitText
210  READ DialogOnExitText
211  WRITE SetDialogOnExitText
212  NOTIFY DialogOnExitTextChanged
213  )
214 
215 
216  Q_PROPERTY(
217  bool exitDialogShowShutdown
218  READ ExitDialogShowShutdown
219  WRITE SetExitDialogShowShutdown
220  NOTIFY ExitDialogShowShutdownChanged
221  )
222 
223 
224  Q_PROPERTY(
225  bool exitDialogShowCloseGui
226  READ ExitDialogShowCloseGui
227  WRITE SetExitDialogShowCloseGui
228  NOTIFY ExitDialogShowCloseGuiChanged
229  )
230 
231 
232  Q_PROPERTY(
233  QString exitDialogShutdownText
234  READ ExitDialogShutdownText
235  WRITE SetExitDialogShutdownText
236  NOTIFY ExitDialogShutdownTextChanged
237  )
238 
239 
240  Q_PROPERTY(
241  QString exitDialogCloseGuiText
242  READ ExitDialogCloseGuiText
243  WRITE SetExitDialogCloseGuiText
244  NOTIFY ExitDialogCloseGuiTextChanged
245  )
246 
247 
248  public: MainWindow();
249 
251  public: virtual ~MainWindow();
252 
255  public: QQuickWindow *QuickWindow() const;
256 
261  public: void SaveConfig(const std::string &_path);
262 
266  public: bool ApplyConfig(const WindowConfig &_config);
267 
270  public: WindowConfig CurrentWindowConfig() const;
271 
274  public: void SetRenderEngine(const std::string &_renderEngine);
275 
278  public slots: void OnAddPlugin(QString _plugin);
279 
282  public: Q_INVOKABLE QStringList PluginListModel() const;
283 
287  public: Q_INVOKABLE int PluginCount() const;
288 
292  public: Q_INVOKABLE void SetPluginCount(const int _pluginCount);
293 
296  public: Q_INVOKABLE QString MaterialTheme() const;
297 
300  public: Q_INVOKABLE void SetMaterialTheme(
301  const QString &_materialTheme);
302 
305  public: Q_INVOKABLE QString MaterialPrimary() const;
306 
309  public: Q_INVOKABLE void SetMaterialPrimary(
310  const QString &_materialPrimary);
311 
314  public: Q_INVOKABLE QString MaterialAccent() const;
315 
318  public: Q_INVOKABLE void SetMaterialAccent(
319  const QString &_materialAccent);
320 
323  public: Q_INVOKABLE QString ToolBarColorLight() const;
324 
327  public: Q_INVOKABLE void SetToolBarColorLight(
328  const QString &_toolBarColorLight);
329 
332  public: Q_INVOKABLE QString ToolBarTextColorLight() const;
333 
336  public: Q_INVOKABLE void SetToolBarTextColorLight(
337  const QString &_toolBarTextColorLight);
338 
341  public: Q_INVOKABLE QString ToolBarColorDark() const;
342 
345  public: Q_INVOKABLE void SetToolBarColorDark(
346  const QString &_toolBarColorDark);
347 
350  public: Q_INVOKABLE QString ToolBarTextColorDark() const;
351 
354  public: Q_INVOKABLE void SetToolBarTextColorDark(
355  const QString &_toolBarTextColorDark);
356 
359  public: Q_INVOKABLE QString PluginToolBarColorLight() const;
360 
363  public: Q_INVOKABLE void SetPluginToolBarColorLight(
364  const QString &_pluginPluginToolBarColorLight);
365 
368  public: Q_INVOKABLE QString PluginToolBarTextColorLight() const;
369 
372  public: Q_INVOKABLE void SetPluginToolBarTextColorLight(
373  const QString &_pluginPluginToolBarTextColorLight);
374 
377  public: Q_INVOKABLE QString PluginToolBarColorDark() const;
378 
381  public: Q_INVOKABLE void SetPluginToolBarColorDark(
382  const QString &_pluginPluginToolBarColorDark);
383 
386  public: Q_INVOKABLE QString PluginToolBarTextColorDark() const;
387 
390  public: Q_INVOKABLE void SetPluginToolBarTextColorDark(
391  const QString &_pluginPluginToolBarTextColorDark);
392 
395  public: Q_INVOKABLE bool ShowDrawer() const;
396 
399  public: Q_INVOKABLE void SetShowDrawer(const bool _showDrawer);
400 
403  public: Q_INVOKABLE bool ShowDefaultDrawerOpts() const;
404 
407  public: Q_INVOKABLE void SetShowDefaultDrawerOpts(
408  const bool _showDefaultDrawerOpts);
409 
412  public: Q_INVOKABLE bool ShowPluginMenu() const;
413 
416  public: Q_INVOKABLE void SetShowPluginMenu(const bool _showPluginMenu);
417 
420  public: Q_INVOKABLE ExitAction DefaultExitAction() const;
421 
424  public: Q_INVOKABLE void SetDefaultExitAction(
425  enum ExitAction _defaultExitAction);
426 
429  public: Q_INVOKABLE bool ShowDialogOnExit() const;
430 
433  public: Q_INVOKABLE void SetShowDialogOnExit(bool _showDialogOnExit);
434 
437  public: Q_INVOKABLE QString DialogOnExitText() const;
438 
441  public: Q_INVOKABLE void SetDialogOnExitText(
442  const QString &_dialogOnExitText);
443 
446  public: Q_INVOKABLE bool ExitDialogShowShutdown() const;
447 
450  public: Q_INVOKABLE void SetExitDialogShowShutdown(
451  bool _exitDialogShowShutdown);
452 
455  public: Q_INVOKABLE bool ExitDialogShowCloseGui() const;
456 
459  public: Q_INVOKABLE void SetExitDialogShowCloseGui(
460  bool _exitDialogShowCloseGui);
461 
464  public: Q_INVOKABLE QString ExitDialogShutdownText() const;
465 
468  public: Q_INVOKABLE void SetExitDialogShutdownText(
469  const QString &_exitDialogShutdownText);
470 
473  public: Q_INVOKABLE QString ExitDialogCloseGuiText() const;
474 
477  public: Q_INVOKABLE void SetExitDialogCloseGuiText(
478  const QString &_exitDialogCloseGuiText);
479 
482  public: Q_INVOKABLE std::string ServerControlService() const;
483 
486  public: Q_INVOKABLE void SetServerControlService(
487  const std::string &_service);
488 
490  public slots: void OnLoadConfig(const QString &_path);
491 
493  public slots: void OnSaveConfig();
494 
496  public slots: void OnSaveConfigAs(const QString &_path);
497 
499  public slots: void OnStopServer();
500 
502  signals: void PluginCountChanged();
503 
505  signals: void MaterialThemeChanged();
506 
508  signals: void MaterialPrimaryChanged();
509 
511  signals: void MaterialAccentChanged();
512 
514  signals: void ToolBarColorLightChanged();
515 
517  signals: void ToolBarTextColorLightChanged();
518 
520  signals: void ToolBarColorDarkChanged();
521 
523  signals: void ToolBarTextColorDarkChanged();
524 
526  signals: void PluginToolBarColorLightChanged();
527 
529  signals: void PluginToolBarTextColorLightChanged();
530 
532  signals: void PluginToolBarColorDarkChanged();
533 
535  signals: void PluginToolBarTextColorDarkChanged();
536 
538  signals: void ShowDrawerChanged();
539 
541  signals: void ShowDefaultDrawerOptsChanged();
542 
544  signals: void ShowPluginMenuChanged();
545 
547  signals: void DefaultExitActionChanged();
548 
550  signals: void ShowDialogOnExitChanged();
551 
553  signals: void DialogOnExitTextChanged();
554 
556  signals: void ExitDialogShowShutdownChanged();
557 
559  signals: void ExitDialogShowCloseGuiChanged();
560 
562  signals: void ExitDialogShutdownTextChanged();
563 
565  signals: void ExitDialogCloseGuiTextChanged();
566 
568  signals: void configChanged();
569 
573  signals: void notify(const QString &_message);
574 
582  signals: void notifyWithDuration(const QString &_message, int _duration);
583 
586  private: std::unique_ptr<MainWindowPrivate> dataPtr;
587  };
588 
590  struct GZ_GUI_VISIBLE WindowConfig
591  {
597  bool MergeFromXML(const std::string &_xml);
598 
602 
605  bool IsIgnoring(const std::string &_prop) const;
606 
608  int posX{-1};
609 
611  int posY{-1};
612 
614  int width{-1};
615 
617  int height{-1};
618 
621 
623  std::string materialTheme{""};
624 
626  std::string materialPrimary{""};
627 
629  std::string materialAccent{""};
630 
632  std::string toolBarColorLight{""};
633 
635  std::string toolBarTextColorLight{""};
636 
638  std::string toolBarColorDark{""};
639 
641  std::string toolBarTextColorDark{""};
642 
644  std::string pluginToolBarColorLight{""};
645 
647  std::string pluginToolBarTextColorLight{""};
648 
650  std::string pluginToolBarColorDark{""};
651 
653  std::string pluginToolBarTextColorDark{""};
654 
656  bool showDrawer{true};
657 
659  bool showDefaultDrawerOpts{true};
660 
662  bool showPluginMenu{true};
663 
666  bool pluginsFromPaths{true};
667 
670 
673 
676  };
677 } // namespace gz::gui
678 
679 #ifdef _MSC_VER
680 #pragma warning(pop)
681 #endif
682 
683 #endif // GZ_GUI_MAINWINDOW_HH_