mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-12 19:22:48 +00:00
Palette: picks and shortcuts skip menu rows that name user data
The menu items that a pick or a shortcut reads are read once. Rows that show a name that is user data (a custom toolbar under Window › Toolbars, a script under File › Scripts, a recent file, a saved selection) are now left out of them, as rows that list a plug-in already are, so a pick of Show Toolbar no longer runs with the name of a toolbar that existed when the items were read. While a menu item is dimmed and the engine gives no reason (a UI command, or an Appearance command with nothing targeted), a pick or a shortcut now opens no dialog and shows "command `<id>` is not available right now". The message has a row in every catalog that has the engine's longer "not available right now" message.
This commit is contained in:
@@ -4239,6 +4239,7 @@ axis Both И двете
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` не е цвят като "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: най-много {MAX_TABLE} цвята
|
||||
@msg command `{0}` is not available right now: {1} команда `{0}` не е налична в момента: {1}
|
||||
@msg command `{id}` is not available right now команда `{id}` не е налична в момента
|
||||
@msg compound paths can only contain paths съставните пътища могат да съдържат само пътища
|
||||
@msg compressed (RLE) bitmaps can't be read yet компресираните (RLE) битови карти все още не могат да бъдат четени
|
||||
@msg damaged повреден
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4627,6 +4627,7 @@ imageTrace Outline Obris
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` nije boja poput "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: najviše {MAX_TABLE} boja
|
||||
@msg command `{0}` is not available right now: {1} naredba `{0}` trenutno nije dostupna: {1}
|
||||
@msg command `{id}` is not available right now naredba `{id}` trenutno nije dostupna
|
||||
@msg compound paths can only contain paths složene putanje mogu sadržavati samo putanje
|
||||
@msg compressed (RLE) bitmaps can't be read yet komprimirane (RLE) bitmape se još ne mogu čitati
|
||||
@msg damaged oštećeno
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5280,6 +5280,7 @@ digits Malayalam Malaiàlam
|
||||
@msg column must be true or a number from 1 column ha de ser true o un nombre a partir d’1
|
||||
@msg Combine Slices: the slices have no bounds Combina els talls: els talls no tenen límits
|
||||
@msg command `{0}` is not available right now: {1} l’ordre `{0}` no està disponible ara mateix: {1}
|
||||
@msg command `{id}` is not available right now l’ordre `{id}` no està disponible ara mateix
|
||||
@msg compound paths can only contain paths els traçats compostos només poden contenir traçats
|
||||
@msg compressed (RLE) bitmaps can't be read yet encara no es poden llegir els mapes de bits comprimits (RLE)
|
||||
@msg control must be fillStroke, coloring, drawMode or screenMode control ha de ser fillStroke, coloring, drawMode o screenMode
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4704,6 +4704,7 @@ imageTrace Outline Obrys
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` není barva jako "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: nejvýše {MAX_TABLE} barev
|
||||
@msg command `{0}` is not available right now: {1} příkaz `{0}` nyní není k dispozici: {1}
|
||||
@msg command `{id}` is not available right now příkaz `{id}` nyní není k dispozici
|
||||
@msg compound paths can only contain paths složené cesty mohou obsahovat jen cesty
|
||||
@msg compressed (RLE) bitmaps can't be read yet komprimované bitmapy (RLE) zatím nelze načíst
|
||||
@msg damaged poškozeno
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4351,6 +4351,7 @@ imageTrace Outline Kontur
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` er ikke en farve som "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: højst {MAX_TABLE} farver
|
||||
@msg command `{0}` is not available right now: {1} kommandoen `{0}` er ikke tilgængelig lige nu: {1}
|
||||
@msg command `{id}` is not available right now kommandoen `{id}` er ikke tilgængelig lige nu
|
||||
@msg compound paths can only contain paths sammensatte kurver kan kun indeholde kurver
|
||||
@msg compressed (RLE) bitmaps can't be read yet komprimerede (RLE) bitmaps kan endnu ikke læses
|
||||
@msg damaged beskadiget
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4319,6 +4319,7 @@ theme Appearance Erscheinungsbild
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` ist keine Farbe wie "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: höchstens {MAX_TABLE} Farben
|
||||
@msg command `{0}` is not available right now: {1} der Befehl `{0}` ist derzeit nicht verfügbar: {1}
|
||||
@msg command `{id}` is not available right now der Befehl `{id}` ist derzeit nicht verfügbar
|
||||
@msg compound paths can only contain paths zusammengesetzte Pfade können nur Pfade enthalten
|
||||
@msg compressed (RLE) bitmaps can't be read yet komprimierte Bitmaps (RLE) können noch nicht gelesen werden
|
||||
@msg damaged beschädigt
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4350,6 +4350,7 @@ digits Malayalam Μαλαγιάλαμ
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: το `{h}` δεν είναι έγκυρο χρώμα, όπως το "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: επιτρέπονται το πολύ {MAX_TABLE} χρώματα
|
||||
@msg command `{0}` is not available right now: {1} η εντολή `{0}` δεν είναι διαθέσιμη αυτήν τη στιγμή: {1}
|
||||
@msg command `{id}` is not available right now η εντολή `{id}` δεν είναι διαθέσιμη αυτήν τη στιγμή
|
||||
@msg compound paths can only contain paths οι σύνθετες διαδρομές μπορούν να περιέχουν μόνο διαδρομές
|
||||
@msg compressed (RLE) bitmaps can't be read yet τα συμπιεσμένα (RLE) bitmap δεν μπορούν ακόμη να διαβαστούν
|
||||
@msg damaged κατεστραμμένο
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -4395,6 +4395,7 @@ axis Both Ambos
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` no es un color como "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: como máximo {MAX_TABLE} colores
|
||||
@msg command `{0}` is not available right now: {1} el comando `{0}` no está disponible ahora: {1}
|
||||
@msg command `{id}` is not available right now el comando `{id}` no está disponible ahora
|
||||
@msg compound paths can only contain paths los trazados compuestos solo pueden contener trazados
|
||||
@msg compressed (RLE) bitmaps can't be read yet todavía no se pueden leer mapas de bits comprimidos (RLE)
|
||||
@msg damaged dañado
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4612,6 +4612,7 @@ imageTrace Outline Ääriviiva
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` ei ole väri, kuten "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: enintään {MAX_TABLE} väriä
|
||||
@msg command `{0}` is not available right now: {1} komento `{0}` ei ole nyt käytettävissä: {1}
|
||||
@msg command `{id}` is not available right now komento `{id}` ei ole nyt käytettävissä
|
||||
@msg compound paths can only contain paths yhdistelmäpolut voivat sisältää vain polkuja
|
||||
@msg compressed (RLE) bitmaps can't be read yet pakattuja (RLE) bittikarttoja ei voi vielä lukea
|
||||
@msg damaged vaurioitunut
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4384,6 +4384,7 @@ axis Both Les deux
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what} : `{h}` n’est pas une couleur comme "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what} : {MAX_TABLE} couleurs au maximum
|
||||
@msg command `{0}` is not available right now: {1} la commande `{0}` n’est pas disponible pour le moment : {1}
|
||||
@msg command `{id}` is not available right now la commande `{id}` n’est pas disponible pour le moment
|
||||
@msg compound paths can only contain paths les tracés transparents ne peuvent contenir que des tracés
|
||||
@msg compressed (RLE) bitmaps can't be read yet les images bitmap compressées (RLE) ne peuvent pas encore être lues
|
||||
@msg damaged endommagé
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -6273,6 +6273,7 @@ antiAlias Sharp शार्प
|
||||
@msg columns {first} and {column} both name the variable `{name}` कॉलम {first} और {column} दोनों नाम चर `{name}`
|
||||
@msg Combine Slices: the slices have no bounds स्लाइस को मिलाएं: स्लाइस में कोई सीमा नहीं है
|
||||
@msg command `{0}` is not available right now: {1} आदेश `{0}` अभी उपलब्ध नहीं है: {1}
|
||||
@msg command `{id}` is not available right now आदेश `{id}` अभी उपलब्ध नहीं है
|
||||
@msg command must be a shape.* command command: आदेश एक आकार होना चाहिए।* आदेश
|
||||
@msg commands[{i}]: missing `command` आदेश [{i}]: लापता `command`
|
||||
@msg composer must be "singleLine" or "everyLine" composer: संगीतकार "singleLine" या "everyLine" होना चाहिए।
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -4946,6 +4946,7 @@ imageTrace Outline Körvonal
|
||||
@msg column must be true or a number from 1 a column értéke true vagy 1-től kezdődő szám lehet
|
||||
@msg Combine Slices: the slices have no bounds Szeletek egyesítése: a szeleteknek nincsenek határai
|
||||
@msg command `{0}` is not available right now: {1} a parancs jelenleg nem érhető el: `{0}`: {1}
|
||||
@msg command `{id}` is not available right now a parancs jelenleg nem érhető el: `{id}`
|
||||
@msg compound paths can only contain paths összetett útvonal csak útvonalakat tartalmazhat
|
||||
@msg compressed (RLE) bitmaps can't be read yet a tömörített (RLE) bitképek még nem olvashatók
|
||||
@msg Convert to Artboards: selection has no area Átalakítás rajztáblákká: a kijelölésnek nincs területe
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4351,6 +4351,7 @@ imageTrace Outline Kontur
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` bukan warna seperti "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: maksimal {MAX_TABLE} warna
|
||||
@msg command `{0}` is not available right now: {1} perintah `{0}` tidak tersedia saat ini: {1}
|
||||
@msg command `{id}` is not available right now perintah `{id}` tidak tersedia saat ini
|
||||
@msg compound paths can only contain paths jalur majemuk hanya dapat berisi jalur
|
||||
@msg compressed (RLE) bitmaps can't be read yet bitmap terkompresi (RLE) belum dapat dibaca
|
||||
@msg damaged rusak
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2380 and column 5.
|
@@ -4446,6 +4446,7 @@ axis Both Entrambi
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` non è un colore come "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: al massimo {MAX_TABLE} colori
|
||||
@msg command `{0}` is not available right now: {1} il comando `{0}` non è disponibile in questo momento: {1}
|
||||
@msg command `{id}` is not available right now il comando `{id}` non è disponibile in questo momento
|
||||
@msg compound paths can only contain paths i tracciati composti possono contenere solo tracciati
|
||||
@msg compressed (RLE) bitmaps can't be read yet le bitmap compresse (RLE) non possono ancora essere lette
|
||||
@msg damaged danneggiato
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4580,6 +4580,7 @@ swatch Bright Violet ビビッドバイオレット
|
||||
@msg nothing to distort 変形するものがありません
|
||||
@msg unknown option `{path}.{k}` `{path}.{k}` は不明なオプションです
|
||||
@msg command `{0}` is not available right now: {1} コマンド `{0}` は現在使用できません: {1}
|
||||
@msg command `{id}` is not available right now コマンド `{id}` は現在使用できません
|
||||
@msg internal error in `{cmd}`: {msg} (the document was left as it was before; please report this bug) `{cmd}` で内部エラーが発生しました: {msg} (ドキュメントは変更されていません。このバグを報告してください)
|
||||
@msg invalid parameters for `{cmd}`: {msg} `{cmd}` のパラメーターが正しくありません: {msg}
|
||||
@msg no active document アクティブなドキュメントがありません
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4166,6 +4166,7 @@ font-technology Variable ცვლადი
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` ფერი არ არის, მაგალითად "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: არაუმეტეს {MAX_TABLE} ფერი
|
||||
@msg command `{0}` is not available right now: {1} ბრძანება `{0}` ახლა ხელმისაწვდომი არ არის: {1}
|
||||
@msg command `{id}` is not available right now ბრძანება `{id}` ახლა ხელმისაწვდომი არ არის
|
||||
@msg compound paths can only contain paths შედგენილი ტრაექტორია მხოლოდ ტრაექტორიებს შეიძლება შეიცავდეს
|
||||
@msg compressed (RLE) bitmaps can't be read yet შეკუმშული (RLE) ბიტმაპების წაკითხვა ჯერ არ ხერხდება
|
||||
@msg damaged დაზიანებულია
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -4507,6 +4507,7 @@ theme Appearance 외관
|
||||
@msg nothing to distort 왜곡할 항목이 없습니다
|
||||
@msg unknown option `{path}.{k}` 알 수 없는 옵션 `{path}.{k}`
|
||||
@msg command `{0}` is not available right now: {1} 명령 `{0}`은(는) 지금 사용할 수 없습니다: {1}
|
||||
@msg command `{id}` is not available right now 명령 `{id}`은(는) 지금 사용할 수 없습니다
|
||||
@msg internal error in `{cmd}`: {msg} (the document was left as it was before; please report this bug) `{cmd}`에서 내부 오류가 발생했습니다: {msg}(문서는 이전 상태로 유지되었습니다. 이 버그를 신고해 주세요)
|
||||
@msg invalid parameters for `{cmd}`: {msg} `{cmd}`의 매개변수가 올바르지 않습니다: {msg}
|
||||
@msg no active document 활성 문서가 없습니다
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4365,6 +4365,7 @@ imageTrace Outline Contour
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` is geen kleur zoals "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: maximaal {MAX_TABLE} kleuren
|
||||
@msg command `{0}` is not available right now: {1} opdracht `{0}` is nu niet beschikbaar: {1}
|
||||
@msg command `{id}` is not available right now opdracht `{id}` is nu niet beschikbaar
|
||||
@msg compound paths can only contain paths samengestelde paden kunnen alleen paden bevatten
|
||||
@msg compressed (RLE) bitmaps can't be read yet gecomprimeerde (RLE) bitmaps kunnen nog niet gelezen worden
|
||||
@msg damaged beschadigd
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4527,6 +4527,7 @@ imageTrace Outline Kontur
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` nie jest kolorem w rodzaju "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: maksymalnie {MAX_TABLE} kolorów
|
||||
@msg command `{0}` is not available right now: {1} polecenie `{0}` jest teraz niedostępne: {1}
|
||||
@msg command `{id}` is not available right now polecenie `{id}` jest teraz niedostępne
|
||||
@msg compound paths can only contain paths ścieżki złożone mogą zawierać tylko ścieżki
|
||||
@msg compressed (RLE) bitmaps can't be read yet skompresowanych bitmap (RLE) nie można jeszcze odczytać
|
||||
@msg damaged uszkodzony
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3935,6 +3935,7 @@ axis Both Ambos
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` não é uma cor como "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: no máximo {MAX_TABLE} cores
|
||||
@msg command `{0}` is not available right now: {1} o comando `{0}` não está disponível agora: {1}
|
||||
@msg command `{id}` is not available right now o comando `{id}` não está disponível agora
|
||||
@msg compound paths can only contain paths traçados compostos só podem conter traçados
|
||||
@msg compressed (RLE) bitmaps can't be read yet bitmaps compactados (RLE) ainda não podem ser lidos
|
||||
@msg damaged danificado
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -4432,6 +4432,7 @@ axis Both Оба
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` не является цветом, например "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: не более {MAX_TABLE} цветов
|
||||
@msg command `{0}` is not available right now: {1} команда `{0}` сейчас недоступна: {1}
|
||||
@msg command `{id}` is not available right now команда `{id}` сейчас недоступна
|
||||
@msg compound paths can only contain paths составные контуры могут содержать только контуры
|
||||
@msg compressed (RLE) bitmaps can't be read yet сжатые (RLE) растровые изображения пока не читаются
|
||||
@msg damaged повреждено
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -4298,6 +4298,7 @@ axis Both Båda
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` är inte en färg som "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: högst {MAX_TABLE} färger
|
||||
@msg command `{0}` is not available right now: {1} kommandot `{0}` är inte tillgängligt just nu: {1}
|
||||
@msg command `{id}` is not available right now kommandot `{id}` är inte tillgängligt just nu
|
||||
@msg compound paths can only contain paths sammansatta banor kan bara innehålla banor
|
||||
@msg compressed (RLE) bitmaps can't be read yet komprimerade (RLE) bitmappar kan inte läsas än
|
||||
@msg damaged skadad
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 25.
|
@@ -4160,6 +4160,7 @@ axis Both Her İkisi
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}`, "#ff8800" gibi bir renk değil
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: en fazla {MAX_TABLE} renginde
|
||||
@msg command `{0}` is not available right now: {1} `{0}` komutu şu anda kullanılamıyor: {1}
|
||||
@msg command `{id}` is not available right now `{id}` komutu şu anda kullanılamıyor
|
||||
@msg compound paths can only contain paths bileşik yollar yalnızca yollar içerebilir
|
||||
@msg compressed (RLE) bitmaps can't be read yet sıkıştırılmış (RLE) bitmapler henüz okunamıyor
|
||||
@msg damaged hasarlı
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 25.
|
@@ -4430,6 +4430,7 @@ axis Both Обидві
|
||||
@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}` не є кольором, наприклад "#ff8800"
|
||||
@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: не більше {MAX_TABLE} кольорів
|
||||
@msg command `{0}` is not available right now: {1} команда `{0}` зараз недоступна: {1}
|
||||
@msg command `{id}` is not available right now команда `{id}` зараз недоступна
|
||||
@msg compound paths can only contain paths складені контури можуть містити лише контури
|
||||
@msg compressed (RLE) bitmaps can't be read yet стислі (RLE) растрові зображення поки не читаються
|
||||
@msg damaged пошкоджено
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 182 and column 5.
|
@@ -4603,6 +4603,7 @@ theme Appearance Giao diện
|
||||
@msg column must be true or a number from 1 column phải là true hoặc số từ 1
|
||||
@msg Combine Slices: the slices have no bounds Kết hợp lát cắt: các lát cắt không có giới hạn
|
||||
@msg command `{0}` is not available right now: {1} lệnh `{0}` hiện không khả dụng: {1}
|
||||
@msg command `{id}` is not available right now lệnh `{id}` hiện không khả dụng
|
||||
@msg compound paths can only contain paths đường dẫn phức chỉ có thể chứa đường dẫn
|
||||
@msg compressed (RLE) bitmaps can't be read yet bitmap nén (RLE) chưa thể đọc được
|
||||
@msg Convert to Artboards: selection has no area Chuyển thành bảng vẽ: vùng chọn không có diện tích
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 204 and column 5.
|
@@ -4284,6 +4284,7 @@ imageTrace Outline 轮廓
|
||||
@msg nothing to distort 没有可扭曲的内容
|
||||
@msg unknown option `{path}.{k}` 未知选项 `{path}.{k}`
|
||||
@msg command `{0}` is not available right now: {1} 命令 `{0}` 当前不可用:{1}
|
||||
@msg command `{id}` is not available right now 命令 `{id}` 当前不可用
|
||||
@msg internal error in `{cmd}`: {msg} (the document was left as it was before; please report this bug) `{cmd}` 中出现内部错误:{msg} (文档保持原样;请报告此错误)
|
||||
@msg invalid parameters for `{cmd}`: {msg} `{cmd}` 的参数无效:{msg}
|
||||
@msg no active document 没有活动文档
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -2078,6 +2078,7 @@ file-filter Templates 範本
|
||||
@msg nothing to distort 沒有可扭曲的內容
|
||||
@msg unknown option `{path}.{k}` 未知的選項 `{path}.{k}`
|
||||
@msg command `{0}` is not available right now: {1} 指令 `{0}` 目前無法使用:{1}
|
||||
@msg command `{id}` is not available right now 指令 `{id}` 目前無法使用
|
||||
@msg internal error in `{cmd}`: {msg} (the document was left as it was before; please report this bug) `{cmd}` 發生內部錯誤:{msg} (文件維持原狀;請回報此錯誤)
|
||||
@msg invalid parameters for `{cmd}`: {msg} `{cmd}` 的參數無效:{msg}
|
||||
@msg no active document 沒有作用中的文件
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -72,8 +72,7 @@ pub(crate) use invoke::graph_dialog;
|
||||
pub(crate) use invoke::with_held_keys;
|
||||
pub use invoke::{click_target, invoke, invoke_from_system_menu};
|
||||
pub(crate) use labels::lists_plugin;
|
||||
#[cfg(test)]
|
||||
use labels::shows_a_name;
|
||||
pub(crate) use labels::shows_a_name;
|
||||
pub use labels::{CONTEXT_LABELS, DYNAMIC_LABELS, display_label, dynamic_label, item_shortcut, menu_strings};
|
||||
pub use run::{check_params, run_ui_command};
|
||||
pub(crate) use run::{normalize_panel, opt_bool, opt_index, opt_number};
|
||||
|
||||
@@ -125,7 +125,7 @@ fn command_label(app: &VectorcraftApp, id: &str, label: &str) -> Option<String>
|
||||
/// label: a recent file, a saved view, a font, a user library or preset, a custom workspace, a
|
||||
/// plug-in, an SVG filter, a script of the Scripts folder? Such names are shown as they are, never
|
||||
/// translated (a workspace the user calls "Layers" stays "Layers").
|
||||
pub(super) fn shows_a_name(id: &str, label: &str) -> bool {
|
||||
pub(crate) fn shows_a_name(id: &str, label: &str) -> bool {
|
||||
const SLOTS: [&str; 8] = [
|
||||
"file.openRecent",
|
||||
"view.goto",
|
||||
|
||||
@@ -325,9 +325,10 @@ mod tests {
|
||||
for it in items {
|
||||
match it {
|
||||
menus::Item::Sub(_, children) => walk(children, out),
|
||||
// Items that list an installed plug-in come and go as tests beside this one
|
||||
// install plug-ins, and no shortcut or pick reads them.
|
||||
menus::Item::Cmd(_, id, p) if !menus::lists_plugin(id, p) => out.push(it),
|
||||
// Items that list an installed plug-in or show a name that is user data come and
|
||||
// go as tests beside this one install plug-ins or add toolbars, and no shortcut or
|
||||
// pick reads them.
|
||||
menus::Item::Cmd(label, id, p) if !menus::lists_plugin(id, p) && !menus::shows_a_name(id, label) => out.push(it),
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -658,13 +658,16 @@ fn menu_bar_items() -> &'static HashMap<&'static str, Vec<(&'static str, Value)>
|
||||
}
|
||||
|
||||
/// The (label, params) of each item of the menus `tree`, by command id. Items that list an
|
||||
/// installed plug-in ([`menus::lists_plugin`]) are left out: [`menu_bar_items`] is built once,
|
||||
/// and a plug-in installed or removed later would leave it with a row the menu no longer shows.
|
||||
/// installed plug-in ([`menus::lists_plugin`]) or show a name that is user data
|
||||
/// ([`menus::shows_a_name`]: a custom toolbar, a script, a recent file, a saved selection) are left
|
||||
/// out: [`menu_bar_items`] is built once, and such items come and go after that.
|
||||
fn bar_items(tree: &[(&'static str, Vec<menus::Item>)]) -> HashMap<&'static str, Vec<(&'static str, Value)>> {
|
||||
fn walk(items: &[menus::Item], out: &mut HashMap<&'static str, Vec<(&'static str, Value)>>) {
|
||||
for it in items {
|
||||
match it {
|
||||
menus::Item::Cmd(label, id, p) if !menus::lists_plugin(id, p) => out.entry(*id).or_default().push((*label, p.clone())),
|
||||
menus::Item::Cmd(label, id, p) if !menus::lists_plugin(id, p) && !menus::shows_a_name(id, label) => {
|
||||
out.entry(*id).or_default().push((*label, p.clone()))
|
||||
}
|
||||
menus::Item::Sub(_, children) => walk(children, out),
|
||||
_ => {}
|
||||
}
|
||||
@@ -693,15 +696,21 @@ pub(crate) fn menu_target(id: &str) -> Option<(String, Value)> {
|
||||
|
||||
/// What a command search pick, or a shortcut without params, of command `id` runs now: `Ok` with
|
||||
/// what a click on its menu bar item runs ([`menu_target`]), or `None` when no such item gives it
|
||||
/// params. While that item is dimmed, no dialog opens for it: `Err` holds the status line that says
|
||||
/// why the command can't run (Remove Background… with no image selected).
|
||||
/// params. While that item is dimmed ([`menus::enabled`]), no dialog opens for it: `Err` holds the
|
||||
/// status line ([`dimmed`]), as for Remove Background… with no image selected.
|
||||
pub(crate) fn menu_target_now(app: &VectorcraftApp, id: &str) -> Option<Result<(String, Value), String>> {
|
||||
let target = menu_target(id)?;
|
||||
if menus::enabled(app, id) {
|
||||
return Some(Ok(target));
|
||||
}
|
||||
let why = (vectorcraft_engine::find_command(id)?.enabled)(&app.session).err()?;
|
||||
Some(Err(vectorcraft_engine::EngineError::Disabled(id.to_string(), why).to_string()))
|
||||
Some(if menus::enabled(app, id) { Ok(target) } else { dimmed(app, id) })
|
||||
}
|
||||
|
||||
/// What [`menu_target_now`] gives for command `id` while its menu bar item is dimmed: the status
|
||||
/// line, with the engine's reason when it gives one. The app's own rules ([`menus::enabled`]) dim
|
||||
/// UI commands, and some commands the engine would run, without giving a reason.
|
||||
fn dimmed(app: &VectorcraftApp, id: &str) -> Result<(String, Value), String> {
|
||||
let Some(why) = vectorcraft_engine::find_command(id).and_then(|c| (c.enabled)(&app.session).err()) else {
|
||||
return Err(format!("command `{id}` is not available right now"));
|
||||
};
|
||||
Err(vectorcraft_engine::EngineError::Disabled(id.to_string(), why).to_string())
|
||||
}
|
||||
|
||||
/// Is `key` a command with no default shortcut that a key press can't run: no item of the menu
|
||||
@@ -2289,24 +2298,46 @@ mod tests {
|
||||
}
|
||||
|
||||
/// The menu bar items a shortcut or a command search pick reads leave out items that list an
|
||||
/// installed plug-in (a File › Open With importer, an Object › Plug-ins filter), which come and
|
||||
/// go after the items are read; the other items stay.
|
||||
/// installed plug-in (a File › Open With importer, an Object › Plug-ins filter) or show a name
|
||||
/// that is user data (a custom toolbar, a script of the Scripts folder), which come and go after
|
||||
/// the items are read; the other items stay.
|
||||
#[test]
|
||||
fn menu_bar_items_leave_out_installed_plug_ins() {
|
||||
fn menu_bar_items_leave_out_installed_plug_ins_and_user_data() {
|
||||
let tree = vec![(
|
||||
"File",
|
||||
vec![
|
||||
menus::Item::Sub("Open With", vec![menus::Item::Cmd("Spins…", "file.openWith", json!({"importer": "plugin.test.spins"}))]),
|
||||
menus::Item::Cmd("Filter…", "plugin.dialog", json!({"id": "test.filter"})),
|
||||
menus::Item::Cmd("Mine", "window.toolbar.custom", json!({"name": "Mine"})),
|
||||
menus::Item::Cmd("tidy.js", crate::scripts_menu::COMMAND, json!({"path": "/scripts/tidy.js"})),
|
||||
menus::Item::Cmd("Clean Up…", "object.path.cleanUp", json!({"strayPoints": true})),
|
||||
],
|
||||
)];
|
||||
let items = bar_items(&tree);
|
||||
assert!(!items.contains_key("file.openWith"), "{items:?}");
|
||||
assert!(!items.contains_key("plugin.dialog"), "{items:?}");
|
||||
assert!(!items.contains_key("window.toolbar.custom"), "{items:?}");
|
||||
assert!(!items.contains_key(crate::scripts_menu::COMMAND), "{items:?}");
|
||||
assert_eq!(items.get("object.path.cleanUp"), Some(&vec![("Clean Up…", json!({"strayPoints": true}))]));
|
||||
}
|
||||
|
||||
/// While a menu item is dimmed, a pick or a shortcut gets a status line and no target: with the
|
||||
/// engine's reason when it gives one, and without one when the app's own rules dim the item (an
|
||||
/// Appearance command with nothing targeted, a UI command).
|
||||
#[test]
|
||||
fn a_dimmed_item_gives_a_status_line_with_or_without_a_reason() {
|
||||
use vectorcraft_testkit::fixtures::Fixture;
|
||||
let none = VectorcraftApp::new(vectorcraft_engine::Session::new(), crate::Services::default());
|
||||
assert!(!menus::enabled(&none, "edit.findReplace"));
|
||||
assert_eq!(dimmed(&none, "edit.findReplace"), Err("command `edit.findReplace` is not available right now: no document open".into()));
|
||||
let empty = VectorcraftApp::new(Fixture::Empty.session(), crate::Services::default());
|
||||
for id in ["appearance.addFill", "ui.cropImage"] {
|
||||
assert!(!menus::enabled(&empty, id), "{id}");
|
||||
assert!(vectorcraft_engine::find_command(id).is_none_or(|c| (c.enabled)(&empty.session).is_ok()), "{id}: the engine gives no reason");
|
||||
assert_eq!(dimmed(&empty, id), Err(format!("command `{id}` is not available right now")));
|
||||
}
|
||||
}
|
||||
|
||||
/// Every command the editor lists, run as a key press runs it on a document with one or with
|
||||
/// several objects selected, reports no missing param.
|
||||
#[test]
|
||||
|
||||
@@ -413,22 +413,32 @@ fn a_single_key_shortcut_without_a_dialog_runs_at_once() {
|
||||
}
|
||||
|
||||
/// A key or a chord of a command whose menu item is dimmed opens no dialog: Remove Background… and
|
||||
/// Object Mosaic… with a rectangle selected change nothing and say why they can't run.
|
||||
/// Object Mosaic… with a rectangle selected change nothing and say why they can't run, and so does
|
||||
/// Find and Replace… with no document open.
|
||||
#[test]
|
||||
fn a_shortcut_of_a_dimmed_command_opens_no_dialog_and_says_why() {
|
||||
let chord = vec![
|
||||
egui::Event::ModifiersChanged(cmd() | Modifiers::ALT | Modifiers::SHIFT),
|
||||
egui::Event::Key { key: Key::F9, physical_key: None, pressed: true, repeat: false, modifiers: cmd() | Modifiers::ALT | Modifiers::SHIFT },
|
||||
];
|
||||
for id in ["addon.image.removeBackground", "object.createObjectMosaic"] {
|
||||
for id in ["addon.image.removeBackground", "object.createObjectMosaic", "edit.findReplace"] {
|
||||
assert!(crate::shortcut_editor::menu_target(id).is_some(), "{id} has a dialog");
|
||||
for (shortcut, events) in [("F", press_f()), ("Cmd+Alt+Shift+F9", chord.clone())] {
|
||||
let mut app = app_with_shortcut(id, shortcut);
|
||||
let mut app = if id == "edit.findReplace" {
|
||||
let mut app = VectorcraftApp::new(vectorcraft_engine::Session::new(), Default::default());
|
||||
crate::keymap::set_override(&mut app.ui.shortcut_overrides, "view.screenMode", "");
|
||||
crate::keymap::set_override(&mut app.ui.shortcut_overrides, id, shortcut);
|
||||
app.ui.status.clear();
|
||||
app
|
||||
} else {
|
||||
app_with_shortcut(id, shortcut)
|
||||
};
|
||||
assert!(!crate::menus::enabled(&app, id), "{id}");
|
||||
let before = undo_len(&app);
|
||||
let before = app.session.active().map(|st| st.history.undo.len());
|
||||
frame(&mut app, events);
|
||||
crate::shortcut_editor::sync(&crate::state::UiState::default());
|
||||
assert_eq!((open_dialog(&app), undo_len(&app)), (None, before), "{id} on {shortcut}: {}", app.ui.status);
|
||||
let after = app.session.active().map(|st| st.history.undo.len());
|
||||
assert_eq!((open_dialog(&app), after), (None, before), "{id} on {shortcut}: {}", app.ui.status);
|
||||
assert!(app.ui.status.contains("not available"), "{id} on {shortcut}: {}", app.ui.status);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user