]> git.mar77i.info Git - bigintmandel/blobdiff - bigintmandelwidget.cpp
split out menubar
[bigintmandel] / bigintmandelwidget.cpp
index 328fbdbc0a901053e8d0ee264f9141b085da1df0..70c8e5fd49e04df0d3670bf48860a393b2992ee1 100644 (file)
@@ -8,116 +8,9 @@
 #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
 ) {
@@ -133,6 +26,7 @@ BigintMandelWidget::BigintMandelWidget(QWidget *parent)
 :   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),
@@ -161,7 +55,7 @@ BigintMandelWidget::BigintMandelWidget(QWidget *parent)
     );
     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);
@@ -242,7 +136,7 @@ void BigintMandelWidget::mousePressEvent(QMouseEvent *event) {
             || 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();
 }