mirror of
https://github.com/rizinorg/cutter.git
synced 2025-02-20 13:46:06 +00:00
Add Plugins Section to Preferences
This commit is contained in:
parent
dffb9dccb9
commit
aa591e1a47
@ -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 \
|
||||
|
@ -59,7 +59,7 @@
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Show plugin information</string>
|
||||
<string>Show radare2 plugin information</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -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()
|
||||
|
@ -188,47 +188,6 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="CutterTab">
|
||||
<attribute name="title">
|
||||
<string>Cutter</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||
<item>
|
||||
<widget class="QLabel" name="CutterLabel">
|
||||
<property name="text">
|
||||
<string>Cutter plugins</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTreeWidget" name="CutterTreeWidget">
|
||||
<property name="sortingEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Name</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Description</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Version</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Author</string>
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -30,11 +30,10 @@ static const QHash<QString, ColorFlags> 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();
|
||||
|
@ -19,7 +19,7 @@ class AppearanceOptionsWidget : public QDialog
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit AppearanceOptionsWidget(PreferencesDialog *dialog, QWidget *parent = nullptr);
|
||||
explicit AppearanceOptionsWidget(PreferencesDialog *dialog);
|
||||
~AppearanceOptionsWidget();
|
||||
|
||||
private:
|
||||
|
@ -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);
|
||||
|
||||
|
@ -19,7 +19,7 @@ class AsmOptionsWidget : public QDialog
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit AsmOptionsWidget(PreferencesDialog *dialog, QWidget *parent = nullptr);
|
||||
explicit AsmOptionsWidget(PreferencesDialog *dialog);
|
||||
~AsmOptionsWidget();
|
||||
|
||||
private:
|
||||
|
@ -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();
|
||||
|
@ -16,7 +16,7 @@ class DebugOptionsWidget : public QDialog
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit DebugOptionsWidget(PreferencesDialog *dialog, QWidget *parent = nullptr);
|
||||
explicit DebugOptionsWidget(PreferencesDialog *dialog);
|
||||
~DebugOptionsWidget();
|
||||
|
||||
private:
|
||||
|
@ -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();
|
||||
|
@ -19,7 +19,7 @@ class GraphOptionsWidget : public QDialog
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit GraphOptionsWidget(PreferencesDialog *dialog, QWidget *parent = nullptr);
|
||||
explicit GraphOptionsWidget(PreferencesDialog *dialog);
|
||||
~GraphOptionsWidget();
|
||||
|
||||
private:
|
||||
|
56
src/dialogs/preferences/PluginsOptionsWidget.cpp
Normal file
56
src/dialogs/preferences/PluginsOptionsWidget.cpp
Normal file
@ -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 <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QTreeWidget>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
|
||||
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() {}
|
19
src/dialogs/preferences/PluginsOptionsWidget.h
Normal file
19
src/dialogs/preferences/PluginsOptionsWidget.h
Normal file
@ -0,0 +1,19 @@
|
||||
|
||||
#ifndef PLUGINSOPTIONSWIDGET_H
|
||||
#define PLUGINSOPTIONSWIDGET_H
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
class PreferencesDialog;
|
||||
|
||||
class PluginsOptionsWidget : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit PluginsOptionsWidget(PreferencesDialog *dialog);
|
||||
~PluginsOptionsWidget();
|
||||
};
|
||||
|
||||
|
||||
#endif //CUTTER_PLUGINSOPTIONSWIDGET_H
|
@ -1,5 +1,3 @@
|
||||
#include <QDialogButtonBox>
|
||||
|
||||
#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 <QDialogButtonBox>
|
||||
|
||||
|
||||
PreferencesDialog::PreferencesDialog(QWidget *parent)
|
||||
: QDialog(parent),
|
||||
@ -25,7 +26,7 @@ PreferencesDialog::PreferencesDialog(QWidget *parent)
|
||||
QList<PreferenceCategory> 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")
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -2,12 +2,13 @@
|
||||
#ifndef PREFERENCESDIALOG_H
|
||||
#define PREFERENCESDIALOG_H
|
||||
|
||||
#include "core/Cutter.h"
|
||||
|
||||
#include <QDialog>
|
||||
#include <QPushButton>
|
||||
#include <QTreeWidget>
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "core/Cutter.h"
|
||||
class QTreeWidgetItem;
|
||||
|
||||
namespace Ui {
|
||||
class PreferencesDialog;
|
||||
|
54
src/img/icons/plugins_light.svg
Normal file
54
src/img/icons/plugins_light.svg
Normal file
@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
style="enable-background:new 0 0 32 32"
|
||||
xml:space="preserve"
|
||||
height="32px"
|
||||
width="32px"
|
||||
version="1.1"
|
||||
y="0px"
|
||||
x="0px"
|
||||
viewBox="0 0 32 32"
|
||||
id="svg8"
|
||||
sodipodi:docname="plugin.svg"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"><metadata
|
||||
id="metadata14"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs12">
|
||||
|
||||
|
||||
</defs><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1918"
|
||||
inkscape:window-height="1042"
|
||||
id="namedview10"
|
||||
showgrid="false"
|
||||
inkscape:zoom="10.429825"
|
||||
inkscape:cx="-16.624731"
|
||||
inkscape:cy="16.507785"
|
||||
inkscape:window-x="1920"
|
||||
inkscape:window-y="18"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg8"
|
||||
inkscape:snap-bbox="true" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect5115"
|
||||
d="M 13,0 C 10.784,0 9,1.784 9,4 V 6 H 4 C 1.784,6 0,7.784 0,10 v 5 h 2 c 2.216,0 4,1.784 4,4 0,2.216 -1.784,4 -4,4 H 0 v 5 c 0,2.216 1.784,4 4,4 h 5 v -2 c 0,-2.216 1.784,-4 4,-4 2.216,0 4,1.784 4,4 v 2 h 5 c 2.216,0 4,-1.784 4,-4 v -5 h 2 c 2.216,0 4,-1.784 4,-4 0,-2.216 -1.784,-4 -4,-4 H 26 V 10 C 26,7.784 24.216,6 22,6 H 17 V 4 C 17,1.784 15.216,0 13,0 Z"
|
||||
style="display:inline;fill:#aaacaf;fill-opacity:1;stroke:none;stroke-width:1.9352982;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:label="puzzle" />
|
||||
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
@ -9,11 +9,13 @@
|
||||
#include "dialogs/SetToDataDialog.h"
|
||||
#include "dialogs/EditFunctionDialog.h"
|
||||
#include "dialogs/LinkTypeDialog.h"
|
||||
|
||||
#include <QtCore>
|
||||
#include <QShortcut>
|
||||
#include <QJsonArray>
|
||||
#include <QClipboard>
|
||||
#include <QApplication>
|
||||
#include <QPushButton>
|
||||
|
||||
DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent)
|
||||
: QMenu(parent),
|
||||
|
@ -84,6 +84,7 @@
|
||||
<file>img/icons/previous.svg</file>
|
||||
<file>img/icons/list.svg</file>
|
||||
<file>img/icons/fork.svg</file>
|
||||
<file>img/icons/plugins_light.svg</file>
|
||||
<file>python/cutter.py</file>
|
||||
<file>python/reg_qtres_importer.py</file>
|
||||
</qresource>
|
||||
|
Loading…
Reference in New Issue
Block a user