diff --git a/external/sciterui b/external/sciterui
index a6b88385..ac1a1ad1 160000
--- a/external/sciterui
+++ b/external/sciterui
@@ -1 +1 @@
-Subproject commit a6b88385f3e903011502d8257ffb08035b6c49cb
+Subproject commit ac1a1ad11b8d2af176b5d625706a8b3357688a5e
diff --git a/lang/english/css/input_config.css b/lang/english/css/input_config.css
new file mode 100644
index 00000000..3bc3ef07
--- /dev/null
+++ b/lang/english/css/input_config.css
@@ -0,0 +1,143 @@
+button
+{
+ color: #eff0f1;
+ background: #232728;
+ border: 1px solid #55575a;
+ font-family: 'Segoe UI', Arial, sans-serif;
+ font-size: 0.8rem;
+ padding: 0.2rem;
+ min-width: 5rem;
+}
+
+button:hover
+{
+ border: 1px solid #3cafe9;
+}
+
+button:active
+{
+ background: #3cafe9;
+}
+
+.tabs {
+ display: flex;
+ font-size: 0;
+}
+
+.tab-button {
+ background: #2b2f32;
+ border: 1px solid #55575a;
+ border-bottom: 1px solid #76787d;
+ border-radius: 2px 2px 0 0;
+ color: #eff0f1;
+ font-family: 'Segoe UI', Arial, sans-serif;
+ font-size: 0.8rem;
+ padding: 0.2rem 1.3rem 0.2rem 1.3rem;
+ margin: 0;
+ position: relative;
+ z-index: 2;
+ margin-bottom: -1px;
+ min-width: 2rem;
+}
+
+.tab-button:hover {
+ border: 1px solid #55575a;
+ border-bottom: 1px solid #76787d;
+}
+
+.tab-button:active {
+ background: #2b2f32;
+}
+
+.tab-button.active {
+ background: #30373b;
+ border-color: #76787d;
+ border-bottom: 1px solid #30373b;
+}
+
+.controller-body
+{
+ background: #30373b;
+ border: 1px solid #76787d;
+ width: 100%%;
+ height: 100%%;
+ flow: horizontal;
+ padding: 1em;
+ font-family: 'Segoe UI', Arial, sans-serif;
+ font-size: 0.8rem;
+ color: #eff0f1;
+}
+
+.config-left,
+.config-right
+{
+ width: 13rem;
+}
+
+.config-center
+{
+ width: 100%%;
+}
+
+.input-group
+{
+ position: relative;
+ background-color: #30373b;
+ border: 1px solid #55575a;
+ padding: 1.2rem 0.5rem 0.5rem 0.5rem;
+ margin: 0 0 20px 0;
+}
+
+.input-grid-directional {
+ text-align: center;
+ flow: grid( 1 1, 2 3, 4 4, 5 6, 7 7, 8 8);
+ padding: 0.5rem 0 0;
+}
+
+.group-title
+{
+ position: absolute;
+ top: -0.5rem;
+ left: 0;
+ margin: 0 auto;
+ background-color: #30373b;
+ padding: 0 6px;
+ font-size: 0.8rem;
+ color: #f0f0f0;
+}
+
+.input-row
+{
+ display: inline-block;
+ position: relative;
+ background-color: #30373b;
+ border: 1px solid #55575a;
+ padding: 0.4em 0.2rem 0.2rem 0.2rem;
+ border-radius: 2px;
+ margin: 0 50%% 0.9rem 50%%;
+ width: 50%%;
+}
+
+.input-row span
+{
+ position: absolute;
+ top: -0.7rem;
+ left: 0;
+ margin: 0 auto;
+ background-color: #30373b;
+ padding: 0 6px;
+ font-size: 0.8rem;
+ color: #f0f0f0;
+}
+
+.input-row button
+{
+ min-width: 3.8rem;
+ height: 1.4rem;
+}
+
+.footer
+{
+ padding: 0.5rem 0 0;
+ text-align: right;
+}
\ No newline at end of file
diff --git a/lang/english/css/main_window.css b/lang/english/css/main_window.css
index 09bad0f0..869edd25 100644
--- a/lang/english/css/main_window.css
+++ b/lang/english/css/main_window.css
@@ -1,7 +1,7 @@
html
{
border: none;
- background-color: #232629;
+ background-color: #30373b;
}
html[window-state="maximized"]
diff --git a/lang/english/html/input_config.html b/lang/english/html/input_config.html
new file mode 100644
index 00000000..d68676e5
--- /dev/null
+++ b/lang/english/html/input_config.html
@@ -0,0 +1,85 @@
+
+
+
+
+ Configure Input
+
+
+
Configure input
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lang/english/html/main_window.html b/lang/english/html/main_window.html
index 12e378e6..a9ba8afa 100644
--- a/lang/english/html/main_window.html
+++ b/lang/english/html/main_window.html
@@ -4,7 +4,7 @@
NxEmu
-
NxEmu
+
NxEmu
diff --git a/src/nxemu/nxemu.vcxproj b/src/nxemu/nxemu.vcxproj
index d70da203..3ce2df70 100644
--- a/src/nxemu/nxemu.vcxproj
+++ b/src/nxemu/nxemu.vcxproj
@@ -43,6 +43,7 @@
+
@@ -57,6 +58,7 @@
+
diff --git a/src/nxemu/nxemu.vcxproj.filters b/src/nxemu/nxemu.vcxproj.filters
index 336261d8..cbf027be 100644
--- a/src/nxemu/nxemu.vcxproj.filters
+++ b/src/nxemu/nxemu.vcxproj.filters
@@ -75,6 +75,9 @@
Source Files\user_interface
+
+ Source Files\user_interface\settings
+
@@ -113,6 +116,9 @@
Header Files\user_interface
+
+ Header Files\user_interface\settings
+
diff --git a/src/nxemu/user_interface/sciter_main_window.cpp b/src/nxemu/user_interface/sciter_main_window.cpp
index 63fe819a..bf5cdc29 100644
--- a/src/nxemu/user_interface/sciter_main_window.cpp
+++ b/src/nxemu/user_interface/sciter_main_window.cpp
@@ -1,4 +1,5 @@
#include "sciter_main_window.h"
+#include "settings/input_config.h"
#include "settings/settings_config.h"
#include "settings/ui_settings.h"
#include
@@ -49,6 +50,7 @@ void SciterMainWindow::ResetMenu()
fileMenu.push_back(MenuBarItem(ID_FILE_EXIT, "Exit"));
MenuBarItemList OptionsMenu;
+ OptionsMenu.push_back(MenuBarItem(ID_OPTIONS_INPUT, "Configure Input..."));
OptionsMenu.push_back(MenuBarItem(ID_OPTIONS_SETTINGS, "Settings..."));
MenuBarItemList mainTitleMenu;
@@ -69,7 +71,7 @@ bool SciterMainWindow::Show(void)
WINDOW_WIDTH = 760,
};
- if (!m_sciterUI.WindowCreate(nullptr, "main_window.html", 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, m_window))
+ if (!m_sciterUI.WindowCreate(nullptr, "main_window.html", 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, SUIW_MAIN, m_window))
{
return false;
}
@@ -200,6 +202,11 @@ void SciterMainWindow::OnSettings(void)
SettingConfig().Display((HWND)m_window->GetHandle());
}
+void SciterMainWindow::OnInputConfig(void)
+{
+ InputConfig(m_sciterUI).Display((void *)m_window->GetHandle());
+}
+
void SciterMainWindow::OnRecetGame(uint32_t fileIndex)
{
Stringlist & recentFiles = uiSettings.recentFiles;
@@ -221,6 +228,7 @@ void SciterMainWindow::OnMenuItem(int32_t id, SCITER_ELEMENT /*item*/)
case ID_FILE_OPEN_GAME: OnOpenGame(); break;
case ID_FILE_EXIT: OnFileExit(); break;
case ID_OPTIONS_SETTINGS: OnSettings(); break;
+ case ID_OPTIONS_INPUT: OnInputConfig(); break;
default:
if (id >= ID_RECENT_FILE_START && id <= ID_RECENT_FILE_END)
{
diff --git a/src/nxemu/user_interface/sciter_main_window.h b/src/nxemu/user_interface/sciter_main_window.h
index 6f9e48b8..74dd20d7 100644
--- a/src/nxemu/user_interface/sciter_main_window.h
+++ b/src/nxemu/user_interface/sciter_main_window.h
@@ -16,6 +16,7 @@ class SciterMainWindow :
ID_FILE_EXIT,
// Options Menu
+ ID_OPTIONS_INPUT,
ID_OPTIONS_SETTINGS,
// Recent files
@@ -44,6 +45,7 @@ private:
void OnOpenGame(void);
void OnFileExit(void);
void OnSettings(void);
+ void OnInputConfig(void);
void OnRecetGame(uint32_t fileIndex);
// IWindowDestroySink
diff --git a/src/nxemu/user_interface/settings/input_config.cpp b/src/nxemu/user_interface/settings/input_config.cpp
new file mode 100644
index 00000000..11a3a9b7
--- /dev/null
+++ b/src/nxemu/user_interface/settings/input_config.cpp
@@ -0,0 +1,26 @@
+#include "input_config.h"
+#include
+
+InputConfig::InputConfig(ISciterUI & SciterUI) :
+ m_sciterUI(SciterUI),
+ m_window(nullptr)
+{
+}
+
+InputConfig::~InputConfig()
+{
+}
+
+void InputConfig::Display(void * parentWindow)
+{
+ enum
+ {
+ WINDOW_HEIGHT = 300,
+ WINDOW_WIDTH = 300,
+ };
+
+ if (!m_sciterUI.WindowCreate(parentWindow, "input_config.html", 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, SUIW_CHILD, m_window))
+ {
+ return;
+ }
+}
diff --git a/src/nxemu/user_interface/settings/input_config.h b/src/nxemu/user_interface/settings/input_config.h
new file mode 100644
index 00000000..ea25efb0
--- /dev/null
+++ b/src/nxemu/user_interface/settings/input_config.h
@@ -0,0 +1,21 @@
+#pragma once
+
+__interface ISciterUI;
+__interface ISciterWindow;
+
+class InputConfig
+{
+public:
+ InputConfig(ISciterUI& SciterUI);
+ ~InputConfig();
+
+ void Display(void * parentWindow);
+
+private:
+ InputConfig() = delete;
+ InputConfig(const InputConfig&) = delete;
+ InputConfig& operator=(const InputConfig&) = delete;
+
+ ISciterUI & m_sciterUI;
+ ISciterWindow * m_window;
+};