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 void CSimulatorSettings::setSimulatorDirectory(
const QString &simulatorDirectory)
49 m_simulatorDirectory = simulatorDirectory.
trimmed();
52 const QString &CSimulatorSettings::getSimulatorDirectory()
const {
return m_simulatorDirectory; }
54 void CSimulatorSettings::setModelDirectories(
const QStringList &modelDirectories)
56 m_modelDirectories = modelDirectories;
58 m_modelDirectories.removeDuplicates();
61 void CSimulatorSettings::clearModelDirectories() { m_modelDirectories.clear(); }
63 void CSimulatorSettings::setModelDirectory(
const QString &modelDirectory)
65 m_modelDirectories =
QStringList({ modelDirectory });
68 bool CSimulatorSettings::addModelDirectory(
const QString &modelDirectory)
72 if (m_modelDirectories.contains(modelDirectory, cs)) {
return false; }
73 m_modelDirectories.push_back(modelDirectory);
74 m_modelDirectories.removeAll({});
75 m_modelDirectories.removeDuplicates();
79 const QStringList &CSimulatorSettings::getModelDirectories()
const {
return m_modelDirectories; }
81 void CSimulatorSettings::setModelExcludeDirectories(
const QStringList &excludeDirectories)
83 m_excludeDirectoryPatterns = excludeDirectories;
85 m_excludeDirectoryPatterns.removeDuplicates();
88 const QStringList &CSimulatorSettings::getModelExcludeDirectoryPatterns()
const
90 return m_excludeDirectoryPatterns;
93 bool CSimulatorSettings::setComIntegrated(
bool integrated)
95 if (integrated == m_comIntegration) {
return false; }
96 m_comIntegration = integrated;
102 const int s =
static_cast<int>(source);
103 if (m_cgSource == s) {
return false; }
108 bool CSimulatorSettings::setRecordOwnAircraftGnd(
bool record)
110 if (record == m_recordGnd) {
return false; }
111 m_recordGnd = record;
115 bool CSimulatorSettings::setRecordedGndRadius(
const CLength &radius)
117 if (radius == m_recordedGndRadius) {
return false; }
118 m_recordedGndRadius = radius;
122 void CSimulatorSettings::resetPaths()
124 m_excludeDirectoryPatterns.clear();
125 m_modelDirectories.clear();
126 m_simulatorDirectory.clear();
129 QString CSimulatorSettings::convertToQString(
bool i18n)
const {
return convertToQString(
", ", i18n); }
131 QString CSimulatorSettings::convertToQString(
const QString &separator,
bool i18n)
const
134 return u
"model directories: " % m_modelDirectories.join(
',') % separator % u
"exclude directories: " %
135 m_excludeDirectoryPatterns.join(
',');
146 case IndexModelExcludeDirectoryPatterns:
return QVariant::fromValue(m_excludeDirectoryPatterns);
150 case IndexRecordOwnAircraftGndRadius:
return m_recordedGndRadius.propertyByIndex(index.
copyFrontRemoved());
151 default:
return CValueObject::propertyByIndex(index);
165 case IndexSimulatorDirectory: this->setSimulatorDirectory(variant.
toString());
break;
166 case IndexModelDirectories: this->setModelDirectories(variant.
toStringList());
break;
167 case IndexComIntegration: this->setComIntegrated(variant.
toBool());
break;
168 case IndexRecordOwnAircraftGnd: this->setRecordOwnAircraftGnd(variant.
toBool());
break;
169 case IndexModelExcludeDirectoryPatterns: m_excludeDirectoryPatterns = variant.
value<
QStringList>();
break;
170 case IndexCGSource: m_cgSource = variant.
toInt();
break;
171 case IndexRecordOwnAircraftGndRadius:
174 default: CValueObject::setPropertyByIndex(index, variant);
break;
178 CMultiSimulatorSettings::CMultiSimulatorSettings(
QObject *parent) :
QObject(parent)
193 case CSimulatorInfo::FG:
return m_simSettingsFG.get();
194 case CSimulatorInfo::FS9:
return m_simSettingsFs9.get();
195 case CSimulatorInfo::FSX:
return m_simSettingsFsx.get();
196 case CSimulatorInfo::P3D:
return m_simSettingsP3D.get();
197 case CSimulatorInfo::MSFS:
return m_simSettingsMsfs.get();
198 case CSimulatorInfo::MSFS2024:
return m_simSettingsMsfs2024.get();
199 case CSimulatorInfo::XPLANE:
return m_simSettingsXP.get();
201 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
208 return { this->
getSettings(simulator), simulator };
217 case CSimulatorInfo::FG:
return m_simSettingsFG.set(settings);
218 case CSimulatorInfo::FS9:
return m_simSettingsFs9.set(settings);
219 case CSimulatorInfo::FSX:
return m_simSettingsFsx.set(settings);
220 case CSimulatorInfo::P3D:
return m_simSettingsP3D.set(settings);
221 case CSimulatorInfo::MSFS:
return m_simSettingsMsfs.set(settings);
222 case CSimulatorInfo::MSFS2024:
return m_simSettingsMsfs2024.set(settings);
223 case CSimulatorInfo::XPLANE:
return m_simSettingsXP.set(settings);
224 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
236 u
"directory already existing");
255 case CSimulatorInfo::FG:
break;
256 case CSimulatorInfo::FS9:
break;
257 case CSimulatorInfo::FSX:
break;
258 case CSimulatorInfo::P3D:
break;
259 case CSimulatorInfo::MSFS:
break;
260 case CSimulatorInfo::MSFS2024:
break;
261 case CSimulatorInfo::XPLANE:
270 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
281 case CSimulatorInfo::FG:
return m_simSettingsFG.setAndSave(settings);
282 case CSimulatorInfo::FS9:
return m_simSettingsFs9.setAndSave(settings);
283 case CSimulatorInfo::FSX:
return m_simSettingsFsx.setAndSave(settings);
284 case CSimulatorInfo::P3D:
return m_simSettingsP3D.setAndSave(settings);
285 case CSimulatorInfo::MSFS:
return m_simSettingsMsfs.setAndSave(settings);
286 case CSimulatorInfo::MSFS2024:
return m_simSettingsMsfs2024.setAndSave(settings);
287 case CSimulatorInfo::XPLANE:
return m_simSettingsXP.setAndSave(settings);
288 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
304 case CSimulatorInfo::FG:
return m_simSettingsFG.save();
305 case CSimulatorInfo::FS9:
return m_simSettingsFs9.save();
306 case CSimulatorInfo::FSX:
return m_simSettingsFsx.save();
307 case CSimulatorInfo::P3D:
return m_simSettingsP3D.save();
308 case CSimulatorInfo::MSFS:
return m_simSettingsMsfs.save();
309 case CSimulatorInfo::MSFS2024:
return m_simSettingsMsfs2024.save();
310 case CSimulatorInfo::XPLANE:
return m_simSettingsXP.save();
311 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
372 void CMultiSimulatorSettings::onFsxSettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::fsx()); }
374 void CMultiSimulatorSettings::onP3DSettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::p3d()); }
376 void CMultiSimulatorSettings::onFs9SettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::fs9()); }
378 void CMultiSimulatorSettings::onMsfsSettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::msfs()); }
380 void CMultiSimulatorSettings::onMsfs2024SettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::msfs2024()); }
382 void CMultiSimulatorSettings::onXPSettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::xplane()); }
384 void CMultiSimulatorSettings::onFGSettingsChanged() { this->emitSettingsChanged(
CSimulatorInfo::fg()); }
386 void CMultiSimulatorSettings::emitSettingsChanged(
const CSimulatorInfo &simInfo)
393 m_technicalLogLevel =
static_cast<int>(severity);
400 if (m_technicalLogLevel < 0) {
return false; }
406 if (m_technicalLogLevel < 0) {
return false; }
412 if (m_technicalLogLevel < 0) {
return false; }
420 m_messageType =
static_cast<int>(messageType);
450 if (message.
isEmpty()) {
return false; }
453 const int s =
static_cast<int>(message.
getSeverity());
454 return (s >= m_technicalLogLevel);
461 if (msg.
isEmpty()) {
return false; }
463 if (m_messageType == NoTextMessages) {
return false; }
465 const TextMessageType mt =
static_cast<TextMessageType
>(m_messageType);
466 if (msg.
isPrivateMessage() && mt.testFlag(TextMessagePrivate)) {
return true; }
467 if (msg.
isSupervisorMessage() && (mt.testFlag(TextMessagePrivate) || mt.testFlag(TextMessageSupervisor)))
471 if (msg.
isSendToUnicom() && mt.testFlag(TextMessagesUnicom)) {
return true; }
476 if (mt.testFlag(TextMessagesCom1))
480 if (mt.testFlag(TextMessagesCom2))
490 return static_cast<CSimulatorMessagesSettings::TextMessageType
>(m_messageType);
496 static const QString s(
"Enabled %1, text messages: %2, severity: %3");
530 case IndexTechnicalLogSeverity:
533 case IndexRelayTextMessage:
578 case CSimulatorInfo::FG: dirs =
QStringList(CFlightgearUtil::modelDirectoriesFromSimDir(s));
break;
579 case CSimulatorInfo::FS9: dirs =
QStringList({ CFsDirectories::fs9AircraftDirFromSimDir(s) });
break;
580 case CSimulatorInfo::FSX:
581 dirs = CFsDirectories::fsxSimObjectsDirPlusAddOnXmlSimObjectsPaths(
582 CFsDirectories::fsxSimObjectsDirFromSimDir(s));
584 case CSimulatorInfo::P3D:
586 const QString versionHint = CFsDirectories::guessP3DVersion(s);
587 dirs = CFsDirectories::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(
588 CFsDirectories::p3dSimObjectsDirFromSimDir(s), versionHint);
591 case CSimulatorInfo::XPLANE: dirs =
QStringList({ CXPlaneUtil::modelDirectoriesFromSimDir(s) });
break;
592 case CSimulatorInfo::MSFS: dirs =
QStringList({ CFsDirectories::msfsSimObjectsDir() });
break;
593 case CSimulatorInfo::MSFS2024: dirs =
QStringList({ CFsDirectories::msfs2024SimObjectsDir() });
break;
662 case CSimulatorInfo::FG:
664 return CFlightgearUtil::flightgearModelDirectories();
666 case CSimulatorInfo::FS9:
668 if (CFsDirectories::fs9AircraftDir().isEmpty()) {
return e; }
669 static const QStringList md({ CFsDirectories::fs9AircraftDir() });
672 case CSimulatorInfo::FSX:
674 if (CFsDirectories::fsxSimObjectsDir().isEmpty()) {
return e; }
675 static const QStringList md = CFsDirectories::fsxSimObjectsDirPlusAddOnXmlSimObjectsPaths();
678 case CSimulatorInfo::P3D:
680 static const QString p3d = CFsDirectories::p3dSimObjectsDir();
681 if (p3d.
isEmpty()) {
return e; }
682 static const QString versionHint = CFsDirectories::guessP3DVersion(p3d);
683 static const QStringList md = CFsDirectories::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(p3d, versionHint);
686 case CSimulatorInfo::MSFS:
689 if (msfs.
isEmpty()) {
return e; }
693 case CSimulatorInfo::MSFS2024:
695 static const QString msfs2024 =
697 if (msfs2024.
isEmpty()) {
return e; }
701 case CSimulatorInfo::XPLANE:
703 return CXPlaneUtil::xplaneModelDirectories();
705 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
716 case CSimulatorInfo::FG:
return CFlightgearUtil::flightgearRootDir();
717 case CSimulatorInfo::FS9:
return CFsDirectories::fs9Dir();
718 case CSimulatorInfo::FSX:
return CFsDirectories::fsxDir();
719 case CSimulatorInfo::P3D:
return CFsDirectories::p3dDir();
720 case CSimulatorInfo::MSFS:
return CFsDirectories::msfsDir();
721 case CSimulatorInfo::MSFS2024:
return CFsDirectories::msfs2024Dir();
722 case CSimulatorInfo::XPLANE:
return CXPlaneUtil::xplaneRootDir();
723 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
735 case CSimulatorInfo::FG:
return CFlightgearUtil::flightgearModelExcludeDirectoryPatterns();
736 case CSimulatorInfo::FS9:
return CFsDirectories::fs9AircraftObjectsExcludeDirectoryPatterns();
737 case CSimulatorInfo::FSX:
return CFsDirectories::fsxSimObjectsExcludeDirectoryPatterns();
738 case CSimulatorInfo::P3D:
return CFsDirectories::p3dSimObjectsExcludeDirectoryPatterns();
739 case CSimulatorInfo::XPLANE:
return CXPlaneUtil::xplaneModelExcludeDirectoryPatterns();
740 case CSimulatorInfo::MSFS:
return CFsDirectories::msfs20SimObjectsExcludeDirectoryPatterns();
741 case CSimulatorInfo::MSFS2024:
return CFsDirectories::msfs2024SimObjectsExcludeDirectoryPatterns();
742 default: Q_ASSERT_X(simulator.
isSingleSimulator(), Q_FUNC_INFO,
"No single simulator");
break;
750 CXPlaneUtil::xplanePluginPathName());
756 return u
"SimulatedObject: " %
boolToYesNo(m_useSimulatedObjectAdding) % u
" SB offsets: " %
774 Q_ASSERT_X(sim.
isFsxP3DFamily(), Q_FUNC_INFO,
"Only for FSX/P3D");
776 return m_simFsx.get();
782 Q_ASSERT_X(simulator.
isFsxP3DFamily(), Q_FUNC_INFO,
"Only for FSX/P3D");
784 return m_simFsx.set(settings);
790 Q_ASSERT_X(simulator.
isFsxP3DFamily(), Q_FUNC_INFO,
"Only for FSX/P3D");
792 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.
const T & constFirst() const const
qsizetype removeAll(const AT &t)
QString arg(Args &&... args) const const
bool isEmpty() const const
QString trimmed() const const
qsizetype removeDuplicates()
QVariant fromValue(T &&value)
bool toBool() const const
int toInt(bool *ok) const const
QString toString() const const
QStringList toStringList() const const
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.