#include "r_version.h" #include "core/Cutter.h" #include "AboutDialog.h" #include "ui_AboutDialog.h" #include "R2PluginsDialog.h" #include "common/Configuration.h" #include #include #include #include #include #include #include #include #include #include "CutterConfig.h" AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent), ui(new Ui::AboutDialog) { ui->setupUi(this); setWindowFlags(windowFlags() & (~Qt::WindowContextHelpButtonHint)); ui->logoSvgWidget->load(Config()->getLogoFile()); QString aboutString("

Cutter

" + tr("Version") + " " CUTTER_VERSION_FULL "
" + tr("Using r2-") + R2_GITTAP + "

" + tr("Optional Features:") + "
" + QString("Jupyter: %1
").arg( #ifdef CUTTER_ENABLE_JUPYTER "ON" #else "OFF" #endif ) + QString("QtWebEngine: %2

").arg( #ifdef CUTTER_ENABLE_QTWEBENGINE "ON" #else "OFF" #endif ) + "

" + tr("License") + "

" + tr("This Software is released under the GNU General Public License v3.0") + "

" + tr("Authors") + "

" "xarkes, thestr4ng3r, ballessay
" "Based on work by Hugo Teso <hugo.teso@gmail.org> (originally Iaito)."); ui->label->setText(aboutString); QSignalBlocker s(ui->updatesCheckBox); ui->updatesCheckBox->setChecked(Config()->getAutoUpdateEnabled()); } AboutDialog::~AboutDialog() {} void AboutDialog::on_buttonBox_rejected() { close(); } void AboutDialog::on_showVersionButton_clicked() { QMessageBox popup(this); popup.setWindowTitle(tr("radare2 version information")); popup.setTextInteractionFlags(Qt::TextSelectableByMouse); auto versionInformation = Core()->getVersionInformation(); popup.setText(versionInformation); popup.exec(); } void AboutDialog::on_showPluginsButton_clicked() { R2PluginsDialog dialog(this); dialog.exec(); } void AboutDialog::on_checkForUpdatesButton_clicked() { UpdateWorker updateWorker; QProgressDialog waitDialog; QProgressBar *bar = new QProgressBar(&waitDialog); bar->setMaximum(0); waitDialog.setBar(bar); waitDialog.setLabel(new QLabel(tr("Checking for updates..."), &waitDialog)); connect(&updateWorker, &UpdateWorker::checkComplete, &waitDialog, &QProgressDialog::cancel); connect(&updateWorker, &UpdateWorker::checkComplete, [&updateWorker](const QString & version, const QString & error) { if (error != "") { QMessageBox::critical(nullptr, tr("Error!"), error); } else { if (version == CUTTER_VERSION_FULL) { QMessageBox::information(nullptr, tr("Version control"), tr("Cutter is up to date!")); } else { updateWorker.showUpdateDialog(false); } } }); updateWorker.checkCurrentVersion(7000); waitDialog.exec(); } void AboutDialog::on_updatesCheckBox_stateChanged(int) { Config()->setAutoUpdateEnabled(!Config()->getAutoUpdateEnabled()); }