diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index afa9275e8..61200a876 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -169,6 +169,7 @@ set(SOURCES widgets/SearchableDockWidget.cpp common/CutterSearchable.cpp widgets/SearchableTextEdit.cpp + dialogs/preferences/RizinOptionsWidget.cpp ) set(HEADER_FILES core/Cutter.h @@ -347,6 +348,7 @@ set(HEADER_FILES widgets/SearchableDockWidget.h common/CutterSearchable.h widgets/SearchableTextEdit.h + dialogs/preferences/RizinOptionsWidget.h ) set(UI_FILES dialogs/AboutDialog.ui @@ -428,6 +430,7 @@ set(UI_FILES dialogs/RegisterProfileDialog.ui dialogs/EditRegProfileDialog.ui widgets/SearchBarWidget.ui + dialogs/preferences/RizinOptionsWidget.ui ) set(QRC_FILES resources.qrc diff --git a/src/dialogs/preferences/PreferencesDialog.cpp b/src/dialogs/preferences/PreferencesDialog.cpp index 0b1571892..d7bc5e0be 100644 --- a/src/dialogs/preferences/PreferencesDialog.cpp +++ b/src/dialogs/preferences/PreferencesDialog.cpp @@ -9,6 +9,7 @@ #include "InitializationFileEditor.h" #include "AnalysisOptionsWidget.h" #include "ShortcutOptionsWidget.h" +#include "RizinOptionsWidget.h" #include "PreferenceCategory.h" @@ -38,7 +39,8 @@ PreferencesDialog::PreferencesDialog(QWidget *parent) { tr("Initialization Script"), new InitializationFileEditor(this), QIcon(":/img/icons/initialization.svg") }, { tr("Analysis"), new AnalysisOptionsWidget(this), QIcon(":/img/icons/cog_light.svg") }, - { tr("Shortcuts"), new ShortcutOptionsWidget(this), QIcon(":/img/icons/edit_light.svg") } + { tr("Shortcuts"), new ShortcutOptionsWidget(this), QIcon(":/img/icons/edit_light.svg") }, + { tr("Rizin"), new RizinOptionsWidget(this), QIcon(":/img/icons/rizin.svg") } }; for (auto &c : prefs) { diff --git a/src/dialogs/preferences/RizinOptionsWidget.cpp b/src/dialogs/preferences/RizinOptionsWidget.cpp new file mode 100644 index 000000000..6f056f458 --- /dev/null +++ b/src/dialogs/preferences/RizinOptionsWidget.cpp @@ -0,0 +1,30 @@ +#include "RizinOptionsWidget.h" +#include "PreferencesDialog.h" +#include "ui_RizinOptionsWidget.h" + +#include "common/Helpers.h" +#include "common/Configuration.h" +#include "core/Cutter.h" + +RizinOptionsWidget::RizinOptionsWidget(PreferencesDialog *dialog) + : QDialog(dialog), ui(new Ui::RizinOptionsWidget) +{ + ui->setupUi(this); + connect(ui->compressProjectCheckBox, &QCheckBox::stateChanged, this, + &RizinOptionsWidget::updateCompressProjectConfig); + + updateRizinWidgetsFromConfig(); +} + +RizinOptionsWidget::~RizinOptionsWidget(){} + +void RizinOptionsWidget::updateRizinWidgetsFromConfig() +{ + qhelpers::setCheckedWithoutSignals(ui->compressProjectCheckBox, + Core()->getConfigb("prj.compress")); +} + +void RizinOptionsWidget::updateCompressProjectConfig() +{ + Config()->setConfig("prj.compress", ui->compressProjectCheckBox->isChecked()); +} \ No newline at end of file diff --git a/src/dialogs/preferences/RizinOptionsWidget.h b/src/dialogs/preferences/RizinOptionsWidget.h new file mode 100644 index 000000000..037b3d88b --- /dev/null +++ b/src/dialogs/preferences/RizinOptionsWidget.h @@ -0,0 +1,27 @@ +#pragma once + +#include + +#include "core/Cutter.h" + +class PreferencesDialog; + +namespace Ui { +class RizinOptionsWidget; +} + +class RizinOptionsWidget : public QDialog +{ + Q_OBJECT + +public: + explicit RizinOptionsWidget(PreferencesDialog *dialog); + ~RizinOptionsWidget(); + +private: + std::unique_ptr ui; + +private slots: + void updateRizinWidgetsFromConfig(); + void updateCompressProjectConfig(); +}; diff --git a/src/dialogs/preferences/RizinOptionsWidget.ui b/src/dialogs/preferences/RizinOptionsWidget.ui new file mode 100644 index 000000000..bf1bfbf8b --- /dev/null +++ b/src/dialogs/preferences/RizinOptionsWidget.ui @@ -0,0 +1,28 @@ + + + RizinOptionsWidget + + + + 0 + 0 + 619 + 225 + + + + Rizin + + + + + + Compress project when saving (prj.compress) + + + + + + + + \ No newline at end of file diff --git a/src/img/icons/rizin.svg b/src/img/icons/rizin.svg new file mode 100644 index 000000000..7171bd55b --- /dev/null +++ b/src/img/icons/rizin.svg @@ -0,0 +1,44 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/src/resources.qrc b/src/resources.qrc index 90dd8d8a0..878831558 100644 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -126,5 +126,6 @@ img/icons/reset.svg img/icons/down_light.svg img/icons/delete_light.svg + img/icons/rizin.svg