From fc180279a66b8b3432f15eaaaad389778cd5cc25 Mon Sep 17 00:00:00 2001 From: bflatastic Date: Thu, 29 Oct 2026 20:29:20 +0700 Subject: [PATCH] Effects: Tweak shows Horizontal and Vertical sliders, and its dialog shares Zig Zag's rows (#4488) --- crates/ui-egui/src/dialogs/effect.rs | 72 ++++++++++++++++++++-------- crates/ui-egui/src/dialogs/tests.rs | 16 +++++-- crates/ui-egui/src/i18n/bg.tsv | 2 + crates/ui-egui/src/i18n/ca.tsv | 2 + crates/ui-egui/src/i18n/cs.tsv | 2 + crates/ui-egui/src/i18n/da.tsv | 2 + crates/ui-egui/src/i18n/de.tsv | 2 + crates/ui-egui/src/i18n/el.tsv | 2 + crates/ui-egui/src/i18n/es.tsv | 2 + crates/ui-egui/src/i18n/fi.tsv | 2 + crates/ui-egui/src/i18n/fr.tsv | 2 + crates/ui-egui/src/i18n/hu.tsv | 2 + crates/ui-egui/src/i18n/id.tsv | 2 + crates/ui-egui/src/i18n/it.tsv | 2 + crates/ui-egui/src/i18n/ja.tsv | 2 + crates/ui-egui/src/i18n/ka.tsv | 2 + crates/ui-egui/src/i18n/ko.tsv | 2 + crates/ui-egui/src/i18n/nl.tsv | 2 + crates/ui-egui/src/i18n/pl.tsv | 2 + crates/ui-egui/src/i18n/pt-br.tsv | 2 + crates/ui-egui/src/i18n/ru.tsv | 2 + crates/ui-egui/src/i18n/sv.tsv | 2 + crates/ui-egui/src/i18n/tr.tsv | 2 + crates/ui-egui/src/i18n/uk.tsv | 2 + crates/ui-egui/src/i18n/vi.tsv | 2 + crates/ui-egui/src/i18n/zh-hans.tsv | 2 + crates/ui-egui/src/i18n/zh-hant.tsv | 2 + 27 files changed, 115 insertions(+), 23 deletions(-) diff --git a/crates/ui-egui/src/dialogs/effect.rs b/crates/ui-egui/src/dialogs/effect.rs index 5c91cb962..02346ab1f 100644 --- a/crates/ui-egui/src/dialogs/effect.rs +++ b/crates/ui-egui/src/dialogs/effect.rs @@ -168,6 +168,7 @@ fn body(app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { None if id == SCRIBBLE => scribble_fields(ui, d, app.session.general_unit()), None if id == ZIG_ZAG || id == ROUGHEN => size_fields(ui, d, &id, app.session.general_unit()), None if id == PUCKER_BLOAT => pucker_bloat_fields(ui, d), + None if id == TWEAK => tweak_fields(ui, d, app.session.general_unit()), None if id == DROP_SHADOW => drop_shadow_fields(ui, d, app.session.general_unit()), None if id == "artistic.filmGrain" => film_grain_fields(ui, d), None if id == free_distort::FREE_DISTORT => { @@ -575,36 +576,50 @@ fn second_slider(effect: &str) -> (&'static str, &'static str, f64, &'static str /// Zig Zag's and Roughen's dialog (#1133, #4488): Size and Ridges per segment (Roughen: Detail) as /// sliders with their fields, Relative or Absolute and the Points as radio buttons. Returns /// whether the values differ from those last previewed. -fn size_fields(ui: &mut egui::Ui, d: &mut Dialog, effect: &str, unit: vectorcraft_doc::Unit) -> bool { - const LABEL_W: f32 = 124.0; - const FIELD_W: f32 = 70.0; +/// The label column and field width of [`relative_rows`] and the sliders under them. +const DISTORT_LABEL_W: f32 = 124.0; +const DISTORT_FIELD_W: f32 = 70.0; + +/// A slider with its field for each of `rows` (key, label, default), each a share of the object's +/// size with Relative or a distance with Absolute, then the Relative and Absolute radio buttons. +fn relative_rows(ui: &mut egui::Ui, d: &mut Dialog, rows: &[(&str, &str, f64)], unit: vectorcraft_doc::Unit) { let rail = Tokens::get(ui.ctx()).input_border; let track = move |_| rail; let relative = d.bool("relative"); - let size = if effect == ROUGHEN { 5.0 } else { 10.0 }; - widgets::subheader(ui, tl!("Options")); - // Size is a share of the object's size (Relative) or a distance (Absolute). - widgets::label_row(ui, tl!("Size:"), LABEL_W, |ui| { - let shown = if relative { - Some(widgets::SliderValue::field(d.f64("size", size).clamp(0.0, 100.0), 0.0..=100.0, "%", 0)) - } else { - form::length_value(d, "size", unit, 0.0..=100.0) - }; - form::slider_rail_valued(ui, d, "size", tl!("Size:"), 0.0..=100.0, shown, &track); - if !relative { - form::length(ui, d, "size", unit, FIELD_W); - } else if let Some(n) = widgets::range_field(ui, ("zz", "size"), d.f64("size", size), 0.0..=100.0, "%", 0, FIELD_W) { - d.fields.insert("size".into(), json!(n)); - } - }); + for &(key, label, default) in rows { + widgets::label_row(ui, tl!(label), DISTORT_LABEL_W, |ui| { + let shown = if relative { + Some(widgets::SliderValue::field(d.f64(key, default).clamp(0.0, 100.0), 0.0..=100.0, "%", 0)) + } else { + form::length_value(d, key, unit, 0.0..=100.0) + }; + form::slider_rail_valued(ui, d, key, tl!(label), 0.0..=100.0, shown, &track); + if !relative { + form::length(ui, d, key, unit, DISTORT_FIELD_W); + } else if let Some(n) = widgets::range_field(ui, ("zz", key), d.f64(key, default), 0.0..=100.0, "%", 0, DISTORT_FIELD_W) { + d.fields.insert(key.into(), json!(n)); + } + }); + } ui.horizontal(|ui| { - ui.add_space(LABEL_W + ui.spacing().item_spacing.x); + ui.add_space(DISTORT_LABEL_W + ui.spacing().item_spacing.x); for (label, on) in [(tl!("Relative"), true), (tl!("Absolute"), false)] { if widgets::radio(ui, label, relative == on, true) { d.fields.insert("relative".into(), json!(on)); } } }); +} + +fn size_fields(ui: &mut egui::Ui, d: &mut Dialog, effect: &str, unit: vectorcraft_doc::Unit) -> bool { + const LABEL_W: f32 = DISTORT_LABEL_W; + const FIELD_W: f32 = DISTORT_FIELD_W; + let rail = Tokens::get(ui.ctx()).input_border; + let track = move |_| rail; + let size = if effect == ROUGHEN { 5.0 } else { 10.0 }; + widgets::subheader(ui, tl!("Options")); + // Size is a share of the object's size (Relative) or a distance (Absolute). + relative_rows(ui, d, &[("size", "Size:", size)], unit); let (key, label, default, suffix) = second_slider(effect); widgets::label_row(ui, tl!(label), LABEL_W, |ui| { form::slider_rail_named(ui, d, key, tl!(label), 0.0..=100.0, &track); @@ -625,6 +640,23 @@ fn size_fields(ui: &mut egui::Ui, d: &mut Dialog, effect: &str, unit: vectorcraf values_changed(d) } +/// The Tweak effect (Effect › Distort & Transform › Tweak…). +const TWEAK: &str = "distort.tweak"; + +/// Tweak's dialog (#4488): Horizontal and Vertical as sliders with their fields (a share of the +/// object's size with Relative, a distance with Absolute), then which points it moves. Returns +/// whether the values differ from those last previewed. +fn tweak_fields(ui: &mut egui::Ui, d: &mut Dialog, unit: vectorcraft_doc::Unit) -> bool { + widgets::subheader(ui, tl!("Amount")); + relative_rows(ui, d, &[("h", "Horizontal:", 10.0), ("v", "Vertical:", 10.0)], unit); + ui.add_space(4.0); + widgets::subheader(ui, tl!("Modify")); + form::check(ui, d, "anchors", tl!("Anchor Points")); + form::check(ui, d, "in", tl!("\"In\" Control Points")); + form::check(ui, d, "out", tl!("\"Out\" Control Points")); + values_changed(d) +} + /// Pucker & Bloat's dialog (#4488): its amount as a slider from Pucker (−200 %) to Bloat (200 %) /// with its field. Returns whether the value differs from the one last previewed. fn pucker_bloat_fields(ui: &mut egui::Ui, d: &mut Dialog) -> bool { diff --git a/crates/ui-egui/src/dialogs/tests.rs b/crates/ui-egui/src/dialogs/tests.rs index 3ce0099bd..d409c360c 100644 --- a/crates/ui-egui/src/dialogs/tests.rs +++ b/crates/ui-egui/src/dialogs/tests.rs @@ -1413,10 +1413,10 @@ fn zig_zag_has_sliders_and_radio_buttons() { assert!(!lines.contains(&"Ridges:"), "{lines:?}"); } -/// #4488: Roughen's dialog has Size and Detail sliders laid out as Zig Zag's, and Pucker & Bloat's -/// its amount as a slider from Pucker to Bloat. +/// #4488: Roughen's dialog has Size and Detail sliders laid out as Zig Zag's, Pucker & Bloat's its +/// amount as a slider from Pucker to Bloat, and Tweak's Horizontal and Vertical sliders. #[test] -fn roughen_and_pucker_bloat_have_sliders() { +fn roughen_pucker_bloat_and_tweak_have_sliders() { use crate::widgets::accessibility_tests::{slider_value, tree}; let mut app = app(); app.run("shape.rectangle", json!({"x": 10, "y": 10, "width": 50, "height": 50})).unwrap(); @@ -1440,6 +1440,16 @@ fn roughen_and_pucker_bloat_have_sliders() { let shown = tree(|ui| show(&mut app, ui.ctx())); let (value, min, max, _) = slider_value(&shown, "Amount:"); assert_eq!((value, min, max), (Some(-60.0), Some(-200.0), Some(200.0))); + // Tweak: Horizontal and Vertical sliders, Relative / Absolute, and the points it moves. + app.ui.dialog = None; + app.run("effect.dialog", json!({"effect": "distort.tweak"})).unwrap(); + let text = crate::tests_labels::painted_text(&mut app, |app, ui| show(app, ui.ctx())); + let lines: Vec<&str> = text.lines().map(str::trim).collect(); + for want in ["Horizontal:", "Vertical:", "Relative", "Absolute", "Anchor Points", "\"In\" Control Points", "\"Out\" Control Points"] { + assert!(lines.contains(&want), "no {want:?} in {lines:?}"); + } + let shown = tree(|ui| show(&mut app, ui.ctx())); + assert_eq!(slider_value(&shown, "Horizontal:"), (Some(10.0), Some(0.0), Some(100.0), Some("10%".into()))); } /// Screen readers get the number and text of the field beside each dialog slider, in the field's diff --git a/crates/ui-egui/src/i18n/bg.tsv b/crates/ui-egui/src/i18n/bg.tsv index 484cd977f..21d58ecb1 100644 --- a/crates/ui-egui/src/i18n/bg.tsv +++ b/crates/ui-egui/src/i18n/bg.tsv @@ -167,6 +167,8 @@ Anchor Point Опорна точка Anchor Point Tool Инструмент „Опорна точка“ Anchor Points Опорни точки + "In" Control Points „Входящи“ контролни точки + "Out" Control Points „Изходящи“ контролни точки Anchor Points, Handle, and Bounding Box Display Показване на опорни точки, манипулатори и ограничителна рамка Anchor/Path Labels Етикети на опорни точки/пътища Anchors: Опорни точки: diff --git a/crates/ui-egui/src/i18n/ca.tsv b/crates/ui-egui/src/i18n/ca.tsv index c43197e2c..2c2778f5a 100644 --- a/crates/ui-egui/src/i18n/ca.tsv +++ b/crates/ui-egui/src/i18n/ca.tsv @@ -277,6 +277,8 @@ Anchor Point Punt d’ancoratge Anchor Point Tool Eina de punt d’ancoratge Anchor Points Punts d’ancoratge + "In" Control Points Punts de control «d’entrada» + "Out" Control Points Punts de control «de sortida» Anchor Points, Handle, and Bounding Box Display Visualització de punts d’ancoratge, nanses i quadre delimitador Anchor/Path Labels Etiquetes d’ancoratge/traçat Anchors Ancoratges diff --git a/crates/ui-egui/src/i18n/cs.tsv b/crates/ui-egui/src/i18n/cs.tsv index c0bedee88..d20759fbf 100644 --- a/crates/ui-egui/src/i18n/cs.tsv +++ b/crates/ui-egui/src/i18n/cs.tsv @@ -2369,6 +2369,8 @@ lighting Light Světlo Locate Selected Objects Najít vybrané objekty Thumbnails: Miniatury: Anchor Points Kotevní body + "In" Control Points „Vstupní“ řídicí body + "Out" Control Points „Výstupní“ řídicí body Brush Affects: Štětec ovlivňuje: Complexity: Složitost: Detail: Podrobnost: diff --git a/crates/ui-egui/src/i18n/da.tsv b/crates/ui-egui/src/i18n/da.tsv index 456effa9e..c5f721256 100644 --- a/crates/ui-egui/src/i18n/da.tsv +++ b/crates/ui-egui/src/i18n/da.tsv @@ -2163,6 +2163,8 @@ lighting Light Lys Locate Selected Objects Lokalisér markerede objekter Thumbnails: Miniaturer: Anchor Points Ankerpunkter + "In" Control Points "Ind"-kontrolpunkter + "Out" Control Points "Ud"-kontrolpunkter Brush Affects: Penslen påvirker: Complexity: Kompleksitet: Detail: Detaljer: diff --git a/crates/ui-egui/src/i18n/de.tsv b/crates/ui-egui/src/i18n/de.tsv index 7f4f154b6..a099f79c5 100644 --- a/crates/ui-egui/src/i18n/de.tsv +++ b/crates/ui-egui/src/i18n/de.tsv @@ -156,6 +156,8 @@ Anchor Point Ankerpunkt Anchor Point Tool Ankerpunkt-Werkzeug Anchor Points Ankerpunkte + "In" Control Points „Eingehende“ Kontrollpunkte + "Out" Control Points „Ausgehende“ Kontrollpunkte Anchor Points, Handle, and Bounding Box Display Anzeige von Ankerpunkten, Griffen und Begrenzungsrahmen Anchor/Path Labels Anker-/Pfadbeschriftungen Anchors: Ankerpunkte: diff --git a/crates/ui-egui/src/i18n/el.tsv b/crates/ui-egui/src/i18n/el.tsv index a16caa6d2..8ef3e7456 100644 --- a/crates/ui-egui/src/i18n/el.tsv +++ b/crates/ui-egui/src/i18n/el.tsv @@ -161,6 +161,8 @@ Anchor Point Σημείο αγκύρωσης Anchor Point Tool Σημείο αγκύρωσης (Anchor Point Tool) Anchor Points Σημεία αγκύρωσης + "In" Control Points Σημεία ελέγχου «εισόδου» + "Out" Control Points Σημεία ελέγχου «εξόδου» Anchor Points, Handle, and Bounding Box Display Εμφάνιση σημείων αγκύρωσης, λαβών και πλαισίου οριοθέτησης Anchor/Path Labels Ετικέτες σημείων αγκύρωσης και διαδρομών Anchors: Σημεία αγκύρωσης: diff --git a/crates/ui-egui/src/i18n/es.tsv b/crates/ui-egui/src/i18n/es.tsv index 9f60571d8..044164713 100644 --- a/crates/ui-egui/src/i18n/es.tsv +++ b/crates/ui-egui/src/i18n/es.tsv @@ -181,6 +181,8 @@ Anchor Point Punto de ancla Anchor Point Tool Herramienta Punto de ancla Anchor Points Puntos de ancla + "In" Control Points Puntos de control «de entrada» + "Out" Control Points Puntos de control «de salida» Anchor Points, Handle, and Bounding Box Display Visualización de puntos de ancla, manejadores y cuadro delimitador Anchor/Path Labels Etiquetas de ancla/trazado Anchors: Anclas: diff --git a/crates/ui-egui/src/i18n/fi.tsv b/crates/ui-egui/src/i18n/fi.tsv index 3652a1ded..c05ff7b05 100644 --- a/crates/ui-egui/src/i18n/fi.tsv +++ b/crates/ui-egui/src/i18n/fi.tsv @@ -2314,6 +2314,8 @@ lighting Light Valo Locate Selected Objects Paikanna valitut objektit Thumbnails: Pikkukuvat: Anchor Points Ankkuripisteet + "In" Control Points ”Sisään”-ohjauspisteet + "Out" Control Points ”Ulos”-ohjauspisteet Brush Affects: Sivellin vaikuttaa: Complexity: Monimutkaisuus: Detail: Yksityiskohdat: diff --git a/crates/ui-egui/src/i18n/fr.tsv b/crates/ui-egui/src/i18n/fr.tsv index 5b40ecc04..4c7a607d0 100644 --- a/crates/ui-egui/src/i18n/fr.tsv +++ b/crates/ui-egui/src/i18n/fr.tsv @@ -182,6 +182,8 @@ Anchor Point Point d’ancrage Anchor Point Tool Outil Point d’ancrage Anchor Points Points d’ancrage + "In" Control Points Points de contrôle « entrants » + "Out" Control Points Points de contrôle « sortants » Anchor Points, Handle, and Bounding Box Display Affichage des points d’ancrage, des poignées et du cadre de sélection Anchor/Path Labels Libellés de point d’ancrage/tracé Anchors: Points d’ancrage : diff --git a/crates/ui-egui/src/i18n/hu.tsv b/crates/ui-egui/src/i18n/hu.tsv index 4fa75f7ab..dedf1ed77 100644 --- a/crates/ui-egui/src/i18n/hu.tsv +++ b/crates/ui-egui/src/i18n/hu.tsv @@ -260,6 +260,8 @@ Anchor Point Horgonypont Anchor Point Tool Horgonypont Anchor Points Horgonypontok + "In" Control Points „Bemenő” vezérlőpontok + "Out" Control Points „Kimenő” vezérlőpontok Anchor Points, Handle, and Bounding Box Display Horgonypontok, fogantyúk és befoglaló keret megjelenítése Anchor/Path Labels Horgonypont- és útvonalcímkék Anchors Horgonypontok diff --git a/crates/ui-egui/src/i18n/id.tsv b/crates/ui-egui/src/i18n/id.tsv index e5d2a8dcc..d15951a05 100644 --- a/crates/ui-egui/src/i18n/id.tsv +++ b/crates/ui-egui/src/i18n/id.tsv @@ -2163,6 +2163,8 @@ lighting Light Cahaya Locate Selected Objects Temukan objek terpilih Thumbnails: Miniatur: Anchor Points Titik jangkar + "In" Control Points Titik kontrol "masuk" + "Out" Control Points Titik kontrol "keluar" Brush Affects: Kuas memengaruhi: Complexity: Kompleksitas: Detail: Detail: diff --git a/crates/ui-egui/src/i18n/it.tsv b/crates/ui-egui/src/i18n/it.tsv index 633333518..9c828d3e2 100644 --- a/crates/ui-egui/src/i18n/it.tsv +++ b/crates/ui-egui/src/i18n/it.tsv @@ -181,6 +181,8 @@ Anchor Point Punto di ancoraggio Anchor Point Tool Strumento Punto di ancoraggio Anchor Points Punti di ancoraggio + "In" Control Points Punti di controllo "in entrata" + "Out" Control Points Punti di controllo "in uscita" Anchor Points, Handle, and Bounding Box Display Visualizzazione di punti di ancoraggio, maniglie e riquadro di delimitazione Anchor/Path Labels Etichette ancoraggio/tracciato Anchors: Ancoraggi: diff --git a/crates/ui-egui/src/i18n/ja.tsv b/crates/ui-egui/src/i18n/ja.tsv index 50aea26ac..1eccc77d5 100644 --- a/crates/ui-egui/src/i18n/ja.tsv +++ b/crates/ui-egui/src/i18n/ja.tsv @@ -920,6 +920,8 @@ font-technology Variable バリアブル Anchor Point アンカーポイント Anchor Point Tool アンカーポイントツール Anchor Points アンカーポイント + "In" Control Points 「イン」コントロールポイント + "Out" Control Points 「アウト」コントロールポイント Anchor Points, Handle, and Bounding Box Display アンカーポイント、ハンドル、バウンディングボックスの表示 Anchor/Path Labels アンカー/パスラベル Angle 角度 diff --git a/crates/ui-egui/src/i18n/ka.tsv b/crates/ui-egui/src/i18n/ka.tsv index 8aa55ab24..1edc8854c 100644 --- a/crates/ui-egui/src/i18n/ka.tsv +++ b/crates/ui-egui/src/i18n/ka.tsv @@ -2060,6 +2060,8 @@ lighting Light სინათლე Locate Selected Objects მონიშნული ობიექტების მოძებნა Thumbnails: ესკიზები: Anchor Points საყრდენი წერტილები + "In" Control Points „შემავალი“ საკონტროლო წერტილები + "Out" Control Points „გამავალი“ საკონტროლო წერტილები Brush Affects: ფუნჯი მოქმედებს: Complexity: სირთულე: Detail: დეტალიზაცია: diff --git a/crates/ui-egui/src/i18n/ko.tsv b/crates/ui-egui/src/i18n/ko.tsv index 3ce7cd48b..efaf210a9 100644 --- a/crates/ui-egui/src/i18n/ko.tsv +++ b/crates/ui-egui/src/i18n/ko.tsv @@ -915,6 +915,8 @@ font-technology Variable 가변 Anchor Point 앵커 포인트 Anchor Point Tool 앵커 포인트 도구 Anchor Points 앵커 포인트 + "In" Control Points "들어오는" 제어점 + "Out" Control Points "나가는" 제어점 Anchor Points, Handle, and Bounding Box Display 앵커 포인트, 핸들, 경계 상자 표시 Anchor/Path Labels 앵커/패스 레이블 Angle 각도 diff --git a/crates/ui-egui/src/i18n/nl.tsv b/crates/ui-egui/src/i18n/nl.tsv index 7073591f3..255933816 100644 --- a/crates/ui-egui/src/i18n/nl.tsv +++ b/crates/ui-egui/src/i18n/nl.tsv @@ -2177,6 +2177,8 @@ lighting Light Licht Locate Selected Objects Geselecteerde objecten lokaliseren Thumbnails: Miniaturen: Anchor Points Ankerpunten + "In" Control Points "In"-controlepunten + "Out" Control Points "Uit"-controlepunten Brush Affects: Penseel beïnvloedt: Complexity: Complexiteit: Detail: Detail: diff --git a/crates/ui-egui/src/i18n/pl.tsv b/crates/ui-egui/src/i18n/pl.tsv index 841af59a7..5bc9267c4 100644 --- a/crates/ui-egui/src/i18n/pl.tsv +++ b/crates/ui-egui/src/i18n/pl.tsv @@ -2285,6 +2285,8 @@ lighting Light Światło Locate Selected Objects Znajdź zaznaczone obiekty Thumbnails: Miniatury: Anchor Points Punkty kontrolne + "In" Control Points Punkty sterujące „wejściowe” + "Out" Control Points Punkty sterujące „wyjściowe” Brush Affects: Pędzel wpływa na: Complexity: Złożoność: Detail: Szczegółowość: diff --git a/crates/ui-egui/src/i18n/pt-br.tsv b/crates/ui-egui/src/i18n/pt-br.tsv index 8e014227f..3b4029dc3 100644 --- a/crates/ui-egui/src/i18n/pt-br.tsv +++ b/crates/ui-egui/src/i18n/pt-br.tsv @@ -181,6 +181,8 @@ Anchor Point Ponto de Ancoragem Anchor Point Tool Ferramenta Ponto de Ancoragem Anchor Points Pontos de Ancoragem + "In" Control Points Pontos de controle "de entrada" + "Out" Control Points Pontos de controle "de saída" Anchor Points, Handle, and Bounding Box Display Exibição de Pontos de Ancoragem, Alça e Caixa Delimitadora Anchor/Path Labels Rótulos de Ponto/Ancoragem Angle Ângulo diff --git a/crates/ui-egui/src/i18n/ru.tsv b/crates/ui-egui/src/i18n/ru.tsv index b7bcaadb4..fb032f515 100644 --- a/crates/ui-egui/src/i18n/ru.tsv +++ b/crates/ui-egui/src/i18n/ru.tsv @@ -179,6 +179,8 @@ Anchor Point Опорная точка Anchor Point Tool Инструмент «Опорная точка» Anchor Points Опорные точки + "In" Control Points «Входящие» управляющие точки + "Out" Control Points «Исходящие» управляющие точки Anchor Points, Handle, and Bounding Box Display Отображение опорных точек, маркеров и ограничительной рамки Anchor/Path Labels Метки опорных точек/контуров Anchors: Опорные точки: diff --git a/crates/ui-egui/src/i18n/sv.tsv b/crates/ui-egui/src/i18n/sv.tsv index 23383f138..20d4c2f6a 100644 --- a/crates/ui-egui/src/i18n/sv.tsv +++ b/crates/ui-egui/src/i18n/sv.tsv @@ -169,6 +169,8 @@ Anchor Point Ankarpunkt Anchor Point Tool Ankarpunktsverktyg Anchor Points Ankarpunkter + "In" Control Points "In"-kontrollpunkter + "Out" Control Points "Ut"-kontrollpunkter Anchor Points, Handle, and Bounding Box Display Visning av ankarpunkter, handtag och avgränsningsram Anchor/Path Labels Etiketter för ankare/banor Anchors: Ankare: diff --git a/crates/ui-egui/src/i18n/tr.tsv b/crates/ui-egui/src/i18n/tr.tsv index 7b89cc3c9..1ef8d2fb4 100644 --- a/crates/ui-egui/src/i18n/tr.tsv +++ b/crates/ui-egui/src/i18n/tr.tsv @@ -166,6 +166,8 @@ Anchor Point Bağlantı Noktası Anchor Point Tool Bağlantı Noktası Aracı Anchor Points Bağlantı Noktaları + "In" Control Points "Giriş" Kontrol Noktaları + "Out" Control Points "Çıkış" Kontrol Noktaları Anchor Points, Handle, and Bounding Box Display Bağlantı Noktaları, Tutamaç ve Sınırlandırma Kutusu Görünümü Anchor/Path Labels Bağlantı/Yol Etiketleri Anchors: Çapalar: diff --git a/crates/ui-egui/src/i18n/uk.tsv b/crates/ui-egui/src/i18n/uk.tsv index 8201813c4..1301dffc0 100644 --- a/crates/ui-egui/src/i18n/uk.tsv +++ b/crates/ui-egui/src/i18n/uk.tsv @@ -175,6 +175,8 @@ Anchor Point Опорна точка Anchor Point Tool Інструмент «Опорна точка» Anchor Points Опорні точки + "In" Control Points «Вхідні» контрольні точки + "Out" Control Points «Вихідні» контрольні точки Anchor Points, Handle, and Bounding Box Display Відображення опорних точок, маркерів та обмежувальної рамки Anchor/Path Labels Мітки опорних точок/контурів Anchors: Опорні точки: diff --git a/crates/ui-egui/src/i18n/vi.tsv b/crates/ui-egui/src/i18n/vi.tsv index 64fc5dd66..e570cefb9 100644 --- a/crates/ui-egui/src/i18n/vi.tsv +++ b/crates/ui-egui/src/i18n/vi.tsv @@ -197,6 +197,8 @@ Anchor Point Điểm neo Anchor Point Tool Công cụ Điểm neo Anchor Points Các điểm neo + "In" Control Points Điểm điều khiển "vào" + "Out" Control Points Điểm điều khiển "ra" Anchor Points, Handle, and Bounding Box Display Hiển thị điểm neo, tay nắm và hộp giới hạn Anchor/Path Labels Nhãn điểm neo/đường dẫn Anchors: Điểm neo: diff --git a/crates/ui-egui/src/i18n/zh-hans.tsv b/crates/ui-egui/src/i18n/zh-hans.tsv index e3c10b9e0..89aee91f9 100644 --- a/crates/ui-egui/src/i18n/zh-hans.tsv +++ b/crates/ui-egui/src/i18n/zh-hans.tsv @@ -130,6 +130,8 @@ Anchor Point 锚点 Anchor Point Tool 锚点工具 Anchor Points 锚点 + "In" Control Points “入”控制点 + "Out" Control Points “出”控制点 Anchor Points, Handle, and Bounding Box Display 锚点、手柄和定界框显示 Anchor/Path Labels 锚点/路径标签 Anchors: 锚点: diff --git a/crates/ui-egui/src/i18n/zh-hant.tsv b/crates/ui-egui/src/i18n/zh-hant.tsv index 4e1670624..c5a0737e7 100644 --- a/crates/ui-egui/src/i18n/zh-hant.tsv +++ b/crates/ui-egui/src/i18n/zh-hant.tsv @@ -139,6 +139,8 @@ Anchor Point 錨點 Anchor Point Tool 錨點工具 Anchor Points 錨點 + "In" Control Points 「入」控制點 + "Out" Control Points 「出」控制點 Anchor Points, Handle, and Bounding Box Display 錨點、控制把手與邊框顯示 Anchor/Path Labels 錨點/路徑標籤 Anchors: 錨點: