mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-03 07:35:53 +08:00
refs #585, GUI component for settings
(integrated in mapping tool for a 1st test)
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>400</width>
|
<width>400</width>
|
||||||
<height>364</height>
|
<height>497</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
@@ -32,6 +32,28 @@
|
|||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>4</number>
|
<number>4</number>
|
||||||
</property>
|
</property>
|
||||||
|
<item row="0" column="0" rowspan="2">
|
||||||
|
<widget class="QGroupBox" name="gb_SwiftDb">
|
||||||
|
<property name="title">
|
||||||
|
<string>swift DB</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="BlackGui::Components::CDbDebugDatabaseSetup" name="comp_DebugDb">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="BlackGui::Components::CDbLoginComponent" name="comp_LoginComponent">
|
<widget class="BlackGui::Components::CDbLoginComponent" name="comp_LoginComponent">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
@@ -40,6 +62,12 @@
|
|||||||
<height>150</height>
|
<height>150</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
<zorder>comp_DebugDb</zorder>
|
||||||
|
<zorder>comp_DebugDb</zorder>
|
||||||
|
<zorder>comp_DebugDb</zorder>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0" colspan="2">
|
<item row="2" column="0" colspan="2">
|
||||||
@@ -91,14 +119,14 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="0" column="1" rowspan="2">
|
||||||
<widget class="BlackGui::Components::CDbDebugDatabaseSetup" name="comp_DebugDb">
|
<widget class="QGroupBox" name="gb_Simulator">
|
||||||
<property name="minimumSize">
|
<property name="title">
|
||||||
<size>
|
<string>Simulator</string>
|
||||||
<width>0</width>
|
|
||||||
<height>40</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="BlackGui::Components::CSettingsSimulatorBasicsComponent" name="comp_SimulatorComponent">
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::StyledPanel</enum>
|
<enum>QFrame::StyledPanel</enum>
|
||||||
</property>
|
</property>
|
||||||
@@ -109,6 +137,9 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>BlackGui::Components::CDbLoginComponent</class>
|
<class>BlackGui::Components::CDbLoginComponent</class>
|
||||||
@@ -128,6 +159,12 @@
|
|||||||
<header>blackgui/components/distributorpreferencescomponent.h</header>
|
<header>blackgui/components/distributorpreferencescomponent.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>BlackGui::Components::CSettingsSimulatorBasicsComponent</class>
|
||||||
|
<extends>QFrame</extends>
|
||||||
|
<header>blackgui/components/settingssimulatorbasicscomponent.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>129</width>
|
<width>130</width>
|
||||||
<height>79</height>
|
<height>35</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
<enum>QFrame::Raised</enum>
|
<enum>QFrame::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="0" column="1">
|
<item row="0" column="1" alignment="Qt::AlignLeft">
|
||||||
<widget class="QCheckBox" name="cb_EnableServerDebugging">
|
<widget class="QCheckBox" name="cb_EnableServerDebugging">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -34,19 +34,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
|
||||||
<spacer name="vs_DebugDatabaseSetup">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>40</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|||||||
259
src/blackgui/components/settingssimulatorbasicscomponent.cpp
Normal file
259
src/blackgui/components/settingssimulatorbasicscomponent.cpp
Normal file
@@ -0,0 +1,259 @@
|
|||||||
|
/* Copyright (C) 2016
|
||||||
|
* swift project Community / Contributors
|
||||||
|
*
|
||||||
|
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||||
|
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
|
||||||
|
* including this file, may be copied, modified, propagated, or distributed except according to the terms
|
||||||
|
* contained in the LICENSE file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "settingssimulatorbasicscomponent.h"
|
||||||
|
#include "ui_settingssimulatorbasicscomponent.h"
|
||||||
|
#include "blackmisc/fileutils.h"
|
||||||
|
#include "blackmisc/logmessage.h"
|
||||||
|
#include "blackconfig/buildconfig.h"
|
||||||
|
|
||||||
|
using namespace BlackMisc;
|
||||||
|
using namespace BlackMisc::Simulation;
|
||||||
|
using namespace BlackMisc::Simulation::Settings;
|
||||||
|
using namespace BlackConfig;
|
||||||
|
|
||||||
|
namespace BlackGui
|
||||||
|
{
|
||||||
|
namespace Components
|
||||||
|
{
|
||||||
|
CSettingsSimulatorBasicsComponent::CSettingsSimulatorBasicsComponent(QWidget *parent) :
|
||||||
|
QFrame(parent),
|
||||||
|
ui(new Ui::CSettingsSimulatorBasicsComponent)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
this->setSmallLayout(true); // no disadvantage, so I always set it
|
||||||
|
ui->comp_SimulatorSelector->setMode(CSimulatorSelector::RadioButtons);
|
||||||
|
ui->comp_SimulatorSelector->setToLastSelection();
|
||||||
|
connect(ui->pb_ExcludeFileDialog, &QPushButton::clicked, this, &CSettingsSimulatorBasicsComponent::ps_excludeFileDialog);
|
||||||
|
connect(ui->pb_ModelFileDialog, &QPushButton::clicked, this, &CSettingsSimulatorBasicsComponent::ps_modelFileDialog);
|
||||||
|
connect(ui->pb_SimulatorFileDialog, &QPushButton::clicked, this, &CSettingsSimulatorBasicsComponent::ps_simulatorFileDialog);
|
||||||
|
connect(ui->pb_Save, &QPushButton::clicked, this, &CSettingsSimulatorBasicsComponent::ps_save);
|
||||||
|
connect(ui->pb_Reset, &QPushButton::clicked, this, &CSettingsSimulatorBasicsComponent::ps_reset);
|
||||||
|
connect(ui->pb_CopyDefaults, &QPushButton::clicked, this, &CSettingsSimulatorBasicsComponent::ps_copyDefaults);
|
||||||
|
connect(ui->comp_SimulatorSelector, &CSimulatorSelector::changed, this, &CSettingsSimulatorBasicsComponent::ps_simulatorChanged);
|
||||||
|
connect(ui->le_ModelDirectory, &QLineEdit::returnPressed, this, &CSettingsSimulatorBasicsComponent::ps_modelDirectoryEntered);
|
||||||
|
connect(ui->le_SimulatorDirectory, &QLineEdit::returnPressed, this, &CSettingsSimulatorBasicsComponent::ps_simulatorDirectoryEntered);
|
||||||
|
|
||||||
|
const CSimulatorInfo simulator(ui->comp_SimulatorSelector->getValue());
|
||||||
|
this->displayDefaultValuesAsPlaceholder(simulator);
|
||||||
|
}
|
||||||
|
|
||||||
|
CSettingsSimulatorBasicsComponent::~CSettingsSimulatorBasicsComponent()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::hideSelector(bool show)
|
||||||
|
{
|
||||||
|
ui->comp_SimulatorSelector->setVisible(show);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::setSimulator(const CSimulatorInfo &simulator)
|
||||||
|
{
|
||||||
|
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator");
|
||||||
|
ui->comp_SimulatorSelector->setValue(simulator);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::setSmallLayout(bool small)
|
||||||
|
{
|
||||||
|
ui->lbl_ExcludeDirectories->setWordWrap(small);
|
||||||
|
ui->lbl_ModelDirectory->setWordWrap(small);
|
||||||
|
ui->lbl_SimulatorDirectory->setWordWrap(small);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::ps_simulatorFileDialog()
|
||||||
|
{
|
||||||
|
const QString startDirectory = this->getBestCurrentSimulatorDirectory();
|
||||||
|
const QString dir = QFileDialog::getExistingDirectory(this, tr("Simulator directory"), startDirectory,
|
||||||
|
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
||||||
|
if (dir.isEmpty()) { return; }
|
||||||
|
ui->le_SimulatorDirectory->setText(CFileUtils::normalizeFilePathToQtStandard(dir));
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::ps_modelFileDialog()
|
||||||
|
{
|
||||||
|
const QString startDirectory = this->getBestCurrentModelDirectory();
|
||||||
|
const QString dir = QFileDialog::getExistingDirectory(this, tr("Model directory"), startDirectory,
|
||||||
|
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
||||||
|
if (dir.isEmpty()) { return; }
|
||||||
|
ui->le_ModelDirectory->setText(CFileUtils::normalizeFilePathToQtStandard(dir));
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::ps_excludeFileDialog()
|
||||||
|
{
|
||||||
|
const QString startDirectory = this->getBestCurrentModelDirectory();
|
||||||
|
const QString dir = QFileDialog::getExistingDirectory(this, tr("Exclude directory"), startDirectory,
|
||||||
|
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
||||||
|
if (dir.isEmpty()) { return; }
|
||||||
|
this->addExcludeDirectoryPattern(dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::ps_simulatorDirectoryEntered()
|
||||||
|
{
|
||||||
|
const CSimulatorInfo simulator(ui->comp_SimulatorSelector->getValue());
|
||||||
|
const QString sd = CFileUtils::normalizeFilePathToQtStandard(ui->le_SimulatorDirectory->text().trimmed());
|
||||||
|
ui->le_SimulatorDirectory->setText(sd);
|
||||||
|
this->displayDefaultValuesAsPlaceholder(simulator);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::ps_modelDirectoryEntered()
|
||||||
|
{
|
||||||
|
const CSimulatorInfo simulator(ui->comp_SimulatorSelector->getValue());
|
||||||
|
const QString md = CFileUtils::normalizeFilePathToQtStandard(ui->le_ModelDirectory->text().trimmed());
|
||||||
|
ui->le_ModelDirectory->setText(md);
|
||||||
|
this->displayDefaultValuesAsPlaceholder(simulator);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::ps_save()
|
||||||
|
{
|
||||||
|
const CSimulatorInfo simulator(ui->comp_SimulatorSelector->getValue());
|
||||||
|
CSettingsSimulator s = this->getSettings(simulator);
|
||||||
|
const QString sd(ui->le_SimulatorDirectory->text().trimmed());
|
||||||
|
const QString md(ui->le_ModelDirectory->text().trimmed());
|
||||||
|
const QStringList ed(this->parseExcludeDirectories());
|
||||||
|
const QStringList red = CFileUtils::makeDirectoriesRelative(ed, this->getBestCurrentModelDirectory(), this->m_fileCaseSensitivity);
|
||||||
|
s.setSimulatorDirectory(sd);
|
||||||
|
s.setModelDirectory(md);
|
||||||
|
s.setModelExcludeDirectories(red);
|
||||||
|
const CStatusMessage m = this->m_settings.setAndSaveSettings(s, simulator);
|
||||||
|
if (!m.isEmpty())
|
||||||
|
{
|
||||||
|
CLogMessage::preformatted(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
// display as saved
|
||||||
|
this->displaySettings(simulator);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::ps_copyDefaults()
|
||||||
|
{
|
||||||
|
const CSimulatorInfo simulator(ui->comp_SimulatorSelector->getValue());
|
||||||
|
const QString sd(this->m_settings.getDefaultSimulatorDirectory(simulator));
|
||||||
|
ui->le_SimulatorDirectory->setText(CFileUtils::normalizeFilePathToQtStandard(sd));
|
||||||
|
const QString md(this->m_settings.getDefaultModelDirectory(simulator));
|
||||||
|
ui->le_ModelDirectory->setText(CFileUtils::normalizeFilePathToQtStandard(md));
|
||||||
|
const QStringList excludes(this->m_settings.getDefaultModelExcludeDirectoryPatterns(simulator));
|
||||||
|
this->displayExcludeDirectoryPatterns(excludes, md);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::ps_reset()
|
||||||
|
{
|
||||||
|
const CSimulatorInfo simulator(ui->comp_SimulatorSelector->getValue());
|
||||||
|
ui->le_SimulatorDirectory->clear();
|
||||||
|
ui->le_ModelDirectory->clear();
|
||||||
|
ui->pte_ExcludeDirectories->clear();
|
||||||
|
this->displayDefaultValuesAsPlaceholder(simulator);
|
||||||
|
this->m_settings.resetToDefaults(simulator);
|
||||||
|
CLogMessage(this).info("Reset values for settings of %1") << simulator.toQString(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::ps_simulatorChanged()
|
||||||
|
{
|
||||||
|
const CSimulatorInfo simulator(ui->comp_SimulatorSelector->getValue());
|
||||||
|
this->displayDefaultValuesAsPlaceholder(simulator);
|
||||||
|
this->displaySettings(simulator);
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList CSettingsSimulatorBasicsComponent::parseExcludeDirectories() const
|
||||||
|
{
|
||||||
|
const QString raw = ui->pte_ExcludeDirectories->toPlainText().trimmed();
|
||||||
|
if (raw.isEmpty()) { return QStringList(); }
|
||||||
|
QStringList rawLines = raw.split(QRegExp("\n|\r\n|\r"));
|
||||||
|
QStringList dirs;
|
||||||
|
for (const QString &l : rawLines)
|
||||||
|
{
|
||||||
|
const QString normalized = CFileUtils::normalizeFilePathToQtStandard(l);
|
||||||
|
if (normalized.isEmpty()) { continue; }
|
||||||
|
dirs.push_back(normalized);
|
||||||
|
}
|
||||||
|
dirs.removeDuplicates();
|
||||||
|
dirs.sort(this->m_fileCaseSensitivity);
|
||||||
|
return dirs;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::addExcludeDirectoryPattern(const QString &excludeDirectoryPattern)
|
||||||
|
{
|
||||||
|
const QString d(CFileUtils::normalizeFilePathToQtStandard(excludeDirectoryPattern));
|
||||||
|
if (d.isEmpty()) { return; }
|
||||||
|
QStringList dirs = this->parseExcludeDirectories();
|
||||||
|
if (!dirs.contains(d, this->m_fileCaseSensitivity))
|
||||||
|
{
|
||||||
|
dirs.push_back(d);
|
||||||
|
}
|
||||||
|
dirs.removeDuplicates();
|
||||||
|
dirs.sort(this->m_fileCaseSensitivity);
|
||||||
|
this->displayExcludeDirectoryPatterns(dirs, ui->le_ModelDirectory->text().trimmed());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::displayExcludeDirectoryPatterns(const QStringList &dirs, const QString &modelDir)
|
||||||
|
{
|
||||||
|
const QStringList relativeDirectories = CFileUtils::makeDirectoriesRelative(dirs, modelDir);
|
||||||
|
const QString d = relativeDirectories.join("\n");
|
||||||
|
ui->pte_ExcludeDirectories->setPlainText(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
CSettingsSimulator CSettingsSimulatorBasicsComponent::getSettings(const CSimulatorInfo &simulator) const
|
||||||
|
{
|
||||||
|
const CSettingsSimulator s = this->m_settings.getSettings(simulator);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::displaySettings(const CSimulatorInfo &simulator)
|
||||||
|
{
|
||||||
|
const CSettingsSimulator s = this->getSettings(simulator);
|
||||||
|
this->displayExcludeDirectoryPatterns(s.getModelExcludeDirectoryPatterns(), s.getModelDirectory());
|
||||||
|
ui->le_SimulatorDirectory->setText(s.getSimulatorDirectory());
|
||||||
|
ui->le_ModelDirectory->setText(s.getModelDirectory());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsSimulatorBasicsComponent::displayDefaultValuesAsPlaceholder(const CSimulatorInfo &simulator)
|
||||||
|
{
|
||||||
|
const QString s = this->m_settings.getDefaultSimulatorDirectory(simulator);
|
||||||
|
ui->le_SimulatorDirectory->setPlaceholderText(s.isEmpty() ? "Simulator directory" : s);
|
||||||
|
|
||||||
|
const QString m = this->m_settings.getDefaultModelDirectory(simulator);
|
||||||
|
ui->le_ModelDirectory->setPlaceholderText(m.isEmpty() ? "Model directory" : m);
|
||||||
|
|
||||||
|
const QStringList e = this->m_settings.getDefaultModelExcludeDirectoryPatterns(simulator);
|
||||||
|
if (e.isEmpty())
|
||||||
|
{
|
||||||
|
ui->pte_ExcludeDirectories->setPlaceholderText("Exclude directories");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const QString es(e.join('\n'));
|
||||||
|
ui->pte_ExcludeDirectories->setPlaceholderText(es);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CSettingsSimulatorBasicsComponent::getBestCurrentModelDirectory() const
|
||||||
|
{
|
||||||
|
const CSimulatorInfo simulator(ui->comp_SimulatorSelector->getValue());
|
||||||
|
QString md(ui->le_ModelDirectory->text().trimmed());
|
||||||
|
if (md.isEmpty())
|
||||||
|
{
|
||||||
|
md = this->m_settings.getModelDirectoryOrDefault(simulator);
|
||||||
|
}
|
||||||
|
if (md.isEmpty())
|
||||||
|
{
|
||||||
|
md = this->getBestCurrentSimulatorDirectory();
|
||||||
|
}
|
||||||
|
return CFileUtils::normalizeFilePathToQtStandard(md);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CSettingsSimulatorBasicsComponent::getBestCurrentSimulatorDirectory() const
|
||||||
|
{
|
||||||
|
const CSimulatorInfo simulator(ui->comp_SimulatorSelector->getValue());
|
||||||
|
QString sd(ui->le_SimulatorDirectory->text().trimmed());
|
||||||
|
if (sd.isEmpty())
|
||||||
|
{
|
||||||
|
sd = this->m_settings.getSimulatorDirectoryOrDefault(simulator);
|
||||||
|
}
|
||||||
|
return CFileUtils::normalizeFilePathToQtStandard(sd);
|
||||||
|
}
|
||||||
|
} // ns
|
||||||
|
} // ns
|
||||||
91
src/blackgui/components/settingssimulatorbasicscomponent.h
Normal file
91
src/blackgui/components/settingssimulatorbasicscomponent.h
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
/* Copyright (C) 2016
|
||||||
|
* swift project Community / Contributors
|
||||||
|
*
|
||||||
|
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||||
|
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
|
||||||
|
* including this file, may be copied, modified, propagated, or distributed except according to the terms
|
||||||
|
* contained in the LICENSE file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//! \file
|
||||||
|
|
||||||
|
#ifndef BLACKGUI_COMPONENTS_SETTINGSSIMULATORBASICSCOMPONENT_H
|
||||||
|
#define BLACKGUI_COMPONENTS_SETTINGSSIMULATORBASICSCOMPONENT_H
|
||||||
|
|
||||||
|
#include "blackmisc/simulation/settings/settingssimulator.h"
|
||||||
|
#include <QFrame>
|
||||||
|
#include <QFileDialog>
|
||||||
|
|
||||||
|
namespace Ui { class CSettingsSimulatorBasicsComponent; }
|
||||||
|
namespace BlackGui
|
||||||
|
{
|
||||||
|
namespace Components
|
||||||
|
{
|
||||||
|
/*!
|
||||||
|
* 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
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! Constructor
|
||||||
|
explicit CSettingsSimulatorBasicsComponent(QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
//! Destructor
|
||||||
|
virtual ~CSettingsSimulatorBasicsComponent();
|
||||||
|
|
||||||
|
//! Show / hide selector
|
||||||
|
void hideSelector(bool show);
|
||||||
|
|
||||||
|
//! Simulator
|
||||||
|
void setSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void ps_modelFileDialog();
|
||||||
|
void ps_excludeFileDialog();
|
||||||
|
void ps_simulatorFileDialog();
|
||||||
|
void ps_simulatorDirectoryEntered();
|
||||||
|
void ps_modelDirectoryEntered();
|
||||||
|
void ps_save();
|
||||||
|
void ps_copyDefaults();
|
||||||
|
void ps_reset();
|
||||||
|
void ps_simulatorChanged();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QScopedPointer<Ui::CSettingsSimulatorBasicsComponent> ui;
|
||||||
|
BlackMisc::Simulation::Settings::CMultiSimulatorSimulatorSettings m_settings { this };
|
||||||
|
Qt::CaseSensitivity m_fileCaseSensitivity = BlackMisc::CFileUtils::osFileNameCaseSensitivity();
|
||||||
|
|
||||||
|
//! Optimize for small layout
|
||||||
|
void setSmallLayout(bool small);
|
||||||
|
|
||||||
|
//! Exclude directories from line edit
|
||||||
|
QStringList parseExcludeDirectories() const;
|
||||||
|
|
||||||
|
//! Add an exclude directory
|
||||||
|
void addExcludeDirectoryPattern(const QString &excludeDirectoryPattern);
|
||||||
|
|
||||||
|
//! Display the directories
|
||||||
|
void displayExcludeDirectoryPatterns(const QStringList &dirs, const QString &modelDir);
|
||||||
|
|
||||||
|
//! Current settings
|
||||||
|
BlackMisc::Simulation::Settings::CSettingsSimulator getSettings(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
|
||||||
|
|
||||||
|
//! Display simulator`s settings
|
||||||
|
void displaySettings(const BlackMisc::Simulation::CSimulatorInfo &simulator);
|
||||||
|
|
||||||
|
//! Default values for simulator displayed as placeholder text
|
||||||
|
void displayDefaultValuesAsPlaceholder(const BlackMisc::Simulation::CSimulatorInfo &simulator);
|
||||||
|
|
||||||
|
//! Model directory either from input or settings or default
|
||||||
|
QString getBestCurrentModelDirectory() const;
|
||||||
|
|
||||||
|
//! Simulator directory either from input or settings or default
|
||||||
|
QString getBestCurrentSimulatorDirectory() const;
|
||||||
|
};
|
||||||
|
} // ns
|
||||||
|
} // ns
|
||||||
|
|
||||||
|
#endif // guard
|
||||||
141
src/blackgui/components/settingssimulatorbasicscomponent.ui
Normal file
141
src/blackgui/components/settingssimulatorbasicscomponent.ui
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>CSettingsSimulatorBasicsComponent</class>
|
||||||
|
<widget class="QFrame" name="CSettingsSimulatorBasicsComponent">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Frame</string>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="4" column="4">
|
||||||
|
<widget class="QPushButton" name="pb_CopyDefaults">
|
||||||
|
<property name="text">
|
||||||
|
<string>copy defaults</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="4">
|
||||||
|
<widget class="QPushButton" name="pb_ModelFileDialog">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QLineEdit" name="le_ModelDirectory">
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>Model directory path</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0" alignment="Qt::AlignTop">
|
||||||
|
<widget class="QLabel" name="lbl_ExcludeDirectories">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Excluded from model loading</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Exclude directories:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="4">
|
||||||
|
<widget class="QPushButton" name="pb_Save">
|
||||||
|
<property name="text">
|
||||||
|
<string>save</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="4">
|
||||||
|
<widget class="QPushButton" name="pb_Reset">
|
||||||
|
<property name="text">
|
||||||
|
<string>reset</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="lbl_ModelDirectory">
|
||||||
|
<property name="text">
|
||||||
|
<string>Model directory:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="4" alignment="Qt::AlignTop">
|
||||||
|
<widget class="QPushButton" name="pb_ExcludeFileDialog">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="lbl_SimulatorDirectory">
|
||||||
|
<property name="text">
|
||||||
|
<string>Simulator directory;</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QLineEdit" name="le_SimulatorDirectory">
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>Simulator directory path</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="2" rowspan="4">
|
||||||
|
<widget class="QPlainTextEdit" name="pte_ExcludeDirectories">
|
||||||
|
<property name="documentTitle">
|
||||||
|
<string>Excluded directory patterns</string>
|
||||||
|
</property>
|
||||||
|
<property name="lineWrapMode">
|
||||||
|
<enum>QPlainTextEdit::NoWrap</enum>
|
||||||
|
</property>
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>Excluded directory patterns</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="4">
|
||||||
|
<widget class="QPushButton" name="pb_SimulatorFileDialog">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="0" colspan="4" alignment="Qt::AlignRight">
|
||||||
|
<widget class="BlackGui::Components::CSimulatorSelector" name="comp_SimulatorSelector">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>175</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="lineWidth">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>BlackGui::Components::CSimulatorSelector</class>
|
||||||
|
<extends>QFrame</extends>
|
||||||
|
<header>blackgui/components/simulatorselector.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
||||||
Reference in New Issue
Block a user