diff --git a/src/app/mod.rs b/src/app/mod.rs index 6ca12b8c5..6deee19ec 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -221,7 +221,7 @@ pub(super) struct OpenCADStudio { /// When set, the cycling list box is open: (canvas point, candidates). cycle_candidates: Option<(iced::Point, Vec)>, /// Which status-bar pills the user has chosen to show (persisted). - statusbar_config: crate::ui::statusbar_config::StatusBarConfig, + statusbar_config: crate::ui::statusbar::statusbar_config::StatusBarConfig, /// Last persisted user preferences (DYN/OSNAP/OTRACK/POLAR/…). Compared /// after each message so a change is written to disk exactly once. last_saved_settings: Option, @@ -1095,7 +1095,7 @@ pub enum Message { LayerToggleLock(usize), LayerToggleFreeze(usize), /// Sort the Layer Manager table by a clicked column header. - LayerSort(crate::ui::layers::LayerSortCol), + LayerSort(crate::ui::window::layers::LayerSortCol), /// Toggle per-viewport freeze: (layer_index, vp_col_index) LayerToggleVpFreeze(usize, usize), LayerNew, @@ -1186,7 +1186,7 @@ pub enum Message { /// Close the status-bar customization menu. CloseStatusBarMenu, /// Show/hide a single status-bar pill. - ToggleStatusPill(crate::ui::statusbar_config::StatusPill), + ToggleStatusPill(crate::ui::statusbar::statusbar_config::StatusPill), /// Toggle clean-screen mode (hide ribbon + side panels). ToggleCleanScreen, /// Toggle whether entity transparency is shown on screen. @@ -1763,7 +1763,7 @@ impl OpenCADStudio { units_popup_open: false, isolate_popup_open: false, selection_filter_popup_open: false, - statusbar_config: crate::ui::statusbar_config::StatusBarConfig::load(), + statusbar_config: crate::ui::statusbar::statusbar_config::StatusBarConfig::load(), last_saved_settings: None, otrack_active: None, clean_screen: false, diff --git a/src/app/update/mod.rs b/src/app/update/mod.rs index ae07d79eb..30c6b8664 100644 --- a/src/app/update/mod.rs +++ b/src/app/update/mod.rs @@ -954,7 +954,7 @@ impl OpenCADStudio { if let Some(dl) = self.tabs[i].scene.document.layers.get_mut(&name) { dl.color = AcadColor::Index(aci); } - use crate::ui::layers::iced_color_from_acad; + use crate::ui::window::layers::iced_color_from_acad; let new_color = iced_color_from_acad(&AcadColor::Index(aci)); if let Some(pl) = self.tabs[i].layers.layers.get_mut(idx) { pl.color = new_color; diff --git a/src/app/view/mod.rs b/src/app/view/mod.rs index 2130b33aa..bdcfc7b8a 100644 --- a/src/app/view/mod.rs +++ b/src/app/view/mod.rs @@ -1083,7 +1083,7 @@ impl OpenCADStudio { }; let statusbar_menu_layer: Element<'_, Message> = if self.statusbar_menu_open { - crate::ui::statusbar_menu::statusbar_menu_overlay(&self.statusbar_config) + crate::ui::statusbar::statusbar_menu::statusbar_menu_overlay(&self.statusbar_config) } else { iced::widget::Space::new().width(0).height(0).into() }; @@ -1141,7 +1141,7 @@ impl OpenCADStudio { }; let open_progress_layer: Element<'_, Message> = if let Some(p) = &self.opening { - crate::ui::open_progress::view(p, iced::time::Instant::now()) + crate::ui::window::open_progress::view(p, iced::time::Instant::now()) } else { iced::widget::Space::new().width(0).height(0).into() }; diff --git a/src/app/view/modal.rs b/src/app/view/modal.rs index 313cfd959..fa0515c59 100644 --- a/src/app/view/modal.rs +++ b/src/app/view/modal.rs @@ -17,16 +17,16 @@ impl OpenCADStudio { .into() } Some(match self.active_modal? { - super::super::ModalKind::About => crate::ui::about::view_window(), + super::super::ModalKind::About => crate::ui::window::about::view_window(), super::super::ModalKind::Shortcuts => { - sized(crate::ui::shortcuts::view_window(&self.shortcut_overrides), 720, 520) + sized(crate::ui::window::shortcuts::view_window(&self.shortcut_overrides), 720, 520) } super::super::ModalKind::PluginManager => sized( - crate::ui::plugin_manager::view_window( + crate::ui::window::plugin_manager::view_window( &self.disabled_plugins, &self.external_plugins, &self.loaded_plugin_ids, - crate::ui::plugin_manager::MarketView { + crate::ui::window::plugin_manager::MarketView { registry: &self.plugin_registry, input: &self.plugin_repo_input, repos: &self.plugin_repos, @@ -41,14 +41,14 @@ impl OpenCADStudio { super::super::ModalKind::UpdateNotice => { let latest = self.update_notice_version.as_deref().unwrap_or("?"); let body = self.update_notice_body.as_deref().unwrap_or(""); - sized(crate::ui::update_notice::view_window(latest, body), 560, 460) + sized(crate::ui::window::update_notice::view_window(latest, body), 560, 460) } super::super::ModalKind::Layers => { let tab = &self.tabs[self.active_tab]; sized(tab.layers.view_window(), 900, 360) } super::super::ModalKind::PageSetup => sized( - crate::ui::page_setup::view_window( + crate::ui::window::page_setup::view_window( &self.page_setup_w, &self.page_setup_h, &self.page_setup_plot_area, @@ -66,7 +66,7 @@ impl OpenCADStudio { let layouts = self.tabs[i].scene.layout_names(); let current = self.tabs[i].scene.current_layout.clone(); sized( - crate::ui::layout_manager::view_window( + crate::ui::window::layout_manager::view_window( layouts, &self.layout_manager_selected, &self.layout_manager_rename_buf, diff --git a/src/ui/mod.rs b/src/ui/mod.rs index 1a17b72dc..45c402d07 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -2,33 +2,24 @@ /// Change this to scale the ribbon, layer manager rows, and property panel rows uniformly. pub const ROW_H: f32 = 26.0; -pub mod about; pub mod app_menu; pub mod color_select; pub mod command_line; pub mod icons; -pub mod layers; -pub mod layout_manager; pub mod modal; -pub mod open_progress; pub mod overlay; -pub mod page_setup; -pub mod plugin_manager; pub mod popup; pub mod properties; pub mod ribbon; pub mod side_toolbar; -pub mod shortcuts; pub mod statusbar; -pub mod statusbar_config; -pub mod statusbar_menu; pub mod style; pub mod text_util; -pub mod update_notice; +pub mod window; pub use app_menu::AppMenu; pub use command_line::CommandLine; -pub use layers::LayerPanel; pub use properties::PropertiesPanel; pub use ribbon::Ribbon; pub use statusbar::StatusBar; +pub use window::layers::LayerPanel; diff --git a/src/ui/statusbar.rs b/src/ui/statusbar/mod.rs similarity index 99% rename from src/ui/statusbar.rs rename to src/ui/statusbar/mod.rs index e1ae26e29..ef54f9104 100644 --- a/src/ui/statusbar.rs +++ b/src/ui/statusbar/mod.rs @@ -1,5 +1,8 @@ //! Bottom status bar — Model/Layout tabs + OSNAP toggle + status info +pub mod statusbar_config; +pub mod statusbar_menu; + use iced::widget::tooltip::Position as TipPos; use iced::widget::{button, column, container, mouse_area, row, text, text_input, tooltip, Row}; use iced::{Background, Border, Color, Element, Length, Theme}; @@ -10,7 +13,7 @@ pub const LAYOUT_RENAME_INPUT_ID: &str = "layout_rename_input"; use crate::app::Message; use crate::snap::Snapper; -use crate::ui::statusbar_config::{StatusBarConfig, StatusPill}; +use crate::ui::statusbar::statusbar_config::{StatusBarConfig, StatusPill}; #[derive(Clone, Default)] pub struct StatusBar { diff --git a/src/ui/statusbar_config.rs b/src/ui/statusbar/statusbar_config.rs similarity index 100% rename from src/ui/statusbar_config.rs rename to src/ui/statusbar/statusbar_config.rs diff --git a/src/ui/statusbar_menu.rs b/src/ui/statusbar/statusbar_menu.rs similarity index 97% rename from src/ui/statusbar_menu.rs rename to src/ui/statusbar/statusbar_menu.rs index 720cf2957..ef9123a49 100644 --- a/src/ui/statusbar_menu.rs +++ b/src/ui/statusbar/statusbar_menu.rs @@ -6,7 +6,7 @@ use iced::widget::{button, column, container, mouse_area, row, text}; use iced::{Background, Border, Color, Element, Fill, Length, Padding, Theme}; use crate::app::Message; -use crate::ui::statusbar_config::{StatusBarConfig, StatusPill}; +use crate::ui::statusbar::statusbar_config::{StatusBarConfig, StatusPill}; /// Full-screen overlay: transparent click-catcher + the menu panel pinned to /// the bottom-right, just above the status bar. diff --git a/src/ui/about.rs b/src/ui/window/about.rs similarity index 100% rename from src/ui/about.rs rename to src/ui/window/about.rs diff --git a/src/ui/layers.rs b/src/ui/window/layers.rs similarity index 100% rename from src/ui/layers.rs rename to src/ui/window/layers.rs diff --git a/src/ui/layout_manager.rs b/src/ui/window/layout_manager.rs similarity index 100% rename from src/ui/layout_manager.rs rename to src/ui/window/layout_manager.rs diff --git a/src/ui/window/mod.rs b/src/ui/window/mod.rs new file mode 100644 index 000000000..bce850592 --- /dev/null +++ b/src/ui/window/mod.rs @@ -0,0 +1,8 @@ +pub mod about; +pub mod layout_manager; +pub mod page_setup; +pub mod plugin_manager; +pub mod shortcuts; +pub mod layers; +pub mod update_notice; +pub mod open_progress; diff --git a/src/ui/open_progress.rs b/src/ui/window/open_progress.rs similarity index 100% rename from src/ui/open_progress.rs rename to src/ui/window/open_progress.rs diff --git a/src/ui/page_setup.rs b/src/ui/window/page_setup.rs similarity index 100% rename from src/ui/page_setup.rs rename to src/ui/window/page_setup.rs diff --git a/src/ui/plugin_manager.rs b/src/ui/window/plugin_manager.rs similarity index 100% rename from src/ui/plugin_manager.rs rename to src/ui/window/plugin_manager.rs diff --git a/src/ui/shortcuts.rs b/src/ui/window/shortcuts.rs similarity index 100% rename from src/ui/shortcuts.rs rename to src/ui/window/shortcuts.rs diff --git a/src/ui/update_notice.rs b/src/ui/window/update_notice.rs similarity index 100% rename from src/ui/update_notice.rs rename to src/ui/window/update_notice.rs