2 * Common Source code Project:
3 * Ui->Qt->gui->menu_main for generic.
4 * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
7 * Jan 14, 2015 : Initial, moved from qt/x1turboz/MainWindow.cpp .
10 #include <QtCore/QVariant>
12 #include "commonclasses.h"
13 #include "mainwidget.h"
14 //#include "menuclasses.h"
17 #include "qt_gldraw.h"
21 #if (SCREEN_WIDTH > 320)
22 const static float screen_multiply_table[] = {0.5, 1.0, 1.5, 2.0, 2.25, 2.5, 3.0, 3.5, 4.0, 5.0, 6.0, 8.0, 0.0};
24 const static float screen_multiply_table[] = {0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 6.0, 7.5, 10.0, 12.0, 15.0, 0.0};
26 void Object_Menu_Control::set_screen_aspect(void) {
27 int num = getValue1();
28 emit sig_screen_aspect(num);
31 void Object_Menu_Control::set_screen_size(void) {
34 config.window_mode = getNumber();
35 nd = (float)getDoubleValue();
36 w = (int)(nd * (double)SCREEN_WIDTH);
37 h = (int)(nd * (double)SCREEN_HEIGHT);
38 #if defined(USE_CRT_MONITOR_4_3)
39 if(config.stretch_type == 1) {
40 h = (int)((double)h * ((double)SCREEN_WIDTH / (double)SCREEN_HEIGHT * 3.0 / 4.0));
41 } else if(config.stretch_type == 2) {
42 w = (int)((double)w * (4.0 / (3.0 * (double)SCREEN_WIDTH / (double)SCREEN_HEIGHT)));
45 emit sig_screen_size(w, h);
46 emit sig_screen_multiply(nd);
49 void Ui_MainWindow::set_gl_scan_line_vert(bool f)
51 config.opengl_scanline_vert = f;
54 void Ui_MainWindow::set_gl_scan_line_horiz(bool f)
56 config.opengl_scanline_horiz = f;
59 void Ui_MainWindow::ConfigScreenMenu_List(void)
65 actionGroup_ScreenSize = new QActionGroup(this);
66 actionGroup_ScreenSize->setExclusive(true);
67 screen_mode_count = 0;
68 for(i = 0; i < _SCREEN_MODE_NUM; i++) {
69 w = (int)(screen_multiply_table[i] * (double)SCREEN_WIDTH);
70 h = (int)(screen_multiply_table[i] * (double)SCREEN_HEIGHT);
71 if((w <= 0) || (h <= 0)) {
75 tmps = QString::number(i);
76 actionScreenSize[i] = new Action_Control(this);
77 actionScreenSize[i]->setObjectName(QString::fromUtf8("actionScreenSize", -1) + tmps);
78 actionScreenSize[i]->setCheckable(true);
79 actionScreenSize[i]->binds->setNumber(i);
81 if(i == config.window_mode) actionScreenSize[i]->setChecked(true); // OK?
83 actionGroup_ScreenSize->addAction(actionScreenSize[i]);
84 actionScreenSize[i]->binds->setDoubleValue(screen_multiply_table[i]);
86 connect(actionScreenSize[i], SIGNAL(triggered()),
87 actionScreenSize[i]->binds, SLOT(set_screen_size()));
89 connect(actionScreenSize[i]->binds, SIGNAL(sig_screen_size(int, int)),
90 this, SLOT(set_screen_size(int, int)));
92 for(; i < _SCREEN_MODE_NUM; i++) {
93 actionScreenSize[i] = NULL;
97 void Ui_MainWindow::ConfigScreenMenu(void)
99 actionZoom = new Action_Control(this);
100 actionZoom->setObjectName(QString::fromUtf8("actionZoom"));
101 actionDisplay_Mode = new Action_Control(this);
102 actionDisplay_Mode->setObjectName(QString::fromUtf8("actionDisplay_Mode"));
105 actionScanLine = new Action_Control(this);
106 actionScanLine->setObjectName(QString::fromUtf8("actionScanLine"));
107 actionScanLine->setCheckable(true);
108 if(config.scan_line != 0) {
109 actionScanLine->setChecked(true);
111 actionScanLine->setChecked(false);
113 connect(actionScanLine, SIGNAL(toggled(bool)),
114 this, SLOT(set_scan_line(bool)));
116 #if !defined(ONE_BOARD_MICRO_COMPUTER) && !defined(MAX_BUTTONS)
117 actionGLScanLineHoriz = new Action_Control(this);
118 actionGLScanLineHoriz->setObjectName(QString::fromUtf8("actionGLScanLineHoriz"));
119 actionGLScanLineHoriz->setCheckable(true);
120 if(config.opengl_scanline_horiz != 0) {
121 actionGLScanLineHoriz->setChecked(true);
123 actionGLScanLineHoriz->setChecked(false);
125 connect(actionGLScanLineHoriz, SIGNAL(toggled(bool)),
126 this, SLOT(set_gl_scan_line_horiz(bool)));
127 # if defined(USE_VERTICAL_PIXEL_LINES)
128 actionGLScanLineVert = new Action_Control(this);
129 actionGLScanLineVert->setObjectName(QString::fromUtf8("actionGLScanLineVert"));
130 actionGLScanLineVert->setCheckable(true);
131 if(config.opengl_scanline_vert != 0) {
132 actionGLScanLineVert->setChecked(true);
134 actionGLScanLineVert->setChecked(false);
136 connect(actionGLScanLineVert, SIGNAL(toggled(bool)),
137 this, SLOT(set_gl_scan_line_vert(bool)));
140 #ifdef USE_SCREEN_ROTATE
141 actionRotate = new Action_Control(this);
142 actionRotate->setObjectName(QString::fromUtf8("actionScanLine"));
143 actionRotate->setCheckable(true);
144 if(config.rotate_type) {
145 actionRotate->setChecked(true);
147 actionRotate->setChecked(false);
149 connect(actionRotate, SIGNAL(toggled(bool)),
150 this, SLOT(set_screen_rotate(bool)));
153 #ifdef USE_CRT_FILTER
154 actionCRT_Filter = new Action_Control(this);
155 actionCRT_Filter->setObjectName(QString::fromUtf8("actionCRT_Filter"));
156 actionCRT_Filter->setEnabled(true);
157 actionCRT_Filter->setCheckable(true);
158 if(config.crt_filter == 0) actionCRT_Filter->setChecked(true);
159 connect(actionCRT_Filter, SIGNAL(toggled(bool)), this, SLOT(set_crt_filter(bool)));
161 actionOpenGL_Filter = new Action_Control(this);
162 actionOpenGL_Filter->setObjectName(QString::fromUtf8("actionOpenGL_Filter"));
163 actionOpenGL_Filter->setEnabled(true);
164 actionOpenGL_Filter->setCheckable(true);
165 if(config.use_opengl_filters) actionOpenGL_Filter->setChecked(true);
166 connect(actionOpenGL_Filter, SIGNAL(toggled(bool)), this, SLOT(set_gl_crt_filter(bool)));
168 #if defined(USE_CRT_MONITOR_4_3)
169 actionDot_by_Dot = new Action_Control(this);
170 actionDot_by_Dot->setObjectName(QString::fromUtf8("actionDot_by_Dot"));
171 actionDot_by_Dot->setCheckable(true);
172 if(config.stretch_type == 0) actionDot_by_Dot->setChecked(true);
173 actionDot_by_Dot->binds->setValue1(0);
175 actionKeep_Aspect = new Action_Control(this);
176 actionKeep_Aspect->setObjectName(QString::fromUtf8("actionKeep_Aspect"));
177 actionKeep_Aspect->setCheckable(true);
178 actionKeep_Aspect->binds->setValue1(1);
179 if(config.stretch_type == 1) actionKeep_Aspect->setChecked(true);
181 actionFill_Display = new Action_Control(this);
182 actionFill_Display->setObjectName(QString::fromUtf8("actionFill_Display"));
183 actionFill_Display->setCheckable(true);
184 actionFill_Display->binds->setValue1(2);
185 if(config.stretch_type == 2) actionFill_Display->setChecked(true);
187 actionGroup_Stretch = new QActionGroup(this);
188 actionGroup_Stretch->setExclusive(true);
189 actionGroup_Stretch->addAction(actionDot_by_Dot);
190 actionGroup_Stretch->addAction(actionKeep_Aspect);
191 actionGroup_Stretch->addAction(actionFill_Display);
192 connect(actionDot_by_Dot, SIGNAL(triggered()), actionDot_by_Dot->binds, SLOT(set_screen_aspect()));
193 connect(actionDot_by_Dot->binds, SIGNAL(sig_screen_aspect(int)), this, SLOT(set_screen_aspect(int)));
195 connect(actionKeep_Aspect, SIGNAL(triggered()), actionKeep_Aspect->binds, SLOT(set_screen_aspect()));
196 connect(actionKeep_Aspect->binds, SIGNAL(sig_screen_aspect(int)), this, SLOT(set_screen_aspect(int)));
198 connect(actionFill_Display, SIGNAL(triggered()), actionFill_Display->binds, SLOT(set_screen_aspect()));
199 connect(actionFill_Display->binds, SIGNAL(sig_screen_aspect(int)), this, SLOT(set_screen_aspect(int)));
201 actionCapture_Screen = new Action_Control(this);
202 actionCapture_Screen->setObjectName(QString::fromUtf8("actionCapture_Screen"));
204 actionStart_Record_Movie = new Action_Control(this);
205 actionStart_Record_Movie->setObjectName(QString::fromUtf8("actionStart_Record_Movie"));
206 actionStart_Record_Movie->setCheckable(true);
208 actionStop_Record_Movie = new Action_Control(this);
209 actionStop_Record_Movie->setObjectName(QString::fromUtf8("actionStop_Record_Movie"));
210 actionStop_Record_Movie->setCheckable(false);
212 ConfigScreenMenu_List();
215 void Ui_MainWindow::CreateScreenMenu(void)
218 menuScreen = new QMenu(menubar);
219 menuScreen->setObjectName(QString::fromUtf8("menuScreen"));
220 #if defined(USE_CRT_MONITOR_4_3)
221 menuStretch_Mode = new QMenu(menuScreen);
222 menuStretch_Mode->setObjectName(QString::fromUtf8("menuStretch_Mode"));
224 menuScreenSize = new QMenu(menuScreen);
225 menuScreenSize->setObjectName(QString::fromUtf8("menuScreen_Size"));
226 menuScreen->addSeparator();
227 menuRecord_as_movie = new QMenu(menuScreen);
228 menuRecord_as_movie->setObjectName(QString::fromUtf8("menuRecord_as_movie"));
230 menuScreen->addAction(actionZoom);
231 menuScreen->addAction(menuScreenSize->menuAction());
232 for(i = 0; i < _SCREEN_MODE_NUM; i++) {
233 if(actionScreenSize[i] == NULL) continue;
234 menuScreenSize->addAction(actionScreenSize[i]);
235 actionScreenSize[i]->setVisible(true);
237 #if defined(USE_CRT_MONITOR_4_3)
238 menuScreen->addSeparator();
239 menuScreen->addAction(menuStretch_Mode->menuAction());
241 menuStretch_Mode->addAction(actionDot_by_Dot);
242 menuStretch_Mode->addAction(actionKeep_Aspect);
243 menuStretch_Mode->addAction(actionFill_Display);
245 menuScreen->addSeparator();
247 menuScreen->addAction(actionScanLine);
249 #if !defined(ONE_BOARD_MICRO_COMPUTER) && !defined(MAX_BUTTONS)
250 menuScreen->addAction(actionGLScanLineHoriz);
251 # ifdef USE_VERTICAL_PIXEL_LINES
252 menuScreen->addAction(actionGLScanLineVert);
255 #ifdef USE_SCREEN_ROTATE
256 menuScreen->addAction(actionRotate);
258 #ifdef USE_CRT_FILTER
259 menuScreen->addAction(actionCRT_Filter);
261 menuScreen->addAction(actionOpenGL_Filter);
262 menuScreen->addAction(actionCapture_Screen);
263 menuScreen->addSeparator();
264 menuScreen->addAction(menuRecord_as_movie->menuAction());
265 menuRecord_as_movie->addAction(actionStart_Record_Movie);
266 menuRecord_as_movie->addAction(actionStop_Record_Movie);
269 void Ui_MainWindow::retranslateScreenMenu(void)
274 actionZoom->setText(QApplication::translate("MainWindow", "Zoom Screen", 0));
275 actionDisplay_Mode->setText(QApplication::translate("MainWindow", "Display Mode", 0));
277 actionScanLine->setText(QApplication::translate("MainWindow", "Set ScanLine", 0));
279 #ifdef USE_SCREEN_ROTATE
280 actionRotate->setText(QApplication::translate("MainWindow", "Rotate Screen", 0));
282 #ifdef USE_CRT_FILTER
283 actionCRT_Filter->setText(QApplication::translate("MainWindow", "CRT Filter", 0));
285 #if !defined(ONE_BOARD_MICRO_COMPUTER) && !defined(MAX_BUTTONS)
286 actionGLScanLineHoriz->setText(QApplication::translate("MainWindow", "OpenGL Scan Line", 0));
287 # if defined(USE_VERTICAL_PIXEL_LINES)
288 actionGLScanLineVert->setText(QApplication::translate("MainWindow", "OpenGL Pixel Line", 0));
291 actionOpenGL_Filter->setText(QApplication::translate("MainWindow", "OpenGL Filter", 0));
292 #if defined(USE_CRT_MONITOR_4_3)
293 actionDot_by_Dot->setText(QApplication::translate("MainWindow", "Dot by Dot", 0));
294 actionKeep_Aspect->setText(QApplication::translate("MainWindow", "Keep Aspect: Refer to X", 0));
295 actionFill_Display->setText(QApplication::translate("MainWindow", "Keep Aspect: Refer to Y", 0));
297 actionCapture_Screen->setText(QApplication::translate("MainWindow", "Capture Screen", 0));
299 menuScreen->setTitle(QApplication::translate("MainWindow", "Screen", 0));
300 #if defined(USE_CRT_MONITOR_4_3)
301 menuStretch_Mode->setTitle(QApplication::translate("MainWindow", "Stretch Mode", 0));
304 actionStart_Record_Movie->setText(QApplication::translate("MainWindow", "Start Record Movie", 0));
305 actionStop_Record_Movie->setText(QApplication::translate("MainWindow", "Stop Record Movie", 0));
307 menuRecord_as_movie->setTitle(QApplication::translate("MainWindow", "Record as movie", 0));
310 menuScreenSize->setTitle(QApplication::translate("MainWindow", "Screen size", 0));
312 for(i = 0; i < _SCREEN_MODE_NUM; i++) {
313 if(actionScreenSize[i] == NULL) continue;
314 s_mul = screen_multiply_table[i];
315 if(s_mul <= 0) break;
316 tmps = QString::number(s_mul);
317 tmps = QString::fromUtf8("x", -1) + tmps;
318 actionScreenSize[i]->setText(tmps);