File indexing completed on 2024-05-12 03:54:30
0001 /* 0002 This file is part of the KDE libraries. 0003 0004 SPDX-FileCopyrightText: 2003 Cornelius Schumacher <schumacher@kde.org> 0005 SPDX-FileCopyrightText: 2003 Waldo Bastian <bastian@kde.org> 0006 SPDX-FileCopyrightText: 2003 Zack Rusin <zack@kde.org> 0007 SPDX-FileCopyrightText: 2006 Michaƫl Larouche <michael.larouche@kdemail.net> 0008 SPDX-FileCopyrightText: 2008 Allen Winter <winter@kde.org> 0009 SPDX-FileCopyrightText: 2020 Tomaz Cananbrava <tcanabrava@kde.org> 0010 0011 SPDX-License-Identifier: LGPL-2.0-or-later 0012 */ 0013 0014 #include "KConfigParameters.h" 0015 0016 #include <QDebug> 0017 #include <QFileInfo> 0018 0019 #include <iostream> 0020 0021 KConfigParameters::KConfigParameters(const QString &codegenFilename) 0022 { 0023 if (!codegenFilename.endsWith(QLatin1String(".kcfgc"))) { 0024 std::cerr << "Codegen options file must have extension .kcfgc" << std::endl; 0025 exit(1); 0026 } 0027 0028 baseName = QFileInfo(codegenFilename).fileName(); 0029 baseName = baseName.left(baseName.length() - 6); 0030 0031 // Configure the compiler with some settings 0032 QSettings codegenConfig(codegenFilename, QSettings::IniFormat); 0033 0034 nameSpace = codegenConfig.value(QStringLiteral("NameSpace")).toString(); 0035 className = codegenConfig.value(QStringLiteral("ClassName")).toString(); 0036 if (className.isEmpty()) { 0037 std::cerr << "Class name missing" << std::endl; 0038 exit(1); 0039 } 0040 inherits = codegenConfig.value(QStringLiteral("Inherits")).toString(); 0041 if (inherits.isEmpty()) { 0042 inherits = QStringLiteral("KConfigSkeleton"); 0043 } 0044 visibility = codegenConfig.value(QStringLiteral("Visibility")).toString(); 0045 if (!visibility.isEmpty()) { 0046 visibility += QLatin1Char(' '); 0047 } 0048 parentInConstructor = codegenConfig.value(QStringLiteral("ParentInConstructor"), false).toBool(); 0049 forceStringFilename = codegenConfig.value(QStringLiteral("ForceStringFilename"), false).toBool(); 0050 singleton = codegenConfig.value(QStringLiteral("Singleton"), false).toBool(); 0051 staticAccessors = singleton; 0052 customAddons = codegenConfig.value(QStringLiteral("CustomAdditions"), false).toBool(); 0053 memberVariables = codegenConfig.value(QStringLiteral("MemberVariables")).toString(); 0054 dpointer = (memberVariables == QLatin1String("dpointer")); 0055 headerIncludes = codegenConfig.value(QStringLiteral("IncludeFiles"), QStringList()).toStringList(); 0056 sourceIncludes = codegenConfig.value(QStringLiteral("SourceIncludeFiles"), QStringList()).toStringList(); 0057 mutators = codegenConfig.value(QStringLiteral("Mutators"), QStringList()).toStringList(); 0058 allMutators = ((mutators.count() == 1) && (mutators.at(0).toLower() == QLatin1String("true"))); 0059 itemAccessors = codegenConfig.value(QStringLiteral("ItemAccessors"), false).toBool(); 0060 setUserTexts = codegenConfig.value(QStringLiteral("SetUserTexts"), false).toBool(); 0061 defaultGetters = codegenConfig.value(QStringLiteral("DefaultValueGetters"), QStringList()).toStringList(); 0062 allDefaultGetters = (defaultGetters.count() == 1) && (defaultGetters.at(0).toLower() == QLatin1String("true")); 0063 notifiers = codegenConfig.value(QStringLiteral("Notifiers"), QStringList()).toStringList(); 0064 allNotifiers = ((notifiers.count() == 1) && (notifiers.at(0).toLower() == QLatin1String("true"))); 0065 globalEnums = codegenConfig.value(QStringLiteral("GlobalEnums"), false).toBool(); 0066 useEnumTypes = codegenConfig.value(QStringLiteral("UseEnumTypes"), false).toBool(); 0067 const QString trString = codegenConfig.value(QStringLiteral("TranslationSystem")).toString().toLower(); 0068 generateProperties = codegenConfig.value(QStringLiteral("GenerateProperties"), false).toBool(); 0069 if (trString == QLatin1String("kde")) { 0070 translationSystem = KdeTranslation; 0071 translationDomain = codegenConfig.value(QStringLiteral("TranslationDomain")).toString(); 0072 } else { 0073 if (!trString.isEmpty() && trString != QLatin1String("qt")) { 0074 std::cerr << "Unknown translation system, falling back to Qt tr()" << std::endl; 0075 } 0076 translationSystem = QtTranslation; 0077 } 0078 qCategoryLoggingName = codegenConfig.value(QStringLiteral("CategoryLoggingName"), QString()).toString(); 0079 headerExtension = codegenConfig.value(QStringLiteral("HeaderExtension"), QStringLiteral("h")).toString(); 0080 }