forked from 1b-agent/opencadstudio-upstream
feat(text): in-place editors for all text entities
Route every text-bearing entity to an in-place editor instead of the command line: a plain text box for single-line text (Text, attributes, dimension override, tolerance) and the rich MText editor for MText / MultiLeader. A Leader resolves to the entity it annotates. - TEXT places a plain text box at the click; double-click edits in place. - DDEDIT and double-click on any text entity open the matching editor. - MLEADER places the leader then opens the MText editor on its content. - LEADER follows the classic flow: points, Enter, then a linked empty MText annotation opens in the editor; the leader's annotation_handle links the pair so they edit/erase as a unit. Adds shared field read/write helpers and a begin_text_edit router, plus CommitAndEditText / CommitManyAndEditText results that commit an entity and open its editor (commit_entity now returns the new handle). Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
ac9022676f
commit
2627d06224
13 files changed
+551
-346
No files matched your search
@@ -51,6 +51,16 @@ pub enum CmdResult {
|
||||
CommitEntity(EntityType),
|
||||
/// Commit an acadrust entity to the document and end the command.
|
||||
CommitAndExit(EntityType),
|
||||
/// Commit an acadrust entity, end the command, and open the in-place text
|
||||
/// editor on it (used by MLEADER to type the annotation after placement).
|
||||
CommitAndEditText(EntityType),
|
||||
/// Commit several entities, end the command, and open the in-place text
|
||||
/// editor on the one at `edit_index` (used by LEADER to place the leader
|
||||
/// line plus an empty MText annotation, then type into the MText).
|
||||
CommitManyAndEditText {
|
||||
entities: Vec<EntityType>,
|
||||
edit_index: usize,
|
||||
},
|
||||
/// Create a block definition from existing entities and insert one reference.
|
||||
CreateBlock {
|
||||
handles: Vec<Handle>,
|
||||
@@ -126,6 +136,9 @@ pub enum CmdResult {
|
||||
SetPlotWindow { p1: Vec3, p2: Vec3 },
|
||||
/// Replace the text content of a Text/MText entity in-place.
|
||||
DdeditEntity { handle: Handle, new_text: String },
|
||||
/// Open the in-place editor (plain box or rich MText editor, per type) for
|
||||
/// a text-bearing entity picked by a command such as DDEDIT.
|
||||
EditTextEntity { handle: Handle },
|
||||
/// Open the in-place MText editor (formatting toolbar + multi-line text
|
||||
/// area with live viewport preview). `handle` is `Some` when editing an
|
||||
/// existing MText, `None` when creating a new one at `pos`.
|
||||
@@ -135,6 +148,15 @@ pub enum CmdResult {
|
||||
initial: String,
|
||||
height: f64,
|
||||
},
|
||||
/// Open the in-place single-line TEXT editor (a plain text-entry box, no
|
||||
/// formatting toolbar). `handle` is `Some` when editing an existing Text,
|
||||
/// `None` when creating a new one at `pos`.
|
||||
OpenTextEditor {
|
||||
pos: Vec3,
|
||||
handle: Option<Handle>,
|
||||
initial: String,
|
||||
height: f64,
|
||||
},
|
||||
/// Apply new pattern/scale/angle to an existing hatch entity.
|
||||
HatcheditApply {
|
||||
handle: Handle,
|
||||
|
||||
Reference in new issue
Block a user