forked from 1b-agent/opencadstudio-upstream
feat: implement TEXTEDIT command and TEXTEDITMODE system variable
- Adds TEXTEDIT command to seamlessly edit annotation objects in-place. - Matches industry-standard CAD tools' prompt behavior and "Current settings" banner logic. - Implements the TEXTEDITMODE system variable (0/1) for Multiple vs Single editing modes. - Enhances command lifecycle with CmdResult::SuspendForTextEdit and post_editor_closed hooks, allowing commands to cleanly pause and resume after external UI editors close.
This commit is contained in:
1 parent
4d8ea95974
commit
9a258f29ce
9 files changed
+351
-6
No files matched your search
@@ -225,6 +225,12 @@ pub enum CmdResult {
|
||||
/// The host should look up the attdefs for `block_name` from the document
|
||||
/// and call `attreq_set_attdefs()` on the command, then loop on text input.
|
||||
AttreqNeeded { block_name: String },
|
||||
/// Suspends command execution, moves it to suspended_cmd, and opens the text editor for the given handle.
|
||||
SuspendForTextEdit { handle: Handle },
|
||||
/// Requests a standard document-level undo while keeping the command active.
|
||||
UndoDocument,
|
||||
/// Sets the TEXTEDITMODE system variable and ends the command.
|
||||
SetTexteditMode(bool),
|
||||
}
|
||||
|
||||
/// What kind of value the active command is currently asking for. Drives
|
||||
@@ -411,6 +417,11 @@ pub trait CadCommand: Send {
|
||||
false
|
||||
}
|
||||
|
||||
/// Called when the text editor closes, either because the user committed or cancelled the edit.
|
||||
fn on_editor_closed(&mut self, _committed: bool) -> CmdResult {
|
||||
CmdResult::Cancel
|
||||
}
|
||||
|
||||
/// Called when the user clicks and `needs_entity_pick()` is true.
|
||||
/// `handle` is the nearest wire's entity handle (Handle::NULL if nothing found).
|
||||
fn on_entity_pick(&mut self, _handle: Handle, _pt: Vec3) -> CmdResult {
|
||||
|
||||
Reference in new issue
Block a user