Files
OneCAD-Draft/src/modules/layout/mod.rs
T
Hakan SevenandClaude Opus 4.8 71837895b0 feat(ui): right-edge side toolbar; drop the paper-space ribbon tab
Switching to a paper layout used to hijack the ribbon with a contextual
"Layout" tab. Replace that with a reusable right-edge vertical toolbar:
a single centred column of icon buttons floated over the canvas, built
from a flat ToolDef list and dispatching through the existing
RibbonToolClick path (ui::side_toolbar). Paper space now shows Viewport /
Page Setup / Export PDF there and leaves the ribbon on the user's tab;
the contextual layout tab and its three auto-switch hooks are removed.
The toolbar is generic infrastructure for future context action sets.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 02:07:26 +03:00

67 lines
1.9 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};
/// Paper-space context tools, as a flat list for the right-edge side toolbar
/// (the contextual ribbon tab is no longer shown). Viewport + plot actions.
pub fn paper_space_tools() -> Vec<ToolDef> {
vec![
mview::tool(),
ToolDef {
id: "PAGESETUP",
label: "Page Setup",
icon: IconKind::Glyph("📋"),
event: ModuleEvent::Command("PAGESETUP".to_string()),
},
ToolDef {
id: "PLOT",
label: "Export PDF",
icon: IconKind::Glyph("🖨"),
event: ModuleEvent::Command("PLOT".to_string()),
},
]
}
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(),
],
},
]
}
}