From b48320c7bc0b4e225021a846dab5b699509123c0 Mon Sep 17 00:00:00 2001 From: amoshydra <8733840+amoshydra@users.noreply.github.com> Date: Sun, 11 Jan 2026 19:12:44 +0800 Subject: [PATCH] feat: use contextual label for full frame 3d base on stereo mode show Full-SBS when stereo is LeftRight or RightLeft show Full-TAB when stereo is TopBottom show Full-BAT when stereo is BottomTop --- wayvr/src/assets/lang/de.json | 5 ++++- wayvr/src/assets/lang/en.json | 5 ++++- wayvr/src/assets/lang/es.json | 5 ++++- wayvr/src/assets/lang/it.json | 5 ++++- wayvr/src/assets/lang/ja.json | 5 ++++- wayvr/src/assets/lang/pl.json | 5 ++++- wayvr/src/overlays/edit/mod.rs | 10 +++++++++- wayvr/src/overlays/edit/stereo.rs | 21 ++++++++++++++++++++- 8 files changed, 53 insertions(+), 8 deletions(-) diff --git a/wayvr/src/assets/lang/de.json b/wayvr/src/assets/lang/de.json index 2422247..3567e6b 100644 --- a/wayvr/src/assets/lang/de.json +++ b/wayvr/src/assets/lang/de.json @@ -55,7 +55,10 @@ "SPLIT_RIGHT_LEFT": "RECHTS→LINKS", "SPLIT_TOP_BOTTOM": "OBEN→UNTEN", "SPLIT_BOTTOM_TOP": "UNTEN→OBEN", - "FULL_FRAME": "Voll 3D" + "FULL_FRAME": "Voll 3D", + "FULL_FRAME_SBS": "Full-SBS", + "FULL_FRAME_TAB": "Full-TAB", + "FULL_FRAME_BAT": "Full-BAT" }, "STEREO_3D_MODE_": {}, "ALIGN_TO_HMD": "An HMD ausrichten", diff --git a/wayvr/src/assets/lang/en.json b/wayvr/src/assets/lang/en.json index d754c0f..22d19b2 100644 --- a/wayvr/src/assets/lang/en.json +++ b/wayvr/src/assets/lang/en.json @@ -45,7 +45,10 @@ "SPLIT_RIGHT_LEFT": "RIGHT→LEFT", "SPLIT_TOP_BOTTOM": "TOP→BOTTOM", "TITLE": "3D Stereo Mode", - "FULL_FRAME": "Full 3D" + "FULL_FRAME": "Full 3D", + "FULL_FRAME_SBS": "Full-SBS", + "FULL_FRAME_TAB": "Full-TAB", + "FULL_FRAME_BAT": "Full-BAT" }, "MOUSE": { "TITLE": "Mouse fixes", diff --git a/wayvr/src/assets/lang/es.json b/wayvr/src/assets/lang/es.json index 614fa3e..0fbf10b 100644 --- a/wayvr/src/assets/lang/es.json +++ b/wayvr/src/assets/lang/es.json @@ -55,7 +55,10 @@ "SPLIT_RIGHT_LEFT": "DERECHA→IZQUIERDA", "SPLIT_TOP_BOTTOM": "ARRIBA→ABAJO", "SPLIT_BOTTOM_TOP": "ABAJO→ARRIBA", - "FULL_FRAME": "3D completo" + "FULL_FRAME": "3D completo", + "FULL_FRAME_SBS": "Full-SBS", + "FULL_FRAME_TAB": "Full-TAB", + "FULL_FRAME_BAT": "Full-BAT" }, "STEREO_3D_MODE_": {}, "ALIGN_TO_HMD": "Alinear al HMD", diff --git a/wayvr/src/assets/lang/it.json b/wayvr/src/assets/lang/it.json index 7400de6..297d254 100644 --- a/wayvr/src/assets/lang/it.json +++ b/wayvr/src/assets/lang/it.json @@ -45,7 +45,10 @@ "SPLIT_RIGHT_LEFT": "DESTRA→SINISTRA", "SPLIT_TOP_BOTTOM": "TOP→BOTTOM", "TITLE": "Modalità Stereo 3D", - "FULL_FRAME": "3D Completo" + "FULL_FRAME": "3D Completo", + "FULL_FRAME_SBS": "Full-SBS", + "FULL_FRAME_TAB": "Full-TAB", + "FULL_FRAME_BAT": "Full-BAT" }, "MOUSE": { "TITLE": "Correzioni del mouse", diff --git a/wayvr/src/assets/lang/ja.json b/wayvr/src/assets/lang/ja.json index f6180ab..88bf424 100644 --- a/wayvr/src/assets/lang/ja.json +++ b/wayvr/src/assets/lang/ja.json @@ -54,7 +54,10 @@ "SPLIT_RIGHT_LEFT": "右→左", "SPLIT_TOP_BOTTOM": "上→下", "SPLIT_BOTTOM_TOP": "下→上", - "FULL_FRAME": "フル3D" + "FULL_FRAME": "フル3D", + "FULL_FRAME_SBS": "フルSBS", + "FULL_FRAME_TAB": "フルTAB", + "FULL_FRAME_BAT": "フルBAT" }, "ALIGN_TO_HMD": "常にHMDの方を向く", "MOUSE": { diff --git a/wayvr/src/assets/lang/pl.json b/wayvr/src/assets/lang/pl.json index f0bef91..254c584 100644 --- a/wayvr/src/assets/lang/pl.json +++ b/wayvr/src/assets/lang/pl.json @@ -54,7 +54,10 @@ "SPLIT_RIGHT_LEFT": "PRAWO→LEWO", "SPLIT_TOP_BOTTOM": "GÓRA→DÓŁ", "TITLE": "Tryb stereoskopowy 3D", - "FULL_FRAME": "Pełny 3D" + "FULL_FRAME": "Pełny 3D", + "FULL_FRAME_SBS": "Full-SBS", + "FULL_FRAME_TAB": "Full-TAB", + "FULL_FRAME_BAT": "Full-BAT" }, "ALIGN_TO_HMD": "Dopasuj do HMD", "MOUSE": { diff --git a/wayvr/src/overlays/edit/mod.rs b/wayvr/src/overlays/edit/mod.rs index 28c24b2..32603f7 100644 --- a/wayvr/src/overlays/edit/mod.rs +++ b/wayvr/src/overlays/edit/mod.rs @@ -11,6 +11,7 @@ use slotmap::Key; use wgui::{ components::{button::ComponentButton, checkbox::ComponentCheckbox, slider::ComponentSlider}, event::{CallbackDataCommon, EventAlterables, EventCallback}, + i18n::Translation, parser::Fetchable, widget::EventResult, }; @@ -28,7 +29,7 @@ use crate::{ mouse::new_mouse_tab_handler, pos::{PosTabState, new_pos_tab_handler}, sprite_tab::SpriteTabHandler, - stereo::new_stereo_tab_handler, + stereo::{get_stereo_full_frame_translation, new_stereo_tab_handler}, tab::ButtonPaneTabSwitcher, }, state::AppState, @@ -502,6 +503,13 @@ fn reset_panel( .tabs .set_tab_visible(&mut common, "stereo", true); panel.state.stereo.reset(&mut common, &stereo); + + // Set the checkbox label based on stereo mode + let translation = get_stereo_full_frame_translation(&stereo); + let c = panel + .parser_state + .fetch_component_as::("stereo_full_frame_box")?; + c.set_text(&mut common, Translation::from_translation_key(translation)); } else { panel .state diff --git a/wayvr/src/overlays/edit/stereo.rs b/wayvr/src/overlays/edit/stereo.rs index c0346e3..a75c535 100644 --- a/wayvr/src/overlays/edit/stereo.rs +++ b/wayvr/src/overlays/edit/stereo.rs @@ -2,6 +2,7 @@ use crate::overlays::edit::{ EditModeWrapPanel, sprite_tab::{SpriteTabHandler, SpriteTabKey}, }; +use wgui::{components::checkbox::ComponentCheckbox, i18n::Translation, parser::Fetchable}; use wlx_common::overlays::{BackendAttribValue, StereoMode}; static STEREO_NAMES: [&str; 5] = ["none", "leftright", "rightleft", "topbottom", "bottomtop"]; @@ -9,12 +10,21 @@ static STEREO_NAMES: [&str; 5] = ["none", "leftright", "rightleft", "topbottom", pub fn new_stereo_tab_handler( panel: &mut EditModeWrapPanel, ) -> anyhow::Result> { + // Fetch the checkbox component first, before creating the closure + let checkbox = panel + .parser_state + .fetch_component_as::("stereo_full_frame_box")?; + SpriteTabHandler::new( panel, "stereo", &STEREO_NAMES, - Box::new(|_common, state| { + Box::new(move |common, state| { let stereo = *state; + + let translation = get_stereo_full_frame_translation(&stereo); + checkbox.set_text(common, Translation::from_translation_key(translation)); + Box::new(move |app, owc| { owc.backend .set_attrib(app, BackendAttribValue::Stereo(stereo)); @@ -48,3 +58,12 @@ impl SpriteTabKey for StereoMode { } } } + +pub fn get_stereo_full_frame_translation(stereo: &StereoMode) -> &'static str { + match stereo { + StereoMode::LeftRight | StereoMode::RightLeft => "EDIT_MODE.STEREO_3D_MODE.FULL_FRAME_SBS", + StereoMode::TopBottom => "EDIT_MODE.STEREO_3D_MODE.FULL_FRAME_TAB", + StereoMode::BottomTop => "EDIT_MODE.STEREO_3D_MODE.FULL_FRAME_BAT", + StereoMode::None => "EDIT_MODE.STEREO_3D_MODE.FULL_FRAME", + } +}