forked from 1b-agent/opencadstudio-upstream
Refactor src/main.rs into modular src/app/ structure
Split the 4500-line main.rs into focused submodules under src/app/: - mod.rs: H7CAD struct, Message enum, boot/new/run - document.rs: DocumentTab, HistorySnapshot, HistoryState - helpers.rs: pure helper functions - history.rs: undo/redo logic - properties.rs: properties panel logic - layers.rs: layer sync - commands.rs: dispatch_command - cmd_result.rs: apply_cmd_result - view.rs: view, subscription, tab bar - update.rs: update message handler Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This commit is contained in:
1 parent
854f07517e
commit
ed9cbc2092
19 files changed
+4150
-4519
No files matched your search
@@ -0,0 +1,43 @@
|
||||
use super::H7CAD;
|
||||
use crate::ui;
|
||||
|
||||
impl H7CAD {
|
||||
pub(super) fn sync_ribbon_layers(&mut self) {
|
||||
let i = self.active_tab;
|
||||
let active = self.tabs[i].active_layer.clone();
|
||||
let infos: Vec<crate::ui::ribbon::LayerInfo> = self.tabs[i]
|
||||
.layers
|
||||
.layers
|
||||
.iter()
|
||||
.map(|l| crate::ui::ribbon::LayerInfo {
|
||||
name: l.name.clone(),
|
||||
color: l.color,
|
||||
visible: l.visible,
|
||||
frozen: l.frozen,
|
||||
locked: l.locked,
|
||||
})
|
||||
.collect();
|
||||
let names: Vec<String> = infos.iter().map(|l| l.name.clone()).collect();
|
||||
let active = if names.contains(&active) { active } else { "0".to_string() };
|
||||
self.tabs[i].active_layer = active.clone();
|
||||
self.tabs[i].layers.current_layer = active.clone();
|
||||
self.ribbon.set_layers(infos, &active);
|
||||
let lt_items: Vec<ui::properties::LinetypeItem> = self.tabs[i]
|
||||
.scene
|
||||
.document
|
||||
.line_types
|
||||
.iter()
|
||||
.map(|lt| {
|
||||
let name = if lt.name.eq_ignore_ascii_case("bylayer") {
|
||||
"ByLayer".to_string()
|
||||
} else {
|
||||
lt.name.clone()
|
||||
};
|
||||
let art = crate::linetypes::extract_pattern(<.description);
|
||||
ui::properties::LinetypeItem { name, art }
|
||||
})
|
||||
.collect();
|
||||
self.tabs[i].layers.sync_linetypes(lt_items.clone());
|
||||
self.ribbon.set_available_linetypes(lt_items);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user