OSDN Git Service

[UI][EMU_THREAD][Qt] Update functions.
[csp-qt/common_source_project-fm7.git] / source / src / qt / gui / mainwidget_base.h
1 /*
2  * MainWidget : Defines
3  * Modified by K.Ohta <whatisthis.sowhat _at_ gmail.com>
4  * Please use this file as templete.
5  */
6
7 #ifndef _CSP_QT_MAINWIDGET_BASE_H
8 #define _CSP_QT_MAINWIDGET_BASE_H
9
10 //#include <QVariant>
11 //#include <QObject>
12 //#include <QApplication>
13 #include <QMainWindow>
14 #include <QIcon>
15 #include <QString>
16 #include <QStringList>
17 //#include <QMenu>
18 //#include <QMenuBar>
19
20 #include "common.h"
21 #include "config.h"
22 #include "menu_flags.h"
23 #include "csp_logger.h"
24
25 class DLL_PREFIX_I MOVIE_SAVER;
26
27 #include "qt_main.h"
28 #define _MAX_DEBUGGER 8
29
30 enum {
31         CSP_MAINWIDGET_SAVE_MOVIE_STOP = 0,
32         CSP_MAINWIDGET_SAVE_MOVIE_15FPS = 1,
33         CSP_MAINWIDGET_SAVE_MOVIE_24FPS,
34         CSP_MAINWIDGET_SAVE_MOVIE_30FPS,
35         CSP_MAINWIDGET_SAVE_MOVIE_60FPS,
36         CSP_MAINWIDGET_SAVE_MOVIE_END,
37 };
38
39 #define MAX_RENDER_PLATFORMS 12
40
41 enum {
42         RENDER_PLATFORMS_OPENGL3_MAIN = 0,
43         RENDER_PLATFORMS_OPENGL2_MAIN,
44         RENDER_PLATFORMS_OPENGL_CORE,
45         RENDER_PLATFORMS_OPENGL_ES_2,
46         RENDER_PLATFORMS_END
47 };
48
49 QT_BEGIN_NAMESPACE
50
51
52 #define SET_ACTION_SINGLE(__action,__checkable,__enabled,__cfgif) \
53                 __action = new Action_Control(this, using_flags);                 \
54                 __action->setCheckable(__checkable);                                      \
55                 __action->setEnabled(__enabled);                                                  \
56                 __action->setChecked(false);                                                      \
57                 if(__cfgif) {                                                                                     \
58                         __action->setChecked(true);                                                       \
59                 }                                                                                                                 \
60
61 #define SET_ACTION_CHECKABLE_SINGLE_CONNECT(__menu,__action,__objname,__cond,__signal1,__slot1) \
62         __action = new Action_Control(this, using_flags);                                       \
63         __action->setObjectName(QString::fromUtf8(__objname));                          \
64         __action->setCheckable(true);                                                                           \
65         if(__cond) __action->setChecked(true);                                                          \
66         connect(__action, __signal1, this, __slot1);                                            \
67         __menu->addAction(__action);
68
69
70 #define SET_HELP_MENUENTRY(__menu,__action,__objname,__txtname) \
71         __action = new Action_Control(this, using_flags); \
72         __action->setObjectName(QString::fromUtf8(__objname)); \
73         __action->do_set_string(QString::fromUtf8(__txtname)); \
74         connect(__action, SIGNAL(triggered()), __action, SLOT(do_send_string())); \
75         connect(__action, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString))); \
76         __menu->addAction(__action);
77         
78
79 #define SET_ACTION_CONTROL_ARRAY(__start,__end,                                                 \
80                                                                  __parent,__using_flags,                                \
81                                                                  __menu,__action,                                               \
82                                                                  __checkable,__enabled,__cnf,                   \
83                                                                  __signal1,__slot1,                                             \
84                                                                  __signal2,__slot2)                                     \
85         for(int _i = __start; _i < __end;  _i++) {                                                      \
86                 __action[_i] = new Action_Control(__parent, __using_flags);             \
87                 __action[_i]->setCheckable(__checkable);                                                \
88                 __action[_i]->setEnabled(__enabled);                                                    \
89                 __action[_i]->binds->setValue1(_i);                                                             \
90                 __menu->addAction(__action[_i]);                                                                \
91                 if(using_flags->get_config_ptr()->__cnf[_i][0]) __action[_i]->setChecked(true); \
92                 connect(__action[_i], __signal1, __action[_i], __slot1);                \
93                 connect(__action[_i], __signal2, this, __slot2);                                \
94         }                                                                                                                                       \
95
96
97 class QVariant;
98 class QAction;
99 class QActionGroup;
100 class QButtonGroup;
101 class QGraphicsView;
102 class QGraphicsScene;
103 class QHeaderView;
104 class QMenu;
105 class QMenuBar;
106 class QApplication;
107
108 class QStatusBar;
109 class QWidget;
110 class QLabel;
111 class QGraphicsEllipseItem;
112 class QClipboard;
113 class QDockWidget;
114 class QHBoxLayout;
115 class QVBoxLayout;
116 class QGridLayout;
117 class Ui_SoundDialog;
118 class GLDrawClass;
119 class Action_Control;
120 class Menu_MetaClass;
121 class Menu_FDClass;
122 class Menu_CMTClass;
123 class Menu_CartClass;
124 class Menu_HDDClass;
125 class Menu_QDClass;
126 class Menu_BinaryClass;
127 class Menu_BubbleClass;
128 class Menu_CompactDiscClass;
129 class Menu_LaserdiscClass;
130 class CSP_DockDisks;
131 class MOVIE_SAVER;
132 class EmuThreadClass;
133 class DLL_PREFIX Ui_MainWindowBase : public QMainWindow
134 {
135         Q_OBJECT
136 private:
137         QIcon WindowIcon;
138         QIcon InsertIcon;
139         QIcon EjectIcon;
140         QIcon StopIcon;
141         QIcon RecordSoundIcon;
142         QIcon ResetIcon;
143         QIcon ExitIcon;
144         QIcon VolumeMutedIcon;
145         QIcon VolumeLowIcon;
146         QIcon VolumeMidIcon;
147         QIcon VolumeHighIcon;
148
149         // File
150         QActionGroup *actionGroup_CpuSpeed;
151         class Action_Control *actionSpeed_x1;
152         class Action_Control *actionSpeed_x2;
153         class Action_Control *actionSpeed_x4;
154         class Action_Control *actionSpeed_x8;
155         class Action_Control *actionSpeed_x16;
156         class Action_Control *actionSpeed_FULL;
157         class Action_Control *actionPaste_from_Clipboard;
158         class Action_Control *actionStop_Pasting;
159         QMenu *menuSave_State;
160         QMenu *menuLoad_State;
161
162         // Screen
163         QActionGroup *actionGroup_Stretch;
164         QActionGroup *actionGroup_SetRenderPlatform;
165         class Action_Control *action_ScreenSeparateThread;
166         class Action_Control *action_ScreenUseOSD;
167         class Action_Control *actionZoom;
168         class Action_Control *actionDisplay_Mode;
169         class Action_Control *actionScanLine;
170         class Action_Control *actionGLScanLineHoriz;
171         class Action_Control *actionGLScanLineVert;
172         class Action_Control *actionRotate;
173         class Action_Control *actionCRT_Filter;
174         class Action_Control *actionOpenGL_Filter;
175         class Action_Control *actionDot_by_Dot;
176         class Action_Control *actionReferToX_Display;
177         class Action_Control *actionReferToY_Display;
178         class Action_Control *actionFill_Display;
179         QActionGroup *actionGroup_ScreenSize;
180         QActionGroup *actionGroup_RenderMode;
181
182         // Sound
183         QActionGroup   *actionGroup_Sound_Freq;
184         QActionGroup   *actionGroup_Sound_Latency;
185         //class Action_Control *actionSoundCMT;
186         class Action_Control *action_VolumeDialog;
187         class Action_Control *actionSoundPlayTape;
188         class Action_Control *actionSoundStrictRendering;
189         class Action_Control *action_SoundFilesFDD;
190         class Action_Control *action_SoundFilesRelay;
191         //QMenu *menuLogToConsole;
192         //QMenu *menuLogToSyslog;
193         QMenu *menuDevLogToConsole;
194         QMenu *menuDevLogToSyslog;
195         QMenu *menu_SetRenderPlatform;
196
197         // Misc
198         QMenu *menu_DispVirtualMedias;
199         QActionGroup *actionGroup_DispVirtualMedias;
200         class Action_Control *action_DispVirtualMedias[5];
201         class Action_Control *action_FocusWithClick;
202         class Action_Control *action_UseRomaKana;
203         class Action_Control *action_NumPadEnterAsFullkey;
204         class Action_Control *action_Logging_FDC;
205         class Action_Control *action_LogToSyslog;
206         class Action_Control *action_LogToConsole;
207         class Action_Control *action_LogRecord;
208         class Action_Control *action_DevLogToSyslog[CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1];
209         class Action_Control *action_DevLogToConsole[CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1];
210         class Action_Control *action_DevLogRecord[CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1];
211         // Emulator
212         class Action_Control *action_SetupJoystick;
213         class Action_Control *action_SetupKeyboard;
214         class Action_Control *action_LogView;
215         class Action_Control *action_PrintCpuStatistics;
216
217         QMenu *menu_EmulateCursorAs;
218         QActionGroup *actionGroup_EmulateCursorAs;
219         class Action_Control *action_EmulateCursorAs[4];
220
221         // Help
222         class Action_Control *actionHelp_README_BIOS;
223         class Action_Control *actionHelp_README;
224         class Action_Control *actionHelp_README_QT;
225         class Action_Control *actionHelp_README_MR_TANAM;
226         class Action_Control *actionHelp_README_Artane;
227         class Action_Control *actionHelp_README_Umaiboux;
228         class Action_Control *actionHelp_README_FAQ;
229         class Action_Control *actionHelp_README_FAQ_JP;
230         class Action_Control *actionHelp_README_FM7;
231         class Action_Control *actionHelp_README_FM7_JP;
232         class Action_Control *actionHelp_History;
233         class Action_Control *actionHelp_History_Relnote;
234         class Action_Control *actionHelp_History_ChangeLog;
235         class Action_Control *actionHelp_History_MR_TANAM;
236         class Action_Control *actionHelp_License;
237         class Action_Control *actionHelp_License_JP;
238         
239         // Led: OSD.
240         bool flags_led[32];
241         bool flags_led_bak[32];
242         QGraphicsView *led_graphicsView;
243         QGraphicsScene *led_gScene;
244         QGraphicsEllipseItem *led_leds[32];
245         uint32_t osd_led_data;
246
247         // Inner functions
248         
249         void ConfigCpuSpeed(void);
250         void ConfigControlMenu(void);
251         void connectActions_ControlMenu(void);
252         void ConfigFloppyMenu(void);
253         void ConfigHardDiskMenu(void);
254         void ConfigSoundMenu(void);
255         void CreateSoundMenu(void);
256
257         void CreateEmulatorMenu(void);
258         void ConfigEmulatorMenu(void);
259         
260         void CreateFloppyMenu(int drv, int drv_base);
261         void CreateFloppyPulldownMenu(int drv);
262         void ConfigFloppyMenuSub(int drv);
263
264         void CreateHardDiskMenu(int drv, int drv_base);
265         void CreateHardDiskPulldownMenu(int drv);
266         void ConfigHardDiskMenuSub(int drv);
267 // Bubble
268         void CreateBubbleMenu(int drv, int drv_base);
269         void CreateBubblePulldownMenu(int drv);
270         void ConfigBubbleMenuSub(int drv);
271         void ConfigBubbleMenu(void);
272         virtual int GetBubbleBankNum(int drv) { return 0; }
273         virtual int GetBubbleCurrentBankNum(int drv) { return 0; }
274         virtual bool GetBubbleCasetteIsProtected(int drv) { return false; }
275         virtual QString GetBubbleB77FileName(int drv) { return QString::fromUtf8(""); }
276         virtual QString GetBubbleB77BubbleName(int drv, int num) { return QString::fromUtf8(""); }
277         
278         void CreateCMTMenu(int drive, int drv_base);
279         void ConfigCMTMenu(void);
280    
281         void ConfigQuickDiskMenu(void);
282         void ConfigQuickDiskMenuSub(int drv);
283         void CreateQuickDiskPulldownMenu(int drv);
284         void CreateQuickDiskMenu(int drv, int drv_base);
285
286         void CreateCartMenu(int drv, int drv_base);
287         void CreateCartPulldownMenu(int drv);
288         void ConfigCartMenuSub(int drv);
289         void ConfigCartMenu(void);
290
291         void CreateCDROMMenu(int drv, int drv_base);
292         void ConfigCDROMMenu(void);
293         void ConfigCDROMMenuSub(void);
294         void CreateCDROMPulldownMenu(void);
295         
296         void CreateLaserdiscMenu(int drv, int drv_base);
297         void ConfigLaserdiscMenu(void);
298         void ConfigLaserdiscMenuSub(void);
299         void CreateLaserdiscPulldownMenu(void);
300
301         void ConfigBinaryMenu(void);
302         void ConfigScreenMenu(void);
303         void ConfigScreenMenu_List(void);
304         void CreateScreenMenu(void);
305         void ConfigDeviceType(void);
306         void ConfigKeyboardType(void);
307         void ConfigJoystickType(void);
308         void ConfigMouseType(void);
309         void ConfigDriveType(void);
310         void ConfigSoundDeviceType(void);
311         void ConfigPrinterType(void);
312         void ConfigMonitorType(void);
313
314         // About Status bar
315         int Calc_OSD_Wfactor(void);
316 protected:
317         USING_FLAGS *using_flags;
318         config_t *p_config;
319         CSP_Logger *csp_logger;
320         QMainWindow *MainWindow;
321         QApplication *CoreApplication;
322         
323         GLDrawClass *graphicsView;
324         CSP_DockDisks *driveData;
325         QWidget *pCentralWidget;
326         QVBoxLayout *pCentralLayout;
327         QStatusBar  *statusbar;
328         QMenuBar    *menubar;
329
330         QTimer *statusUpdateTimer;
331         QTimer *ledUpdateTimer;
332
333         int screen_mode_count;
334         // Virtual medias.
335         QStringList listCARTs[8];
336         QStringList listQDs[8];
337         QStringList listCMT[8];
338         bool cmt_write_protect[8];
339         QStringList listCDROM[8];
340         QStringList listLaserdisc[8];
341         QStringList listBINs[8];
342         QStringList listFDs[16];
343         QStringList listHDDs[16];
344         
345         QStringList listD88[16];
346         QStringList listBubbles[8];
347         QStringList listB77[8];
348
349         // Some Functions
350         QActionGroup *actionGroup_BootMode;
351         QActionGroup *actionGroup_CpuType;
352         class Action_Control *actionReset;
353         class Action_Control *actionSpecial_Reset;
354         class Action_Control *actionExit_Emulator;
355         class Action_Control *actionCpuType[8];
356         class Action_Control *actionBootMode[8];
357         class Action_Control *actionDebugger[_MAX_DEBUGGER];
358         class Action_Control *actionSave_State[10];
359         class Action_Control *actionLoad_State[10];
360         //class Action_Control *actionClose_Debuggers;
361         class Action_Control *actionScreenSize[32];
362         class Action_Control *actionAbout;
363         class Action_Control *actionMouseEnable;
364         class Action_Control *actionHelp_AboutQt;
365
366         // Screen
367         class Action_Control *actionCapture_Screen;
368         class Action_Control *action_SetRenderMode[8];
369         // Sound
370         class Action_Control *action_Freq[8];
371         class Action_Control *action_Latency[6];
372         class Action_Control *actionStart_Record;
373         class Action_Control *actionStop_Record;
374
375         // Emulator
376         QActionGroup *actionGroup_DeviceType;
377         QActionGroup *actionGroup_KeyboardType;
378         QActionGroup *actionGroup_JoystickType;
379         QActionGroup *actionGroup_MouseType;
380         QActionGroup *actionGroup_DriveType;
381         QActionGroup *actionGroup_SoundDevice;
382         QActionGroup *actionGroup_PrintDevice;
383         QMenu *menuDeviceType;
384         QMenu *menuKeyboardType;
385         QMenu *menuJoystickType;
386         QMenu *menuMouseType;
387         QMenu *menuDriveType;
388         QMenu *menuSoundDevice;
389         QMenu *menuPrintDevice;
390         class Action_Control *actionDeviceType[16];
391         class Action_Control *actionKeyboardType[16];
392         class Action_Control *actionJoystickType[16];
393         class Action_Control *actionMouseType[8];
394         class Action_Control *actionDriveType[8];
395         class Action_Control *actionSoundDevice[32]; //
396         class Action_Control *actionPrintDevice[16];
397         class Action_Control *action_SetRenderPlatform[MAX_RENDER_PLATFORMS];
398         
399         class Action_Control *actionStart_Record_Movie;
400         class Action_Control *actionStop_Record_Movie;
401         class Action_Control *action_SetupMovie; // 15, 24, 30, 60
402
403         QMenu *menuMonitorType;
404         QActionGroup *actionGroup_MonitorType;
405         Action_Control *actionMonitorType[16];
406         
407         // Menus    
408         QMenu *menuControl;
409         QMenu *menuState;
410         QMenu *menuCopy_Paste;
411         QMenu *menuCpu_Speed;
412         QMenu *menuDebugger;
413         QMenu *menuScreen;
414         QMenu *menuStretch_Mode;
415         QMenu *menuScreenSize;
416         QMenu *menuScreen_Render;
417         
418         QMenu *menuCpuType;
419         QMenu *menuBootMode;
420         QMenu *menuSound;
421         QMenu *menuOutput_Frequency;
422         QMenu *menuSound_Latency;
423         QMenu *menuMachine;
424         QMenu *menuRecord;
425         QMenu *menuRecord_sound;
426         QMenu *menuRecord_as_movie;
427         QMenu *menuEmulator;
428         QMenu *menuHELP;
429         QMenu *menuHelp_Readme;
430         QMenu *menuHelp_Histories;
431         Menu_FDClass *menu_fds[16];
432         Menu_QDClass *menu_QDs[8];
433         Menu_CMTClass *menu_CMT[8];
434         Menu_HDDClass *menu_hdds[16];
435         Menu_CompactDiscClass *menu_CDROM[8];
436         Menu_LaserdiscClass *menu_Laserdisc[8];
437         Menu_CartClass *menu_Cart[8];
438         Menu_BinaryClass *menu_BINs[8];
439         Menu_BubbleClass *menu_bubbles[8];
440         // Status Bar
441         QWidget *dummyStatusArea1;
442         QLabel *messagesStatusBar;
443         QWidget *dummyStatusArea2;
444
445         QLabel *cdrom_StatusBar;
446         QString osd_str_cdrom;
447         
448         QLabel *laserdisc_StatusBar;
449         QString osd_str_laserdisc;
450         QLabel *bubble_StatusBar[8];
451         QString osd_str_bubble[8];
452         QImage *bitmapImage;
453         QClipboard *ClipBoard;
454         // Constructor
455         EmuThreadClass *hRunEmu;
456         class DrawThreadClass *hDrawEmu;
457         class JoyThreadClass *hRunJoy;
458         class MOVIE_SAVER *hSaveMovieThread;
459         
460         int max_vm_nodes;
461         bool ui_retranslate_completed;
462
463         // CPU Type
464         void ConfigCPUTypes(int num);
465         void ConfigCPUBootMode(int num);
466         // Translate UIs.
467         void retranslateControlMenu(const char *SpecialResetTitle,  bool WithSpecialReset);
468         void retranslateFloppyMenu(int drv, int basedrv);
469         void retranslateFloppyMenu(int drv, int basedrv, QString specName);
470         void retranslateHardDiskMenu(int drv, int basedrv);
471         void retranslateHardDiskMenu(int drv, int basedrv, QString specName);
472         void retranslateBubbleMenu(int drv, int basedrv);
473         void retranslateCMTMenu(int drive);
474         void retranslateQuickDiskMenu(int drv, int basedrv);
475
476         void retranslateCDROMMenu(void);
477         void retranslateLaserdiscMenu(void);
478         void retranslateScreenMenu(void);
479         void retranslateMachineMenu(void);
480         void retranslateBinaryMenu(int drv, int basedrv);
481         void retranslateSoundMenu(void);
482 public:
483         Ui_MainWindowBase(USING_FLAGS *p, CSP_Logger *logger, QWidget *parent = 0);
484         ~Ui_MainWindowBase();
485
486         // Initializer : using from InitContext.
487         void setCoreApplication(QApplication *p);
488         void createContextMenu(void);
489         void setupUi(void);
490         virtual void set_window(int mode);
491         // Belows are able to re-implement.
492         virtual void retranslateUi(void);
493         virtual void retranslateUI_Help(void);
494         virtual void retranslateCartMenu(int drv, int basedrv);
495         virtual void retranslateVolumeLabels(Ui_SoundDialog *);
496         virtual void retranslateEmulatorMenu(void);
497         virtual void retranselateUi_Depended_OSD(void);
498         // About Status bar
499         virtual void initStatusBar(void);
500         // EmuThread
501         void StopEmuThread(void);
502         virtual void LaunchEmuThread(void);
503         // JoyThread
504         virtual void StopJoyThread(void);
505         virtual void LaunchJoyThread(void);
506         // Screen
507         virtual void OnWindowMove(void);
508         virtual void OnWindowRedraw(void);
509    
510         // Getting important widgets.
511         QMainWindow *getWindow(void) { return MainWindow; }
512         QMenuBar    *getMenuBar(void) { return menubar;}
513         GLDrawClass *getGraphicsView(void) { return graphicsView; }
514         QStatusBar *getStatusBar(void) { return statusbar;}
515         QImage *getBitmapImage(void) { return bitmapImage; }
516         
517         virtual void OnMainWindowClosed(void);
518         // Basic Action Definition
519         void OnCpuPower(int mode);
520         bool get_wave_shaper(int drive);
521         bool get_direct_load_mzt(int drive);
522         virtual bool GetPowerState(void);
523         void set_logger(CSP_Logger *logger) { csp_logger = logger; }
524         // Basic slots
525 public slots:
526         void delete_emu_thread(void);
527         void doChangeMessage_EmuThread(QString str);
528         void do_emu_update_config(void);
529         virtual void delete_joy_thread(void);
530         virtual void do_set_window_title(QString s);
531         virtual void redraw_status_bar(void);
532         virtual void redraw_leds(void);
533         void do_recv_data_led(quint32 d);
534
535         void do_update_volume(int level);
536         void set_screen_aspect(int num);
537         void set_screen_size(int w, int h);
538         void OnReset(void);
539         void OnSpecialReset(void);
540         virtual void do_set_mouse_enable(bool flag);
541         virtual void do_toggle_mouse(void);
542         void do_set_sound_device(int);
543         void do_emu_update_volume_balance(int num, int level);
544         void do_emu_update_volume_level(int num, int level);
545         void rise_log_viewer(void);
546         void rise_volume_dialog(void);
547         void rise_joystick_dialog(void);
548         void rise_keyboard_dialog(void);
549         virtual void rise_movie_dialog(void);
550         void do_stop_saving_movie(void);
551         void do_start_saving_movie(void);
552         void do_set_state_saving_movie(bool state);
553         void set_osd_virtual_media(bool f);
554         
555         virtual void OnOpenDebugger(int n);
556         virtual void OnCloseDebugger(void);
557         void doBeforeCloseMainWindow(void);     
558         void set_screen_rotate(bool);
559         void set_gl_crt_filter(bool);
560         void set_cpu_power(int pw) {
561                 OnCpuPower(pw);
562         }
563         virtual void on_actionExit_triggered();
564         void do_emu_full_speed(bool f);
565         void OnStartAutoKey(void);
566         void OnStopAutoKey(void);
567         void eject_cart(int);
568         void set_recent_cart(int, int);
569
570         int set_recent_cdrom(int drv, int num);
571         void do_eject_cdrom(int drv);
572         void do_open_cdrom(int drv, QString path);
573
574         int set_recent_laserdisc(int drv, int num); 
575         void do_eject_laserdisc(int drv); 
576         void do_open_laserdisc(int drv, QString path);
577
578         void CreateBinaryMenu(int drv, int drv_base);
579         void CreateBinaryPulldownMenu(int drv);
580         void ConfigBinaryMenuSub(int drv);
581         int set_recent_binary_load(int drv, int num);
582         int set_recent_binary_save(int drv, int num);
583         void _open_binary_load(int drive, const QString fname);
584         void _open_binary_save(int drive, const QString fname);
585
586         void open_quick_disk_dialog(int drv);
587         int set_recent_quick_disk(int drive, int num); 
588         int write_protect_Qd(int drv, bool flag);
589         void _open_quick_disk(int drv, const QString fname);
590         void eject_Qd(int drv);
591
592
593         virtual void _open_disk(int drv, const QString fname);
594         void _open_cart(int drv, const QString fname);
595         void eject_cmt(int drv);
596         void do_change_boot_mode(int mode);
597         void do_change_cpu_type(int mode);
598         void do_write_protect_cmt(int drv, bool flag);
599         int  set_recent_cmt(int drv, int num);
600         void set_wave_shaper(int drive, bool f);
601         void set_direct_load_from_mzt(int drive, bool f);
602         void do_open_write_cmt(int drive, QString);
603         void do_open_read_cmt(int drive, QString path);
604
605         void do_push_play_tape(int drive);
606         void do_push_stop_tape(int drive);
607         void do_push_fast_forward_tape(int drive);
608         void do_push_rewind_tape(int drive);
609         void do_push_apss_forward_tape(int drive);
610         void do_push_apss_rewind_tape(int drive);
611         void set_cmt_sound(bool);
612
613         int write_protect_fd(int drv, bool flag);
614         void eject_fd(int drv);
615         virtual void do_update_recent_disk(int);
616         virtual int set_d88_slot(int drive, int num);
617         virtual int set_recent_disk(int, int);
618
619         virtual void do_update_recent_hard_disk(int);
620         virtual void _open_hard_disk(int drv, const QString fname);
621         void eject_hard_disk(int drv);
622         virtual int set_recent_hard_disk(int, int);
623         // Bubble Casette
624         int write_protect_bubble(int drv, bool flag);
625
626         int set_b77_slot(int drive, int num);
627         void do_update_recent_bubble(int drv);
628         int set_recent_bubble(int drv, int num);
629         void _open_bubble(int drv, const QString fname);
630         void eject_bubble(int drv);
631
632
633         void start_record_sound(bool rec);
634         void set_freq(int);
635         void set_latency(int);
636         void set_sound_device(int);
637         void do_set_sound_strict_rendering(bool f);
638         void do_set_sound_play_tape(bool f);
639         
640         void set_monitor_type(int);
641         void message_status_bar(QString);
642         void resize_statusbar(int w, int h);
643         virtual void do_release_emu_resources(void);
644         virtual void set_window_title();
645         void set_device_type(int);
646         void set_mouse_type(int);
647         void set_keyboard_type(int);
648         void set_joystick_type(int);
649         void set_drive_type(int);
650         void set_scan_line(bool);
651         void set_gl_scan_line_vert(bool);
652         void set_gl_scan_line_horiz(bool);
653         void set_printer_device(int);
654         void do_show_about(void);
655         void do_browse_document(QString);
656         void set_dipsw(int num, bool flag);
657         bool get_dipsw(int num);
658
659         void do_set_sound_files_fdd(bool f);
660         void do_set_sound_files_relay(bool f);
661         void do_set_conslog(bool);
662         void do_set_syslog(bool);
663         void do_update_device_node_name(int id, const _TCHAR *name);    
664         void do_set_dev_log_to_console(int id, bool f);
665         void do_set_dev_log_to_syslog(int id, bool f);
666         void do_set_roma_kana(bool f);
667         void do_set_numpad_enter_as_fullkey(bool f);
668         void do_set_render_mode_std(void);
669         void do_set_render_mode_tv(void);
670         void do_select_render_platform(int num);
671         void do_set_window_focus_type(bool flag);
672
673         void do_set_visible_virtual_media_none();
674         void do_set_visible_virtual_media_upper();
675         void do_set_visible_virtual_media_lower();
676         void do_set_visible_virtual_media_left();
677         void do_set_visible_virtual_media_right();
678
679         void do_set_emulate_cursor_as(int num);
680         void do_set_logging_fdc(bool onoff);    
681         void do_set_separate_thread_draw(bool f);
682         void do_set_print_cpu_statistics(bool flag);
683         // ToDo: GUI
684         void do_set_state_log_to_record(bool f);
685         void do_set_state_log_to_console(bool f);
686         void do_set_state_log_to_syslog(bool f);
687
688 signals:
689         int message_changed(QString);
690         int quit_emu_thread();
691         int call_joy_thread(EMU *);
692         int quit_joy_thread();
693         int quit_draw_thread();
694         int quit_emulator_all();
695         int sig_quit_movie_thread();
696         int sig_stop_saving_movie(void);
697         int sig_start_saving_movie(void);
698         int on_boot_mode(int);
699         int on_cpu_type(int);
700         int on_cpu_power(int);
701         int on_open_debugger(int);
702         int on_insert_fd(int);
703         int on_eject_fd(int);
704         int do_open_disk(int, QString);
705         
706         int closed(void);
707         int sig_quit_all(void);
708         int sig_vm_reset(void);
709         int sig_vm_specialreset(void);
710         int sig_check_grab_mouse(bool);
711         int sig_resize_uibar(int, int);
712         int sig_resize_screen(int, int);
713         int sig_update_screen(void);
714         int sig_emu_update_config(void);
715         int sig_emu_start_rec_sound(void);
716         int sig_emu_stop_rec_sound(void);
717         int sig_emu_set_display_size(int, int, int, int);
718         int sig_emu_update_volume_level(int, int);
719         int sig_emu_update_volume_balance(int, int);
720
721         int sig_resize_osd(int);
722         
723         int sig_write_protect_disk(int drv, bool flag);
724         int sig_open_disk(int, QString, int);
725         int sig_close_disk(int);
726         int sig_open_hard_disk(int, QString);
727         int sig_close_hard_disk(int);
728         int sig_play_tape(int ,QString);
729         int sig_rec_tape(int, QString);
730         int sig_close_tape(int);
731         int sig_cmt_push_play(int);
732         int sig_cmt_push_stop(int);
733         int sig_cmt_push_fast_forward(int);
734         int sig_cmt_push_fast_rewind(int);
735         int sig_cmt_push_apss_forward(int);
736         int sig_cmt_push_apss_rewind(int);
737         int sig_write_protect_quickdisk(int drv, bool flag);
738         int sig_close_quickdisk(int drv);
739         int sig_open_quickdisk(int drv, QString path);
740         int sig_close_cart(int drv);
741         int sig_open_cart(int drv, QString path);
742         int sig_open_cdrom(int drv, QString path);
743         int sig_close_cdrom(int drv);
744         int sig_close_laserdisc(int drv);
745         int sig_open_laserdisc(int drv, QString path);
746         int sig_load_binary(int drv, QString path);
747         int sig_save_binary(int drv, QString path);
748         int sig_write_protect_bubble(int, bool);
749         int sig_open_bubble(int, QString , int);
750         int sig_close_bubble(int);
751         int sig_led_update(QRectF);
752         int sig_start_auto_key(QString);
753         int sig_stop_auto_key(void);
754         int sig_set_display_osd(bool);
755         int sig_display_osd_leds(int,bool);
756         int sig_set_led_width(int);
757         int sig_set_orientation_osd(int);
758         int sig_set_roma_kana(bool);
759         int quit_debugger_thread(void);
760         int sig_quit_widgets(void);
761
762         int sig_load_state(QString);
763         int sig_save_state(QString);
764         
765 };
766 QT_END_NAMESPACE
767
768 #endif