31#include <QKeySequence>
40#include <MemoryX/gui-plugins/SceneEditor/gui/dialog/ui_SceneEditorConfigDialog.h>
45 new
OverrideAction(QIcon(
":/icons/document-open-folder.png"), tr(
"Load Snapshot"), this)),
47 new
OverrideAction(QIcon(
":/icons/document-save-5.ico"), tr(
"Save Snapshot"), this)),
48 openShortcutDialogAction(
49 new
OverrideAction(QIcon(
":/images/keys.png"), tr(
"Keyboard Shortcuts"), this)),
50 openGroupEditorAction(
51 new
OverrideAction(QIcon(
":/images/chain-pencil.png"), tr(
"Group Editor"), this)),
52 clearWorkingMemoryAction(
53 new
OverrideAction(QIcon(
":/icons/dialog-close.ico"), tr(
"Clear Scene"), this)),
63 workingMemoryName =
"";
64 workingMemoryUpdatesTopic =
"";
65 objectInstancesSegmentName =
"";
69 connect(
this, SIGNAL(
connectComponent()),
this, SLOT(onConnectComponentQt()));
71 std::shared_ptr<gui::ShortcutController> shortcutController =
control->getShortcutController();
73 connect(loadSnapshotAction, SIGNAL(triggered()),
this, SLOT(openLoadSnapshotDialog()));
74 shortcutController->registerAction(
"General: Load Snapshot", loadSnapshotAction);
76 connect(saveSnapshotAction, SIGNAL(triggered()),
this, SLOT(openSaveSnapshotDialog()));
77 shortcutController->registerAction(
"General: Save Snapshot", saveSnapshotAction);
79 connect(openShortcutDialogAction, SIGNAL(triggered()),
this, SLOT(openShortcutDialog()));
80 shortcutController->registerAction(
"General: Edit Shortcuts", openShortcutDialogAction);
82 connect(openGroupEditorAction, SIGNAL(triggered()),
this, SLOT(openGroupEditorDialog()));
83 shortcutController->registerAction(
"General: Edit Groups", openGroupEditorAction);
85 connect(clearWorkingMemoryAction, SIGNAL(triggered()),
this, SLOT(clearScene()));
86 shortcutController->registerAction(
"General: Clear Scene", clearWorkingMemoryAction);
88 this->createLanguageMenu();
94 qobject_cast<gui::SceneEditorMainWindow*>(
getWidget())->postDocking();
99 if (!settingsPath.isEmpty())
101 QSettings settings(settingsPath, QSettings::IniFormat);
103 QHash<QString, QKeySequence> shortcuts =
104 control->getShortcutController()->getAllShortcuts();
106 for (
auto it = shortcuts.begin(); it != shortcuts.end(); ++it)
108 settings.setValue(
"ShortcutController/shortcut/" + it.key(), it.value().toString());
111 settings.setValue(
"SceneEditorMainWindowController/language",
112 languageSelection->itemData(languageSelection->currentIndex()));
139 memoryx::LongtermMemoryInterfacePrx longtermMemoryPrx =
141 memoryx::WorkingMemoryInterfacePrx workingMemoryPrx =
143 memoryx::PriorKnowledgeInterfacePrx priorKnowledgePrx =
145 this->
control->getMemoryXController()->init(priorKnowledgePrx,
147 workingMemoryUpdatesTopic,
148 objectInstancesSegmentName,
160 shortcutDialog->close();
161 groupEditorDialog->close();
162 loadSnapshotDialog->close();
163 saveSnapshotDialog->close();
169gui::SceneEditorMainWindowController::onConnectComponentQt()
171 qobject_cast<gui::SceneEditorMainWindow*>(getWidget())->onConnect();
172 customToolbar->setEnabled(
true);
176gui::SceneEditorMainWindowController::onDisconnectComponentQt()
178 qobject_cast<gui::SceneEditorMainWindow*>(getWidget())->onDisconnect();
179 customToolbar->setDisabled(
true);
189 mainWindow, SIGNAL(languageChangedByUser()),
this, SLOT(slotLanguageChangedByUser()));
192 return qobject_cast<QWidget*>(mainWindow);
200 if (parent != customToolbar->parent())
202 customToolbar->setParent(parent);
205 return qobject_cast<QWidget*>(customToolbar);
208 customToolbar =
new QToolBar(parent);
209 customToolbar->setIconSize(QSize(16, 16));
211 customToolbar->addAction(loadSnapshotAction);
212 customToolbar->addAction(saveSnapshotAction);
213 customToolbar->addAction(openShortcutDialogAction);
214 customToolbar->addAction(openGroupEditorAction);
215 customToolbar->addAction(clearWorkingMemoryAction);
216 customToolbar->addWidget(languageSelection);
217 customToolbar->setDisabled(
true);
219 return qobject_cast<QWidget*>(customToolbar);
228 configDialog->setIceObjectName();
231 return qobject_cast<dialog::SceneEditorConfigDialog*>(configDialog);
237 workingMemoryName = configDialog->getWorkingMemoryName();
238 workingMemoryUpdatesTopic = configDialog->getWorkingMemoryUpdatesTopic();
239 objectInstancesSegmentName =
"objectInstances";
240 priorMemoryName = configDialog->getPriorMemoryName();
242 settingsPath = configDialog->getSettingsFilePath();
243 QSettings settings(settingsPath, QSettings::IniFormat);
244 QHash<QString, QKeySequence> shortcuts;
245 QStringList allKeys = settings.allKeys();
247 for (
auto it = allKeys.begin(); it != allKeys.end(); ++it)
249 if ((*it).startsWith(
"ShortcutController/shortcut/", Qt::CaseSensitivity::CaseSensitive))
251 shortcuts.insert((*it).replace(
"ShortcutController/shortcut/",
253 Qt::CaseSensitivity::CaseSensitive),
254 QKeySequence(settings.value(*it).value<QString>()));
259 settings.value(
"SceneEditorMainWindowController/language", QString()).value<QString>();
261 for (
int i = 0; i < languageSelection->count(); ++i)
263 if (languageSelection->itemData(i) == language)
265 loadLanguage(language);
266 languageSelection->setCurrentIndex(i);
271 if (shortcuts.isEmpty())
273 shortcuts.insert(
"General: Clear Scene", QKeySequence(
"Ctrl+Shift+Del"));
274 shortcuts.insert(
"General: Edit Groups", QKeySequence(
"Ctrl+G"));
275 shortcuts.insert(
"General: Edit Shortcuts", QKeySequence(
"Ctrl+K"));
276 shortcuts.insert(
"General: Load Snapshot", QKeySequence(
"Ctrl+O"));
277 shortcuts.insert(
"General: Save Snapshot", QKeySequence(
"Ctrl+S"));
278 shortcuts.insert(
"Group Explorer: Add Selection to new group",
279 QKeySequence(
"Ctrl+Shift++"));
280 shortcuts.insert(
"Object Explorer: Set Focus on Search Field", QKeySequence(
"Ctrl+Space"));
281 shortcuts.insert(
"Scene: Camera view all", QKeySequence(
"Shift+5"));
282 shortcuts.insert(
"Scene: Camera view from X", QKeySequence(
"Shift+3"));
283 shortcuts.insert(
"Scene: Camera view from Y", QKeySequence(
"Shift+7"));
284 shortcuts.insert(
"Scene: Camera view from Z", QKeySequence(
"Shift+1"));
285 shortcuts.insert(
"Scene: Camera view from negative X", QKeySequence(
"Ctrl+Shift+3"));
286 shortcuts.insert(
"Scene: Camera view from negative Y", QKeySequence(
"Ctrl+Shift+7"));
287 shortcuts.insert(
"Scene: Camera view from negative Z", QKeySequence(
"Ctrl+Shift+1"));
288 shortcuts.insert(
"Scene: Copy selection", QKeySequence(
"Ctrl+C"));
289 shortcuts.insert(
"Scene: Duplicate selection", QKeySequence(
"Ctrl+D"));
290 shortcuts.insert(
"Scene: Paste selection", QKeySequence(
"Ctrl+V"));
291 shortcuts.insert(
"Scene: Redo last Action", QKeySequence(
"Ctrl+Shift+Z"));
292 shortcuts.insert(
"Scene: Remove the selected Objects", QKeySequence(
"Del"));
293 shortcuts.insert(
"Scene: Select all or deselect all", QKeySequence(
"Ctrl+A"));
294 shortcuts.insert(
"Scene: Switch between Editor and Viewer Mode", QKeySequence(
"Z"));
295 shortcuts.insert(
"Scene: Switch to Editor Mode", QKeySequence(
"Shift+E"));
296 shortcuts.insert(
"Scene: Switch to Viewer Mode", QKeySequence(
"Shift+V"));
297 shortcuts.insert(
"Scene: Toggle Collision Meshes", QKeySequence(
"Shift+C"));
298 shortcuts.insert(
"Scene: Toggle Rotation Manipulator", QKeySequence(
"Shift+R"));
299 shortcuts.insert(
"Scene: Toggle Translation Manipulator", QKeySequence(
"Shift+T"));
300 shortcuts.insert(
"Scene: Undo last Action", QKeySequence(
"Ctrl+Z"));
301 shortcuts.insert(
"Scene: Reset rotation", QKeySequence(
"Alt+R"));
302 shortcuts.insert(
"Scene: Reset translation", QKeySequence(
"Alt+T"));
305 for (
auto it = shortcuts.begin(); it != shortcuts.end(); ++it)
307 control->getShortcutController()->updateShortcut(it.key(), it.value());
310 configDialog->getArmarXManager()->removeObjectBlocking(configDialog->getName());
314gui::SceneEditorMainWindowController::clearScene()
320gui::SceneEditorMainWindowController::openLoadSnapshotDialog()
322 loadSnapshotDialog->exec();
326gui::SceneEditorMainWindowController::openSaveSnapshotDialog()
328 saveSnapshotDialog->exec();
332gui::SceneEditorMainWindowController::openShortcutDialog()
334 shortcutDialog->exec();
338gui::SceneEditorMainWindowController::openGroupEditorDialog()
340 groupEditorDialog->exec();
344gui::SceneEditorMainWindowController::createLanguageMenu()
346 languageSelection =
new QComboBox();
349 languageSelection, SIGNAL(currentIndexChanged(
int)),
this, SLOT(slotLanguageChanged(
int)));
351 QDir dir(
":/languages/");
352 QStringList fileNames = dir.entryList(QStringList(
"SceneEditorLanguages_*.qm"));
354 for (
int i = 0; i < fileNames.size(); ++i)
358 language = fileNames[i];
359 language.truncate(language.lastIndexOf(
'.'));
360 language.remove(0, language.indexOf(
'_') + 1);
362 QString languageName = QLocale(language).nativeLanguageName();
364 languageSelection->addItem(languageName, language);
367 QString defaultLocale = QLocale::system().name();
368 defaultLocale.truncate(defaultLocale.lastIndexOf(
'_'));
370 if (defaultLocale == language)
372 languageSelection->setCurrentIndex(languageSelection->count() - 1);
378gui::SceneEditorMainWindowController::switchTranslator(QTranslator& translator,
379 const QString& filename,
380 const QString& directory)
383 qApp->removeTranslator(&translator);
386 if (translator.load(filename, directory))
388 qApp->installTranslator(&translator);
393gui::SceneEditorMainWindowController::loadLanguage(
const QString& rLanguage)
395 if (m_currLang != rLanguage)
397 m_currLang = rLanguage;
398 QString languageFilePath = QString::fromStdString(
":/languages/");
401 m_translator, QString(
"SceneEditorLanguages_%1.qm").arg(rLanguage), languageFilePath);
408gui::SceneEditorMainWindowController::slotLanguageChanged(
const int languageIndex)
410 if (languageIndex != -1)
412 QString language = this->languageSelection->itemData(languageIndex).toString();
413 this->loadLanguage(language);
419gui::SceneEditorMainWindowController::slotLanguageChangedByUser()
421 this->saveSnapshotDialog->retranslate();
422 this->loadSnapshotDialog->retranslate();
423 this->groupEditorDialog->retranslate();
424 this->shortcutDialog->retranslate();
426 this->openGroupEditorAction->setText(tr(
"Group Editor"));
427 this->openShortcutDialogAction->setText(tr(
"Keyboard Shortcuts"));
428 this->saveSnapshotAction->setText(tr(
"Save Snapshot"));
429 this->loadSnapshotAction->setText(tr(
"Load Snapshot"));
430 this->clearWorkingMemoryAction->setText(tr(
"Clear Scene"));
static TPtr create(Ice::PropertiesPtr properties=Ice::createProperties(), const std::string &configName="", const std::string &configDomain="ArmarX")
Factory method for a component.
bool usingProxy(const std::string &name, const std::string &endpoints="")
Registers a proxy for retrieval after initialization and adds it to the dependency list.
Ice::ObjectPrx getProxy(long timeoutMs=0, bool waitForScheduler=true) const
Returns the proxy of this object (optionally it waits for the proxy)
ArmarXManagerPtr getArmarXManager() const
Returns the ArmarX manager used to add and remove components.
void onInitComponent() override
Reimplemented armarx::Component:onInitComponent().
QPointer< QWidget > getCustomTitlebarWidget(QWidget *parent) override
Reimplemented ArmarXWidgetController:getCustomTitlebarWidget().
void onDisconnectComponent() override
void loadSettings(QSettings *settings) override
Reimplemented ArmarXWidgetController:loadSettings().
void saveSettings(QSettings *settings) override
Reimplemented ArmarXWidgetController:saveSettings().
void disconnectComponent()
void postDocking() override
postDocking is called after the widget has been docked into the main window.
SceneEditorMainWindowController()
Constructor.
QPointer< QWidget > getWidget() override
getWidget returns a pointer to the a widget of this controller.
void onConnectComponent() override
Reimplementiert armarx::Component:onConnectComponent().
void configured() override
Reimplemented ArmarXWidgetController:configured().
~SceneEditorMainWindowController() override
Destructor.
QPointer< QDialog > getConfigDialog(QWidget *parent) override
Reimplemented ArmarXWidgetController:getConfigDialog().
This class provides the main window of the plugin.
This class provides a dialog derived from Qt::QDialog and armarx::ManagedIceObject.
This file is part of ArmarX.