From f76b6cb3bb0d4b58c8d59e36761aefda93e28533 Mon Sep 17 00:00:00 2001 From: ramox81 <184937705+ramox81@users.noreply.github.com> Date: Fri, 2 Oct 2026 17:53:28 +0300 Subject: [PATCH] WIP count: automation, locales --- locales/ar-SA/opencadstudio.ftl | 17 ++++++++ locales/bg-BG/opencadstudio.ftl | 17 ++++++++ locales/cs-CZ/opencadstudio.ftl | 17 ++++++++ locales/de-DE/opencadstudio.ftl | 17 ++++++++ locales/el-GR/opencadstudio.ftl | 17 ++++++++ locales/en-US/opencadstudio.ftl | 17 ++++++++ locales/es-ES/opencadstudio.ftl | 17 ++++++++ locales/fi-FI/opencadstudio.ftl | 17 ++++++++ locales/fr-FR/opencadstudio.ftl | 17 ++++++++ locales/hi-IN/opencadstudio.ftl | 17 ++++++++ locales/hu-HU/opencadstudio.ftl | 17 ++++++++ locales/it-IT/opencadstudio.ftl | 17 ++++++++ locales/ja-JP/opencadstudio.ftl | 17 ++++++++ locales/ko-KR/opencadstudio.ftl | 17 ++++++++ locales/nl-NL/opencadstudio.ftl | 17 ++++++++ locales/pl-PL/opencadstudio.ftl | 17 ++++++++ locales/pt-BR/opencadstudio.ftl | 17 ++++++++ locales/ru-RU/opencadstudio.ftl | 17 ++++++++ locales/tr-TR/opencadstudio.ftl | 17 ++++++++ locales/zh-CN/opencadstudio.ftl | 17 ++++++++ locales/zh-TW/opencadstudio.ftl | 17 ++++++++ src/app/control/actions.rs | 69 +++++++++++++++++++++++++++++++ src/locale_catalog.rs | 16 +++++++ src/modules/view/count_palette.rs | 2 +- src/ui/window/count_palette.rs | 4 +- 25 files changed, 445 insertions(+), 3 deletions(-) diff --git a/locales/ar-SA/opencadstudio.ftl b/locales/ar-SA/opencadstudio.ftl index 97fec3890..1a8715e9d 100644 --- a/locales/ar-SA/opencadstudio.ftl +++ b/locales/ar-SA/opencadstudio.ftl @@ -5930,3 +5930,20 @@ style-manager = .center-of-text-overline = مركز النص مع خط علوي .block-extents = نطاق الكتلة .base-point = نقطة الأساس +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/bg-BG/opencadstudio.ftl b/locales/bg-BG/opencadstudio.ftl index 0fb1d43e9..814d0f4d4 100644 --- a/locales/bg-BG/opencadstudio.ftl +++ b/locales/bg-BG/opencadstudio.ftl @@ -5918,3 +5918,20 @@ style-manager = .center-of-text-overline = Център на надчертан текст .block-extents = Обхват на блок .base-point = Базова точка +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/cs-CZ/opencadstudio.ftl b/locales/cs-CZ/opencadstudio.ftl index d17ecfb1d..8613591b1 100644 --- a/locales/cs-CZ/opencadstudio.ftl +++ b/locales/cs-CZ/opencadstudio.ftl @@ -5915,3 +5915,20 @@ style-manager = .center-of-text-overline = Střed textu s přeškrtnutím .block-extents = Blokovat rozsahy .base-point = Základní bod +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/de-DE/opencadstudio.ftl b/locales/de-DE/opencadstudio.ftl index 7fd9f0bd4..c05f97f7e 100644 --- a/locales/de-DE/opencadstudio.ftl +++ b/locales/de-DE/opencadstudio.ftl @@ -5916,3 +5916,20 @@ style-manager = .center-of-text-overline = Textzentrum mit Oberstrich .block-extents = Blockgrenzen .base-point = Basispunkt +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/el-GR/opencadstudio.ftl b/locales/el-GR/opencadstudio.ftl index 53601f4be..d39f35443 100644 --- a/locales/el-GR/opencadstudio.ftl +++ b/locales/el-GR/opencadstudio.ftl @@ -5918,3 +5918,20 @@ style-manager = .center-of-text-overline = Κέντρο του κειμένου με επιγράμμιση .block-extents = Όρια μπλοκ .base-point = Σημείο βάσης +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/en-US/opencadstudio.ftl b/locales/en-US/opencadstudio.ftl index dcbbb7b69..d6ba4c9c1 100644 --- a/locales/en-US/opencadstudio.ftl +++ b/locales/en-US/opencadstudio.ftl @@ -5919,3 +5919,20 @@ style-manager = .center-of-text-overline = Center of text with overline .block-extents = Block extents .base-point = Base point +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/es-ES/opencadstudio.ftl b/locales/es-ES/opencadstudio.ftl index df1b19661..0ad5c4630 100644 --- a/locales/es-ES/opencadstudio.ftl +++ b/locales/es-ES/opencadstudio.ftl @@ -5918,3 +5918,20 @@ style-manager = .center-of-text-overline = Centro del texto con suprarrayado .block-extents = Extensión del bloque .base-point = Punto base +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/fi-FI/opencadstudio.ftl b/locales/fi-FI/opencadstudio.ftl index 99f18d514..7f43aa3fc 100644 --- a/locales/fi-FI/opencadstudio.ftl +++ b/locales/fi-FI/opencadstudio.ftl @@ -5915,3 +5915,20 @@ style-manager = .center-of-text-overline = Tekstin keskikohta yliviivauksella .block-extents = Estä laajuudet .base-point = Peruspiste +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/fr-FR/opencadstudio.ftl b/locales/fr-FR/opencadstudio.ftl index bc00d9334..d634008d5 100644 --- a/locales/fr-FR/opencadstudio.ftl +++ b/locales/fr-FR/opencadstudio.ftl @@ -5917,3 +5917,20 @@ style-manager = .center-of-text-overline = Centre du texte avec surlignement .block-extents = Limites du bloc .base-point = Point de base +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/hi-IN/opencadstudio.ftl b/locales/hi-IN/opencadstudio.ftl index 59440e35e..e0f26ae1e 100644 --- a/locales/hi-IN/opencadstudio.ftl +++ b/locales/hi-IN/opencadstudio.ftl @@ -5906,3 +5906,20 @@ style-manager = .center-of-text-overline = ऊपरी रेखा सहित टेक्स्ट का केंद्र .block-extents = ब्लॉक परिमिति .base-point = आधार बिंदु +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/hu-HU/opencadstudio.ftl b/locales/hu-HU/opencadstudio.ftl index 2066c5156..9df1e87b6 100644 --- a/locales/hu-HU/opencadstudio.ftl +++ b/locales/hu-HU/opencadstudio.ftl @@ -5917,3 +5917,20 @@ style-manager = .center-of-text-overline = Szöveg közepe áthúzással .block-extents = Kiterjedések blokkolása .base-point = Alappont +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/it-IT/opencadstudio.ftl b/locales/it-IT/opencadstudio.ftl index bab01a81c..01c52fbb7 100644 --- a/locales/it-IT/opencadstudio.ftl +++ b/locales/it-IT/opencadstudio.ftl @@ -5917,3 +5917,20 @@ style-manager = .center-of-text-overline = Centro del testo con sopralineato .block-extents = Blocca estensioni .base-point = Punto base +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/ja-JP/opencadstudio.ftl b/locales/ja-JP/opencadstudio.ftl index f0df48710..88aaa76ca 100644 --- a/locales/ja-JP/opencadstudio.ftl +++ b/locales/ja-JP/opencadstudio.ftl @@ -5906,3 +5906,20 @@ style-manager = .center-of-text-overline = 上線付きテキストの中心 .block-extents = ブロック範囲 .base-point = 基点 +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/ko-KR/opencadstudio.ftl b/locales/ko-KR/opencadstudio.ftl index 6ad109cc7..599abf44d 100644 --- a/locales/ko-KR/opencadstudio.ftl +++ b/locales/ko-KR/opencadstudio.ftl @@ -5917,3 +5917,20 @@ style-manager = .center-of-text-overline = 윗줄이 있는 텍스트 중앙 .block-extents = 블록 범위 .base-point = 기준점 +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/nl-NL/opencadstudio.ftl b/locales/nl-NL/opencadstudio.ftl index 2f5e39e39..9694b0e11 100644 --- a/locales/nl-NL/opencadstudio.ftl +++ b/locales/nl-NL/opencadstudio.ftl @@ -5916,3 +5916,20 @@ style-manager = .center-of-text-overline = Tekstmiddelpunt met bovenstreep .block-extents = Symboolgrenzen .base-point = Basispunt +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/pl-PL/opencadstudio.ftl b/locales/pl-PL/opencadstudio.ftl index c31421220..dad85cf06 100644 --- a/locales/pl-PL/opencadstudio.ftl +++ b/locales/pl-PL/opencadstudio.ftl @@ -5917,3 +5917,20 @@ style-manager = .center-of-text-overline = Środek tekstu z podkreśleniem .block-extents = Zasięg bloku .base-point = Punkt bazowy +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/pt-BR/opencadstudio.ftl b/locales/pt-BR/opencadstudio.ftl index e96dea04d..820c37af5 100644 --- a/locales/pt-BR/opencadstudio.ftl +++ b/locales/pt-BR/opencadstudio.ftl @@ -5918,3 +5918,20 @@ style-manager = .center-of-text-overline = Centro do texto com sobrelinha .block-extents = Extensões do bloco .base-point = Ponto base +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/ru-RU/opencadstudio.ftl b/locales/ru-RU/opencadstudio.ftl index e3eb50fa6..f6fdb4c9c 100644 --- a/locales/ru-RU/opencadstudio.ftl +++ b/locales/ru-RU/opencadstudio.ftl @@ -5919,3 +5919,20 @@ style-manager = .center-of-text-overline = Центр текста с надчёркиванием .block-extents = Габариты блока .base-point = Базовая точка +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/tr-TR/opencadstudio.ftl b/locales/tr-TR/opencadstudio.ftl index 3b01d7c2c..ab1501909 100644 --- a/locales/tr-TR/opencadstudio.ftl +++ b/locales/tr-TR/opencadstudio.ftl @@ -5841,3 +5841,20 @@ style-manager = .center-of-text-overline = Üst çizgili metin merkezi .block-extents = Blok sınırları .base-point = Taban noktası +count-feature = + .palette = Sayım + .menu = Say + .selection = Seçimi say + .review = Sayım ayrıntılarını incele + .insert-field = Sayım alanı ekle + .expand-by = GENİŞLET + .mirror-state = Ayna durumu + .area = Belirli bir alanda say + .create-table = Tablo Oluştur + .back = Listeye dön + .match-scale = Ölçeği Eşleştir + .match-mirror = Ayna Durumunu Eşleştir + .error-report = Sayım hata raporu: __ocs_fmt_0__ + .toolbar-count = Sayım: __ocs_fmt_0__ + .overlap = Üst üste binen nesne + .show-instances = Örnekleri göster diff --git a/locales/zh-CN/opencadstudio.ftl b/locales/zh-CN/opencadstudio.ftl index 290f64be0..770c2600c 100644 --- a/locales/zh-CN/opencadstudio.ftl +++ b/locales/zh-CN/opencadstudio.ftl @@ -5901,3 +5901,20 @@ style-manager = .center-of-text-overline = 带上划线的文字中心 .block-extents = 块范围 .base-point = 基点 +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/locales/zh-TW/opencadstudio.ftl b/locales/zh-TW/opencadstudio.ftl index c38cc4a04..b32682a8c 100644 --- a/locales/zh-TW/opencadstudio.ftl +++ b/locales/zh-TW/opencadstudio.ftl @@ -5913,3 +5913,20 @@ style-manager = .center-of-text-overline = 帶上划線的文字中心 .block-extents = 圖塊範圍 .base-point = 基點 +count-feature = + .palette = Count + .menu = Count + .selection = Count Selection + .review = Review Count Details + .insert-field = Insert Count Field + .expand-by = EXPAND BY + .mirror-state = Mirror State + .area = Count in a specified area + .create-table = Create Table + .back = Back to List + .match-scale = Match Scale + .match-mirror = Match Mirror State + .error-report = Count Error Report: __ocs_fmt_0__ + .toolbar-count = Count: __ocs_fmt_0__ + .overlap = Overlapping object + .show-instances = Show Count Instances diff --git a/src/app/control/actions.rs b/src/app/control/actions.rs index 671a08b77..e39367343 100644 --- a/src/app/control/actions.rs +++ b/src/app/control/actions.rs @@ -73,6 +73,7 @@ pub(super) const NAMES: &[&str] = &[ "pdf_layer_toggle", "pc_manager_toggle", "pc_manager", + "count_palette", "blocks_palette", "pdf_page_select", "pc_colormap", @@ -813,6 +814,74 @@ impl OpenCADStudio { } // Point Cloud Manager tree: "search=", "collapse", "expand", // "toggle_node=" or "select=". + // Count palette and count mode: "search=", "sort=name|count", + // "open=NAME", "child=NAME:" (an expanded row), "menu=:NAME", "create_table", "check=NAME:1", + // "all=1", "table_cancel", "table_insert", "back", "match=<0|1|2>:1", + // "details", "errors", "error=", "area", "prev", "next", "select", + // "field", "close". + "count_palette" => { + use crate::ui::window::count_palette::{CountMsg as M, RowAction}; + let value = string(req, "value")?; + let (key, arg) = value.split_once('=').unwrap_or((value, "")); + let flag = |s: &str| s == "1" || s.eq_ignore_ascii_case("true"); + let bad = || failure("invalid_value", "Unknown count palette edit"); + Message::Count(match key { + "search" => M::Search(arg.into()), + "sort" => M::Sort(arg == "count"), + "open" => M::Open(arg.into(), codec::count::CountKey::default()), + "child" => { + let (name, n) = arg.rsplit_once(':').ok_or_else(bad)?; + let n: usize = n.parse().map_err(|_| bad())?; + let [l, s, m] = self.count_palette.expansion(name).ok_or_else(bad)?; + let i = self.active_tab; + let area = self.tabs[i].count.as_ref().and_then(|c| c.area.clone()); + let instances = codec::count::block_instances(&self.tabs[i].scene.document, area.as_deref()); + let (k, _) = codec::count::expanded_counts(&instances, name, l, s, m).into_iter().nth(n).ok_or_else(bad)?; + M::Open(name.into(), k) + } + "menu" => { + let (action, name) = arg.split_once(':').ok_or_else(bad)?; + let action = match action { + "review" => RowAction::Review, + "field" => RowAction::Field, + "layer" => RowAction::Expand(0), + "scale" => RowAction::Expand(1), + "mirror" => RowAction::Expand(2), + _ => return Err(bad()), + }; + M::Menu(name.into(), codec::count::CountKey::default(), action) + } + "create_table" => M::CreateTable, + "check" => { + let (name, on) = arg.rsplit_once(':').unwrap_or((arg, "1")); + M::TableCheck(name.into(), flag(on)) + } + "all" => M::TableAll(flag(arg)), + "table_cancel" => M::TableCancel, + "table_insert" => M::TableInsert, + "back" => M::Back, + "match" => { + let (k, on) = arg.split_once(':').unwrap_or((arg, "1")); + M::Match(k.parse::().ok().filter(|k| *k < 3).ok_or_else(bad)?, flag(on)) + } + "details" => M::ToggleDetails, + "errors" => M::ToggleErrors, + "error" => { + let i = self.active_tab; + let n: usize = arg.parse().map_err(|_| bad())?; + let mode = self.tabs[i].count.as_ref().ok_or_else(bad)?; + M::ShowError(*mode.result(&self.tabs[i].scene.document).errors.get(n).ok_or_else(bad)?) + } + "area" => M::Area, + "prev" => M::Prev, + "next" => M::Next, + "select" => M::Select, + "field" => M::Field, + "close" => M::Close, + _ => return Err(bad()), + }) + } "pc_manager" => { use crate::ui::window::pc_manager::PcManagerMsg as M; let value = string(req, "value")?; diff --git a/src/locale_catalog.rs b/src/locale_catalog.rs index 4ec7f0109..abf76c35e 100644 --- a/src/locale_catalog.rs +++ b/src/locale_catalog.rs @@ -5521,6 +5521,22 @@ pub(super) fn message_attribute(source: &str) -> Option<(&'static str, &'static "US Survey Feet" => Some(("common", "us-survey-feet")), "to layout" => Some(("common", "to-layout")), "{count} objects selected" => Some(("common", "count-objects-selected")), + "Count palette" => Some(("count-feature", "palette")), + "Count menu" => Some(("count-feature", "menu")), + "Count Selection" => Some(("count-feature", "selection")), + "Review Count Details" => Some(("count-feature", "review")), + "Insert Count Field" => Some(("count-feature", "insert-field")), + "EXPAND BY" => Some(("count-feature", "expand-by")), + "Mirror State" => Some(("count-feature", "mirror-state")), + "Count in a specified area" => Some(("count-feature", "area")), + "Create Table" => Some(("count-feature", "create-table")), + "Back to List" => Some(("count-feature", "back")), + "Match Scale" => Some(("count-feature", "match-scale")), + "Match Mirror State" => Some(("count-feature", "match-mirror")), + "Count Error Report: {}" => Some(("count-feature", "error-report")), + "Count: {}" => Some(("count-feature", "toolbar-count")), + "Overlapping object" => Some(("count-feature", "overlap")), + "Show Count Instances" => Some(("count-feature", "show-instances")), _ => None, } } diff --git a/src/modules/view/count_palette.rs b/src/modules/view/count_palette.rs index 97321536f..fd1d4e652 100644 --- a/src/modules/view/count_palette.rs +++ b/src/modules/view/count_palette.rs @@ -4,7 +4,7 @@ pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/d pub fn tool() -> ToolDef { ToolDef { id: "COUNTLIST", - label: "Count", + label: "Count palette", icon: ICON, event: ModuleEvent::Command("_COUNTLISTTOGGLE".to_string()), } diff --git a/src/ui/window/count_palette.rs b/src/ui/window/count_palette.rs index cfd74c2bb..7da66744c 100644 --- a/src/ui/window/count_palette.rs +++ b/src/ui/window/count_palette.rs @@ -334,7 +334,7 @@ fn list_view<'a>(palette: &'a CountPalette, instances: &[BlockInstance]) -> Elem let header = row![ header_button(crate::t!("Name").into_owned(), !palette.by_count, palette.descending, CountMsg::Sort(false)), Space::new().width(Fill), - header_button(crate::t!("Count column").into_owned(), palette.by_count, palette.descending, CountMsg::Sort(true)), + header_button(crate::t!("Count").into_owned(), palette.by_count, palette.descending, CountMsg::Sort(true)), ] .align_y(iced::Center); let mut list = column![].spacing(1); @@ -478,7 +478,7 @@ pub fn view<'a>( width: f32, auto_collapse: bool, ) -> Element<'a, Message> { - let title_bar = crate::ui::dock::title_bar(PanelId::Count, crate::t!("Count").into_owned(), auto_collapse); + let title_bar = crate::ui::dock::title_bar(PanelId::Count, crate::t!("Count palette").into_owned(), auto_collapse); // ponytail: the list is recounted on every view; cache by geometry epoch // if very large drawings make the palette slow. let body = match mode {