bool MainWindow::savePath(const QString &path) { if (!controller) return false; if (path.isEmpty()) return showSaveAsDialog(); const FileFormat *format = FileFormats.findFormatForFilename(path); if (format->isExportLossy()) { QString message = tr("This map is being saved as a \"%1\" file. Information may be lost.\n\nPress Yes to save in this format.\nPress No to choose a different format.").arg(format->description()); int result = QMessageBox::warning(this, tr("Warning"), message, QMessageBox::Yes, QMessageBox::No); if (result != QMessageBox::Yes) return showSaveAsDialog(); } if (!controller->save(path)) return false; setMostRecentlyUsedFile(path); setHasAutosaveConflict(false); removeAutosaveFile(); if (path != currentPath()) { setCurrentPath(path); removeAutosaveFile(); } setHasUnsavedChanges(false); return true; }
void MapEditorWindow::setupMenu() { auto *menu = new QMenuBar(this); QMenu* fileMenu = new QMenu("File"); QAction *newAction = new QAction("New...", this); newAction->setShortcut(QKeySequence("Ctrl+N")); fileMenu->addAction(newAction); connect(newAction, SIGNAL(triggered()), this, SLOT(showNewDialog())); QAction *openAction = new QAction("Open...", this); openAction->setShortcut(QKeySequence("Ctrl+O")); fileMenu->addAction(openAction); connect(openAction, SIGNAL(triggered()), this, SLOT(showOpenDialog())); saveAction = new QAction("Save", this); saveAction->setEnabled(false); saveAction->setShortcut(QKeySequence("Ctrl+S")); fileMenu->addAction(saveAction); connect(saveAction, SIGNAL(triggered()), this, SLOT(executeSaveAction())); saveAsAction = new QAction("Save as...", this); saveAsAction->setEnabled(false); saveAsAction->setShortcut(QKeySequence("Ctrl+Shift+S")); fileMenu->addAction(saveAsAction); connect(saveAsAction, SIGNAL(triggered()), this, SLOT(showSaveAsDialog())); closeAction = new QAction("Close", this); closeAction->setEnabled(false); closeAction->setShortcut(QKeySequence("Ctrl+W")); fileMenu->addAction(closeAction); connect(closeAction, SIGNAL(triggered()), this, SLOT(executeCloseAction())); fileMenu->addSeparator(); QAction *exitAction = new QAction("Exit", this); fileMenu->addAction(exitAction); connect(exitAction, SIGNAL(triggered()), this, SLOT(executeExitAction())); QMenu *viewMenu = new QMenu("View"); QMenu *viewObjectMenu = new QMenu("Object"); viewMenu->addMenu(viewObjectMenu); QAction *viewPhysicsShapeAction = new QAction("Physics Shape", this); viewPhysicsShapeAction->setEnabled(false); viewPhysicsShapeAction->setCheckable(true); viewPhysicsShapeAction->setChecked(true); viewObjectMenu->addAction(viewPhysicsShapeAction); viewActions[SceneDisplayer::MODEL_PHYSICS] = viewPhysicsShapeAction; connect(viewPhysicsShapeAction, SIGNAL(triggered()), this, SLOT(executeViewPropertiesChangeAction())); QMenu *viewLightMenu = new QMenu("Light"); viewMenu->addMenu(viewLightMenu); QAction *viewLightScopeAction = new QAction("Light Scope", this); viewLightScopeAction->setEnabled(false); viewLightScopeAction->setCheckable(true); viewLightScopeAction->setChecked(true); viewLightMenu->addAction(viewLightScopeAction); viewActions[SceneDisplayer::LIGHT_SCOPE] = viewLightScopeAction; connect(viewLightScopeAction, SIGNAL(triggered()), this, SLOT(executeViewPropertiesChangeAction())); QMenu *viewSoundMenu = new QMenu("Sound"); viewMenu->addMenu(viewSoundMenu); QAction *viewSoundTriggerAction = new QAction("Sound Trigger", this); viewSoundTriggerAction->setEnabled(false); viewSoundTriggerAction->setCheckable(true); viewSoundTriggerAction->setChecked(true); viewSoundMenu->addAction(viewSoundTriggerAction); viewActions[SceneDisplayer::SOUND_TRIGGER] = viewSoundTriggerAction; connect(viewSoundTriggerAction, SIGNAL(triggered()), this, SLOT(executeViewPropertiesChangeAction())); QMenu *viewAIMenu = new QMenu("AI"); viewMenu->addMenu(viewAIMenu); QAction *viewNavMeshAction = new QAction("Navigation Mesh", this); viewNavMeshAction->setEnabled(false); viewNavMeshAction->setCheckable(true); viewNavMeshAction->setChecked(true); viewAIMenu->addAction(viewNavMeshAction); viewActions[SceneDisplayer::NAV_MESH] = viewNavMeshAction; connect(viewNavMeshAction, SIGNAL(triggered()), this, SLOT(executeViewPropertiesChangeAction())); menu->addMenu(fileMenu); menu->addMenu(viewMenu); this->setMenuBar(menu); }