diff --git a/App/main.cpp b/App/main.cpp index 5505eab5b383e3dc356ed7260de1f474bab9edba..0a7aabb5f72ac19ee9c9dca617f6fa4af5c763bd 100644 --- a/App/main.cpp +++ b/App/main.cpp @@ -29,9 +29,6 @@ #include <QtGlobal> #include <iostream> -// Global variables -BA_GUI_API_ std::unique_ptr<Dirs> gDirs; - void custom_terminate_handler() { try { diff --git a/GUI/Support/Data/Dirs.cpp b/GUI/Support/Data/Dirs.cpp index 44eb199b2aa5604cc6f59e1582dc2cd504196e40..bcef548b9ce01f19046a2bb3b851fb5bbd18f87f 100644 --- a/GUI/Support/Data/Dirs.cpp +++ b/GUI/Support/Data/Dirs.cpp @@ -28,6 +28,7 @@ const QString S_LASTUSEDIMPORFILTER2D = "LastUsedImportFilter2D"; } // namespace +BA_GUI_API_ std::unique_ptr<Dirs> gDirs; Dirs::Dirs() { @@ -44,12 +45,9 @@ Dirs::~Dirs() void Dirs::readSettings() { QSettings settings; - m_working_directory = QDir::homePath(); if (settings.childGroups().contains(S_DIRS)) { settings.beginGroup(S_DIRS); - m_working_directory = settings.value(S_DEFAULTPROJECTPATH).toString(); - if (settings.contains(S_LASTUSEDIMPORTDIR)) m_import_directory = settings.value(S_LASTUSEDIMPORTDIR, QString()).toString(); @@ -66,7 +64,6 @@ void Dirs::writeSettings() { QSettings settings; settings.beginGroup(S_DIRS); - settings.setValue(S_DEFAULTPROJECTPATH, m_working_directory); if (!m_import_directory.isEmpty()) settings.setValue(S_LASTUSEDIMPORTDIR, m_import_directory); @@ -76,6 +73,21 @@ void Dirs::writeSettings() settings.endGroup(); } +//! Returns directory name which was used by the user to import files. + +QString Dirs::userImportDir() const +{ + /* + if (m_import_directory.isEmpty()) { + if (gDoc) + return gDoc->userExportDir(); + return ""; + } + */ + return m_import_directory; +} //! Sets user import directory in system settings. + + void Dirs::setImportDir(const QString& dirname) { m_import_directory = dirname; diff --git a/GUI/Support/Data/Dirs.h b/GUI/Support/Data/Dirs.h index 884f11c2f90dedca2118ae6210d55449121c93e5..fa03176c1ca6d86c753cef1171deb24088fbd214 100644 --- a/GUI/Support/Data/Dirs.h +++ b/GUI/Support/Data/Dirs.h @@ -25,11 +25,10 @@ public: Dirs(); ~Dirs(); - static Dirs* instance(); - - + QString userImportDir() const; QString recentlyUsedImportFilter1D() const { return m_import_filter1D; } QString recentlyUsedImportFilter2D() const { return m_import_filter2D; } + void setImportDir(const QString& dirname); void setImportDirFromFilePath(const QString& filePath); void setRecentlyUsedImportFilter1D(const QString& filter); @@ -39,11 +38,6 @@ private: void readSettings(); void writeSettings(); - QString workingDirectory() { return m_working_directory; } - - //!< Name of directory where project directory was created. - QString m_working_directory; - //!< Name of directory from there user prefer to import files QString m_import_directory; diff --git a/GUI/View/Loader/DataLoader.cpp b/GUI/View/Loader/DataLoader.cpp index 95c64abb6806148028cea58bf513e7c3262954c3..146e7c0f1ccf0baac82492d471174b3926ea9dc0 100644 --- a/GUI/View/Loader/DataLoader.cpp +++ b/GUI/View/Loader/DataLoader.cpp @@ -19,6 +19,7 @@ #include "Device/IO/ZipUtil.h" #include "GUI/Model/Data/DataItem.h" #include "GUI/Model/Device/DatafileItem.h" +#include "GUI/Support/Data/Dirs.h" #include "GUI/View/Info/MessageBox.h" #include "GUI/View/Layout/ApplicationSettings.h" #include "GUI/View/Loader/ImportDialogs.h" @@ -64,8 +65,8 @@ std::vector<DatafileItem*> RW::importData1D() static const QString filters = ::join_filterkeys(filters1D, ";;"); - QString selectedFilter = ProjectManager::instance()->recentlyUsedImportFilter1D(); - const QString dirname = ProjectManager::instance()->userImportDir(); + QString selectedFilter = gDirs->recentlyUsedImportFilter1D(); + const QString dirname = gDirs->userImportDir(); const QStringList fnames = QFileDialog::getOpenFileNames( Q_NULLPTR, "Open Intensity Files", dirname, filters, &selectedFilter, @@ -74,8 +75,8 @@ std::vector<DatafileItem*> RW::importData1D() if (fnames.isEmpty()) return {}; - ProjectManager::instance()->setImportDirFromFilePath(fnames[0]); - ProjectManager::instance()->setRecentlyUsedImportFilter1D(selectedFilter); + gDirs->setImportDirFromFilePath(fnames[0]); + gDirs->setRecentlyUsedImportFilter1D(selectedFilter); const IO::Filetype1D global_ftype = ::filterkey2type(filters1D, selectedFilter); @@ -125,8 +126,8 @@ std::vector<DatafileItem*> RW::importData2D() static const QString filters = ::join_filterkeys(filters2D, ";;"); - QString selectedFilter = ProjectManager::instance()->recentlyUsedImportFilter2D(); - const QString dirname = ProjectManager::instance()->userImportDir(); + QString selectedFilter = gDirs->recentlyUsedImportFilter2D(); + const QString dirname = gDirs->userImportDir(); const QStringList fnames = QFileDialog::getOpenFileNames( Q_NULLPTR, "Open Intensity Files", dirname, filters, &selectedFilter, @@ -135,8 +136,8 @@ std::vector<DatafileItem*> RW::importData2D() if (fnames.isEmpty()) return {}; - ProjectManager::instance()->setImportDirFromFilePath(fnames[0]); - ProjectManager::instance()->setRecentlyUsedImportFilter2D(selectedFilter); + gDirs->setImportDirFromFilePath(fnames[0]); + gDirs->setRecentlyUsedImportFilter2D(selectedFilter); const IO::Filetype2D global_ftype = ::filterkey2type(filters2D, selectedFilter); diff --git a/GUI/View/Manager/ProjectManager.cpp b/GUI/View/Manager/ProjectManager.cpp index 3e4506c2573ba6cc966afed292e649ce901cb940..eef6eec561c5d31b861e37bb1a3f5a8bb0b3e8fb 100644 --- a/GUI/View/Manager/ProjectManager.cpp +++ b/GUI/View/Manager/ProjectManager.cpp @@ -37,8 +37,6 @@ const QString S_AUTOSAVE = "EnableAutosave"; const QString S_DEFAULTPROJECTPATH = "DefaultProjectPath"; const QString S_RECENTPROJECTS = "RecentProjects"; const QString S_LASTUSEDIMPORTDIR = "LastUsedImportDir"; -const QString S_LASTUSEDIMPORFILTER1D = "LastUsedImportFilter1D"; -const QString S_LASTUSEDIMPORFILTER2D = "LastUsedImportFilter2D"; } // namespace @@ -73,18 +71,13 @@ void ProjectManager::readSettings() if (settings.childGroups().contains(S_PROJECTMANAGER)) { settings.beginGroup(S_PROJECTMANAGER); + m_working_directory = settings.value(S_DEFAULTPROJECTPATH).toString(); + if (!settings.contains(S_AUTOSAVE)) settings.setValue(S_AUTOSAVE, true); - m_working_directory = settings.value(S_DEFAULTPROJECTPATH).toString(); m_recent_projects = settings.value(S_RECENTPROJECTS).toStringList(); - if (settings.contains(S_LASTUSEDIMPORTDIR)) - m_import_directory = settings.value(S_LASTUSEDIMPORTDIR, QString()).toString(); - - m_import_filter1D = settings.value(S_LASTUSEDIMPORFILTER1D, m_import_filter1D).toString(); - m_import_filter2D = settings.value(S_LASTUSEDIMPORFILTER2D, m_import_filter2D).toString(); - setAutosaveEnabled(settings.value(S_AUTOSAVE).toBool()); settings.endGroup(); @@ -100,11 +93,6 @@ void ProjectManager::writeSettings() settings.setValue(S_DEFAULTPROJECTPATH, m_working_directory); settings.setValue(S_RECENTPROJECTS, m_recent_projects); - if (!m_import_directory.isEmpty()) - settings.setValue(S_LASTUSEDIMPORTDIR, m_import_directory); - settings.setValue(S_LASTUSEDIMPORFILTER1D, m_import_filter1D); - settings.setValue(S_LASTUSEDIMPORFILTER2D, m_import_filter2D); - settings.endGroup(); } @@ -129,40 +117,6 @@ QString ProjectManager::projectDir() const return ""; } -//! Returns directory name which was used by the user to import files. - -QString ProjectManager::userImportDir() const -{ - if (m_import_directory.isEmpty()) { - if (gDoc) - return gDoc->userExportDir(); - return ""; - } - return m_import_directory; -} //! Sets user import directory in system settings. - -void ProjectManager::setImportDir(const QString& dirname) -{ - m_import_directory = dirname; -} - -//! Sets user import directory in system settings. - -void ProjectManager::setImportDirFromFilePath(const QString& filePath) -{ - m_import_directory = QFileInfo(filePath).absolutePath(); -} - -void ProjectManager::setRecentlyUsedImportFilter1D(const QString& filter) -{ - m_import_filter1D = filter; -} - -void ProjectManager::setRecentlyUsedImportFilter2D(const QString& filter) -{ - m_import_filter2D = filter; -} - bool ProjectManager::isAutosaveEnabled() const { return static_cast<bool>(m_autosave); @@ -290,7 +244,7 @@ void ProjectManager::openProject(QString projectPullPath) if (projectPullPath.isEmpty()) { const QString ext = QString(GUI::Util::Project::projectFileExtension); projectPullPath = QFileDialog::getOpenFileName( - GUI::Global::mainWindow, "Open project file", workingDirectory(), + GUI::Global::mainWindow, "Open project file", m_working_directory, "BornAgain project Files (*" + ext + ")", nullptr, appSettings->useNativeFileDialog() ? QFileDialog::Options() : QFileDialog::DontUseNativeDialog); @@ -369,7 +323,7 @@ ProjectDocument::ReadResult ProjectManager::loadProject(const QString& fullPathA QString ProjectManager::acquireProjectPullPath() { - NewProjectDialog dialog(GUI::Global::mainWindow, workingDirectory(), untitledProjectName()); + NewProjectDialog dialog(GUI::Global::mainWindow, m_working_directory, untitledProjectName()); if (dialog.exec() != QDialog::Accepted) return ""; @@ -399,11 +353,11 @@ void ProjectManager::addToRecentProjects() QString ProjectManager::untitledProjectName() { QString result = "Untitled"; - QDir projectDir = workingDirectory() + "/" + result; + QDir projectDir = m_working_directory + "/" + result; if (projectDir.exists()) { for (size_t i = 1; i < 99; ++i) { result = QString("Untitled") + QString::number(i); - projectDir.setPath(workingDirectory() + "/" + result); + projectDir.setPath(m_working_directory + "/" + result); if (!projectDir.exists()) break; } diff --git a/GUI/View/Manager/ProjectManager.h b/GUI/View/Manager/ProjectManager.h index 4857dc137df90567d899338b414eb232ba2b932b..38a2a540c33cdf82795fdcba1e68d6def3c69c4e 100644 --- a/GUI/View/Manager/ProjectManager.h +++ b/GUI/View/Manager/ProjectManager.h @@ -34,13 +34,6 @@ public: QStringList recentProjects(); QString projectDir() const; - QString userImportDir() const; - QString recentlyUsedImportFilter1D() const { return m_import_filter1D; } - QString recentlyUsedImportFilter2D() const { return m_import_filter2D; } - void setImportDir(const QString& dirname); - void setImportDirFromFilePath(const QString& filePath); - void setRecentlyUsedImportFilter1D(const QString& filter); - void setRecentlyUsedImportFilter2D(const QString& filter); bool isAutosaveEnabled() const; AutosaveController* autosaveController() const; @@ -68,25 +61,13 @@ private: QString acquireProjectPullPath(); void addToRecentProjects(); - QString workingDirectory() { return m_working_directory; } QString untitledProjectName(); void riseProjectLoadFailedDialog(const MessageService& messageService); void riseProjectLoadProblemDialog(const MessageService& messageService); bool restoreProjectDialog(const QString& projectFileName, QString autosaveName); - //!< Name of directory where project directory was created. QString m_working_directory; - - //!< Name of directory from there user prefer to import files - QString m_import_directory; - - //! Recently used import filter for 1D files - QString m_import_filter1D; - - //! Recently used import filter for 2D files - QString m_import_filter2D; - QStringList m_recent_projects; std::unique_ptr<AutosaveController> m_autosave; diff --git a/GUI/View/Manager/PyImportAssistant.cpp b/GUI/View/Manager/PyImportAssistant.cpp index bb321792d3a86b68c2649400503365e3543aaa63..05144ce83b6bbf080ee7467df9fd8d3a3b5dcc3a 100644 --- a/GUI/View/Manager/PyImportAssistant.cpp +++ b/GUI/View/Manager/PyImportAssistant.cpp @@ -21,13 +21,13 @@ #include "GUI/Model/FromCore/ItemizeSample.h" #include "GUI/Model/FromCore/ItemizeSimulation.h" #include "GUI/Model/Project/ProjectUtil.h" +#include "GUI/Support/Data/Dirs.h" #include "GUI/Support/Util/Path.h" #include "GUI/Support/Util/String.h" #include "GUI/View/Info/ComboSelectorDialog.h" #include "GUI/View/Info/DetailedMessageBox.h" #include "GUI/View/Info/MessageBox.h" #include "GUI/View/Layout/ApplicationSettings.h" -#include "GUI/View/Manager/ProjectManager.h" #include "GUI/View/Tool/Globals.h" #include "PyCore/Embed/PyInterpreter.h" // listOfFunctions #include "PyCore/Sample/ImportMultiLayer.h" // createMultiLayerFromPython @@ -69,7 +69,7 @@ QString getCandidate(const QStringList& funcNames) QString fnameToOpen() { - QString dirname = ProjectManager::instance()->userImportDir(); + QString dirname = gDirs->userImportDir(); QString result = QFileDialog::getOpenFileName( GUI::Global::mainWindow, "Open python script", dirname, "Python scripts (*.py)", nullptr, @@ -77,7 +77,7 @@ QString fnameToOpen() : QFileDialog::DontUseNativeDialog); if (!result.isEmpty()) - ProjectManager::instance()->setImportDir(GUI::Path::fileDir(result)); + gDirs->setImportDir(GUI::Path::fileDir(result)); return result; }