OSDN Git Service

[UI][Qt] Fix unconnected event.
[csp-qt/common_source_project-fm7.git] / source / src / qt / gui / menu_control.cpp
index d245075..d0be80c 100644 (file)
@@ -5,12 +5,14 @@
  */
 
 #include <QString>
-//#include "menuclasses.h"
+#include <QMenu>
+#include <QStyle>
+
 #include "commonclasses.h"
 #include "mainwidget_base.h"
 #include "menu_flags.h"
 
-extern USING_FLAGS *using_flags;
+//extern USING_FLAGS *using_flags;
 
 void Object_Menu_Control::set_boot_mode(void) {
        emit on_boot_mode(bindValue);
@@ -39,9 +41,19 @@ void Object_Menu_Control::do_set_drive_type(void)
        emit sig_drive_type(getValue1());
 }
 
+void Action_Control::do_load_state(void)
+{
+       emit sig_load_state(binds->getStringValue());
+}
+
+void Action_Control::do_save_state(void)
+{
+       emit sig_save_state(binds->getStringValue());
+}
+
 void Ui_MainWindowBase::ConfigCpuSpeed(void)
 {
-       actionSpeed_x1 = new Action_Control(this);
+       actionSpeed_x1 = new Action_Control(this, using_flags);
        actionSpeed_x1->setObjectName(QString::fromUtf8("actionSpeed_x1"));
        actionSpeed_x1->setCheckable(true);
        actionSpeed_x1->setChecked(true);
@@ -49,28 +61,28 @@ void Ui_MainWindowBase::ConfigCpuSpeed(void)
        connect(actionSpeed_x1, SIGNAL(triggered()), actionSpeed_x1->binds, SLOT(set_cpupower())); // OK?  
        connect(actionSpeed_x1->binds, SIGNAL(on_cpu_power(int)), this, SLOT(set_cpu_power(int))); // OK?  
   
-       actionSpeed_x2 = new Action_Control(this);
+       actionSpeed_x2 = new Action_Control(this, using_flags);
        actionSpeed_x2->setObjectName(QString::fromUtf8("actionSpeed_x2"));
        actionSpeed_x2->setCheckable(true);
        actionSpeed_x2->binds->setValue1(1);
        connect(actionSpeed_x2, SIGNAL(triggered()), actionSpeed_x2->binds, SLOT(set_cpupower())); // OK?  
        connect(actionSpeed_x2->binds, SIGNAL(on_cpu_power(int)), this, SLOT(set_cpu_power(int))); // OK?  
   
-       actionSpeed_x4 = new Action_Control(this);
+       actionSpeed_x4 = new Action_Control(this, using_flags);
        actionSpeed_x4->setObjectName(QString::fromUtf8("actionSpeed_x4"));
        actionSpeed_x4->setCheckable(true);
        actionSpeed_x4->binds->setValue1(2);
        connect(actionSpeed_x4, SIGNAL(triggered()), actionSpeed_x4->binds, SLOT(set_cpupower())); // OK?  
        connect(actionSpeed_x4->binds, SIGNAL(on_cpu_power(int)), this, SLOT(set_cpu_power(int))); // OK?  
   
-       actionSpeed_x8 = new Action_Control(this);
+       actionSpeed_x8 = new Action_Control(this, using_flags);
        actionSpeed_x8->setObjectName(QString::fromUtf8("actionSpeed_x8"));
        actionSpeed_x8->setCheckable(true);
        actionSpeed_x8->binds->setValue1(3);
        connect(actionSpeed_x8, SIGNAL(triggered()), actionSpeed_x8->binds, SLOT(set_cpupower())); // OK?  
        connect(actionSpeed_x8->binds, SIGNAL(on_cpu_power(int)), this, SLOT(set_cpu_power(int))); // OK?  
   
-       actionSpeed_x16 = new Action_Control(this);
+       actionSpeed_x16 = new Action_Control(this, using_flags);
        actionSpeed_x16->setObjectName(QString::fromUtf8("actionSpeed_x16"));
        actionSpeed_x16->setCheckable(true);
        actionSpeed_x16->binds->setValue1(4);
@@ -88,7 +100,7 @@ void Ui_MainWindowBase::ConfigCpuSpeed(void)
 void Ui_MainWindowBase::do_change_boot_mode(int mode)
 {
        if((mode < 0) || (mode >= 8)) return;
-       config.boot_mode = mode;
+       using_flags->get_config_ptr()->boot_mode = mode;
        emit sig_emu_update_config();
 }
 
@@ -104,12 +116,12 @@ void Ui_MainWindowBase::ConfigCPUBootMode(int num)
        actionGroup_BootMode = new QActionGroup(this);
        actionGroup_BootMode->setExclusive(true);
        for(i = 0; i < num; i++) {
-               actionBootMode[i] = new Action_Control(this);
+               actionBootMode[i] = new Action_Control(this, using_flags);
                tmps = tmps.setNum(i);
                tmps = QString::fromUtf8("actionBootMode_") + tmps;
                actionBootMode[i]->setObjectName(tmps);
                actionBootMode[i]->setCheckable(true);
-               if(i == config.boot_mode) actionBootMode[i]->setChecked(true);
+               if(i == using_flags->get_config_ptr()->boot_mode) actionBootMode[i]->setChecked(true);
                actionBootMode[i]->binds->setValue1(i);
                menuBootMode->addAction(actionBootMode[i]);
                actionGroup_BootMode->addAction(actionBootMode[i]);
@@ -121,7 +133,7 @@ void Ui_MainWindowBase::ConfigCPUBootMode(int num)
 void Ui_MainWindowBase::do_change_cpu_type(int mode)
 {
        if((mode < 0) || (mode >= 8)) return;
-       config.cpu_type = mode;
+       using_flags->get_config_ptr()->cpu_type = mode;
        emit sig_emu_update_config();
 }
 
@@ -135,12 +147,12 @@ void Ui_MainWindowBase::ConfigCPUTypes(int num)
        actionGroup_CpuType = new QActionGroup(this);
        actionGroup_CpuType->setExclusive(true);
        for(i = 0; i < num; i++) {
-               actionCpuType[i] = new Action_Control(this);
+               actionCpuType[i] = new Action_Control(this, using_flags);
                tmps = tmps.setNum(i);
                tmps = QString::fromUtf8("actionCpuType_") + tmps;
                actionCpuType[i]->setObjectName(tmps);
                actionCpuType[i]->setCheckable(true);
-               if(i == config.cpu_type) actionCpuType[i]->setChecked(true);
+               if(i == using_flags->get_config_ptr()->cpu_type) actionCpuType[i]->setChecked(true);
                actionCpuType[i]->binds->setValue1(i);
                menuCpuType->addAction(actionCpuType[i]);
                actionGroup_CpuType->addAction(actionCpuType[i]);
@@ -152,48 +164,66 @@ void Ui_MainWindowBase::ConfigCPUTypes(int num)
 void Ui_MainWindowBase::ConfigControlMenu(void)
 {
        int i;
-       actionReset = new Action_Control(this);
+       actionReset = new Action_Control(this, using_flags);
        actionReset->setObjectName(QString::fromUtf8("actionReset"));
        connect(actionReset, SIGNAL(triggered()),
                this, SLOT(OnReset())); // OK?  
        if(using_flags->is_use_special_reset()) {
-               actionSpecial_Reset = new Action_Control(this);
+               actionSpecial_Reset = new Action_Control(this, using_flags);
                actionSpecial_Reset->setObjectName(QString::fromUtf8("actionSpecial_Reset"));
                connect(actionSpecial_Reset, SIGNAL(triggered()),
                                this, SLOT(OnSpecialReset())); // OK?
        }
 
-       actionExit_Emulator = new Action_Control(this);
+       actionExit_Emulator = new Action_Control(this, using_flags);
        actionExit_Emulator->setObjectName(QString::fromUtf8("actionExit_Emulator"));
        //connect(actionExit_Emulator, SIGNAL(triggered()),
        //      this, SLOT(on_actionExit_triggered())); // OnGuiExit()?  
 
        if(using_flags->is_use_auto_key()) {
-               actionPaste_from_Clipboard = new Action_Control(this);
+               actionPaste_from_Clipboard = new Action_Control(this, using_flags);
                actionPaste_from_Clipboard->setObjectName(QString::fromUtf8("actionPaste_from_Clipboard"));
                connect(actionPaste_from_Clipboard, SIGNAL(triggered()),
                                this, SLOT(OnStartAutoKey())); // OK?  
-               actionStop_Pasting = new Action_Control(this);
+               actionStop_Pasting = new Action_Control(this, using_flags);
                actionStop_Pasting->setObjectName(QString::fromUtf8("actionStop_Pasting"));
                connect(actionStop_Pasting, SIGNAL(triggered()),
                                this, SLOT(OnStopAutoKey())); // OK?
        }
        if(using_flags->is_use_state()) {
-               actionSave_State = new Action_Control(this);
-               actionSave_State->setObjectName(QString::fromUtf8("actionSave_State"));
-               connect(actionSave_State, SIGNAL(triggered()),
-                               this, SLOT(OnSaveState())); // OK?  
+               for(i = 0; i < 10; i++) {
+                       QString tmps;
+                       QString tmpss;
+                       _TCHAR tmpbuf[_MAX_PATH];
+                       actionSave_State[i] = new Action_Control(this, using_flags);
+
+                       strncpy(tmpbuf, create_local_path(_T("%s.sta%d"), using_flags->get_config_name().toLocal8Bit().constData(), i), _MAX_PATH);
+                               
+                       tmps = QString::fromUtf8("");
+                       tmpss = QString::fromUtf8("");
+                       tmpss.setNum(i);
+                       tmps = QString::fromUtf8("actionSave_State") + tmpss;
+                       actionSave_State[i]->setObjectName(tmps);
+                       actionLoad_State[i] = new Action_Control(this, using_flags);
+                       tmps = QString::fromUtf8("actionLoad_State") + tmpss;
+                       actionLoad_State[i]->setObjectName(tmps);
+                       tmps = QString::fromLocal8Bit(tmpbuf);
+                       actionSave_State[i]->binds->setStringValue(tmps);
+                       actionLoad_State[i]->binds->setStringValue(tmps);
+                               
                
-               actionLoad_State = new Action_Control(this);
-               actionLoad_State->setObjectName(QString::fromUtf8("actionLoad_State"));
-               connect(actionLoad_State, SIGNAL(triggered()),
-                               this, SLOT(OnLoadState())); // OK?
+                       connect(actionLoad_State[i], SIGNAL(triggered()),
+                                       actionLoad_State[i], SLOT(do_load_state())); // OK?
+                       connect(actionSave_State[i], SIGNAL(triggered()),
+                                       actionSave_State[i], SLOT(do_save_state())); // OK?
+                       
+               }
        }
        if(using_flags->is_use_debugger()) {
                for(i = 0; i < _MAX_DEBUGGER; i++) {
                        QString tmps;
                        tmps.setNum(i);
-                       actionDebugger[i] = new Action_Control(this);
+                       actionDebugger[i] = new Action_Control(this, using_flags);
                        actionDebugger[i]->setObjectName(QString::fromUtf8("actionDebugger") + tmps);
                        actionDebugger[i]->binds->setValue1(i);
                        connect(actionDebugger[i], SIGNAL(triggered()),
@@ -228,9 +258,13 @@ void Ui_MainWindowBase::connectActions_ControlMenu(void)
        menuControl->addAction(actionExit_Emulator);
 
        if(using_flags->is_use_state()) {
-               menuState->addAction(actionSave_State);
+               for(int i = 0; i < 10; i++) {
+                       menuLoad_State->addAction(actionLoad_State[i]);
+                       menuSave_State->addAction(actionSave_State[i]);
+               }
+               menuState->addAction(menuSave_State->menuAction());
                menuState->addSeparator();
-               menuState->addAction(actionLoad_State);
+               menuState->addAction(menuLoad_State->menuAction());
        }
 
        if(using_flags->is_use_auto_key()) {
@@ -276,6 +310,7 @@ void Ui_MainWindowBase::createContextMenu(void)
 void Ui_MainWindowBase::retranslateControlMenu(const char *SpecialResetTitle,  bool WithSpecialReset)
 {
        actionReset->setText(QApplication::translate("MainWindow", "Reset", 0));
+       actionReset->setToolTip(QApplication::translate("MainWindow", "Reset virtual machine.", 0));
        actionReset->setIcon(ResetIcon);
        if(using_flags->is_use_special_reset()) {
                actionSpecial_Reset->setText(QApplication::translate("MainWindow", SpecialResetTitle, 0));
@@ -283,6 +318,7 @@ void Ui_MainWindowBase::retranslateControlMenu(const char *SpecialResetTitle,  b
        }
 
        actionExit_Emulator->setText(QApplication::translate("MainWindow", "Exit Emulator", 0));
+       actionExit_Emulator->setToolTip(QApplication::translate("MainWindow", "Exit emulator.\n**WARN: WITHOUT confirming.**", 0));
        actionExit_Emulator->setIcon(ExitIcon);
 
        actionSpeed_x1->setText(QApplication::translate("MainWindow", "Speed x1", 0));
@@ -293,15 +329,27 @@ void Ui_MainWindowBase::retranslateControlMenu(const char *SpecialResetTitle,  b
        
        if(using_flags->is_use_auto_key()) {
                actionPaste_from_Clipboard->setText(QApplication::translate("MainWindow", "Paste from Clipboard", 0));
+               actionPaste_from_Clipboard->setToolTip(QApplication::translate("MainWindow", "Paste ANK text to virtual machine from desktop's clop board.", 0));
                actionPaste_from_Clipboard->setIcon(QIcon(":/icon_paste.png"));
                actionStop_Pasting->setText(QApplication::translate("MainWindow", "Stop Pasting", 0));
+               actionStop_Pasting->setToolTip(QApplication::translate("MainWindow", "Abort pasting ANK text to virtual machine.", 0));
                actionStop_Pasting->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton));
        }
        if(using_flags->is_use_state()) {
-               actionSave_State->setText(QApplication::translate("MainWindow", "Save State", 0));
-               actionSave_State->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogSaveButton));
-               actionLoad_State->setText(QApplication::translate("MainWindow", "Load State", 0));
-               actionLoad_State->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOpenButton));
+               menuSave_State->setTitle(QApplication::translate("MainWindow", "Save State", 0));
+               menuSave_State->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogSaveButton));
+               menuSave_State->setToolTip(QApplication::translate("MainWindow", "Save snapshot to fixed bin file.", 0));
+               menuLoad_State->setTitle(QApplication::translate("MainWindow", "Load State", 0));
+               menuLoad_State->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOpenButton));
+               menuLoad_State->setToolTip(QApplication::translate("MainWindow", "Load snapshot from fixed bin file.", 0));
+               for(int i = 0; i < 10; i++) {
+                       QString tmps;
+                       tmps.clear();
+                       tmps.setNum(i);
+                       tmps = QString::fromUtf8("Slot #") + tmps;
+                       actionSave_State[i]->setText(tmps);
+                       actionLoad_State[i]->setText(tmps);
+               }
        }
        if(using_flags->is_use_debugger()) {
                actionDebugger[0]->setText(QApplication::translate("MainWindow", "Main CPU", 0));
@@ -312,19 +360,20 @@ void Ui_MainWindowBase::retranslateControlMenu(const char *SpecialResetTitle,  b
        }
        menuControl->setTitle(QApplication::translate("MainWindow", "Control", 0));
        menuState->setTitle(QApplication::translate("MainWindow", "State", 0));
-
+       
        if(using_flags->is_use_auto_key()) {
                menuCopy_Paste->setTitle(QApplication::translate("MainWindow", "Copy/Paste", 0));
        }
        menuCpu_Speed->setTitle(QApplication::translate("MainWindow", "CPU Speed", 0));
        if(using_flags->is_use_mouse()) {
                actionMouseEnable->setText(QApplication::translate("MainWindow", "Grab MOUSE", 0));
+               actionMouseEnable->setToolTip(QApplication::translate("MainWindow", "Grabbing host's mouse.\nPress RIGHT Application key (or another) to toggle enable/disable.", 0));
        }
 }
 
 void Ui_MainWindowBase::do_set_sound_device(int num)
 {
        if((num < 0) || (num >= using_flags->get_use_sound_device_type())) return;
-       config.sound_device_type = num;
+       using_flags->get_config_ptr()->sound_type = num;
        emit sig_emu_update_config();
 }