diff --git a/src/Cutter.pro b/src/Cutter.pro
index 9c5fb37a..7d549ecf 100644
--- a/src/Cutter.pro
+++ b/src/Cutter.pro
@@ -315,6 +315,7 @@ SOURCES += \
widgets/DebugActions.cpp \
widgets/MemoryMapWidget.cpp \
dialogs/preferences/DebugOptionsWidget.cpp \
+ dialogs/preferences/PluginsOptionsWidget.cpp \
widgets/BreakpointWidget.cpp \
dialogs/BreakpointsDialog.cpp \
dialogs/AttachProcDialog.cpp \
@@ -431,6 +432,7 @@ HEADERS += \
widgets/DebugActions.h \
widgets/MemoryMapWidget.h \
dialogs/preferences/DebugOptionsWidget.h \
+ dialogs/preferences/PluginsOptionsWidget.h \
widgets/BreakpointWidget.h \
dialogs/BreakpointsDialog.h \
dialogs/AttachProcDialog.h \
diff --git a/src/dialogs/AboutDialog.ui b/src/dialogs/AboutDialog.ui
index dea81d4c..193194ab 100644
--- a/src/dialogs/AboutDialog.ui
+++ b/src/dialogs/AboutDialog.ui
@@ -59,7 +59,7 @@
- Show plugin information
+ Show radare2 plugin information
diff --git a/src/dialogs/R2PluginsDialog.cpp b/src/dialogs/R2PluginsDialog.cpp
index 4670cc39..964fecd5 100644
--- a/src/dialogs/R2PluginsDialog.cpp
+++ b/src/dialogs/R2PluginsDialog.cpp
@@ -51,15 +51,6 @@ R2PluginsDialog::R2PluginsDialog(QWidget *parent) :
ui->RAsmTreeWidget->addTopLevelItem(item);
}
qhelpers::adjustColumns(ui->RAsmTreeWidget, 0);
-
- for (CutterPlugin *plugin : Plugins()->getPlugins()) {
- QTreeWidgetItem *item = new QTreeWidgetItem();
- item->setText(0, plugin->getName());
- item->setText(1, plugin->getDescription());
- item->setText(2, plugin->getVersion());
- item->setText(3, plugin->getAuthor());
- ui->CutterTreeWidget->addTopLevelItem(item);
- }
}
R2PluginsDialog::~R2PluginsDialog()
diff --git a/src/dialogs/R2PluginsDialog.ui b/src/dialogs/R2PluginsDialog.ui
index 49381420..871c1ae5 100644
--- a/src/dialogs/R2PluginsDialog.ui
+++ b/src/dialogs/R2PluginsDialog.ui
@@ -188,47 +188,6 @@
-
-
- Cutter
-
-
- -
-
-
- Cutter plugins
-
-
-
- -
-
-
- true
-
-
-
- Name
-
-
-
-
- Description
-
-
-
-
- Version
-
-
-
-
- Author
-
-
-
-
-
-
-
diff --git a/src/dialogs/preferences/AppearanceOptionsWidget.cpp b/src/dialogs/preferences/AppearanceOptionsWidget.cpp
index f3f6f1ce..6501b6f8 100644
--- a/src/dialogs/preferences/AppearanceOptionsWidget.cpp
+++ b/src/dialogs/preferences/AppearanceOptionsWidget.cpp
@@ -30,11 +30,10 @@ static const QHash kRelevantSchemes = {
{ "white", LightFlag }
};
-AppearanceOptionsWidget::AppearanceOptionsWidget(PreferencesDialog *dialog, QWidget *parent)
- : QDialog(parent),
+AppearanceOptionsWidget::AppearanceOptionsWidget(PreferencesDialog *dialog)
+ : QDialog(dialog),
ui(new Ui::AppearanceOptionsWidget)
{
- Q_UNUSED(dialog);
ui->setupUi(this);
updateFontFromConfig();
diff --git a/src/dialogs/preferences/AppearanceOptionsWidget.h b/src/dialogs/preferences/AppearanceOptionsWidget.h
index d4141774..1182944c 100644
--- a/src/dialogs/preferences/AppearanceOptionsWidget.h
+++ b/src/dialogs/preferences/AppearanceOptionsWidget.h
@@ -19,7 +19,7 @@ class AppearanceOptionsWidget : public QDialog
Q_OBJECT
public:
- explicit AppearanceOptionsWidget(PreferencesDialog *dialog, QWidget *parent = nullptr);
+ explicit AppearanceOptionsWidget(PreferencesDialog *dialog);
~AppearanceOptionsWidget();
private:
diff --git a/src/dialogs/preferences/AsmOptionsWidget.cpp b/src/dialogs/preferences/AsmOptionsWidget.cpp
index 357ab2ee..a4bb9217 100644
--- a/src/dialogs/preferences/AsmOptionsWidget.cpp
+++ b/src/dialogs/preferences/AsmOptionsWidget.cpp
@@ -9,11 +9,10 @@
#include "common/Helpers.h"
#include "common/Configuration.h"
-AsmOptionsWidget::AsmOptionsWidget(PreferencesDialog *dialog, QWidget *parent)
- : QDialog(parent),
+AsmOptionsWidget::AsmOptionsWidget(PreferencesDialog *dialog)
+ : QDialog(dialog),
ui(new Ui::AsmOptionsWidget)
{
- Q_UNUSED(dialog)
ui->setupUi(this);
diff --git a/src/dialogs/preferences/AsmOptionsWidget.h b/src/dialogs/preferences/AsmOptionsWidget.h
index 5c9a88c8..320216cb 100644
--- a/src/dialogs/preferences/AsmOptionsWidget.h
+++ b/src/dialogs/preferences/AsmOptionsWidget.h
@@ -19,7 +19,7 @@ class AsmOptionsWidget : public QDialog
Q_OBJECT
public:
- explicit AsmOptionsWidget(PreferencesDialog *dialog, QWidget *parent = nullptr);
+ explicit AsmOptionsWidget(PreferencesDialog *dialog);
~AsmOptionsWidget();
private:
diff --git a/src/dialogs/preferences/DebugOptionsWidget.cpp b/src/dialogs/preferences/DebugOptionsWidget.cpp
index e8f35dc4..39935141 100644
--- a/src/dialogs/preferences/DebugOptionsWidget.cpp
+++ b/src/dialogs/preferences/DebugOptionsWidget.cpp
@@ -10,11 +10,10 @@
#include "common/Helpers.h"
#include "common/Configuration.h"
-DebugOptionsWidget::DebugOptionsWidget(PreferencesDialog *dialog, QWidget *parent)
- : QDialog(parent),
+DebugOptionsWidget::DebugOptionsWidget(PreferencesDialog *dialog)
+ : QDialog(dialog),
ui(new Ui::DebugOptionsWidget)
{
- Q_UNUSED(dialog);
ui->setupUi(this);
updateDebugPlugin();
diff --git a/src/dialogs/preferences/DebugOptionsWidget.h b/src/dialogs/preferences/DebugOptionsWidget.h
index 7985c446..54a163e1 100644
--- a/src/dialogs/preferences/DebugOptionsWidget.h
+++ b/src/dialogs/preferences/DebugOptionsWidget.h
@@ -16,7 +16,7 @@ class DebugOptionsWidget : public QDialog
Q_OBJECT
public:
- explicit DebugOptionsWidget(PreferencesDialog *dialog, QWidget *parent = nullptr);
+ explicit DebugOptionsWidget(PreferencesDialog *dialog);
~DebugOptionsWidget();
private:
diff --git a/src/dialogs/preferences/GraphOptionsWidget.cpp b/src/dialogs/preferences/GraphOptionsWidget.cpp
index e7540aa8..d3d51270 100644
--- a/src/dialogs/preferences/GraphOptionsWidget.cpp
+++ b/src/dialogs/preferences/GraphOptionsWidget.cpp
@@ -9,12 +9,10 @@
#include "common/Helpers.h"
#include "common/Configuration.h"
-GraphOptionsWidget::GraphOptionsWidget(PreferencesDialog *dialog, QWidget *parent)
- : QDialog(parent),
+GraphOptionsWidget::GraphOptionsWidget(PreferencesDialog *dialog)
+ : QDialog(dialog),
ui(new Ui::GraphOptionsWidget)
{
- Q_UNUSED(dialog)
-
ui->setupUi(this);
updateOptionsFromVars();
diff --git a/src/dialogs/preferences/GraphOptionsWidget.h b/src/dialogs/preferences/GraphOptionsWidget.h
index 64c0d2fc..1337e583 100644
--- a/src/dialogs/preferences/GraphOptionsWidget.h
+++ b/src/dialogs/preferences/GraphOptionsWidget.h
@@ -19,7 +19,7 @@ class GraphOptionsWidget : public QDialog
Q_OBJECT
public:
- explicit GraphOptionsWidget(PreferencesDialog *dialog, QWidget *parent = nullptr);
+ explicit GraphOptionsWidget(PreferencesDialog *dialog);
~GraphOptionsWidget();
private:
diff --git a/src/dialogs/preferences/PluginsOptionsWidget.cpp b/src/dialogs/preferences/PluginsOptionsWidget.cpp
new file mode 100644
index 00000000..781494b6
--- /dev/null
+++ b/src/dialogs/preferences/PluginsOptionsWidget.cpp
@@ -0,0 +1,56 @@
+
+#include "PluginsOptionsWidget.h"
+
+#include "PreferencesDialog.h"
+
+#include "common/Helpers.h"
+#include "common/Configuration.h"
+#include "plugins/PluginManager.h"
+#include "dialogs/R2PluginsDialog.h"
+
+#include
+#include
+#include
+#include
+
+
+PluginsOptionsWidget::PluginsOptionsWidget(PreferencesDialog *dialog)
+ : QDialog(dialog)
+{
+ auto layout = new QVBoxLayout(this);
+ setLayout(layout);
+
+ auto dirLabel = new QLabel(this);
+ layout->addWidget(dirLabel);
+ dirLabel->setText(tr("Plugins are loaded from %1").arg(Plugins()->getPluginsDirectory()));
+
+ auto treeWidget = new QTreeWidget(this);
+ layout->addWidget(treeWidget);
+ treeWidget->setRootIsDecorated(false);
+ treeWidget->setHeaderLabels({
+ tr("Name"),
+ tr("Description"),
+ tr("Version"),
+ tr("Author")
+ });
+
+ for (CutterPlugin *plugin : Plugins()->getPlugins()) {
+ auto item = new QTreeWidgetItem();
+ item->setText(0, plugin->getName());
+ item->setText(1, plugin->getDescription());
+ item->setText(2, plugin->getVersion());
+ item->setText(3, plugin->getAuthor());
+ treeWidget->addTopLevelItem(item);
+ }
+ qhelpers::adjustColumns(treeWidget, 0);
+
+ auto r2PluginsButton = new QPushButton(this);
+ layout->addWidget(r2PluginsButton);
+ r2PluginsButton->setText(tr("Show radare2 plugin information"));
+ connect(r2PluginsButton, &QPushButton::clicked, this, [this]() {
+ R2PluginsDialog dialog(this);
+ dialog.exec();
+ });
+}
+
+PluginsOptionsWidget::~PluginsOptionsWidget() {}
\ No newline at end of file
diff --git a/src/dialogs/preferences/PluginsOptionsWidget.h b/src/dialogs/preferences/PluginsOptionsWidget.h
new file mode 100644
index 00000000..894777c3
--- /dev/null
+++ b/src/dialogs/preferences/PluginsOptionsWidget.h
@@ -0,0 +1,19 @@
+
+#ifndef PLUGINSOPTIONSWIDGET_H
+#define PLUGINSOPTIONSWIDGET_H
+
+#include
+
+class PreferencesDialog;
+
+class PluginsOptionsWidget : public QDialog
+{
+Q_OBJECT
+
+public:
+ explicit PluginsOptionsWidget(PreferencesDialog *dialog);
+ ~PluginsOptionsWidget();
+};
+
+
+#endif //CUTTER_PLUGINSOPTIONSWIDGET_H
diff --git a/src/dialogs/preferences/PreferencesDialog.cpp b/src/dialogs/preferences/PreferencesDialog.cpp
index 1e874527..e98ba857 100644
--- a/src/dialogs/preferences/PreferencesDialog.cpp
+++ b/src/dialogs/preferences/PreferencesDialog.cpp
@@ -1,5 +1,3 @@
-#include
-
#include "PreferencesDialog.h"
#include "ui_PreferencesDialog.h"
@@ -7,12 +5,15 @@
#include "AsmOptionsWidget.h"
#include "GraphOptionsWidget.h"
#include "DebugOptionsWidget.h"
+#include "PluginsOptionsWidget.h"
#include "PreferenceCategory.h"
#include "common/Helpers.h"
#include "common/Configuration.h"
+#include
+
PreferencesDialog::PreferencesDialog(QWidget *parent)
: QDialog(parent),
@@ -25,7 +26,7 @@ PreferencesDialog::PreferencesDialog(QWidget *parent)
QList prefs {
{
- "Assembly",
+ tr("Disassembly"),
new AsmOptionsWidget(this),
QIcon(":/img/icons/disas_light.svg"),
{
@@ -37,14 +38,19 @@ PreferencesDialog::PreferencesDialog(QWidget *parent)
}
},
{
- "Debug",
+ tr("Debug"),
new DebugOptionsWidget(this),
QIcon(":/img/icons/bug_light.svg")
},
{
- "Appearance",
+ tr("Appearance"),
new AppearanceOptionsWidget(this),
QIcon(":/img/icons/polar_light.svg")
+ },
+ {
+ tr("Plugins"),
+ new PluginsOptionsWidget(this),
+ QIcon(":/img/icons/plugins_light.svg")
}
};
diff --git a/src/dialogs/preferences/PreferencesDialog.h b/src/dialogs/preferences/PreferencesDialog.h
index 8f92ff3d..595bebaa 100644
--- a/src/dialogs/preferences/PreferencesDialog.h
+++ b/src/dialogs/preferences/PreferencesDialog.h
@@ -2,12 +2,13 @@
#ifndef PREFERENCESDIALOG_H
#define PREFERENCESDIALOG_H
+#include "core/Cutter.h"
+
#include
-#include
-#include
+
#include
-#include "core/Cutter.h"
+class QTreeWidgetItem;
namespace Ui {
class PreferencesDialog;
diff --git a/src/img/icons/plugins_light.svg b/src/img/icons/plugins_light.svg
new file mode 100644
index 00000000..bc509e9e
--- /dev/null
+++ b/src/img/icons/plugins_light.svg
@@ -0,0 +1,54 @@
+
+
\ No newline at end of file
diff --git a/src/menus/DisassemblyContextMenu.cpp b/src/menus/DisassemblyContextMenu.cpp
index 8465fe18..53a45668 100644
--- a/src/menus/DisassemblyContextMenu.cpp
+++ b/src/menus/DisassemblyContextMenu.cpp
@@ -9,11 +9,13 @@
#include "dialogs/SetToDataDialog.h"
#include "dialogs/EditFunctionDialog.h"
#include "dialogs/LinkTypeDialog.h"
+
#include
#include
#include
#include
#include
+#include
DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent)
: QMenu(parent),
diff --git a/src/resources.qrc b/src/resources.qrc
index 4d44e914..9b563c5a 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -84,6 +84,7 @@
img/icons/previous.svg
img/icons/list.svg
img/icons/fork.svg
+ img/icons/plugins_light.svg
python/cutter.py
python/reg_qtres_importer.py