diff --git a/GUI/coregui/mainwindow/newprojectdialog.cpp b/GUI/coregui/mainwindow/newprojectdialog.cpp index 47012f7a2178d8ef063c9635ad64fb5d0ce37486..5c99f5ecf89e3a477fda33cecac0bc651f4b64cc 100644 --- a/GUI/coregui/mainwindow/newprojectdialog.cpp +++ b/GUI/coregui/mainwindow/newprojectdialog.cpp @@ -20,7 +20,7 @@ #include <QPushButton> #include <QVBoxLayout> -NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirectory, +NewProjectDialog::NewProjectDialog(QWidget* parent, Mode mode, const QString& workingDirectory, const QString& projectName) : QDialog(parent) , m_projectNameEdit(0) @@ -34,7 +34,7 @@ NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirect { setMinimumSize(480, 280); - setWindowTitle("New project"); + setWindowTitle(mode == CREATE ? "New project" : "Save project"); QLabel* nameLabel = new QLabel("Project name:"); m_projectNameEdit = new QLineEdit; @@ -43,7 +43,7 @@ NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirect SLOT(checkIfProjectNameIsValid(QString))); nameLabel->setBuddy(m_projectNameEdit); - QLabel* parentDirLabel = new QLabel("Create in:"); + QLabel* parentDirLabel = new QLabel(mode == CREATE ? "Create in:" : "Save in:"); m_workDirEdit = new QLineEdit; m_workDirEdit->setText(QDir::homePath()); connect(m_workDirEdit, SIGNAL(textEdited(QString)), this, @@ -55,7 +55,7 @@ NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirect m_warningLabel = new QLabel(); - m_createButton = new QPushButton("Create"); + m_createButton = new QPushButton(mode == CREATE ? "Create" : "Save"); connect(m_createButton, SIGNAL(clicked()), this, SLOT(createProjectDir())); m_createButton->setDefault(true); m_cancelButton = new QPushButton("Cancel"); diff --git a/GUI/coregui/mainwindow/newprojectdialog.h b/GUI/coregui/mainwindow/newprojectdialog.h index 9faa2723941a6afd42ae6fab7b3bd1a1a30c4887..e5d1f661a92771ae8f22618c9d2ccfc89e40e902 100644 --- a/GUI/coregui/mainwindow/newprojectdialog.h +++ b/GUI/coregui/mainwindow/newprojectdialog.h @@ -24,7 +24,9 @@ class QLabel; class NewProjectDialog : public QDialog { Q_OBJECT public: - NewProjectDialog(QWidget* parent = 0, const QString& workingDirectory = "", + enum Mode { CREATE, SAVE }; + + NewProjectDialog(QWidget* parent, Mode mode, const QString& workingDirectory = "", const QString& projectName = ""); QString getWorkingDirectory() const; diff --git a/GUI/coregui/mainwindow/projectmanager.cpp b/GUI/coregui/mainwindow/projectmanager.cpp index 803767a699bc38767313d81ca578f7b3915978ed..69dc2789d2a8381049264283670aed85057450c7 100644 --- a/GUI/coregui/mainwindow/projectmanager.cpp +++ b/GUI/coregui/mainwindow/projectmanager.cpp @@ -175,12 +175,11 @@ void ProjectManager::newProject() { if (!closeCurrentProject()) return; - QString projectFileName = acquireProjectFileName(); + createNewProject(); - if (!projectFileName.isEmpty()) { - createNewProject(); + QString projectFileName = acquireProjectFileName(false); + if (!projectFileName.isEmpty()) saveProject(projectFileName); - } } //! Processes close current project request. Call save/discard/cancel dialog, if necessary. @@ -228,7 +227,7 @@ bool ProjectManager::saveProject(QString projectFileName) { if (m_project_document->hasValidNameAndPath()) projectFileName = m_project_document->projectFileName(); else - projectFileName = acquireProjectFileName(); + projectFileName = acquireProjectFileName(true); } if (projectFileName.isEmpty()) @@ -255,7 +254,7 @@ bool ProjectManager::saveProject(QString projectFileName) { //! Processes 'save project as' request. bool ProjectManager::saveProjectAs() { - QString projectFileName = acquireProjectFileName(); + QString projectFileName = acquireProjectFileName(true); if (projectFileName.isEmpty()) return false; @@ -269,6 +268,8 @@ void ProjectManager::openProject(QString fileName) { if (!closeCurrentProject()) return; + createNewProject(); + if (fileName.isEmpty()) { fileName = QFileDialog::getOpenFileName(m_mainWindow, "Open project file", workingDirectory(), @@ -276,7 +277,7 @@ void ProjectManager::openProject(QString fileName) { if (fileName.isEmpty()) return; } - createNewProject(); + loadProject(fileName); if (m_project_document->isReady()) { @@ -334,10 +335,12 @@ void ProjectManager::loadProject(const QString& projectFileName) { QApplication::restoreOverrideCursor(); } -//! Returns project file name from dialog. +//! Returns project file name from dialog. Returns empty string if dialog was canceled. -QString ProjectManager::acquireProjectFileName() { - NewProjectDialog dialog(m_mainWindow, workingDirectory(), untitledProjectName()); +QString ProjectManager::acquireProjectFileName(bool forSaveAs) { + NewProjectDialog dialog(m_mainWindow, + forSaveAs ? NewProjectDialog::SAVE : NewProjectDialog::CREATE, + workingDirectory(), untitledProjectName()); if (dialog.exec() != QDialog::Accepted) return ""; diff --git a/GUI/coregui/mainwindow/projectmanager.h b/GUI/coregui/mainwindow/projectmanager.h index ed9b397aaa486f1b082e8fe843831de94542ed3f..dfefcd3786ae6ae2e8b10dba5372283db3a218c2 100644 --- a/GUI/coregui/mainwindow/projectmanager.h +++ b/GUI/coregui/mainwindow/projectmanager.h @@ -61,7 +61,7 @@ private: void createNewProject(); void deleteCurrentProject(); void loadProject(const QString& projectFileName); - QString acquireProjectFileName(); + QString acquireProjectFileName(bool forSaveAs); void addToRecentProjects(); QString workingDirectory();