feat(ui): shared colour selector used across all style editors (#94)

Add a reusable color_selector widget (ui/color_select.rs): a main-colour
dropdown plus a "more colours" button that expands the full 255-entry ACI
palette — the same design the properties panel uses. Replace the flat ACI
swatch rows added earlier in the dimension, multileader and table style
editors with it, wired through each editor's existing colour edit message
(the chosen colour is encoded as an ACI string) plus a per-field
palette-open toggle.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-06-14 10:42:39 +03:00
commit 8cdb17a6b4
8 changed files with 280 additions and 121 deletions

View file

@ -6535,6 +6535,14 @@ impl OpenCADStudio {
Task::none()
}
Message::TableColorMore(row, field) => {
self.ts_color_open = if self.ts_color_open == Some((row, field)) {
None
} else {
Some((row, field))
};
Task::none()
}
Message::TableStyleCellEdit { row, field, value } => {
let r = row as usize;
if r < 3 {
@ -6985,6 +6993,14 @@ impl OpenCADStudio {
}
Task::none()
}
Message::MLeaderColorMore(field) => {
self.mls_color_open = if self.mls_color_open == Some(field) {
None
} else {
Some(field)
};
Task::none()
}
Message::MLeaderStyleSetEnum { field, value } => {
use acadrust::objects::{
BlockContentConnectionType, LeaderContentType, LeaderDrawOrderType,
@ -7294,6 +7310,14 @@ impl OpenCADStudio {
self.apply_ds_toggle(field);
Task::none()
}
Message::DsColorMore(field) => {
self.ds_color_open = if self.ds_color_open.as_ref() == Some(&field) {
None
} else {
Some(field)
};
Task::none()
}
Message::DsSetHandle { field, value } => {
let i = self.active_tab;
let name = self.dimstyle_selected.clone();