1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
// Copyright (C) 2020 Denis Shienkov <denis.shienkov@gmail.com>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "genericgdbserverprovider.h"
#include <baremetal/baremetalconstants.h>
#include <baremetal/baremetaltr.h>
#include <baremetal/debugserverprovidermanager.h>
#include <utils/qtcassert.h>
#include <utils/variablechooser.h>
#include <QCheckBox>
#include <QFormLayout>
#include <QPlainTextEdit>
namespace BareMetal::Internal {
// GenericGdbServerProvider
GenericGdbServerProvider::GenericGdbServerProvider()
: GdbServerProvider(Constants::GDBSERVER_GENERIC_PROVIDER_ID)
{
setChannel("localhost", 3333);
setTypeDisplayName(Tr::tr("Generic"));
setConfigurationWidgetCreator([this] { return new GenericGdbServerProviderConfigWidget(this); });
}
QSet<GdbServerProvider::StartupMode> GenericGdbServerProvider::supportedStartupModes() const
{
return {StartupOnNetwork};
}
// GenericGdbServerProviderFactory
GenericGdbServerProviderFactory::GenericGdbServerProviderFactory()
{
setId(Constants::GDBSERVER_GENERIC_PROVIDER_ID);
setDisplayName(Tr::tr("Generic"));
setCreator([] { return new GenericGdbServerProvider; });
}
// GdbServerProviderConfigWidget
GenericGdbServerProviderConfigWidget::GenericGdbServerProviderConfigWidget(
GenericGdbServerProvider *provider)
: GdbServerProviderConfigWidget(provider)
{
Q_ASSERT(provider);
m_hostWidget = new HostWidget(this);
m_mainLayout->addRow(Tr::tr("Host:"), m_hostWidget);
m_useExtendedRemoteCheckBox = new QCheckBox(this);
m_useExtendedRemoteCheckBox->setToolTip(Tr::tr("Use GDB target extended-remote"));
m_mainLayout->addRow(Tr::tr("Extended mode:"), m_useExtendedRemoteCheckBox);
m_initCommandsTextEdit = new QPlainTextEdit(this);
m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip());
m_mainLayout->addRow(Tr::tr("Init commands:"), m_initCommandsTextEdit);
m_resetCommandsTextEdit = new QPlainTextEdit(this);
m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip());
m_mainLayout->addRow(Tr::tr("Reset commands:"), m_resetCommandsTextEdit);
addErrorLabel();
setFromProvider();
const auto chooser = new Utils::VariableChooser(this);
chooser->addSupportedWidget(m_initCommandsTextEdit);
chooser->addSupportedWidget(m_resetCommandsTextEdit);
connect(m_hostWidget, &HostWidget::dataChanged,
this, &GdbServerProviderConfigWidget::dirty);
connect(m_useExtendedRemoteCheckBox, &QCheckBox::stateChanged,
this, &GdbServerProviderConfigWidget::dirty);
connect(m_initCommandsTextEdit, &QPlainTextEdit::textChanged,
this, &GdbServerProviderConfigWidget::dirty);
connect(m_resetCommandsTextEdit, &QPlainTextEdit::textChanged,
this, &GdbServerProviderConfigWidget::dirty);
}
void GenericGdbServerProviderConfigWidget::apply()
{
const auto p = static_cast<GenericGdbServerProvider *>(m_provider);
Q_ASSERT(p);
p->setChannel(m_hostWidget->channel());
p->setUseExtendedRemote(m_useExtendedRemoteCheckBox->isChecked());
p->setInitCommands(m_initCommandsTextEdit->toPlainText());
p->setResetCommands(m_resetCommandsTextEdit->toPlainText());
IDebugServerProviderConfigWidget::apply();
}
void GenericGdbServerProviderConfigWidget::discard()
{
setFromProvider();
IDebugServerProviderConfigWidget::discard();
}
void GenericGdbServerProviderConfigWidget::setFromProvider()
{
const auto p = static_cast<GenericGdbServerProvider *>(m_provider);
Q_ASSERT(p);
const QSignalBlocker blocker(this);
m_hostWidget->setChannel(p->channel());
m_useExtendedRemoteCheckBox->setChecked(p->useExtendedRemote());
m_initCommandsTextEdit->setPlainText(p->initCommands());
m_resetCommandsTextEdit->setPlainText(p->resetCommands());
}
} // ProjectExplorer::Internal
|