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()));
130 usingProxy(workingMemoryName);
131 usingProxy(
"LongtermMemory");
132 usingProxy(priorMemoryName);
133 usingProxy(
"CommonStorage");
139 memoryx::LongtermMemoryInterfacePrx longtermMemoryPrx =
140 getProxy<memoryx::LongtermMemoryInterfacePrx>(
"LongtermMemory");
141 memoryx::WorkingMemoryInterfacePrx workingMemoryPrx =
142 getProxy<memoryx::WorkingMemoryInterfacePrx>(workingMemoryName);
143 memoryx::PriorKnowledgeInterfacePrx priorKnowledgePrx =
144 getProxy<memoryx::PriorKnowledgeInterfacePrx>(priorMemoryName);
145 this->
control->getMemoryXController()->init(priorKnowledgePrx,
147 workingMemoryUpdatesTopic,
148 objectInstancesSegmentName,
151 getArmarXManager()->addObject(
control->getMemoryXController()->getWorkingMemoryController());
153 enableMainWidgetAsync(
true);
154 emit connectComponent();
160 shortcutDialog->close();
161 groupEditorDialog->close();
162 loadSnapshotDialog->close();
163 saveSnapshotDialog->close();
164 enableMainWidgetAsync(
false);
165 emit disconnectComponent();
169 gui::SceneEditorMainWindowController::onConnectComponentQt()
171 qobject_cast<gui::SceneEditorMainWindow*>(getWidget())->onConnect();
172 customToolbar->setEnabled(
true);
176 gui::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());
314 gui::SceneEditorMainWindowController::clearScene()
320 gui::SceneEditorMainWindowController::openLoadSnapshotDialog()
322 loadSnapshotDialog->exec();
326 gui::SceneEditorMainWindowController::openSaveSnapshotDialog()
328 saveSnapshotDialog->exec();
332 gui::SceneEditorMainWindowController::openShortcutDialog()
334 shortcutDialog->exec();
338 gui::SceneEditorMainWindowController::openGroupEditorDialog()
340 groupEditorDialog->exec();
344 gui::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);
378 gui::SceneEditorMainWindowController::switchTranslator(QTranslator& translator,
380 const QString& directory)
383 qApp->removeTranslator(&translator);
386 if (translator.load(
filename, directory))
388 qApp->installTranslator(&translator);
393 gui::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);
408 gui::SceneEditorMainWindowController::slotLanguageChanged(
const int languageIndex)
410 if (languageIndex != -1)
412 QString language = this->languageSelection->itemData(languageIndex).toString();
413 this->loadLanguage(language);
419 gui::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"));