Update UI (#911)

* rework UI

* more

* more

* more
This commit is contained in:
Logan McNaughton
2026-05-19 08:50:00 +02:00
committed by GitHub
parent a78393ca91
commit 41e66825d0
25 changed files with 856 additions and 598 deletions
+1
View File
@@ -3,6 +3,7 @@ fn main() {
println!("cargo::rerun-if-changed=retroachievements");
println!("cargo::rerun-if-changed=src/compat");
println!("cargo::rerun-if-changed=data/translations");
println!("cargo::rerun-if-changed=data/ui");
#[cfg(feature = "gui")]
{
+56 -48
View File
@@ -2,7 +2,7 @@
msgid ""
msgstr ""
"Project-Id-Version: gopher64\n"
"POT-Creation-Date: 2026-05-14 14:53+0000\n"
"POT-Creation-Date: 2026-05-19 06:44+0000\n"
"PO-Revision-Date: 2026-05-11 12:00+0000\n"
"Last-Translator: \n"
"Language-Team: German\n"
@@ -47,42 +47,42 @@ msgctxt "About"
msgid "Donate (via GitHub)"
msgstr "Spenden (über GitHub)"
#: src/ui/gui/appwindow.slint:95
#: src/ui/gui/appwindow.slint:103
msgctxt "Menu"
msgid "Local Game"
msgstr "Lokales Spiel"
#: src/ui/gui/appwindow.slint:96
#: src/ui/gui/appwindow.slint:107
msgctxt "Menu"
msgid "Controller Config"
msgstr "Controller-Konfiguration"
#: src/ui/gui/appwindow.slint:97
#: src/ui/gui/appwindow.slint:111
msgctxt "Menu"
msgid "Netplay"
msgstr "Netplay"
#: src/ui/gui/appwindow.slint:98
#: src/ui/gui/appwindow.slint:115
msgctxt "Menu"
msgid "Cheats"
msgstr "Cheats"
#: src/ui/gui/appwindow.slint:99
#: src/ui/gui/appwindow.slint:119
msgctxt "Menu"
msgid "RetroAchievements"
msgstr "RetroAchievements"
#: src/ui/gui/appwindow.slint:100
#: src/ui/gui/appwindow.slint:123
msgctxt "Menu"
msgid "Settings"
msgstr "Einstellungen"
#: src/ui/gui/appwindow.slint:101
#: src/ui/gui/appwindow.slint:127
msgctxt "Menu"
msgid "About"
msgstr "Über"
#: src/ui/gui/appwindow.slint:195
#: src/ui/gui/appwindow.slint:248
msgctxt "ErrorDialog"
msgid "Error"
msgstr "Fehler"
@@ -107,45 +107,40 @@ msgctxt "Cheats"
msgid "No Cheats Available"
msgstr "Keine Cheats verfügbar"
#: src/ui/gui/controller_page.slint:26
#: src/ui/gui/controller_page.slint:80
msgctxt "ControllerSettingsGrid"
msgid "Enabled"
msgstr "Aktiviert"
#: src/ui/gui/controller_page.slint:93
msgctxt "ControllerSettingsGrid"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:107
msgctxt "ControllerSettingsGrid"
msgid "Profile"
msgstr "Profil"
#: src/ui/gui/controller_page.slint:157
msgctxt "ControllerConfig"
msgid "Controller Configuration"
msgstr "Controller-Konfiguration"
#: src/ui/gui/controller_page.slint:37
#: src/ui/gui/controller_page.slint:168
msgctxt "ControllerConfig"
msgid "Configure Input Profile"
msgstr "Eingabeprofil konfigurieren"
#: src/ui/gui/controller_page.slint:49
#: src/ui/gui/controller_page.slint:176
msgctxt "ControllerConfig"
msgid "Port"
msgstr "Port"
msgid "Controller Settings"
msgstr "Controller-Einstellungen"
#: src/ui/gui/controller_page.slint:60
#: src/ui/gui/controller_page.slint:186
msgctxt "ControllerConfig"
msgid "Enabled"
msgstr "Aktiviert"
#: src/ui/gui/controller_page.slint:73
msgctxt "ControllerConfig"
msgid "Emulate VRU"
msgstr "VRU emulieren"
#: src/ui/gui/controller_page.slint:87
msgctxt "ControllerConfig"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:101
msgctxt "ControllerConfig"
msgid "Profile"
msgstr "Profil"
#: src/ui/gui/controller_page.slint:117
msgctxt "ControllerConfig"
msgid "Controller"
msgstr "Controller"
msgid "Controller Assignment"
msgstr "Controller-Zuweisung"
#: src/ui/gui/input_profile.slint:10
msgctxt "InputProfileDialog"
@@ -486,62 +481,75 @@ msgctxt "RetroAchievements"
msgid "View Supported Games"
msgstr "Unterstützte Spiele anzeigen"
#: src/ui/gui/settings_page.slint:22
#: src/ui/gui/settings_page.slint:23
msgctxt "Settings"
msgid "Settings"
msgstr "Einstellungen"
#: src/ui/gui/settings_page.slint:29
#: src/ui/gui/settings_page.slint:30
msgctxt "Settings"
msgid "Resolution:"
msgstr "Auflösung:"
#: src/ui/gui/settings_page.slint:45
#: src/ui/gui/settings_page.slint:46
msgctxt "Settings"
msgid "SSAA downscaling"
msgstr "SSAA-Herunterskalierung"
#: src/ui/gui/settings_page.slint:56
#: src/ui/gui/settings_page.slint:57
msgctxt "Settings"
msgid "Integer Scaling"
msgstr "Pixelgenaue Skalierung"
#: src/ui/gui/settings_page.slint:67
#: src/ui/gui/settings_page.slint:68
msgctxt "Settings"
msgid "Fullscreen"
msgstr "Vollbild"
#: src/ui/gui/settings_page.slint:78
#: src/ui/gui/settings_page.slint:79
msgctxt "Settings"
msgid "Widescreen (stretch)"
msgstr "16:9 (gestreckt)"
#: src/ui/gui/settings_page.slint:89
#: src/ui/gui/settings_page.slint:90
msgctxt "Settings"
msgid "VSync"
msgstr "VSync"
#: src/ui/gui/settings_page.slint:100
#: src/ui/gui/settings_page.slint:101
msgctxt "Settings"
msgid "Apply CRT shader"
msgstr "CRT-Shader anwenden"
#: src/ui/gui/settings_page.slint:115
#: src/ui/gui/settings_page.slint:116
msgctxt "Settings"
msgid "Overclock N64 CPU (may cause bugs)"
msgstr "N64-CPU übertakten (kann Fehler verursachen)"
#: src/ui/gui/settings_page.slint:126
#: src/ui/gui/settings_page.slint:127
msgctxt "Settings"
msgid "Disable Expansion Pak"
msgstr "Expansion Pak deaktivieren"
#: src/ui/gui/settings_page.slint:137
#: src/ui/gui/settings_page.slint:138
msgctxt "Settings"
msgid "Emulate UNFLoader"
msgstr "UNFLoader emulieren"
#: src/ui/gui/settings_page.slint:149
msgctxt "Settings"
msgid "Emulate VRU"
msgstr "VRU emulieren"
#: src/ui/gui/vru_dialog.slint:7
msgctxt "VruDialog"
msgid "What Would You Like To Say?"
msgstr "Was möchten Sie sagen?"
#~ msgctxt "ControllerConfig"
#~ msgid "Port"
#~ msgstr "Port"
#~ msgctxt "ControllerConfig"
#~ msgid "Controller"
#~ msgstr "Controller"
+56 -48
View File
@@ -2,7 +2,7 @@
msgid ""
msgstr ""
"Project-Id-Version: gopher64\n"
"POT-Creation-Date: 2026-05-14 14:53+0000\n"
"POT-Creation-Date: 2026-05-19 06:44+0000\n"
"PO-Revision-Date: 2026-05-11 12:00+0000\n"
"Last-Translator: Gemini\n"
"Language-Team: Spanish (Spain)\n"
@@ -47,42 +47,42 @@ msgctxt "About"
msgid "Donate (via GitHub)"
msgstr "Donar (a través de GitHub)"
#: src/ui/gui/appwindow.slint:95
#: src/ui/gui/appwindow.slint:103
msgctxt "Menu"
msgid "Local Game"
msgstr "Juego local"
#: src/ui/gui/appwindow.slint:96
#: src/ui/gui/appwindow.slint:107
msgctxt "Menu"
msgid "Controller Config"
msgstr "Config. del mando"
#: src/ui/gui/appwindow.slint:97
#: src/ui/gui/appwindow.slint:111
msgctxt "Menu"
msgid "Netplay"
msgstr "Netplay"
#: src/ui/gui/appwindow.slint:98
#: src/ui/gui/appwindow.slint:115
msgctxt "Menu"
msgid "Cheats"
msgstr "Trucos"
#: src/ui/gui/appwindow.slint:99
#: src/ui/gui/appwindow.slint:119
msgctxt "Menu"
msgid "RetroAchievements"
msgstr "RetroAchievements"
#: src/ui/gui/appwindow.slint:100
#: src/ui/gui/appwindow.slint:123
msgctxt "Menu"
msgid "Settings"
msgstr "Ajustes"
#: src/ui/gui/appwindow.slint:101
#: src/ui/gui/appwindow.slint:127
msgctxt "Menu"
msgid "About"
msgstr "Acerca de"
#: src/ui/gui/appwindow.slint:195
#: src/ui/gui/appwindow.slint:248
msgctxt "ErrorDialog"
msgid "Error"
msgstr "Error"
@@ -107,45 +107,40 @@ msgctxt "Cheats"
msgid "No Cheats Available"
msgstr "No hay trucos disponibles"
#: src/ui/gui/controller_page.slint:26
#: src/ui/gui/controller_page.slint:80
msgctxt "ControllerSettingsGrid"
msgid "Enabled"
msgstr "Activado"
#: src/ui/gui/controller_page.slint:93
msgctxt "ControllerSettingsGrid"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:107
msgctxt "ControllerSettingsGrid"
msgid "Profile"
msgstr "Perfil"
#: src/ui/gui/controller_page.slint:157
msgctxt "ControllerConfig"
msgid "Controller Configuration"
msgstr "Configuración del mando"
#: src/ui/gui/controller_page.slint:37
#: src/ui/gui/controller_page.slint:168
msgctxt "ControllerConfig"
msgid "Configure Input Profile"
msgstr "Configurar perfil de entrada"
#: src/ui/gui/controller_page.slint:49
#: src/ui/gui/controller_page.slint:176
msgctxt "ControllerConfig"
msgid "Port"
msgstr "Puerto"
msgid "Controller Settings"
msgstr "Ajustes del mando"
#: src/ui/gui/controller_page.slint:60
#: src/ui/gui/controller_page.slint:186
msgctxt "ControllerConfig"
msgid "Enabled"
msgstr "Activado"
#: src/ui/gui/controller_page.slint:73
msgctxt "ControllerConfig"
msgid "Emulate VRU"
msgstr "Emular VRU"
#: src/ui/gui/controller_page.slint:87
msgctxt "ControllerConfig"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:101
msgctxt "ControllerConfig"
msgid "Profile"
msgstr "Perfil"
#: src/ui/gui/controller_page.slint:117
msgctxt "ControllerConfig"
msgid "Controller"
msgstr "Mando"
msgid "Controller Assignment"
msgstr "Asignación del mando"
#: src/ui/gui/input_profile.slint:10
msgctxt "InputProfileDialog"
@@ -485,62 +480,75 @@ msgctxt "RetroAchievements"
msgid "View Supported Games"
msgstr "Ver juegos compatibles"
#: src/ui/gui/settings_page.slint:22
#: src/ui/gui/settings_page.slint:23
msgctxt "Settings"
msgid "Settings"
msgstr "Ajustes"
#: src/ui/gui/settings_page.slint:29
#: src/ui/gui/settings_page.slint:30
msgctxt "Settings"
msgid "Resolution:"
msgstr "Resolución:"
#: src/ui/gui/settings_page.slint:45
#: src/ui/gui/settings_page.slint:46
msgctxt "Settings"
msgid "SSAA downscaling"
msgstr "Reducción de escala SSAA"
#: src/ui/gui/settings_page.slint:56
#: src/ui/gui/settings_page.slint:57
msgctxt "Settings"
msgid "Integer Scaling"
msgstr "Escalado por enteros"
#: src/ui/gui/settings_page.slint:67
#: src/ui/gui/settings_page.slint:68
msgctxt "Settings"
msgid "Fullscreen"
msgstr "Pantalla completa"
#: src/ui/gui/settings_page.slint:78
#: src/ui/gui/settings_page.slint:79
msgctxt "Settings"
msgid "Widescreen (stretch)"
msgstr "Pantalla ancha (estirado)"
#: src/ui/gui/settings_page.slint:89
#: src/ui/gui/settings_page.slint:90
msgctxt "Settings"
msgid "VSync"
msgstr "Sincronización vertical (VSync)"
#: src/ui/gui/settings_page.slint:100
#: src/ui/gui/settings_page.slint:101
msgctxt "Settings"
msgid "Apply CRT shader"
msgstr "Aplicar sombreador CRT"
#: src/ui/gui/settings_page.slint:115
#: src/ui/gui/settings_page.slint:116
msgctxt "Settings"
msgid "Overclock N64 CPU (may cause bugs)"
msgstr "Overclock CPU N64 (puede causar errores)"
#: src/ui/gui/settings_page.slint:126
#: src/ui/gui/settings_page.slint:127
msgctxt "Settings"
msgid "Disable Expansion Pak"
msgstr "Desactivar Expansion Pak"
#: src/ui/gui/settings_page.slint:137
#: src/ui/gui/settings_page.slint:138
msgctxt "Settings"
msgid "Emulate UNFLoader"
msgstr "Emular UNFLoader"
#: src/ui/gui/settings_page.slint:149
msgctxt "Settings"
msgid "Emulate VRU"
msgstr "Emular VRU"
#: src/ui/gui/vru_dialog.slint:7
msgctxt "VruDialog"
msgid "What Would You Like To Say?"
msgstr "¿Qué te gustaría decir?"
#~ msgctxt "ControllerConfig"
#~ msgid "Port"
#~ msgstr "Puerto"
#~ msgctxt "ControllerConfig"
#~ msgid "Controller"
#~ msgstr "Mando"
+56 -48
View File
@@ -2,7 +2,7 @@
msgid ""
msgstr ""
"Project-Id-Version: gopher64\n"
"POT-Creation-Date: 2026-05-14 14:53+0000\n"
"POT-Creation-Date: 2026-05-19 06:44+0000\n"
"PO-Revision-Date: 2026-05-11 12:00+0000\n"
"Last-Translator: \n"
"Language-Team: French (France)\n"
@@ -47,42 +47,42 @@ msgctxt "About"
msgid "Donate (via GitHub)"
msgstr "Faire un don (via GitHub)"
#: src/ui/gui/appwindow.slint:95
#: src/ui/gui/appwindow.slint:103
msgctxt "Menu"
msgid "Local Game"
msgstr "Jeu local"
#: src/ui/gui/appwindow.slint:96
#: src/ui/gui/appwindow.slint:107
msgctxt "Menu"
msgid "Controller Config"
msgstr "Configuration manette"
#: src/ui/gui/appwindow.slint:97
#: src/ui/gui/appwindow.slint:111
msgctxt "Menu"
msgid "Netplay"
msgstr "Netplay"
#: src/ui/gui/appwindow.slint:98
#: src/ui/gui/appwindow.slint:115
msgctxt "Menu"
msgid "Cheats"
msgstr "Triche"
#: src/ui/gui/appwindow.slint:99
#: src/ui/gui/appwindow.slint:119
msgctxt "Menu"
msgid "RetroAchievements"
msgstr "RetroAchievements"
#: src/ui/gui/appwindow.slint:100
#: src/ui/gui/appwindow.slint:123
msgctxt "Menu"
msgid "Settings"
msgstr "Paramètres"
#: src/ui/gui/appwindow.slint:101
#: src/ui/gui/appwindow.slint:127
msgctxt "Menu"
msgid "About"
msgstr "À propos"
#: src/ui/gui/appwindow.slint:195
#: src/ui/gui/appwindow.slint:248
msgctxt "ErrorDialog"
msgid "Error"
msgstr "Erreur"
@@ -107,45 +107,40 @@ msgctxt "Cheats"
msgid "No Cheats Available"
msgstr "Aucune triche disponible"
#: src/ui/gui/controller_page.slint:26
#: src/ui/gui/controller_page.slint:80
msgctxt "ControllerSettingsGrid"
msgid "Enabled"
msgstr "Activé"
#: src/ui/gui/controller_page.slint:93
msgctxt "ControllerSettingsGrid"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:107
msgctxt "ControllerSettingsGrid"
msgid "Profile"
msgstr "Profil"
#: src/ui/gui/controller_page.slint:157
msgctxt "ControllerConfig"
msgid "Controller Configuration"
msgstr "Configuration de la manette"
#: src/ui/gui/controller_page.slint:37
#: src/ui/gui/controller_page.slint:168
msgctxt "ControllerConfig"
msgid "Configure Input Profile"
msgstr "Configurer le profil d'entrée"
#: src/ui/gui/controller_page.slint:49
#: src/ui/gui/controller_page.slint:176
msgctxt "ControllerConfig"
msgid "Port"
msgstr "Port"
msgid "Controller Settings"
msgstr "Paramètres de la manette"
#: src/ui/gui/controller_page.slint:60
#: src/ui/gui/controller_page.slint:186
msgctxt "ControllerConfig"
msgid "Enabled"
msgstr "Activé"
#: src/ui/gui/controller_page.slint:73
msgctxt "ControllerConfig"
msgid "Emulate VRU"
msgstr "Émuler le VRU"
#: src/ui/gui/controller_page.slint:87
msgctxt "ControllerConfig"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:101
msgctxt "ControllerConfig"
msgid "Profile"
msgstr "Profil"
#: src/ui/gui/controller_page.slint:117
msgctxt "ControllerConfig"
msgid "Controller"
msgstr "Manette"
msgid "Controller Assignment"
msgstr "Attribution de la manette"
#: src/ui/gui/input_profile.slint:10
msgctxt "InputProfileDialog"
@@ -488,62 +483,75 @@ msgctxt "RetroAchievements"
msgid "View Supported Games"
msgstr "Voir les jeux pris en charge"
#: src/ui/gui/settings_page.slint:22
#: src/ui/gui/settings_page.slint:23
msgctxt "Settings"
msgid "Settings"
msgstr "Paramètres"
#: src/ui/gui/settings_page.slint:29
#: src/ui/gui/settings_page.slint:30
msgctxt "Settings"
msgid "Resolution:"
msgstr "Résolution :"
#: src/ui/gui/settings_page.slint:45
#: src/ui/gui/settings_page.slint:46
msgctxt "Settings"
msgid "SSAA downscaling"
msgstr "Réduction SSAA"
#: src/ui/gui/settings_page.slint:56
#: src/ui/gui/settings_page.slint:57
msgctxt "Settings"
msgid "Integer Scaling"
msgstr "Mise à l'échelle par entiers"
#: src/ui/gui/settings_page.slint:67
#: src/ui/gui/settings_page.slint:68
msgctxt "Settings"
msgid "Fullscreen"
msgstr "Plein écran"
#: src/ui/gui/settings_page.slint:78
#: src/ui/gui/settings_page.slint:79
msgctxt "Settings"
msgid "Widescreen (stretch)"
msgstr "Écran large (étiré)"
#: src/ui/gui/settings_page.slint:89
#: src/ui/gui/settings_page.slint:90
msgctxt "Settings"
msgid "VSync"
msgstr "Synchro verticale"
#: src/ui/gui/settings_page.slint:100
#: src/ui/gui/settings_page.slint:101
msgctxt "Settings"
msgid "Apply CRT shader"
msgstr "Appliquer le filtre CRT"
#: src/ui/gui/settings_page.slint:115
#: src/ui/gui/settings_page.slint:116
msgctxt "Settings"
msgid "Overclock N64 CPU (may cause bugs)"
msgstr "Surcharger le CPU N64 (risque de bugs)"
#: src/ui/gui/settings_page.slint:126
#: src/ui/gui/settings_page.slint:127
msgctxt "Settings"
msgid "Disable Expansion Pak"
msgstr "Désactiver l'Expansion Pak"
#: src/ui/gui/settings_page.slint:137
#: src/ui/gui/settings_page.slint:138
msgctxt "Settings"
msgid "Emulate UNFLoader"
msgstr "Émuler UNFLoader"
#: src/ui/gui/settings_page.slint:149
msgctxt "Settings"
msgid "Emulate VRU"
msgstr "Émuler le VRU"
#: src/ui/gui/vru_dialog.slint:7
msgctxt "VruDialog"
msgid "What Would You Like To Say?"
msgstr "Que souhaitez-vous dire ?"
#~ msgctxt "ControllerConfig"
#~ msgid "Port"
#~ msgstr "Port"
#~ msgctxt "ControllerConfig"
#~ msgid "Controller"
#~ msgstr "Manette"
+46 -46
View File
@@ -2,7 +2,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2026-05-14 14:53+0000\n"
"POT-Creation-Date: 2026-05-19 06:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -47,42 +47,42 @@ msgctxt "About"
msgid "Donate (via GitHub)"
msgstr ""
#: src/ui/gui/appwindow.slint:95
#: src/ui/gui/appwindow.slint:103
msgctxt "Menu"
msgid "Local Game"
msgstr ""
#: src/ui/gui/appwindow.slint:96
#: src/ui/gui/appwindow.slint:107
msgctxt "Menu"
msgid "Controller Config"
msgstr ""
#: src/ui/gui/appwindow.slint:97
#: src/ui/gui/appwindow.slint:111
msgctxt "Menu"
msgid "Netplay"
msgstr ""
#: src/ui/gui/appwindow.slint:98
#: src/ui/gui/appwindow.slint:115
msgctxt "Menu"
msgid "Cheats"
msgstr ""
#: src/ui/gui/appwindow.slint:99
#: src/ui/gui/appwindow.slint:119
msgctxt "Menu"
msgid "RetroAchievements"
msgstr ""
#: src/ui/gui/appwindow.slint:100
#: src/ui/gui/appwindow.slint:123
msgctxt "Menu"
msgid "Settings"
msgstr ""
#: src/ui/gui/appwindow.slint:101
#: src/ui/gui/appwindow.slint:127
msgctxt "Menu"
msgid "About"
msgstr ""
#: src/ui/gui/appwindow.slint:195
#: src/ui/gui/appwindow.slint:248
msgctxt "ErrorDialog"
msgid "Error"
msgstr ""
@@ -107,44 +107,39 @@ msgctxt "Cheats"
msgid "No Cheats Available"
msgstr ""
#: src/ui/gui/controller_page.slint:26
#: src/ui/gui/controller_page.slint:80
msgctxt "ControllerSettingsGrid"
msgid "Enabled"
msgstr ""
#: src/ui/gui/controller_page.slint:93
msgctxt "ControllerSettingsGrid"
msgid "Transfer Pak"
msgstr ""
#: src/ui/gui/controller_page.slint:107
msgctxt "ControllerSettingsGrid"
msgid "Profile"
msgstr ""
#: src/ui/gui/controller_page.slint:157
msgctxt "ControllerConfig"
msgid "Controller Configuration"
msgstr ""
#: src/ui/gui/controller_page.slint:37
#: src/ui/gui/controller_page.slint:168
msgctxt "ControllerConfig"
msgid "Configure Input Profile"
msgstr ""
#: src/ui/gui/controller_page.slint:49
#: src/ui/gui/controller_page.slint:176
msgctxt "ControllerConfig"
msgid "Port"
msgid "Controller Settings"
msgstr ""
#: src/ui/gui/controller_page.slint:60
#: src/ui/gui/controller_page.slint:186
msgctxt "ControllerConfig"
msgid "Enabled"
msgstr ""
#: src/ui/gui/controller_page.slint:73
msgctxt "ControllerConfig"
msgid "Emulate VRU"
msgstr ""
#: src/ui/gui/controller_page.slint:87
msgctxt "ControllerConfig"
msgid "Transfer Pak"
msgstr ""
#: src/ui/gui/controller_page.slint:101
msgctxt "ControllerConfig"
msgid "Profile"
msgstr ""
#: src/ui/gui/controller_page.slint:117
msgctxt "ControllerConfig"
msgid "Controller"
msgid "Controller Assignment"
msgstr ""
#: src/ui/gui/input_profile.slint:10
@@ -483,61 +478,66 @@ msgctxt "RetroAchievements"
msgid "View Supported Games"
msgstr ""
#: src/ui/gui/settings_page.slint:22
#: src/ui/gui/settings_page.slint:23
msgctxt "Settings"
msgid "Settings"
msgstr ""
#: src/ui/gui/settings_page.slint:29
#: src/ui/gui/settings_page.slint:30
msgctxt "Settings"
msgid "Resolution:"
msgstr ""
#: src/ui/gui/settings_page.slint:45
#: src/ui/gui/settings_page.slint:46
msgctxt "Settings"
msgid "SSAA downscaling"
msgstr ""
#: src/ui/gui/settings_page.slint:56
#: src/ui/gui/settings_page.slint:57
msgctxt "Settings"
msgid "Integer Scaling"
msgstr ""
#: src/ui/gui/settings_page.slint:67
#: src/ui/gui/settings_page.slint:68
msgctxt "Settings"
msgid "Fullscreen"
msgstr ""
#: src/ui/gui/settings_page.slint:78
#: src/ui/gui/settings_page.slint:79
msgctxt "Settings"
msgid "Widescreen (stretch)"
msgstr ""
#: src/ui/gui/settings_page.slint:89
#: src/ui/gui/settings_page.slint:90
msgctxt "Settings"
msgid "VSync"
msgstr ""
#: src/ui/gui/settings_page.slint:100
#: src/ui/gui/settings_page.slint:101
msgctxt "Settings"
msgid "Apply CRT shader"
msgstr ""
#: src/ui/gui/settings_page.slint:115
#: src/ui/gui/settings_page.slint:116
msgctxt "Settings"
msgid "Overclock N64 CPU (may cause bugs)"
msgstr ""
#: src/ui/gui/settings_page.slint:126
#: src/ui/gui/settings_page.slint:127
msgctxt "Settings"
msgid "Disable Expansion Pak"
msgstr ""
#: src/ui/gui/settings_page.slint:137
#: src/ui/gui/settings_page.slint:138
msgctxt "Settings"
msgid "Emulate UNFLoader"
msgstr ""
#: src/ui/gui/settings_page.slint:149
msgctxt "Settings"
msgid "Emulate VRU"
msgstr ""
#: src/ui/gui/vru_dialog.slint:7
msgctxt "VruDialog"
msgid "What Would You Like To Say?"
+56 -48
View File
@@ -2,7 +2,7 @@
msgid ""
msgstr ""
"Project-Id-Version: gopher64\n"
"POT-Creation-Date: 2026-05-14 14:53+0000\n"
"POT-Creation-Date: 2026-05-19 06:44+0000\n"
"PO-Revision-Date: 2026-05-11 12:00+0000\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
@@ -47,42 +47,42 @@ msgctxt "About"
msgid "Donate (via GitHub)"
msgstr "GitHubで寄付"
#: src/ui/gui/appwindow.slint:95
#: src/ui/gui/appwindow.slint:103
msgctxt "Menu"
msgid "Local Game"
msgstr "ローカルゲーム"
#: src/ui/gui/appwindow.slint:96
#: src/ui/gui/appwindow.slint:107
msgctxt "Menu"
msgid "Controller Config"
msgstr "コントローラー設定"
#: src/ui/gui/appwindow.slint:97
#: src/ui/gui/appwindow.slint:111
msgctxt "Menu"
msgid "Netplay"
msgstr "ネットプレイ"
#: src/ui/gui/appwindow.slint:98
#: src/ui/gui/appwindow.slint:115
msgctxt "Menu"
msgid "Cheats"
msgstr "チート"
#: src/ui/gui/appwindow.slint:99
#: src/ui/gui/appwindow.slint:119
msgctxt "Menu"
msgid "RetroAchievements"
msgstr "RetroAchievements"
#: src/ui/gui/appwindow.slint:100
#: src/ui/gui/appwindow.slint:123
msgctxt "Menu"
msgid "Settings"
msgstr "設定"
#: src/ui/gui/appwindow.slint:101
#: src/ui/gui/appwindow.slint:127
msgctxt "Menu"
msgid "About"
msgstr "バージョン情報"
#: src/ui/gui/appwindow.slint:195
#: src/ui/gui/appwindow.slint:248
msgctxt "ErrorDialog"
msgid "Error"
msgstr "エラー"
@@ -107,45 +107,40 @@ msgctxt "Cheats"
msgid "No Cheats Available"
msgstr "利用できるチートはありません"
#: src/ui/gui/controller_page.slint:26
#: src/ui/gui/controller_page.slint:80
msgctxt "ControllerSettingsGrid"
msgid "Enabled"
msgstr "有効"
#: src/ui/gui/controller_page.slint:93
msgctxt "ControllerSettingsGrid"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:107
msgctxt "ControllerSettingsGrid"
msgid "Profile"
msgstr "プロファイル"
#: src/ui/gui/controller_page.slint:157
msgctxt "ControllerConfig"
msgid "Controller Configuration"
msgstr "コントローラー設定"
#: src/ui/gui/controller_page.slint:37
#: src/ui/gui/controller_page.slint:168
msgctxt "ControllerConfig"
msgid "Configure Input Profile"
msgstr "入力プロファイルを設定"
#: src/ui/gui/controller_page.slint:49
#: src/ui/gui/controller_page.slint:176
msgctxt "ControllerConfig"
msgid "Port"
msgstr "ポート"
msgid "Controller Settings"
msgstr "コントローラー詳細設定"
#: src/ui/gui/controller_page.slint:60
#: src/ui/gui/controller_page.slint:186
msgctxt "ControllerConfig"
msgid "Enabled"
msgstr "有効"
#: src/ui/gui/controller_page.slint:73
msgctxt "ControllerConfig"
msgid "Emulate VRU"
msgstr "VRUをエミュレート"
#: src/ui/gui/controller_page.slint:87
msgctxt "ControllerConfig"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:101
msgctxt "ControllerConfig"
msgid "Profile"
msgstr "プロファイル"
#: src/ui/gui/controller_page.slint:117
msgctxt "ControllerConfig"
msgid "Controller"
msgstr "コントローラー"
msgid "Controller Assignment"
msgstr "コントローラー割り当て"
#: src/ui/gui/input_profile.slint:10
msgctxt "InputProfileDialog"
@@ -485,62 +480,75 @@ msgctxt "RetroAchievements"
msgid "View Supported Games"
msgstr "対応ゲームを表示"
#: src/ui/gui/settings_page.slint:22
#: src/ui/gui/settings_page.slint:23
msgctxt "Settings"
msgid "Settings"
msgstr "設定"
#: src/ui/gui/settings_page.slint:29
#: src/ui/gui/settings_page.slint:30
msgctxt "Settings"
msgid "Resolution:"
msgstr "解像度:"
#: src/ui/gui/settings_page.slint:45
#: src/ui/gui/settings_page.slint:46
msgctxt "Settings"
msgid "SSAA downscaling"
msgstr "SSAAダウンスケール"
#: src/ui/gui/settings_page.slint:56
#: src/ui/gui/settings_page.slint:57
msgctxt "Settings"
msgid "Integer Scaling"
msgstr "整数倍スケーリング"
#: src/ui/gui/settings_page.slint:67
#: src/ui/gui/settings_page.slint:68
msgctxt "Settings"
msgid "Fullscreen"
msgstr "全画面表示"
#: src/ui/gui/settings_page.slint:78
#: src/ui/gui/settings_page.slint:79
msgctxt "Settings"
msgid "Widescreen (stretch)"
msgstr "ワイド画面(伸ばす)"
#: src/ui/gui/settings_page.slint:89
#: src/ui/gui/settings_page.slint:90
msgctxt "Settings"
msgid "VSync"
msgstr "垂直同期(VSync"
#: src/ui/gui/settings_page.slint:100
#: src/ui/gui/settings_page.slint:101
msgctxt "Settings"
msgid "Apply CRT shader"
msgstr "CRTシェーダーを適用"
#: src/ui/gui/settings_page.slint:115
#: src/ui/gui/settings_page.slint:116
msgctxt "Settings"
msgid "Overclock N64 CPU (may cause bugs)"
msgstr "N64のCPUをオーバークロック(不具合の原因になることがあります)"
#: src/ui/gui/settings_page.slint:126
#: src/ui/gui/settings_page.slint:127
msgctxt "Settings"
msgid "Disable Expansion Pak"
msgstr "拡張パックを無効にする"
#: src/ui/gui/settings_page.slint:137
#: src/ui/gui/settings_page.slint:138
msgctxt "Settings"
msgid "Emulate UNFLoader"
msgstr "UNFLoaderをエミュレート"
#: src/ui/gui/settings_page.slint:149
msgctxt "Settings"
msgid "Emulate VRU"
msgstr "VRUをエミュレート"
#: src/ui/gui/vru_dialog.slint:7
msgctxt "VruDialog"
msgid "What Would You Like To Say?"
msgstr "何と言いますか?"
#~ msgctxt "ControllerConfig"
#~ msgid "Port"
#~ msgstr "ポート"
#~ msgctxt "ControllerConfig"
#~ msgid "Controller"
#~ msgstr "コントローラー"
+56 -48
View File
@@ -2,7 +2,7 @@
msgid ""
msgstr ""
"Project-Id-Version: gopher64\n"
"POT-Creation-Date: 2026-05-14 14:53+0000\n"
"POT-Creation-Date: 2026-05-19 06:44+0000\n"
"PO-Revision-Date: 2026-05-11 12:00+0000\n"
"Last-Translator: \n"
"Language-Team: Dutch (Netherlands)\n"
@@ -47,42 +47,42 @@ msgctxt "About"
msgid "Donate (via GitHub)"
msgstr "Doneren (via GitHub)"
#: src/ui/gui/appwindow.slint:95
#: src/ui/gui/appwindow.slint:103
msgctxt "Menu"
msgid "Local Game"
msgstr "Lokaal spel"
#: src/ui/gui/appwindow.slint:96
#: src/ui/gui/appwindow.slint:107
msgctxt "Menu"
msgid "Controller Config"
msgstr "Controllerconfiguratie"
#: src/ui/gui/appwindow.slint:97
#: src/ui/gui/appwindow.slint:111
msgctxt "Menu"
msgid "Netplay"
msgstr "Netplay"
#: src/ui/gui/appwindow.slint:98
#: src/ui/gui/appwindow.slint:115
msgctxt "Menu"
msgid "Cheats"
msgstr "Cheats"
#: src/ui/gui/appwindow.slint:99
#: src/ui/gui/appwindow.slint:119
msgctxt "Menu"
msgid "RetroAchievements"
msgstr "RetroAchievements"
#: src/ui/gui/appwindow.slint:100
#: src/ui/gui/appwindow.slint:123
msgctxt "Menu"
msgid "Settings"
msgstr "Instellingen"
#: src/ui/gui/appwindow.slint:101
#: src/ui/gui/appwindow.slint:127
msgctxt "Menu"
msgid "About"
msgstr "Over"
#: src/ui/gui/appwindow.slint:195
#: src/ui/gui/appwindow.slint:248
msgctxt "ErrorDialog"
msgid "Error"
msgstr "Fout"
@@ -107,45 +107,40 @@ msgctxt "Cheats"
msgid "No Cheats Available"
msgstr "Geen cheats beschikbaar"
#: src/ui/gui/controller_page.slint:26
#: src/ui/gui/controller_page.slint:80
msgctxt "ControllerSettingsGrid"
msgid "Enabled"
msgstr "Ingeschakeld"
#: src/ui/gui/controller_page.slint:93
msgctxt "ControllerSettingsGrid"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:107
msgctxt "ControllerSettingsGrid"
msgid "Profile"
msgstr "Profiel"
#: src/ui/gui/controller_page.slint:157
msgctxt "ControllerConfig"
msgid "Controller Configuration"
msgstr "Controllerconfiguratie"
#: src/ui/gui/controller_page.slint:37
#: src/ui/gui/controller_page.slint:168
msgctxt "ControllerConfig"
msgid "Configure Input Profile"
msgstr "Invoerprofiel configureren"
#: src/ui/gui/controller_page.slint:49
#: src/ui/gui/controller_page.slint:176
msgctxt "ControllerConfig"
msgid "Port"
msgstr "Poort"
msgid "Controller Settings"
msgstr "Controllerinstellingen"
#: src/ui/gui/controller_page.slint:60
#: src/ui/gui/controller_page.slint:186
msgctxt "ControllerConfig"
msgid "Enabled"
msgstr "Ingeschakeld"
#: src/ui/gui/controller_page.slint:73
msgctxt "ControllerConfig"
msgid "Emulate VRU"
msgstr "VRU emuleren"
#: src/ui/gui/controller_page.slint:87
msgctxt "ControllerConfig"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:101
msgctxt "ControllerConfig"
msgid "Profile"
msgstr "Profiel"
#: src/ui/gui/controller_page.slint:117
msgctxt "ControllerConfig"
msgid "Controller"
msgstr "Controller"
msgid "Controller Assignment"
msgstr "Controllertoewijzing"
#: src/ui/gui/input_profile.slint:10
msgctxt "InputProfileDialog"
@@ -486,62 +481,75 @@ msgctxt "RetroAchievements"
msgid "View Supported Games"
msgstr "Ondersteunde spellen bekijken"
#: src/ui/gui/settings_page.slint:22
#: src/ui/gui/settings_page.slint:23
msgctxt "Settings"
msgid "Settings"
msgstr "Instellingen"
#: src/ui/gui/settings_page.slint:29
#: src/ui/gui/settings_page.slint:30
msgctxt "Settings"
msgid "Resolution:"
msgstr "Resolutie:"
#: src/ui/gui/settings_page.slint:45
#: src/ui/gui/settings_page.slint:46
msgctxt "Settings"
msgid "SSAA downscaling"
msgstr "SSAA-downscaling"
#: src/ui/gui/settings_page.slint:56
#: src/ui/gui/settings_page.slint:57
msgctxt "Settings"
msgid "Integer Scaling"
msgstr "Schalen in hele getallen"
#: src/ui/gui/settings_page.slint:67
#: src/ui/gui/settings_page.slint:68
msgctxt "Settings"
msgid "Fullscreen"
msgstr "Volledig scherm"
#: src/ui/gui/settings_page.slint:78
#: src/ui/gui/settings_page.slint:79
msgctxt "Settings"
msgid "Widescreen (stretch)"
msgstr "Breedbeeld (uitgerekt)"
#: src/ui/gui/settings_page.slint:89
#: src/ui/gui/settings_page.slint:90
msgctxt "Settings"
msgid "VSync"
msgstr "VSync"
#: src/ui/gui/settings_page.slint:100
#: src/ui/gui/settings_page.slint:101
msgctxt "Settings"
msgid "Apply CRT shader"
msgstr "CRT-shader toepassen"
#: src/ui/gui/settings_page.slint:115
#: src/ui/gui/settings_page.slint:116
msgctxt "Settings"
msgid "Overclock N64 CPU (may cause bugs)"
msgstr "N64-CPU overklokken (kan bugs veroorzaken)"
#: src/ui/gui/settings_page.slint:126
#: src/ui/gui/settings_page.slint:127
msgctxt "Settings"
msgid "Disable Expansion Pak"
msgstr "Expansion Pak uitschakelen"
#: src/ui/gui/settings_page.slint:137
#: src/ui/gui/settings_page.slint:138
msgctxt "Settings"
msgid "Emulate UNFLoader"
msgstr "UNFLoader emuleren"
#: src/ui/gui/settings_page.slint:149
msgctxt "Settings"
msgid "Emulate VRU"
msgstr "VRU emuleren"
#: src/ui/gui/vru_dialog.slint:7
msgctxt "VruDialog"
msgid "What Would You Like To Say?"
msgstr "Wat wil je zeggen?"
#~ msgctxt "ControllerConfig"
#~ msgid "Port"
#~ msgstr "Poort"
#~ msgctxt "ControllerConfig"
#~ msgid "Controller"
#~ msgstr "Controller"
+56 -48
View File
@@ -2,7 +2,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2026-05-14 14:53+0000\n"
"POT-Creation-Date: 2026-05-19 06:44+0000\n"
"PO-Revision-Date: 2026-05-11 18:11-3000\n"
"Last-Translator: EDUARDO CARVALHO <eduardotcarvalho@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -47,42 +47,42 @@ msgctxt "About"
msgid "Donate (via GitHub)"
msgstr "Doações (via GitHub)"
#: src/ui/gui/appwindow.slint:95
#: src/ui/gui/appwindow.slint:103
msgctxt "Menu"
msgid "Local Game"
msgstr "Jogo Local"
#: src/ui/gui/appwindow.slint:96
#: src/ui/gui/appwindow.slint:107
msgctxt "Menu"
msgid "Controller Config"
msgstr "Configurar Controle"
#: src/ui/gui/appwindow.slint:97
#: src/ui/gui/appwindow.slint:111
msgctxt "Menu"
msgid "Netplay"
msgstr "Netplay"
#: src/ui/gui/appwindow.slint:98
#: src/ui/gui/appwindow.slint:115
msgctxt "Menu"
msgid "Cheats"
msgstr "Trapaças"
#: src/ui/gui/appwindow.slint:99
#: src/ui/gui/appwindow.slint:119
msgctxt "Menu"
msgid "RetroAchievements"
msgstr "RetroAchievements"
#: src/ui/gui/appwindow.slint:100
#: src/ui/gui/appwindow.slint:123
msgctxt "Menu"
msgid "Settings"
msgstr "Configurações"
#: src/ui/gui/appwindow.slint:101
#: src/ui/gui/appwindow.slint:127
msgctxt "Menu"
msgid "About"
msgstr "Sobre"
#: src/ui/gui/appwindow.slint:195
#: src/ui/gui/appwindow.slint:248
msgctxt "ErrorDialog"
msgid "Error"
msgstr "Erro"
@@ -107,45 +107,40 @@ msgctxt "Cheats"
msgid "No Cheats Available"
msgstr "Sem trapaças disponíveis"
#: src/ui/gui/controller_page.slint:26
#: src/ui/gui/controller_page.slint:80
msgctxt "ControllerSettingsGrid"
msgid "Enabled"
msgstr "Habilitado"
#: src/ui/gui/controller_page.slint:93
msgctxt "ControllerSettingsGrid"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:107
msgctxt "ControllerSettingsGrid"
msgid "Profile"
msgstr "Perfil"
#: src/ui/gui/controller_page.slint:157
msgctxt "ControllerConfig"
msgid "Controller Configuration"
msgstr "Configurar Controles"
#: src/ui/gui/controller_page.slint:37
#: src/ui/gui/controller_page.slint:168
msgctxt "ControllerConfig"
msgid "Configure Input Profile"
msgstr "Configurar Perfil de Controle"
#: src/ui/gui/controller_page.slint:49
#: src/ui/gui/controller_page.slint:176
msgctxt "ControllerConfig"
msgid "Port"
msgstr "Entrada"
msgid "Controller Settings"
msgstr "Configurações do controle"
#: src/ui/gui/controller_page.slint:60
#: src/ui/gui/controller_page.slint:186
msgctxt "ControllerConfig"
msgid "Enabled"
msgstr "Habilitado"
#: src/ui/gui/controller_page.slint:73
msgctxt "ControllerConfig"
msgid "Emulate VRU"
msgstr "Emular VRU"
#: src/ui/gui/controller_page.slint:87
msgctxt "ControllerConfig"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:101
msgctxt "ControllerConfig"
msgid "Profile"
msgstr "Perfil"
#: src/ui/gui/controller_page.slint:117
msgctxt "ControllerConfig"
msgid "Controller"
msgstr "Controle"
msgid "Controller Assignment"
msgstr "Atribuição do controle"
#: src/ui/gui/input_profile.slint:10
msgctxt "InputProfileDialog"
@@ -487,62 +482,75 @@ msgctxt "RetroAchievements"
msgid "View Supported Games"
msgstr "Ver Jogos com Suporte"
#: src/ui/gui/settings_page.slint:22
#: src/ui/gui/settings_page.slint:23
msgctxt "Settings"
msgid "Settings"
msgstr "Configurações"
#: src/ui/gui/settings_page.slint:29
#: src/ui/gui/settings_page.slint:30
msgctxt "Settings"
msgid "Resolution:"
msgstr "Resolução:"
#: src/ui/gui/settings_page.slint:45
#: src/ui/gui/settings_page.slint:46
msgctxt "Settings"
msgid "SSAA downscaling"
msgstr "Redução de SSAA"
#: src/ui/gui/settings_page.slint:56
#: src/ui/gui/settings_page.slint:57
msgctxt "Settings"
msgid "Integer Scaling"
msgstr "Proporção Íntegra"
#: src/ui/gui/settings_page.slint:67
#: src/ui/gui/settings_page.slint:68
msgctxt "Settings"
msgid "Fullscreen"
msgstr "Tela Cheia"
#: src/ui/gui/settings_page.slint:78
#: src/ui/gui/settings_page.slint:79
msgctxt "Settings"
msgid "Widescreen (stretch)"
msgstr "Widescreen (esticar)"
#: src/ui/gui/settings_page.slint:89
#: src/ui/gui/settings_page.slint:90
msgctxt "Settings"
msgid "VSync"
msgstr "VSync"
#: src/ui/gui/settings_page.slint:100
#: src/ui/gui/settings_page.slint:101
msgctxt "Settings"
msgid "Apply CRT shader"
msgstr "Aplicar filtro de CRT"
#: src/ui/gui/settings_page.slint:115
#: src/ui/gui/settings_page.slint:116
msgctxt "Settings"
msgid "Overclock N64 CPU (may cause bugs)"
msgstr "Overclock da CPU do N64 (pode causar bugs)"
#: src/ui/gui/settings_page.slint:126
#: src/ui/gui/settings_page.slint:127
msgctxt "Settings"
msgid "Disable Expansion Pak"
msgstr "Desabilitar Expansion Pak"
#: src/ui/gui/settings_page.slint:137
#: src/ui/gui/settings_page.slint:138
msgctxt "Settings"
msgid "Emulate UNFLoader"
msgstr "Emular UNFLoader"
#: src/ui/gui/settings_page.slint:149
msgctxt "Settings"
msgid "Emulate VRU"
msgstr "Emular VRU"
#: src/ui/gui/vru_dialog.slint:7
msgctxt "VruDialog"
msgid "What Would You Like To Say?"
msgstr "O que você quer falar?"
#~ msgctxt "ControllerConfig"
#~ msgid "Port"
#~ msgstr "Entrada"
#~ msgctxt "ControllerConfig"
#~ msgid "Controller"
#~ msgstr "Controle"
+56 -48
View File
@@ -2,7 +2,7 @@
msgid ""
msgstr ""
"Project-Id-Version: gopher64\n"
"POT-Creation-Date: 2026-05-14 14:53+0000\n"
"POT-Creation-Date: 2026-05-19 06:44+0000\n"
"PO-Revision-Date: 2026-05-11 12:00+0000\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
@@ -47,42 +47,42 @@ msgctxt "About"
msgid "Donate (via GitHub)"
msgstr "Пожертвовать (через GitHub)"
#: src/ui/gui/appwindow.slint:95
#: src/ui/gui/appwindow.slint:103
msgctxt "Menu"
msgid "Local Game"
msgstr "Локальная игра"
#: src/ui/gui/appwindow.slint:96
#: src/ui/gui/appwindow.slint:107
msgctxt "Menu"
msgid "Controller Config"
msgstr "Настройка контроллера"
#: src/ui/gui/appwindow.slint:97
#: src/ui/gui/appwindow.slint:111
msgctxt "Menu"
msgid "Netplay"
msgstr "Сетевая игра"
#: src/ui/gui/appwindow.slint:98
#: src/ui/gui/appwindow.slint:115
msgctxt "Menu"
msgid "Cheats"
msgstr "Читы"
#: src/ui/gui/appwindow.slint:99
#: src/ui/gui/appwindow.slint:119
msgctxt "Menu"
msgid "RetroAchievements"
msgstr "RetroAchievements"
#: src/ui/gui/appwindow.slint:100
#: src/ui/gui/appwindow.slint:123
msgctxt "Menu"
msgid "Settings"
msgstr "Настройки"
#: src/ui/gui/appwindow.slint:101
#: src/ui/gui/appwindow.slint:127
msgctxt "Menu"
msgid "About"
msgstr "О программе"
#: src/ui/gui/appwindow.slint:195
#: src/ui/gui/appwindow.slint:248
msgctxt "ErrorDialog"
msgid "Error"
msgstr "Ошибка"
@@ -107,45 +107,40 @@ msgctxt "Cheats"
msgid "No Cheats Available"
msgstr "Читы недоступны"
#: src/ui/gui/controller_page.slint:26
#: src/ui/gui/controller_page.slint:80
msgctxt "ControllerSettingsGrid"
msgid "Enabled"
msgstr "Включено"
#: src/ui/gui/controller_page.slint:93
msgctxt "ControllerSettingsGrid"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:107
msgctxt "ControllerSettingsGrid"
msgid "Profile"
msgstr "Профиль"
#: src/ui/gui/controller_page.slint:157
msgctxt "ControllerConfig"
msgid "Controller Configuration"
msgstr "Настройка контроллера"
#: src/ui/gui/controller_page.slint:37
#: src/ui/gui/controller_page.slint:168
msgctxt "ControllerConfig"
msgid "Configure Input Profile"
msgstr "Настроить профиль ввода"
#: src/ui/gui/controller_page.slint:49
#: src/ui/gui/controller_page.slint:176
msgctxt "ControllerConfig"
msgid "Port"
msgstr "Порт"
msgid "Controller Settings"
msgstr "Настройки контроллера"
#: src/ui/gui/controller_page.slint:60
#: src/ui/gui/controller_page.slint:186
msgctxt "ControllerConfig"
msgid "Enabled"
msgstr "Включено"
#: src/ui/gui/controller_page.slint:73
msgctxt "ControllerConfig"
msgid "Emulate VRU"
msgstr "Эмулировать VRU"
#: src/ui/gui/controller_page.slint:87
msgctxt "ControllerConfig"
msgid "Transfer Pak"
msgstr "Transfer Pak"
#: src/ui/gui/controller_page.slint:101
msgctxt "ControllerConfig"
msgid "Profile"
msgstr "Профиль"
#: src/ui/gui/controller_page.slint:117
msgctxt "ControllerConfig"
msgid "Controller"
msgstr "Контроллер"
msgid "Controller Assignment"
msgstr "Назначение контроллера"
#: src/ui/gui/input_profile.slint:10
msgctxt "InputProfileDialog"
@@ -485,62 +480,75 @@ msgctxt "RetroAchievements"
msgid "View Supported Games"
msgstr "Просмотреть поддерживаемые игры"
#: src/ui/gui/settings_page.slint:22
#: src/ui/gui/settings_page.slint:23
msgctxt "Settings"
msgid "Settings"
msgstr "Настройки"
#: src/ui/gui/settings_page.slint:29
#: src/ui/gui/settings_page.slint:30
msgctxt "Settings"
msgid "Resolution:"
msgstr "Разрешение:"
#: src/ui/gui/settings_page.slint:45
#: src/ui/gui/settings_page.slint:46
msgctxt "Settings"
msgid "SSAA downscaling"
msgstr "SSAA даунскейлинг"
#: src/ui/gui/settings_page.slint:56
#: src/ui/gui/settings_page.slint:57
msgctxt "Settings"
msgid "Integer Scaling"
msgstr "Целочисленное масштабирование"
#: src/ui/gui/settings_page.slint:67
#: src/ui/gui/settings_page.slint:68
msgctxt "Settings"
msgid "Fullscreen"
msgstr "Полноэкранный режим"
#: src/ui/gui/settings_page.slint:78
#: src/ui/gui/settings_page.slint:79
msgctxt "Settings"
msgid "Widescreen (stretch)"
msgstr "Широкоэкранный режим (растянуто)"
#: src/ui/gui/settings_page.slint:89
#: src/ui/gui/settings_page.slint:90
msgctxt "Settings"
msgid "VSync"
msgstr "Вертикальная синхронизация"
#: src/ui/gui/settings_page.slint:100
#: src/ui/gui/settings_page.slint:101
msgctxt "Settings"
msgid "Apply CRT shader"
msgstr "Применить шейдер ЭЛТ"
#: src/ui/gui/settings_page.slint:115
#: src/ui/gui/settings_page.slint:116
msgctxt "Settings"
msgid "Overclock N64 CPU (may cause bugs)"
msgstr "Разгон процессора N64 (может вызвать ошибки)"
#: src/ui/gui/settings_page.slint:126
#: src/ui/gui/settings_page.slint:127
msgctxt "Settings"
msgid "Disable Expansion Pak"
msgstr "Отключить Expansion Pak"
#: src/ui/gui/settings_page.slint:137
#: src/ui/gui/settings_page.slint:138
msgctxt "Settings"
msgid "Emulate UNFLoader"
msgstr "Эмулировать UNFLoader"
#: src/ui/gui/settings_page.slint:149
msgctxt "Settings"
msgid "Emulate VRU"
msgstr "Эмулировать VRU"
#: src/ui/gui/vru_dialog.slint:7
msgctxt "VruDialog"
msgid "What Would You Like To Say?"
msgstr "Что вы хотите сказать?"
#~ msgctxt "ControllerConfig"
#~ msgid "Port"
#~ msgstr "Порт"
#~ msgctxt "ControllerConfig"
#~ msgid "Controller"
#~ msgstr "Контроллер"

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M440-280h80v-240h-80v240Zm68.5-331.5Q520-623 520-640t-11.5-28.5Q497-680 480-680t-28.5 11.5Q440-657 440-640t11.5 28.5Q463-600 480-600t28.5-11.5ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/></svg>

After

Width:  |  Height:  |  Size: 553 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M280-120v-80h160v-124q-49-11-87.5-41.5T296-442q-75-9-125.5-65.5T120-640v-40q0-33 23.5-56.5T200-760h80v-80h400v80h80q33 0 56.5 23.5T840-680v40q0 76-50.5 132.5T664-442q-18 46-56.5 76.5T520-324v124h160v80H280Zm0-408v-152h-80v40q0 38 22 68.5t58 43.5Zm285 93q35-35 35-85v-240H360v240q0 50 35 85t85 35q50 0 85-35Zm115-93q36-13 58-43.5t22-68.5v-40h-80v152Zm-200-52Z"/></svg>

After

Width:  |  Height:  |  Size: 483 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M480-160v-80h320v80H480ZM220-320l-56-56 183-184-183-184 56-56 240 240-240 240Z"/></svg>

After

Width:  |  Height:  |  Size: 203 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M189-160q-60 0-102.5-43T42-307q0-9 1-18t3-18l84-336q14-54 57-87.5t98-33.5h390q55 0 98 33.5t57 87.5l84 336q2 9 3.5 18.5T919-306q0 61-43.5 103.5T771-160q-42 0-78-22t-54-60l-28-58q-5-10-15-15t-21-5H385q-11 0-21 5t-15 15l-28 58q-18 38-54 60t-78 22Zm3-80q19 0 34.5-10t23.5-27l28-57q15-31 44-48.5t63-17.5h190q34 0 63 18t45 48l28 57q8 17 23.5 27t34.5 10q28 0 48-18.5t21-46.5q0 1-2-19l-84-335q-7-27-28-44t-49-17H285q-28 0-49.5 17T208-659l-84 335q-2 6-2 18 0 28 20.5 47t49.5 19Zm376.5-291.5Q580-543 580-560t-11.5-28.5Q557-600 540-600t-28.5 11.5Q500-577 500-560t11.5 28.5Q523-520 540-520t28.5-11.5Zm80-80Q660-623 660-640t-11.5-28.5Q637-680 620-680t-28.5 11.5Q580-657 580-640t11.5 28.5Q603-600 620-600t28.5-11.5Zm0 160Q660-463 660-480t-11.5-28.5Q637-520 620-520t-28.5 11.5Q580-497 580-480t11.5 28.5Q603-440 620-440t28.5-11.5Zm80-80Q740-543 740-560t-11.5-28.5Q717-600 700-600t-28.5 11.5Q660-577 660-560t11.5 28.5Q683-520 700-520t28.5-11.5Zm-367 63Q370-477 370-490v-40h40q13 0 21.5-8.5T440-560q0-13-8.5-21.5T410-590h-40v-40q0-13-8.5-21.5T340-660q-13 0-21.5 8.5T310-630v40h-40q-13 0-21.5 8.5T240-560q0 13 8.5 21.5T270-530h40v40q0 13 8.5 21.5T340-460q13 0 21.5-8.5ZM480-480Z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M240-200h120v-240h240v240h120v-360L480-740 240-560v360Zm-80 80v-480l320-240 320 240v480H520v-240h-80v240H160Zm320-350Z"/></svg>

After

Width:  |  Height:  |  Size: 243 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M260-160q-91 0-155.5-63T40-377q0-78 47-139t123-78q25-92 100-149t170-57q117 0 198.5 81.5T760-520q69 8 114.5 59.5T920-340q0 75-52.5 127.5T740-160H260Zm0-80h480q42 0 71-29t29-71q0-42-29-71t-71-29h-60v-80q0-83-58.5-141.5T480-720q-83 0-141.5 58.5T280-520h-20q-58 0-99 41t-41 99q0 58 41 99t99 41Zm220-240Z"/></svg>

After

Width:  |  Height:  |  Size: 424 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z"/></svg>

After

Width:  |  Height:  |  Size: 771 B

+70 -17
View File
@@ -66,8 +66,8 @@ export component AppWindow inherits Window {
in-out property disable_expansion_pak <=> SettingsData.disable_expansion_pak;
in-out property resolution <=> SettingsData.resolution;
in-out property emulate_usb <=> SettingsData.emulate_usb;
in-out property emulate_vru <=> SettingsData.emulate_vru;
in-out property rom_dir <=> SettingsData.rom_dir;
in-out property emulate_vru <=> ControllerData.emulate_vru;
in-out property controller_enabled <=> ControllerData.controller_enabled;
in-out property controller_changed <=> ControllerData.controller_changed;
in-out property transferpak <=> ControllerData.transferpak;
@@ -83,26 +83,66 @@ export component AppWindow inherits Window {
in-out property cheat_game_name <=> CheatsData.cheat_game_name;
in-out property cheat_game_crc <=> CheatsData.cheat_game_crc;
in-out property cheats <=> CheatsData.cheats;
preferred-width: 700px;
preferred-height: 500px;
private property <bool> is-portrait: root.width < root.height;
private property <length> bar-thickness: 56px;
min-width: 320px;
min-height: 240px;
preferred-width: 600px;
preferred-height: 600px;
title: "Gopher64";
icon: @image-url("../../../data/icon/gopher64.png");
HorizontalLayout {
side-bar := SideBar {
title: "Gopher64";
model: [
@tr("Menu" => "Local Game"),
@tr("Menu" => "Controller Config"),
@tr("Menu" => "Netplay"),
@tr("Menu" => "Cheats"),
@tr("Menu" => "RetroAchievements"),
@tr("Menu" => "Settings"),
@tr("Menu" => "About")
];
}
side-bar := SideBar {
portrait: root.is-portrait;
title: "Gopher64";
model: [
{
icon: @image-url("../../../data/ui/icons/local_game.svg"),
label: @tr("Menu" => "Local Game"),
},
{
icon: @image-url("../../../data/ui/icons/controller.svg"),
label: @tr("Menu" => "Controller Config"),
},
{
icon: @image-url("../../../data/ui/icons/netplay.svg"),
label: @tr("Menu" => "Netplay"),
},
{
icon: @image-url("../../../data/ui/icons/cheats.svg"),
label: @tr("Menu" => "Cheats"),
},
{
icon: @image-url("../../../data/ui/icons/achievements.svg"),
label: @tr("Menu" => "RetroAchievements"),
},
{
icon: @image-url("../../../data/ui/icons/settings.svg"),
label: @tr("Menu" => "Settings"),
},
{
icon: @image-url("../../../data/ui/icons/about.svg"),
label: @tr("Menu" => "About"),
},
];
x: 0;
y: root.is-portrait ? parent.height - root.bar-thickness : 0;
width: root.is-portrait ? parent.width : root.bar-thickness;
height: root.is-portrait ? root.bar-thickness : parent.height;
}
content-area := Rectangle {
clip: true;
x: root.is-portrait ? 0 : root.bar-thickness;
y: 0;
width: root.is-portrait ? parent.width : parent.width - root.bar-thickness;
height: root.is-portrait ? parent.height - root.bar-thickness : parent.height;
if(side-bar.current-item == 0): LocalGame {
width: 100%;
height: 100%;
open_rom_button_clicked => {
open_rom_button_clicked();
}
@@ -117,6 +157,8 @@ export component AppWindow inherits Window {
}
}
if(side-bar.current-item == 1): ControllerConfig {
width: 100%;
height: 100%;
input_profile_button_clicked => {
input_profile_button_clicked();
}
@@ -128,6 +170,8 @@ export component AppWindow inherits Window {
}
}
if(side-bar.current-item == 2): Netplay {
width: 100%;
height: 100%;
create_session_button_clicked => {
create_session_button_clicked();
}
@@ -142,6 +186,8 @@ export component AppWindow inherits Window {
}
}
if(side-bar.current-item == 3): Cheats {
width: 100%;
height: 100%;
cheats_select_rom_clicked(rom_dir) => {
cheats_select_rom_clicked(rom_dir);
}
@@ -153,6 +199,8 @@ export component AppWindow inherits Window {
}
}
if(side-bar.current-item == 4): RetroAchievements {
width: 100%;
height: 100%;
ra_button_clicked(password) => {
ra_button_clicked(password);
}
@@ -166,8 +214,13 @@ export component AppWindow inherits Window {
ra_show_profile_clicked();
}
}
if(side-bar.current-item == 5): Settings { }
if(side-bar.current-item == 5): Settings {
width: 100%;
height: 100%;
}
if(side-bar.current-item == 6): About {
width: 100%;
height: 100%;
wiki_button_clicked => {
wiki_button_clicked();
}
+153 -96
View File
@@ -1,12 +1,11 @@
// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: MIT
import { Switch, ComboBox, Button, HorizontalBox, VerticalBox, GroupBox } from "std-widgets.slint";
import { Switch, ComboBox, Button, VerticalBox, GroupBox } from "std-widgets.slint";
import { Page } from "page.slint";
import { State } from "localgame_page.slint";
export global ControllerData {
in-out property <bool> emulate_vru;
in-out property <[bool]> controller_enabled;
in-out property <[bool]> transferpak;
in-out property <[string]> gb_rom_paths;
@@ -19,9 +18,141 @@ export global ControllerData {
in-out property <[bool]> controller_changed;
}
component ControllerPortLabel inherits Text {
height: 32px;
width: 36px;
vertical-alignment: center;
horizontal-alignment: center;
font-weight: 600;
}
component ControllerFieldHeader inherits Text {
height: 28px;
horizontal-alignment: left;
vertical-alignment: center;
font-size: 13px;
}
component ControllerSettingsColumn inherits VerticalLayout {
in property <string> title;
in property <length> content-min-width: 0px;
spacing: 6px;
alignment: start;
horizontal-stretch: 0;
min-width: content-min-width > header.preferred-width ? content-min-width : header.preferred-width;
header := ControllerFieldHeader {
text: root.title;
}
@children
}
component ControllerSettingsCell inherits HorizontalLayout {
height: 32px;
alignment: start;
@children
}
component ControllerSettingsGrid inherits HorizontalLayout {
callback transferpak_toggled(int, bool);
spacing: 12px;
alignment: start;
VerticalLayout {
spacing: 6px;
alignment: start;
horizontal-stretch: 0;
Rectangle {
width: 36px;
height: 28px;
}
for player[index] in [0, 1, 2, 3]: ControllerPortLabel {
text: index + 1;
}
}
ControllerSettingsColumn {
title: @tr("ControllerSettingsGrid" => "Enabled");
for player[index] in [0, 1, 2, 3]: ControllerSettingsCell {
Switch {
checked: ControllerData.controller_enabled[index];
toggled => {
ControllerData.controller_enabled[index] = self.checked;
}
}
}
}
ControllerSettingsColumn {
title: @tr("ControllerSettingsGrid" => "Transfer Pak");
for player[index] in [0, 1, 2, 3]: ControllerSettingsCell {
Switch {
checked: ControllerData.transferpak[index];
toggled => {
ControllerData.transferpak[index] = self.checked;
root.transferpak_toggled(index, self.checked);
}
}
}
}
ControllerSettingsColumn {
title: @tr("ControllerSettingsGrid" => "Profile");
content-min-width: 150px;
for player[index] in [0, 1, 2, 3]: ControllerSettingsCell {
ComboBox {
horizontal-stretch: 0;
min-width: self.preferred-width > 150px ? self.preferred-width : 150px;
model: ControllerData.input_profiles;
current-index: ControllerData.selected_profile_binding[index];
selected => {
ControllerData.selected_profile_binding[index] = self.current-index;
}
}
}
}
}
component ControllerAssignmentGrid inherits VerticalLayout {
spacing: 6px;
alignment: start;
for player[index] in [0, 1, 2, 3]: HorizontalLayout {
spacing: 8px;
alignment: start;
ControllerPortLabel {
text: index + 1;
}
HorizontalLayout {
alignment: start;
ComboBox {
horizontal-stretch: 0;
min-width: self.preferred-width > 300px ? self.preferred-width : 300px;
model: ControllerData.controller_names;
current-index: ControllerData.selected_controller[index];
selected => {
ControllerData.selected_controller[index] = self.current-index;
ControllerData.controller_changed[index] = true;
}
}
}
}
}
export component ControllerConfig inherits Page {
callback input_profile_button_clicked;
callback transferpak_toggled(int,bool);
callback transferpak_toggled(int, bool);
callback controller_window_created;
title: @tr("Controller Configuration");
@@ -30,105 +161,31 @@ export component ControllerConfig inherits Page {
}
VerticalBox {
spacing: 8px;
alignment: start;
HorizontalBox {
alignment: start;
Button {
text: @tr("Configure Input Profile");
enabled: !State.game_running;
clicked => {
input_profile_button_clicked();
Button {
text: @tr("Configure Input Profile");
enabled: !State.game_running;
clicked => {
input_profile_button_clicked();
}
}
GroupBox {
title: @tr("Controller Settings");
ControllerSettingsGrid {
transferpak_toggled(index, enabled) => {
root.transferpak_toggled(index, enabled);
}
}
}
Rectangle { }
GroupBox {
title: @tr("Controller Assignment");
HorizontalBox {
GroupBox {
title: @tr("Port");
VerticalLayout {
alignment: space-between;
for player in [0, 1, 2, 3]: Text {
text: player + 1;
vertical-alignment: center;
}
}
}
GroupBox {
title: @tr("Enabled");
VerticalLayout {
alignment: space-between;
for player in [0, 1, 2, 3]: Switch {
checked: ControllerData.controller_enabled[player];
toggled => {
ControllerData.controller_enabled[player] = self.checked;
}
}
}
}
GroupBox {
title: @tr("Emulate VRU");
VerticalLayout {
alignment: space-between;
for valid in [false, false, false, true]: Switch {
enabled: valid;
checked: valid && ControllerData.emulate_vru;
toggled => {
ControllerData.emulate_vru = self.checked;
}
}
}
}
GroupBox {
title: @tr("Transfer Pak");
VerticalLayout {
alignment: space-between;
for player in [0, 1, 2, 3]: Switch {
checked: ControllerData.transferpak[player];
toggled => {
ControllerData.transferpak[player] = self.checked;
transferpak_toggled(player,self.checked);
}
}
}
}
GroupBox {
title: @tr("Profile");
horizontal-stretch: 0.25;
VerticalLayout {
alignment: space-between;
for player in [0, 1, 2, 3]: ComboBox {
model: ControllerData.input_profiles;
min-width: self.preferred-width > 150px ? self.preferred-width : 150px;
current-index: ControllerData.selected_profile_binding[player];
selected => {
ControllerData.selected_profile_binding[player] = self.current-index;
}
}
}
}
GroupBox {
title: @tr("Controller");
horizontal-stretch: 0.75;
VerticalLayout {
alignment: space-between;
for player in [0, 1, 2, 3]: ComboBox {
model: ControllerData.controller_names;
min-width: self.preferred-width > 300px ? self.preferred-width : 300px;
current-index: ControllerData.selected_controller[player];
selected => {
ControllerData.selected_controller[player] = self.current-index;
ControllerData.controller_changed[player] = true;
}
}
}
}
ControllerAssignmentGrid { }
}
}
}
+11 -3
View File
@@ -1,7 +1,7 @@
// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: MIT
import { Switch, GridBox, ListView, ScrollView, HorizontalBox, VerticalBox, Palette } from "std-widgets.slint";
import { ScrollView, HorizontalBox, VerticalBox } from "std-widgets.slint";
export component Page inherits VerticalBox {
in property <string> title: "title";
@@ -15,9 +15,17 @@ export component Page inherits VerticalBox {
text <=> root.title;
}
// Spacer
Rectangle { }
}
@children
ScrollView {
vertical-stretch: 1;
VerticalBox {
padding: 8px;
alignment: start;
@children
}
}
}
+12
View File
@@ -15,6 +15,7 @@ export global SettingsData {
in-out property <bool> disable_expansion_pak;
in-out property <int> resolution;
in-out property <bool> emulate_usb;
in-out property <bool> emulate_vru;
in-out property <string> rom_dir;
}
@@ -141,5 +142,16 @@ export component Settings inherits Page {
}
}
}
HorizontalBox {
alignment: start;
Switch {
text: @tr("Emulate VRU");
checked: SettingsData.emulate_vru;
toggled => {
SettingsData.emulate_vru = self.checked;
}
}
}
}
}
+161 -97
View File
@@ -1,19 +1,79 @@
// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: MIT
import { HorizontalBox, VerticalBox, Palette } from "std-widgets.slint";
import { Palette } from "std-widgets.slint";
export struct SideBarEntry {
icon: image,
label: string,
}
component SideBarButton inherits Rectangle {
in property <bool> selected;
in property <bool> has-focus;
in property <image> icon;
callback clicked <=> touch.clicked;
width: 48px;
height: 48px;
border-radius: 8px;
highlight := Rectangle {
width: 100%;
height: 100%;
border-radius: parent.border-radius;
background: Palette.control-background;
opacity: 0;
animate opacity { duration: 150ms; }
}
icon-display := Image {
source: root.icon;
width: 24px;
height: 24px;
colorize: Palette.foreground;
x: (parent.width - self.width) / 2;
y: (parent.height - self.height) / 2;
animate colorize { duration: 150ms; }
}
touch := TouchArea {
width: 100%;
height: 100%;
}
states [
selected when root.selected: {
highlight.opacity: 1;
highlight.background: Palette.accent-background;
icon-display.colorize: Palette.accent-foreground;
}
pressed when touch.pressed && !root.selected: {
highlight.opacity: 0.55;
}
hover when touch.has-hover && !root.selected: {
highlight.opacity: 0.4;
}
focused when root.has-focus && !root.selected: {
highlight.opacity: 0.4;
}
]
}
component SideBarItem inherits Rectangle {
in property <int> tab-index;
in property <bool> selected;
in property <bool> has-focus;
in-out property <string> text <=> label.text;
in property <image> icon;
in property <string> label;
callback clicked <=> touch.clicked;
callback clicked <=> button.clicked;
min-height: l.preferred-height;
accessible-role: tab;
accessible-label: root.text;
accessible-label: root.label;
accessible-item-index: root.tab-index;
accessible-item-selectable: true;
accessible-item-selected: root.selected;
@@ -21,124 +81,128 @@ component SideBarItem inherits Rectangle {
self.clicked();
}
states [
pressed when touch.pressed: {
state.opacity: 0.8;
}
hover when touch.has-hover: {
state.opacity: 0.6;
}
selected when root.selected: {
state.opacity: 1;
}
focused when root.has-focus: {
state.opacity: 0.8;
}
]
state := Rectangle {
opacity: 0;
background: Palette.background;
animate opacity { duration: 150ms; }
}
l := HorizontalBox {
y: (parent.height - self.height) / 2;
spacing: 0px;
label := Text {
vertical-alignment: center;
accessible-role: none;
}
}
touch := TouchArea {
width: 100%;
height: 100%;
button := SideBarButton {
icon: root.icon;
selected: root.selected;
has-focus: root.has-focus;
}
}
export component SideBar inherits Rectangle {
in property <[string]> model: [];
in property <string> title <=> label.text;
out property <int> current-item: 0;
out property <int> current-focused: fs.has-focus ? fs.focused-tab : -1; // The currently focused tab
in property <[SideBarEntry]> model: [];
in property <string> title: "Gopher64";
in property <bool> portrait;
in-out property <int> current-item: 0;
out property <int> current-focused: fs.has-focus ? fs.focused-tab : -1;
width: 180px;
forward-focus: fs;
Rectangle {
width: 100%;
height: 100%;
background: Palette.background.darker(0.2);
}
VerticalBox {
padding-left: 0px;
padding-right: 0px;
alignment: start;
label := Text {
font-size: 16px;
horizontal-alignment: center;
fs := FocusScope {
key-pressed(event) => {
if (event.text == "\n") {
root.current-item = root.current-focused;
return accept;
}
if (root.portrait) {
if (event.text == Key.LeftArrow) {
self.focused-tab = Math.max(self.focused-tab - 1, 0);
return accept;
}
if (event.text == Key.RightArrow) {
self.focused-tab = Math.min(self.focused-tab + 1, root.model.length - 1);
return accept;
}
} else {
if (event.text == Key.UpArrow) {
self.focused-tab = Math.max(self.focused-tab - 1, 0);
return accept;
}
if (event.text == Key.DownArrow) {
self.focused-tab = Math.min(self.focused-tab + 1, root.model.length - 1);
return accept;
}
}
return reject;
}
navigation := VerticalLayout {
alignment: start;
vertical-stretch: 0;
accessible-role: tab-list;
accessible-delegate-focus: root.current-focused >= 0 ? root.current-focused : root.current-item;
accessible-label: root.title;
accessible-item-count: root.model.length;
fs := FocusScope {
key-pressed(event) => {
if (event.text == "\n") {
root.current-item = root.current-focused;
return accept;
}
if (event.text == Key.UpArrow) {
self.focused-tab = Math.max(self.focused-tab - 1, 0);
return accept;
}
if (event.text == Key.DownArrow) {
self.focused-tab = Math.min(self.focused-tab + 1, root.model.length - 1);
return accept;
}
return reject;
}
key-released(event) => {
if (event.text == " ") {
root.current-item = root.current-focused;
return accept;
}
return reject;
}
property <int> focused-tab: 0;
x: 0;
width: 0; // Do not react on clicks
key-released(event) => {
if (event.text == " ") {
root.current-item = root.current-focused;
return accept;
}
return reject;
}
for item[index] in root.model: SideBarItem {
property <int> focused-tab: 0;
width: 0;
height: 0;
}
// Bottom bar in portrait: icons in a row, centered vertically in the bar.
portrait-strip := HorizontalLayout {
visible: root.portrait;
width: 100%;
height: 100%;
padding: 4px;
spacing: 4px;
alignment: space-evenly;
accessible-role: tab-list;
accessible-delegate-focus: root.current-focused >= 0 ? root.current-focused : root.current-item;
accessible-label: root.title;
accessible-item-count: root.model.length;
for item[index] in root.model: VerticalLayout {
alignment: center;
SideBarItem {
clicked => {
root.current-item = index;
}
tab-index: index;
has-focus: index == root.current-focused;
text: item;
icon: item.icon;
label: item.label;
selected: index == root.current-item;
}
}
}
VerticalLayout {
bottom := VerticalBox {
padding-top: 0px;
padding-bottom: 0px;
// Left rail in landscape: icons in a column, centered horizontally in the bar.
landscape-strip := VerticalLayout {
visible: !root.portrait;
width: 100%;
height: 100%;
padding: 4px;
spacing: 4px;
alignment: space-evenly;
@children
accessible-role: tab-list;
accessible-delegate-focus: root.current-focused >= 0 ? root.current-focused : root.current-item;
accessible-label: root.title;
accessible-item-count: root.model.length;
for item[index] in root.model: HorizontalLayout {
alignment: center;
SideBarItem {
clicked => {
root.current-item = index;
}
tab-index: index;
has-focus: index == root.current-focused;
icon: item.icon;
label: item.label;
selected: index == root.current-item;
}
}
}
+2 -2
View File
@@ -729,7 +729,7 @@ pub fn configure_input_profile(
initial_state: 0,
};
let image_bytes = include_bytes!("../../data/controller.png");
let image_bytes = include_bytes!("../../data/ui/controller.png");
let image = unsafe {
sdl3_image_sys::image::IMG_LoadPNG_IO(sdl3_sys::everything::SDL_IOFromConstMem(
image_bytes.as_ptr() as *const std::ffi::c_void,
@@ -740,7 +740,7 @@ pub fn configure_input_profile(
unsafe { sdl3_sys::surface::SDL_DestroySurface(image) };
let text_engine = unsafe { sdl3_ttf_sys::ttf::TTF_CreateRendererTextEngine(renderer) };
let font = unsafe {
let font_bytes = include_bytes!("../../data/RobotoMono-Regular.ttf");
let font_bytes = include_bytes!("../../data/ui/RobotoMono-Regular.ttf");
sdl3_ttf_sys::ttf::TTF_OpenFontIO(
sdl3_sys::everything::SDL_IOFromConstMem(
font_bytes.as_ptr() as *const std::ffi::c_void,
+1 -1
View File
@@ -102,7 +102,7 @@ pub fn init(device: &mut device::Device) {
let gfx_info = build_gfx_info(device);
unsafe {
let font_bytes = include_bytes!("../../data/RobotoMono-Regular.ttf");
let font_bytes = include_bytes!("../../data/ui/RobotoMono-Regular.ttf");
rdp_init(
device.ui.video.window as *mut std::ffi::c_void,
gfx_info,