feat: MLineStyle manager (MLSTYLE command + dialog)

- MLSTYLE command: LIST, NEW, SET, DEL subcommands
- Multiline Style Manager dialog: style list, element details (offset,
  color, linetype), Set Current / New / Delete buttons
- MLINE/ML command now reads document header.multiline_style to apply
  the current style to newly created MLine entities
- MlineCommand.with_style() constructor for style-aware multiline drawing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-04-06 14:54:05 +03:00
commit 34076b26bb
5 changed files with 407 additions and 6 deletions

View file

@ -90,6 +90,10 @@ pub(super) struct H7CAD {
/// Currently loaded CTB/STB table (None = no override).
active_plot_style: Option<crate::io::plot_style::PlotStyleTable>,
// ── MLineStyle Dialog ─────────────────────────────────────────────────
mlstyle_open: bool,
mlstyle_selected: String,
// ── DimStyle Dialog ───────────────────────────────────────────────────
dimstyle_open: bool,
/// Name of the style currently shown in the dialog.
@ -335,6 +339,13 @@ pub enum Message {
PlotStyleLoaded(Option<crate::io::plot_style::PlotStyleTable>),
/// Clear the active plot style table.
PlotStyleClear,
// ── MLineStyle Dialog ─────────────────────────────────────────────────
MlStyleDialogOpen,
MlStyleDialogClose,
MlStyleDialogSelect(String),
MlStyleDialogSetCurrent,
MlStyleDialogNew,
MlStyleDialogDelete,
// ── DimStyle Dialog ───────────────────────────────────────────────────
DimStyleDialogOpen,
DimStyleDialogClose,
@ -396,6 +407,9 @@ impl H7CAD {
page_setup_scale: "Fit".to_string(),
// Plot style
active_plot_style: None,
// MLineStyle dialog
mlstyle_open: false,
mlstyle_selected: "Standard".to_string(),
// DimStyle dialog
dimstyle_open: false,
dimstyle_selected: "Standard".to_string(),