23const QString DATA{
"pbData"};
24const QString SCRIPT{
"pbScript"};
25const QString EXTENSIONS{
"pbExt"};
29const std::string DATASEARCH_DIRS{
"datasearch.directories"};
30const std::string PYTHONSCRIPTS_DIRS{
"pythonscripts.directories"};
31const std::string USERPYTHONPLUGINS_DIRS{
"user.python.plugins.directories"};
32const std::string DATASEARCH_ARCHIVE{
"datasearch.searcharchive"};
33const std::string DEFAULT_FACILITY{
"default.facility"};
34const std::string DEFAULTSAVE_DIR{
"defaultsave.directory"};
38const auto LastDirectory{
"ManageUserSettings/last_directory"};
42const QString HELP_ID{
"ManageUserDirectories"};
45QPointer<ManageUserDirectories> CURRENTLY_OPEN_MUD;
53 if (CURRENTLY_OPEN_MUD.isNull()) {
55 CURRENTLY_OPEN_MUD->show();
57 CURRENTLY_OPEN_MUD->raise();
59 return CURRENTLY_OPEN_MUD;
67 setAttribute(Qt::WA_DeleteOnClose);
96 connect(
m_uiForm.pbDataRemDir, SIGNAL(clicked()),
this, SLOT(
remDir()));
97 connect(
m_uiForm.pbScriptRemDir, SIGNAL(clicked()),
this, SLOT(
remDir()));
98 connect(
m_uiForm.pbExtRemoveDir, SIGNAL(clicked()),
this, SLOT(
remDir()));
100 connect(
m_uiForm.pbDataMoveUp, SIGNAL(clicked()),
this, SLOT(
moveUp()));
101 connect(
m_uiForm.pbScriptMoveUp, SIGNAL(clicked()),
this, SLOT(
moveUp()));
102 connect(
m_uiForm.pbExtMoveUp, SIGNAL(clicked()),
this, SLOT(
moveUp()));
103 connect(
m_uiForm.pbDataMoveDown, SIGNAL(clicked()),
this, SLOT(
moveDown()));
104 connect(
m_uiForm.pbScriptMoveDown, SIGNAL(clicked()),
this, SLOT(
moveDown()));
114 auto &config = ConfigService::Instance();
115 auto populateListWidget = [&config](QListWidget *widget,
const std::string &key) {
116 const auto directories = QString::fromStdString(config.getString(key)).trimmed();
117 const auto items = directories.split(
";", Qt::SkipEmptyParts);
119 widget->addItems(items);
122 populateListWidget(
m_uiForm.lwDataSearchDirs, ConfigKeys::DATASEARCH_DIRS);
123 populateListWidget(
m_uiForm.lwScriptSearchDirs, ConfigKeys::PYTHONSCRIPTS_DIRS);
124 populateListWidget(
m_uiForm.lwExtSearchDirs, ConfigKeys::USERPYTHONPLUGINS_DIRS);
127 const auto archive = QString::fromStdString(config.getString(ConfigKeys::DATASEARCH_ARCHIVE)).trimmed().toLower();
128 const auto defaultFacility =
129 QString::fromStdString(config.getString(ConfigKeys::DEFAULT_FACILITY)).trimmed().toUpper();
130 m_uiForm.cbSearchArchive->addItem(QString(
"default facility only - ") + defaultFacility);
131 m_uiForm.cbSearchArchive->addItem(
"all");
132 m_uiForm.cbSearchArchive->addItem(
"off");
133 if (archive ==
"on") {
134 m_uiForm.cbSearchArchive->setCurrentIndex(0);
135 }
else if (archive ==
"all") {
136 m_uiForm.cbSearchArchive->setCurrentIndex(1);
137 }
else if (archive ==
"off") {
138 m_uiForm.cbSearchArchive->setCurrentIndex(2);
140 m_uiForm.cbSearchArchive->addItem(
"custom - " + archive.toUpper());
141 m_uiForm.cbSearchArchive->setCurrentIndex(3);
145 const auto saveDir = QString::fromStdString(config.getString(ConfigKeys::DEFAULTSAVE_DIR)).trimmed();
146 m_uiForm.leDefaultSave->setText(saveDir);
153 auto &config = ConfigService::Instance();
155 QString newSearchArchive =
m_uiForm.cbSearchArchive->currentText().toLower();
156 if (newSearchArchive ==
"all" || newSearchArchive ==
"off") {
158 }
else if (newSearchArchive.startsWith(
"default facility only")) {
159 newSearchArchive =
"on";
164 QString::fromStdString(Mantid::Kernel::ConfigService::Instance().getString(
"datasearch.searcharchive"))
171 auto toConfigPath = [](QString path) {
174 auto unixStylePath = path.replace(
'\\',
'/');
175 if (!unixStylePath.endsWith(
'/'))
176 unixStylePath.append(
'/');
177 return unixStylePath;
179 auto toConfigString = [&toConfigPath](QListWidget *itemsWidget) {
181 for (
int i = 0; i < itemsWidget->count(); i++) {
182 const auto path = itemsWidget->item(i)->text().trimmed();
184 paths.append(toConfigPath(path));
186 return paths.join(
";").toStdString();
190 config.setString(ConfigKeys::DATASEARCH_ARCHIVE, newSearchArchive.toStdString());
191 config.setString(ConfigKeys::DATASEARCH_DIRS, toConfigString(
m_uiForm.lwDataSearchDirs));
192 config.setString(ConfigKeys::DEFAULTSAVE_DIR, toConfigPath(
m_uiForm.leDefaultSave->text().trimmed()).toStdString());
194 config.setString(ConfigKeys::PYTHONSCRIPTS_DIRS, toConfigString(
m_uiForm.lwScriptSearchDirs));
195 config.setString(ConfigKeys::USERPYTHONPLUGINS_DIRS, toConfigString(
m_uiForm.lwExtSearchDirs));
198 config.saveConfig(config.getUserFilename());
207 const auto objectName = sender->objectName();
208 if (objectName.contains(ButtonPrefix::DATA)) {
210 }
else if (objectName.contains(ButtonPrefix::SCRIPT)) {
212 }
else if (objectName.contains(ButtonPrefix::EXTENSIONS)) {
236 QLineEdit *input(
nullptr);
240 }
else if (
m_uiForm.tabWidget->currentWidget() ==
m_uiForm.tabPythonDirectories) {
241 input =
m_uiForm.leDirectoryPathPython;
244 if (input && input->text() !=
"") {
255 const auto lastDirectory = settings.value(QSettingsKeys::LastDirectory,
"").toString();
257 const auto newDir = QFileDialog::getExistingDirectory(
this, tr(
"Select New Data Directory"), lastDirectory,
258 QFileDialog::ShowDirsOnly);
260 if (!newDir.isEmpty()) {
269 for (
auto &i : selected) {
278 for (
auto &i : selected) {
279 int index = list->row(i);
280 int count = list->count();
285 newIndex =
index + offset;
287 if (newIndex >= 0 && newIndex <
count) {
288 QListWidgetItem *move = list->takeItem(
index);
289 list->insertItem(newIndex, move);
291 list->setCurrentItem(i);
307 auto lastDirectory =
m_uiForm.leDefaultSave->text().trimmed();
308 if (lastDirectory.isEmpty())
309 lastDirectory = settings.value(QSettingsKeys::LastDirectory,
"").toString();
311 const auto newDir = QFileDialog::getExistingDirectory(
this, tr(
"Select New Default Save Directory"), lastDirectory,
312 QFileDialog::ShowDirsOnly);
314 if (!newDir.isEmpty()) {
315 auto path = QDir::cleanPath(newDir);
316 if (!path.endsWith(QDir::separator())) {
317 path += QDir::separator();
320 m_uiForm.leDefaultSave->setText(path);
std::map< DeltaEMode::Type, std::string > index
static void showCustomInterface(const QString &name, const QString &area=QString(), const QString §ion=QString())
Access and update the user directory settings within the Mantid config service.
void saveProperties()
Save the current contents of the widgets back to the main config.
void confirmClicked()
Persist the properties to the config store and close the dialog.
void loadProperties()
Load config properties into the form widgets.
void moveItem(bool toTop, int offset)
Move an item in the list based on the sender of the signal and a specified direction.
void browseToDirectory()
Browse to find a new directory.
void selectSaveDir()
Find an existing directory to be used for the save directory path.
void enableSaveToFile(bool enabled)
Control if the config service changes are persisted to the user file.
void moveDown()
Lower an item down in the list based on the sender of the signal.
static ManageUserDirectories * openManageUserDirectories()
Show the default dialog or raise the existing one if it exists.
QListWidget * listWidget(QObject *object)
Return the QListWidget related to the given sender.
virtual void initLayout() final
Create the UI layout, fill the widgets and connect the relevant signals.
void moveUp()
Raise an item up in the list based on the sender of the signal.
ManageUserDirectories(QWidget *parent=nullptr)
Constructor.
void moveToTop()
Raise an item to the top in the list based on the sender of the signal.
void helpClicked()
Show the help for ManageUserDirectories.
void cancelClicked()
Close the dialog without saving the configuration.
void addDirectory()
Handle the add directory button to take the text from a text box based on the signal sender to the co...
Ui::ManageUserDirectories m_uiForm
void remDir()
Remove a directory from the list based on the sender.
Mantid::Kernel::SingletonHolder< ConfigServiceImpl > ConfigService