Keybindings UI is displayed based on the option used (--debugger, -- alpine)
[clinton/Virtual-Jaguar-Rx.git] / src / gui / keybindingstab.cpp
CommitLineData
024bfc46
JPM
1//
2// keybindingstab.cpp: Key Bindings tab on the settings dialog
3//
4// Part of the Virtual Jaguar Project
5//
6// JPM = Jean-Paul Mari <djipi.mari@gmail.com>
7//
8// WHO WHEN WHAT
9// --- ---------- ------------------------------------------------------------
10// JPM 09/10/2017 Created this file
11
12#include "keybindingstab.h"
13#include "settings.h"
14
15
16//
17KeyBindings KeyBindingsTable[KB_END] = {
0d612b97
JPM
18 { KB_TYPEGENERAL, "KB_Quit", "Quit", "Quit keybinding", "Ctrl+Q", NULL, NULL },
19 { KB_TYPEGENERAL, "KB_PickFile", "Pick file", "Pick file keybinding", "Ctrl+I", NULL, NULL },
20 { KB_TYPEGENERAL, "KB_Configure", "Configure", "Configure keybinding", "Ctrl+C", NULL, NULL },
21 { KB_TYPEGENERAL, "KB_EmuStatus", "Emulator Status", "Emulator status keybinding", "Ctrl+S", NULL, NULL },
22 { KB_TYPEGENERAL, "KB_Pause", "Pause", "Pause keybinding", "Esc", NULL, NULL },
23 { KB_TYPEGENERAL, "KB_FrameAdvance", "Frame Advance", "Frame advance keybinding", "F7", NULL, NULL },
24 { KB_TYPEDEBUGGER, "KB_Restart", "Restart", "Restart keybinding", "Ctrl+Shift+F5", NULL, NULL },
25 { KB_TYPEDEBUGGER, "KB_StepInto", "Step Into", "Step into keybinding", "F11", NULL, NULL },
26 { KB_TYPEDEBUGGER, "KB_StepOver", "Step Over", "Step over kebinding", "F10", NULL, NULL },
27 { KB_TYPEGENERAL, "KB_FullScreen", "Full Screen", "Full screen kebinding", "F9", NULL, NULL }
024bfc46
JPM
28 };
29
30
31//
32#define NBKEYBINDINGS sizeof(KeyBindingsTable)/sizeof(KeyBindings)
33
34
35//
36KeyBindingsTab::KeyBindingsTab(QWidget * parent/*= 0*/): QWidget(parent)
37{
38 size_t i;
39
40 QVBoxLayout *layout1 = new QVBoxLayout;
41 QVBoxLayout *layout2 = new QVBoxLayout;
42
43 // Initialisation for each layout line
44 for (i = 0; i < NBKEYBINDINGS; i++)
45 {
0d612b97 46 // Prepare the keybinding line
024bfc46
JPM
47 layout1->addWidget(KeyBindingsTable[i].KBLabel = new QLabel(KeyBindingsTable[i].KBNameLabel));
48 layout2->addWidget(KeyBindingsTable[i].KBLineEdit = new QLineEdit(""));
49 KeyBindingsTable[i].KBLineEdit->setMaxLength(30);
50 KeyBindingsTable[i].KBLineEdit->setPlaceholderText(KeyBindingsTable[i].KBPlaceholderText);
0d612b97
JPM
51
52 // Check if keybinding can be editable
53 if (KeyBindingsTable[i].KBType != KB_TYPEGENERAL)
54 {
55 if (vjs.hardwareTypeAlpine && (KeyBindingsTable[i].KBType & KB_TYPEALPINE))
56 {
57 }
58 else\r
59 {\r
60 if (vjs.softTypeDebugger && (KeyBindingsTable[i].KBType & KB_TYPEDEBUGGER))\r
61 {\r
62 }\r
63 else\r
64 {\r
65 KeyBindingsTable[i].KBLabel->hide();
66 KeyBindingsTable[i].KBLineEdit->hide();\r
67 }\r
68 }
69 }
024bfc46
JPM
70 }
71
72 // Layouts setup
73 QHBoxLayout *layout3 = new QHBoxLayout;
74 layout3->addLayout(layout1);
75 layout3->addLayout(layout2);
76 QVBoxLayout *layout4 = new QVBoxLayout;
77 layout4->addLayout(layout3);
78 setLayout(layout4);
79}
80
81
82KeyBindingsTab::~KeyBindingsTab()
83{
84}
85
86
87// Load / Update the tabs dialog from the settings
88void KeyBindingsTab::GetSettings(void)
89{
90 size_t i;
91
92 for (i = 0; i < NBKEYBINDINGS; i++)
93 {
94 KeyBindingsTable[i].KBLineEdit->setText(vjs.KBContent[i].KBSettingValue);
95 }
96}
97
98
99// Save / Update the settings from the tabs dialog
100void KeyBindingsTab::SetSettings(void)
101{
102 size_t i;
103
104 for (i = 0; i < NBKEYBINDINGS; i++)
105 {
106 //strcpy(vjs.KBContent[i].KBSettingName, KeyBindingsTable[i].KBNameSetting);
107 strcpy(vjs.KBContent[i].KBSettingValue, KeyBindingsTable[i].KBLineEdit->text().toUtf8().data());
108 }
109}
110