28 #include <QDockWidget>
29 #include <QMainWindow>
30 #include <QPluginLoader>
31 #include <QSplashScreen>
43 #include <Inventor/nodes/SoNode.h>
44 #include <Inventor/nodes/SoSeparator.h>
50 class QListWidgetItem;
56 class ArmarXMainWindow;
62 class GuiUseCaseSelector;
63 class AddArmarXWidgetAction;
65 class ArmarXDockWidget;
82 const std::vector<std::string>& packages,
83 const QString& configToLoad,
84 bool disablePreloading);
115 std::shared_ptr<std::recursive_mutex>
getMutex3D();
124 void loadGuiConfig(QString configFilepath =
"",
bool showAsOpenGuiConfig =
true);
136 void closeAllWidgets();
137 void closeAllWidgetsWithDialog();
138 void saveGuiConfig();
139 void saveGuiConfigAs();
140 void updateStatusOfOpenWidgets();
141 void enterFullscreenMode();
142 void leaveFullscreenMode();
143 void toggleWidgetLock();
154 QString customInstanceName,
155 QSettings* settings = NULL);
157 bool createViewerWidget =
true);
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();
187 void updateAvailableWidgetList();
188 void updateOpenWidgetList();
193 void addArVizGodotIcon();
203 void loadPlugins(
const QString& pluginDir,
bool searchRecursive =
true);
206 void loadPlugins(
const QSet<QString>& pluginDirs,
bool searchRecursive =
true);
207 void loadPlugins(
const QStringList& fileNames);
209 QAction* addActionToToolBar(QAction* action,
bool allowText);
213 QStringList loadedPackages;
214 std::vector<QPluginLoader*> pluginsToLoad;
215 QList<QDir> directoriesToCheck;
217 ::Ui::ArmarXMainWindow* ui;
221 std::vector<ArmarXGuiInterface*>
plugins;
222 QStringList loadedPluginFilepaths;
224 QList<QWidget*> widgetsList;
227 QMap<QString, Viewer3DInfo> viewer3DMap;
229 QSignalMapper* signalMapper;
230 QActionGroup* layoutActions;
231 using OpenWidgetMap = QMap<QString, QPair<QDockWidget*, ArmarXWidgetControllerPtr>>;
232 OpenWidgetMap listOpenWidgets;
233 std::vector<ArmarXWidgetControllerPtr> pendingWidgets;
234 QListWidgetItem* viewerItem;
236 QPointer<TipDialog> tipDialog;
237 const int widgetUsageHistoryLength = 100;
240 std::vector<std::string> defaultPackageNames;
247 QAction* leaveFullScreenActionF11;
248 QAction* leaveFullScreenActionEsc;
253 QPointer<QDockWidget> getBiggestOpenWidget();
254 QMenu* getCategoryMenu(
const std::string& categoryString, QMenu* menu, QIcon widgetIcon);
255 const std::string settingsFile;
256 QSettings mainSettings;
257 QString configFilepath;
258 QString guiWindowBaseName;
259 QTimer* connectionStatusTimer;
260 QSplashScreen* splashSceen;
261 QString splashscreenPrefix;
263 QStringList mainWidgetNames;
264 QToolButton* openWidgetButton;
265 QLineEdit* searchField;
267 std::shared_ptr<std::recursive_mutex> mutex3d;
268 QMap<QString, QAction*> actionList;
270 QLabel* favoritesLabel;
271 std::vector<QAction*> favoriteActions;
272 QStringList favoriteActionWidgetNames;
300 QScrollArea* scrollArea;
302 QWidget* savedTitleBar;
315 void triggered(QString widgetName = QString());
319 void clicked(QString widgetName, QString customInstanceName);