forked from 1b-agent/opencadstudio-upstream
feat(layout): copy a layout from its tab menu (#1822)
The layout tab's right-click menu gains New Layout, Copy, Page Setup and Plot beside Rename and Delete. Copy makes "<name> (2)" with the source's page setup, sheet view and every paper-space object, viewports included, and opens it. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
38d81bf838
commit
0126ea212f
28 files changed
+172
-16
No files matched your search
@@ -695,6 +695,7 @@ common =
|
|||||||
.layers = الطبقات
|
.layers = الطبقات
|
||||||
.layout = التخطيط
|
.layout = التخطيط
|
||||||
.layout-name-silindi = حُذف التخطيط "__ocs_fmt_0__"
|
.layout-name-silindi = حُذف التخطيط "__ocs_fmt_0__"
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = أُنشئ التخطيط "__ocs_fmt_0__" — استخدم MVIEW لإضافة منفذ عرض
|
.layout-new-name-created-use-mview-to-add-a-vie = أُنشئ التخطيط "__ocs_fmt_0__" — استخدم MVIEW لإضافة منفذ عرض
|
||||||
.layout-orig-new-name = التخطيط "__ocs_fmt_0__" ← "__ocs_fmt_1__"
|
.layout-orig-new-name = التخطيط "__ocs_fmt_0__" ← "__ocs_fmt_1__"
|
||||||
.layout-name-created = أُنشئ التخطيط '__ocs_fmt_0__'.
|
.layout-name-created = أُنشئ التخطيط '__ocs_fmt_0__'.
|
||||||
|
|||||||
@@ -682,6 +682,7 @@ common =
|
|||||||
.layers = Слоеве
|
.layers = Слоеве
|
||||||
.layout = Оформление
|
.layout = Оформление
|
||||||
.layout-name-silindi = Оформление "__ocs_fmt_0__" изтрито
|
.layout-name-silindi = Оформление "__ocs_fmt_0__" изтрито
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = Оформление "__ocs_fmt_0__" създадено — използвай MVIEW, за да добавиш изглед
|
.layout-new-name-created-use-mview-to-add-a-vie = Оформление "__ocs_fmt_0__" създадено — използвай MVIEW, за да добавиш изглед
|
||||||
.layout-orig-new-name = Оформление "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
.layout-orig-new-name = Оформление "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
||||||
.layout-name-created = Оформление "__ocs_fmt_0__" създадено.
|
.layout-name-created = Оформление "__ocs_fmt_0__" създадено.
|
||||||
|
|||||||
@@ -682,6 +682,7 @@ common =
|
|||||||
.layers = Vrstvy
|
.layers = Vrstvy
|
||||||
.layout = Rozložení
|
.layout = Rozložení
|
||||||
.layout-name-silindi = Rozložení „__ocs_fmt_0__“ bylo odstraněno
|
.layout-name-silindi = Rozložení „__ocs_fmt_0__“ bylo odstraněno
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = Bylo vytvořeno rozvržení „__ocs_fmt_0__“ – pomocí MVIEW přidejte výřez
|
.layout-new-name-created-use-mview-to-add-a-vie = Bylo vytvořeno rozvržení „__ocs_fmt_0__“ – pomocí MVIEW přidejte výřez
|
||||||
.layout-orig-new-name = Rozložení "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
.layout-orig-new-name = Rozložení "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
||||||
.layout-name-created = Bylo vytvořeno rozvržení '__ocs_fmt_0__'.
|
.layout-name-created = Bylo vytvořeno rozvržení '__ocs_fmt_0__'.
|
||||||
|
|||||||
@@ -683,6 +683,7 @@ common =
|
|||||||
.layers = Ebenen
|
.layers = Ebenen
|
||||||
.layout = Layout
|
.layout = Layout
|
||||||
.layout-name-silindi = Layout „__ocs_fmt_0__“ gelöscht
|
.layout-name-silindi = Layout „__ocs_fmt_0__“ gelöscht
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = Layout „__ocs_fmt_0__“ erstellt — mit MVIEW kann ein Ansichtsfenster hinzugefügt werden
|
.layout-new-name-created-use-mview-to-add-a-vie = Layout „__ocs_fmt_0__“ erstellt — mit MVIEW kann ein Ansichtsfenster hinzugefügt werden
|
||||||
.layout-orig-new-name = Layout „__ocs_fmt_0__“ → „__ocs_fmt_1__“
|
.layout-orig-new-name = Layout „__ocs_fmt_0__“ → „__ocs_fmt_1__“
|
||||||
.layout-name-created = Layout „__ocs_fmt_0__“ erstellt.
|
.layout-name-created = Layout „__ocs_fmt_0__“ erstellt.
|
||||||
|
|||||||
@@ -684,6 +684,7 @@ common =
|
|||||||
.layers = Επίπεδα
|
.layers = Επίπεδα
|
||||||
.layout = Διάταξη
|
.layout = Διάταξη
|
||||||
.layout-name-silindi = Η διάταξη "__ocs_fmt_0__" διαγράφηκε
|
.layout-name-silindi = Η διάταξη "__ocs_fmt_0__" διαγράφηκε
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = Η διάταξη "__ocs_fmt_0__" δημιουργήθηκε — χρησιμοποιήστε MVIEW για να προσθέσετε θύρα προβολής
|
.layout-new-name-created-use-mview-to-add-a-vie = Η διάταξη "__ocs_fmt_0__" δημιουργήθηκε — χρησιμοποιήστε MVIEW για να προσθέσετε θύρα προβολής
|
||||||
.layout-orig-new-name = Διάταξη "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
.layout-orig-new-name = Διάταξη "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
||||||
.layout-name-created = Η διάταξη '__ocs_fmt_0__' δημιουργήθηκε.
|
.layout-name-created = Η διάταξη '__ocs_fmt_0__' δημιουργήθηκε.
|
||||||
|
|||||||
@@ -679,6 +679,7 @@ common =
|
|||||||
.layers = Layers
|
.layers = Layers
|
||||||
.layout = Layout
|
.layout = Layout
|
||||||
.layout-name-silindi = Layout "__ocs_fmt_0__" deleted
|
.layout-name-silindi = Layout "__ocs_fmt_0__" deleted
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = Layout "__ocs_fmt_0__" created — use MVIEW to add a viewport
|
.layout-new-name-created-use-mview-to-add-a-vie = Layout "__ocs_fmt_0__" created — use MVIEW to add a viewport
|
||||||
.layout-orig-new-name = Layout "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
.layout-orig-new-name = Layout "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
||||||
.layout-name-created = Layout '__ocs_fmt_0__' created.
|
.layout-name-created = Layout '__ocs_fmt_0__' created.
|
||||||
|
|||||||
@@ -683,6 +683,7 @@ common =
|
|||||||
.layers = Capas
|
.layers = Capas
|
||||||
.layout = Presentación
|
.layout = Presentación
|
||||||
.layout-name-silindi = Se eliminó la presentación «__ocs_fmt_0__»
|
.layout-name-silindi = Se eliminó la presentación «__ocs_fmt_0__»
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = Se creó la presentación «__ocs_fmt_0__»; use MVIEW para añadir una ventana gráfica
|
.layout-new-name-created-use-mview-to-add-a-vie = Se creó la presentación «__ocs_fmt_0__»; use MVIEW para añadir una ventana gráfica
|
||||||
.layout-orig-new-name = Presentación «__ocs_fmt_0__» → «__ocs_fmt_1__»
|
.layout-orig-new-name = Presentación «__ocs_fmt_0__» → «__ocs_fmt_1__»
|
||||||
.layout-name-created = Se creó la presentación «__ocs_fmt_0__».
|
.layout-name-created = Se creó la presentación «__ocs_fmt_0__».
|
||||||
|
|||||||
@@ -682,6 +682,7 @@ common =
|
|||||||
.layers = Kerrokset
|
.layers = Kerrokset
|
||||||
.layout = Asettelu
|
.layout = Asettelu
|
||||||
.layout-name-silindi = Asettelu "__ocs_fmt_0__" poistettiin
|
.layout-name-silindi = Asettelu "__ocs_fmt_0__" poistettiin
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = Asettelu "__ocs_fmt_0__" luotu — käytä MVIEW:tä lisätäksesi näkymän
|
.layout-new-name-created-use-mview-to-add-a-vie = Asettelu "__ocs_fmt_0__" luotu — käytä MVIEW:tä lisätäksesi näkymän
|
||||||
.layout-orig-new-name = Asettelu "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
.layout-orig-new-name = Asettelu "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
||||||
.layout-name-created = Asettelu '__ocs_fmt_0__' luotu.
|
.layout-name-created = Asettelu '__ocs_fmt_0__' luotu.
|
||||||
|
|||||||
@@ -683,6 +683,7 @@ common =
|
|||||||
.layers = Calques
|
.layers = Calques
|
||||||
.layout = Mise en page
|
.layout = Mise en page
|
||||||
.layout-name-silindi = Présentation « __ocs_fmt_0__ » supprimée
|
.layout-name-silindi = Présentation « __ocs_fmt_0__ » supprimée
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = Présentation « __ocs_fmt_0__ » créée — utilisez MVIEW pour ajouter une fenêtre
|
.layout-new-name-created-use-mview-to-add-a-vie = Présentation « __ocs_fmt_0__ » créée — utilisez MVIEW pour ajouter une fenêtre
|
||||||
.layout-orig-new-name = Disposition "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
.layout-orig-new-name = Disposition "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
||||||
.layout-name-created = Mise en page '__ocs_fmt_0__' créée.
|
.layout-name-created = Mise en page '__ocs_fmt_0__' créée.
|
||||||
|
|||||||
@@ -671,6 +671,7 @@ common =
|
|||||||
.layers = लेयर
|
.layers = लेयर
|
||||||
.layout = लेआउट
|
.layout = लेआउट
|
||||||
.layout-name-silindi = लेआउट “__ocs_fmt_0__” हटाया गया
|
.layout-name-silindi = लेआउट “__ocs_fmt_0__” हटाया गया
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = लेआउट "__ocs_fmt_0__" बनाया गया है - एक व्यूपोर्ट जोड़ने के लिए MVIEW का उपयोग करें
|
.layout-new-name-created-use-mview-to-add-a-vie = लेआउट "__ocs_fmt_0__" बनाया गया है - एक व्यूपोर्ट जोड़ने के लिए MVIEW का उपयोग करें
|
||||||
.layout-orig-new-name = लेआउट "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
.layout-orig-new-name = लेआउट "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
||||||
.layout-name-created = लेआउट '__ocs_fmt_0__' बनाया गया है।
|
.layout-name-created = लेआउट '__ocs_fmt_0__' बनाया गया है।
|
||||||
|
|||||||
@@ -687,6 +687,7 @@ common =
|
|||||||
.layers = Fóliák
|
.layers = Fóliák
|
||||||
.layout = Elrendezés
|
.layout = Elrendezés
|
||||||
.layout-name-silindi = A(z) „__ocs_fmt_0__” elrendezés törölve
|
.layout-name-silindi = A(z) „__ocs_fmt_0__” elrendezés törölve
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = A „__ocs_fmt_0__” elrendezés létrehozva – használja a MVIEW elemet nézetablak hozzáadásához
|
.layout-new-name-created-use-mview-to-add-a-vie = A „__ocs_fmt_0__” elrendezés létrehozva – használja a MVIEW elemet nézetablak hozzáadásához
|
||||||
.layout-orig-new-name = „__ocs_fmt_0__” → „__ocs_fmt_1__” elrendezés
|
.layout-orig-new-name = „__ocs_fmt_0__” → „__ocs_fmt_1__” elrendezés
|
||||||
.layout-name-created = „__ocs_fmt_0__” elrendezés létrehozva.
|
.layout-name-created = „__ocs_fmt_0__” elrendezés létrehozva.
|
||||||
|
|||||||
@@ -682,6 +682,7 @@ common =
|
|||||||
.layers = Livelli
|
.layers = Livelli
|
||||||
.layout = Disposizione
|
.layout = Disposizione
|
||||||
.layout-name-silindi = Layout "__ocs_fmt_0__" eliminato
|
.layout-name-silindi = Layout "__ocs_fmt_0__" eliminato
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = Layout "__ocs_fmt_0__" creato: utilizza MVIEW per aggiungere una finestra
|
.layout-new-name-created-use-mview-to-add-a-vie = Layout "__ocs_fmt_0__" creato: utilizza MVIEW per aggiungere una finestra
|
||||||
.layout-orig-new-name = Disposizione "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
.layout-orig-new-name = Disposizione "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
||||||
.layout-name-created = Layout '__ocs_fmt_0__' creato.
|
.layout-name-created = Layout '__ocs_fmt_0__' creato.
|
||||||
|
|||||||
@@ -673,6 +673,7 @@ common =
|
|||||||
.layers = レイヤー
|
.layers = レイヤー
|
||||||
.layout = レイアウト
|
.layout = レイアウト
|
||||||
.layout-name-silindi = レイアウト "__ocs_fmt_0__" を削除しました
|
.layout-name-silindi = レイアウト "__ocs_fmt_0__" を削除しました
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = レイアウト "__ocs_fmt_0__" を作成しました — MVIEW でビューポートを追加できます
|
.layout-new-name-created-use-mview-to-add-a-vie = レイアウト "__ocs_fmt_0__" を作成しました — MVIEW でビューポートを追加できます
|
||||||
.layout-orig-new-name = レイアウト "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
.layout-orig-new-name = レイアウト "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
||||||
.layout-name-created = レイアウト '__ocs_fmt_0__' を作成しました。
|
.layout-name-created = レイアウト '__ocs_fmt_0__' を作成しました。
|
||||||
|
|||||||
@@ -682,6 +682,7 @@ common =
|
|||||||
.layers = 레이어
|
.layers = 레이어
|
||||||
.layout = 레이아웃
|
.layout = 레이아웃
|
||||||
.layout-name-silindi = 레이아웃 "__ocs_fmt_0__" 삭제됨
|
.layout-name-silindi = 레이아웃 "__ocs_fmt_0__" 삭제됨
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = "__ocs_fmt_0__" 레이아웃이 생성되었습니다. MVIEW를 사용하여 뷰포트를 추가하세요.
|
.layout-new-name-created-use-mview-to-add-a-vie = "__ocs_fmt_0__" 레이아웃이 생성되었습니다. MVIEW를 사용하여 뷰포트를 추가하세요.
|
||||||
.layout-orig-new-name = 레이아웃 "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
.layout-orig-new-name = 레이아웃 "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
||||||
.layout-name-created = '__ocs_fmt_0__' 레이아웃이 생성되었습니다.
|
.layout-name-created = '__ocs_fmt_0__' 레이아웃이 생성되었습니다.
|
||||||
|
|||||||
@@ -686,6 +686,7 @@ common =
|
|||||||
.layers = ເລເຢີ
|
.layers = ເລເຢີ
|
||||||
.layout = ເລເອົາຕ໌
|
.layout = ເລເອົາຕ໌
|
||||||
.layout-name-silindi = ລຶບເລເອົາຕ໌ "__ocs_fmt_0__" ແລ້ວ
|
.layout-name-silindi = ລຶບເລເອົາຕ໌ "__ocs_fmt_0__" ແລ້ວ
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = ສ້າງເລເອົາຕ໌ "__ocs_fmt_0__" ແລ້ວ — ໃຊ້ MVIEW ເພື່ອເພີ່ມວິວພອດ
|
.layout-new-name-created-use-mview-to-add-a-vie = ສ້າງເລເອົາຕ໌ "__ocs_fmt_0__" ແລ້ວ — ໃຊ້ MVIEW ເພື່ອເພີ່ມວິວພອດ
|
||||||
.layout-orig-new-name = ເລເອົາຕ໌ "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
.layout-orig-new-name = ເລເອົາຕ໌ "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
||||||
.layout-name-created = ສ້າງເລເອົາຕ໌ '__ocs_fmt_0__' ແລ້ວ.
|
.layout-name-created = ສ້າງເລເອົາຕ໌ '__ocs_fmt_0__' ແລ້ວ.
|
||||||
|
|||||||
@@ -681,6 +681,7 @@ common =
|
|||||||
.layers = Lagen
|
.layers = Lagen
|
||||||
.layout = Indeling
|
.layout = Indeling
|
||||||
.layout-name-silindi = Lay-out "__ocs_fmt_0__" verwijderd
|
.layout-name-silindi = Lay-out "__ocs_fmt_0__" verwijderd
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = Lay-out "__ocs_fmt_0__" gemaakt — voeg een weergavevenster toe met MVIEW
|
.layout-new-name-created-use-mview-to-add-a-vie = Lay-out "__ocs_fmt_0__" gemaakt — voeg een weergavevenster toe met MVIEW
|
||||||
.layout-orig-new-name = Indeling "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
.layout-orig-new-name = Indeling "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
||||||
.layout-name-created = Layout '__ocs_fmt_0__' aangemaakt.
|
.layout-name-created = Layout '__ocs_fmt_0__' aangemaakt.
|
||||||
|
|||||||
@@ -682,6 +682,7 @@ common =
|
|||||||
.layers = Warstwy
|
.layers = Warstwy
|
||||||
.layout = Układ
|
.layout = Układ
|
||||||
.layout-name-silindi = Układ „__ocs_fmt_0__” został usunięty
|
.layout-name-silindi = Układ „__ocs_fmt_0__” został usunięty
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = Utworzono układ „__ocs_fmt_0__” — użyj MVIEW, aby dodać rzutnię
|
.layout-new-name-created-use-mview-to-add-a-vie = Utworzono układ „__ocs_fmt_0__” — użyj MVIEW, aby dodać rzutnię
|
||||||
.layout-orig-new-name = Układ „__ocs_fmt_0__” → „__ocs_fmt_1__”
|
.layout-orig-new-name = Układ „__ocs_fmt_0__” → „__ocs_fmt_1__”
|
||||||
.layout-name-created = Utworzono układ „__ocs_fmt_0__”.
|
.layout-name-created = Utworzono układ „__ocs_fmt_0__”.
|
||||||
|
|||||||
@@ -683,6 +683,7 @@ common =
|
|||||||
.layers = Camadas
|
.layers = Camadas
|
||||||
.layout = Layout
|
.layout = Layout
|
||||||
.layout-name-silindi = O layout “__ocs_fmt_0__” foi excluído
|
.layout-name-silindi = O layout “__ocs_fmt_0__” foi excluído
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = O layout “__ocs_fmt_0__” foi criado — use MVIEW para adicionar uma janela de visualização
|
.layout-new-name-created-use-mview-to-add-a-vie = O layout “__ocs_fmt_0__” foi criado — use MVIEW para adicionar uma janela de visualização
|
||||||
.layout-orig-new-name = Layout “__ocs_fmt_0__” → “__ocs_fmt_1__”
|
.layout-orig-new-name = Layout “__ocs_fmt_0__” → “__ocs_fmt_1__”
|
||||||
.layout-name-created = O layout “__ocs_fmt_0__” foi criado.
|
.layout-name-created = O layout “__ocs_fmt_0__” foi criado.
|
||||||
|
|||||||
@@ -686,6 +686,7 @@ common =
|
|||||||
.layers = Слои
|
.layers = Слои
|
||||||
.layout = Расположение
|
.layout = Расположение
|
||||||
.layout-name-silindi = Лист «__ocs_fmt_0__» удалён
|
.layout-name-silindi = Лист «__ocs_fmt_0__» удалён
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = Создан лист «__ocs_fmt_0__» — используйте MVIEW для добавления видового экрана
|
.layout-new-name-created-use-mview-to-add-a-vie = Создан лист «__ocs_fmt_0__» — используйте MVIEW для добавления видового экрана
|
||||||
.layout-orig-new-name = Выравнивание "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
.layout-orig-new-name = Выравнивание "__ocs_fmt_0__" → "__ocs_fmt_1__"
|
||||||
.layout-name-created = Создан лист «__ocs_fmt_0__».
|
.layout-name-created = Создан лист «__ocs_fmt_0__».
|
||||||
|
|||||||
@@ -669,6 +669,7 @@ common =
|
|||||||
.layers = Katmanlar
|
.layers = Katmanlar
|
||||||
.layout = Yerleşim
|
.layout = Yerleşim
|
||||||
.layout-name-silindi = "__ocs_fmt_0__" yerleşimi silindi
|
.layout-name-silindi = "__ocs_fmt_0__" yerleşimi silindi
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = "__ocs_fmt_0__" yerleşimi oluşturuldu — görünüm alanı eklemek için MVIEW komutunu kullanın
|
.layout-new-name-created-use-mview-to-add-a-vie = "__ocs_fmt_0__" yerleşimi oluşturuldu — görünüm alanı eklemek için MVIEW komutunu kullanın
|
||||||
.layout-orig-new-name = "__ocs_fmt_0__" yerleşimi → "__ocs_fmt_1__"
|
.layout-orig-new-name = "__ocs_fmt_0__" yerleşimi → "__ocs_fmt_1__"
|
||||||
.layout-name-created = '__ocs_fmt_0__' yerleşimi oluşturuldu.
|
.layout-name-created = '__ocs_fmt_0__' yerleşimi oluşturuldu.
|
||||||
|
|||||||
@@ -670,6 +670,7 @@ common =
|
|||||||
.layers = 图层
|
.layers = 图层
|
||||||
.layout = 布局
|
.layout = 布局
|
||||||
.layout-name-silindi = 布局“__ocs_fmt_0__”已删除
|
.layout-name-silindi = 布局“__ocs_fmt_0__”已删除
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = 创建的版式“ __ocs_fmt_0__ ” — 使用 MVIEW 添加视图
|
.layout-new-name-created-use-mview-to-add-a-vie = 创建的版式“ __ocs_fmt_0__ ” — 使用 MVIEW 添加视图
|
||||||
.layout-orig-new-name = 版式“ __ocs_fmt_0__” − “__ocs_fmt_1__ ”
|
.layout-orig-new-name = 版式“ __ocs_fmt_0__” − “__ocs_fmt_1__ ”
|
||||||
.layout-name-created = 创建了版式“ __ocs_fmt_0__ ” 。
|
.layout-name-created = 创建了版式“ __ocs_fmt_0__ ” 。
|
||||||
|
|||||||
@@ -682,6 +682,7 @@ common =
|
|||||||
.layers = 圖層
|
.layers = 圖層
|
||||||
.layout = 配置
|
.layout = 配置
|
||||||
.layout-name-silindi = 配置“__ocs_fmt_0__”已刪除
|
.layout-name-silindi = 配置“__ocs_fmt_0__”已刪除
|
||||||
|
.layout-copied = Layout "__ocs_fmt_0__" copied as "__ocs_fmt_1__"
|
||||||
.layout-new-name-created-use-mview-to-add-a-vie = 建立的版式“ __ocs_fmt_0__ ” — 使用 MVIEW 新增視圖
|
.layout-new-name-created-use-mview-to-add-a-vie = 建立的版式“ __ocs_fmt_0__ ” — 使用 MVIEW 新增視圖
|
||||||
.layout-orig-new-name = 版式“ __ocs_fmt_0__” − “__ocs_fmt_1__ ”
|
.layout-orig-new-name = 版式“ __ocs_fmt_0__” − “__ocs_fmt_1__ ”
|
||||||
.layout-name-created = 建立了版式“ __ocs_fmt_0__ ” 。
|
.layout-name-created = 建立了版式“ __ocs_fmt_0__ ” 。
|
||||||
|
|||||||
@@ -3765,6 +3765,12 @@ pub enum Message {
|
|||||||
},
|
},
|
||||||
/// Create a new paper space layout.
|
/// Create a new paper space layout.
|
||||||
LayoutCreate,
|
LayoutCreate,
|
||||||
|
/// Copy the named layout, its page setup and paper-space objects.
|
||||||
|
LayoutCopy(String),
|
||||||
|
/// Open the named layout's page setup.
|
||||||
|
LayoutPageSetup(String),
|
||||||
|
/// Plot the named layout.
|
||||||
|
LayoutPlot(String),
|
||||||
/// Delete the named paper space layout (Model cannot be deleted).
|
/// Delete the named paper space layout (Model cannot be deleted).
|
||||||
LayoutDelete(String),
|
LayoutDelete(String),
|
||||||
/// Begin inline rename for the given layout tab.
|
/// Begin inline rename for the given layout tab.
|
||||||
|
|||||||
@@ -8297,6 +8297,18 @@ impl OpenCADStudio {
|
|||||||
|
|
||||||
Message::LayoutCreate => self.on_layout_create(),
|
Message::LayoutCreate => self.on_layout_create(),
|
||||||
|
|
||||||
|
Message::LayoutCopy(name) => self.on_layout_copy(name),
|
||||||
|
|
||||||
|
Message::LayoutPageSetup(name) => {
|
||||||
|
let switch_task = self.on_layout_switch(name);
|
||||||
|
Task::batch([switch_task, self.on_plot_dialog_open()])
|
||||||
|
}
|
||||||
|
|
||||||
|
Message::LayoutPlot(name) => {
|
||||||
|
let switch_task = self.on_layout_switch(name);
|
||||||
|
Task::batch([switch_task, Task::done(Message::Command("PLOT".into()))])
|
||||||
|
}
|
||||||
|
|
||||||
Message::LayoutDelete(name) => {
|
Message::LayoutDelete(name) => {
|
||||||
let i = self.active_tab;
|
let i = self.active_tab;
|
||||||
let deleting_current = self.tabs[i].scene.current_layout == name;
|
let deleting_current = self.tabs[i].scene.current_layout == name;
|
||||||
|
|||||||
@@ -6920,6 +6920,47 @@ properties={:.1}ms picked={}",
|
|||||||
cancel_task
|
cancel_task
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Copy layout `source` as "source (2)": its page setup and every
|
||||||
|
/// paper-space object, viewports included. The copy opens.
|
||||||
|
pub(super) fn on_layout_copy(&mut self, source: String) -> Task<Message> {
|
||||||
|
let i = self.active_tab;
|
||||||
|
if self.tabs[i].is_start || source == "Model" {
|
||||||
|
return Task::none();
|
||||||
|
}
|
||||||
|
let existing = self.tabs[i].scene.layout_names();
|
||||||
|
let Some(name) = (2..)
|
||||||
|
.map(|n| format!("{source} ({n})"))
|
||||||
|
.find(|candidate| !existing.contains(candidate))
|
||||||
|
else {
|
||||||
|
return Task::none();
|
||||||
|
};
|
||||||
|
let cancel_task = self.cancel_active_command_for_space_change();
|
||||||
|
self.push_undo_snapshot(i, "LAYOUT");
|
||||||
|
let scene = &mut self.tabs[i].scene;
|
||||||
|
if let Err(e) = scene.add_layout(&name) {
|
||||||
|
self.command_line
|
||||||
|
.push_error(crate::tf!("Failed to create layout: {e}").as_ref());
|
||||||
|
return cancel_task;
|
||||||
|
}
|
||||||
|
scene.copy_layout_page(&source, &name);
|
||||||
|
let handles = scene.layout_paper_entities(&source);
|
||||||
|
let (entities, deps) = crate::app::copy_to_clipboard_kernel(&scene.document, &handles);
|
||||||
|
crate::app::paste_entities_kernel(
|
||||||
|
&mut scene.document,
|
||||||
|
&entities,
|
||||||
|
&deps,
|
||||||
|
None,
|
||||||
|
crate::app::PasteSpace::Layout(&name),
|
||||||
|
);
|
||||||
|
scene.populate_meshes_from_document();
|
||||||
|
scene.bump_geometry();
|
||||||
|
self.tabs[i].dirty = true;
|
||||||
|
self.command_line
|
||||||
|
.push_output(crate::tf!("Layout \"{source}\" copied as \"{name}\"").as_ref());
|
||||||
|
let switch_task = self.on_layout_switch(name);
|
||||||
|
Task::batch([cancel_task, switch_task])
|
||||||
|
}
|
||||||
|
|
||||||
pub(super) fn on_layout_rename_commit(&mut self) -> Task<Message> {
|
pub(super) fn on_layout_rename_commit(&mut self) -> Task<Message> {
|
||||||
if let Some((orig, new_name)) = self.layout_rename_state.take() {
|
if let Some((orig, new_name)) = self.layout_rename_state.take() {
|
||||||
let new_name = new_name.trim().to_string();
|
let new_name = new_name.trim().to_string();
|
||||||
|
|||||||
@@ -1963,6 +1963,7 @@ pub(super) fn message_attribute(source: &str) -> Option<(&'static str, &'static
|
|||||||
"Layout" => Some(("common", "layout")),
|
"Layout" => Some(("common", "layout")),
|
||||||
"Layout\nTabs" => Some(("view", "layout-tabs")),
|
"Layout\nTabs" => Some(("view", "layout-tabs")),
|
||||||
"Layout \"{name}\" silindi" => Some(("common", "layout-name-silindi")),
|
"Layout \"{name}\" silindi" => Some(("common", "layout-name-silindi")),
|
||||||
|
"Layout \"{source}\" copied as \"{name}\"" => Some(("common", "layout-copied")),
|
||||||
"Layout \"{new_name}\" created — use MVIEW to add a viewport" => Some(("common", "layout-new-name-created-use-mview-to-add-a-vie")),
|
"Layout \"{new_name}\" created — use MVIEW to add a viewport" => Some(("common", "layout-new-name-created-use-mview-to-add-a-vie")),
|
||||||
"Layout \"{orig}\" → \"{new_name}\"" => Some(("common", "layout-orig-new-name")),
|
"Layout \"{orig}\" → \"{new_name}\"" => Some(("common", "layout-orig-new-name")),
|
||||||
"Layout '{name}' created." => Some(("common", "layout-name-created")),
|
"Layout '{name}' created." => Some(("common", "layout-name-created")),
|
||||||
|
|||||||
@@ -32,6 +32,78 @@ impl Scene {
|
|||||||
Ok(handle)
|
Ok(handle)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Give layout `name` the page of layout `source`: its page setup,
|
||||||
|
/// limits and UCS, and the sheet viewport's view. It opens as it is, so
|
||||||
|
/// it does not get the first viewport a new layout gets. The paper-space
|
||||||
|
/// objects are copied by the caller.
|
||||||
|
pub fn copy_layout_page(&mut self, source: &str, name: &str) {
|
||||||
|
let find = |document: &codec::CadDocument, wanted: &str| {
|
||||||
|
document.objects.values().find_map(|object| match object {
|
||||||
|
ObjectType::Layout(layout) if layout.name == wanted => Some(layout.clone()),
|
||||||
|
_ => None,
|
||||||
|
})
|
||||||
|
};
|
||||||
|
let (Some(from), Some(to)) = (find(&self.document, source), find(&self.document, name))
|
||||||
|
else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
if let Some(ObjectType::Layout(layout)) = self.document.objects.get_mut(&to.handle) {
|
||||||
|
*layout = codec::objects::Layout {
|
||||||
|
handle: to.handle,
|
||||||
|
owner: to.owner,
|
||||||
|
name: to.name.clone(),
|
||||||
|
tab_order: to.tab_order,
|
||||||
|
block_record: to.block_record,
|
||||||
|
viewport: to.viewport,
|
||||||
|
viewports: to.viewports.clone(),
|
||||||
|
reactors: to.reactors.clone(),
|
||||||
|
xdictionary_handle: to.xdictionary_handle,
|
||||||
|
..from.clone()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if let Some(EntityType::Viewport(sheet)) = self.document.get_entity(from.viewport).cloned()
|
||||||
|
{
|
||||||
|
if let Some(EntityType::Viewport(target)) = self.document.get_entity_mut(to.viewport) {
|
||||||
|
*target = codec::entities::Viewport {
|
||||||
|
common: target.common.clone(),
|
||||||
|
..sheet
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.unopened_layouts.remove(name);
|
||||||
|
self.bump_layout_epoch();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The paper-space objects of layout `name`, without its sheet viewport.
|
||||||
|
pub fn layout_paper_entities(&self, name: &str) -> Vec<Handle> {
|
||||||
|
let Some((record, sheet)) = self.document.objects.values().find_map(|object| match object {
|
||||||
|
ObjectType::Layout(layout) if layout.name == name => {
|
||||||
|
Some((layout.block_record, layout.viewport))
|
||||||
|
}
|
||||||
|
_ => None,
|
||||||
|
}) else {
|
||||||
|
return Vec::new();
|
||||||
|
};
|
||||||
|
self.document
|
||||||
|
.block_records
|
||||||
|
.iter()
|
||||||
|
.find(|br| br.handle == record)
|
||||||
|
.map(|br| {
|
||||||
|
br.entity_handles
|
||||||
|
.iter()
|
||||||
|
.copied()
|
||||||
|
.filter(|handle| *handle != sheet)
|
||||||
|
.filter(|handle| {
|
||||||
|
!matches!(
|
||||||
|
self.document.get_entity(*handle),
|
||||||
|
None | Some(EntityType::Block(_) | EntityType::BlockEnd(_))
|
||||||
|
)
|
||||||
|
})
|
||||||
|
.collect()
|
||||||
|
})
|
||||||
|
.unwrap_or_default()
|
||||||
|
}
|
||||||
|
|
||||||
/// Rename a paper-space layout. Updates the Layout object name in the document.
|
/// Rename a paper-space layout. Updates the Layout object name in the document.
|
||||||
pub fn rename_layout(&mut self, old_name: &str, new_name: &str) {
|
pub fn rename_layout(&mut self, old_name: &str, new_name: &str) {
|
||||||
for obj in self.document.objects.values_mut() {
|
for obj in self.document.objects.values_mut() {
|
||||||
|
|||||||
+18
-16
@@ -937,23 +937,25 @@ fn osnap_btn<'a>(
|
|||||||
// ── Helpers ───────────────────────────────────────────────────────────────
|
// ── Helpers ───────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
fn layout_tab_context_menu(name: String) -> Element<'static, Message> {
|
fn layout_tab_context_menu(name: String) -> Element<'static, Message> {
|
||||||
let rename = mouse_area(
|
let item = |label: std::borrow::Cow<'static, str>, message: Message| {
|
||||||
container(text(t!("Rename")).size(12))
|
mouse_area(
|
||||||
.padding([4, 12])
|
container(text(label).size(12))
|
||||||
.width(Length::Fill),
|
.padding([4, 12])
|
||||||
)
|
.width(Length::Fill),
|
||||||
.on_press(Message::LayoutRenameStart(name.clone()))
|
)
|
||||||
.interaction(iced::mouse::Interaction::Pointer);
|
.on_press(message)
|
||||||
|
.interaction(iced::mouse::Interaction::Pointer)
|
||||||
|
};
|
||||||
|
let items = column![
|
||||||
|
item(t!("New Layout"), Message::LayoutCreate),
|
||||||
|
item(t!("Copy"), Message::LayoutCopy(name.clone())),
|
||||||
|
item(t!("Rename"), Message::LayoutRenameStart(name.clone())),
|
||||||
|
item(t!("Delete"), Message::LayoutDelete(name.clone())),
|
||||||
|
item(t!("Page Setup"), Message::LayoutPageSetup(name.clone())),
|
||||||
|
item(t!("Plot"), Message::LayoutPlot(name)),
|
||||||
|
];
|
||||||
|
|
||||||
let delete = mouse_area(
|
container(items.spacing(0).width(160))
|
||||||
container(text(t!("Delete")).size(12))
|
|
||||||
.padding([4, 12])
|
|
||||||
.width(Length::Fill),
|
|
||||||
)
|
|
||||||
.on_press(Message::LayoutDelete(name))
|
|
||||||
.interaction(iced::mouse::Interaction::Pointer);
|
|
||||||
|
|
||||||
container(column![rename, delete].spacing(0).width(160))
|
|
||||||
.style(container::bordered_box)
|
.style(container::bordered_box)
|
||||||
.padding([4, 0])
|
.padding([4, 0])
|
||||||
.into()
|
.into()
|
||||||
|
|||||||
Reference in new issue
Block a user