diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 9d6cfb9a0..22d41c27c 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -136,6 +136,32 @@ jobs: echo "=== ccache statistics ===" /ucrt64/bin/ccache -s + - name: Run the unit tests + shell: msys2 {0} + env: + QT_QPA_PLATFORM: offscreen + run: | + set -euo pipefail + cd "$GITHUB_WORKSPACE/build" + ctest --output-on-failure --timeout 300 && exit 0 + # ctest shows no output for failed tests in this shell, so run each + # failed test again with QtTest writing its log to a file, and print it. + set +e + while IFS=: read -r _ name; do + name=${name%$'\r'} + exe=$(find tests -name "$name.exe" | head -1) + echo "::group::$name" + if [ -n "$exe" ]; then + QT_QPA_PLATFORM=offscreen "$exe" -o "$name.txt,txt" + echo "exit code $?" + cat "$name.txt" 2>/dev/null + else + echo "no executable for $name" + fi + echo "::endgroup::" + done < Testing/Temporary/LastTestsFailed.log + exit 1 + - name: Verify exe was built shell: msys2 {0} run: | @@ -436,6 +462,7 @@ jobs: name: build-logs-qt6 path: | build/CMakeFiles/*.log + build/Testing/Temporary/LastTest*.log nsis_root/files/bin/ if-no-files-found: warn diff --git a/INSTALL.md b/INSTALL.md index eeb14e741..c651085f6 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -363,3 +363,20 @@ and running it concurrently with the normal `lrelease` compilation step (as would happen under `-j`/parallel builds) can corrupt a `.ts` file mid-write, causing `lrelease` to fail with "Premature end of document". Run it on its own, review the diff, and commit the updated `.ts` files separately. + +The strings in the code are French, so `lang/qet_fr.ts` is the source +language's own file. After `update_translations`, run + +```sh +python3 misc/i18n/mirror_source_language.py lang/qet_fr.ts +``` + +before committing: it copies every new French source string into its own +translation, so `qet_fr.qm` stays complete and French wording can later be +corrected in the `.ts` alone, without changing the key that the other +languages are attached to. Forgetting it breaks nothing (an empty entry +falls back to the code text); `--check` reports whether a run is needed. +A French correction typed into `qet_fr.ts` is lost like any other +translation when the code string is reworded; the vanished entry keeps the +old text for recovery. Never add `-removeidentical` to the `lrelease` +options: it would strip these entries again. diff --git a/build-aux/windows/QET64.nsi b/build-aux/windows/QET64.nsi index fe1522457..fc79b780a 100644 --- a/build-aux/windows/QET64.nsi +++ b/build-aux/windows/QET64.nsi @@ -1,4 +1,4 @@ -; this file is part of installer for QElectroTech +; this file is part of installer for QElectroTech ; Copyright (C)2015 QElectroTech Team ; ; This program is free software; you can redistribute it and/or @@ -34,7 +34,7 @@ ;-------------------------------- ; NSIS 3 requires SetCompressor BEFORE any Section or Function SetCompressor /FINAL /SOLID lzma - +Unicode true ;-------------------------------- ; Includes !include x64.nsh diff --git a/build-aux/windows/lang_extra.nsh b/build-aux/windows/lang_extra.nsh index 2c6dcb45c..4c43cf55e 100644 --- a/build-aux/windows/lang_extra.nsh +++ b/build-aux/windows/lang_extra.nsh @@ -1,4 +1,4 @@ - LangString installed ${LANG_ENGLISH} "${SOFT_NAME} is already installed. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade." + LangString installed ${LANG_ENGLISH} "${SOFT_NAME} is already installed. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade." LangString wrongArch ${LANG_ENGLISH} "This distribution is for 64 bits computers only." LangString Elements ${LANG_ENGLISH} "Elements" LangString Electric ${LANG_ENGLISH} "Electric" diff --git a/build-aux/windows/lang_extra_fr.nsh b/build-aux/windows/lang_extra_fr.nsh index bcfd9988b..33bfc025d 100644 --- a/build-aux/windows/lang_extra_fr.nsh +++ b/build-aux/windows/lang_extra_fr.nsh @@ -1,4 +1,4 @@ - LangString wrongArch ${LANG_FRENCH} "Ce programme est pour Windows 64 bits seulement." + LangString wrongArch ${LANG_FRENCH} "Ce programme est pour Windows 64 bits seulement." LangString installed ${LANG_FRENCH} "${SOFT_NAME} est déja installé. $\n$\nCliquer sur `OK` pour désinstaller l'ancienne version `Annuler` pour annuler cet upgrade." LangString Elements ${LANG_FRENCH} "Eléments" LangString Electric ${LANG_FRENCH} "Electrique" diff --git a/build-aux/windows/lang_extra_missing.nsh b/build-aux/windows/lang_extra_missing.nsh index afae58e03..4f22629c2 100644 --- a/build-aux/windows/lang_extra_missing.nsh +++ b/build-aux/windows/lang_extra_missing.nsh @@ -1,4 +1,4 @@ -; Missing language translations for QElectroTech installer +; Missing language translations for QElectroTech installer ; Languages added: hu, ja, mn, nb, nl_BE, nl_NL, pt_BR, rs/sr, sk, sl, sv, tr, uk, zh ; ---------------------------------------------------------------- diff --git a/lang/qet_ar.ts b/lang/qet_ar.ts index a13227e02..e3cef6ead 100644 --- a/lang/qet_ar.ts +++ b/lang/qet_ar.ts @@ -1964,7 +1964,7 @@ Continue? Diagram - + Change the depth تغيير العمق @@ -2071,17 +2071,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2105,7 +2120,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2314,13 +2329,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2375,77 +2390,77 @@ Continue? صورة - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... تحديد صورة ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error خطأ - + Unable to load the image. إستحالة تحميل الصورة . - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2499,83 +2514,83 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip في هذه المنطقة تحتفظون بمخططاتكم للإضافة إليها عناصر أخرى و لوضع موصلات بين أطرافها. كما يُمكنكم إضافة نصوص مستقلّة. - + Paste Here context menu action لصق هنا - + Multiple paste لصق متعدد - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 - + Connect the selected terminals - + Untitled what to display for untitled diagrams بدون عنوان - + Registered template - + The template has been successfully saved as : %1 - + Error خطأ - + The file could not be written. - + Choose the new color for this conductor إختيار اللون الجديد لهذا الموصل - + Edit conductor properties undo caption تغيير خاصيات موصل @@ -3176,7 +3191,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3466,27 +3481,27 @@ The element's display name is edited separately in the element properties.< معلومات - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3495,95 +3510,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8416,7 +8431,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13361,7 +13376,7 @@ What do you wish to do ? QObject - + Warning: the element has been saved with a more recent version of QElectroTech. : تحذير حّفظ العنصر بإصدار لاحق من QElectrotech. @@ -14016,7 +14031,7 @@ What do you wish to do ? - + Terminal نهاية توصيل @@ -14386,7 +14401,7 @@ Do you want to replace it ? - + Type نوع @@ -14394,7 +14409,7 @@ Do you want to replace it ? - + Address @@ -14402,7 +14417,7 @@ Do you want to replace it ? - + Annotation تعليق @@ -14411,7 +14426,7 @@ Do you want to replace it ? - + Cross-reference @@ -14420,7 +14435,7 @@ Do you want to replace it ? - + Function @@ -14858,7 +14873,7 @@ Do you want to replace it ? - + @@ -14953,7 +14968,7 @@ Do you want to replace it ? - + Sort terminal block %1 @@ -15044,7 +15059,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15306,7 +15321,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15318,7 +15333,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19718,139 +19733,144 @@ The other fields are not used. TerminalEditor - - - - + + + + T%1 - + North شمال - + East شرق - + South جنوب - + West غرب - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Change the orientation of a terminal تعديل إتجاه نقطة توصيل - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index - + Move a terminal تحريك نقطة توصيل @@ -19886,66 +19906,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : - + Y : - + Rotation : - + ° - + Alignment مُحاذاة - + Color : اللون: - + Frame the text - + Master’s label - + Learning from the master @@ -20463,12 +20493,12 @@ The other fields are not used. TerminalStripTreeDockWidget - + Untitled project مشروع بدون عنوان - + Independent terminals diff --git a/lang/qet_ca.ts b/lang/qet_ca.ts index 211ba93a1..c39ef3be7 100644 --- a/lang/qet_ca.ts +++ b/lang/qet_ca.ts @@ -1917,7 +1917,7 @@ Continue? Diagram - + Change the depth Canvia la profunditat @@ -2024,17 +2024,32 @@ Continue? Nanses : - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2058,7 +2073,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2267,13 +2282,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2328,77 +2343,77 @@ Continue? una imatge - + Replace the image... Substitueix la imatge... - + Transparent color... Color transparent... - + Crop... Retalla... - + Horizontal mirror Mirall horitzontal - + Vertical mirror Mirall vertical - + Restore proportions Restaura les proporcions - + Select an image ... Selecciona una imatge ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) Fitxers d'imatge (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Error - + Unable to load the image. No es pot carregar la imatge. - + Replace an image Substitueix una imatge - + Horizontal mirror of an image Mirall horitzontal d'una imatge - + Vertical mirror of an image Mirall veritcal d'una imatge - + Set a transparent color Estableix un color transparent - + Crop an image Retalla una imatge @@ -2453,85 +2468,85 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip "Què és això?" Aquesta és l'àrea on dissenyeu els esquemes afegint elements i col·locant conductors entre els seus borns. També és possible afegir text independent. - + Paste Here context menu action Enganxa aquí - + Multiple paste Enganxament múltiple - + Create a template context menu action Crea una plantilla - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Connecteu els borns seleccionats - + Untitled what to display for untitled diagrams Sense títol - + Registered template Plantilla desada - + The template has been successfully saved as : %1 La plantilla s'ha desat correctament com a: %1 - + Error Error - + The file could not be written. No s'ha pogut escriure el fitxer. - + Choose the new color for this conductor Tria un nou color per a aquest conductor - + Edit conductor properties undo caption Edita les propietats d'un conductor @@ -3132,7 +3147,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption Numera automàticament un element @@ -3410,27 +3425,27 @@ El nom de visualització de l'element es modifica per separat a les propiet Dades - + Add a custom property Afegeix una propietat personalitzada - + Potential separation Separació de potencial - + Exclude from the bill of materials Excloure de la nomenclatura - + No materials list - + There is no materials list file at this location: %1 @@ -3439,95 +3454,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8391,7 +8406,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal Mou una etiqueta de born @@ -13247,7 +13262,7 @@ Què voleu fer? QObject - + Warning: the element has been saved with a more recent version of QElectroTech. Avís: l'element ha estat desat amb una versió posterior del QElectroTech. @@ -13862,7 +13877,7 @@ Què voleu fer? - + Terminal Born @@ -14132,7 +14147,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Type Tipus @@ -14140,7 +14155,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Address Adreça @@ -14148,7 +14163,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Annotation Comentari @@ -14157,7 +14172,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Cross-reference Referència creuada @@ -14166,7 +14181,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Function @@ -14584,7 +14599,7 @@ the translated name of this folder could not be read, so its folder name is disp %p% fet (%v de %m) - + @@ -14747,7 +14762,7 @@ Voleu substituir-la? Edita les propietats d'un grup de borns - + Sort terminal block %1 Ordena el bloc de borns %1 @@ -14888,7 +14903,7 @@ Please download it by following the link and unzip it in the installation folder Si us plau, descarregueu-lo des de l'enllaç següent i descomprimiu-lo a la carpeta d'instal·lació - + Automatic terminal numbering Numeració automàtica de borns @@ -15110,7 +15125,7 @@ Si us plau, descarregueu-lo des de l'enllaç següent i descomprimiu-lo a l - + Align %n objects to the grid @@ -15118,7 +15133,7 @@ Si us plau, descarregueu-lo des de l'enllaç següent i descomprimiu-lo a l - + Align %n items @@ -19537,139 +19552,144 @@ The other fields are not used. TerminalEditor - - - - + + + + T%1 T%1 - + North Nord - + East Est - + South Sud - + West Oest - + Generic Genèric - + Indoor terminal block Bloc de borns interior - + External terminal block Bloc de borns exterior - + NO (contact SW) Normalment Obert en contacte commutat (NO) - + NC (contact SW) Normalment Tancat en contacte commutat (NC) - + Common (contact SW) Comú en contacte commutat - + Change the orientation of a terminal Canvia l'orientació d'un born - + Change the terminal name Edita el nom del born + Change the potential of a terminal + + + + Change the type of a terminal Canvia el tipus d'un born - + Show/hide the terminal name Mostra/amaga el nom del born - + Change the position of the label Canvia la posició de l'etiqueta - + Change the label font Canvia el tipus de lletra de l'etiqueta - + Change the font size of the label Canvia la mida de la lletra de l'etiqueta - + Change the rotation of the label Canvia la rotació de l'etiqueta - - + + Change the alignment of the label Canvia l'alineació de l'etiqueta - + Show/hide the label border Mostra/amaga el marc de l'etiqueta - - + + Change the label colour Canvia el color de l'etiqueta - + Edit the master label Edita l'etiqueta del mestre - - - + + + Change the name of the terminal Edita el nom del born - + Change the master label index Canvia l'índex de l'etiqueta del mestre - + Move a terminal Moure un born @@ -19705,66 +19725,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name Nom del born - + Show name Mostrar el nom - + Text properties Propietats del text - + Font Font - + X : X : - + Y : Y : - + Rotation : Rotació : - + ° ° - + Alignment Alineació - + Color : Color : - + Frame the text Emmarca el text - + Master’s label Etiqueta mestra - + Learning from the master Reiniciar el mestre @@ -20282,12 +20312,12 @@ The other fields are not used. TerminalStripTreeDockWidget - + Untitled project Projecte sense títol - + Independent terminals Borns independents diff --git a/lang/qet_cs.ts b/lang/qet_cs.ts index 5a310b6bc..fd9438e32 100644 --- a/lang/qet_cs.ts +++ b/lang/qet_cs.ts @@ -1928,7 +1928,7 @@ Continue? Diagram - + Change the depth Změnit hloubku @@ -2035,17 +2035,32 @@ Continue? Úchopy: - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2069,7 +2084,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2278,13 +2293,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2339,77 +2354,77 @@ Continue? Obrázek - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... Vybrat obrázek... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Chyba - + Unable to load the image. Obrázek nelze nahrát. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2463,83 +2478,83 @@ Hold Shift and drag to move this text on its own DiagramView - + Paste Here context menu action Vložit zde - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Toto je oblast, ve které plodíte své výkresy přidáváním prvků a umísťováním vodičů mezi jejich svorkami. Také můžete přidat nezávislé texty. - + Multiple paste Vícenásobné vložení - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Spojit vybrané svorky - + Untitled what to display for untitled diagrams Bez názvu - + Registered template - + The template has been successfully saved as : %1 - + Error Chyba - + The file could not be written. - + Choose the new color for this conductor Vybrat novou barvu pro tento vodič - + Edit conductor properties undo caption Upravit vlastnosti vodiče @@ -3140,7 +3155,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3417,27 +3432,27 @@ The element's display name is edited separately in the element properties.< Informace - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3446,95 +3461,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8374,7 +8389,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13273,7 +13288,7 @@ Co si přejete udělat? - + Warning: the element has been saved with a more recent version of QElectroTech. Varování: prvek byl uložen se starší verzí QElectroTechu. @@ -13883,7 +13898,7 @@ Co si přejete udělat? - + Terminal Svorka @@ -14264,7 +14279,7 @@ Chcete je nahradit? - + Type Typ @@ -14272,7 +14287,7 @@ Chcete je nahradit? - + Address @@ -14280,7 +14295,7 @@ Chcete je nahradit? - + Annotation Poznámka @@ -14289,7 +14304,7 @@ Chcete je nahradit? - + Cross-reference @@ -14298,7 +14313,7 @@ Chcete je nahradit? - + Function @@ -14670,7 +14685,7 @@ Chcete je nahradit? Vložit - + @@ -14709,7 +14724,7 @@ Chcete je nahradit? Upravit vlastnosti skupiny svorek - + Sort terminal block %1 Seřadit svorkovnici %1 @@ -14910,7 +14925,7 @@ Please download it by following the link and unzip it in the installation folder Stáhněte si jej podle tohoto odkazu a rozbalte jej do instalační složky. - + Automatic terminal numbering @@ -15142,7 +15157,7 @@ Stáhněte si jej podle tohoto odkazu a rozbalte jej do instalační složky. - + Align %n objects to the grid @@ -15151,7 +15166,7 @@ Stáhněte si jej podle tohoto odkazu a rozbalte jej do instalační složky. - + Align %n items @@ -19575,139 +19590,144 @@ Ostatní pole se nepoužívají. TerminalEditor - + North Sever - + East Východ - + South Jih - + West Západ - + Change the orientation of a terminal Upravit natočení svorky - + Move a terminal Přesunout svorku - - - - + + + + T%1 - + Generic Obecný - + Indoor terminal block Vnitřní svorkovnice - + External terminal block Vnější svorkovnice - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Change the terminal name Změnit název svorky + Change the potential of a terminal + + + + Change the type of a terminal Změnit typ svorky - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -19743,66 +19763,76 @@ Ostatní pole se nepoužívají. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font Písmo - + X : X: - + Y : Y: - + Rotation : Otočení: - + ° ° - + Alignment Zarovnání - + Color : Barva: - + Frame the text Orámovat text - + Master’s label - + Learning from the master @@ -20325,12 +20355,12 @@ Ostatní pole se nepoužívají. Průzkumník svorkovnice - + Untitled project Nepojmenovaný projekt - + Independent terminals Nezávislé svorky diff --git a/lang/qet_da.ts b/lang/qet_da.ts index 1b929f508..46c601be2 100644 --- a/lang/qet_da.ts +++ b/lang/qet_da.ts @@ -1917,7 +1917,7 @@ Continue? Diagram - + Change the depth Diagram @@ -2024,17 +2024,32 @@ Continue? Håndtag: - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2058,7 +2073,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2267,13 +2282,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2328,77 +2343,77 @@ Continue? et billede - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... Vælg billede... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Fejl - + Unable to load the image. Kan ikke indlæse billede. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2452,83 +2467,83 @@ Hold Shift and drag to move this text on its own DiagramView - + Paste Here context menu action Indsæt her - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Område hvor diagrammer designes ved at tilføje symboler og leder mellem terminaler. Det er også muligt at tilføje selvstændige tekster. - + Multiple paste Flere sammensætninger - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Tilslutte valgte terminaler - + Untitled what to display for untitled diagrams Ikke navngivet - + Registered template - + The template has been successfully saved as : %1 - + Error Fejl - + The file could not be written. - + Choose the new color for this conductor Vælg ny farve til leder - + Edit conductor properties undo caption Ændre leder egenskab @@ -3129,7 +3144,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3406,27 +3421,27 @@ The element's display name is edited separately in the element properties.< Informationer - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3435,95 +3450,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8360,7 +8375,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13220,7 +13235,7 @@ What do you wish to do ? - + Warning: the element has been saved with a more recent version of QElectroTech. Advarsel: symbol er gemt med nyere version af QElectroTech. @@ -13820,7 +13835,7 @@ What do you wish to do ? - + Terminal Terminal @@ -14199,7 +14214,7 @@ Do you want to replace it ? - + Type Type @@ -14207,7 +14222,7 @@ Do you want to replace it ? - + Address @@ -14215,7 +14230,7 @@ Do you want to replace it ? - + Annotation Kommentar @@ -14224,7 +14239,7 @@ Do you want to replace it ? - + Cross-reference @@ -14233,7 +14248,7 @@ Do you want to replace it ? - + Function @@ -14605,7 +14620,7 @@ Do you want to replace it ? Indsæt - + @@ -14644,7 +14659,7 @@ Do you want to replace it ? Ændre egenskaber for en terminalgruppe - + Sort terminal block %1 Sorter terminalrække %1 @@ -14841,7 +14856,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15063,7 +15078,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15071,7 +15086,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19474,139 +19489,144 @@ The other fields are not used. TerminalEditor - + North Op - + East Højre - + South Ned - + West Venstre - + Change the orientation of a terminal Ændre retning på terminal - + Move a terminal Flyt terminal - - - - + + + + T%1 - + Generic Generisk - + Indoor terminal block Intern terminal - + External terminal block Ekstern terminal - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Change the terminal name Ændre terminalrække navn + Change the potential of a terminal + + + + Change the type of a terminal Ændre terminal type - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -19642,66 +19662,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font Skrifttype - + X : X: - + Y : Y: - + Rotation : Rotere: - + ° ° - + Alignment Justere - + Color : Farve: - + Frame the text Ramme om tekst - + Master’s label - + Learning from the master @@ -20224,12 +20254,12 @@ The other fields are not used. Terminalrække stifinder - + Untitled project Ikke navngivet projekt - + Independent terminals Uafhængige terminaler diff --git a/lang/qet_de.ts b/lang/qet_de.ts index 90dc34fad..7b5a33d0f 100644 --- a/lang/qet_de.ts +++ b/lang/qet_de.ts @@ -1926,7 +1926,7 @@ Fortfahren? Diagram - + Change the depth Ebene der Auswahl bearbeiten @@ -2033,17 +2033,32 @@ Fortfahren? Anfasser: - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2067,7 +2082,7 @@ Fortfahren? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste Klicken Sie, um einzufügen, ESC oder rechte Maustaste zum Abbrechen. @@ -2276,13 +2291,13 @@ Fortfahren? - + Save image as... Bild speichern unter... - + Save original image as... Das Originalbild speichern unter... @@ -2337,77 +2352,77 @@ Fortfahren? eines Bildes - + Replace the image... Bild ersetzen... - + Transparent color... Transparente Farbe... - + Crop... Zuschneiden... - + Horizontal mirror Horizontaler spiegeln - + Vertical mirror vertikal spiegeln - + Restore proportions Proportionen wiederherstellen - + Select an image ... Ein Bild auswählen... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) Bilddateien (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Fehler - + Unable to load the image. Laden vom Bild fehlgeschlagen. - + Replace an image Ein Bild ersetzen - + Horizontal mirror of an image Horizontale Spiegelung eines Bildes - + Vertical mirror of an image Vertikale Spiegelung eines Bildes - + Set a transparent color Eine transparente Farbe festlegen - + Crop an image Ein Bild zuschneiden @@ -2462,84 +2477,84 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip In diesem Bereich entwerfen Sie Ihre Schaltpläne, indem Sie Elemente hinzufügen und Leiter zwischen Anschlüssen verlegen. Es ist auch möglich, unabhängige Texte hinzuzufügen. - + Paste Here context menu action Hier einfügen - + Multiple paste Mehrfach einfügen - + Create a template context menu action Vorlage erstellen - + Make a cabinet thumbnail context menu action Schaltschrank-Miniaturansicht erzeugen - + Sheet reference Seitenverweis - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Ausgewählte Anschlüsse verbinden - + Untitled what to display for untitled diagrams Ohne Titel - + Registered template Vorlage erstellt - + The template has been successfully saved as : %1 Die Vorlage wurde erfolgreich gespeichert unter %1 - + Error Fehler - + The file could not be written. Die Datei konnte nicht geschrieben werden. - + Choose the new color for this conductor Neue Leiterfarbe wählen - + Edit conductor properties undo caption Leitereigenschaften ändern @@ -3140,7 +3155,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption Ein Element automatisch nummerieren @@ -3418,27 +3433,27 @@ Der angezeigte Name des Elements lässt sich separat in den Eigenschaften des El Informationen - + Add a custom property Benutzerdefinierte Eigenschaft hinzufügen - + Potential separation Potentialtrennung - + Exclude from the bill of materials Aus der Materialliste ausschließen - + No materials list Materialliste fehlt - + There is no materials list file at this location: %1 @@ -3450,12 +3465,12 @@ Create it? Soll sie erstellt werden? - + Cannot create Erstellen nicht möglich - + Cannot create the file: %1 %2 @@ -3464,83 +3479,83 @@ Soll sie erstellt werden? %2 - + Automatic numbering Automatische Nummerierung - + … … - + Open the project's element numberings Bauteil-Nummerierungen des Projekts öffnen - + Freeze name Namen einfrieren - + A frozen name is not changed by automatic numbering, and its number is not given to another element. Ein eingefrorener Name wird von der automatischen Nummerierung nicht geändert, und seine Nummer wird keinem anderen Bauteil gegeben. - + Number Nummer - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. Nur freie Nummern werden angeboten: Ein Bauteil, das seine tatsächliche Nummer behalten soll, kann sie zurückbekommen, wenn niemand sie hat. - + %1 (current) %1 (aktuell) - + — (unknown number) — (Nummer unbekannt) - + %1 → %2 %1 → %2 - + The name is frozen: unfreeze it to change its number. Der Name ist eingefroren: Geben Sie ihn frei, um seine Nummer zu ändern. - + The number can be chosen when the element keeps its numbering. Die Nummer kann gewählt werden, wenn das Bauteil seine Nummerierung behält. - + None (name entered by hand) Keine (von Hand eingegebener Name) - + Custom formula: %1 Eigene Formel: %1 - + Frozen name Eingefrorener Name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8424,7 +8439,7 @@ Möchten Sie diesen Slave-Kontakt trotzdem verbinden? PartTerminal - + Move the label to a terminal Beschriftung eines Anschlusses verschieben @@ -13309,7 +13324,7 @@ Was möchten Sie tun? QObject - + Warning: the element has been saved with a more recent version of QElectroTech. Warnung: das Bauteil wurde mit einer neueren Version von QElectroTech gespeichert. @@ -13924,7 +13939,7 @@ Was möchten Sie tun? - + Terminal Anschluss @@ -14305,7 +14320,7 @@ Möchten Sie sie ersetzen? - + Type Typ @@ -14313,7 +14328,7 @@ Möchten Sie sie ersetzen? - + Address Adresse @@ -14321,7 +14336,7 @@ Möchten Sie sie ersetzen? - + Annotation Kommentar @@ -14330,7 +14345,7 @@ Möchten Sie sie ersetzen? - + Cross-reference Querverweis @@ -14339,7 +14354,7 @@ Möchten Sie sie ersetzen? - + Function @@ -14711,7 +14726,7 @@ Möchten Sie sie ersetzen? Einfügen - + @@ -14750,7 +14765,7 @@ Möchten Sie sie ersetzen? Die Eigenschaften einer Klemmengruppe ändern - + Sort terminal block %1 Klemme entfernen @@ -14951,7 +14966,7 @@ Please download it by following the link and unzip it in the installation folder Bitte laden Sie diese über den Link herunter und entpacken Sie sie in den Installationsordner. - + Automatic terminal numbering Automatische Klemmennummerierung @@ -15173,7 +15188,7 @@ Bitte laden Sie diese über den Link herunter und entpacken Sie sie in den Insta - + Align %n objects to the grid %n Objekt am Raster ausrichten @@ -15181,7 +15196,7 @@ Bitte laden Sie diese über den Link herunter und entpacken Sie sie in den Insta - + Align %n items %n Objekt ausrichten @@ -19612,140 +19627,145 @@ Andere Felder werden nicht verwendet. TerminalEditor - + North Nord - + East Ost - + South Süd - + West West - + Change the orientation of a terminal Orientierung eines Anschlusses ändern - + Move a terminal Anschluss verschieben - - - - + + + + T%1 T%1 - + Generic Generisch - + Indoor terminal block interner Kontakt - + External terminal block externer Kontakt - + NO (contact SW) NO (Wechslerkontakt( - + NC (contact SW) NC (Wechslerkontakt) - + Common (contact SW) Gemeinsam(Wechslerkontakt) - + Change the terminal name Name des Anschlusses ändern + Change the potential of a terminal + + + + Change the type of a terminal Typ des Anschlusses ändern - + Show/hide the terminal name Name des Anschlusses anzeigen/verbergen - + Change the position of the label Position der Beschriftung ändern - + Change the label font Schriftart der Beschriftung ändern - + Change the font size of the label Schriftgröße der Beschriftung ändern - + Change the rotation of the label Drehung der Beschriftung ändern - - + + Change the alignment of the label Ausrichtung der Beschriftung ändern - + Show/hide the label border Rahmen der Beschriftung anzeigen/verbergen - - + + Change the label colour Farbe der Beschriftung ändern - + Edit the master label Die Bezeichnung des Masters ändern - - - + + + Change the name of the terminal Den Namen des Anschlusses ändern Namen des Anschlusses ändern - + Change the master label index Den Index des Master-Tags ändern @@ -19781,66 +19801,76 @@ Andere Felder werden nicht verwendet. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name Name des Anschlusses - + Show name Name anzeigen - + Text properties Texteigenschaften - + Font Schriftart - + X : x: - + Y : y: - + Rotation : Drehung: - + ° ° - + Alignment Ausrichtung - + Color : Farbe: - + Frame the text Text einrahmen - + Master’s label Anschluss vom Master - + Learning from the master Vom Master übernehmen @@ -20363,12 +20393,12 @@ Andere Felder werden nicht verwendet. Klemmleisten-Planer - + Untitled project Projekt ohne Titel - + Independent terminals nicht zugeordnete Klemmen diff --git a/lang/qet_el.ts b/lang/qet_el.ts index 595004930..5e064abb4 100644 --- a/lang/qet_el.ts +++ b/lang/qet_el.ts @@ -1917,7 +1917,7 @@ Continue? Diagram - + Change the depth Μετατροπή του βάθους @@ -2024,17 +2024,32 @@ Continue? Λαβές: - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2058,7 +2073,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2267,13 +2282,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2328,77 +2343,77 @@ Continue? εικόνα - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... Επιλογή εικόνας... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Σφάλμα - + Unable to load the image. Αδυναμία φόρτωσης της εικόνας - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2452,83 +2467,83 @@ Hold Shift and drag to move this text on its own DiagramView - + Paste Here context menu action Επικόλληση εδώ - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Σε αυτή την περιοχή σχεδιάζετε τα διαγράμματά σας προσθέτοντας στοιχεία και αγωγούς μεταξύ των ακροδεκτών. Μπορείτε επίσης να προσθέσετε ανεξάρτητα κείμενα. - + Multiple paste Πολλαπλή επικόλληση - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Σύνδεση των επιλεγμένων ακροδεκτών - + Untitled what to display for untitled diagrams Ανώνυμο - + Registered template - + The template has been successfully saved as : %1 - + Error Σφάλμα - + The file could not be written. - + Choose the new color for this conductor Επιλέξτε το νέο χρώμα αυτού του αγωγού - + Edit conductor properties undo caption Επεξεργασία ιδιοτήτων του αγωγού @@ -3129,7 +3144,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3406,27 +3421,27 @@ The element's display name is edited separately in the element properties.< Πληροφορίες - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3435,95 +3450,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8360,7 +8375,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13215,7 +13230,7 @@ What do you wish to do ? - + Warning: the element has been saved with a more recent version of QElectroTech. Προσοχή: Το στοιχείο έχει αποθηκευτεί με μια νεότερη έκδοση του QElectroTech. @@ -13815,7 +13830,7 @@ What do you wish to do ? - + Terminal Ακροδέκτης @@ -14195,7 +14210,7 @@ Do you want to replace it ? - + Type Τύπος @@ -14203,7 +14218,7 @@ Do you want to replace it ? - + Address @@ -14211,7 +14226,7 @@ Do you want to replace it ? - + Annotation Σχόλιο @@ -14220,7 +14235,7 @@ Do you want to replace it ? - + Cross-reference @@ -14229,7 +14244,7 @@ Do you want to replace it ? - + Function @@ -14601,7 +14616,7 @@ Do you want to replace it ? Επικόλληση - + @@ -14756,7 +14771,7 @@ Do you want to replace it ? - + Sort terminal block %1 @@ -14837,7 +14852,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15059,7 +15074,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15067,7 +15082,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19464,139 +19479,144 @@ The other fields are not used. TerminalEditor - + North Βορράς - + East Ανατολή - + South Νότος - + West Δύση - + Change the orientation of a terminal Επεξεργασία του προσανατολισμού ενός ακροδέκτη - + Move a terminal Μετακίνηση ενός ακροδέκτη - - - - + + + + T%1 - + Generic Γενικό - + Indoor terminal block Εσωτερική ομάδα ακροδεκτών - + External terminal block Εξωτερική ομαδα ακροδεκτών - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Change the terminal name Επεξεργασία ονόματος τερματικού + Change the potential of a terminal + + + + Change the type of a terminal Επεξεργασία του τύπου ενός ακροδέκτη - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -19632,66 +19652,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font Γραμματοσειρά - + X : X : - + Y : Y : - + Rotation : Περιστροφή: - + ° ° - + Alignment Στοίχιση - + Color : Χρώμα: - + Frame the text Πλαίσιο στο κείμενο - + Master’s label - + Learning from the master @@ -20209,12 +20239,12 @@ The other fields are not used. TerminalStripTreeDockWidget - + Untitled project Ανώνυμο έργο - + Independent terminals Ανεξάρτητοι ακροδέκτες diff --git a/lang/qet_en.ts b/lang/qet_en.ts index 62c6f99d1..c9f137f3c 100644 --- a/lang/qet_en.ts +++ b/lang/qet_en.ts @@ -1923,7 +1923,7 @@ Continue? Diagram - + Change the depth Change the depth @@ -2030,17 +2030,32 @@ Continue? Handles : - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2064,7 +2079,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste Click to place the pasted content, Esc or right-click to cancel @@ -2273,13 +2288,13 @@ Continue? - + Save image as... Save image as... - + Save original image as... Save original image as... @@ -2334,77 +2349,77 @@ Continue? image - + Replace the image... Replace the image... - + Transparent color... Transparent color... - + Crop... Crop... - + Horizontal mirror Horizontal mirror - + Vertical mirror Vertical mirror - + Restore proportions Restore proportions - + Select an image ... Select an image ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Error - + Unable to load the image. Unable to load the image. - + Replace an image Replace an image - + Horizontal mirror of an image Horizontal mirror of an image - + Vertical mirror of an image Vertical mirror of an image - + Set a transparent color Set a transparent color - + Crop an image Crop an image @@ -2459,84 +2474,84 @@ Hold Shift and drag to move this text on its own DiagramView - + Paste Here context menu action Paste Here - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. - + Multiple paste Multiple paste - + Create a template context menu action Create a template - + Make a cabinet thumbnail context menu action Make a cabinet thumbnail - + Sheet reference Sheet reference - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Connect the selected terminals - + Untitled what to display for untitled diagrams Untitled - + Registered template Registered template - + The template has been successfully saved as : %1 The template has been successfully saved as : %1 - + Error Error - + The file could not be written. The file could not be written. - + Choose the new color for this conductor Choose the new color for this conductor - + Edit conductor properties undo caption Edit conductor properties @@ -3137,7 +3152,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption Automatically number an element @@ -3415,27 +3430,27 @@ The element's display name is edited separately in the element properties.< Information - + Add a custom property Add a custom property - + Potential separation Potential separation - + Exclude from the bill of materials Exclude from the bill of materials - + No materials list No materials list - + There is no materials list file at this location: %1 @@ -3447,12 +3462,12 @@ Create it? Create it? - + Cannot create Cannot create - + Cannot create the file: %1 %2 @@ -3461,83 +3476,83 @@ Create it? %2 - + Automatic numbering Automatic numbering - + … … - + Open the project's element numberings Open the project's element numberings - + Freeze name Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) %1 (current) - + — (unknown number) — (unknown number) - + %1 → %2 %1 → %2 - + The name is frozen: unfreeze it to change its number. The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. The number can be chosen when the element keeps its numbering. - + None (name entered by hand) None (name entered by hand) - + Custom formula: %1 Custom formula: %1 - + Frozen name Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8417,7 +8432,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal Move the label to a terminal @@ -13321,7 +13336,7 @@ What do you wish to do ? - + Warning: the element has been saved with a more recent version of QElectroTech. Warning: the element has been saved with a more recent version of QElectroTech. @@ -13921,7 +13936,7 @@ What do you wish to do ? - + Terminal Terminal @@ -14302,7 +14317,7 @@ Do you want to replace it ? - + Type Type @@ -14310,7 +14325,7 @@ Do you want to replace it ? - + Address Address @@ -14318,7 +14333,7 @@ Do you want to replace it ? - + Annotation Annotation @@ -14327,7 +14342,7 @@ Do you want to replace it ? - + Cross-reference Cross-reference @@ -14336,7 +14351,7 @@ Do you want to replace it ? - + Function @@ -14733,7 +14748,7 @@ Do you want to replace it ? Modify the properties of a terminal group - + Sort terminal block %1 Sort terminal block %1 @@ -14854,7 +14869,7 @@ Do you want to replace it ? Default layout - + @@ -14948,7 +14963,7 @@ Please download it by following the link and unzip it in the installation folder Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering Automatic terminal numbering @@ -15170,7 +15185,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid Align %n object to the grid @@ -15178,7 +15193,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items Align %n item @@ -19609,139 +19624,144 @@ The other fields are not used. TerminalEditor - + North North - + East East - + South South - + West West - + Change the orientation of a terminal Change the orientation of a terminal - + Move a terminal Move a terminal - - - - + + + + T%1 T%1 - + Generic Generic - + Indoor terminal block Indoor terminal block - + External terminal block External terminal block - + NO (contact SW) NO (contact SW) - + NC (contact SW) NC (contact SW) - + Common (contact SW) Common (contact SW) - + Change the terminal name Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal Change the type of a terminal - + Show/hide the terminal name Show/hide the terminal name - + Change the position of the label Change the position of the label - + Change the label font Change the label font - + Change the font size of the label Change the font size of the label - + Change the rotation of the label Change the rotation of the label - - + + Change the alignment of the label Change the alignment of the label - + Show/hide the label border Show/hide the label border - - + + Change the label colour Change the label colour - + Edit the master label Edit the master label - - - + + + Change the name of the terminal Change the name of the terminal - + Change the master label index Change the master label index @@ -19777,66 +19797,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name Terminal name - + Show name Show name - + Text properties Text properties - + Font Font - + X : X : - + Y : Y : - + Rotation : Rotation : - + ° ° - + Alignment Alignment - + Color : Color : - + Frame the text Frame the text - + Master’s label Master’s label - + Learning from the master Learning from the master @@ -20359,12 +20389,12 @@ The other fields are not used. Terminal strip explorer - + Untitled project Untitled project - + Independent terminals Independent terminals diff --git a/lang/qet_es.ts b/lang/qet_es.ts index 49547b433..bd21b29a2 100644 --- a/lang/qet_es.ts +++ b/lang/qet_es.ts @@ -1922,7 +1922,7 @@ Continue? Diagram - + Change the depth Editar la profundidad @@ -2029,17 +2029,32 @@ Continue? Puntos rejilla : - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2063,7 +2078,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste Haga clic para colocar el contenido pegado; Esc o clic derecho para cancelar @@ -2272,13 +2287,13 @@ Continue? - + Save image as... Guardar imagen como... - + Save original image as... Guardar imagen original como... @@ -2333,77 +2348,77 @@ Continue? una imagen - + Replace the image... Sustituir imagen... - + Transparent color... Color transparente... - + Crop... Recortar... - + Horizontal mirror Reflejar horizontalmente - + Vertical mirror Reflejar verticalmente - + Restore proportions Restaurar las proporciones - + Select an image ... Seleccione una imagen ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) Archivos de imagen (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Error - + Unable to load the image. Imposible cargar la imagen. - + Replace an image Sustituir una imagen - + Horizontal mirror of an image Reflejar una imagen horizontalmente - + Vertical mirror of an image Reflejar una imagen verticalmente - + Set a transparent color Definir un color transparente - + Crop an image Recortar una imagen @@ -2458,84 +2473,84 @@ Hold Shift and drag to move this text on its own DiagramView - + Paste Here context menu action Pegar aquí - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Esto es la zona en la cual concibe sus esquemas añadiendo elementos y colocando conductores entre sus terminales. También es posible añadir texto independiente. - + Multiple paste Collage múltiple - + Create a template context menu action Crear una plantilla - + Make a cabinet thumbnail context menu action - + Sheet reference Referencia entre folios - + X: %1 Y: %2 X: %1 T: %2 - + Connect the selected terminals Conectar los terminales seleccionados - + Untitled what to display for untitled diagrams Sin titulo - + Registered template Plantilla guardada - + The template has been successfully saved as : %1 La plantilla se ha guardado correctamente en: %1 - + Error Error - + The file could not be written. No se ha podido escribir el archivo. - + Choose the new color for this conductor Elegir el nuevo color de este conductor - + Edit conductor properties undo caption Modificar las propiedades de un conductor @@ -3138,7 +3153,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption Numerar automáticamente un elemento @@ -3416,27 +3431,27 @@ El nombre visible del elemento se modifica por separado en sus propiedades.Información - + Add a custom property Añadir una propiedad personalizada - + Potential separation Separación de potencial - + Exclude from the bill of materials Excluir de la lista de materiales - + No materials list - + There is no materials list file at this location: %1 @@ -3445,95 +3460,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8405,7 +8420,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal Mover la etiqueta de un borne @@ -13272,7 +13287,7 @@ What do you wish to do ? - + Warning: the element has been saved with a more recent version of QElectroTech. Aviso: el elemento fue guardado con una versión mas reciente de QElectroTech. @@ -13884,7 +13899,7 @@ What do you wish to do ? - + Terminal Borne @@ -14271,7 +14286,7 @@ Do you want to replace it ? - + Type Tipo @@ -14279,7 +14294,7 @@ Do you want to replace it ? - + Address Dirección @@ -14287,7 +14302,7 @@ Do you want to replace it ? - + Annotation Comentario @@ -14296,7 +14311,7 @@ Do you want to replace it ? - + Cross-reference Ref. cruzada @@ -14305,7 +14320,7 @@ Do you want to replace it ? - + Function @@ -14758,7 +14773,7 @@ Do you want to replace it ? Salida universal - + @@ -14822,7 +14837,7 @@ Do you want to replace it ? Modificar las propiedades de un grupo de bornes - + Sort terminal block %1 Ordenar el bornero %1 @@ -14912,7 +14927,7 @@ Please download it by following the link and unzip it in the installation folder Descárguelo mediante el siguiente enlace y descomprímalo en la carpeta de instalación. - + Automatic terminal numbering Numeración automática de bornes @@ -15134,7 +15149,7 @@ Descárguelo mediante el siguiente enlace y descomprímalo en la carpeta de inst - + Align %n objects to the grid Ajustar %n objeto a la cuadrícula @@ -15142,7 +15157,7 @@ Descárguelo mediante el siguiente enlace y descomprímalo en la carpeta de inst - + Align %n items @@ -19562,139 +19577,144 @@ Los demás campos no se utilizan. TerminalEditor - - - - + + + + T%1 T%1 - + North Norte - + East Este - + South Sur - + West Oeste - + Generic Genérico - + Indoor terminal block Bornero interior - + External terminal block Bornero exterior - + NO (contact SW) NA (contacto conmutado) - + NC (contact SW) NC (contacto conmutado) - + Common (contact SW) Común (contacto conmutado) - + Change the orientation of a terminal Editar la orientación de una terminal - + Change the terminal name Modificar el nombre del terminal + Change the potential of a terminal + + + + Change the type of a terminal Modificar el tipo de un borne - + Show/hide the terminal name Mostrar/ocultar el nombre del terminal - + Change the position of the label Modificar la posición de la etiqueta - + Change the label font Modificar la fuente de la etiqueta - + Change the font size of the label Modificar el tamaño de fuente de la etiqueta - + Change the rotation of the label Modificar la rotación de la etiqueta - - + + Change the alignment of the label Modificar la alineación de la etiqueta - + Show/hide the label border Mostrar/ocultar el marco de la etiqueta - - + + Change the label colour Modificar el color de la etiqueta - + Edit the master label Modificar la etiqueta del maestro - - - + + + Change the name of the terminal Modificar el nombre del borne - + Change the master label index Modificar el índice de la etiqueta del maestro - + Move a terminal Mover un borne Mover un borne @@ -19731,66 +19751,76 @@ Los demás campos no se utilizan. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name Nombre del borne - + Show name Mostrar el nombre - + Text properties Propiedades del texto - + Font Tipo de letra - + X : X: - + Y : Y: - + Rotation : Rotación: - + ° ° - + Alignment Alineación - + Color : Color: - + Frame the text Enmarcar el texto - + Master’s label Etiqueta del maestro - + Learning from the master Tomar del maestro @@ -20313,12 +20343,12 @@ Los demás campos no se utilizan. Explorador de borneros - + Untitled project Proyecto sin título - + Independent terminals Bornes independientes diff --git a/lang/qet_fi.ts b/lang/qet_fi.ts index 0321c0885..c13966c73 100644 --- a/lang/qet_fi.ts +++ b/lang/qet_fi.ts @@ -1912,7 +1912,7 @@ Continue? Diagram - + Change the depth @@ -2019,17 +2019,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2053,7 +2068,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2262,13 +2277,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2323,77 +2338,77 @@ Continue? - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error - + Unable to load the image. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2447,83 +2462,83 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip - + Paste Here context menu action - + Multiple paste - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 - + Connect the selected terminals - + Untitled what to display for untitled diagrams - + Registered template - + The template has been successfully saved as : %1 - + Error - + The file could not be written. - + Choose the new color for this conductor - + Edit conductor properties undo caption @@ -3124,7 +3139,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3401,27 +3416,27 @@ The element's display name is edited separately in the element properties.< - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3430,95 +3445,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8320,7 +8335,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13431,7 +13446,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Terminal @@ -13573,7 +13588,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Type @@ -13581,7 +13596,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Address @@ -13589,7 +13604,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Annotation @@ -13598,7 +13613,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Cross-reference @@ -14013,7 +14028,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Function @@ -14165,7 +14180,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Warning: the element has been saved with a more recent version of QElectroTech. @@ -14457,7 +14472,7 @@ Do you want to replace it ? - + @@ -14673,7 +14688,7 @@ Do you want to replace it ? - + Sort terminal block %1 @@ -14805,7 +14820,7 @@ Please download it from the link below and unzip it into the installation folder - + Automatic terminal numbering @@ -14991,7 +15006,7 @@ Please download it from the link below and unzip it into the installation folder - + Align %n objects to the grid @@ -14999,7 +15014,7 @@ Please download it from the link below and unzip it into the installation folder - + Align %n items @@ -19358,139 +19373,144 @@ The other fields are not used. TerminalEditor - + North - + East - + South - + West - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index - + Change the orientation of a terminal - - - - + + + + T%1 - + Move a terminal @@ -19526,66 +19546,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : - + Y : - + Rotation : - + ° - + Alignment - + Color : - + Frame the text - + Master’s label - + Learning from the master @@ -20108,12 +20138,12 @@ The other fields are not used. - + Untitled project - + Independent terminals diff --git a/lang/qet_fr.ts b/lang/qet_fr.ts index 794c1ac7e..a0eb2a976 100644 --- a/lang/qet_fr.ts +++ b/lang/qet_fr.ts @@ -31,7 +31,7 @@ Version - + Version @@ -46,7 +46,7 @@ Licenses - + Licenses @@ -69,7 +69,7 @@ Contact : <a href="mailto:qet@lists.tuxfamily.org">qet@lists.tuxfamily.org</a> about tab, contact line - + Contact : <a href="mailto:qet@lists.tuxfamily.org">qet@lists.tuxfamily.org</a> @@ -103,7 +103,7 @@ Collection - + Collection @@ -273,7 +273,7 @@ Documentation - + Documentation @@ -340,7 +340,7 @@ URL: - + URL: @@ -425,7 +425,7 @@ Configuration - + Configuration @@ -448,7 +448,7 @@ Dialog - + Dialog @@ -726,7 +726,7 @@ Element - + Element @@ -1024,7 +1024,7 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s Dialog - + Dialog @@ -1087,7 +1087,7 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s Position - + Position @@ -1166,7 +1166,7 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s Form - + Form @@ -1185,7 +1185,7 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s x - + x @@ -1226,7 +1226,7 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s Portrait - + Portrait @@ -1319,7 +1319,7 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s Orange - + Orange @@ -1431,12 +1431,12 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s Form - + Form Type - + Type @@ -1514,12 +1514,12 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s cable - + cable bus - + bus @@ -1546,22 +1546,22 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s Phase - + Phase phase - + phase Protective Earth Neutral - + Protective Earth Neutral PEN - + PEN @@ -1576,7 +1576,7 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s TextLabel - + TextLabel @@ -1649,7 +1649,7 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s px - + px @@ -1698,12 +1698,12 @@ Verrouillé par l'option « Afficher un texte de potentiel par folio » de GroupBox - + GroupBox Configuration - + Configuration @@ -1721,12 +1721,12 @@ Verrouillé par l'option « Afficher un texte de potentiel par folio » de # - + # Type - + Type @@ -1736,7 +1736,7 @@ Verrouillé par l'option « Afficher un texte de potentiel par folio » de Contacts - + Contacts @@ -1747,7 +1747,7 @@ Verrouillé par l'option « Afficher un texte de potentiel par folio » de T%1 - + T%1 @@ -1772,7 +1772,7 @@ Verrouillé par l'option « Afficher un texte de potentiel par folio » de OK - + OK @@ -1808,7 +1808,7 @@ Verrouillé par l'option « Afficher un texte de potentiel par folio » de Simple - + Simple @@ -1924,7 +1924,7 @@ Continuer ? Diagram - + Change the depth Modifier la profondeur @@ -2031,19 +2031,34 @@ Continuer ? Poignées : - + + x 0.25 + x 0,25 + + + + x 0.5 + x 0,5 + + + + x 0.75 + x 0,75 + + + x 1 - + x 1 - + x 2 - + x 2 - + x 3 - + x 3 @@ -2065,7 +2080,7 @@ Continuer ? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste Cliquez pour poser le collage, Échap ou clic droit pour annuler @@ -2274,13 +2289,13 @@ Continuer ? - + Save image as... Enregistrer l'image sous... - + Save original image as... Enregistrer l'image d'origine sous... @@ -2335,77 +2350,77 @@ Continuer ? une image - + Replace the image... Remplacer l'image... - + Transparent color... Couleur transparente... - + Crop... Rogner... - + Horizontal mirror Miroir horizontal - + Vertical mirror Miroir vertical - + Restore proportions Restaurer les proportions - + Select an image ... Selectionner une image... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Erreur - + Unable to load the image. Impossible de charger l'image. - + Replace an image Remplacer une image - + Horizontal mirror of an image Miroir horizontal d'une image - + Vertical mirror of an image Miroir vertical d'une image - + Set a transparent color Définir une couleur transparente - + Crop an image Rogner une image @@ -2460,84 +2475,84 @@ Maintenir Maj et faire glisser pour déplacer ce texte seul DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Ceci est la zone dans laquelle vous concevez vos schémas en y ajoutant des éléments et en posant des conducteurs entre leurs bornes. Il est également possible d'ajouter des textes indépendants. - + Paste Here context menu action Coller ici - + Multiple paste Collage multiple - + Create a template context menu action Créer un template - + Make a cabinet thumbnail context menu action Générer une vignette d'armoire - + Sheet reference Renvoi de folio - + X: %1 Y: %2 - + X: %1 Y: %2 - + Connect the selected terminals Connecter les bornes sélectionnées - + Untitled what to display for untitled diagrams Sans titre - + Registered template Modèle enregistré - + The template has been successfully saved as : %1 Le modèle a été enregistré avec succès sous : %1 - + Error Erreur - + The file could not be written. Le fichier n'a pas pu être écrit. - + Choose the new color for this conductor Choisir la nouvelle couleur de ce conducteur - + Edit conductor properties undo caption Modifier les propriétés d'un conducteur @@ -2558,7 +2573,7 @@ Maintenir Maj et faire glisser pour déplacer ce texte seul TextLabel - + TextLabel @@ -2641,7 +2656,7 @@ Maintenir Maj et faire glisser pour déplacer ce texte seul ... - + ... @@ -2746,7 +2761,7 @@ Maintenir Maj et faire glisser pour déplacer ce texte seul Information - + Information @@ -2885,19 +2900,19 @@ Maintenir Maj et faire glisser pour déplacer ce texte seul Position X - + Position X Position Y - + Position Y Rotation - + Rotation @@ -2956,7 +2971,7 @@ Maintenir Maj et faire glisser pour déplacer ce texte seul X - + X @@ -2971,17 +2986,17 @@ Maintenir Maj et faire glisser pour déplacer ce texte seul Auto - + Auto px - + px Y - + Y @@ -2991,7 +3006,7 @@ Maintenir Maj et faire glisser pour déplacer ce texte seul Rotation - + Rotation @@ -3138,7 +3153,7 @@ Maintenir Maj et faire glisser pour déplacer ce texte seul Element - + Automatically number an element undo caption Numéroter automatiquement un élément @@ -3282,7 +3297,7 @@ Maintenir Maj et faire glisser pour déplacer ce texte seul Label - + Label @@ -3369,12 +3384,12 @@ Le nom affiché de l'élément se modifie séparément dans les propriété Form - + Form TextLabel - + TextLabel @@ -3416,27 +3431,27 @@ Le nom affiché de l'élément se modifie séparément dans les propriété Informations - + Add a custom property Ajouter une propriété personnalisée - + Potential separation Séparation de potentiel - + Exclude from the bill of materials Exclure de la nomenclature - + No materials list Liste de matériaux absente - + There is no materials list file at this location: %1 @@ -3448,12 +3463,12 @@ Create it? Le créer ? - + Cannot create Création impossible - + Cannot create the file: %1 %2 @@ -3462,83 +3477,83 @@ Le créer ? %2 - + Automatic numbering Numérotation automatique - + … - + … - + Open the project's element numberings Ouvrir les numérotations d'éléments du projet - + Freeze name Figer le nom - + A frozen name is not changed by automatic numbering, and its number is not given to another element. Un nom figé n'est pas changé par la numérotation automatique, et son numéro n'est pas donné à un autre élément. - + Number Numéro - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. Seuls les numéros libres sont proposés : un élément qui doit garder son numéro réel peut le retrouver si personne ne l'a. - + %1 (current) %1 (actuel) - + — (unknown number) — (numéro inconnu) - + %1 → %2 - + %1 → %2 - + The name is frozen: unfreeze it to change its number. Le nom est figé : dégelez-le pour changer son numéro. - + The number can be chosen when the element keeps its numbering. Le numéro se choisit quand l'élément garde sa numérotation. - + None (name entered by hand) Aucune (nom saisi à la main) - + Custom formula: %1 Formule propre : %1 - + Frozen name Nom figé - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -3645,7 +3660,7 @@ Continuer ? Type - + Type @@ -3657,7 +3672,7 @@ Continuer ? margin: 5px; font-weight: bold; - + margin: 5px; font-weight: bold; @@ -3707,7 +3722,7 @@ Continuer ? Contact - + Contact @@ -3744,7 +3759,7 @@ Continuer ? Informations - + Informations @@ -3761,7 +3776,7 @@ Continuer ? Simple - + Simple @@ -3819,7 +3834,7 @@ Continuer ? Other - + Other @@ -3889,12 +3904,12 @@ Continuer ? Diode - + Diode Phase - + Phase @@ -3908,7 +3923,7 @@ Continuer ? T%1 - + T%1 @@ -3924,12 +3939,12 @@ Continuer ? + - + + - - + - @@ -3952,12 +3967,12 @@ Continuer ? Nb. - + Nb. T1 - + T1 @@ -4008,7 +4023,7 @@ Continuer ? mm - + mm @@ -4023,7 +4038,7 @@ Continuer ? Visible - + Visible @@ -4104,19 +4119,22 @@ Continuer ? Position : %1 - + Position : %1 + Rotation : %1° - + Rotation : %1° + Dimensions : %1*%2 - + Dimensions : %1*%2 + @@ -4269,7 +4287,7 @@ Continuer ? Simples - + Simples @@ -4314,7 +4332,7 @@ Continuer ? Configuration - + Configuration @@ -4359,7 +4377,7 @@ Continuer ? Position - + Position @@ -4757,7 +4775,7 @@ En important ce fichier, vous confirmez que : Import EPLAN - + Import EPLAN @@ -4805,7 +4823,7 @@ En important ce fichier, vous confirmez que : Collections - + Collections @@ -5020,12 +5038,12 @@ En important ce fichier, vous confirmez que : Y - + Y X - + X @@ -5054,7 +5072,7 @@ En important ce fichier, vous confirmez que : Export configuration page title - + Export @@ -5098,7 +5116,7 @@ En important ce fichier, vous confirmez que : Dimensions - + Dimensions @@ -5157,7 +5175,7 @@ En important ce fichier, vous confirmez que : px - + px @@ -5186,27 +5204,27 @@ En important ce fichier, vous confirmez que : PNG (*.png) - + PNG (*.png) JPEG (*.jpg) - + JPEG (*.jpg) Bitmap (*.bmp) - + Bitmap (*.bmp) SVG (*.svg) - + SVG (*.svg) DXF (*.dxf) - + DXF (*.dxf) @@ -5285,7 +5303,7 @@ En important ce fichier, vous confirmez que : Form - + Form @@ -5372,7 +5390,7 @@ Le champ "Incrémentation" n'est pas utilisé. TextLabel - + TextLabel @@ -5441,7 +5459,7 @@ que vous créez. entrées de texte et nombres sont Type : - + Type : @@ -5451,7 +5469,7 @@ que vous créez. entrées de texte et nombres sont LED : - + LED : @@ -5487,7 +5505,7 @@ que vous créez. entrées de texte et nombres sont Phase - + Phase @@ -5535,7 +5553,7 @@ que vous créez. entrées de texte et nombres sont Label - + Label @@ -5545,7 +5563,7 @@ que vous créez. entrées de texte et nombres sont Type - + Type @@ -5555,7 +5573,7 @@ que vous créez. entrées de texte et nombres sont led - + led @@ -5656,7 +5674,7 @@ que vous créez. entrées de texte et nombres sont min minute - + min @@ -5666,7 +5684,7 @@ que vous créez. entrées de texte et nombres sont Collections - + Collections @@ -5955,7 +5973,7 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments ° - + ° @@ -5966,7 +5984,7 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments Rotation : - + Rotation : @@ -6034,7 +6052,7 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments max: - + max: @@ -6055,7 +6073,7 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments min: - + min: @@ -6138,7 +6156,7 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments Catalan - + Catalan @@ -6434,7 +6452,7 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu %1 - %2 label displayed for a diagram in the panel ; %1 is the folio index, %2 is the diagram title - + %1 - %2 @@ -6469,12 +6487,12 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu 8 directions - + 8 directions 4 directions - + 4 directions @@ -6579,12 +6597,12 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu Y : - + Y : X : - + X : @@ -6609,7 +6627,7 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu TextLabel - + TextLabel @@ -6727,12 +6745,12 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu Orientation - + Orientation Position - + Position @@ -6753,12 +6771,12 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu Horizontal - + Horizontal Vertical - + Vertical @@ -6789,7 +6807,7 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu Form - + Form @@ -6800,7 +6818,7 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu % - + % @@ -6821,14 +6839,14 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu Angle - + Angle ° - + ° @@ -6922,7 +6940,7 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu rgb(%1, %2, %3) - + rgb(%1, %2, %3) @@ -6983,12 +7001,12 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu Dialog - + Dialog TextLabel - + TextLabel @@ -7006,7 +7024,7 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu X : - + X : @@ -7028,17 +7046,17 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu px - + px ° - + ° Y : - + Y : @@ -7053,7 +7071,7 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu Auto - + Auto @@ -7317,7 +7335,7 @@ Veuillez utiliser l'éditeur avancé pour cela. Form - + Form @@ -7338,7 +7356,7 @@ Veuillez utiliser l'éditeur avancé pour cela. Label - + Label @@ -7372,7 +7390,7 @@ Veuillez utiliser l'éditeur avancé pour cela. Position - + Position @@ -7514,7 +7532,7 @@ Ce réglage se trouve dans Configurer QElectroTech > Général > Projets.< script - + script @@ -7628,7 +7646,7 @@ Avec le serveur MCP qet : lis-la avec qet_recording_read, écris un script qui f Form - + Form @@ -7666,7 +7684,7 @@ Avec le serveur MCP qet : lis-la avec qet_recording_read, écris un script qui f Position - + Position @@ -7720,7 +7738,7 @@ Voulez-vous tout de même lier ce contact esclave ? Type - + Type @@ -7930,17 +7948,17 @@ Voulez-vous tout de même lier ce contact esclave ? px - + px x: - + x: y: - + y: @@ -7978,7 +7996,7 @@ Voulez-vous tout de même lier ce contact esclave ? Dialog - + Dialog @@ -8039,7 +8057,7 @@ Voulez-vous tout de même lier ce contact esclave ? Guides - + Guides @@ -8175,7 +8193,7 @@ Voulez-vous tout de même lier ce contact esclave ? Form - + Form @@ -8190,7 +8208,7 @@ Voulez-vous tout de même lier ce contact esclave ? mod. - + mod. @@ -8200,7 +8218,7 @@ Voulez-vous tout de même lier ce contact esclave ? 0 - + 0 @@ -8317,21 +8335,21 @@ Voulez-vous tout de même lier ce contact esclave ? Element Line - + Element Line Element Column - + Element Column Element Prefix - + Element Prefix @@ -8422,7 +8440,7 @@ Voulez-vous tout de même lier ce contact esclave ? PartTerminal - + Move the label to a terminal Déplacer le label d'une borne @@ -8538,12 +8556,12 @@ Les importer ? Les éléments recevront alors les prochains numéros, à partir Label - + Label Type - + Type @@ -8596,12 +8614,12 @@ Les importer ? Les éléments recevront alors les prochains numéros, à partir X - + X Y - + Y @@ -9002,7 +9020,7 @@ Sa copie a été conservée sous : %1 → %2 - + %1 → %2 @@ -9205,7 +9223,7 @@ Donnez-leur une autre numérotation d'abord. Management - + Management @@ -9213,7 +9231,7 @@ Donnez-leur une autre numérotation d'abord. Position - + Position @@ -9384,7 +9402,7 @@ Donnez-leur une autre numérotation d'abord. %1 h %2 min hours and minutes of time spent on a project - + %1 h %2 min @@ -9392,7 +9410,7 @@ Donnez-leur une autre numérotation d'abord. MainWindow - + MainWindow @@ -9487,7 +9505,7 @@ Donnez-leur une autre numérotation d'abord. toolBar - + toolBar @@ -9517,7 +9535,7 @@ Donnez-leur une autre numérotation d'abord. Portrait - + Portrait @@ -9754,7 +9772,7 @@ Voulez-vous enregistrer les modifications ? LTR Translate this string to RTL if you are translating to a Right-to-Left language, else translate to LTR - + LTR @@ -9778,13 +9796,13 @@ Voulez-vous enregistrer les modifications ? Q Single-letter example text - translate length, not meaning - + Q QET Small example text - translate length, not meaning - + QET @@ -9802,7 +9820,7 @@ Voulez-vous enregistrer les modifications ? QElectroTech Long example text - translate length, not meaning - + QElectroTech @@ -9881,7 +9899,7 @@ Voulez-vous continuer ? QElectroTech systray menu title - + QElectroTech @@ -9959,7 +9977,7 @@ Voulez-vous continuer ? QElectroTech systray icon tooltip - + QElectroTech @@ -10074,13 +10092,13 @@ Options disponibles : QElectroTech window title - + QElectroTech QElectroTech status bar message - + QElectroTech @@ -10091,7 +10109,7 @@ Options disponibles : Collections - + Collections @@ -10615,7 +10633,7 @@ Maintenir Ctrl pendant le déplacement pour placer librement. &Cascade - + &Cascade @@ -11147,7 +11165,7 @@ Maintenir Ctrl pendant le déplacement pour placer librement. Scripts toolbar title - + Scripts @@ -11163,7 +11181,7 @@ Maintenir Ctrl pendant le déplacement pour placer librement. Scripts - + Scripts @@ -11359,7 +11377,7 @@ Pour en faire un script, demandez-le à votre assistant IA : le bouton ci-dessou Assistant - + Assistant @@ -11913,7 +11931,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Informations - + Informations @@ -12038,22 +12056,22 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Rotation - + Rotation Fine-Rotation - + Fine-Rotation Mirror - + Mirror Flip - + Flip @@ -12282,7 +12300,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s <b>%1</b> : %2 warning title: warning description - + <b>%1</b> : %2 @@ -12462,7 +12480,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s px - + px @@ -12477,7 +12495,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s X: %1 Y: %2 - + X: %1 Y: %2 @@ -13209,7 +13227,7 @@ Que désirez vous faire ? %1 %2 part of the window title - %1 is the filepath or template name, %2 is the [Changed] or [Read only] tag - + %1 %2 @@ -13221,7 +13239,7 @@ Que désirez vous faire ? %1 - %2 window title: %1 is the base window title, %2 is a template name - + %1 - %2 @@ -13543,7 +13561,7 @@ Que désirez vous faire ? Macros - + Macros @@ -13564,7 +13582,7 @@ the translated name of this folder could not be read, so its folder name is disp Collection - + Collection @@ -13668,7 +13686,7 @@ the translated name of this folder could not be read, so its folder name is disp Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) @@ -13699,7 +13717,7 @@ the translated name of this folder could not be read, so its folder name is disp Date - + Date @@ -13800,12 +13818,12 @@ the translated name of this folder could not be read, so its folder name is disp Arc - + Arc Ellipse - + Ellipse @@ -13820,11 +13838,11 @@ the translated name of this folder could not be read, so its folder name is disp Rectangle - + Rectangle - + Terminal Borne @@ -13838,13 +13856,13 @@ the translated name of this folder could not be read, so its folder name is disp arc element part name - + arc ellipse element part name - + ellipse @@ -13862,13 +13880,13 @@ the translated name of this folder could not be read, so its folder name is disp rectangle element part name - + rectangle T default text when adding a text in the element editor - + T @@ -13942,7 +13960,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Warning: the element has been saved with a more recent version of QElectroTech. Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. @@ -13956,13 +13974,13 @@ the translated name of this folder could not be read, so its folder name is disp %1px titleblock: absolute width - + %1px %1% titleblock: width relative to total length - + %1% @@ -13974,7 +13992,7 @@ the translated name of this folder could not be read, so its folder name is disp type title block cell property human name - + type @@ -13986,13 +14004,13 @@ the translated name of this folder could not be read, so its folder name is disp logo title block cell property human name - + logo label title block cell property human name - + label @@ -14235,7 +14253,7 @@ Voulez-vous la remplacer ? Position - + Position @@ -14290,7 +14308,7 @@ Voulez-vous la remplacer ? Label - + Label @@ -14306,15 +14324,15 @@ Voulez-vous la remplacer ? - + Type - + Type - + Address Adresse @@ -14322,7 +14340,7 @@ Voulez-vous la remplacer ? - + Annotation Commentaire @@ -14331,7 +14349,7 @@ Voulez-vous la remplacer ? - + Cross-reference Réf. croisée @@ -14340,7 +14358,7 @@ Voulez-vous la remplacer ? - + Function @@ -14544,7 +14562,7 @@ Voulez-vous la remplacer ? Type PLC - + Type PLC @@ -14594,7 +14612,7 @@ Voulez-vous la remplacer ? Notes - + Notes @@ -14684,7 +14702,7 @@ Voulez-vous la remplacer ? To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> @@ -14712,7 +14730,7 @@ Voulez-vous la remplacer ? Coller - + @@ -14733,7 +14751,7 @@ Voulez-vous la remplacer ? Compilation : - + Compilation : @@ -14751,7 +14769,7 @@ Voulez-vous la remplacer ? Modifier les proriétés d'un groupe de bornes - + Sort terminal block %1 Trier le bornier %1 @@ -14772,13 +14790,13 @@ Voulez-vous la remplacer ? Sectionable sectional terminal element type - + Sectionable Diode diode terminal element type - + Diode @@ -14797,7 +14815,7 @@ Voulez-vous la remplacer ? Phase phase terminal element function - + Phase @@ -14895,17 +14913,17 @@ Voulez-vous la remplacer ? horizontal - + horizontal vertical - + vertical horizontal + vertical - + horizontal + vertical @@ -14915,7 +14933,7 @@ Voulez-vous la remplacer ? direction - + direction @@ -14952,7 +14970,7 @@ Please download it by following the link and unzip it in the installation folder Veuillez télécharger celui-ci en suivant le lien ci dessous et le dézipper dans le dossier d'installation - + Automatic terminal numbering Numérotation automatique des bornes @@ -15174,7 +15192,7 @@ Veuillez télécharger celui-ci en suivant le lien ci dessous et le dézipper da - + Align %n objects to the grid Aligner %n objet sur la grille @@ -15182,7 +15200,7 @@ Veuillez télécharger celui-ci en suivant le lien ci dessous et le dézipper da - + Align %n items Aligner %n objet(s) @@ -15275,7 +15293,7 @@ Veuillez télécharger celui-ci en suivant le lien ci dessous et le dézipper da Script - + Script @@ -15331,16 +15349,6 @@ Pour l'activer : Configurer QElectroTech > Général > Projets, ou d Sheet Folio - - - Group a set of terminals - Grouper un ensemble de bornes - - - - Ungroup a set of terminals - Dégrouper un ensemble de bornes - (No action) @@ -15357,6 +15365,16 @@ Pour l'activer : Configurer QElectroTech > Général > Projets, ou d Vertical mirror Miroir vertical + + + Group a set of terminals + Grouper un ensemble de bornes + + + + Ungroup a set of terminals + Dégrouper un ensemble de bornes + QTextOrientationWidget @@ -15818,12 +15836,12 @@ rien n'a été modifié. Dimensions : - + Dimensions : y - + y @@ -15844,7 +15862,7 @@ rien n'a été modifié. x - + x @@ -15862,7 +15880,7 @@ rien n'a été modifié. Dialog - + Dialog @@ -15887,7 +15905,7 @@ rien n'a été modifié. TextLabel - + TextLabel @@ -15972,7 +15990,7 @@ rien n'a été modifié. Type - + Type @@ -16079,7 +16097,7 @@ rien n'a été modifié. ° - + ° @@ -16094,22 +16112,22 @@ rien n'a été modifié. Protective Earth Neutral - + Protective Earth Neutral PEN - + PEN Phase - + Phase phase - + phase @@ -16140,12 +16158,12 @@ rien n'a été modifié. TextLabel - + TextLabel PushButton - + PushButton @@ -16187,7 +16205,7 @@ rien n'a été modifié. px - + px @@ -16372,7 +16390,7 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol Form - + Form @@ -16608,7 +16626,7 @@ qet.addText(f, "Texte", 40, 40); Images (*.svg *.png) - + Images (*.svg *.png) @@ -16681,7 +16699,7 @@ qet.addText(f, "Texte", 40, 40); Mode - + Mode @@ -16847,7 +16865,7 @@ qet.addText(f, "Texte", 40, 40); Form - + Form @@ -16882,7 +16900,7 @@ qet.addText(f, "Texte", 40, 40); Type - + Type @@ -17062,7 +17080,7 @@ Les autres champs ne sont pas utilisés. Form - + Form @@ -17077,7 +17095,7 @@ Les autres champs ne sont pas utilisés. Normal - + Normal @@ -17107,7 +17125,7 @@ Les autres champs ne sont pas utilisés. Type - + Type @@ -17123,7 +17141,7 @@ Les autres champs ne sont pas utilisés. Style - + Style @@ -17150,12 +17168,12 @@ Les autres champs ne sont pas utilisés. Angle - + Angle ° - + ° @@ -17200,12 +17218,12 @@ Les autres champs ne sont pas utilisés. Horizontal - + Horizontal Vertical - + Vertical @@ -17422,7 +17440,7 @@ Les autres champs ne sont pas utilisés. Action - + Action @@ -17434,7 +17452,7 @@ Les autres champs ne sont pas utilisés. Menu - + Menu @@ -17497,7 +17515,7 @@ Les autres champs ne sont pas utilisés. Action - + Action @@ -17630,13 +17648,13 @@ Les autres champs ne sont pas utilisés. Cyan element part color - + Cyan Magenta element part color - + Magenta @@ -17648,7 +17666,7 @@ Les autres champs ne sont pas utilisés. Orange element part color - + Orange @@ -17666,835 +17684,835 @@ Les autres champs ne sont pas utilisés. Pink : LightPink element part color - + Pink : LightPink Pink : HotPink element part color - + Pink : HotPink Pink : DeepPink element part color - + Pink : DeepPink Pink : PaleVioletRed element part color - + Pink : PaleVioletRed Pink : MediumVioletRed element part color - + Pink : MediumVioletRed Red : LightSalmon element part color - + Red : LightSalmon Red : Salmon element part color - + Red : Salmon Red : DarkSalmon element part color - + Red : DarkSalmon Red : LightCoral element part color - + Red : LightCoral Red : IndianRed element part color - + Red : IndianRed Red : Crimson element part color - + Red : Crimson Red : Firebrick element part color - + Red : Firebrick Red : DarkRed element part color - + Red : DarkRed Red : Red element part color - + Red : Red Orange : OrangeRed element part color - + Orange : OrangeRed Orange : Tomato element part color - + Orange : Tomato Orange : Coral element part color - + Orange : Coral Orange : DarkOrange element part color - + Orange : DarkOrange Orange : Orange element part color - + Orange : Orange Yellow : Yellow element part color - + Yellow : Yellow Yellow : LightYellow element part color - + Yellow : LightYellow Yellow : LemonChiffon element part color - + Yellow : LemonChiffon Yellow : LightGoldenrodYellow element part color - + Yellow : LightGoldenrodYellow Yellow : PapayaWhip element part color - + Yellow : PapayaWhip Yellow : Moccasin element part color - + Yellow : Moccasin Yellow : PeachPuff element part color - + Yellow : PeachPuff Yellow : PaleGoldenrod element part color - + Yellow : PaleGoldenrod Yellow : Khaki element part color - + Yellow : Khaki Yellow : DarkKhaki element part color - + Yellow : DarkKhaki Yellow : Gold element part color - + Yellow : Gold Brown : Cornsilk element part color - + Brown : Cornsilk Brown : BlanchedAlmond element part color - + Brown : BlanchedAlmond Brown : Bisque element part color - + Brown : Bisque Brown : NavajoWhite element part color - + Brown : NavajoWhite Brown : Wheat element part color - + Brown : Wheat Brown : Burlywood element part color - + Brown : Burlywood Brown : Tan element part color - + Brown : Tan Brown : RosyBrown element part color - + Brown : RosyBrown Brown : SandyBrown element part color - + Brown : SandyBrown Brown : Goldenrod element part color - + Brown : Goldenrod Brown : DarkGoldenrod element part color - + Brown : DarkGoldenrod Brown : Peru element part color - + Brown : Peru Brown : Chocolate element part color - + Brown : Chocolate Brown : SaddleBrown element part color - + Brown : SaddleBrown Brown : Sienna element part color - + Brown : Sienna Brown : Brown element part color - + Brown : Brown Brown : Maroon element part color - + Brown : Maroon Green : DarkOliveGreen element part color - + Green : DarkOliveGreen Green : Olive element part color - + Green : Olive Green : OliveDrab element part color - + Green : OliveDrab Green : YellowGreen element part color - + Green : YellowGreen Green : LimeGreen element part color - + Green : LimeGreen Green : Lime element part color - + Green : Lime Green : LawnGreen element part color - + Green : LawnGreen Green : Chartreuse element part color - + Green : Chartreuse Green : GreenYellow element part color - + Green : GreenYellow Green : SpringGreen element part color - + Green : SpringGreen Green : MediumSpringGreen element part color - + Green : MediumSpringGreen Green : LightGreen element part color - + Green : LightGreen Green : PaleGreen element part color - + Green : PaleGreen Green : DarkSeaGreen element part color - + Green : DarkSeaGreen Green : MediumAquamarine element part color - + Green : MediumAquamarine Green : MediumSeaGreen element part color - + Green : MediumSeaGreen Green : SeaGreen element part color - + Green : SeaGreen Green : ForestGreen element part color - + Green : ForestGreen Green : Green element part color - + Green : Green Green : DarkGreen element part color - + Green : DarkGreen Cyan : Aqua element part color - + Cyan : Aqua Cyan : Cyan element part color - + Cyan : Cyan Cyan : LightCyan element part color - + Cyan : LightCyan Cyan : PaleTurquoise element part color - + Cyan : PaleTurquoise Cyan : Aquamarine element part color - + Cyan : Aquamarine Cyan : Turquoise element part color - + Cyan : Turquoise Cyan : MediumTurquoise element part color - + Cyan : MediumTurquoise Cyan : DarkTurquoise element part color - + Cyan : DarkTurquoise Cyan : LightSeaGreen element part color - + Cyan : LightSeaGreen Cyan : CadetBlue element part color - + Cyan : CadetBlue Cyan : DarkCyan element part color - + Cyan : DarkCyan Cyan : Teal element part color - + Cyan : Teal Blue : LightSteelBlue element part color - + Blue : LightSteelBlue Blue : PowderBlue element part color - + Blue : PowderBlue Blue : LightBlue element part color - + Blue : LightBlue Blue : SkyBlue element part color - + Blue : SkyBlue Blue : LightSkyBlue element part color - + Blue : LightSkyBlue Blue : DeepSkyBlue element part color - + Blue : DeepSkyBlue Blue : DodgerBlue element part color - + Blue : DodgerBlue Blue : CornflowerBlue element part color - + Blue : CornflowerBlue Blue : SteelBlue element part color - + Blue : SteelBlue Blue : RoyalBlue element part color - + Blue : RoyalBlue Blue : Blue element part color - + Blue : Blue Blue : MediumBlue element part color - + Blue : MediumBlue Blue : DarkBlue element part color - + Blue : DarkBlue Blue : Navy element part color - + Blue : Navy Blue : MidnightBlue element part color - + Blue : MidnightBlue Purple : Lavender element part color - + Purple : Lavender Purple : Thistle element part color - + Purple : Thistle Purple : Plum element part color - + Purple : Plum Purple : Violet element part color - + Purple : Violet Purple : Orchid element part color - + Purple : Orchid Purple : Fuchsia element part color - + Purple : Fuchsia Purple : Magenta element part color - + Purple : Magenta Purple : MediumOrchid element part color - + Purple : MediumOrchid Purple : MediumPurple element part color - + Purple : MediumPurple Purple : BlueViolet element part color - + Purple : BlueViolet Purple : DarkViolet element part color - + Purple : DarkViolet Purple : DarkOrchid element part color - + Purple : DarkOrchid Purple : DarkMagenta element part color - + Purple : DarkMagenta Purple : Purple element part color - + Purple : Purple Purple : Indigo element part color - + Purple : Indigo Purple : DarkSlateBlue element part color - + Purple : DarkSlateBlue Purple : SlateBlue element part color - + Purple : SlateBlue Purple : MediumSlateBlue element part color - + Purple : MediumSlateBlue White : White element part color - + White : White White : Snow element part color - + White : Snow White : Honeydew element part color - + White : Honeydew White : MintCream element part color - + White : MintCream White : Azure element part color - + White : Azure White : AliceBlue element part color - + White : AliceBlue White : GhostWhite element part color - + White : GhostWhite White : WhiteSmoke element part color - + White : WhiteSmoke White : Seashell element part color - + White : Seashell White : Beige element part color - + White : Beige White : OldLace element part color - + White : OldLace White : FloralWhite element part color - + White : FloralWhite White : Ivory element part color - + White : Ivory White : AntiqueWhite element part color - + White : AntiqueWhite White : Linen element part color - + White : Linen White : LavenderBlush element part color - + White : LavenderBlush White : MistyRose element part color - + White : MistyRose Gray : Gainsboro element part color - + Gray : Gainsboro Gray : LightGray element part color - + Gray : LightGray Gray : Silver element part color - + Gray : Silver Gray : DarkGray element part color - + Gray : DarkGray Gray : Gray element part color - + Gray : Gray Gray : DimGray element part color - + Gray : DimGray Gray : LightSlateGray element part color - + Gray : LightSlateGray Gray : SlateGray element part color - + Gray : SlateGray Gray : DarkSlateGray element part color - + Gray : DarkSlateGray Gray : Black element part color - + Gray : Black @@ -18506,7 +18524,7 @@ Les autres champs ne sont pas utilisés. Normal element part line style - + Normal @@ -18614,13 +18632,13 @@ Les autres champs ne sont pas utilisés. Cyan element part filling - + Cyan Magenta element part filling - + Magenta @@ -18632,7 +18650,7 @@ Les autres champs ne sont pas utilisés. Orange element part filling - + Orange @@ -18650,835 +18668,835 @@ Les autres champs ne sont pas utilisés. Pink : LightPink element part filling - + Pink : LightPink Pink : HotPink element part filling - + Pink : HotPink Pink : DeepPink element part filling - + Pink : DeepPink Pink : PaleVioletRed element part filling - + Pink : PaleVioletRed Pink : MediumVioletRed element part filling - + Pink : MediumVioletRed Red : LightSalmon element part filling - + Red : LightSalmon Red : Salmon element part filling - + Red : Salmon Red : DarkSalmon element part filling - + Red : DarkSalmon Red : LightCoral element part filling - + Red : LightCoral Red : IndianRed element part filling - + Red : IndianRed Red : Crimson element part filling - + Red : Crimson Red : Firebrick element part filling - + Red : Firebrick Red : DarkRed element part filling - + Red : DarkRed Red : Red element part filling - + Red : Red Orange : OrangeRed element part filling - + Orange : OrangeRed Orange : Tomato element part filling - + Orange : Tomato Orange : Coral element part filling - + Orange : Coral Orange : DarkOrange element part filling - + Orange : DarkOrange Orange : Orange element part filling - + Orange : Orange Yellow : Yellow element part filling - + Yellow : Yellow Yellow : LightYellow element part filling - + Yellow : LightYellow Yellow : LemonChiffon element part filling - + Yellow : LemonChiffon Yellow : LightGoldenrodYellow element part filling - + Yellow : LightGoldenrodYellow Yellow : PapayaWhip element part filling - + Yellow : PapayaWhip Yellow : Moccasin element part filling - + Yellow : Moccasin Yellow : PeachPuff element part filling - + Yellow : PeachPuff Yellow : PaleGoldenrod element part filling - + Yellow : PaleGoldenrod Yellow : Khaki element part filling - + Yellow : Khaki Yellow : DarkKhaki element part filling - + Yellow : DarkKhaki Yellow : Gold element part filling - + Yellow : Gold Brown : Cornsilk element part filling - + Brown : Cornsilk Brown : BlanchedAlmond element part filling - + Brown : BlanchedAlmond Brown : Bisque element part filling - + Brown : Bisque Brown : NavajoWhite element part filling - + Brown : NavajoWhite Brown : Wheat element part filling - + Brown : Wheat Brown : Burlywood element part filling - + Brown : Burlywood Brown : Tan element part filling - + Brown : Tan Brown : RosyBrown element part filling - + Brown : RosyBrown Brown : SandyBrown element part filling - + Brown : SandyBrown Brown : Goldenrod element part filling - + Brown : Goldenrod Brown : DarkGoldenrod element part filling - + Brown : DarkGoldenrod Brown : Peru element part filling - + Brown : Peru Brown : Chocolate element part filling - + Brown : Chocolate Brown : SaddleBrown element part filling - + Brown : SaddleBrown Brown : Sienna element part filling - + Brown : Sienna Brown : Brown element part filling - + Brown : Brown Brown : Maroon element part filling - + Brown : Maroon Green : DarkOliveGreen element part filling - + Green : DarkOliveGreen Green : Olive element part filling - + Green : Olive Green : OliveDrab element part filling - + Green : OliveDrab Green : YellowGreen element part filling - + Green : YellowGreen Green : LimeGreen element part filling - + Green : LimeGreen Green : Lime element part filling - + Green : Lime Green : LawnGreen element part filling - + Green : LawnGreen Green : Chartreuse element part filling - + Green : Chartreuse Green : GreenYellow element part filling - + Green : GreenYellow Green : SpringGreen element part filling - + Green : SpringGreen Green : MediumSpringGreen element part filling - + Green : MediumSpringGreen Green : LightGreen element part filling - + Green : LightGreen Green : PaleGreen element part filling - + Green : PaleGreen Green : DarkSeaGreen element part filling - + Green : DarkSeaGreen Green : MediumAquamarine element part filling - + Green : MediumAquamarine Green : MediumSeaGreen element part filling - + Green : MediumSeaGreen Green : SeaGreen element part filling - + Green : SeaGreen Green : ForestGreen element part filling - + Green : ForestGreen Green : Green element part filling - + Green : Green Green : DarkGreen element part filling - + Green : DarkGreen Cyan : Aqua element part filling - + Cyan : Aqua Cyan : Cyan element part filling - + Cyan : Cyan Cyan : LightCyan element part filling - + Cyan : LightCyan Cyan : PaleTurquoise element part filling - + Cyan : PaleTurquoise Cyan : Aquamarine element part filling - + Cyan : Aquamarine Cyan : Turquoise element part filling - + Cyan : Turquoise Cyan : MediumTurquoise element part filling - + Cyan : MediumTurquoise Cyan : DarkTurquoise element part filling - + Cyan : DarkTurquoise Cyan : LightSeaGreen element part filling - + Cyan : LightSeaGreen Cyan : CadetBlue element part filling - + Cyan : CadetBlue Cyan : DarkCyan element part filling - + Cyan : DarkCyan Cyan : Teal element part filling - + Cyan : Teal Blue : LightSteelBlue element part filling - + Blue : LightSteelBlue Blue : PowderBlue element part filling - + Blue : PowderBlue Blue : LightBlue element part filling - + Blue : LightBlue Blue : SkyBlue element part filling - + Blue : SkyBlue Blue : LightSkyBlue element part filling - + Blue : LightSkyBlue Blue : DeepSkyBlue element part filling - + Blue : DeepSkyBlue Blue : DodgerBlue element part filling - + Blue : DodgerBlue Blue : CornflowerBlue element part filling - + Blue : CornflowerBlue Blue : SteelBlue element part filling - + Blue : SteelBlue Blue : RoyalBlue element part filling - + Blue : RoyalBlue Blue : Blue element part filling - + Blue : Blue Blue : MediumBlue element part filling - + Blue : MediumBlue Blue : DarkBlue element part filling - + Blue : DarkBlue Blue : Navy element part filling - + Blue : Navy Blue : MidnightBlue element part filling - + Blue : MidnightBlue Purple : Lavender element part filling - + Purple : Lavender Purple : Thistle element part filling - + Purple : Thistle Purple : Plum element part filling - + Purple : Plum Purple : Violet element part filling - + Purple : Violet Purple : Orchid element part filling - + Purple : Orchid Purple : Fuchsia element part filling - + Purple : Fuchsia Purple : Magenta element part filling - + Purple : Magenta Purple : MediumOrchid element part filling - + Purple : MediumOrchid Purple : MediumPurple element part filling - + Purple : MediumPurple Purple : BlueViolet element part filling - + Purple : BlueViolet Purple : DarkViolet element part filling - + Purple : DarkViolet Purple : DarkOrchid element part filling - + Purple : DarkOrchid Purple : DarkMagenta element part filling - + Purple : DarkMagenta Purple : Purple element part filling - + Purple : Purple Purple : Indigo element part filling - + Purple : Indigo Purple : DarkSlateBlue element part filling - + Purple : DarkSlateBlue Purple : SlateBlue element part filling - + Purple : SlateBlue Purple : MediumSlateBlue element part filling - + Purple : MediumSlateBlue White : White element part filling - + White : White White : Snow element part filling - + White : Snow White : Honeydew element part filling - + White : Honeydew White : MintCream element part filling - + White : MintCream White : Azure element part filling - + White : Azure White : AliceBlue element part filling - + White : AliceBlue White : GhostWhite element part filling - + White : GhostWhite White : WhiteSmoke element part filling - + White : WhiteSmoke White : Seashell element part filling - + White : Seashell White : Beige element part filling - + White : Beige White : OldLace element part filling - + White : OldLace White : FloralWhite element part filling - + White : FloralWhite White : Ivory element part filling - + White : Ivory White : AntiqueWhite element part filling - + White : AntiqueWhite White : Linen element part filling - + White : Linen White : LavenderBlush element part filling - + White : LavenderBlush White : MistyRose element part filling - + White : MistyRose Gray : Gainsboro element part filling - + Gray : Gainsboro Gray : LightGray element part filling - + Gray : LightGray Gray : Silver element part filling - + Gray : Silver Gray : DarkGray element part filling - + Gray : DarkGray Gray : Gray element part filling - + Gray : Gray Gray : DimGray element part filling - + Gray : DimGray Gray : LightSlateGray element part filling - + Gray : LightSlateGray Gray : SlateGray element part filling - + Gray : SlateGray Gray : DarkSlateGray element part filling - + Gray : DarkSlateGray Gray : Black element part filling - + Gray : Black @@ -19507,7 +19525,7 @@ Les autres champs ne sont pas utilisés. Antialiasing - + Antialiasing @@ -19585,7 +19603,7 @@ Les autres champs ne sont pas utilisés. Configuration - + Configuration @@ -19595,7 +19613,7 @@ Les autres champs ne sont pas utilisés. Position - + Position @@ -19613,139 +19631,144 @@ Les autres champs ne sont pas utilisés. TerminalEditor - + North Nord - + East Est - + South Sud - + West Ouest - + Change the orientation of a terminal Modifier l'orientation d'une borne - + Move a terminal Déplacer une borne - - - - + + + + T%1 - + T%1 - + Generic Générique - + Indoor terminal block Bornier intérieur - + External terminal block Bornier extérieur - - - NO (contact SW) - - - NC (contact SW) - + NO (contact SW) + NO (contact SW) + NC (contact SW) + NC (contact SW) + + + Common (contact SW) Commun (contact SW) - + Change the terminal name Modifier le nom du terminal + Change the potential of a terminal + Modifier le potentiel d'une borne + + + Change the type of a terminal Modifier le type d'une borne - + Show/hide the terminal name Afficher/cacher le nom du terminal - + Change the position of the label Modifier la position du label - + Change the label font Modifier la police du label - + Change the font size of the label Modifier la taille de police du label - + Change the rotation of the label Modifier la rotation du label - - + + Change the alignment of the label Modifier l'alignement du label - + Show/hide the label border Afficher/cacher le cadre du label - - + + Change the label colour Modifier la couleur du label - + Edit the master label Modifier l'étiquette du maître - - - + + + Change the name of the terminal Modifier le nom de la borne - + Change the master label index Modifier l'index de l'étiquette du maître @@ -19757,12 +19780,12 @@ Les autres champs ne sont pas utilisés. y : - + y : Orientation : - + Orientation : @@ -19781,66 +19804,76 @@ Les autres champs ne sont pas utilisés. + Potential: + Potentiel: + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + Sans effet si "Isolation du potentiel" n'est pas cochée (toutes les bornes du bloc restent alors reliées). Si elle est cochée : les bornes partageant la même valeur restent reliées entre elles, les autres sont isolées. + + + Terminal name Nom de la borne - + Show name Afficher le nom - + Text properties Propriétés du texte - + Font Police - + X : - + X : - + Y : - + Y : - + Rotation : - + Rotation : - + ° - + ° - + Alignment Alignement - + Color : Couleur : - + Frame the text Encadrer le texte - + Master’s label Étiquette du maître - + Learning from the master Reprendre du maître @@ -19928,7 +19961,7 @@ Les autres champs ne sont pas utilisés. Description : - + Description : @@ -19941,7 +19974,7 @@ Les autres champs ne sont pas utilisés. Disposition - + Disposition @@ -19971,7 +20004,7 @@ Les autres champs ne sont pas utilisés. Description - + Description @@ -20027,7 +20060,7 @@ Les autres champs ne sont pas utilisés. Diode - + Diode @@ -20042,7 +20075,7 @@ Les autres champs ne sont pas utilisés. Phase - + Phase @@ -20082,7 +20115,7 @@ Les autres champs ne sont pas utilisés. LED : - + LED : @@ -20105,7 +20138,7 @@ Les autres champs ne sont pas utilisés. toolBar - + toolBar @@ -20186,7 +20219,7 @@ Les autres champs ne sont pas utilisés. Orientation - + Orientation @@ -20196,7 +20229,7 @@ Les autres champs ne sont pas utilisés. Police : - + Police : @@ -20264,14 +20297,14 @@ Les autres champs ne sont pas utilisés. Horizontal - + Horizontal Vertical - + Vertical @@ -20299,7 +20332,7 @@ Les autres champs ne sont pas utilisés. Position - + Position @@ -20309,7 +20342,7 @@ Les autres champs ne sont pas utilisés. Label - + Label @@ -20329,7 +20362,7 @@ Les autres champs ne sont pas utilisés. Type - + Type @@ -20339,7 +20372,7 @@ Les autres champs ne sont pas utilisés. led - + led @@ -20363,12 +20396,12 @@ Les autres champs ne sont pas utilisés. Explorateur de bornier - + Untitled project Projet sans titre - + Independent terminals Bornes indépendante @@ -20410,7 +20443,7 @@ Les autres champs ne sont pas utilisés. Y : - + Y : @@ -20420,17 +20453,17 @@ Les autres champs ne sont pas utilisés. ° - + ° Rotation : - + Rotation : X : - + X : @@ -20522,13 +20555,13 @@ Les autres champs ne sont pas utilisés. % spinbox suffix when changing the dimension of a row/column - + % px spinbox suffix when changing the dimension of a row/column - + px @@ -20536,7 +20569,7 @@ Les autres champs ne sont pas utilisés. Form - + Form @@ -20697,7 +20730,7 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol Title block templates actions - + Title block templates actions @@ -20723,7 +20756,7 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol %1 - + %1 @@ -20747,7 +20780,7 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol Logo - + Logo @@ -21130,24 +21163,24 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol [%1px] content of the extra cell added when the total width of cells is less than the preview width - + [%1px] [%1px] content of the extra helper cell added when the total width of cells is greater than the preview width - + [%1px] %1px format displayed in rows helper cells - + %1px %1px - + %1px @@ -21486,7 +21519,7 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol Page Wiring list CSV header - + Page @@ -21626,12 +21659,12 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol Distance label - slave : - + Distance label - slave : Distance in pixels between the label and the slave cross reference - + Distance in pixels between the label and the slave cross reference @@ -21671,7 +21704,7 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol %f-%l%c - + %f-%l%c @@ -21681,7 +21714,7 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol (%f-%l%c) - + (%f-%l%c) @@ -21845,12 +21878,12 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol Source - + Source &OK - + &OK @@ -21905,12 +21938,12 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol Superscript - + Superscript Subscript - + Subscript @@ -21920,7 +21953,7 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol Insert &Image - + Insert &Image diff --git a/lang/qet_hr.ts b/lang/qet_hr.ts index 26a87c0f0..a7cc9bfc1 100644 --- a/lang/qet_hr.ts +++ b/lang/qet_hr.ts @@ -1923,7 +1923,7 @@ Continue? Diagram - + Change the depth @@ -2030,17 +2030,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2064,7 +2079,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2273,13 +2288,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2334,77 +2349,77 @@ Continue? - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Greška - + Unable to load the image. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2458,85 +2473,85 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip "Što je to?" savjet Područje u kojem ste dizajnirali shemu dodavanjem novih elemenata traži vodiče između svojih priključaka. Također možete dodati neovisan tekst. - + Paste Here context menu action Zalijepi ovdje - + Multiple paste - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + Choose the new color for this conductor Izaberi novu boju za ovaj vodič - + Edit conductor properties undo caption - + X: %1 Y: %2 - + Connect the selected terminals - + Untitled what to display for untitled diagrams - + Registered template - + The template has been successfully saved as : %1 - + Error Greška - + The file could not be written. @@ -3136,7 +3151,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3413,27 +3428,27 @@ The element's display name is edited separately in the element properties.< - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3442,95 +3457,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8337,7 +8352,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13193,7 +13208,7 @@ What do you wish to do ? QObject - + Warning: the element has been saved with a more recent version of QElectroTech. Upozorenje: Element će biti spremljen sa više trenutnih verzija QElectroTech-a. @@ -13769,7 +13784,7 @@ What do you wish to do ? - + Terminal Priključak @@ -13866,7 +13881,7 @@ the translated name of this folder could not be read, so its folder name is disp - + @@ -14259,7 +14274,7 @@ Do you want to replace it ? - + Type @@ -14267,7 +14282,7 @@ Do you want to replace it ? - + Address @@ -14275,7 +14290,7 @@ Do you want to replace it ? - + Annotation @@ -14284,7 +14299,7 @@ Do you want to replace it ? - + Cross-reference @@ -14293,7 +14308,7 @@ Do you want to replace it ? - + Function @@ -14665,7 +14680,7 @@ Do you want to replace it ? - + Sort terminal block %1 @@ -14839,7 +14854,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15071,7 +15086,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15080,7 +15095,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19448,139 +19463,144 @@ The other fields are not used. TerminalEditor - - - - + + + + T%1 - + North Sjever - + East Istok - + South Jug - + West Zapad - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Move a terminal - + Change the orientation of a terminal - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -19616,66 +19636,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : - + Y : - + Rotation : - + ° - + Alignment - + Color : Boje: - + Frame the text - + Master’s label - + Learning from the master @@ -20193,12 +20223,12 @@ The other fields are not used. TerminalStripTreeDockWidget - + Untitled project Projekt bez naslova - + Independent terminals diff --git a/lang/qet_hu.ts b/lang/qet_hu.ts index 099986a80..acbc5669b 100644 --- a/lang/qet_hu.ts +++ b/lang/qet_hu.ts @@ -1915,7 +1915,7 @@ Continue? Diagram - + Change the depth Rétegelrendezés módosítása @@ -2022,17 +2022,32 @@ Continue? Fogantyúk : - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 × 1 - + x 2 × 2 - + x 3 × 3 @@ -2056,7 +2071,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2265,13 +2280,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2326,77 +2341,77 @@ Continue? egy kép - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... Kép kiválasztása ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Hiba - + Unable to load the image. Nem lehet a fájlt betölteni. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2451,83 +2466,83 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Ez az a hely, ahol a rajzokat elemek hozzáadásával és csatlakozókhoz illesztésével tervezi meg. Lehetőséget kínál független szövegek hozzáadására is. - + Paste Here context menu action Beillesztés ide - + Multiple paste Többszörös beillesztés - + Create a template context menu action Sablon-fájl készítése - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals A kiválasztott csatlakozók összekötése - + Untitled what to display for untitled diagrams Cím nélkül - + Registered template - + The template has been successfully saved as : %1 - + Error Hiba - + The file could not be written. - + Choose the new color for this conductor Válassza ki a vezeték új színét - + Edit conductor properties undo caption Vezeték tulajdonságainak módosítása @@ -3128,7 +3143,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption Egy elem automatikus számozása @@ -3406,27 +3421,27 @@ Az elem megjelenítési nevét külön lehet szerkeszteni az elem tulajdonságok Információ - + Add a custom property Egyedi tulajdonság hozzáadása - + Potential separation Potenciál szétválasztása - + Exclude from the bill of materials Kizárás az anyagjegyzékből - + No materials list - + There is no materials list file at this location: %1 @@ -3435,95 +3450,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8371,7 +8386,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal Címke mozgatása a sorkapocshoz @@ -13460,7 +13475,7 @@ Mit szeretnél csinálni? - + Terminal sorkapocs @@ -13680,7 +13695,7 @@ Mit szeretnél csinálni? - + Warning: the element has been saved with a more recent version of QElectroTech. Figyelem: a QElectrotech sokkal régebbi verziójával lett elmentve. @@ -14188,7 +14203,7 @@ Cserélni akarod? - + Type Típus @@ -14196,7 +14211,7 @@ Cserélni akarod? - + Address Cím @@ -14204,7 +14219,7 @@ Cserélni akarod? - + Annotation Megjegyzés @@ -14213,7 +14228,7 @@ Cserélni akarod? - + Cross-reference Kereszthivatkozás @@ -14222,7 +14237,7 @@ Cserélni akarod? - + Function @@ -14594,7 +14609,7 @@ Cserélni akarod? Beilleszt - + @@ -14633,7 +14648,7 @@ Cserélni akarod? Sorkapocstömb tulajdonságaiinak módosítása - + Sort terminal block %1 Sorkapocs tömb rendezése %1 @@ -14834,7 +14849,7 @@ Please download it by following the link and unzip it in the installation folder Kérlek, töltsd le az alábbi linkről, és csomagod ki a telepítési mappába - + Automatic terminal numbering Automata sorkapocs számozás @@ -15046,14 +15061,14 @@ Kérlek, töltsd le az alábbi linkről, és csomagod ki a telepítési mappába - + Align %n objects to the grid - + Align %n items @@ -19462,139 +19477,144 @@ A többi mező nincs használva. TerminalEditor - + North Észak - + East Kelet - + South Dél - + West Nyugat - + Change the orientation of a terminal A csatlakozó tájolásának megváltoztatása - + Move a terminal Csatlakozó mozgatása - - - - + + + + T%1 T%1 - + Generic Általános - + Indoor terminal block Belső sorkapocs - + External terminal block Külső sorkapocs - + NO (contact SW) NO (érintkező SW) - + NC (contact SW) NC (érintkező SW) - + Common (contact SW) Közös (érintkező SW) - + Change the terminal name Csatlakozó név változtatása + Change the potential of a terminal + + + + Change the type of a terminal A csatlakozó típusának megváltoztatása - + Show/hide the terminal name Mutatja/elrejti a sorkapocs nevét - + Change the position of the label Címke pozíciójának változtatása - + Change the label font Címke betűtípusának változtatása - + Change the font size of the label Címke betűméretének változtatása - + Change the rotation of the label Címke elforgatásának változtatása - - + + Change the alignment of the label Címke igazításanak változtatása - + Show/hide the label border Mutatja/elrejti a címke körvonalát - - + + Change the label colour Címke színének változtatása - + Edit the master label Főelem címkéjének szerkesztése - - - + + + Change the name of the terminal Sorkapocs név változtatása - + Change the master label index Főelem címke index változtatása @@ -19630,66 +19650,76 @@ A többi mező nincs használva. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name Sorkapocs név - + Show name Név mutatása - + Text properties Szöveg tulajdonságok - + Font Betűtípus - + X : X : - + Y : Y : - + Rotation : Forgatás : - + ° ° - + Alignment Igazítás - + Color : Szín : - + Frame the text Szöveg bekeretezése - + Master’s label Főelem címkéje - + Learning from the master Tanulni a mestertől @@ -20212,12 +20242,12 @@ A többi mező nincs használva. Sorkapocs léc/tömb felkereső - + Untitled project Cím nélküli projekt - + Independent terminals Független sorkapcsok diff --git a/lang/qet_it.ts b/lang/qet_it.ts index 116a9a472..e977d0d3b 100644 --- a/lang/qet_it.ts +++ b/lang/qet_it.ts @@ -1917,7 +1917,7 @@ Continue? Diagram - + Change the depth Modificare la profondità @@ -2024,17 +2024,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2058,7 +2073,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2267,13 +2282,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2328,77 +2343,77 @@ Continue? una immagine - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... Selezionare un'immagine... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Errore - + Unable to load the image. Impossibile caricare l'immagine. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2452,84 +2467,84 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Questa è l'area in cui si progettano gli schemi con l'aggiunta di elementi, unendo i loro terminali tramite i conduttori. È anche possibile aggiungere dei testi indipendenti. - + Paste Here context menu action Incollare qui - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + Edit conductor properties undo caption Modifica le proprietà di un conduttore - + X: %1 Y: %2 - + Connect the selected terminals Collegare i morsetti selezionati - + Untitled what to display for untitled diagrams Senza titolo - + Registered template - + The template has been successfully saved as : %1 - + Error Errore - + The file could not be written. - + Multiple paste Multi-copia - + Choose the new color for this conductor Scegliere il nuovo colore di questo conduttore @@ -3129,7 +3144,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3406,27 +3421,27 @@ The element's display name is edited separately in the element properties.< Informazioni - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3435,95 +3450,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8354,7 +8369,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13215,7 +13230,7 @@ What do you wish to do ? - + Terminal Terminale @@ -13539,7 +13554,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Warning: the element has been saved with a more recent version of QElectroTech. Attenzione: l'elemento è stato salvato con una versione più recente di QElectroTech. @@ -13972,7 +13987,7 @@ La si vuole sostituire ? - + Type Tipo @@ -13980,7 +13995,7 @@ La si vuole sostituire ? - + Address @@ -13988,7 +14003,7 @@ La si vuole sostituire ? - + Annotation Commento @@ -13997,7 +14012,7 @@ La si vuole sostituire ? - + Cross-reference @@ -14006,7 +14021,7 @@ La si vuole sostituire ? - + Function @@ -14348,7 +14363,7 @@ La si vuole sostituire ? Inserire il nome della configurazione da creare - + @@ -14746,7 +14761,7 @@ La si vuole sostituire ? - + Sort terminal block %1 @@ -14832,7 +14847,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15054,7 +15069,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15062,7 +15077,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19460,139 +19475,144 @@ The other fields are not used. TerminalEditor - + East Est - + South Sud - + Generic Generico - + North Nord - - - - + + + + T%1 - + West Ovest - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Change the orientation of a terminal Modifica l'orientamento di un terminale - + Change the terminal name Cambia il nome del terminale + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index - + Move a terminal Sposta un terminale @@ -19628,66 +19648,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font Carattere - + X : X : - + Y : Y : - + Rotation : - + ° ° - + Alignment Allineamento - + Color : - + Frame the text - + Master’s label - + Learning from the master @@ -20205,12 +20235,12 @@ The other fields are not used. TerminalStripTreeDockWidget - + Untitled project Progetto senza titolo - + Independent terminals diff --git a/lang/qet_ja.ts b/lang/qet_ja.ts index 0cc86aeb5..afb4ea5b7 100644 --- a/lang/qet_ja.ts +++ b/lang/qet_ja.ts @@ -1906,7 +1906,7 @@ Continue? Diagram - + Change the depth 重なりの変更 @@ -2013,17 +2013,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2047,7 +2062,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2256,13 +2271,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2317,77 +2332,77 @@ Continue? 画像 - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... 画像を選択... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error エラー - + Unable to load the image. 画像を読み込めません。 - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2441,83 +2456,83 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip この領域に要素を追加し端子間に導体を配置することで回路図を作成します。独立したテキストを追加することもできます。 - + Paste Here context menu action ここに貼り付け - + Multiple paste 複数貼り付け - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 - + Connect the selected terminals 選択された端子を接続 - + Untitled what to display for untitled diagrams 無題 - + Registered template - + The template has been successfully saved as : %1 - + Error エラー - + The file could not be written. - + Choose the new color for this conductor この導体の新しい色を選ぶ - + Edit conductor properties undo caption 導体の属性の変更 @@ -3118,7 +3133,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3395,27 +3410,27 @@ The element's display name is edited separately in the element properties.< 情報 - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3424,95 +3439,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8345,7 +8360,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13486,7 +13501,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Terminal 端子 @@ -13626,7 +13641,7 @@ Do you want to replace it ? - + Warning: the element has been saved with a more recent version of QElectroTech. 警告: より新しいバージョンの QElectroTech で要素が保存されています. @@ -13923,7 +13938,7 @@ Do you want to replace it ? - + Type @@ -13931,7 +13946,7 @@ Do you want to replace it ? - + Address @@ -13939,7 +13954,7 @@ Do you want to replace it ? - + Annotation コメント @@ -13948,7 +13963,7 @@ Do you want to replace it ? - + Cross-reference @@ -13957,7 +13972,7 @@ Do you want to replace it ? - + Function @@ -14546,7 +14561,7 @@ Do you want to replace it ? 貼り付け - + @@ -14585,7 +14600,7 @@ Do you want to replace it ? - + Sort terminal block %1 @@ -14782,7 +14797,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -14994,14 +15009,14 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid - + Align %n items @@ -19392,139 +19407,144 @@ The other fields are not used. TerminalEditor - + North 北 - + East 東 - + South 南 - + West 西 - + Change the orientation of a terminal 端子の向きを変更 - + Move a terminal 端子を移動 - - - - + + + + T%1 - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -19560,66 +19580,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font フォント - + X : - + Y : - + Rotation : 回転 : - + ° - + Alignment 文字揃え - + Color : 色 : - + Frame the text - + Master’s label - + Learning from the master @@ -20142,12 +20172,12 @@ The other fields are not used. - + Untitled project 無題のプロジェクト - + Independent terminals diff --git a/lang/qet_ko.ts b/lang/qet_ko.ts index 6e6f3c520..3a29f2549 100644 --- a/lang/qet_ko.ts +++ b/lang/qet_ko.ts @@ -1906,7 +1906,7 @@ Continue? Diagram - + Change the depth 앞뒤 순서 변경 @@ -2013,17 +2013,32 @@ Continue? 핸들 : - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2047,7 +2062,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2256,13 +2271,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2317,77 +2332,77 @@ Continue? 이미지 - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... 이미지 선택... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error 오류 - + Unable to load the image. 이미지를 불러올 수 없습니다. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2441,83 +2456,83 @@ Hold Shift and drag to move this text on its own DiagramView - + Paste Here context menu action 여기에 붙여넣기 - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip 이 영역에서 요소를 추가하고 단자 사이에 도선을 연결하여 회로도를 작성합니다. 또한 독립 텍스트를 추가할 수도 있습니다. - + Multiple paste 여러 항목 붙여넣기 - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals 선택한 단자 연결 - + Untitled what to display for untitled diagrams 제목 없음 - + Registered template - + The template has been successfully saved as : %1 - + Error 오류 - + The file could not be written. - + Choose the new color for this conductor 이 도선의 새 색상 선택 - + Edit conductor properties undo caption 도선 속성 수정 @@ -3118,7 +3133,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3395,27 +3410,27 @@ The element's display name is edited separately in the element properties.< 정보 - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3424,95 +3439,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8319,7 +8334,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13120,7 +13135,7 @@ What do you wish to do ? - + Warning: the element has been saved with a more recent version of QElectroTech. 경고: 이 요소는 더 최신 버전의 QElectroTech에서 저장되었습니다. @@ -13710,7 +13725,7 @@ What do you wish to do ? - + Terminal 단자 @@ -14085,7 +14100,7 @@ Do you want to replace it ? - + Type @@ -14093,7 +14108,7 @@ Do you want to replace it ? - + Address @@ -14101,7 +14116,7 @@ Do you want to replace it ? - + Annotation 주석 @@ -14110,7 +14125,7 @@ Do you want to replace it ? - + Cross-reference @@ -14119,7 +14134,7 @@ Do you want to replace it ? - + Function @@ -14516,7 +14531,7 @@ Do you want to replace it ? 단자대 그룹 속성 수정 - + Sort terminal block %1 단자대 %1 정렬 @@ -14637,7 +14652,7 @@ Do you want to replace it ? 기본 배치 - + @@ -14727,7 +14742,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -14939,14 +14954,14 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid - + Align %n items @@ -19296,139 +19311,144 @@ The other fields are not used. TerminalEditor - + North 북 - + East 동 - + South 남 - + West 서 - + Change the orientation of a terminal 단자 방향 변경 - + Move a terminal 단자 이동 - - - - + + + + T%1 - + Generic 일반 - + Indoor terminal block 내부 단자대 - + External terminal block 외부 단자대 - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Change the terminal name 단자 이름 변경 + Change the potential of a terminal + + + + Change the type of a terminal 단자 유형 변경 - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -19464,66 +19484,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font 글꼴 - + X : X : - + Y : Y : - + Rotation : 회전 : - + ° ° - + Alignment 정렬 - + Color : - + Frame the text 텍스트에 테두리 적용 - + Master’s label - + Learning from the master @@ -20046,12 +20076,12 @@ The other fields are not used. 단자대 탐색기 - + Untitled project 제목 없는 프로젝트 - + Independent terminals 독립 단자 diff --git a/lang/qet_mn.ts b/lang/qet_mn.ts index c32663737..c58fdcc55 100644 --- a/lang/qet_mn.ts +++ b/lang/qet_mn.ts @@ -1919,7 +1919,7 @@ Continue? Diagram - + Change the depth Гүнийг өөрчлөх @@ -2026,17 +2026,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2060,7 +2075,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2269,13 +2284,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2330,77 +2345,77 @@ Continue? дүрслэл - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Алдаа - + Unable to load the image. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2454,83 +2469,83 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Энэ талбайд та өөрийн схемээ холболтуудын хооронд элемент ба дамжуулагчийг нэмж байгуулна. Та мөн бие даасан текстүүд нэмж болно. - + Paste Here context menu action Энд хуулна уу. - + Multiple paste Олон хуулж тавих - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 - + Connect the selected terminals Сонгогдсон оролт гаралтуудыг холбох - + Untitled what to display for untitled diagrams Гарчиггүй - + Registered template - + The template has been successfully saved as : %1 - + Error Алдаа - + The file could not be written. - + Choose the new color for this conductor Чиглүүлэгч шугамын хувьд шинэ өнгө сонгох - + Edit conductor properties undo caption Дамжуулагчийн бүтцийг өөрчлөх @@ -3131,7 +3146,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3408,27 +3423,27 @@ The element's display name is edited separately in the element properties.< Мэдээлэл - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3437,95 +3452,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8339,7 +8354,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13508,7 +13523,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Terminal Холболт @@ -13648,7 +13663,7 @@ Do you want to replace it ? - + Warning: the element has been saved with a more recent version of QElectroTech. @@ -13701,7 +13716,7 @@ Do you want to replace it ? - + Type @@ -13709,7 +13724,7 @@ Do you want to replace it ? - + Address @@ -13717,7 +13732,7 @@ Do you want to replace it ? - + Annotation Тэсдэглэгээ @@ -13726,7 +13741,7 @@ Do you want to replace it ? - + Cross-reference @@ -13865,7 +13880,7 @@ Do you want to replace it ? - + Function @@ -14558,7 +14573,7 @@ Do you want to replace it ? - + @@ -14602,7 +14617,7 @@ Do you want to replace it ? - + Sort terminal block %1 @@ -14799,7 +14814,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15021,7 +15036,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15029,7 +15044,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19421,139 +19436,144 @@ The other fields are not used. TerminalEditor - + North Хойд зүг - + East Зүүн зүг - + South Өмнө зүг - + West Баруун зүг - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index - + Change the orientation of a terminal Холболтын чигийг өөрчлөх - - - - + + + + T%1 - + Move a terminal Холболтыг зөөх @@ -19589,66 +19609,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : X : - + Y : Y : - + Rotation : Эргэлт : - + ° ° - + Alignment Эгнээ - + Color : - + Frame the text - + Master’s label - + Learning from the master @@ -20171,12 +20201,12 @@ The other fields are not used. - + Untitled project Нэргүй төсөл - + Independent terminals diff --git a/lang/qet_nb.ts b/lang/qet_nb.ts index 0b0fc7da6..5b7e3c2e6 100644 --- a/lang/qet_nb.ts +++ b/lang/qet_nb.ts @@ -1920,7 +1920,7 @@ Continue? Diagram - + Change the depth Endre nivå av utvalget @@ -2027,17 +2027,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2061,7 +2076,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2270,13 +2285,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2331,77 +2346,77 @@ Continue? ett bilde - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... Velg et bilde - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error - + Unable to load the image. Kunne ikke laste bildet - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2455,83 +2470,83 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Skjemaet lages i dette området - + Paste Here context menu action Lim inn her - + Multiple paste Lim inn flere ganger - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 - + Connect the selected terminals Koble utvalgte kontakter - + Untitled what to display for untitled diagrams Ingen tittel - + Registered template - + The template has been successfully saved as : %1 - + Error - + The file could not be written. - + Choose the new color for this conductor Velg ny lederfarge - + Edit conductor properties undo caption Endre lederegenskaper @@ -3132,7 +3147,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3409,27 +3424,27 @@ The element's display name is edited separately in the element properties.< Informasjoner - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3438,95 +3453,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8355,7 +8370,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13533,7 +13548,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Terminal Koblingspunkt @@ -13674,7 +13689,7 @@ Vil du erstatte den? - + Warning: the element has been saved with a more recent version of QElectroTech. Advarsel: Komponenten ble lagret med en nyere versjon av QElectroTech. @@ -13953,7 +13968,7 @@ Vil du erstatte den? - + Type Type @@ -13961,7 +13976,7 @@ Vil du erstatte den? - + Address @@ -13969,7 +13984,7 @@ Vil du erstatte den? - + Annotation Kommentar @@ -13978,7 +13993,7 @@ Vil du erstatte den? - + Cross-reference @@ -13987,7 +14002,7 @@ Vil du erstatte den? - + Function @@ -14589,7 +14604,7 @@ Vil du erstatte den? - + @@ -14628,7 +14643,7 @@ Vil du erstatte den? - + Sort terminal block %1 @@ -14825,7 +14840,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15047,7 +15062,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15055,7 +15070,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19450,139 +19465,144 @@ The other fields are not used. TerminalEditor - + North Nord - + East Øst - + South Sør - + West Vest - + Change the orientation of a terminal Endre retning av en tilkoblingspunkt - + Move a terminal Flytt/Skyv en tilkoblingspunkt - - - - + + + + T%1 - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -19618,66 +19638,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font Skrifttype - + X : - + Y : - + Rotation : - + ° ° - + Alignment - + Color : - + Frame the text - + Master’s label - + Learning from the master @@ -20200,12 +20230,12 @@ The other fields are not used. - + Untitled project Prosjekt uten tittel - + Independent terminals diff --git a/lang/qet_nl.ts b/lang/qet_nl.ts index 80973df72..383d1443b 100644 --- a/lang/qet_nl.ts +++ b/lang/qet_nl.ts @@ -1917,7 +1917,7 @@ Continue? Diagram - + Change the depth Laagdiepte wijzigen @@ -2024,17 +2024,32 @@ Continue? Grepen: - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2058,7 +2073,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2267,13 +2282,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2328,77 +2343,77 @@ Continue? een afbeelding - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... Selecteer een afbeelding... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Fout - + Unable to load the image. Kan afbeelding niet laden. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2452,83 +2467,83 @@ Hold Shift and drag to move this text on its own DiagramView - + Paste Here context menu action Hier plakken - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip In dit gebied kunnen schema's worden gemaakt door het toevoegen van elementen en deze d.m.v. geleiders met elkaar te verbinden. Tevens kunnen hier losse teksten worden geplaatst. - + Multiple paste Meervoudig plakken - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Geselecteerde klemmen verbinden - + Untitled what to display for untitled diagrams Naamloos - + Registered template - + The template has been successfully saved as : %1 - + Error Fout - + The file could not be written. - + Choose the new color for this conductor Kies de nieuwe kleur voor deze geleider - + Edit conductor properties undo caption Eigenschappen van een geleider wijzigen @@ -3129,7 +3144,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3406,27 +3421,27 @@ The element's display name is edited separately in the element properties.< Informatie - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3435,95 +3450,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8356,7 +8371,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13222,7 +13237,7 @@ Document toch openen? - + Warning: the element has been saved with a more recent version of QElectroTech. Waarschuwing: het element is opgeslagen met een nieuwere versie van QElectroTech. @@ -13822,7 +13837,7 @@ Document toch openen? - + Terminal Aansluiting @@ -14202,7 +14217,7 @@ Moet deze worden vervangen ? - + Type Type @@ -14210,7 +14225,7 @@ Moet deze worden vervangen ? - + Address @@ -14218,7 +14233,7 @@ Moet deze worden vervangen ? - + Annotation Commentaar @@ -14227,7 +14242,7 @@ Moet deze worden vervangen ? - + Cross-reference @@ -14236,7 +14251,7 @@ Moet deze worden vervangen ? - + Function @@ -14608,7 +14623,7 @@ Moet deze worden vervangen ? Plakken - + @@ -14647,7 +14662,7 @@ Moet deze worden vervangen ? Eigenschappen van een klemmengroep wijzigen - + Sort terminal block %1 Kies klem %1 @@ -14880,7 +14895,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15066,7 +15081,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15074,7 +15089,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19473,139 +19488,144 @@ The other fields are not used. TerminalEditor - + North Noord (N) - + East Oost (E) - + South Zuid (S) - + West West (O) - + Change the orientation of a terminal Oriëntatie van een aansluitklem wijzigen - + Move a terminal Aansluitklem verplaatsen - - - - + + + + T%1 - + Generic Algemeen - + Indoor terminal block Interne aansluitklem - + External terminal block Externe aansluitklem - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Change the terminal name Naam van de aansluitklem wijzigen + Change the potential of a terminal + + + + Change the type of a terminal Type aansluitklem wijzigen - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -19641,66 +19661,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font Lettertype - + X : X : - + Y : Y : - + Rotation : - + ° ° - + Alignment Uitlijning - + Color : Kleur : - + Frame the text Tekst omkaderen - + Master’s label - + Learning from the master @@ -20223,12 +20253,12 @@ The other fields are not used. Klemmenverkenner - + Untitled project Naamloos project - + Independent terminals Losse klemmen diff --git a/lang/qet_nl_BE.ts b/lang/qet_nl_BE.ts index 67a73d3e8..0c400fe49 100644 --- a/lang/qet_nl_BE.ts +++ b/lang/qet_nl_BE.ts @@ -1918,7 +1918,7 @@ Continue? Diagram - + Change the depth Diepte aanpassen @@ -2025,17 +2025,32 @@ Continue? Handgrepen: - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2059,7 +2074,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2268,13 +2283,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2329,77 +2344,77 @@ Continue? een afbeelding - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... Selecteer een afbeelding... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Fout - + Unable to load the image. Onmogelijk om de afbeelding op te halen. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2454,84 +2469,84 @@ Hold Shift and drag to move this text on its own DiagramView - + Paste Here context menu action Hier plakken - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip In dit gebied kan je tekeningen maken door toevoeging van elementen, geleiders, teksten en grafische afbeeldingen. - + Multiple paste Meermaals plakken - + Create a template context menu action Een sjabloon maken - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Verbind de geselecteerde aansluitklemmen - + Untitled what to display for untitled diagrams Naamloos - + Registered template Model geregistreerd - + The template has been successfully saved as : %1 Het model is succesvol geregistreerd onder: %1 - + Error Fout - + The file could not be written. Het bestand kon niet worden geschreven. - + Choose the new color for this conductor Kies een nieuwe kleur voor de geleider - + Edit conductor properties undo caption Wijzig de eigenschappen van een geleider @@ -3132,7 +3147,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption Een element automatisch nummeren @@ -3410,27 +3425,27 @@ De weergavenaam van het element kan afzonderlijk worden gewijzigd in de eigensch Informatie - + Add a custom property Voeg een aangepaste eigenschap toe - + Potential separation Potentiële scheiding - + Exclude from the bill of materials Uitsluiten van de nomenclatuur - + No materials list - + There is no materials list file at this location: %1 @@ -3439,95 +3454,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8391,7 +8406,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal Verplaats het label van een klem @@ -13271,7 +13286,7 @@ Wat wil je doen? - + Warning: the element has been saved with a more recent version of QElectroTech. Waarschuwing: het element is bewaard in een nieuwere versie van QElectroTech. @@ -13872,7 +13887,7 @@ Wat wil je doen? - + Terminal Klem @@ -14252,7 +14267,7 @@ Wilt u deze vervangen? - + Type Type @@ -14260,7 +14275,7 @@ Wilt u deze vervangen? - + Address Adres @@ -14268,7 +14283,7 @@ Wilt u deze vervangen? - + Annotation Commentaar @@ -14277,7 +14292,7 @@ Wilt u deze vervangen? - + Cross-reference Kruis verwijzing @@ -14286,7 +14301,7 @@ Wilt u deze vervangen? - + Function @@ -14658,7 +14673,7 @@ Wilt u deze vervangen? Plakken - + @@ -14809,7 +14824,7 @@ Wilt u deze vervangen? De eigenschappen van een klemmen groep bewerken - + Sort terminal block %1 Sorteer terminal %1 @@ -14899,7 +14914,7 @@ Please download it by following the link and unzip it in the installation folder Download deze door de onderstaande link te volgen en pak het uit in de installatiemap - + Automatic terminal numbering Autmatische klem nummering @@ -15121,7 +15136,7 @@ Download deze door de onderstaande link te volgen en pak het uit in de installat - + Align %n objects to the grid @@ -15129,7 +15144,7 @@ Download deze door de onderstaande link te volgen en pak het uit in de installat - + Align %n items @@ -19544,139 +19559,144 @@ De overige velden worden niet gebruikt. TerminalEditor - + North Noord (N) - + East Oost(E) - + South Zuid(S) - + West West(O) - + Generic Algemeen - + Indoor terminal block Interne klem - + External terminal block Externe klem - + NO (contact SW) NO (contact SW) - + NC (contact SW) NC (contact SW) - + Common (contact SW) Algemeen (SW-contact) - + Change the orientation of a terminal Verander de orientatie van een klem + Change the potential of a terminal + + + + Change the type of a terminal Wijzig het type klem - + Show/hide the terminal name Klem lnaam weergeven/verbergen - + Change the position of the label Wijzig de positie van het label - + Change the label font Wijzig het letter type van het label - + Change the font size of the label Wijzig de letter grootte van het label - + Change the rotation of the label Wijzig de label rotatie - - + + Change the alignment of the label Wijzig de uitlijning van het label - + Show/hide the label border Het labelkader weergeven/verbergen - - + + Change the label colour Wijzig de kleur van het label - + Edit the master label Bewerk het label van de hoofdindex - - - + + + Change the name of the terminal Wijzig de klem naam - + Change the master label index Bewerk de hoofdindex van labels - + Move a terminal Verplaats een klem - - - - + + + + T%1 T%1 - + Change the terminal name Verander de naam van de klem @@ -19712,66 +19732,76 @@ De overige velden worden niet gebruikt. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name Klem naam - + Show name Naam weergeven - + Text properties Teksteigenschappen - + Font Lettertype - + X : X : - + Y : Y : - + Rotation : Rotatie: - + ° ° - + Alignment Uitlijning - + Color : Kleur: - + Frame the text Zet kader rond de tekst - + Master’s label Label master index - + Learning from the master Herneem de master index @@ -20289,12 +20319,12 @@ De overige velden worden niet gebruikt. TerminalStripTreeDockWidget - + Untitled project Naamloos project - + Independent terminals Onafhankelijke klemmen diff --git a/lang/qet_nl_NL.ts b/lang/qet_nl_NL.ts index b1fdd8083..aaaa4bc44 100644 --- a/lang/qet_nl_NL.ts +++ b/lang/qet_nl_NL.ts @@ -1912,7 +1912,7 @@ Continue? Diagram - + Change the depth @@ -2019,17 +2019,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2053,7 +2068,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2262,13 +2277,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2323,77 +2338,77 @@ Continue? - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error - + Unable to load the image. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2447,84 +2462,84 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip - + Paste Here context menu action - + Multiple paste - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + Choose the new color for this conductor - + Edit conductor properties undo caption - + X: %1 Y: %2 - + Connect the selected terminals - + Untitled what to display for untitled diagrams - + Registered template - + The template has been successfully saved as : %1 - + Error - + The file could not be written. @@ -3124,7 +3139,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3401,27 +3416,27 @@ The element's display name is edited separately in the element properties.< - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3430,95 +3445,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8320,7 +8335,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13140,7 +13155,7 @@ What do you wish to do ? - + @@ -13255,7 +13270,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Sort terminal block %1 @@ -13524,7 +13539,7 @@ Please download it by following the link and unzip it in the installation folder - + Terminal @@ -13669,7 +13684,7 @@ Do you want to replace it ? - + Warning: the element has been saved with a more recent version of QElectroTech. @@ -14143,7 +14158,7 @@ Please download it from the link below and unzip it into the installation folder - + Type @@ -14151,7 +14166,7 @@ Please download it from the link below and unzip it into the installation folder - + Address @@ -14159,7 +14174,7 @@ Please download it from the link below and unzip it into the installation folder - + Annotation @@ -14168,7 +14183,7 @@ Please download it from the link below and unzip it into the installation folder - + Cross-reference @@ -14177,7 +14192,7 @@ Please download it from the link below and unzip it into the installation folder - + Function @@ -14763,7 +14778,7 @@ Please download it from the link below and unzip it into the installation folder - + Automatic terminal numbering @@ -15119,7 +15134,7 @@ To enable it: Configure QElectroTech > General > Projects, or set the QET_ - + Align %n objects to the grid @@ -15127,7 +15142,7 @@ To enable it: Configure QElectroTech > General > Projects, or set the QET_ - + Align %n items @@ -19389,203 +19404,218 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : - + Y : - + Rotation : - + ° - + Alignment - + Color : - + Frame the text - + Master’s label - + Learning from the master - - - - + + + + T%1 - + North - + East - + South - + West - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Move a terminal - + Change the orientation of a terminal - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -20108,12 +20138,12 @@ The other fields are not used. - + Untitled project - + Independent terminals diff --git a/lang/qet_no.ts b/lang/qet_no.ts index c1baea705..763719586 100644 --- a/lang/qet_no.ts +++ b/lang/qet_no.ts @@ -1912,7 +1912,7 @@ Continue? Diagram - + Change the depth @@ -2019,17 +2019,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2053,7 +2068,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2262,13 +2277,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2323,77 +2338,77 @@ Continue? - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error - + Unable to load the image. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2447,84 +2462,84 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip - + Paste Here context menu action - + Multiple paste - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + Edit conductor properties undo caption - + X: %1 Y: %2 - + Connect the selected terminals - + Untitled what to display for untitled diagrams - + Registered template - + The template has been successfully saved as : %1 - + Error - + The file could not be written. - + Choose the new color for this conductor @@ -3124,7 +3139,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3401,27 +3416,27 @@ The element's display name is edited separately in the element properties.< - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3430,95 +3445,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8320,7 +8335,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13514,7 +13529,7 @@ What do you wish to do ? - + Type @@ -13522,7 +13537,7 @@ What do you wish to do ? - + Address @@ -13530,7 +13545,7 @@ What do you wish to do ? - + Annotation @@ -13539,7 +13554,7 @@ What do you wish to do ? - + Cross-reference @@ -13548,7 +13563,7 @@ What do you wish to do ? - + Function @@ -13864,7 +13879,7 @@ What do you wish to do ? - + Terminal @@ -14092,7 +14107,7 @@ What do you wish to do ? - + Warning: the element has been saved with a more recent version of QElectroTech. @@ -14283,7 +14298,7 @@ What do you wish to do ? - + @@ -14601,7 +14616,7 @@ Do you want to replace it ? - + Sort terminal block %1 @@ -14805,7 +14820,7 @@ Please download it from the link below and unzip it into the installation folder - + Automatic terminal numbering @@ -14991,7 +15006,7 @@ Please download it from the link below and unzip it into the installation folder - + Align %n objects to the grid @@ -14999,7 +15014,7 @@ Please download it from the link below and unzip it into the installation folder - + Align %n items @@ -19358,139 +19373,144 @@ The other fields are not used. TerminalEditor - - - - + + + + T%1 - + North - + East - + South - + West - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Move a terminal - + Change the orientation of a terminal - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -19526,66 +19546,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : - + Y : - + Rotation : - + ° - + Alignment - + Color : - + Frame the text - + Master’s label - + Learning from the master @@ -20108,12 +20138,12 @@ The other fields are not used. - + Untitled project - + Independent terminals diff --git a/lang/qet_pl.ts b/lang/qet_pl.ts index 197d7a37a..744f54614 100644 --- a/lang/qet_pl.ts +++ b/lang/qet_pl.ts @@ -1939,7 +1939,7 @@ Kontynuować? Diagram - + Change the depth Zmiana głębokości @@ -2046,17 +2046,32 @@ Kontynuować? Uchwyty: - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2080,7 +2095,7 @@ Kontynuować? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste Kliknij, aby umieścić wklejane obiekty, Esc lub prawy przycisk, aby anulować @@ -2292,13 +2307,13 @@ Kontynuować? - + Save image as... Zapisz obraz jako... - + Save original image as... Zapisz oryginalny obraz jako... @@ -2353,79 +2368,79 @@ Kontynuować? obraz - + Replace the image... niepewne Zastąp obraz... - + Transparent color... Kolor przezroczysty... - + Crop... niepewne Przytnij... - + Horizontal mirror Odbij poziomo - + Vertical mirror Odbij pionowo - + Restore proportions Przywróć właściwości - + Select an image ... Wybierz obraz... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) Pliki obrazów (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Błąd - + Unable to load the image. Nie można załadować obrazu. - + Replace an image Zastąp obraz - + Horizontal mirror of an image Odbicie poziome obrazu - + Vertical mirror of an image Odbicie pionowe obrazu - + Set a transparent color Ustaw kolor przezroczysty - + Crop an image Przytnij obraz @@ -2480,64 +2495,64 @@ Hold Shift and drag to move this text on its own DiagramView - + Paste Here context menu action Wklej tutaj - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Obszar do tworzenia schematów, poprzez wstawienie elementów i przyłączenie przewodów. Możliwe jest również niezależne wstawianie tekstów. - + Multiple paste niepewne Kopiuj wielokrotnie - + Create a template context menu action Utwórz szablon - + Make a cabinet thumbnail context menu action Generuj miniaturę szafy - + Sheet reference Odsyłacz arkusza - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Połącz wybrane zaciski - + Untitled what to display for untitled diagrams Bez tytułu - + Registered template niepewne Zapisz szablon - + The template has been successfully saved as : %1 niepewne @@ -2545,22 +2560,22 @@ Hold Shift and drag to move this text on its own %1 - + Error Błąd - + The file could not be written. Nie można zapisać pliku. - + Choose the new color for this conductor Wybierz nowy kolor przewodu - + Edit conductor properties undo caption zmiana właściwości przewodu @@ -3163,7 +3178,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption niepewne @@ -3443,27 +3458,27 @@ Nazwę wyświetlaną elementu można zmienić osobno we właściwościach elemen Informacje - + Add a custom property Dodawanie właściwości niestandardowej - + Potential separation Separacja potencjałów - + Exclude from the bill of materials Wyklucz ze spisu elementów - + No materials list Brak listy materiałów - + There is no materials list file at this location: %1 @@ -3475,12 +3490,12 @@ Create it? Utworzyć go? - + Cannot create Nie można utworzyć - + Cannot create the file: %1 %2 @@ -3489,83 +3504,83 @@ Utworzyć go? %2 - + Automatic numbering Automatyczna numeracja - + … … - + Open the project's element numberings Otwórz numeracje elementów projektu - + Freeze name Zablokuj nazwę - + A frozen name is not changed by automatic numbering, and its number is not given to another element. Zablokowana nazwa nie jest zmieniana przez automatyczną numerację, a jej numer nie jest przydzielany innemu elementowi. - + Number Numer - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. Proponowane są tylko wolne numery: element, który ma zachować swój rzeczywisty numer, może go odzyskać, jeśli nikt go nie ma. - + %1 (current) %1 (bieżący) - + — (unknown number) — (numer nieznany) - + %1 → %2 %1 → %2 - + The name is frozen: unfreeze it to change its number. Nazwa jest zablokowana: odblokuj ją, aby zmienić numer. - + The number can be chosen when the element keeps its numbering. Numer można wybrać, gdy element zachowuje swoją numerację. - + None (name entered by hand) Brak (nazwa wpisana ręcznie) - + Custom formula: %1 Własna formuła: %1 - + Frozen name Zablokowana nazwa - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8482,7 +8497,7 @@ Czy mimo to chcesz powiązać ten zestyk podrzędny? PartTerminal - + Move the label to a terminal Przesunięcie etykiety zacisku @@ -13430,7 +13445,7 @@ Co chcesz zrobić? - + Warning: the element has been saved with a more recent version of QElectroTech. Uwaga: element został zapisany w nowszej wersji QElectroTech. @@ -14040,7 +14055,7 @@ Co chcesz zrobić? - + Terminal Zacisk @@ -14418,7 +14433,7 @@ Czy chcesz ją zastąpić? - + Type Typ @@ -14426,7 +14441,7 @@ Czy chcesz ją zastąpić? - + Address Adres @@ -14434,7 +14449,7 @@ Czy chcesz ją zastąpić? - + Annotation Komentarz @@ -14443,7 +14458,7 @@ Czy chcesz ją zastąpić? - + Cross-reference Odsyłacz @@ -14452,7 +14467,7 @@ Czy chcesz ją zastąpić? - + Function @@ -14859,7 +14874,7 @@ Czy chcesz ją zastąpić? Sklej - + @@ -14898,7 +14913,7 @@ Czy chcesz ją zastąpić? Zmiana właściwości listwy zacikowej - + Sort terminal block %1 Sortuj listwę zaciskową %1 @@ -15107,7 +15122,7 @@ Please download it by following the link and unzip it in the installation folder Pobierz go, klikając poniższy link i rozpakuj w folderze instalacyjnym - + Automatic terminal numbering Automatyczne numerowanie zacisków @@ -15340,7 +15355,7 @@ Nie można wyrenderować strony PDF. - + Align %n objects to the grid Wyrównanie %n obiektu do siatki @@ -15349,7 +15364,7 @@ Nie można wyrenderować strony PDF. - + Align %n items Wyrównanie %n obiektu @@ -19794,140 +19809,145 @@ Pozostałe pola nie są używane. TerminalEditor - + North Północ - + East Wschód - + South Południe - + West Zachód - + Change the orientation of a terminal Zmiana orientacji terminala - + Move a terminal Przesunięcie zacisku - - - - + + + + T%1 T%1 - + Generic Ogólne - + Indoor terminal block Listwa zaciskowa wewnętrzna - + External terminal block Listwa zaciskowa zewnętrzna - + NO (contact SW) NO (zestyk zwierny) - + NC (contact SW) NC (zestyk rozwierny) - + Common (contact SW) niepewne (zestyk wspólny) CO (zestyk przełączny) - + Change the terminal name Zmień nazwę terminala + Change the potential of a terminal + + + + Change the type of a terminal Zmiana typu zacisku - + Show/hide the terminal name Pokaż/ukryj nazwę terminala - + Change the position of the label Zmiana położenia etykiety - + Change the label font Zmiana czcionki etykiety - + Change the font size of the label Zmiana rozmiatu czcionki etykiety - + Change the rotation of the label Zmiana obrotu etykiety - - + + Change the alignment of the label Zmiana wyrównania etykiety - + Show/hide the label border Pokaż/ukryj obramowanie etykiety - - + + Change the label colour Zmiana koloru etykiety - + Edit the master label Modyfikuj etykietę elementu nadrzędnego - - - + + + Change the name of the terminal Zmień nazwę zacisku - + Change the master label index Zmień indeks etykiety elementu nadrzędnego @@ -19963,66 +19983,76 @@ Pozostałe pola nie są używane. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name Nazwa zacisku - + Show name Pokaż nazwę - + Text properties Właściwości tekstu - + Font Czcionka - + X : X: - + Y : Y: - + Rotation : Obrót: - + ° ° - + Alignment Wyrównanie - + Color : Kolor: - + Frame the text Obramowanie tekstu - + Master’s label Etykieta elementu nadrzędnego - + Learning from the master Pobierz z elementu nadrzędnego @@ -20550,12 +20580,12 @@ Pozostałe pola nie są używane. Eksplorator listwy zaciskowej - + Untitled project Projekt bez tytułu - + Independent terminals Zaciski niezależne diff --git a/lang/qet_pt.ts b/lang/qet_pt.ts index 204535a0a..112e576ca 100644 --- a/lang/qet_pt.ts +++ b/lang/qet_pt.ts @@ -1923,7 +1923,7 @@ Continue? Diagram - + Change the depth @@ -2036,17 +2036,32 @@ form - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2070,7 +2085,7 @@ form DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2279,13 +2294,13 @@ form - + Save image as... - + Save original image as... @@ -2340,77 +2355,77 @@ form - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Erro - + Unable to load the image. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2464,84 +2479,84 @@ Hold Shift and drag to move this text on its own DiagramView - + Paste Here context menu action Colar aqui - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Esta é a área onde cria os seus esquemas, colocando elementos e coloca os condutores ligados aos bornes. Nesta área também pode adicionar texto. - + Multiple paste - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + Choose the new color for this conductor Escolher a nova cor do condutor - + Edit conductor properties undo caption - + X: %1 Y: %2 - + Connect the selected terminals - + Untitled what to display for untitled diagrams - + Registered template - + The template has been successfully saved as : %1 - + Error Erro - + The file could not be written. @@ -3147,7 +3162,7 @@ form Element - + Automatically number an element undo caption @@ -3430,27 +3445,27 @@ form Informações - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3459,95 +3474,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8392,7 +8407,7 @@ form PartTerminal - + Move the label to a terminal @@ -13243,7 +13258,7 @@ What do you wish to do ? - + Warning: the element has been saved with a more recent version of QElectroTech. Aviso: o elemento foi guardado usando uma versão mais recente de QElectroTech. @@ -13794,7 +13809,7 @@ What do you wish to do ? - + Terminal Terminal @@ -13900,7 +13915,7 @@ the translated name of this folder could not be read, so its folder name is disp - + @@ -14282,7 +14297,7 @@ Do you want to replace it ? - + Type @@ -14290,7 +14305,7 @@ Do you want to replace it ? - + Address @@ -14298,7 +14313,7 @@ Do you want to replace it ? - + Annotation @@ -14307,7 +14322,7 @@ Do you want to replace it ? - + Cross-reference @@ -14316,7 +14331,7 @@ Do you want to replace it ? - + Function @@ -14688,7 +14703,7 @@ Do you want to replace it ? - + Sort terminal block %1 @@ -14862,7 +14877,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15084,7 +15099,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15092,7 +15107,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19469,139 +19484,144 @@ form TerminalEditor - - - - + + + + T%1 - + North Norte - + East Este - + South Sul - + West Oeste - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Move a terminal - + Change the orientation of a terminal - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -19640,66 +19660,76 @@ form + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : - + Y : - + Rotation : - + ° - + Alignment - + Color : Côr: - + Frame the text - + Master’s label - + Learning from the master @@ -20223,12 +20253,12 @@ form TerminalStripTreeDockWidget - + Untitled project Projecto sem título - + Independent terminals diff --git a/lang/qet_pt_BR.ts b/lang/qet_pt_BR.ts index 2aadef82a..586507fc5 100644 --- a/lang/qet_pt_BR.ts +++ b/lang/qet_pt_BR.ts @@ -1924,7 +1924,7 @@ Continuar? Diagram - + Change the depth Modificar a profundidade @@ -2031,17 +2031,32 @@ Continuar? Alças: - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2065,7 +2080,7 @@ Continuar? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste Clique para posicionar a colagem, Esc ou clique direito para cancelar @@ -2274,13 +2289,13 @@ Continuar? - + Save image as... Salvar a imagem como... - + Save original image as... Salvar a imagem original como... @@ -2335,77 +2350,77 @@ Continuar? uma imagem - + Replace the image... Substituir a imagem... - + Transparent color... Cor transparente... - + Crop... Recortar... - + Horizontal mirror Espelhar horizontalmente - + Vertical mirror Espelhar verticalmente - + Restore proportions Restaurar proporções - + Select an image ... Selecione uma imagem... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) Arquivos de imagem (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Erro - + Unable to load the image. Não é possível carregar a imagem. - + Replace an image Substituir uma imagem - + Horizontal mirror of an image Espelhamento horizontal de uma imagem - + Vertical mirror of an image Espelhamento vertical de uma imagem - + Set a transparent color Definir uma cor transparente - + Crop an image Recortar uma imagem @@ -2460,84 +2475,84 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Esta é a área na qual criamos os esquemas, inserindo componentes e interconectando os seus terminais. Também podemos inserir textos diversos. - + Paste Here context menu action Colar aqui - + Multiple paste Colagem múltipla - + Create a template context menu action Criar um modelo - + Make a cabinet thumbnail context menu action Gerar uma miniatura do painel - + Sheet reference Referência de página - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Conectar os terminais selecionados - + Untitled what to display for untitled diagrams Sem título - + Registered template Modelo salvo - + The template has been successfully saved as : %1 O modelo foi salvo com sucesso em: %1 - + Error Erro - + The file could not be written. Não foi possível gravar o arquivo. - + Choose the new color for this conductor Escolha a nova cor do condutor - + Edit conductor properties undo caption Editar as propriedades de um condutor @@ -3138,7 +3153,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption Numerar automaticamente um elemento @@ -3416,27 +3431,27 @@ O nome exibido do elemento é alterado separadamente nas propriedades do element Informações - + Add a custom property Adicionar uma propriedade personalizada - + Potential separation Separação de potencial - + Exclude from the bill of materials Excluir da nomenclatura - + No materials list Lista de materiais ausente - + There is no materials list file at this location: %1 @@ -3448,12 +3463,12 @@ Create it? Criá-lo? - + Cannot create Não foi possível criar - + Cannot create the file: %1 %2 @@ -3462,83 +3477,83 @@ Criá-lo? %2 - + Automatic numbering Numeração automática - + … … - + Open the project's element numberings Abrir as numerações de elementos do projeto - + Freeze name Congelar o nome - + A frozen name is not changed by automatic numbering, and its number is not given to another element. Um nome congelado não é alterado pela numeração automática, e seu número não é dado a outro elemento. - + Number Número - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. Somente números livres são oferecidos: um elemento que deve manter seu número real pode recuperá-lo se ninguém o tiver. - + %1 (current) %1 (atual) - + — (unknown number) — (número desconhecido) - + %1 → %2 %1 → %2 - + The name is frozen: unfreeze it to change its number. O nome está congelado: descongele-o para alterar seu número. - + The number can be chosen when the element keeps its numbering. O número pode ser escolhido quando o elemento mantém sua numeração. - + None (name entered by hand) Nenhuma (nome digitado manualmente) - + Custom formula: %1 Fórmula própria: %1 - + Frozen name Nome congelado - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8423,7 +8438,7 @@ Deseja vincular este contato escravo mesmo assim? PartTerminal - + Move the label to a terminal Mover a legenda de um terminal @@ -13569,7 +13584,7 @@ O que você deseja fazer? - + Terminal Terminal @@ -13831,7 +13846,7 @@ O que você deseja fazer? - + Warning: the element has been saved with a more recent version of QElectroTech. Aviso: o elemento foi salvo por uma versão mais recente do QElectroTech. @@ -14308,7 +14323,7 @@ Deseja substituí-lo? - + Type Tipo @@ -14316,7 +14331,7 @@ Deseja substituí-lo? - + Address Endereço @@ -14324,7 +14339,7 @@ Deseja substituí-lo? - + Annotation Comentário @@ -14333,7 +14348,7 @@ Deseja substituí-lo? - + Cross-reference Ref. cruzada @@ -14342,7 +14357,7 @@ Deseja substituí-lo? - + Function @@ -14714,7 +14729,7 @@ Deseja substituí-lo? Colar - + @@ -14753,7 +14768,7 @@ Deseja substituí-lo? Modifique as propriedades do grupo de terminais - + Sort terminal block %1 Ordenar bloco terminal %1 @@ -14954,7 +14969,7 @@ Please download it by following the link and unzip it in the installation folder Faça o download seguindo o link abaixo e descompacte-o na pasta de instalação - + Automatic terminal numbering Numeração automática de terminais @@ -15176,7 +15191,7 @@ Faça o download seguindo o link abaixo e descompacte-o na pasta de instalação - + Align %n objects to the grid Alinhar %n objeto à grade @@ -15184,7 +15199,7 @@ Faça o download seguindo o link abaixo e descompacte-o na pasta de instalação - + Align %n items Alinhar %n objeto @@ -19617,139 +19632,144 @@ Os outros campos não são usados. TerminalEditor - + North Norte - + East Este - + South Sul - + West Oeste - + Change the orientation of a terminal Editar a orientação de um terminal - + Move a terminal Mover um terminal - - - - + + + + T%1 T%1 - + Generic Genérico - + Indoor terminal block Bloco de terminais interno - + External terminal block Bloco de terminais externo - + NO (contact SW) NA (contato SW) - + NC (contact SW) NF (contato SW) - + Common (contact SW) Comum (contato SW) - + Change the terminal name Mudar o nome do terminal + Change the potential of a terminal + + + + Change the type of a terminal Mudar o tipo de terminal - + Show/hide the terminal name Exibir/ocultar o nome do terminal - + Change the position of the label Alterar a posição da legenda - + Change the label font Alterar a fonte da legenda - + Change the font size of the label Alterar o tamanho da fonte da legenda - + Change the rotation of the label Alterar a rotação da legenda - - + + Change the alignment of the label Alterar o alinhamento da legenda - + Show/hide the label border Exibir/ocultar o quadro da legenda - - + + Change the label colour Alterar a cor da legenda - + Edit the master label Alterar a etiqueta do mestre - - - + + + Change the name of the terminal Alterar o nome do terminal - + Change the master label index Alterar o índice da etiqueta do mestre @@ -19785,66 +19805,76 @@ Os outros campos não são usados. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name Nome do terminal - + Show name Exibir o nome - + Text properties Propriedades do texto - + Font Fonte - + X : X: - + Y : Y: - + Rotation : Rotação: - + ° ° - + Alignment Alinhamento - + Color : Cor: - + Frame the text Enquadrar o texto - + Master’s label Etiqueta do mestre - + Learning from the master Herdar do mestre @@ -20367,12 +20397,12 @@ Os outros campos não são usados. Explorador de terminais - + Untitled project Projeto sem título - + Independent terminals Terminais independentes diff --git a/lang/qet_ro.ts b/lang/qet_ro.ts index 94d2eadbd..94e180156 100644 --- a/lang/qet_ro.ts +++ b/lang/qet_ro.ts @@ -1923,7 +1923,7 @@ Continue? Diagram - + Change the depth @@ -2030,17 +2030,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2064,7 +2079,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2273,13 +2288,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2334,77 +2349,77 @@ Continue? o imagine - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... Selectați o imagine... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Eroare - + Unable to load the image. Nu se poate încărca imaginea. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2458,84 +2473,84 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Aceasta este zona în care concepeți schemele dumneavoastră prin adăugarea elementelor și conductorilor între terminale. De asemenea puteți adăuga texte independente. - + Paste Here context menu action Lipește aici - + Multiple paste - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + Edit conductor properties undo caption - + X: %1 Y: %2 - + Connect the selected terminals - + Untitled what to display for untitled diagrams Nedenumit - + Registered template - + The template has been successfully saved as : %1 - + Error Eroare - + The file could not be written. - + Choose the new color for this conductor Alegeți noua culoare pentru acest conductor @@ -3135,7 +3150,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3412,27 +3427,27 @@ The element's display name is edited separately in the element properties.< Informații - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3441,95 +3456,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8336,7 +8351,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13195,7 +13210,7 @@ What do you wish to do ? QObject - + Warning: the element has been saved with a more recent version of QElectroTech. Atenție : elementul a fost salvat cu o versiune mai nouă de QElectroTech. @@ -13820,7 +13835,7 @@ What do you wish to do ? - + Terminal Bornă @@ -14052,7 +14067,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Type Tip @@ -14060,7 +14075,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Address @@ -14068,7 +14083,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Annotation Comentariu @@ -14077,7 +14092,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Cross-reference @@ -14086,7 +14101,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Function @@ -14523,7 +14538,7 @@ the translated name of this folder could not be read, so its folder name is disp - + @@ -14700,7 +14715,7 @@ Do you want to replace it ? - + Sort terminal block %1 @@ -14843,7 +14858,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15075,7 +15090,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15084,7 +15099,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19453,139 +19468,144 @@ The other fields are not used. TerminalEditor - - - - + + + + T%1 - + North Nord - + East Est - + South Sud - + West Vest - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Move a terminal - + Change the orientation of a terminal - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -19621,66 +19641,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : - + Y : - + Rotation : - + ° - + Alignment - + Color : Culoare : - + Frame the text - + Master’s label - + Learning from the master @@ -20198,12 +20228,12 @@ The other fields are not used. TerminalStripTreeDockWidget - + Untitled project Proiect fără titlu - + Independent terminals diff --git a/lang/qet_rs.ts b/lang/qet_rs.ts index ae04591bb..4590ee77a 100644 --- a/lang/qet_rs.ts +++ b/lang/qet_rs.ts @@ -1923,7 +1923,7 @@ Continue? Diagram - + Change the depth @@ -2030,17 +2030,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2064,7 +2079,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2273,13 +2288,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2334,77 +2349,77 @@ Continue? - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error - + Unable to load the image. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2458,84 +2473,84 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip - + Paste Here context menu action - + Multiple paste - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + Choose the new color for this conductor - + Edit conductor properties undo caption - + X: %1 Y: %2 - + Connect the selected terminals - + Untitled what to display for untitled diagrams - + Registered template - + The template has been successfully saved as : %1 - + Error - + The file could not be written. @@ -3135,7 +3150,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3412,27 +3427,27 @@ The element's display name is edited separately in the element properties.< - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3441,95 +3456,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8335,7 +8350,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13185,7 +13200,7 @@ What do you wish to do ? - + @@ -13300,7 +13315,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Sort terminal block %1 @@ -13569,7 +13584,7 @@ Please download it by following the link and unzip it in the installation folder - + Terminal @@ -13715,7 +13730,7 @@ Do you want to replace it ? - + Warning: the element has been saved with a more recent version of QElectroTech. @@ -14197,7 +14212,7 @@ Please download it from the link below and unzip it into the installation folder - + Type @@ -14205,7 +14220,7 @@ Please download it from the link below and unzip it into the installation folder - + Address @@ -14213,7 +14228,7 @@ Please download it from the link below and unzip it into the installation folder - + Annotation @@ -14222,7 +14237,7 @@ Please download it from the link below and unzip it into the installation folder - + Cross-reference @@ -14231,7 +14246,7 @@ Please download it from the link below and unzip it into the installation folder - + Function @@ -14826,7 +14841,7 @@ Please download it from the link below and unzip it into the installation folder - + Automatic terminal numbering @@ -15058,7 +15073,7 @@ Please download it from the link below and unzip it into the installation folder - + Align %n objects to the grid @@ -15067,7 +15082,7 @@ Please download it from the link below and unzip it into the installation folder - + Align %n items @@ -19466,203 +19481,218 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : - + Y : - + Rotation : - + ° - + Alignment - + Color : - + Frame the text - + Master’s label - + Learning from the master - - - - + + + + T%1 - + North - + East - + South - + West - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Move a terminal - + Change the orientation of a terminal - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -20185,12 +20215,12 @@ The other fields are not used. - + Untitled project - + Independent terminals diff --git a/lang/qet_ru.ts b/lang/qet_ru.ts index 89a118317..d47513dcd 100644 --- a/lang/qet_ru.ts +++ b/lang/qet_ru.ts @@ -1940,7 +1940,7 @@ Continue? Diagram - + Change the depth Изменить глубину @@ -2047,17 +2047,32 @@ Continue? Маркеры: - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2081,7 +2096,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste Нажмите, чтобы разместить коллаж; нажмите Esc или щелкните правой кнопкой мыши, чтобы отменить @@ -2290,13 +2305,13 @@ Continue? - + Save image as... Сохранить изображение как... - + Save original image as... Сохранить исходное изображение как... @@ -2351,77 +2366,77 @@ Continue? Изображение - + Replace the image... Заменить изображение... - + Transparent color... Прозрачный цвет... - + Crop... Обрезать... - + Horizontal mirror Отразить по горизонтали - + Vertical mirror Отразить по вертикали - + Restore proportions Восстановить пропорции - + Select an image ... Выберите изображение... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) Графические файлы (*.png, *.jpg, *.jpeg, *.bmp, *.svg) - + Error Ошибка - + Unable to load the image. Невозможно загрузить изображение. - + Replace an image Заменить изображение - + Horizontal mirror of an image Отразить изображение по горизонтали - + Vertical mirror of an image Отразить изображение по вертикали - + Set a transparent color Определить прозрачный цвет - + Crop an image Обрезать изображение @@ -2476,84 +2491,84 @@ Hold Shift and drag to move this text on its own DiagramView - + Paste Here context menu action Вставить здесь - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Это поле для построения схем, куда вы добавляете элементы и соединения между их выводами. Вы также можете добавить произвольные надписи. - + Multiple paste Множественная вставка - + Create a template context menu action Создать шаблон - + Make a cabinet thumbnail context menu action - + Sheet reference Ссылка на страницу - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Подключить выводы - + Untitled what to display for untitled diagrams Без имени - + Registered template Новый шаблон - + The template has been successfully saved as : %1 Шаблон был успешно сохранен под именем: %1 - + Error Ошибка - + The file could not be written. Не удалось записать файл. - + Choose the new color for this conductor Выбрать новый цвет для проводника - + Edit conductor properties undo caption Изменить свойства проводника @@ -3155,7 +3170,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption Автоматическая нумерация элемента @@ -3435,27 +3450,27 @@ The element's display name is edited separately in the element properties.< Информация - + Add a custom property Добавить настраиваемое свойство - + Potential separation Разделение потенциалов - + Exclude from the bill of materials Исключить из спецификации - + No materials list Список материалов отсутствует - + There is no materials list file at this location: %1 @@ -3467,12 +3482,12 @@ Create it? Создать его? - + Cannot create Невозможно создать - + Cannot create the file: %1 %2 @@ -3481,83 +3496,83 @@ Create it? %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8451,7 +8466,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal Переместить метку с одного из терминалов @@ -13386,7 +13401,7 @@ What do you wish to do ? QObject - + Warning: the element has been saved with a more recent version of QElectroTech. Предупреждение: элементы были сохранены с помощью более новой версии QElectroTech. @@ -14014,7 +14029,7 @@ What do you wish to do ? - + Terminal Вывод @@ -14397,7 +14412,7 @@ Do you want to replace it ? - + Type Тип @@ -14405,7 +14420,7 @@ Do you want to replace it ? - + Address Адрес @@ -14413,7 +14428,7 @@ Do you want to replace it ? - + Annotation Аннотация @@ -14422,7 +14437,7 @@ Do you want to replace it ? - + Cross-reference Ссылка @@ -14431,7 +14446,7 @@ Do you want to replace it ? - + Function @@ -14803,7 +14818,7 @@ Do you want to replace it ? Вставить - + @@ -14842,7 +14857,7 @@ Do you want to replace it ? Изменить свойства группы выводов - + Sort terminal block %1 Выбор клеммной колодки %1 @@ -15043,7 +15058,7 @@ Please download it by following the link and unzip it in the installation folder Пожалуйста, скачайте её по ссылке ниже и распакуйте в папку установки. - + Automatic terminal numbering Автоматическая нумерация клемм @@ -15275,7 +15290,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid Выровнять %n объект по сетке @@ -15284,7 +15299,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items Выровнять %n объект @@ -19725,139 +19740,144 @@ The other fields are not used. TerminalEditor - - - - + + + + T%1 T%1 - + North Вверх - + East Направо - + South Вниз - + West Налево - + Generic Общий - + Indoor terminal block Внутренняя клеммная колодка - + External terminal block Внешняя клеммная колодка - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Move a terminal Переместить вывод - + Change the orientation of a terminal Изменить ориентацию вывода - + Change the terminal name Изменить имя вывода + Change the potential of a terminal + + + + Change the type of a terminal Изменить ориентацию вывода - + Show/hide the terminal name Показать/скрыть название терминала - + Change the position of the label Изменить положение метки - + Change the label font Изменить шрифт метки - + Change the font size of the label Изменить размер шрифта метки - + Change the rotation of the label Изменить ориентацию метки - - + + Change the alignment of the label Изменить выравнивание метки - + Show/hide the label border Показать/скрыть рамку метки - - + + Change the label colour Изменить цвет метки - + Edit the master label Изменить метку главного устройства - - - + + + Change the name of the terminal Изменить имя вывода - + Change the master label index Изменить индекс метки ведущего устройства @@ -19893,66 +19913,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name Название вывода - + Show name Показать имя - + Text properties Свойства текста - + Font Шрифт - + X : X: - + Y : Y: - + Rotation : Вращение: - + ° ° - + Alignment Выравнивание - + Color : Цвет: - + Frame the text Рамка текста - + Master’s label Метка мастера - + Learning from the master Связаны с мастером @@ -20475,12 +20505,12 @@ The other fields are not used. Обзор клеммной колодки - + Untitled project Проект без имени - + Independent terminals Независимые выводы diff --git a/lang/qet_sk.ts b/lang/qet_sk.ts index 29db06238..38d5491df 100644 --- a/lang/qet_sk.ts +++ b/lang/qet_sk.ts @@ -1923,7 +1923,7 @@ Continue? Diagram - + Change the depth @@ -2030,17 +2030,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2064,7 +2079,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2273,13 +2288,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2334,77 +2349,77 @@ Continue? - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error - + Unable to load the image. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2458,83 +2473,83 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip - + Paste Here context menu action - + Multiple paste - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 - + Connect the selected terminals - + Untitled what to display for untitled diagrams - + Registered template - + The template has been successfully saved as : %1 - + Error - + The file could not be written. - + Choose the new color for this conductor - + Edit conductor properties undo caption @@ -3135,7 +3150,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3412,27 +3427,27 @@ The element's display name is edited separately in the element properties.< - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3441,95 +3456,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8335,7 +8350,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13523,7 +13538,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Terminal @@ -13664,7 +13679,7 @@ Do you want to replace it ? - + Warning: the element has been saved with a more recent version of QElectroTech. @@ -13951,7 +13966,7 @@ Do you want to replace it ? - + Type @@ -13959,7 +13974,7 @@ Do you want to replace it ? - + Address @@ -13967,7 +13982,7 @@ Do you want to replace it ? - + Annotation @@ -13976,7 +13991,7 @@ Do you want to replace it ? - + Cross-reference @@ -13985,7 +14000,7 @@ Do you want to replace it ? - + Function @@ -14590,7 +14605,7 @@ Do you want to replace it ? - + @@ -14629,7 +14644,7 @@ Do you want to replace it ? - + Sort terminal block %1 @@ -14826,7 +14841,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15058,7 +15073,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15067,7 +15082,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19435,139 +19450,144 @@ The other fields are not used. TerminalEditor - + North - + East - + South - + West - + Change the orientation of a terminal - + Move a terminal - - - - + + + + T%1 - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -19603,66 +19623,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : - + Y : - + Rotation : - + ° - + Alignment - + Color : - + Frame the text - + Master’s label - + Learning from the master @@ -20185,12 +20215,12 @@ The other fields are not used. - + Untitled project - + Independent terminals diff --git a/lang/qet_sl.ts b/lang/qet_sl.ts index 1ea3e4449..aaa281790 100644 --- a/lang/qet_sl.ts +++ b/lang/qet_sl.ts @@ -1934,7 +1934,7 @@ Continue? Diagram - + Change the depth @@ -2041,17 +2041,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2075,7 +2090,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2284,13 +2299,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2345,77 +2360,77 @@ Continue? - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error - + Unable to load the image. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2469,84 +2484,84 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip - + Paste Here context menu action - + Multiple paste - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + Choose the new color for this conductor - + Edit conductor properties undo caption - + X: %1 Y: %2 - + Connect the selected terminals - + Untitled what to display for untitled diagrams - + Registered template - + The template has been successfully saved as : %1 - + Error - + The file could not be written. @@ -3146,7 +3161,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3423,27 +3438,27 @@ The element's display name is edited separately in the element properties.< - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3452,95 +3467,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8350,7 +8365,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13286,7 +13301,7 @@ What do you wish to do ? - + @@ -13479,7 +13494,7 @@ What do you wish to do ? - + Terminal @@ -13689,7 +13704,7 @@ Do you want to replace it ? - + Warning: the element has been saved with a more recent version of QElectroTech. @@ -14121,7 +14136,7 @@ Do you want to replace it ? - + Type @@ -14129,7 +14144,7 @@ Do you want to replace it ? - + Address @@ -14137,7 +14152,7 @@ Do you want to replace it ? - + Annotation @@ -14146,7 +14161,7 @@ Do you want to replace it ? - + Cross-reference @@ -14155,7 +14170,7 @@ Do you want to replace it ? - + Function @@ -14527,7 +14542,7 @@ Do you want to replace it ? - + Sort terminal block %1 @@ -14883,7 +14898,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15125,7 +15140,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15135,7 +15150,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19543,203 +19558,218 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : - + Y : - + Rotation : - + ° - + Alignment - + Color : - + Frame the text - + Master’s label - + Learning from the master - - - - + + + + T%1 - + North - + East - + South - + West - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Move a terminal - + Change the orientation of a terminal - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -20262,12 +20292,12 @@ The other fields are not used. - + Untitled project - + Independent terminals diff --git a/lang/qet_sr.ts b/lang/qet_sr.ts index 859e6e369..a3991f746 100644 --- a/lang/qet_sr.ts +++ b/lang/qet_sr.ts @@ -1923,7 +1923,7 @@ Continue? Diagram - + Change the depth @@ -2030,17 +2030,32 @@ Continue? - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 - + x 2 - + x 3 @@ -2064,7 +2079,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2273,13 +2288,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2334,77 +2349,77 @@ Continue? - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error - + Unable to load the image. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2458,84 +2473,84 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip - + Paste Here context menu action - + Multiple paste - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + Choose the new color for this conductor - + Edit conductor properties undo caption - + X: %1 Y: %2 - + Connect the selected terminals - + Untitled what to display for untitled diagrams - + Registered template - + The template has been successfully saved as : %1 - + Error - + The file could not be written. @@ -3135,7 +3150,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3412,27 +3427,27 @@ The element's display name is edited separately in the element properties.< - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3441,95 +3456,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8335,7 +8350,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13241,7 +13256,7 @@ What do you wish to do ? - + @@ -13434,7 +13449,7 @@ What do you wish to do ? - + Terminal @@ -13643,7 +13658,7 @@ Do you want to replace it ? - + Warning: the element has been saved with a more recent version of QElectroTech. @@ -14067,7 +14082,7 @@ Do you want to replace it ? - + Type @@ -14075,7 +14090,7 @@ Do you want to replace it ? - + Address @@ -14083,7 +14098,7 @@ Do you want to replace it ? - + Annotation @@ -14092,7 +14107,7 @@ Do you want to replace it ? - + Cross-reference @@ -14101,7 +14116,7 @@ Do you want to replace it ? - + Function @@ -14473,7 +14488,7 @@ Do you want to replace it ? - + Sort terminal block %1 @@ -14826,7 +14841,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15058,7 +15073,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15067,7 +15082,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19466,203 +19481,218 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : - + Y : - + Rotation : - + ° - + Alignment - + Color : - + Frame the text - + Master’s label - + Learning from the master - - - - + + + + T%1 - + North - + East - + South - + West - + Generic - + Indoor terminal block - + External terminal block - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Move a terminal - + Change the orientation of a terminal - + Change the terminal name + Change the potential of a terminal + + + + Change the type of a terminal - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -20185,12 +20215,12 @@ The other fields are not used. - + Untitled project - + Independent terminals diff --git a/lang/qet_sv.ts b/lang/qet_sv.ts index a5172e1b1..1512addc6 100644 --- a/lang/qet_sv.ts +++ b/lang/qet_sv.ts @@ -1917,7 +1917,7 @@ Continue? Diagram - + Change the depth Ändra djup @@ -2024,17 +2024,32 @@ Continue? Handtag: - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2058,7 +2073,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2267,13 +2282,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2328,77 +2343,77 @@ Continue? en bild - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... Välj en bild... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Fel - + Unable to load the image. Det går inte att ladda bilden. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2452,84 +2467,84 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Det här är det område där du utformar ditt schema genom att lägga till symboler och dra förbindningar mellan deras anslutningspunkter. Det är också möjligt att lägga till oberoende texter. - + Paste Here context menu action Klistra in här - + Multiple paste Klistra in flera - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + Choose the new color for this conductor Välj ny färg för denna förbindning - + Edit conductor properties undo caption Ändra egenskaper för en förbindning - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Anslut de markerade plintarna - + Untitled what to display for untitled diagrams Namnlöst - + Registered template - + The template has been successfully saved as : %1 - + Error Fel - + The file could not be written. @@ -3129,7 +3144,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3406,27 +3421,27 @@ The element's display name is edited separately in the element properties.< Information - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3435,95 +3450,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8361,7 +8376,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13216,7 +13231,7 @@ Vad vill du göra? laddar %p% (%v av %m) - + @@ -13331,7 +13346,7 @@ the translated name of this folder could not be read, so its folder name is disp Ändra egenskaperna för en plintrad - + Sort terminal block %1 Sortera plintrad %1 @@ -13584,7 +13599,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Terminal Anslutning @@ -13730,7 +13745,7 @@ Vill du ersätta den? - + Warning: the element has been saved with a more recent version of QElectroTech. Varning: symbolen har registrerats med en senare version av QElectroTech. @@ -14146,7 +14161,7 @@ Vill du ersätta den? - + Type @@ -14154,7 +14169,7 @@ Vill du ersätta den? - + Address @@ -14162,7 +14177,7 @@ Vill du ersätta den? - + Annotation Kommentar @@ -14171,7 +14186,7 @@ Vill du ersätta den? - + Cross-reference @@ -14180,7 +14195,7 @@ Vill du ersätta den? - + Function @@ -14852,7 +14867,7 @@ Please download it from the link below and unzip it into the installation folder Ladda ner den genom att följa länken nedan och packa upp den i installationsmappen. - + Automatic terminal numbering @@ -15074,7 +15089,7 @@ Ladda ner den genom att följa länken nedan och packa upp den i installationsma - + Align %n objects to the grid @@ -15082,7 +15097,7 @@ Ladda ner den genom att följa länken nedan och packa upp den i installationsma - + Align %n items @@ -19529,203 +19544,218 @@ De andra fälten används inte. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : X: - + Y : Y: - + Rotation : Rotation: - + ° ° - + Alignment Justering - + Color : Färg: - + Frame the text Textram - + Master’s label - + Learning from the master - - - - + + + + T%1 - + North Nord - + East Öst - + South Syd - + West Väst - + Generic Generisk - + Indoor terminal block Intern anslutning - + External terminal block Extern anslutning - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Move a terminal Flytta en anslutning - + Change the orientation of a terminal Ändra orientering på en anslutning - + Change the terminal name Ändra namn på en anslutning + Change the potential of a terminal + + + + Change the type of a terminal Ändra typ på en anslutning - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -20248,12 +20278,12 @@ De andra fälten används inte. Plintnavigator - + Untitled project Namnlöst projekt - + Independent terminals Tillgängliga plintar diff --git a/lang/qet_tr.ts b/lang/qet_tr.ts index b29fb0d52..e84a8dc5f 100644 --- a/lang/qet_tr.ts +++ b/lang/qet_tr.ts @@ -1910,7 +1910,7 @@ Continue? Diagram - + Change the depth I am not sure about this. It should be checked. Derinliği değiştirin @@ -2018,17 +2018,32 @@ Continue? Tutamaçlar : - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2052,7 +2067,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2261,13 +2276,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2323,77 +2338,77 @@ Continue? Bir görüntü - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... Bir resim seç... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Hata - + Unable to load the image. Resim yüklenemiyor. - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2448,85 +2463,85 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip I am not sure about this. It should be checked. Bu, öğelerinizi ekleyerek ve iletkenler arasında terminaller yerleştirerek düzenlerinizi tasarladığınız alandır. Bağımsız metinler eklemek de mümkündür. - + Paste Here context menu action Buraya yapıştır - + Multiple paste Çoklu Yapıştır - + Create a template context menu action Şablon oluştur - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Seçilen bağlantıları bağla - + Untitled what to display for untitled diagrams Başlıksız - + Registered template Şablon kaydedildi - + The template has been successfully saved as : %1 Şablon başarıyla şu adla kaydedildi: %1 - + Error Hata - + The file could not be written. Dosya yazılamadı. - + Choose the new color for this conductor Bu iletkenin yeni rengini seçin - + Edit conductor properties undo caption Bu iletkenin özelliklerini değiştirin @@ -3131,7 +3146,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3409,27 +3424,27 @@ The element's display name is edited separately in the element properties.< Bilgiler - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3438,95 +3453,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8375,7 +8390,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13505,7 +13520,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Terminal I am not sure about this. It should be checked. Sınır @@ -13648,7 +13663,7 @@ Değiştirmek ister misiniz? - + Warning: the element has been saved with a more recent version of QElectroTech. Uyarı: Ürün QElectroTech'in daha sonraki bir sürümü ile kaydedilmiştir. @@ -14192,7 +14207,7 @@ Değiştirmek ister misiniz? - + Type @@ -14200,7 +14215,7 @@ Değiştirmek ister misiniz? - + Address @@ -14208,7 +14223,7 @@ Değiştirmek ister misiniz? - + Annotation Açıklama @@ -14217,7 +14232,7 @@ Değiştirmek ister misiniz? - + Cross-reference @@ -14226,7 +14241,7 @@ Değiştirmek ister misiniz? - + Function @@ -14598,7 +14613,7 @@ Değiştirmek ister misiniz? Yapıştır - + @@ -14637,7 +14652,7 @@ Değiştirmek ister misiniz? Bir klemens grubunun özelliklerini değiştir - + Sort terminal block %1 %1 klemens bloğunu sırala @@ -14838,7 +14853,7 @@ Please download it by following the link and unzip it in the installation folder Lütfen aşağıdaki bağlantıyı takip ederek indirin ve kurulum klasörüne çıkartın - + Automatic terminal numbering Otomatik klemens numaralandırma @@ -15050,14 +15065,14 @@ Lütfen aşağıdaki bağlantıyı takip ederek indirin ve kurulum klasörüne - + Align %n objects to the grid - + Align %n items @@ -19466,139 +19481,144 @@ Diğer alanlar kullanılmaz. TerminalEditor - + North Kuzey - + East Doğu - + South Güney - + West Batı - + Change the orientation of a terminal Bir terminalin yönünü değiştirin - + Move a terminal Bir terminali taşıyın - - - - + + + + T%1 - + Generic Genel - + Indoor terminal block İç klemens bloğu - + External terminal block Dış klemens bloğu - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Change the terminal name Klemens adını değiştir + Change the potential of a terminal + + + + Change the type of a terminal Bir klemensin tipini değiştir - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -19634,66 +19654,76 @@ Diğer alanlar kullanılmaz. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font - + X : X : - + Y : Y : - + Rotation : Dönüş: - + ° ° - + Alignment Hizalama - + Color : Renk : - + Frame the text Metni çerçevele - + Master’s label - + Learning from the master @@ -20216,12 +20246,12 @@ Diğer alanlar kullanılmaz. Klemens bloğu gezgini - + Untitled project Başlıksız proje - + Independent terminals Bağımsız klemens diff --git a/lang/qet_uk.ts b/lang/qet_uk.ts index 1842251d1..df545483e 100644 --- a/lang/qet_uk.ts +++ b/lang/qet_uk.ts @@ -1928,7 +1928,7 @@ Continue? Diagram - + Change the depth Змінити глибину @@ -2035,17 +2035,32 @@ Continue? Маркери: - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2069,7 +2084,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2278,13 +2293,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2339,77 +2354,77 @@ Continue? Зображення - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... Виберіть зображення... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error Помилка - + Unable to load the image. Помилка - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2463,84 +2478,84 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip Це область, де ви проєктуєте свої схеми, додаючи до них елементи та прокладаючи провідники між їхніми клемами. Також є можливість додавати незалежні тексти. - + Paste Here context menu action Вставити тут - + Multiple paste Множинна вставка - + Create a template context menu action - + Make a cabinet thumbnail context menu action - + Sheet reference - + Choose the new color for this conductor Виберіть новий колір цього провідника - + Edit conductor properties undo caption Редагувати властивості провідника - + X: %1 Y: %2 X: %1 Y: %2 - + Connect the selected terminals Підключити вибрані клеми - + Untitled what to display for untitled diagrams Без назви - + Registered template - + The template has been successfully saved as : %1 - + Error Помилка - + The file could not be written. @@ -3140,7 +3155,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption @@ -3417,27 +3432,27 @@ The element's display name is edited separately in the element properties.< Інформація - + Add a custom property - + Potential separation - + Exclude from the bill of materials - + No materials list - + There is no materials list file at this location: %1 @@ -3446,95 +3461,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8375,7 +8390,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal @@ -13263,7 +13278,7 @@ What do you wish to do ? завантаження %p% (%v з %m) - + @@ -13373,7 +13388,7 @@ the translated name of this folder could not be read, so its folder name is disp Змінити властивості групи виводів - + Sort terminal block %1 Вибір клемної колодки %1 @@ -13626,7 +13641,7 @@ the translated name of this folder could not be read, so its folder name is disp - + Terminal Вивід @@ -13774,7 +13789,7 @@ Do you want to replace it ? - + Warning: the element has been saved with a more recent version of QElectroTech. Попередження: елементи були збережені за допомогою більш нової версії QElectroTech. @@ -14199,7 +14214,7 @@ Do you want to replace it ? - + Type Тип @@ -14207,7 +14222,7 @@ Do you want to replace it ? - + Address @@ -14215,7 +14230,7 @@ Do you want to replace it ? - + Annotation Аннотація @@ -14224,7 +14239,7 @@ Do you want to replace it ? - + Cross-reference @@ -14233,7 +14248,7 @@ Do you want to replace it ? - + Function @@ -14909,7 +14924,7 @@ Please download it by following the link and unzip it in the installation folder - + Automatic terminal numbering @@ -15141,7 +15156,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid @@ -15150,7 +15165,7 @@ Please download it by following the link and unzip it in the installation folder - + Align %n items @@ -19590,203 +19605,218 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name - + Show name - + Text properties - + Font Шрифт - + X : X: - + Y : Y: - + Rotation : - + ° ° - + Alignment Вирівнювання - + Color : Колір: - + Frame the text Рамка тексту - + Master’s label - + Learning from the master - - - - + + + + T%1 - + North Вгору - + East Направо - + South Вниз - + West Наліво - + Generic Загальний - + Indoor terminal block Внутнішня клемна колодка - + External terminal block Зовнішня клемна колодка - + NO (contact SW) - + NC (contact SW) - + Common (contact SW) - + Move a terminal Перемістити вивід - + Change the orientation of a terminal Змінити орієнтацію вивода - + Change the terminal name Змінити ім'я вивода + Change the potential of a terminal + + + + Change the type of a terminal Змінити орієнтацію вивода - + Show/hide the terminal name - + Change the position of the label - + Change the label font - + Change the font size of the label - + Change the rotation of the label - - + + Change the alignment of the label - + Show/hide the label border - - + + Change the label colour - + Edit the master label - - - + + + Change the name of the terminal - + Change the master label index @@ -20309,12 +20339,12 @@ The other fields are not used. Огляд клемної колодки - + Untitled project Проєкт без імені - + Independent terminals Незалежні виводи diff --git a/lang/qet_zh.ts b/lang/qet_zh.ts index c11dfa701..7e89e3783 100644 --- a/lang/qet_zh.ts +++ b/lang/qet_zh.ts @@ -1906,7 +1906,7 @@ Continue? Diagram - + Change the depth 修改图层 @@ -2013,17 +2013,32 @@ Continue? 控点: - + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + + + x 1 x 1 - + x 2 x 2 - + x 3 x 3 @@ -2047,7 +2062,7 @@ Continue? DiagramEventAddPaste - + Click to place the pasted content, Esc or right-click to cancel status bar tip while positioning a paste @@ -2256,13 +2271,13 @@ Continue? - + Save image as... - + Save original image as... @@ -2317,77 +2332,77 @@ Continue? 图片 - + Replace the image... - + Transparent color... - + Crop... - + Horizontal mirror - + Vertical mirror - + Restore proportions - + Select an image ... 选择图片... - + Image Files (*.png *.jpg *.jpeg *.bmp *.svg) - + Error 错误 - + Unable to load the image. 无法加载图片。 - + Replace an image - + Horizontal mirror of an image - + Vertical mirror of an image - + Set a transparent color - + Crop an image @@ -2441,84 +2456,84 @@ Hold Shift and drag to move this text on its own DiagramView - + In this area you conceive your diagrams by adding elements and conductors between their terminals. You may also add independent texts. "What's this?" tip 在此区域您可以通过向图页添加元件并在它们的端子之间添加导线来设计原理图。您也可以添加独立的文本。 - + Paste Here context menu action 粘贴到此处 - + Multiple paste 多重复制 - + Create a template context menu action 创建一个模板 - + Make a cabinet thumbnail context menu action - + Sheet reference - + X: %1 Y: %2 X:%1 Y:%2 - + Connect the selected terminals 连接选定端子 - + Untitled what to display for untitled diagrams 无标题 - + Registered template 模板已注册 - + The template has been successfully saved as : %1 该模板已成功保存为: %1 - + Error 错误 - + The file could not be written. 该文件无法写入。 - + Choose the new color for this conductor 为该导线选取新颜色 - + Edit conductor properties undo caption 编辑导线属性 @@ -3119,7 +3134,7 @@ Hold Shift and drag to move this text on its own Element - + Automatically number an element undo caption 自动为元件编号 @@ -3397,27 +3412,27 @@ The element's display name is edited separately in the element properties.< 信息 - + Add a custom property 添加自定义属性 - + Potential separation 电位隔离 - + Exclude from the bill of materials 排除于物料清单 - + No materials list - + There is no materials list file at this location: %1 @@ -3426,95 +3441,95 @@ Create it? - + Cannot create - + Cannot create the file: %1 %2 - + Automatic numbering - + … - + Open the project's element numberings - + Freeze name - + A frozen name is not changed by automatic numbering, and its number is not given to another element. - + Number - - + + Only free numbers are offered: an element that must keep its real number can get it back if nobody else has it. - + %1 (current) - + — (unknown number) - + %1 → %2 - + The name is frozen: unfreeze it to change its number. - + The number can be chosen when the element keeps its numbering. - + None (name entered by hand) - + Custom formula: %1 - + Frozen name - + This element's name is frozen. Changing its numbering will replace or erase it. @@ -8364,7 +8379,7 @@ Do you still want to link this slave contact? PartTerminal - + Move the label to a terminal 移动端子标签 @@ -13427,7 +13442,7 @@ What do you wish to do ? - + Terminal 端子 @@ -13647,7 +13662,7 @@ What do you wish to do ? - + Warning: the element has been saved with a more recent version of QElectroTech. 警告:元件已在更高版本的 QElectroTech 中保存。 @@ -14173,7 +14188,7 @@ Do you want to replace it ? - + Type 类型 @@ -14181,7 +14196,7 @@ Do you want to replace it ? - + Address 地址 @@ -14189,7 +14204,7 @@ Do you want to replace it ? - + Annotation 注释 @@ -14198,7 +14213,7 @@ Do you want to replace it ? - + Cross-reference 交叉引用 @@ -14207,7 +14222,7 @@ Do you want to replace it ? - + Function @@ -14579,7 +14594,7 @@ Do you want to replace it ? 粘贴 - + @@ -14618,7 +14633,7 @@ Do you want to replace it ? 修改端子排的属性 - + Sort terminal block %1 对接线端子 %1 进行排序 @@ -14819,7 +14834,7 @@ Please download it by following the link and unzip it in the installation folder 请通过下方链接下载,并将其解压到安装路径下。 - + Automatic terminal numbering 端子自动编号 @@ -15031,14 +15046,14 @@ Please download it by following the link and unzip it in the installation folder - + Align %n objects to the grid - + Align %n items @@ -19445,139 +19460,144 @@ The other fields are not used. TerminalEditor - + North 北 - + East 东 - + South 南 - + West 西 - + Change the orientation of a terminal 修改端子的方向 - + Move a terminal 移动端子 - - - - + + + + T%1 T%1 - + Generic 通用 - + Indoor terminal block 内部接线端子 - + External terminal block 外部接线端子 - + NO (contact SW) NO(常开触点) - + NC (contact SW) NO(常闭触点) - + Common (contact SW) COM(公共端) - + Change the terminal name 修改端子名称 + Change the potential of a terminal + + + + Change the type of a terminal 修改端子类型 - + Show/hide the terminal name 显示/隐藏端子名称 - + Change the position of the label 修改标签位置 - + Change the label font 修改标签字体 - + Change the font size of the label 修改标签字体大小 - + Change the rotation of the label 修改标签旋转 - - + + Change the alignment of the label 修改标签对齐 - + Show/hide the label border 显示/隐藏标签边框 - - + + Change the label colour 修改标签颜色 - + Edit the master label 修改主标签 - - - + + + Change the name of the terminal 修改端子名称 - + Change the master label index 修改主标签索引 @@ -19613,66 +19633,76 @@ The other fields are not used. + Potential: + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name 端子名称 - + Show name 显示名称 - + Text properties 文本属性 - + Font 字体 - + X : X: - + Y : Y: - + Rotation : 旋转: - + ° ° - + Alignment 对齐 - + Color : 颜色: - + Frame the text 框住文本 - + Master’s label 主标签 - + Learning from the master 沿用主标签 @@ -20195,12 +20225,12 @@ The other fields are not used. 端子排浏览器 - + Untitled project 未命名工程 - + Independent terminals 独立接线端子 diff --git a/misc/i18n/fixtures/mirror_after.ts b/misc/i18n/fixtures/mirror_after.ts new file mode 100644 index 000000000..0309fd987 --- /dev/null +++ b/misc/i18n/fixtures/mirror_after.ts @@ -0,0 +1,97 @@ + + + + + Alpha + + + Ouvrir le projet + Ouvrir le projet + + + + Fermer le projet + Fermer le projet + + + + Apply to Entire Project + Appliquer au projet entier + + + + QElectroTech + QElectroTech + + + + Brouillon + Brouillon (à revoir) + + + + Copier + Copier + + + + %n page(s) + + %n page(s) + %n page(s) + + + + + %n élément(s) + + %n élément + %n élément(s) + + + + + %n conducteur(s) + + %n conducteur(s) + %n conducteur(s) + + + + Ancien texte + Ancien texte + + + Autre ancien texte + + + + + Beta + + + <b>%1</b> : %2 + <b>%1</b> : %2 + + + + &Aide + menu + &Aide + + + + l'élément "x" + l'élément "x" + + + + Ligne 1 +Ligne 2 + + Ligne 1 +Ligne 2 + + + + diff --git a/misc/i18n/fixtures/mirror_before.ts b/misc/i18n/fixtures/mirror_before.ts new file mode 100644 index 000000000..613011833 --- /dev/null +++ b/misc/i18n/fixtures/mirror_before.ts @@ -0,0 +1,95 @@ + + + + + Alpha + + + Ouvrir le projet + + + + + Fermer le projet + + + + + Apply to Entire Project + Appliquer au projet entier + + + + QElectroTech + QElectroTech + + + + Brouillon + Brouillon (à revoir) + + + + Copier + Copier + + + + %n page(s) + + %n page(s) + %n page(s) + + + + + %n élément(s) + + %n élément + + + + + + %n conducteur(s) + + + + + + + Ancien texte + Ancien texte + + + Autre ancien texte + + + + + Beta + + + <b>%1</b> : %2 + + + + + &Aide + menu + + + + + l'élément "x" + + + + + Ligne 1 +Ligne 2 + + + + + diff --git a/misc/i18n/mirror_source_language.py b/misc/i18n/mirror_source_language.py new file mode 100755 index 000000000..dab5a9b1a --- /dev/null +++ b/misc/i18n/mirror_source_language.py @@ -0,0 +1,233 @@ +#!/usr/bin/env python3 +# Copyright 2006-2026 The QElectroTech Team +# This file is part of QElectroTech. +# +# QElectroTech is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# QElectroTech is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with QElectroTech. If not, see . +""" +mirror_source_language.py — give every source-language string its own +translation in the source language's .ts file. + + python3 misc/i18n/mirror_source_language.py lang/qet_fr.ts + python3 misc/i18n/mirror_source_language.py --check lang/qet_fr.ts + +WHY THIS EXISTS + +The strings in the code are French, and they are both the translation +key and the text the French UI shows. lang/qet_fr.ts was almost empty: +an empty entry falls back to the code text at run time, so French never +needed a translation. The price is that a French wording fix is a key +change, which orphans the translation of that string in every other +language file. + +With every French string mirrored into qet_fr.ts, the French UI is +served from qet_fr.qm like any other language, and French wording can +be corrected in the .ts alone. The key in the code then only has to +stay stable. + +WHAT IT DOES + +For every message whose translation is empty, the source text is copied +into the translation and the entry is finished. Nothing else changes: + + - a translation with text is never touched, whether it is a French + rendering of an English source, identical to the source, or marked + unfinished (a translator's work in progress), with one exception: + an unfinished translation identical to its source is finished. + That is what lupdate's same-text heuristic leaves behind when a new + string repeats an existing one, and it is what a mirror run would + have written anyway; + - vanished and obsolete entries are left to lupdate; + - in a plural message only the empty s are filled; + - the file stays byte-identical outside the rewritten + elements: header, locations, comments, indentation, escaping. + +The source text is copied as lupdate wrote it, escaping included, so +' stays '. A with a child element (lupdate's ) +is refused rather than guessed at. + +Run it after `cmake --build . --target update_translations`, before +committing. Forgetting it breaks nothing: an empty entry still falls +back to the code text, and the next run fills it. `--check` exits 1 +when a run would change the file, so it can gate a commit. +""" + +from __future__ import annotations + +import argparse +import re +import sys +from dataclasses import dataclass +from pathlib import Path +import xml.etree.ElementTree as ET + +MESSAGE_RE = re.compile(r"[^>]*)>(?P.*?)", re.S) +SOURCE_RE = re.compile(r"(?P.*?)", re.S) +TRANSLATION_RE = re.compile( + r"[^>]*)>(?P.*?)", re.S) +FORM_RE = re.compile(r"(?P.*?)", re.S) +TYPE_RE = re.compile(r'\s*type="(?P[^"]*)"') + +# lupdate's own layout: at 8 spaces, at 12. +FORM_INDENT = " " * 12 +CLOSE_INDENT = " " * 8 + + +class SourceError(ValueError): + """A that cannot be copied verbatim.""" + + +@dataclass +class Stats: + mirrored_messages: int = 0 + mirrored_forms: int = 0 + finished_identical: int = 0 + unfinished_cleared: int = 0 + kept_translated: int = 0 + kept_identical: int = 0 + kept_vanished: int = 0 + kept_unfinished_with_text: int = 0 + + def changed(self) -> bool: + return self.mirrored_messages > 0 or self.finished_identical > 0 + + def summary(self) -> str: + return ( + f"mirrored {self.mirrored_messages} message(s), " + f"{self.mirrored_forms} plural form(s), " + f"finished {self.finished_identical} identical unfinished, " + f"cleared {self.unfinished_cleared} unfinished flag(s); kept " + f"{self.kept_translated} translated, {self.kept_identical} identical, " + f"{self.kept_vanished} vanished, " + f"{self.kept_unfinished_with_text} unfinished with text") + + +def _translation_type(attrs: str) -> str: + m = TYPE_RE.search(attrs) + return m.group("type") if m else "" + + +def _finish(whole: str, body: str, tm: re.Match, tattrs: str, + stats: Stats) -> str: + """Drop the unfinished flag of a translation equal to its source.""" + stats.finished_identical += 1 + stats.unfinished_cleared += 1 + start = whole.index(body) + tm.start() + old = tm.group(0) + new = old.replace(f"", + f"", 1) + return whole[:start] + new + whole[start + len(old):] + + +def _mirror_message(match: re.Match, forms: int, stats: Stats) -> str: + whole = match.group(0) + attrs, body = match.group("attrs"), match.group("body") + numerus = 'numerus="yes"' in attrs + sm = SOURCE_RE.search(body) + tm = TRANSLATION_RE.search(body) + if sm is None or tm is None: + return whole + source = sm.group("text") + if "<" in source: + raise SourceError( + "a contains a child element and cannot be copied: " + + source[:60]) + tattrs, tbody = tm.group("attrs"), tm.group("body") + ttype = _translation_type(tattrs) + if ttype in ("vanished", "obsolete"): + stats.kept_vanished += 1 + return whole + + if numerus: + found = FORM_RE.findall(tbody) + empty = [f for f in found if f == ""] + if found and not empty: + if ttype == "unfinished" and all(f == source for f in found): + return _finish(whole, body, tm, tattrs, stats) + if ttype == "unfinished": + stats.kept_unfinished_with_text += 1 + elif all(f == source for f in found): + stats.kept_identical += 1 + else: + stats.kept_translated += 1 + return whole + if found: + new_body = FORM_RE.sub( + lambda f: f.group(0) if f.group("text") != "" + else f"{source}", tbody) + stats.mirrored_forms += len(empty) + else: + new_body = "\n" + "".join( + f"{FORM_INDENT}{source}\n" + for _ in range(forms)) + CLOSE_INDENT + stats.mirrored_forms += forms + else: + if tbody != "": + if ttype == "unfinished" and tbody == source: + return _finish(whole, body, tm, tattrs, stats) + if ttype == "unfinished": + stats.kept_unfinished_with_text += 1 + elif tbody == source: + stats.kept_identical += 1 + else: + stats.kept_translated += 1 + return whole + new_body = source + + stats.mirrored_messages += 1 + if ttype == "unfinished": + stats.unfinished_cleared += 1 + kept_attrs = TYPE_RE.sub("", tattrs) + new_translation = f"{new_body}" + new_message_body = body[:tm.start()] + new_translation + body[tm.end():] + return f"{new_message_body}" + + +def mirror_text(text: str, forms: int = 2) -> tuple[str, Stats]: + """Return the mirrored .ts text and what was done to it.""" + stats = Stats() + new = MESSAGE_RE.sub(lambda m: _mirror_message(m, forms, stats), text) + return new, stats + + +def main(argv: list[str] | None = None) -> int: + parser = argparse.ArgumentParser( + description="Copy each empty translation's source text into the " + "translation of a source-language .ts file.") + parser.add_argument("ts", type=Path, help="the .ts file, e.g. lang/qet_fr.ts") + parser.add_argument("--check", action="store_true", + help="change nothing; exit 1 if a run would change the file") + parser.add_argument("--forms", type=int, default=2, + help="plural forms to write when a plural message has " + "none (default 2, French)") + args = parser.parse_args(argv) + + with open(args.ts, encoding="utf-8", newline="") as f: + text = f.read() + try: + new, stats = mirror_text(text, args.forms) + ET.fromstring(new.encode("utf-8")) + except (SourceError, ET.ParseError) as e: + print(f"{args.ts}: {e}", file=sys.stderr) + return 2 + print(f"{args.ts}: {stats.summary()}") + if args.check: + return 1 if stats.changed() else 0 + if new != text: + with open(args.ts, "w", encoding="utf-8", newline="") as f: + f.write(new) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/misc/i18n/test_mirror_source_language.py b/misc/i18n/test_mirror_source_language.py new file mode 100755 index 000000000..7b462d4e3 --- /dev/null +++ b/misc/i18n/test_mirror_source_language.py @@ -0,0 +1,210 @@ +#!/usr/bin/env python3 +""" +Regression suite for mirror_source_language.py. + + python3 misc/i18n/test_mirror_source_language.py + +The fixtures are a hand-written pair: mirror_before.ts is what lupdate +leaves behind, mirror_after.ts is what the script must produce from it, +byte for byte. Every message class the script distinguishes appears +once in the pair, so a change in behaviour shows up as a diff in a +known place. + +The last test looks at the repository's own lang/qet_fr.ts and fails +when it needs a mirror run: that is the maintenance rule from +INSTALL.md, kept honest. +""" + +from __future__ import annotations + +import os +import re +import subprocess +import sys +import tempfile +import unittest +import xml.etree.ElementTree as ET +from pathlib import Path + +HERE = Path(__file__).resolve().parent +sys.path.insert(0, str(HERE)) +import mirror_source_language as m # noqa: E402 + +SCRIPT = HERE / "mirror_source_language.py" +BEFORE = HERE / "fixtures" / "mirror_before.ts" +AFTER = HERE / "fixtures" / "mirror_after.ts" +REPO_FR = HERE.parent.parent / "lang" / "qet_fr.ts" + + +def read(path: Path) -> str: + with open(path, encoding="utf-8", newline="") as f: + return f.read() + + +def messages(text: str) -> dict[tuple[str, str], ET.Element]: + """(context, source) -> element.""" + out = {} + for ctx in ET.fromstring(text.encode("utf-8")).iter("context"): + name = ctx.findtext("name") + for msg in ctx.iter("message"): + out[(name, msg.findtext("source"))] = msg + return out + + +TRANSLATION_RE = re.compile(r"]*>.*?", re.S) + + +def outside_translations(text: str) -> str: + """The file with every element blanked out.""" + return TRANSLATION_RE.sub("", text) + + +class MirrorText(unittest.TestCase): + def test_nothing_to_do_is_byte_identical(self): + after = read(AFTER) + out, stats = m.mirror_text(after) + self.assertEqual(out, after) + self.assertEqual(stats.mirrored_messages, 0) + self.assertEqual(stats.mirrored_forms, 0) + self.assertEqual(stats.finished_identical, 0) + self.assertEqual(stats.unfinished_cleared, 0) + + def test_before_becomes_after(self): + out, stats = m.mirror_text(read(BEFORE)) + self.assertEqual(out, read(AFTER)) + self.assertEqual(stats.mirrored_messages, 8) + self.assertEqual(stats.mirrored_forms, 3) + self.assertEqual(stats.finished_identical, 2) + self.assertEqual(stats.unfinished_cleared, 4) + self.assertEqual(stats.kept_translated, 1) + self.assertEqual(stats.kept_identical, 1) + self.assertEqual(stats.kept_vanished, 2) + self.assertEqual(stats.kept_unfinished_with_text, 1) + + def test_nothing_outside_translation_elements_changes(self): + """Header, locations, comments, sources and indentation are untouched.""" + self.assertEqual(outside_translations(read(BEFORE)), + outside_translations(read(AFTER))) + + def test_idempotent(self): + once, _ = m.mirror_text(read(BEFORE)) + twice, stats = m.mirror_text(once) + self.assertEqual(once, twice) + self.assertFalse(stats.changed()) + + def test_untouched_classes(self): + before, after = messages(read(BEFORE)), messages(read(AFTER)) + for key in [("Alpha", "Apply to Entire Project"), # English source, translated + ("Alpha", "QElectroTech"), # identical + ("Alpha", "Brouillon"), # unfinished with text + ("Alpha", "Ancien texte"), # vanished with text + ("Alpha", "Autre ancien texte")]: # vanished, empty + self.assertEqual(ET.tostring(before[key]), ET.tostring(after[key]), key) + self.assertEqual(after[("Alpha", "Brouillon")].find("translation").get("type"), + "unfinished") + + def test_escaping_is_copied_verbatim(self): + """' must stay ', never become &apos; (a re-escape bug).""" + out, _ = m.mirror_text(read(BEFORE)) + for raw in ("<b>%1</b> : %2", + "&Aide", + "l'élément "x""): + self.assertIn(raw, out) + for key, msg in messages(out).items(): + tr = msg.find("translation") + if key[0] == "Beta": + self.assertEqual(tr.text, msg.findtext("source"), key) + + def test_unfinished_identical_to_source_is_finished(self): + """lupdate's same-text heuristic leaves these behind after a refresh; + 39 of them appeared in lang/qet_fr.ts on 2026-10-07.""" + out, _ = m.mirror_text(read(BEFORE)) + msgs = messages(out) + for key in [("Alpha", "Copier"), ("Alpha", "%n page(s)")]: + self.assertIsNone(msgs[key].find("translation").get("type"), key) + self.assertEqual(msgs[("Alpha", "Brouillon")].find("translation").get("type"), + "unfinished", "a different unfinished text stays unfinished") + + def test_multiline_and_spaces_kept(self): + out, _ = m.mirror_text(read(BEFORE)) + self.assertIn(" Ligne 1\nLigne 2\n", out) + + def test_plural_half_empty_fills_only_the_empty_form(self): + out, _ = m.mirror_text(read(BEFORE)) + forms = [f.text for f in messages(out)[("Alpha", "%n élément(s)")] + .find("translation").iter("numerusform")] + self.assertEqual(forms, ["%n élément", "%n élément(s)"]) + + def test_plural_both_empty_fills_both_and_clears_unfinished(self): + out, _ = m.mirror_text(read(BEFORE)) + tr = messages(out)[("Alpha", "%n conducteur(s)")].find("translation") + self.assertIsNone(tr.get("type")) + self.assertEqual([f.text for f in tr.iter("numerusform")], + ["%n conducteur(s)", "%n conducteur(s)"]) + + def test_plural_without_forms_gets_default_forms(self): + text = ('C\n' + ' %n x\n' + ' \n' + ' ') + out, stats = m.mirror_text(text, forms=3) + self.assertEqual(stats.mirrored_forms, 3) + self.assertEqual(out.count("%n x"), 3) + self.assertNotIn("unfinished", out) + ET.fromstring(out) + + def test_source_with_child_element_is_refused(self): + text = ('C\n' + ' ab\n' + ' \n' + ' ') + with self.assertRaises(m.SourceError): + m.mirror_text(text) + + +class CommandLine(unittest.TestCase): + def run_script(self, *args): + return subprocess.run([sys.executable, str(SCRIPT), *args], + capture_output=True, text=True) + + def copy(self, src: Path) -> Path: + d = tempfile.mkdtemp() + dst = Path(d) / src.name + dst.write_bytes(src.read_bytes()) + self.addCleanup(lambda: (dst.unlink(), os.rmdir(d))) + return dst + + def test_check_exit_codes(self): + self.assertEqual(self.run_script("--check", str(BEFORE)).returncode, 1) + self.assertEqual(self.run_script("--check", str(AFTER)).returncode, 0) + self.assertEqual(read(BEFORE).count(""), 5, + "--check must not write") + + def test_rewrite_then_check_passes(self): + tmp = self.copy(BEFORE) + r = self.run_script(str(tmp)) + self.assertEqual(r.returncode, 0, r.stderr) + self.assertIn("mirrored 8 message(s), 3 plural form(s)", r.stdout) + self.assertEqual(read(tmp), read(AFTER)) + self.assertEqual(self.run_script("--check", str(tmp)).returncode, 0) + + def test_child_element_exits_2_and_leaves_file(self): + tmp = self.copy(BEFORE) + bad = read(tmp).replace("Ouvrir le projet", + 'ab') + tmp.write_text(bad, encoding="utf-8", newline="") + r = self.run_script(str(tmp)) + self.assertEqual(r.returncode, 2) + self.assertIn("child element", r.stderr) + self.assertEqual(read(tmp), bad) + + @unittest.skipUnless(REPO_FR.is_file(), "lang/qet_fr.ts not found next to the tool") + def test_repository_french_file_is_mirrored(self): + """The maintenance rule: run the mirror after update_translations.""" + r = self.run_script("--check", str(REPO_FR)) + self.assertEqual(r.returncode, 0, + f"lang/qet_fr.ts needs a mirror run:\n{r.stdout}") + + +if __name__ == "__main__": + unittest.main() diff --git a/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp b/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp index ffd3dfeed..fa16eee57 100644 --- a/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp +++ b/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp @@ -34,10 +34,16 @@ QetGraphicsHandlerItem::QetGraphicsHandlerItem(qreal size) void QetGraphicsHandlerItem::setSize(qreal size) { + if (m_size_animation) { + m_size_animation->stop(); + m_size_animation->deleteLater(); + m_size_animation.clear(); + } prepareGeometryChange(); m_current_size = m_original_size = size; m_handler_rect.setRect(0-m_current_size/2, 0-m_current_size/2, m_current_size, m_current_size); m_br.setRect(-1-m_current_size/2, -1-m_current_size/2, m_current_size+2, m_current_size+2); + update(); } /** @@ -90,7 +96,12 @@ void QetGraphicsHandlerItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { Q_UNUSED(event); - auto animation_ = new QPropertyAnimation(this, "currentSize"); + if (m_size_animation) { + m_size_animation->stop(); + m_size_animation->deleteLater(); + } + auto animation_ = new QPropertyAnimation(this, "currentSize", this); + m_size_animation = animation_; animation_->setStartValue(m_original_size); animation_->setEndValue(m_original_size*1.5); animation_->setDuration(200); @@ -102,7 +113,12 @@ void QetGraphicsHandlerItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { Q_UNUSED(event); - auto animation_ = new QPropertyAnimation(this, "currentSize"); + if (m_size_animation) { + m_size_animation->stop(); + m_size_animation->deleteLater(); + } + auto animation_ = new QPropertyAnimation(this, "currentSize", this); + m_size_animation = animation_; animation_->setStartValue(m_current_size); animation_->setEndValue(m_original_size); animation_->setDuration(200); @@ -126,7 +142,7 @@ void QetGraphicsHandlerItem::setCurrentSize(qreal size) */ QVector QetGraphicsHandlerItem::handlerForPoint( const QVector &points, - int size) + qreal size) { QVector list_; for (QPointF point : points) diff --git a/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h b/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h index f14fc8910..0853af35b 100644 --- a/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h +++ b/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h @@ -20,6 +20,8 @@ #include #include +#include +class QPropertyAnimation; /** @brief The QetGraphicsHandlerItem class @@ -69,10 +71,11 @@ class QetGraphicsHandlerItem : public QGraphicsObject qreal m_original_size; QColor m_color; QPen m_pen; + QPointer m_size_animation; public: static QVector handlerForPoint( - const QVector &points, int size = 10); + const QVector &points, qreal size = 10); }; #endif // QETGRAPHICSHANDLERITEM_H diff --git a/sources/TerminalStrip/UndoCommand/sortterminalstripcommand.cpp b/sources/TerminalStrip/UndoCommand/sortterminalstripcommand.cpp index 95ce52d13..898ec8973 100644 --- a/sources/TerminalStrip/UndoCommand/sortterminalstripcommand.cpp +++ b/sources/TerminalStrip/UndoCommand/sortterminalstripcommand.cpp @@ -19,6 +19,7 @@ #include "../terminalstrip.h" #include "../physicalterminal.h" #include "../realterminal.h" +#include "../../utils/qetutils.h" SortTerminalStripCommand::SortTerminalStripCommand(TerminalStrip *strip, QUndoCommand *parent) : QUndoCommand(parent), @@ -46,46 +47,16 @@ void SortTerminalStripCommand::redo() void SortTerminalStripCommand::sort() { - std::sort(m_new_order.begin(), m_new_order.end(), [](QSharedPointer arg1, QSharedPointer arg2) + auto label_of = [](const QSharedPointer &t) -> QString { - const QRegularExpression rx(QStringLiteral("^\\d+")); + return t->realTerminalCount() ? t->realTerminals().constLast()->label() + : QString(); + }; - QString str1; - QString str2; - int int1 =-1; - int int2 =-1; - - if (arg1->realTerminalCount()) - { - str1 = arg1->realTerminals().constLast()->label(); - - auto match = rx.match(str1); - if (match.hasMatch()) { - int1 = match.captured(0).toInt(); - } - } - - if (arg2->realTerminalCount()) - { - str2 = arg2->realTerminals().constLast()->label(); - - auto match = rx.match(str2); - if (match.hasMatch()) { - int2 = match.captured(0).toInt(); - } - } - - //Sort as numbers if both string - //start at least by a digit and - //the number of each string are different. - //Else sort as string - if (int1 >= 0 && - int2 >= 0 && - int1 != int2) { - return int1 &arg1, + const QSharedPointer &arg2) + { + return QETUtils::naturalLessThan(label_of(arg1), label_of(arg2)); }); } diff --git a/sources/TerminalStrip/ui/freeterminalmodel.cpp b/sources/TerminalStrip/ui/freeterminalmodel.cpp index 69c6d02cf..27183100e 100644 --- a/sources/TerminalStrip/ui/freeterminalmodel.cpp +++ b/sources/TerminalStrip/ui/freeterminalmodel.cpp @@ -400,7 +400,7 @@ void FreeTerminalModel::fillTerminalVector() std::sort(free_terminal_vector.begin(), free_terminal_vector.end(), [](TerminalElement *a, TerminalElement *b) { - return QETUtils::sortBeginIntString(a->elementData().m_informations.value(QETInformation::ELMT_LABEL).toString(), + return QETUtils::naturalLessThan(a->elementData().m_informations.value(QETInformation::ELMT_LABEL).toString(), b->elementData().m_informations.value(QETInformation::ELMT_LABEL).toString()); }); diff --git a/sources/TerminalStrip/ui/terminalstriptreedockwidget.cpp b/sources/TerminalStrip/ui/terminalstriptreedockwidget.cpp index 997bba689..7acfd7d8b 100644 --- a/sources/TerminalStrip/ui/terminalstriptreedockwidget.cpp +++ b/sources/TerminalStrip/ui/terminalstriptreedockwidget.cpp @@ -27,6 +27,7 @@ #include "../../qetgraphicsitem/terminalelement.h" #include "../terminalstrip.h" #include "../../qetinformation.h" +#include "../../utils/qetutils.h" #include "freeterminalmodel.h" #include @@ -257,7 +258,7 @@ void TerminalStripTreeDockWidget::buildTree() auto ts_vector = m_project->terminalStrip(); std::sort(ts_vector.begin(), ts_vector.end(), [](TerminalStrip *a, TerminalStrip *b) { - return a->name() < b->name(); + return QETUtils::naturalLessThan(a->name(), b->name()); }); for (const auto &ts : std::as_const(ts_vector)) { @@ -355,9 +356,9 @@ void TerminalStripTreeDockWidget::addFreeTerminal() //Sort the terminal element by label std::sort(vector_.begin(), vector_.end(), [](TerminalElement *a, TerminalElement *b) { - return a->elementData().m_informations.value(QETInformation::ELMT_LABEL).toString() - < - b->elementData().m_informations.value(QETInformation::ELMT_LABEL).toString(); + return QETUtils::naturalLessThan( + a->elementData().m_informations.value(QETInformation::ELMT_LABEL).toString(), + b->elementData().m_informations.value(QETInformation::ELMT_LABEL).toString()); }); auto free_terminal_item = ui->m_tree_view->topLevelItem(1); diff --git a/sources/autoNum/assignvariables.cpp b/sources/autoNum/assignvariables.cpp index ac92a4e9f..633fe7da3 100644 --- a/sources/autoNum/assignvariables.cpp +++ b/sources/autoNum/assignvariables.cpp @@ -482,7 +482,10 @@ namespace autonum m_seq_struct.wrap.size())) ); - for (int i=1; i<=max ; i++) + // Highest number first: "%sequ_1" is also the start of + // "%sequ_10", so replacing 1 before 10 would turn %sequ_10 + // into the first value followed by a "0". + for (int i=max; i>=1 ; i--) { if (m_assigned_label.contains("%sequ_" + QString::number(i)) && m_seq_struct.unit.size() >= i) { m_assigned_label.replace("%sequ_" + QString::number(i),m_seq_struct.unit.at(i-1)); diff --git a/sources/borderproperties.cpp b/sources/borderproperties.cpp index b1812032c..b9ab708bd 100644 --- a/sources/borderproperties.cpp +++ b/sources/borderproperties.cpp @@ -117,9 +117,15 @@ void BorderProperties::toXml(QDomElement &e) const */ void BorderProperties::fromXml(QDomElement &e) { if (e.hasAttribute("cols")) columns_count = e.attribute("cols").toInt(); - if (e.hasAttribute("colsize")) columns_width = e.attribute("colsize").toInt(); if (e.hasAttribute("rows")) rows_count = e.attribute("rows").toInt(); - if (e.hasAttribute("rowsize")) rows_height = e.attribute("rowsize").toInt(); + // The sizes are decimals (toXml() writes them with %1), read as + // BorderTitleBlock::borderFromXml() does; an unreadable value is + // left as it was. + bool ok; + qreal size = e.attribute("colsize").toDouble(&ok); + if (ok && qIsFinite(size)) columns_width = size; + size = e.attribute("rowsize").toDouble(&ok); + if (ok && qIsFinite(size)) rows_height = size; if (e.hasAttribute("displaycols")) display_columns = e.attribute("displaycols") == "true"; if (e.hasAttribute("displayrows")) display_rows = e.attribute("displayrows") == "true"; } diff --git a/sources/conductorproperties.cpp b/sources/conductorproperties.cpp index 12a55539c..6cf2f40fd 100644 --- a/sources/conductorproperties.cpp +++ b/sources/conductorproperties.cpp @@ -436,7 +436,10 @@ void ConductorProperties::fromSettings(QSettings &settings, const QString &prefi m_wire_color = settings.value(prefix + "conductor_color", "").toString(); m_wire_section = settings.value(prefix + "conductor_section", "").toString(); text_size = settings.value(prefix + "textsize", "7").toInt(); - cond_size = settings.value(prefix + "size", "1").toInt(); + // Saved with QString::number(cond_size): a decimal such as 1.4, + // which toInt() would read as 0. + cond_size = settings.value(prefix + "size", "1").toDouble(); + if (!qIsFinite(cond_size) || cond_size <= 0) cond_size = 1; m_show_text = settings.value(prefix + "displaytext", true).toBool(); m_one_text_per_folio = settings.value(prefix + "onetextperfolio", false).toBool(); verti_rotate_text = settings.value((prefix + "vertirotatetext"), "270").toDouble(); diff --git a/sources/dataBase/projectdatabase.cpp b/sources/dataBase/projectdatabase.cpp index 31153f1a1..8afe0ed55 100644 --- a/sources/dataBase/projectdatabase.cpp +++ b/sources/dataBase/projectdatabase.cpp @@ -236,7 +236,7 @@ struct DocumentElement //the attributes files written before carry. bool readSequence(const QDomElement &item, autonum::sequentialNumbers *sequence) { - for (const char *name : {"sequ_1", "sequf_1", "seqt_1", "seqtf_1", "seqh_1"}) { + for (const char *name : {"sequ_1", "sequf_1", "seqt_1", "seqtf_1", "seqh_1", "seqhf_1"}) { if (item.hasAttribute(QLatin1String(name))) { return false; } diff --git a/sources/diagram.cpp b/sources/diagram.cpp index 0cff47983..7bde5c1f9 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -45,6 +45,7 @@ #include "diagramsortkeys.h" #include "itemgroups.h" #include "textgrid.h" +#include "foliogrid.h" #include #include #include @@ -339,10 +340,8 @@ void Diagram::drawBackground(QPainter *p, const QRectF &r) { p -> setBrush(Qt::NoBrush); - int xGrid = settings.value(QStringLiteral("diagrameditor/Xgrid"), - Diagram::xGrid).toInt(); - int yGrid = settings.value(QStringLiteral("diagrameditor/Ygrid"), - Diagram::yGrid).toInt(); + const int xGrid = FolioGrid::step(settings.value(FolioGrid::x_key), Diagram::xGrid); + const int yGrid = FolioGrid::step(settings.value(FolioGrid::y_key), Diagram::yGrid); qreal limit_x = rect.x() + rect.width(); qreal limit_y = rect.y() + rect.height(); @@ -642,7 +641,7 @@ void Diagram::keyPressEvent(QKeyEvent *event) return; } } - else if(event->modifiers() == Qt::AltModifier) + else if(event->modifiers() == Qt::ControlModifier) { QSettings settings; int xKeyGridFine = settings.value(QStringLiteral("diagrameditor/key_fine_Xgrid"), @@ -685,7 +684,7 @@ void Diagram::keyPressEvent(QKeyEvent *event) return; } } - else if(event->modifiers() == Qt::ControlModifier) + else if(event->modifiers() == Qt::AltModifier) { //Adjust the alignment of a texts group if(selectedItems().size() == 1 @@ -1614,10 +1613,14 @@ bool Diagram::fromXml(QDomElement &document, m_conductors_autonum_name = root.attribute(QStringLiteral("conductorAutonum")); // Load Freeze New Element - m_freeze_new_elements = root.attribute(QStringLiteral("freezeNewElement")).toInt(); + // Written as "true"/"false" by toXml(), so compare the text: + // toInt() of either word is 0. + m_freeze_new_elements = root.attribute(QStringLiteral("freezeNewElement")) + == QLatin1String("true"); // Load Freeze New Conductor - m_freeze_new_conductors_ = root.attribute(QStringLiteral("freezeNewConductor")).toInt(); + m_freeze_new_conductors_ = root.attribute(QStringLiteral("freezeNewConductor")) + == QLatin1String("true"); //Load Element Folio Sequential folioSequentialsFromXml(root, @@ -2942,10 +2945,8 @@ DiagramPosition Diagram::convertPosition(const QPointF &pos) { QPointF Diagram::snapToGrid(const QPointF &p) { QSettings settings; - int xGrid = settings.value(QStringLiteral("diagrameditor/Xgrid"), - Diagram::xGrid).toInt(); - int yGrid = settings.value(QStringLiteral("diagrameditor/Ygrid"), - Diagram::yGrid).toInt(); + const int xGrid = FolioGrid::step(settings.value(FolioGrid::x_key), Diagram::xGrid); + const int yGrid = FolioGrid::step(settings.value(FolioGrid::y_key), Diagram::yGrid); //Return a point rounded to the nearest pixel if (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier)) @@ -2977,10 +2978,8 @@ QPointF Diagram::snapToTextGrid(const QPointF &p) : settings.value(TextGrid::settings_key, 1).toReal(); return TextGrid::snap(p, - settings.value(QStringLiteral("diagrameditor/Xgrid"), - Diagram::xGrid).toInt(), - settings.value(QStringLiteral("diagrameditor/Ygrid"), - Diagram::yGrid).toInt(), + FolioGrid::step(settings.value(FolioGrid::x_key), Diagram::xGrid), + FolioGrid::step(settings.value(FolioGrid::y_key), Diagram::yGrid), divisor); } diff --git a/sources/diagramevent/diagrameventaddpaste.cpp b/sources/diagramevent/diagrameventaddpaste.cpp index 9cfbe2b0c..354bd8132 100644 --- a/sources/diagramevent/diagrameventaddpaste.cpp +++ b/sources/diagramevent/diagrameventaddpaste.cpp @@ -19,6 +19,7 @@ #include "../autoNum/ui/pastenumberingimport.h" #include "../diagram.h" +#include "../foliogrid.h" #include "../diagramcommands.h" #include "../qetapp.h" #include "../qetdiagrameditor.h" @@ -108,10 +109,8 @@ } const QPointF top_left = items_rect.topLeft(); QSettings settings; - const int xGrid = settings.value(QStringLiteral("diagrameditor/Xgrid"), - Diagram::xGrid).toInt(); - const int yGrid = settings.value(QStringLiteral("diagrameditor/Ygrid"), - Diagram::yGrid).toInt(); + const int xGrid = FolioGrid::step(settings.value(FolioGrid::x_key), Diagram::xGrid); + const int yGrid = FolioGrid::step(settings.value(FolioGrid::y_key), Diagram::yGrid); const auto snapGrid = [xGrid, yGrid](const QPointF &p) -> QPointF { return QPointF( qRound(p.x() / xGrid) * xGrid, @@ -287,10 +286,8 @@ void DiagramEventAddPaste::showHint() void DiagramEventAddPaste::moveTo(const QPointF &scene_pos) { QSettings settings; - const int xGrid = settings.value(QStringLiteral("diagrameditor/Xgrid"), - Diagram::xGrid).toInt(); - const int yGrid = settings.value(QStringLiteral("diagrameditor/Ygrid"), - Diagram::yGrid).toInt(); + const int xGrid = FolioGrid::step(settings.value(FolioGrid::x_key), Diagram::xGrid); + const int yGrid = FolioGrid::step(settings.value(FolioGrid::y_key), Diagram::yGrid); const auto snapGrid = [xGrid, yGrid](const QPointF &p) -> QPointF { return QPointF( diff --git a/sources/diagramview.cpp b/sources/diagramview.cpp index 971fa9520..fe586a03b 100644 --- a/sources/diagramview.cpp +++ b/sources/diagramview.cpp @@ -40,6 +40,7 @@ #include "utils/conductorcreator.h" #include "undocommand/addgraphicsobjectcommand.h" #include "diagram.h" +#include "foliogrid.h" #include "diagramcontexttoolbar.h" #include "diagramgestureoverlay.h" #include "gesturesettings.h" @@ -643,10 +644,8 @@ void DiagramView::duplicate(const QPoint &stepOffset) if (selection.isEmpty()) return; QSettings settings; - const int x_grid = settings.value(QStringLiteral("diagrameditor/Xgrid"), - Diagram::xGrid).toInt(); - const int y_grid = settings.value(QStringLiteral("diagrameditor/Ygrid"), - Diagram::yGrid).toInt(); + const int x_grid = FolioGrid::step(settings.value(FolioGrid::x_key), Diagram::xGrid); + const int y_grid = FolioGrid::step(settings.value(FolioGrid::y_key), Diagram::yGrid); const QPointF offset(stepOffset.x() * x_grid, stepOffset.y() * y_grid); // Mirrors copy(), but does not touch the system clipboard: Ctrl+D diff --git a/sources/editor/graphicspart/partline.h b/sources/editor/graphicspart/partline.h index 6d6817abe..d0ee256bf 100644 --- a/sources/editor/graphicspart/partline.h +++ b/sources/editor/graphicspart/partline.h @@ -127,6 +127,6 @@ class PartLine : public CustomElementGraphicPart int m_vector_index = -1; QPropertyUndoCommand *m_undo_command; QVector m_handler_vector; - qreal m_rot; + qreal m_rot = 0; }; #endif diff --git a/sources/editor/graphicspart/partpolygon.h b/sources/editor/graphicspart/partpolygon.h index ea9e831b4..b4ab32e1a 100644 --- a/sources/editor/graphicspart/partpolygon.h +++ b/sources/editor/graphicspart/partpolygon.h @@ -119,6 +119,6 @@ class PartPolygon : public CustomElementGraphicPart QAction *m_insert_point, *m_remove_point; QPointF m_context_menu_pos; - qreal m_rot; + qreal m_rot = 0; }; #endif diff --git a/sources/editor/graphicspart/partterminal.cpp b/sources/editor/graphicspart/partterminal.cpp index 93c6866c7..e510320d5 100644 --- a/sources/editor/graphicspart/partterminal.cpp +++ b/sources/editor/graphicspart/partterminal.cpp @@ -481,6 +481,13 @@ void PartTerminal::setMasterLabelIndex(int index) emit masterLabelIndexChanged(); } +void PartTerminal::setPotential(const QString &potential) +{ + if (d->m_potential == potential) return; + d->m_potential = potential; + emit potentialChanged(); +} + /** Updates the position of the second point according to the position and orientation of the terminal. diff --git a/sources/editor/graphicspart/partterminal.h b/sources/editor/graphicspart/partterminal.h index 9bf5e0571..15b6cb543 100644 --- a/sources/editor/graphicspart/partterminal.h +++ b/sources/editor/graphicspart/partterminal.h @@ -44,6 +44,7 @@ class PartTerminal : public CustomElementGraphicPart Q_PROPERTY(QColor label_color READ labelColor WRITE setLabelColor) Q_PROPERTY(bool use_master_label READ useMasterLabel WRITE setUseMasterLabel) Q_PROPERTY(int master_label_index READ masterLabelIndex WRITE setMasterLabelIndex) + Q_PROPERTY(QString potential READ potential WRITE setPotential) public: // constructors, destructor @@ -56,6 +57,7 @@ class PartTerminal : public CustomElementGraphicPart void orientationChanged(); void nameChanged(); void terminalTypeChanged(); + void potentialChanged(); void showNameChanged(); void labelPosChanged(); void labelFontChanged(); @@ -140,6 +142,9 @@ class PartTerminal : public CustomElementGraphicPart int masterLabelIndex() const { return d->m_master_label_index; } void setMasterLabelIndex(int index); + QString potential() const { return d->m_potential; } + void setPotential(const QString &potential); + void setNewUuid(); //The terminal's own uuid, the one saved on : hides //CustomElementGraphicPart::uuid(), which a terminal never saves. diff --git a/sources/editor/ui/terminaleditor.cpp b/sources/editor/ui/terminaleditor.cpp index b82ad7c77..0d8470046 100644 --- a/sources/editor/ui/terminaleditor.cpp +++ b/sources/editor/ui/terminaleditor.cpp @@ -84,6 +84,7 @@ void TerminalEditor::updateForm() ui->m_orientation_cb->setCurrentIndex(ui->m_orientation_cb->findData(m_part->property("orientation"))); ui->m_name_le->setText(m_part->terminalName()); ui->m_type_cb->setCurrentIndex(ui->m_type_cb->findData(m_part->terminalType())); + ui->m_potential_le->setText(m_part->potential()); ui->m_show_name_cb->setChecked(m_part->showName()); ui->m_label_x_dsb->setValue(m_part->labelPos().x()); @@ -263,6 +264,24 @@ void TerminalEditor::nameEdited() m_locked=false; } +void TerminalEditor::potentialEdited() +{ + if (m_locked) { + return; + } + + m_locked = true; + QString potential_(ui->m_potential_le->text()); + + if (m_part->potential() != potential_) + { + auto undo = new QPropertyUndoCommand(m_part, "potential", m_part->property("potential"), potential_); + undo->setText(tr("Change the potential of a terminal")); + undoStack().push(undo); + } + m_locked = false; +} + /** * @brief TerminalEditor::typeEdited */ @@ -458,6 +477,8 @@ void TerminalEditor::activeConnections(bool active) this, &TerminalEditor::labelAlignClicked); m_editor_connections << connect(ui->m_label_frame_cb, &QCheckBox::toggled, this, &TerminalEditor::labelFrameEdited); + m_editor_connections << connect(ui->m_potential_le, &QLineEdit::editingFinished, + this, &TerminalEditor::potentialEdited); m_editor_connections << connect(ui->m_use_master_label_cb, &QCheckBox::toggled, this, &TerminalEditor::useMasterLabelEdited); m_editor_connections << connect(ui->m_master_label_cb, QOverload::of(&QComboBox::activated), @@ -487,6 +508,7 @@ void TerminalEditor::activeChangeConnections(bool active) m_change_connections << connect(m_part, &PartTerminal::labelVAlignmentChanged, this, &TerminalEditor::updateForm); m_change_connections << connect(m_part, &PartTerminal::labelFrameChanged, this, &TerminalEditor::updateForm); m_change_connections << connect(m_part, &PartTerminal::labelColorChanged, this, &TerminalEditor::updateForm); + m_change_connections << connect(m_part, &PartTerminal::potentialChanged, this, &TerminalEditor::updateForm); m_change_connections << connect(m_part, &PartTerminal::useMasterLabelChanged, this, &TerminalEditor::updateForm); m_change_connections << connect(m_part, &PartTerminal::masterLabelIndexChanged, this, &TerminalEditor::updateForm); } else { diff --git a/sources/editor/ui/terminaleditor.h b/sources/editor/ui/terminaleditor.h index 7c15d9f2c..57f6ea5e6 100644 --- a/sources/editor/ui/terminaleditor.h +++ b/sources/editor/ui/terminaleditor.h @@ -58,6 +58,7 @@ class TerminalEditor : public ElementItemEditor void orientationEdited(); void nameEdited(); void typeEdited(); + void potentialEdited(); void showNameEdited(); void labelPosEdited(); void labelFontClicked(); diff --git a/sources/editor/ui/terminaleditor.ui b/sources/editor/ui/terminaleditor.ui index 132018af3..09f1f6506 100644 --- a/sources/editor/ui/terminaleditor.ui +++ b/sources/editor/ui/terminaleditor.ui @@ -48,7 +48,7 @@ - + @@ -61,7 +61,7 @@ - + Name: @@ -78,7 +78,21 @@ - + + + + Potential: + + + + + + + No effect unless "Potential isolation" is checked (all terminals of the block then stay connected). When it is checked, terminals sharing the same value stay connected to each other and the others are isolated. + + + + Terminal name @@ -214,7 +228,7 @@ - + Master’s label diff --git a/sources/foliogrid.h b/sources/foliogrid.h new file mode 100644 index 000000000..9fb3fe772 --- /dev/null +++ b/sources/foliogrid.h @@ -0,0 +1,54 @@ +/* + Copyright 2006-2026 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ +#ifndef FOLIOGRID_H +#define FOLIOGRID_H + +#include +#include +#include + +/** + The folio grid: the step, in pixels, that symbols snap to. Both steps + are kept in the settings; the preferences page only offers 1 and up, + but a hand-edited or damaged settings file can hold 0, a negative + number or text, and the code that divides by the step or loops over it + must never see such a value. +*/ +namespace FolioGrid +{ + /// QSettings keys holding the two steps. + inline const QString x_key{QStringLiteral("diagrameditor/Xgrid")}; + inline const QString y_key{QStringLiteral("diagrameditor/Ygrid")}; + + /** + @return the step held in @p value, a settings entry; or @p fallback, + the built-in step, when the entry is missing, not a number, less + than 1, or more than an int holds (QVariant::toInt() wraps such a + number around instead of failing). + */ + inline int step(const QVariant &value, int fallback) + { + bool ok = false; + const qlonglong s = value.toLongLong(&ok); + if (!ok || s < 1 || s > std::numeric_limits::max()) + return fallback; + return int(s); + } +} + +#endif // FOLIOGRID_H diff --git a/sources/positionorder.h b/sources/positionorder.h new file mode 100644 index 000000000..4d895f419 --- /dev/null +++ b/sources/positionorder.h @@ -0,0 +1,69 @@ +/* + Copyright 2006-2026 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ +#ifndef POSITIONORDER_H +#define POSITIONORDER_H + +#include +#include + +/** + The order of items by their position on a folio, for std::sort: left to + right then top to bottom, or top to bottom then left to right. Each + function is a strict weak ordering, which std::sort requires: two items + at the same position come out in either order, but never "both before + each other", and the order is transitive. A comparison with "<=", or + with a tolerance ("within 1 px counts as aligned"), is neither, and + std::sort may then read past the range or assert. +*/ +namespace PositionOrder +{ + /// a before b when a is left of b, or level with it and above it. + inline bool xThenY(const QPointF &a, const QPointF &b) + { + if (a.x() != b.x()) return a.x() < b.x(); + return a.y() < b.y(); + } + + /// a before b when a is above b, or level with it and left of it. + inline bool yThenX(const QPointF &a, const QPointF &b) + { + if (a.y() != b.y()) return a.y() < b.y(); + return a.x() < b.x(); + } + + /// The position rounded to whole pixels, so that items placed a + /// fraction of a pixel apart count as aligned. + inline QPointF rounded(const QPointF &p) + { + return QPointF(qRound(p.x()), qRound(p.y())); + } + + /// xThenY() on the positions rounded to whole pixels. + inline bool roundedXThenY(const QPointF &a, const QPointF &b) + { + return xThenY(rounded(a), rounded(b)); + } + + /// yThenX() on the positions rounded to whole pixels. + inline bool roundedYThenX(const QPointF &a, const QPointF &b) + { + return yThenX(rounded(a), rounded(b)); + } +} + +#endif // POSITIONORDER_H diff --git a/sources/properties/terminaldata.cpp b/sources/properties/terminaldata.cpp index 1805ba3c9..f8a371107 100644 --- a/sources/properties/terminaldata.cpp +++ b/sources/properties/terminaldata.cpp @@ -129,6 +129,9 @@ QDomElement TerminalData::toXml(QDomDocument &xml_document) const xml_element.setAttribute("label_color", m_label_color.name()); } + if (!m_potential.isEmpty()) + xml_element.setAttribute("potential", m_potential); + // Save master label override settings if (m_use_master_label) { xml_element.setAttribute("use_master_label", "true"); @@ -207,6 +210,8 @@ bool TerminalData::fromXml (const QDomElement &xml_element) m_label_color = QColor(color_str); } + m_potential = xml_element.attribute("potential"); + // Read master label override settings m_use_master_label = (xml_element.attribute("use_master_label") == QLatin1String("true")); m_master_label_index = xml_element.attribute("master_label_index", "0").toInt(); diff --git a/sources/properties/terminaldata.h b/sources/properties/terminaldata.h index 9032e6b2c..7d269b4cd 100644 --- a/sources/properties/terminaldata.h +++ b/sources/properties/terminaldata.h @@ -103,6 +103,18 @@ class TerminalData : public PropertiesInterface */ QString m_name; + /** + @brief m_potential + An optional, symbol-author-chosen grouping identifier shared by + terminals that belong to the same physical terminal within + a multi-terminal block. When potential_isolating is enabled + on the parent element, terminals sharing a non-empty, + matching m_potential stay linked to each other; terminals + with different (or empty) values become isolated from each + other. Empty by default. + */ + QString m_potential; + /** @brief m_pos Position of the terminal. The second point is calculated diff --git a/sources/qetgraphicsitem/conductor.cpp b/sources/qetgraphicsitem/conductor.cpp index 4c9223a43..afae70051 100644 --- a/sources/qetgraphicsitem/conductor.cpp +++ b/sources/qetgraphicsitem/conductor.cpp @@ -1142,7 +1142,7 @@ bool Conductor::fromXml(QDomElement &dom_element) pr.fromXml(dom_element); //Load Sequential Values - if (dom_element.hasAttribute("sequ_1") || dom_element.hasAttribute("sequf_1") || dom_element.hasAttribute("seqt_1") || dom_element.hasAttribute("seqtf_1") || dom_element.hasAttribute("seqh_1") || dom_element.hasAttribute("sequf_1")) + if (dom_element.hasAttribute("sequ_1") || dom_element.hasAttribute("sequf_1") || dom_element.hasAttribute("seqt_1") || dom_element.hasAttribute("seqtf_1") || dom_element.hasAttribute("seqh_1") || dom_element.hasAttribute("seqhf_1")) ConductorXmlRetroCompatibility::loadSequential(dom_element, this); else m_autoNum_seq.fromXml(dom_element.firstChildElement("sequentialNumbers")); diff --git a/sources/qetgraphicsitem/diagramimageitem.cpp b/sources/qetgraphicsitem/diagramimageitem.cpp index f8495d455..e32464642 100644 --- a/sources/qetgraphicsitem/diagramimageitem.cpp +++ b/sources/qetgraphicsitem/diagramimageitem.cpp @@ -1595,6 +1595,18 @@ bool DiagramImageItem::fromXml(const QDomElement &e) m_crop_rect = m_crop_rect.intersected(m_base_pixmap.rect()); if (m_crop_rect.isEmpty()) m_crop_rect = m_base_pixmap.rect(); + + // The picture shown is always exactly the crop's size. When it is + // not, the crop is stale: older versions saved it after the crop + // was undone (fixed in #1310), with the uncropped picture shown. + // The next edit would apply that crop again, and undoing the edit + // would show the cropped picture. Keep what was shown instead. + if (hasCrop && pixmap.size() != m_crop_rect.size()) + { + if (pixmap.size() != m_base_pixmap.size()) + m_base_pixmap = pixmap; + m_crop_rect = m_base_pixmap.rect(); + } } // Baseline: the plain "rotation"/"size" attributes, understood by diff --git a/sources/qetgraphicsitem/element.cpp b/sources/qetgraphicsitem/element.cpp index abb3493f8..494f9941b 100644 --- a/sources/qetgraphicsitem/element.cpp +++ b/sources/qetgraphicsitem/element.cpp @@ -53,6 +53,7 @@ static const QString plcTerminalKeys[] = { QETInformation::ELMT_PLC_T4 }; #include "../qetxml.h" +#include "../positionorder.h" #include "../qetversion.h" #include "qgraphicsitemutility.h" #include @@ -1055,7 +1056,7 @@ bool Element::fromXml(QDomElement &e, || e.hasAttribute(QStringLiteral("seqt_1")) || e.hasAttribute(QStringLiteral("seqtf_1")) || e.hasAttribute(QStringLiteral("seqh_1")) - || e.hasAttribute(QStringLiteral("sequf_1"))) + || e.hasAttribute(QStringLiteral("seqhf_1"))) ElementXmlRetroCompatibility::loadSequential(e, this); else m_autoNum_seq.fromXml(e.firstChildElement(QStringLiteral("sequentialNumbers"))); @@ -1934,9 +1935,7 @@ bool comparPos(const Element *elmt1, const Element *elmt2) if (a != b) return apos().x() == elmt2->pos().x()) - return elmt1->y() <= elmt2->pos().y(); - return elmt1->pos().x() <= elmt2->pos().x(); + return PositionOrder::xThenY(elmt1->pos(), elmt2->pos()); } /** diff --git a/sources/qetgraphicsitem/terminal.cpp b/sources/qetgraphicsitem/terminal.cpp index a9f260a57..68219f11b 100644 --- a/sources/qetgraphicsitem/terminal.cpp +++ b/sources/qetgraphicsitem/terminal.cpp @@ -1039,6 +1039,18 @@ TerminalData::Type Terminal::terminalType() const return d->m_type; } +/** + @brief Terminal::potential + @return this terminal's own potential-group identifier (@see + TerminalData::m_potential). + An author-chosen grouping used only + within a single multi-terminal element. +*/ +QString Terminal::potential() const +{ + return d->m_potential; +} + /** @brief Terminal::setUseMasterLabel Set whether this terminal uses a label from the master's contact group @@ -1089,8 +1101,22 @@ QList relatedPotentialTerminal ( { // English: Check if the user activated the potential isolation checkbox for this terminal if (QET::infoFlagIsTrue(terminal->parentElement()->elementInformations().value(QStringLiteral("potential_isolating")).toString())) { - // English: Potential is isolated. Return an empty list so it does not propagate to the other side. - return QList(); + // English: Potential is isolated -- but terminals sharing this + // terminal's own, non-empty potential-group identifier + // (@see TerminalData::m_potential, set per-terminal in the + // element editor) still belong to the same physical terminal + // and stay linked to each other. An empty/unset potential on + // every terminal reproduces the previous, fully-isolated + // behavior exactly, so existing elements are unaffected. + const QString this_potential = terminal->potential(); + QList same_potential; + if (!this_potential.isEmpty()) { + for (Terminal *t : terminal->parentElement()->terminals()) { + if (t != terminal && t->potential() == this_potential) + same_potential << t; + } + } + return same_potential; } QList terminals = terminal->parentElement()->terminals(); diff --git a/sources/qetgraphicsitem/terminal.h b/sources/qetgraphicsitem/terminal.h index 419f4cdec..832c61853 100644 --- a/sources/qetgraphicsitem/terminal.h +++ b/sources/qetgraphicsitem/terminal.h @@ -81,6 +81,7 @@ class Terminal : public QGraphicsObject QString name () const; QString baseName () const; TerminalData::Type terminalType() const; + QString potential() const; bool useMasterLabel() const { return d->m_use_master_label; } void setUseMasterLabel(bool use); int masterLabelIndex() const { return d->m_master_label_index; } diff --git a/sources/qetinformation.cpp b/sources/qetinformation.cpp index 6baf1ec3b..80d7db2bd 100644 --- a/sources/qetinformation.cpp +++ b/sources/qetinformation.cpp @@ -437,16 +437,3 @@ QStringList QETInformation::elementEditorElementInfoKeys() ELMT_UNITY_AUX4 }; return list; } - -QStringList QETInformation::terminalElementInfoKeys() -{ - QStringList list = { ELMT_FORMULA, - ELMT_LABEL, - ELMT_COMMENT, - ELMT_DESIGNATION, - ELMT_MANUFACTURER, - ELMT_MANUFACTURER_REF, - ELMT_MACHINE_MANUFACTURER_REF, - ELMT_SUPPLIER }; - return list; -} diff --git a/sources/qetinformation.h b/sources/qetinformation.h index b0ba1c0a4..26dfb78f2 100644 --- a/sources/qetinformation.h +++ b/sources/qetinformation.h @@ -184,8 +184,6 @@ namespace QETInformation State validate(QString &input, int &pos) const override; }; - QStringList terminalElementInfoKeys(); - QString infoToVar(const QString &info); QString translatedInfoKey(const QString &info); } diff --git a/sources/titleblock/templatelogomanager.h b/sources/titleblock/templatelogomanager.h index 7e26c9c56..3a4ff5e90 100644 --- a/sources/titleblock/templatelogomanager.h +++ b/sources/titleblock/templatelogomanager.h @@ -73,6 +73,6 @@ class TitleBlockTemplateLogoManager : public QWidget { QLabel *logo_type_; ///< current logo type QDialogButtonBox *buttons_; ///< ok/cancel buttons QDir open_dialog_dir_; ///< last opened directory - bool read_only_; ///< Whether this logo manager should allow logo edition (renaming, addition, deletion) + bool read_only_ = false; ///< Whether this logo manager should allow logo edition (renaming, addition, deletion) }; #endif diff --git a/sources/ui/diagrameditorhandlersizewidget.cpp b/sources/ui/diagrameditorhandlersizewidget.cpp index 37a8f78e3..bb22cac90 100644 --- a/sources/ui/diagrameditorhandlersizewidget.cpp +++ b/sources/ui/diagrameditorhandlersizewidget.cpp @@ -22,24 +22,27 @@ #include "../projectview.h" #include "../diagramview.h" #include "../diagram.h" -#include "../../QetGraphicsItemModeler/qetgraphicshandleritem.h" +#include "../qetproject.h" +#include +#include "../QetGraphicsItemModeler/qetgraphicshandleritem.h" DiagramEditorHandlerSizeWidget::DiagramEditorHandlerSizeWidget(QWidget *parent) : QWidget(parent), ui(new Ui::DiagramEditorHandlerSizeWidget) { ui->setupUi(this); + const QSignalBlocker blocker(ui->comboBox); + const qreal sizes[] = {2.5, 5.0, 7.5, 10.0, 20.0, 30.0}; + for (int i = 0; i < ui->comboBox->count(); ++i) + ui->comboBox->setItemData(i, sizes[i]); + ui->comboBox->setCurrentIndex(3); // x1 remains the default. if (auto editor = QETApp::instance()->diagramEditorAncestorOf(this)) { - const auto size = editor->property("graphics_handler_size").toInt(); - - if (size == 10 || size < 10) - ui->comboBox->setCurrentIndex(0); - else if (size == 20) - ui->comboBox->setCurrentIndex(1); - else if (size == 30 || size > 30) - ui->comboBox->setCurrentIndex(2); + const auto size = editor->property("graphics_handler_size").toReal(); + const int index = ui->comboBox->findData(size); + if (index >= 0) + ui->comboBox->setCurrentIndex(index); } } @@ -50,20 +53,18 @@ DiagramEditorHandlerSizeWidget::~DiagramEditorHandlerSizeWidget() void DiagramEditorHandlerSizeWidget::on_comboBox_currentIndexChanged(int index) { + if (index < 0 || !ui->comboBox->itemData(index).isValid()) + return; + const qreal size = ui->comboBox->itemData(index).toReal(); if (auto editor_ = QETApp::instance()->diagramEditorAncestorOf(this)) { - editor_->setProperty("graphics_handler_size", (index+1) * 10); - if (auto project_view = editor_->currentProjectView()) { - if (auto diagram_view = project_view->currentDiagram()) { - if (auto diagram = diagram_view->diagram()) - { - for (const auto item : diagram->items()) - { - if (item->type() == QetGraphicsHandlerItem::Type) - { - auto handler = qgraphicsitem_cast(item); - handler->setSize((index+1) * 10); - } + editor_->setProperty("graphics_handler_size", size); + for (auto project_view : editor_->openedProjects()) { + for (auto diagram : project_view->project()->diagrams()) { + for (const auto item : diagram->items()) { + if (item->type() == QetGraphicsHandlerItem::Type) { + auto handler = qgraphicsitem_cast(item); + handler->setSize(size); } } } diff --git a/sources/ui/diagrameditorhandlersizewidget.ui b/sources/ui/diagrameditorhandlersizewidget.ui index d5db39a5f..e33d013c6 100644 --- a/sources/ui/diagrameditorhandlersizewidget.ui +++ b/sources/ui/diagrameditorhandlersizewidget.ui @@ -23,6 +23,24 @@ + + 3 + + + + x 0.25 + + + + + x 0.5 + + + + + x 0.75 + + x 1 diff --git a/sources/ui/elementinfowidget.cpp b/sources/ui/elementinfowidget.cpp index aa30d797e..b8a05169b 100644 --- a/sources/ui/elementinfowidget.cpp +++ b/sources/ui/elementinfowidget.cpp @@ -285,12 +285,7 @@ void ElementInfoWidget::disableLiveEdit() */ void ElementInfoWidget::buildInterface() { - QStringList keys; - if (m_element.data()->elementData().m_type == ElementData::Terminal) { - keys = QETInformation::terminalElementInfoKeys(); - } else { - keys = QETInformation::elementInfoKeys(); - } + QStringList keys = QETInformation::elementInfoKeys(); //"exclude_from_bom" is part of elementInfoKeys() because the project //database builds the element_info table from that list, but it is not @@ -354,9 +349,7 @@ void ElementInfoWidget::buildInterface() */ QStringList ElementInfoWidget::predefinedKeys() const { - QStringList keys = (m_element.data()->elementData().m_type == ElementData::Terminal) - ? QETInformation::terminalElementInfoKeys() - : QETInformation::elementInfoKeys(); + QStringList keys = QETInformation::elementInfoKeys(); keys << QETInformation::ELMT_FORMULA_ID << QStringLiteral("auto_num_locked") diff --git a/sources/ui/terminalnumberingdialog.cpp b/sources/ui/terminalnumberingdialog.cpp index fde1df6da..6e30d32cc 100644 --- a/sources/ui/terminalnumberingdialog.cpp +++ b/sources/ui/terminalnumberingdialog.cpp @@ -4,6 +4,7 @@ #include "../qetproject.h" #include "../diagram.h" #include "../qetgraphicsitem/element.h" +#include "../positionorder.h" #include "../undocommand/changeelementinformationcommand.h" #include "../qet.h" #include @@ -210,14 +211,12 @@ QUndoCommand* TerminalNumberingDialog::getUndoCommand(QETProject *project) const // Then sort by folio (page) index if (a.folioIndex != b.folioIndex) return a.folioIndex < b.folioIndex; - // Finally sort by coordinates (with a 1.0px tolerance to handle slight misalignments) - if (axisX) { - if (qAbs(a.x - b.x) > 1.0) return a.x < b.x; - return a.y < b.y; - } else { - if (qAbs(a.y - b.y) > 1.0) return a.y < b.y; - return a.x < b.x; - } + // Finally sort by coordinates, rounded to whole pixels so that slight + // misalignments count as aligned (a tolerance test is not transitive, + // which std::sort requires) + const QPointF pa(a.x, a.y), pb(b.x, b.y); + return axisX ? PositionOrder::roundedXThenY(pa, pb) + : PositionOrder::roundedYThenX(pa, pb); }); // 4. Generate new numbering and create the undo command macro diff --git a/sources/undocommand/alignselectioncommand.cpp b/sources/undocommand/alignselectioncommand.cpp index 62720989c..77f68ff50 100644 --- a/sources/undocommand/alignselectioncommand.cpp +++ b/sources/undocommand/alignselectioncommand.cpp @@ -20,6 +20,7 @@ #include "../QPropertyUndoCommand/qpropertyundocommand.h" #include "../alignment.h" #include "../diagram.h" +#include "../foliogrid.h" #include "../diagramcontent.h" #include "../itemgroups.h" #include "../qetgraphicsitem/diagramimageitem.h" @@ -121,8 +122,8 @@ AlignSelectionCommand::AlignSelectionCommand(Diagram *diagram, Mode mode, QUndoC m_locked_count = dc.removeNonMovableItems(); QSettings settings; - const int x_grid = settings.value(QStringLiteral("diagrameditor/Xgrid"), Diagram::xGrid).toInt(); - const int y_grid = settings.value(QStringLiteral("diagrameditor/Ygrid"), Diagram::yGrid).toInt(); + const int x_grid = FolioGrid::step(settings.value(FolioGrid::x_key), Diagram::xGrid); + const int y_grid = FolioGrid::step(settings.value(FolioGrid::y_key), Diagram::yGrid); const qreal text_divisor = settings.value(TextGrid::settings_key, 1).toReal(); //Each kind goes where dragging it would have left it: symbols, diff --git a/sources/utils/qetutils.cpp b/sources/utils/qetutils.cpp index da4f43126..e62723e1a 100644 --- a/sources/utils/qetutils.cpp +++ b/sources/utils/qetutils.cpp @@ -133,6 +133,77 @@ bool QETUtils::sortBeginIntString(const QString &str_a, const QString &str_b) } } +/** + * @brief QETUtils::naturalLessThan + * Natural order comparison, case insensitive : + * "2" < "10" and "XAUZ1:2" < "XAUZ1:10". + * Runs of digits are compared by value wherever they are in the string. + * Implemented by hand because QCollator numeric mode is not honored by + * every Qt backend (it is ignored without ICU). + * The result is a strict weak ordering, so it is safe to use with std::sort. + * @param str_a + * @param str_b + * @return true if str_a must be placed before str_b + */ +bool QETUtils::naturalLessThan(const QString &str_a, const QString &str_b) +{ + const int len_a = str_a.size(); + const int len_b = str_b.size(); + int i = 0; + int j = 0; + int zeros_diff = 0; //Tie breaker : "01" and "1" have the same value + + while (i < len_a && j < len_b) + { + const QChar ca = str_a.at(i); + const QChar cb = str_b.at(j); + + if (ca.isDigit() && cb.isDigit()) + { + int start_a = i; + int start_b = j; + while (i < len_a && str_a.at(i).isDigit()) { ++i; } + while (j < len_b && str_b.at(j).isDigit()) { ++j; } + + int sig_a = start_a; + int sig_b = start_b; + while (sig_a < i - 1 && str_a.at(sig_a) == QLatin1Char('0')) { ++sig_a; } + while (sig_b < j - 1 && str_b.at(sig_b) == QLatin1Char('0')) { ++sig_b; } + + const int digits_a = i - sig_a; + const int digits_b = j - sig_b; + if (digits_a != digits_b) { + return digits_a < digits_b; + } + + const int cmp = QStringView(str_a).mid(sig_a, digits_a) + .compare(QStringView(str_b).mid(sig_b, digits_b)); + if (cmp != 0) { + return cmp < 0; + } + + if (zeros_diff == 0) { + zeros_diff = (sig_a - start_a) - (sig_b - start_b); + } + } + else + { + const QChar la = ca.toCaseFolded(); + const QChar lb = cb.toCaseFolded(); + if (la != lb) { + return la < lb; + } + ++i; + ++j; + } + } + + if (i < len_a || j < len_b) { + return (len_a - i) < (len_b - j); //The shortest remaining part first + } + return zeros_diff > 0 ? false : zeros_diff < 0; //"1" before "01" +} + /** * @brief QETUtils::pixelSizedFont * Set the font size to pixelSize instead of pointSize (if needed). diff --git a/sources/utils/qetutils.h b/sources/utils/qetutils.h index 86fef778b..e5677dc73 100644 --- a/sources/utils/qetutils.h +++ b/sources/utils/qetutils.h @@ -59,6 +59,7 @@ namespace QETUtils }; bool sortBeginIntString(const QString &str_a, const QString &str_b); + bool naturalLessThan(const QString &str_a, const QString &str_b); template QVector> sharedVectorToWeak(const QVector> &vector) diff --git a/tests/performance/handles/CMakeLists.txt b/tests/performance/handles/CMakeLists.txt new file mode 100644 index 000000000..298e26c36 --- /dev/null +++ b/tests/performance/handles/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.16) +project(handle_refresh_probe LANGUAGES CXX) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_AUTOMOC ON) +find_package(Qt6 REQUIRED COMPONENTS Widgets) +add_executable(handle_refresh_probe main.cpp + ${QET_SOURCE}/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp + ${QET_SOURCE}/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h) +target_include_directories(handle_refresh_probe PRIVATE ${QET_SOURCE}/sources) +target_link_libraries(handle_refresh_probe PRIVATE Qt6::Widgets) +if(WIN32) + target_link_libraries(handle_refresh_probe PRIVATE psapi) +endif() diff --git a/tests/performance/handles/main.cpp b/tests/performance/handles/main.cpp new file mode 100644 index 000000000..c58fe0972 --- /dev/null +++ b/tests/performance/handles/main.cpp @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// Synthetic raster viewport workload, not a full editor latency benchmark. +#include +#include +#include +#include +#include +#include +#include +#ifdef Q_OS_WIN +#include +#include +#endif +#include "QetGraphicsItemModeler/qetgraphicshandleritem.h" + +static double cpuMilliseconds() { +#ifdef Q_OS_WIN + FILETIME created,exited,kernel,user; + if(GetProcessTimes(GetCurrentProcess(),&created,&exited,&kernel,&user)) { + ULARGE_INTEGER k,u; k.LowPart=kernel.dwLowDateTime;k.HighPart=kernel.dwHighDateTime; + u.LowPart=user.dwLowDateTime;u.HighPart=user.dwHighDateTime; + return double(k.QuadPart+u.QuadPart)/10000; + } + return 0; +#else + return double(std::clock())*1000/CLOCKS_PER_SEC; +#endif +} + +int main(int argc,char **argv) { + QApplication app(argc,argv); + const qreal size=QString::fromLocal8Bit(argv[1]).toDouble(); + const int count=QString::fromLocal8Bit(argv[2]).toInt(); + const QString operation=QString::fromLocal8Bit(argv[3]); + QGraphicsScene scene; scene.setSceneRect(-2000,-2000,4000,4000); + QList objects; + for(int i=0;isetPos((i%32)*36-576,(i/32)*28-224); objects<setParentItem(object); handle->setColor(Qt::darkGreen); + } + } + QGraphicsView view(&scene); view.resize(1280,800); view.setSceneRect(scene.sceneRect()); + view.show(); QApplication::processEvents(); + QImage image(1280,800,QImage::Format_ARGB32_Premultiplied); + auto frame=[&](int i) { + if(operation=="zoom") {view.resetTransform();view.scale(0.75+0.005*(i%60),0.75+0.005*(i%60));} + if(operation=="pan") view.centerOn((i%60)*2,0); + if(operation=="manipulate") for(auto *object:objects) { + object->setRotation(i%30); object->setRect(0,0,32+(i%8),24); object->moveBy(i%2?1:-1,0); + } + image.fill(Qt::white); QPainter painter(&image); view.render(&painter); + }; + for(int i=0;i<20;++i) frame(i); + std::puts("size,handles,operation,repeat,ms_per_frame,cpu_ms_per_frame,working_set_bytes"); + for(int repeat=0;repeat<7;++repeat) { + const auto cpu=cpuMilliseconds(); QElapsedTimer timer; timer.start(); + for(int i=0;i<120;++i) frame(i); + const double elapsed=timer.nsecsElapsed()/1e6/120; + const double cpuElapsed=(cpuMilliseconds()-cpu)/120; + unsigned long long memory=0; +#ifdef Q_OS_WIN + PROCESS_MEMORY_COUNTERS counters{}; counters.cb=sizeof(counters); + if(GetProcessMemoryInfo(GetCurrentProcess(),&counters,sizeof(counters))) memory=counters.WorkingSetSize; +#endif + std::printf("%.2f,%d,%s,%d,%.6f,%.6f,%llu\n",size,count,qPrintable(operation),repeat,elapsed,cpuElapsed,memory); + } +} diff --git a/tests/performance/handles/run.py b/tests/performance/handles/run.py new file mode 100644 index 000000000..d4a23cf0d --- /dev/null +++ b/tests/performance/handles/run.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +"""Run identical Release component workloads; preserve samples and variability.""" +import argparse +import csv +import io +import os +import pathlib +import statistics +import subprocess + +p = argparse.ArgumentParser() +p.add_argument('--reference', required=True) +p.add_argument('--modified', required=True) +p.add_argument('--output', required=True) +a = p.parse_args() +env = os.environ.copy() +env['QT_QPA_PLATFORM'] = 'offscreen' +rows = [] +# Compare x1 first, then exercise every remaining size on the modified code. +for size in [10, 2.5, 5, 7.5, 20, 30]: + for count in [16, 2048]: + for operation in ['zoom', 'pan', 'manipulate']: + variants = [('reference', a.reference), ('modified', a.modified)] if size == 10 else [('modified', a.modified)] + for variant, binary in variants: + result = subprocess.run([binary, str(size), str(count), operation], env=env, + capture_output=True, text=True, check=True, timeout=120) + samples = list(csv.DictReader(io.StringIO(result.stdout))) + assert len(samples) == 7 + rows.extend(dict(variant=variant, **sample) for sample in samples) +output = pathlib.Path(a.output) +output.mkdir(parents=True, exist_ok=True) +with (output / 'samples.csv').open('w', newline='', encoding='utf-8') as stream: + writer = csv.DictWriter(stream, fieldnames=list(rows[0])) + writer.writeheader() + writer.writerows(rows) +groups = {} +for row in rows: + key = (row['variant'], row['size'], row['handles'], row['operation']) + groups.setdefault(key, []).append(row) +lines = ['# Release handle refresh measurements', '', + 'Synthetic QGraphicsView raster rendering at 1280×800, offscreen, on the same PC.', + 'Each sample comprises 120 frames; 20 warm-up frames precede seven samples.', + '16 or 2048 handles; same scenes and workload code for both builds.', + 'Manipulate changes position, rectangle size and rotation of all scene objects.', + 'This is not full-editor mouse latency, GPU frame presentation or human usability.', '', + '| Code | Factor | Handles | Workload | Mean ms/frame ± SD | Min–max | CPU ms/frame | Working set MiB |', + '|---|---:|---:|---|---:|---:|---:|---:|'] +for (variant, size, count, operation), samples in groups.items(): + wall = [float(s['ms_per_frame']) for s in samples] + cpu = [float(s['cpu_ms_per_frame']) for s in samples] + memory = [int(s['working_set_bytes']) / 1048576 for s in samples] + lines.append(f'| {variant} | {float(size)/10:g} | {count} | {operation} | ' + f'{statistics.mean(wall):.3f} ± {statistics.stdev(wall):.3f} | ' + f'{min(wall):.3f}–{max(wall):.3f} | {statistics.mean(cpu):.3f} | ' + f'{statistics.median(memory):.1f} |') +(output / 'measurements.md').write_text('\n'.join(lines)+'\n', encoding='utf-8') +print(f'{len(rows)} samples saved in {output}') diff --git a/tests/qttest/CMakeLists.txt b/tests/qttest/CMakeLists.txt index bd8a82c01..b33b94130 100644 --- a/tests/qttest/CMakeLists.txt +++ b/tests/qttest/CMakeLists.txt @@ -74,6 +74,13 @@ target_include_directories(tst_darkimagelayers PRIVATE ${QET_DIR}/sources) target_link_libraries(tst_darkimagelayers PRIVATE Qt::Test Qt::Widgets) find_package(Python3 QUIET COMPONENTS Interpreter) if(Python3_Interpreter_FOUND AND CMAKE_GENERATOR STREQUAL "Ninja") + add_test(NAME tst_handlersizeintegration + COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/run_handle_size_probe.py + --build ${CMAKE_BINARY_DIR} --binary $ + --source ${CMAKE_CURRENT_SOURCE_DIR}/handle_size_probe.cpp + --fixture ${CMAKE_CURRENT_SOURCE_DIR}/fixtures/unlinked_contact_label.qet) + set_tests_properties(tst_handlersizeintegration PROPERTIES TIMEOUT 300 RUN_SERIAL TRUE + ENVIRONMENT "QT_QPA_PLATFORM=offscreen") add_test(NAME tst_attachedplainpaste COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/run_attached_plain_paste_probe.py --build ${CMAKE_BINARY_DIR} --binary $ @@ -108,6 +115,13 @@ add_test(NAME tst_diagramsortkeys COMMAND tst_diagramsortkeys) target_include_directories(tst_diagramsortkeys PRIVATE ${QET_DIR}/sources) target_link_libraries(tst_diagramsortkeys PRIVATE Qt::Test) +# positionorder.h is header-only: the position comparisons behind element +# renumbering and terminal numbering, as strict weak orderings for std::sort. +add_executable(tst_positionorder tst_positionorder.cpp) +target_include_directories(tst_positionorder PRIVATE ${QET_DIR}/sources) +target_link_libraries(tst_positionorder PRIVATE Qt::Test Qt::Core) +add_test(NAME tst_positionorder COMMAND tst_positionorder) + # bordercelllabels.h is header-only too. add_executable(tst_bordercelllabels tst_bordercelllabels.cpp) add_test(NAME tst_bordercelllabels COMMAND tst_bordercelllabels) @@ -128,6 +142,13 @@ add_test(NAME tst_textgrid COMMAND tst_textgrid) target_include_directories(tst_textgrid PRIVATE ${QET_DIR}/sources) target_link_libraries(tst_textgrid PRIVATE Qt::Test) +# foliogrid.h is header-only: the folio grid step as read from the +# settings, never 0 or negative, so no reader can divide by it or loop on it. +add_executable(tst_foliogrid tst_foliogrid.cpp) +target_include_directories(tst_foliogrid PRIVATE ${QET_DIR}/sources) +target_link_libraries(tst_foliogrid PRIVATE Qt::Test Qt::Core) +add_test(NAME tst_foliogrid COMMAND tst_foliogrid) + # textlines.h is header-only: the lines of a text as they are laid out, # for the exports that write a text line by line. add_executable(tst_textlines tst_textlines.cpp) @@ -194,6 +215,14 @@ set_tests_properties(tst_textanchor PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=offs target_include_directories(tst_textanchor PRIVATE ${QET_DIR}/sources) target_link_libraries(tst_textanchor PRIVATE Qt::Test Qt::Widgets) +# Shared handle geometry and picking, including fractional sizes. +add_executable(tst_handlersize tst_handlersize.cpp + ${QET_DIR}/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp) +add_test(NAME tst_handlersize COMMAND tst_handlersize) +set_tests_properties(tst_handlersize PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=offscreen") +target_include_directories(tst_handlersize PRIVATE ${QET_DIR}/sources) +target_link_libraries(tst_handlersize PRIVATE Qt::Test Qt::Widgets) + # TextResizeHandles: the corner handles that change the width of a text box, # on a plain QGraphicsTextItem with the "textWidth" property QET texts have. add_executable( @@ -557,6 +586,18 @@ target_compile_definitions(tst_wiringlistexport PRIVATE "QET_TEST_BINARY_PATH=\"$\"" "QET_EXAMPLES_DIR=\"${QET_DIR}/examples\"") +# A label formula with ten or more sequential numbers gets the tenth value +# for %sequ_10 (not the first one and a "0"): the real binary's +# --export-bom on fixtures/ten_sequential_numbers.qet. +add_executable( + tst_tensequentialnumbers + tst_tensequentialnumbers.cpp) +add_test(NAME tst_tensequentialnumbers COMMAND tst_tensequentialnumbers) +add_dependencies(tst_tensequentialnumbers qelectrotech) +target_link_libraries(tst_tensequentialnumbers PRIVATE Qt::Test) +target_compile_definitions(tst_tensequentialnumbers PRIVATE + "QET_TEST_BINARY_PATH=\"$\"") + # --export-dxf writes a wrapped symbol text line by line, as it is drawn. add_executable( tst_dxfwrappedtext @@ -894,6 +935,20 @@ if(QET_HAS_SCRIPTING) "QET_EXAMPLES_DIR=\"${QET_DIR}/examples\"") endif() +# A picture whose saved crop does not match the picture shown (an undone +# crop, saved before #1310) loads without that crop; a valid crop is kept. +if(QET_HAS_SCRIPTING) + add_executable( + tst_imagestalecrop + tst_imagestalecrop.cpp) + add_test(NAME tst_imagestalecrop COMMAND tst_imagestalecrop) + add_dependencies(tst_imagestalecrop qelectrotech) + target_link_libraries(tst_imagestalecrop PRIVATE Qt::Test Qt::Gui) + target_compile_definitions(tst_imagestalecrop PRIVATE + "QET_TEST_BINARY_PATH=\"$\"" + "QET_EXAMPLES_DIR=\"${QET_DIR}/examples\"") +endif() + # Saving a project that was just saved changes nothing: runs the real # binary's --resave twice on every project in examples/, and on one whose # title block holds a single-space value (#973). @@ -908,6 +963,18 @@ target_compile_definitions(tst_resaveunchanged PRIVATE "QET_TEST_BINARY_PATH=\"$\"" "QET_EXAMPLES_DIR=\"${QET_DIR}/examples\"") +# A folio's "freeze new elements/conductors" flags, saved as the words +# "true"/"false", are read back as words: the real binary's --resave on +# fixtures/folio_freeze_flags.qet, one folio per combination. +add_executable( + tst_foliofreezeflags + tst_foliofreezeflags.cpp) +add_test(NAME tst_foliofreezeflags COMMAND tst_foliofreezeflags) +add_dependencies(tst_foliofreezeflags qelectrotech) +target_link_libraries(tst_foliofreezeflags PRIVATE Qt::Test Qt::Xml) +target_compile_definitions(tst_foliofreezeflags PRIVATE + "QET_TEST_BINARY_PATH=\"$\"") + # Replacing a symbol's definition in a project keeps its terminal uuids, so # the wires saved against them still load: TerminalUuids::keep() on its own, # then the real binary's --info on an example whose symbols were replaced. @@ -922,6 +989,19 @@ target_compile_definitions(tst_terminaluuids PRIVATE "QET_TEST_BINARY_PATH=\"$\"" "QET_EXAMPLES_DIR=\"${QET_DIR}/examples\"") +# Sequential numbers saved the old way, as sequ_1/.../seqhf_1 attributes, +# are all read: the real binary's --resave on +# fixtures/legacy_sequential_attributes.qet, whose element and conductor +# carry only seqhf_1. +add_executable( + tst_legacysequentialattributes + tst_legacysequentialattributes.cpp) +add_test(NAME tst_legacysequentialattributes COMMAND tst_legacysequentialattributes) +add_dependencies(tst_legacysequentialattributes qelectrotech) +target_link_libraries(tst_legacysequentialattributes PRIVATE Qt::Test Qt::Xml) +target_compile_definitions(tst_legacysequentialattributes PRIVATE + "QET_TEST_BINARY_PATH=\"$\"") + # ConductorProperties::applyChanges() -- the Selection properties panel # writes only the fields the user edited. add_executable( @@ -935,6 +1015,19 @@ add_test(NAME tst_conductorapplychanges COMMAND tst_conductorapplychanges) target_include_directories(tst_conductorapplychanges PRIVATE ${QET_DIR}/sources) target_link_libraries(tst_conductorapplychanges PRIVATE Qt::Test Qt::Widgets Qt::Xml pugixml::pugixml) +# ConductorProperties::fromSettings() -- the default conductor width is a +# decimal and comes back as saved (1.4 used to be read as 0). +add_executable( + tst_conductorsizesetting + tst_conductorsizesetting.cpp + ${QET_DIR}/sources/conductorproperties.cpp + ${QET_DIR}/sources/qet.cpp + ${QET_DIR}/sources/qeticons.cpp + ${QET_DIR}/sources/shortcutmanager.cpp) +add_test(NAME tst_conductorsizesetting COMMAND tst_conductorsizesetting) +target_include_directories(tst_conductorsizesetting PRIVATE ${QET_DIR}/sources) +target_link_libraries(tst_conductorsizesetting PRIVATE Qt::Test Qt::Widgets Qt::Xml pugixml::pugixml) + # ConductorMultiEdit -- editing several wires at once in the Selection # properties panel: order, which wires an edit reaches, one undo step for # all of them, and fields shown blank because the wires disagree. @@ -976,6 +1069,16 @@ add_test(NAME tst_xrefpos COMMAND tst_xrefpos) target_include_directories(tst_xrefpos PRIVATE ${QET_DIR}/sources) target_link_libraries(tst_xrefpos PRIVATE Qt::Test Qt::Widgets Qt::Xml pugixml::pugixml) +# BorderProperties::fromXml() -- the project's for new folios: +# column width and row height are decimals and are read as such. +add_executable( + tst_borderpropertiesxml + tst_borderpropertiesxml.cpp + ${QET_DIR}/sources/borderproperties.cpp) +add_test(NAME tst_borderpropertiesxml COMMAND tst_borderpropertiesxml) +target_include_directories(tst_borderpropertiesxml PRIVATE ${QET_DIR}/sources) +target_link_libraries(tst_borderpropertiesxml PRIVATE Qt::Test Qt::Xml) + # Qt 6.4.2 writes the attributes of an element in an order that changes from # one process to the next, so a project saved twice by two runs of the binary # differs in bytes only (seen on projects without any numbering, too). A fixed diff --git a/tests/qttest/fixtures/folio_freeze_flags.qet b/tests/qttest/fixtures/folio_freeze_flags.qet new file mode 100644 index 000000000..a2e3c6661 --- /dev/null +++ b/tests/qttest/fixtures/folio_freeze_flags.qet @@ -0,0 +1,36 @@ + + + folio_freeze_flags + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Imported elements + + + + diff --git a/tests/qttest/fixtures/legacy_sequential_attributes.qet b/tests/qttest/fixtures/legacy_sequential_attributes.qet new file mode 100644 index 000000000..966f75b90 --- /dev/null +++ b/tests/qttest/fixtures/legacy_sequential_attributes.qet @@ -0,0 +1,351 @@ + + + 10/4/26 + 04-10-2026 + 2026-10-04 + skeleton + 10:28 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 14 + + + 11 + + + + label + + + + + + + + + + + + + 14 + + + 11 + + + + label + + + + + + + + + + + + + 14 + + + 11 + + + + label + + + + + + + + + + + + + 14 + + + 11 + + + + label + + + + + + + + + + + + + + + + + + + Elements importats + Zavedené prvky + Importerede elementer + Importierte Elemente + Εισηγμένα στοιχεία + Imported elements + Elementos importados + Éléments importés + Uvezeni elementi + Elementi importati + インバートされた要素 + 전기 심볼 요소 + 전기 심볼 요소 + Elementen geïmporteerd + Elementen geïmporteerd + Elementy importowane + Elementos importados + Elementos importados + Elemente importate + Импортированные элементы + Uvoženi elementi + Importerade element + İthal öğeler + Імпортовані елементи + 导入元件 + + + + كهربائي + Elèctric + Elektrotechnika + Elektrisk + Elektrik + Ηλεκτρικά + Electric + Eléctrica + Sähkö + Electrique + Električno + Elektromos + Elettrica + 電気 + 전기 + Цахилгаан + Elektrisk + Elektrotechniek + Elektrisch + Elektrotechnika + Elétrico + Elétrica + Electric + Электротехника + Elektrické + Elektrika + Електрика + El + Elektrik + Електрика + 10_电气 + 电气工程 + + + + متعدد الأقطاب + Multifilar + Vícežilový + Flere ledere + Allpolig + Πολυγραμμικό + All-pole + Multifilar + Yleisnapa + Multifilaire + Univerzalni + Többvonalas szimbólumok + Multifilare + 複線 + 다-극 + Бүх туйл + Alle poler + Veel polig + All-pole + Schematy wieloliniowe + Multipolar + Multifilar + Bipolar + Многополюсные + Všepólové + Vsi poli + Свe-полни + Allpolig + Çok kutuplu + Багатополюсні + 10_全极 + + + + المرحّلات والموصّلات وجهات الاتصال + Relés, contactors i contactes + Relé, stykače a kontakty + Relæer, kontaktorer og kontakter + Relais, Schütze und Kontakte + Ηλεκτρονόμοι και επαφές + Relays, contactors and contacts + Relevadores, contactores y contactos + Releet, kontaktorit ja koskettimet + Relais, contacteurs et contacts + Releji, kontaktori i kontakti + Relék, kontaktorok és érintkezők + Relè, contattori e contatti + 継電器、接触器、接点 + 릴레이, 커넥터및 접점 + Реле, контактор болон контакт + Reléer, kontaktorere og kontakter + Relais, contactoren en contacten + Relais, contacteurs en contacten + Przekaźniki i styczniki + Relés, contatores e contactos + Relés, Contatores e contatos + Relee, contactoare și contacte + Реле, пускатели и контакты + Relé, stykače a kontakty + Releji, kontaktorji in kontakti + Релеји, контактори и контакти + Reläer, kontaktorer och kontakter + Röleler, kontaktörler ve kontaklar + Реле, контактори та контакти + 继电器、接触器与触点 + + + + جهات الاتصال + Contactes + Kontakty + Kontaktpersoner + Kontakte + Επαφές + Contacts + Contactos + Kosketimet + Contacts + Kontakti + Kapcsolatok + Contatti + 連絡先 + 접점 + Харилцагчид + Kontakter + Contacten + Contacten + Łączność + Contatos + Contatos + Contacte + Контакты + Kontakty + Stiki + Контакти + Kontakter + Kişiler + Контакти + 触点 + + + + + + عدّاد مفتوح عادة + Taulell normalment obert + Kontakt čítače (NO) + Normalt åben tæller + Öffner Zähler betätigt + Ανοικτή επαφή μετρητή + Normally open counter + Contador NA + Normaalisti avoin laskuri + Actionné par comptage NO + Brojač normalno otvoren + Alaphelyzetben nyitott számláló + Contatto azionato da un contatore (NO) + 常開カウンター + 평상시 열림 카운터 + Ихэвчлэн нээлттэй тоолуур + Normalt åpen teller + Teller contact (NO) + Normaal open teller + Zestyk zwierny licznika + Contador normalmente aberto + Contato NA acionado por contador + Contor normal deschis + Счётчик с нормально открытым контактом + Počítadlo s kontaktom NO + Števec normalno odprt + Бројач нормално отворен + Räknare med slutande kontakt + Normalde açık sayaç + Лічильник нормально розімкнений + 计数驱动常开触点 + + Author: The QElectroTech team +License: see http://qelectrotech.org/wiki/doc/elements_license + + + + + 14 + + + 11 + + + + label + + + + + + + + + + + + + + + + diff --git a/tests/qttest/fixtures/ten_sequential_numbers.qet b/tests/qttest/fixtures/ten_sequential_numbers.qet new file mode 100644 index 000000000..bbadee1d4 --- /dev/null +++ b/tests/qttest/fixtures/ten_sequential_numbers.qet @@ -0,0 +1,359 @@ + + + 10/4/26 + 04-10-2026 + 2026-10-04 + skeleton + 10:28 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %sequ_10-%sequ_1 + + + A;B;C;D;E;F;G;H;I;J + + + + 14 + + + 11 + + + + label + + + + + + + + + + + + + 14 + + + 11 + + + + label + + + + + + + + + + + + + 14 + + + 11 + + + + label + + + + + + + + + + + + + 14 + + + 11 + + + + label + + + + + + + + + + + + + + + + + + + + + Elements importats + Zavedené prvky + Importerede elementer + Importierte Elemente + Εισηγμένα στοιχεία + Imported elements + Elementos importados + Éléments importés + Uvezeni elementi + Elementi importati + インバートされた要素 + 전기 심볼 요소 + 전기 심볼 요소 + Elementen geïmporteerd + Elementen geïmporteerd + Elementy importowane + Elementos importados + Elementos importados + Elemente importate + Импортированные элементы + Uvoženi elementi + Importerade element + İthal öğeler + Імпортовані елементи + 导入元件 + + + + كهربائي + Elèctric + Elektrotechnika + Elektrisk + Elektrik + Ηλεκτρικά + Electric + Eléctrica + Sähkö + Electrique + Električno + Elektromos + Elettrica + 電気 + 전기 + Цахилгаан + Elektrisk + Elektrotechniek + Elektrisch + Elektrotechnika + Elétrico + Elétrica + Electric + Электротехника + Elektrické + Elektrika + Електрика + El + Elektrik + Електрика + 10_电气 + 电气工程 + + + + متعدد الأقطاب + Multifilar + Vícežilový + Flere ledere + Allpolig + Πολυγραμμικό + All-pole + Multifilar + Yleisnapa + Multifilaire + Univerzalni + Többvonalas szimbólumok + Multifilare + 複線 + 다-극 + Бүх туйл + Alle poler + Veel polig + All-pole + Schematy wieloliniowe + Multipolar + Multifilar + Bipolar + Многополюсные + Všepólové + Vsi poli + Свe-полни + Allpolig + Çok kutuplu + Багатополюсні + 10_全极 + + + + المرحّلات والموصّلات وجهات الاتصال + Relés, contactors i contactes + Relé, stykače a kontakty + Relæer, kontaktorer og kontakter + Relais, Schütze und Kontakte + Ηλεκτρονόμοι και επαφές + Relays, contactors and contacts + Relevadores, contactores y contactos + Releet, kontaktorit ja koskettimet + Relais, contacteurs et contacts + Releji, kontaktori i kontakti + Relék, kontaktorok és érintkezők + Relè, contattori e contatti + 継電器、接触器、接点 + 릴레이, 커넥터및 접점 + Реле, контактор болон контакт + Reléer, kontaktorere og kontakter + Relais, contactoren en contacten + Relais, contacteurs en contacten + Przekaźniki i styczniki + Relés, contatores e contactos + Relés, Contatores e contatos + Relee, contactoare și contacte + Реле, пускатели и контакты + Relé, stykače a kontakty + Releji, kontaktorji in kontakti + Релеји, контактори и контакти + Reläer, kontaktorer och kontakter + Röleler, kontaktörler ve kontaklar + Реле, контактори та контакти + 继电器、接触器与触点 + + + + جهات الاتصال + Contactes + Kontakty + Kontaktpersoner + Kontakte + Επαφές + Contacts + Contactos + Kosketimet + Contacts + Kontakti + Kapcsolatok + Contatti + 連絡先 + 접점 + Харилцагчид + Kontakter + Contacten + Contacten + Łączność + Contatos + Contatos + Contacte + Контакты + Kontakty + Stiki + Контакти + Kontakter + Kişiler + Контакти + 触点 + + + + + + عدّاد مفتوح عادة + Taulell normalment obert + Kontakt čítače (NO) + Normalt åben tæller + Öffner Zähler betätigt + Ανοικτή επαφή μετρητή + Normally open counter + Contador NA + Normaalisti avoin laskuri + Actionné par comptage NO + Brojač normalno otvoren + Alaphelyzetben nyitott számláló + Contatto azionato da un contatore (NO) + 常開カウンター + 평상시 열림 카운터 + Ихэвчлэн нээлттэй тоолуур + Normalt åpen teller + Teller contact (NO) + Normaal open teller + Zestyk zwierny licznika + Contador normalmente aberto + Contato NA acionado por contador + Contor normal deschis + Счётчик с нормально открытым контактом + Počítadlo s kontaktom NO + Števec normalno odprt + Бројач нормално отворен + Räknare med slutande kontakt + Normalde açık sayaç + Лічильник нормально розімкнений + 计数驱动常开触点 + + Author: The QElectroTech team +License: see http://qelectrotech.org/wiki/doc/elements_license + + + + + 14 + + + 11 + + + + label + + + + + + + + + + + + + + + + diff --git a/tests/qttest/handle_size_probe.cpp b/tests/qttest/handle_size_probe.cpp new file mode 100644 index 000000000..f342fb737 --- /dev/null +++ b/tests/qttest/handle_size_probe.cpp @@ -0,0 +1,229 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../../sources/qetapp.h" +#include "../../sources/qetdiagrameditor.h" +#include "../../sources/qetproject.h" +#include "../../sources/qetresult.h" +#include "../../sources/qetmessagebox.h" +#include "../../sources/projectview.h" +#include "../../sources/diagram.h" +#include "../../sources/utils/qetutils.h" +#include "../../sources/ui/diagrameditorhandlersizewidget.h" +#include "../../sources/QetGraphicsItemModeler/qetgraphicshandleritem.h" +#include "../../sources/qetgraphicsitem/independenttextitem.h" +#include "../../sources/qetgraphicsitem/dynamicelementtextitem.h" +#include "../../sources/qetgraphicsitem/diagramimageitem.h" +#include "../../sources/qetgraphicsitem/qetshapeitem.h" +#include "../../sources/editor/ui/qetelementeditor.h" +#include "../../sources/editor/elementscene.h" +#include "../../sources/editor/graphicspart/partrectangle.h" +#include "../../sources/editor/graphicspart/partdynamictextfield.h" +#include "../../sources/qetgraphicsitem/ViewItem/qetgraphicstableitem.h" +#include "../../sources/qetgraphicsitem/conductor.h" +static void check(bool value,const char *why){if(!value)throw std::runtime_error(why);} +static QString canonicalProjectXml(QDomDocument document) { + // Scene index updates can reorder equal-z conductors. Compare their + // complete serialized content in UUID order, rather than scene order. + const auto groups=document.elementsByTagName("conductors"); + for(int i=0;i wires; + for(auto wire=group.firstChildElement("conductor");!wire.isNull();wire=wire.nextSiblingElement("conductor"))wires<mapFromScene(point)); + event.setButtonDownScenePos(Qt::LeftButton,press?*press:point);scene->sendEvent(item,&event); +} +static QetGraphicsHandlerItem *bottomRightHandle(Diagram *scene) { + QetGraphicsHandlerItem *found=nullptr; + for(auto *item:scene->items())if(item->type()==QetGraphicsHandlerItem::Type&&item->isVisible()) { + auto *handle=qgraphicsitem_cast(item); + if(!found||handle->scenePos().x()+handle->scenePos().y()>found->scenePos().x()+found->scenePos().y())found=handle; + } + check(found,"mouse gesture handle present");return found; +} +static void drag(Diagram *scene,QGraphicsItem *item,const QPointF &end) { + const auto start=item->scenePos(); + mouse(scene,item,QEvent::GraphicsSceneMousePress,start); + mouse(scene,item,QEvent::GraphicsSceneMouseMove,end,&start); + mouse(scene,item,QEvent::GraphicsSceneMouseRelease,end,&start); +} +int main(int argc,char **argv) { + const QString fixture=QString::fromLocal8Bit(argv[1]); + const QString report=QString::fromLocal8Bit(argv[2]); + QTemporaryDir isolated; + QByteArray config="--config-dir="+isolated.path().toUtf8(); + QByteArray data="--data-dir="+isolated.path().toUtf8(); + QByteArray collection="--common-elements-dir="+isolated.path().toUtf8(); + char *args[]={argv[0],config.data(),data.data(),collection.data()};int count=4; + QApplication app(count,args); + std::freopen(report.toLocal8Bit().constData(),"w",stdout); + std::setbuf(stdout,nullptr); + QSettings::setDefaultFormat(QSettings::IniFormat); + QSettings::setPath(QSettings::IniFormat,QSettings::UserScope,isolated.path()); + QETProject::setBackupEnabled(false);QET::QetMessageBox::setNonInteractive(true); + try { + auto *qet=new QETApp; Q_UNUSED(qet); + auto editors=QETApp::diagramEditors();check(!editors.isEmpty(),"editor created"); + auto *editor=editors.first(); + auto *project=new QETProject(fixture);check(project->state()==QETProject::Ok,"fixture loaded"); + editor->addProjectView(new ProjectView(project)); + auto *scene=project->diagrams().first(); + auto widgets=editor->findChildren();check(!widgets.isEmpty(),"toolbar widget present"); + auto *combo=widgets.first()->findChild();check(combo&&combo->count()==6,"six choices"); + check(combo->currentIndex()==3&&editor->property("graphics_handler_size").toReal()==10,"default x1"); + auto *free=new IndependentTextItem;free->setPlainText("Mouse placement");scene->addItem(free);free->setSelected(true); + QPixmap pixmap(30,20);pixmap.fill(Qt::red);auto *image=new DiagramImageItem(pixmap);scene->addItem(image);image->setSelected(true); + auto *shape=new QetShapeItem({100,100},{150,140},QetShapeItem::Rectangle);scene->addItem(shape);shape->setSelected(true); + auto *attached=scene->elements().first()->dynamicTextItems().first();attached->setSelected(true); + auto *background=project->addNewDiagram(); + auto *backgroundHandle=new QetGraphicsHandlerItem; + background->addItem(backgroundHandle); + QApplication::processEvents(); + const QString xml=project->toXml().toString(); + const int undoCount=scene->undoStack().count();const int undoIndex=scene->undoStack().index(); + const bool dirty=project->projectWasModified(); + const qreal sizes[]={2.5,5,7.5,10,20,30}; + for(int i=0;i<6;++i) { + combo->setCurrentIndex(i);QApplication::processEvents(); + check(editor->property("graphics_handler_size").toReal()==sizes[i],"fractional editor property"); + check(QETUtils::graphicsHandlerSize(image)==sizes[i],"new handle size lookup"); + check(backgroundHandle->property("currentSize").toReal()==sizes[i],"inactive folio handles updated"); + int handles=0;for(auto *item:scene->items())if(item->type()==QetGraphicsHandlerItem::Type){ + ++handles;auto *handle=qgraphicsitem_cast(item); + check(handle->property("currentSize").toReal()==sizes[i],"existing handles updated immediately"); + } + check(handles>=8,"multiple selected object handles tested"); + image->setSelected(false);image->setSelected(true); + for(auto *item:scene->items())if(item->type()==QetGraphicsHandlerItem::Type) + check(qgraphicsitem_cast(item)->property("currentSize").toReal()==sizes[i],"recreated handles retain fractions"); + DiagramEditorHandlerSizeWidget recreated(editor); + check(recreated.findChild()->currentIndex()==i,"toolbar recreation preserves chosen size"); + check(project->toXml().toString()==xml,"handle size leaves project XML unchanged"); + check(scene->undoStack().count()==undoCount&&scene->undoStack().index()==undoIndex,"handle size leaves undo stack unchanged"); + check(project->projectWasModified()==dirty,"handle size leaves dirty state unchanged"); + } + for(int i=0;i<6;++i) { + combo->setCurrentIndex(i); + scene->clearSelection(); + auto *picture=new DiagramImageItem(pixmap);scene->addItem(picture);picture->setPos(400,400);picture->setSelected(true); + auto *handle=bottomRightHandle(scene); + check(handle->property("currentSize").toReal()==sizes[i],"image mouse handle size"); + drag(scene,handle,handle->scenePos()+QPointF(20,20)); + check(picture->scaleFactorX()!=1,"image resized by mouse events"); + const qreal changed=picture->scaleFactorX();scene->undoStack().undo(); + check(picture->scaleFactorX()==1,"image resize undo");scene->undoStack().redo(); + check(picture->scaleFactorX()==changed,"image resize redo");scene->undoStack().undo(); + const auto centre=picture->mapToScene(picture->imageRect().center()); + mouse(scene,picture,QEvent::GraphicsSceneMousePress,centre); + mouse(scene,picture,QEvent::GraphicsSceneMouseRelease,centre); + handle=bottomRightHandle(scene); + const auto pivot=picture->mapToScene(picture->pivot());QTransform turn;turn.rotate(30); + drag(scene,handle,pivot+turn.map(handle->scenePos()-pivot)); + check(qAbs(picture->rotationAngle())>1,"image rotated by mouse events"); + const qreal angle=picture->rotationAngle();scene->undoStack().undo(); + check(qAbs(picture->rotationAngle())<0.001,"image rotation undo");scene->undoStack().redo(); + check(qAbs(picture->rotationAngle()-angle)<0.001,"image rotation redo");scene->undoStack().undo(); + scene->undoStack().clear();delete picture; + auto *rectangle=new QetShapeItem({0,0},{50,40},QetShapeItem::Rectangle);scene->addItem(rectangle);rectangle->setPos(400,400);rectangle->setSelected(true); + const auto rect=rectangle->rect();handle=bottomRightHandle(scene); + drag(scene,handle,handle->scenePos()+QPointF(20,20));check(rectangle->rect()!=rect,"shape resized by mouse events"); + const auto resized=rectangle->rect();scene->undoStack().undo();check(rectangle->rect()==rect,"shape resize undo"); + scene->undoStack().redo();check(rectangle->rect()==resized,"shape resize redo");scene->undoStack().undo(); + for(int click=0;click<2;++click) { + const auto middle=rectangle->mapToScene(rect.center()); + mouse(scene,rectangle,QEvent::GraphicsSceneMousePress,middle);mouse(scene,rectangle,QEvent::GraphicsSceneMouseRelease,middle); + } + handle=bottomRightHandle(scene);const auto shapePivot=rectangle->mapToScene(rectangle->pivot()); + drag(scene,handle,shapePivot+turn.map(handle->scenePos()-shapePivot)); + check(qAbs(rectangle->rotation())>1,"shape rotated by mouse events"); + const qreal shapeAngle=rectangle->rotation();scene->undoStack().undo();check(qAbs(rectangle->rotation())<0.001,"shape rotation undo"); + scene->undoStack().redo();check(qAbs(rectangle->rotation()-shapeAngle)<0.001,"shape rotation redo");scene->undoStack().undo(); + scene->undoStack().clear(); + auto *companion=new DiagramImageItem(pixmap);scene->addItem(companion);companion->setPos(600,400);companion->setSelected(true); + rectangle->setSelected(true); + const auto rectanglePos=rectangle->pos();const auto companionPos=companion->pos(); + const auto start=companion->mapToScene(companion->imageRect().center());const auto end=start+QPointF(20,20); + mouse(scene,companion,QEvent::GraphicsSceneMousePress,start); + mouse(scene,companion,QEvent::GraphicsSceneMouseMove,end,&start); + mouse(scene,companion,QEvent::GraphicsSceneMouseRelease,end,&start); + check(companion->pos()==companionPos+QPointF(20,20)&&rectangle->pos()==rectanglePos+QPointF(20,20),"multiple objects moved by mouse events"); + scene->undoStack().undo();check(companion->pos()==companionPos&&rectangle->pos()==rectanglePos,"multiple object movement undo"); + scene->undoStack().redo();check(companion->pos()==companionPos+QPointF(20,20)&&rectangle->pos()==rectanglePos+QPointF(20,20),"multiple object movement redo"); + scene->undoStack().undo();scene->undoStack().clear();delete companion;delete rectangle; + } + std::puts("PASS: image and rectangle mouse resize/rotation, multiple object movement, and undo/redo at all six sizes"); + project->setFilePath(QString::fromLocal8Bit(argv[3])+"/handles.qet"); + check(project->write().isOk(),"save after handle size changes"); + QETProject reopened(project->filePath());check(reopened.state()==QETProject::Ok,"reopen after handle size changes"); + bool imageFound=false,textFound=false; + for(auto *item:reopened.diagrams().first()->items()) { + if(auto *loaded=qgraphicsitem_cast(item))imageFound|=loaded->pixmap().size()==pixmap.size(); + if(auto *loaded=qgraphicsitem_cast(item))textFound|=loaded->toPlainText()==free->toPlainText(); + } + check(imageFound&&textFound,"object content survives reopen"); + auto *elementEditor=new QETElementEditor;elementEditor->show(); + auto *elementScene=elementEditor->elementScene(); + auto *part=new PartRectangle(elementEditor);part->setRect({0,0,50,40});elementScene->addItems({part});part->setSelected(true); + QApplication::processEvents(); + auto checkElementHandles=[&] { + int count=0; + for(auto *item:elementScene->items())if(item->type()==QetGraphicsHandlerItem::Type&&item->isVisible()) { + ++count;check(qgraphicsitem_cast(item)->property("currentSize").toReal()==10,"element editor retains default handle size"); + } + check(count>=4,"element editor shared handles present"); + }; + for(int i=0;i<6;++i){combo->setCurrentIndex(i);checkElementHandles();check(part->rect()==QRectF(0,0,50,40),"element primitive geometry unchanged");} + elementScene->clearSelection(); + auto *field=new PartDynamicTextField(elementEditor);field->setPlainText("Element field");elementScene->addItems({field});field->setSelected(true); + QApplication::processEvents();checkElementHandles(); + std::puts("PASS: element editor rectangle and dynamic field keep their default shared handles"); + QStandardItemModel model(2,2);model.setData(model.index(0,0),"Table"); + auto *table=new QetGraphicsTableItem;table->setModel(&model);scene->addItem(table); + const auto tableSize=table->size(); + for(int i=0;i<6;++i) { + combo->setCurrentIndex(i); + QGraphicsSceneHoverEvent enter(QEvent::GraphicsSceneHoverEnter);scene->sendEvent(table,&enter); + check(bottomRightHandle(scene)->property("currentSize").toReal()==sizes[i],"table hover handle retains fraction"); + check(table->size()==tableSize,"table dimensions unchanged"); + QGraphicsSceneHoverEvent leave(QEvent::GraphicsSceneHoverLeave);scene->sendEvent(table,&leave); + } + delete table;std::puts("PASS: table hover handles retain all six sizes without changing the table"); + const auto wireFixture=QFileInfo(fixture).dir().absoluteFilePath("../../../examples/tremie_vibrante.qet"); + auto *wireProject=new QETProject(wireFixture);check(wireProject->state()==QETProject::Ok,"conductor fixture opens"); + editor->addProjectView(new ProjectView(wireProject)); + Diagram *wireScene=nullptr;for(auto *diagram:wireProject->diagrams())if(!diagram->conductors().isEmpty()){wireScene=diagram;break;} + check(wireScene,"conductor scene present");auto *wire=wireScene->conductors().first(); + wire->setSelected(true);QApplication::processEvents(); + const auto wireXml=canonicalProjectXml(wireProject->toXml()); + for(int i=0;i<6;++i) { + combo->setCurrentIndex(i);wire->setSelected(false);wire->setSelected(true); + int count=0;for(auto *item:wireScene->items())if(item->type()==QetGraphicsHandlerItem::Type) { + ++count;check(qgraphicsitem_cast(item)->property("currentSize").toReal()==sizes[i],"conductor handles retain fractions"); + } + check(count>0,"conductor handles present"); + const auto after=canonicalProjectXml(wireProject->toXml()); + check(after==wireXml,"conductor project content unchanged"); + } + std::puts("PASS: conductor handles retain all six sizes without changing their project"); + std::puts("PASS: six toolbar choices, default, fractions, existing/recreated handles, multi-selection, toolbar recreation, unchanged XML/undo/dirty state"); + }catch(const std::exception &error){std::printf("FAIL: %s\n",error.what());std::fflush(stdout);std::_Exit(1);} + std::fflush(stdout);std::_Exit(0); +} diff --git a/tests/qttest/run_handle_size_probe.py b/tests/qttest/run_handle_size_probe.py new file mode 100644 index 000000000..9b95cd5f7 --- /dev/null +++ b/tests/qttest/run_handle_size_probe.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 +"""Link the handle-size integration probe using an existing Ninja app build. + +Reuses app objects without duplicating the app or introducing a core-library +refactor. No application source or existing executable is replaced. The +generated manifest, probe binary, reports and export fixtures stay in build/. +""" +import argparse +import pathlib +import re +import shutil +import subprocess +import sys + +parser = argparse.ArgumentParser() +parser.add_argument('--build', required=True) +parser.add_argument('--binary', required=True) +parser.add_argument('--source', required=True) +parser.add_argument('--fixture', required=True) +args = parser.parse_args() +build = pathlib.Path(args.build).resolve() +binary = pathlib.Path(args.binary).resolve() +source = pathlib.Path(args.source).resolve() +fixture = pathlib.Path(args.fixture).resolve() +manifest = (build / 'build.ninja').read_text(encoding='utf-8') +match = re.search(r'^build (\S*?/sources/main\.cpp\.(?:obj|o)):', manifest, re.MULTILINE) +if not match: + sys.exit('Cannot find the application main object in the Ninja build.') +main_object = match.group(1) +probe_object = main_object.replace('main.cpp.', 'handle_size_probe.cpp.') +probe_binary = binary.with_name('handle_size_probe' + binary.suffix) +def escape(path): + return pathlib.Path(path).as_posix().replace('$', '$$').replace(':', '$:').replace(' ', '$ ') +main_source = source.parents[2] / 'sources' / 'main.cpp' +manifest = manifest.replace(main_object, probe_object) +manifest = manifest.replace(escape(main_source), escape(source)) +if binary.suffix: + manifest = manifest.replace(binary.name, probe_binary.name) +else: + old_target = escape(binary.name if binary.parent == build else binary) + new_target = escape(probe_binary.name if probe_binary.parent == build else probe_binary) + manifest = manifest.replace('build ' + old_target + ':', 'build ' + new_target + ':') + old_file = binary.name if binary.parent == build else binary.as_posix() + new_file = probe_binary.name if probe_binary.parent == build else probe_binary.as_posix() + manifest = re.sub(r'^ TARGET_FILE = ' + re.escape(old_file) + r'$', + ' TARGET_FILE = ' + new_file, manifest, flags=re.MULTILINE) +probe_manifest = build / 'handle-size-probe.ninja' +probe_manifest.write_text(manifest, encoding='utf-8') +ninja = shutil.which('ninja') +if not ninja: + sys.exit('Ninja is required for the integration probe.') +target = probe_binary.name if probe_binary.parent == build else str(probe_binary) +subprocess.run([ninja, '-C', str(build), '-f', probe_manifest.name, target], check=True) +output = build / 'handle-size' +output.mkdir(exist_ok=True) +report = output / 'results.txt' +result = subprocess.run([str(probe_binary), str(fixture), str(report), str(output)], timeout=90) +if report.exists(): + print(report.read_text(encoding='utf-8', errors='replace')) +sys.exit(result.returncode) diff --git a/tests/qttest/tst_borderpropertiesxml.cpp b/tests/qttest/tst_borderpropertiesxml.cpp new file mode 100644 index 000000000..c5aedc7c1 --- /dev/null +++ b/tests/qttest/tst_borderpropertiesxml.cpp @@ -0,0 +1,119 @@ +/* + Copyright 2006-2026 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ +#include "borderproperties.h" + +#include +#include + +/** + BorderProperties::fromXml() -- the element a project keeps for + its new folios. Its column width and row height are decimals, written + by toXml() as "%1"; they used to be read with toInt(), which is 0 for + "60.5", and 0 is then clamped to the 5 px minimum by the folio. +*/ +class tst_borderpropertiesxml : public QObject +{ + Q_OBJECT + + static QDomElement border(const QString &attributes) + { + static QDomDocument doc; + doc.setContent(QStringLiteral("").arg(attributes)); + return doc.documentElement(); + } + + static BorderProperties base() + { + BorderProperties p; + p.columns_count = 17; + p.columns_width = 60; + p.rows_count = 8; + p.rows_height = 80; + p.display_columns = true; + p.display_rows = true; + return p; + } + +private slots: + void sizesAreReadAsDecimals_data() + { + QTest::addColumn("colsize"); + QTest::addColumn("rowsize"); + QTest::addColumn("width"); + QTest::addColumn("height"); + QTest::newRow("whole numbers") << "50" << "100" << 50.0 << 100.0; + QTest::newRow("decimals") << "60.5" << "80.25" << 60.5 << 80.25; + QTest::newRow("rounds down") << "61.3" << "61.3" << 61.3 << 61.3; + QTest::newRow("rounds up") << "61.7" << "61.7" << 61.7 << 61.7; + } + + void sizesAreReadAsDecimals() + { + QFETCH(QString, colsize); + QFETCH(QString, rowsize); + QFETCH(qreal, width); + QFETCH(qreal, height); + + BorderProperties p = base(); + QDomElement e = border(QStringLiteral("cols=\"17\" colsize=\"%1\" rows=\"8\" rowsize=\"%2\"") + .arg(colsize, rowsize)); + p.fromXml(e); + QCOMPARE(p.columns_width, width); + QCOMPARE(p.rows_height, height); + QCOMPARE(p.columns_count, 17); + QCOMPARE(p.rows_count, 8); + } + + void savedSizesComeBack() + { + BorderProperties saved = base(); + saved.columns_width = 60.5; + saved.rows_height = 80.25; + QDomDocument doc; + QDomElement e = doc.createElement(QStringLiteral("border")); + saved.toXml(e); + + BorderProperties loaded = base(); + loaded.fromXml(e); + QCOMPARE(loaded.columns_width, 60.5); + QCOMPARE(loaded.rows_height, 80.25); + } + + // An unreadable size leaves the previous value, as a missing one does. + void unreadableSizeIsLeftAlone_data() + { + QTest::addColumn("attributes"); + QTest::newRow("missing") << "cols=\"17\" rows=\"8\""; + QTest::newRow("text") << "colsize=\"wide\" rowsize=\"tall\""; + QTest::newRow("nan") << "colsize=\"nan\" rowsize=\"nan\""; + QTest::newRow("inf") << "colsize=\"inf\" rowsize=\"-inf\""; + } + + void unreadableSizeIsLeftAlone() + { + QFETCH(QString, attributes); + BorderProperties p = base(); + QDomElement e = border(attributes); + p.fromXml(e); + QCOMPARE(p.columns_width, 60.0); + QCOMPARE(p.rows_height, 80.0); + } +}; + +QTEST_GUILESS_MAIN(tst_borderpropertiesxml) +#include "tst_borderpropertiesxml.moc" diff --git a/tests/qttest/tst_conductorsizesetting.cpp b/tests/qttest/tst_conductorsizesetting.cpp new file mode 100644 index 000000000..7a8afbeac --- /dev/null +++ b/tests/qttest/tst_conductorsizesetting.cpp @@ -0,0 +1,113 @@ +/* + Copyright 2006-2026 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ +#include "conductorproperties.h" +#include "qetapp.h" + +#include +#include + +// qet.cpp, compiled in for ConductorProperties, refers to this static. +QString QETApp::m_interface_language; + +/** + ConductorProperties::toSettings()/fromSettings() keep the conductor + width (cond_size) as it was saved. The width is a decimal, written with + QString::number(); reading it with toInt() gave 0 for every value that + was not a whole number, so a default width of 1.4 came back as 0 after + a restart. + + This test owns its own QSettings scope (organization + application + name), so it cannot read or write the configuration of whoever runs it. +*/ +class tst_conductorsizesetting : public QObject +{ + Q_OBJECT + +private slots: + void initTestCase() + { + QCoreApplication::setOrganizationName( + QStringLiteral("QElectroTech-tst_conductorsizesetting")); + QCoreApplication::setApplicationName(QStringLiteral("tst_conductorsizesetting")); + QSettings settings; + settings.clear(); + } + + void init() + { + QSettings settings; + settings.clear(); + settings.sync(); + } + + void widthSurvivesARoundTrip_data() + { + QTest::addColumn("width"); + QTest::newRow("whole number") << 2.0; + QTest::newRow("decimal") << 1.4; + QTest::newRow("minimum") << 0.4; + QTest::newRow("rounds down") << 61.3; + QTest::newRow("rounds up") << 61.7; + } + + void widthSurvivesARoundTrip() + { + QFETCH(qreal, width); + QSettings settings; + ConductorProperties saved; + saved.cond_size = width; + saved.toSettings(settings, QStringLiteral("test/")); + + ConductorProperties loaded; + loaded.fromSettings(settings, QStringLiteral("test/")); + QCOMPARE(loaded.cond_size, width); + } + + // A hand-edited or truncated settings file must not give a width of 0. + void unusableValueFallsBackToOne_data() + { + QTest::addColumn("value"); + QTest::newRow("text") << QStringLiteral("wide"); + QTest::newRow("zero") << QStringLiteral("0"); + QTest::newRow("negative") << QStringLiteral("-1"); + QTest::newRow("nan") << QStringLiteral("nan"); + QTest::newRow("inf") << QStringLiteral("inf"); + } + + void unusableValueFallsBackToOne() + { + QFETCH(QString, value); + QSettings settings; + settings.setValue(QStringLiteral("test/size"), value); + + ConductorProperties loaded; + loaded.fromSettings(settings, QStringLiteral("test/")); + QCOMPARE(loaded.cond_size, 1.0); + } + + void missingValueIsOne() + { + QSettings settings; + ConductorProperties loaded; + loaded.fromSettings(settings, QStringLiteral("test/")); + QCOMPARE(loaded.cond_size, 1.0); + } +}; + +QTEST_GUILESS_MAIN(tst_conductorsizesetting) +#include "tst_conductorsizesetting.moc" diff --git a/tests/qttest/tst_foliofreezeflags.cpp b/tests/qttest/tst_foliofreezeflags.cpp new file mode 100644 index 000000000..6824215a8 --- /dev/null +++ b/tests/qttest/tst_foliofreezeflags.cpp @@ -0,0 +1,103 @@ +/* + Copyright 2006-2026 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ +#include +#include +#include +#include + +/** + A folio's "freeze new elements" and "freeze new conductors" flags are + saved as freezeNewElement="true" and freezeNewConductor="true" on its + . Loading must read the words back: the flags used to be read + with toInt(), which is 0 for "true" as well as for "false", so both were + off again after every reload. Runs the real binary's --resave on a + project with one folio per combination and reads the saved attributes. +*/ +class tst_foliofreezeflags : public QObject +{ + Q_OBJECT + + QTemporaryDir m_dir; + + static bool runQet(const QStringList &arguments) + { + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + env.insert(QStringLiteral("QT_QPA_PLATFORM"), QStringLiteral("offscreen")); + QProcess proc; + proc.setProcessEnvironment(env); + proc.start(QStringLiteral(QET_TEST_BINARY_PATH), arguments); + return proc.waitForFinished(60000) + && proc.exitStatus() == QProcess::NormalExit + && proc.exitCode() == 0; + } + + /// The elements of a saved project, in file order. + static QList diagrams(const QString &path) + { + QFile file(path); + QDomDocument doc; + if (!file.open(QIODevice::ReadOnly) || !doc.setContent(&file)) return {}; + QList list; + for (QDomElement e = doc.documentElement().firstChildElement(QStringLiteral("diagram")); + !e.isNull(); + e = e.nextSiblingElement(QStringLiteral("diagram"))) + list << e; + return list; + } + +private slots: + void initTestCase() + { + QVERIFY2(QFile::exists(QStringLiteral(QET_TEST_BINARY_PATH)), "qelectrotech binary not found"); + QVERIFY(m_dir.isValid()); + } + + // Folio 1 has both flags, folio 2 only the element one, folio 3 none, + // and folio 4 is an older file without the attributes at all. + void flagsSurviveASave_data() + { + QTest::addColumn("folio"); + QTest::addColumn("element"); + QTest::addColumn("conductor"); + QTest::newRow("both frozen") << 0 << "true" << "true"; + QTest::newRow("elements frozen") << 1 << "true" << "false"; + QTest::newRow("not frozen") << 2 << "false" << "false"; + QTest::newRow("no attributes") << 3 << "false" << "false"; + } + + void flagsSurviveASave() + { + QFETCH(int, folio); + QFETCH(QString, element); + QFETCH(QString, conductor); + + const QString fixture = QFINDTESTDATA("fixtures/folio_freeze_flags.qet"); + QVERIFY2(!fixture.isEmpty(), "fixture project not found"); + const QString out = m_dir.filePath(QStringLiteral("resaved%1.qet").arg(folio)); + QVERIFY2(runQet({QStringLiteral("--resave"), fixture, out}), "--resave failed"); + + const QList list = diagrams(out); + QCOMPARE(list.size(), 4); + const QDomElement e = list.at(folio); + QCOMPARE(e.attribute(QStringLiteral("freezeNewElement")), element); + QCOMPARE(e.attribute(QStringLiteral("freezeNewConductor")), conductor); + } +}; + +QTEST_MAIN(tst_foliofreezeflags) +#include "tst_foliofreezeflags.moc" diff --git a/tests/qttest/tst_foliogrid.cpp b/tests/qttest/tst_foliogrid.cpp new file mode 100644 index 000000000..b4f7a0462 --- /dev/null +++ b/tests/qttest/tst_foliogrid.cpp @@ -0,0 +1,99 @@ +/* + Copyright 2006-2026 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ +#include "foliogrid.h" + +#include +#include + +/** + FolioGrid::step() -- the folio grid step as read from the settings. + Every reader of diagrameditor/Xgrid and Ygrid goes through it, so a + settings file holding 0 (a division by zero in Diagram::snapToGrid() + and an endless "% 0" in drawBackground()), a negative number (an + endless loop) or text can no longer reach the code that uses the step. +*/ +class tst_foliogrid : public QObject +{ + Q_OBJECT + +private slots: + void usableValuesAreKept_data() + { + QTest::addColumn("value"); + QTest::addColumn("expected"); + QTest::newRow("one") << QVariant(1) << 1; + QTest::newRow("default") << QVariant(10) << 10; + QTest::newRow("text number") << QVariant(QStringLiteral("7")) << 7; + QTest::newRow("large") << QVariant(100000) << 100000; + QTest::newRow("int max") << QVariant(2147483647) << 2147483647; + } + + void usableValuesAreKept() + { + QFETCH(QVariant, value); + QFETCH(int, expected); + QCOMPARE(FolioGrid::step(value, 10), expected); + } + + void unusableValuesFallBack_data() + { + QTest::addColumn("value"); + QTest::newRow("missing") << QVariant(); + QTest::newRow("zero") << QVariant(0); + QTest::newRow("negative") << QVariant(-5); + QTest::newRow("text") << QVariant(QStringLiteral("ten")); + QTest::newRow("empty") << QVariant(QString()); + QTest::newRow("nan") << QVariant(QStringLiteral("nan")); + QTest::newRow("too large") << QVariant(QStringLiteral("99999999999")); + QTest::newRow("too large number") << QVariant(qlonglong(99999999999)); + QTest::newRow("int max + 1") << QVariant(qlonglong(2147483648)); + } + + void unusableValuesFallBack() + { + QFETCH(QVariant, value); + QCOMPARE(FolioGrid::step(value, 10), 10); + QCOMPARE(FolioGrid::step(value, 20), 20); + } + + // A decimal in the file is rounded to a whole number, as the plain + // QVariant::toInt() read did before. + void decimalIsRoundedLikeBefore() + { + QCOMPARE(FolioGrid::step(QVariant(7.9), 10), 8); + QCOMPARE(FolioGrid::step(QVariant(0.4), 10), 10); + } + + // Through a real settings file, in a scope of this test's own. + void readsTheSettingsKeys() + { + QCoreApplication::setOrganizationName(QStringLiteral("QElectroTech-tst_foliogrid")); + QCoreApplication::setApplicationName(QStringLiteral("tst_foliogrid")); + QSettings settings; + settings.clear(); + QCOMPARE(FolioGrid::step(settings.value(FolioGrid::x_key), 10), 10); + settings.setValue(FolioGrid::x_key, 0); + settings.setValue(FolioGrid::y_key, 15); + QCOMPARE(FolioGrid::step(settings.value(FolioGrid::x_key), 10), 10); + QCOMPARE(FolioGrid::step(settings.value(FolioGrid::y_key), 10), 15); + settings.clear(); + } +}; + +QTEST_GUILESS_MAIN(tst_foliogrid) +#include "tst_foliogrid.moc" diff --git a/tests/qttest/tst_handlersize.cpp b/tests/qttest/tst_handlersize.cpp new file mode 100644 index 000000000..e79fa63a2 --- /dev/null +++ b/tests/qttest/tst_handlersize.cpp @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#include +#include +#include +#include +#include +#include "QetGraphicsItemModeler/qetgraphicshandleritem.h" + +class tst_handlersize : public QObject +{ + Q_OBJECT +private slots: + void sizeChangeCancelsOldHoverAnimation() { + QGraphicsScene scene; + auto *handle=new QetGraphicsHandlerItem(30);scene.addItem(handle); + QGraphicsSceneHoverEvent event(QEvent::GraphicsSceneHoverEnter); + scene.sendEvent(handle,&event); + handle->setSize(2.5); + QTest::qWait(250); + QCOMPARE(handle->property("currentSize").toReal(),qreal(2.5)); + } + void fractionalGeometryAndPicking() { + for (qreal size : {2.5, 5.0, 7.5, 10.0, 20.0, 30.0}) { + QGraphicsScene scene; + auto *object = scene.addRect(QRectF(0,0,100,60)); + object->setPos(80,40); object->setRotation(37); object->setSelected(true); + const QRectF geometry=object->rect(); const auto transform=object->sceneTransform(); + auto handles=QetGraphicsHandlerItem::handlerForPoint({QPointF(120,80)},size); + auto *handle=handles.first(); scene.addItem(handle); handle->setColor(Qt::darkGreen); + QCOMPARE(handle->property("currentSize").toReal(),size); + QCOMPARE(handle->boundingRect().width(),size+2); + const auto position=handle->pos(); + for (qreal next : {2.5,5.0,7.5,10.0,20.0,30.0}) { + handle->setSize(next); + QCOMPARE(handle->property("currentSize").toReal(),next); + QCOMPARE(handle->pos(),position); QVERIFY(handle->isVisible()); + QCOMPARE(object->rect(),geometry); QCOMPARE(object->sceneTransform(),transform); + for (qreal zoom : {0.25,1.0,4.0}) { + QGraphicsView view(&scene); view.scale(zoom,zoom); + const auto device=handle->deviceTransform(view.viewportTransform()); + QCOMPARE(device.mapRect(handle->boundingRect()).width(),next+2); + const QPointF centre=handle->scenePos(); + QVERIFY(scene.items(centre,Qt::IntersectsItemShape,Qt::DescendingOrder,view.viewportTransform()).contains(handle)); + const QPointF outside=centre+QPointF((next/2+2)/zoom,0); + QVERIFY(!scene.items(outside,Qt::IntersectsItemShape,Qt::DescendingOrder,view.viewportTransform()).contains(handle)); + } + } + handle->hide(); QVERIFY(!scene.items(position).contains(handle)); + } + } +}; +QTEST_MAIN(tst_handlersize) +#include "tst_handlersize.moc" diff --git a/tests/qttest/tst_imagestalecrop.cpp b/tests/qttest/tst_imagestalecrop.cpp new file mode 100644 index 000000000..d2f889493 --- /dev/null +++ b/tests/qttest/tst_imagestalecrop.cpp @@ -0,0 +1,196 @@ +/* + Copyright 2006-2026 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + Before #1310, a project saved after a crop was undone kept the undone + , with the uncropped picture shown. Loading such a file has to + drop that crop: the picture shown is always exactly the crop's size, + so a picture of another size means the crop is stale. Otherwise the + next edit of the picture applies the crop again. + + Runs the real binary: a script adds and crops a picture and saves; + the test then puts another picture where the shown one is, and lets + the binary load and save that file again. +*/ +class tst_imagestalecrop : public QObject +{ + Q_OBJECT + + QTemporaryDir m_dir; + + // Runs the binary on @p project with a script that saves it to @p out. + bool run(const QString &script, const QString &project) + { + const QString path = m_dir.filePath(QStringLiteral("probe.js")); + const QString home = m_dir.filePath(QStringLiteral("home")); + QDir().mkpath(home); + QFile f(path); + if (!f.open(QIODevice::WriteOnly)) return false; + f.write(script.toUtf8()); + f.close(); + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + env.insert(QStringLiteral("QT_QPA_PLATFORM"), QStringLiteral("offscreen")); + env.insert(QStringLiteral("QET_ENABLE_SCRIPTING"), QStringLiteral("1")); + env.insert(QStringLiteral("HOME"), home); + env.insert(QStringLiteral("XDG_CONFIG_HOME"), home + QStringLiteral("/config")); + env.insert(QStringLiteral("XDG_DATA_HOME"), home + QStringLiteral("/data")); + env.insert(QStringLiteral("TMPDIR"), m_dir.path()); + QProcess proc; + proc.setProcessEnvironment(env); + proc.start(QStringLiteral(QET_TEST_BINARY_PATH), + {QStringLiteral("--run"), path, project}); + return proc.waitForFinished(120000) && proc.exitStatus() == QProcess::NormalExit; + } + + // Opens @p in and saves it to @p out. + bool resave(const QString &in, const QString &out) + { + return run(QStringLiteral("qet.save('%1');\n").arg(out), in) && QFile::exists(out); + } + + static QByteArray read(const QString &path) + { + QFile f(path); + return f.open(QIODevice::ReadOnly) ? f.readAll() : QByteArray(); + } + + static QByteArray png(const QSize &size) + { + QImage img(size, QImage::Format_RGB32); + img.fill(Qt::darkGreen); + QByteArray bytes; + QBuffer buffer(&bytes); + buffer.open(QIODevice::WriteOnly); + img.save(&buffer, "PNG"); + return bytes.toBase64(); + } + + // The size of the saved original (), or an empty size. + static QSize baseSize(const QByteArray &xml) + { + const QRegularExpression base(QStringLiteral("\\s*([A-Za-z0-9+/=]+)")); + const QRegularExpressionMatch m = base.match(QString::fromLatin1(xml)); + if (!m.hasMatch()) return {}; + return QImage::fromData(QByteArray::fromBase64(m.captured(1).toLatin1())).size(); + } + + // @p xml with the shown picture (the element's first text) + // replaced by a PNG of @p size. + static QByteArray withShown(QByteArray xml, const QSize &size) + { + const QRegularExpression shown(QStringLiteral("(]*>\\s*)([A-Za-z0-9+/=]+)")); + const QRegularExpressionMatch m = shown.match(QString::fromLatin1(xml)); + if (!m.hasMatch()) return {}; + return xml.replace(m.capturedStart(2), m.capturedLength(2), png(size)); + } + + QString m_cropped; // a picture of 40 x 30, cropped to 10,5,20,10 + +private slots: + void initTestCase() + { + QVERIFY(m_dir.isValid()); + QVERIFY(QFile::exists(QStringLiteral(QET_TEST_BINARY_PATH))); + QImage img(40, 30, QImage::Format_RGB32); + img.fill(Qt::darkGreen); + const QString pic = m_dir.filePath(QStringLiteral("pic.png")); + QVERIFY(img.save(pic)); + + m_cropped = m_dir.filePath(QStringLiteral("cropped.qet")); + QVERIFY(run(QStringLiteral(R"JS( +var i = qet.addImage(0, '%1', 100, 100); +qet.cropImage(0, i, 10, 5, 20, 10); +qet.save('%2'); +)JS").arg(pic, m_cropped), QStringLiteral(QET_EXAMPLES_DIR "/741.qet"))); + const QByteArray xml = read(m_cropped); + QCOMPARE(xml.count("")); + } + + // A valid crop is kept, byte for byte. + void validCropIsKept() + { + const QString out = m_dir.filePath(QStringLiteral("valid-out.qet")); + QVERIFY(resave(m_cropped, out)); + const QByteArray xml = read(out); + // Attributes in any order: Qt before 6.5 writes them unordered. + const QRegularExpression crop(QStringLiteral("]*\\bx=\"10\")(?=[^>]*\\by=\"5\")" + "(?=[^>]*\\bw=\"20\")(?=[^>]*\\bh=\"10\")")); + QVERIFY2(crop.match(QString::fromLatin1(xml)).hasMatch(), "the valid crop was lost"); + QVERIFY(xml.contains("")); + } + + // The shown picture is the whole original (40 x 30): the crop was + // undone before the file was saved. It is dropped, and with nothing + // else to remember the original is not saved twice any more. + void staleCropOfWholeOriginalIsDropped() + { + const QString stale = m_dir.filePath(QStringLiteral("stale.qet")); + const QByteArray xml = withShown(read(m_cropped), QSize(40, 30)); + QVERIFY(!xml.isEmpty()); + QFile f(stale); + QVERIFY(f.open(QIODevice::WriteOnly)); + f.write(xml); + f.close(); + + const QString out = m_dir.filePath(QStringLiteral("stale-out.qet")); + QVERIFY(resave(stale, out)); + const QByteArray saved = read(out); + QCOMPARE(saved.count("")); + } + + // The shown picture matches neither the crop nor the original: it is + // what the user saw, so it becomes the original -- a crop made after + // loading cuts it, not the old original. + void shownPictureOfOtherSizeBecomesTheOriginal() + { + const QString odd = m_dir.filePath(QStringLiteral("odd.qet")); + const QByteArray xml = withShown(read(m_cropped), QSize(25, 25)); + QVERIFY(!xml.isEmpty()); + QFile f(odd); + QVERIFY(f.open(QIODevice::WriteOnly)); + f.write(xml); + f.close(); + + const QString out = m_dir.filePath(QStringLiteral("odd-out.qet")); + QVERIFY(resave(odd, out)); + const QByteArray saved = read(out); + QVERIFY2(!saved.contains("")); + + const QString recropped = m_dir.filePath(QStringLiteral("odd-recropped.qet")); + QVERIFY(run(QStringLiteral("qet.cropImage(0, 0, 0, 0, 10, 10);\nqet.save('%1');\n") + .arg(recropped), odd)); + QCOMPARE(baseSize(read(recropped)), QSize(25, 25)); + } +}; + +QTEST_MAIN(tst_imagestalecrop) +#include "tst_imagestalecrop.moc" diff --git a/tests/qttest/tst_legacysequentialattributes.cpp b/tests/qttest/tst_legacysequentialattributes.cpp new file mode 100644 index 000000000..905793f7d --- /dev/null +++ b/tests/qttest/tst_legacysequentialattributes.cpp @@ -0,0 +1,126 @@ +/* + Copyright 2006-2026 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ +#include +#include +#include +#include + +/** + Projects saved before the element keep an element's + or conductor's sequential numbers as attributes: sequ_1, sequf_1, seqt_1, + seqtf_1, seqh_1 and seqhf_1. The loaders look for one of them to take + the old route; the list named sequf_1 twice and seqhf_1 never, so a + file whose only sequence was the hundred-folio one lost it. Runs the + real binary's --resave on fixtures/legacy_sequential_attributes.qet + and reads the it writes. +*/ +class tst_legacysequentialattributes : public QObject +{ + Q_OBJECT + + QTemporaryDir m_dir; + QDomDocument m_resaved; + + static bool runQet(const QStringList &arguments) + { + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + env.insert(QStringLiteral("QT_QPA_PLATFORM"), QStringLiteral("offscreen")); + QProcess proc; + proc.setProcessEnvironment(env); + proc.start(QStringLiteral(QET_TEST_BINARY_PATH), arguments); + return proc.waitForFinished(60000) + && proc.exitStatus() == QProcess::NormalExit + && proc.exitCode() == 0; + } + + /// The first @p tag element of the saved project with this uuid. + QDomElement item(const QString &tag, const QString &uuid) const + { + const QDomNodeList list = m_resaved.elementsByTagName(tag); + for (int i = 0; i < list.size(); ++i) { + const QDomElement e = list.at(i).toElement(); + if (e.attribute(QStringLiteral("uuid")) == uuid) return e; + } + return QDomElement(); + } + + /// The text of <@p part> under @p e. + static QString sequence(const QDomElement &e, const QString &part) + { + return e.firstChildElement(QStringLiteral("sequentialNumbers")) + .firstChildElement(part).text(); + } + +private slots: + void initTestCase() + { + QVERIFY2(QFile::exists(QStringLiteral(QET_TEST_BINARY_PATH)), "qelectrotech binary not found"); + QVERIFY(m_dir.isValid()); + const QString fixture = QFINDTESTDATA("fixtures/legacy_sequential_attributes.qet"); + QVERIFY2(!fixture.isEmpty(), "fixture project not found"); + const QString out = m_dir.filePath(QStringLiteral("resaved.qet")); + QVERIFY2(runQet({QStringLiteral("--resave"), fixture, out}), "--resave failed"); + QFile file(out); + QVERIFY(file.open(QIODevice::ReadOnly)); + QVERIFY(m_resaved.setContent(&file)); + } + + // The element and the conductor whose only old attribute is seqhf_1. + void hundredFolioSequenceIsKept_data() + { + QTest::addColumn("tag"); + QTest::addColumn("uuid"); + QTest::addColumn("value"); + QTest::newRow("element") << "element" << "{6c58a5a1-aa4e-40c4-9e9d-a76524f76e52}" << "5"; + QTest::newRow("conductor") << "conductor" << "{f5162c59-0c59-4e94-b6a6-4cf259a52d91}" << "7"; + } + + void hundredFolioSequenceIsKept() + { + QFETCH(QString, tag); + QFETCH(QString, uuid); + QFETCH(QString, value); + const QDomElement e = item(tag, uuid); + QVERIFY2(!e.isNull(), "item not found in the resaved project"); + QVERIFY2(!e.hasAttribute(QStringLiteral("seqhf_1")), "the old attribute is not written back"); + QCOMPARE(sequence(e, QStringLiteral("hundredFolio")), value); + } + + // The unit sequence, whose attribute was already in the list, as before. + void unitSequenceIsKept_data() + { + QTest::addColumn("tag"); + QTest::addColumn("uuid"); + QTest::addColumn("value"); + QTest::newRow("element") << "element" << "{29b32d7b-5ec3-42c8-afda-788e9614c0fd}" << "3"; + QTest::newRow("conductor") << "conductor" << "{89cacce1-b12a-4ec3-aadf-d3f8feb7494d}" << "4"; + } + + void unitSequenceIsKept() + { + QFETCH(QString, tag); + QFETCH(QString, uuid); + QFETCH(QString, value); + const QDomElement e = item(tag, uuid); + QVERIFY2(!e.isNull(), "item not found in the resaved project"); + QCOMPARE(sequence(e, QStringLiteral("unit")), value); + } +}; + +QTEST_MAIN(tst_legacysequentialattributes) +#include "tst_legacysequentialattributes.moc" diff --git a/tests/qttest/tst_positionorder.cpp b/tests/qttest/tst_positionorder.cpp new file mode 100644 index 000000000..1ee9de8b1 --- /dev/null +++ b/tests/qttest/tst_positionorder.cpp @@ -0,0 +1,155 @@ +/* + Copyright 2006-2026 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ +#include "positionorder.h" + +#include +#include +#include + +/** + PositionOrder -- the position comparisons behind renumbering elements + (comparPos) and numbering terminals. std::sort needs a strict weak + ordering; the old comparisons used "<=" and a 1 px tolerance, which + are not one, so two elements at the same position (or three terminals + a fraction apart) were undefined behaviour. +*/ +class tst_positionorder : public QObject +{ + Q_OBJECT + + using Less = std::function; + + static QList> orders() + { + return {{QStringLiteral("xThenY"), PositionOrder::xThenY}, + {QStringLiteral("yThenX"), PositionOrder::yThenX}, + {QStringLiteral("roundedXThenY"), PositionOrder::roundedXThenY}, + {QStringLiteral("roundedYThenX"), PositionOrder::roundedYThenX}}; + } + +private slots: + // Nothing is before itself, and equal points are before each other + // in neither direction: what "<=" broke. + void equalPointsAreNotOrdered() + { + const QPointF p(100, 200), q(100, 200); + for (const auto &order : orders()) { + QVERIFY2(!order.second(p, p), qPrintable(order.first)); + QVERIFY2(!order.second(p, q), qPrintable(order.first)); + QVERIFY2(!order.second(q, p), qPrintable(order.first)); + } + } + + void leftToRightThenTopToBottom() + { + QVERIFY(PositionOrder::xThenY(QPointF(10, 500), QPointF(20, 0))); + QVERIFY(!PositionOrder::xThenY(QPointF(20, 0), QPointF(10, 500))); + QVERIFY(PositionOrder::xThenY(QPointF(10, 0), QPointF(10, 5))); + QVERIFY(!PositionOrder::xThenY(QPointF(10, 5), QPointF(10, 0))); + } + + void topToBottomThenLeftToRight() + { + QVERIFY(PositionOrder::yThenX(QPointF(500, 10), QPointF(0, 20))); + QVERIFY(!PositionOrder::yThenX(QPointF(0, 20), QPointF(500, 10))); + QVERIFY(PositionOrder::yThenX(QPointF(0, 10), QPointF(5, 10))); + QVERIFY(!PositionOrder::yThenX(QPointF(5, 10), QPointF(0, 10))); + } + + // Items a fraction of a pixel apart (placed with Ctrl, or after a + // rotation) count as aligned, and are then ordered on the other axis. + void roundedTreatsFractionsAsAligned() + { + QVERIFY(PositionOrder::roundedXThenY(QPointF(10.2, 0), QPointF(9.8, 5))); + QVERIFY(!PositionOrder::roundedXThenY(QPointF(9.8, 5), QPointF(10.2, 0))); + QVERIFY(PositionOrder::roundedYThenX(QPointF(0, 10.2), QPointF(5, 9.8))); + QVERIFY(!PositionOrder::roundedYThenX(QPointF(5, 9.8), QPointF(0, 10.2))); + } + + // The three terminals that broke the tolerance comparison: with + // "within 1 px counts as aligned", a < b (by y), b < c (by y) and + // c < a (by x), a cycle. Rounded, they are simply ordered by x. + void roundedIsTransitiveWhereToleranceWasNot() + { + const QPointF a(2, 0), b(1.1, 1), c(0.2, 2); + QVERIFY(PositionOrder::roundedXThenY(c, b)); + QVERIFY(PositionOrder::roundedXThenY(b, a)); + QVERIFY(PositionOrder::roundedXThenY(c, a)); + QVERIFY(!PositionOrder::roundedXThenY(a, c)); + } + + // Every order is a strict weak ordering on a grid of awkward points: + // irreflexive, asymmetric, transitive, and with transitive + // equivalence. Checked by brute force on the whole set. + void strictWeakOrdering_data() + { + QTest::addColumn("name"); + for (const auto &order : orders()) + QTest::newRow(qPrintable(order.first)) << order.first; + } + + void strictWeakOrdering() + { + QFETCH(QString, name); + Less less; + for (const auto &order : orders()) + if (order.first == name) less = order.second; + QVERIFY(less); + + QList points; + const QList values{-1, -0.6, -0.4, 0, 0.2, 0.5, 0.9, 1, 1.1, 2, 10.5, 61.3, 61.7}; + for (qreal x : values) + for (qreal y : values) + points << QPointF(x, y); + points << points.first() << QPointF(2, 0) << QPointF(1.1, 1) << QPointF(0.2, 2); + + auto equiv = [&](const QPointF &p, const QPointF &q) { return !less(p, q) && !less(q, p); }; + for (const QPointF &p : points) { + QVERIFY(!less(p, p)); + for (const QPointF &q : points) { + if (less(p, q)) QVERIFY(!less(q, p)); + for (const QPointF &r : points) { + if (less(p, q) && less(q, r)) QVERIFY2(less(p, r), "transitive"); + if (equiv(p, q) && equiv(q, r)) QVERIFY2(equiv(p, r), "equivalence transitive"); + } + } + } + + // And std::sort on it ends sorted, with the list intact. + QList sorted = points; + std::sort(sorted.begin(), sorted.end(), less); + QCOMPARE(sorted.size(), points.size()); + for (int i = 1; i < sorted.size(); ++i) + QVERIFY(!less(sorted.at(i), sorted.at(i - 1))); + } + + // Twenty items at one position, as pasting at the origin leaves + // them: a list std::sort could scan past the end of with "<=". + void manyEqualPositionsSort() + { + QList points(20, QPointF(0, 0)); + points << QPointF(-10, 0) << QPointF(10, 0); + std::sort(points.begin(), points.end(), PositionOrder::xThenY); + QCOMPARE(points.size(), 22); + QCOMPARE(points.first(), QPointF(-10, 0)); + QCOMPARE(points.last(), QPointF(10, 0)); + } +}; + +QTEST_GUILESS_MAIN(tst_positionorder) +#include "tst_positionorder.moc" diff --git a/tests/qttest/tst_tensequentialnumbers.cpp b/tests/qttest/tst_tensequentialnumbers.cpp new file mode 100644 index 000000000..ff56982e0 --- /dev/null +++ b/tests/qttest/tst_tensequentialnumbers.cpp @@ -0,0 +1,77 @@ +/* + Copyright 2006-2026 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ +#include +#include +#include + +/** + A label formula with ten or more sequential numbers: %sequ_10 must get + the tenth value, not the first value followed by a "0". The values are + put in by AssignVariables::assignSequence(), which the bill of + materials uses for every label, so the real binary's --export-bom on + fixtures/ten_sequential_numbers.qet shows the result: its element has + the formula %sequ_10-%sequ_1 and the unit values A to J. +*/ +class tst_tensequentialnumbers : public QObject +{ + Q_OBJECT + + QTemporaryDir m_dir; + + static bool runQet(const QStringList &arguments) + { + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + env.insert(QStringLiteral("QT_QPA_PLATFORM"), QStringLiteral("offscreen")); + QProcess proc; + proc.setProcessEnvironment(env); + proc.start(QStringLiteral(QET_TEST_BINARY_PATH), arguments); + return proc.waitForFinished(60000) + && proc.exitStatus() == QProcess::NormalExit + && proc.exitCode() == 0; + } + +private slots: + void initTestCase() + { + QVERIFY2(QFile::exists(QStringLiteral(QET_TEST_BINARY_PATH)), "qelectrotech binary not found"); + QVERIFY(m_dir.isValid()); + } + + void tenthValueIsUsed() + { + const QString fixture = QFINDTESTDATA("fixtures/ten_sequential_numbers.qet"); + QVERIFY2(!fixture.isEmpty(), "fixture project not found"); + const QString out = m_dir.filePath(QStringLiteral("bom.csv")); + QVERIFY2(runQet({QStringLiteral("--export-bom"), fixture, out}), "--export-bom failed"); + + QFile file(out); + QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text)); + const QStringList lines = QString::fromUtf8(file.readAll()).split(QLatin1Char('\n')); + QStringList labels; + for (const QString &line : lines) { + if (line.startsWith(QLatin1Char('"'))) + labels << line.section(QLatin1Char(';'), 0, 0); + } + QVERIFY2(labels.contains(QStringLiteral("\"J-A\"")), + qPrintable(QStringLiteral("labels: %1").arg(labels.join(QLatin1Char(' '))))); + QVERIFY2(!labels.contains(QStringLiteral("\"A0-A\"")), "the first value with a 0 appended"); + } +}; + +QTEST_MAIN(tst_tensequentialnumbers) +#include "tst_tensequentialnumbers.moc" diff --git a/tests/qttest/tst_textresizehandles.cpp b/tests/qttest/tst_textresizehandles.cpp index 99f4c4779..2bb82270b 100644 --- a/tests/qttest/tst_textresizehandles.cpp +++ b/tests/qttest/tst_textresizehandles.cpp @@ -176,6 +176,7 @@ private slots: // and reports the change once, on release. void dragKeepsTheOppositeCorner() { + for (qreal size : {2.5, 5.0, 7.5, 10.0, 20.0, 30.0}) for (int c = TextResize::TopLeft ; c <= TextResize::BottomLeft ; ++c) for (qreal angle : {0.0, 90.0, 37.0}) { QGraphicsScene scene; @@ -183,7 +184,7 @@ private slots: scene.addItem(text); text->setPos(100, 100); text->setRotation(angle); - auto *handles = new TextResizeHandles(text); + auto *handles = new TextResizeHandles(text, size); QSignalSpy finished(handles, &TextResizeHandles::resizeFinished); const Corner corner = Corner(c);