OSDN Git Service

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