From ae3868944ad9c256f3e7ee4c127267b89b805c7b Mon Sep 17 00:00:00 2001 From: ramox81 <184937705+ramox81@users.noreply.github.com> Date: Wed, 30 Sep 2026 15:01:04 +0300 Subject: [PATCH] Point cloud manager: automation for search, folding and selection Co-Authored-By: Claude Opus 5.5 --- src/app/control/actions.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/app/control/actions.rs b/src/app/control/actions.rs index 62ea3f2b3..78401823b 100644 --- a/src/app/control/actions.rs +++ b/src/app/control/actions.rs @@ -72,6 +72,7 @@ pub(super) const NAMES: &[&str] = &[ "pdf_dialog_ok", "pdf_layer_toggle", "pc_manager_toggle", + "pc_manager", "pdf_page_select", "pc_colormap", "ribbon_tab", @@ -733,6 +734,21 @@ impl OpenCADStudio { }; Message::PcManager(PcManagerMsg::Toggle(handle, row)) } + // Point Cloud Manager tree: "search=", "collapse", "expand", + // "toggle_node=" or "select=". + "pc_manager" => { + use crate::ui::window::pc_manager::PcManagerMsg as M; + let value = string(req, "value")?; + let (key, arg) = value.split_once('=').unwrap_or((value, "")); + Message::PcManager(match key { + "search" => M::Search(arg.into()), + "collapse" => M::CollapseAll, + "expand" => M::ExpandAll, + "toggle_node" => M::Expand(arg.into()), + "select" => M::Select(arg.into()), + _ => return Err(failure("invalid_value", "Unknown point cloud manager edit")), + }) + } // Attach dialog: choose pages by index ("0,2"). "pdf_page_select" => { let pages: Vec = string(req, "value")?