forked from 1b-agent/opencadstudio-upstream
UI chrome (dropdown carets, undo/redo, checkmarks, close/menu/osnap, layer/file-menu icons) and ribbon tool icons were drawn as Unicode glyphs. Desktop fills missing glyphs via system-font fallback, but the web build bundles only Fira Sans with no fallback, so they rendered as empty tofu boxes (issue #116). Add a shared src/ui/icons.rs (SVG-backed, tintable) plus bundled assets, and switch every glyph site and IconKind::Glyph tool def to SVG. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
67 lines
2.1 KiB
Rust
67 lines
2.1 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::Svg(include_bytes!("../../../assets/icons/pagesetup.svg")),
|
|
event: ModuleEvent::Command("PAGESETUP".to_string()),
|
|
},
|
|
ToolDef {
|
|
id: "PLOT",
|
|
label: "Export PDF",
|
|
icon: IconKind::Svg(include_bytes!("../../../assets/icons/plot.svg")),
|
|
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::Svg(include_bytes!("../../../assets/icons/pagesetup.svg")),
|
|
event: ModuleEvent::Command("PAGESETUP".to_string()),
|
|
}
|
|
.into(),
|
|
ToolDef {
|
|
id: "PLOT",
|
|
label: "Export PDF",
|
|
icon: IconKind::Svg(include_bytes!("../../../assets/icons/plot.svg")),
|
|
event: ModuleEvent::Command("PLOT".to_string()),
|
|
}
|
|
.into(),
|
|
],
|
|
},
|
|
]
|
|
}
|
|
}
|