Merge pull request #1476 from ramox81:codex/insert-reference-panel

This commit is contained in:
Hakan Seven committed 2026-09-24 23:48:30 +03:00
commit 0ea8599f86
35 files changed
+357 -55

No files matched your search

+3
View File
@@ -622,12 +622,15 @@ inventory::submit!(crate::command::CommandRegistration {
"PDFIMPORTMODE",
"PDFIMPORTFILTER",
"PDFIMPORTLAYERS",
"XDWGFADECTL",
"POINTCLOUDCLIPFRAME",
"XCLIPFRAME",
"WIPEOUTFRAME",
"FRAMES0",
"FRAMES1",
"FRAMES2",
"UOSNAP0",
"UOSNAP1",
"HALOGAP",
"TRACEWID",
"SKETCHINC",
+31
View File
@@ -10,6 +10,8 @@ impl OpenCADStudio {
"FRAMES0" => return self.dispatch_styleprops("SETVAR FRAME 0", i),
"FRAMES1" => return self.dispatch_styleprops("SETVAR FRAME 1", i),
"FRAMES2" => return self.dispatch_styleprops("SETVAR FRAME 2", i),
"UOSNAP0" => return self.dispatch_styleprops("SETVAR UOSNAP 0", i),
"UOSNAP1" => return self.dispatch_styleprops("SETVAR UOSNAP 1", i),
// COLOR <ByLayer|ByBlock|1-255|name> — the colour applied to new
// objects (CECOLOR). Bare COLOR reports the current value.
"COLOR" | "COLOUR" | "CECOLOR" | "DDCOLOR" => {
@@ -1020,6 +1022,7 @@ impl OpenCADStudio {
| "PDFIMPORTMODE"
| "PDFIMPORTFILTER"
| "PDFIMPORTLAYERS"
| "XDWGFADECTL"
| "POINTCLOUDCLIPFRAME"
| "XCLIPFRAME"
| "WIPEOUTFRAME"
@@ -1086,6 +1089,19 @@ impl OpenCADStudio {
crate::t!("SETVAR: CETRANSPARENCY LTSCALE CELTSCALE PDMODE PDSIZE TEXTSIZE ORTHOMODE FILLMODE MIRRTEXT FRAME IMAGEFRAME PDFFRAME WIPEOUTFRAME XCLIPFRAME POINTCLOUDCLIPFRAME ZOOMWHEEL ZOOMFACTOR SHORTCUTMENU SHORTCUTMENUDURATION CURSORSIZE PICKBOX CURSORTYPE SNAPANG TEXTFILL CLIPROMPTLINES COMMANDLINEFADETIME ATTREQ ATTDIA DIMASSOC DIMCONTINUEMODE CONSTRAINTSOLVEMODE CONSTRAINTINFER CONSTRAINTBARDISPLAY CONSTRAINTBARMODE CONSTRAINTNAMEFORMAT DYNCONSTRAINTDISPLAY ANGBASE ANGDIR SKETCHINC SKPOLY SKTOLERANCE DONUTID DONUTOD CENTEREXE CENTERLAYER CENTERLTYPE CENTERLTSCALE CENTERLTYPEFILE CENTERCROSSSIZE CENTERCROSSGAP CENTERMARKEXE COLORTHEME SELECTIONAREA SELECTIONAREAOPACITY SELECTIONEFFECT SELECTIONEFFECTCOLOR WINDOWSAREACOLOR CROSSINGAREACOLOR SELECTIONPREVIEW GRIPSIZE GRIPCOLOR GRIPHOT GRIPHOVER GRIPOBJLIMIT | CLAYER CELTYPE TEXTSTYLE (read-only)").as_ref(),
);
} else {
if name == "XDWGFADECTL" {
let current = crate::scene::cache::block_cache::xref_fade_ctl();
if let Some(value) = &value {
match value.parse::<i32>().ok().filter(|v| (-90..=90).contains(v)) {
Some(fade) => self.set_xref_fade(fade),
None => self.command_line.push_error("Requires an integer between -90 and 90."),
}
} else {
self.command_line.push_output(&format!("Enter new value for XDWGFADECTL <{current}>:"));
self.pending_setvar = Some(name.clone());
}
return Some(self.finish_dispatch(cmd));
}
if name == "CETRANSPARENCY" {
let current = self.tabs[i].scene.document.current_entity_transparency();
if let Some(value) = &value {
@@ -3579,3 +3595,18 @@ mod scale_validation_tests {
}
}
}
impl OpenCADStudio {
/// XDWGFADECTL: store it, show it on the ribbon and redraw every tab's
/// referenced drawings.
pub(in crate::app) fn set_xref_fade(&mut self, fade: i32) {
crate::scene::cache::block_cache::set_xref_fade_ctl(fade);
self.ribbon.xref_fade = crate::scene::cache::block_cache::xref_fade_ctl();
for tab in &mut self.tabs {
if !tab.is_start {
tab.scene.recolor_meshes();
tab.scene.bump_geometry();
}
}
}
}
+5
View File
@@ -3833,6 +3833,11 @@ pub enum Message {
XAttachPickResult(Result<std::path::PathBuf, String>),
/// ATTACH: pick a drawing, image or PDF to reference.
AttachPick,
/// The Reference slide-out's xref fading: amount dragged, drag done,
/// switch.
XrefFadeSlide(u8),
XrefFadeCommit,
XrefFadeToggle,
/// Result of the ATTACH file picker.
AttachPickResult(Result<std::path::PathBuf, String>),
/// An edit in the Attach External Reference dialog.
+14
View File
@@ -5742,6 +5742,20 @@ impl OpenCADStudio {
self.ribbon.close_dropdown();
Task::none()
}
Message::XrefFadeSlide(amount) => {
let sign = if self.ribbon.xref_fade < 0 { -1 } else { 1 };
self.ribbon.xref_fade = sign * amount as i32;
Task::none()
}
Message::XrefFadeCommit => {
self.set_xref_fade(self.ribbon.xref_fade);
Task::none()
}
Message::XrefFadeToggle => {
let fade = crate::scene::cache::block_cache::xref_fade_ctl();
self.set_xref_fade(if fade == 0 { 50 } else { -fade });
Task::none()
}
Message::DropdownSelectItem { dropdown_id, cmd } => {
if self.tabs[self.active_tab].is_start {
self.ribbon.close_dropdown();