OSDN Git Service

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