From a327a33c3e542c44cc280e24c354226d700584f4 Mon Sep 17 00:00:00 2001 From: Itay Cohen Date: Sun, 8 Mar 2020 18:27:47 +0200 Subject: [PATCH] Add configuration description getter to improve Initial Analysis dialog (#2088) * Implement configuration description getter * Use helper function and remove trimming --- src/core/Cutter.cpp | 7 +++++++ src/core/Cutter.h | 1 + src/dialogs/InitialOptionsDialog.cpp | 18 ++++++++++++++---- src/dialogs/InitialOptionsDialog.h | 8 ++++++++ 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/core/Cutter.cpp b/src/core/Cutter.cpp index 6592f5c7..f678a231 100644 --- a/src/core/Cutter.cpp +++ b/src/core/Cutter.cpp @@ -912,6 +912,13 @@ bool CutterCore::getConfigb(const char *k) return r_config_get_i(core->config, k) != 0; } +QString CutterCore::getConfigDescription(const char *k) +{ + CORE_LOCK(); + RConfigNode *node = r_config_node_get (core->config, k); + return QString(node->desc); +} + void CutterCore::triggerRefreshAll() { emit refreshAll(); diff --git a/src/core/Cutter.h b/src/core/Cutter.h index 42cef4ee..8d0692bf 100644 --- a/src/core/Cutter.h +++ b/src/core/Cutter.h @@ -265,6 +265,7 @@ public: bool getConfigb(const QString &k) { return getConfigb(k.toUtf8().constData()); } QString getConfig(const char *k); QString getConfig(const QString &k) { return getConfig(k.toUtf8().constData()); } + QString getConfigDescription(const char *k); QList getColorThemes(); /* Assembly\Hexdump related methods */ diff --git a/src/dialogs/InitialOptionsDialog.cpp b/src/dialogs/InitialOptionsDialog.cpp index 0c837631..a6031877 100644 --- a/src/dialogs/InitialOptionsDialog.cpp +++ b/src/dialogs/InitialOptionsDialog.cpp @@ -31,20 +31,22 @@ InitialOptionsDialog::InitialOptionsDialog(MainWindow *main): for (const auto &plugin : asm_plugins) { ui->archComboBox->addItem(plugin, plugin); } - ui->archComboBox->setToolTip(core->cmd("e? asm.arch").trimmed()); + + setTooltipWithConfigHelp(ui->archComboBox,"asm.arch"); // cpu combo box ui->cpuComboBox->lineEdit()->setPlaceholderText(tr("Auto")); - ui->cpuComboBox->setToolTip(core->cmd("e? asm.cpu").trimmed()); + setTooltipWithConfigHelp(ui->cpuComboBox, "asm.cpu"); + updateCPUComboBox(); // os combo box for (const auto &plugin : core->cmdList("e asm.os=?")) { ui->kernelComboBox->addItem(plugin, plugin); } - ui->kernelComboBox->setToolTip(core->cmd("e? asm.os").trimmed()); - ui->bitsComboBox->setToolTip(core->cmd("e? asm.bits").trimmed()); + setTooltipWithConfigHelp(ui->kernelComboBox, "asm.os"); + setTooltipWithConfigHelp(ui->bitsComboBox, "asm.bits"); for (const auto &plugin : core->getRBinPluginDescriptions("bin")) { ui->formatComboBox->addItem(plugin.name, QVariant::fromValue(plugin)); @@ -166,6 +168,14 @@ void InitialOptionsDialog::loadOptions(const InitialOptions &options) // TODO: all other options should also be applied to the ui } + +void InitialOptionsDialog::setTooltipWithConfigHelp(QWidget *w, const char *config) { + w->setToolTip(QString("%1 (%2)") + .arg(core->getConfigDescription(config)) + .arg(config)); +} + + QString InitialOptionsDialog::getSelectedArch() const { QVariant archValue = ui->archComboBox->currentData(); diff --git a/src/dialogs/InitialOptionsDialog.h b/src/dialogs/InitialOptionsDialog.h index f5c41f34..5807e0f4 100644 --- a/src/dialogs/InitialOptionsDialog.h +++ b/src/dialogs/InitialOptionsDialog.h @@ -65,6 +65,14 @@ private: QString getSelectedOS() const; QList getSelectedAdvancedAnalCmds() const; + /** + * @brief setTooltipWithConfigHelp is an helper function that add a tolltip to a widget with + * a description of a given radare2 eval config. + * @param w - a widget to which to add the tooltip + * @param config - name of a configuration variable such as "asm.bits". + */ + void setTooltipWithConfigHelp(QWidget *w, const char *config); + public: void loadOptions(const InitialOptions &options);