refactor: group ui/ style+popup dirs, rename cmd_result driver

- Group the flat src/ui/ dir: move the 9 style editors into ui/style/
  (dimstyle, mleaderstyle, mlstyle, plotstyle, textstyle, tablestyle,
  point_style, style_list, style_manager) and the 6 popups into
  ui/popup/ (cycle, isolate, scale, selection_filter, snap, units).
  Call sites repointed to crate::ui::style::/crate::ui::popup::; no
  compat re-exports. ui/ root drops from 36 to 21 files.
- Rename app/cmd_result.rs -> app/command_driver.rs: the file is the
  StepInput->feed_command driver, not the CmdResult type (which lives
  in command.rs). Name now matches contents.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-06-26 23:34:10 +03:00
commit 9cd0479047
24 changed files with 40 additions and 38 deletions

View file

@ -2,7 +2,7 @@
mod automation; mod automation;
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
pub use automation::{export_headless, serve}; pub use automation::{export_headless, serve};
mod cmd_result; mod command_driver;
mod commands; mod commands;
mod document; mod document;
mod expr_eval; mod expr_eval;

View file

@ -2703,7 +2703,7 @@ impl OpenCADStudio {
self.style_rename_start(kind, name); self.style_rename_start(kind, name);
// Focus the freshly-shown rename field so the user can type // Focus the freshly-shown rename field so the user can type
// immediately after the double click. // immediately after the double click.
iced::widget::operation::focus(crate::ui::style_list::rename_input_id()) iced::widget::operation::focus(crate::ui::style::style_list::rename_input_id())
} }
Message::StyleRenameEdit(s) => { Message::StyleRenameEdit(s) => {
self.style_rename_buf = s; self.style_rename_buf = s;

View file

@ -883,7 +883,7 @@ impl OpenCADStudio {
.collect(); .collect();
if !items.is_empty() { if !items.is_empty() {
viewport_stack = viewport_stack viewport_stack = viewport_stack
.push(crate::ui::cycle_popup::cycle_popup_overlay(*pt, items)); .push(crate::ui::popup::cycle_popup::cycle_popup_overlay(*pt, items));
} }
} }
} }
@ -1065,14 +1065,14 @@ impl OpenCADStudio {
.height(Fill); .height(Fill);
let snap_layer: Element<'_, Message> = if self.snap_popup_open { let snap_layer: Element<'_, Message> = if self.snap_popup_open {
crate::ui::snap_popup::snap_popup_overlay(&self.snapper, 4.0) crate::ui::popup::snap_popup::snap_popup_overlay(&self.snapper, 4.0)
} else { } else {
iced::widget::Space::new().width(0).height(0).into() iced::widget::Space::new().width(0).height(0).into()
}; };
let scale_layer: Element<'_, Message> = if self.scale_popup_open { let scale_layer: Element<'_, Message> = if self.scale_popup_open {
let is_model = tab.scene.current_layout == "Model"; let is_model = tab.scene.current_layout == "Model";
crate::ui::scale_popup::scale_popup_overlay( crate::ui::popup::scale_popup::scale_popup_overlay(
is_model, is_model,
tab.scene.annotation_scale, tab.scene.annotation_scale,
tab.scene.first_viewport_scale(), tab.scene.first_viewport_scale(),
@ -1089,13 +1089,13 @@ impl OpenCADStudio {
}; };
let units_layer: Element<'_, Message> = if self.units_popup_open { let units_layer: Element<'_, Message> = if self.units_popup_open {
crate::ui::units_popup::units_popup_overlay(tab.scene.document.header.insertion_units) crate::ui::popup::units_popup::units_popup_overlay(tab.scene.document.header.insertion_units)
} else { } else {
iced::widget::Space::new().width(0).height(0).into() iced::widget::Space::new().width(0).height(0).into()
}; };
let isolate_layer: Element<'_, Message> = if self.isolate_popup_open { let isolate_layer: Element<'_, Message> = if self.isolate_popup_open {
crate::ui::isolate_popup::isolate_popup_overlay( crate::ui::popup::isolate_popup::isolate_popup_overlay(
!tab.scene.selected.is_empty(), !tab.scene.selected.is_empty(),
tab.scene.is_isolation_active(), tab.scene.is_isolation_active(),
) )
@ -1110,7 +1110,7 @@ impl OpenCADStudio {
.into_iter() .into_iter()
.map(|s| s.to_string()) .map(|s| s.to_string())
.collect(); .collect();
crate::ui::selection_filter_popup::selection_filter_popup_overlay( crate::ui::popup::selection_filter_popup::selection_filter_popup_overlay(
types, types,
&tab.scene.selection_filter, &tab.scene.selection_filter,
) )

View file

@ -77,7 +77,7 @@ impl OpenCADStudio {
) )
} }
super::super::ModalKind::Plotstyle => sized( super::super::ModalKind::Plotstyle => sized(
crate::ui::plotstyle::view_window( crate::ui::style::plotstyle::view_window(
self.active_plot_style.as_ref(), self.active_plot_style.as_ref(),
self.plotstyle_panel_aci, self.plotstyle_panel_aci,
&self.ps_color_buf, &self.ps_color_buf,
@ -104,7 +104,7 @@ impl OpenCADStudio {
.map(|s| (s.flags.backward, s.flags.upside_down, s.annotative)) .map(|s| (s.flags.backward, s.flags.upside_down, s.annotative))
.unwrap_or((false, false, false)); .unwrap_or((false, false, false));
sized( sized(
crate::ui::textstyle::view_window(crate::ui::textstyle::TextStyleView { crate::ui::style::textstyle::view_window(crate::ui::style::textstyle::TextStyleView {
styles, styles,
selected: &self.textstyle_selected, selected: &self.textstyle_selected,
current: &tab.scene.document.header.current_text_style_name, current: &tab.scene.document.header.current_text_style_name,
@ -144,7 +144,7 @@ impl OpenCADStudio {
_ => None, _ => None,
}); });
sized( sized(
crate::ui::mlstyle::view_window( crate::ui::style::mlstyle::view_window(
styles, styles,
&self.mlstyle_selected, &self.mlstyle_selected,
selected_style, selected_style,
@ -174,7 +174,7 @@ impl OpenCADStudio {
_ => None, _ => None,
}); });
sized( sized(
crate::ui::tablestyle::view_window( crate::ui::style::tablestyle::view_window(
styles, styles,
&self.tablestyle_selected, &self.tablestyle_selected,
&self.ribbon.active_table_style, &self.ribbon.active_table_style,
@ -270,7 +270,7 @@ impl OpenCADStudio {
None => Default::default(), None => Default::default(),
}; };
sized( sized(
crate::ui::mleaderstyle::view_window(crate::ui::mleaderstyle::MLeaderStyleView { crate::ui::style::mleaderstyle::view_window(crate::ui::style::mleaderstyle::MLeaderStyleView {
styles, styles,
selected: &self.mleaderstyle_selected, selected: &self.mleaderstyle_selected,
style: selected_style, style: selected_style,
@ -370,7 +370,7 @@ impl OpenCADStudio {
), ),
None => Default::default(), None => Default::default(),
}; };
sized(crate::ui::dimstyle::view_window( sized(crate::ui::style::dimstyle::view_window(
styles, styles,
&self.dimstyle_selected, &self.dimstyle_selected,
&self.tabs[self.active_tab] &self.tabs[self.active_tab]
@ -379,7 +379,7 @@ impl OpenCADStudio {
.header .header
.current_dimstyle_name, .current_dimstyle_name,
self.dimstyle_tab, self.dimstyle_tab,
crate::ui::dimstyle::DimStyleValues { crate::ui::style::dimstyle::DimStyleValues {
dimdle: &self.ds_dimdle, dimdle: &self.ds_dimdle,
dimdli: &self.ds_dimdli, dimdli: &self.ds_dimdli,
dimgap: &self.ds_dimgap, dimgap: &self.ds_dimgap,
@ -484,7 +484,7 @@ impl OpenCADStudio {
sized(unsaved_changes_dialog_window(&tab_name), 420, 160) sized(unsaved_changes_dialog_window(&tab_name), 420, 160)
} }
super::super::ModalKind::PointStyle => sized( super::super::ModalKind::PointStyle => sized(
crate::ui::point_style::view_window( crate::ui::style::point_style::view_window(
self.tabs[self.active_tab].scene.document.header.point_display_mode, self.tabs[self.active_tab].scene.document.header.point_display_mode,
self.point_size_relative, self.point_size_relative,
&self.point_size_buf, &self.point_size_buf,

View file

@ -6,37 +6,24 @@ pub mod about;
pub mod app_menu; pub mod app_menu;
pub mod color_select; pub mod color_select;
pub mod command_line; pub mod command_line;
pub mod cycle_popup;
pub mod dimstyle;
pub mod icons; pub mod icons;
pub mod isolate_popup;
pub mod layers; pub mod layers;
pub mod layout_manager; pub mod layout_manager;
pub mod mleaderstyle;
pub mod mlstyle;
pub mod modal; pub mod modal;
pub mod open_progress; pub mod open_progress;
pub mod overlay; pub mod overlay;
pub mod page_setup; pub mod page_setup;
pub mod plotstyle;
pub mod plugin_manager; pub mod plugin_manager;
pub mod point_style; pub mod popup;
pub mod properties; pub mod properties;
pub mod ribbon; pub mod ribbon;
pub mod scale_popup;
pub mod selection_filter_popup;
pub mod side_toolbar; pub mod side_toolbar;
pub mod shortcuts; pub mod shortcuts;
pub mod snap_popup;
pub mod statusbar; pub mod statusbar;
pub mod statusbar_config; pub mod statusbar_config;
pub mod statusbar_menu; pub mod statusbar_menu;
pub mod style_list; pub mod style;
pub mod style_manager;
pub mod tablestyle;
pub mod text_util; pub mod text_util;
pub mod textstyle;
pub mod units_popup;
pub mod update_notice; pub mod update_notice;
pub use app_menu::AppMenu; pub use app_menu::AppMenu;

6
src/ui/popup/mod.rs Normal file
View file

@ -0,0 +1,6 @@
pub mod cycle_popup;
pub mod isolate_popup;
pub mod scale_popup;
pub mod selection_filter_popup;
pub mod snap_popup;
pub mod units_popup;

View file

@ -167,7 +167,7 @@ impl StatusBar {
if vis(StatusPill::Units) { if vis(StatusPill::Units) {
right_status = right_status.push(tip( right_status = right_status.push(tip(
units_btn( units_btn(
crate::ui::units_popup::unit_short(insertion_units), crate::ui::popup::units_popup::unit_short(insertion_units),
units_popup_open, units_popup_open,
), ),
"Drawing Units (INSUNITS)\nClick to change", "Drawing Units (INSUNITS)\nClick to change",

View file

@ -792,7 +792,7 @@ pub fn view_window<'a>(
left: 0.0, left: 0.0,
}); });
crate::ui::style_manager::view(crate::ui::style_manager::Scaffold { crate::ui::style::style_manager::view(crate::ui::style::style_manager::Scaffold {
kind: crate::app::StyleKind::Dim, kind: crate::app::StyleKind::Dim,
styles: &styles, styles: &styles,
selected, selected,

View file

@ -413,7 +413,7 @@ pub fn view_window<'a>(v: MLeaderStyleView<'a>) -> Element<'a, Message> {
let right_panel = container(details).width(Fill).height(Fill); let right_panel = container(details).width(Fill).height(Fill);
crate::ui::style_manager::view(crate::ui::style_manager::Scaffold { crate::ui::style::style_manager::view(crate::ui::style::style_manager::Scaffold {
kind: crate::app::StyleKind::MLeader, kind: crate::app::StyleKind::MLeader,
styles: &v.styles, styles: &v.styles,
selected: v.selected, selected: v.selected,

View file

@ -79,7 +79,7 @@ pub fn view_window<'a>(
let right_panel = container(details).width(Fill).height(Fill); let right_panel = container(details).width(Fill).height(Fill);
crate::ui::style_manager::view(crate::ui::style_manager::Scaffold { crate::ui::style::style_manager::view(crate::ui::style::style_manager::Scaffold {
kind: crate::app::StyleKind::MLine, kind: crate::app::StyleKind::MLine,
styles: &styles, styles: &styles,
selected, selected,

9
src/ui/style/mod.rs Normal file
View file

@ -0,0 +1,9 @@
pub mod dimstyle;
pub mod mleaderstyle;
pub mod mlstyle;
pub mod plotstyle;
pub mod textstyle;
pub mod tablestyle;
pub mod point_style;
pub mod style_list;
pub mod style_manager;

View file

@ -115,7 +115,7 @@ pub fn view<'a, 'b>(s: Scaffold<'a, 'b>) -> Element<'a, Message> {
.map(|name| { .map(|name| {
let is_sel = name.as_str() == s.selected; let is_sel = name.as_str() == s.selected;
let is_current = s.current == Some(name.as_str()); let is_current = s.current == Some(name.as_str());
crate::ui::style_list::item( crate::ui::style::style_list::item(
name, name,
is_current, is_current,
is_sel, is_sel,

View file

@ -369,7 +369,7 @@ pub fn view_window<'a>(
let right_panel = container(details).width(Fill).height(Fill); let right_panel = container(details).width(Fill).height(Fill);
crate::ui::style_manager::view(crate::ui::style_manager::Scaffold { crate::ui::style::style_manager::view(crate::ui::style::style_manager::Scaffold {
kind: crate::app::StyleKind::Table, kind: crate::app::StyleKind::Table,
styles: &styles, styles: &styles,
selected, selected,

View file

@ -306,7 +306,7 @@ pub fn view_window<'a>(v: TextStyleView<'a>) -> Element<'a, Message> {
let editor = row![font_panel, vsep(), ttf_panel, vsep(), props_panel].height(Fill); let editor = row![font_panel, vsep(), ttf_panel, vsep(), props_panel].height(Fill);
crate::ui::style_manager::view(crate::ui::style_manager::Scaffold { crate::ui::style::style_manager::view(crate::ui::style::style_manager::Scaffold {
kind: StyleKind::Text, kind: StyleKind::Text,
styles: &styles, styles: &styles,
selected, selected,