]> git.mar77i.info Git - bigintmandel/blob - menubar.cpp
split out menubar
[bigintmandel] / menubar.cpp
1
2 // menubar.cpp
3
4 #include <QPushButton>
5 #include <qwidget.h>
6
7 #include "menubar.h"
8
9 static inline QAction *zoom_action(
10 MenuBar *menu_bar, QAction *action, int data
11 ) {
12 QObject::connect(
13 action,
14 &QAction::triggered,
15 menu_bar,
16 &MenuBar::change_zoom_factor
17 );
18 action->setData(data);
19 action->setCheckable(true);
20 return action;
21 }
22
23 MenuBar::MenuBar(BigintMandelWidget *parent)
24 : QMenuBar(parent),
25 file_menu(new QMenu("&File", parent)),
26 zoom_factor_menu(new QMenu("&Zoom factor", parent)),
27 zoom_factor(2) {
28 QKeySequence no_key;
29 setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
30 addMenu(file_menu);
31 reset_action = file_menu->addAction(
32 "&Reset", no_key, parent, &BigintMandelWidget::reset
33 );
34 load_action = file_menu->addAction(
35 "&Load...", no_key, parent, &BigintMandelWidget::load_data
36 );
37 save_action = file_menu->addAction(
38 "&Save...", no_key, parent, &BigintMandelWidget::save_data
39 );
40 file_menu->addSeparator();
41 export_action = file_menu->addAction(
42 "&Export...", no_key, parent, &BigintMandelWidget::export_img
43 );
44 file_menu->addSeparator();
45 exit_action = file_menu->addAction(
46 "E&xit", no_key, parent, &BigintMandelWidget::close
47 );
48
49 addMenu(zoom_factor_menu);
50 two_action = zoom_action(this, zoom_factor_menu->addAction("&2"), 2);
51 four_action = zoom_action(this, zoom_factor_menu->addAction("&4"), 4);
52 eight_action = zoom_action(this, zoom_factor_menu->addAction("&8"), 8);
53 sixteen_action = zoom_action(this, zoom_factor_menu->addAction("1&6"), 16);
54 check_action();
55 }
56
57 void MenuBar::change_zoom_factor() {
58 zoom_factor = static_cast<QAction*>(sender())->data().toInt();
59 check_action();
60 }