void ClangDiagnosticConfigsWidget::syncOtherWidgetsToComboBox() { if (isConfigChooserEmpty()) return; const ClangDiagnosticConfig &config = currentConfig(); // Update main button row m_ui->removeButton->setEnabled(!config.isReadOnly()); // Update Text Edit const QString options = m_notAcceptedOptions.contains(config.id()) ? m_notAcceptedOptions.value(config.id()) : config.clangOptions().join(QLatin1Char(' ')); setDiagnosticOptions(options); m_clangBaseChecksWidget->setEnabled(!config.isReadOnly()); if (config.isReadOnly()) { m_ui->infoIcon->setPixmap(Utils::Icons::INFO.pixmap()); m_ui->infoLabel->setText(tr("Copy this configuration to customize it.")); m_ui->infoLabel->setStyleSheet(QString()); } syncClangTidyWidgets(config); syncClazyWidgets(config); }
void ClangDiagnosticConfigsWidget::onClangTidyModeChanged(int index) { ClangDiagnosticConfig config = currentConfig(); config.setClangTidyMode(static_cast<ClangDiagnosticConfig::TidyMode>(index)); updateConfig(config); syncClangTidyWidgets(config); }
void ClangDiagnosticConfigsWidget::onClangTidyItemChanged(QListWidgetItem *item) { const QString prefix = item->text(); ClangDiagnosticConfig config = currentConfig(); QString checks = config.clangTidyChecksPrefixes(); item->checkState() == Qt::Checked ? checks.append(',' + prefix) : checks.remove(',' + prefix); config.setClangTidyChecksPrefixes(checks); updateConfig(config); }
void ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited() { const QString diagnosticOptions = m_ui->diagnosticOptionsTextEdit->document()->toPlainText().trimmed(); const QStringList updatedCommandLine = diagnosticOptions.trimmed().split(QLatin1Char(' '), QString::SkipEmptyParts); ClangDiagnosticConfig updatedConfig = currentConfig(); updatedConfig.setCommandLineOptions(updatedCommandLine); m_diagnosticConfigsModel.appendOrUpdate(updatedConfig); emit customConfigsChanged(customConfigs()); }
void ClangDiagnosticConfigsWidget::syncOtherWidgetsToComboBox() { if (isConfigChooserEmpty()) return; const ClangDiagnosticConfig &config = currentConfig(); // Update main button row m_ui->removeButton->setEnabled(!config.isReadOnly()); // Update child widgets const QString commandLineOptions = config.commandLineOptions().join(QLatin1Char(' ')); setDiagnosticOptions(commandLineOptions); m_ui->diagnosticOptionsTextEdit->setReadOnly(config.isReadOnly()); }
void ClangDiagnosticConfigsWidget::onCopyButtonClicked() { const ClangDiagnosticConfig &config = currentConfig(); bool diaglogAccepted = false; const QString newName = QInputDialog::getText(this, tr("Copy Diagnostic Configuration"), tr("Diagnostic configuration name:"), QLineEdit::Normal, tr("%1 (Copy)").arg(config.displayName()), &diaglogAccepted); if (diaglogAccepted) { const ClangDiagnosticConfig customConfig = createCustomConfig(config, newName); m_diagnosticConfigsModel.appendOrUpdate(customConfig); emit customConfigsChanged(customConfigs()); syncConfigChooserToModel(customConfig.id()); m_ui->diagnosticOptionsTextEdit->setFocus(); } }
void ClangDiagnosticConfigsWidget::onClazyRadioButtonChanged(bool checked) { if (!checked) return; QString checks; if (m_clazyChecks->clazyRadioDisabled->isChecked()) checks = QString(); else if (m_clazyChecks->clazyRadioLevel0->isChecked()) checks = "level0"; else if (m_clazyChecks->clazyRadioLevel1->isChecked()) checks = "level1"; else if (m_clazyChecks->clazyRadioLevel2->isChecked()) checks = "level2"; else if (m_clazyChecks->clazyRadioLevel3->isChecked()) checks = "level3"; ClangDiagnosticConfig config = currentConfig(); config.setClazyChecks(checks); updateConfig(config); }
void ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited() { // Clean up input const QString diagnosticOptions = m_clangBaseChecks->diagnosticOptionsTextEdit->document() ->toPlainText(); const QStringList normalizedOptions = normalizeDiagnosticInputOptions(diagnosticOptions); // Validate const QString errorMessage = validateDiagnosticOptions(normalizedOptions); updateValidityWidgets(errorMessage); if (!errorMessage.isEmpty()) { // Remember the entered options in case the user will switch back. m_notAcceptedOptions.insert(currentConfigId(), diagnosticOptions); return; } m_notAcceptedOptions.remove(currentConfigId()); // Commit valid changes ClangDiagnosticConfig updatedConfig = currentConfig(); updatedConfig.setClangOptions(normalizedOptions); updateConfig(updatedConfig); }
void ClangDiagnosticConfigsWidget::onClangTidyLineEdited(const QString &text) { ClangDiagnosticConfig config = currentConfig(); config.setClangTidyChecksString(text); updateConfig(config); }