From c9e2c32dae4560130564bd40093108b482fc82fe Mon Sep 17 00:00:00 2001 From: dismine Date: Fri, 4 Jul 2014 17:52:11 +0300 Subject: [PATCH] Fix opening patterns. --HG-- branch : develop --- src/app/mainwindow.cpp | 78 ++++++++++++++++---------------- src/app/mainwindow.h | 7 +-- src/app/widgets/vapplication.cpp | 15 ++++++ src/app/widgets/vapplication.h | 1 + 4 files changed, 60 insertions(+), 41 deletions(-) diff --git a/src/app/mainwindow.cpp b/src/app/mainwindow.cpp index 313aa3f33..976edbb6d 100644 --- a/src/app/mainwindow.cpp +++ b/src/app/mainwindow.cpp @@ -50,6 +50,8 @@ #include #include #include +#include +#include //--------------------------------------------------------------------------------------------------------------------- /** @@ -61,8 +63,8 @@ MainWindow::MainWindow(QWidget *parent) currentScene(nullptr), sceneDraw(nullptr), sceneDetails(nullptr), mouseCoordinate(nullptr), helpLabel(nullptr), view(nullptr), isInitialized(false), dialogTable(0), dialogTool(nullptr), dialogHistory(nullptr), comboBoxDraws(nullptr), curFile(QString()), mode(Draw::Calculation), currentDrawIndex(0), - currentToolBoxIndex(0), drawMode(true), recentFileActs{0, 0, 0, 0, 0}, separatorAct(nullptr), - autoSaveTimer(nullptr), guiEnabled(true) + currentToolBoxIndex(0), drawMode(true), recentFileActs{nullptr, nullptr, nullptr, nullptr, nullptr}, + separatorAct(nullptr), autoSaveTimer(nullptr), guiEnabled(true) { CreateActions(); CreateMenus(); @@ -912,7 +914,7 @@ void MainWindow::OpenRecentFile() QAction *action = qobject_cast(sender()); if (action) { - LoadPattern(action->data().toString()); + OpenPattern(action->data().toString()); } } @@ -1464,43 +1466,24 @@ bool MainWindow::Save() */ void MainWindow::Open() { - if (MaybeSave()) - { - QString filter(tr("Pattern files (*.val)")); - //Get list last open files - QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), - QApplication::applicationName()); - QStringList files = settings.value("recentFileList").toStringList(); - QString dir; - if (files.isEmpty()) - { - dir = QDir::homePath(); - } - else - { - //Absolute path to last open file - dir = QFileInfo(files.first()).absolutePath(); - } - QString fileName = QFileDialog::getOpenFileName(this, tr("Open file"), dir, filter); - if (fileName.isEmpty() == false && fileName != curFile) - { - if (curFile.isEmpty()) - { - LoadPattern(fileName); - VAbstractTool::NewSceneRect(sceneDraw, view); - VAbstractTool::NewSceneRect(sceneDetails, view); - } - else - { - QProcess *v = new QProcess(this); - QStringList arguments; - arguments << fileName; - v->startDetached(QCoreApplication::applicationFilePath(), arguments); - delete v; - } - } + const QString filter(tr("Pattern files (*.val)")); + //Get list last open files + QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + QApplication::applicationName()); + const QStringList files = settings.value("recentFileList").toStringList(); + QString dir; + if (files.isEmpty()) + { + dir = QDir::homePath(); } + else + { + //Absolute path to last open file + dir = QFileInfo(files.first()).absolutePath(); + } + const QString filePath = QFileDialog::getOpenFileName(this, tr("Open file"), dir, filter); + OpenPattern(filePath); } //--------------------------------------------------------------------------------------------------------------------- @@ -2326,3 +2309,22 @@ QString MainWindow::CheckPathToMeasurements(const QString &path, const Measureme } return path; } + +//--------------------------------------------------------------------------------------------------------------------- +void MainWindow::OpenPattern(const QString &filePath) +{ + if (filePath.isEmpty() == false && filePath != curFile) + { + if (curFile.isEmpty() && this->isWindowModified() == false) + { + LoadPattern(filePath); + + VAbstractTool::NewSceneRect(sceneDraw, view); + VAbstractTool::NewSceneRect(sceneDetails, view); + } + else + { + VApplication::NewValentina(filePath); + } + } +} diff --git a/src/app/mainwindow.h b/src/app/mainwindow.h index 937972521..3889454fd 100644 --- a/src/app/mainwindow.h +++ b/src/app/mainwindow.h @@ -74,6 +74,9 @@ public slots: void Open(); void Preferences(); void NewPattern(); + void ShowToolTip(const QString &toolTip); + void OpenRecentFile(); + void Clear(); void currentDrawChanged( int index ); void OptionDraw(); @@ -134,9 +137,6 @@ public slots: void AboutQt(); void PatternProperties(); - void ShowToolTip(const QString &toolTip); - void OpenRecentFile(); - void Clear(); /** * @brief Edit XML code of pattern */ @@ -254,6 +254,7 @@ private: void InitAutoSave(); QString PatternPieceName(const QString &text); QString CheckPathToMeasurements(const QString &path, const MeasurementsType &patternType); + void OpenPattern(const QString &filePath); }; #endif // MAINWINDOW_H diff --git a/src/app/widgets/vapplication.cpp b/src/app/widgets/vapplication.cpp index 05db5b923..599928392 100644 --- a/src/app/widgets/vapplication.cpp +++ b/src/app/widgets/vapplication.cpp @@ -37,6 +37,7 @@ #include #include +#include #include #include @@ -68,6 +69,20 @@ VApplication::VApplication(int &argc, char **argv) InitPostfixOperators(); } +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief NewValentina start Valentina in new process, send path to pattern file in argument. + * @param fileName path to pattern file. + */ +void VApplication::NewValentina(const QString &fileName) +{ + QProcess *v = new QProcess(); + QStringList arguments; + arguments << fileName; + v->startDetached(QCoreApplication::applicationFilePath(), arguments); + delete v; +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief notify Reimplemented from QApplication::notify(). diff --git a/src/app/widgets/vapplication.h b/src/app/widgets/vapplication.h index 6f051bf91..1eab607b3 100644 --- a/src/app/widgets/vapplication.h +++ b/src/app/widgets/vapplication.h @@ -51,6 +51,7 @@ class VApplication : public QApplication public: VApplication(int &argc, char ** argv); virtual ~VApplication() {} + static void NewValentina(const QString &fileName); virtual bool notify(QObject * receiver, QEvent * event); Unit patternUnit() const; void setPatternUnit(const Unit &patternUnit);