OSDN Git Service

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