OSDN Git Service

[UI][Qt] More separate to one lib a lot.
[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         ConfigCpuSpeed();
217 }
218
219 void Ui_MainWindowBase::connectActions_ControlMenu(void)
220 {
221         menuControl->addAction(actionReset);
222         if(using_flags->is_use_special_reset()) {
223                 menuControl->addAction(actionSpecial_Reset);
224         }
225         menuControl->addSeparator();
226         menuControl->addAction(menuCpu_Speed->menuAction());
227
228         if(using_flags->is_use_auto_key()) {
229                 menuControl->addSeparator();
230                 menuControl->addAction(menuCopy_Paste->menuAction());
231         }
232         menuControl->addSeparator();
233         menuControl->addAction(menuState->menuAction());
234
235         if(using_flags->is_use_debugger()) {
236                 menuControl->addAction(menuDebugger->menuAction());
237         }
238         menuControl->addSeparator();
239         menuControl->addAction(actionExit_Emulator);
240
241         if(using_flags->is_use_state()) {
242                 menuState->addAction(actionSave_State);
243                 menuState->addSeparator();
244                 menuState->addAction(actionLoad_State);
245         }
246
247         if(using_flags->is_use_auto_key()) {
248                 menuCopy_Paste->addAction(actionPaste_from_Clipboard);
249                 menuCopy_Paste->addAction(actionStop_Pasting);
250         }
251         menuCpu_Speed->addAction(actionSpeed_x1);
252         menuCpu_Speed->addAction(actionSpeed_x2);
253         menuCpu_Speed->addAction(actionSpeed_x4);
254         menuCpu_Speed->addAction(actionSpeed_x8);
255         menuCpu_Speed->addAction(actionSpeed_x16);
256         
257         if(using_flags->is_use_debugger()) {
258                 menuDebugger->addAction(actionDebugger_1);
259                 menuDebugger->addAction(actionDebugger_2);
260                 menuDebugger->addAction(actionDebugger_3);
261                 menuDebugger->addSeparator();
262         }
263 }
264
265 void Ui_MainWindowBase::createContextMenu(void)
266 {
267         addAction(actionReset);
268
269         if(using_flags->is_use_special_reset()) {
270                 addAction(actionSpecial_Reset);
271         }
272         addAction(menuCpu_Speed->menuAction());
273
274         if(using_flags->is_use_auto_key()) {
275                 addAction(menuCopy_Paste->menuAction());
276         }
277         addAction(menuState->menuAction());
278
279         if(using_flags->is_use_debugger()) {
280                 addAction(menuDebugger->menuAction());
281         }
282         addAction(actionExit_Emulator);
283 }
284
285
286 void Ui_MainWindowBase::retranslateControlMenu(const char *SpecialResetTitle,  bool WithSpecialReset)
287 {
288         actionReset->setText(QApplication::translate("MainWindow", "Reset", 0));
289         actionReset->setIcon(ResetIcon);
290         if(using_flags->is_use_special_reset()) {
291                 actionSpecial_Reset->setText(QApplication::translate("MainWindow", SpecialResetTitle, 0));
292                 actionSpecial_Reset->setIcon(QIcon(":/icon_reset.png"));
293         }
294
295         actionExit_Emulator->setText(QApplication::translate("MainWindow", "Exit Emulator", 0));
296         actionExit_Emulator->setIcon(ExitIcon);
297
298         actionSpeed_x1->setText(QApplication::translate("MainWindow", "Speed x1", 0));
299         actionSpeed_x2->setText(QApplication::translate("MainWindow", "Speed x2", 0));
300         actionSpeed_x4->setText(QApplication::translate("MainWindow", "Speed x4", 0));
301         actionSpeed_x8->setText(QApplication::translate("MainWindow", "Speed x8", 0));
302         actionSpeed_x16->setText(QApplication::translate("MainWindow", "Speed x16", 0));
303         
304         if(using_flags->is_use_auto_key()) {
305                 actionPaste_from_Clipboard->setText(QApplication::translate("MainWindow", "Paste from Clipboard", 0));
306                 actionPaste_from_Clipboard->setIcon(QIcon(":/icon_paste.png"));
307                 actionStop_Pasting->setText(QApplication::translate("MainWindow", "Stop Pasting", 0));
308                 actionStop_Pasting->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton));
309         }
310         if(using_flags->is_use_state()) {
311                 actionSave_State->setText(QApplication::translate("MainWindow", "Save State", 0));
312                 actionSave_State->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogSaveButton));
313                 actionLoad_State->setText(QApplication::translate("MainWindow", "Load State", 0));
314                 actionLoad_State->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOpenButton));
315         }
316         if(using_flags->is_use_debugger()) {
317                 actionDebugger_1->setText(QApplication::translate("MainWindow", "Debugger 1", 0));
318                 actionDebugger_2->setText(QApplication::translate("MainWindow", "Debugger 2", 0));
319                 actionDebugger_3->setText(QApplication::translate("MainWindow", "Debugger 3", 0));
320                 menuDebugger->setTitle(QApplication::translate("MainWindow", "Debugger", 0));
321         }
322         menuControl->setTitle(QApplication::translate("MainWindow", "Control", 0));
323         menuState->setTitle(QApplication::translate("MainWindow", "State", 0));
324
325         if(using_flags->is_use_auto_key()) {
326                 menuCopy_Paste->setTitle(QApplication::translate("MainWindow", "Copy/Paste", 0));
327         }
328         menuCpu_Speed->setTitle(QApplication::translate("MainWindow", "CPU Speed", 0));
329         if(using_flags->is_use_mouse()) {
330                 actionMouseEnable->setText(QApplication::translate("MainWindow", "Grab MOUSE", 0));
331         }
332 }
333
334 void Ui_MainWindowBase::do_set_sound_device(int num)
335 {
336         if((num < 0) || (num >= using_flags->get_use_sound_device_type())) return;
337         config.sound_device_type = num;
338         emit sig_emu_update_config();
339 }