feat(annotative): annotation-scale manager window
Replace the scale popup's inline delete/add affordances with a single "Manage scales..." row that opens a proper manager, matching the style managers: it reuses the shared style-manager palette and chrome (toolbar + list + editor frame), so it looks and behaves like the Text / Dim / MLeader managers. The manager lists the drawing's annotation scales (name + ratio, the current one checked) and edits them through a Name / Paper units / Drawing units editor: New adds a scale from the fields, Apply renames / re-ratios the selected one, Delete removes it (never the current scale), and Set Current makes the selected scale the model-space annotation scale. Backed by Scene::add_scale / remove_scale / edit_scale on ACAD_SCALELIST. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
b1eba180eb
commit
1071570f40
9 changed files with 427 additions and 67 deletions
|
|
@ -65,6 +65,35 @@ impl OpenCADStudio {
|
|||
320,
|
||||
)
|
||||
}
|
||||
super::super::ModalKind::ScaleManager => {
|
||||
let tab = &self.tabs[self.active_tab];
|
||||
let scales: Vec<(String, String)> = tab
|
||||
.scene
|
||||
.scale_list()
|
||||
.into_iter()
|
||||
.map(|(name, _, _)| {
|
||||
let ratio = tab
|
||||
.scene
|
||||
.scale_paper_drawing(&name)
|
||||
.map(|(p, d)| format!("{p}:{d}"))
|
||||
.unwrap_or_default();
|
||||
(name, ratio)
|
||||
})
|
||||
.collect();
|
||||
let current = tab.scene.document.header.current_annotation_scale.clone();
|
||||
sized(
|
||||
crate::ui::style::scale_manager::view_window(
|
||||
&scales,
|
||||
&self.scale_manager_selected,
|
||||
¤t,
|
||||
&self.scale_manager_name_buf,
|
||||
&self.scale_manager_paper_buf,
|
||||
&self.scale_manager_drawing_buf,
|
||||
),
|
||||
520,
|
||||
360,
|
||||
)
|
||||
}
|
||||
super::super::ModalKind::Plotstyle => sized(
|
||||
crate::ui::style::plotstyle::view_window(
|
||||
self.active_plot_style.as_ref(),
|
||||
|
|
|
|||
Loading…
Reference in a new issue