OSDN Git Service

[UI][Qt][MENU] Split some methods (of Ui_MainMenuBase::) to menu_emulator.cpp and...
[csp-qt/common_source_project-fm7.git] / source / src / qt / gui / menu_emulator.cpp
1 /*
2  * Common Source code Project:
3  * Ui->Qt->gui->menu_emulator for generic.
4  * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
5  *   License : GPLv2
6  *   History :
7  * Aug 13, 2019 : Split from menu_main.cpp.
8  */
9
10 #include <QApplication>
11 #include <QVariant>
12 #include <QtGui>
13 #include <QPixmap>
14 #include <QApplication>
15 #include <QLocale>
16 #include <QTranslator>
17 #include <QDockWidget>
18 #include <QToolBar>
19 #include <QMenu>
20 #include <QMenuBar>
21 #include <QStyle>
22
23 #include "commonclasses.h"
24 #include "display_text_document.h"
25 #include "mainwidget_base.h"
26 #include "dock_disks.h"
27
28 #include "qt_gldraw.h"
29 //#include "emu.h"
30 #include "qt_main.h"
31 #include "menu_flags.h"
32 #include "csp_logger.h"
33 #include "common.h"
34 // Emulator
35 #include "dropdown_joystick.h"
36 #include "dropdown_joykey.h"
37 #include "dialog_set_key.h"
38
39 void Ui_MainWindowBase::do_set_roma_kana(bool flag)
40 {
41         p_config->romaji_to_kana = flag;
42         emit sig_set_roma_kana(flag);
43 }
44
45 void Ui_MainWindowBase::do_set_numpad_enter_as_fullkey(bool flag)
46 {
47         p_config->numpad_enter_as_fullkey = flag;
48 }
49
50 void Ui_MainWindowBase::do_set_joy_to_key(bool flag)
51 {
52         p_config->use_joy_to_key = flag;
53 }
54
55 void Ui_MainWindowBase::do_set_print_cpu_statistics(bool flag)
56 {
57         p_config->print_statistics = flag;
58         emit sig_emu_update_config();
59 }
60
61 void Ui_MainWindowBase::do_set_visible_virtual_media_none()
62 {
63         QRect rect;
64         driveData->setVisible(false);
65         p_config->virtual_media_position = 0;
66         set_screen_size(graphicsView->width(), graphicsView->height());
67         
68         pCentralLayout->setDirection(QBoxLayout::TopToBottom);
69         rect.setRect(0, 0, graphicsView->width(), graphicsView->height() + 2);
70         
71         pCentralLayout->removeWidget(driveData);
72         pCentralWidget->setGeometry(rect);
73         //pCentralLayout->setGeometry(rect);
74         pCentralLayout->update();
75         pCentralWidget->setLayout(pCentralLayout);
76         MainWindow->setCentralWidget(pCentralWidget);
77         //emit sig_set_display_osd(true);
78 }
79
80 void Ui_MainWindowBase::do_set_visible_virtual_media_upper()
81 {
82         QRect rect;
83         driveData->setVisible(true);
84         p_config->virtual_media_position = 1;
85         set_screen_size(graphicsView->width(), graphicsView->height());
86         emit sig_set_orientation_osd(1);
87         pCentralLayout->setDirection(QBoxLayout::TopToBottom);
88         pCentralLayout->removeWidget(driveData);
89         pCentralLayout->removeWidget(graphicsView);
90         pCentralLayout->addWidget(driveData);
91         pCentralLayout->addWidget(graphicsView);
92         rect.setRect(0, 0, graphicsView->width(), graphicsView->height() + driveData->height() + 2);
93         pCentralWidget->setGeometry(rect);
94         //pCentralLayout->setGeometry(rect);
95         pCentralLayout->update();
96         pCentralWidget->setLayout(pCentralLayout);
97         MainWindow->setCentralWidget(pCentralWidget);
98         //emit sig_set_display_osd(false);
99 }
100
101 void Ui_MainWindowBase::do_set_visible_virtual_media_lower()
102 {
103         QRect rect;
104         driveData->setVisible(true);
105         p_config->virtual_media_position = 2;
106         set_screen_size(graphicsView->width(), graphicsView->height());
107         emit sig_set_orientation_osd(2);
108         pCentralLayout->setDirection(QBoxLayout::BottomToTop);
109         pCentralLayout->removeWidget(driveData);
110         pCentralLayout->removeWidget(graphicsView);
111         pCentralLayout->addWidget(driveData);
112         pCentralLayout->addWidget(graphicsView);
113         
114         rect.setRect(0, 0, graphicsView->width(), graphicsView->height() + driveData->height() + 2);
115         pCentralWidget->setGeometry(rect);
116         pCentralLayout->update();
117         pCentralWidget->setLayout(pCentralLayout);
118         MainWindow->setCentralWidget(pCentralWidget);
119 }
120
121 void Ui_MainWindowBase::do_set_visible_virtual_media_left()
122 {
123 #if 0
124         driveData->setVisible(true);
125         p_config->virtual_media_position = 3;
126         set_screen_size(graphicsView->width(), graphicsView->height());
127         emit sig_set_orientation_osd(3);
128         pCentralLayout->removeWidget(driveData);
129         pCentralLayout->addWidget(driveData, 1, 0);
130         //emit sig_set_display_osd(false);
131 #endif
132 }
133
134 void Ui_MainWindowBase::do_set_visible_virtual_media_right()
135 {
136 #if 0
137         driveData->setVisible(true);
138         p_config->virtual_media_position = 4;
139         set_screen_size(graphicsView->width(), graphicsView->height());
140         emit sig_set_orientation_osd(4);
141         pCentralLayout->removeWidget(driveData);
142         pCentralLayout->addWidget(driveData, 1, 2);
143         //emit sig_set_display_osd(false);
144 #endif
145 }
146
147 #include "display_log.h"
148
149 void Ui_MainWindowBase::rise_log_viewer(void)
150 {
151         Dlg_LogViewer *dlg = new Dlg_LogViewer(using_flags, csp_logger, NULL);
152         dlg->show();
153 }
154
155 void Ui_MainWindowBase::rise_joystick_dialog(void)
156 {
157         if(graphicsView != NULL) {
158                 QStringList *lst = graphicsView->getVKNames();
159                 CSP_DropDownJoysticks *dlg = new CSP_DropDownJoysticks(NULL, lst, using_flags);
160                 dlg->setWindowTitle(QApplication::translate("CSP_DropDownJoysticks", "Configure Joysticks", 0));
161                 dlg->show();
162         }
163 }
164
165 void Ui_MainWindowBase::rise_joykey_dialog(void)
166 {
167         if(graphicsView != NULL) {
168                 QStringList *lst = graphicsView->getVKNames();
169                 CSP_DropDownJoykey *dlg = new CSP_DropDownJoykey(NULL, lst, using_flags);
170                 dlg->setWindowTitle(QApplication::translate("CSP_DropDownJoysticks", "Configure Joystick to KEYBOARD", 0));
171                 dlg->show();
172         }
173 }
174
175 void Ui_MainWindowBase::rise_movie_dialog(void)
176 {
177
178 }
179
180 void Ui_MainWindowBase::rise_keyboard_dialog(void)
181 {
182         if(graphicsView != NULL) {
183                 CSP_KeySetDialog *dlg = new CSP_KeySetDialog(NULL, graphicsView);
184                 dlg->setWindowTitle(QApplication::translate("KeySetDialog", "Configure Keyboard", 0));
185                 dlg->show();
186         }
187 }
188
189 #if defined(Q_OS_LINUX)
190 //#define _GNU_SOURCE
191 #include <unistd.h>
192 #include <sched.h>
193 #endif
194
195 void Ui_MainWindowBase::ConfigEmulatorMenu(void)
196 {
197         int i;
198         QString tmps;
199         actionGroup_DispVirtualMedias = new QActionGroup(this);
200         actionGroup_DispVirtualMedias->setExclusive(true);
201         menu_DispVirtualMedias = new QMenu(this);
202         menu_DispVirtualMedias->setToolTipsVisible(true);
203         for(i = 0; i < 3; i++) {
204                 action_DispVirtualMedias[i] = new Action_Control(this, using_flags);
205                 action_DispVirtualMedias[i]->setCheckable(true);
206                 action_DispVirtualMedias[i]->setChecked(false);
207                 if(i == p_config->virtual_media_position) action_DispVirtualMedias[i]->setChecked(true);
208                 action_DispVirtualMedias[i]->setEnabled(true);
209                 actionGroup_DispVirtualMedias->addAction(action_DispVirtualMedias[i]);
210                 menu_DispVirtualMedias->addAction(action_DispVirtualMedias[i]);
211         }
212         connect(action_DispVirtualMedias[0], SIGNAL(triggered()), this, SLOT(do_set_visible_virtual_media_none()));
213         connect(action_DispVirtualMedias[1], SIGNAL(triggered()), this, SLOT(do_set_visible_virtual_media_upper()));
214         connect(action_DispVirtualMedias[2], SIGNAL(triggered()), this, SLOT(do_set_visible_virtual_media_lower()));
215
216         if(using_flags->is_use_joystick()) {
217                 SET_ACTION_SINGLE(action_UseJoykey, true, true, (p_config->use_joy_to_key));
218                 connect(action_UseJoykey, SIGNAL(toggled(bool)), this, SLOT(do_set_joy_to_key(bool)));
219         }
220         
221         if(using_flags->is_use_auto_key()) {
222                 // ToDo: Setup if checked.
223                 SET_ACTION_SINGLE(action_UseRomaKana, true, true, (p_config->romaji_to_kana)); 
224                 connect(action_UseRomaKana, SIGNAL(toggled(bool)), this, SLOT(do_set_roma_kana(bool)));
225         }
226         SET_ACTION_SINGLE(action_NumPadEnterAsFullkey, true, true, (p_config->numpad_enter_as_fullkey));
227         connect(action_NumPadEnterAsFullkey, SIGNAL(toggled(bool)), this, SLOT(do_set_numpad_enter_as_fullkey(bool)));
228
229         SET_ACTION_SINGLE(action_PrintCpuStatistics, true, true, (p_config->print_statistics));
230         connect(action_PrintCpuStatistics, SIGNAL(toggled(bool)), this, SLOT(do_set_print_cpu_statistics(bool)));
231         
232         // Cursor to ten key.
233         menu_EmulateCursorAs = new QMenu(this);
234         menu_EmulateCursorAs->setToolTipsVisible(true);
235         actionGroup_EmulateCursorAs = new QActionGroup(this);
236         actionGroup_EmulateCursorAs->setExclusive(true);
237         {
238                 for(i = 0; i < 3; i++) {
239                         tmps = QString::number(i);
240                         action_EmulateCursorAs[i] = new Action_Control(this, using_flags);
241                         action_EmulateCursorAs[i]->setObjectName(QString::fromUtf8("action_EmulateCursorAs", -1) + tmps);
242                         action_EmulateCursorAs[i]->setCheckable(true);
243                         action_EmulateCursorAs[i]->binds->setValue1(i);
244                         actionGroup_EmulateCursorAs->addAction(action_EmulateCursorAs[i]);
245                         menu_EmulateCursorAs->addAction(action_EmulateCursorAs[i]);
246                         if(i == p_config->cursor_as_ten_key) action_EmulateCursorAs[i]->setChecked(true);
247                                 
248                         connect(action_EmulateCursorAs[i], SIGNAL(triggered()),
249                                         action_EmulateCursorAs[i], SLOT(do_set_emulate_cursor_as()));
250                         connect(action_EmulateCursorAs[i], SIGNAL(sig_set_emulate_cursor_as(int)),
251                                         this, SLOT(do_set_emulate_cursor_as(int)));
252                 }
253         }
254         
255         SET_ACTION_CHECKABLE_SINGLE_CONNECT_NOMENU(actionSpeed_FULL, "actionSpeed_FULL", p_config->full_speed, SIGNAL(toggled(bool)), SLOT(do_emu_full_speed(bool)));
256         
257         if(using_flags->is_use_joystick()) {
258                 action_SetupJoystick = new Action_Control(this, using_flags);
259                 action_SetupJoykey = new Action_Control(this, using_flags);
260         }
261         if(using_flags->is_use_sound_files_fdd()) {
262                 SET_ACTION_SINGLE(action_SoundFilesFDD, true, true, (p_config->sound_noise_fdd != 0));
263         }
264         if(using_flags->is_use_sound_files_relay()) {
265                 SET_ACTION_SINGLE(action_SoundFilesRelay, true, true, (p_config->sound_noise_cmt != 0));
266         }
267         
268         SET_ACTION_CHECKABLE_SINGLE_CONNECT_NOMENU(action_FocusWithClick, "actionFocus_With_Click", p_config->focus_with_click, SIGNAL(toggled(bool)), SLOT(do_set_window_focus_type(bool)));
269
270         action_Logging_FDC = NULL;
271         if(using_flags->is_use_fd()) {
272                 SET_ACTION_SINGLE(action_Logging_FDC, true, true, (p_config->special_debug_fdc != 0));
273                 connect(action_Logging_FDC, SIGNAL(toggled(bool)), this, SLOT(do_set_logging_fdc(bool)));
274         }
275 #if !defined(Q_OS_WIN)
276         SET_ACTION_SINGLE(action_LogToSyslog, true, true, (p_config->log_to_syslog != 0));
277         
278         menuDevLogToSyslog = new QMenu(this);
279         menuDevLogToSyslog->setToolTipsVisible(true);
280         for(int i = 0; i < (CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1); i++) {
281                 action_DevLogToSyslog[i] = new Action_Control(this, using_flags);
282                 action_DevLogToSyslog[i]->setCheckable(true);
283                 action_DevLogToSyslog[i]->setEnabled(false);
284                 action_DevLogToSyslog[i]->binds->setValue1(i);
285                 menuDevLogToSyslog->addAction(action_DevLogToSyslog[i]);
286                 if(p_config->dev_log_to_syslog[i][0]) action_DevLogToSyslog[i]->setChecked(true);
287                 connect(action_DevLogToSyslog[i], SIGNAL(toggled(bool)),
288                                 action_DevLogToSyslog[i], SLOT(do_set_dev_log_to_syslog(bool)));
289                 connect(action_DevLogToSyslog[i], SIGNAL(sig_set_dev_log_to_syslog(int, bool)),
290                                 this, SLOT(do_set_dev_log_to_syslog(int, bool)));
291         }
292 #endif
293         
294         SET_ACTION_SINGLE(action_LogToConsole, true, true, (p_config->log_to_console != 0));
295
296         //menuDevLogToConsole = new QMenu(menuEmulator);
297         menuDevLogToConsole = new QMenu(this);
298         menuDevLogToConsole->setToolTipsVisible(true);
299
300         SET_ACTION_CONTROL_ARRAY(0, (CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1),
301                                                          this, using_flags,
302                                                          menuDevLogToConsole, action_DevLogToConsole, true, false,
303                                                          dev_log_to_console,
304                                                          SIGNAL(toggled(bool)),
305                                                          SLOT(do_set_dev_log_to_console(bool)),
306                                                          SIGNAL(sig_set_dev_log_to_console(int, bool)),
307                                                          SLOT(do_set_dev_log_to_console(int, bool)));
308         
309         action_LogView = new Action_Control(this, using_flags);
310         connect(action_LogView, SIGNAL(triggered()),
311                         this, SLOT(rise_log_viewer()));
312         
313         long cpus = -1;
314 #if defined(Q_OS_LINUX)
315         {
316                 cpus = sysconf(_SC_NPROCESSORS_ONLN);
317         }
318 #endif
319         menu_SetFixedCpu = NULL;
320         action_ResetFixedCpu = NULL;
321         for(i = 0; i < 128; i++) {
322                 action_SetFixedCpu[i] = NULL;
323         }
324         if(cpus > 0) {
325                 menu_SetFixedCpu = new QMenu(this);
326                 menu_SetFixedCpu->setToolTipsVisible(true);
327                 actionGroup_SetFixedCpu = new QActionGroup(this);
328                 actionGroup_SetFixedCpu->setExclusive(true);
329                 if(cpus >= 128) cpus = 128;
330                 
331                 action_ResetFixedCpu = new Action_Control(this, using_flags);
332                 action_ResetFixedCpu->setObjectName(QString::fromUtf8("action_SetFixedCpu", -1) + tmps);
333                 action_ResetFixedCpu->setCheckable(true);
334                 action_ResetFixedCpu->binds->setValue1(-1);
335                 actionGroup_SetFixedCpu->addAction(action_ResetFixedCpu);
336                 menu_SetFixedCpu->addAction(action_ResetFixedCpu);
337                 connect(action_ResetFixedCpu, SIGNAL(triggered()),
338                                 action_ResetFixedCpu->binds, SLOT(do_select_fixed_cpu(void)));
339                 connect(action_ResetFixedCpu->binds, SIGNAL(sig_set_fixed_cpu(int)),
340                                 this, SLOT(do_select_fixed_cpu(int)));
341                 
342                 for(i = 0; i < cpus; i++) {
343                         tmps = QString::number(i);
344                         action_SetFixedCpu[i] = new Action_Control(this, using_flags);
345                         action_SetFixedCpu[i]->setObjectName(QString::fromUtf8("action_SetFixedCpu", -1) + tmps);
346                         action_SetFixedCpu[i]->setCheckable(true);
347                         action_SetFixedCpu[i]->binds->setValue1(i);
348                         actionGroup_SetFixedCpu->addAction(action_SetFixedCpu[i]);
349                         menu_SetFixedCpu->addAction(action_SetFixedCpu[i]);
350                         connect(action_SetFixedCpu[i], SIGNAL(triggered()),
351                                         action_SetFixedCpu[i]->binds, SLOT(do_select_fixed_cpu(void)));
352                         connect(action_SetFixedCpu[i]->binds, SIGNAL(sig_set_fixed_cpu(int)),
353                                         this, SLOT(do_select_fixed_cpu(int)));
354                 }
355         }
356         menu_SetRenderPlatform = new QMenu(this);
357         menu_SetRenderPlatform->setToolTipsVisible(true);
358         actionGroup_SetRenderPlatform = new QActionGroup(this);
359         actionGroup_SetRenderPlatform->setExclusive(true);
360         {
361                         int render_type = p_config->render_platform;
362                         int _major_version = p_config->render_major_version;
363                         //int _minor_version = p_config->render_minor_version; // ToDo
364                         for(i = 0; i < MAX_RENDER_PLATFORMS; i++) {
365                                 tmps = QString::number(i);
366                                 action_SetRenderPlatform[i] = new Action_Control(this, using_flags);
367                                 action_SetRenderPlatform[i]->setObjectName(QString::fromUtf8("action_SetRenderPlatform", -1) + tmps);
368                                 action_SetRenderPlatform[i]->setCheckable(true);
369                                 action_SetRenderPlatform[i]->binds->setValue1(i);
370                                 actionGroup_SetRenderPlatform->addAction(action_SetRenderPlatform[i]);
371                                 menu_SetRenderPlatform->addAction(action_SetRenderPlatform[i]);
372                                 if(i >= RENDER_PLATFORMS_END) {
373                                         action_SetRenderPlatform[i]->setVisible(false);
374                                 } else {
375                                         if(render_type == CONFIG_RENDER_PLATFORM_OPENGL_ES) {
376                                                 if(_major_version >= 2) {
377                                                         if(i == RENDER_PLATFORMS_OPENGL_ES_2) {
378                                                                 action_SetRenderPlatform[i]->setChecked(true);
379                                                         }
380                                                 }
381                                         } else if(render_type == CONFIG_RENDER_PLATFORM_OPENGL_MAIN) {
382                                                 if(_major_version >= 3) {
383                                                         if(i == RENDER_PLATFORMS_OPENGL3_MAIN) {
384                                                                 action_SetRenderPlatform[i]->setChecked(true);
385                                                         }
386                                                 } else if(i == RENDER_PLATFORMS_OPENGL2_MAIN) {
387                                                         action_SetRenderPlatform[i]->setChecked(true);
388                                                 }
389                                         } else if(render_type == CONFIG_RENDER_PLATFORM_OPENGL_CORE) {
390                                                 if(i == RENDER_PLATFORMS_OPENGL_CORE) {
391                                                         action_SetRenderPlatform[i]->setChecked(true);
392                                                 }                                               
393                                         }                                               
394                                 }
395                                 connect(action_SetRenderPlatform[i], SIGNAL(triggered()),
396                                                 action_SetRenderPlatform[i], SLOT(do_select_render_platform(void)));
397                                 connect(action_SetRenderPlatform[i], SIGNAL(sig_select_render_platform(int)),
398                                                 this, SLOT(do_select_render_platform(int)));
399                         }
400         }
401         action_SetupKeyboard = new Action_Control(this, using_flags);
402
403         action_SetupMovie = new Action_Control(this, using_flags);
404   
405 }
406
407 #if defined(Q_OS_LINUX)
408 //#undef _GNU_SOURCE
409 #endif
410
411 void Ui_MainWindowBase::CreateEmulatorMenu(void)
412 {
413         //menuEmulator->addAction(action_LogRecord);
414         menuEmulator->addAction(action_FocusWithClick);
415         menuEmulator->addAction(menu_DispVirtualMedias->menuAction());
416         menuEmulator->addSeparator();
417         if(using_flags->is_use_auto_key()) {
418                 menuEmulator->addAction(action_UseRomaKana);
419         }
420         if(using_flags->is_use_joystick()) {
421                 menuEmulator->addAction(action_UseJoykey);
422         }               
423         menuEmulator->addAction(action_NumPadEnterAsFullkey);
424         menuEmulator->addSeparator();
425         menuEmulator->addAction(actionSpeed_FULL);
426         if(menu_SetFixedCpu != NULL) {
427                 menuEmulator->addAction(menu_SetFixedCpu->menuAction());
428         }
429         menuEmulator->addSeparator();
430         menuEmulator->addAction(menu_EmulateCursorAs->menuAction());
431         if(action_Logging_FDC != NULL) {
432                 menuEmulator->addSeparator();
433                 menuEmulator->addAction(action_Logging_FDC);
434         }
435         menuEmulator->addAction(action_PrintCpuStatistics);
436         menuEmulator->addSeparator();
437         menuEmulator->addAction(action_LogToConsole);
438         menuEmulator->addAction(menuDevLogToConsole->menuAction());
439         menuEmulator->addSeparator();
440 #if !defined(Q_OS_WIN)
441         menuEmulator->addAction(action_LogToSyslog);
442         menuEmulator->addAction(menuDevLogToSyslog->menuAction());
443 #endif
444         menuEmulator->addSeparator();
445         menuEmulator->addAction(action_LogView);
446         menuEmulator->addSeparator();
447         if(using_flags->is_use_sound_files_fdd() || using_flags->is_use_sound_files_relay()) {
448                 if(using_flags->is_use_sound_files_fdd())     menuEmulator->addAction(action_SoundFilesFDD);
449                 if(using_flags->is_use_sound_files_relay())   menuEmulator->addAction(action_SoundFilesRelay);
450                 menuEmulator->addSeparator();
451         }
452         menuEmulator->addAction(menu_SetRenderPlatform->menuAction());
453         
454         if(using_flags->is_use_joystick()) {
455                 menuEmulator->addAction(action_SetupJoystick);
456                 menuEmulator->addAction(action_SetupJoykey);
457         }
458         menuEmulator->addAction(action_SetupKeyboard);
459         menuEmulator->addAction(action_SetupMovie);
460 }
461
462 void Ui_MainWindowBase::retranslateEmulatorMenu(void)
463 {
464         if(using_flags->is_use_joystick()) {
465                 action_SetupJoystick->setText(QApplication::translate("MenuEmulator", "Configure Joysticks", 0));
466                 action_SetupJoystick->setToolTip(QApplication::translate("MenuEmulator", "Configure assigning buttons/directions of joysticks.", 0));
467                 action_SetupJoykey->setText(QApplication::translate("MenuEmulator", "Configure Joystick to KEYBOARD", 0));
468                 action_SetupJoykey->setToolTip(QApplication::translate("MenuEmulator", "Configure assigning keycode to joystick buttons.\nThis feature using Joystick #1.", 0));
469                 action_UseJoykey->setText(QApplication::translate("MenuEmulator", "Joystick to KEYBOARD", 0));
470                 action_UseJoykey->setToolTip(QApplication::translate("MenuEmulator", "Use Joystick axis/buttons to input keyboard.\nThis feature using Joystick #1.", 0));
471                 action_SetupJoystick->setIcon(QIcon(":/icon_gamepad.png"));
472         }
473         if(using_flags->is_use_auto_key()) {
474                 action_UseRomaKana->setText(QApplication::translate("MenuEmulator", "ROMA-KANA Conversion", 0));
475                 action_UseRomaKana->setToolTip(QApplication::translate("MenuEmulator", "Use romaji-kana conversion assistant of emulator.", 0));
476         }
477         actionSpeed_FULL->setText(QApplication::translate("MenuEmulator", "Emulate as FULL SPEED", 0));
478         actionSpeed_FULL->setToolTip(QApplication::translate("MenuEmulator", "Run emulation thread without frame sync.", 0));
479         
480         action_NumPadEnterAsFullkey->setText(QApplication::translate("MenuEmulator", "Numpad's Enter is Fullkey's", 0));
481         action_NumPadEnterAsFullkey->setToolTip(QApplication::translate("MenuEmulator", "Numpad's enter key makes full key's enter.\nUseful for some VMs.", 0));
482
483         action_PrintCpuStatistics->setText(QApplication::translate("MenuEmulator", "Print Statistics", 0));
484         action_PrintCpuStatistics->setToolTip(QApplication::translate("MenuEmulator", "Print statistics of CPUs (or some devices).\nUseful for debugging.", 0));
485
486         if(action_Logging_FDC != NULL) {
487                 action_Logging_FDC->setText(QApplication::translate("MenuEmulator", "FDC: Turn ON Debug log.", 0));
488                 action_Logging_FDC->setToolTip(QApplication::translate("MenuEmulator", "Turn ON debug logging for FDCs.Useful to resolve issues from guest software.", 0));
489         }
490         // ToDo
491         menu_EmulateCursorAs->setTitle(QApplication::translate("MenuEmulator", "Emulate cursor as", 0));
492         menu_EmulateCursorAs->setToolTip(QApplication::translate("MenuEmulator", "Emulate cursor as ten-key.", 0));
493         action_EmulateCursorAs[0]->setText(QApplication::translate("MenuEmulator", "None", 0));
494         action_EmulateCursorAs[1]->setText(QApplication::translate("MenuEmulator", "2 4 6 8", 0));
495         action_EmulateCursorAs[2]->setText(QApplication::translate("MenuEmulator", "1 2 3 5", 0));
496         
497         menuEmulator->setTitle(QApplication::translate("MenuEmulator", "Emulator", 0));
498
499         
500         action_FocusWithClick->setText(QApplication::translate("MenuEmulator", "Focus on click", 0));
501         action_FocusWithClick->setToolTip(QApplication::translate("MenuEmulator", "If set, focus with click, not mouse-over.", 0));
502         
503         action_SetupKeyboard->setText(QApplication::translate("MenuEmulator", "Configure Keyboard", 0));
504         action_SetupKeyboard->setToolTip(QApplication::translate("MenuEmulator", "Set addignation of keyboard.", 0));
505         action_SetupKeyboard->setIcon(QIcon(":/icon_keyboard.png"));
506         action_SetupMovie->setText(QApplication::translate("MenuEmulator", "Configure movie encoding", 0));
507         action_SetupMovie->setToolTip(QApplication::translate("MenuEmulator", "Configure parameters of movie encoding.", 0));
508
509         action_LogToConsole->setText(QApplication::translate("MenuEmulator", "Log to Console", 0));
510         action_LogToConsole->setToolTip(QApplication::translate("MenuEmulator", "Enable logging to STDOUT if checked.", 0));
511 #if !defined(Q_OS_WIN)
512         action_LogToSyslog->setText(QApplication::translate("MenuEmulator", "Log to Syslog", 0));
513         action_LogToSyslog->setToolTip(QApplication::translate("MenuEmulator", "Enable logging to SYSTEM log.\nMay be having permission to system and using *nix OS.", 0));
514         //action_LogRecord->setText(QApplication::translate("MenuEmulator", "Recording Log", 0));
515 #endif
516         if(using_flags->is_use_sound_files_fdd()) {
517                 action_SoundFilesFDD->setText(QApplication::translate("MenuEmulator", "Sound FDD Seek", 0));
518                 action_SoundFilesFDD->setToolTip(QApplication::translate("MenuEmulator", "Enable FDD HEAD seeking sound.\nNeeds sound file.\nSee HELP->READMEs->Bios and Key assigns", 0));
519         }
520         if(using_flags->is_use_sound_files_relay()) {
521                 action_SoundFilesRelay->setText(QApplication::translate("MenuEmulator", "Sound CMT Relay and Buttons", 0));
522                 action_SoundFilesRelay->setToolTip(QApplication::translate("MenuEmulator", "Enable CMT relay's sound and buttons's sounds.\nNeeds sound file.\nSee HELP->READMEs->Bios and Key assigns", 0));
523                 if(using_flags->is_tape_binary_only()) action_SoundFilesRelay->setEnabled(false);
524         }
525         menuDevLogToConsole->setTitle(QApplication::translate("MenuEmulator", "Per Device", 0));
526 #if !defined(Q_OS_WIN)
527         menuDevLogToSyslog->setTitle(QApplication::translate("MenuEmulator", "Per Device", 0));
528 #endif
529         menu_SetRenderPlatform->setTitle(QApplication::translate("MenuEmulator", "Video Platform(need restart)", 0));
530         if(menu_SetFixedCpu != NULL) {
531                 menu_SetFixedCpu->setTitle(QApplication::translate("MenuEmulator", "Occupy Fixed CPU", 0));
532                 
533                 if(action_ResetFixedCpu != NULL) {
534                         action_ResetFixedCpu->setText(QApplication::translate("MenuEmulator", "Using all CPU", 0));
535                         action_ResetFixedCpu->setToolTip(QApplication::translate("MenuEmulator", "Using all CPU to emulation.\nReset cpu usings.", 0));
536                 }
537                 for(int ii = 0; ii < 128; ii++) {
538                         if(action_SetFixedCpu[ii] != NULL) {
539                                 QString numname = QString::number(ii);
540                                 QString numtip = QApplication::translate("MenuEmulator", "Set Fixed logical CPU #%1 to be occupied by emulation thread.\nMay useful for heavy VM (i.e. using i386 CPU).\nStill implement LINUX host only, not another operating systems.", 0).arg(numname);
541                                 action_SetFixedCpu[ii]->setText(QString::fromUtf8("CPU #") + numname);
542                                 action_SetFixedCpu[ii]->setToolTip(numtip);
543                         }
544                 }
545         }
546         action_SetRenderPlatform[RENDER_PLATFORMS_OPENGL_ES_2]->setText(QApplication::translate("MenuEmulator", "OpenGL ES v2.0", 0));
547         action_SetRenderPlatform[RENDER_PLATFORMS_OPENGL3_MAIN]->setText(QApplication::translate("MenuEmulator", "OpenGLv3.0", 0));
548         action_SetRenderPlatform[RENDER_PLATFORMS_OPENGL2_MAIN]->setText(QApplication::translate("MenuEmulator", "OpenGLv2.0", 0));
549         action_SetRenderPlatform[RENDER_PLATFORMS_OPENGL_CORE]->setText(QApplication::translate("MenuEmulator", "OpenGL(Core profile)", 0));
550         
551         action_SetRenderPlatform[RENDER_PLATFORMS_OPENGL_ES_2]->setToolTip(QApplication::translate("MenuEmulator", "Using OpenGL ES v2.0.\nThis is recommanded.\nIf changed, need to restart this emulator.", 0));
552         action_SetRenderPlatform[RENDER_PLATFORMS_OPENGL3_MAIN]->setToolTip(QApplication::translate("MenuEmulator", "Using OpenGL v3.0(MAIN).\nThis is recommanded.\nIf changed, need to restart this emulator.", 0));
553         action_SetRenderPlatform[RENDER_PLATFORMS_OPENGL2_MAIN]->setToolTip(QApplication::translate("MenuEmulator", "Using OpenGLv2.\nThis is fallback of some systems.\nIf changed, need to restart this emulator.", 0));
554         action_SetRenderPlatform[RENDER_PLATFORMS_OPENGL_CORE]->setToolTip(QApplication::translate("MenuEmulator", "Using OpenGL core profile.\nThis still not implement.\nIf changed, need to restart this emulator.", 0));
555
556         menu_DispVirtualMedias->setTitle(QApplication::translate("MenuEmulator", "Show Virtual Medias.", 0));
557         action_DispVirtualMedias[0]->setText(QApplication::translate("MenuEmulator", "None.", 0));
558         action_DispVirtualMedias[1]->setText(QApplication::translate("MenuEmulator", "Upper.", 0));
559         action_DispVirtualMedias[2]->setText(QApplication::translate("MenuEmulator", "Lower.", 0));
560         //action_DispVirtualMedias[3]->setText(QApplication::translate("MenuEmulator", "Left.", 0));
561         //action_DispVirtualMedias[4]->setText(QApplication::translate("MenuEmulator", "Right.", 0));
562         action_LogView->setText(QApplication::translate("MenuEmulator", "View Log", 0));
563         action_LogView->setToolTip(QApplication::translate("MenuEmulator", "View emulator logs with a dialog.", 0));
564 }
565
566 void Ui_MainWindowBase::retranselateUi_Depended_OSD(void)
567 {
568         for(int i=0; i < (CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1) ; i++) {
569                 const _TCHAR *p;
570                 p = using_flags->get_vm_node_name(i);
571                 do_update_device_node_name(i, p);
572         }
573 }