OSDN Git Service

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