cad-editor/src/modules/layout/mod.rs
Hakan Seven 73b224c191 Feat: viewport display lock, extended properties, VPLAYER and VPORTS commands
- Enforce status.locked in pan_active_viewport and zoom_active_viewport:
  locked viewports now reject pan/zoom inputs entirely
- Add perspective, render_mode, shade_plot_mode, hide_plot, ucs_icon_visible
  fields to the viewport property panel with appropriate pickers/toggles
- Add VPORTS command: lists all user viewports in the current layout
  (id, size, position, scale, on/locked state) in the command line
- Add VPLAYER command: per-viewport layer freeze/thaw from the command line
  (F <layer> to freeze, T <layer> to thaw, Enter to exit)
- Add CmdResult::VpLayerUpdate variant and its handler in apply_cmd_result

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 23:52:18 +03:00

46 lines
1.3 KiB
Rust

// Layout module — paper space tools (viewports, scale, plot settings).
// This tab is only shown when the active layout is not "Model".
pub mod mview;
pub mod vplayer;
use crate::modules::{CadModule, IconKind, ModuleEvent, RibbonGroup, ToolDef};
pub struct LayoutModule;
impl CadModule for LayoutModule {
fn id(&self) -> &'static str {
"layout"
}
fn title(&self) -> &'static str {
"Layout"
}
fn ribbon_groups(&self) -> Vec<RibbonGroup> {
vec![
RibbonGroup {
title: "Viewport",
tools: vec![mview::tool().into()],
},
RibbonGroup {
title: "Plot",
tools: vec![
ToolDef {
id: "PAGESETUP",
label: "Page Setup",
icon: IconKind::Glyph("📋"),
event: ModuleEvent::Command("PAGESETUP".to_string()),
}
.into(),
ToolDef {
id: "PLOT",
label: "Export PDF",
icon: IconKind::Glyph("🖨"),
event: ModuleEvent::Command("PLOT".to_string()),
}
.into(),
],
},
]
}
}