3 * Modified by K.Ohta <whatisthis.sowhat _at_ gmail.com>
4 * Please use this file as templete.
7 #ifndef _CSP_QT_MAINWIDGET_BASE_H
8 #define _CSP_QT_MAINWIDGET_BASE_H
13 #include <QApplication>
14 #include <QButtonGroup>
15 #include <QGraphicsView>
16 #include <QHeaderView>
17 #include <QMainWindow>
24 #include <QGraphicsEllipseItem>
25 #include <QStringList>
28 #include <QtCore/QVariant>
29 #include <QtGui/QAction>
30 #include <QtGui/QApplication>
31 #include <QtGui/QButtonGroup>
32 #include <QtGui/QGraphicsView>
33 #include <QtGui/QHeaderView>
34 #include <QtGui/QMainWindow>
35 #include <QtGui/QMenu>
36 #include <QtGui/QMenuBar>
37 #include <QtGui/QStatusBar>
38 #include <QtGui/QWidget>
39 #include <QtGui/QIconSet>
43 #include "simd_types.h"
61 class Menu_BinaryClass;
62 class Menu_BubbleClass;
63 class Menu_CompactDiscClass;
66 extern USING_FLAGS *using_flags;
68 class Ui_MainWindowBase : public QMainWindow
72 QMainWindow *MainWindow;
73 QApplication *CoreApplication;
75 QWidget *centralwidget;
76 GLDrawClass *graphicsView;
77 QStatusBar *statusbar;
79 QTimer *statusUpdateTimer;
81 QTimer *ledUpdateTimer;
83 int screen_mode_count;
88 QIcon RecordSoundIcon;
91 QIcon VolumeMutedIcon;
97 void ConfigCpuSpeed(void);
98 void ConfigControlMenu(void);
99 void connectActions_ControlMenu(void);
100 void retranslateControlMenu(const char *SpecialResetTitle, bool WithSpecialReset);
101 void ConfigFloppyMenu(void);
102 void ConfigSoundMenu(void);
103 void CreateSoundMenu(void);
105 void CreateEmulatorMenu(void);
106 void ConfigEmulatorMenu(void);
108 void CreateFloppyMenu(int drv, int drv_base);
109 void CreateFloppyPulldownMenu(int drv);
110 void ConfigFloppyMenuSub(int drv);
111 void retranslateFloppyMenu(int drv, int basedrv);
114 void CreateBubbleMenu(int drv, int drv_base);
115 void CreateBubblePulldownMenu(int drv);
116 void ConfigBubbleMenuSub(int drv);
117 void retranslateBubbleMenu(int drv, int basedrv);
118 void ConfigBubbleMenu(void);
120 void CreateCMTMenu(void);
121 void CreateCMTPulldownMenu(void);
122 void ConfigCMTMenuSub(void);
123 void retranslateCMTMenu(void);
124 void ConfigCMTMenu(void);
126 void ConfigQuickDiskMenu(void);
127 void retranslateQuickDiskMenu(int drv, int basedrv);
128 void ConfigQuickDiskMenuSub(int drv);
129 void CreateQuickDiskPulldownMenu(int drv);
130 void CreateQuickDiskMenu(int drv, int drv_base);
132 void CreateCartMenu(int drv, int drv_base);
133 void CreateCartPulldownMenu(int drv);
134 void ConfigCartMenuSub(int drv);
135 void ConfigCartMenu(void);
137 void CreateCDROMMenu(void);
138 void ConfigCDROMMenu(void);
139 void ConfigCDROMMenuSub(void);
140 void CreateCDROMPulldownMenu(void);
141 void retranslateCDROMMenu(void);
144 void ConfigBinaryMenu(void);
145 void retranslateBinaryMenu(int drv, int basedrv);
147 void retranslateSoundMenu(void);
149 void ConfigScreenMenu(void);
150 void ConfigScreenMenu_List(void);
151 void CreateScreenMenu(void);
152 void ConfigDeviceType(void);
153 void ConfigDriveType(void);
154 void ConfigSoundDeviceType(void);
155 void ConfigPrinterType(void);
157 void retranslateScreenMenu(void);
158 void retranslateMachineMenu(void);
160 class Action_Control *actionReset;
161 class Action_Control *actionSpecial_Reset;
162 class Action_Control *actionExit_Emulator;
165 QActionGroup *actionGroup_CpuType;
167 class Action_Control *actionCpuType[8];
168 void ConfigCPUTypes(int num);
170 QActionGroup *actionGroup_CpuSpeed;
171 class Action_Control *actionSpeed_x1;
172 class Action_Control *actionSpeed_x2;
173 class Action_Control *actionSpeed_x4;
174 class Action_Control *actionSpeed_x8;
175 class Action_Control *actionSpeed_x16;
179 QActionGroup *actionGroup_BootMode;
181 class Action_Control *actionBootMode[8];
182 void ConfigCPUBootMode(int num);
184 class Action_Control *actionPaste_from_Clipboard;
185 class Action_Control *actionStop_Pasting;
187 class Action_Control *actionSave_State;
188 class Action_Control *actionLoad_State;
190 class Action_Control *actionDebugger_1;
191 class Action_Control *actionDebugger_2;
192 class Action_Control *actionDebugger_3;
193 class Action_Control *actionDebugger_4;
194 //class Action_Control *actionClose_Debuggers;
197 QStringList listCARTs[8];
199 QStringList listQDs[8];
202 bool cmt_write_protect;
203 QStringList listCDROM;
205 class Action_Control *actionInsert_LD;
206 class Action_Control *actionEject_LD;
207 QActionGroup *actionGroup_Opened_LD;
208 class Action_Control *actionRecent_Opened_LD;
209 class Action_Control *action_Recent_List_LD[MAX_HISTORY];
210 QStringList listLaserDisc;
212 QStringList listBINs[8];
214 class Action_Control *actionZoom;
215 class Action_Control *actionDisplay_Mode;
217 class Action_Control *actionScanLine;
219 class Action_Control *actionGLScanLineHoriz;
220 class Action_Control *actionGLScanLineVert;
221 class Action_Control *actionRotate;
223 class Action_Control *actionCRT_Filter;
224 class Action_Control *actionOpenGL_Filter;
226 QActionGroup *actionGroup_Stretch;
227 class Action_Control *actionDot_by_Dot;
228 class Action_Control *actionReferToX_Display;
229 class Action_Control *actionReferToY_Display;
230 class Action_Control *actionFill_Display;
232 class Action_Control *actionCapture_Screen;
234 QActionGroup *actionGroup_ScreenSize;
235 class Action_Control *actionScreenSize[32];
236 class Action_Control *actionAbout;
237 class Action_Control *actionHelp_README_BIOS;
238 class Action_Control *actionHelp_README;
239 class Action_Control *actionHelp_README_QT;
240 class Action_Control *actionHelp_README_MR_TANAM;
241 class Action_Control *actionHelp_README_Artane;
242 class Action_Control *actionHelp_README_FAQ;
243 class Action_Control *actionHelp_README_FAQ_JP;
245 class Action_Control *actionHelp_README_FM7;
246 class Action_Control *actionHelp_README_FM7_JP;
248 class Action_Control *actionHelp_History;
249 class Action_Control *actionHelp_History_Relnote;
250 class Action_Control *actionHelp_History_ChangeLog;
251 class Action_Control *actionHelp_History_MR_TANAM;
253 class Action_Control *actionHelp_License;
254 class Action_Control *actionHelp_License_JP;
257 QActionGroup *actionGroup_Sound_Freq;
258 QActionGroup *actionGroup_Sound_Latency;
260 class Action_Control *actionSoundCMT;
262 class Action_Control *action_Freq[8];
263 class Action_Control *action_Latency[6];
264 class Action_Control *actionStart_Record;
265 class Action_Control *actionStop_Record;
266 class Action_Control *actionStart_Record_Movie;
267 class Action_Control *actionStop_Record_Movie;
268 class Action_Control *action_VolumeDialog;
271 class Action_Control *actionMouseEnable;
272 class Action_Control *actionHelp_AboutQt;
275 QActionGroup *actionGroup_DeviceType;
276 QMenu *menuDeviceType;
277 class Action_Control *actionDeviceType[16];
279 QActionGroup *actionGroup_DriveType;
280 QMenu *menuDriveType;
281 class Action_Control *actionDriveType[8];
283 QActionGroup *actionGroup_SoundDevice;
284 QMenu *menuSoundDevice;
285 class Action_Control *actionSoundDevice[32]; //
287 QActionGroup *actionGroup_PrintDevice;
288 QMenu *menuPrintDevice;
289 class Action_Control *actionPrintDevice[16];
291 class Action_Control *action_SetupJoystick;
292 class Action_Control *action_SetupKeyboard;
297 QMenu *menuCopy_Paste;
298 QMenu *menuCpu_Speed;
301 Menu_FDClass *menu_fds[16];
302 QStringList listFDs[16];
303 QStringList listD88[16];
305 Menu_QDClass *menu_QDs[8];
307 Menu_CMTClass *menu_CMT;
309 Menu_CompactDiscClass *menu_CDROM;
311 Menu_CartClass *menu_Cart[8];
314 QMenu *menuLD_Recent;
315 Menu_BinaryClass *menu_BINs[8];
317 Menu_BubbleClass *menu_bubbles[8];
318 QStringList listBubbles[8];
319 QStringList listB77[8];
323 QMenu *menuStretch_Mode;
324 QMenu *menuScreenSize;
327 QMenu *menuOutput_Frequency;
328 QMenu *menuSound_Latency;
331 QMenu *menuRecord_sound;
332 QMenu *menuRecord_as_movie;
335 QMenu *menuHelp_Readme;
336 QMenu *menuHelp_Histories;
338 QWidget *dummyStatusArea1;
339 QLabel *messagesStatusBar;
340 QWidget *dummyStatusArea2;
342 QLabel *fd_StatusBar[16];
343 QString osd_str_fd[16];
345 QLabel *qd_StatusBar[8];
346 QString osd_str_qd[8];
348 QLabel *cmt_StatusBar;
351 QLabel *cdrom_StatusBar;
352 QString osd_str_cdrom;
354 QLabel *laserdisc_StatusBar;
355 QString osd_str_laserdisc;
357 QLabel *bubble_StatusBar[8];
358 QString osd_str_bubble[8];
363 bool flags_led_bak[32];
364 QGraphicsView *led_graphicsView;
365 QGraphicsScene *led_gScene;
366 QGraphicsEllipseItem *led_leds[32];
367 uint32_t osd_led_data;
369 QClipboard *ClipBoard;
372 int Calc_OSD_Wfactor(void);
374 class EmuThreadClass *hRunEmu;
375 class DrawThreadClass *hDrawEmu;
376 class JoyThreadClass *hRunJoy;
378 Ui_MainWindowBase(QWidget *parent = 0);
379 ~Ui_MainWindowBase();
381 // Initializer : using from InitContext.
382 void setCoreApplication(QApplication *p);
383 void createContextMenu(void);
385 virtual void set_window(int mode);
386 // Belows are able to re-implement.
387 virtual void retranslateUi(void);
388 virtual void retranslateUI_Help(void);
389 virtual void retranslateCartMenu(int drv, int basedrv);
390 virtual void retranslateVolumeLabels(Ui_SoundDialog *);
391 virtual void retranslateEmulatorMenu(void);
393 virtual void initStatusBar(void);
395 void StopEmuThread(void);
396 virtual void LaunchEmuThread(void);
398 virtual void StopJoyThread(void);
399 virtual void LaunchJoyThread(void);
401 virtual void OnWindowResize(void);
402 virtual void OnWindowMove(void);
403 virtual void OnWindowRedraw(void);
405 // Getting important widgets.
406 QMainWindow *getWindow(void) { return MainWindow; }
407 QMenuBar *getMenuBar(void) { return menubar;}
408 GLDrawClass *getGraphicsView(void) { return graphicsView; }
409 QStatusBar *getStatusBar(void) { return statusbar;}
410 QImage *getBitmapImage(void) { return bitmapImage; }
412 virtual void OnMainWindowClosed(void);
413 // Basic Action Definition
414 void OnCpuPower(int mode);
415 bool get_wave_shaper(void);
416 bool get_direct_load_mzt(void);
417 virtual bool GetPowerState(void);
421 void delete_emu_thread(void);
422 void doChangeMessage_EmuThread(QString str);
423 void do_emu_update_config(void);
424 virtual void delete_joy_thread(void);
425 virtual void do_set_window_title(QString s);
426 virtual void redraw_status_bar(void);
427 //#ifdef USE_LED_DEVICE
428 virtual void redraw_leds(void);
429 void do_recv_data_led(quint32 d);
432 void do_update_volume(int level);
433 void set_screen_aspect(int num);
434 void set_screen_size(int w, int h);
436 void OnSpecialReset(void);
437 virtual void do_set_mouse_enable(bool flag);
438 virtual void do_toggle_mouse(void);
439 void do_set_sound_device(int);
440 void do_emu_update_volume_balance(int num, int level);
441 void do_emu_update_volume_level(int num, int level);
443 void rise_volume_dialog(void);
445 void rise_joystick_dialog(void);
447 void rise_keyboard_dialog(void);
449 void OnLoadState(void);
450 void OnSaveState(void);
451 virtual void OnOpenDebugger(int n);
452 virtual void OnCloseDebugger(void);
454 void set_screen_rotate(bool);
455 void set_crt_filter(bool);
456 void set_gl_crt_filter(bool);
457 void set_cpu_power(int pw) {
460 virtual void on_actionExit_triggered();
462 void OnStartAutoKey(void);
463 void OnStopAutoKey(void);
465 void do_change_osd_fd(int drv, QString tmpstr);
467 void eject_cart(int);
468 void set_recent_cart(int, int);
470 int set_recent_cdrom(int drv, int num);
471 void do_eject_cdrom(int drv);
472 void do_open_cdrom(int drv, QString path);
473 void do_change_osd_cdrom(QString tmpstr);
475 int set_recent_laserdisc(int num);
476 void do_eject_laserdisc(void);
477 void do_open_laserdisc(QString path);
478 void do_change_osd_laserdisc(QString tmpstr);
480 void CreateBinaryMenu(int drv, int drv_base);
481 void CreateBinaryPulldownMenu(int drv);
482 void ConfigBinaryMenuSub(int drv);
483 int set_recent_binary_load(int drv, int num);
484 int set_recent_binary_save(int drv, int num);
485 void _open_binary_load(int drive, const QString fname);
486 void _open_binary_save(int drive, const QString fname);
488 void open_quick_disk_dialog(int drv);
489 int set_recent_quick_disk(int drive, int num);
490 int write_protect_Qd(int drv, bool flag);
491 void _open_quick_disk(int drv, const QString fname);
492 void eject_Qd(int drv);
494 void do_change_osd_qd(int drv, QString tmpstr);
496 virtual void _open_disk(int drv, const QString fname);
497 void _open_cart(int drv, const QString fname);
498 void eject_cmt(void);
499 void do_change_boot_mode(int mode);
500 void do_change_cpu_type(int mode);
501 void do_write_protect_cmt(int drv, bool flag);
502 int set_recent_cmt(int drv, int num);
503 void set_wave_shaper(bool f);
504 //#if defined(_MZ80A) || defined(_MZ80K) || defined(_MZ1200) || defined(_MZ700) || defined(_MZ800) || defined(_MZ1500) || \
505 // defined(_MZ80B) || defined(_MZ2000) || defined(_MZ2200)
506 void set_direct_load_from_mzt(bool f);
508 void do_open_write_cmt(QString);
509 void do_open_read_cmt(int dummy, QString path);
510 void do_change_osd_cmt(QString tmpstr);
512 void do_push_play_tape(void);
513 void do_push_stop_tape(void);
514 void do_display_tape_play(bool flag);
515 void do_push_fast_forward_tape(void);
516 void do_push_rewind_tape(void);
517 void do_push_apss_forward_tape(void);
518 void do_push_apss_rewind_tape(void);
519 void set_cmt_sound(bool);
521 int write_protect_fd(int drv, bool flag);
522 void eject_fd(int drv);
523 virtual void do_update_recent_disk(int);
524 virtual int set_d88_slot(int drive, int num);
525 virtual int set_recent_disk(int, int);
528 int write_protect_bubble(int drv, bool flag);
530 virtual int set_b77_slot(int drive, int num);
531 virtual void do_update_recent_bubble(int drv);
532 virtual int set_recent_bubble(int drv, int num);
533 void do_change_osd_bubble(int drv, QString tmpstr);
535 virtual void _open_bubble(int drv, const QString fname);
536 virtual void eject_bubble(int drv);
538 void start_record_sound(bool rec);
540 void set_latency(int);
541 void set_sound_device(int);
542 void set_monitor_type(int);
543 void message_status_bar(QString);
544 void resize_statusbar(int w, int h);
545 virtual void do_release_emu_resources(void);
546 virtual void set_window_title();
547 void set_device_type(int);
548 void set_drive_type(int);
549 void set_scan_line(bool);
550 void set_gl_scan_line_vert(bool);
551 void set_gl_scan_line_horiz(bool);
552 void set_dipsw(int num, bool flag) {
553 if((num < 0) || (num >= 32)) return;
555 config.dipswitch = config.dipswitch | (1 << num);
557 config.dipswitch = config.dipswitch & ~(1 << num);
560 bool get_dipsw(int num) {
561 if((num < 0) || (num >= 32)) return false;
562 if(((1 << num) & config.dipswitch) == 0) return false;
565 void set_printer_device(int);
566 void do_show_about(void);
567 void do_browse_document(QString);
569 int message_changed(QString);
570 int quit_emu_thread();
571 int call_joy_thread(EMU *);
572 int quit_joy_thread();
573 int quit_draw_thread();
574 int on_boot_mode(int);
575 int on_cpu_type(int);
576 int on_cpu_power(int);
577 int on_open_debugger(int);
578 int on_insert_fd(int);
579 int on_eject_fd(int);
580 int do_open_disk(int, QString);
581 int do_recent_cmt(bool);
583 int sig_quit_all(void);
584 int sig_vm_reset(void);
585 int sig_vm_specialreset(void);
586 int sig_vm_loadstate(void);
587 int sig_vm_savestate(void);
588 int sig_check_grab_mouse(bool);
589 int sig_resize_uibar(int, int);
590 int sig_resize_screen(int, int);
591 int sig_update_screen(void);
592 int sig_emu_update_config(void);
593 int sig_emu_start_rec_sound(void);
594 int sig_emu_stop_rec_sound(void);
595 int sig_emu_set_display_size(int, int, int, int);
596 int sig_emu_update_volume_level(int, int);
597 int sig_emu_update_volume_balance(int, int);
599 int sig_write_protect_disk(int drv, bool flag);
600 int sig_open_disk(int, QString, int);
601 int sig_close_disk(int);
602 int sig_play_tape(QString name);
603 int sig_rec_tape(QString name);
604 int sig_close_tape(void);
605 int sig_cmt_push_play(void);
606 int sig_cmt_push_stop(void);
607 int sig_cmt_push_fast_forward(void);
608 int sig_cmt_push_fast_rewind(void);
609 int sig_cmt_push_apss_forward(void);
610 int sig_cmt_push_apss_rewind(void);
611 int sig_write_protect_quickdisk(int drv, bool flag);
612 int sig_close_quickdisk(int drv);
613 int sig_open_quickdisk(int drv, QString path);
614 int sig_close_cart(int drv);
615 int sig_open_cart(int drv, QString path);
616 int sig_open_cdrom(QString path);
617 int sig_close_cdrom(void);
618 int sig_close_laser_disk(void);
619 int sig_open_laser_disk(QString path);
620 int sig_load_binary(int drv, QString path);
621 int sig_save_binary(int drv, QString path);
622 int sig_write_protect_bubble(int, bool);
623 int sig_open_bubble(int, QString , int);
624 int sig_close_bubble(int);
625 int sig_led_update(QRectF);
626 int sig_start_auto_key(QString);
627 int sig_stop_auto_key(void);
628 int quit_debugger_thread(void);