feat(ui): modernize DSETTINGS dialog with tabbed layout and action controls

- Redesign drafting settings window to landscape 700x480 proportions while preserving interactive resizing
- Add 7-tab navigation: Snap and Grid, Polar Tracking, Object Snap, 3D Object Snap, Dynamic Input, Quick Properties, and Selection Cycling
- Distribute existing drafting modes, snap options, and isometric tools into their respective tabs
- Implement OK, Apply, and Close action buttons with unsaved changes confirmation guard
This commit is contained in:
Karim Jerbi committed 2026-09-14 17:45:47 +01:00
1 parent ddeddeca31
commit a0d784502a
5 files changed
+1024 -118

No files matched your search

+30
View File
@@ -10,6 +10,7 @@ pub use automation::{export_headless, serve};
mod command_driver;
pub(crate) mod commands;
mod document;
mod drafting_settings;
pub(crate) mod expr_eval;
mod find_replace;
pub(crate) mod helpers;
@@ -414,6 +415,9 @@ pub(super) struct OpenCADStudio {
win_size: (f32, f32),
snapper: Snapper,
snap_popup_open: bool,
drafting_settings_state: Option<crate::ui::window::drafting_settings::DraftingSettingsState>,
drafting_settings_saved: Option<crate::ui::window::drafting_settings::DraftingSettingsState>,
drafting_settings_close_confirm: bool,
scale_popup_open: bool,
/// True while the polar-tracking angle picker is open.
polar_popup_open: bool,
@@ -2609,6 +2613,29 @@ pub enum Message {
SnapSelectAll,
/// Disable all snap modes.
SnapClearAll,
// ── Drafting Settings Dialog ──────────────────────────────────────────
DraftingSettingsTabChanged(crate::ui::window::drafting_settings::DraftingSettingsTab),
DraftingSettingsToggleGrid,
DraftingSettingsToggleSnap,
DraftingSettingsToggleIsometric,
DraftingSettingsSetIsoPlane(crate::app::settings::IsoPlane),
DraftingSettingsResetRotation,
DraftingSettingsTogglePolar,
DraftingSettingsToggleOrtho,
DraftingSettingsToggleOsnap,
DraftingSettingsToggleOtrack,
DraftingSettingsToggleSnapMode(crate::snap::SnapType),
DraftingSettingsSnapSelectAll,
DraftingSettingsSnapClearAll,
DraftingSettingsToggle3dOsnap,
DraftingSettingsToggleDynInput,
DraftingSettingsToggleQuickProps,
DraftingSettingsToggleSelCycling,
DraftingSettingsApply,
DraftingSettingsOk,
DraftingSettingsClose,
DraftingSettingsCloseDiscard,
DraftingSettingsCloseKeep,
/// Toggle a ribbon dropdown open/closed.
ToggleRibbonDropdown(String),
/// Toggle a collapsed ribbon panel's flyout open/closed (by panel title).
@@ -3509,6 +3536,9 @@ impl OpenCADStudio {
win_size: (1280.0, 720.0),
snapper: Snapper::default(),
snap_popup_open: false,
drafting_settings_state: None,
drafting_settings_saved: None,
drafting_settings_close_confirm: false,
scale_popup_open: false,
polar_popup_open: false,
polar_custom_input: String::new(),