diff --git a/crates/engine/src/cmd/variablecmds.rs b/crates/engine/src/cmd/variablecmds.rs index 873a694e2..70a5af938 100644 --- a/crates/engine/src/cmd/variablecmds.rs +++ b/crates/engine/src/cmd/variablecmds.rs @@ -442,6 +442,9 @@ fn dataset_capture(s: &mut Session, p: &Value) -> Result { let st = s.doc()?; let values = st.doc.captured_values(); if values.is_empty() { + if anything_bound(&st.doc) { + return Err(bad(C, "no bound object reports a value (locked objects and embedded images report none)")); + } return Err(bad(C, "bind something to a variable first")); } let name = match optional_name(p, "name", C)? { @@ -464,32 +467,36 @@ fn dataset_capture(s: &mut Session, p: &Value) -> Result { /// variable the row holds. A variable whose objects report no value (locked, inside a locked /// layer or group, or gone) keeps the row's value. With `all`, every other variable the /// objects report a value for is added to the row. Without an active row there is nothing to -/// update, so say so rather than picking one. +/// update, so say so rather than picking one. With every bound object locked, no value is +/// written; an update that writes no value adds no undo step. fn dataset_update(s: &mut Session, p: &Value) -> Result { const C: &str = "dataset.update"; let all = bool_or(p, "all", false); - let values = s.doc()?.doc.captured_values(); - let Some(name) = s.doc()?.doc.variables.active_dataset.clone() else { + let st = s.doc()?; + let Some(name) = st.doc.variables.active_dataset.clone() else { return Err(bad(C, "no active data set")); }; - if values.is_empty() { + if !anything_bound(&st.doc) { return Err(bad(C, "bind something to a variable first")); } - let (written, left) = edit_variables(s, "Update Data Set", |vars| { + let ds = st.doc.variables.dataset(&name).ok_or_else(|| bad(C, format!("no dataset named `{name}`")))?; + let writes: BTreeMap = st.doc.captured_values().into_iter().filter(|(var, _)| all || ds.values.contains_key(var)).collect(); + let left: Vec = st.doc.variables.variables.iter().filter(|v| !writes.contains_key(&v.name)).map(|v| v.name.clone()).collect(); + let written = writes.len(); + edit_variables(s, "Update Data Set", |vars| { let ds = vars.datasets.iter_mut().find(|d| d.name == name).ok_or_else(|| bad(C, format!("no dataset named `{name}`")))?; - let mut written = BTreeSet::new(); - for (var, value) in &values { - if all || ds.values.contains_key(var) { - ds.values.insert(var.clone(), value.clone()); - written.insert(var.as_str()); - } - } - let left: Vec = vars.variables.iter().filter(|v| !written.contains(v.name.as_str())).map(|v| v.name.clone()).collect(); - Ok((written.len(), left)) + ds.values.extend(writes); + Ok(()) })?; Ok(json!({"name": name, "values": written, "left": left})) } +/// Whether any object in the document is bound to a variable. A locked one counts: it is +/// bound, though it reports no value. +fn anything_bound(doc: &Document) -> bool { + doc.variables.bindings.iter().any(|(id, names)| !names.is_empty() && doc.node(*id).is_some()) +} + fn dataset_delete(s: &mut Session, p: &Value) -> Result { // Without `names`, the active dataset: what the panel's Delete Data Set deletes. let active = s.doc()?.doc.variables.active_dataset.clone(); diff --git a/crates/engine/src/tests/variables.rs b/crates/engine/src/tests/variables.rs index f470242de..84a277977 100644 --- a/crates/engine/src/tests/variables.rs +++ b/crates/engine/src/tests/variables.rs @@ -709,6 +709,40 @@ fn updating_keeps_a_value_the_art_does_not_report() { } } +/// With every bound object locked, Update keeps the whole row and adds no undo step, and +/// Capture says the bound objects report no value rather than asking for a binding. +#[test] +fn updating_with_every_bound_object_locked_keeps_the_row() { + let mut s = session(); + let t = text(&mut s, "First"); + s.execute("variable.define", &json!({"name": "Label", "kind": "text"})).unwrap(); + s.execute("variable.bind", &json!({"variable": "Label", "ids": [t.0]})).unwrap(); + s.execute("dataset.new", &json!({"name": "Row", "values": {"Label": "Second"}})).unwrap(); + s.execute("dataset.select", &json!({"name": "Row"})).unwrap(); + s.execute("object.setProps", &json!({"ids": [t.0], "locked": true})).unwrap(); + + let steps = |s: &Session| s.doc().unwrap().history.undo.len(); + let before = steps(&s); + for params in [json!({}), json!({"all": true})] { + let v = s.execute("dataset.update", ¶ms).unwrap(); + assert_eq!((v["values"].clone(), v["left"].clone()), (json!(0), json!(["Label"])), "{params}: {v}"); + let sets = s.execute("dataset.list", &json!({})).unwrap(); + assert_eq!(sets["datasets"][0]["values"], json!({"Label": {"text": "Second"}}), "{params}: {sets}"); + } + assert_eq!(steps(&s), before, "an update that writes nothing is not a step"); + + let e = s.execute("dataset.capture", &json!({})).unwrap_err().to_string(); + assert!(e.contains("no bound object reports a value"), "{e}"); + assert_eq!(s.execute("dataset.list", &json!({})).unwrap()["datasets"].as_array().unwrap().len(), 1); + + // With nothing bound at all, both still ask for a binding. + s.execute("variable.unbind", &json!({"ids": [t.0]})).unwrap(); + for cmd in ["dataset.update", "dataset.capture"] { + let e = s.execute(cmd, &json!({})).unwrap_err().to_string(); + assert!(e.contains("bind something to a variable first"), "{cmd}: {e}"); + } +} + /// A variable defined after a row was captured stays out of that row on Update, and joins it /// with `all: true`. #[test] diff --git a/crates/ui-egui/src/i18n/ca.tsv b/crates/ui-egui/src/i18n/ca.tsv index f1b7faf27..205991cbc 100644 --- a/crates/ui-egui/src/i18n/ca.tsv +++ b/crates/ui-egui/src/i18n/ca.tsv @@ -5251,6 +5251,7 @@ digits Malayalam Malaiàlam @msg columns {first} and {column} both name the variable `{name}` les columnes {first} i {column} anomenen totes dues la variable `{name}` @msg nothing encoded no s’ha codificat res @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for no s’ha aplicat res del conjunt de dades {name}: cap objecte està vinculat a una variable per a la qual tingui un valor +@msg no bound object reports a value (locked objects and embedded images report none) cap objecte vinculat no informa d’un valor (els objectes bloquejats i les imatges incrustades no n’informen cap) @msg nothing selected no hi ha res seleccionat @msg nothing to align no hi ha res per alinear @msg nothing to distort no hi ha res per distorsionar diff --git a/crates/ui-egui/src/i18n/cs.tsv b/crates/ui-egui/src/i18n/cs.tsv index 4c9139f12..a6d23ba3c 100644 --- a/crates/ui-egui/src/i18n/cs.tsv +++ b/crates/ui-egui/src/i18n/cs.tsv @@ -5476,6 +5476,7 @@ mark-style Japanese Japonské @msg columns {first} and {column} both name the variable `{name}` sloupce {first} a {column} uvádějí stejnou proměnnou `{name}` @msg open a document with data sets otevřete dokument se sadami dat @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for ze sady dat {name} se nic nepoužilo: žádný objekt není svázán s proměnnou, pro kterou má hodnotu +@msg no bound object reports a value (locked objects and embedded images report none) žádný svázaný objekt nevrací hodnotu (zamčené objekty a vložené obrazy žádnou nevracejí) @msg the action has no steps akce nemá žádné kroky # User Interface › Accent Color diff --git a/crates/ui-egui/src/i18n/de.tsv b/crates/ui-egui/src/i18n/de.tsv index 7bd2983cd..1433e9d1c 100644 --- a/crates/ui-egui/src/i18n/de.tsv +++ b/crates/ui-egui/src/i18n/de.tsv @@ -5053,6 +5053,7 @@ effect Soft Weich @msg columns {first} and {column} both name the variable `{name}` die Spalten {first} und {column} nennen beide die Variable `{name}` @msg open a document with data sets öffnen Sie ein Dokument mit Datensätzen @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for aus dem Datensatz {name} wurde nichts angewendet: kein Objekt ist an eine Variable gebunden, für die er einen Wert hat +@msg no bound object reports a value (locked objects and embedded images report none) kein gebundenes Objekt liefert einen Wert (gesperrte Objekte und eingebettete Bilder liefern keinen) @msg the action has no steps die Aktion hat keine Schritte # User Interface › Accent Color diff --git a/crates/ui-egui/src/i18n/el.tsv b/crates/ui-egui/src/i18n/el.tsv index 20bd8c7ee..f28611c54 100644 --- a/crates/ui-egui/src/i18n/el.tsv +++ b/crates/ui-egui/src/i18n/el.tsv @@ -5407,6 +5407,7 @@ effect Points Σημεία @msg columns {first} and {column} both name the variable `{name}` οι στήλες {first} και {column} ονομάζουν και οι δύο τη μεταβλητή `{name}` @msg open a document with data sets ανοίξτε ένα έγγραφο με σύνολα δεδομένων @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for δεν εφαρμόστηκε τίποτα από το σύνολο δεδομένων {name}: κανένα αντικείμενο δεν είναι συνδεδεμένο με μεταβλητή για την οποία έχει τιμή +@msg no bound object reports a value (locked objects and embedded images report none) κανένα συνδεδεμένο αντικείμενο δεν αναφέρει τιμή (τα κλειδωμένα αντικείμενα και οι ενσωματωμένες εικόνες δεν αναφέρουν καμία) @msg select an Intertwine group επιλέξτε μια ομάδα διαπλοκής @msg select an Objects on Path group επιλέξτε μια ομάδα αντικειμένων σε διαδρομή @msg a path inside a compound path, blend, envelope, repeat or Intertwine group can't take objects μια διαδρομή μέσα σε σύνθετη διαδρομή, ανάμειξη, περίβλημα, επανάληψη ή ομάδα διαπλοκής δεν μπορεί να δεχτεί αντικείμενα diff --git a/crates/ui-egui/src/i18n/es.tsv b/crates/ui-egui/src/i18n/es.tsv index 26a13ddde..dbd5dfb23 100644 --- a/crates/ui-egui/src/i18n/es.tsv +++ b/crates/ui-egui/src/i18n/es.tsv @@ -5417,6 +5417,7 @@ mark-style Japanese Japonesas @msg columns {first} and {column} both name the variable `{name}` las columnas {first} y {column} nombran la misma variable `{name}` @msg open a document with data sets abra un documento con conjuntos de datos @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for no se aplicó nada del conjunto de datos {name}: ningún objeto está vinculado a una variable para la que tenga un valor +@msg no bound object reports a value (locked objects and embedded images report none) ningún objeto vinculado informa de un valor (los objetos bloqueados y las imágenes incrustadas no informan de ninguno) @msg the action has no steps la acción no tiene pasos # User Interface › Accent Color diff --git a/crates/ui-egui/src/i18n/fi.tsv b/crates/ui-egui/src/i18n/fi.tsv index 12edcafb7..e232c972a 100644 --- a/crates/ui-egui/src/i18n/fi.tsv +++ b/crates/ui-egui/src/i18n/fi.tsv @@ -5419,6 +5419,7 @@ mark-style Japanese Japanilainen @msg columns {first} and {column} both name the variable `{name}` sarakkeet {first} ja {column} nimeävät molemmat muuttujan `{name}` @msg open a document with data sets avaa asiakirja, jossa on tietojoukkoja @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for tietojoukosta {name} ei käytetty mitään: mitään objektia ei ole sidottu muuttujaan, jolle siinä on arvo +@msg no bound object reports a value (locked objects and embedded images report none) mikään sidottu objekti ei ilmoita arvoa (lukitut objektit ja upotetut kuvat eivät ilmoita arvoa) @msg select an Intertwine group valitse lomitusryhmä @msg select an Objects on Path group valitse Objektit polulla -ryhmä @msg a path inside a compound path, blend, envelope, repeat or Intertwine group can't take objects yhdistelmäpolun, sulautuksen, vääristyskuoren, toiston tai lomitusryhmän sisällä olevaan polkuun ei voi kiinnittää objekteja diff --git a/crates/ui-egui/src/i18n/fr.tsv b/crates/ui-egui/src/i18n/fr.tsv index 6e8e1eeb2..789e40c81 100644 --- a/crates/ui-egui/src/i18n/fr.tsv +++ b/crates/ui-egui/src/i18n/fr.tsv @@ -5473,6 +5473,7 @@ theme Appearance Apparence @msg columns {first} and {column} both name the variable `{name}` les colonnes {first} et {column} nomment toutes deux la variable `{name}` @msg open a document with data sets ouvrez un document avec des jeux de données @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for rien du jeu de données {name} n’a été appliqué, car aucun objet n’est lié à une variable pour laquelle il a une valeur +@msg no bound object reports a value (locked objects and embedded images report none) aucun objet lié ne fournit de valeur (les objets verrouillés et les images incorporées n’en fournissent aucune) @msg the action has no steps l'action n'a aucune étape # User Interface › Accent Color diff --git a/crates/ui-egui/src/i18n/hu.tsv b/crates/ui-egui/src/i18n/hu.tsv index c028358a3..76dc225e8 100644 --- a/crates/ui-egui/src/i18n/hu.tsv +++ b/crates/ui-egui/src/i18n/hu.tsv @@ -5461,6 +5461,7 @@ imageTrace Outline Körvonal @msg columns {first} and {column} both name the variable `{name}` a(z) {first}. és a(z) {column}. oszlop ugyanazt a változót nevezi meg: `{name}` @msg open a document with data sets nyisson meg egy adatkészleteket tartalmazó dokumentumot @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for ebből az adatkészletből semmi sem lett alkalmazva: {name}; egyetlen objektum sincs olyan változóhoz kötve, amelynek értéke van benne +@msg no bound object reports a value (locked objects and embedded images report none) egyetlen kötött objektum sem ad értéket (a zárolt objektumok és a beágyazott képek nem adnak értéket) @msg the action has no steps a műveletnek nincsenek lépései # User Interface › Accent Color diff --git a/crates/ui-egui/src/i18n/it.tsv b/crates/ui-egui/src/i18n/it.tsv index 8f2f93c21..ad25ad87c 100644 --- a/crates/ui-egui/src/i18n/it.tsv +++ b/crates/ui-egui/src/i18n/it.tsv @@ -5088,6 +5088,7 @@ lighting Light Luce @msg columns {first} and {column} both name the variable `{name}` le colonne {first} e {column} indicano entrambe la variabile `{name}` @msg open a document with data sets apri un documento con set di dati @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for non è stato applicato nulla del set di dati {name}: nessun oggetto è associato a una variabile per cui ha un valore +@msg no bound object reports a value (locked objects and embedded images report none) nessun oggetto associato restituisce un valore (gli oggetti bloccati e le immagini incorporate non ne restituiscono) @msg the action has no steps l'azione non ha passaggi # User Interface › Accent Color diff --git a/crates/ui-egui/src/i18n/ja.tsv b/crates/ui-egui/src/i18n/ja.tsv index 4767449f1..804186dd6 100644 --- a/crates/ui-egui/src/i18n/ja.tsv +++ b/crates/ui-egui/src/i18n/ja.tsv @@ -5133,6 +5133,7 @@ lighting Light ライト @msg columns {first} and {column} both name the variable `{name}` 列 {first} と列 {column} が同じ変数 `{name}` を指定しています @msg open a document with data sets データセットのあるドキュメントを開いてください @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for データセット {name} から何も適用されませんでした: 値のある変数にバインドされたオブジェクトがありません +@msg no bound object reports a value (locked objects and embedded images report none) 値を返すバインドされたオブジェクトがありません (ロックされたオブジェクトと埋め込み画像は値を返しません) @msg the action has no steps アクションにステップがありません # User Interface › Accent Color diff --git a/crates/ui-egui/src/i18n/ka.tsv b/crates/ui-egui/src/i18n/ka.tsv index dd7083cc9..250e0f384 100644 --- a/crates/ui-egui/src/i18n/ka.tsv +++ b/crates/ui-egui/src/i18n/ka.tsv @@ -5124,6 +5124,7 @@ imageTrace Outline კონტური @msg columns {first} and {column} both name the variable `{name}` სვეტები {first} და {column} ორივე ასახელებს ცვლადს `{name}` @msg open a document with data sets გახსენით დოკუმენტი მონაცემთა ნაკრებებით @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for მონაცემთა ნაკრები {name}: არაფერი გამოყენებულა; არცერთი ობიექტი არ არის მიბმული ცვლადზე, რომელსაც მასში მნიშვნელობა აქვს +@msg no bound object reports a value (locked objects and embedded images report none) არცერთი მიბმული ობიექტი არ აბრუნებს მნიშვნელობას (ჩაკეტილი ობიექტები და ჩაშენებული გამოსახულებები მნიშვნელობას არ აბრუნებს) @msg the action has no steps მოქმედებას ნაბიჯები არ აქვს Convert to Straight Lines სწორ ხაზებად გარდაქმნა Corner Point Angle Threshold: კუთხოვანი წერტილის კუთხის ზღვარი: diff --git a/crates/ui-egui/src/i18n/ko.tsv b/crates/ui-egui/src/i18n/ko.tsv index af51f5883..3ee9cb9d4 100644 --- a/crates/ui-egui/src/i18n/ko.tsv +++ b/crates/ui-egui/src/i18n/ko.tsv @@ -5051,6 +5051,7 @@ lighting Light 광원 @msg columns {first} and {column} both name the variable `{name}` {first}열과 {column}열이 모두 같은 변수 `{name}`을(를) 가리킵니다 @msg open a document with data sets 데이터 세트가 있는 문서를 여세요 @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for 데이터 세트 {name}에서 적용된 항목이 없습니다: 값이 있는 변수에 연결된 개체가 없습니다 +@msg no bound object reports a value (locked objects and embedded images report none) 값을 보고하는 연결된 개체가 없습니다(잠긴 개체와 포함된 이미지는 값을 보고하지 않습니다) @msg the action has no steps 액션에 단계가 없습니다 # User Interface › Accent Color diff --git a/crates/ui-egui/src/i18n/pl.tsv b/crates/ui-egui/src/i18n/pl.tsv index ed0396dea..5830a1b6a 100644 --- a/crates/ui-egui/src/i18n/pl.tsv +++ b/crates/ui-egui/src/i18n/pl.tsv @@ -5328,6 +5328,7 @@ mark-style Japanese Japońskie @msg columns {first} and {column} both name the variable `{name}` kolumny {first} i {column} wskazują tę samą zmienną `{name}` @msg open a document with data sets otwórz dokument z zestawami danych @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for z zestawu danych {name} nic nie zastosowano: żaden obiekt nie jest powiązany ze zmienną, dla której ma on wartość +@msg no bound object reports a value (locked objects and embedded images report none) żaden powiązany obiekt nie zwraca wartości (zablokowane obiekty i osadzone obrazy nie zwracają żadnej) @msg the action has no steps operacja nie ma kroków # User Interface › Accent Color diff --git a/crates/ui-egui/src/i18n/pt-br.tsv b/crates/ui-egui/src/i18n/pt-br.tsv index 19d52c981..00c619222 100644 --- a/crates/ui-egui/src/i18n/pt-br.tsv +++ b/crates/ui-egui/src/i18n/pt-br.tsv @@ -5350,6 +5350,7 @@ mark-style Japanese Japonesas @msg columns {first} and {column} both name the variable `{name}` as colunas {first} e {column} nomeiam a mesma variável `{name}` @msg open a document with data sets abra um documento com conjuntos de dados @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for nada do conjunto de dados {name} foi aplicado: nenhum objeto está vinculado a uma variável para a qual ele tem um valor +@msg no bound object reports a value (locked objects and embedded images report none) nenhum objeto vinculado informa um valor (objetos bloqueados e imagens incorporadas não informam nenhum) @msg the action has no steps a ação não tem etapas @msg Angles require two straight segments Ângulos exigem dois segmentos retos @msg Choose a circle or a perfect arc Escolha um círculo ou um arco perfeito diff --git a/crates/ui-egui/src/i18n/ru.tsv b/crates/ui-egui/src/i18n/ru.tsv index a8407da96..50d1ca1bd 100644 --- a/crates/ui-egui/src/i18n/ru.tsv +++ b/crates/ui-egui/src/i18n/ru.tsv @@ -5083,6 +5083,7 @@ lighting Light Свет @msg columns {first} and {column} both name the variable `{name}` столбцы {first} и {column} указывают одну и ту же переменную `{name}` @msg open a document with data sets откройте документ с наборами данных @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for из набора данных {name} ничего не применено: ни один объект не привязан к переменной, для которой в нём есть значение +@msg no bound object reports a value (locked objects and embedded images report none) ни один привязанный объект не сообщает значение (заблокированные объекты и внедрённые изображения не сообщают значений) @msg the action has no steps в действии нет шагов # User Interface › Accent Color diff --git a/crates/ui-egui/src/i18n/sv.tsv b/crates/ui-egui/src/i18n/sv.tsv index 2382ce365..8ca7a3927 100644 --- a/crates/ui-egui/src/i18n/sv.tsv +++ b/crates/ui-egui/src/i18n/sv.tsv @@ -5411,6 +5411,7 @@ theme Appearance Utseende @msg columns {first} and {column} both name the variable `{name}` kolumnerna {first} och {column} anger båda variabeln `{name}` @msg open a document with data sets öppna ett dokument med datauppsättningar @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for inget i datauppsättningen {name} användes: inget objekt är bundet till en variabel som den har ett värde för +@msg no bound object reports a value (locked objects and embedded images report none) inget bundet objekt rapporterar ett värde (låsta objekt och inbäddade bilder rapporterar inget) @msg select an Intertwine group markera en sammanflätningsgrupp @msg select an Objects on Path group markera en grupp med objekt på bana @msg a path inside a compound path, blend, envelope, repeat or Intertwine group can't take objects en bana inuti en sammansatt bana, en blandning, ett kuvert, en upprepning eller en sammanflätningsgrupp kan inte ta emot objekt diff --git a/crates/ui-egui/src/i18n/tr.tsv b/crates/ui-egui/src/i18n/tr.tsv index b8f648a0c..c893d81f3 100644 --- a/crates/ui-egui/src/i18n/tr.tsv +++ b/crates/ui-egui/src/i18n/tr.tsv @@ -5362,6 +5362,7 @@ theme Appearance Görünüm @msg columns {first} and {column} both name the variable `{name}` {first} ve {column} numaralı sütunların ikisi de `{name}` değişkenini adlandırıyor @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them dosyanın değişkenleri ve veri kümeleri okunmadı (değişkenler: {variables}, veri kümeleri: {data_sets}): Değişkenler paneli bunları listelemiyor @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for {name} veri kümesinden hiçbir şey uygulanmadı: değer içerdiği bir değişkene bağlı hiçbir nesne yok +@msg no bound object reports a value (locked objects and embedded images report none) bağlı hiçbir nesne bir değer bildirmiyor (kilitli nesneler ve gömülü görüntüler değer bildirmez) @msg select an Objects on Path group bir Yol Üzerindeki Nesneler grubu seçin @msg the Simplify slider is not open Basitleştirme kaydırıcısı açık değil @msg the Smooth slider is not open Düzgünleştirme kaydırıcısı açık değil diff --git a/crates/ui-egui/src/i18n/uk.tsv b/crates/ui-egui/src/i18n/uk.tsv index ecb207493..2676d107e 100644 --- a/crates/ui-egui/src/i18n/uk.tsv +++ b/crates/ui-egui/src/i18n/uk.tsv @@ -5068,6 +5068,7 @@ lighting Light Світло @msg columns {first} and {column} both name the variable `{name}` стовпці {first} і {column} вказують одну й ту саму змінну `{name}` @msg open a document with data sets відкрийте документ із наборами даних @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for з набору даних {name} нічого не застосовано: жоден об’єкт не прив’язано до змінної, для якої в ньому є значення +@msg no bound object reports a value (locked objects and embedded images report none) жоден прив’язаний об’єкт не повідомляє значення (заблоковані об’єкти та вбудовані зображення не повідомляють значень) @msg the action has no steps у дії немає кроків # User Interface › Accent Color diff --git a/crates/ui-egui/src/i18n/vi.tsv b/crates/ui-egui/src/i18n/vi.tsv index 8a6a9935c..42de855e0 100644 --- a/crates/ui-egui/src/i18n/vi.tsv +++ b/crates/ui-egui/src/i18n/vi.tsv @@ -5071,6 +5071,7 @@ theme Appearance Giao diện @msg columns {first} and {column} both name the variable `{name}` cột {first} và cột {column} cùng chỉ định biến số `{name}` @msg open a document with data sets hãy mở một tài liệu có tập dữ liệu @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for không có gì trong tập dữ liệu {name} được áp dụng: không có đối tượng nào được gắn với biến số mà tập dữ liệu có giá trị +@msg no bound object reports a value (locked objects and embedded images report none) không có đối tượng được gắn nào báo cáo giá trị (đối tượng bị khóa và hình ảnh nhúng không báo cáo giá trị nào) @msg the action has no steps hành động không có bước nào # User Interface › Accent Color diff --git a/crates/ui-egui/src/i18n/zh-hans.tsv b/crates/ui-egui/src/i18n/zh-hans.tsv index 590354702..53a2e2847 100644 --- a/crates/ui-egui/src/i18n/zh-hans.tsv +++ b/crates/ui-egui/src/i18n/zh-hans.tsv @@ -4535,6 +4535,7 @@ imageTrace Outline 轮廓 @msg columns {first} and {column} both name the variable `{name}` 第 {first} 列和第 {column} 列都指定了变量 `{name}` @msg open a document with data sets 请打开包含数据集的文档 @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for 数据集 {name} 未应用任何内容:没有对象绑定到该数据集中有值的变量 +@msg no bound object reports a value (locked objects and embedded images report none) 没有绑定的对象报告值 (锁定的对象和嵌入的图像不报告值) @msg the action has no steps 该动作没有步骤 # Import Shortcut Set (Keyboard Shortcuts › Import…, File › Open of a .kys file) and its commands. Import Shortcut Set 导入快捷键组 diff --git a/crates/ui-egui/src/i18n/zh-hant.tsv b/crates/ui-egui/src/i18n/zh-hant.tsv index e4a439e9b..0e9c6b5f2 100644 --- a/crates/ui-egui/src/i18n/zh-hant.tsv +++ b/crates/ui-egui/src/i18n/zh-hant.tsv @@ -2451,6 +2451,7 @@ file-filter Templates 範本 @msg columns {first} and {column} both name the variable `{name}` 第 {first} 欄和第 {column} 欄都指定了變數 `{name}` @msg open a document with data sets 請開啟含有資料集的文件 @msg nothing in data set {name} was applied: no object is bound to a variable it has a value for 資料集 {name} 未套用任何內容:沒有物件綁定到該資料集中有值的變數 +@msg no bound object reports a value (locked objects and embedded images report none) 沒有綁定的物件回報值 (鎖定的物件和內嵌的影像不回報值) @msg the action has no steps 動作沒有步驟 @msg cancelled; nothing was changed 已取消;未做任何變更 @msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it 「儲存」會寫入 {_1},而非 {_2}:若要寫入該格式,請使用 file.saveAsTemplate diff --git a/docs/mcp.md b/docs/mcp.md index 7b9c59a14..ca9b00379 100644 --- a/docs/mcp.md +++ b/docs/mcp.md @@ -1788,7 +1788,8 @@ or no, or a graph value longer than 262,144 bytes. data set holds. A variable whose objects report no value, because they are locked, inside a locked layer or group, or deleted, keeps the data set's value. With `all: true` it also adds every other variable that the objects report a value for. The reply gives `values`, the number of values it wrote, and `left`, the variables it -did not write. +did not write. When every bound object is locked, it writes no value and adds no undo step, and `dataset.capture` +returns the error "no bound object reports a value (locked objects and embedded images report none)". ## Graphic styles