diff --git a/crates/ui-egui/src/menus.rs b/crates/ui-egui/src/menus.rs index 8f535725..49158f62 100644 --- a/crates/ui-egui/src/menus.rs +++ b/crates/ui-egui/src/menus.rs @@ -369,7 +369,7 @@ pub fn is_enabled(app: &PhotocraftApp, id: &str) -> bool { if crate::analysis_ui::handles(id) { return true; } - if crate::preset_panels::handles(id) || crate::type_panels_ui::handles(id) { + if crate::preset_panels::handles(id) || crate::type_panels_ui::handles(id) || crate::timeline_ui::handles(id) { return true; } if let Some(e) = crate::view_cmds::is_enabled(app, id) { @@ -486,7 +486,7 @@ pub struct MenuItem { /// Is `id` implemented by the engine or the shell (a live menu item)? Shared by the menus and /// the parity report ([`crate::parity`]). pub fn is_live(id: &str) -> bool { - photocraft_engine::commands::find(id).is_some() || UI_COMMANDS.iter().any(|c| c.0 == id) || panel_alias(id).is_some() || workspace_name(id).is_some() || proof_preset(id).is_some() || id == "view.proofSetup.custom" || crate::view_cmds::handles(id) || crate::analysis_ui::handles(id) || crate::workspace_ui::handles(id) || crate::preset_panels::handles(id) || crate::type_panels_ui::handles(id) + photocraft_engine::commands::find(id).is_some() || UI_COMMANDS.iter().any(|c| c.0 == id) || panel_alias(id).is_some() || workspace_name(id).is_some() || proof_preset(id).is_some() || id == "view.proofSetup.custom" || crate::view_cmds::handles(id) || crate::analysis_ui::handles(id) || crate::workspace_ui::handles(id) || crate::preset_panels::handles(id) || crate::type_panels_ui::handles(id) || crate::timeline_ui::handles(id) } pub fn menu_items(app: &PhotocraftApp) -> Vec { diff --git a/crates/ui-egui/src/timeline_ui.rs b/crates/ui-egui/src/timeline_ui.rs index 10f6945c..758b0e58 100644 --- a/crates/ui-egui/src/timeline_ui.rs +++ b/crates/ui-egui/src/timeline_ui.rs @@ -19,6 +19,11 @@ pub fn checked(app: &PhotocraftApp, id: &str) -> Option { (id == "window.panel.timeline").then_some(app.ui.timeline.open) } +/// Ids this module owns (for parity / enablement). +pub fn handles(id: &str) -> bool { + id == "window.panel.timeline" +} + /// Toggle the Timeline panel. pub fn menu(app: &mut PhotocraftApp, id: &str, _params: &Value) -> Option> { if id == "window.panel.timeline" { diff --git a/docs/parity.md b/docs/parity.md index f801be97..84efdfed 100644 --- a/docs/parity.md +++ b/docs/parity.md @@ -2,7 +2,7 @@ Generated by `cargo xtask parity` from `crates/ui-egui/src/menu_catalog.rs` (Photoshop's menu tree) and the live command registry. Do not edit by hand. -**608 of 625 menu items live (97.3%).** +**609 of 625 menu items live (97.4%).** | Menu | Live | Total | % | |---|---:|---:|---:| @@ -14,7 +14,7 @@ Generated by `cargo xtask parity` from `crates/ui-egui/src/menu_catalog.rs` (Pho | Select | 25 | 25 | 100% | | Filter | 75 | 75 | 100% | | View | 74 | 74 | 100% | -| Window | 60 | 61 | 98% | +| Window | 61 | 61 | 100% | ## Not yet implemented @@ -39,7 +39,3 @@ Generated by `cargo xtask parity` from `crates/ui-egui/src/menu_catalog.rs` (Pho - Video Layers › Reload Frame (`layer.videoLayers.reloadFrame`) - Video Layers › Rasterize (`layer.videoLayers.rasterize`) - Rasterize › Video (`layer.rasterize.video`) - -### Window (1) - -- Timeline (`window.panel.timeline`)