30 #include <QMainWindow>
32 #include <QDockWidget>
34 #include <QPluginLoader>
37 #include <Inventor/nodes/SoNode.h>
38 #include <Inventor/nodes/SoSeparator.h>
45 #include <QSplashScreen>
54 class QListWidgetItem;
60 class ArmarXMainWindow;
66 class GuiUseCaseSelector;
67 class AddArmarXWidgetAction;
69 class ArmarXDockWidget;
118 std::shared_ptr<std::recursive_mutex>
getMutex3D();
127 void loadGuiConfig(QString configFilepath =
"",
bool showAsOpenGuiConfig =
true);
139 void closeAllWidgets();
140 void closeAllWidgetsWithDialog();
141 void saveGuiConfig();
142 void saveGuiConfigAs();
143 void updateStatusOfOpenWidgets();
144 void enterFullscreenMode();
145 void leaveFullscreenMode();
146 void toggleWidgetLock();
156 ArmarXWidgetControllerPtr createArmarXWidget(QString widgetName, QString customInstanceName, QSettings* settings = NULL);
159 void removeArmarXWidget(QObject* widget);
160 void removeViewerWidget(QObject* widget);
162 void on_actionClear_tip_blacklist_triggered();
164 void on_actionAbout_triggered();
166 void on_actionLoadLastConfig_toggled(
bool toggled);
168 void on_actionArmarX_Documentation_triggered();
170 void on_actionOpen_Use_Case_triggered();
172 void on_actionClear_plugin_cache_triggered();
174 void updateOpenWidgetButtonStatus(QString widgetName);
176 void openWidgetButtonClicked();
178 void onContextMenuFavoritesRequested(
const QPoint& pos);
179 void onNumberOfMaxFavoritesChanged(
int i);
181 void updatefavoriteActions();
186 void updateAvailableWidgetList();
187 void updateOpenWidgetList();
192 void addArVizGodotIcon();
202 void loadPlugins(
const QString& pluginDir,
bool searchRecursive =
true);
205 void loadPlugins(
const QSet<QString>& pluginDirs,
bool searchRecursive =
true);
206 void loadPlugins(
const QStringList& fileNames);
208 QAction* addActionToToolBar(QAction* action,
bool allowText);
212 QStringList loadedPackages;
213 std::vector<QPluginLoader*> pluginsToLoad;
214 QList<QDir> directoriesToCheck;
216 ::Ui::ArmarXMainWindow* ui;
220 std::vector<ArmarXGuiInterface*>
plugins;
221 QStringList loadedPluginFilepaths;
223 QList<QWidget*> widgetsList;
226 QMap<QString, Viewer3DInfo> viewer3DMap;
228 QSignalMapper* signalMapper;
229 QActionGroup* layoutActions;
230 using OpenWidgetMap = QMap<QString, QPair<QDockWidget*, ArmarXWidgetControllerPtr> >;
231 OpenWidgetMap listOpenWidgets;
232 std::vector<ArmarXWidgetControllerPtr> pendingWidgets;
233 QListWidgetItem* viewerItem;
235 QPointer<TipDialog> tipDialog;
236 const int widgetUsageHistoryLength = 100;
239 std::vector<std::string> defaultPackageNames;
245 QAction* leaveFullScreenActionF11;
246 QAction* leaveFullScreenActionEsc;
251 QPointer<QDockWidget> getBiggestOpenWidget();
252 QMenu* getCategoryMenu(
const std::string& categoryString, QMenu* menu, QIcon widgetIcon);
253 const std::string settingsFile;
254 QSettings mainSettings;
255 QString configFilepath;
256 QString guiWindowBaseName;
257 QTimer* connectionStatusTimer;
258 QSplashScreen* splashSceen;
259 QString splashscreenPrefix;
261 QStringList mainWidgets;
262 QToolButton* openWidgetButton;
263 QLineEdit* searchField;
265 std::shared_ptr<std::recursive_mutex> mutex3d;
266 QMap<QString, QAction*> actionList;
268 QLabel* favoritesLabel;
269 std::vector<QAction*> favoriteActions;
270 QStringList favoriteActionWidgetNames;
298 QScrollArea* scrollArea;
300 QWidget* savedTitleBar;
312 void triggered(QString widgetName = QString());
316 void clicked(QString widgetName, QString customInstanceName);