burger menu + fix crash after removing set

This commit is contained in:
galister
2026-01-08 04:11:37 +09:00
parent 082c9eb349
commit 5616090fa9
8 changed files with 52 additions and 17 deletions

View File

@@ -163,6 +163,15 @@
</Button>
</template>
<blueprint name="menu_burger">
<context_menu >
<cell translation="BAR.ADD_MIRROR" _press="::NewMirror" />
<cell translation="BAR.EDIT_MODE_TOGGLE" _press="::EditToggle" />
<cell translation="BAR.ADD_NEW_SET" _press="::AddSet" />
<cell translation="BAR.DELETE_CURRENT_SET" _press="::DeleteSet" />
</context_menu>
</blueprint>
<template name="Set">
<Button macro="button_style" id="set_${idx}" _press="::SetSwitch ${idx}" tooltip="WATCH.SWITCH_TO_SET" tooltip_side="bottom">
<sprite width="38" height="38" color="~text_color" src_builtin="watch/set2.svg" />
@@ -194,6 +203,12 @@
</div>
</div>
<div id="tray_root" flex_direction="row" gap="10">
<Button macro="button_style" _press="::ContextMenuOpen menu_burger">
<sprite width="38" height="38" color="~text_color" src_builtin="keyboard/burger.svg" />
</Button>
<VerticalSeparator />
<div id="sets_root" flex_direction="row" gap="6">
<Set idx="0" display="1" />
<Set idx="1" display="2" />

View File

@@ -0,0 +1 @@
../../../../dash-frontend/assets/dashboard/burger.svg

View File

@@ -1,10 +1,11 @@
{
"ANCHOR": {
"CENTER": "Zentrum"
},
"BAR": {
"ADD_MIRROR": "Neuen Spiegel-Overlay hinzufügen"
},
"WATCH": {
"MIRROR": "Neuen Spiegel-Overlay hinzufügen",
"CLEANUP_MIRRORS": "Spiegel entfernen,\ndie derzeit nicht sichtbar sind",
"RECENTER": "Spielbereich neu zentrieren",
"FIX_FLOOR": "Bodenhöhe korrigieren",
"EDIT_MODE_EXPLANATION": "Overlays können nun einzeln verschoben und angepasst werden.\nOverlays für den aktuellen Satz umschalten:",

View File

@@ -3,6 +3,10 @@
"CENTER": "Center"
},
"BAR": {
"ADD_MIRROR": "Add a new mirror overlay",
"EDIT_MODE_TOGGLE": "Toggle edit mode",
"ADD_NEW_SET": "Add new set",
"DELETE_CURRENT_SET": "Delete current set",
"TOGGLE_VISIBILITY": "Toggle visibility",
"RESET_POSITION": "Reset position",
"RELOAD_FROM_DISK": "Reload XML from disk",
@@ -12,12 +16,6 @@
},
"DEFAULT": "Default",
"DISABLED": "Disabled",
"OVERLAY_TOOLTIP": {
"SCREEN": "Screen {}",
"MIRROR": "Mirror {}",
"PANEL": "Panel {}",
"APP": "{}"
},
"EDIT_MODE": {
"ADJUST_CURVATURE": "Adjust curvature",
"ALPHA_BLEND_MODE": "Alpha blend mode",
@@ -75,6 +73,8 @@
"TOAST": {
"DEFAULT_TITLE": "Notification",
"ERROR": "Error",
"CANNOT_ADD_SET": "Cannot add set!",
"MAXIMUM_SETS_REACHED": "Maximum number of sets reached.",
"CANNOT_REMOVE_SET": "Cannot remove set!",
"NO_SET_SELECTED": "No set is selected.",
"LAST_EXISTING_SET": "This is the last existing set.",
@@ -91,7 +91,6 @@
"EDIT_MODE_EXPLANATION": "Overlays can now be moved and tuned individually.\nControl which overlays are visible on this set:",
"FIX_FLOOR": "Fix floor level",
"LONG_PRESS_TO_DELETE_SET": "Hold to delete",
"MIRROR": "Add a new mirror overlay",
"RECENTER": "Recenter playspace",
"SWITCH_TO_SET": "Switch to set",
"TOGGLE_FOR_CURRENT_SET": "Toggle for current set"

View File

@@ -2,9 +2,10 @@
"ANCHOR": {
"CENTER": "Centro"
},
"BAR": {
"ADD_MIRROR": "Agregar una nueva superposición de espejo"
},
"WATCH": {
"MIRROR": "Agregar una nueva superposición de espejo",
"CLEANUP_MIRRORS": "Eliminar espejos que no están actualmente visibles",
"RECENTER": "Recentrar el área de juego",
"FIX_FLOOR": "Ajustar la altura del piso",
"EDIT_MODE_EXPLANATION": "Ahora las superposiciones se pueden mover y ajustar individualmente.\nAlternar superposiciones para el conjunto actual:",

View File

@@ -1,10 +1,11 @@
{
"ANCHOR": {
"CENTER": "センター"
},
"BAR": {
"ADD_MIRROR": "新しいミラーを追加"
},
"WATCH": {
"MIRROR": "新しいミラーオーバーレイを追加",
"CLEANUP_MIRRORS": "現在表示されていないミラーを削除",
"RECENTER": "プレイスペースをリセンター",
"FIX_FLOOR": "床の高さを修正",
"EDIT_MODE_EXPLANATION": "オーバーレイは個別に移動および調整できます。\n現在のセットのオーバーレイを切り替え",
@@ -82,4 +83,4 @@
"FIXING_FLOOR": "5秒後にフロアを固定します...",
"ONE_CONTROLLER_ON_FLOOR": "コントローラーを床に置いてください!"
}
}
}

View File

@@ -1,10 +1,11 @@
{
"ANCHOR": {
"CENTER": "Centrum"
},
"BAR": {
"ADD_MIRROR": "Dodaj nowy widok lustrzany"
},
"WATCH": {
"MIRROR": "Dodaj nowy widok lustrzany",
"CLEANUP_MIRRORS": "Usuń widoki lustrzane, które\nnie są obecnie widoczne",
"RECENTER": "Wyśrodkuj przestrzeń gry",
"FIX_FLOOR": "Napraw wysokość podłogi",
"EDIT_MODE_EXPLANATION": "Nakładki można teraz przesuwać i dostosowywać indywidualnie.\nPrzełącz nakładki dla bieżącego zestawu:",
@@ -82,4 +83,4 @@
"FIXING_FLOOR": "Naprawianie podłogi za 5 sekund...",
"ONE_CONTROLLER_ON_FLOOR": "Umieść jeden kontroler na podłodze!"
}
}
}

View File

@@ -234,8 +234,23 @@ where
}
}
OverlayTask::AddSet => {
let new_idx = self.sets.len();
if new_idx >= MAX_OVERLAY_SETS {
Toast::new(
ToastTopic::System,
"TOAST.CANNOT_ADD_SET".into(),
"TOAST.MAXIMUM_SETS_REACHED".into(),
)
.with_timeout(5.)
.with_sound(true)
.submit(app);
return Ok(());
}
self.sets.push(OverlayWindowSet::default());
self.switch_to_set(app, Some(new_idx), false);
self.overlays[self.keyboard_id].config.activate(app);
self.sets_changed(app);
self.visible_overlays_changed(app)?;
}
OverlayTask::DeleteActiveSet => {
let Some(set) = self.current_set else {
@@ -264,6 +279,7 @@ where
self.switch_to_set(app, None, false);
self.sets.remove(set);
self.restore_set = 0;
self.sets_changed(app);
}
OverlayTask::SettingsChanged => {