forked from 1b-agent/opencadstudio-upstream
Implement DELOBJ source deletion policies
This commit is contained in:
1 parent
f69f0b32be
commit
10d1d9b7d9
7 files changed
+196
-19
No files matched your search
@@ -347,6 +347,52 @@ pub(crate) enum TextEntryMode {
|
||||
FreeText,
|
||||
}
|
||||
|
||||
pub(crate) fn delobj_deletes_profiles(value: i16) -> bool {
|
||||
value != 0
|
||||
}
|
||||
|
||||
pub(crate) fn delobj_deletes_auxiliary(value: i16, creates_surface: bool) -> bool {
|
||||
value == 2 || (value == 3 && !creates_surface)
|
||||
}
|
||||
|
||||
pub(crate) fn delobj_deletes_conversion_source(value: i16) -> bool {
|
||||
value >= 1
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod delobj_policy_tests {
|
||||
use super::{
|
||||
delobj_deletes_auxiliary, delobj_deletes_conversion_source,
|
||||
delobj_deletes_profiles,
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn values_zero_through_three_select_the_expected_sources() {
|
||||
assert_eq!(
|
||||
(0..=3).map(delobj_deletes_profiles).collect::<Vec<_>>(),
|
||||
[false, true, true, true]
|
||||
);
|
||||
assert_eq!(
|
||||
(0..=3)
|
||||
.map(|value| delobj_deletes_auxiliary(value, true))
|
||||
.collect::<Vec<_>>(),
|
||||
[false, false, true, false]
|
||||
);
|
||||
assert_eq!(
|
||||
(0..=3)
|
||||
.map(|value| delobj_deletes_auxiliary(value, false))
|
||||
.collect::<Vec<_>>(),
|
||||
[false, false, true, true]
|
||||
);
|
||||
assert_eq!(
|
||||
(0..=3)
|
||||
.map(delobj_deletes_conversion_source)
|
||||
.collect::<Vec<_>>(),
|
||||
[false, true, true, true]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
pub(super) struct OpenCADStudio {
|
||||
start: Instant,
|
||||
control: control::State,
|
||||
@@ -566,6 +612,8 @@ pub(super) struct OpenCADStudio {
|
||||
/// `MIRRTEXT`) — the next command-line entry is its new value, empty keeps
|
||||
/// the current one.
|
||||
pending_setvar: Option<String>,
|
||||
/// DELOBJ system variable (0–3), shared by every open drawing.
|
||||
delete_objects: i16,
|
||||
/// Cursor is hovering over the UCS icon body — drives the hover highlight.
|
||||
ucs_icon_hover: bool,
|
||||
/// UCS icon is selected (clicked): its grips are shown and draggable.
|
||||
@@ -3424,6 +3472,7 @@ impl OpenCADStudio {
|
||||
block_usage_last_persist: None,
|
||||
awaiting_vports: false,
|
||||
pending_setvar: None,
|
||||
delete_objects: 1,
|
||||
ucs_icon_hover: false,
|
||||
ucs_icon_selected: false,
|
||||
ucs_grip_drag: None,
|
||||
|
||||
Reference in new issue
Block a user