forked from qt-creator/qt-creator
Delay widget creation of options pages till their category is shown
Also add the alternative way: IOptionsPageProvider, which states a category, and is asked for a list of options pages for that category when it is shown. Task-number: QTCREATORBUG-3131
This commit is contained in:
@@ -139,6 +139,7 @@ void GdbOptionsPage::writeGdbBinarySettings() /* static */
|
||||
}
|
||||
|
||||
GdbOptionsPage::GdbOptionsPage()
|
||||
: m_ui(0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -170,67 +171,68 @@ QIcon GdbOptionsPage::categoryIcon() const
|
||||
QWidget *GdbOptionsPage::createPage(QWidget *parent)
|
||||
{
|
||||
QWidget *w = new QWidget(parent);
|
||||
m_ui.setupUi(w);
|
||||
m_ui.gdbChooserWidget->setGdbBinaries(gdbBinaryToolChainMap);
|
||||
m_ui.scriptFileChooser->setExpectedKind(Utils::PathChooser::File);
|
||||
m_ui.scriptFileChooser->setPromptDialogTitle(tr("Choose Location of Startup Script File"));
|
||||
m_ui = new Ui::GdbOptionsPage;
|
||||
m_ui->setupUi(w);
|
||||
m_ui->gdbChooserWidget->setGdbBinaries(gdbBinaryToolChainMap);
|
||||
m_ui->scriptFileChooser->setExpectedKind(Utils::PathChooser::File);
|
||||
m_ui->scriptFileChooser->setPromptDialogTitle(tr("Choose Location of Startup Script File"));
|
||||
|
||||
m_group.clear();
|
||||
m_group.insert(debuggerCore()->action(GdbScriptFile),
|
||||
m_ui.scriptFileChooser);
|
||||
m_ui->scriptFileChooser);
|
||||
m_group.insert(debuggerCore()->action(GdbEnvironment),
|
||||
m_ui.environmentEdit);
|
||||
m_ui->environmentEdit);
|
||||
m_group.insert(debuggerCore()->action(AdjustBreakpointLocations),
|
||||
m_ui.checkBoxAdjustBreakpointLocations);
|
||||
m_ui->checkBoxAdjustBreakpointLocations);
|
||||
m_group.insert(debuggerCore()->action(GdbWatchdogTimeout),
|
||||
m_ui.spinBoxGdbWatchdogTimeout);
|
||||
m_ui->spinBoxGdbWatchdogTimeout);
|
||||
|
||||
m_group.insert(debuggerCore()->action(UseMessageBoxForSignals),
|
||||
m_ui.checkBoxUseMessageBoxForSignals);
|
||||
m_ui->checkBoxUseMessageBoxForSignals);
|
||||
m_group.insert(debuggerCore()->action(SkipKnownFrames),
|
||||
m_ui.checkBoxSkipKnownFrames);
|
||||
m_ui->checkBoxSkipKnownFrames);
|
||||
m_group.insert(debuggerCore()->action(EnableReverseDebugging),
|
||||
m_ui.checkBoxEnableReverseDebugging);
|
||||
m_ui->checkBoxEnableReverseDebugging);
|
||||
m_group.insert(debuggerCore()->action(GdbWatchdogTimeout), 0);
|
||||
|
||||
#if 1
|
||||
m_ui.groupBoxPluginDebugging->hide();
|
||||
m_ui->groupBoxPluginDebugging->hide();
|
||||
#else // The related code (handleAqcuiredInferior()) is disabled as well.
|
||||
m_group.insert(debuggerCore()->action(AllPluginBreakpoints),
|
||||
m_ui.radioButtonAllPluginBreakpoints);
|
||||
m_ui->radioButtonAllPluginBreakpoints);
|
||||
m_group.insert(debuggerCore()->action(SelectedPluginBreakpoints),
|
||||
m_ui.radioButtonSelectedPluginBreakpoints);
|
||||
m_ui->radioButtonSelectedPluginBreakpoints);
|
||||
m_group.insert(debuggerCore()->action(NoPluginBreakpoints),
|
||||
m_ui.radioButtonNoPluginBreakpoints);
|
||||
m_ui->radioButtonNoPluginBreakpoints);
|
||||
m_group.insert(debuggerCore()->action(SelectedPluginBreakpointsPattern),
|
||||
m_ui.lineEditSelectedPluginBreakpointsPattern);
|
||||
m_ui->lineEditSelectedPluginBreakpointsPattern);
|
||||
#endif
|
||||
|
||||
m_ui.lineEditSelectedPluginBreakpointsPattern->
|
||||
m_ui->lineEditSelectedPluginBreakpointsPattern->
|
||||
setEnabled(debuggerCore()->action(SelectedPluginBreakpoints)->value().toBool());
|
||||
connect(m_ui.radioButtonSelectedPluginBreakpoints, SIGNAL(toggled(bool)),
|
||||
m_ui.lineEditSelectedPluginBreakpointsPattern, SLOT(setEnabled(bool)));
|
||||
connect(m_ui->radioButtonSelectedPluginBreakpoints, SIGNAL(toggled(bool)),
|
||||
m_ui->lineEditSelectedPluginBreakpointsPattern, SLOT(setEnabled(bool)));
|
||||
|
||||
// FIXME
|
||||
m_ui.environmentEdit->hide();
|
||||
m_ui.labelEnvironment->hide();
|
||||
m_ui->environmentEdit->hide();
|
||||
m_ui->labelEnvironment->hide();
|
||||
|
||||
if (m_searchKeywords.isEmpty()) {
|
||||
QLatin1Char sep(' ');
|
||||
QTextStream(&m_searchKeywords)
|
||||
<< sep << m_ui.groupBoxLocations->title()
|
||||
<< sep << m_ui.labelEnvironment->text()
|
||||
<< sep << m_ui.labelGdbStartupScript->text()
|
||||
<< sep << m_ui.labelGdbWatchdogTimeout->text()
|
||||
<< sep << m_ui.checkBoxEnableReverseDebugging->text()
|
||||
<< sep << m_ui.checkBoxSkipKnownFrames->text()
|
||||
<< sep << m_ui.checkBoxUseMessageBoxForSignals->text()
|
||||
<< sep << m_ui.checkBoxAdjustBreakpointLocations->text()
|
||||
<< sep << m_ui.groupBoxPluginDebugging->title()
|
||||
<< sep << m_ui.radioButtonAllPluginBreakpoints->text()
|
||||
<< sep << m_ui.radioButtonSelectedPluginBreakpoints->text()
|
||||
<< sep << m_ui.labelSelectedPluginBreakpoints->text()
|
||||
<< sep << m_ui.radioButtonNoPluginBreakpoints->text()
|
||||
<< sep << m_ui->groupBoxLocations->title()
|
||||
<< sep << m_ui->labelEnvironment->text()
|
||||
<< sep << m_ui->labelGdbStartupScript->text()
|
||||
<< sep << m_ui->labelGdbWatchdogTimeout->text()
|
||||
<< sep << m_ui->checkBoxEnableReverseDebugging->text()
|
||||
<< sep << m_ui->checkBoxSkipKnownFrames->text()
|
||||
<< sep << m_ui->checkBoxUseMessageBoxForSignals->text()
|
||||
<< sep << m_ui->checkBoxAdjustBreakpointLocations->text()
|
||||
<< sep << m_ui->groupBoxPluginDebugging->title()
|
||||
<< sep << m_ui->radioButtonAllPluginBreakpoints->text()
|
||||
<< sep << m_ui->radioButtonSelectedPluginBreakpoints->text()
|
||||
<< sep << m_ui->labelSelectedPluginBreakpoints->text()
|
||||
<< sep << m_ui->radioButtonNoPluginBreakpoints->text()
|
||||
;
|
||||
m_searchKeywords.remove(QLatin1Char('&'));
|
||||
}
|
||||
@@ -239,17 +241,22 @@ QWidget *GdbOptionsPage::createPage(QWidget *parent)
|
||||
|
||||
void GdbOptionsPage::apply()
|
||||
{
|
||||
if (!m_ui) // page never shown
|
||||
return;
|
||||
m_group.apply(Core::ICore::instance()->settings());
|
||||
|
||||
if (m_ui.gdbChooserWidget->isDirty()) {
|
||||
if (m_ui->gdbChooserWidget->isDirty()) {
|
||||
gdbBinariesChanged = true;
|
||||
gdbBinaryToolChainMap = m_ui.gdbChooserWidget->gdbBinaries();
|
||||
m_ui.gdbChooserWidget->clearDirty();
|
||||
gdbBinaryToolChainMap = m_ui->gdbChooserWidget->gdbBinaries();
|
||||
m_ui->gdbChooserWidget->clearDirty();
|
||||
}
|
||||
}
|
||||
|
||||
void GdbOptionsPage::finish()
|
||||
{
|
||||
if (!m_ui) // page never shown
|
||||
return;
|
||||
delete m_ui;
|
||||
m_ui = 0;
|
||||
m_group.finish();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user