1 
2 #include "PluginsOptionsWidget.h"
3 
4 #include "PreferencesDialog.h"
5 
6 #include "common/Helpers.h"
7 #include "common/Configuration.h"
8 #include "plugins/PluginManager.h"
9 #include "dialogs/R2PluginsDialog.h"
10 
11 #include <QLabel>
12 #include <QPushButton>
13 #include <QTreeWidget>
14 #include <QVBoxLayout>
15 #include <QUrl>
16 
17 
PluginsOptionsWidget(PreferencesDialog * dialog)18 PluginsOptionsWidget::PluginsOptionsWidget(PreferencesDialog *dialog)
19     : QDialog(dialog)
20 {
21     auto layout = new QVBoxLayout(this);
22     setLayout(layout);
23 
24     auto dirLabel = new QLabel(this);
25     dirLabel->setTextInteractionFlags(Qt::TextBrowserInteraction);
26     dirLabel->setOpenExternalLinks(true);
27     layout->addWidget(dirLabel);
28     auto pluginPath = Plugins()->getUserPluginsDirectory();
29     dirLabel->setText(tr("Plugins are loaded from <a href=\"%1\">%2</a>")
30                       .arg(QUrl::fromLocalFile(pluginPath).toString(), pluginPath.toHtmlEscaped()));
31 
32     auto treeWidget = new QTreeWidget(this);
33     layout->addWidget(treeWidget);
34     treeWidget->setRootIsDecorated(false);
35     treeWidget->setHeaderLabels({
36         tr("Name"),
37         tr("Description"),
38         tr("Version"),
39         tr("Author")
40     });
41 
42     for (auto &plugin : Plugins()->getPlugins()) {
43         auto item = new QTreeWidgetItem();
44         item->setText(0, plugin->getName());
45         item->setText(1, plugin->getDescription());
46         item->setText(2, plugin->getVersion());
47         item->setText(3, plugin->getAuthor());
48         treeWidget->addTopLevelItem(item);
49     }
50     qhelpers::adjustColumns(treeWidget, 0);
51 
52     auto r2PluginsButton = new QPushButton(this);
53     layout->addWidget(r2PluginsButton);
54     r2PluginsButton->setText(tr("Show radare2 plugin information"));
55     connect(r2PluginsButton, &QPushButton::clicked, this, [this]() {
56         R2PluginsDialog dialog(this);
57         dialog.exec();
58     });
59 }
60 
~PluginsOptionsWidget()61 PluginsOptionsWidget::~PluginsOptionsWidget() {}
62