Add esil stack options and cleanup (#582)

This commit is contained in:
fcasal 2018-07-17 20:00:35 +01:00 committed by xarkes
parent 9f7b96281d
commit 43215a06ac
4 changed files with 66 additions and 20 deletions

View File

@ -55,7 +55,7 @@ OptionsDialog::OptionsDialog(MainWindow *main):
connect(ui->pdbCheckBox, SIGNAL(stateChanged(int)), this, SLOT(updatePDBLayout()));
updateScriptLayout();
connect(ui->scriptCheckBox, SIGNAL(stateChanged(int)), this, SLOT(updateScriptLayout()));
connect(ui->cancelButton, SIGNAL(clicked()), this, SLOT(reject()));

View File

@ -17,7 +17,6 @@ DebugOptionsWidget::DebugOptionsWidget(PreferencesDialog */*dialog*/, QWidget *p
ui->setupUi(this);
updateDebugPlugin();
setupDebugArgs();
}
DebugOptionsWidget::~DebugOptionsWidget() {}
@ -36,33 +35,44 @@ void DebugOptionsWidget::updateDebugPlugin()
connect(ui->pluginComboBox, SIGNAL(currentIndexChanged(const QString &)), this,
SLOT(on_pluginComboBox_currentIndexChanged(const QString &)));
}
void DebugOptionsWidget::setupDebugArgs()
{
// add Enter shortcut to confirm changes
QShortcut *enterPress = new QShortcut(QKeySequence(Qt::Key_Return), this);
enterPress->setContext(Qt::WidgetWithChildrenShortcut);
connect(enterPress, &QShortcut::activated, this, &DebugOptionsWidget::updateDebugArgs);
QString debugArgs = Core()->getConfig("dbg.args");
ui->debugArgs->setText(debugArgs);
ui->debugArgs->setPlaceholderText(debugArgs);
connect(ui->debugArgs, &QLineEdit::editingFinished, this, &DebugOptionsWidget::updateDebugArgs);
QString currentArgs = Core()->getConfig("dbg.args");
ui->debugArgs->setText(currentArgs);
ui->debugArgs->setPlaceholderText(currentArgs);
connect(ui->updateArgsButton, &QAbstractButton::clicked, this, &DebugOptionsWidget::updateDebugArgs);
QString stackSize = Core()->getConfig("esil.stack.size");
ui->stackSize->setText(stackSize);
ui->stackSize->setPlaceholderText(stackSize);
QString stackAddr = Core()->getConfig("esil.stack.addr");
ui->stackAddr->setText(stackAddr);
ui->stackAddr->setPlaceholderText(stackAddr);
connect(ui->stackAddr, &QLineEdit::editingFinished, this, &DebugOptionsWidget::updateStackAddr);
connect(ui->stackSize, &QLineEdit::editingFinished, this, &DebugOptionsWidget::updateStackSize);
}
void DebugOptionsWidget::updateDebugArgs()
{
QString newArgs = ui->debugArgs->text();
Core()->setConfig("dbg.args", newArgs);
ui->debugArgs->setText(newArgs);
ui->debugArgs->setPlaceholderText(newArgs);
// flash green for 200 ms
ui->debugArgs->setStyleSheet("border: 1px solid green;");
QTimer::singleShot(200, [this](){ ui->debugArgs->setStyleSheet("");});
}
void DebugOptionsWidget::on_pluginComboBox_currentIndexChanged(const QString &plugin)
{
Core()->setDebugPlugin(plugin);
}
void DebugOptionsWidget::updateStackSize()
{
QString newSize = ui->stackSize->text();
Core()->setConfig("esil.stack.size", newSize);
ui->stackSize->setPlaceholderText(newSize);
}
void DebugOptionsWidget::updateStackAddr()
{
QString newAddr = ui->stackAddr->text();
Core()->setConfig("esil.stack.addr", newAddr);
ui->stackAddr->setPlaceholderText(newAddr);
}

View File

@ -24,7 +24,8 @@ private:
private slots:
void updateDebugPlugin();
void setupDebugArgs();
void updateDebugArgs();
void updateStackAddr();
void updateStackSize();
void on_pluginComboBox_currentIndexChanged(const QString &index);
};

View File

@ -59,10 +59,45 @@
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<layout class="QHBoxLayout" name="esilVMOptions1">
<item>
<widget class="QPushButton" name="updateArgsButton">
<widget class="QLabel" name="esilstackAddr">
<property name="text">
<string>Confirm</string>
<string>ESIL stack address:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="stackAddr">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0">
<layout class="QHBoxLayout" name="esilVMOptions2">
<item>
<widget class="QLabel" name="esilStackSize">
<property name="text">
<string>ESIL stack size:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="stackSize">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>