refactor: replace build.rs module codegen with a static registry

The core ribbon registry no longer needs build-time generation. Replace
the generated all_modules() (included from OUT_DIR) with a hand-written
static list in src/modules/registry.rs, listing the seven built-in tabs
in display order.

Trim build.rs down to its only remaining job: embedding the Windows
executable icon via winresource (issue #107). The external plugin system
is unaffected — plugin::registry still appends dynamically-loaded add-on
tabs on top of the core list.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hakan SevenandClaude Opus 4.8 committed 2026-06-26 23:19:20 +03:00
1 parent 415dbe08d4
commit 7cb666801f
3 files changed
+31 -96

No files matched your search

+24 -4
View File
@@ -1,4 +1,24 @@
// AUTO-GENERATED include — see build.rs for the actual generator.
// The generated registry is written to Cargo's OUT_DIR and included here so
// the source tree is not modified during build.
include!(concat!(env!("OUT_DIR"), "/modules_registry.rs"));
// Core ribbon module registry — one boxed instance of every built-in CAD
// module, in ribbon-tab display order. External add-ons are appended on top
// of this list at runtime by `plugin::registry`.
//
// To add a core module:
// 1. Create src/modules/my_name/mod.rs (implement CadModule as MyNameModule)
// 2. Add `pub mod my_name;` to src/modules/mod.rs
// 3. Add one `Box::new(super::my_name::MyNameModule)` line below, in the
// position you want its tab to appear.
use crate::modules::CadModule;
/// Returns one boxed instance of every registered core CAD module.
/// Called once at startup by `Ribbon::new()`.
pub fn all_modules() -> Vec<Box<dyn CadModule>> {
vec![
Box::new(super::draw::DrawModule),
Box::new(super::model::ModelModule),
Box::new(super::insert::InsertModule),
Box::new(super::annotate::AnnotateModule),
Box::new(super::view::ViewModule),
Box::new(super::manage::ManageModule),
Box::new(super::layout::LayoutModule),
]
}