File indexing completed on 2024-05-12 04:40:09
0001 /* 0002 SPDX-FileCopyrightText: 2016 Aetf <aetf@unlimitedcodeworks.xyz> 0003 0004 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #include "lldbconfigpage.h" 0008 #include "ui_lldbconfigpage.h" 0009 0010 #include "dbgglobal.h" 0011 0012 #include <util/environmentselectionwidget.h> 0013 0014 #include <KConfigGroup> 0015 #include <KUrlRequester> 0016 0017 #include <QComboBox> 0018 #include <QGroupBox> 0019 #include <QLineEdit> 0020 #include <QRegularExpression> 0021 #include <QRegularExpressionValidator> 0022 0023 using namespace KDevelop; 0024 namespace Config = KDevMI::LLDB::Config; 0025 0026 LldbConfigPage::LldbConfigPage(QWidget* parent) 0027 : LaunchConfigurationPage(parent) 0028 , ui(new Ui::LldbConfigPage) 0029 { 0030 ui->setupUi(this); 0031 ui->lineDebuggerExec->setMode(KFile::File|KFile::ExistingOnly|KFile::LocalOnly); 0032 ui->lineConfigScript->setMode(KFile::File|KFile::ExistingOnly|KFile::LocalOnly); 0033 0034 QRegularExpression rx(QStringLiteral(R"([^:]+:\d+)")); 0035 ui->lineRemoteServer->setValidator(new QRegularExpressionValidator(rx, this)); 0036 0037 ui->comboStartWith->setItemData(0, QStringLiteral("ApplicationOutput")); 0038 ui->comboStartWith->setItemData(1, QStringLiteral("GdbConsole")); 0039 ui->comboStartWith->setItemData(2, QStringLiteral("FrameStack")); 0040 0041 connect(ui->lineDebuggerExec, &KUrlRequester::textChanged, this, &LldbConfigPage::changed); 0042 connect(ui->lineDebuggerArgs, &QLineEdit::textChanged, this, &LldbConfigPage::changed); 0043 connect(ui->comboEnv, &EnvironmentSelectionWidget::currentProfileChanged, 0044 this, &LldbConfigPage::changed); 0045 0046 connect(ui->lineConfigScript, &KUrlRequester::textChanged, this, &LldbConfigPage::changed); 0047 connect(ui->comboStartWith, QOverload<int>::of(&QComboBox::currentIndexChanged), 0048 this, &LldbConfigPage::changed); 0049 0050 connect(ui->groupRemote, &QGroupBox::clicked, this, &LldbConfigPage::changed); 0051 connect(ui->lineRemoteServer, &QLineEdit::textChanged, this, &LldbConfigPage::changed); 0052 connect(ui->lineOnDevPath, &QLineEdit::textChanged, this, &LldbConfigPage::changed); 0053 } 0054 0055 LldbConfigPage::~LldbConfigPage() 0056 { 0057 delete ui; 0058 } 0059 0060 QIcon LldbConfigPage::icon() const 0061 { 0062 return {}; 0063 } 0064 0065 QString LldbConfigPage::title() const 0066 { 0067 return i18nc("@title:tab", "LLDB Configuration"); 0068 } 0069 0070 void LldbConfigPage::loadFromConfiguration(const KConfigGroup& cfg, KDevelop::IProject *) 0071 { 0072 bool block = blockSignals(true); 0073 ui->lineDebuggerExec->setUrl(cfg.readEntry(Config::LldbExecutableEntry, QUrl())); 0074 ui->lineDebuggerArgs->setText(cfg.readEntry(Config::LldbArgumentsEntry, QString())); 0075 ui->comboEnv->setCurrentProfile(cfg.readEntry(Config::LldbEnvironmentEntry, QString())); 0076 ui->checkInheritSystem->setChecked(cfg.readEntry(Config::LldbInheritSystemEnvEntry, true)); 0077 ui->lineConfigScript->setUrl(cfg.readEntry(Config::LldbConfigScriptEntry, QUrl())); 0078 ui->checkBreakOnStart->setChecked(cfg.readEntry(KDevMI::Config::BreakOnStartEntry, false)); 0079 ui->comboStartWith->setCurrentIndex(ui->comboStartWith->findData( 0080 cfg.readEntry(KDevMI::Config::StartWithEntry, "ApplicationOutput"))); 0081 ui->groupRemote->setChecked(cfg.readEntry(Config::LldbRemoteDebuggingEntry, false)); 0082 ui->lineRemoteServer->setText(cfg.readEntry(Config::LldbRemoteServerEntry, QString())); 0083 ui->lineOnDevPath->setText(cfg.readEntry(Config::LldbRemotePathEntry, QString())); 0084 blockSignals(block); 0085 } 0086 0087 void LldbConfigPage::saveToConfiguration(KConfigGroup cfg, KDevelop::IProject *) const 0088 { 0089 cfg.writeEntry(Config::LldbExecutableEntry, ui->lineDebuggerExec->url()); 0090 cfg.writeEntry(Config::LldbArgumentsEntry, ui->lineDebuggerArgs->text()); 0091 cfg.writeEntry(Config::LldbEnvironmentEntry, ui->comboEnv->currentProfile()); 0092 cfg.writeEntry(Config::LldbInheritSystemEnvEntry, ui->checkInheritSystem->isChecked()); 0093 cfg.writeEntry(Config::LldbConfigScriptEntry, ui->lineConfigScript->url()); 0094 cfg.writeEntry(KDevMI::Config::BreakOnStartEntry, ui->checkBreakOnStart->isChecked()); 0095 cfg.writeEntry(KDevMI::Config::StartWithEntry, ui->comboStartWith->currentData().toString()); 0096 cfg.writeEntry(Config::LldbRemoteDebuggingEntry, ui->groupRemote->isChecked()); 0097 cfg.writeEntry(Config::LldbRemoteServerEntry, ui->lineRemoteServer->text()); 0098 cfg.writeEntry(Config::LldbRemotePathEntry, ui->lineOnDevPath->text()); 0099 } 0100 0101 KDevelop::LaunchConfigurationPage * LldbConfigPageFactory::createWidget(QWidget* parent) 0102 { 0103 return new LldbConfigPage(parent); 0104 } 0105 0106 #include "moc_lldbconfigpage.cpp"