forked from qt-creator/qt-creator
Debugger: Make breakpoint property dialogs less dependent on engine
... so they can be reused for global/preset breakpoints later. Change-Id: I34493f3b702605054c1ea227f56ed286eb77fcca Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -310,7 +310,7 @@ class BreakpointDialog : public QDialog
|
|||||||
Q_DECLARE_TR_FUNCTIONS(Debugger::Internal::BreakHandler)
|
Q_DECLARE_TR_FUNCTIONS(Debugger::Internal::BreakHandler)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit BreakpointDialog(const DebuggerEngine *engine, QWidget *parent = nullptr);
|
explicit BreakpointDialog(unsigned int enabledParts, QWidget *parent = nullptr);
|
||||||
bool showDialog(BreakpointParameters *data, BreakpointParts *parts);
|
bool showDialog(BreakpointParameters *data, BreakpointParts *parts);
|
||||||
|
|
||||||
void setParameters(const BreakpointParameters &data);
|
void setParameters(const BreakpointParameters &data);
|
||||||
@@ -367,8 +367,8 @@ private:
|
|||||||
QDialogButtonBox *m_buttonBox;
|
QDialogButtonBox *m_buttonBox;
|
||||||
};
|
};
|
||||||
|
|
||||||
BreakpointDialog::BreakpointDialog(const DebuggerEngine *engine, QWidget *parent)
|
BreakpointDialog::BreakpointDialog(unsigned int enabledParts, QWidget *parent)
|
||||||
: QDialog(parent), m_enabledParts(~0), m_previousType(UnknownBreakpointType),
|
: QDialog(parent), m_enabledParts(enabledParts), m_previousType(UnknownBreakpointType),
|
||||||
m_firstTypeChange(true)
|
m_firstTypeChange(true)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Edit Breakpoint Properties"));
|
setWindowTitle(tr("Edit Breakpoint Properties"));
|
||||||
@@ -497,15 +497,6 @@ BreakpointDialog::BreakpointDialog(const DebuggerEngine *engine, QWidget *parent
|
|||||||
m_buttonBox = new QDialogButtonBox(this);
|
m_buttonBox = new QDialogButtonBox(this);
|
||||||
m_buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
|
m_buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
|
||||||
|
|
||||||
if (engine) {
|
|
||||||
if (!engine->hasCapability(BreakConditionCapability))
|
|
||||||
m_enabledParts &= ~ConditionPart;
|
|
||||||
if (!engine->hasCapability(BreakModuleCapability))
|
|
||||||
m_enabledParts &= ~ModulePart;
|
|
||||||
if (!engine->hasCapability(TracePointCapability))
|
|
||||||
m_enabledParts &= ~TracePointPart;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto basicLayout = new QFormLayout(groupBoxBasic);
|
auto basicLayout = new QFormLayout(groupBoxBasic);
|
||||||
basicLayout->addRow(m_labelType, m_comboBoxType);
|
basicLayout->addRow(m_labelType, m_comboBoxType);
|
||||||
basicLayout->addRow(m_labelFileName, m_pathChooserFileName);
|
basicLayout->addRow(m_labelFileName, m_pathChooserFileName);
|
||||||
@@ -854,7 +845,7 @@ class MultiBreakPointsDialog : public QDialog
|
|||||||
Q_DECLARE_TR_FUNCTIONS(Debugger::Internal::BreakHandler)
|
Q_DECLARE_TR_FUNCTIONS(Debugger::Internal::BreakHandler)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MultiBreakPointsDialog(bool canUseConditions, QWidget *parent);
|
MultiBreakPointsDialog(unsigned int enabledParts, QWidget *parent);
|
||||||
|
|
||||||
QString condition() const { return m_lineEditCondition->text(); }
|
QString condition() const { return m_lineEditCondition->text(); }
|
||||||
int ignoreCount() const { return m_spinBoxIgnoreCount->value(); }
|
int ignoreCount() const { return m_spinBoxIgnoreCount->value(); }
|
||||||
@@ -873,7 +864,7 @@ private:
|
|||||||
QDialogButtonBox *m_buttonBox;
|
QDialogButtonBox *m_buttonBox;
|
||||||
};
|
};
|
||||||
|
|
||||||
MultiBreakPointsDialog::MultiBreakPointsDialog(bool canUseConditions, QWidget *parent) :
|
MultiBreakPointsDialog::MultiBreakPointsDialog(unsigned int enabledParts, QWidget *parent) :
|
||||||
QDialog(parent)
|
QDialog(parent)
|
||||||
{
|
{
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||||
@@ -889,7 +880,7 @@ MultiBreakPointsDialog::MultiBreakPointsDialog(bool canUseConditions, QWidget *p
|
|||||||
m_buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
|
m_buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
|
||||||
|
|
||||||
auto formLayout = new QFormLayout;
|
auto formLayout = new QFormLayout;
|
||||||
if (canUseConditions)
|
if (enabledParts & ConditionPart)
|
||||||
formLayout->addRow(tr("&Condition:"), m_lineEditCondition);
|
formLayout->addRow(tr("&Condition:"), m_lineEditCondition);
|
||||||
formLayout->addRow(tr("&Ignore count:"), m_spinBoxIgnoreCount);
|
formLayout->addRow(tr("&Ignore count:"), m_spinBoxIgnoreCount);
|
||||||
formLayout->addRow(tr("&Thread specification:"), m_lineEditThreadSpec);
|
formLayout->addRow(tr("&Thread specification:"), m_lineEditThreadSpec);
|
||||||
@@ -1730,13 +1721,25 @@ void BreakHandler::removeBreakpoint(const Breakpoint &bp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned int engineBreakpointCapabilities(DebuggerEngine *engine)
|
||||||
|
{
|
||||||
|
unsigned int enabledParts = ~0;
|
||||||
|
if (!engine->hasCapability(BreakConditionCapability))
|
||||||
|
enabledParts &= ~ConditionPart;
|
||||||
|
if (!engine->hasCapability(BreakModuleCapability))
|
||||||
|
enabledParts &= ~ModulePart;
|
||||||
|
if (!engine->hasCapability(TracePointCapability))
|
||||||
|
enabledParts &= ~TracePointPart;
|
||||||
|
return enabledParts;
|
||||||
|
}
|
||||||
|
|
||||||
void BreakHandler::editBreakpoint(const Breakpoint &bp, QWidget *parent)
|
void BreakHandler::editBreakpoint(const Breakpoint &bp, QWidget *parent)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(bp, return);
|
QTC_ASSERT(bp, return);
|
||||||
BreakpointParameters params = bp->requestedParameters();
|
BreakpointParameters params = bp->requestedParameters();
|
||||||
BreakpointParts parts = NoParts;
|
BreakpointParts parts = NoParts;
|
||||||
|
|
||||||
BreakpointDialog dialog(m_engine, parent);
|
BreakpointDialog dialog(engineBreakpointCapabilities(m_engine), parent);
|
||||||
if (!dialog.showDialog(¶ms, &parts))
|
if (!dialog.showDialog(¶ms, &parts))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -1762,12 +1765,9 @@ void BreakHandler::editBreakpoints(const Breakpoints &bps, QWidget *parent)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// This allows to change properties of multiple breakpoints at a time.
|
// This allows to change properties of multiple breakpoints at a time.
|
||||||
if (!bp)
|
QTC_ASSERT(bp, return);
|
||||||
return;
|
|
||||||
|
|
||||||
const bool canUseConditions = m_engine->hasCapability(BreakConditionCapability);
|
MultiBreakPointsDialog dialog(engineBreakpointCapabilities(m_engine), parent);
|
||||||
|
|
||||||
MultiBreakPointsDialog dialog(canUseConditions, parent);
|
|
||||||
dialog.setCondition(bp->condition());
|
dialog.setCondition(bp->condition());
|
||||||
dialog.setIgnoreCount(bp->ignoreCount());
|
dialog.setIgnoreCount(bp->ignoreCount());
|
||||||
dialog.setThreadSpec(bp->threadSpec());
|
dialog.setThreadSpec(bp->threadSpec());
|
||||||
@@ -2501,7 +2501,7 @@ void BreakpointManager::executeAddBreakpointDialog()
|
|||||||
{
|
{
|
||||||
BreakpointParameters data(BreakpointByFileAndLine);
|
BreakpointParameters data(BreakpointByFileAndLine);
|
||||||
BreakpointParts parts = NoParts;
|
BreakpointParts parts = NoParts;
|
||||||
BreakpointDialog dialog(nullptr, ICore::dialogParent());
|
BreakpointDialog dialog(~0, ICore::dialogParent());
|
||||||
dialog.setWindowTitle(tr("Add Breakpoint"));
|
dialog.setWindowTitle(tr("Add Breakpoint"));
|
||||||
if (dialog.showDialog(&data, &parts))
|
if (dialog.showDialog(&data, &parts))
|
||||||
BreakpointManager::createBreakpoint(data);
|
BreakpointManager::createBreakpoint(data);
|
||||||
|
Reference in New Issue
Block a user