OSDN Git Service

[Qt][MOVIE_SAVER] Update but still crashed on start to save :-(
[csp-qt/common_source_project-fm7.git] / source / src / qt / gui / menu_main.cpp
index 7d17ce0..47f9571 100644 (file)
 
 #include <QtCore/QVariant>
 #include <QtGui>
-#include "menuclasses.h"
-#include "emu.h"
+#include <QIcon>
+#include <QImage>
+#include <QImageReader>
+#include <QPixmap>
+
+#include "commonclasses.h"
+#include "display_about.h"
+#include "display_text_document.h"
+#include "mainwidget_base.h"
+//#include "menuclasses.h"
+#include "menu_disk.h"
+#include "menu_cmt.h"
+#include "menu_cart.h"
+#include "menu_quickdisk.h"
+#include "menu_binary.h"
+#include "menu_compactdisc.h"
+#include "menu_bubble.h"
+
+#include "qt_gldraw.h"
+//#include "emu.h"
 #include "qt_main.h"
+#include "menu_flags.h"
 
+extern EMU *emu;
+extern USING_FLAGS *using_flags;
 
-QT_BEGIN_NAMESPACE
+Ui_MainWindowBase::Ui_MainWindowBase(QWidget *parent) : QMainWindow(parent)
+{
+       setupUi();
+       createContextMenu();
+}
 
-Ui_MainWindow::Ui_MainWindow(QWidget *parent) : QMainWindow(parent)
+Ui_MainWindowBase::~Ui_MainWindowBase()
 {
-   setupUi();
-   createContextMenu();
+       delete using_flags;
+       graphicsView->releaseKeyboard();
 }
 
-Ui_MainWindow::~Ui_MainWindow()
+
+void Action_Control::do_check_grab_mouse(bool flag)
 {
+       this->toggle();
 }
 
-void Ui_MainWindow::setupUi(void)
+void Action_Control::do_send_string(void)
 {
-  
-   MainWindow = new QMainWindow();
-   if (MainWindow->objectName().isEmpty())
-            MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
-        MainWindow->resize(1288, 862);
+       emit sig_send_string(bindString);
+}
+
+void Action_Control::do_set_string(QString s)
+{
+       bindString = s;
+}
+
+
+void Ui_MainWindowBase::do_show_about(void)
+{
+       Dlg_AboutCSP *dlg = new Dlg_AboutCSP;
+       dlg->show();
+}
+
+void Ui_MainWindowBase::do_browse_document(QString fname)
+{
+       Dlg_BrowseText *dlg = new Dlg_BrowseText(fname);
+       dlg->show();
+}
+
+
+void Ui_MainWindowBase::setupUi(void)
+{
+       int w, h;
+       //   QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+       MainWindow = new QMainWindow();
+       if (MainWindow->objectName().isEmpty())
+               MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
+       //MainWindow->resize(1288, 862);
    
        ConfigControlMenu();
-        ConfigFloppyMenu();
-        ConfigCMTMenu();
-       ConfigSoundMenu();
+       ConfigFloppyMenu();
+       ConfigCMTMenu();
+       if(!using_flags->is_without_sound()) {
+               ConfigSoundMenu();
+       }
+       if(using_flags->is_use_binary_file()) {
+               ConfigBinaryMenu(); 
+       }
+       if(using_flags->is_use_qd()) {
+               ConfigQuickDiskMenu();
+       }
+       ConfigScreenMenu();
+       if(using_flags->is_use_cart()) {
+               ConfigCartMenu();
+       }
+       if(using_flags->is_use_compact_disc()) {
+               ConfigCDROMMenu();
+       }
+       if(using_flags->is_use_bubble()) {
+               ConfigBubbleMenu();
+       }
+       ConfigEmulatorMenu();   
+       actionAbout = new Action_Control(this);
+       actionAbout->setObjectName(QString::fromUtf8("actionAbout"));
+   
+       graphicsView = new GLDrawClass(this);
+       graphicsView->setObjectName(QString::fromUtf8("graphicsView"));
+       graphicsView->setMaximumSize(2560, 2560); // ?
+       graphicsView->setMinimumSize(240, 192); // ?
+       //graphicsView->grabKeyboard();
+       graphicsView->setAttribute(Qt::WA_InputMethodEnabled, false); // Disable [Zenkaku / Hankaku] with IM.
+       graphicsView->setAttribute(Qt::WA_KeyboardFocusChange, false); 
+       //graphicsView->setFocusPolicy(Qt::StrongFocus);
+       //this->setFocusPolicy(Qt::ClickFocus);
+   
+       bitmapImage = NULL;
+       MainWindow->setCentralWidget(graphicsView);
+       MainWindow->setFocusProxy(graphicsView);
+       
+       MainWindow->centralWidget()->adjustSize();
+       MainWindow->adjustSize();
 
-#if defined(USE_QD1) || defined(USE_QD2)
-        ConfigQuickDiskMenu();
-#endif
+       statusbar = new QStatusBar(this);
+       statusbar->setObjectName(QString::fromUtf8("statusbar"));
+       MainWindow->setStatusBar(statusbar);
+       initStatusBar();
+       
+       menubar = new QMenuBar(this);
+       menubar->setObjectName(QString::fromUtf8("menubar"));
+       menubar->setGeometry(QRect(0, 0, 1288, 27));
+       menuControl = new QMenu(menubar);
+       menuControl->setObjectName(QString::fromUtf8("menuControl"));
+       menuState = new QMenu(menuControl);
+       menuState->setObjectName(QString::fromUtf8("menuState"));
+       if(using_flags->is_use_auto_key()) {
+               menuCopy_Paste = new QMenu(menuControl);
+               menuCopy_Paste->setObjectName(QString::fromUtf8("menuCopy_Paste"));
+       }
+       menuCpu_Speed = new QMenu(menuControl);
+       menuCpu_Speed->setObjectName(QString::fromUtf8("menuCpu_Speed"));
+       menuDebugger = new QMenu(menuControl);
+       menuDebugger->setObjectName(QString::fromUtf8("menuDebugger"));
+       if(using_flags->is_use_fd()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_drive(); i++) CreateFloppyMenu(i, i + 1);
+       }
+       if(using_flags->is_use_qd()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_qd(); i++) CreateQuickDiskMenu(i, i + 1);
+       }
+       if(using_flags->is_use_tape()) {
+               CreateCMTMenu();
+       }
+       CreateScreenMenu();
+       if(using_flags->is_use_cart()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_cart(); i++) {
+                       CreateCartMenu(i, i + 1);
+               }
+       }
+       if(using_flags->is_use_binary_file()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_binary(); i++) {
+                       CreateBinaryMenu(i, i + 1);
+               }
+       }
+       if(using_flags->is_use_compact_disc()) {
+               CreateCDROMMenu();
+       }
+       if(using_flags->is_use_bubble()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_bubble(); i++) {
+                       CreateBubbleMenu(i, i + 1);
+               }
+       }
+       connect(this, SIGNAL(sig_update_screen(void)), graphicsView, SLOT(update(void)));
+       //connect(this, SIGNAL(sig_update_screen(void)), graphicsView, SLOT(updateGL(void)));
 
-       ConfigScreenMenu();
+       menuMachine = new QMenu(menubar);
+       menuMachine->setObjectName(QString::fromUtf8("menuMachine"));
+
+       if(using_flags->is_use_mouse()) {
+               actionMouseEnable = new Action_Control(this);
+               actionMouseEnable->setCheckable(true);
+               actionMouseEnable->setVisible(true);
+               actionMouseEnable->setChecked(false);
+               menuMachine->addAction(actionMouseEnable);
+               connect(actionMouseEnable, SIGNAL(toggled(bool)),
+                               this, SLOT(do_set_mouse_enable(bool)));
+               connect(graphicsView, SIGNAL(sig_check_grab_mouse(bool)),
+                               actionMouseEnable, SLOT(do_check_grab_mouse(bool)));
+       }
+
+       ConfigDeviceType();
+       ConfigDriveType();
+       ConfigSoundDeviceType();
+       ConfigPrinterType();
+
+       if(!using_flags->is_without_sound()) {
+               menuSound = new QMenu(menubar);
+               menuSound->setObjectName(QString::fromUtf8("menuSound"));
+       }
+       menuEmulator = new QMenu(menubar);
+       menuEmulator->setObjectName(QString::fromUtf8("menuEmulator"));
        
-        actionAbout = new Action_Control(this);
-        actionAbout->setObjectName(QString::fromUtf8("actionAbout"));
+       menuHELP = new QMenu(menubar);
+       menuHELP->setObjectName(QString::fromUtf8("menuHELP"));
+       MainWindow->setMenuBar(menubar);
 
-   
-        graphicsView = new GLDrawClass(this);
-        graphicsView->setObjectName(QString::fromUtf8("graphicsView"));
-        graphicsView->setGeometry(QRect(0, 0, 1280, 800));
-        MainWindow->setCentralWidget(graphicsView);
-       
-
-        statusbar = new QStatusBar(this);
-        statusbar->setObjectName(QString::fromUtf8("statusbar"));
-        MainWindow->setStatusBar(statusbar);
-        initStatusBar();
-       
-        menubar = new QMenuBar(this);
-        menubar->setObjectName(QString::fromUtf8("menubar"));
-        menubar->setGeometry(QRect(0, 0, 1288, 27));
-        menuControl = new QMenu(menubar);
-        menuControl->setObjectName(QString::fromUtf8("menuControl"));
-        menuState = new QMenu(menuControl);
-        menuState->setObjectName(QString::fromUtf8("menuState"));
-        menuCopy_Paste = new QMenu(menuControl);
-        menuCopy_Paste->setObjectName(QString::fromUtf8("menuCopy_Paste"));
-        menuCpu_Speed = new QMenu(menuControl);
-        menuCpu_Speed->setObjectName(QString::fromUtf8("menuCpu_Speed"));
-        menuDebugger = new QMenu(menuControl);
-        menuDebugger->setObjectName(QString::fromUtf8("menuDebugger"));
-#ifdef USE_FD1 
-       CreateFloppyMenu(0, 1);
-#endif
-#ifdef USE_FD2 
-       CreateFloppyMenu(1, 2);
-#endif
-#ifdef USE_FD3 
-       CreateFloppyMenu(2, 3);
-#endif
-#ifdef USE_FD4 
-       CreateFloppyMenu(3, 4);
-#endif
-#ifdef USE_FD5 
-       CreateFloppyMenu(4, 5);
-#endif
-#ifdef USE_FD6 
-       CreateFloppyMenu(5, 6);
-#endif
-#ifdef USE_FD7 
-       CreateFloppyMenu(6, 7);
-#endif
-#ifdef USE_FD8 
-       CreateFloppyMenu(7, 8);
-#endif
-
-#if defined(USE_QD1)
-        CreateQuickDiskMenu(0, 1);
-#endif
-#if defined(USE_QD2)
-        CreateQuickDiskMenu(1, 2);
-#endif
-#ifdef USE_TAPE
-        CreateCMTMenu();
-#endif
+       menubar->addAction(menuControl->menuAction());
+       connectActions_ControlMenu();
+       if(using_flags->is_use_fd()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_drive(); i++) {
+                       menubar->addAction(menu_fds[i]->menuAction());
+               }
+       }
+       if(using_flags->is_use_qd()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_qd(); i++) {
+                       menubar->addAction(menu_QDs[i]->menuAction());
+               }
+       }
+       if(using_flags->is_use_tape()) {
+               menubar->addAction(menu_CMT->menuAction());
+       }
+       if(using_flags->is_use_cart()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_cart(); i++) {
+                       menubar->addAction(menu_Cart[i]->menuAction());
+               }
+       }
+       if(using_flags->is_use_binary_file()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_binary(); i++) {
+                       menubar->addAction(menu_BINs[i]->menuAction());
+               }
+       }
+       if(using_flags->is_use_compact_disc()) {
+               menubar->addAction(menu_CDROM->menuAction());
+       }
+//     if(using_flags->is_use_laser_disc()) {
+//             menubar->addAction(menu_LaserDisc->menuAction());
+//     }
+       if(using_flags->is_use_bubble()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_bubble(); i++) {
+                       menubar->addAction(menu_bubbles[i]->menuAction());
+               }
+       }
+       menubar->addAction(menuMachine->menuAction());
+       if(!using_flags->is_without_sound()) {
+               menubar->addAction(menuSound->menuAction());
+       }
 
-       CreateScreenMenu();
+       menubar->addAction(menuScreen->menuAction());
+//     menubar->addAction(menuRecord->menuAction());
+       menubar->addAction(menuEmulator->menuAction());
+       menubar->addAction(menuHELP->menuAction());
+       if(using_flags->is_use_qd()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_qd(); i++) {
+                       CreateQuickDiskPulldownMenu(i);
+               }
+       }
+       if(using_flags->is_use_binary_file()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_binary(); i++) {
+                       CreateBinaryPulldownMenu(1);
+               }
+       }
+       if(!using_flags->is_without_sound()) {
+               CreateSoundMenu();
+       }
+       CreateEmulatorMenu();
+  
+       menuHELP->addAction(actionAbout);
+       connect(actionAbout, SIGNAL(triggered()), this, SLOT(do_show_about()));
+       menuHELP->addSeparator();
        
-        menuMachine = new QMenu(menubar);
-        menuMachine->setObjectName(QString::fromUtf8("menuMachine"));
+       actionHelp_AboutQt = new Action_Control(this);
+       actionHelp_AboutQt->setObjectName(QString::fromUtf8("menuHelp_AboutQt"));
+       menuHELP->addAction(actionHelp_AboutQt);
+       menuHELP->addSeparator();
+       menuHelp_Readme = new QMenu(menuHELP);
+       menuHelp_Readme->setObjectName(QString::fromUtf8("menuHelp_Readme_menu"));;
+       menuHELP->addAction(menuHelp_Readme->menuAction());
 
-       menuSound = new QMenu(menubar);
-       menuSound->setObjectName(QString::fromUtf8("menuSound"));
+       actionHelp_README = new Action_Control(this);
+       actionHelp_README->setObjectName(QString::fromUtf8("menuHelp_README"));
+       actionHelp_README->do_set_string(QString::fromUtf8("readme.txt"));
+       connect(actionHelp_README, SIGNAL(triggered()), actionHelp_README, SLOT(do_send_string()));
+       connect(actionHelp_README, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHelp_Readme->addAction(actionHelp_README);
+       
+       actionHelp_README_QT = new Action_Control(this);
+       actionHelp_README_QT->setObjectName(QString::fromUtf8("menuHelp_README_QT"));
+       actionHelp_README_QT->do_set_string(QString::fromUtf8("readme.qt.txt"));
+       menuHelp_Readme->addAction(actionHelp_README_QT);
+       connect(actionHelp_README_QT, SIGNAL(triggered()), actionHelp_README_QT, SLOT(do_send_string()));
+       connect(actionHelp_README_QT, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       actionHelp_README_Artane = new Action_Control(this);
+       actionHelp_README_Artane->setObjectName(QString::fromUtf8("menuHelp_README_Artane"));
+       actionHelp_README_Artane->do_set_string(QString::fromUtf8("readme_by_artane.txt"));
+       connect(actionHelp_README_Artane, SIGNAL(triggered()), actionHelp_README_Artane, SLOT(do_send_string()));
+       connect(actionHelp_README_Artane, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHelp_Readme->addAction(actionHelp_README_Artane);
+       menuHelp_Readme->addSeparator();
+       
+       actionHelp_README_BIOS = new Action_Control(this);
+       actionHelp_README_BIOS->setObjectName(QString::fromUtf8("menuHelp_README_BIOS"));
+       actionHelp_README_BIOS->do_set_string(QString::fromUtf8("bios_and_keys.txt"));
+       connect(actionHelp_README_BIOS, SIGNAL(triggered()), actionHelp_README_BIOS, SLOT(do_send_string()));
+       connect(actionHelp_README_BIOS, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHelp_Readme->addAction(actionHelp_README_BIOS);
+       menuHelp_Readme->addSeparator();
+       
+       actionHelp_README_MR_TANAM = new Action_Control(this);
+       actionHelp_README_MR_TANAM->setObjectName(QString::fromUtf8("menuHelp_README_MR_TANAM"));
+       actionHelp_README_MR_TANAM->do_set_string(QString::fromUtf8("readme_by_mr_tanam.txt"));
+       connect(actionHelp_README_MR_TANAM, SIGNAL(triggered()), actionHelp_README_MR_TANAM, SLOT(do_send_string()));
+       connect(actionHelp_README_MR_TANAM, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHelp_Readme->addAction(actionHelp_README_MR_TANAM);
+       
+       menuHelp_Readme->addSeparator();
+       
+       actionHelp_README_FAQ = new Action_Control(this);
+       actionHelp_README_FAQ->setObjectName(QString::fromUtf8("menuHelp_README_FAQ"));
+       actionHelp_README_FAQ->do_set_string(QString::fromUtf8("FAQ.html"));
+       connect(actionHelp_README_FAQ, SIGNAL(triggered()), actionHelp_README_FAQ, SLOT(do_send_string()));
+       connect(actionHelp_README_FAQ, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHelp_Readme->addAction(actionHelp_README_FAQ);
 
-        menuEmulator = new QMenu(menubar);
-        menuEmulator->setObjectName(QString::fromUtf8("menuEmulator"));
-        menuHELP = new QMenu(menubar);
-        menuHELP->setObjectName(QString::fromUtf8("menuHELP"));
-        MainWindow->setMenuBar(menubar);
+       actionHelp_README_FAQ_JP = new Action_Control(this);
+       actionHelp_README_FAQ_JP->setObjectName(QString::fromUtf8("menuHelp_README_FAQ_JP"));
+       actionHelp_README_FAQ_JP->do_set_string(QString::fromUtf8("FAQ.ja.html"));
+       connect(actionHelp_README_FAQ_JP, SIGNAL(triggered()), actionHelp_README_FAQ_JP, SLOT(do_send_string()));
+       connect(actionHelp_README_FAQ_JP, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHelp_Readme->addAction(actionHelp_README_FAQ_JP);
+       menuHelp_Readme->addSeparator();
+       
+       actionHelp_README_FM7 = new Action_Control(this);
+       actionHelp_README_FM7->setObjectName(QString::fromUtf8("menuHelp_README_FM7"));
+       actionHelp_README_FM7->do_set_string(QString::fromUtf8("readme_fm7.txt"));
+       connect(actionHelp_README_FM7, SIGNAL(triggered()), actionHelp_README_FM7, SLOT(do_send_string()));
+       connect(actionHelp_README_FM7, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHelp_Readme->addAction(actionHelp_README_FM7);
+       
+       actionHelp_README_FM7_JP = new Action_Control(this);
+       actionHelp_README_FM7_JP->setObjectName(QString::fromUtf8("menuHelp_README_FM7_JP"));
+       actionHelp_README_FM7_JP->do_set_string(QString::fromUtf8("readme_fm7.jp.txt"));
+       connect(actionHelp_README_FM7_JP, SIGNAL(triggered()), actionHelp_README_FM7_JP, SLOT(do_send_string()));
+       connect(actionHelp_README_FM7_JP, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHelp_Readme->addAction(actionHelp_README_FM7_JP);
 
+       menuHelp_Histories = new QMenu(menuHELP);
+       menuHelp_Histories->setObjectName(QString::fromUtf8("menuHelp_Histories"));;
+       menuHELP->addAction(menuHelp_Histories->menuAction());
+
+       actionHelp_History = new Action_Control(this);
+       actionHelp_History->setObjectName(QString::fromUtf8("menuHelp_History"));
+       actionHelp_History->do_set_string(QString::fromUtf8("history.txt"));
+       connect(actionHelp_History, SIGNAL(triggered()), actionHelp_History, SLOT(do_send_string()));
+       connect(actionHelp_History, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHelp_Histories->addAction(actionHelp_History);
        
-        menubar->addAction(menuControl->menuAction());
-       connectActions_ControlMenu();
-#if defined(USE_FD1)
-        menubar->addAction(menuFD[0]->menuAction());
-#endif
-#if defined(USE_FD2)
-        menubar->addAction(menuFD[1]->menuAction());
-#endif
-#if defined(USE_FD3)
-        menubar->addAction(menuFD[2]->menuAction());
-#endif
-#if defined(USE_FD4)
-        menubar->addAction(menuFD[3]->menuAction());
-#endif
-#if defined(USE_FD5)
-        menubar->addAction(menuFD[4]->menuAction());
-#endif
-#if defined(USE_FD6)
-        menubar->addAction(menuFD[5]->menuAction());
-#endif
-#if defined(USE_FD7)
-        menubar->addAction(menuFD[6]->menuAction());
-#endif
-#if defined(USE_FD8)
-        menubar->addAction(menuFD[7]->menuAction());
-#endif
-#if defined(USE_QD1)
-       menubar->addAction(menuQD[0]->menuAction());
-#endif
-#if defined(USE_QD2)
-       menubar->addAction(menuQD[1]->menuAction());
-#endif
-#if defined(USE_TAPE)
-        menubar->addAction(menuCMT->menuAction());
-#endif
-        menubar->addAction(menuMachine->menuAction());
-       
-        menubar->addAction(menuSound->menuAction());
-        menubar->addAction(menuScreen->menuAction());
-//        menubar->addAction(menuRecord->menuAction());
-        menubar->addAction(menuEmulator->menuAction());
-        menubar->addAction(menuHELP->menuAction());
-#if defined(USE_FD1)
-        CreateFloppyPulldownMenu(0);
-#endif
-#if defined(USE_FD2)
-        CreateFloppyPulldownMenu(1);
-#endif
-#if defined(USE_FD3)
-        CreateFloppyPulldownMenu(2);
-#endif
-#if defined(USE_FD4)
-        CreateFloppyPulldownMenu(3);
-#endif
-#if defined(USE_FD5)
-        CreateFloppyPulldownMenu(4);
-#endif
-#if defined(USE_FD6)
-        CreateFloppyPulldownMenu(5);
-#endif
-#if defined(USE_FD7)
-        CreateFloppyPulldownMenu(6);
-#endif
-#if defined(USE_FD8)
-        CreateFloppyPulldownMenu(7);
-#endif
-#ifdef USE_TAPE
-        CreateCMTPulldownMenu();
-#endif
-#if defined(USE_QD1)
-        CreateQuickDiskPulldownMenu(0);
-#endif
-#if defined(USE_QD2)
-        CreateQuickDiskPulldownMenu(1);
-#endif
-
-       CreateSoundMenu();
+       actionHelp_History_Relnote = new Action_Control(this);
+       actionHelp_History_Relnote->setObjectName(QString::fromUtf8("menuHelp_History_Relnote"));
+       actionHelp_History_Relnote->do_set_string(QString::fromUtf8("RELEASENOTE.txt"));
+       connect(actionHelp_History_Relnote, SIGNAL(triggered()), actionHelp_History_Relnote, SLOT(do_send_string()));
+       connect(actionHelp_History_Relnote, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHelp_Histories->addAction(actionHelp_History_Relnote);
        
-       menuHELP->addAction(actionAbout);
-        menuHELP->addSeparator();
+       actionHelp_History_ChangeLog = new Action_Control(this);
+       actionHelp_History_ChangeLog->setObjectName(QString::fromUtf8("menuHelp_History_ChangeLog"));
+       actionHelp_History_ChangeLog->do_set_string(QString::fromUtf8("ChangeLog.txt"));
+       connect(actionHelp_History_ChangeLog, SIGNAL(triggered()), actionHelp_History_ChangeLog, SLOT(do_send_string()));
+       connect(actionHelp_History_ChangeLog, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHelp_Histories->addAction(actionHelp_History_ChangeLog);
 
-//        retranslateUi();
-        QObject::connect(actionCRT_Filter, SIGNAL(toggled(bool)), actionCRT_Filter, SLOT(setChecked(bool)));
-        QObject::connect(actionExit_Emulator, SIGNAL(destroyed()), MainWindow, SLOT(close()));
+       actionHelp_History_MR_TANAM = new Action_Control(this);
+       actionHelp_History_MR_TANAM->setObjectName(QString::fromUtf8("menuHelp_History_MR_TANAM"));
+       actionHelp_History_MR_TANAM->do_set_string(QString::fromUtf8("history_by_mr_tanam.txt"));
+       connect(actionHelp_History_MR_TANAM, SIGNAL(triggered()), actionHelp_History_MR_TANAM, SLOT(do_send_string()));
+       connect(actionHelp_History_MR_TANAM, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHelp_Histories->addAction(actionHelp_History_MR_TANAM);
+       
+       actionHelp_License = new Action_Control(this);
+       actionHelp_License->setObjectName(QString::fromUtf8("menuHelp_License"));
+       actionHelp_License->do_set_string(QString::fromUtf8("LICENSE.txt"));
+       connect(actionHelp_License, SIGNAL(triggered()), actionHelp_License, SLOT(do_send_string()));
+       connect(actionHelp_License, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHELP->addAction(actionHelp_License);
+       
+       actionHelp_License_JP = new Action_Control(this);
+       actionHelp_License_JP->setObjectName(QString::fromUtf8("menuHelp_License_JP"));
+       actionHelp_License_JP->do_set_string(QString::fromUtf8("LICENSE.ja.txt"));
+       connect(actionHelp_License_JP, SIGNAL(triggered()), actionHelp_License_JP, SLOT(do_send_string()));
+       connect(actionHelp_License_JP, SIGNAL(sig_send_string(QString)), this, SLOT(do_browse_document(QString)));
+       menuHELP->addAction(actionHelp_License_JP);
+       
+       if(config.window_mode <= 0) config.window_mode = 0;
+       if(config.window_mode >= using_flags->get_screen_mode_num()) config.window_mode = using_flags->get_screen_mode_num() - 1;
+       w = using_flags->get_screen_width();
+       h = using_flags->get_screen_height();
+       if(actionScreenSize[config.window_mode] != NULL) {
+               double nd = actionScreenSize[config.window_mode]->binds->getDoubleValue();
+               w = (int)(nd * (double)w);
+               h = (int)(nd * (double)h);
+               if(using_flags->is_use_screen_rotate()) {
+                       if(config.rotate_type) {
+                               int tmp_w = w;
+                               w = h;
+                               h = tmp_w;
+                       }
+               }
+       } else {
+               if(using_flags->is_use_screen_rotate()) {
+                       if(config.rotate_type) {
+                               w = 600;
+                               h = 960;
+                       } else {                   
+                               w = 1280;
+                               h = 800;
+                       }
+               } else {
+                       w = 1280;
+                       h = 800;
+               }
+       }
+       graphicsView->setFixedSize(w, h);
+       for(int i = 0; i < using_flags->get_screen_mode_num(); i++) {
+               if(actionScreenSize[i] != NULL) {
+                       connect(actionScreenSize[i]->binds, SIGNAL(sig_screen_multiply(float)),
+                               graphicsView, SLOT(do_set_screen_multiply(float)));
+               }
+       }
+       this->set_screen_size(w, h);
+       this->set_screen_aspect(config.window_stretch_type);
+       if(actionScreenSize[config.window_mode] != NULL) {
+               double nd = actionScreenSize[config.window_mode]->binds->getDoubleValue();
+               graphicsView->do_set_screen_multiply(nd);
+       }
+       if(using_flags->is_use_joystick()) {
+               connect(action_SetupJoystick, SIGNAL(triggered()), this, SLOT(rise_joystick_dialog()));
+       }
+       connect(action_SetupKeyboard, SIGNAL(triggered()), this, SLOT(rise_keyboard_dialog()));
+          
+       QImageReader reader(":/default.ico");
+       QImage result = reader.read();
 
+       MainWindow->setWindowIcon(QPixmap::fromImage(result));
+       this->set_window_title();
+//     QIcon WindowIcon;
+       InsertIcon = QApplication::style()->standardIcon(QStyle::SP_FileDialogStart);
+       EjectIcon  = QIcon(":/icon_eject.png");
+       StopIcon = QIcon(":/icon_process_stop.png");
+       RecordSoundIcon = QIcon(":/icon_record_to_wav.png");
+       ResetIcon = QApplication::style()->standardIcon(QStyle::SP_BrowserReload);
 
-       QObject::connect(this, SIGNAL(destroyed()), this, SLOT(on_actionExit_triggered()));
-       QObject::connect(this, SIGNAL(closed()), this, SLOT(on_actionExit_triggered()));
-       QObject::connect(MainWindow, SIGNAL(destroyed()), this, SLOT(on_actionExit_triggered()));
-        QMetaObject::connectSlotsByName(MainWindow);
+       VolumeMutedIcon = QIcon(":/icon_volume_muted.png");
+       VolumeLowIcon = QIcon(":/icon_volume_low.png");
+       VolumeMidIcon = QIcon(":/icon_volume_mid.png");
+       VolumeHighIcon = QIcon(":/icon_volume_high.png");
+       
+       ExitIcon = QIcon(":/icon_exit.png");
+
+       QMetaObject::connectSlotsByName(MainWindow);
 } // setupUi
 
+// Emulator
+#include "dropdown_joystick.h"
+#include "dialog_set_key.h"
+
+void Ui_MainWindowBase::retranslateEmulatorMenu(void)
+{
+       int i;
+       menuEmulator->setTitle(QApplication::translate("MainWindow", "Emulator", 0));
+       if(using_flags->is_use_joystick()) {
+               action_SetupJoystick->setText(QApplication::translate("MainWindow", "Configure Joysticks", 0));
+               action_SetupJoystick->setIcon(QIcon(":/icon_gamepad.png"));
+       }
+       action_SetupKeyboard->setText(QApplication::translate("MainWindow", "Configure Keyboard", 0));
+       action_SetupKeyboard->setIcon(QIcon(":/icon_keyboard.png"));
+       for(int i = 0; i < (CSP_MAINWIDGET_SAVE_MOVIE_END - 1); i++) {
+               switch(i + 1) {
+                       case CSP_MAINWIDGET_SAVE_MOVIE_15FPS:
+                               action_SaveAsMovie[i]->setText(QApplication::translate("MainWindow", "15fps", 0));
+                               break;
+                       case CSP_MAINWIDGET_SAVE_MOVIE_24FPS:
+                               action_SaveAsMovie[i]->setText(QApplication::translate("MainWindow", "24fps", 0));
+                               break;
+                       case CSP_MAINWIDGET_SAVE_MOVIE_30FPS:
+                               action_SaveAsMovie[i]->setText(QApplication::translate("MainWindow", "30fps", 0));
+                               break;
+                       case CSP_MAINWIDGET_SAVE_MOVIE_60FPS:
+                               action_SaveAsMovie[i]->setText(QApplication::translate("MainWindow", "60fps", 0));
+                               break;
+               }
+       }
+       action_StopSavingMovie->setText(QApplication::translate("MainWindow", "Stop Recording", 0));
+       action_StopSavingMovie->setIcon(QIcon(":/icon_process_stop.png"));
+       menuSaveAsMovie->setTitle(QApplication::translate("MainWindow", "Record to Movie", 0));
+}
+
+void Ui_MainWindowBase::CreateEmulatorMenu(void)
+{
+       if(using_flags->is_use_joystick()) {
+               menuEmulator->addAction(action_SetupJoystick);
+       }
+       menuEmulator->addAction(action_SetupKeyboard);
+       menuEmulator->addAction(menuSaveAsMovie->menuAction());
+}
+
+void Ui_MainWindowBase::ConfigEmulatorMenu(void)
+{
+       int i;
+       QString tmps;
+       if(using_flags->is_use_joystick()) {
+               action_SetupJoystick = new Action_Control(this);
+       }
+       action_SetupKeyboard = new Action_Control(this);
+
+       menuSaveAsMovie = new QMenu(this);
+       actionGroup_SaveAsMovie = new QActionGroup(this);
+       for(int i = 0; i < (CSP_MAINWIDGET_SAVE_MOVIE_END - 1); i++) {
+               action_SaveAsMovie[i] = new Action_Control(menuSaveAsMovie);
+               switch(i + 1) {
+                       case CSP_MAINWIDGET_SAVE_MOVIE_15FPS:
+                               tmps.setNum(15);
+                               action_SaveAsMovie[i]->binds->setNumber(15);
+                               break;
+                       case CSP_MAINWIDGET_SAVE_MOVIE_24FPS:
+                               tmps.setNum(24);
+                               action_SaveAsMovie[i]->binds->setNumber(24);
+                               break;
+                       case CSP_MAINWIDGET_SAVE_MOVIE_30FPS:
+                               tmps.setNum(30);
+                               action_SaveAsMovie[i]->binds->setNumber(30);
+                               break;
+                       case CSP_MAINWIDGET_SAVE_MOVIE_60FPS:
+                               tmps.setNum(60);
+                               action_SaveAsMovie[i]->binds->setNumber(60);
+                               break;
+               }
+               tmps = QString::fromUtf8("action_SaveAsMovie") + tmps;
+               action_SaveAsMovie[i]->setObjectName(tmps);
+               actionGroup_SaveAsMovie->addAction(action_SaveAsMovie[i]);
+               menuSaveAsMovie->addAction(action_SaveAsMovie[i]);
+       }
+       action_StopSavingMovie = new Action_Control(menuSaveAsMovie);
+       action_StopSavingMovie->setObjectName(QString::fromUtf8("actionStopRecordingMovie"));
+       action_StopSavingMovie->binds->setNumber(0);
+       actionGroup_SaveAsMovie->addAction(action_StopSavingMovie);
+       menuSaveAsMovie->addAction(action_StopSavingMovie);
+  
+}
+
+void Ui_MainWindowBase::rise_joystick_dialog(void)
+{
+       if(graphicsView != NULL) {
+               QStringList *lst = graphicsView->getVKNames();
+               CSP_DropDownJoysticks *dlg = new CSP_DropDownJoysticks(NULL, lst);
+               dlg->setWindowTitle(QApplication::translate("CSP_DropDownJoysticks", "Configure Joysticks", 0));
+               dlg->show();
+       }
+}
+
+void Ui_MainWindowBase::rise_keyboard_dialog(void)
+{
+       if(graphicsView != NULL) {
+               CSP_KeySetDialog *dlg = new CSP_KeySetDialog(NULL, graphicsView);
+               dlg->setWindowTitle(QApplication::translate("KeySetDialog", "Configure Keyboard", 0));
+               dlg->show();
+       }
+}
+// Retranslate
+void Ui_MainWindowBase::retranslateUI_Help(void)
+{
+       menuHELP->setTitle(QApplication::translate("MainWindow", "Help", 0));
+       actionHelp_AboutQt->setText(QApplication::translate("MainWindow", "About Qt", 0));
+       actionHelp_AboutQt->setIcon(QApplication::style()->standardIcon(QStyle::SP_TitleBarMenuButton));
+       
+       actionAbout->setText(QApplication::translate("MainWindow", "About...", 0));
+       actionAbout->setIcon(QApplication::style()->standardIcon(QStyle::SP_MessageBoxQuestion));
+
+       menuHelp_Readme->setTitle(QApplication::translate("MainWindow", "READMEs", 0));
+       
+       actionHelp_README->setText(QApplication::translate("MainWindow", "General Document", 0));
+       actionHelp_README_QT->setText(QApplication::translate("MainWindow", "About Qt ports", 0));
+       actionHelp_README_Artane->setText(QApplication::translate("MainWindow", "About Qt ports (Japanese).", 0));
+       actionHelp_README_MR_TANAM->setText(QApplication::translate("MainWindow", "By Mr. tanam", 0));
+       actionHelp_README_FM7->setText(QApplication::translate("MainWindow", "About eFM-7/8/77/AV.", 0));
+       actionHelp_README_FM7_JP->setText(QApplication::translate("MainWindow", "About eFM-7/8/77/AV (Japanese).", 0));
+       actionHelp_README_FAQ->setText(QApplication::translate("MainWindow", "FAQs(English)", 0));
+       actionHelp_README_FAQ_JP->setText(QApplication::translate("MainWindow", "FAQs(Japanese)", 0));
+       actionHelp_README_BIOS->setText(QApplication::translate("MainWindow", "BIOS and Key assigns", 0));
+
+       menuHelp_Histories->setTitle(QApplication::translate("MainWindow", "Histories", 0));
+       actionHelp_History->setText(QApplication::translate("MainWindow", "General History", 0));
+       actionHelp_History_Relnote->setText(QApplication::translate("MainWindow", "Release Note", 0));
+       actionHelp_History_ChangeLog->setText(QApplication::translate("MainWindow", "Change Log", 0));
+       actionHelp_History_MR_TANAM->setText(QApplication::translate("MainWindow", "History by Tanam", 0));
+
+       actionHelp_License->setText(QApplication::translate("MainWindow", "Show License", 0));
+       actionHelp_License_JP->setText(QApplication::translate("MainWindow", "Show License (Japanese)", 0));
+       
+}
 
 // You can Override this function: Re-define on foo/MainWindow.cpp.
 // This code is example: by X1(TurboZ).
-void Ui_MainWindow::retranslateUi(void)
-{
-  retranslateControlMenu("NMI Reset",  true);
-  retranslateFloppyMenu(0, 0);
-  retranslateFloppyMenu(1, 1);
-  retranslateCMTMenu();
-  retranslateSoundMenu();
-  retranslateScreenMenu();
+void Ui_MainWindowBase::retranslateMachineMenu(void)
+{
+       int i;
+       QString tmps;
+       QString tmps2;
+       menuMachine->setTitle(QApplication::translate("MainWindow", "Machine", 0));
+       if(using_flags->get_use_device_type() > 0) {
+               menuDeviceType->setTitle(QApplication::translate("MainWindow", "Device Type", 0));
+               for(i = 0; i < using_flags->get_use_device_type(); i++) {
+                       tmps2.setNum(i + 1);
+                       tmps = QString::fromUtf8("Machine Device ") + tmps2;
+                       actionDeviceType[i]->setText(tmps); 
+               }
+       }
+       if(using_flags->get_use_sound_device_type() > 0) {
+               menuSoundDevice->setTitle(QApplication::translate("MainWindow", "Sound Cards", 0));
+               for(i = 0; i < using_flags->get_use_sound_device_type(); i++) {
+                       tmps2.setNum(i + 1);
+                       tmps = QString::fromUtf8("Sound Device ") + tmps2;
+                       actionSoundDevice[i]->setText(tmps); 
+               }
+       }
+       if(using_flags->get_use_drive_type() > 0) {
+               menuDriveType->setTitle(QApplication::translate("MainWindow", "Drive Type", 0));
+               for(i = 0; i < using_flags->get_use_drive_type(); i++) {
+                       tmps2.setNum(i + 1);
+                       tmps = QString::fromUtf8("Drive Type ") + tmps2;
+                       actionDriveType[i]->setText(tmps); 
+               }
+       }
+       if(using_flags->is_use_printer()) {
+               menuPrintDevice->setTitle(QApplication::translate("MainWindow", "Printer (Need RESET)", 0));
+               i = 1;
+               actionPrintDevice[0]->setText(QApplication::translate("MainWindow", "Dump to File", 0));
+               if(using_flags->get_use_printer_type() > 0) {
+                       for(i = 1; i < (using_flags->get_use_printer_type() - 1); i++) {
+                               tmps2.setNum(i + 1);
+                               tmps = QApplication::translate("MainWindow", "Printer", 0) + tmps2;
+                               actionPrintDevice[i]->setText(tmps); 
+                       }
+               }
+               actionPrintDevice[i]->setText(QApplication::translate("MainWindow", "Not Connect", 0));
+       }
+}
+void Ui_MainWindowBase::retranslateUi(void)
+{
+       retranslateControlMenu("NMI Reset",  true);
+       retranslateFloppyMenu(0, 0);
+       retranslateFloppyMenu(1, 1);
+       retranslateCMTMenu();
+       if(!using_flags->is_without_sound()) {
+               retranslateSoundMenu();
+       }
+       retranslateScreenMenu();
+       retranslateCartMenu(0, 1);
+       retranslateCartMenu(1, 2);
+       retranslateCDROMMenu();
+       
+       retranslateBinaryMenu(0, 1);
+       retranslateBinaryMenu(1, 2);
+
+       retranslateBubbleMenu(0, 1);
+       retranslateBubbleMenu(1, 2);
+       retranslateMachineMenu();
+       retranslateEmulatorMenu();
+       retranslateUI_Help();
    
-  this->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
-  
-  
-  actionAbout->setText(QApplication::translate("MainWindow", "About...", 0, QApplication::UnicodeUTF8));
-  
+} // retranslateUi
 
+void Ui_MainWindowBase::setCoreApplication(QApplication *p)
+{
+       this->CoreApplication = p;
+       connect(actionExit_Emulator, SIGNAL(triggered()),
+                       this->CoreApplication, SLOT(closeAllWindows())); // OnGuiExit()?  
+       connect(actionHelp_AboutQt, SIGNAL(triggered()),
+                       this->CoreApplication, SLOT(aboutQt()));
        
-   menuEmulator->setTitle(QApplication::translate("MainWindow", "Emulator", 0, QApplication::UnicodeUTF8));
-   menuMachine->setTitle(QApplication::translate("MainWindow", "Machine", 0, QApplication::UnicodeUTF8));
-  
-   menuHELP->setTitle(QApplication::translate("MainWindow", "HELP", 0, QApplication::UnicodeUTF8));
-} // retranslateUi
+}
+
+#include <string>
+// Move from common/qt_main.cpp
+// menu
+extern std::string cpp_homedir;
+extern std::string cpp_confdir;
+extern std::string my_procname;
+extern bool now_menuloop;
+// timing control
+
+// screen
+extern unsigned int desktop_width;
+extern unsigned int desktop_height;
+//int desktop_bpp;
+extern int prev_window_mode;
+extern bool now_fullscreen;
+extern int window_mode_count;
+
+void Ui_MainWindowBase::set_window(int mode)
+{
+       //      static LONG style = WS_VISIBLE;
+}
+
+void Ui_MainWindowBase::do_emu_update_volume_level(int num, int level)
+{
+       emit sig_emu_update_volume_level(num, level);
+}
+
+void Ui_MainWindowBase::do_emu_update_volume_balance(int num, int level)
+{
+       emit sig_emu_update_volume_balance(num, level);
+}
+
+void Ui_MainWindowBase::do_emu_update_config(void)
+{
+       emit sig_emu_update_config();
+}
+
+void Ui_MainWindowBase::doChangeMessage_EmuThread(QString message)
+{
+      emit message_changed(message);
+}
+
+
+
+void Ui_MainWindowBase::StopEmuThread(void)
+{
+       emit quit_emu_thread();
+}
+
+void Ui_MainWindowBase::delete_emu_thread(void)
+{
+       //do_release_emu_resources();
+       emit sig_quit_all();
+}  
+// Utility
+#include <QTextCodec>
+#include <QString>
+#include <QByteArray>
+
+void Convert_CP932_to_UTF8(char *dst, char *src, int n_limit, int i_limit)
+{
+       QTextCodec *srcCodec = QTextCodec::codecForName( "SJIS" );
+       QTextCodec *dstCodec = QTextCodec::codecForName( "UTF-8" );
+       QString dst_b;
+       QByteArray dst_s;
+       if(src == NULL) {
+               if(dst != NULL) dst[0] = '\0';
+               return;
+       }
+       if(dst == NULL) return;
+       dst_b = srcCodec->toUnicode(src, strlen(src));
+       dst_s = dstCodec->fromUnicode(dst_b);
+       if(n_limit > 0) {
+               memset(dst, 0x00, n_limit);
+               strncpy(dst, dst_s.constData(), n_limit - 1);
+       }
+}
 
-QT_END_NAMESPACE
+void Ui_MainWindowBase::set_window_title()
+{
+       QString tmps;
+       tmps = QString::fromUtf8("emu");
+       tmps = tmps + using_flags->get_config_name();
+       tmps = tmps + QString::fromUtf8(" (");
+       tmps = tmps + using_flags->get_device_name();
+       tmps = tmps + QString::fromUtf8(")");
+       MainWindow->setWindowTitle(tmps);
+}
+
+void Ui_MainWindowBase::do_set_window_title(QString s)
+{
+       QString tmps;
+       tmps = QString::fromUtf8("emu");
+       tmps = tmps + using_flags->get_config_name();
+       tmps = tmps + QString::fromUtf8(" (");
+       if(!s.isEmpty()) {
+               tmps = tmps + s;
+       }
+       tmps = tmps + QString::fromUtf8(")");
+       MainWindow->setWindowTitle(tmps);
+}
+
+void Ui_MainWindowBase::do_set_mouse_enable(bool flag)
+{
+}
+
+void Ui_MainWindowBase::do_toggle_mouse(void)
+{
+}
+
+void Ui_MainWindowBase::LaunchEmuThread(void)
+{
+}
+
+void Ui_MainWindowBase::LaunchJoyThread(void)
+{
+}
+
+void Ui_MainWindowBase::StopJoyThread(void)
+{
+}
+
+void Ui_MainWindowBase::delete_joy_thread(void)
+{
+}
+
+void Ui_MainWindowBase::on_actionExit_triggered()
+{
+       OnMainWindowClosed();
+}
+
+void Ui_MainWindowBase::OnWindowMove(void)
+{
+}
+
+void Ui_MainWindowBase::OnWindowResize(void)
+{
+       if(emu) {
+               set_window(config.window_mode);
+       }
+}
+
+void Ui_MainWindowBase::OnWindowRedraw(void)
+{
+}
+
+bool Ui_MainWindowBase::GetPowerState(void)
+{
+       return true;
+}
+
+void Ui_MainWindowBase::OnMainWindowClosed(void)
+{
+}
+
+
+void Ui_MainWindowBase::do_release_emu_resources(void)
+{
+}
+
+void Ui_MainWindowBase::OnOpenDebugger(int no)
+{
+}
+
+void Ui_MainWindowBase::OnCloseDebugger(void )
+{
+}