OSDN Git Service

[BUILD] Set SOVERSION and GIT hash automatically.
[csp-qt/common_source_project-fm7.git] / source / src / qt / gui / mainwidget_base.h
index d2721bd..6278335 100644 (file)
 #ifndef _CSP_QT_MAINWIDGET_BASE_H
 #define _CSP_QT_MAINWIDGET_BASE_H
 
-#if defined(_USE_QT5)
-#include <QVariant>
-#include <QAction>
-#include <QApplication>
-#include <QButtonGroup>
-#include <QGraphicsView>
-#include <QHeaderView>
+//#include <QVariant>
+//#include <QObject>
+//#include <QApplication>
 #include <QMainWindow>
-#include <QMenu>
-#include <QMenuBar>
-#include <QStatusBar>
-#include <QWidget>
 #include <QIcon>
-#include <QLabel>
-#include <QGraphicsEllipseItem>
+#include <QString>
 #include <QStringList>
-#include <QClipboard>
-#else
-#include <QtCore/QVariant>
-#include <QtGui/QAction>
-#include <QtGui/QApplication>
-#include <QtGui/QButtonGroup>
-#include <QtGui/QGraphicsView>
-#include <QtGui/QHeaderView>
-#include <QtGui/QMainWindow>
-#include <QtGui/QMenu>
-#include <QtGui/QMenuBar>
-#include <QtGui/QStatusBar>
-#include <QtGui/QWidget>
-#include <QtGui/QIconSet>
-#include <QLabel>
-#endif
+//#include <QMenu>
+//#include <QMenuBar>
 
-#include "simd_types.h"
 #include "common.h"
 #include "config.h"
-//#include "emu.h"
-//#include "vm.h"
+#include "menu_flags.h"
+#include "csp_logger.h"
+
+class DLL_PREFIX_I MOVIE_SAVER;
 
 #include "qt_main.h"
+#define _MAX_DEBUGGER 8
+
+enum {
+       CSP_MAINWIDGET_SAVE_MOVIE_STOP = 0,
+       CSP_MAINWIDGET_SAVE_MOVIE_15FPS = 1,
+       CSP_MAINWIDGET_SAVE_MOVIE_24FPS,
+       CSP_MAINWIDGET_SAVE_MOVIE_30FPS,
+       CSP_MAINWIDGET_SAVE_MOVIE_60FPS,
+       CSP_MAINWIDGET_SAVE_MOVIE_END,
+};
+
+#define MAX_RENDER_PLATFORMS 12
+
+enum {
+       RENDER_PLATFORMS_OPENGL3_MAIN = 0,
+       RENDER_PLATFORMS_OPENGL2_MAIN,
+       RENDER_PLATFORMS_OPENGL_CORE,
+       RENDER_PLATFORMS_OPENGL_ES_2,
+       RENDER_PLATFORMS_END
+};
 
 QT_BEGIN_NAMESPACE
 
+
+#define SET_ACTION_SINGLE(__action,__checkable,__enabled,__cfgif) \
+               __action = new Action_Control(this, using_flags);                 \
+               __action->setCheckable(__checkable);                                      \
+               __action->setEnabled(__enabled);                                                  \
+               __action->setChecked(false);                                                      \
+               if(__cfgif) {                                                                                     \
+                       __action->setChecked(true);                                                       \
+               }                                                                                                                 \
+
+#define SET_ACTION_CHECKABLE_SINGLE_CONNECT(__menu,__action,__objname,__cond,__signal1,__slot1) \
+       __action = new Action_Control(this, using_flags);                                       \
+       __action->setObjectName(QString::fromUtf8(__objname));                          \
+       __action->setCheckable(true);                                                                           \
+       if(__cond) __action->setChecked(true);                                                          \
+       connect(__action, __signal1, this, __slot1);                                            \
+       __menu->addAction(__action);
+
+
+#define SET_HELP_MENUENTRY(__menu,__action,__objname,__txtname) \
+       __action = new Action_Control(this, using_flags); \
+       __action->setObjectName(QString::fromUtf8(__objname)); \
+       __action->do_set_string(QString::fromUtf8(__txtname)); \
+       connect(__action, SIGNAL(triggered()), __action, SLOT(do_send_string())); \
+       connect(__action, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString))); \
+       __menu->addAction(__action);
+       
+
+#define SET_ACTION_CONTROL_ARRAY(__start,__end,                                                        \
+                                                                __parent,__using_flags,                                \
+                                                                __menu,__action,                                               \
+                                                                __checkable,__enabled,__cnf,                   \
+                                                                __signal1,__slot1,                                             \
+                                                                __signal2,__slot2)                                     \
+       for(int _i = __start; _i < __end;  _i++) {                                                      \
+               __action[_i] = new Action_Control(__parent, __using_flags);             \
+               __action[_i]->setCheckable(__checkable);                                                \
+               __action[_i]->setEnabled(__enabled);                                                    \
+               __action[_i]->binds->setValue1(_i);                                                             \
+               __menu->addAction(__action[_i]);                                                                \
+               if(p_config->__cnf[_i][0]) __action[_i]->setChecked(true); \
+               connect(__action[_i], __signal1, __action[_i], __slot1);                \
+               connect(__action[_i], __signal2, this, __slot2);                                \
+       }                                                                                                                                       \
+
+class OSD;
+class QVariant;
+class QAction;
+class QActionGroup;
+class QButtonGroup;
+class QGraphicsView;
+class QGraphicsScene;
+class QHeaderView;
+class QMenu;
+class QMenuBar;
+class QApplication;
+
+class QStatusBar;
+class QWidget;
+class QLabel;
+class QGraphicsEllipseItem;
+class QClipboard;
+class QDockWidget;
+class QHBoxLayout;
+class QVBoxLayout;
+class QGridLayout;
 class Ui_SoundDialog;
 class GLDrawClass;
 class Action_Control;
@@ -57,30 +121,19 @@ class Menu_MetaClass;
 class Menu_FDClass;
 class Menu_CMTClass;
 class Menu_CartClass;
+class Menu_HDDClass;
 class Menu_QDClass;
 class Menu_BinaryClass;
 class Menu_BubbleClass;
 class Menu_CompactDiscClass;
-class USING_FLAGS;
-
-extern         USING_FLAGS *using_flags;
-
-class Ui_MainWindowBase : public QMainWindow
+class Menu_LaserdiscClass;
+class CSP_DockDisks;
+class MOVIE_SAVER;
+class EmuThreadClass;
+class DLL_PREFIX Ui_MainWindowBase : public QMainWindow
 {
        Q_OBJECT
- protected:
-       QMainWindow *MainWindow;
-       QApplication *CoreApplication;
-       
-       QWidget *centralwidget;
-       GLDrawClass *graphicsView;
-       QStatusBar  *statusbar;
-       QMenuBar    *menubar;
-       QTimer *statusUpdateTimer;
-
-       QTimer *ledUpdateTimer;
-
-       int screen_mode_count;
+private:
        QIcon WindowIcon;
        QIcon InsertIcon;
        QIcon EjectIcon;
@@ -92,13 +145,114 @@ class Ui_MainWindowBase : public QMainWindow
        QIcon VolumeLowIcon;
        QIcon VolumeMidIcon;
        QIcon VolumeHighIcon;
+
+       // File
+       QActionGroup *actionGroup_CpuSpeed;
+       class Action_Control *actionSpeed_x1;
+       class Action_Control *actionSpeed_x2;
+       class Action_Control *actionSpeed_x4;
+       class Action_Control *actionSpeed_x8;
+       class Action_Control *actionSpeed_x16;
+       class Action_Control *actionSpeed_FULL;
+       class Action_Control *actionPaste_from_Clipboard;
+       class Action_Control *actionStop_Pasting;
+       QMenu *menuSave_State;
+       QMenu *menuLoad_State;
+
+       // Screen
+       QActionGroup *actionGroup_Stretch;
+       QActionGroup *actionGroup_SetRenderPlatform;
+       QActionGroup *actionGroup_RotateType;
+       class Action_Control *action_ScreenSeparateThread;
+       class Action_Control *action_ScreenUseOSD;
+       class Action_Control *actionZoom;
+       class Action_Control *actionDisplay_Mode;
+       class Action_Control *actionScanLine;
+       class Action_Control *actionGLScanLineHoriz;
+       class Action_Control *actionGLScanLineVert;
+       
+       class Action_Control *actionRotate[4];
+       class Action_Control *actionCRT_Filter;
+       class Action_Control *actionOpenGL_Filter;
+       class Action_Control *actionDot_by_Dot;
+       class Action_Control *actionReferToX_Display;
+       class Action_Control *actionReferToY_Display;
+       class Action_Control *actionFill_Display;
+       QActionGroup *actionGroup_ScreenSize;
+       QActionGroup *actionGroup_RenderMode;
+
+       // Sound
+       QActionGroup   *actionGroup_Sound_Freq;
+       QActionGroup   *actionGroup_Sound_Latency;
+       //class Action_Control *actionSoundCMT;
+       class Action_Control *action_VolumeDialog;
+       class Action_Control *actionSoundPlayTape;
+       class Action_Control *actionSoundStrictRendering;
+       class Action_Control *action_SoundFilesFDD;
+       class Action_Control *action_SoundFilesRelay;
+       //QMenu *menuLogToConsole;
+       //QMenu *menuLogToSyslog;
+       QMenu *menuDevLogToConsole;
+       QMenu *menuDevLogToSyslog;
+       QMenu *menu_SetRenderPlatform;
+
+       // Misc
+       QMenu *menu_DispVirtualMedias;
+       QActionGroup *actionGroup_DispVirtualMedias;
+       class Action_Control *action_DispVirtualMedias[5];
+       class Action_Control *action_FocusWithClick;
+       class Action_Control *action_UseRomaKana;
+       class Action_Control *action_NumPadEnterAsFullkey;
+       class Action_Control *action_Logging_FDC;
+       class Action_Control *action_LogToSyslog;
+       class Action_Control *action_LogToConsole;
+       class Action_Control *action_LogRecord;
+       class Action_Control *action_DevLogToSyslog[CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1];
+       class Action_Control *action_DevLogToConsole[CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1];
+       class Action_Control *action_DevLogRecord[CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1];
+       // Emulator
+       class Action_Control *action_SetupJoystick;
+       class Action_Control *action_SetupKeyboard;
+       class Action_Control *action_LogView;
+       class Action_Control *action_PrintCpuStatistics;
+
+       QMenu *menu_EmulateCursorAs;
+       QActionGroup *actionGroup_EmulateCursorAs;
+       class Action_Control *action_EmulateCursorAs[4];
+
+       // Help
+       class Action_Control *actionHelp_README_BIOS;
+       class Action_Control *actionHelp_README;
+       class Action_Control *actionHelp_README_QT;
+       class Action_Control *actionHelp_README_MR_TANAM;
+       class Action_Control *actionHelp_README_Artane;
+       class Action_Control *actionHelp_README_Umaiboux;
+       class Action_Control *actionHelp_README_FAQ;
+       class Action_Control *actionHelp_README_FAQ_JP;
+       class Action_Control *actionHelp_README_FM7;
+       class Action_Control *actionHelp_README_FM7_JP;
+       class Action_Control *actionHelp_History;
+       class Action_Control *actionHelp_History_Relnote;
+       class Action_Control *actionHelp_History_ChangeLog;
+       class Action_Control *actionHelp_History_MR_TANAM;
+       class Action_Control *actionHelp_License;
+       class Action_Control *actionHelp_License_JP;
+       
+       // Led: OSD.
+       bool flags_led[32];
+       bool flags_led_bak[32];
+       QGraphicsView *led_graphicsView;
+       QGraphicsScene *led_gScene;
+       QGraphicsEllipseItem *led_leds[32];
+       uint32_t osd_led_data;
+
+       // Inner functions
        
-       // Some Functions
        void ConfigCpuSpeed(void);
        void ConfigControlMenu(void);
        void connectActions_ControlMenu(void);
-       void retranslateControlMenu(const char *SpecialResetTitle,  bool WithSpecialReset);
        void ConfigFloppyMenu(void);
+       void ConfigHardDiskMenu(void);
        void ConfigSoundMenu(void);
        void CreateSoundMenu(void);
 
@@ -108,23 +262,25 @@ class Ui_MainWindowBase : public QMainWindow
        void CreateFloppyMenu(int drv, int drv_base);
        void CreateFloppyPulldownMenu(int drv);
        void ConfigFloppyMenuSub(int drv);
-       void retranslateFloppyMenu(int drv, int basedrv);
 
-       // Bubble
+       void CreateHardDiskMenu(int drv, int drv_base);
+       void CreateHardDiskPulldownMenu(int drv);
+       void ConfigHardDiskMenuSub(int drv);
+// Bubble
        void CreateBubbleMenu(int drv, int drv_base);
        void CreateBubblePulldownMenu(int drv);
        void ConfigBubbleMenuSub(int drv);
-       void retranslateBubbleMenu(int drv, int basedrv);
        void ConfigBubbleMenu(void);
+       virtual int GetBubbleBankNum(int drv) { return 0; }
+       virtual int GetBubbleCurrentBankNum(int drv) { return 0; }
+       virtual bool GetBubbleCasetteIsProtected(int drv) { return false; }
+       virtual QString GetBubbleB77FileName(int drv) { return QString::fromUtf8(""); }
+       virtual QString GetBubbleB77BubbleName(int drv, int num) { return QString::fromUtf8(""); }
        
-       void CreateCMTMenu(void);
-       void CreateCMTPulldownMenu(void);
-       void ConfigCMTMenuSub(void);
-       void retranslateCMTMenu(void);
+       void CreateCMTMenu(int drive, int drv_base);
        void ConfigCMTMenu(void);
    
        void ConfigQuickDiskMenu(void);
-       void retranslateQuickDiskMenu(int drv, int basedrv);
        void ConfigQuickDiskMenuSub(int drv);
        void CreateQuickDiskPulldownMenu(int drv);
        void CreateQuickDiskMenu(int drv, int drv_base);
@@ -134,161 +290,121 @@ class Ui_MainWindowBase : public QMainWindow
        void ConfigCartMenuSub(int drv);
        void ConfigCartMenu(void);
 
-       void CreateCDROMMenu(void);
+       void CreateCDROMMenu(int drv, int drv_base);
        void ConfigCDROMMenu(void);
        void ConfigCDROMMenuSub(void);
        void CreateCDROMPulldownMenu(void);
-       void retranslateCDROMMenu(void);
-
-
-       void ConfigBinaryMenu(void);
-       void retranslateBinaryMenu(int drv, int basedrv);
        
-       void retranslateSoundMenu(void);
+       void CreateLaserdiscMenu(int drv, int drv_base);
+       void ConfigLaserdiscMenu(void);
+       void ConfigLaserdiscMenuSub(void);
+       void CreateLaserdiscPulldownMenu(void);
 
+       void ConfigBinaryMenu(void);
        void ConfigScreenMenu(void);
        void ConfigScreenMenu_List(void);
        void CreateScreenMenu(void);
        void ConfigDeviceType(void);
+       void ConfigKeyboardType(void);
+       void ConfigJoystickType(void);
+       void ConfigMouseType(void);
        void ConfigDriveType(void);
        void ConfigSoundDeviceType(void);
        void ConfigPrinterType(void);
+       void ConfigMonitorType(void);
+
+       // About Status bar
+       int Calc_OSD_Wfactor(void);
+protected:
+       USING_FLAGS *using_flags;
+       config_t *p_config;
+       CSP_Logger *csp_logger;
+       QMainWindow *MainWindow;
+       QApplication *CoreApplication;
        
-       void retranslateScreenMenu(void);
-       void retranslateMachineMenu(void);
+       GLDrawClass *graphicsView;
+       CSP_DockDisks *driveData;
+       QWidget *pCentralWidget;
+       QVBoxLayout *pCentralLayout;
+       QStatusBar  *statusbar;
+       QMenuBar    *menubar;
+
+       QTimer *statusUpdateTimer;
+       QTimer *ledUpdateTimer;
+
+       int screen_mode_count;
+       // Virtual medias.
+       QStringList listCARTs[8];
+       QStringList listQDs[8];
+       QStringList listCMT[8];
+       bool cmt_write_protect[8];
+       QStringList listCDROM[8];
+       QStringList listLaserdisc[8];
+       QStringList listBINs[8];
+       QStringList listFDs[16];
+       QStringList listHDDs[16];
+       
+       QStringList listD88[16];
+       QStringList listBubbles[8];
+       QStringList listB77[8];
 
+       // Some Functions
+       QActionGroup *actionGroup_BootMode;
+       QActionGroup *actionGroup_CpuType;
        class Action_Control *actionReset;
        class Action_Control *actionSpecial_Reset;
        class Action_Control *actionExit_Emulator;
-
-       // Pls.Override
-       QActionGroup *actionGroup_CpuType;
-       QMenu *menuCpuType;
        class Action_Control *actionCpuType[8];
-       void ConfigCPUTypes(int num);
-
-       QActionGroup *actionGroup_CpuSpeed;
-       class Action_Control *actionSpeed_x1;
-       class Action_Control *actionSpeed_x2;
-       class Action_Control *actionSpeed_x4;
-       class Action_Control *actionSpeed_x8;
-       class Action_Control *actionSpeed_x16;
-
-
-       // Pls.Override
-       QActionGroup *actionGroup_BootMode;
-       QMenu *menuBootMode;
        class Action_Control *actionBootMode[8];
-       void ConfigCPUBootMode(int num);
-
-       class Action_Control *actionPaste_from_Clipboard;
-       class Action_Control *actionStop_Pasting;
-
-       class Action_Control *actionSave_State;
-       class Action_Control *actionLoad_State;
-       
-       class Action_Control *actionDebugger_1;
-       class Action_Control *actionDebugger_2;
-       class Action_Control *actionDebugger_3;
+       class Action_Control *actionDebugger[_MAX_DEBUGGER];
+       class Action_Control *actionSave_State[10];
+       class Action_Control *actionLoad_State[10];
        //class Action_Control *actionClose_Debuggers;
+       class Action_Control *actionScreenSize[32];
+       class Action_Control *actionAbout;
+       class Action_Control *actionMouseEnable;
+       class Action_Control *actionHelp_AboutQt;
 
-
-       QStringList listCARTs[8];
-
-       QStringList listQDs[8];
-       
-       QStringList listCMT;
-       bool cmt_write_protect;
-       QStringList listCDROM;
-       
-       class Action_Control *actionInsert_LD;
-       class Action_Control *actionEject_LD;
-       QActionGroup   *actionGroup_Opened_LD;
-       class Action_Control *actionRecent_Opened_LD;
-       class Action_Control *action_Recent_List_LD[MAX_HISTORY];
-       QStringList listLaserDisc;
-       
-       QStringList listBINs[8];
        // Screen
-       class Action_Control *actionZoom;
-       class Action_Control *actionDisplay_Mode;
-
-       class Action_Control *actionScanLine;
-
-       class Action_Control *actionGLScanLineHoriz;
-       class Action_Control *actionGLScanLineVert;
-       class Action_Control *actionRotate;
-
-       class Action_Control *actionCRT_Filter;
-       class Action_Control *actionOpenGL_Filter;
-
-       QActionGroup *actionGroup_Stretch;
-       class Action_Control *actionDot_by_Dot;
-       class Action_Control *actionReferToX_Display;
-       class Action_Control *actionReferToY_Display;
-       class Action_Control *actionFill_Display;
-
        class Action_Control *actionCapture_Screen;
-
-       QActionGroup *actionGroup_ScreenSize;
-       class Action_Control *actionScreenSize[32]; 
-       class Action_Control *actionAbout;
-       class Action_Control *actionHelp_README_BIOS;
-       class Action_Control *actionHelp_README;
-       class Action_Control *actionHelp_README_QT;
-       class Action_Control *actionHelp_README_MR_TANAM;
-       class Action_Control *actionHelp_README_Artane;
-       class Action_Control *actionHelp_README_FAQ;
-       class Action_Control *actionHelp_README_FAQ_JP;
-       
-       class Action_Control *actionHelp_README_FM7;
-       class Action_Control *actionHelp_README_FM7_JP;
-
-       class Action_Control *actionHelp_History;
-       class Action_Control *actionHelp_History_Relnote;
-       class Action_Control *actionHelp_History_ChangeLog;
-       class Action_Control *actionHelp_History_MR_TANAM;
-
-       class Action_Control *actionHelp_License;
-       class Action_Control *actionHelp_License_JP;
-       
-       
-       QActionGroup   *actionGroup_Sound_Freq;
-       QActionGroup   *actionGroup_Sound_Latency;
-
-       class Action_Control *actionSoundCMT;
-
+       class Action_Control *action_SetRenderMode[8];
+       // Sound
        class Action_Control *action_Freq[8];
        class Action_Control *action_Latency[6];
        class Action_Control *actionStart_Record;
        class Action_Control *actionStop_Record;
-       class Action_Control *actionStart_Record_Movie;
-       class Action_Control *actionStop_Record_Movie;
-       class Action_Control *action_VolumeDialog;
-       
-
-       class Action_Control *actionMouseEnable;
-       class Action_Control *actionHelp_AboutQt;
-
 
+       // Emulator
        QActionGroup *actionGroup_DeviceType;
-       QMenu *menuDeviceType;
-       class Action_Control *actionDeviceType[16];
-
+       QActionGroup *actionGroup_KeyboardType;
+       QActionGroup *actionGroup_JoystickType;
+       QActionGroup *actionGroup_MouseType;
        QActionGroup *actionGroup_DriveType;
+       QActionGroup *actionGroup_SoundDevice;
+       QActionGroup *actionGroup_PrintDevice;
+       QMenu *menuDeviceType;
+       QMenu *menuKeyboardType;
+       QMenu *menuJoystickType;
+       QMenu *menuMouseType;
        QMenu *menuDriveType;
-       class Action_Control *actionDriveType[8];
-
-       QActionGroup   *actionGroup_SoundDevice;
        QMenu *menuSoundDevice;
-       class Action_Control *actionSoundDevice[32]; //
-
-       QActionGroup *actionGroup_PrintDevice;
        QMenu *menuPrintDevice;
+       class Action_Control *actionDeviceType[16];
+       class Action_Control *actionKeyboardType[16];
+       class Action_Control *actionJoystickType[16];
+       class Action_Control *actionMouseType[8];
+       class Action_Control *actionDriveType[8];
+       class Action_Control *actionSoundDevice[32]; //
        class Action_Control *actionPrintDevice[16];
-       // Emulator
-       class Action_Control *action_SetupJoystick;
-       class Action_Control *action_SetupKeyboard;
+       class Action_Control *action_SetRenderPlatform[MAX_RENDER_PLATFORMS];
+       
+       class Action_Control *actionStart_Record_Movie;
+       class Action_Control *actionStop_Record_Movie;
+       class Action_Control *action_SetupMovie; // 15, 24, 30, 60
+
+       QMenu *menuMonitorType;
+       QActionGroup *actionGroup_MonitorType;
+       Action_Control *actionMonitorType[16];
        
        // Menus    
        QMenu *menuControl;
@@ -296,32 +412,14 @@ class Ui_MainWindowBase : public QMainWindow
        QMenu *menuCopy_Paste;
        QMenu *menuCpu_Speed;
        QMenu *menuDebugger;
-       
-       Menu_FDClass *menu_fds[16];
-       QStringList listFDs[16];
-       QStringList listD88[16];
-       
-       Menu_QDClass *menu_QDs[8];
-       
-       Menu_CMTClass *menu_CMT;
-       
-       Menu_CompactDiscClass *menu_CDROM;
-       
-       Menu_CartClass *menu_Cart[8];
-       
-       QMenu *menuLD;
-       QMenu *menuLD_Recent;
-       Menu_BinaryClass *menu_BINs[8];
-       
-       Menu_BubbleClass *menu_bubbles[8];
-       QStringList listBubbles[8];
-       QStringList listB77[8];
-
        QMenu *menuScreen;
-
        QMenu *menuStretch_Mode;
        QMenu *menuScreenSize;
-  
+       QMenu *menuScreen_Render;
+       QMenu *menuScreen_Rotate;
+       
+       QMenu *menuCpuType;
+       QMenu *menuBootMode;
        QMenu *menuSound;
        QMenu *menuOutput_Frequency;
        QMenu *menuSound_Latency;
@@ -333,48 +431,59 @@ class Ui_MainWindowBase : public QMainWindow
        QMenu *menuHELP;
        QMenu *menuHelp_Readme;
        QMenu *menuHelp_Histories;
+       Menu_FDClass *menu_fds[16];
+       Menu_QDClass *menu_QDs[8];
+       Menu_CMTClass *menu_CMT[8];
+       Menu_HDDClass *menu_hdds[16];
+       Menu_CompactDiscClass *menu_CDROM[8];
+       Menu_LaserdiscClass *menu_Laserdisc[8];
+       Menu_CartClass *menu_Cart[8];
+       Menu_BinaryClass *menu_BINs[8];
+       Menu_BubbleClass *menu_bubbles[8];
        // Status Bar
        QWidget *dummyStatusArea1;
        QLabel *messagesStatusBar;
        QWidget *dummyStatusArea2;
 
-       QLabel *fd_StatusBar[16];
-       QString osd_str_fd[16];
-       
-       QLabel *qd_StatusBar[8];
-       QString osd_str_qd[8];
-       
-       QLabel *cmt_StatusBar;
-       QString osd_str_cmt;
-       
        QLabel *cdrom_StatusBar;
        QString osd_str_cdrom;
        
        QLabel *laserdisc_StatusBar;
        QString osd_str_laserdisc;
-       
        QLabel *bubble_StatusBar[8];
        QString osd_str_bubble[8];
-       
        QImage *bitmapImage;
-       
-       bool flags_led[32];
-       bool flags_led_bak[32];
-       QGraphicsView *led_graphicsView;
-       QGraphicsScene *led_gScene;
-       QGraphicsEllipseItem *led_leds[32];
-       uint32_t osd_led_data;
-       
        QClipboard *ClipBoard;
-
-       // About Status bar
-       int Calc_OSD_Wfactor(void);
        // Constructor
-       class EmuThreadClass *hRunEmu;
+       EmuThreadClass *hRunEmu;
        class DrawThreadClass *hDrawEmu;
        class JoyThreadClass *hRunJoy;
+       class MOVIE_SAVER *hSaveMovieThread;
+       
+       int max_vm_nodes;
+       bool ui_retranslate_completed;
+
+       // CPU Type
+       void ConfigCPUTypes(int num);
+       void ConfigCPUBootMode(int num);
+       // Translate UIs.
+       void retranslateControlMenu(const char *SpecialResetTitle,  bool WithSpecialReset);
+       void retranslateFloppyMenu(int drv, int basedrv);
+       void retranslateFloppyMenu(int drv, int basedrv, QString specName);
+       void retranslateHardDiskMenu(int drv, int basedrv);
+       void retranslateHardDiskMenu(int drv, int basedrv, QString specName);
+       void retranslateBubbleMenu(int drv, int basedrv);
+       void retranslateCMTMenu(int drive);
+       void retranslateQuickDiskMenu(int drv, int basedrv);
+
+       void retranslateCDROMMenu(void);
+       void retranslateLaserdiscMenu(void);
+       void retranslateScreenMenu(void);
+       void retranslateMachineMenu(void);
+       void retranslateBinaryMenu(int drv, int basedrv);
+       void retranslateSoundMenu(void);
 public:
-       Ui_MainWindowBase(QWidget *parent = 0);
+       Ui_MainWindowBase(USING_FLAGS *p, CSP_Logger *logger, QWidget *parent = 0);
        ~Ui_MainWindowBase();
 
        // Initializer : using from InitContext.
@@ -388,6 +497,7 @@ public:
        virtual void retranslateCartMenu(int drv, int basedrv);
        virtual void retranslateVolumeLabels(Ui_SoundDialog *);
        virtual void retranslateEmulatorMenu(void);
+       virtual void retranselateUi_Depended_OSD(void);
        // About Status bar
        virtual void initStatusBar(void);
        // EmuThread
@@ -397,7 +507,6 @@ public:
        virtual void StopJoyThread(void);
        virtual void LaunchJoyThread(void);
        // Screen
-       virtual void OnWindowResize(void);
        virtual void OnWindowMove(void);
        virtual void OnWindowRedraw(void);
    
@@ -411,10 +520,15 @@ public:
        virtual void OnMainWindowClosed(void);
        // Basic Action Definition
        void OnCpuPower(int mode);
-       bool get_wave_shaper(void);
-       bool get_direct_load_mzt(void);
+       bool get_wave_shaper(int drive);
+       bool get_direct_load_mzt(int drive);
        virtual bool GetPowerState(void);
-   
+       void set_logger(CSP_Logger *logger) { csp_logger = logger; }
+
+       virtual QString get_system_version();
+       virtual QString get_build_date();
+       QString get_gui_version();
+
        // Basic slots
 public slots:
        void delete_emu_thread(void);
@@ -423,14 +537,13 @@ public slots:
        virtual void delete_joy_thread(void);
        virtual void do_set_window_title(QString s);
        virtual void redraw_status_bar(void);
-//#ifdef USE_LED_DEVICE
        virtual void redraw_leds(void);
        void do_recv_data_led(quint32 d);
-//#endif
 
        void do_update_volume(int level);
        void set_screen_aspect(int num);
        void set_screen_size(int w, int h);
+       void do_set_screen_rotate(int type);
        void OnReset(void);
        void OnSpecialReset(void);
        virtual void do_set_mouse_enable(bool flag);
@@ -438,44 +551,38 @@ public slots:
        void do_set_sound_device(int);
        void do_emu_update_volume_balance(int num, int level);
        void do_emu_update_volume_level(int num, int level);
-       
+       void rise_log_viewer(void);
        void rise_volume_dialog(void);
-
        void rise_joystick_dialog(void);
-
        void rise_keyboard_dialog(void);
-
-       void OnLoadState(void);
-       void OnSaveState(void);
+       virtual void rise_movie_dialog(void);
+       void do_stop_saving_movie(void);
+       void do_start_saving_movie(void);
+       void do_set_state_saving_movie(bool state);
+       void set_osd_virtual_media(bool f);
+       
        virtual void OnOpenDebugger(int n);
        virtual void OnCloseDebugger(void);
-       
-       void set_screen_rotate(bool);
-       void set_crt_filter(bool);
+       void doBeforeCloseMainWindow(void);     
        void set_gl_crt_filter(bool);
        void set_cpu_power(int pw) {
                OnCpuPower(pw);
        }
        virtual void on_actionExit_triggered();
-
+       void do_emu_full_speed(bool f);
        void OnStartAutoKey(void);
        void OnStopAutoKey(void);
-       
-       void do_change_osd_fd(int drv, QString tmpstr);
-
        void eject_cart(int);
        void set_recent_cart(int, int);
 
        int set_recent_cdrom(int drv, int num);
        void do_eject_cdrom(int drv);
        void do_open_cdrom(int drv, QString path);
-       void do_change_osd_cdrom(QString tmpstr);
-#if 0
-       int set_recent_laserdisc(int num); 
-       void do_eject_laserdisc(void); 
-       void do_open_laserdisc(QString path);
-       void do_change_osd_laserdisc(QString tmpstr);
-#endif 
+
+       int set_recent_laserdisc(int drv, int num); 
+       void do_eject_laserdisc(int drv); 
+       void do_open_laserdisc(int drv, QString path);
+
        void CreateBinaryMenu(int drv, int drv_base);
        void CreateBinaryPulldownMenu(int drv);
        void ConfigBinaryMenuSub(int drv);
@@ -490,31 +597,25 @@ public slots:
        void _open_quick_disk(int drv, const QString fname);
        void eject_Qd(int drv);
 
-       void do_change_osd_qd(int drv, QString tmpstr);
 
        virtual void _open_disk(int drv, const QString fname);
        void _open_cart(int drv, const QString fname);
-       void eject_cmt(void);
+       void eject_cmt(int drv);
        void do_change_boot_mode(int mode);
        void do_change_cpu_type(int mode);
        void do_write_protect_cmt(int drv, bool flag);
        int  set_recent_cmt(int drv, int num);
-       void set_wave_shaper(bool f);
-//#if defined(_MZ80A) || defined(_MZ80K) || defined(_MZ1200) || defined(_MZ700) || defined(_MZ800) || defined(_MZ1500) || \
-//     defined(_MZ80B) || defined(_MZ2000) || defined(_MZ2200)
-       void set_direct_load_from_mzt(bool f);
-//#endif       
-       void do_open_write_cmt(QString);
-       void do_open_read_cmt(int dummy, QString path);
-       void do_change_osd_cmt(QString tmpstr);
-
-       void do_push_play_tape(void);
-       void do_push_stop_tape(void);
-       void do_display_tape_play(bool flag);
-       void do_push_fast_forward_tape(void);
-       void do_push_rewind_tape(void);
-       void do_push_apss_forward_tape(void);
-       void do_push_apss_rewind_tape(void);
+       void set_wave_shaper(int drive, bool f);
+       void set_direct_load_from_mzt(int drive, bool f);
+       void do_open_write_cmt(int drive, QString);
+       void do_open_read_cmt(int drive, QString path);
+
+       void do_push_play_tape(int drive);
+       void do_push_stop_tape(int drive);
+       void do_push_fast_forward_tape(int drive);
+       void do_push_rewind_tape(int drive);
+       void do_push_apss_forward_tape(int drive);
+       void do_push_apss_rewind_tape(int drive);
        void set_cmt_sound(bool);
 
        int write_protect_fd(int drv, bool flag);
@@ -523,53 +624,85 @@ public slots:
        virtual int set_d88_slot(int drive, int num);
        virtual int set_recent_disk(int, int);
 
+       virtual void do_update_recent_hard_disk(int);
+       virtual void _open_hard_disk(int drv, const QString fname);
+       void eject_hard_disk(int drv);
+       virtual int set_recent_hard_disk(int, int);
        // Bubble Casette
        int write_protect_bubble(int drv, bool flag);
 
-       virtual int set_b77_slot(int drive, int num);
-       virtual void do_update_recent_bubble(int drv);
-       virtual int set_recent_bubble(int drv, int num);
-       void do_change_osd_bubble(int drv, QString tmpstr);
+       int set_b77_slot(int drive, int num);
+       void do_update_recent_bubble(int drv);
+       int set_recent_bubble(int drv, int num);
+       void _open_bubble(int drv, const QString fname);
+       void eject_bubble(int drv);
 
-       virtual void _open_bubble(int drv, const QString fname);
-       virtual void eject_bubble(int drv);
 
        void start_record_sound(bool rec);
        void set_freq(int);
        void set_latency(int);
        void set_sound_device(int);
+       void do_set_sound_strict_rendering(bool f);
+       void do_set_sound_play_tape(bool f);
+       
        void set_monitor_type(int);
        void message_status_bar(QString);
        void resize_statusbar(int w, int h);
        virtual void do_release_emu_resources(void);
        virtual void set_window_title();
        void set_device_type(int);
+       void set_mouse_type(int);
+       void set_keyboard_type(int);
+       void set_joystick_type(int);
        void set_drive_type(int);
        void set_scan_line(bool);
        void set_gl_scan_line_vert(bool);
        void set_gl_scan_line_horiz(bool);
-       void set_dipsw(int num, bool flag) {
-               if((num < 0) || (num >= 32)) return;
-               if(flag) {
-                       config.dipswitch = config.dipswitch | (1 << num);
-               } else {
-                       config.dipswitch = config.dipswitch & ~(1 << num);
-               }
-       }
-       bool get_dipsw(int num) {
-               if((num < 0) || (num >= 32)) return false;
-               if(((1 << num) & config.dipswitch) == 0) return false;
-               return true;
-       }
        void set_printer_device(int);
        void do_show_about(void);
        void do_browse_document(QString);
+       void set_dipsw(int num, bool flag);
+       bool get_dipsw(int num);
+
+       void do_set_sound_files_fdd(bool f);
+       void do_set_sound_files_relay(bool f);
+       void do_set_conslog(bool);
+       void do_set_syslog(bool);
+       void do_update_device_node_name(int id, const _TCHAR *name);    
+       void do_set_dev_log_to_console(int id, bool f);
+       void do_set_dev_log_to_syslog(int id, bool f);
+       void do_set_roma_kana(bool f);
+       void do_set_numpad_enter_as_fullkey(bool f);
+       void do_set_render_mode_std(void);
+       void do_set_render_mode_tv(void);
+       void do_select_render_platform(int num);
+       void do_set_window_focus_type(bool flag);
+
+       void do_set_visible_virtual_media_none();
+       void do_set_visible_virtual_media_upper();
+       void do_set_visible_virtual_media_lower();
+       void do_set_visible_virtual_media_left();
+       void do_set_visible_virtual_media_right();
+
+       void do_set_emulate_cursor_as(int num);
+       void do_set_logging_fdc(bool onoff);    
+       void do_set_separate_thread_draw(bool f);
+       void do_set_print_cpu_statistics(bool flag);
+       // ToDo: GUI
+       void do_set_state_log_to_record(bool f);
+       void do_set_state_log_to_console(bool f);
+       void do_set_state_log_to_syslog(bool f);
+
 signals:
        int message_changed(QString);
        int quit_emu_thread();
        int call_joy_thread(EMU *);
        int quit_joy_thread();
        int quit_draw_thread();
+       int quit_emulator_all();
+       int sig_quit_movie_thread();
+       int sig_stop_saving_movie(void);
+       int sig_start_saving_movie(void);
        int on_boot_mode(int);
        int on_cpu_type(int);
        int on_cpu_power(int);
@@ -577,13 +710,11 @@ signals:
        int on_insert_fd(int);
        int on_eject_fd(int);
        int do_open_disk(int, QString);
-       int do_recent_cmt(bool);
+       
        int closed(void);
        int sig_quit_all(void);
        int sig_vm_reset(void);
        int sig_vm_specialreset(void);
-       int sig_vm_loadstate(void);
-       int sig_vm_savestate(void);
        int sig_check_grab_mouse(bool);
        int sig_resize_uibar(int, int);
        int sig_resize_screen(int, int);
@@ -594,28 +725,32 @@ signals:
        int sig_emu_set_display_size(int, int, int, int);
        int sig_emu_update_volume_level(int, int);
        int sig_emu_update_volume_balance(int, int);
+
+       int sig_resize_osd(int);
        
        int sig_write_protect_disk(int drv, bool flag);
        int sig_open_disk(int, QString, int);
        int sig_close_disk(int);
-       int sig_play_tape(QString name);
-       int sig_rec_tape(QString name);
-       int sig_close_tape(void);
-       int sig_cmt_push_play(void);
-       int sig_cmt_push_stop(void);
-       int sig_cmt_push_fast_forward(void);
-       int sig_cmt_push_fast_rewind(void);
-       int sig_cmt_push_apss_forward(void);
-       int sig_cmt_push_apss_rewind(void);
+       int sig_open_hard_disk(int, QString);
+       int sig_close_hard_disk(int);
+       int sig_play_tape(int ,QString);
+       int sig_rec_tape(int, QString);
+       int sig_close_tape(int);
+       int sig_cmt_push_play(int);
+       int sig_cmt_push_stop(int);
+       int sig_cmt_push_fast_forward(int);
+       int sig_cmt_push_fast_rewind(int);
+       int sig_cmt_push_apss_forward(int);
+       int sig_cmt_push_apss_rewind(int);
        int sig_write_protect_quickdisk(int drv, bool flag);
        int sig_close_quickdisk(int drv);
        int sig_open_quickdisk(int drv, QString path);
        int sig_close_cart(int drv);
        int sig_open_cart(int drv, QString path);
-       int sig_open_cdrom(QString path);
-       int sig_close_cdrom(void);
-       int sig_close_laser_disk(void);
-       int sig_open_laser_disk(QString path);
+       int sig_open_cdrom(int drv, QString path);
+       int sig_close_cdrom(int drv);
+       int sig_close_laserdisc(int drv);
+       int sig_open_laserdisc(int drv, QString path);
        int sig_load_binary(int drv, QString path);
        int sig_save_binary(int drv, QString path);
        int sig_write_protect_bubble(int, bool);
@@ -624,7 +759,17 @@ signals:
        int sig_led_update(QRectF);
        int sig_start_auto_key(QString);
        int sig_stop_auto_key(void);
+       int sig_set_display_osd(bool);
+       int sig_display_osd_leds(int,bool);
+       int sig_set_led_width(int);
+       int sig_set_orientation_osd(int);
+       int sig_set_roma_kana(bool);
        int quit_debugger_thread(void);
+       int sig_quit_widgets(void);
+
+       int sig_load_state(QString);
+       int sig_save_state(QString);
+       
 };
 QT_END_NAMESPACE