6 #include <QStringBuilder>
16 using namespace swift::config;
17 using namespace swift::misc::physical_quantities;
18 using namespace swift::misc::simulation::fscommon;
19 using namespace swift::misc::simulation::xplane;
20 using namespace swift::misc::simulation::flightgear;
26 namespace swift::misc::simulation::settings
30 static const QString sf(
"simulator 1st");
31 static const QString dbf(
"DB 1st");
32 static const QString so(
"simulator only");
33 static const QString dbo(
"DB only");
37 case CGFromSimulatorFirst:
return sf;
38 case CGFromDBFirst:
return dbf;
39 case CGFromSimulatorOnly:
return so;
40 case CGFromDBOnly:
return dbo;
43 static const QString u(
"unknown");
47 CSimulatorSettings::CSimulatorSettings() {}
49 void CSimulatorSettings::setSimulatorDirectory(
const QString &simulatorDirectory)
51 m_simulatorDirectory = simulatorDirectory.trimmed();
54 const QString &CSimulatorSettings::getSimulatorDirectory()
const {
return m_simulatorDirectory; }
56 void CSimulatorSettings::setModelDirectories(
const QStringList &modelDirectories)
58 m_modelDirectories = modelDirectories;
59 m_modelDirectories.removeAll({});
60 m_modelDirectories.removeDuplicates();
63 void CSimulatorSettings::clearModelDirectories() { m_modelDirectories.clear(); }
65 void CSimulatorSettings::setModelDirectory(
const QString &modelDirectory)
67 m_modelDirectories = QStringList({ modelDirectory });
70 bool CSimulatorSettings::addModelDirectory(
const QString &modelDirectory)
72 const Qt::CaseSensitivity cs =
74 if (m_modelDirectories.contains(modelDirectory, cs)) {
return false; }
75 m_modelDirectories.push_back(modelDirectory);
76 m_modelDirectories.removeAll({});
77 m_modelDirectories.removeDuplicates();
81 const QStringList &CSimulatorSettings::getModelDirectories()
const {
return m_modelDirectories; }
83 void CSimulatorSettings::setModelExcludeDirectories(
const QStringList &excludeDirectories)
85 m_excludeDirectoryPatterns = excludeDirectories;
86 m_excludeDirectoryPatterns.removeAll({});
87 m_excludeDirectoryPatterns.removeDuplicates();
90 const QStringList &CSimulatorSettings::getModelExcludeDirectoryPatterns()
const
92 return m_excludeDirectoryPatterns;
95 bool CSimulatorSettings::setComIntegrated(
bool integrated)
97 if (integrated == m_comIntegration) {
return false; }
98 m_comIntegration = integrated;
104 const int s =
static_cast<int>(source);
105 if (m_cgSource == s) {
return false; }
110 bool CSimulatorSettings::setRecordOwnAircraftGnd(
bool record)
112 if (record == m_recordGnd) {
return false; }
113 m_recordGnd = record;
117 bool CSimulatorSettings::setRecordedGndRadius(
const CLength &radius)
119 if (radius == m_recordedGndRadius) {
return false; }
120 m_recordedGndRadius = radius;
124 void CSimulatorSettings::resetPaths()
126 m_excludeDirectoryPatterns.clear();
127 m_modelDirectories.clear();
128 m_simulatorDirectory.clear();
131 QString CSimulatorSettings::convertToQString(
bool i18n)
const {
return convertToQString(
", ", i18n); }
133 QString CSimulatorSettings::convertToQString(
const QString &separator,
bool i18n)
const
136 return u
"model directories: " % m_modelDirectories.join(
',') % separator % u
"exclude directories: " %
137 m_excludeDirectoryPatterns.join(
',');
142 if (index.
isMyself()) {
return QVariant::fromValue(*
this); }
146 case IndexSimulatorDirectory:
return QVariant::fromValue(m_simulatorDirectory);
147 case IndexModelDirectories:
return QVariant::fromValue(m_modelDirectories);
148 case IndexModelExcludeDirectoryPatterns:
return QVariant::fromValue(m_excludeDirectoryPatterns);
149 case IndexComIntegration:
return QVariant::fromValue(m_comIntegration);
150 case IndexRecordOwnAircraftGnd:
return QVariant::fromValue(m_recordGnd);
151 case IndexCGSource:
return QVariant::fromValue(m_cgSource);
152 case IndexRecordOwnAircraftGndRadius:
return m_recordedGndRadius.propertyByIndex(index.
copyFrontRemoved());
153 default:
return CValueObject::propertyByIndex(index);
167 case IndexSimulatorDirectory: this->setSimulatorDirectory(variant.toString());
break;
168 case IndexModelDirectories: this->setSimulatorDirectory(variant.toString());
break;
169 case IndexComIntegration: this->setComIntegrated(variant.toBool());
break;
170 case IndexRecordOwnAircraftGnd: this->setRecordOwnAircraftGnd(variant.toBool());
break;
171 case IndexModelExcludeDirectoryPatterns: m_excludeDirectoryPatterns = variant.value<QStringList>();
break;
172 case IndexCGSource: m_cgSource = variant.toInt();
break;
173 case IndexRecordOwnAircraftGndRadius:
176 default: CValueObject::setPropertyByIndex(index, variant);
break;
180 CMultiSimulatorSettings::CMultiSimulatorSettings(QObject *parent) : QObject(parent)
195 case CSimulatorInfo::FG:
return m_simSettingsFG.get();
196 case CSimulatorInfo::FS9:
return m_simSettingsFs9.get();
197 case CSimulatorInfo::FSX:
return m_simSettingsFsx.get();
198 case CSimulatorInfo::P3D:
return m_simSettingsP3D.get();
199 case CSimulatorInfo::MSFS:
return m_simSettingsMsfs.get();
200 case CSimulatorInfo::MSFS2024:
return m_simSettingsMsfs2024.get();
201 case CSimulatorInfo::XPLANE:
return m_simSettingsXP.get();
203 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
219 case CSimulatorInfo::FG:
return m_simSettingsFG.set(settings);
220 case CSimulatorInfo::FS9:
return m_simSettingsFs9.set(settings);
221 case CSimulatorInfo::FSX:
return m_simSettingsFsx.set(settings);
222 case CSimulatorInfo::P3D:
return m_simSettingsP3D.set(settings);
223 case CSimulatorInfo::MSFS:
return m_simSettingsMsfs.set(settings);
224 case CSimulatorInfo::MSFS2024:
return m_simSettingsMsfs2024.set(settings);
225 case CSimulatorInfo::XPLANE:
return m_simSettingsXP.set(settings);
226 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
238 u
"directory already existing");
257 case CSimulatorInfo::FG:
break;
258 case CSimulatorInfo::FS9:
break;
259 case CSimulatorInfo::FSX:
break;
260 case CSimulatorInfo::P3D:
break;
261 case CSimulatorInfo::MSFS:
break;
262 case CSimulatorInfo::MSFS2024:
break;
263 case CSimulatorInfo::XPLANE:
272 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
283 case CSimulatorInfo::FG:
return m_simSettingsFG.setAndSave(settings);
284 case CSimulatorInfo::FS9:
return m_simSettingsFs9.setAndSave(settings);
285 case CSimulatorInfo::FSX:
return m_simSettingsFsx.setAndSave(settings);
286 case CSimulatorInfo::P3D:
return m_simSettingsP3D.setAndSave(settings);
287 case CSimulatorInfo::MSFS:
return m_simSettingsMsfs.setAndSave(settings);
288 case CSimulatorInfo::MSFS2024:
return m_simSettingsMsfs2024.setAndSave(settings);
289 case CSimulatorInfo::XPLANE:
return m_simSettingsXP.setAndSave(settings);
290 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
306 case CSimulatorInfo::FG:
return m_simSettingsFG.save();
307 case CSimulatorInfo::FS9:
return m_simSettingsFs9.save();
308 case CSimulatorInfo::FSX:
return m_simSettingsFsx.save();
309 case CSimulatorInfo::P3D:
return m_simSettingsP3D.save();
310 case CSimulatorInfo::MSFS:
return m_simSettingsMsfs.save();
311 case CSimulatorInfo::MSFS2024:
return m_simSettingsMsfs2024.save();
312 case CSimulatorInfo::XPLANE:
return m_simSettingsXP.save();
313 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
374 void CMultiSimulatorSettings::onFsxSettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::fsx()); }
376 void CMultiSimulatorSettings::onP3DSettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::p3d()); }
378 void CMultiSimulatorSettings::onFs9SettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::fs9()); }
380 void CMultiSimulatorSettings::onMsfsSettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::msfs()); }
382 void CMultiSimulatorSettings::onMsfs2024SettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::msfs2024()); }
384 void CMultiSimulatorSettings::onXPSettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::xplane()); }
386 void CMultiSimulatorSettings::onFGSettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::fg()); }
388 void CMultiSimulatorSettings::emitSettingsChanged(
const CSimulatorInfo &simInfo)
395 m_technicalLogLevel =
static_cast<int>(severity);
402 if (m_technicalLogLevel < 0) {
return false; }
408 if (m_technicalLogLevel < 0) {
return false; }
414 if (m_technicalLogLevel < 0) {
return false; }
422 m_messageType =
static_cast<int>(messageType);
452 if (message.
isEmpty()) {
return false; }
455 const int s =
static_cast<int>(message.
getSeverity());
456 return (s >= m_technicalLogLevel);
463 if (msg.
isEmpty()) {
return false; }
465 if (m_messageType == NoTextMessages) {
return false; }
467 const TextMessageType mt =
static_cast<TextMessageType
>(m_messageType);
468 if (msg.
isPrivateMessage() && mt.testFlag(TextMessagePrivate)) {
return true; }
469 if (msg.
isSupervisorMessage() && (mt.testFlag(TextMessagePrivate) || mt.testFlag(TextMessageSupervisor)))
473 if (msg.
isSendToUnicom() && mt.testFlag(TextMessagesUnicom)) {
return true; }
478 if (mt.testFlag(TextMessagesCom1))
482 if (mt.testFlag(TextMessagesCom2))
492 return static_cast<CSimulatorMessagesSettings::TextMessageType
>(m_messageType);
498 static const QString s(
"Enabled %1, text messages: %2, severity: %3");
506 return s.arg(
boolToOnOff(m_relayGloballyEnabled)).arg(m_messageType).arg(severity);
511 if (index.
isMyself()) {
return QVariant::fromValue(*
this); }
515 case IndexTechnicalLogSeverity:
return QVariant::fromValue(m_technicalLogLevel);
516 case IndexRelayTextMessage:
return QVariant::fromValue(m_messageType);
517 case IndexRelayGloballyEnabled:
return QVariant::fromValue(m_relayGloballyEnabled);
532 case IndexTechnicalLogSeverity:
535 case IndexRelayTextMessage:
536 this->
setRelayTextMessages(
static_cast<CSimulatorMessagesSettings::TextMessageType
>(variant.toInt()));
550 static const QString empty;
580 case CSimulatorInfo::FG: dirs = QStringList(CFlightgearUtil::modelDirectoriesFromSimDir(s));
break;
581 case CSimulatorInfo::FS9: dirs = QStringList({ CFsDirectories::fs9AircraftDirFromSimDir(s) });
break;
582 case CSimulatorInfo::FSX:
583 dirs = CFsDirectories::fsxSimObjectsDirPlusAddOnXmlSimObjectsPaths(
584 CFsDirectories::fsxSimObjectsDirFromSimDir(s));
586 case CSimulatorInfo::P3D:
588 const QString versionHint = CFsDirectories::guessP3DVersion(s);
589 dirs = CFsDirectories::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(
590 CFsDirectories::p3dSimObjectsDirFromSimDir(s), versionHint);
593 case CSimulatorInfo::XPLANE: dirs = QStringList({ CXPlaneUtil::modelDirectoriesFromSimDir(s) });
break;
594 case CSimulatorInfo::MSFS: dirs = QStringList({ CFsDirectories::msfsSimObjectsDir() });
break;
595 case CSimulatorInfo::MSFS2024: dirs = QStringList({ CFsDirectories::msfs2024SimObjectsDir() });
break;
600 dirs.removeDuplicates();
615 static const QStringList empty;
629 static const QString empty;
641 static const QStringList empty;
661 static const QStringList e;
664 case CSimulatorInfo::FG:
666 return CFlightgearUtil::flightgearModelDirectories();
668 case CSimulatorInfo::FS9:
670 if (CFsDirectories::fs9AircraftDir().isEmpty()) {
return e; }
671 static const QStringList md({ CFsDirectories::fs9AircraftDir() });
674 case CSimulatorInfo::FSX:
676 if (CFsDirectories::fsxSimObjectsDir().isEmpty()) {
return e; }
677 static const QStringList md = CFsDirectories::fsxSimObjectsDirPlusAddOnXmlSimObjectsPaths();
680 case CSimulatorInfo::P3D:
682 static const QString p3d = CFsDirectories::p3dSimObjectsDir();
683 if (p3d.isEmpty()) {
return e; }
684 static const QString versionHint = CFsDirectories::guessP3DVersion(p3d);
685 static const QStringList md = CFsDirectories::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(p3d, versionHint);
688 case CSimulatorInfo::MSFS:
691 if (msfs.isEmpty()) {
return e; }
692 static const QStringList md { msfs };
695 case CSimulatorInfo::MSFS2024:
697 static const QString msfs2024 =
699 if (msfs2024.isEmpty()) {
return e; }
700 static const QStringList md { msfs2024 };
703 case CSimulatorInfo::XPLANE:
705 return CXPlaneUtil::xplaneModelDirectories();
707 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
715 static const QString empty;
718 case CSimulatorInfo::FG:
return CFlightgearUtil::flightgearRootDir();
719 case CSimulatorInfo::FS9:
return CFsDirectories::fs9Dir();
720 case CSimulatorInfo::FSX:
return CFsDirectories::fsxDir();
721 case CSimulatorInfo::P3D:
return CFsDirectories::p3dDir();
722 case CSimulatorInfo::MSFS:
return CFsDirectories::msfsDir();
723 case CSimulatorInfo::MSFS2024:
return CFsDirectories::msfs2024Dir();
724 case CSimulatorInfo::XPLANE:
return CXPlaneUtil::xplaneRootDir();
725 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
734 static const QStringList empty;
737 case CSimulatorInfo::FG:
return CFlightgearUtil::flightgearModelExcludeDirectoryPatterns();
738 case CSimulatorInfo::FS9:
return CFsDirectories::fs9AircraftObjectsExcludeDirectoryPatterns();
739 case CSimulatorInfo::FSX:
return CFsDirectories::fsxSimObjectsExcludeDirectoryPatterns();
740 case CSimulatorInfo::P3D:
return CFsDirectories::p3dSimObjectsExcludeDirectoryPatterns();
741 case CSimulatorInfo::XPLANE:
return CXPlaneUtil::xplaneModelExcludeDirectoryPatterns();
742 case CSimulatorInfo::MSFS:
return CFsDirectories::msfs20SimObjectsExcludeDirectoryPatterns();
743 case CSimulatorInfo::MSFS2024:
return CFsDirectories::msfs2024SimObjectsExcludeDirectoryPatterns();
744 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
752 CXPlaneUtil::xplanePluginPathName());
758 return u
"SimulatedObject: " %
boolToYesNo(m_useSimulatedObjectAdding) % u
" SB offsets: " %
776 Q_ASSERT_X(sim.
isFsxP3DFamily(), Q_FUNC_INFO,
"Only for FSX/P3D");
778 return m_simFsx.get();
784 Q_ASSERT_X(simulator.
isFsxP3DFamily(), Q_FUNC_INFO,
"Only for FSX/P3D");
786 return m_simFsx.set(settings);
792 Q_ASSERT_X(simulator.
isFsxP3DFamily(), Q_FUNC_INFO,
"Only for FSX/P3D");
794 return m_simFsx.setAndSave(settings);
static constexpr bool isRunningOnWindowsNtPlatform()
Running on Windows NT platform?
static bool sameDirectories(const QStringList &dirs1, const QStringList &dirs2, Qt::CaseSensitivity cs=osFileNameCaseSensitivity())
Same directories, order in list does not matter and lists are cleaned up.
static QString appendFilePathsAndFixUnc(const QString &path1, const QString &path2)
Append file paths.
static QString normalizeFilePathToQtStandard(const QString &filePath)
Normalize file path to Qt standard, e.g by turning \ to /.
static const QString & settings()
Settings.
bool isEmpty() const
Message empty.
Non-owning reference to a CPropertyIndex with a subset of its features.
Q_REQUIRED_RESULT CPropertyIndexRef copyFrontRemoved() const
Copy with first element removed.
CastType frontCasted() const
First element casted to given type, usually the PropertIndex enum.
bool isMyself() const
Myself index, used with nesting.
Streamable status message, e.g.
constexpr static auto SeverityError
Status severities.
static const QString & severityToString(StatusSeverity severity)
Severity as string.
StatusSeverity getSeverity() const
Message severity.
constexpr static auto SeverityInfo
Status severities.
constexpr static auto SeverityWarning
Status severities.
Status messages, e.g. from Core -> GUI.
CStatusMessage toSingleMessage() const
Merge into a single message.
CStatusMessageList getErrorMessages() const
Get all error messages.
bool isSuccess() const
All messages are marked as success.
bool isActiveFrequencySameFrequency(const physical_quantities::CFrequency &comFrequency) const
Is active frequency the same frequency.
ColumnIndex
Base class enums.
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
QString toQString(bool i18n=false) const
Cast as QString.
Value object encapsulating information of a text message.
bool isPrivateMessage() const
Is private message?
bool isEmpty() const
Empty message.
bool isSendToUnicom() const
Send to UNICOM?
bool isRadioMessage() const
Is radio message?
const physical_quantities::CFrequency & getFrequency() const
Get frequency.
bool isSupervisorMessage() const
Supervisor message?
Physical unit length (length)
Comprehensive information of an aircraft.
const aviation::CComSystem & getCom2System() const
Get COM2 system.
const aviation::CComSystem & getCom1System() const
Get COM1 system.
Simple hardcoded info about the corresponding simulator.
bool isSingleSimulator() const
Single simulator selected.
Simulator getSimulator() const
Simulator.
static const CSimulatorInfo & msfs()
Const simulator info objects.
bool isFsxP3DFamily() const
FSX family, i.e. FSX or P3D?
static const CSimulatorInfo & fs9()
Const simulator info objects.
static const CSimulatorInfo & fsx()
Const simulator info objects.
static const CSimulatorInfo & p3d()
Const simulator info objects.
static const CSimulatorInfo & xplane()
Const simulator info objects.
static const CSimulatorInfo & msfs2024()
Const simulator info objects.
static const CSimulatorInfo & fg()
Const simulator info objects.
QString convertToQString(bool i18n=false) const
Cast as QString.
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
CFsxP3DSettings getSettings(const CSimulatorInfo &sim) const
Settings per simulator.
CStatusMessage setSettings(const CFsxP3DSettings &settings, const CSimulatorInfo &simulator)
Set settings per simulator.
CStatusMessage setAndSaveSettings(const CFsxP3DSettings &settings, const CSimulatorInfo &simulator)
Set settings per simulator.
CStatusMessage addModelDirectory(const QString &modelDirectory, const CSimulatorInfo &simulator)
Set model directory per simulator.
QString getFirstModelDirectoryOrDefault(const CSimulatorInfo &simulator) const
First model directoy.
void resetToDefaults(const CSimulatorInfo &simulator)
Reset to defaults.
CStatusMessage setAndSaveSettings(const CSimulatorSettings &settings, const CSimulatorInfo &simulator)
Set settings per simulator.
CStatusMessage saveSettings(const CSimulatorInfo &simulator)
Set settings per simulator.
CSpecializedSimulatorSettings getSpecializedSettings(const CSimulatorInfo &simulator) const
Specialized simulator settings.
CStatusMessageList setAndValidateSettings(const CSimulatorSettings &settings, const CSimulatorInfo &simulator)
Set settings per simulator, but do NOT save yet, but validate.
CStatusMessage setSettings(const CSimulatorSettings &settings, const CSimulatorInfo &simulator)
Set settings per simulator.
QStringList getModelDirectoriesIfNotDefault(const CSimulatorInfo &simulator) const
Model directory or or empty if default.
QString getSimulatorDirectoryIfNotDefault(const CSimulatorInfo &simulator) const
Simulator directory or empty if default dir.
QStringList getModelDirectoriesOrDefault(const CSimulatorInfo &simulator) const
Model directory or default model path per simulator.
const QStringList & defaultModelDirectories(const CSimulatorInfo &simulator) const
Default model path per simulator.
CSimulatorSettings getSettings(const CSimulatorInfo &simulator) const
Settings per simulator.
QStringList getModelExcludeDirectoryPatternsOrDefault(const CSimulatorInfo &simulator) const
Model exclude patterns per simulator.
QStringList getModelExcludeDirectoryPatternsIfNotDefault(const CSimulatorInfo &simulator) const
Model exclude patterns or empty if default.
CStatusMessage clearModelDirectories(const CSimulatorInfo &simulator)
Clear the model directory.
QString getSimulatorDirectoryOrDefault(const CSimulatorInfo &simulator) const
Simulator directory or default model path per simulator.
void settingsChanged(const swift::misc::simulation::CSimulatorInfo &simulator)
Simulator settings have been changed.
Settings regarding message handling. Driver independent part, related to network.
void disableTechnicalMessages()
No technical messages.
bool isRelayErrorsMessages() const
Relay (technical) error messages.
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
void setRelayGloballyEnabled(bool enabled)
Globally enable / disable.
bool isRelayWarningMessages() const
Relay (technical) warning messages.
bool isRelayUnicomTextMessages() const
Relay UNICOM messages.
QString convertToQString(bool i18n=false) const
Cast as QString.
bool isRelayTechnicalMessages() const
Relay any message.
bool isRelayCom1TextMessages() const
Relay COM1 text message.
CSimulatorMessagesSettings::TextMessageType getRelayedTextMessageTypes() const
Relayed text messages.
bool isRelayInfoMessages() const
Relay (technical) info messages.
bool isRelayCom2TextMessages() const
Relay COM2 text message.
bool relayThisTextMessage(const network::CTextMessage &msg, const CSimulatedAircraft &aircraft) const
Relay given text message.
bool relayThisStatusMessage(const CStatusMessage &message) const
Relay this particular message.
bool isRelayPrivateTextMessages() const
Relay private messages.
bool isRelaySupervisorTextMessages() const
Relay supervisor messages.
bool isRelayGloballyEnabled() const
Globally enabled?
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
void setTechnicalLogSeverity(CStatusMessage::StatusSeverity severity)
Log severity.
void setRelayTextMessages(CSimulatorMessagesSettings::TextMessageType messageType)
Relay the following message types.
Settings for simulator Driver independent parts (such as directories), also used in model loaders.
void clearModelDirectories()
Clear the model directories.
void resetPaths()
Reset the paths.
bool hasSimulatorDirectory() const
Setting has simulator setting.
bool addModelDirectory(const QString &modelDirectory)
Add (if not exists) model directory.
bool hasModelDirectories() const
Having model directories?
bool hasModelExcludeDirectoryPatterns() const
Having model exclude directoy patterns?
CGSource
Where we get the CG (aka vertical offset) from.
const QStringList & getModelExcludeDirectoryPatterns() const
Model exclude directoy patterns.
const QString & getSimulatorDirectory() const
Simulator directory.
const QStringList & getModelDirectories() const
Model directory.
Allows to have specific utility functions for each simulator.
QString getFirstModelDirectoryOrDefault() const
First model directoy.
const QStringList & getModelExcludeDirectoryPatternsIfNotDefault() const
Model exclude patterns or empty if default.
static const QStringList & defaultModelDirectories(const CSimulatorInfo &simulator)
Default model path per simulator.
const QStringList & getDefaultModelDirectories() const
Model exclude patterns or empty if default.
const QStringList & getModelExcludeDirectoryPatternsOrDefault() const
Model exclude patterns or empty if default.
CSimulatorInfo m_simulator
represented simulator
CSimulatorSettings m_genericSettings
the generic settings
QStringList getModelDirectoriesFromSimulatorDirectoy() const
Model directories.
const QString & getSimulatorDirectoryIfNotDefault() const
Simulator directory or empty if default dir.
QStringList getModelDirectoriesOrDefault() const
Model directories or default.
const CSimulatorSettings & getGenericSettings() const
Get the generic settings.
const QStringList & getModelDirectoriesIfNotDefault() const
Model directories or empty if default.
QStringList getModelDirectoriesFromSimulatorDirectoryOrDefault() const
Model directories, then from simulator directory, then default.
const QStringList & getDefaultModelExcludeDirectoryPatterns() const
Default model exclude patterns.
static const QStringList & defaultModelExcludeDirectoryPatterns(const CSimulatorInfo &simulator)
Default model exclude patterns per simulator.
const QString & getSimulatorDirectoryOrDefault() const
Simulator directory or default path.
static const QString & defaultSimulatorDirectory(const CSimulatorInfo &simulator)
Default simulator path per simulator.
const QString & getDefaultSimulatorDirectory() const
Default simulator path per simulator.
QString getPluginDirOrDefault() const
Plugin directory or default plugin dir.
SWIFT_MISC_EXPORT const QString & boolToOnOff(bool v)
Bool to on/off.
StatusSeverity
Status severities.
SWIFT_MISC_EXPORT const QString & boolToYesNo(bool v)
Bool to yes/no.
static bool isValid(const CSimulatorSettings &value, QString &reason)
Validator function. Return true if the argument is valid, false otherwise. Default implementation jus...
#define SWIFT_DEFINE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template definition of mixins for a CValueObject subclass.
#define SWIFT_VERIFY_X(COND, WHERE, WHAT)
A weaker kind of assert.