forked from 1b-agent/opencadstudio-upstream
fix: open-issue sweep — drawing, plot, snap, layout and UI fixes
Fixes: - Font prompt no longer lists bundled ltypeshp/qcadshp shape files (#1626) - Wide polylines step at a discontinuous segment width; PEDIT marks the current vertex; keyword steps refresh the command preview (#1628) - Radius-0 fillet drops the zero-length segment it left, so the corner fillets again (#1422) - FILLET Trim / No trim option (#1558) - True-colour wires plot in their own colour; colour picker stores the value it shows (#1621) - Model tab keeps its page setup; "Save changes to layout" in Model (#1620) - QNEW default template in Options > Files; .dwt in the open dialog (#1134, #1113) - GRIDUNIT / GRIDMODE / PERSPECTIVE variables (#1618, #1524) - PTYPE (#1433) - ZOOM nX / nXP (#1465) - CHSPACE between model and paper space through a viewport (#1428) - Moving a dimension keeps its automatic text placement - Shell icon; "&&" button labels (#1554) - LINETYPE Load from a .lin file (#1588) - XLINE / RAY hide the crosshair arms (#1437) - Dynamic-input boxes keep clear of the crosshair and each other (#1546) - Snap marker colour setting, dark default on light canvases (#1497, #1229, #1128) - Dimension style precision as a 0.00 pattern dropdown (#1426) - Node graph nodes left of the origin no longer clip away (#1592) - Collapse button in the command history header (#1094) - Freeze-in-current-viewport toggle in the ribbon layer list (#1466) - Geometric Center object snap for closed polylines (#1369) New strings translated in all 21 locales. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
abf302eba5
commit
178c7dff41
70 files changed
+1227
-145
No files matched your search
+4
-1
@@ -82,7 +82,10 @@ pub fn missing_shx_fonts(doc: &CadDocument) -> Vec<String> {
|
||||
// The primary font and the big font (Asian double-byte glyphs) are
|
||||
// both plain .shx files the style depends on.
|
||||
for file in [style.font_file.trim(), style.big_font_file.trim()] {
|
||||
if file.is_empty() || !file.to_ascii_lowercase().ends_with(".shx") {
|
||||
if file.is_empty()
|
||||
|| !file.to_ascii_lowercase().ends_with(".shx")
|
||||
|| crate::io::linetypes::is_bundled_shape_file(file)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
let resolved = crate::io::resolve_image_file(file, base).is_some()
|
||||
|
||||
@@ -345,6 +345,13 @@ fn bundled_shape_name(file: &str, number: i16) -> Option<&'static str> {
|
||||
.map(|(_, name, _)| *name)
|
||||
}
|
||||
|
||||
/// Whether `file` is a shape file the bundled LFF substitutes stand in for,
|
||||
/// so its absence on disk never needs reporting.
|
||||
pub fn is_bundled_shape_file(file: &str) -> bool {
|
||||
let stem = shape_file_stem(file);
|
||||
BUNDLED_SHAPES.iter().any(|(f, _, _)| *f == stem)
|
||||
}
|
||||
|
||||
/// The drawing's shape-file STYLE for `file`, added when missing (an empty
|
||||
/// name, as shape files are stored).
|
||||
fn shape_file_style(doc: &mut CadDocument, file: &str) -> codec::Handle {
|
||||
|
||||
+12
-1
@@ -170,9 +170,10 @@ impl From<&str> for OpenLoadError {
|
||||
pub async fn pick_open_path() -> Option<(PathBuf, u64)> {
|
||||
let handle = crate::sys::file_dialog()
|
||||
.set_title(crate::t!("Open CAD file").as_ref())
|
||||
.add_filter(crate::t!("CAD Files").as_ref(), &["dwg", "dxf", "bak", "sv$", "DWG", "DXF", "BAK"])
|
||||
.add_filter(crate::t!("CAD Files").as_ref(), &["dwg", "dxf", "dwt", "bak", "sv$", "DWG", "DXF", "DWT", "BAK"])
|
||||
.add_filter(crate::t!("DWG Files").as_ref(), &["dwg", "DWG"])
|
||||
.add_filter(crate::t!("DXF Files").as_ref(), &["dxf", "DXF"])
|
||||
.add_filter(crate::t!("Drawing Template (*.dwt)").as_ref(), &["dwt", "DWT"])
|
||||
.add_filter(crate::t!("Backup / Autosave").as_ref(), &["bak", "sv$", "BAK"])
|
||||
.add_filter(crate::t!("All Files").as_ref(), &["*"])
|
||||
.pick_file()
|
||||
@@ -1761,6 +1762,16 @@ mod save_failure_tests {
|
||||
/// picked from outside the plot styles folder is copied into it (unless a
|
||||
/// file of that name is already there), so the dialog lists it from now on
|
||||
/// and page setups naming it resolve after a restart.
|
||||
/// Pick a `.lin` linetype definition file and return its text (#1588).
|
||||
pub async fn pick_linetype_file() -> Option<String> {
|
||||
let handle = crate::sys::file_dialog()
|
||||
.set_title(crate::t!("Load Linetypes").as_ref())
|
||||
.add_filter(crate::t!("Linetype Files").as_ref(), &["lin", "LIN"])
|
||||
.pick_file()
|
||||
.await?;
|
||||
Some(String::from_utf8_lossy(&handle.read().await).into_owned())
|
||||
}
|
||||
|
||||
pub async fn pick_plot_style() -> Result<Option<plot_style::PlotStyleTable>, String> {
|
||||
let dialog = crate::sys::file_dialog()
|
||||
.set_title(crate::t!("Load Plot Style Table").as_ref())
|
||||
|
||||
@@ -771,7 +771,9 @@ fn append_pdf_page(
|
||||
}
|
||||
// Near-white and near-yellow (viewport active border) → dark grey for print
|
||||
// (only when no CTB override was applied).
|
||||
if !color_overridden {
|
||||
// `aci == 0` is an explicit true colour and plots as drawn, like the
|
||||
// hatch pass (#1621); only a pure white there is an unresolved colour 7.
|
||||
if !color_overridden && (wire.aci != 0 || [r, g, b] == [1.0; 3]) {
|
||||
// An authored white (not colour 7) plots as drawn, like on screen.
|
||||
let is_light = r > 0.80
|
||||
&& g > 0.80
|
||||
|
||||
Reference in new issue
Block a user