OSDN Git Service

[UI][Qt] Not liking config, using_flags directly.
[csp-qt/common_source_project-fm7.git] / source / src / qt / gui / menu_control.cpp
1 /*
2  * Common Source Project/ Qt
3  * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
4  *  History: Jan 10, 2015 : Initial
5  */
6
7 #include <QString>
8 //#include "menuclasses.h"
9 #include "commonclasses.h"
10 #include "mainwidget_base.h"
11 #include "menu_flags.h"
12
13 //extern USING_FLAGS *using_flags;
14
15 void Object_Menu_Control::set_boot_mode(void) {
16         emit on_boot_mode(bindValue);
17 }
18    
19 void Object_Menu_Control::set_cpu_type(void) {
20         emit on_cpu_type(bindValue);
21 }
22 void Object_Menu_Control::set_cpupower(void) {
23         emit on_cpu_power(bindValue);
24 }
25 void Object_Menu_Control::open_debugger(void) {
26         emit on_open_debugger(bindValue);
27 }
28 void Object_Menu_Control::do_set_device_type(void){
29         emit sig_device_type(this->getValue1());
30 }
31 void Object_Menu_Control::do_set_printer_device(void){
32         emit sig_printer_device(this->getValue1());
33 }
34 void Object_Menu_Control::do_set_sound_device(void){
35         emit sig_sound_device(this->getValue1());
36 }
37 void Object_Menu_Control::do_set_drive_type(void)
38 {
39         emit sig_drive_type(getValue1());
40 }
41
42 void Ui_MainWindowBase::ConfigCpuSpeed(void)
43 {
44         actionSpeed_x1 = new Action_Control(this, using_flags);
45         actionSpeed_x1->setObjectName(QString::fromUtf8("actionSpeed_x1"));
46         actionSpeed_x1->setCheckable(true);
47         actionSpeed_x1->setChecked(true);
48         actionSpeed_x1->binds->setValue1(0);
49         connect(actionSpeed_x1, SIGNAL(triggered()), actionSpeed_x1->binds, SLOT(set_cpupower())); // OK?  
50         connect(actionSpeed_x1->binds, SIGNAL(on_cpu_power(int)), this, SLOT(set_cpu_power(int))); // OK?  
51   
52         actionSpeed_x2 = new Action_Control(this, using_flags);
53         actionSpeed_x2->setObjectName(QString::fromUtf8("actionSpeed_x2"));
54         actionSpeed_x2->setCheckable(true);
55         actionSpeed_x2->binds->setValue1(1);
56         connect(actionSpeed_x2, SIGNAL(triggered()), actionSpeed_x2->binds, SLOT(set_cpupower())); // OK?  
57         connect(actionSpeed_x2->binds, SIGNAL(on_cpu_power(int)), this, SLOT(set_cpu_power(int))); // OK?  
58   
59         actionSpeed_x4 = new Action_Control(this, using_flags);
60         actionSpeed_x4->setObjectName(QString::fromUtf8("actionSpeed_x4"));
61         actionSpeed_x4->setCheckable(true);
62         actionSpeed_x4->binds->setValue1(2);
63         connect(actionSpeed_x4, SIGNAL(triggered()), actionSpeed_x4->binds, SLOT(set_cpupower())); // OK?  
64         connect(actionSpeed_x4->binds, SIGNAL(on_cpu_power(int)), this, SLOT(set_cpu_power(int))); // OK?  
65   
66         actionSpeed_x8 = new Action_Control(this, using_flags);
67         actionSpeed_x8->setObjectName(QString::fromUtf8("actionSpeed_x8"));
68         actionSpeed_x8->setCheckable(true);
69         actionSpeed_x8->binds->setValue1(3);
70         connect(actionSpeed_x8, SIGNAL(triggered()), actionSpeed_x8->binds, SLOT(set_cpupower())); // OK?  
71         connect(actionSpeed_x8->binds, SIGNAL(on_cpu_power(int)), this, SLOT(set_cpu_power(int))); // OK?  
72   
73         actionSpeed_x16 = new Action_Control(this, using_flags);
74         actionSpeed_x16->setObjectName(QString::fromUtf8("actionSpeed_x16"));
75         actionSpeed_x16->setCheckable(true);
76         actionSpeed_x16->binds->setValue1(4);
77         connect(actionSpeed_x16, SIGNAL(triggered()), actionSpeed_x16->binds, SLOT(set_cpupower())); // OK?  
78         connect(actionSpeed_x16->binds, SIGNAL(on_cpu_power(int)), this, SLOT(set_cpu_power(int))); // OK?  
79
80         actionGroup_CpuSpeed = new QActionGroup(this);
81         actionGroup_CpuSpeed->setExclusive(true);
82         actionGroup_CpuSpeed->addAction(actionSpeed_x1);
83         actionGroup_CpuSpeed->addAction(actionSpeed_x2);
84         actionGroup_CpuSpeed->addAction(actionSpeed_x4);
85         actionGroup_CpuSpeed->addAction(actionSpeed_x8);
86         actionGroup_CpuSpeed->addAction(actionSpeed_x16);
87 }
88 void Ui_MainWindowBase::do_change_boot_mode(int mode)
89 {
90         if((mode < 0) || (mode >= 8)) return;
91         using_flags->get_config_ptr()->boot_mode = mode;
92         emit sig_emu_update_config();
93 }
94
95
96
97 void Ui_MainWindowBase::ConfigCPUBootMode(int num)
98 {
99         int i;
100         QString tmps;
101         if(num <= 0) return;
102         if(num >= 8) num = 7;
103   
104         actionGroup_BootMode = new QActionGroup(this);
105         actionGroup_BootMode->setExclusive(true);
106         for(i = 0; i < num; i++) {
107                 actionBootMode[i] = new Action_Control(this, using_flags);
108                 tmps = tmps.setNum(i);
109                 tmps = QString::fromUtf8("actionBootMode_") + tmps;
110                 actionBootMode[i]->setObjectName(tmps);
111                 actionBootMode[i]->setCheckable(true);
112                 if(i == using_flags->get_config_ptr()->boot_mode) actionBootMode[i]->setChecked(true);
113                 actionBootMode[i]->binds->setValue1(i);
114                 menuBootMode->addAction(actionBootMode[i]);
115                 actionGroup_BootMode->addAction(actionBootMode[i]);
116                 connect(actionBootMode[i], SIGNAL(triggered()), actionBootMode[i]->binds, SLOT(set_boot_mode())); // OK?  
117                 connect(actionBootMode[i]->binds, SIGNAL(on_boot_mode(int)), this, SLOT(do_change_boot_mode(int))); // OK?  
118         }
119 }
120
121 void Ui_MainWindowBase::do_change_cpu_type(int mode)
122 {
123         if((mode < 0) || (mode >= 8)) return;
124         using_flags->get_config_ptr()->cpu_type = mode;
125         emit sig_emu_update_config();
126 }
127
128 void Ui_MainWindowBase::ConfigCPUTypes(int num)
129 {
130         int i;
131         QString tmps;
132         if(num <= 0) return;
133         if(num >= 8) num = 7;
134    
135         actionGroup_CpuType = new QActionGroup(this);
136         actionGroup_CpuType->setExclusive(true);
137         for(i = 0; i < num; i++) {
138                 actionCpuType[i] = new Action_Control(this, using_flags);
139                 tmps = tmps.setNum(i);
140                 tmps = QString::fromUtf8("actionCpuType_") + tmps;
141                 actionCpuType[i]->setObjectName(tmps);
142                 actionCpuType[i]->setCheckable(true);
143                 if(i == using_flags->get_config_ptr()->cpu_type) actionCpuType[i]->setChecked(true);
144                 actionCpuType[i]->binds->setValue1(i);
145                 menuCpuType->addAction(actionCpuType[i]);
146                 actionGroup_CpuType->addAction(actionCpuType[i]);
147                 connect(actionCpuType[i], SIGNAL(triggered()), actionCpuType[i]->binds, SLOT(set_cpu_type())); // OK?  
148                 connect(actionCpuType[i]->binds, SIGNAL(on_cpu_type(int)), this, SLOT(do_change_cpu_type(int))); // OK?  
149         }
150 }
151
152 void Ui_MainWindowBase::ConfigControlMenu(void)
153 {
154         int i;
155         actionReset = new Action_Control(this, using_flags);
156         actionReset->setObjectName(QString::fromUtf8("actionReset"));
157         connect(actionReset, SIGNAL(triggered()),
158                 this, SLOT(OnReset())); // OK?  
159         if(using_flags->is_use_special_reset()) {
160                 actionSpecial_Reset = new Action_Control(this, using_flags);
161                 actionSpecial_Reset->setObjectName(QString::fromUtf8("actionSpecial_Reset"));
162                 connect(actionSpecial_Reset, SIGNAL(triggered()),
163                                 this, SLOT(OnSpecialReset())); // OK?
164         }
165
166         actionExit_Emulator = new Action_Control(this, using_flags);
167         actionExit_Emulator->setObjectName(QString::fromUtf8("actionExit_Emulator"));
168         //connect(actionExit_Emulator, SIGNAL(triggered()),
169         //      this, SLOT(on_actionExit_triggered())); // OnGuiExit()?  
170
171         if(using_flags->is_use_auto_key()) {
172                 actionPaste_from_Clipboard = new Action_Control(this, using_flags);
173                 actionPaste_from_Clipboard->setObjectName(QString::fromUtf8("actionPaste_from_Clipboard"));
174                 connect(actionPaste_from_Clipboard, SIGNAL(triggered()),
175                                 this, SLOT(OnStartAutoKey())); // OK?  
176                 actionStop_Pasting = new Action_Control(this, using_flags);
177                 actionStop_Pasting->setObjectName(QString::fromUtf8("actionStop_Pasting"));
178                 connect(actionStop_Pasting, SIGNAL(triggered()),
179                                 this, SLOT(OnStopAutoKey())); // OK?
180         }
181         if(using_flags->is_use_state()) {
182                 actionSave_State = new Action_Control(this, using_flags);
183                 actionSave_State->setObjectName(QString::fromUtf8("actionSave_State"));
184                 connect(actionSave_State, SIGNAL(triggered()),
185                                 this, SLOT(OnSaveState())); // OK?  
186                 
187                 actionLoad_State = new Action_Control(this, using_flags);
188                 actionLoad_State->setObjectName(QString::fromUtf8("actionLoad_State"));
189                 connect(actionLoad_State, SIGNAL(triggered()),
190                                 this, SLOT(OnLoadState())); // OK?
191         }
192         if(using_flags->is_use_debugger()) {
193                 for(i = 0; i < _MAX_DEBUGGER; i++) {
194                         QString tmps;
195                         tmps.setNum(i);
196                         actionDebugger[i] = new Action_Control(this, using_flags);
197                         actionDebugger[i]->setObjectName(QString::fromUtf8("actionDebugger") + tmps);
198                         actionDebugger[i]->binds->setValue1(i);
199                         connect(actionDebugger[i], SIGNAL(triggered()),
200                                         actionDebugger[i]->binds, SLOT(open_debugger())); // OK?  
201                         connect(actionDebugger[i]->binds, SIGNAL(on_open_debugger(int)),
202                                         this, SLOT(OnOpenDebugger(int))); // OK?
203                 }
204         }
205         ConfigCpuSpeed();
206 }
207
208 void Ui_MainWindowBase::connectActions_ControlMenu(void)
209 {
210         menuControl->addAction(actionReset);
211         if(using_flags->is_use_special_reset()) {
212                 menuControl->addAction(actionSpecial_Reset);
213         }
214         menuControl->addSeparator();
215         menuControl->addAction(menuCpu_Speed->menuAction());
216
217         if(using_flags->is_use_auto_key()) {
218                 menuControl->addSeparator();
219                 menuControl->addAction(menuCopy_Paste->menuAction());
220         }
221         menuControl->addSeparator();
222         menuControl->addAction(menuState->menuAction());
223
224         if(using_flags->is_use_debugger()) {
225                 menuControl->addAction(menuDebugger->menuAction());
226         }
227         menuControl->addSeparator();
228         menuControl->addAction(actionExit_Emulator);
229
230         if(using_flags->is_use_state()) {
231                 menuState->addAction(actionSave_State);
232                 menuState->addSeparator();
233                 menuState->addAction(actionLoad_State);
234         }
235
236         if(using_flags->is_use_auto_key()) {
237                 menuCopy_Paste->addAction(actionPaste_from_Clipboard);
238                 menuCopy_Paste->addAction(actionStop_Pasting);
239         }
240         menuCpu_Speed->addAction(actionSpeed_x1);
241         menuCpu_Speed->addAction(actionSpeed_x2);
242         menuCpu_Speed->addAction(actionSpeed_x4);
243         menuCpu_Speed->addAction(actionSpeed_x8);
244         menuCpu_Speed->addAction(actionSpeed_x16);
245         
246         if(using_flags->is_use_debugger()) {
247                 int i;
248                 for(i = 0; i < _MAX_DEBUGGER; i++) {
249                         menuDebugger->addAction(actionDebugger[i]);
250                         if(i > 0) actionDebugger[i]->setVisible(false);
251                 }
252         }
253 }
254
255 void Ui_MainWindowBase::createContextMenu(void)
256 {
257         addAction(actionReset);
258
259         if(using_flags->is_use_special_reset()) {
260                 addAction(actionSpecial_Reset);
261         }
262         addAction(menuCpu_Speed->menuAction());
263
264         if(using_flags->is_use_auto_key()) {
265                 addAction(menuCopy_Paste->menuAction());
266         }
267         addAction(menuState->menuAction());
268
269         if(using_flags->is_use_debugger()) {
270                 addAction(menuDebugger->menuAction());
271         }
272         addAction(actionExit_Emulator);
273 }
274
275
276 void Ui_MainWindowBase::retranslateControlMenu(const char *SpecialResetTitle,  bool WithSpecialReset)
277 {
278         actionReset->setText(QApplication::translate("MainWindow", "Reset", 0));
279         actionReset->setIcon(ResetIcon);
280         if(using_flags->is_use_special_reset()) {
281                 actionSpecial_Reset->setText(QApplication::translate("MainWindow", SpecialResetTitle, 0));
282                 actionSpecial_Reset->setIcon(QIcon(":/icon_reset.png"));
283         }
284
285         actionExit_Emulator->setText(QApplication::translate("MainWindow", "Exit Emulator", 0));
286         actionExit_Emulator->setIcon(ExitIcon);
287
288         actionSpeed_x1->setText(QApplication::translate("MainWindow", "Speed x1", 0));
289         actionSpeed_x2->setText(QApplication::translate("MainWindow", "Speed x2", 0));
290         actionSpeed_x4->setText(QApplication::translate("MainWindow", "Speed x4", 0));
291         actionSpeed_x8->setText(QApplication::translate("MainWindow", "Speed x8", 0));
292         actionSpeed_x16->setText(QApplication::translate("MainWindow", "Speed x16", 0));
293         
294         if(using_flags->is_use_auto_key()) {
295                 actionPaste_from_Clipboard->setText(QApplication::translate("MainWindow", "Paste from Clipboard", 0));
296                 actionPaste_from_Clipboard->setIcon(QIcon(":/icon_paste.png"));
297                 actionStop_Pasting->setText(QApplication::translate("MainWindow", "Stop Pasting", 0));
298                 actionStop_Pasting->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton));
299         }
300         if(using_flags->is_use_state()) {
301                 actionSave_State->setText(QApplication::translate("MainWindow", "Save State", 0));
302                 actionSave_State->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogSaveButton));
303                 actionLoad_State->setText(QApplication::translate("MainWindow", "Load State", 0));
304                 actionLoad_State->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOpenButton));
305         }
306         if(using_flags->is_use_debugger()) {
307                 actionDebugger[0]->setText(QApplication::translate("MainWindow", "Main CPU", 0));
308                 actionDebugger[1]->setText(QApplication::translate("MainWindow", "Sub CPU", 0));
309                 actionDebugger[2]->setText(QApplication::translate("MainWindow", "Debugger 3", 0));
310                 actionDebugger[3]->setText(QApplication::translate("MainWindow", "Debugger 4", 0));
311                 menuDebugger->setTitle(QApplication::translate("MainWindow", "Debugger", 0));
312         }
313         menuControl->setTitle(QApplication::translate("MainWindow", "Control", 0));
314         menuState->setTitle(QApplication::translate("MainWindow", "State", 0));
315
316         if(using_flags->is_use_auto_key()) {
317                 menuCopy_Paste->setTitle(QApplication::translate("MainWindow", "Copy/Paste", 0));
318         }
319         menuCpu_Speed->setTitle(QApplication::translate("MainWindow", "CPU Speed", 0));
320         if(using_flags->is_use_mouse()) {
321                 actionMouseEnable->setText(QApplication::translate("MainWindow", "Grab MOUSE", 0));
322         }
323 }
324
325 void Ui_MainWindowBase::do_set_sound_device(int num)
326 {
327         if((num < 0) || (num >= using_flags->get_use_sound_device_type())) return;
328         using_flags->get_config_ptr()->sound_device_type = num;
329         emit sig_emu_update_config();
330 }