#include <QPushButton>
#include <QtConcurrent/QtConcurrent>
+#include "menubar.h"
#include "bigintmandelwidget.h"
-static inline QMenuBar *setup_menu_bar(BigintMandelWidget *parent) {
- QMenuBar *menu_bar = new QMenuBar(parent);
- QMenu *menu = new QMenu("&File", parent);
- QPushButton *button = new QPushButton("Settings");
- QAction *two, *four, *eight, *sixteen;
- menu_bar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
- QObject::connect(
- menu->addAction("&Reset"),
- &QAction::triggered,
- parent,
- &BigintMandelWidget::reset
- );
- QObject::connect(
- menu->addAction("&Load"),
- &QAction::triggered,
- parent,
- &BigintMandelWidget::load_data
- );
- QObject::connect(
- menu->addAction("&Save"),
- &QAction::triggered,
- parent,
- &BigintMandelWidget::save_data
- );
- menu->addSeparator();
- QObject::connect(
- menu->addAction("&Export"),
- &QAction::triggered,
- parent,
- &BigintMandelWidget::export_img
- );
- menu->addSeparator();
- QObject::connect(
- menu->addAction("E&xit"),
- &QAction::triggered,
- parent,
- &BigintMandelWidget::close
- );
- menu_bar->addMenu(menu);
- menu = new QMenu("&Zoom factor", parent);
- two = menu->addAction("&2");
- four = menu->addAction("&4");
- eight = menu->addAction("&8");
- sixteen = menu->addAction("1&6");
- two->setCheckable(true);
- two->setChecked(true);
- four->setCheckable(true);
- eight->setCheckable(true);
- sixteen->setCheckable(true);
- QObject::connect(
- two,
- &QAction::triggered,
- parent,
- [two, four, eight, sixteen, parent]() {
- two->setChecked(true);
- four->setChecked(false);
- eight->setChecked(false);
- sixteen->setChecked(false);
- parent->set_zoom_factor(2);
- }
- );
- QObject::connect(
- four,
- &QAction::triggered,
- parent,
- [two, four, eight, sixteen, parent]() {
- two->setChecked(false);
- four->setChecked(true);
- eight->setChecked(false);
- sixteen->setChecked(false);
- parent->set_zoom_factor(4);
- }
- );
- QObject::connect(
- eight,
- &QAction::triggered,
- parent,
- [two, four, eight, sixteen, parent]() {
- two->setChecked(false);
- four->setChecked(false);
- eight->setChecked(true);
- sixteen->setChecked(false);
- parent->set_zoom_factor(8);
- }
- );
- QObject::connect(
- sixteen,
- &QAction::triggered,
- parent,
- [two, four, eight, sixteen, parent]() {
- two->setChecked(false);
- four->setChecked(false);
- eight->setChecked(false);
- sixteen->setChecked(true);
- parent->set_zoom_factor(16);
- }
- );
- menu_bar->addMenu(menu);
- QObject::connect(
- button,
- &QPushButton::clicked,
- parent,
- &BigintMandelWidget::exec_settings_widget
- );
- menu_bar->setCornerWidget(button);
- return menu_bar;
-}
-
static inline void start_calculation(
QFutureWatcher<MandelResultCell> *fw, QVector<MandelCell> cells
) {
: QWidget(parent),
fw(new QFutureWatcher<MandelResultCell>(this)),
settings(128, QSize(502, 334)),
+ menu_bar(new MenuBar(this)),
scroll_area(new QScrollArea(this)),
img_label(new QLabel(this)),
img_dirty(true),
);
start_calculation(fw, settings.get_cells());
setLayout(new QVBoxLayout());
- layout()->addWidget(setup_menu_bar(this));
+ layout()->addWidget(menu_bar);
layout()->addWidget(scroll_area);
status_bar->setSizeGripEnabled(false);
layout()->addWidget(status_bar);
|| pos.y() < 0
|| pos.y() >= size.height())
return;
- settings.zoom(get_ideal_size(), zoom_factor, pos);
+ settings.zoom(get_ideal_size(), menu_bar->get_zoom_factor(), pos);
start_calculation(fw, settings.get_cells());
update_img();
}