diff --git a/assets/icons/audit.svg b/assets/icons/audit.svg new file mode 100644 index 000000000..7e0bcd4ec --- /dev/null +++ b/assets/icons/audit.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/icons/cui_export.svg b/assets/icons/cui_export.svg new file mode 100644 index 000000000..e967690e0 --- /dev/null +++ b/assets/icons/cui_export.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/icons/cui_import.svg b/assets/icons/cui_import.svg new file mode 100644 index 000000000..32aec0259 --- /dev/null +++ b/assets/icons/cui_import.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/icons/edit_aliases.svg b/assets/icons/edit_aliases.svg new file mode 100644 index 000000000..f13172e32 --- /dev/null +++ b/assets/icons/edit_aliases.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/assets/icons/find_nonpurgeable.svg b/assets/icons/find_nonpurgeable.svg new file mode 100644 index 000000000..bbb0cb507 --- /dev/null +++ b/assets/icons/find_nonpurgeable.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/icons/overkill.svg b/assets/icons/overkill.svg new file mode 100644 index 000000000..9670a2cb1 --- /dev/null +++ b/assets/icons/overkill.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/icons/purge.svg b/assets/icons/purge.svg new file mode 100644 index 000000000..cc57f88d0 --- /dev/null +++ b/assets/icons/purge.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/icons/user_interface.svg b/assets/icons/user_interface.svg new file mode 100644 index 000000000..87826d6c1 --- /dev/null +++ b/assets/icons/user_interface.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/modules/manage/audit.rs b/src/modules/manage/audit.rs new file mode 100644 index 000000000..225c9ab0f --- /dev/null +++ b/src/modules/manage/audit.rs @@ -0,0 +1,5 @@ +use crate::modules::{IconKind, ModuleEvent, ToolDef}; +pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/audit.svg")); +pub fn tool() -> ToolDef { + ToolDef { id: "AUDIT", label: "Audit", icon: ICON, event: ModuleEvent::Command("AUDIT".to_string()) } +} diff --git a/src/modules/manage/cui_export.rs b/src/modules/manage/cui_export.rs new file mode 100644 index 000000000..4bcbded4c --- /dev/null +++ b/src/modules/manage/cui_export.rs @@ -0,0 +1,5 @@ +use crate::modules::{IconKind, ModuleEvent, ToolDef}; +pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/cui_export.svg")); +pub fn tool() -> ToolDef { + ToolDef { id: "CUIEXPORT", label: "Export", icon: ICON, event: ModuleEvent::Command("CUIEXPORT".to_string()) } +} diff --git a/src/modules/manage/cui_import.rs b/src/modules/manage/cui_import.rs new file mode 100644 index 000000000..5b5c6c4df --- /dev/null +++ b/src/modules/manage/cui_import.rs @@ -0,0 +1,5 @@ +use crate::modules::{IconKind, ModuleEvent, ToolDef}; +pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/cui_import.svg")); +pub fn tool() -> ToolDef { + ToolDef { id: "CUIIMPORT", label: "Import", icon: ICON, event: ModuleEvent::Command("CUIIMPORT".to_string()) } +} diff --git a/src/modules/manage/edit_aliases.rs b/src/modules/manage/edit_aliases.rs new file mode 100644 index 000000000..0cf8e79b6 --- /dev/null +++ b/src/modules/manage/edit_aliases.rs @@ -0,0 +1,7 @@ +use crate::modules::{IconKind, ModuleEvent, ToolDef}; +#[allow(dead_code)] +pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/edit_aliases.svg")); +#[allow(dead_code)] +pub fn tool() -> ToolDef { + ToolDef { id: "ALIASEDIT", label: "Edit Aliases", icon: ICON, event: ModuleEvent::Command("ALIASEDIT".to_string()) } +} diff --git a/src/modules/manage/find_nonpurgeable.rs b/src/modules/manage/find_nonpurgeable.rs new file mode 100644 index 000000000..f14c924ac --- /dev/null +++ b/src/modules/manage/find_nonpurgeable.rs @@ -0,0 +1,5 @@ +use crate::modules::{IconKind, ModuleEvent, ToolDef}; +pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/find_nonpurgeable.svg")); +pub fn tool() -> ToolDef { + ToolDef { id: "FINDNONPURGEABLE", label: "Find Non-\nPurgeable Items", icon: ICON, event: ModuleEvent::Command("FINDNONPURGEABLE".to_string()) } +} diff --git a/src/modules/manage/mod.rs b/src/modules/manage/mod.rs index a6f491cb0..1dc891a43 100644 --- a/src/modules/manage/mod.rs +++ b/src/modules/manage/mod.rs @@ -1,8 +1,16 @@ -// Manage module — application settings and customization tools. +// Manage module — customization and drawing cleanup tools. +mod audit; +mod cui_export; +mod cui_import; +mod edit_aliases; +mod find_nonpurgeable; mod options; +mod overkill; +mod purge; +mod user_interface; -use crate::modules::{CadModule, RibbonGroup}; +use crate::modules::{CadModule, IconKind, RibbonGroup, RibbonItem}; pub struct ManageModule; @@ -15,9 +23,41 @@ impl CadModule for ManageModule { } fn ribbon_groups(&self) -> Vec { - vec![RibbonGroup { - title: "Settings", - tools: vec![options::tool().into()], - }] + vec![ + // ── Customization ───────────────────────────────────────────────── + RibbonGroup { + title: "Customization", + tools: vec![ + RibbonItem::LargeTool(user_interface::tool()), + RibbonItem::LargeTool(crate::modules::ToolDef { + id: "TOOLPALETTES", + label: "Tool\nPalettes", + icon: IconKind::Svg(include_bytes!("../../../assets/icons/tool_palettes.svg")), + event: crate::modules::ModuleEvent::Command("TOOLPALETTES".to_string()), + }), + RibbonItem::Tool(cui_import::tool()), + RibbonItem::Tool(cui_export::tool()), + RibbonItem::Dropdown { + id: "ALIASEDIT_DROPDOWN", + icon: IconKind::Svg(include_bytes!("../../../assets/icons/edit_aliases.svg")), + items: vec![ + ("ALIASEDIT", "Edit Aliases", IconKind::Svg(include_bytes!("../../../assets/icons/edit_aliases.svg"))), + ("CUILOAD", "Load Partial CUI", IconKind::Svg(include_bytes!("../../../assets/icons/cui_import.svg"))), + ], + default: "ALIASEDIT", + }, + ], + }, + // ── Cleanup ─────────────────────────────────────────────────────── + RibbonGroup { + title: "Cleanup", + tools: vec![ + RibbonItem::LargeTool(find_nonpurgeable::tool()), + RibbonItem::Tool(purge::tool()), + RibbonItem::Tool(overkill::tool()), + RibbonItem::Tool(audit::tool()), + ], + }, + ] } } diff --git a/src/modules/manage/options.rs b/src/modules/manage/options.rs index 4dde0f2db..de3e535ad 100644 --- a/src/modules/manage/options.rs +++ b/src/modules/manage/options.rs @@ -1,4 +1,5 @@ use crate::modules::{IconKind, ModuleEvent, ToolDef}; +#[allow(dead_code)] pub fn tool() -> ToolDef { ToolDef { id: "OPTIONS", diff --git a/src/modules/manage/overkill.rs b/src/modules/manage/overkill.rs new file mode 100644 index 000000000..7875304ac --- /dev/null +++ b/src/modules/manage/overkill.rs @@ -0,0 +1,5 @@ +use crate::modules::{IconKind, ModuleEvent, ToolDef}; +pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/overkill.svg")); +pub fn tool() -> ToolDef { + ToolDef { id: "OVERKILL", label: "Overkill", icon: ICON, event: ModuleEvent::Command("OVERKILL".to_string()) } +} diff --git a/src/modules/manage/purge.rs b/src/modules/manage/purge.rs new file mode 100644 index 000000000..826aa48cf --- /dev/null +++ b/src/modules/manage/purge.rs @@ -0,0 +1,5 @@ +use crate::modules::{IconKind, ModuleEvent, ToolDef}; +pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/purge.svg")); +pub fn tool() -> ToolDef { + ToolDef { id: "PURGE", label: "Purge", icon: ICON, event: ModuleEvent::Command("PURGE".to_string()) } +} diff --git a/src/modules/manage/user_interface.rs b/src/modules/manage/user_interface.rs new file mode 100644 index 000000000..2849ee625 --- /dev/null +++ b/src/modules/manage/user_interface.rs @@ -0,0 +1,5 @@ +use crate::modules::{IconKind, ModuleEvent, ToolDef}; +pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/user_interface.svg")); +pub fn tool() -> ToolDef { + ToolDef { id: "CUI", label: "User\nInterface", icon: ICON, event: ModuleEvent::Command("CUI".to_string()) } +}