feat: view tab widget toggle commands and unified SVG icon color scheme

Integrate NAVVCUBE, NAVBAR, PROPERTIES, FILETAB, LAYOUTTAB, TOOLPALETTES
and SHEETSET commands to toggle UI widgets at runtime. Add 15 new SVG icons
for view module tools previously using glyph fallbacks. Restyle all SVG
icons to use the established two-color scheme: #e0e0e0 for passive geometry,
#4cc9f0 for active/accent elements.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This commit is contained in:
Hakan SevenandClaude Sonnet 4.6 committed 2026-04-24 01:23:06 +03:00
1 parent 6a0125e4d6
commit 1ec53a4730
81 files changed
+533 -597

No files matched your search

+2 -6
View File
@@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/hidden.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "HIDDENLINE",
label: "Hidden",
icon: IconKind::Glyph("◫"),
event: ModuleEvent::Command("HIDDENLINE".to_string()),
}
ToolDef { id: "HIDDENLINE", label: "Hidden", icon: ICON, event: ModuleEvent::Command("HIDDENLINE".to_string()) }
}
+2 -6
View File
@@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/orbit.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "3DORBIT",
label: "3D Orbit",
icon: IconKind::Glyph("⟳"),
event: ModuleEvent::Command("3DORBIT".to_string()),
}
ToolDef { id: "3DORBIT", label: "3D Orbit", icon: ICON, event: ModuleEvent::Command("3DORBIT".to_string()) }
}
+2 -6
View File
@@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/ortho.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "ORTHO",
label: "Ortho",
icon: IconKind::Glyph("⊡"),
event: ModuleEvent::Command("ORTHO".into()),
}
ToolDef { id: "ORTHO", label: "Ortho", icon: ICON, event: ModuleEvent::Command("ORTHO".into()) }
}
+2 -6
View File
@@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/pan.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "PAN",
label: "Pan",
icon: IconKind::Glyph("✥"),
event: ModuleEvent::Command("PAN".to_string()),
}
ToolDef { id: "PAN", label: "Pan", icon: ICON, event: ModuleEvent::Command("PAN".to_string()) }
}
+2 -6
View File
@@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/persp.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "PERSP",
label: "Persp",
icon: IconKind::Glyph("⟁"),
event: ModuleEvent::Command("PERSP".into()),
}
ToolDef { id: "PERSP", label: "Persp", icon: ICON, event: ModuleEvent::Command("PERSP".into()) }
}
+2 -6
View File
@@ -2,11 +2,7 @@
// id "SOLID" is special-cased in ribbon.rs for active-state highlighting.
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/solid.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "SOLID",
label: "Solid",
icon: IconKind::Glyph("■"),
event: ModuleEvent::SetWireframe(false),
}
ToolDef { id: "SOLID", label: "Solid", icon: ICON, event: ModuleEvent::SetWireframe(false) }
}
+2 -6
View File
@@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/view_front.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "VIEW_FRONT",
label: "Front",
icon: IconKind::Glyph("⊥"),
event: ModuleEvent::Command("VIEW FRONT".to_string()),
}
ToolDef { id: "VIEW_FRONT", label: "Front", icon: ICON, event: ModuleEvent::Command("VIEW FRONT".to_string()) }
}
+2 -6
View File
@@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/view_iso.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "VIEW_ISO",
label: "Iso",
icon: IconKind::Glyph("◈"),
event: ModuleEvent::Command("VIEW ISO".to_string()),
}
ToolDef { id: "VIEW_ISO", label: "Iso", icon: ICON, event: ModuleEvent::Command("VIEW ISO".to_string()) }
}
+2 -6
View File
@@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/view_right.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "VIEW_RIGHT",
label: "Right",
icon: IconKind::Glyph("⊣"),
event: ModuleEvent::Command("VIEW RIGHT".to_string()),
}
ToolDef { id: "VIEW_RIGHT", label: "Right", icon: ICON, event: ModuleEvent::Command("VIEW RIGHT".to_string()) }
}
+2 -6
View File
@@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/view_top.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "VIEW_TOP",
label: "Top",
icon: IconKind::Glyph("⊤"),
event: ModuleEvent::Command("VIEW TOP".to_string()),
}
ToolDef { id: "VIEW_TOP", label: "Top", icon: ICON, event: ModuleEvent::Command("VIEW TOP".to_string()) }
}
+2 -6
View File
@@ -2,11 +2,7 @@
// id "WIREFRAME" is special-cased in ribbon.rs for active-state highlighting.
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/wireframe.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "WIREFRAME",
label: "Wireframe",
icon: IconKind::Glyph("□"),
event: ModuleEvent::SetWireframe(true),
}
ToolDef { id: "WIREFRAME", label: "Wireframe", icon: ICON, event: ModuleEvent::SetWireframe(true) }
}
+2 -6
View File
@@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/xray.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "XRAY",
label: "X-Ray",
icon: IconKind::Glyph("◈"),
event: ModuleEvent::Command("XRAY".to_string()),
}
ToolDef { id: "XRAY", label: "X-Ray", icon: ICON, event: ModuleEvent::Command("XRAY".to_string()) }
}
+2 -6
View File
@@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/zoom_ext.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "ZOOM_EXT",
label: "Zoom Ext",
icon: IconKind::Glyph("⊡"),
event: ModuleEvent::Command("ZOOM EXTENTS".to_string()),
}
ToolDef { id: "ZOOM_EXT", label: "Zoom\nExtents", icon: ICON, event: ModuleEvent::Command("ZOOM EXTENTS".to_string()) }
}
+2 -6
View File
@@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/zoom_in.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "ZOOM_IN",
label: "Zoom In",
icon: IconKind::Glyph("🔍"),
event: ModuleEvent::Command("ZOOM IN".to_string()),
}
ToolDef { id: "ZOOM_IN", label: "Zoom In", icon: ICON, event: ModuleEvent::Command("ZOOM IN".to_string()) }
}
+2 -6
View File
@@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/zoom_out.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "ZOOM_OUT",
label: "Zoom Out",
icon: IconKind::Glyph("🔎"),
event: ModuleEvent::Command("ZOOM OUT".to_string()),
}
ToolDef { id: "ZOOM_OUT", label: "Zoom Out", icon: ICON, event: ModuleEvent::Command("ZOOM OUT".to_string()) }
}