OSDN Git Service

bd8ec790292fdd85d27dc01232af9939aa842530
[csp-qt/common_source_project-fm7.git] / source / src / qt / gui / menu_main.cpp
1 /*
2  * Common Source code Project:
3  * Ui->Qt->gui->menu_main for generic.
4  * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
5  *   License : GPLv2
6  *   History :
7  * Jan 14, 2015 : Initial, moved from qt/x1turboz/MainWindow.cpp .
8  */
9
10 #include <QtCore/QVariant>
11 #include <QtGui>
12 #include <QIcon>
13 #include <QImage>
14 #include <QImageReader>
15 #include <QPixmap>
16
17 #include "commonclasses.h"
18 #include "display_about.h"
19 #include "display_text_document.h"
20 #include "mainwidget_base.h"
21 //#include "menuclasses.h"
22 #include "menu_disk.h"
23 #include "menu_cmt.h"
24 #include "menu_cart.h"
25 #include "menu_quickdisk.h"
26 #include "menu_binary.h"
27 #include "menu_compactdisc.h"
28 #include "menu_bubble.h"
29
30 #include "qt_gldraw.h"
31 //#include "emu.h"
32 #include "qt_main.h"
33 #include "menu_flags.h"
34
35 extern EMU *emu;
36 //extern USING_FLAGS *using_flags;
37
38 Ui_MainWindowBase::Ui_MainWindowBase(USING_FLAGS *p, QWidget *parent) : QMainWindow(parent)
39 {
40         using_flags = p;
41         setupUi();
42         createContextMenu();
43 }
44
45 Ui_MainWindowBase::~Ui_MainWindowBase()
46 {
47         delete using_flags;
48         graphicsView->releaseKeyboard();
49 }
50
51
52 void Action_Control::do_check_grab_mouse(bool flag)
53 {
54         this->toggle();
55 }
56
57 void Action_Control::do_send_string(void)
58 {
59         emit sig_send_string(bindString);
60 }
61
62 void Action_Control::do_set_string(QString s)
63 {
64         bindString = s;
65 }
66
67
68 void Ui_MainWindowBase::do_show_about(void)
69 {
70         Dlg_AboutCSP *dlg = new Dlg_AboutCSP(using_flags);
71         dlg->show();
72 }
73
74 void Ui_MainWindowBase::do_browse_document(QString fname)
75 {
76         Dlg_BrowseText *dlg = new Dlg_BrowseText(fname, using_flags);
77         dlg->show();
78 }
79
80
81 void Ui_MainWindowBase::setupUi(void)
82 {
83         int w, h;
84         //   QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
85         MainWindow = new QMainWindow();
86         if (MainWindow->objectName().isEmpty())
87                 MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
88         //MainWindow->resize(1288, 862);
89    
90         ConfigControlMenu();
91         ConfigFloppyMenu();
92         ConfigCMTMenu();
93         if(!using_flags->is_without_sound()) {
94                 ConfigSoundMenu();
95         }
96         if(using_flags->is_use_binary_file()) {
97                 ConfigBinaryMenu(); 
98         }
99         if(using_flags->is_use_qd()) {
100                 ConfigQuickDiskMenu();
101         }
102         ConfigScreenMenu();
103         if(using_flags->is_use_cart()) {
104                 ConfigCartMenu();
105         }
106         if(using_flags->is_use_compact_disc()) {
107                 ConfigCDROMMenu();
108         }
109         if(using_flags->is_use_bubble()) {
110                 ConfigBubbleMenu();
111         }
112         ConfigEmulatorMenu();   
113         actionAbout = new Action_Control(this, using_flags);
114         actionAbout->setObjectName(QString::fromUtf8("actionAbout"));
115    
116         graphicsView = new GLDrawClass(using_flags, this);
117         graphicsView->setObjectName(QString::fromUtf8("graphicsView"));
118         graphicsView->setMaximumSize(2560, 2560); // ?
119         graphicsView->setMinimumSize(240, 192); // ?
120         //graphicsView->grabKeyboard();
121         graphicsView->setAttribute(Qt::WA_InputMethodEnabled, false); // Disable [Zenkaku / Hankaku] with IM.
122         graphicsView->setAttribute(Qt::WA_KeyboardFocusChange, false); 
123         //graphicsView->setFocusPolicy(Qt::StrongFocus);
124         //this->setFocusPolicy(Qt::ClickFocus);
125    
126         bitmapImage = NULL;
127         MainWindow->setCentralWidget(graphicsView);
128         MainWindow->setFocusProxy(graphicsView);
129         
130         MainWindow->centralWidget()->adjustSize();
131         MainWindow->adjustSize();
132
133         statusbar = new QStatusBar(this);
134         statusbar->setObjectName(QString::fromUtf8("statusbar"));
135         MainWindow->setStatusBar(statusbar);
136         initStatusBar();
137         
138         menubar = new QMenuBar(this);
139         menubar->setObjectName(QString::fromUtf8("menubar"));
140         menubar->setGeometry(QRect(0, 0, 1288, 27));
141         menuControl = new QMenu(menubar);
142         menuControl->setObjectName(QString::fromUtf8("menuControl"));
143         menuState = new QMenu(menuControl);
144         menuState->setObjectName(QString::fromUtf8("menuState"));
145         if(using_flags->is_use_auto_key()) {
146                 menuCopy_Paste = new QMenu(menuControl);
147                 menuCopy_Paste->setObjectName(QString::fromUtf8("menuCopy_Paste"));
148         }
149         menuCpu_Speed = new QMenu(menuControl);
150         menuCpu_Speed->setObjectName(QString::fromUtf8("menuCpu_Speed"));
151         menuDebugger = new QMenu(menuControl);
152         menuDebugger->setObjectName(QString::fromUtf8("menuDebugger"));
153         if(using_flags->is_use_fd()) {
154                 int i;
155                 for(i = 0; i < using_flags->get_max_drive(); i++) CreateFloppyMenu(i, i + 1);
156         }
157         if(using_flags->is_use_qd()) {
158                 int i;
159                 for(i = 0; i < using_flags->get_max_qd(); i++) CreateQuickDiskMenu(i, i + 1);
160         }
161         if(using_flags->is_use_tape()) {
162                 CreateCMTMenu();
163         }
164         CreateScreenMenu();
165         if(using_flags->is_use_cart()) {
166                 int i;
167                 for(i = 0; i < using_flags->get_max_cart(); i++) {
168                         CreateCartMenu(i, i + 1);
169                 }
170         }
171         if(using_flags->is_use_binary_file()) {
172                 int i;
173                 for(i = 0; i < using_flags->get_max_binary(); i++) {
174                         CreateBinaryMenu(i, i + 1);
175                 }
176         }
177         if(using_flags->is_use_compact_disc()) {
178                 CreateCDROMMenu();
179         }
180         if(using_flags->is_use_bubble()) {
181                 int i;
182                 for(i = 0; i < using_flags->get_max_bubble(); i++) {
183                         CreateBubbleMenu(i, i + 1);
184                 }
185         }
186         connect(this, SIGNAL(sig_update_screen(void)), graphicsView, SLOT(update(void)));
187         //connect(this, SIGNAL(sig_update_screen(void)), graphicsView, SLOT(updateGL(void)));
188
189         menuMachine = new QMenu(menubar);
190         menuMachine->setObjectName(QString::fromUtf8("menuMachine"));
191
192         if(using_flags->is_use_mouse()) {
193                 actionMouseEnable = new Action_Control(this, using_flags);
194                 actionMouseEnable->setCheckable(true);
195                 actionMouseEnable->setVisible(true);
196                 actionMouseEnable->setChecked(false);
197                 menuMachine->addAction(actionMouseEnable);
198                 connect(actionMouseEnable, SIGNAL(toggled(bool)),
199                                 this, SLOT(do_set_mouse_enable(bool)));
200                 connect(graphicsView, SIGNAL(sig_check_grab_mouse(bool)),
201                                 actionMouseEnable, SLOT(do_check_grab_mouse(bool)));
202         }
203
204         ConfigDeviceType();
205         ConfigDriveType();
206         ConfigSoundDeviceType();
207         ConfigPrinterType();
208
209         if(!using_flags->is_without_sound()) {
210                 menuSound = new QMenu(menubar);
211                 menuSound->setObjectName(QString::fromUtf8("menuSound"));
212         }
213         menuEmulator = new QMenu(menubar);
214         menuEmulator->setObjectName(QString::fromUtf8("menuEmulator"));
215         
216         menuHELP = new QMenu(menubar);
217         menuHELP->setObjectName(QString::fromUtf8("menuHELP"));
218         MainWindow->setMenuBar(menubar);
219
220         menubar->addAction(menuControl->menuAction());
221         connectActions_ControlMenu();
222         if(using_flags->is_use_fd()) {
223                 int i;
224                 for(i = 0; i < using_flags->get_max_drive(); i++) {
225                         menubar->addAction(menu_fds[i]->menuAction());
226                 }
227         }
228         if(using_flags->is_use_qd()) {
229                 int i;
230                 for(i = 0; i < using_flags->get_max_qd(); i++) {
231                         menubar->addAction(menu_QDs[i]->menuAction());
232                 }
233         }
234         if(using_flags->is_use_tape()) {
235                 menubar->addAction(menu_CMT->menuAction());
236         }
237         if(using_flags->is_use_cart()) {
238                 int i;
239                 for(i = 0; i < using_flags->get_max_cart(); i++) {
240                         menubar->addAction(menu_Cart[i]->menuAction());
241                 }
242         }
243         if(using_flags->is_use_binary_file()) {
244                 int i;
245                 for(i = 0; i < using_flags->get_max_binary(); i++) {
246                         menubar->addAction(menu_BINs[i]->menuAction());
247                 }
248         }
249         if(using_flags->is_use_compact_disc()) {
250                 menubar->addAction(menu_CDROM->menuAction());
251         }
252 //      if(using_flags->is_use_laser_disc()) {
253 //              menubar->addAction(menu_LaserDisc->menuAction());
254 //      }
255         if(using_flags->is_use_bubble()) {
256                 int i;
257                 for(i = 0; i < using_flags->get_max_bubble(); i++) {
258                         menubar->addAction(menu_bubbles[i]->menuAction());
259                 }
260         }
261         menubar->addAction(menuMachine->menuAction());
262         if(!using_flags->is_without_sound()) {
263                 menubar->addAction(menuSound->menuAction());
264         }
265
266         menubar->addAction(menuScreen->menuAction());
267 //      menubar->addAction(menuRecord->menuAction());
268         menubar->addAction(menuEmulator->menuAction());
269         menubar->addAction(menuHELP->menuAction());
270         if(using_flags->is_use_qd()) {
271                 int i;
272                 for(i = 0; i < using_flags->get_max_qd(); i++) {
273                         CreateQuickDiskPulldownMenu(i);
274                 }
275         }
276         if(using_flags->is_use_binary_file()) {
277                 int i;
278                 for(i = 0; i < using_flags->get_max_binary(); i++) {
279                         CreateBinaryPulldownMenu(1);
280                 }
281         }
282         if(!using_flags->is_without_sound()) {
283                 CreateSoundMenu();
284         }
285         CreateEmulatorMenu();
286   
287         menuHELP->addAction(actionAbout);
288         connect(actionAbout, SIGNAL(triggered()), this, SLOT(do_show_about()));
289         menuHELP->addSeparator();
290         
291         actionHelp_AboutQt = new Action_Control(this, using_flags);
292         actionHelp_AboutQt->setObjectName(QString::fromUtf8("menuHelp_AboutQt"));
293         menuHELP->addAction(actionHelp_AboutQt);
294         menuHELP->addSeparator();
295         menuHelp_Readme = new QMenu(menuHELP);
296         menuHelp_Readme->setObjectName(QString::fromUtf8("menuHelp_Readme_menu"));;
297         menuHELP->addAction(menuHelp_Readme->menuAction());
298
299         actionHelp_README = new Action_Control(this, using_flags);
300         actionHelp_README->setObjectName(QString::fromUtf8("menuHelp_README"));
301         actionHelp_README->do_set_string(QString::fromUtf8("readme.txt"));
302         connect(actionHelp_README, SIGNAL(triggered()), actionHelp_README, SLOT(do_send_string()));
303         connect(actionHelp_README, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
304         menuHelp_Readme->addAction(actionHelp_README);
305         
306         actionHelp_README_QT = new Action_Control(this, using_flags);
307         actionHelp_README_QT->setObjectName(QString::fromUtf8("menuHelp_README_QT"));
308         actionHelp_README_QT->do_set_string(QString::fromUtf8("readme.qt.txt"));
309         menuHelp_Readme->addAction(actionHelp_README_QT);
310         connect(actionHelp_README_QT, SIGNAL(triggered()), actionHelp_README_QT, SLOT(do_send_string()));
311         connect(actionHelp_README_QT, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
312         actionHelp_README_Artane = new Action_Control(this, using_flags);
313         actionHelp_README_Artane->setObjectName(QString::fromUtf8("menuHelp_README_Artane"));
314         actionHelp_README_Artane->do_set_string(QString::fromUtf8("readme_by_artane.txt"));
315         connect(actionHelp_README_Artane, SIGNAL(triggered()), actionHelp_README_Artane, SLOT(do_send_string()));
316         connect(actionHelp_README_Artane, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
317         menuHelp_Readme->addAction(actionHelp_README_Artane);
318         menuHelp_Readme->addSeparator();
319         
320         actionHelp_README_BIOS = new Action_Control(this, using_flags);
321         actionHelp_README_BIOS->setObjectName(QString::fromUtf8("menuHelp_README_BIOS"));
322         actionHelp_README_BIOS->do_set_string(QString::fromUtf8("bios_and_keys.txt"));
323         connect(actionHelp_README_BIOS, SIGNAL(triggered()), actionHelp_README_BIOS, SLOT(do_send_string()));
324         connect(actionHelp_README_BIOS, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
325         menuHelp_Readme->addAction(actionHelp_README_BIOS);
326         menuHelp_Readme->addSeparator();
327         
328         actionHelp_README_MR_TANAM = new Action_Control(this, using_flags);
329         actionHelp_README_MR_TANAM->setObjectName(QString::fromUtf8("menuHelp_README_MR_TANAM"));
330         actionHelp_README_MR_TANAM->do_set_string(QString::fromUtf8("readme_by_mr_tanam.txt"));
331         connect(actionHelp_README_MR_TANAM, SIGNAL(triggered()), actionHelp_README_MR_TANAM, SLOT(do_send_string()));
332         connect(actionHelp_README_MR_TANAM, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
333         menuHelp_Readme->addAction(actionHelp_README_MR_TANAM);
334         
335         menuHelp_Readme->addSeparator();
336         
337         actionHelp_README_FAQ = new Action_Control(this, using_flags);
338         actionHelp_README_FAQ->setObjectName(QString::fromUtf8("menuHelp_README_FAQ"));
339         actionHelp_README_FAQ->do_set_string(QString::fromUtf8("FAQ.html"));
340         connect(actionHelp_README_FAQ, SIGNAL(triggered()), actionHelp_README_FAQ, SLOT(do_send_string()));
341         connect(actionHelp_README_FAQ, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
342         menuHelp_Readme->addAction(actionHelp_README_FAQ);
343
344         actionHelp_README_FAQ_JP = new Action_Control(this, using_flags);
345         actionHelp_README_FAQ_JP->setObjectName(QString::fromUtf8("menuHelp_README_FAQ_JP"));
346         actionHelp_README_FAQ_JP->do_set_string(QString::fromUtf8("FAQ.ja.html"));
347         connect(actionHelp_README_FAQ_JP, SIGNAL(triggered()), actionHelp_README_FAQ_JP, SLOT(do_send_string()));
348         connect(actionHelp_README_FAQ_JP, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
349         menuHelp_Readme->addAction(actionHelp_README_FAQ_JP);
350         menuHelp_Readme->addSeparator();
351         
352         actionHelp_README_FM7 = new Action_Control(this, using_flags);
353         actionHelp_README_FM7->setObjectName(QString::fromUtf8("menuHelp_README_FM7"));
354         actionHelp_README_FM7->do_set_string(QString::fromUtf8("readme_fm7.txt"));
355         connect(actionHelp_README_FM7, SIGNAL(triggered()), actionHelp_README_FM7, SLOT(do_send_string()));
356         connect(actionHelp_README_FM7, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
357         menuHelp_Readme->addAction(actionHelp_README_FM7);
358         
359         actionHelp_README_FM7_JP = new Action_Control(this, using_flags);
360         actionHelp_README_FM7_JP->setObjectName(QString::fromUtf8("menuHelp_README_FM7_JP"));
361         actionHelp_README_FM7_JP->do_set_string(QString::fromUtf8("readme_fm7.jp.txt"));
362         connect(actionHelp_README_FM7_JP, SIGNAL(triggered()), actionHelp_README_FM7_JP, SLOT(do_send_string()));
363         connect(actionHelp_README_FM7_JP, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
364         menuHelp_Readme->addAction(actionHelp_README_FM7_JP);
365
366         menuHelp_Histories = new QMenu(menuHELP);
367         menuHelp_Histories->setObjectName(QString::fromUtf8("menuHelp_Histories"));;
368         menuHELP->addAction(menuHelp_Histories->menuAction());
369
370         actionHelp_History = new Action_Control(this, using_flags);
371         actionHelp_History->setObjectName(QString::fromUtf8("menuHelp_History"));
372         actionHelp_History->do_set_string(QString::fromUtf8("history.txt"));
373         connect(actionHelp_History, SIGNAL(triggered()), actionHelp_History, SLOT(do_send_string()));
374         connect(actionHelp_History, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
375         menuHelp_Histories->addAction(actionHelp_History);
376         
377         actionHelp_History_Relnote = new Action_Control(this, using_flags);
378         actionHelp_History_Relnote->setObjectName(QString::fromUtf8("menuHelp_History_Relnote"));
379         actionHelp_History_Relnote->do_set_string(QString::fromUtf8("RELEASENOTE.txt"));
380         connect(actionHelp_History_Relnote, SIGNAL(triggered()), actionHelp_History_Relnote, SLOT(do_send_string()));
381         connect(actionHelp_History_Relnote, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
382         menuHelp_Histories->addAction(actionHelp_History_Relnote);
383         
384         actionHelp_History_ChangeLog = new Action_Control(this, using_flags);
385         actionHelp_History_ChangeLog->setObjectName(QString::fromUtf8("menuHelp_History_ChangeLog"));
386         actionHelp_History_ChangeLog->do_set_string(QString::fromUtf8("ChangeLog.txt"));
387         connect(actionHelp_History_ChangeLog, SIGNAL(triggered()), actionHelp_History_ChangeLog, SLOT(do_send_string()));
388         connect(actionHelp_History_ChangeLog, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
389         menuHelp_Histories->addAction(actionHelp_History_ChangeLog);
390
391         actionHelp_History_MR_TANAM = new Action_Control(this, using_flags);
392         actionHelp_History_MR_TANAM->setObjectName(QString::fromUtf8("menuHelp_History_MR_TANAM"));
393         actionHelp_History_MR_TANAM->do_set_string(QString::fromUtf8("history_by_mr_tanam.txt"));
394         connect(actionHelp_History_MR_TANAM, SIGNAL(triggered()), actionHelp_History_MR_TANAM, SLOT(do_send_string()));
395         connect(actionHelp_History_MR_TANAM, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
396         menuHelp_Histories->addAction(actionHelp_History_MR_TANAM);
397         
398         actionHelp_License = new Action_Control(this, using_flags);
399         actionHelp_License->setObjectName(QString::fromUtf8("menuHelp_License"));
400         actionHelp_License->do_set_string(QString::fromUtf8("LICENSE.txt"));
401         connect(actionHelp_License, SIGNAL(triggered()), actionHelp_License, SLOT(do_send_string()));
402         connect(actionHelp_License, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
403         menuHELP->addAction(actionHelp_License);
404         
405         actionHelp_License_JP = new Action_Control(this, using_flags);
406         actionHelp_License_JP->setObjectName(QString::fromUtf8("menuHelp_License_JP"));
407         actionHelp_License_JP->do_set_string(QString::fromUtf8("LICENSE.ja.txt"));
408         connect(actionHelp_License_JP, SIGNAL(triggered()), actionHelp_License_JP, SLOT(do_send_string()));
409         connect(actionHelp_License_JP, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
410         menuHELP->addAction(actionHelp_License_JP);
411         
412         if(config.window_mode <= 0) config.window_mode = 0;
413         if(config.window_mode >= using_flags->get_screen_mode_num()) config.window_mode = using_flags->get_screen_mode_num() - 1;
414         w = using_flags->get_screen_width();
415         h = using_flags->get_screen_height();
416         if(actionScreenSize[config.window_mode] != NULL) {
417                 double nd = actionScreenSize[config.window_mode]->binds->getDoubleValue();
418                 w = (int)(nd * (double)w);
419                 h = (int)(nd * (double)h);
420                 if(using_flags->is_use_screen_rotate()) {
421                         if(config.rotate_type) {
422                                 int tmp_w = w;
423                                 w = h;
424                                 h = tmp_w;
425                         }
426                 }
427         } else {
428                 if(using_flags->is_use_screen_rotate()) {
429                         if(config.rotate_type) {
430                                 w = 600;
431                                 h = 960;
432                         } else {                   
433                                 w = 1280;
434                                 h = 800;
435                         }
436                 } else {
437                         w = 1280;
438                         h = 800;
439                 }
440         }
441         graphicsView->setFixedSize(w, h);
442         for(int i = 0; i < using_flags->get_screen_mode_num(); i++) {
443                 if(actionScreenSize[i] != NULL) {
444                         connect(actionScreenSize[i]->binds, SIGNAL(sig_screen_multiply(float)),
445                                 graphicsView, SLOT(do_set_screen_multiply(float)));
446                 }
447         }
448         this->set_screen_size(w, h);
449         this->set_screen_aspect(config.window_stretch_type);
450         if(actionScreenSize[config.window_mode] != NULL) {
451                 double nd = actionScreenSize[config.window_mode]->binds->getDoubleValue();
452                 graphicsView->do_set_screen_multiply(nd);
453         }
454         if(using_flags->is_use_joystick()) {
455                 connect(action_SetupJoystick, SIGNAL(triggered()), this, SLOT(rise_joystick_dialog()));
456         }
457         connect(action_SetupKeyboard, SIGNAL(triggered()), this, SLOT(rise_keyboard_dialog()));
458            
459         QImageReader reader(":/default.ico");
460         QImage result = reader.read();
461
462         MainWindow->setWindowIcon(QPixmap::fromImage(result));
463         this->set_window_title();
464 //      QIcon WindowIcon;
465         InsertIcon = QApplication::style()->standardIcon(QStyle::SP_FileDialogStart);
466         EjectIcon  = QIcon(":/icon_eject.png");
467         StopIcon = QIcon(":/icon_process_stop.png");
468         RecordSoundIcon = QIcon(":/icon_record_to_wav.png");
469         ResetIcon = QApplication::style()->standardIcon(QStyle::SP_BrowserReload);
470
471         VolumeMutedIcon = QIcon(":/icon_volume_muted.png");
472         VolumeLowIcon = QIcon(":/icon_volume_low.png");
473         VolumeMidIcon = QIcon(":/icon_volume_mid.png");
474         VolumeHighIcon = QIcon(":/icon_volume_high.png");
475         
476         ExitIcon = QIcon(":/icon_exit.png");
477
478         QMetaObject::connectSlotsByName(MainWindow);
479 } // setupUi
480
481 // Emulator
482 #include "dropdown_joystick.h"
483 #include "dialog_set_key.h"
484
485 void Ui_MainWindowBase::retranslateEmulatorMenu(void)
486 {
487         int i;
488         menuEmulator->setTitle(QApplication::translate("MainWindow", "Emulator", 0));
489         if(using_flags->is_use_joystick()) {
490                 action_SetupJoystick->setText(QApplication::translate("MainWindow", "Configure Joysticks", 0));
491                 action_SetupJoystick->setIcon(QIcon(":/icon_gamepad.png"));
492         }
493         action_SetupKeyboard->setText(QApplication::translate("MainWindow", "Configure Keyboard", 0));
494         action_SetupKeyboard->setIcon(QIcon(":/icon_keyboard.png"));
495         action_SetupMovie->setText(QApplication::translate("MainWindow", "Configure movie encoding", 0));
496         
497 }
498
499 void Ui_MainWindowBase::CreateEmulatorMenu(void)
500 {
501         if(using_flags->is_use_joystick()) {
502                 menuEmulator->addAction(action_SetupJoystick);
503         }
504         menuEmulator->addAction(action_SetupKeyboard);
505         menuEmulator->addAction(action_SetupMovie);
506 }
507
508 void Ui_MainWindowBase::ConfigEmulatorMenu(void)
509 {
510         int i;
511         QString tmps;
512         if(using_flags->is_use_joystick()) {
513                 action_SetupJoystick = new Action_Control(this, using_flags);
514         }
515         action_SetupKeyboard = new Action_Control(this, using_flags);
516
517         action_SetupMovie = new Action_Control(this, using_flags);
518   
519 }
520
521 void Ui_MainWindowBase::rise_joystick_dialog(void)
522 {
523         if(graphicsView != NULL) {
524                 QStringList *lst = graphicsView->getVKNames();
525                 CSP_DropDownJoysticks *dlg = new CSP_DropDownJoysticks(NULL, lst, using_flags);
526                 dlg->setWindowTitle(QApplication::translate("CSP_DropDownJoysticks", "Configure Joysticks", 0));
527                 dlg->show();
528         }
529 }
530
531 void Ui_MainWindowBase::rise_movie_dialog(void)
532 {
533
534 }
535
536 void Ui_MainWindowBase::rise_keyboard_dialog(void)
537 {
538         if(graphicsView != NULL) {
539                 CSP_KeySetDialog *dlg = new CSP_KeySetDialog(NULL, graphicsView);
540                 dlg->setWindowTitle(QApplication::translate("KeySetDialog", "Configure Keyboard", 0));
541                 dlg->show();
542         }
543 }
544 // Retranslate
545 void Ui_MainWindowBase::retranslateUI_Help(void)
546 {
547         menuHELP->setTitle(QApplication::translate("MainWindow", "Help", 0));
548         actionHelp_AboutQt->setText(QApplication::translate("MainWindow", "About Qt", 0));
549         actionHelp_AboutQt->setIcon(QApplication::style()->standardIcon(QStyle::SP_TitleBarMenuButton));
550         
551         actionAbout->setText(QApplication::translate("MainWindow", "About...", 0));
552         actionAbout->setIcon(QApplication::style()->standardIcon(QStyle::SP_MessageBoxQuestion));
553
554         menuHelp_Readme->setTitle(QApplication::translate("MainWindow", "READMEs", 0));
555         
556         actionHelp_README->setText(QApplication::translate("MainWindow", "General Document", 0));
557         actionHelp_README_QT->setText(QApplication::translate("MainWindow", "About Qt ports", 0));
558         actionHelp_README_Artane->setText(QApplication::translate("MainWindow", "About Qt ports (Japanese).", 0));
559         actionHelp_README_MR_TANAM->setText(QApplication::translate("MainWindow", "By Mr. tanam", 0));
560         actionHelp_README_FM7->setText(QApplication::translate("MainWindow", "About eFM-7/8/77/AV.", 0));
561         actionHelp_README_FM7_JP->setText(QApplication::translate("MainWindow", "About eFM-7/8/77/AV (Japanese).", 0));
562         actionHelp_README_FAQ->setText(QApplication::translate("MainWindow", "FAQs(English)", 0));
563         actionHelp_README_FAQ_JP->setText(QApplication::translate("MainWindow", "FAQs(Japanese)", 0));
564         actionHelp_README_BIOS->setText(QApplication::translate("MainWindow", "BIOS and Key assigns", 0));
565
566         menuHelp_Histories->setTitle(QApplication::translate("MainWindow", "Histories", 0));
567         actionHelp_History->setText(QApplication::translate("MainWindow", "General History", 0));
568         actionHelp_History_Relnote->setText(QApplication::translate("MainWindow", "Release Note", 0));
569         actionHelp_History_ChangeLog->setText(QApplication::translate("MainWindow", "Change Log", 0));
570         actionHelp_History_MR_TANAM->setText(QApplication::translate("MainWindow", "History by Tanam", 0));
571
572         actionHelp_License->setText(QApplication::translate("MainWindow", "Show License", 0));
573         actionHelp_License_JP->setText(QApplication::translate("MainWindow", "Show License (Japanese)", 0));
574         
575 }
576
577 // You can Override this function: Re-define on foo/MainWindow.cpp.
578 // This code is example: by X1(TurboZ).
579 void Ui_MainWindowBase::retranslateMachineMenu(void)
580 {
581         int i;
582         QString tmps;
583         QString tmps2;
584         menuMachine->setTitle(QApplication::translate("MainWindow", "Machine", 0));
585         if(using_flags->get_use_device_type() > 0) {
586                 menuDeviceType->setTitle(QApplication::translate("MainWindow", "Device Type", 0));
587                 for(i = 0; i < using_flags->get_use_device_type(); i++) {
588                         tmps2.setNum(i + 1);
589                         tmps = QString::fromUtf8("Machine Device ") + tmps2;
590                         actionDeviceType[i]->setText(tmps); 
591                 }
592         }
593         if(using_flags->get_use_sound_device_type() > 0) {
594                 menuSoundDevice->setTitle(QApplication::translate("MainWindow", "Sound Cards", 0));
595                 for(i = 0; i < using_flags->get_use_sound_device_type(); i++) {
596                         tmps2.setNum(i + 1);
597                         tmps = QString::fromUtf8("Sound Device ") + tmps2;
598                         actionSoundDevice[i]->setText(tmps); 
599                 }
600         }
601         if(using_flags->get_use_drive_type() > 0) {
602                 menuDriveType->setTitle(QApplication::translate("MainWindow", "Drive Type", 0));
603                 for(i = 0; i < using_flags->get_use_drive_type(); i++) {
604                         tmps2.setNum(i + 1);
605                         tmps = QString::fromUtf8("Drive Type ") + tmps2;
606                         actionDriveType[i]->setText(tmps); 
607                 }
608         }
609         if(using_flags->is_use_printer()) {
610                 menuPrintDevice->setTitle(QApplication::translate("MainWindow", "Printer (Need RESET)", 0));
611                 i = 1;
612                 actionPrintDevice[0]->setText(QApplication::translate("MainWindow", "Dump to File", 0));
613                 if(using_flags->get_use_printer_type() > 0) {
614                         for(i = 1; i < (using_flags->get_use_printer_type() - 1); i++) {
615                                 tmps2.setNum(i + 1);
616                                 tmps = QApplication::translate("MainWindow", "Printer", 0) + tmps2;
617                                 actionPrintDevice[i]->setText(tmps); 
618                         }
619                 }
620                 actionPrintDevice[i]->setText(QApplication::translate("MainWindow", "Not Connect", 0));
621         }
622 }
623 void Ui_MainWindowBase::retranslateUi(void)
624 {
625         retranslateControlMenu("NMI Reset",  true);
626         retranslateFloppyMenu(0, 0);
627         retranslateFloppyMenu(1, 1);
628         retranslateCMTMenu();
629         if(!using_flags->is_without_sound()) {
630                 retranslateSoundMenu();
631         }
632         retranslateScreenMenu();
633         retranslateCartMenu(0, 1);
634         retranslateCartMenu(1, 2);
635         retranslateCDROMMenu();
636         
637         retranslateBinaryMenu(0, 1);
638         retranslateBinaryMenu(1, 2);
639
640         retranslateBubbleMenu(0, 1);
641         retranslateBubbleMenu(1, 2);
642         retranslateMachineMenu();
643         retranslateEmulatorMenu();
644         retranslateUI_Help();
645    
646 } // retranslateUi
647
648 void Ui_MainWindowBase::setCoreApplication(QApplication *p)
649 {
650         this->CoreApplication = p;
651         connect(actionExit_Emulator, SIGNAL(triggered()),
652                         this->CoreApplication, SLOT(closeAllWindows())); // OnGuiExit()?  
653         connect(actionHelp_AboutQt, SIGNAL(triggered()),
654                         this->CoreApplication, SLOT(aboutQt()));
655         
656 }
657
658 #include <string>
659 // Move from common/qt_main.cpp
660 // menu
661 extern std::string cpp_homedir;
662 extern std::string cpp_confdir;
663 extern std::string my_procname;
664 extern bool now_menuloop;
665 // timing control
666
667 // screen
668 extern unsigned int desktop_width;
669 extern unsigned int desktop_height;
670 //int desktop_bpp;
671 extern int prev_window_mode;
672 extern bool now_fullscreen;
673 extern int window_mode_count;
674
675 void Ui_MainWindowBase::set_window(int mode)
676 {
677         //      static LONG style = WS_VISIBLE;
678 }
679
680 void Ui_MainWindowBase::do_emu_update_volume_level(int num, int level)
681 {
682         emit sig_emu_update_volume_level(num, level);
683 }
684
685 void Ui_MainWindowBase::do_emu_update_volume_balance(int num, int level)
686 {
687         emit sig_emu_update_volume_balance(num, level);
688 }
689
690 void Ui_MainWindowBase::do_emu_update_config(void)
691 {
692         emit sig_emu_update_config();
693 }
694
695 void Ui_MainWindowBase::doChangeMessage_EmuThread(QString message)
696 {
697       emit message_changed(message);
698 }
699
700
701
702 void Ui_MainWindowBase::StopEmuThread(void)
703 {
704         emit quit_emu_thread();
705 }
706
707 void Ui_MainWindowBase::delete_emu_thread(void)
708 {
709         //do_release_emu_resources();
710         emit sig_quit_all();
711 }  
712 // Utility
713 #include <QTextCodec>
714 #include <QString>
715 #include <QByteArray>
716
717 void Convert_CP932_to_UTF8(char *dst, char *src, int n_limit, int i_limit)
718 {
719         QTextCodec *srcCodec = QTextCodec::codecForName( "SJIS" );
720         QTextCodec *dstCodec = QTextCodec::codecForName( "UTF-8" );
721         QString dst_b;
722         QByteArray dst_s;
723         if(src == NULL) {
724                 if(dst != NULL) dst[0] = '\0';
725                 return;
726         }
727         if(dst == NULL) return;
728         dst_b = srcCodec->toUnicode(src, strlen(src));
729         dst_s = dstCodec->fromUnicode(dst_b);
730         if(n_limit > 0) {
731                 memset(dst, 0x00, n_limit);
732                 strncpy(dst, dst_s.constData(), n_limit - 1);
733         }
734 }
735
736 void Ui_MainWindowBase::set_window_title()
737 {
738         QString tmps;
739         tmps = QString::fromUtf8("emu");
740         tmps = tmps + using_flags->get_config_name();
741         tmps = tmps + QString::fromUtf8(" (");
742         tmps = tmps + using_flags->get_device_name();
743         tmps = tmps + QString::fromUtf8(")");
744         MainWindow->setWindowTitle(tmps);
745 }
746
747 void Ui_MainWindowBase::do_set_window_title(QString s)
748 {
749         QString tmps;
750         tmps = QString::fromUtf8("emu");
751         tmps = tmps + using_flags->get_config_name();
752         tmps = tmps + QString::fromUtf8(" (");
753         if(!s.isEmpty()) {
754                 tmps = tmps + s;
755         }
756         tmps = tmps + QString::fromUtf8(")");
757         MainWindow->setWindowTitle(tmps);
758 }
759
760 void Ui_MainWindowBase::do_set_mouse_enable(bool flag)
761 {
762 }
763
764 void Ui_MainWindowBase::do_toggle_mouse(void)
765 {
766 }
767
768 void Ui_MainWindowBase::LaunchEmuThread(void)
769 {
770 }
771
772 void Ui_MainWindowBase::LaunchJoyThread(void)
773 {
774 }
775
776 void Ui_MainWindowBase::StopJoyThread(void)
777 {
778 }
779
780 void Ui_MainWindowBase::delete_joy_thread(void)
781 {
782 }
783
784 void Ui_MainWindowBase::on_actionExit_triggered()
785 {
786         OnMainWindowClosed();
787 }
788
789 void Ui_MainWindowBase::OnWindowMove(void)
790 {
791 }
792
793 void Ui_MainWindowBase::OnWindowResize(void)
794 {
795         if(emu) {
796                 set_window(config.window_mode);
797         }
798 }
799
800 void Ui_MainWindowBase::OnWindowRedraw(void)
801 {
802 }
803
804 bool Ui_MainWindowBase::GetPowerState(void)
805 {
806         return true;
807 }
808
809 void Ui_MainWindowBase::OnMainWindowClosed(void)
810 {
811 }
812
813
814 void Ui_MainWindowBase::do_release_emu_resources(void)
815 {
816 }
817
818 void Ui_MainWindowBase::OnOpenDebugger(int no)
819 {
820 }
821
822 void Ui_MainWindowBase::OnCloseDebugger(void )
823 {
824 }