File indexing completed on 2024-05-19 15:45:20
0001 /* 0002 SPDX-FileCopyrightText: 2013 Christoph Thielecke <crissi99@gmx.de> 0003 SPDX-FileCopyrightText: 2016 Anton Anikin <anton.anikin@htower.ru> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "projectconfigpage.h" 0009 #include "ui_projectconfigpage.h" 0010 0011 #include "projectsettings.h" 0012 0013 #include <interfaces/iproject.h> 0014 0015 #include <QFontDatabase> 0016 0017 namespace cppcheck 0018 { 0019 0020 ProjectConfigPage::ProjectConfigPage(KDevelop::IPlugin* plugin, KDevelop::IProject* project, QWidget* parent) 0021 : ConfigPage(plugin, new ProjectSettings, parent) 0022 , ui(new Ui::ProjectConfigPage) 0023 , m_parameters(new Parameters(project)) 0024 { 0025 configSkeleton()->setSharedConfig(project->projectConfiguration()); 0026 configSkeleton()->load(); 0027 0028 ui->setupUi(this); 0029 0030 ui->commandLine->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); 0031 0032 connect(this, &ProjectConfigPage::changed, this, &ProjectConfigPage::updateCommandLine); 0033 connect(ui->commandLineFilter, &QLineEdit::textChanged, this, &ProjectConfigPage::updateCommandLine); 0034 connect(ui->commandLineBreaks, &QCheckBox::stateChanged, this, &ProjectConfigPage::updateCommandLine); 0035 } 0036 0037 ProjectConfigPage::~ProjectConfigPage() 0038 { 0039 } 0040 0041 QIcon ProjectConfigPage::icon() const 0042 { 0043 return QIcon::fromTheme(QStringLiteral("cppcheck")); 0044 } 0045 0046 void ProjectConfigPage::defaults() 0047 { 0048 ConfigPage::defaults(); 0049 updateCommandLine(); 0050 } 0051 0052 void ProjectConfigPage::reset() 0053 { 0054 ConfigPage::reset(); 0055 updateCommandLine(); 0056 } 0057 0058 QString ProjectConfigPage::name() const 0059 { 0060 return i18nc("@title:tab", "Cppcheck"); 0061 } 0062 0063 void ProjectConfigPage::updateCommandLine() 0064 { 0065 m_parameters->checkStyle = ui->kcfg_checkStyle->isChecked(); 0066 m_parameters->checkPerformance = ui->kcfg_checkPerformance->isChecked(); 0067 m_parameters->checkPortability = ui->kcfg_checkPortability->isChecked(); 0068 m_parameters->checkInformation = ui->kcfg_checkInformation->isChecked(); 0069 m_parameters->checkUnusedFunction = ui->kcfg_checkUnusedFunction->isChecked(); 0070 m_parameters->checkMissingInclude = ui->kcfg_checkMissingInclude->isChecked(); 0071 m_parameters->inconclusiveAnalysis = ui->kcfg_inconclusiveAnalysis->isChecked(); 0072 m_parameters->forceCheck = ui->kcfg_forceCheck->isChecked(); 0073 m_parameters->checkConfig = ui->kcfg_checkConfig->isChecked(); 0074 m_parameters->useProjectIncludes = ui->kcfg_useProjectIncludes->isChecked(); 0075 m_parameters->useSystemIncludes = ui->kcfg_useSystemIncludes->isChecked(); 0076 m_parameters->ignoredIncludes = ui->kcfg_ignoredIncludes->text(); 0077 m_parameters->extraParameters = ui->kcfg_extraParameters->text().trimmed(); 0078 0079 QString message; 0080 QString commandLine = m_parameters->commandLine(message).join(QLatin1Char(' ')); 0081 0082 if (message.isEmpty()) { 0083 ui->messageWidget->hide(); 0084 } else { 0085 ui->messageWidget->setText(message); 0086 ui->messageWidget->show(); 0087 } 0088 0089 if (!ui->commandLineBreaks->isChecked()) { 0090 ui->commandLine->setPlainText(commandLine); 0091 return; 0092 } 0093 0094 commandLine.replace(QLatin1String(" -"), QLatin1String("\n-")); 0095 QString filterText = ui->commandLineFilter->text(); 0096 if (filterText.isEmpty()) { 0097 ui->commandLine->setPlainText(commandLine); 0098 ui->commandLineBreaks->setEnabled(true); 0099 return; 0100 } 0101 0102 QStringList lines = commandLine.split(QLatin1Char('\n')); 0103 QMutableStringListIterator i(lines); 0104 0105 while (i.hasNext()) { 0106 if (!i.next().contains(filterText)) { 0107 i.remove(); 0108 } 0109 } 0110 0111 ui->commandLine->setPlainText(lines.join(QLatin1Char('\n'))); 0112 ui->commandLineBreaks->setEnabled(false); 0113 } 0114 0115 } 0116 0117 #include "moc_projectconfigpage.cpp"