feat(commands): step the selection-first keyword commands
Add SelectThenKeywordCommand: if nothing is selected it first gathers a selection (Enter confirms, following the ALIGN contract), then shows the sub-verbs as buttons like KeywordCommand and dispatches `<name> <verb> [value]` to the inline handler, which reads the still-selected set. Convert CHPROP, ADJUST, XDATA, UNDERLAY and DRAWORDER. Verbs the single-value generic can't express keep working by typing the full line: XDATA SET <app> <value> and DRAWORDER Above/Under <handle> (a reference pick) are left off the buttons; CHPROP/ADJUST/UNDERLAY are fully covered. Verified end to end: SELECTALL then `CHPROP LAYER <name>` moves the selected entity to that layer through the stepped front-end.
This commit is contained in:
parent
4c3509fa51
commit
7195e1e8fb
4 changed files with 198 additions and 5 deletions
|
|
@ -750,7 +750,19 @@ impl OpenCADStudio {
|
|||
);
|
||||
}
|
||||
|
||||
cmd if cmd.starts_with("DRAWORDER") => {
|
||||
"DRAWORDER" => {
|
||||
use crate::command::SelectThenKeywordCommand;
|
||||
let has_sel = !self.tabs[i].scene.selected_entities().is_empty();
|
||||
let c = SelectThenKeywordCommand::new(
|
||||
"DRAWORDER",
|
||||
"DRAWORDER [Front / Back] (Above/Under <handle> by typing):",
|
||||
vec![("Front", "FRONT", None), ("Back", "BACK", None)],
|
||||
has_sel,
|
||||
);
|
||||
self.command_line.push_info(&c.prompt());
|
||||
self.tabs[i].active_cmd = Some(Box::new(c));
|
||||
}
|
||||
cmd if cmd.starts_with("DRAWORDER ") => {
|
||||
use acadrust::objects::{ObjectType, SortEntitiesTable};
|
||||
let parts: Vec<&str> = cmd.split_whitespace().collect();
|
||||
let option = parts.get(1).unwrap_or(&"").to_uppercase();
|
||||
|
|
|
|||
Loading…
Reference in a new issue