OSDN Git Service

[UI][Qt] Add YALKY, PC-2000, SMC-70.
[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);
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);
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);
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);
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);
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         config.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);
108                 tmps = tmps.setNum(i);
109                 tmps = QString::fromUtf8("actionBootMode_") + tmps;
110                 actionBootMode[i]->setObjectName(tmps);
111                 actionBootMode[i]->setCheckable(true);
112                 if(i == config.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         config.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);
139                 tmps = tmps.setNum(i);
140                 tmps = QString::fromUtf8("actionCpuType_") + tmps;
141                 actionCpuType[i]->setObjectName(tmps);
142                 actionCpuType[i]->setCheckable(true);
143                 if(i == config.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         actionReset = new Action_Control(this);
155         actionReset->setObjectName(QString::fromUtf8("actionReset"));
156         connect(actionReset, SIGNAL(triggered()),
157                 this, SLOT(OnReset())); // OK?  
158         if(using_flags->is_use_special_reset()) {
159                 actionSpecial_Reset = new Action_Control(this);
160                 actionSpecial_Reset->setObjectName(QString::fromUtf8("actionSpecial_Reset"));
161                 connect(actionSpecial_Reset, SIGNAL(triggered()),
162                                 this, SLOT(OnSpecialReset())); // OK?
163         }
164
165         actionExit_Emulator = new Action_Control(this);
166         actionExit_Emulator->setObjectName(QString::fromUtf8("actionExit_Emulator"));
167         //connect(actionExit_Emulator, SIGNAL(triggered()),
168         //      this, SLOT(on_actionExit_triggered())); // OnGuiExit()?  
169
170         if(using_flags->is_use_auto_key()) {
171                 actionPaste_from_Clipboard = new Action_Control(this);
172                 actionPaste_from_Clipboard->setObjectName(QString::fromUtf8("actionPaste_from_Clipboard"));
173                 connect(actionPaste_from_Clipboard, SIGNAL(triggered()),
174                                 this, SLOT(OnStartAutoKey())); // OK?  
175                 actionStop_Pasting = new Action_Control(this);
176                 actionStop_Pasting->setObjectName(QString::fromUtf8("actionStop_Pasting"));
177                 connect(actionStop_Pasting, SIGNAL(triggered()),
178                                 this, SLOT(OnStopAutoKey())); // OK?
179         }
180         if(using_flags->is_use_state()) {
181                 actionSave_State = new Action_Control(this);
182                 actionSave_State->setObjectName(QString::fromUtf8("actionSave_State"));
183                 connect(actionSave_State, SIGNAL(triggered()),
184                                 this, SLOT(OnSaveState())); // OK?  
185                 
186                 actionLoad_State = new Action_Control(this);
187                 actionLoad_State->setObjectName(QString::fromUtf8("actionLoad_State"));
188                 connect(actionLoad_State, SIGNAL(triggered()),
189                                 this, SLOT(OnLoadState())); // OK?
190         }
191         if(using_flags->is_use_debugger()) {
192                 actionDebugger_1 = new Action_Control(this);
193                 actionDebugger_1->setObjectName(QString::fromUtf8("actionDebugger_1"));
194                 actionDebugger_1->binds->setValue1(0);
195                 connect(actionDebugger_1, SIGNAL(triggered()),
196                                 actionDebugger_1->binds, SLOT(open_debugger())); // OK?  
197                 connect(actionDebugger_1->binds, SIGNAL(on_open_debugger(int)),
198                                 this, SLOT(OnOpenDebugger(int))); // OK?  
199
200                 actionDebugger_2 = new Action_Control(this);
201                 actionDebugger_2->setObjectName(QString::fromUtf8("actionDebugger_2"));
202                 actionDebugger_2->binds->setValue1(1);
203                 connect(actionDebugger_2, SIGNAL(triggered()),
204                                 actionDebugger_2->binds, SLOT(open_debugger())); // OK?  
205                 connect(actionDebugger_2->binds, SIGNAL(on_open_debugger(int)),
206                                 this, SLOT(OnOpenDebugger(int))); // OK?  
207                 
208                 actionDebugger_3 = new Action_Control(this);
209                 actionDebugger_3->binds->setValue1(2);
210                 actionDebugger_3->setObjectName(QString::fromUtf8("actionDebugger_3"));
211                 connect(actionDebugger_3, SIGNAL(triggered()),
212                                 actionDebugger_3->binds, SLOT(open_debugger())); // OK?  
213                 connect(actionDebugger_3->binds, SIGNAL(on_open_debugger(int)),
214                                 this, SLOT(OnOpenDebugger(int))); // OK?
215                 
216                 actionDebugger_4 = new Action_Control(this);
217                 actionDebugger_4->setObjectName(QString::fromUtf8("actionDebugger_4"));
218                 actionDebugger_4->binds->setValue1(3);
219                 connect(actionDebugger_4, SIGNAL(triggered()),
220                                 actionDebugger_4->binds, SLOT(open_debugger())); // OK?  
221                 connect(actionDebugger_4->binds, SIGNAL(on_open_debugger(int)),
222                                 this, SLOT(OnOpenDebugger(int))); // OK?  
223         }
224         ConfigCpuSpeed();
225 }
226
227 void Ui_MainWindowBase::connectActions_ControlMenu(void)
228 {
229         menuControl->addAction(actionReset);
230         if(using_flags->is_use_special_reset()) {
231                 menuControl->addAction(actionSpecial_Reset);
232         }
233         menuControl->addSeparator();
234         menuControl->addAction(menuCpu_Speed->menuAction());
235
236         if(using_flags->is_use_auto_key()) {
237                 menuControl->addSeparator();
238                 menuControl->addAction(menuCopy_Paste->menuAction());
239         }
240         menuControl->addSeparator();
241         menuControl->addAction(menuState->menuAction());
242
243         if(using_flags->is_use_debugger()) {
244                 menuControl->addAction(menuDebugger->menuAction());
245         }
246         menuControl->addSeparator();
247         menuControl->addAction(actionExit_Emulator);
248
249         if(using_flags->is_use_state()) {
250                 menuState->addAction(actionSave_State);
251                 menuState->addSeparator();
252                 menuState->addAction(actionLoad_State);
253         }
254
255         if(using_flags->is_use_auto_key()) {
256                 menuCopy_Paste->addAction(actionPaste_from_Clipboard);
257                 menuCopy_Paste->addAction(actionStop_Pasting);
258         }
259         menuCpu_Speed->addAction(actionSpeed_x1);
260         menuCpu_Speed->addAction(actionSpeed_x2);
261         menuCpu_Speed->addAction(actionSpeed_x4);
262         menuCpu_Speed->addAction(actionSpeed_x8);
263         menuCpu_Speed->addAction(actionSpeed_x16);
264         
265         if(using_flags->is_use_debugger()) {
266                 menuDebugger->addAction(actionDebugger_1);
267                 menuDebugger->addAction(actionDebugger_2);
268                 menuDebugger->addAction(actionDebugger_3);
269                 menuDebugger->addAction(actionDebugger_4);
270                 menuDebugger->addSeparator();
271         }
272 }
273
274 void Ui_MainWindowBase::createContextMenu(void)
275 {
276         addAction(actionReset);
277
278         if(using_flags->is_use_special_reset()) {
279                 addAction(actionSpecial_Reset);
280         }
281         addAction(menuCpu_Speed->menuAction());
282
283         if(using_flags->is_use_auto_key()) {
284                 addAction(menuCopy_Paste->menuAction());
285         }
286         addAction(menuState->menuAction());
287
288         if(using_flags->is_use_debugger()) {
289                 addAction(menuDebugger->menuAction());
290         }
291         addAction(actionExit_Emulator);
292 }
293
294
295 void Ui_MainWindowBase::retranslateControlMenu(const char *SpecialResetTitle,  bool WithSpecialReset)
296 {
297         actionReset->setText(QApplication::translate("MainWindow", "Reset", 0));
298         actionReset->setIcon(ResetIcon);
299         if(using_flags->is_use_special_reset()) {
300                 actionSpecial_Reset->setText(QApplication::translate("MainWindow", SpecialResetTitle, 0));
301                 actionSpecial_Reset->setIcon(QIcon(":/icon_reset.png"));
302         }
303
304         actionExit_Emulator->setText(QApplication::translate("MainWindow", "Exit Emulator", 0));
305         actionExit_Emulator->setIcon(ExitIcon);
306
307         actionSpeed_x1->setText(QApplication::translate("MainWindow", "Speed x1", 0));
308         actionSpeed_x2->setText(QApplication::translate("MainWindow", "Speed x2", 0));
309         actionSpeed_x4->setText(QApplication::translate("MainWindow", "Speed x4", 0));
310         actionSpeed_x8->setText(QApplication::translate("MainWindow", "Speed x8", 0));
311         actionSpeed_x16->setText(QApplication::translate("MainWindow", "Speed x16", 0));
312         
313         if(using_flags->is_use_auto_key()) {
314                 actionPaste_from_Clipboard->setText(QApplication::translate("MainWindow", "Paste from Clipboard", 0));
315                 actionPaste_from_Clipboard->setIcon(QIcon(":/icon_paste.png"));
316                 actionStop_Pasting->setText(QApplication::translate("MainWindow", "Stop Pasting", 0));
317                 actionStop_Pasting->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton));
318         }
319         if(using_flags->is_use_state()) {
320                 actionSave_State->setText(QApplication::translate("MainWindow", "Save State", 0));
321                 actionSave_State->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogSaveButton));
322                 actionLoad_State->setText(QApplication::translate("MainWindow", "Load State", 0));
323                 actionLoad_State->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOpenButton));
324         }
325         if(using_flags->is_use_debugger()) {
326                 actionDebugger_1->setText(QApplication::translate("MainWindow", "Main CPU", 0));
327                 actionDebugger_2->setText(QApplication::translate("MainWindow", "Sub CPU", 0));
328                 actionDebugger_3->setText(QApplication::translate("MainWindow", "Reserved", 0));
329                 actionDebugger_4->setText(QApplication::translate("MainWindow", "Reserved", 0));
330                 menuDebugger->setTitle(QApplication::translate("MainWindow", "Debugger", 0));
331         }
332         menuControl->setTitle(QApplication::translate("MainWindow", "Control", 0));
333         menuState->setTitle(QApplication::translate("MainWindow", "State", 0));
334
335         if(using_flags->is_use_auto_key()) {
336                 menuCopy_Paste->setTitle(QApplication::translate("MainWindow", "Copy/Paste", 0));
337         }
338         menuCpu_Speed->setTitle(QApplication::translate("MainWindow", "CPU Speed", 0));
339         if(using_flags->is_use_mouse()) {
340                 actionMouseEnable->setText(QApplication::translate("MainWindow", "Grab MOUSE", 0));
341         }
342 }
343
344 void Ui_MainWindowBase::do_set_sound_device(int num)
345 {
346         if((num < 0) || (num >= using_flags->get_use_sound_device_type())) return;
347         config.sound_device_type = num;
348         emit sig_emu_update_config();
349 }