Ref T229, do not display a directory if same as default

* component: made overlay compliant
* sim.dir can be empty on a machine where no simulator is installed
* formatting
* utility functions
This commit is contained in:
Klaus Basan
2018-01-20 04:01:29 +01:00
parent 9a9abbe382
commit 50eb93cf40
5 changed files with 150 additions and 71 deletions

View File

@@ -25,8 +25,14 @@ namespace BlackGui
{
namespace Components
{
const CLogCategoryList &CSettingsSimulatorBasicsComponent::getLogCategories()
{
static const CLogCategoryList cats({ CLogCategory::guiComponent(), CLogCategory::wizard() });
return cats;
}
CSettingsSimulatorBasicsComponent::CSettingsSimulatorBasicsComponent(QWidget *parent) :
QFrame(parent),
COverlayMessagesFrame(parent),
ui(new Ui::CSettingsSimulatorBasicsComponent)
{
ui->setupUi(this);
@@ -112,6 +118,13 @@ namespace BlackGui
const QString simulatorDir(ui->le_SimulatorDirectory->text().trimmed());
const QStringList modelDirs(this->parseDirectories(ui->pte_ModelDirectories->toPlainText()));
const QStringList excludeDirs(this->parseDirectories(ui->pte_ExcludeDirectories->toPlainText()));
if (simulatorDir.trimmed().isEmpty())
{
this->showOverlayMessage(CStatusMessage(this).validationError("Empty simulator directory"));
return;
}
const QStringList relativeDirs = CFileUtils::makeDirectoriesRelative(excludeDirs, this->getFileBrowserModelDirectory(), m_fileCaseSensitivity);
s.setSimulatorDirectory(simulatorDir);
s.setModelDirectories(modelDirs);
@@ -187,7 +200,8 @@ namespace BlackGui
const QString raw = rawString.trimmed();
if (raw.isEmpty()) { return QStringList(); }
QStringList dirs;
const QStringList rawLines = raw.split(QRegularExpression("\n|\r\n|\r"));
static thread_local QRegularExpression regExp("\n|\r\n|\r");
const QStringList rawLines = raw.split(regExp);
for (const QString &l : rawLines)
{
const QString normalized = CFileUtils::normalizeFilePathToQtStandard(l);
@@ -238,10 +252,9 @@ namespace BlackGui
void CSettingsSimulatorBasicsComponent::displaySettings(const CSimulatorInfo &simulator)
{
const CSimulatorSettings s = this->getSettings(simulator);
this->displayExcludeDirectoryPatterns(s.getModelExcludeDirectoryPatterns());
this->displayModelDirectories(s.getModelDirectories());
ui->le_SimulatorDirectory->setText(s.getSimulatorDirectory());
this->displayExcludeDirectoryPatterns(m_settings.getModelExcludeDirectoryPatternsIfNotDefault(simulator));
this->displayModelDirectories(m_settings.getModelDirectoriesIfNotDefault(simulator));
ui->le_SimulatorDirectory->setText(m_settings.getSimulatorDirectoryIfNotDefault(simulator));
}
void CSettingsSimulatorBasicsComponent::displayDefaultValuesAsPlaceholder(const CSimulatorInfo &simulator)

View File

@@ -12,8 +12,11 @@
#ifndef BLACKGUI_COMPONENTS_SETTINGSSIMULATORBASICSCOMPONENT_H
#define BLACKGUI_COMPONENTS_SETTINGSSIMULATORBASICSCOMPONENT_H
#include "blackgui/overlaymessagesframe.h"
#include "blackmisc/simulation/settings/simulatorsettings.h"
#include "blackmisc/simulation/fscommon/fscommonutil.h"
#include "blackmisc/logcategorylist.h"
#include <QFrame>
#include <QFileDialog>
@@ -26,11 +29,14 @@ namespace BlackGui
* Driver independent parts of simulator settings, ie those one are also used independent of the driver.
* Example: model paths used in loaders
*/
class CSettingsSimulatorBasicsComponent : public QFrame
class CSettingsSimulatorBasicsComponent : public COverlayMessagesFrame
{
Q_OBJECT
public:
//! Log categories
static const BlackMisc::CLogCategoryList &getLogCategories();
//! Constructor
explicit CSettingsSimulatorBasicsComponent(QWidget *parent = nullptr);
@@ -51,13 +57,28 @@ namespace BlackGui
BlackMisc::Simulation::Settings::CMultiSimulatorSettings m_settings { this };
Qt::CaseSensitivity m_fileCaseSensitivity = BlackMisc::CFileUtils::osFileNameCaseSensitivity();
//! Model file dialog
void modelFileDialog();
//! Exclude file dialog
void excludeFileDialog();
//! Simulator file dialog
void simulatorFileDialog();
//! Simulator directory entered
void simulatorDirectoryEntered();
//! Copy the default values
void copyDefaults();
//! Adjust model directory
void adjustModelDirectory();
//! Reset values
void reset();
//! Simulator has been changed
void simulatorChanged();
//! Optimize for small layout