From 411cb0efa75c95b9774f34a1617a4c8d2cef71f4 Mon Sep 17 00:00:00 2001 From: Logan McNaughton <848146+loganmc10@users.noreply.github.com> Date: Mon, 25 May 2026 11:31:33 +0200 Subject: [PATCH] remove dialog windows (#948) --- data/translations/de/LC_MESSAGES/gopher64.po | 241 +++--- data/translations/es/LC_MESSAGES/gopher64.po | 239 +++--- data/translations/fr/LC_MESSAGES/gopher64.po | 179 ++-- data/translations/gopher64.pot | 231 +++--- data/translations/ja/LC_MESSAGES/gopher64.po | 243 +++--- data/translations/nl/LC_MESSAGES/gopher64.po | 241 +++--- .../pt_BR/LC_MESSAGES/gopher64.po | 177 ++-- data/translations/ru/LC_MESSAGES/gopher64.po | 242 +++--- src/ui/cheats.rs | 11 +- src/ui/gui.rs | 90 +- src/ui/gui/appwindow.slint | 191 ++++- src/ui/gui/input_profile.slint | 20 +- src/ui/gui/netplay_create.slint | 296 +++---- src/ui/gui/netplay_join.slint | 245 +++--- src/ui/gui/netplay_page.slint | 39 +- src/ui/gui/netplay_wait.slint | 184 ++--- src/ui/netplay.rs | 777 ++++++++---------- 17 files changed, 1854 insertions(+), 1792 deletions(-) diff --git a/data/translations/de/LC_MESSAGES/gopher64.po b/data/translations/de/LC_MESSAGES/gopher64.po index d18990d1..1a56eedd 100644 --- a/data/translations/de/LC_MESSAGES/gopher64.po +++ b/data/translations/de/LC_MESSAGES/gopher64.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: gopher64\n" -"POT-Creation-Date: 2026-05-19 09:43+0000\n" +"POT-Creation-Date: 2026-05-25 08:28+0000\n" "PO-Revision-Date: 2026-05-11 12:00+0000\n" "Last-Translator: \n" "Language-Team: German\n" @@ -47,46 +47,41 @@ msgctxt "About" msgid "Donate (via GitHub)" msgstr "Spenden (über GitHub)" -#: src/ui/gui/appwindow.slint:103 +#: src/ui/gui/appwindow.slint:151 msgctxt "Menu" msgid "Local Game" msgstr "Lokales Spiel" -#: src/ui/gui/appwindow.slint:107 +#: src/ui/gui/appwindow.slint:155 msgctxt "Menu" msgid "Controller Config" msgstr "Controller-Konfiguration" -#: src/ui/gui/appwindow.slint:111 +#: src/ui/gui/appwindow.slint:159 msgctxt "Menu" msgid "Netplay" msgstr "Netplay" -#: src/ui/gui/appwindow.slint:115 +#: src/ui/gui/appwindow.slint:163 msgctxt "Menu" msgid "Cheats" msgstr "Cheats" -#: src/ui/gui/appwindow.slint:119 +#: src/ui/gui/appwindow.slint:167 msgctxt "Menu" msgid "RetroAchievements" msgstr "RetroAchievements" -#: src/ui/gui/appwindow.slint:123 +#: src/ui/gui/appwindow.slint:171 msgctxt "Menu" msgid "Settings" msgstr "Einstellungen" -#: src/ui/gui/appwindow.slint:127 +#: src/ui/gui/appwindow.slint:175 msgctxt "Menu" msgid "About" msgstr "Über" -#: src/ui/gui/appwindow.slint:248 -msgctxt "ErrorDialog" -msgid "Error" -msgstr "Fehler" - #: src/ui/gui/cheat_page.slint:15 msgctxt "Cheats" msgid "Cheats" @@ -102,7 +97,7 @@ msgctxt "Cheats" msgid "Clear Cheats For All ROMs" msgstr "Cheats für alle ROMs löschen" -#: src/ui/gui/cheat_page.slint:87 +#: src/ui/gui/cheat_page.slint:88 msgctxt "Cheats" msgid "No Cheats Available" msgstr "Keine Cheats verfügbar" @@ -142,62 +137,67 @@ msgctxt "ControllerConfig" msgid "Controller Assignment" msgstr "Controller-Zuweisung" -#: src/ui/gui/input_profile.slint:10 +#: src/ui/gui/input_profile.slint:12 msgctxt "InputProfileDialog" msgid "Create/Modify Input Profile" msgstr "Eingabeprofil erstellen/bearbeiten" -#: src/ui/gui/input_profile.slint:18 +#: src/ui/gui/input_profile.slint:25 msgctxt "InputProfileDialog" msgid "Enter profile name to create or modify" msgstr "Profilname zum Erstellen oder Bearbeiten eingeben" -#: src/ui/gui/input_profile.slint:29 +#: src/ui/gui/input_profile.slint:38 msgctxt "InputProfileDialog" msgid "Deadzone Percentage" msgstr "Deadzone Größe in Prozent" -#: src/ui/gui/input_profile.slint:51 +#: src/ui/gui/input_profile.slint:61 msgctxt "InputProfileDialog" msgid "Use DirectInput" msgstr "DirectInput verwenden" -#: src/ui/gui/input_profile.slint:61 +#: src/ui/gui/input_profile.slint:74 msgctxt "InputProfileDialog" msgid "Start Profile Creation Wizard" msgstr "Assistent zur Profilerstellung starten" -#: src/ui/gui/localgame_page.slint:18 +#: src/ui/gui/input_profile.slint:82 +msgctxt "InputProfileDialog" +msgid "Cancel" +msgstr "Abbrechen" + +#: src/ui/gui/localgame_page.slint:19 msgctxt "LocalGame" msgid "Local Game" msgstr "Lokales Spiel" -#: src/ui/gui/localgame_page.slint:25 +#: src/ui/gui/localgame_page.slint:26 msgctxt "LocalGame" msgid "Open ROM" msgstr "ROM öffnen" -#: src/ui/gui/localgame_page.slint:36 +#: src/ui/gui/localgame_page.slint:37 msgctxt "LocalGame" msgid "Open Saves Folder" msgstr "Speicherordner öffnen" -#: src/ui/gui/localgame_page.slint:53 +#: src/ui/gui/localgame_page.slint:54 msgctxt "LocalGame" msgid "Recent ROMs" msgstr "Zuletzt verwendete ROMs" -#: src/ui/gui/netplay_create.slint:5 +#: src/ui/gui/netplay_create.slint:7 msgctxt "NetplayCreate" msgid "Netplay: Create Session" msgstr "Netplay: Sitzung erstellen" -#: src/ui/gui/netplay_create.slint:24 +#: src/ui/gui/netplay_create.slint:23 msgctxt "NetplayCreate" msgid "Session Name:" msgstr "Sitzungsname:" -#: src/ui/gui/netplay_create.slint:28 +#: src/ui/gui/netplay_create.slint:27 msgctxt "NetplayCreate" msgid "Enter session name" msgstr "Sitzungsname eingeben" @@ -212,27 +212,27 @@ msgctxt "NetplayCreate" msgid "Enter session password" msgstr "Sitzungspasswort eingeben" -#: src/ui/gui/netplay_create.slint:51 +#: src/ui/gui/netplay_create.slint:52 msgctxt "NetplayCreate" msgid "Player Name:" msgstr "Spielername:" -#: src/ui/gui/netplay_create.slint:55 +#: src/ui/gui/netplay_create.slint:56 msgctxt "NetplayCreate" msgid "Enter player name" msgstr "Spielername eingeben" -#: src/ui/gui/netplay_create.slint:64 +#: src/ui/gui/netplay_create.slint:66 msgctxt "NetplayCreate" msgid "Server:" msgstr "Server:" -#: src/ui/gui/netplay_create.slint:82 +#: src/ui/gui/netplay_create.slint:86 msgctxt "NetplayCreate" msgid "Select ROM" msgstr "ROM auswählen" -#: src/ui/gui/netplay_create.slint:97 +#: src/ui/gui/netplay_create.slint:102 msgctxt "NetplayCreate" msgid "" "This game has cheats enabled. Cheats will be synchronized with other players." @@ -240,168 +240,167 @@ msgstr "" "Für dieses Spiel sind Cheats aktiviert. Cheats werden mit anderen Spielern " "synchronisiert." -#: src/ui/gui/netplay_create.slint:103 +#: src/ui/gui/netplay_create.slint:112 msgctxt "NetplayCreate" msgid "Create Session" msgstr "Sitzung erstellen" -#: src/ui/gui/netplay_create.slint:126 -msgctxt "DispatcherDialog" -msgid "Creating Server" -msgstr "Server wird erstellt" +#: src/ui/gui/netplay_create.slint:132 +msgctxt "NetplayCreate" +msgid "Cancel" +msgstr "Abbrechen" -#: src/ui/gui/netplay_create.slint:128 -msgctxt "DispatcherDialog" -msgid "Creating server, please wait...This may take about 30 seconds." -msgstr "" -"Server wird erstellt, bitte warten … Dies kann etwa 30 Sekunden dauern." +#: src/ui/gui/netplay_create.slint:155 +msgctxt "CustomServerDialog" +msgid "Enter a custom server URL" +msgstr "Eigene Server-URL eingeben" -#: src/ui/gui/netplay_join.slint:5 +#: src/ui/gui/netplay_join.slint:7 msgctxt "NetplayJoin" msgid "Netplay: Join Session" msgstr "Netplay: Sitzung beitreten" -#: src/ui/gui/netplay_join.slint:30 +#: src/ui/gui/netplay_join.slint:18 msgctxt "NetplayJoin" msgid "Player Name (required):" msgstr "Spielername (erforderlich):" -#: src/ui/gui/netplay_join.slint:34 +#: src/ui/gui/netplay_join.slint:22 msgctxt "NetplayJoin" msgid "Enter player name" msgstr "Spielername eingeben" -#: src/ui/gui/netplay_join.slint:43 -msgctxt "NetplayJoin" -msgid "Custom Server URL (optional):" -msgstr "Eigene Server-URL (optional):" - -#: src/ui/gui/netplay_join.slint:57 -msgctxt "NetplayJoin" -msgid "Refreshing session list, please wait..." -msgstr "Sitzungsliste wird aktualisiert, bitte warten …" - -#: src/ui/gui/netplay_join.slint:62 -msgctxt "NetplayJoin" -msgid "Click on a session below to select it" -msgstr "Auf eine Sitzung klicken um diese auszuwählen" - -#: src/ui/gui/netplay_join.slint:67 -msgctxt "NetplayJoin" -msgid "No sessions available. Please refresh to check again." -msgstr "Keine Sitzungen verfügbar. Bitte aktualisieren, um erneut zu prüfen." - -#: src/ui/gui/netplay_join.slint:73 -msgctxt "NetplayJoin" -msgid "Server" -msgstr "Server" - -#: src/ui/gui/netplay_join.slint:74 -msgctxt "NetplayJoin" -msgid "Session Name" -msgstr "Sitzungsname" - -#: src/ui/gui/netplay_join.slint:75 -msgctxt "NetplayJoin" -msgid "Game Name" -msgstr "Spielname" - -#: src/ui/gui/netplay_join.slint:76 -msgctxt "NetplayJoin" -msgid "Password" -msgstr "Passwort" - -#: src/ui/gui/netplay_join.slint:77 -msgctxt "NetplayJoin" -msgid "Cheats" -msgstr "Cheats" - -#: src/ui/gui/netplay_join.slint:91 -msgctxt "NetplayJoin" -msgid "Refresh Session List" -msgstr "Sitzungsliste aktualisieren" - -#: src/ui/gui/netplay_join.slint:105 +#: src/ui/gui/netplay_join.slint:31 msgctxt "NetplayJoin" msgid "Password (if required)" msgstr "Passwort (falls erforderlich)" -#: src/ui/gui/netplay_join.slint:112 +#: src/ui/gui/netplay_join.slint:41 +msgctxt "NetplayJoin" +msgid "Custom Server URL (optional):" +msgstr "Eigene Server-URL (optional):" + +#: src/ui/gui/netplay_join.slint:53 msgctxt "NetplayJoin" msgid "Select ROM" msgstr "ROM auswählen" -#: src/ui/gui/netplay_join.slint:125 +#: src/ui/gui/netplay_join.slint:68 +msgctxt "NetplayJoin" +msgid "Refreshing session list, please wait..." +msgstr "Sitzungsliste wird aktualisiert, bitte warten …" + +#: src/ui/gui/netplay_join.slint:73 +msgctxt "NetplayJoin" +msgid "Click on a session below to select it" +msgstr "Auf eine Sitzung klicken um diese auszuwählen" + +#: src/ui/gui/netplay_join.slint:78 +msgctxt "NetplayJoin" +msgid "No sessions available. Please refresh to check again." +msgstr "Keine Sitzungen verfügbar. Bitte aktualisieren, um erneut zu prüfen." + +#: src/ui/gui/netplay_join.slint:84 +msgctxt "NetplayJoin" +msgid "Server" +msgstr "Server" + +#: src/ui/gui/netplay_join.slint:85 +msgctxt "NetplayJoin" +msgid "Session Name" +msgstr "Sitzungsname" + +#: src/ui/gui/netplay_join.slint:86 +msgctxt "NetplayJoin" +msgid "Game Name" +msgstr "Spielname" + +#: src/ui/gui/netplay_join.slint:87 +msgctxt "NetplayJoin" +msgid "Password" +msgstr "Passwort" + +#: src/ui/gui/netplay_join.slint:88 +msgctxt "NetplayJoin" +msgid "Cheats" +msgstr "Cheats" + +#: src/ui/gui/netplay_join.slint:102 +msgctxt "NetplayJoin" +msgid "Refresh Session List" +msgstr "Sitzungsliste aktualisieren" + +#: src/ui/gui/netplay_join.slint:119 msgctxt "NetplayJoin" msgid "Join Session" msgstr "Sitzung beitreten" -#: src/ui/gui/netplay_page.slint:33 +#: src/ui/gui/netplay_join.slint:132 +msgctxt "NetplayJoin" +msgid "Cancel" +msgstr "Abbrechen" + +#: src/ui/gui/netplay_page.slint:37 msgctxt "Netplay" msgid "Netplay" msgstr "Netplay" -#: src/ui/gui/netplay_page.slint:40 +#: src/ui/gui/netplay_page.slint:45 msgctxt "Netplay" msgid "Create Session" msgstr "Sitzung erstellen" -#: src/ui/gui/netplay_page.slint:50 +#: src/ui/gui/netplay_page.slint:56 msgctxt "Netplay" msgid "Join Session" msgstr "Sitzung beitreten" -#: src/ui/gui/netplay_page.slint:64 +#: src/ui/gui/netplay_page.slint:70 msgctxt "Netplay" msgid "Netplay Discord Channel" msgstr "Netplay-Discord-Kanal" -#: src/ui/gui/netplay_page.slint:71 +#: src/ui/gui/netplay_page.slint:77 msgctxt "Netplay" msgid "Provide Feedback" msgstr "Feedback geben" -#: src/ui/gui/netplay_page.slint:82 -msgctxt "CustomNetplayServer" -msgid "Custom Netplay Server" -msgstr "Benutzerdefinierter Netplay-Server" - -#: src/ui/gui/netplay_wait.slint:14 +#: src/ui/gui/netplay_wait.slint:15 msgctxt "NetplayWait" msgid "Netplay: Waiting Room" msgstr "Netplay: Warteraum" -#: src/ui/gui/netplay_wait.slint:31 +#: src/ui/gui/netplay_wait.slint:27 msgctxt "NetplayWait" msgid "Session Name:" msgstr "Sitzungsname:" -#: src/ui/gui/netplay_wait.slint:37 +#: src/ui/gui/netplay_wait.slint:33 msgctxt "NetplayWait" msgid "Game Name:" msgstr "Spielname:" -#: src/ui/gui/netplay_wait.slint:43 +#: src/ui/gui/netplay_wait.slint:39 msgctxt "NetplayWait" msgid "Ping:" msgstr "Ping:" -#: src/ui/gui/netplay_wait.slint:50 +#: src/ui/gui/netplay_wait.slint:48 msgctxt "NetplayWait" msgid "Player 1:" msgstr "Spieler 1:" -#: src/ui/gui/netplay_wait.slint:54 +#: src/ui/gui/netplay_wait.slint:52 msgctxt "NetplayWait" msgid "Player 2:" msgstr "Spieler 2:" -#: src/ui/gui/netplay_wait.slint:60 +#: src/ui/gui/netplay_wait.slint:58 msgctxt "NetplayWait" msgid "Player 3:" msgstr "Spieler 3:" -#: src/ui/gui/netplay_wait.slint:64 +#: src/ui/gui/netplay_wait.slint:62 msgctxt "NetplayWait" msgid "Player 4:" msgstr "Spieler 4:" @@ -416,11 +415,16 @@ msgctxt "NetplayWait" msgid "Send Message" msgstr "Nachricht senden" -#: src/ui/gui/netplay_wait.slint:102 +#: src/ui/gui/netplay_wait.slint:105 msgctxt "NetplayWait" msgid "Start Game" msgstr "Spiel starten" +#: src/ui/gui/netplay_wait.slint:113 +msgctxt "NetplayWait" +msgid "Cancel" +msgstr "Abbrechen" + #: src/ui/gui/retroachievements_page.slint:19 msgctxt "RAData" msgid "Not currently logged in" @@ -546,6 +550,11 @@ msgctxt "VruDialog" msgid "What Would You Like To Say?" msgstr "Was möchten Sie sagen?" +#~ msgctxt "NetplayCreate" +#~ msgid "Creating server, please wait...This may take about 30 seconds." +#~ msgstr "" +#~ "Server wird erstellt, bitte warten … Dies kann etwa 30 Sekunden dauern." + #~ msgctxt "ControllerConfig" #~ msgid "Port" #~ msgstr "Port" diff --git a/data/translations/es/LC_MESSAGES/gopher64.po b/data/translations/es/LC_MESSAGES/gopher64.po index 6e3201df..30cc1ab2 100644 --- a/data/translations/es/LC_MESSAGES/gopher64.po +++ b/data/translations/es/LC_MESSAGES/gopher64.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: gopher64\n" -"POT-Creation-Date: 2026-05-19 09:43+0000\n" +"POT-Creation-Date: 2026-05-25 08:28+0000\n" "PO-Revision-Date: 2026-05-11 12:00+0000\n" "Last-Translator: Gemini\n" "Language-Team: Spanish (Spain)\n" @@ -47,46 +47,41 @@ msgctxt "About" msgid "Donate (via GitHub)" msgstr "Donar (a través de GitHub)" -#: src/ui/gui/appwindow.slint:103 +#: src/ui/gui/appwindow.slint:151 msgctxt "Menu" msgid "Local Game" msgstr "Juego local" -#: src/ui/gui/appwindow.slint:107 +#: src/ui/gui/appwindow.slint:155 msgctxt "Menu" msgid "Controller Config" msgstr "Config. del mando" -#: src/ui/gui/appwindow.slint:111 +#: src/ui/gui/appwindow.slint:159 msgctxt "Menu" msgid "Netplay" msgstr "Netplay" -#: src/ui/gui/appwindow.slint:115 +#: src/ui/gui/appwindow.slint:163 msgctxt "Menu" msgid "Cheats" msgstr "Trucos" -#: src/ui/gui/appwindow.slint:119 +#: src/ui/gui/appwindow.slint:167 msgctxt "Menu" msgid "RetroAchievements" msgstr "RetroAchievements" -#: src/ui/gui/appwindow.slint:123 +#: src/ui/gui/appwindow.slint:171 msgctxt "Menu" msgid "Settings" msgstr "Ajustes" -#: src/ui/gui/appwindow.slint:127 +#: src/ui/gui/appwindow.slint:175 msgctxt "Menu" msgid "About" msgstr "Acerca de" -#: src/ui/gui/appwindow.slint:248 -msgctxt "ErrorDialog" -msgid "Error" -msgstr "Error" - #: src/ui/gui/cheat_page.slint:15 msgctxt "Cheats" msgid "Cheats" @@ -102,7 +97,7 @@ msgctxt "Cheats" msgid "Clear Cheats For All ROMs" msgstr "Borrar trucos de todas las ROMs" -#: src/ui/gui/cheat_page.slint:87 +#: src/ui/gui/cheat_page.slint:88 msgctxt "Cheats" msgid "No Cheats Available" msgstr "No hay trucos disponibles" @@ -142,62 +137,67 @@ msgctxt "ControllerConfig" msgid "Controller Assignment" msgstr "Asignación del mando" -#: src/ui/gui/input_profile.slint:10 +#: src/ui/gui/input_profile.slint:12 msgctxt "InputProfileDialog" msgid "Create/Modify Input Profile" msgstr "Crear/Modificar perfil de entrada" -#: src/ui/gui/input_profile.slint:18 +#: src/ui/gui/input_profile.slint:25 msgctxt "InputProfileDialog" msgid "Enter profile name to create or modify" msgstr "Introduce el nombre del perfil para crear o modificar" -#: src/ui/gui/input_profile.slint:29 +#: src/ui/gui/input_profile.slint:38 msgctxt "InputProfileDialog" msgid "Deadzone Percentage" msgstr "Porcentaje de zona muerta" -#: src/ui/gui/input_profile.slint:51 +#: src/ui/gui/input_profile.slint:61 msgctxt "InputProfileDialog" msgid "Use DirectInput" msgstr "Usar DirectInput" -#: src/ui/gui/input_profile.slint:61 +#: src/ui/gui/input_profile.slint:74 msgctxt "InputProfileDialog" msgid "Start Profile Creation Wizard" msgstr "Iniciar asistente de creación de perfil" -#: src/ui/gui/localgame_page.slint:18 +#: src/ui/gui/input_profile.slint:82 +msgctxt "InputProfileDialog" +msgid "Cancel" +msgstr "Cancelar" + +#: src/ui/gui/localgame_page.slint:19 msgctxt "LocalGame" msgid "Local Game" msgstr "Juego local" -#: src/ui/gui/localgame_page.slint:25 +#: src/ui/gui/localgame_page.slint:26 msgctxt "LocalGame" msgid "Open ROM" msgstr "Abrir ROM" -#: src/ui/gui/localgame_page.slint:36 +#: src/ui/gui/localgame_page.slint:37 msgctxt "LocalGame" msgid "Open Saves Folder" msgstr "Abrir carpeta de guardados" -#: src/ui/gui/localgame_page.slint:53 +#: src/ui/gui/localgame_page.slint:54 msgctxt "LocalGame" msgid "Recent ROMs" msgstr "ROMs recientes" -#: src/ui/gui/netplay_create.slint:5 +#: src/ui/gui/netplay_create.slint:7 msgctxt "NetplayCreate" msgid "Netplay: Create Session" msgstr "Netplay: Crear sesión" -#: src/ui/gui/netplay_create.slint:24 +#: src/ui/gui/netplay_create.slint:23 msgctxt "NetplayCreate" msgid "Session Name:" msgstr "Nombre de la sesión:" -#: src/ui/gui/netplay_create.slint:28 +#: src/ui/gui/netplay_create.slint:27 msgctxt "NetplayCreate" msgid "Enter session name" msgstr "Introduce el nombre de la sesión" @@ -212,27 +212,27 @@ msgctxt "NetplayCreate" msgid "Enter session password" msgstr "Introduce la contraseña" -#: src/ui/gui/netplay_create.slint:51 +#: src/ui/gui/netplay_create.slint:52 msgctxt "NetplayCreate" msgid "Player Name:" msgstr "Nombre del jugador:" -#: src/ui/gui/netplay_create.slint:55 +#: src/ui/gui/netplay_create.slint:56 msgctxt "NetplayCreate" msgid "Enter player name" msgstr "Introduce tu nombre" -#: src/ui/gui/netplay_create.slint:64 +#: src/ui/gui/netplay_create.slint:66 msgctxt "NetplayCreate" msgid "Server:" msgstr "Servidor:" -#: src/ui/gui/netplay_create.slint:82 +#: src/ui/gui/netplay_create.slint:86 msgctxt "NetplayCreate" msgid "Select ROM" msgstr "Seleccionar ROM" -#: src/ui/gui/netplay_create.slint:97 +#: src/ui/gui/netplay_create.slint:102 msgctxt "NetplayCreate" msgid "" "This game has cheats enabled. Cheats will be synchronized with other players." @@ -240,167 +240,167 @@ msgstr "" "Este juego tiene trucos activados. Los trucos se sincronizarán con los otros " "jugadores." -#: src/ui/gui/netplay_create.slint:103 +#: src/ui/gui/netplay_create.slint:112 msgctxt "NetplayCreate" msgid "Create Session" msgstr "Crear sesión" -#: src/ui/gui/netplay_create.slint:126 -msgctxt "DispatcherDialog" -msgid "Creating Server" -msgstr "Creando servidor" +#: src/ui/gui/netplay_create.slint:132 +msgctxt "NetplayCreate" +msgid "Cancel" +msgstr "Cancelar" -#: src/ui/gui/netplay_create.slint:128 -msgctxt "DispatcherDialog" -msgid "Creating server, please wait...This may take about 30 seconds." -msgstr "Creando servidor, espera... Puede tardar unos 30 segundos." +#: src/ui/gui/netplay_create.slint:155 +msgctxt "CustomServerDialog" +msgid "Enter a custom server URL" +msgstr "Introduce la URL de servidor personalizado" -#: src/ui/gui/netplay_join.slint:5 +#: src/ui/gui/netplay_join.slint:7 msgctxt "NetplayJoin" msgid "Netplay: Join Session" msgstr "Netplay: Unirse a la sesión" -#: src/ui/gui/netplay_join.slint:30 +#: src/ui/gui/netplay_join.slint:18 msgctxt "NetplayJoin" msgid "Player Name (required):" msgstr "Nombre de jugador (requerido):" -#: src/ui/gui/netplay_join.slint:34 +#: src/ui/gui/netplay_join.slint:22 msgctxt "NetplayJoin" msgid "Enter player name" msgstr "Introduce tu nombre" -#: src/ui/gui/netplay_join.slint:43 -msgctxt "NetplayJoin" -msgid "Custom Server URL (optional):" -msgstr "URL de servidor personalizado (opcional):" - -#: src/ui/gui/netplay_join.slint:57 -msgctxt "NetplayJoin" -msgid "Refreshing session list, please wait..." -msgstr "Actualizando lista de sesiones, espera..." - -#: src/ui/gui/netplay_join.slint:62 -msgctxt "NetplayJoin" -msgid "Click on a session below to select it" -msgstr "Pulsa una sesión para seleccionarla" - -#: src/ui/gui/netplay_join.slint:67 -msgctxt "NetplayJoin" -msgid "No sessions available. Please refresh to check again." -msgstr "No hay sesiones disponibles. Actualiza para comprobar de nuevo." - -#: src/ui/gui/netplay_join.slint:73 -msgctxt "NetplayJoin" -msgid "Server" -msgstr "Servidor" - -#: src/ui/gui/netplay_join.slint:74 -msgctxt "NetplayJoin" -msgid "Session Name" -msgstr "Nombre de la sesión" - -#: src/ui/gui/netplay_join.slint:75 -msgctxt "NetplayJoin" -msgid "Game Name" -msgstr "Nombre del juego" - -#: src/ui/gui/netplay_join.slint:76 -msgctxt "NetplayJoin" -msgid "Password" -msgstr "Contraseña" - -#: src/ui/gui/netplay_join.slint:77 -msgctxt "NetplayJoin" -msgid "Cheats" -msgstr "Trucos" - -#: src/ui/gui/netplay_join.slint:91 -msgctxt "NetplayJoin" -msgid "Refresh Session List" -msgstr "Actualizar lista" - -#: src/ui/gui/netplay_join.slint:105 +#: src/ui/gui/netplay_join.slint:31 msgctxt "NetplayJoin" msgid "Password (if required)" msgstr "Contraseña (si es necesaria)" -#: src/ui/gui/netplay_join.slint:112 +#: src/ui/gui/netplay_join.slint:41 +msgctxt "NetplayJoin" +msgid "Custom Server URL (optional):" +msgstr "URL de servidor personalizado (opcional):" + +#: src/ui/gui/netplay_join.slint:53 msgctxt "NetplayJoin" msgid "Select ROM" msgstr "Seleccionar ROM" -#: src/ui/gui/netplay_join.slint:125 +#: src/ui/gui/netplay_join.slint:68 +msgctxt "NetplayJoin" +msgid "Refreshing session list, please wait..." +msgstr "Actualizando lista de sesiones, espera..." + +#: src/ui/gui/netplay_join.slint:73 +msgctxt "NetplayJoin" +msgid "Click on a session below to select it" +msgstr "Pulsa una sesión para seleccionarla" + +#: src/ui/gui/netplay_join.slint:78 +msgctxt "NetplayJoin" +msgid "No sessions available. Please refresh to check again." +msgstr "No hay sesiones disponibles. Actualiza para comprobar de nuevo." + +#: src/ui/gui/netplay_join.slint:84 +msgctxt "NetplayJoin" +msgid "Server" +msgstr "Servidor" + +#: src/ui/gui/netplay_join.slint:85 +msgctxt "NetplayJoin" +msgid "Session Name" +msgstr "Nombre de la sesión" + +#: src/ui/gui/netplay_join.slint:86 +msgctxt "NetplayJoin" +msgid "Game Name" +msgstr "Nombre del juego" + +#: src/ui/gui/netplay_join.slint:87 +msgctxt "NetplayJoin" +msgid "Password" +msgstr "Contraseña" + +#: src/ui/gui/netplay_join.slint:88 +msgctxt "NetplayJoin" +msgid "Cheats" +msgstr "Trucos" + +#: src/ui/gui/netplay_join.slint:102 +msgctxt "NetplayJoin" +msgid "Refresh Session List" +msgstr "Actualizar lista" + +#: src/ui/gui/netplay_join.slint:119 msgctxt "NetplayJoin" msgid "Join Session" msgstr "Unirse a la sesión" -#: src/ui/gui/netplay_page.slint:33 +#: src/ui/gui/netplay_join.slint:132 +msgctxt "NetplayJoin" +msgid "Cancel" +msgstr "Cancelar" + +#: src/ui/gui/netplay_page.slint:37 msgctxt "Netplay" msgid "Netplay" msgstr "Netplay" -#: src/ui/gui/netplay_page.slint:40 +#: src/ui/gui/netplay_page.slint:45 msgctxt "Netplay" msgid "Create Session" msgstr "Crear sesión" -#: src/ui/gui/netplay_page.slint:50 +#: src/ui/gui/netplay_page.slint:56 msgctxt "Netplay" msgid "Join Session" msgstr "Unirse a la sesión" -#: src/ui/gui/netplay_page.slint:64 +#: src/ui/gui/netplay_page.slint:70 msgctxt "Netplay" msgid "Netplay Discord Channel" msgstr "Canal de Discord de Netplay" -#: src/ui/gui/netplay_page.slint:71 +#: src/ui/gui/netplay_page.slint:77 msgctxt "Netplay" msgid "Provide Feedback" msgstr "Enviar comentarios" -#: src/ui/gui/netplay_page.slint:82 -msgctxt "CustomNetplayServer" -msgid "Custom Netplay Server" -msgstr "Servidor de Netplay personalizado" - -#: src/ui/gui/netplay_wait.slint:14 +#: src/ui/gui/netplay_wait.slint:15 msgctxt "NetplayWait" msgid "Netplay: Waiting Room" msgstr "Netplay: Sala de espera" -#: src/ui/gui/netplay_wait.slint:31 +#: src/ui/gui/netplay_wait.slint:27 msgctxt "NetplayWait" msgid "Session Name:" msgstr "Nombre de la sesión:" -#: src/ui/gui/netplay_wait.slint:37 +#: src/ui/gui/netplay_wait.slint:33 msgctxt "NetplayWait" msgid "Game Name:" msgstr "Nombre del juego:" -#: src/ui/gui/netplay_wait.slint:43 +#: src/ui/gui/netplay_wait.slint:39 msgctxt "NetplayWait" msgid "Ping:" msgstr "Latencia (Ping):" -#: src/ui/gui/netplay_wait.slint:50 +#: src/ui/gui/netplay_wait.slint:48 msgctxt "NetplayWait" msgid "Player 1:" msgstr "Jugador 1:" -#: src/ui/gui/netplay_wait.slint:54 +#: src/ui/gui/netplay_wait.slint:52 msgctxt "NetplayWait" msgid "Player 2:" msgstr "Jugador 2:" -#: src/ui/gui/netplay_wait.slint:60 +#: src/ui/gui/netplay_wait.slint:58 msgctxt "NetplayWait" msgid "Player 3:" msgstr "Jugador 3:" -#: src/ui/gui/netplay_wait.slint:64 +#: src/ui/gui/netplay_wait.slint:62 msgctxt "NetplayWait" msgid "Player 4:" msgstr "Jugador 4:" @@ -415,11 +415,16 @@ msgctxt "NetplayWait" msgid "Send Message" msgstr "Enviar mensaje" -#: src/ui/gui/netplay_wait.slint:102 +#: src/ui/gui/netplay_wait.slint:105 msgctxt "NetplayWait" msgid "Start Game" msgstr "Iniciar juego" +#: src/ui/gui/netplay_wait.slint:113 +msgctxt "NetplayWait" +msgid "Cancel" +msgstr "Cancelar" + #: src/ui/gui/retroachievements_page.slint:19 msgctxt "RAData" msgid "Not currently logged in" @@ -545,6 +550,10 @@ msgctxt "VruDialog" msgid "What Would You Like To Say?" msgstr "¿Qué te gustaría decir?" +#~ msgctxt "NetplayCreate" +#~ msgid "Creating server, please wait...This may take about 30 seconds." +#~ msgstr "Creando servidor, espera... Puede tardar unos 30 segundos." + #~ msgctxt "ControllerConfig" #~ msgid "Port" #~ msgstr "Puerto" diff --git a/data/translations/fr/LC_MESSAGES/gopher64.po b/data/translations/fr/LC_MESSAGES/gopher64.po index e0c1eaab..389b0b02 100644 --- a/data/translations/fr/LC_MESSAGES/gopher64.po +++ b/data/translations/fr/LC_MESSAGES/gopher64.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: gopher64\n" -"POT-Creation-Date: 2026-05-19 09:43+0000\n" +"POT-Creation-Date: 2026-05-25 08:28+0000\n" "PO-Revision-Date: 2026-05-11 12:00+0000\n" "Last-Translator: \n" "Language-Team: French (France)\n" @@ -47,46 +47,41 @@ msgctxt "About" msgid "Donate (via GitHub)" msgstr "Faire un don (via GitHub)" -#: src/ui/gui/appwindow.slint:103 +#: src/ui/gui/appwindow.slint:151 msgctxt "Menu" msgid "Local Game" msgstr "Jeu local" -#: src/ui/gui/appwindow.slint:107 +#: src/ui/gui/appwindow.slint:155 msgctxt "Menu" msgid "Controller Config" msgstr "Configuration manette" -#: src/ui/gui/appwindow.slint:111 +#: src/ui/gui/appwindow.slint:159 msgctxt "Menu" msgid "Netplay" msgstr "Netplay" -#: src/ui/gui/appwindow.slint:115 +#: src/ui/gui/appwindow.slint:163 msgctxt "Menu" msgid "Cheats" msgstr "Triche" -#: src/ui/gui/appwindow.slint:119 +#: src/ui/gui/appwindow.slint:167 msgctxt "Menu" msgid "RetroAchievements" msgstr "RetroAchievements" -#: src/ui/gui/appwindow.slint:123 +#: src/ui/gui/appwindow.slint:171 msgctxt "Menu" msgid "Settings" msgstr "Paramètres" -#: src/ui/gui/appwindow.slint:127 +#: src/ui/gui/appwindow.slint:175 msgctxt "Menu" msgid "About" msgstr "À propos" -#: src/ui/gui/appwindow.slint:248 -msgctxt "ErrorDialog" -msgid "Error" -msgstr "Erreur" - #: src/ui/gui/cheat_page.slint:15 msgctxt "Cheats" msgid "Cheats" @@ -102,7 +97,7 @@ msgctxt "Cheats" msgid "Clear Cheats For All ROMs" msgstr "Effacer la triche pour toutes les ROMs" -#: src/ui/gui/cheat_page.slint:87 +#: src/ui/gui/cheat_page.slint:88 msgctxt "Cheats" msgid "No Cheats Available" msgstr "Aucune triche disponible" @@ -142,62 +137,67 @@ msgctxt "ControllerConfig" msgid "Controller Assignment" msgstr "Attribution de la manette" -#: src/ui/gui/input_profile.slint:10 +#: src/ui/gui/input_profile.slint:12 msgctxt "InputProfileDialog" msgid "Create/Modify Input Profile" msgstr "Créer / modifier le profil d'entrée" -#: src/ui/gui/input_profile.slint:18 +#: src/ui/gui/input_profile.slint:25 msgctxt "InputProfileDialog" msgid "Enter profile name to create or modify" msgstr "Saisir le nom du profil à créer ou à modifier" -#: src/ui/gui/input_profile.slint:29 +#: src/ui/gui/input_profile.slint:38 msgctxt "InputProfileDialog" msgid "Deadzone Percentage" msgstr "Pourcentage de zone morte" -#: src/ui/gui/input_profile.slint:51 +#: src/ui/gui/input_profile.slint:61 msgctxt "InputProfileDialog" msgid "Use DirectInput" msgstr "Utiliser DirectInput" -#: src/ui/gui/input_profile.slint:61 +#: src/ui/gui/input_profile.slint:74 msgctxt "InputProfileDialog" msgid "Start Profile Creation Wizard" msgstr "Lancer l'assistant de création de profil" -#: src/ui/gui/localgame_page.slint:18 +#: src/ui/gui/input_profile.slint:82 +msgctxt "InputProfileDialog" +msgid "Cancel" +msgstr "Annuler" + +#: src/ui/gui/localgame_page.slint:19 msgctxt "LocalGame" msgid "Local Game" msgstr "Jeu local" -#: src/ui/gui/localgame_page.slint:25 +#: src/ui/gui/localgame_page.slint:26 msgctxt "LocalGame" msgid "Open ROM" msgstr "Ouvrir une ROM" -#: src/ui/gui/localgame_page.slint:36 +#: src/ui/gui/localgame_page.slint:37 msgctxt "LocalGame" msgid "Open Saves Folder" msgstr "Ouvrir le dossier des sauvegardes" -#: src/ui/gui/localgame_page.slint:53 +#: src/ui/gui/localgame_page.slint:54 msgctxt "LocalGame" msgid "Recent ROMs" msgstr "ROMs récentes" -#: src/ui/gui/netplay_create.slint:5 +#: src/ui/gui/netplay_create.slint:7 msgctxt "NetplayCreate" msgid "Netplay: Create Session" msgstr "Netplay : créer une session" -#: src/ui/gui/netplay_create.slint:24 +#: src/ui/gui/netplay_create.slint:23 msgctxt "NetplayCreate" msgid "Session Name:" msgstr "Nom de la session :" -#: src/ui/gui/netplay_create.slint:28 +#: src/ui/gui/netplay_create.slint:27 msgctxt "NetplayCreate" msgid "Enter session name" msgstr "Saisir le nom de la session" @@ -212,27 +212,27 @@ msgctxt "NetplayCreate" msgid "Enter session password" msgstr "Saisir le mot de passe de la session" -#: src/ui/gui/netplay_create.slint:51 +#: src/ui/gui/netplay_create.slint:52 msgctxt "NetplayCreate" msgid "Player Name:" msgstr "Nom du joueur :" -#: src/ui/gui/netplay_create.slint:55 +#: src/ui/gui/netplay_create.slint:56 msgctxt "NetplayCreate" msgid "Enter player name" msgstr "Saisir le nom du joueur" -#: src/ui/gui/netplay_create.slint:64 +#: src/ui/gui/netplay_create.slint:66 msgctxt "NetplayCreate" msgid "Server:" msgstr "Serveur :" -#: src/ui/gui/netplay_create.slint:82 +#: src/ui/gui/netplay_create.slint:86 msgctxt "NetplayCreate" msgid "Select ROM" msgstr "Sélectionner une ROM" -#: src/ui/gui/netplay_create.slint:97 +#: src/ui/gui/netplay_create.slint:102 msgctxt "NetplayCreate" msgid "" "This game has cheats enabled. Cheats will be synchronized with other players." @@ -240,170 +240,168 @@ msgstr "" "La triche est activée pour ce jeu. Elle sera synchronisée avec les autres " "joueurs." -#: src/ui/gui/netplay_create.slint:103 +#: src/ui/gui/netplay_create.slint:112 msgctxt "NetplayCreate" msgid "Create Session" msgstr "Créer la session" -#: src/ui/gui/netplay_create.slint:126 -msgctxt "DispatcherDialog" -msgid "Creating Server" -msgstr "Création du serveur" +#: src/ui/gui/netplay_create.slint:132 +msgctxt "NetplayCreate" +msgid "Cancel" +msgstr "Annuler" -#: src/ui/gui/netplay_create.slint:128 -msgctxt "DispatcherDialog" -msgid "Creating server, please wait...This may take about 30 seconds." -msgstr "" -"Création du serveur, veuillez patienter… Cela peut prendre environ 30 " -"secondes." +#: src/ui/gui/netplay_create.slint:155 +msgctxt "CustomServerDialog" +msgid "Enter a custom server URL" +msgstr "Saisir l'URL personnalisée du serveur" -#: src/ui/gui/netplay_join.slint:5 +#: src/ui/gui/netplay_join.slint:7 msgctxt "NetplayJoin" msgid "Netplay: Join Session" msgstr "Netplay : rejoindre une session" -#: src/ui/gui/netplay_join.slint:30 +#: src/ui/gui/netplay_join.slint:18 msgctxt "NetplayJoin" msgid "Player Name (required):" msgstr "Nom du joueur (obligatoire) :" -#: src/ui/gui/netplay_join.slint:34 +#: src/ui/gui/netplay_join.slint:22 msgctxt "NetplayJoin" msgid "Enter player name" msgstr "Saisir le nom du joueur" -#: src/ui/gui/netplay_join.slint:43 +#: src/ui/gui/netplay_join.slint:31 +msgctxt "NetplayJoin" +msgid "Password (if required)" +msgstr "Mot de passe (si requis)" + +#: src/ui/gui/netplay_join.slint:41 msgctxt "NetplayJoin" msgid "Custom Server URL (optional):" msgstr "URL personnalisée du serveur (facultatif) :" -#: src/ui/gui/netplay_join.slint:57 +#: src/ui/gui/netplay_join.slint:53 +msgctxt "NetplayJoin" +msgid "Select ROM" +msgstr "Sélectionner une ROM" + +#: src/ui/gui/netplay_join.slint:68 msgctxt "NetplayJoin" msgid "Refreshing session list, please wait..." msgstr "Actualisation de la liste des sessions, veuillez patienter…" -#: src/ui/gui/netplay_join.slint:62 +#: src/ui/gui/netplay_join.slint:73 msgctxt "NetplayJoin" msgid "Click on a session below to select it" msgstr "Cliquez sur une session ci-dessous pour la sélectionner" -#: src/ui/gui/netplay_join.slint:67 +#: src/ui/gui/netplay_join.slint:78 msgctxt "NetplayJoin" msgid "No sessions available. Please refresh to check again." msgstr "" "Aucune session disponible. Veuillez actualiser pour vérifier à nouveau." -#: src/ui/gui/netplay_join.slint:73 +#: src/ui/gui/netplay_join.slint:84 msgctxt "NetplayJoin" msgid "Server" msgstr "Serveur" -#: src/ui/gui/netplay_join.slint:74 +#: src/ui/gui/netplay_join.slint:85 msgctxt "NetplayJoin" msgid "Session Name" msgstr "Nom de la session" -#: src/ui/gui/netplay_join.slint:75 +#: src/ui/gui/netplay_join.slint:86 msgctxt "NetplayJoin" msgid "Game Name" msgstr "Nom du jeu" -#: src/ui/gui/netplay_join.slint:76 +#: src/ui/gui/netplay_join.slint:87 msgctxt "NetplayJoin" msgid "Password" msgstr "Mot de passe" -#: src/ui/gui/netplay_join.slint:77 +#: src/ui/gui/netplay_join.slint:88 msgctxt "NetplayJoin" msgid "Cheats" msgstr "Triche" -#: src/ui/gui/netplay_join.slint:91 +#: src/ui/gui/netplay_join.slint:102 msgctxt "NetplayJoin" msgid "Refresh Session List" msgstr "Actualiser la liste" -#: src/ui/gui/netplay_join.slint:105 -msgctxt "NetplayJoin" -msgid "Password (if required)" -msgstr "Mot de passe (si requis)" - -#: src/ui/gui/netplay_join.slint:112 -msgctxt "NetplayJoin" -msgid "Select ROM" -msgstr "Sélectionner une ROM" - -#: src/ui/gui/netplay_join.slint:125 +#: src/ui/gui/netplay_join.slint:119 msgctxt "NetplayJoin" msgid "Join Session" msgstr "Rejoindre la session" -#: src/ui/gui/netplay_page.slint:33 +#: src/ui/gui/netplay_join.slint:132 +msgctxt "NetplayJoin" +msgid "Cancel" +msgstr "Annuler" + +#: src/ui/gui/netplay_page.slint:37 msgctxt "Netplay" msgid "Netplay" msgstr "Netplay" -#: src/ui/gui/netplay_page.slint:40 +#: src/ui/gui/netplay_page.slint:45 msgctxt "Netplay" msgid "Create Session" msgstr "Créer une session" -#: src/ui/gui/netplay_page.slint:50 +#: src/ui/gui/netplay_page.slint:56 msgctxt "Netplay" msgid "Join Session" msgstr "Rejoindre une session" -#: src/ui/gui/netplay_page.slint:64 +#: src/ui/gui/netplay_page.slint:70 msgctxt "Netplay" msgid "Netplay Discord Channel" msgstr "Salon Discord Netplay" -#: src/ui/gui/netplay_page.slint:71 +#: src/ui/gui/netplay_page.slint:77 msgctxt "Netplay" msgid "Provide Feedback" msgstr "Donner votre avis" -#: src/ui/gui/netplay_page.slint:82 -msgctxt "CustomNetplayServer" -msgid "Custom Netplay Server" -msgstr "Serveur Netplay personnalisé" - -#: src/ui/gui/netplay_wait.slint:14 +#: src/ui/gui/netplay_wait.slint:15 msgctxt "NetplayWait" msgid "Netplay: Waiting Room" msgstr "Netplay : salle d'attente" -#: src/ui/gui/netplay_wait.slint:31 +#: src/ui/gui/netplay_wait.slint:27 msgctxt "NetplayWait" msgid "Session Name:" msgstr "Nom de la session :" -#: src/ui/gui/netplay_wait.slint:37 +#: src/ui/gui/netplay_wait.slint:33 msgctxt "NetplayWait" msgid "Game Name:" msgstr "Nom du jeu :" -#: src/ui/gui/netplay_wait.slint:43 +#: src/ui/gui/netplay_wait.slint:39 msgctxt "NetplayWait" msgid "Ping:" msgstr "Ping :" -#: src/ui/gui/netplay_wait.slint:50 +#: src/ui/gui/netplay_wait.slint:48 msgctxt "NetplayWait" msgid "Player 1:" msgstr "Joueur 1 :" -#: src/ui/gui/netplay_wait.slint:54 +#: src/ui/gui/netplay_wait.slint:52 msgctxt "NetplayWait" msgid "Player 2:" msgstr "Joueur 2 :" -#: src/ui/gui/netplay_wait.slint:60 +#: src/ui/gui/netplay_wait.slint:58 msgctxt "NetplayWait" msgid "Player 3:" msgstr "Joueur 3 :" -#: src/ui/gui/netplay_wait.slint:64 +#: src/ui/gui/netplay_wait.slint:62 msgctxt "NetplayWait" msgid "Player 4:" msgstr "Joueur 4 :" @@ -418,11 +416,16 @@ msgctxt "NetplayWait" msgid "Send Message" msgstr "Envoyer" -#: src/ui/gui/netplay_wait.slint:102 +#: src/ui/gui/netplay_wait.slint:105 msgctxt "NetplayWait" msgid "Start Game" msgstr "Lancer la partie" +#: src/ui/gui/netplay_wait.slint:113 +msgctxt "NetplayWait" +msgid "Cancel" +msgstr "Annuler" + #: src/ui/gui/retroachievements_page.slint:19 msgctxt "RAData" msgid "Not currently logged in" @@ -548,6 +551,12 @@ msgctxt "VruDialog" msgid "What Would You Like To Say?" msgstr "Que souhaitez-vous dire ?" +#~ msgctxt "NetplayCreate" +#~ msgid "Creating server, please wait...This may take about 30 seconds." +#~ msgstr "" +#~ "Création du serveur, veuillez patienter… Cela peut prendre environ 30 " +#~ "secondes." + #~ msgctxt "ControllerConfig" #~ msgid "Port" #~ msgstr "Port" diff --git a/data/translations/gopher64.pot b/data/translations/gopher64.pot index 6a761c1b..2e7d0a98 100644 --- a/data/translations/gopher64.pot +++ b/data/translations/gopher64.pot @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2026-05-19 09:43+0000\n" +"POT-Creation-Date: 2026-05-25 08:28+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -47,46 +47,41 @@ msgctxt "About" msgid "Donate (via GitHub)" msgstr "" -#: src/ui/gui/appwindow.slint:103 +#: src/ui/gui/appwindow.slint:151 msgctxt "Menu" msgid "Local Game" msgstr "" -#: src/ui/gui/appwindow.slint:107 +#: src/ui/gui/appwindow.slint:155 msgctxt "Menu" msgid "Controller Config" msgstr "" -#: src/ui/gui/appwindow.slint:111 +#: src/ui/gui/appwindow.slint:159 msgctxt "Menu" msgid "Netplay" msgstr "" -#: src/ui/gui/appwindow.slint:115 +#: src/ui/gui/appwindow.slint:163 msgctxt "Menu" msgid "Cheats" msgstr "" -#: src/ui/gui/appwindow.slint:119 +#: src/ui/gui/appwindow.slint:167 msgctxt "Menu" msgid "RetroAchievements" msgstr "" -#: src/ui/gui/appwindow.slint:123 +#: src/ui/gui/appwindow.slint:171 msgctxt "Menu" msgid "Settings" msgstr "" -#: src/ui/gui/appwindow.slint:127 +#: src/ui/gui/appwindow.slint:175 msgctxt "Menu" msgid "About" msgstr "" -#: src/ui/gui/appwindow.slint:248 -msgctxt "ErrorDialog" -msgid "Error" -msgstr "" - #: src/ui/gui/cheat_page.slint:15 msgctxt "Cheats" msgid "Cheats" @@ -102,7 +97,7 @@ msgctxt "Cheats" msgid "Clear Cheats For All ROMs" msgstr "" -#: src/ui/gui/cheat_page.slint:87 +#: src/ui/gui/cheat_page.slint:88 msgctxt "Cheats" msgid "No Cheats Available" msgstr "" @@ -142,62 +137,67 @@ msgctxt "ControllerConfig" msgid "Controller Assignment" msgstr "" -#: src/ui/gui/input_profile.slint:10 +#: src/ui/gui/input_profile.slint:12 msgctxt "InputProfileDialog" msgid "Create/Modify Input Profile" msgstr "" -#: src/ui/gui/input_profile.slint:18 +#: src/ui/gui/input_profile.slint:25 msgctxt "InputProfileDialog" msgid "Enter profile name to create or modify" msgstr "" -#: src/ui/gui/input_profile.slint:29 +#: src/ui/gui/input_profile.slint:38 msgctxt "InputProfileDialog" msgid "Deadzone Percentage" msgstr "" -#: src/ui/gui/input_profile.slint:51 +#: src/ui/gui/input_profile.slint:61 msgctxt "InputProfileDialog" msgid "Use DirectInput" msgstr "" -#: src/ui/gui/input_profile.slint:61 +#: src/ui/gui/input_profile.slint:74 msgctxt "InputProfileDialog" msgid "Start Profile Creation Wizard" msgstr "" -#: src/ui/gui/localgame_page.slint:18 +#: src/ui/gui/input_profile.slint:82 +msgctxt "InputProfileDialog" +msgid "Cancel" +msgstr "" + +#: src/ui/gui/localgame_page.slint:19 msgctxt "LocalGame" msgid "Local Game" msgstr "" -#: src/ui/gui/localgame_page.slint:25 +#: src/ui/gui/localgame_page.slint:26 msgctxt "LocalGame" msgid "Open ROM" msgstr "" -#: src/ui/gui/localgame_page.slint:36 +#: src/ui/gui/localgame_page.slint:37 msgctxt "LocalGame" msgid "Open Saves Folder" msgstr "" -#: src/ui/gui/localgame_page.slint:53 +#: src/ui/gui/localgame_page.slint:54 msgctxt "LocalGame" msgid "Recent ROMs" msgstr "" -#: src/ui/gui/netplay_create.slint:5 +#: src/ui/gui/netplay_create.slint:7 msgctxt "NetplayCreate" msgid "Netplay: Create Session" msgstr "" -#: src/ui/gui/netplay_create.slint:24 +#: src/ui/gui/netplay_create.slint:23 msgctxt "NetplayCreate" msgid "Session Name:" msgstr "" -#: src/ui/gui/netplay_create.slint:28 +#: src/ui/gui/netplay_create.slint:27 msgctxt "NetplayCreate" msgid "Enter session name" msgstr "" @@ -212,193 +212,193 @@ msgctxt "NetplayCreate" msgid "Enter session password" msgstr "" -#: src/ui/gui/netplay_create.slint:51 +#: src/ui/gui/netplay_create.slint:52 msgctxt "NetplayCreate" msgid "Player Name:" msgstr "" -#: src/ui/gui/netplay_create.slint:55 +#: src/ui/gui/netplay_create.slint:56 msgctxt "NetplayCreate" msgid "Enter player name" msgstr "" -#: src/ui/gui/netplay_create.slint:64 +#: src/ui/gui/netplay_create.slint:66 msgctxt "NetplayCreate" msgid "Server:" msgstr "" -#: src/ui/gui/netplay_create.slint:82 +#: src/ui/gui/netplay_create.slint:86 msgctxt "NetplayCreate" msgid "Select ROM" msgstr "" -#: src/ui/gui/netplay_create.slint:97 +#: src/ui/gui/netplay_create.slint:102 msgctxt "NetplayCreate" msgid "" "This game has cheats enabled. Cheats will be synchronized with other players." msgstr "" -#: src/ui/gui/netplay_create.slint:103 +#: src/ui/gui/netplay_create.slint:112 msgctxt "NetplayCreate" msgid "Create Session" msgstr "" -#: src/ui/gui/netplay_create.slint:126 -msgctxt "DispatcherDialog" -msgid "Creating Server" +#: src/ui/gui/netplay_create.slint:132 +msgctxt "NetplayCreate" +msgid "Cancel" msgstr "" -#: src/ui/gui/netplay_create.slint:128 -msgctxt "DispatcherDialog" -msgid "Creating server, please wait...This may take about 30 seconds." +#: src/ui/gui/netplay_create.slint:155 +msgctxt "CustomServerDialog" +msgid "Enter a custom server URL" msgstr "" -#: src/ui/gui/netplay_join.slint:5 +#: src/ui/gui/netplay_join.slint:7 msgctxt "NetplayJoin" msgid "Netplay: Join Session" msgstr "" -#: src/ui/gui/netplay_join.slint:30 +#: src/ui/gui/netplay_join.slint:18 msgctxt "NetplayJoin" msgid "Player Name (required):" msgstr "" -#: src/ui/gui/netplay_join.slint:34 +#: src/ui/gui/netplay_join.slint:22 msgctxt "NetplayJoin" msgid "Enter player name" msgstr "" -#: src/ui/gui/netplay_join.slint:43 -msgctxt "NetplayJoin" -msgid "Custom Server URL (optional):" -msgstr "" - -#: src/ui/gui/netplay_join.slint:57 -msgctxt "NetplayJoin" -msgid "Refreshing session list, please wait..." -msgstr "" - -#: src/ui/gui/netplay_join.slint:62 -msgctxt "NetplayJoin" -msgid "Click on a session below to select it" -msgstr "" - -#: src/ui/gui/netplay_join.slint:67 -msgctxt "NetplayJoin" -msgid "No sessions available. Please refresh to check again." -msgstr "" - -#: src/ui/gui/netplay_join.slint:73 -msgctxt "NetplayJoin" -msgid "Server" -msgstr "" - -#: src/ui/gui/netplay_join.slint:74 -msgctxt "NetplayJoin" -msgid "Session Name" -msgstr "" - -#: src/ui/gui/netplay_join.slint:75 -msgctxt "NetplayJoin" -msgid "Game Name" -msgstr "" - -#: src/ui/gui/netplay_join.slint:76 -msgctxt "NetplayJoin" -msgid "Password" -msgstr "" - -#: src/ui/gui/netplay_join.slint:77 -msgctxt "NetplayJoin" -msgid "Cheats" -msgstr "" - -#: src/ui/gui/netplay_join.slint:91 -msgctxt "NetplayJoin" -msgid "Refresh Session List" -msgstr "" - -#: src/ui/gui/netplay_join.slint:105 +#: src/ui/gui/netplay_join.slint:31 msgctxt "NetplayJoin" msgid "Password (if required)" msgstr "" -#: src/ui/gui/netplay_join.slint:112 +#: src/ui/gui/netplay_join.slint:41 +msgctxt "NetplayJoin" +msgid "Custom Server URL (optional):" +msgstr "" + +#: src/ui/gui/netplay_join.slint:53 msgctxt "NetplayJoin" msgid "Select ROM" msgstr "" -#: src/ui/gui/netplay_join.slint:125 +#: src/ui/gui/netplay_join.slint:68 +msgctxt "NetplayJoin" +msgid "Refreshing session list, please wait..." +msgstr "" + +#: src/ui/gui/netplay_join.slint:73 +msgctxt "NetplayJoin" +msgid "Click on a session below to select it" +msgstr "" + +#: src/ui/gui/netplay_join.slint:78 +msgctxt "NetplayJoin" +msgid "No sessions available. Please refresh to check again." +msgstr "" + +#: src/ui/gui/netplay_join.slint:84 +msgctxt "NetplayJoin" +msgid "Server" +msgstr "" + +#: src/ui/gui/netplay_join.slint:85 +msgctxt "NetplayJoin" +msgid "Session Name" +msgstr "" + +#: src/ui/gui/netplay_join.slint:86 +msgctxt "NetplayJoin" +msgid "Game Name" +msgstr "" + +#: src/ui/gui/netplay_join.slint:87 +msgctxt "NetplayJoin" +msgid "Password" +msgstr "" + +#: src/ui/gui/netplay_join.slint:88 +msgctxt "NetplayJoin" +msgid "Cheats" +msgstr "" + +#: src/ui/gui/netplay_join.slint:102 +msgctxt "NetplayJoin" +msgid "Refresh Session List" +msgstr "" + +#: src/ui/gui/netplay_join.slint:119 msgctxt "NetplayJoin" msgid "Join Session" msgstr "" -#: src/ui/gui/netplay_page.slint:33 +#: src/ui/gui/netplay_join.slint:132 +msgctxt "NetplayJoin" +msgid "Cancel" +msgstr "" + +#: src/ui/gui/netplay_page.slint:37 msgctxt "Netplay" msgid "Netplay" msgstr "" -#: src/ui/gui/netplay_page.slint:40 +#: src/ui/gui/netplay_page.slint:45 msgctxt "Netplay" msgid "Create Session" msgstr "" -#: src/ui/gui/netplay_page.slint:50 +#: src/ui/gui/netplay_page.slint:56 msgctxt "Netplay" msgid "Join Session" msgstr "" -#: src/ui/gui/netplay_page.slint:64 +#: src/ui/gui/netplay_page.slint:70 msgctxt "Netplay" msgid "Netplay Discord Channel" msgstr "" -#: src/ui/gui/netplay_page.slint:71 +#: src/ui/gui/netplay_page.slint:77 msgctxt "Netplay" msgid "Provide Feedback" msgstr "" -#: src/ui/gui/netplay_page.slint:82 -msgctxt "CustomNetplayServer" -msgid "Custom Netplay Server" -msgstr "" - -#: src/ui/gui/netplay_wait.slint:14 +#: src/ui/gui/netplay_wait.slint:15 msgctxt "NetplayWait" msgid "Netplay: Waiting Room" msgstr "" -#: src/ui/gui/netplay_wait.slint:31 +#: src/ui/gui/netplay_wait.slint:27 msgctxt "NetplayWait" msgid "Session Name:" msgstr "" -#: src/ui/gui/netplay_wait.slint:37 +#: src/ui/gui/netplay_wait.slint:33 msgctxt "NetplayWait" msgid "Game Name:" msgstr "" -#: src/ui/gui/netplay_wait.slint:43 +#: src/ui/gui/netplay_wait.slint:39 msgctxt "NetplayWait" msgid "Ping:" msgstr "" -#: src/ui/gui/netplay_wait.slint:50 +#: src/ui/gui/netplay_wait.slint:48 msgctxt "NetplayWait" msgid "Player 1:" msgstr "" -#: src/ui/gui/netplay_wait.slint:54 +#: src/ui/gui/netplay_wait.slint:52 msgctxt "NetplayWait" msgid "Player 2:" msgstr "" -#: src/ui/gui/netplay_wait.slint:60 +#: src/ui/gui/netplay_wait.slint:58 msgctxt "NetplayWait" msgid "Player 3:" msgstr "" -#: src/ui/gui/netplay_wait.slint:64 +#: src/ui/gui/netplay_wait.slint:62 msgctxt "NetplayWait" msgid "Player 4:" msgstr "" @@ -413,11 +413,16 @@ msgctxt "NetplayWait" msgid "Send Message" msgstr "" -#: src/ui/gui/netplay_wait.slint:102 +#: src/ui/gui/netplay_wait.slint:105 msgctxt "NetplayWait" msgid "Start Game" msgstr "" +#: src/ui/gui/netplay_wait.slint:113 +msgctxt "NetplayWait" +msgid "Cancel" +msgstr "" + #: src/ui/gui/retroachievements_page.slint:19 msgctxt "RAData" msgid "Not currently logged in" diff --git a/data/translations/ja/LC_MESSAGES/gopher64.po b/data/translations/ja/LC_MESSAGES/gopher64.po index 5c635836..2fdec4b2 100644 --- a/data/translations/ja/LC_MESSAGES/gopher64.po +++ b/data/translations/ja/LC_MESSAGES/gopher64.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: gopher64\n" -"POT-Creation-Date: 2026-05-19 09:43+0000\n" +"POT-Creation-Date: 2026-05-25 08:28+0000\n" "PO-Revision-Date: 2026-05-11 12:00+0000\n" "Last-Translator: \n" "Language-Team: Japanese\n" @@ -47,46 +47,41 @@ msgctxt "About" msgid "Donate (via GitHub)" msgstr "GitHubで寄付" -#: src/ui/gui/appwindow.slint:103 +#: src/ui/gui/appwindow.slint:151 msgctxt "Menu" msgid "Local Game" msgstr "ローカルゲーム" -#: src/ui/gui/appwindow.slint:107 +#: src/ui/gui/appwindow.slint:155 msgctxt "Menu" msgid "Controller Config" msgstr "コントローラー設定" -#: src/ui/gui/appwindow.slint:111 +#: src/ui/gui/appwindow.slint:159 msgctxt "Menu" msgid "Netplay" msgstr "ネットプレイ" -#: src/ui/gui/appwindow.slint:115 +#: src/ui/gui/appwindow.slint:163 msgctxt "Menu" msgid "Cheats" msgstr "チート" -#: src/ui/gui/appwindow.slint:119 +#: src/ui/gui/appwindow.slint:167 msgctxt "Menu" msgid "RetroAchievements" msgstr "RetroAchievements" -#: src/ui/gui/appwindow.slint:123 +#: src/ui/gui/appwindow.slint:171 msgctxt "Menu" msgid "Settings" msgstr "設定" -#: src/ui/gui/appwindow.slint:127 +#: src/ui/gui/appwindow.slint:175 msgctxt "Menu" msgid "About" msgstr "バージョン情報" -#: src/ui/gui/appwindow.slint:248 -msgctxt "ErrorDialog" -msgid "Error" -msgstr "エラー" - #: src/ui/gui/cheat_page.slint:15 msgctxt "Cheats" msgid "Cheats" @@ -102,7 +97,7 @@ msgctxt "Cheats" msgid "Clear Cheats For All ROMs" msgstr "すべてのROMのチートをクリア" -#: src/ui/gui/cheat_page.slint:87 +#: src/ui/gui/cheat_page.slint:88 msgctxt "Cheats" msgid "No Cheats Available" msgstr "利用できるチートはありません" @@ -142,62 +137,67 @@ msgctxt "ControllerConfig" msgid "Controller Assignment" msgstr "コントローラー割り当て" -#: src/ui/gui/input_profile.slint:10 +#: src/ui/gui/input_profile.slint:12 msgctxt "InputProfileDialog" msgid "Create/Modify Input Profile" msgstr "入力プロファイルの作成/変更" -#: src/ui/gui/input_profile.slint:18 +#: src/ui/gui/input_profile.slint:25 msgctxt "InputProfileDialog" msgid "Enter profile name to create or modify" msgstr "作成または変更するプロファイル名を入力" -#: src/ui/gui/input_profile.slint:29 +#: src/ui/gui/input_profile.slint:38 msgctxt "InputProfileDialog" msgid "Deadzone Percentage" msgstr "デッドゾーン(%)" -#: src/ui/gui/input_profile.slint:51 +#: src/ui/gui/input_profile.slint:61 msgctxt "InputProfileDialog" msgid "Use DirectInput" msgstr "DirectInputを使用" -#: src/ui/gui/input_profile.slint:61 +#: src/ui/gui/input_profile.slint:74 msgctxt "InputProfileDialog" msgid "Start Profile Creation Wizard" msgstr "プロファイル作成ウィザードを開始" -#: src/ui/gui/localgame_page.slint:18 +#: src/ui/gui/input_profile.slint:82 +msgctxt "InputProfileDialog" +msgid "Cancel" +msgstr "キャンセル" + +#: src/ui/gui/localgame_page.slint:19 msgctxt "LocalGame" msgid "Local Game" msgstr "ローカルゲーム" -#: src/ui/gui/localgame_page.slint:25 +#: src/ui/gui/localgame_page.slint:26 msgctxt "LocalGame" msgid "Open ROM" msgstr "ROMを開く" -#: src/ui/gui/localgame_page.slint:36 +#: src/ui/gui/localgame_page.slint:37 msgctxt "LocalGame" msgid "Open Saves Folder" msgstr "セーブフォルダーを開く" -#: src/ui/gui/localgame_page.slint:53 +#: src/ui/gui/localgame_page.slint:54 msgctxt "LocalGame" msgid "Recent ROMs" msgstr "最近使ったROM" -#: src/ui/gui/netplay_create.slint:5 +#: src/ui/gui/netplay_create.slint:7 msgctxt "NetplayCreate" msgid "Netplay: Create Session" msgstr "ネットプレイ:セッション作成" -#: src/ui/gui/netplay_create.slint:24 +#: src/ui/gui/netplay_create.slint:23 msgctxt "NetplayCreate" msgid "Session Name:" msgstr "セッション名:" -#: src/ui/gui/netplay_create.slint:28 +#: src/ui/gui/netplay_create.slint:27 msgctxt "NetplayCreate" msgid "Enter session name" msgstr "セッション名を入力" @@ -212,195 +212,193 @@ msgctxt "NetplayCreate" msgid "Enter session password" msgstr "セッションのパスワードを入力" -#: src/ui/gui/netplay_create.slint:51 +#: src/ui/gui/netplay_create.slint:52 msgctxt "NetplayCreate" msgid "Player Name:" msgstr "プレイヤー名:" -#: src/ui/gui/netplay_create.slint:55 +#: src/ui/gui/netplay_create.slint:56 msgctxt "NetplayCreate" msgid "Enter player name" msgstr "プレイヤー名を入力" -#: src/ui/gui/netplay_create.slint:64 +#: src/ui/gui/netplay_create.slint:66 msgctxt "NetplayCreate" msgid "Server:" msgstr "サーバー:" -#: src/ui/gui/netplay_create.slint:82 +#: src/ui/gui/netplay_create.slint:86 msgctxt "NetplayCreate" msgid "Select ROM" msgstr "ROMを選択" -#: src/ui/gui/netplay_create.slint:97 +#: src/ui/gui/netplay_create.slint:102 msgctxt "NetplayCreate" msgid "" "This game has cheats enabled. Cheats will be synchronized with other players." msgstr "このゲームではチートが有効です。チートは他のプレイヤーと同期されます。" -#: src/ui/gui/netplay_create.slint:103 +#: src/ui/gui/netplay_create.slint:112 msgctxt "NetplayCreate" msgid "Create Session" msgstr "セッションを作成" -#: src/ui/gui/netplay_create.slint:126 -msgctxt "DispatcherDialog" -msgid "Creating Server" -msgstr "サーバーを作成中" +#: src/ui/gui/netplay_create.slint:132 +msgctxt "NetplayCreate" +msgid "Cancel" +msgstr "キャンセル" -#: src/ui/gui/netplay_create.slint:128 -msgctxt "DispatcherDialog" -msgid "Creating server, please wait...This may take about 30 seconds." -msgstr "" -"サーバーを作成しています。しばらくお待ちください… 最大約30秒かかることがあり" -"ます。" +#: src/ui/gui/netplay_create.slint:155 +msgctxt "CustomServerDialog" +msgid "Enter a custom server URL" +msgstr "カスタムサーバーURLを入力" -#: src/ui/gui/netplay_join.slint:5 +#: src/ui/gui/netplay_join.slint:7 msgctxt "NetplayJoin" msgid "Netplay: Join Session" msgstr "ネットプレイ:セッションに参加" -#: src/ui/gui/netplay_join.slint:30 +#: src/ui/gui/netplay_join.slint:18 msgctxt "NetplayJoin" msgid "Player Name (required):" msgstr "プレイヤー名(必須):" -#: src/ui/gui/netplay_join.slint:34 +#: src/ui/gui/netplay_join.slint:22 msgctxt "NetplayJoin" msgid "Enter player name" msgstr "プレイヤー名を入力" -#: src/ui/gui/netplay_join.slint:43 -msgctxt "NetplayJoin" -msgid "Custom Server URL (optional):" -msgstr "カスタムサーバーURL(任意):" - -#: src/ui/gui/netplay_join.slint:57 -msgctxt "NetplayJoin" -msgid "Refreshing session list, please wait..." -msgstr "セッション一覧を更新しています。しばらくお待ちください…" - -#: src/ui/gui/netplay_join.slint:62 -msgctxt "NetplayJoin" -msgid "Click on a session below to select it" -msgstr "下の一覧からセッションをクリックして選択" - -#: src/ui/gui/netplay_join.slint:67 -msgctxt "NetplayJoin" -msgid "No sessions available. Please refresh to check again." -msgstr "利用できるセッションがありません。更新して再度確認してください。" - -#: src/ui/gui/netplay_join.slint:73 -msgctxt "NetplayJoin" -msgid "Server" -msgstr "サーバー" - -#: src/ui/gui/netplay_join.slint:74 -msgctxt "NetplayJoin" -msgid "Session Name" -msgstr "セッション名" - -#: src/ui/gui/netplay_join.slint:75 -msgctxt "NetplayJoin" -msgid "Game Name" -msgstr "ゲーム名" - -#: src/ui/gui/netplay_join.slint:76 -msgctxt "NetplayJoin" -msgid "Password" -msgstr "パスワード" - -#: src/ui/gui/netplay_join.slint:77 -msgctxt "NetplayJoin" -msgid "Cheats" -msgstr "チート" - -#: src/ui/gui/netplay_join.slint:91 -msgctxt "NetplayJoin" -msgid "Refresh Session List" -msgstr "セッション一覧を更新" - -#: src/ui/gui/netplay_join.slint:105 +#: src/ui/gui/netplay_join.slint:31 msgctxt "NetplayJoin" msgid "Password (if required)" msgstr "パスワード(必要な場合)" -#: src/ui/gui/netplay_join.slint:112 +#: src/ui/gui/netplay_join.slint:41 +msgctxt "NetplayJoin" +msgid "Custom Server URL (optional):" +msgstr "カスタムサーバーURL(任意):" + +#: src/ui/gui/netplay_join.slint:53 msgctxt "NetplayJoin" msgid "Select ROM" msgstr "ROMを選択" -#: src/ui/gui/netplay_join.slint:125 +#: src/ui/gui/netplay_join.slint:68 +msgctxt "NetplayJoin" +msgid "Refreshing session list, please wait..." +msgstr "セッション一覧を更新しています。しばらくお待ちください…" + +#: src/ui/gui/netplay_join.slint:73 +msgctxt "NetplayJoin" +msgid "Click on a session below to select it" +msgstr "下の一覧からセッションをクリックして選択" + +#: src/ui/gui/netplay_join.slint:78 +msgctxt "NetplayJoin" +msgid "No sessions available. Please refresh to check again." +msgstr "利用できるセッションがありません。更新して再度確認してください。" + +#: src/ui/gui/netplay_join.slint:84 +msgctxt "NetplayJoin" +msgid "Server" +msgstr "サーバー" + +#: src/ui/gui/netplay_join.slint:85 +msgctxt "NetplayJoin" +msgid "Session Name" +msgstr "セッション名" + +#: src/ui/gui/netplay_join.slint:86 +msgctxt "NetplayJoin" +msgid "Game Name" +msgstr "ゲーム名" + +#: src/ui/gui/netplay_join.slint:87 +msgctxt "NetplayJoin" +msgid "Password" +msgstr "パスワード" + +#: src/ui/gui/netplay_join.slint:88 +msgctxt "NetplayJoin" +msgid "Cheats" +msgstr "チート" + +#: src/ui/gui/netplay_join.slint:102 +msgctxt "NetplayJoin" +msgid "Refresh Session List" +msgstr "セッション一覧を更新" + +#: src/ui/gui/netplay_join.slint:119 msgctxt "NetplayJoin" msgid "Join Session" msgstr "セッションに参加" -#: src/ui/gui/netplay_page.slint:33 +#: src/ui/gui/netplay_join.slint:132 +msgctxt "NetplayJoin" +msgid "Cancel" +msgstr "キャンセル" + +#: src/ui/gui/netplay_page.slint:37 msgctxt "Netplay" msgid "Netplay" msgstr "ネットプレイ" -#: src/ui/gui/netplay_page.slint:40 +#: src/ui/gui/netplay_page.slint:45 msgctxt "Netplay" msgid "Create Session" msgstr "セッションを作成" -#: src/ui/gui/netplay_page.slint:50 +#: src/ui/gui/netplay_page.slint:56 msgctxt "Netplay" msgid "Join Session" msgstr "セッションに参加" -#: src/ui/gui/netplay_page.slint:64 +#: src/ui/gui/netplay_page.slint:70 msgctxt "Netplay" msgid "Netplay Discord Channel" msgstr "ネットプレイ用Discordチャンネル" -#: src/ui/gui/netplay_page.slint:71 +#: src/ui/gui/netplay_page.slint:77 msgctxt "Netplay" msgid "Provide Feedback" msgstr "フィードバックを送る" -#: src/ui/gui/netplay_page.slint:82 -msgctxt "CustomNetplayServer" -msgid "Custom Netplay Server" -msgstr "カスタムネットプレイサーバー" - -#: src/ui/gui/netplay_wait.slint:14 +#: src/ui/gui/netplay_wait.slint:15 msgctxt "NetplayWait" msgid "Netplay: Waiting Room" msgstr "ネットプレイ:待機室" -#: src/ui/gui/netplay_wait.slint:31 +#: src/ui/gui/netplay_wait.slint:27 msgctxt "NetplayWait" msgid "Session Name:" msgstr "セッション名:" -#: src/ui/gui/netplay_wait.slint:37 +#: src/ui/gui/netplay_wait.slint:33 msgctxt "NetplayWait" msgid "Game Name:" msgstr "ゲーム名:" -#: src/ui/gui/netplay_wait.slint:43 +#: src/ui/gui/netplay_wait.slint:39 msgctxt "NetplayWait" msgid "Ping:" msgstr "Ping:" -#: src/ui/gui/netplay_wait.slint:50 +#: src/ui/gui/netplay_wait.slint:48 msgctxt "NetplayWait" msgid "Player 1:" msgstr "プレイヤー1:" -#: src/ui/gui/netplay_wait.slint:54 +#: src/ui/gui/netplay_wait.slint:52 msgctxt "NetplayWait" msgid "Player 2:" msgstr "プレイヤー2:" -#: src/ui/gui/netplay_wait.slint:60 +#: src/ui/gui/netplay_wait.slint:58 msgctxt "NetplayWait" msgid "Player 3:" msgstr "プレイヤー3:" -#: src/ui/gui/netplay_wait.slint:64 +#: src/ui/gui/netplay_wait.slint:62 msgctxt "NetplayWait" msgid "Player 4:" msgstr "プレイヤー4:" @@ -415,11 +413,16 @@ msgctxt "NetplayWait" msgid "Send Message" msgstr "送信" -#: src/ui/gui/netplay_wait.slint:102 +#: src/ui/gui/netplay_wait.slint:105 msgctxt "NetplayWait" msgid "Start Game" msgstr "ゲーム開始" +#: src/ui/gui/netplay_wait.slint:113 +msgctxt "NetplayWait" +msgid "Cancel" +msgstr "キャンセル" + #: src/ui/gui/retroachievements_page.slint:19 msgctxt "RAData" msgid "Not currently logged in" @@ -545,6 +548,12 @@ msgctxt "VruDialog" msgid "What Would You Like To Say?" msgstr "何と言いますか?" +#~ msgctxt "NetplayCreate" +#~ msgid "Creating server, please wait...This may take about 30 seconds." +#~ msgstr "" +#~ "サーバーを作成しています。しばらくお待ちください… 最大約30秒かかることがあ" +#~ "ります。" + #~ msgctxt "ControllerConfig" #~ msgid "Port" #~ msgstr "ポート" diff --git a/data/translations/nl/LC_MESSAGES/gopher64.po b/data/translations/nl/LC_MESSAGES/gopher64.po index c76e5aee..9d8f019d 100644 --- a/data/translations/nl/LC_MESSAGES/gopher64.po +++ b/data/translations/nl/LC_MESSAGES/gopher64.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: gopher64\n" -"POT-Creation-Date: 2026-05-19 09:43+0000\n" +"POT-Creation-Date: 2026-05-25 08:28+0000\n" "PO-Revision-Date: 2026-05-11 12:00+0000\n" "Last-Translator: \n" "Language-Team: Dutch (Netherlands)\n" @@ -47,46 +47,41 @@ msgctxt "About" msgid "Donate (via GitHub)" msgstr "Doneren (via GitHub)" -#: src/ui/gui/appwindow.slint:103 +#: src/ui/gui/appwindow.slint:151 msgctxt "Menu" msgid "Local Game" msgstr "Lokaal spel" -#: src/ui/gui/appwindow.slint:107 +#: src/ui/gui/appwindow.slint:155 msgctxt "Menu" msgid "Controller Config" msgstr "Controllerconfiguratie" -#: src/ui/gui/appwindow.slint:111 +#: src/ui/gui/appwindow.slint:159 msgctxt "Menu" msgid "Netplay" msgstr "Netplay" -#: src/ui/gui/appwindow.slint:115 +#: src/ui/gui/appwindow.slint:163 msgctxt "Menu" msgid "Cheats" msgstr "Cheats" -#: src/ui/gui/appwindow.slint:119 +#: src/ui/gui/appwindow.slint:167 msgctxt "Menu" msgid "RetroAchievements" msgstr "RetroAchievements" -#: src/ui/gui/appwindow.slint:123 +#: src/ui/gui/appwindow.slint:171 msgctxt "Menu" msgid "Settings" msgstr "Instellingen" -#: src/ui/gui/appwindow.slint:127 +#: src/ui/gui/appwindow.slint:175 msgctxt "Menu" msgid "About" msgstr "Over" -#: src/ui/gui/appwindow.slint:248 -msgctxt "ErrorDialog" -msgid "Error" -msgstr "Fout" - #: src/ui/gui/cheat_page.slint:15 msgctxt "Cheats" msgid "Cheats" @@ -102,7 +97,7 @@ msgctxt "Cheats" msgid "Clear Cheats For All ROMs" msgstr "Cheats wissen voor alle ROM's" -#: src/ui/gui/cheat_page.slint:87 +#: src/ui/gui/cheat_page.slint:88 msgctxt "Cheats" msgid "No Cheats Available" msgstr "Geen cheats beschikbaar" @@ -142,62 +137,67 @@ msgctxt "ControllerConfig" msgid "Controller Assignment" msgstr "Controllertoewijzing" -#: src/ui/gui/input_profile.slint:10 +#: src/ui/gui/input_profile.slint:12 msgctxt "InputProfileDialog" msgid "Create/Modify Input Profile" msgstr "Invoerprofiel maken/wijzigen" -#: src/ui/gui/input_profile.slint:18 +#: src/ui/gui/input_profile.slint:25 msgctxt "InputProfileDialog" msgid "Enter profile name to create or modify" msgstr "Profielnaam invoeren om aan te maken of te wijzigen" -#: src/ui/gui/input_profile.slint:29 +#: src/ui/gui/input_profile.slint:38 msgctxt "InputProfileDialog" msgid "Deadzone Percentage" msgstr "Dode-zonepercentage" -#: src/ui/gui/input_profile.slint:51 +#: src/ui/gui/input_profile.slint:61 msgctxt "InputProfileDialog" msgid "Use DirectInput" msgstr "DirectInput gebruiken" -#: src/ui/gui/input_profile.slint:61 +#: src/ui/gui/input_profile.slint:74 msgctxt "InputProfileDialog" msgid "Start Profile Creation Wizard" msgstr "Wizard voor profiel maken starten" -#: src/ui/gui/localgame_page.slint:18 +#: src/ui/gui/input_profile.slint:82 +msgctxt "InputProfileDialog" +msgid "Cancel" +msgstr "Annuleren" + +#: src/ui/gui/localgame_page.slint:19 msgctxt "LocalGame" msgid "Local Game" msgstr "Lokaal spel" -#: src/ui/gui/localgame_page.slint:25 +#: src/ui/gui/localgame_page.slint:26 msgctxt "LocalGame" msgid "Open ROM" msgstr "ROM openen" -#: src/ui/gui/localgame_page.slint:36 +#: src/ui/gui/localgame_page.slint:37 msgctxt "LocalGame" msgid "Open Saves Folder" msgstr "Map met opslagen openen" -#: src/ui/gui/localgame_page.slint:53 +#: src/ui/gui/localgame_page.slint:54 msgctxt "LocalGame" msgid "Recent ROMs" msgstr "Recent gebruikte ROM's" -#: src/ui/gui/netplay_create.slint:5 +#: src/ui/gui/netplay_create.slint:7 msgctxt "NetplayCreate" msgid "Netplay: Create Session" msgstr "Netplay: sessie aanmaken" -#: src/ui/gui/netplay_create.slint:24 +#: src/ui/gui/netplay_create.slint:23 msgctxt "NetplayCreate" msgid "Session Name:" msgstr "Sessienaam:" -#: src/ui/gui/netplay_create.slint:28 +#: src/ui/gui/netplay_create.slint:27 msgctxt "NetplayCreate" msgid "Enter session name" msgstr "Sessienaam invoeren" @@ -212,27 +212,27 @@ msgctxt "NetplayCreate" msgid "Enter session password" msgstr "Sessiewachtwoord invoeren" -#: src/ui/gui/netplay_create.slint:51 +#: src/ui/gui/netplay_create.slint:52 msgctxt "NetplayCreate" msgid "Player Name:" msgstr "Spelernaam:" -#: src/ui/gui/netplay_create.slint:55 +#: src/ui/gui/netplay_create.slint:56 msgctxt "NetplayCreate" msgid "Enter player name" msgstr "Spelernaam invoeren" -#: src/ui/gui/netplay_create.slint:64 +#: src/ui/gui/netplay_create.slint:66 msgctxt "NetplayCreate" msgid "Server:" msgstr "Server:" -#: src/ui/gui/netplay_create.slint:82 +#: src/ui/gui/netplay_create.slint:86 msgctxt "NetplayCreate" msgid "Select ROM" msgstr "ROM selecteren" -#: src/ui/gui/netplay_create.slint:97 +#: src/ui/gui/netplay_create.slint:102 msgctxt "NetplayCreate" msgid "" "This game has cheats enabled. Cheats will be synchronized with other players." @@ -240,168 +240,167 @@ msgstr "" "Voor dit spel zijn cheats ingeschakeld. Cheats worden gesynchroniseerd met " "andere spelers." -#: src/ui/gui/netplay_create.slint:103 +#: src/ui/gui/netplay_create.slint:112 msgctxt "NetplayCreate" msgid "Create Session" msgstr "Sessie aanmaken" -#: src/ui/gui/netplay_create.slint:126 -msgctxt "DispatcherDialog" -msgid "Creating Server" -msgstr "Server wordt aangemaakt" +#: src/ui/gui/netplay_create.slint:132 +msgctxt "NetplayCreate" +msgid "Cancel" +msgstr "Annuleren" -#: src/ui/gui/netplay_create.slint:128 -msgctxt "DispatcherDialog" -msgid "Creating server, please wait...This may take about 30 seconds." -msgstr "" -"Server wordt aangemaakt, even geduld… Dit kan ongeveer 30 seconden duren." +#: src/ui/gui/netplay_create.slint:155 +msgctxt "CustomServerDialog" +msgid "Enter a custom server URL" +msgstr "Aangepaste server-URL invoeren" -#: src/ui/gui/netplay_join.slint:5 +#: src/ui/gui/netplay_join.slint:7 msgctxt "NetplayJoin" msgid "Netplay: Join Session" msgstr "Netplay: deelnemen aan sessie" -#: src/ui/gui/netplay_join.slint:30 +#: src/ui/gui/netplay_join.slint:18 msgctxt "NetplayJoin" msgid "Player Name (required):" msgstr "Spelernaam (verplicht):" -#: src/ui/gui/netplay_join.slint:34 +#: src/ui/gui/netplay_join.slint:22 msgctxt "NetplayJoin" msgid "Enter player name" msgstr "Spelernaam invoeren" -#: src/ui/gui/netplay_join.slint:43 -msgctxt "NetplayJoin" -msgid "Custom Server URL (optional):" -msgstr "Aangepaste server-URL (optioneel):" - -#: src/ui/gui/netplay_join.slint:57 -msgctxt "NetplayJoin" -msgid "Refreshing session list, please wait..." -msgstr "Sessielijst wordt vernieuwd, even geduld…" - -#: src/ui/gui/netplay_join.slint:62 -msgctxt "NetplayJoin" -msgid "Click on a session below to select it" -msgstr "Klik hieronder op een sessie om die te selecteren" - -#: src/ui/gui/netplay_join.slint:67 -msgctxt "NetplayJoin" -msgid "No sessions available. Please refresh to check again." -msgstr "Geen sessies beschikbaar. Vernieuw om opnieuw te controleren." - -#: src/ui/gui/netplay_join.slint:73 -msgctxt "NetplayJoin" -msgid "Server" -msgstr "Server" - -#: src/ui/gui/netplay_join.slint:74 -msgctxt "NetplayJoin" -msgid "Session Name" -msgstr "Sessienaam" - -#: src/ui/gui/netplay_join.slint:75 -msgctxt "NetplayJoin" -msgid "Game Name" -msgstr "Spelnaam" - -#: src/ui/gui/netplay_join.slint:76 -msgctxt "NetplayJoin" -msgid "Password" -msgstr "Wachtwoord" - -#: src/ui/gui/netplay_join.slint:77 -msgctxt "NetplayJoin" -msgid "Cheats" -msgstr "Cheats" - -#: src/ui/gui/netplay_join.slint:91 -msgctxt "NetplayJoin" -msgid "Refresh Session List" -msgstr "Sessielijst vernieuwen" - -#: src/ui/gui/netplay_join.slint:105 +#: src/ui/gui/netplay_join.slint:31 msgctxt "NetplayJoin" msgid "Password (if required)" msgstr "Wachtwoord (indien vereist)" -#: src/ui/gui/netplay_join.slint:112 +#: src/ui/gui/netplay_join.slint:41 +msgctxt "NetplayJoin" +msgid "Custom Server URL (optional):" +msgstr "Aangepaste server-URL (optioneel):" + +#: src/ui/gui/netplay_join.slint:53 msgctxt "NetplayJoin" msgid "Select ROM" msgstr "ROM selecteren" -#: src/ui/gui/netplay_join.slint:125 +#: src/ui/gui/netplay_join.slint:68 +msgctxt "NetplayJoin" +msgid "Refreshing session list, please wait..." +msgstr "Sessielijst wordt vernieuwd, even geduld…" + +#: src/ui/gui/netplay_join.slint:73 +msgctxt "NetplayJoin" +msgid "Click on a session below to select it" +msgstr "Klik hieronder op een sessie om die te selecteren" + +#: src/ui/gui/netplay_join.slint:78 +msgctxt "NetplayJoin" +msgid "No sessions available. Please refresh to check again." +msgstr "Geen sessies beschikbaar. Vernieuw om opnieuw te controleren." + +#: src/ui/gui/netplay_join.slint:84 +msgctxt "NetplayJoin" +msgid "Server" +msgstr "Server" + +#: src/ui/gui/netplay_join.slint:85 +msgctxt "NetplayJoin" +msgid "Session Name" +msgstr "Sessienaam" + +#: src/ui/gui/netplay_join.slint:86 +msgctxt "NetplayJoin" +msgid "Game Name" +msgstr "Spelnaam" + +#: src/ui/gui/netplay_join.slint:87 +msgctxt "NetplayJoin" +msgid "Password" +msgstr "Wachtwoord" + +#: src/ui/gui/netplay_join.slint:88 +msgctxt "NetplayJoin" +msgid "Cheats" +msgstr "Cheats" + +#: src/ui/gui/netplay_join.slint:102 +msgctxt "NetplayJoin" +msgid "Refresh Session List" +msgstr "Sessielijst vernieuwen" + +#: src/ui/gui/netplay_join.slint:119 msgctxt "NetplayJoin" msgid "Join Session" msgstr "Deelnemen aan sessie" -#: src/ui/gui/netplay_page.slint:33 +#: src/ui/gui/netplay_join.slint:132 +msgctxt "NetplayJoin" +msgid "Cancel" +msgstr "Annuleren" + +#: src/ui/gui/netplay_page.slint:37 msgctxt "Netplay" msgid "Netplay" msgstr "Netplay" -#: src/ui/gui/netplay_page.slint:40 +#: src/ui/gui/netplay_page.slint:45 msgctxt "Netplay" msgid "Create Session" msgstr "Sessie aanmaken" -#: src/ui/gui/netplay_page.slint:50 +#: src/ui/gui/netplay_page.slint:56 msgctxt "Netplay" msgid "Join Session" msgstr "Deelnemen aan sessie" -#: src/ui/gui/netplay_page.slint:64 +#: src/ui/gui/netplay_page.slint:70 msgctxt "Netplay" msgid "Netplay Discord Channel" msgstr "Netplay-Discordkanaal" -#: src/ui/gui/netplay_page.slint:71 +#: src/ui/gui/netplay_page.slint:77 msgctxt "Netplay" msgid "Provide Feedback" msgstr "Feedback geven" -#: src/ui/gui/netplay_page.slint:82 -msgctxt "CustomNetplayServer" -msgid "Custom Netplay Server" -msgstr "Aangepaste Netplay-server" - -#: src/ui/gui/netplay_wait.slint:14 +#: src/ui/gui/netplay_wait.slint:15 msgctxt "NetplayWait" msgid "Netplay: Waiting Room" msgstr "Netplay: wachtruimte" -#: src/ui/gui/netplay_wait.slint:31 +#: src/ui/gui/netplay_wait.slint:27 msgctxt "NetplayWait" msgid "Session Name:" msgstr "Sessienaam:" -#: src/ui/gui/netplay_wait.slint:37 +#: src/ui/gui/netplay_wait.slint:33 msgctxt "NetplayWait" msgid "Game Name:" msgstr "Spelnaam:" -#: src/ui/gui/netplay_wait.slint:43 +#: src/ui/gui/netplay_wait.slint:39 msgctxt "NetplayWait" msgid "Ping:" msgstr "Ping:" -#: src/ui/gui/netplay_wait.slint:50 +#: src/ui/gui/netplay_wait.slint:48 msgctxt "NetplayWait" msgid "Player 1:" msgstr "Speler 1:" -#: src/ui/gui/netplay_wait.slint:54 +#: src/ui/gui/netplay_wait.slint:52 msgctxt "NetplayWait" msgid "Player 2:" msgstr "Speler 2:" -#: src/ui/gui/netplay_wait.slint:60 +#: src/ui/gui/netplay_wait.slint:58 msgctxt "NetplayWait" msgid "Player 3:" msgstr "Speler 3:" -#: src/ui/gui/netplay_wait.slint:64 +#: src/ui/gui/netplay_wait.slint:62 msgctxt "NetplayWait" msgid "Player 4:" msgstr "Speler 4:" @@ -416,11 +415,16 @@ msgctxt "NetplayWait" msgid "Send Message" msgstr "Bericht verzenden" -#: src/ui/gui/netplay_wait.slint:102 +#: src/ui/gui/netplay_wait.slint:105 msgctxt "NetplayWait" msgid "Start Game" msgstr "Spel starten" +#: src/ui/gui/netplay_wait.slint:113 +msgctxt "NetplayWait" +msgid "Cancel" +msgstr "Annuleren" + #: src/ui/gui/retroachievements_page.slint:19 msgctxt "RAData" msgid "Not currently logged in" @@ -546,6 +550,11 @@ msgctxt "VruDialog" msgid "What Would You Like To Say?" msgstr "Wat wil je zeggen?" +#~ msgctxt "NetplayCreate" +#~ msgid "Creating server, please wait...This may take about 30 seconds." +#~ msgstr "" +#~ "Server wordt aangemaakt, even geduld… Dit kan ongeveer 30 seconden duren." + #~ msgctxt "ControllerConfig" #~ msgid "Port" #~ msgstr "Poort" diff --git a/data/translations/pt_BR/LC_MESSAGES/gopher64.po b/data/translations/pt_BR/LC_MESSAGES/gopher64.po index 2d8d9ee8..b392f31f 100644 --- a/data/translations/pt_BR/LC_MESSAGES/gopher64.po +++ b/data/translations/pt_BR/LC_MESSAGES/gopher64.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2026-05-19 09:43+0000\n" +"POT-Creation-Date: 2026-05-25 08:28+0000\n" "PO-Revision-Date: 2026-05-11 18:11-3000\n" "Last-Translator: EDUARDO CARVALHO \n" "Language-Team: LANGUAGE \n" @@ -47,46 +47,41 @@ msgctxt "About" msgid "Donate (via GitHub)" msgstr "Doações (via GitHub)" -#: src/ui/gui/appwindow.slint:103 +#: src/ui/gui/appwindow.slint:151 msgctxt "Menu" msgid "Local Game" msgstr "Jogo Local" -#: src/ui/gui/appwindow.slint:107 +#: src/ui/gui/appwindow.slint:155 msgctxt "Menu" msgid "Controller Config" msgstr "Configurar Controle" -#: src/ui/gui/appwindow.slint:111 +#: src/ui/gui/appwindow.slint:159 msgctxt "Menu" msgid "Netplay" msgstr "Netplay" -#: src/ui/gui/appwindow.slint:115 +#: src/ui/gui/appwindow.slint:163 msgctxt "Menu" msgid "Cheats" msgstr "Trapaças" -#: src/ui/gui/appwindow.slint:119 +#: src/ui/gui/appwindow.slint:167 msgctxt "Menu" msgid "RetroAchievements" msgstr "RetroAchievements" -#: src/ui/gui/appwindow.slint:123 +#: src/ui/gui/appwindow.slint:171 msgctxt "Menu" msgid "Settings" msgstr "Configurações" -#: src/ui/gui/appwindow.slint:127 +#: src/ui/gui/appwindow.slint:175 msgctxt "Menu" msgid "About" msgstr "Sobre" -#: src/ui/gui/appwindow.slint:248 -msgctxt "ErrorDialog" -msgid "Error" -msgstr "Erro" - #: src/ui/gui/cheat_page.slint:15 msgctxt "Cheats" msgid "Cheats" @@ -102,7 +97,7 @@ msgctxt "Cheats" msgid "Clear Cheats For All ROMs" msgstr "Limpar Trapaças para todas as ROMs" -#: src/ui/gui/cheat_page.slint:87 +#: src/ui/gui/cheat_page.slint:88 msgctxt "Cheats" msgid "No Cheats Available" msgstr "Sem trapaças disponíveis" @@ -142,62 +137,67 @@ msgctxt "ControllerConfig" msgid "Controller Assignment" msgstr "Atribuição do controle" -#: src/ui/gui/input_profile.slint:10 +#: src/ui/gui/input_profile.slint:12 msgctxt "InputProfileDialog" msgid "Create/Modify Input Profile" msgstr "Criar/Modificar Perfil de Comandos" -#: src/ui/gui/input_profile.slint:18 +#: src/ui/gui/input_profile.slint:25 msgctxt "InputProfileDialog" msgid "Enter profile name to create or modify" msgstr "Insira o nome de perfil para criar ou modificar" -#: src/ui/gui/input_profile.slint:29 +#: src/ui/gui/input_profile.slint:38 msgctxt "InputProfileDialog" msgid "Deadzone Percentage" msgstr "Porcentagem de Zona-morta" -#: src/ui/gui/input_profile.slint:51 +#: src/ui/gui/input_profile.slint:61 msgctxt "InputProfileDialog" msgid "Use DirectInput" msgstr "Usar DirectInput" -#: src/ui/gui/input_profile.slint:61 +#: src/ui/gui/input_profile.slint:74 msgctxt "InputProfileDialog" msgid "Start Profile Creation Wizard" msgstr "Iniciar Assistente de Criação de Perfil" -#: src/ui/gui/localgame_page.slint:18 +#: src/ui/gui/input_profile.slint:82 +msgctxt "InputProfileDialog" +msgid "Cancel" +msgstr "Cancelar" + +#: src/ui/gui/localgame_page.slint:19 msgctxt "LocalGame" msgid "Local Game" msgstr "Jogo Local" -#: src/ui/gui/localgame_page.slint:25 +#: src/ui/gui/localgame_page.slint:26 msgctxt "LocalGame" msgid "Open ROM" msgstr "Abrir ROM" -#: src/ui/gui/localgame_page.slint:36 +#: src/ui/gui/localgame_page.slint:37 msgctxt "LocalGame" msgid "Open Saves Folder" msgstr "Abrir Partes de Saves" -#: src/ui/gui/localgame_page.slint:53 +#: src/ui/gui/localgame_page.slint:54 msgctxt "LocalGame" msgid "Recent ROMs" msgstr "ROMs Recentes" -#: src/ui/gui/netplay_create.slint:5 +#: src/ui/gui/netplay_create.slint:7 msgctxt "NetplayCreate" msgid "Netplay: Create Session" msgstr "Netplay: Criar Sessão" -#: src/ui/gui/netplay_create.slint:24 +#: src/ui/gui/netplay_create.slint:23 msgctxt "NetplayCreate" msgid "Session Name:" msgstr "Nome da Sessão:" -#: src/ui/gui/netplay_create.slint:28 +#: src/ui/gui/netplay_create.slint:27 msgctxt "NetplayCreate" msgid "Enter session name" msgstr "Insira nome da sessão:" @@ -212,27 +212,27 @@ msgctxt "NetplayCreate" msgid "Enter session password" msgstr "Insira a senha da sessão" -#: src/ui/gui/netplay_create.slint:51 +#: src/ui/gui/netplay_create.slint:52 msgctxt "NetplayCreate" msgid "Player Name:" msgstr "Nome de Jogador:" -#: src/ui/gui/netplay_create.slint:55 +#: src/ui/gui/netplay_create.slint:56 msgctxt "NetplayCreate" msgid "Enter player name" msgstr "Insira nome de jogador" -#: src/ui/gui/netplay_create.slint:64 +#: src/ui/gui/netplay_create.slint:66 msgctxt "NetplayCreate" msgid "Server:" msgstr "Servidor:" -#: src/ui/gui/netplay_create.slint:82 +#: src/ui/gui/netplay_create.slint:86 msgctxt "NetplayCreate" msgid "Select ROM" msgstr "Selecionar ROM" -#: src/ui/gui/netplay_create.slint:97 +#: src/ui/gui/netplay_create.slint:102 msgctxt "NetplayCreate" msgid "" "This game has cheats enabled. Cheats will be synchronized with other players." @@ -240,169 +240,168 @@ msgstr "" "Este jogo tem trapaças habilitadas. As trapaças serão sincronizadas com " "outros jogadores." -#: src/ui/gui/netplay_create.slint:103 +#: src/ui/gui/netplay_create.slint:112 msgctxt "NetplayCreate" msgid "Create Session" msgstr "Criar Sessão" -#: src/ui/gui/netplay_create.slint:126 -msgctxt "DispatcherDialog" -msgid "Creating Server" -msgstr "Criando Servidor" +#: src/ui/gui/netplay_create.slint:132 +msgctxt "NetplayCreate" +msgid "Cancel" +msgstr "Cancelar" -#: src/ui/gui/netplay_create.slint:128 -msgctxt "DispatcherDialog" -msgid "Creating server, please wait...This may take about 30 seconds." -msgstr "" -"Criando servidor, por favor aguarde...Isto poderá levar até 30 segundos." +#: src/ui/gui/netplay_create.slint:155 +msgctxt "CustomServerDialog" +msgid "Enter a custom server URL" +msgstr "Insira a URL personalizada do servidor" -#: src/ui/gui/netplay_join.slint:5 +#: src/ui/gui/netplay_join.slint:7 msgctxt "NetplayJoin" msgid "Netplay: Join Session" msgstr "Netplay: Entrar na sessão" -#: src/ui/gui/netplay_join.slint:30 +#: src/ui/gui/netplay_join.slint:18 msgctxt "NetplayJoin" msgid "Player Name (required):" msgstr "Nome de Jogador (obrigatório):" -#: src/ui/gui/netplay_join.slint:34 +#: src/ui/gui/netplay_join.slint:22 msgctxt "NetplayJoin" msgid "Enter player name" msgstr "Insira o nome de jogador" -#: src/ui/gui/netplay_join.slint:43 +#: src/ui/gui/netplay_join.slint:31 +msgctxt "NetplayJoin" +msgid "Password (if required)" +msgstr "Senha (caso obrigatória)" + +#: src/ui/gui/netplay_join.slint:41 msgctxt "NetplayJoin" msgid "Custom Server URL (optional):" msgstr "URL Personalizada de Servidor (opcional):" -#: src/ui/gui/netplay_join.slint:57 +#: src/ui/gui/netplay_join.slint:53 +msgctxt "NetplayJoin" +msgid "Select ROM" +msgstr "Selecionar ROM" + +#: src/ui/gui/netplay_join.slint:68 msgctxt "NetplayJoin" msgid "Refreshing session list, please wait..." msgstr "Recarregando lista de sessões, por favor aguarde..." -#: src/ui/gui/netplay_join.slint:62 +#: src/ui/gui/netplay_join.slint:73 msgctxt "NetplayJoin" msgid "Click on a session below to select it" msgstr "Clique em uma sessão abaixo para selecionar" -#: src/ui/gui/netplay_join.slint:67 +#: src/ui/gui/netplay_join.slint:78 msgctxt "NetplayJoin" msgid "No sessions available. Please refresh to check again." msgstr "" "Sem sessões disponíveis. Por favor recarregue para verificar novamente." -#: src/ui/gui/netplay_join.slint:73 +#: src/ui/gui/netplay_join.slint:84 msgctxt "NetplayJoin" msgid "Server" msgstr "Servidor" -#: src/ui/gui/netplay_join.slint:74 +#: src/ui/gui/netplay_join.slint:85 msgctxt "NetplayJoin" msgid "Session Name" msgstr "Nome da Sessão" -#: src/ui/gui/netplay_join.slint:75 +#: src/ui/gui/netplay_join.slint:86 msgctxt "NetplayJoin" msgid "Game Name" msgstr "Nome do Jogo" -#: src/ui/gui/netplay_join.slint:76 +#: src/ui/gui/netplay_join.slint:87 msgctxt "NetplayJoin" msgid "Password" msgstr "Senha" -#: src/ui/gui/netplay_join.slint:77 +#: src/ui/gui/netplay_join.slint:88 msgctxt "NetplayJoin" msgid "Cheats" msgstr "Trapaças" -#: src/ui/gui/netplay_join.slint:91 +#: src/ui/gui/netplay_join.slint:102 msgctxt "NetplayJoin" msgid "Refresh Session List" msgstr "Recarregar Lista de Sessões" -#: src/ui/gui/netplay_join.slint:105 -msgctxt "NetplayJoin" -msgid "Password (if required)" -msgstr "Senha (caso obrigatória)" - -#: src/ui/gui/netplay_join.slint:112 -msgctxt "NetplayJoin" -msgid "Select ROM" -msgstr "Selecionar ROM" - -#: src/ui/gui/netplay_join.slint:125 +#: src/ui/gui/netplay_join.slint:119 msgctxt "NetplayJoin" msgid "Join Session" msgstr "Entrar na Sessão" -#: src/ui/gui/netplay_page.slint:33 +#: src/ui/gui/netplay_join.slint:132 +msgctxt "NetplayJoin" +msgid "Cancel" +msgstr "Cancelar" + +#: src/ui/gui/netplay_page.slint:37 msgctxt "Netplay" msgid "Netplay" msgstr "Netplay" -#: src/ui/gui/netplay_page.slint:40 +#: src/ui/gui/netplay_page.slint:45 msgctxt "Netplay" msgid "Create Session" msgstr "Criar Sessão" -#: src/ui/gui/netplay_page.slint:50 +#: src/ui/gui/netplay_page.slint:56 msgctxt "Netplay" msgid "Join Session" msgstr "Entrar na Sessão" -#: src/ui/gui/netplay_page.slint:64 +#: src/ui/gui/netplay_page.slint:70 msgctxt "Netplay" msgid "Netplay Discord Channel" msgstr "Canal de Netplay do Discord" -#: src/ui/gui/netplay_page.slint:71 +#: src/ui/gui/netplay_page.slint:77 msgctxt "Netplay" msgid "Provide Feedback" msgstr "Fornecer Feedback" -#: src/ui/gui/netplay_page.slint:82 -msgctxt "CustomNetplayServer" -msgid "Custom Netplay Server" -msgstr "Servidor de Netplay Personalizado" - -#: src/ui/gui/netplay_wait.slint:14 +#: src/ui/gui/netplay_wait.slint:15 msgctxt "NetplayWait" msgid "Netplay: Waiting Room" msgstr "Netplay: Aguardando Sala" -#: src/ui/gui/netplay_wait.slint:31 +#: src/ui/gui/netplay_wait.slint:27 msgctxt "NetplayWait" msgid "Session Name:" msgstr "Nome da Sessão:" -#: src/ui/gui/netplay_wait.slint:37 +#: src/ui/gui/netplay_wait.slint:33 msgctxt "NetplayWait" msgid "Game Name:" msgstr "Nome do Jogo:" -#: src/ui/gui/netplay_wait.slint:43 +#: src/ui/gui/netplay_wait.slint:39 msgctxt "NetplayWait" msgid "Ping:" msgstr "Ping:" -#: src/ui/gui/netplay_wait.slint:50 +#: src/ui/gui/netplay_wait.slint:48 msgctxt "NetplayWait" msgid "Player 1:" msgstr "Jogador 1" -#: src/ui/gui/netplay_wait.slint:54 +#: src/ui/gui/netplay_wait.slint:52 msgctxt "NetplayWait" msgid "Player 2:" msgstr "Jogador 2:" -#: src/ui/gui/netplay_wait.slint:60 +#: src/ui/gui/netplay_wait.slint:58 msgctxt "NetplayWait" msgid "Player 3:" msgstr "Jogador 3:" -#: src/ui/gui/netplay_wait.slint:64 +#: src/ui/gui/netplay_wait.slint:62 msgctxt "NetplayWait" msgid "Player 4:" msgstr "Jogador 4:" @@ -417,11 +416,16 @@ msgctxt "NetplayWait" msgid "Send Message" msgstr "Enviar Mensagem" -#: src/ui/gui/netplay_wait.slint:102 +#: src/ui/gui/netplay_wait.slint:105 msgctxt "NetplayWait" msgid "Start Game" msgstr "Iniciar jogo" +#: src/ui/gui/netplay_wait.slint:113 +msgctxt "NetplayWait" +msgid "Cancel" +msgstr "Cancelar" + #: src/ui/gui/retroachievements_page.slint:19 msgctxt "RAData" msgid "Not currently logged in" @@ -547,6 +551,11 @@ msgctxt "VruDialog" msgid "What Would You Like To Say?" msgstr "O que você quer falar?" +#~ msgctxt "NetplayCreate" +#~ msgid "Creating server, please wait...This may take about 30 seconds." +#~ msgstr "" +#~ "Criando servidor, por favor aguarde...Isto poderá levar até 30 segundos." + #~ msgctxt "ControllerConfig" #~ msgid "Port" #~ msgstr "Entrada" diff --git a/data/translations/ru/LC_MESSAGES/gopher64.po b/data/translations/ru/LC_MESSAGES/gopher64.po index b04fac7f..338af514 100644 --- a/data/translations/ru/LC_MESSAGES/gopher64.po +++ b/data/translations/ru/LC_MESSAGES/gopher64.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: gopher64\n" -"POT-Creation-Date: 2026-05-19 09:43+0000\n" +"POT-Creation-Date: 2026-05-25 08:28+0000\n" "PO-Revision-Date: 2026-05-11 12:00+0000\n" "Last-Translator: \n" "Language-Team: Russian\n" @@ -47,46 +47,41 @@ msgctxt "About" msgid "Donate (via GitHub)" msgstr "Пожертвовать (через GitHub)" -#: src/ui/gui/appwindow.slint:103 +#: src/ui/gui/appwindow.slint:151 msgctxt "Menu" msgid "Local Game" msgstr "Локальная игра" -#: src/ui/gui/appwindow.slint:107 +#: src/ui/gui/appwindow.slint:155 msgctxt "Menu" msgid "Controller Config" msgstr "Настройка контроллера" -#: src/ui/gui/appwindow.slint:111 +#: src/ui/gui/appwindow.slint:159 msgctxt "Menu" msgid "Netplay" msgstr "Сетевая игра" -#: src/ui/gui/appwindow.slint:115 +#: src/ui/gui/appwindow.slint:163 msgctxt "Menu" msgid "Cheats" msgstr "Читы" -#: src/ui/gui/appwindow.slint:119 +#: src/ui/gui/appwindow.slint:167 msgctxt "Menu" msgid "RetroAchievements" msgstr "RetroAchievements" -#: src/ui/gui/appwindow.slint:123 +#: src/ui/gui/appwindow.slint:171 msgctxt "Menu" msgid "Settings" msgstr "Настройки" -#: src/ui/gui/appwindow.slint:127 +#: src/ui/gui/appwindow.slint:175 msgctxt "Menu" msgid "About" msgstr "О программе" -#: src/ui/gui/appwindow.slint:248 -msgctxt "ErrorDialog" -msgid "Error" -msgstr "Ошибка" - #: src/ui/gui/cheat_page.slint:15 msgctxt "Cheats" msgid "Cheats" @@ -102,7 +97,7 @@ msgctxt "Cheats" msgid "Clear Cheats For All ROMs" msgstr "Очистить читы для всех ROMов" -#: src/ui/gui/cheat_page.slint:87 +#: src/ui/gui/cheat_page.slint:88 msgctxt "Cheats" msgid "No Cheats Available" msgstr "Читы недоступны" @@ -142,62 +137,67 @@ msgctxt "ControllerConfig" msgid "Controller Assignment" msgstr "Назначение контроллера" -#: src/ui/gui/input_profile.slint:10 +#: src/ui/gui/input_profile.slint:12 msgctxt "InputProfileDialog" msgid "Create/Modify Input Profile" msgstr "Создать/изменить профиль ввода" -#: src/ui/gui/input_profile.slint:18 +#: src/ui/gui/input_profile.slint:25 msgctxt "InputProfileDialog" msgid "Enter profile name to create or modify" msgstr "Введите имя профиля для создания или изменения" -#: src/ui/gui/input_profile.slint:29 +#: src/ui/gui/input_profile.slint:38 msgctxt "InputProfileDialog" msgid "Deadzone Percentage" msgstr "Процент мёртвой зоны" -#: src/ui/gui/input_profile.slint:51 +#: src/ui/gui/input_profile.slint:61 msgctxt "InputProfileDialog" msgid "Use DirectInput" msgstr "Использовать DirectInput" -#: src/ui/gui/input_profile.slint:61 +#: src/ui/gui/input_profile.slint:74 msgctxt "InputProfileDialog" msgid "Start Profile Creation Wizard" msgstr "Запустить мастер создания профиля" -#: src/ui/gui/localgame_page.slint:18 +#: src/ui/gui/input_profile.slint:82 +msgctxt "InputProfileDialog" +msgid "Cancel" +msgstr "Отмена" + +#: src/ui/gui/localgame_page.slint:19 msgctxt "LocalGame" msgid "Local Game" msgstr "Локальная игра" -#: src/ui/gui/localgame_page.slint:25 +#: src/ui/gui/localgame_page.slint:26 msgctxt "LocalGame" msgid "Open ROM" msgstr "Открыть ROM" -#: src/ui/gui/localgame_page.slint:36 +#: src/ui/gui/localgame_page.slint:37 msgctxt "LocalGame" msgid "Open Saves Folder" msgstr "Открыть папку сохранений" -#: src/ui/gui/localgame_page.slint:53 +#: src/ui/gui/localgame_page.slint:54 msgctxt "LocalGame" msgid "Recent ROMs" msgstr "Недавние ROMы" -#: src/ui/gui/netplay_create.slint:5 +#: src/ui/gui/netplay_create.slint:7 msgctxt "NetplayCreate" msgid "Netplay: Create Session" msgstr "Сетевая игра: Создать сессию" -#: src/ui/gui/netplay_create.slint:24 +#: src/ui/gui/netplay_create.slint:23 msgctxt "NetplayCreate" msgid "Session Name:" msgstr "Имя сессии:" -#: src/ui/gui/netplay_create.slint:28 +#: src/ui/gui/netplay_create.slint:27 msgctxt "NetplayCreate" msgid "Enter session name" msgstr "Введите имя сессии" @@ -212,195 +212,194 @@ msgctxt "NetplayCreate" msgid "Enter session password" msgstr "Введите пароль сессии" -#: src/ui/gui/netplay_create.slint:51 +#: src/ui/gui/netplay_create.slint:52 msgctxt "NetplayCreate" msgid "Player Name:" msgstr "Имя игрока:" -#: src/ui/gui/netplay_create.slint:55 +#: src/ui/gui/netplay_create.slint:56 msgctxt "NetplayCreate" msgid "Enter player name" msgstr "Введите имя игрока" -#: src/ui/gui/netplay_create.slint:64 +#: src/ui/gui/netplay_create.slint:66 msgctxt "NetplayCreate" msgid "Server:" msgstr "Сервер:" -#: src/ui/gui/netplay_create.slint:82 +#: src/ui/gui/netplay_create.slint:86 msgctxt "NetplayCreate" msgid "Select ROM" msgstr "Выбрать ROM" -#: src/ui/gui/netplay_create.slint:97 +#: src/ui/gui/netplay_create.slint:102 msgctxt "NetplayCreate" msgid "" "This game has cheats enabled. Cheats will be synchronized with other players." msgstr "" "Для этой игры включены читы. Читы будут синхронизированы с другими игроками." -#: src/ui/gui/netplay_create.slint:103 +#: src/ui/gui/netplay_create.slint:112 msgctxt "NetplayCreate" msgid "Create Session" msgstr "Создать сессию" -#: src/ui/gui/netplay_create.slint:126 -msgctxt "DispatcherDialog" -msgid "Creating Server" -msgstr "Создание сервера" +#: src/ui/gui/netplay_create.slint:132 +msgctxt "NetplayCreate" +msgid "Cancel" +msgstr "Отмена" -#: src/ui/gui/netplay_create.slint:128 -msgctxt "DispatcherDialog" -msgid "Creating server, please wait...This may take about 30 seconds." -msgstr "" -"Создание сервера, пожалуйста, подождите... Это может занять около 30 секунд." +#: src/ui/gui/netplay_create.slint:155 +msgctxt "CustomServerDialog" +msgid "Enter a custom server URL" +msgstr "Введите URL пользовательского сервера" -#: src/ui/gui/netplay_join.slint:5 +#: src/ui/gui/netplay_join.slint:7 msgctxt "NetplayJoin" msgid "Netplay: Join Session" msgstr "Сетевая игра: Присоединиться к сессии" -#: src/ui/gui/netplay_join.slint:30 +#: src/ui/gui/netplay_join.slint:18 msgctxt "NetplayJoin" msgid "Player Name (required):" msgstr "Имя игрока (обязательно):" -#: src/ui/gui/netplay_join.slint:34 +#: src/ui/gui/netplay_join.slint:22 msgctxt "NetplayJoin" msgid "Enter player name" msgstr "Введите имя игрока" -#: src/ui/gui/netplay_join.slint:43 -msgctxt "NetplayJoin" -msgid "Custom Server URL (optional):" -msgstr "URL пользовательского сервера (необязательно):" - -#: src/ui/gui/netplay_join.slint:57 -msgctxt "NetplayJoin" -msgid "Refreshing session list, please wait..." -msgstr "Обновление списка сессий, пожалуйста, подождите..." - -#: src/ui/gui/netplay_join.slint:62 -msgctxt "NetplayJoin" -msgid "Click on a session below to select it" -msgstr "Нажмите на сессию ниже, чтобы выбрать её" - -#: src/ui/gui/netplay_join.slint:67 -msgctxt "NetplayJoin" -msgid "No sessions available. Please refresh to check again." -msgstr "Нет доступных сессий. Пожалуйста, обновите, чтобы проверить снова." - -#: src/ui/gui/netplay_join.slint:73 -msgctxt "NetplayJoin" -msgid "Server" -msgstr "Сервер" - -#: src/ui/gui/netplay_join.slint:74 -msgctxt "NetplayJoin" -msgid "Session Name" -msgstr "Имя сессии" - -#: src/ui/gui/netplay_join.slint:75 -msgctxt "NetplayJoin" -msgid "Game Name" -msgstr "Название игры" - -#: src/ui/gui/netplay_join.slint:76 -msgctxt "NetplayJoin" -msgid "Password" -msgstr "Пароль" - -#: src/ui/gui/netplay_join.slint:77 -msgctxt "NetplayJoin" -msgid "Cheats" -msgstr "Читы" - -#: src/ui/gui/netplay_join.slint:91 -msgctxt "NetplayJoin" -msgid "Refresh Session List" -msgstr "Обновить список сессий" - -#: src/ui/gui/netplay_join.slint:105 +#: src/ui/gui/netplay_join.slint:31 msgctxt "NetplayJoin" msgid "Password (if required)" msgstr "Пароль (если требуется)" -#: src/ui/gui/netplay_join.slint:112 +#: src/ui/gui/netplay_join.slint:41 +msgctxt "NetplayJoin" +msgid "Custom Server URL (optional):" +msgstr "URL пользовательского сервера (необязательно):" + +#: src/ui/gui/netplay_join.slint:53 msgctxt "NetplayJoin" msgid "Select ROM" msgstr "Выбрать ROM" -#: src/ui/gui/netplay_join.slint:125 +#: src/ui/gui/netplay_join.slint:68 +msgctxt "NetplayJoin" +msgid "Refreshing session list, please wait..." +msgstr "Обновление списка сессий, пожалуйста, подождите..." + +#: src/ui/gui/netplay_join.slint:73 +msgctxt "NetplayJoin" +msgid "Click on a session below to select it" +msgstr "Нажмите на сессию ниже, чтобы выбрать её" + +#: src/ui/gui/netplay_join.slint:78 +msgctxt "NetplayJoin" +msgid "No sessions available. Please refresh to check again." +msgstr "Нет доступных сессий. Пожалуйста, обновите, чтобы проверить снова." + +#: src/ui/gui/netplay_join.slint:84 +msgctxt "NetplayJoin" +msgid "Server" +msgstr "Сервер" + +#: src/ui/gui/netplay_join.slint:85 +msgctxt "NetplayJoin" +msgid "Session Name" +msgstr "Имя сессии" + +#: src/ui/gui/netplay_join.slint:86 +msgctxt "NetplayJoin" +msgid "Game Name" +msgstr "Название игры" + +#: src/ui/gui/netplay_join.slint:87 +msgctxt "NetplayJoin" +msgid "Password" +msgstr "Пароль" + +#: src/ui/gui/netplay_join.slint:88 +msgctxt "NetplayJoin" +msgid "Cheats" +msgstr "Читы" + +#: src/ui/gui/netplay_join.slint:102 +msgctxt "NetplayJoin" +msgid "Refresh Session List" +msgstr "Обновить список сессий" + +#: src/ui/gui/netplay_join.slint:119 msgctxt "NetplayJoin" msgid "Join Session" msgstr "Присоединиться к сессии" -#: src/ui/gui/netplay_page.slint:33 +#: src/ui/gui/netplay_join.slint:132 +msgctxt "NetplayJoin" +msgid "Cancel" +msgstr "Отмена" + +#: src/ui/gui/netplay_page.slint:37 msgctxt "Netplay" msgid "Netplay" msgstr "Сетевая игра" -#: src/ui/gui/netplay_page.slint:40 +#: src/ui/gui/netplay_page.slint:45 msgctxt "Netplay" msgid "Create Session" msgstr "Создать сессию" -#: src/ui/gui/netplay_page.slint:50 +#: src/ui/gui/netplay_page.slint:56 msgctxt "Netplay" msgid "Join Session" msgstr "Присоединиться к сессии" -#: src/ui/gui/netplay_page.slint:64 +#: src/ui/gui/netplay_page.slint:70 msgctxt "Netplay" msgid "Netplay Discord Channel" msgstr "Канал Discord для сетевой игры" -#: src/ui/gui/netplay_page.slint:71 +#: src/ui/gui/netplay_page.slint:77 msgctxt "Netplay" msgid "Provide Feedback" msgstr "Оставить отзыв" -#: src/ui/gui/netplay_page.slint:82 -msgctxt "CustomNetplayServer" -msgid "Custom Netplay Server" -msgstr "Пользовательский сервер сетевой игры" - -#: src/ui/gui/netplay_wait.slint:14 +#: src/ui/gui/netplay_wait.slint:15 msgctxt "NetplayWait" msgid "Netplay: Waiting Room" msgstr "Сетевая игра: Комната ожидания" -#: src/ui/gui/netplay_wait.slint:31 +#: src/ui/gui/netplay_wait.slint:27 msgctxt "NetplayWait" msgid "Session Name:" msgstr "Имя сессии:" -#: src/ui/gui/netplay_wait.slint:37 +#: src/ui/gui/netplay_wait.slint:33 msgctxt "NetplayWait" msgid "Game Name:" msgstr "Название игры:" -#: src/ui/gui/netplay_wait.slint:43 +#: src/ui/gui/netplay_wait.slint:39 msgctxt "NetplayWait" msgid "Ping:" msgstr "Пинг:" -#: src/ui/gui/netplay_wait.slint:50 +#: src/ui/gui/netplay_wait.slint:48 msgctxt "NetplayWait" msgid "Player 1:" msgstr "Игрок 1:" -#: src/ui/gui/netplay_wait.slint:54 +#: src/ui/gui/netplay_wait.slint:52 msgctxt "NetplayWait" msgid "Player 2:" msgstr "Игрок 2:" -#: src/ui/gui/netplay_wait.slint:60 +#: src/ui/gui/netplay_wait.slint:58 msgctxt "NetplayWait" msgid "Player 3:" msgstr "Игрок 3:" -#: src/ui/gui/netplay_wait.slint:64 +#: src/ui/gui/netplay_wait.slint:62 msgctxt "NetplayWait" msgid "Player 4:" msgstr "Игрок 4:" @@ -415,11 +414,16 @@ msgctxt "NetplayWait" msgid "Send Message" msgstr "Отправить сообщение" -#: src/ui/gui/netplay_wait.slint:102 +#: src/ui/gui/netplay_wait.slint:105 msgctxt "NetplayWait" msgid "Start Game" msgstr "Начать игру" +#: src/ui/gui/netplay_wait.slint:113 +msgctxt "NetplayWait" +msgid "Cancel" +msgstr "Отмена" + #: src/ui/gui/retroachievements_page.slint:19 msgctxt "RAData" msgid "Not currently logged in" @@ -545,6 +549,12 @@ msgctxt "VruDialog" msgid "What Would You Like To Say?" msgstr "Что вы хотите сказать?" +#~ msgctxt "NetplayCreate" +#~ msgid "Creating server, please wait...This may take about 30 seconds." +#~ msgstr "" +#~ "Создание сервера, пожалуйста, подождите... Это может занять около 30 " +#~ "секунд." + #~ msgctxt "ControllerConfig" #~ msgid "Port" #~ msgstr "Порт" diff --git a/src/ui/cheats.rs b/src/ui/cheats.rs index 6f479a7c..7b84d26f 100644 --- a/src/ui/cheats.rs +++ b/src/ui/cheats.rs @@ -1,6 +1,5 @@ use crate::ui; use crate::ui::gui::AppWindow; -use crate::ui::gui::ErrorDialog; use crate::{cheats, device}; use slint::ComponentHandle; @@ -66,14 +65,8 @@ pub fn cheats_window(app: &AppWindow) { } } else { clear_cheats(&weak, true); - weak.upgrade_in_event_loop(move |_handle| { - let message_dialog = ErrorDialog::new().unwrap(); - let weak_dialog = message_dialog.as_weak(); - message_dialog.on_close_clicked(move || { - weak_dialog.unwrap().hide().unwrap(); - }); - message_dialog.set_text("Could not read ROM".into()); - message_dialog.show().unwrap(); + weak.upgrade_in_event_loop(move |handle| { + handle.invoke_show_message("Could not read ROM".into(), true); }) .unwrap(); } diff --git a/src/ui/gui.rs b/src/ui/gui.rs index 2dd83308..347b8dcb 100644 --- a/src/ui/gui.rs +++ b/src/ui/gui.rs @@ -334,50 +334,54 @@ fn controller_window(app: &AppWindow, config: &ui::config::Config) { let weak_app = app.as_weak(); app.on_input_profile_button_clicked(move || { - let dialog = InputProfileDialog::new().unwrap(); - dialog.set_deadzone(ui::input::DEADZONE_DEFAULT); - let weak_dialog = dialog.as_weak(); - let weak_app = weak_app.clone(); - dialog.on_profile_creation_button_clicked(move || { - let weak_app = weak_app.clone(); - weak_dialog - .upgrade_in_event_loop(move |handle| { - let profile_name = handle.get_profile_name(); - let dinput = handle.get_dinput(); - let deadzone = handle.get_deadzone(); - handle.hide().unwrap(); + weak_app + .upgrade_in_event_loop(move |handle| { + handle.set_input_deadzone(ui::input::DEADZONE_DEFAULT); + handle.set_input_profile_name(String::new().into()); + handle.set_input_dinput(false); + handle.set_show_input_profile(true); + }) + .unwrap(); + }); + let weak_app = app.as_weak(); + app.on_input_profile_creation_button_clicked(move || { + let weak_app2 = weak_app.clone(); + weak_app + .upgrade_in_event_loop(move |handle| { + let profile_name = handle.get_input_profile_name(); + let dinput = handle.get_input_dinput(); + let deadzone = handle.get_input_deadzone(); + handle.set_show_input_profile(false); - tokio::spawn(async move { - let cli_path = std::env::current_exe() - .unwrap() - .parent() - .unwrap() - .join(format!("{}-cli", env!("CARGO_PKG_NAME"))); - let cmd_path = if cfg!(target_os = "macos") && cli_path.exists() { - cli_path - } else { - std::env::current_exe().unwrap() - }; - let mut command = tokio::process::Command::new(cmd_path); - command.args([ - "--configure-input-profile", - &profile_name, - "--deadzone", - &deadzone.to_string(), - ]); - if dinput { - command.arg("--use-dinput"); - } - if !command.status().await.unwrap().success() { - eprintln!("Failed to configure input profile"); - } - let config = ui::config::Config::new(); - update_input_profiles(&weak_app, &config); - }); - }) - .unwrap(); - }); - dialog.show().unwrap(); + tokio::spawn(async move { + let cli_path = std::env::current_exe() + .unwrap() + .parent() + .unwrap() + .join(format!("{}-cli", env!("CARGO_PKG_NAME"))); + let cmd_path = if cfg!(target_os = "macos") && cli_path.exists() { + cli_path + } else { + std::env::current_exe().unwrap() + }; + let mut command = tokio::process::Command::new(cmd_path); + command.args([ + "--configure-input-profile", + &profile_name, + "--deadzone", + &deadzone.to_string(), + ]); + if dinput { + command.arg("--use-dinput"); + } + if !command.status().await.unwrap().success() { + eprintln!("Failed to configure input profile"); + } + let config = ui::config::Config::new(); + update_input_profiles(&weak_app2, &config); + }); + }) + .unwrap(); }); let weak_app2 = app.as_weak(); diff --git a/src/ui/gui/appwindow.slint b/src/ui/gui/appwindow.slint index 856a788b..60413151 100644 --- a/src/ui/gui/appwindow.slint +++ b/src/ui/gui/appwindow.slint @@ -1,7 +1,7 @@ // Copyright © SixtyFPS GmbH // SPDX-License-Identifier: MIT -import { StandardButton, VerticalBox, HorizontalBox } from "std-widgets.slint"; +import { Palette, StandardButton, VerticalBox, HorizontalBox } from "std-widgets.slint"; import { LocalGame, ControllerConfig, Netplay, Cheats, RetroAchievements, Settings, About } from "pages.slint"; import { SideBar } from "side_bar.slint"; import { SettingsData } from "settings_page.slint"; @@ -10,13 +10,12 @@ import { AboutData } from "about_page.slint"; import { ControllerData } from "controller_page.slint"; import { State } from "localgame_page.slint"; import { CheatsData } from "cheat_page.slint"; -export { InputProfileDialog } from "input_profile.slint"; +import { InputProfileDialog, InputProfileData } from "input_profile.slint"; +import { NetplayData } from "netplay_page.slint"; export { VruDialog } from "vru_dialog.slint"; -export { NetplayCreate } from "netplay_create.slint"; -export { NetplayJoin } from "netplay_join.slint"; -export { NetplayWait } from "netplay_wait.slint"; -export { CustomNetplayServer } from "netplay_page.slint"; -export { DispatcherDialog } from "netplay_create.slint"; +import { NetplayCreate, CustomServerDialog } from "netplay_create.slint"; +import { NetplayJoin } from "netplay_join.slint"; +import { NetplayWait, NetplayWaitData } from "netplay_wait.slint"; export component AppWindow inherits Window { callback wiki_button_clicked; @@ -29,11 +28,20 @@ export component AppWindow inherits Window { callback open_rom_button_clicked; callback saves_folder_button_clicked; callback input_profile_button_clicked; + callback input_profile_creation_button_clicked; callback transferpak_toggled(int,bool); callback create_session_button_clicked; callback join_session_button_clicked; callback netplay_discord_button_clicked; callback netplay_feedback_button_clicked; + callback netplay_begin_game; + callback netplay_send_chat_message(string); + callback netplay_refresh_sessions; + callback netplay_create_session(string, string, string, string, string, string, string); + callback netplay_get_custom_url; + callback netplay_select_rom(string); + callback netplay_join_session(string, string, string, string, int); + callback netplay_close; callback cheats_select_rom_clicked(string); callback cheats_clear_clicked; callback cheat_toggled(string, string, string, bool); @@ -85,6 +93,39 @@ export component AppWindow inherits Window { in-out property cheat_game_crc <=> CheatsData.cheat_game_crc; in-out property cheats <=> CheatsData.cheats; + in-out property input_deadzone <=> InputProfileData.deadzone; + in-out property input_profile_name <=> InputProfileData.profile_name; + in-out property input_dinput <=> InputProfileData.dinput; + in-out property show_input_profile <=> InputProfileData.show_input_profile; + + in-out property show_netplay_wait_room <=> NetplayData.show_wait_room; + in-out property show_netplay_create_room <=> NetplayData.show_create_room; + in-out property show_netplay_join_room <=> NetplayData.show_join_room; + + in-out property netplay_server_names <=> NetplayData.server_names; + in-out property netplay_server_urls <=> NetplayData.server_urls; + in-out property netplay_custom_server_url <=> NetplayData.custom_server_url; + in-out property netplay_game_name <=> NetplayData.game_name; + in-out property netplay_game_hash <=> NetplayData.game_hash; + in-out property netplay_game_cheats <=> NetplayData.game_cheats; + in-out property netplay_pending_session <=> NetplayData.pending_session; + in-out property netplay_rom_path <=> NetplayData.rom_path; + in-out property netplay_peer_addr <=> NetplayData.peer_addr; + in-out property netplay_room_urls <=> NetplayData.room_urls; + in-out property netplay_room_ports <=> NetplayData.room_ports; + in-out property netplay_current_session <=> NetplayData.current_session; + in-out property netplay_sessions <=> NetplayData.sessions; + in-out property netplay_pending_refresh <=> NetplayData.pending_refresh; + in-out property netplay_session_name <=> NetplayData.session_name; + in-out property netplay_port <=> NetplayWaitData.port; + in-out property netplay_ping <=> NetplayWaitData.ping; + in-out property netplay_motd <=> NetplayWaitData.motd; + in-out property netplay_can_start <=> NetplayWaitData.can_start; + in-out property netplay_players <=> NetplayWaitData.players; + in-out property netplay_chat_text <=> NetplayWaitData.chat_text; + + private property popup_message; + private property popup_has_close; private property is-portrait: root.width < root.height; private property bar-thickness: 56px; private property safe-left: root.safe-area-insets.left; @@ -96,7 +137,7 @@ export component AppWindow inherits Window { min-width: 320px; min-height: 240px; - preferred-width: 600px; + preferred-width: 800px; preferred-height: 600px; title: "Gopher64"; icon: @image-url("../../../data/icon/gopher64.png"); @@ -163,7 +204,7 @@ export component AppWindow inherits Window { recent_rom_button_clicked(rom); } } - if(side-bar.current-item == 1): ControllerConfig { + if(side-bar.current-item == 1 && !show_input_profile): ControllerConfig { width: 100%; height: 100%; input_profile_button_clicked => { @@ -176,7 +217,14 @@ export component AppWindow inherits Window { controller_window_created(); } } - if(side-bar.current-item == 2): Netplay { + if(side-bar.current-item == 1 && show_input_profile): InputProfileDialog { + width: 100%; + height: 100%; + profile_creation_button_clicked => { + input_profile_creation_button_clicked(); + } + } + if(side-bar.current-item == 2 && !show_netplay_wait_room && !show_netplay_create_room && !show_netplay_join_room): Netplay { width: 100%; height: 100%; create_session_button_clicked => { @@ -192,6 +240,51 @@ export component AppWindow inherits Window { netplay_feedback_button_clicked(); } } + if(side-bar.current-item == 2 && show_netplay_wait_room): NetplayWait { + width: 100%; + height: 100%; + send_chat_message(message) => { + netplay_send_chat_message(message); + } + begin_game => { + netplay_begin_game(); + } + close => { + netplay_close(); + } + } + if(side-bar.current-item == 2 && show_netplay_create_room && !show_netplay_wait_room): NetplayCreate { + width: 100%; + height: 100%; + get_custom_url => { + netplay_get_custom_url(); + } + select_rom(rom_dir) => { + netplay_select_rom(rom_dir); + } + create_session(a, b, c, d, e, f, g) => { + netplay_create_session(a,b,c,d,e,f,g); + } + close => { + netplay_close(); + } + } + if(side-bar.current-item == 2 && show_netplay_join_room && !show_netplay_wait_room): NetplayJoin { + width: 100%; + height: 100%; + refresh_sessions => { + netplay_refresh_sessions(); + } + select_rom(rom_dir) => { + netplay_select_rom(rom_dir); + } + join_session(a, b, c, d, e) => { + netplay_join_session(a,b,c,d,e); + } + close => { + netplay_close(); + } + } if(side-bar.current-item == 3): Cheats { width: 100%; height: 100%; @@ -247,32 +340,62 @@ export component AppWindow inherits Window { source_code_button_clicked(); } } - } -} - -export component ErrorDialog inherits Window { - in-out property text; - title: @tr("Error"); - callback close_clicked; - VerticalBox { - alignment: start; - vertical-stretch: 1; - padding-left: root.safe-area-insets.left; - padding-top: root.safe-area-insets.top; - padding-right: root.safe-area-insets.right; - padding-bottom: root.safe-area-insets.bottom; - Text { - text: text; - } - - HorizontalBox { - alignment: end; - StandardButton { - kind: close; - clicked => { - close_clicked(); + popup := PopupWindow { + close-policy: no-auto-close; + Rectangle { + height:100%; + width: 100%; + background: Palette.background; + VerticalBox { + alignment: center; + HorizontalBox{ + alignment: center; + Text { + text: popup_message; + } + } + if (popup_has_close):HorizontalBox{ + alignment: center; + StandardButton { + kind: ok; + clicked() => { + popup.close(); + } + } + } } } + x: content-area.x; + y: content-area.y; + height: content-area.height; + width: content-area.width; + } + customserverdialog := CustomServerDialog{ + x: content-area.x; + y: content-area.y; + height: content-area.height; + width: content-area.width; } } + public function show_custom_server_dialog() { + customserverdialog.show(); + } + public function show_message(message: string, has_close: bool) { + popup_message = message; + popup_has_close = has_close; + popup.show(); + } + public function close_message() { + popup.close(); + } + public function clear_netplay_data() { + NetplayData.player_name = ""; + NetplayData.game_name = ""; + NetplayData.password = ""; + NetplayData.session_name = ""; + NetplayData.custom_server_url = ""; + NetplayWaitData.chat_text = ""; + NetplayData.pending_session = false; + NetplayData.pending_refresh = false; + } } diff --git a/src/ui/gui/input_profile.slint b/src/ui/gui/input_profile.slint index b6eced82..08b676c4 100644 --- a/src/ui/gui/input_profile.slint +++ b/src/ui/gui/input_profile.slint @@ -1,22 +1,20 @@ import { HorizontalBox, VerticalBox, Button, LineEdit, Switch, Slider } from "std-widgets.slint"; +import { Page } from "page.slint"; export global InputProfileData { in-out property dinput; in-out property profile_name; in-out property deadzone; + in-out property show_input_profile; } -export component InputProfileDialog inherits Window { +export component InputProfileDialog inherits Page { title: @tr("Create/Modify Input Profile"); callback profile_creation_button_clicked; in-out property dinput <=> InputProfileData.dinput; in-out property profile_name <=> InputProfileData.profile_name; in-out property deadzone <=> InputProfileData.deadzone; VerticalBox { - padding-left: root.safe-area-insets.left; - padding-top: root.safe-area-insets.top; - padding-right: root.safe-area-insets.right; - padding-bottom: root.safe-area-insets.bottom; alignment: start; HorizontalBox { @@ -25,6 +23,7 @@ export component InputProfileDialog inherits Window { LineEdit { vertical-stretch: 0; placeholder-text: @tr("Enter profile name to create or modify"); + text: InputProfileData.profile_name; preferred-width: 400px; edited(text) => { InputProfileData.profile_name = text; @@ -78,10 +77,13 @@ export component InputProfileDialog inherits Window { profile_creation_button_clicked(); } } - } - - Rectangle { - vertical-stretch: 1; + Button { + vertical-stretch: 0; + text: @tr("Cancel"); + clicked => { + InputProfileData.show_input_profile = false; + } + } } } } diff --git a/src/ui/gui/netplay_create.slint b/src/ui/gui/netplay_create.slint index 3498fbd3..7e8887b2 100644 --- a/src/ui/gui/netplay_create.slint +++ b/src/ui/gui/netplay_create.slint @@ -1,166 +1,182 @@ -import { LineEdit, HorizontalBox, VerticalBox, Button, ComboBox, ScrollView } from "std-widgets.slint"; +import { Palette, StandardButton, LineEdit, HorizontalBox, VerticalBox, Button, ComboBox, ScrollView } from "std-widgets.slint"; import { NetplayData } from "netplay_page.slint"; +import { SettingsData } from "settings_page.slint"; +import { Page } from "page.slint"; -export component NetplayCreate inherits Window { +export component NetplayCreate inherits Page { title: @tr("Netplay: Create Session"); - preferred-width: 425px; - preferred-height: 475px; - in-out property server_names <=> NetplayData.server_names; - in-out property server_urls <=> NetplayData.server_urls; - in-out property custom_server_url <=> NetplayData.custom_server_url; - in-out property game_name <=> NetplayData.game_name; - in-out property game_hash <=> NetplayData.game_hash; - in-out property game_cheats <=> NetplayData.game_cheats; - in-out property pending_session <=> NetplayData.pending_session; - in-out property rom_path <=> NetplayData.rom_path; - in-out property peer_addr <=> NetplayData.peer_addr; - in-out property rom_dir <=> NetplayData.rom_dir; callback get_custom_url(); callback select_rom(string); callback create_session(string, string, string, string, string, string, string); + callback close; VerticalBox { - vertical-stretch: 1; - padding-left: root.safe-area-insets.left; - padding-top: root.safe-area-insets.top; - padding-right: root.safe-area-insets.right; - padding-bottom: root.safe-area-insets.bottom; - ScrollView { - mouse-drag-pan-enabled: true; - vertical-stretch: 1; + alignment: start; + HorizontalBox { + alignment: center; VerticalBox { alignment: start; + horizontal-stretch: 0; + HorizontalBox { + VerticalBox { + Text { + text: @tr("Session Name:"); + } + + LineEdit { + placeholder-text: @tr("Enter session name"); + text: NetplayData.session_name; + edited(text) => { + NetplayData.session_name = text; + } + } + } + + VerticalBox { + Text { + text: @tr("Password (Optional):"); + } + + LineEdit { + placeholder-text: @tr("Enter session password"); + text: NetplayData.password; + edited(text) => { + NetplayData.password = text; + } + } + } + } + + VerticalBox { + Text { + text: @tr("Player Name:"); + } + + LineEdit { + placeholder-text: @tr("Enter player name"); + text: NetplayData.player_name; + edited(text) => { + NetplayData.player_name = text; + } + } + } + + VerticalBox { + Text { + text: @tr("Server:"); + } + + HorizontalBox { + server := ComboBox { + model: NetplayData.server_names; + selected => { + if (self.current-index >= 0) { + if (self.current-value == "Custom") { + get_custom_url(); + } + } + } + } + } + } + HorizontalBox { alignment: center; - VerticalBox { - alignment: start; - horizontal-stretch: 0; - HorizontalBox { - VerticalBox { - Text { - text: @tr("Session Name:"); - } - - LineEdit { - placeholder-text: @tr("Enter session name"); - edited(text) => { - NetplayData.session_name = text; - } - } - } - - VerticalBox { - Text { - text: @tr("Password (Optional):"); - } - - LineEdit { - placeholder-text: @tr("Enter session password"); - edited(text) => { - NetplayData.password = text; - } - } - } + if NetplayData.game_name == "": Button { + text: @tr("Select ROM"); + clicked => { + select_rom(SettingsData.rom_dir); } - - VerticalBox { - Text { - text: @tr("Player Name:"); - } - - LineEdit { - placeholder-text: @tr("Enter player name"); - edited(text) => { - NetplayData.player_name = text; - } - } + } + if NetplayData.game_name != "": Button { + text: NetplayData.game_name; + clicked => { + select_rom(SettingsData.rom_dir); } + } + } - VerticalBox { - Text { - text: @tr("Server:"); - } + Rectangle { } - HorizontalBox { - server := ComboBox { - model: NetplayData.server_names; - selected => { - if (self.current-index >= 0) { - if (self.current-value == "Custom") { - get_custom_url(); - } - } - } - } + if NetplayData.game_cheats != "": Text { + text: @tr("This game has cheats enabled. Cheats will be synchronized with other players."); + horizontal-alignment: center; + wrap: word-wrap; + } + Rectangle { } + + HorizontalBox { + alignment: center; + Button { + property server_url; + text: @tr("Create Session"); + enabled: NetplayData.session_name != "" && NetplayData.player_name != "" && NetplayData.game_name != "" && !NetplayData.pending_session; + clicked => { + NetplayData.pending_session = true; + if (server.current-value == "Custom") { + server_url = "ws://" + NetplayData.custom_server_url; + } else { + server_url = NetplayData.server_urls[server.current-index]; } + create_session( + server_url, + NetplayData.session_name, + NetplayData.player_name, + NetplayData.game_name, + NetplayData.game_hash, + NetplayData.game_cheats, + NetplayData.password); } - - HorizontalBox { - alignment: center; - if NetplayData.game_name == "": Button { - text: @tr("Select ROM"); - clicked => { - select_rom(NetplayData.rom_dir); - } - } - if NetplayData.game_name != "": Button { - text: NetplayData.game_name; - clicked => { - select_rom(NetplayData.rom_dir); - } - } + } + Button { + text: @tr("Cancel"); + clicked => { + close(); } + } + } + Rectangle { } + } + } + } +} - Rectangle { } - - if NetplayData.game_cheats != "": Text { - text: @tr("This game has cheats enabled. Cheats will be synchronized with other players."); - horizontal-alignment: center; - wrap: word-wrap; - } - Rectangle { } - - HorizontalBox { - alignment: center; - Button { - property server_url; - text: @tr("Create Session"); - enabled: NetplayData.session_name != "" && NetplayData.player_name != "" && NetplayData.game_name != "" && !NetplayData.pending_session; - clicked => { - NetplayData.pending_session = true; - if (server.current-value == "Custom") { - server_url = "ws://" + NetplayData.custom_server_url; - } else { - server_url = NetplayData.server_urls[server.current-index]; - } - create_session( - server_url, - NetplayData.session_name, - NetplayData.player_name, - NetplayData.game_name, - NetplayData.game_hash, - NetplayData.game_cheats, - NetplayData.password); - } - } - } - Rectangle { } +export component CustomServerDialog inherits PopupWindow { + close-policy: no-auto-close; + Rectangle { + height:100%; + width: 100%; + background: Palette.background; + VerticalBox { + alignment: center; + HorizontalBox{ + alignment: center; + Text { + text: @tr("Enter a custom server URL"); + } + } + HorizontalBox { + alignment: center; + vertical-stretch: 0; + LineEdit { + vertical-stretch: 0; + text: NetplayData.custom_server_url; + placeholder-text: "example.com:45000"; + preferred-width: 300px; + edited(text) => { + NetplayData.custom_server_url = text; + } + } + } + HorizontalBox{ + alignment: center; + StandardButton { + kind: ok; + clicked() => { + root.close(); } } } } } } - -export component DispatcherDialog inherits Dialog { - title: @tr("Creating Server"); - VerticalBox { - padding-left: root.safe-area-insets.left; - padding-top: root.safe-area-insets.top; - padding-right: root.safe-area-insets.right; - padding-bottom: root.safe-area-insets.bottom; - Text { - text: @tr("Creating server, please wait...This may take about 30 seconds."); - } - } -} diff --git a/src/ui/gui/netplay_join.slint b/src/ui/gui/netplay_join.slint index 3651f0d8..bf59b082 100644 --- a/src/ui/gui/netplay_join.slint +++ b/src/ui/gui/netplay_join.slint @@ -1,162 +1,137 @@ import { VerticalBox, LineEdit, StandardTableView, HorizontalBox, ComboBox, Button, ScrollView } from "std-widgets.slint"; import { NetplayData } from "netplay_page.slint"; +import { SettingsData } from "settings_page.slint"; +import { Page } from "page.slint"; -export component NetplayJoin inherits Window { +export component NetplayJoin inherits Page { title: @tr("Netplay: Join Session"); - in-out property server_names <=> NetplayData.server_names; - in-out property server_urls <=> NetplayData.server_urls; - in-out property custom_server_url <=> NetplayData.custom_server_url; - in-out property sessions <=> NetplayData.sessions; - in-out property current_session <=> NetplayData.current_session; - in-out property room_urls <=> NetplayData.room_urls; - in-out property room_ports <=> NetplayData.room_ports; - in-out property game_name <=> NetplayData.game_name; - in-out property game_hash <=> NetplayData.game_hash; - in-out property game_cheats <=> NetplayData.game_cheats; - in-out property peer_addr <=> NetplayData.peer_addr; - in-out property pending_session <=> NetplayData.pending_session; - in-out property pending_refresh <=> NetplayData.pending_refresh; - in-out property rom_path <=> NetplayData.rom_path; - in-out property rom_dir <=> NetplayData.rom_dir; - callback refresh_session(); + callback refresh_sessions(); callback select_rom(string); callback join_session(string, string, string, string, int); - preferred-width: 700px; - preferred-height: 475px; + callback close; VerticalBox { - vertical-stretch: 1; - padding-left: root.safe-area-insets.left; - padding-top: root.safe-area-insets.top; - padding-right: root.safe-area-insets.right; - padding-bottom: root.safe-area-insets.bottom; - ScrollView { - mouse-drag-pan-enabled: true; - vertical-stretch: 1; + alignment: start; + HorizontalBox { VerticalBox { - alignment: start; - HorizontalBox { - VerticalBox { - Text { - text: @tr("Player Name (required):"); - } + Text { + text: @tr("Player Name (required):"); + } - LineEdit { - placeholder-text: @tr("Enter player name"); - edited(text) => { - NetplayData.player_name = text; - } - } - } - - VerticalBox { - Text { - text: @tr("Custom Server URL (optional):"); - } - - LineEdit { - placeholder-text: "example.com:45000"; - text: NetplayData.custom_server_url; - edited(text) => { - NetplayData.custom_server_url = text; - } - } + LineEdit { + placeholder-text: @tr("Enter player name"); + text: NetplayData.player_name; + edited(text) => { + NetplayData.player_name = text; } } - if NetplayData.pending_refresh: Text { - text: @tr("Refreshing session list, please wait..."); - horizontal-alignment: center; - vertical-alignment: center; + LineEdit { + min-width: 200px; + placeholder-text: @tr("Password (if required)"); + text: NetplayData.password; + edited(text) => { + NetplayData.password = text; + } } - if !NetplayData.pending_refresh && NetplayData.sessions.length > 0: Text { - text: @tr("Click on a session below to select it"); - horizontal-alignment: center; - vertical-alignment: center; + } + + VerticalBox { + Text { + text: @tr("Custom Server URL (optional):"); } - if !NetplayData.pending_refresh && NetplayData.sessions.length == 0: Text { - text: @tr("No sessions available. Please refresh to check again."); - horizontal-alignment: center; - vertical-alignment: center; - } - StandardTableView { - columns: [ - { title: @tr("Server") }, - { title: @tr("Session Name") }, - { title: @tr("Game Name") }, - { title: @tr("Password") }, - { title: @tr("Cheats") } - ]; - rows: NetplayData.sessions; - current-row: NetplayData.current_session; - current-row-changed(current-row) => { - NetplayData.current_session = current-row; + + LineEdit { + placeholder-text: "example.com:45000"; + text: NetplayData.custom_server_url; + edited(text) => { + NetplayData.custom_server_url = text; } } - HorizontalBox { - Rectangle { } - - Button { - enabled: !NetplayData.pending_refresh; - text: @tr("Refresh Session List"); - clicked => { - NetplayData.pending_refresh = true; - NetplayData.current_session = -1; - NetplayData.sessions = []; - NetplayData.room_urls = []; - NetplayData.room_ports = []; - refresh_session(); - } + if NetplayData.game_name == "": Button { + text: @tr("Select ROM"); + clicked => { + select_rom(SettingsData.rom_dir); } } - - HorizontalBox { - VerticalBox { - LineEdit { - horizontal-stretch: 0; - min-width: 200px; - placeholder-text: @tr("Password (if required)"); - edited(text) => { - NetplayData.password = text; - } - } + if NetplayData.game_name != "": Button { + text: NetplayData.game_name; + clicked => { + select_rom(SettingsData.rom_dir); } + } + } + } - Rectangle { - horizontal-stretch: 1; - } + if NetplayData.pending_refresh: Text { + text: @tr("Refreshing session list, please wait..."); + horizontal-alignment: center; + vertical-alignment: center; + } + if !NetplayData.pending_refresh && NetplayData.sessions.length > 0: Text { + text: @tr("Click on a session below to select it"); + horizontal-alignment: center; + vertical-alignment: center; + } + if !NetplayData.pending_refresh && NetplayData.sessions.length == 0: Text { + text: @tr("No sessions available. Please refresh to check again."); + horizontal-alignment: center; + vertical-alignment: center; + } + StandardTableView { + columns: [ + { title: @tr("Server") }, + { title: @tr("Session Name") }, + { title: @tr("Game Name") }, + { title: @tr("Password") }, + { title: @tr("Cheats") } + ]; + rows: NetplayData.sessions; + current-row: NetplayData.current_session; + current-row-changed(current-row) => { + NetplayData.current_session = current-row; + } + } - HorizontalBox { - horizontal-stretch: 0; - alignment: end; - if NetplayData.game_name == "": Button { - text: @tr("Select ROM"); - clicked => { - select_rom(NetplayData.rom_dir); - } - } - if NetplayData.game_name != "": Button { - text: NetplayData.game_name; - clicked => { - select_rom(NetplayData.rom_dir); - } - } + HorizontalBox { + Rectangle { } - Button { - text: @tr("Join Session"); - enabled: NetplayData.player_name != "" && NetplayData.current_session >= 0 && NetplayData.game_name != "" && !NetplayData.pending_session; - clicked => { - NetplayData.pending_session = true; - join_session( - NetplayData.player_name, - NetplayData.game_hash, - NetplayData.password, - NetplayData.room_urls[NetplayData.current_session], - NetplayData.room_ports[NetplayData.current_session]); - } - } - } + Button { + enabled: !NetplayData.pending_refresh; + text: @tr("Refresh Session List"); + clicked => { + NetplayData.pending_refresh = true; + NetplayData.current_session = -1; + NetplayData.sessions = []; + NetplayData.room_urls = []; + NetplayData.room_ports = []; + refresh_sessions(); + } + } + } + + HorizontalBox { + alignment: end; + Rectangle { } + + Button { + text: @tr("Join Session"); + enabled: NetplayData.player_name != "" && NetplayData.current_session >= 0 && NetplayData.game_name != "" && !NetplayData.pending_session; + clicked => { + NetplayData.pending_session = true; + join_session( + NetplayData.player_name, + NetplayData.game_hash, + NetplayData.password, + NetplayData.room_urls[NetplayData.current_session], + NetplayData.room_ports[NetplayData.current_session]); + } + } + Button { + text: @tr("Cancel"); + clicked => { + close(); } } } diff --git a/src/ui/gui/netplay_page.slint b/src/ui/gui/netplay_page.slint index 36ebbe8e..5b8f140a 100644 --- a/src/ui/gui/netplay_page.slint +++ b/src/ui/gui/netplay_page.slint @@ -3,6 +3,7 @@ import { StandardButton, VerticalBox, HorizontalBox, Button, LineEdit } from "std-widgets.slint"; import { Page } from "page.slint"; +import { State } from "localgame_page.slint"; export global NetplayData { in-out property <[string]> server_names; @@ -21,8 +22,11 @@ export global NetplayData { in-out property <[string]> room_urls; in-out property <[int]> room_ports; in-out property current_session: -1; - in-out property rom_dir; in-out property custom_server_url; + + in-out property show_wait_room; + in-out property show_create_room; + in-out property show_join_room; } export component Netplay inherits Page { @@ -37,6 +41,7 @@ export component Netplay inherits Page { HorizontalBox { alignment: center; Button { + enabled: !State.game_running; text: @tr("Create Session"); clicked => { create_session_button_clicked(); @@ -47,6 +52,7 @@ export component Netplay inherits Page { HorizontalBox { alignment: center; Button { + enabled: !State.game_running; text: @tr("Join Session"); clicked => { join_session_button_clicked(); @@ -76,34 +82,3 @@ export component Netplay inherits Page { } } } - -export component CustomNetplayServer inherits Window { - in-out property custom_server_url <=> NetplayData.custom_server_url; - title: @tr("Custom Netplay Server"); - preferred-width: 400px; - callback ok_clicked(string); - VerticalBox { - alignment: start; - vertical-stretch: 1; - padding-left: root.safe-area-insets.left; - padding-top: root.safe-area-insets.top; - padding-right: root.safe-area-insets.right; - padding-bottom: root.safe-area-insets.bottom; - server_url := LineEdit { - vertical-stretch: 0; - text: NetplayData.custom_server_url; - placeholder-text: "example.com:45000"; - } - - HorizontalBox { - alignment: end; - StandardButton { - kind: ok; - clicked => { - NetplayData.custom_server_url = server_url.text; - ok_clicked(NetplayData.custom_server_url); - } - } - } - } -} diff --git a/src/ui/gui/netplay_wait.slint b/src/ui/gui/netplay_wait.slint index f7be1497..defc40c8 100644 --- a/src/ui/gui/netplay_wait.slint +++ b/src/ui/gui/netplay_wait.slint @@ -1,5 +1,6 @@ import { VerticalBox, HorizontalBox, TextEdit, LineEdit, Button, GridBox, ScrollView } from "std-widgets.slint"; import { NetplayData } from "netplay_page.slint"; +import { Page } from "page.slint"; export global NetplayWaitData { in-out property motd; @@ -10,127 +11,108 @@ export global NetplayWaitData { in-out property ping; } -export component NetplayWait inherits Window { +export component NetplayWait inherits Page { title: @tr("Netplay: Waiting Room"); - preferred-width: 500px; - preferred-height: 500px; - in-out property players <=> NetplayWaitData.players; - in-out property session_name <=> NetplayData.session_name; - in-out property game_name <=> NetplayData.game_name; - in-out property rom_path <=> NetplayData.rom_path; - in-out property motd <=> NetplayWaitData.motd; - in-out property port <=> NetplayWaitData.port; - in-out property can_start <=> NetplayWaitData.can_start; - in-out property chat_text <=> NetplayWaitData.chat_text; - in-out property ping <=> NetplayWaitData.ping; callback send_chat_message(string); callback begin_game; - + callback close; VerticalBox { - vertical-stretch: 1; - padding-left: root.safe-area-insets.left; - padding-top: root.safe-area-insets.top; - padding-right: root.safe-area-insets.right; - padding-bottom: root.safe-area-insets.bottom; - ScrollView { - mouse-drag-pan-enabled: true; - vertical-stretch: 1; + alignment: start; + HorizontalBox { + alignment: center; VerticalBox { alignment: start; + horizontal-stretch: 0; + Text { + text: @tr("Session Name:") + " " + NetplayData.session_name; + font-size: 15px; + horizontal-alignment: center; + } + + Text { + text: @tr("Game Name:") + " " + NetplayData.game_name; + font-size: 15px; + horizontal-alignment: center; + } + + Text { + text: @tr("Ping:") + " " + NetplayWaitData.ping; + horizontal-alignment: center; + } + HorizontalBox { alignment: center; - VerticalBox { - alignment: start; - horizontal-stretch: 0; - Text { - text: @tr("Session Name:") + " " + NetplayData.session_name; - font-size: 15px; - horizontal-alignment: center; - } + GridBox { + Row { + Text { + text: @tr("Player 1:") + " " + NetplayWaitData.players[0]; + } - Text { - text: @tr("Game Name:") + " " + NetplayData.game_name; - font-size: 15px; - horizontal-alignment: center; - } - - Text { - text: @tr("Ping:") + " " + NetplayWaitData.ping; - horizontal-alignment: center; - } - - HorizontalBox { - alignment: center; - GridBox { - Row { - Text { - text: @tr("Player 1:") + " " + players[0]; - } - - Text { - text: @tr("Player 2:") + " " + players[1]; - } - } - - Row { - Text { - text: @tr("Player 3:") + " " + players[2]; - } - - Text { - text: @tr("Player 4:") + " " + players[3]; - } - } + Text { + text: @tr("Player 2:") + " " + NetplayWaitData.players[1]; } } - TextEdit { - read-only: true; - min-height: 120px; - text: NetplayWaitData.chat_text; - } - - HorizontalBox { - chat_message := LineEdit { - placeholder-text: @tr("Enter chat message"); - key-released(event) => { - if (event.text == Key.Return && chat_message.text != "") { - send_chat_message(chat_message.text); - chat_message.text = ""; - } - accept - } + Row { + Text { + text: @tr("Player 3:") + " " + NetplayWaitData.players[2]; } - Button { - text: @tr("Send Message"); - enabled: chat_message.text != ""; - clicked => { - send_chat_message(chat_message.text); - chat_message.text = ""; - } + Text { + text: @tr("Player 4:") + " " + NetplayWaitData.players[3]; } } + } + } - Text { - text: NetplayWaitData.motd; - horizontal-alignment: center; - wrap: word-wrap; - } + TextEdit { + read-only: true; + min-height: 120px; + text: NetplayWaitData.chat_text; + } - HorizontalBox { - alignment: center; - Button { - text: @tr("Start Game"); - enabled: NetplayWaitData.can_start; - clicked => { - NetplayWaitData.can_start = false; - begin_game(); - } + HorizontalBox { + chat_message := LineEdit { + placeholder-text: @tr("Enter chat message"); + key-released(event) => { + if (event.text == Key.Return && chat_message.text != "") { + send_chat_message(chat_message.text); + chat_message.text = ""; } + accept } - Rectangle { - vertical-stretch: 0; + } + + Button { + text: @tr("Send Message"); + enabled: chat_message.text != ""; + clicked => { + send_chat_message(chat_message.text); + chat_message.text = ""; + } + } + } + + Text { + text: NetplayWaitData.motd; + horizontal-alignment: center; + wrap: word-wrap; + } + + HorizontalBox { + alignment: center; + Button { + text: @tr("Start Game"); + enabled: NetplayWaitData.can_start; + clicked => { + NetplayWaitData.can_start = false; + begin_game(); + } + } + Button { + text: @tr("Cancel"); + clicked => { + close(); } } } diff --git a/src/ui/netplay.rs b/src/ui/netplay.rs index e7ed8c2e..6ff81436 100644 --- a/src/ui/netplay.rs +++ b/src/ui/netplay.rs @@ -1,9 +1,6 @@ use crate::device; use crate::ui; -use crate::ui::gui::{ - AppWindow, CustomNetplayServer, DispatcherDialog, ErrorDialog, NetplayCreate, NetplayDevice, - NetplayJoin, NetplayWait, open_uri, run_rom, save_settings, -}; +use crate::ui::gui::{AppWindow, NetplayDevice, open_uri, run_rom, save_settings}; use futures::{SinkExt, StreamExt}; use sha2::{Digest, Sha256}; use slint::{ComponentHandle, Model}; @@ -44,70 +41,6 @@ pub struct NetplayMessage { rooms: Option>, } -trait NetplayPages { - fn set_server_names(&self, names: slint::ModelRc); - fn set_server_urls(&self, urls: slint::ModelRc); - fn set_game_name(&self, game_name: slint::SharedString); - fn set_game_hash(&self, game_hash: slint::SharedString); - fn set_game_cheats(&self, game_cheats: slint::SharedString); - fn set_rom_path(&self, rom_path: slint::SharedString); - fn set_peer_addr(&self, peer_addr: slint::SharedString); - fn refresh_sessions(&self) { - // Default implementation does nothing - } -} - -impl NetplayPages for NetplayCreate { - fn set_server_names(&self, names: slint::ModelRc) { - self.set_server_names(names); - } - fn set_server_urls(&self, urls: slint::ModelRc) { - self.set_server_urls(urls); - } - fn set_game_name(&self, game_name: slint::SharedString) { - self.set_game_name(game_name); - } - fn set_game_hash(&self, game_hash: slint::SharedString) { - self.set_game_hash(game_hash); - } - fn set_game_cheats(&self, game_cheats: slint::SharedString) { - self.set_game_cheats(game_cheats); - } - fn set_rom_path(&self, rom_path: slint::SharedString) { - self.set_rom_path(rom_path); - } - fn set_peer_addr(&self, peer_addr: slint::SharedString) { - self.set_peer_addr(peer_addr); - } -} - -impl NetplayPages for NetplayJoin { - fn set_server_names(&self, names: slint::ModelRc) { - self.set_server_names(names); - } - fn set_server_urls(&self, urls: slint::ModelRc) { - self.set_server_urls(urls); - } - fn refresh_sessions(&self) { - self.invoke_refresh_session(); - } - fn set_game_name(&self, game_name: slint::SharedString) { - self.set_game_name(game_name); - } - fn set_game_hash(&self, game_hash: slint::SharedString) { - self.set_game_hash(game_hash); - } - fn set_game_cheats(&self, game_cheats: slint::SharedString) { - self.set_game_cheats(game_cheats); - } - fn set_rom_path(&self, rom_path: slint::SharedString) { - self.set_rom_path(rom_path); - } - fn set_peer_addr(&self, peer_addr: slint::SharedString) { - self.set_peer_addr(peer_addr); - } -} - async fn get_local_servers() -> Vec<(String, String)> { if let Ok(broadcast_sock) = tokio::net::UdpSocket::bind((std::net::Ipv4Addr::UNSPECIFIED, 0)).await @@ -145,7 +78,7 @@ async fn get_local_servers() -> Vec<(String, String)> { } } -fn populate_server_names(weak: slint::Weak) { +fn populate_server_names(weak: slint::Weak, refresh_sessions: bool) { let task = ui::WEB_CLIENT .get("https://dispatch.gopher64.com/getRegions") .header("netplay-id", env!("NETPLAY_ID")) @@ -171,18 +104,17 @@ fn populate_server_names(weak: slin server_urls.push(format!("dispatcher:{server}").into()); } server_names.push("Custom".into()); - handle.refresh_sessions(); - handle.set_server_names(slint::ModelRc::from(std::rc::Rc::new(server_names))); - handle.set_server_urls(slint::ModelRc::from(std::rc::Rc::new(server_urls))); + if refresh_sessions { + handle.invoke_netplay_refresh_sessions(); + } + handle.set_netplay_server_names(slint::ModelRc::from(std::rc::Rc::new(server_names))); + handle.set_netplay_server_urls(slint::ModelRc::from(std::rc::Rc::new(server_urls))); }) .unwrap(); }); } -fn select_rom( - weak: slint::Weak, - rom_dir: slint::SharedString, -) { +fn select_rom(weak: slint::Weak, rom_dir: slint::SharedString) { let select_rom = ui::gui::select_rom(rom_dir); tokio::spawn(async move { if let Some(file) = select_rom.await { @@ -202,26 +134,20 @@ fn select_rom( } weak.upgrade_in_event_loop(move |handle| { - handle.set_game_name(game_name.into()); - handle.set_game_hash(hash.into()); - handle.set_game_cheats(parsed_cheats.into()); - handle.set_rom_path(file.to_str().unwrap().into()); + handle.set_netplay_game_name(game_name.into()); + handle.set_netplay_game_hash(hash.into()); + handle.set_netplay_game_cheats(parsed_cheats.into()); + handle.set_netplay_rom_path(file.to_str().unwrap().into()); }) .unwrap(); } else { weak.upgrade_in_event_loop(move |handle| { - let message_dialog = ErrorDialog::new().unwrap(); - let weak_dialog = message_dialog.as_weak(); - message_dialog.on_close_clicked(move || { - weak_dialog.unwrap().hide().unwrap(); - }); - message_dialog.set_text("Could not read ROM".into()); - message_dialog.show().unwrap(); + handle.invoke_show_message("Could not read ROM".into(), true); - handle.set_game_name(String::new().into()); - handle.set_game_hash(String::new().into()); - handle.set_game_cheats(String::new().into()); - handle.set_rom_path(String::new().into()); + handle.set_netplay_game_name(String::new().into()); + handle.set_netplay_game_hash(String::new().into()); + handle.set_netplay_game_cheats(String::new().into()); + handle.set_netplay_rom_path(String::new().into()); }) .unwrap(); } @@ -229,54 +155,25 @@ fn select_rom( }); } -fn show_custom_url_dialog(weak: slint::Weak, server_url: slint::SharedString) { - let url_dialog = CustomNetplayServer::new().unwrap(); - url_dialog.set_custom_server_url(server_url); - let weak_dialog = url_dialog.as_weak(); - url_dialog.on_ok_clicked(move |server_url| { - weak.upgrade_in_event_loop(move |handle| { - handle.set_custom_server_url(server_url.clone()); - }) - .unwrap(); - weak_dialog.unwrap().hide().unwrap(); - }); - url_dialog.show().unwrap(); -} - -pub fn setup_create_window( - create_window: &NetplayCreate, +fn setup_create_window( + app: &AppWindow, game_settings: ui::GameSettings, - rom_dir: slint::SharedString, - weak_app: slint::Weak, + netplay_write_sender: tokio::sync::broadcast::Sender>, + netplay_read_receiver: tokio::sync::broadcast::Receiver>, + netplay_read_sender: tokio::sync::broadcast::Sender>, + netplay_write_receiver: tokio::sync::broadcast::Receiver>, ) { - let (netplay_read_sender, netplay_read_receiver): ( - tokio::sync::broadcast::Sender, - tokio::sync::broadcast::Receiver, - ) = tokio::sync::broadcast::channel(5); - - let (netplay_write_sender, netplay_write_receiver): ( - tokio::sync::broadcast::Sender>, - tokio::sync::broadcast::Receiver>, - ) = tokio::sync::broadcast::channel(5); - - create_window.set_rom_dir(rom_dir); - populate_server_names(create_window.as_weak()); - let weak = create_window.as_weak(); - create_window.on_get_custom_url(move || { - let weak2 = weak.clone(); + populate_server_names(app.as_weak(), false); + let weak = app.as_weak(); + app.on_netplay_get_custom_url(move || { weak.upgrade_in_event_loop(move |handle| { - show_custom_url_dialog(weak2, handle.get_custom_server_url()); + handle.invoke_show_custom_server_dialog(); }) .unwrap(); }); - let weak = create_window.as_weak(); - create_window.on_select_rom(move |rom_dir| { - select_rom(weak.clone(), rom_dir); - }); - - let weak = create_window.as_weak(); - create_window.on_create_session( + let weak = app.as_weak(); + app.on_netplay_create_session( move |server_url, session_name, player_name, @@ -286,10 +183,13 @@ pub fn setup_create_window( password| { let _ = netplay_write_sender.send(None); // close current websocket if any if server_url.starts_with("dispatcher:") { - let message_dialog = DispatcherDialog::new().unwrap(); - let weak_dialog = message_dialog.as_weak(); - message_dialog.show().unwrap(); - + weak.upgrade_in_event_loop(move |handle| { + handle.invoke_show_message( + "Creating server, please wait...This may take about 30 seconds.".into(), + false, + ); + }) + .unwrap(); let task = ui::WEB_CLIENT .get("https://dispatch.gopher64.com/createServer") .query(&[("region", server_url.strip_prefix("dispatcher:").unwrap())]) @@ -301,14 +201,10 @@ pub fn setup_create_window( let netplay_read_receiver = netplay_read_receiver.resubscribe(); let game_settings = game_settings.clone(); let weak = weak.clone(); - let weak_app = weak_app.clone(); + let weak_app = weak.clone(); tokio::spawn(async move { let response = task.await; - weak_dialog - .upgrade_in_event_loop(move |handle| { - handle.hide().unwrap(); - }) - .unwrap(); + if let Ok(response) = response && let Ok(server) = response .json::>() @@ -334,12 +230,11 @@ pub fn setup_create_window( password.to_string(), game_settings, weak_app, - weak.clone(), ); } else { weak.upgrade_in_event_loop(|handle| { - handle.set_pending_session(false); - show_netplay_error("Server could not be created".to_string()); + handle.set_netplay_pending_session(false); + handle.invoke_show_message("Server could not be created".into(), true); }) .unwrap(); } @@ -362,21 +257,20 @@ pub fn setup_create_window( game_cheats.to_string(), password.to_string(), game_settings.clone(), - weak_app.clone(), weak.clone(), ); } }, ); - create_window.show().unwrap(); + app.set_show_netplay_create_room(true); } -fn manage_websocket( +fn manage_websocket( server_url: String, - netplay_read_sender: tokio::sync::broadcast::Sender, + netplay_read_sender: tokio::sync::broadcast::Sender>, mut netplay_write_receiver: tokio::sync::broadcast::Receiver>, - weak: slint::Weak, + weak: slint::Weak, ) { tokio::spawn(async move { if let Ok(Ok((socket, _response))) = tokio::time::timeout( @@ -389,7 +283,7 @@ fn manage_websocket( tokio_tungstenite::MaybeTlsStream::Plain(stream) => { let addr = stream.peer_addr().unwrap().to_string(); weak.upgrade_in_event_loop(move |handle| { - handle.set_peer_addr(addr.into()); + handle.set_netplay_peer_addr(addr.into()); }) .unwrap(); } @@ -432,17 +326,7 @@ fn manage_websocket( }); } -fn show_netplay_error(message: String) { - let message_dialog = ErrorDialog::new().unwrap(); - let weak_dialog = message_dialog.as_weak(); - message_dialog.on_close_clicked(move || { - weak_dialog.unwrap().hide().unwrap(); - }); - message_dialog.set_text(message.into()); - message_dialog.show().unwrap(); -} - -fn update_sessions(weak: slint::Weak) { +fn update_sessions(weak: slint::Weak) { let task = ui::WEB_CLIENT .get("https://dispatch.gopher64.com/getServers") .header("netplay-id", env!("NETPLAY_ID")) @@ -461,11 +345,11 @@ fn update_sessions(weak: slint::Weak) { weak.upgrade_in_event_loop(move |handle| { let mut servers: std::collections::HashMap = std::collections::HashMap::new(); - let server_names = handle.get_server_names(); - let server_urls = handle.get_server_urls(); + let server_names = handle.get_netplay_server_names(); + let server_urls = handle.get_netplay_server_urls(); for (i, server_name) in server_names.iter().enumerate() { if server_name == "Custom" { - let custom_server_url = handle.get_custom_server_url(); + let custom_server_url = handle.get_netplay_custom_server_url(); if !custom_server_url.is_empty() { servers.insert( "Custom".to_string(), @@ -582,18 +466,20 @@ fn update_sessions(weak: slint::Weak) { slint::VecModel::from(session.to_vec()), ))); } - handle.set_sessions(slint::ModelRc::from(std::rc::Rc::new(sessions_vec))); + handle.set_netplay_sessions(slint::ModelRc::from(std::rc::Rc::new( + sessions_vec, + ))); - handle.set_room_urls(slint::ModelRc::from(std::rc::Rc::new( + handle.set_netplay_room_urls(slint::ModelRc::from(std::rc::Rc::new( slint::VecModel::from(room_urls.to_vec()), ))); - handle.set_room_ports(slint::ModelRc::from(std::rc::Rc::new( + handle.set_netplay_room_ports(slint::ModelRc::from(std::rc::Rc::new( slint::VecModel::from(room_ports.to_vec()), ))); - handle.set_current_session(-1); - handle.set_pending_refresh(false); + handle.set_netplay_current_session(-1); + handle.set_netplay_pending_refresh(false); }) .unwrap(); }); @@ -605,7 +491,7 @@ fn update_sessions(weak: slint::Weak) { #[allow(clippy::too_many_arguments)] fn create_session( netplay_write_sender: tokio::sync::broadcast::Sender>, - mut netplay_read_receiver: tokio::sync::broadcast::Receiver, + mut netplay_read_receiver: tokio::sync::broadcast::Receiver>, session_name: String, player_name: String, game_name: String, @@ -614,7 +500,6 @@ fn create_session( password: String, game_settings: ui::GameSettings, weak_app: slint::Weak, - weak: slint::Weak, ) { tokio::spawn(async move { let now_utc = std::time::SystemTime::now() @@ -673,84 +558,85 @@ fn create_session( ) .await { - Ok(Ok(message)) => { + Ok(Ok(Some(message))) => { if message.message_type == "reply_create_room" && message.accept.unwrap() == 0 { - weak.upgrade_in_event_loop(move |handle| { - let session = message.room.as_ref().unwrap(); - let features_default = "false".to_string(); - let cheats_default = "{}".to_string(); - let overclock = session - .features - .as_ref() - .unwrap() - .get("overclock") - .unwrap_or(&features_default); - let disable_expansion_pak = session - .features - .as_ref() - .unwrap() - .get("disable_expansion_pak") - .unwrap_or(&features_default); - let cheats = session - .features - .as_ref() - .unwrap() - .get("cheats") - .unwrap_or(&cheats_default); - setup_wait_window( - netplay_write_sender, - netplay_read_receiver, - session.room_name.as_ref().unwrap().into(), - session.game_name.as_ref().unwrap().into(), - handle.get_rom_path(), - message.player_name.as_ref().unwrap().into(), - session.port.unwrap(), - ui::GameSettings { - overclock: overclock.parse().unwrap(), - disable_expansion_pak: disable_expansion_pak.parse().unwrap(), - cheats: serde_json::from_str(cheats).unwrap(), - load_savestate_slot: None, - }, - handle.get_peer_addr(), - weak_app, - ); - handle.hide().unwrap(); - }) - .unwrap(); + weak_app + .upgrade_in_event_loop(move |handle| { + let session = message.room.as_ref().unwrap(); + let features_default = "false".to_string(); + let cheats_default = "{}".to_string(); + let overclock = session + .features + .as_ref() + .unwrap() + .get("overclock") + .unwrap_or(&features_default); + let disable_expansion_pak = session + .features + .as_ref() + .unwrap() + .get("disable_expansion_pak") + .unwrap_or(&features_default); + let cheats = session + .features + .as_ref() + .unwrap() + .get("cheats") + .unwrap_or(&cheats_default); + setup_wait_window( + netplay_write_sender, + netplay_read_receiver, + session.room_name.as_ref().unwrap().into(), + session.game_name.as_ref().unwrap().into(), + handle.get_netplay_rom_path(), + message.player_name.as_ref().unwrap().into(), + session.port.unwrap(), + ui::GameSettings { + overclock: overclock.parse().unwrap(), + disable_expansion_pak: disable_expansion_pak.parse().unwrap(), + cheats: serde_json::from_str(cheats).unwrap(), + load_savestate_slot: None, + }, + handle.get_netplay_peer_addr(), + &handle, + ); + }) + .unwrap(); } else { - weak.upgrade_in_event_loop(move |handle| { - handle.set_pending_session(false); - if let Some(message) = message.message { - show_netplay_error(message); - } - }) - .unwrap(); + weak_app + .upgrade_in_event_loop(move |handle| { + handle.set_netplay_pending_session(false); + if let Some(message) = message.message { + handle.invoke_show_message(message.into(), true); + } + }) + .unwrap(); } } + Ok(Ok(None)) => {} Ok(Err(err)) => { panic!("netplay_read_receiver error: {err}"); } Err(_) => { - weak.upgrade_in_event_loop(move |handle| { - handle.set_pending_session(false); - show_netplay_error("Server did not respond".to_string()); - }) - .unwrap(); + weak_app + .upgrade_in_event_loop(move |handle| { + handle.set_netplay_pending_session(false); + handle.invoke_show_message("Server did not respond".into(), true); + }) + .unwrap(); } } }); } -#[allow(clippy::too_many_arguments)] fn join_session( netplay_write_sender: tokio::sync::broadcast::Sender>, - mut netplay_read_receiver: tokio::sync::broadcast::Receiver, + mut netplay_read_receiver: tokio::sync::broadcast::Receiver>, player_name: String, game_hash: String, password: String, room_port: i32, weak_app: slint::Weak, - weak: slint::Weak, ) { tokio::spawn(async move { let now_utc = std::time::SystemTime::now() @@ -798,69 +684,72 @@ fn join_session( ) .await { - Ok(Ok(message)) => { + Ok(Ok(Some(message))) => { if message.message_type == "reply_join_room" && message.accept.unwrap() == 0 { - weak.upgrade_in_event_loop(move |handle| { - let session = message.room.as_ref().unwrap(); - let features_default = "false".to_string(); - let cheats_default = "{}".to_string(); - let overclock = session - .features - .as_ref() - .unwrap() - .get("overclock") - .unwrap_or(&features_default); - let disable_expansion_pak = session - .features - .as_ref() - .unwrap() - .get("disable_expansion_pak") - .unwrap_or(&features_default); - let cheats = session - .features - .as_ref() - .unwrap() - .get("cheats") - .unwrap_or(&cheats_default); - setup_wait_window( - netplay_write_sender, - netplay_read_receiver, - session.room_name.as_ref().unwrap().into(), - session.game_name.as_ref().unwrap().into(), - handle.get_rom_path(), - message.player_name.as_ref().unwrap().into(), - session.port.unwrap(), - ui::GameSettings { - overclock: overclock.parse().unwrap(), - disable_expansion_pak: disable_expansion_pak.parse().unwrap(), - cheats: serde_json::from_str(cheats).unwrap(), - load_savestate_slot: None, - }, - handle.get_peer_addr(), - weak_app, - ); - handle.hide().unwrap(); - }) - .unwrap(); + weak_app + .upgrade_in_event_loop(move |handle| { + let session = message.room.as_ref().unwrap(); + let features_default = "false".to_string(); + let cheats_default = "{}".to_string(); + let overclock = session + .features + .as_ref() + .unwrap() + .get("overclock") + .unwrap_or(&features_default); + let disable_expansion_pak = session + .features + .as_ref() + .unwrap() + .get("disable_expansion_pak") + .unwrap_or(&features_default); + let cheats = session + .features + .as_ref() + .unwrap() + .get("cheats") + .unwrap_or(&cheats_default); + setup_wait_window( + netplay_write_sender, + netplay_read_receiver, + session.room_name.as_ref().unwrap().into(), + session.game_name.as_ref().unwrap().into(), + handle.get_netplay_rom_path(), + message.player_name.as_ref().unwrap().into(), + session.port.unwrap(), + ui::GameSettings { + overclock: overclock.parse().unwrap(), + disable_expansion_pak: disable_expansion_pak.parse().unwrap(), + cheats: serde_json::from_str(cheats).unwrap(), + load_savestate_slot: None, + }, + handle.get_netplay_peer_addr(), + &handle, + ); + }) + .unwrap(); } else { - weak.upgrade_in_event_loop(move |handle| { - handle.set_pending_session(false); - if let Some(message) = message.message { - show_netplay_error(message); - } - }) - .unwrap(); + weak_app + .upgrade_in_event_loop(move |handle| { + handle.set_netplay_pending_session(false); + if let Some(message) = message.message { + handle.invoke_show_message(message.into(), true); + } + }) + .unwrap(); } } + Ok(Ok(None)) => {} Ok(Err(err)) => { panic!("netplay_read_receiver error: {err}"); } Err(_) => { - weak.upgrade_in_event_loop(move |handle| { - handle.set_pending_session(false); - show_netplay_error("Server did not respond".to_string()); - }) - .unwrap(); + weak_app + .upgrade_in_event_loop(move |handle| { + handle.set_netplay_pending_session(false); + handle.invoke_show_message("Server did not respond".into(), true); + }) + .unwrap(); } } }); @@ -869,7 +758,7 @@ fn join_session( #[allow(clippy::too_many_arguments)] fn setup_wait_window( netplay_write_sender: tokio::sync::broadcast::Sender>, - mut netplay_read_receiver: tokio::sync::broadcast::Receiver, + mut netplay_read_receiver: tokio::sync::broadcast::Receiver>, session_name: slint::SharedString, game_name: slint::SharedString, rom_path: slint::SharedString, @@ -877,21 +766,20 @@ fn setup_wait_window( port: i32, game_settings: ui::GameSettings, peer_addr: slint::SharedString, - weak_app: slint::Weak, + app: &AppWindow, ) { let local_player = player_name.clone(); let mut socket_addr: std::net::SocketAddr = peer_addr.to_string().parse().unwrap(); socket_addr.set_port(port as u16); - let wait = NetplayWait::new().unwrap(); - wait.set_session_name(session_name); - wait.set_game_name(game_name); - wait.set_rom_path(rom_path); - wait.set_port(port); - wait.set_ping("Unknown".into()); + app.set_netplay_session_name(session_name); + app.set_netplay_game_name(game_name); + app.set_netplay_rom_path(rom_path); + app.set_netplay_port(port); + app.set_netplay_ping("Unknown".into()); let sender = netplay_write_sender.clone(); - wait.on_send_chat_message(move |message| { + app.on_netplay_send_chat_message(move |message| { let send_chat = NetplayMessage { message_type: "request_chat_message".to_string(), player_name: Some(player_name.to_string()), @@ -919,7 +807,7 @@ fn setup_wait_window( }); let sender = netplay_write_sender.clone(); - wait.on_begin_game(move || { + app.on_netplay_begin_game(move || { let begin_game = NetplayMessage { message_type: "request_begin_game".to_string(), player_name: None, @@ -946,12 +834,6 @@ fn setup_wait_window( sender.send(Some(begin_game)).unwrap(); }); - let sender = netplay_write_sender.clone(); - wait.window().on_close_requested(move || { - let _ = sender.send(None); // close current websocket if any - slint::CloseRequestResponse::HideWindow - }); - let motd_message = NetplayMessage { message_type: "request_motd".to_string(), player_name: None, @@ -988,17 +870,18 @@ fn setup_wait_window( .send(Some(ping_message.clone())) .unwrap(); - let weak = wait.as_weak(); + let weak_app = app.as_weak(); tokio::spawn(async move { loop { match netplay_read_receiver.recv().await { - Ok(response) => match response.message_type.as_str() { + Ok(Some(response)) => match response.message_type.as_str() { "reply_ping" => { if let Some(message) = response.message { - weak.upgrade_in_event_loop(move |handle| { - handle.set_ping((message + " ms").into()); - }) - .unwrap(); + weak_app + .upgrade_in_event_loop(move |handle| { + handle.set_netplay_ping((message + " ms").into()); + }) + .unwrap(); } let ping_message = ping_message.clone(); let ping_writer = netplay_write_sender.clone(); @@ -1033,101 +916,111 @@ fn setup_wait_window( }; netplay_write_sender.send(Some(request_players)).unwrap(); - weak.upgrade_in_event_loop(move |handle| { - #[allow(clippy::regex_creation_in_loops)] - let re = regex::Regex::new(r"<[^>]*>").unwrap(); - let motd = re - .replace_all(response.message.unwrap().as_str(), "") - .into_owned(); - handle.set_motd(motd.into()); - }) - .unwrap(); + weak_app + .upgrade_in_event_loop(move |handle| { + #[allow(clippy::regex_creation_in_loops)] + let re = regex::Regex::new(r"<[^>]*>").unwrap(); + let motd = re + .replace_all(response.message.unwrap().as_str(), "") + .into_owned(); + handle.set_netplay_motd(motd.into()); + }) + .unwrap(); } "reply_players" => { let local_player = local_player.clone(); - weak.upgrade_in_event_loop(move |handle| { - if let Some(player_names) = response.player_names { - if local_player == player_names[0] { - handle.set_can_start(true); - } else { - handle.set_can_start(false); - } + weak_app + .upgrade_in_event_loop(move |handle| { + if let Some(player_names) = response.player_names { + if local_player == player_names[0] { + handle.set_netplay_can_start(true); + } else { + handle.set_netplay_can_start(false); + } - handle.set_players(slint::ModelRc::from(std::rc::Rc::new( - slint::VecModel::from( - player_names - .iter() - .map(|x| x.into()) - .collect::>(), - ), - ))); - } - }) - .unwrap(); + handle.set_netplay_players(slint::ModelRc::from( + std::rc::Rc::new(slint::VecModel::from( + player_names + .iter() + .map(|x| x.into()) + .collect::>(), + )), + )); + } + }) + .unwrap(); } "reply_chat_message" => { - weak.upgrade_in_event_loop(move |handle| { - let mut chat_text = handle.get_chat_text(); - chat_text.push_str(&format!("{}\n", response.message.unwrap())); - handle.set_chat_text(chat_text); - }) - .unwrap(); + weak_app + .upgrade_in_event_loop(move |handle| { + let mut chat_text = handle.get_netplay_chat_text(); + chat_text.push_str(&format!("{}\n", response.message.unwrap())); + handle.set_netplay_chat_text(chat_text); + }) + .unwrap(); } "reply_begin_game" => { if response.accept.unwrap() == 0 { - weak.upgrade_in_event_loop(move |handle| { - let _ = netplay_write_sender.send(None); + let weak_app2 = weak_app.clone(); + weak_app + .upgrade_in_event_loop(move |handle| { + let _ = netplay_write_sender.send(None); - let mut player_number = 4; - let players = handle.get_players(); - for (i, player) in players.iter().enumerate() { - if player == local_player { - player_number = i; + let mut player_number = 4; + let players = handle.get_netplay_players(); + for (i, player) in players.iter().enumerate() { + if player == local_player { + player_number = i; + } + } + if player_number > 3 { + panic!("Could not determine player number"); } - } - if player_number > 3 { - panic!("Could not determine player number"); - } - run_rom( - handle.get_rom_path().as_str().into(), - ui::GameSettings { - overclock: game_settings.overclock, - disable_expansion_pak: game_settings.disable_expansion_pak, - cheats: game_settings.cheats, - load_savestate_slot: None, - }, - Some(NetplayDevice { - peer_addr: socket_addr, - player_number: player_number as u8, - }), - weak_app, - ); - handle.hide().unwrap(); - }) - .unwrap(); + run_rom( + handle.get_netplay_rom_path().as_str().into(), + ui::GameSettings { + overclock: game_settings.overclock, + disable_expansion_pak: game_settings + .disable_expansion_pak, + cheats: game_settings.cheats, + load_savestate_slot: None, + }, + Some(NetplayDevice { + peer_addr: socket_addr, + player_number: player_number as u8, + }), + weak_app2, + ); + handle.invoke_netplay_close(); + }) + .unwrap(); return; } else { let local_player = local_player.clone(); - weak.upgrade_in_event_loop(move |handle| { - if let Some(p0) = handle.get_players().row_data(0) { - if p0 == local_player { - handle.set_can_start(true); - } else { - handle.set_can_start(false); + weak_app + .upgrade_in_event_loop(move |handle| { + if let Some(p0) = handle.get_netplay_players().row_data(0) { + if p0 == local_player { + handle.set_netplay_can_start(true); + } else { + handle.set_netplay_can_start(false); + } } - } - if let Some(message) = response.message { - show_netplay_error(message); - } - }) - .unwrap(); + if let Some(message) = response.message { + handle.invoke_show_message(message.into(), true); + } + }) + .unwrap(); } } _ => { eprintln!("Unknown netplay message type: {}", response.message_type); } }, + Ok(None) => { + break; + } Err(tokio::sync::broadcast::error::RecvError::Lagged(_)) => { panic!("netplay_read_receiver lagged"); } @@ -1137,45 +1030,28 @@ fn setup_wait_window( } } }); - - wait.show().unwrap(); + app.set_show_netplay_wait_room(true); + app.set_show_netplay_create_room(false); + app.set_show_netplay_join_room(false); + app.invoke_close_message(); } -pub fn setup_join_window( - join_window: &NetplayJoin, - rom_dir: slint::SharedString, - weak_app: slint::Weak, +fn setup_join_window( + app: &AppWindow, + netplay_write_sender: tokio::sync::broadcast::Sender>, + netplay_read_receiver: tokio::sync::broadcast::Receiver>, + netplay_read_sender: tokio::sync::broadcast::Sender>, + netplay_write_receiver: tokio::sync::broadcast::Receiver>, ) { - let (netplay_read_sender, netplay_read_receiver): ( - tokio::sync::broadcast::Sender, - tokio::sync::broadcast::Receiver, - ) = tokio::sync::broadcast::channel(5); + app.set_netplay_pending_refresh(true); + populate_server_names(app.as_weak(), true); - let (netplay_write_sender, netplay_write_receiver): ( - tokio::sync::broadcast::Sender>, - tokio::sync::broadcast::Receiver>, - ) = tokio::sync::broadcast::channel(5); - - join_window.set_pending_refresh(true); - join_window.set_rom_dir(rom_dir); - populate_server_names(join_window.as_weak()); - - let weak = join_window.as_weak(); - join_window.on_select_rom(move |rom_dir| { - select_rom(weak.clone(), rom_dir); - }); - - let sender = netplay_write_sender.clone(); - join_window.window().on_close_requested(move || { - let _ = sender.send(None); // close current websocket if any - slint::CloseRequestResponse::HideWindow - }); - let weak = join_window.as_weak(); - join_window.on_refresh_session(move || { + let weak = app.as_weak(); + app.on_netplay_refresh_sessions(move || { update_sessions(weak.clone()); }); - let weak = join_window.as_weak(); - join_window.on_join_session( + let weak = app.as_weak(); + app.on_netplay_join_session( move |player_name, game_hash, password, room_url, room_port| { let _ = netplay_write_sender.send(None); // close current websocket if any manage_websocket( @@ -1192,52 +1068,99 @@ pub fn setup_join_window( game_hash.to_string(), password.to_string(), room_port, - weak_app.clone(), weak.clone(), ); }, ); - join_window.show().unwrap(); + app.set_show_netplay_join_room(true); } pub fn netplay_window(app: &AppWindow) { - let weak_create = app.as_weak(); + let (netplay_read_sender, netplay_read_receiver): ( + tokio::sync::broadcast::Sender>, + tokio::sync::broadcast::Receiver>, + ) = tokio::sync::broadcast::channel(5); + + let (netplay_write_sender, netplay_write_receiver): ( + tokio::sync::broadcast::Sender>, + tokio::sync::broadcast::Receiver>, + ) = tokio::sync::broadcast::channel(5); + let weak_app = app.as_weak(); + let write_sender_create = netplay_write_sender.clone(); + let read_receiver_create = netplay_read_receiver.resubscribe(); + let read_sender_create = netplay_read_sender.clone(); + let write_receiver_create = netplay_write_receiver.resubscribe(); app.on_create_session_button_clicked(move || { - let weak_app = weak_app.clone(); - weak_create + let write_sender = write_sender_create.clone(); + let read_receiver = read_receiver_create.resubscribe(); + let read_sender = read_sender_create.clone(); + let write_receiver = write_receiver_create.resubscribe(); + weak_app .upgrade_in_event_loop(move |handle| { - let create_window = NetplayCreate::new().unwrap(); save_settings(&handle); setup_create_window( - &create_window, + &handle, ui::GameSettings { overclock: handle.get_overclock_n64_cpu(), disable_expansion_pak: handle.get_disable_expansion_pak(), cheats: std::collections::HashMap::new(), // not used here load_savestate_slot: None, }, - handle.get_rom_dir(), - weak_app, + write_sender, + read_receiver, + read_sender, + write_receiver, ); }) .unwrap(); }); - let weak_join = app.as_weak(); let weak_app = app.as_weak(); + let write_sender_join = netplay_write_sender.clone(); + let read_sender_join = netplay_read_sender.clone(); app.on_join_session_button_clicked(move || { - let weak_app = weak_app.clone(); - weak_join + let write_sender = write_sender_join.clone(); + let read_receiver = netplay_read_receiver.resubscribe(); + let read_sender = read_sender_join.clone(); + let write_receiver = netplay_write_receiver.resubscribe(); + weak_app .upgrade_in_event_loop(move |handle| { - let join_window = NetplayJoin::new().unwrap(); save_settings(&handle); - setup_join_window(&join_window, handle.get_rom_dir(), weak_app); + setup_join_window( + &handle, + write_sender, + read_receiver, + read_sender, + write_receiver, + ); }) .unwrap(); }); + let weak_app = app.as_weak(); + app.on_netplay_select_rom(move |rom_dir| { + select_rom(weak_app.clone(), rom_dir); + }); + + let weak_app = app.as_weak(); + let write_sender = netplay_write_sender.clone(); + let read_sender = netplay_read_sender.clone(); + app.on_netplay_close(move || { + weak_app + .upgrade_in_event_loop(move |handle| { + handle.set_show_netplay_wait_room(false); + handle.set_show_netplay_create_room(false); + handle.set_show_netplay_join_room(false); + handle.invoke_clear_netplay_data(); + handle.invoke_close_message(); + }) + .unwrap(); + let _ = write_sender.send(None); // close current websocket if any + let _ = read_sender.send(None); // close current receiver if any + }); + app.on_netplay_discord_button_clicked(move || { open_uri("https://discord.gg/JyW6ZgBUyS"); });