diff --git a/lang/qet_de.ts b/lang/qet_de.ts index 2176880f6..410e35653 100644 --- a/lang/qet_de.ts +++ b/lang/qet_de.ts @@ -1685,17 +1685,17 @@ Bemerkung: diese Optionen verhindern NICHT das automatische Nummerieren. - + Modifier la police d'un champ texte Schriftart eines Textfelds ändern - + Modifier la couleur d'un champ texte Farbe eines Textfelds ändern - + Modifier la conservation de l'angle Beibehaltung des Winkels ändern @@ -1720,7 +1720,7 @@ Bemerkung: diese Optionen verhindern NICHT das automatische Nummerieren.Quelle eines Texts ändern - + Modifier l'alignement d'un champ texte Ausrichtung eines Textfelds ändern @@ -2012,7 +2012,7 @@ Bemerkung: diese Optionen verhindern NICHT das automatische Nummerieren. - + Simple Einzelbauteil @@ -2047,93 +2047,98 @@ Bemerkung: diese Optionen verhindern NICHT das automatische Nummerieren.(Miniatur-)Ansicht - + + Définition de conducteur + Leitungsdefinition + + + Normalement ouvert Schliesser - + Normalement fermé Öffner - + Inverseur Wechsler - + Other Andere - + Puissance Leistung - + Temporisé travail anzugverzögert - + Temporisé repos abfallverzögert - + Temporisé travail & repos Anzug- und Abfallverzögert - + Bobine Spule - + Organe de protection Schutzeinrichtung - + Commutateur / bouton Druck-/Drehschalter - - + + Générique Generisch - + Fusible Sicherung - + Séctionnable Trennklemme - + Diode Diode - + Phase Phase - + Neutre Neutralleiter - + Terre Erde @@ -2141,101 +2146,101 @@ Bemerkung: diese Optionen verhindern NICHT das automatische Nummerieren. ElementPropertiesWidget - + Général Allgemein - + Élement Bauteil - + Nom : %1 Name: %1 - + Folio : %1 Seitennummer: %1 - + Type : %1 Typ: %1 - + Sous-type : %1 Subtyp: %1 - + Position : %1 Position: %1 - + Rotation : %1° Drehung: %1° - + Dimensions : %1*%2 Abmessungen: %1*%2 - + Bornes : %1 Anschlüsse: %1 - + Nombre maximum de contacts esclaves définis : %1 Maximale Anzahl definierter Slave-Kontakte: %1 - + Nombre de contacts esclaves utilisés : %1 Anzahl der verwendeten Slave-Kontakte: %1 - + Emplacement : %1 Dateipfad: %1 - + Retrouver dans le panel Bauteil in Sammlung suchen - + Éditer l'élément Bauteil bearbeiten @@ -2762,97 +2767,97 @@ Alle Bauteile und Unterordner von diesem Ordner werden ebenso gelöscht. ElementsPanelWidget - + Ouvrir le dossier correspondant Ordner öffnen - + Copier le chemin Pfad in Zwischenablage kopieren - + Basculer vers ce projet zu diesem Projekt wechseln - + Fermer ce projet Projekt schließen - + Propriétés du projet Projekteigenschaften - + Propriétés du folio Folieneigenschaften - + Ajouter un folio Neue Folie hinzufügen - + Supprimer ce folio Folie löschen - + Remonter ce folio Folie 1 Position nach oben verschieben - + Abaisser ce folio Folie 1 Position nach unten verschieben - + Remonter ce folio x10 Folie 10 Positionen nach oben verschieben - + Remonter ce folio x100 Folie 100 Positionen nach oben verschieben - + Remonter ce folio au debut Folie an den Anfang verschieben - + Abaisser ce folio x10 Folie 10 Positionen nach unten verschieben - + Abaisser ce folio x100 Folie 100 Positionen nach unten verschieben - + Filtrer Filter - + Nouveau modèle Neues Schriftfeld - + Éditer ce modèle Schriftfeld bearbeiten - + Supprimer ce modèle Schriftfeld löschen @@ -5679,88 +5684,93 @@ Voulez-vous enregistrer les modifications ? ohne Namen - + Supprimer le folio ? message box title Folie löschen? - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - Möchten Sie wirklich diese Folie vom Projekt löschen? Dies kann nicht rückgängig gemacht werden. + Möchten Sie wirklich diese Folie vom Projekt löschen? Dies kann nicht rückgängig gemacht werden. - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + Projet en lecture seule message box title Schreibgeschütztes Projekt - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Dieses projekt ist schreibgeschützt. Es ist nicht möglich es zu reinigen. - + Supprimer les modèles de cartouche inutilisés dans le projet Im Projekt unbenutzte Schriftfeld-Vorlagen löschen - + Supprimer les éléments inutilisés dans le projet Im Projekt nicht benutzte Bauteile löschen - + Supprimer les catégories vides Leere Kategorien löschen - + Nettoyer le projet window title Projekt bereinigen - + Ajouter un folio Neue Folie hinzufügen - + Revenir au debut du projet Zurück zum Anfang des Projekts - + Aller à la fin du projet Zum Projektende springen - + go one page left eine Seite nach links - + go one page right eine Seite nach rechts - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Dieses Projekt beinhaltet keine Folie - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Öffnen des Projekts...</b><br/>Folienreiter werden erstellt:</p> - + Projet window title for a project-less ProjectView Projekt @@ -6063,441 +6073,442 @@ Verfügbare Optionen: QElectroTech - + Annulations dock title Rückgängig Arbeitsschritte - + Aucune modification Keine Änderungen - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Klicken Sie auf eine Aktion, um die Bearbeitung rückgängig zu machen - + &Nouveau &Neu - + &Ouvrir &Öffnen - + &Fermer &Schließen - + &Enregistrer &Speichern - + Enregistrer sous Speichern unter - + E&xporter &Exportieren - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Diese Liste protokolliert alle auf der aktuellen Folie ausgeführten Änderungen. Die Auswahl eines Eintrags führt die Änderungen bis zu diesem Eintrag zurück. - + Imprimer Drucken - + &Quitter &Beenden - + Annuler Rückgängig - + Refaire Wiederholen - + Co&uper &Ausschneiden - + Cop&ier Kop&ieren - + C&oller E&infügen - + Propriétés du folio Folieneigenschaften - + Ajouter un folio Neue Folie hinzufügen - + + Supprimer le folio Folie löschen - + Ajouter une nomenclature Betriebsmittelverzeichnis einfügen - + Lancer le plugin de création de borniers Klemmenplan-Plugin starten - + Crée un nouveau projet status bar tip Erstellt ein neues Projekt - + Ouvre un projet existant status bar tip Öffnet ein existierendes Projekt - + Ferme le projet courant status bar tip Schliesst das aktuelle Projekt - + Enregistre le projet courant et tous ses folios status bar tip Speichert das aktuelle Projekt und alle seine Folien - + Enregistre le projet courant avec un autre nom de fichier status bar tip Speichert das aktuelle Projekt unter einem anderen Dateinamen - + Ajoute une colonne au folio status bar tip Fügt eine neue Spalte zur Folie hinzu - + Enlève une colonne au folio status bar tip Löscht eine Spalte der Folie - + Agrandit le folio en hauteur status bar tip Vergrössert die Höhe der Folie - + Rétrécit le folio en hauteur status bar tip Verkleinert die Höhe der Folie - + Grouper les textes sélectionnés Ausgewählte Texte gruppieren - + Enlève les éléments sélectionnés du folio status bar tip Entfernt die ausgewählten Bauteile von der Folie - + Tout sélectionner Alles auswählen - + Désélectionner tout Auswahl aufheben - + Inverser la sélection Auswahl umkehren - + Supprimer Löschen - + Pivoter Drehen - + Orienter les textes Texte drehen - + Retrouver dans le panel Bauteil in Sammlung suchen - + Réinitialiser les conducteurs Leiter zurücksetzen - + Ajouter un champ de texte Textfeld einfügen - + Éditer l'item sélectionné Auswahl bearbeiten - + Ajouter une colonne Spalte einfügen - + Ajouter une image Bild einfügen - + Enlever une colonne Spalte entfernen - + Propriétés du projet Projekteigenschaften - + Nettoyer le projet Projekt bereinigen - + Ajouter un sommaire Inhaltsverzeichnis einfügen - + Zoom avant Vergrößern - + Zoom arrière Verkleinern - + Zoom sur le contenu Auf Inhalt einpassen - + Zoom adapté Folie einpassen - + Pas de zoom Kein Zoom - + en utilisant des onglets mittels Reiter - + en utilisant des fenêtres mittels Fenster - + Mode Selection Auswahlmodus - + Mode Visualisation Ansichtmodus - + &Mosaïque &Kacheln - + &Cascade &Überlappende Fenster - + Projet suivant Nächstes Projekt - + Projet précédent Vorheriges Projekt - + Sélectionne tous les éléments du folio status bar tip Wählt alle Bauteile der Folie aus - + Désélectionne tous les éléments du folio status bar tip Wählt alle Bauteile der Folie ab - + Agrandit le folio status bar tip Vergrössert die Folie - + Rétrécit le folio status bar tip Verkleinert die Folie - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Passt die Ansicht auf den Inhalt der Folie an, unabhängig vom Folienrahmen - + Adapte le zoom exactement sur le cadre du folio status bar tip Passt die Ansicht genau auf den Folienrahmen an - + Ajouter un rectangle Rechteck einfügen - + Ajouter une ellipse Ellipse einfügen - + Ajouter une polyligne Polylinie einfügen - + Ferme l'application QElectroTech status bar tip schließt QElectroTech - + Annule l'action précédente status bar tip bricht die letzte Aktion ab - + Restaure l'action annulée status bar tip stellt die abgebrochene Aktion wieder her - + Transfère les éléments sélectionnés dans le presse-papier status bar tip verschiebt die Auswahl in die Zwischenablage - + Copie les éléments sélectionnés dans le presse-papier status bar tip kopiert die Auswahl in die Zwischenablage - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip kehrt die Auswahl um - + Pivote les éléments et textes sélectionnés status bar tip dreht die Auswahl - + Pivote les textes sélectionnés à un angle précis status bar tip dreht die ausgewählten Texte in einem bestimmten Winkel - + Retrouve l'élément sélectionné dans le panel status bar tip Sucht das Bauteil in der Sammlung - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip zeichnet die Leiter neu, ohne die Änderungen zu berücksichtigen - + Création automatique de conducteur(s) Tool tip of auto conductor Automatische Leiterverbindung aktivieren @@ -6509,428 +6520,443 @@ Verfügbare Optionen: Projektdaten - + Collections Bauteilsammlungen - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Wenn möglich, automatische Leiterverbindung benutzen - + Afficher la grille Raster anzeigen - + Affiche ou masque la grille des folios Zeige den Hintergrundsraster der Folien an - + Ajouter une ligne Add row Zeile einfügen - + Enlever une ligne Remove row Zeile entfernen - + Restaure le zoom par défaut status bar tip Standardansicht wiederherstellen - + Ajouter une ligne Draw line Linie einfügen - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip zeige die geöffneten Projekte in Fenstern an - + Présente les différents projets ouverts des onglets status bar tip zeige die geöffneten Projekte in Reitern an - + Permet de sélectionner les éléments status bar tip wählt Bauteile aus - + Dispose les fenêtres en mosaïque status bar tip ordnet die Fenster in Kacheln an - + Exporter en pdf Als PDF speichern - + Exporte un ou plusieurs folios du projet courant status bar tip Eine oder mehrere Folien des aktuellen Projekts exportieren - + Exporter au format CSV Als CSV-Datei exportieren - + Gestionnaire de borniers (DEV) Klemmleisten-Manager (DEV) - + Exporter la liste des noms de conducteurs Leiterbeschriftungen exportieren - + Exporter le plan de câblage Verdrahtungsplan erstellen - + Numérotation automatique des bornes Automatische Nummerierung der Klemmen - + Exporter la base de donnée interne du projet Interne Datenbank exportieren - + Dispose les fenêtres en cascade status bar tip ordnet die Fenster überlappend an - + Active le projet suivant status bar tip wechselt zum nächsten Projekt - + Active le projet précédent status bar tip wechselt zum vorherigen Projekt - + Ajouter un plan de bornes Klemmenplan hinzufügen - + Ajoute un champ de texte sur le folio actuel Fügt ein Textfeld auf die aktuelle Folie ein - + Ajoute une image sur le folio actuel Fügt ein Bild auf die aktuelle Folie ein - + Ajoute une ligne sur le folio actuel Fügt eine Linie auf die aktuelle Folie ein - + Ajoute un rectangle sur le folio actuel Fügt ein Rechteck auf die aktuelle Folie ein - + Ajoute une ellipse sur le folio actuel Fügt eine Ellipse auf die aktuelle Folie ein - + Ajoute une polyligne sur le folio actuel Fügt eine Polylinie auf die aktuelle Folie ein - + Ajoute un plan de bornier sur le folio actuel Klemmenplan auf aktueller Folie einfügen - + Chercher/remplacer Suchen/ersetzen - + Profondeur toolbar title Tiefe/Ebene - + &Fichier &Datei - + &Édition B&earbeiten - + &Projet &Projekt - + Afficha&ge &Anzeige - + Fe&nêtres Fe&nster - + &Récemment ouverts &Zuletzt geöffnet - + Affiche ou non la barre d'outils principale Zeigt oder versteckt die Hauptwerkzeugsleiste - + Affiche ou non la barre d'outils Affichage Zeigt oder versteckt die Anzeigeleiste - + Affiche ou non la barre d'outils Schéma Zeigt oder versteckt die Schaltplan-Werkzeugsleiste - + Affiche ou non le panel d'appareils Zeigt oder versteckt die Bauteilsammlung - + Affiche ou non la liste des modifications Zeigt oder versteckt die Änderungsliste - + Afficher les projets Projekte anzeigen - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech-Projekte (*.qet);;XML-Dateien (*.xml);;Alle Dateien (*) - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Doppelclick, um die Form zu beenden / Rechtsklick, um den letzten Punkt zu entfernen - + Suppression de borne impossible Klemme kann nicht gelöscht werden - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer Die Löschung kann nicht durchgeführt werden, da die Auswahl eine oder mehrere Klemmen enthält, die überbrückt sind und/oder zu einer Klemme mit mehreren Ebenen gehören. Entfernen Sie die Überbrückung und/oder löschen Sie die Ebenen der betroffenen Klemmen, um sie löschen zu können - + Groupe Gruppe - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Ein Fehler ist beim Öffnen der Datei %1 aufgetreten. - + Active le projet « %1 » Aktiviert das Projekt "%1" - + Outils Werkzeuge - + Couleur de fond blanc/gris Tool tip of white/grey background button Hintergrundfarbe weiß/grau - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Schalte die Hintergrundfarbe der Folien in weiß oder grau um - + Exporte le folio courant dans un autre format status bar tip Aktuelle Folie in ein anderes Format exportieren - + Imprime un ou plusieurs folios du projet courant status bar tip Druckt eine oder mehrere Folien des aktuellen Projekts - + Place les éléments du presse-papier sur le folio status bar tip Inhalt der Zwischenablage auf Folie einfügen - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Bearbeitet die Folieneigenschaften (Maße, Schriftfeld-Daten, Leitereigenschaften...) - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Wechselt in das Ansichtsmodus, in dem die Folie nicht bearbeitet werden kann - + Affichage Anzeige - + Schéma Schaltplan - + Ajouter Einfügen - - + + Projet %1 enregistré dans le repertoire: %2. Projekt %1 gespeichert im Pfad: %2. - + Ouvrir un fichier Datei öffnen - - + + Impossible d'ouvrir le fichier message box title Öffnen der Datei nicht möglich - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Die zu öffnende Datei %1 existiert nicht. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Die zu öffnende Datei kann zum Lesen nicht zugegriffen werden. Prüfen Sie die Zugriffsrechte der Datei. - + Ouverture du projet en lecture seule message box title Projekt wird schreibgeschützt geöffnet - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Es sind keine Schreibrechte für das zu öffnende Projekt vorhanden. Es wird trotzdem schreibgeschützt geöffnet. - - + + Échec de l'ouverture du projet message box title Öffnen des Projekts gescheitert - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Die Datei %1 ist vermutlich keine QElectroTech-Projektdatei. Sie kann nicht geöffnet werden. - + Éditer l'élement edit element Bauteil bearbeiten - + Éditer le champ de texte edit text field Textfeld bearbeiten - + Éditer l'image edit image Bild bearbeiten - + Éditer le conducteur edit conductor Leitereigenschaften bearbeiten - + Éditer l'objet sélectionné edit selected item Auswahl bearbeiten - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Fehler @@ -7184,42 +7210,42 @@ Entfernen Sie die Überbrückung und/oder löschen Sie die Ebenen der betroffene Informationen über Autoren bearbeiten - + Ajouter une ligne Linie einfügen - + Ajouter un rectangle Rechteck einfügen - + Ajouter une ellipse Ellipse einfügen - + Ajouter un polygone Polygon einfügen - + Ajouter du texte Text einfügen - + Ajouter un arc de cercle Bogen einfügen - + Ajouter une borne Anschluss einfügen - + Annuler Rückgängig @@ -7235,29 +7261,29 @@ Entfernen Sie die Überbrückung und/oder löschen Sie die Ebenen der betroffene Zu viele Einzelteile, Liste nicht generiert: %1 - + Refaire Wiederholen - + Avertissement Warnung - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Das Importieren einer großen DXF-Datei kann einige Zeit in Anspruch nehmen. - + Parties toolbar title Teile - + Profondeur toolbar title Tiefe @@ -7273,7 +7299,7 @@ veuillez patienter durant l'import... Bauteileigenschaften bearbeiten - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Doppelclick, um die Form zu beenden / Rechtsclick, um den letzten Punkt zu entfernen @@ -7310,12 +7336,12 @@ veuillez patienter durant l'import... [schreibgeschützt] - + Aucune modification Keine Änderung - + Éditeur d'éléments status bar message Bauteileditor @@ -7330,50 +7356,50 @@ veuillez patienter durant l'import... - + Absence de borne warning title Anschluss nicht vorhanden - + Absence de borne Anschluss nicht vorhanden - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>Ohne Anschlüsse kann das Bauteil nicht mit anderen Bauteilen mittels Leiter verbunden werden. - + Ajouter un champ texte dynamique Dynamisches Textfeld einfügen - + Ajouter un texte d'élément non éditable dans les schémas Fügt einen Bauteiltext ein, der im Schaltplaneditor NICHT bearbeitet werden kann - + Ajouter un texte d'élément pouvant être édité dans les schémas Fügt einen Bauteiltext ein, der im Schaltplaneditor bearbeitet werden kann - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Fehler</b>: <br>Folienverweise dürfen nur einen Anschluss haben.<br><b>Lösung</b>: <br>Prüfen, dass das Bauteil nur einen Anschluss hat - + La vérification de cet élément a généré message box content Die Überprüfung dieses Bauteils generierte - + %n erreur(s) errors @@ -7382,23 +7408,23 @@ veuillez patienter durant l'import... - + et und - + <b>%1</b> : %2 warning title: warning description <b>%1</b>: %2 - + Erreurs Fehler - + Avertissements Warnungen @@ -7410,21 +7436,21 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier %1. message box content Öffnen der Datei %1 nicht möglich. - + Ce fichier n'est pas un document XML valide message box content Diese Datei ist kein gültiges XML-Dokument - + Erreur toolbar title Fehler @@ -7462,8 +7488,18 @@ veuillez patienter durant l'import... message box content Dieses Bauteil kann nicht gespeichert werden - + + + Nombre de bornes incorrect + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + %n avertissement(s) warnings @@ -7472,73 +7508,73 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier message box title Öffnen der Datei nicht möglich - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Die zu öffnende Datei %1 existiert nicht. - + Recharger l'élément dialog title Bauteil neu laden - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Das Bauteil wurde verändert. Beim neu Laden gehen die Änderungen verloren. Möchten Sie wirklich das Bauteil neu laden? - + Importer un élément à redimensionner Importiere Element zum Skalieren - + Éléments QElectroTech (*.elmt) QElectroTech-Bauteil (*.elmt) - - - + + + Echec de l'enregistrement Speichervorgang gescheitert - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Speichervorgang gescheitert\nDie erforderlichen Bedingungen wurden nicht erfüllt - + Enregistrer sous dialog title Speichern unter - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file QElectroTech-Bauteil (*.elmt) - + Enregistrer l'élément en cours ? dialog title Aktuelles Bauteil speichern? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Bauteil %1 speichern? @@ -7558,22 +7594,22 @@ les conditions requises ne sont pas valides - - + + Élément inexistant. message box title Bauteil nicht vorhanden. - + L'élément n'existe pas. message box content Bauteil existiert nicht. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Der gewählte virtuelle Pfad passt nicht zu einem Bauteil. @@ -8097,7 +8133,7 @@ Was möchten Sie tun? QObject - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Warnung: das Bauteil wurde mit einer neueren Version von QElectroTech gespeichert. @@ -9339,22 +9375,22 @@ Möchten Sie sie ersetzen? Leiter erstellen - + 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>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Installation des Plugins qet_tb_generator:<br>Besuche <br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Erfordert Python 3.5 oder höher.<br><B><U> Erstinstallation unter Windows</B></U><br>1. Falls erforderlich, installiere Python 3.5 oder höher<br> Besuche :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Aktualisierung unter Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>Der Benutzer kann in einem Terminal dieses Skript in folgendem Verzeichnis ausführen:<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <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> Installation des Plugins qet_tb_generator:<br>Besuche <br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> Erstinstallation unter macOSX</B></U><br>1. Falls erforderlich, installiere das Python 3.11-Bundle: <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. Führe das Skript Profile.command aus<br>da das Programm einen festgelegten PATH zur Lokalisierung des Plugins qet-tb-generator verwendet.<br>Besuche :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>Anleitung</a><br>3. pip3 install qet_tb_generator<br><B><U> Aktualisierung unter macOS</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><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> Installation des Plugins qet_tb_generator:<br>Besuche <br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Erfordert Python 3.5 oder höher.<br><br><B><U> Erstinstallation unter Linux</B></U><br>1. Überprüfe, ob pip3 installiert ist: pip3 --version<br>Falls nicht, installiere es mit: sudo apt-get install python3-pip<br>2. Installiere das Programm: sudo pip3 install qet_tb_generator<br>3. Starte das Programm: qet_tb_generator<br><br><B><U> Aktualisierung unter Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Fehler beim Ausführen vom Plugin qet_tb_generator @@ -9506,51 +9542,51 @@ Möchten Sie sie ersetzen? Klemme entfernen - - + + Générique generic terminal element type Generisch - + Fusible fuse terminal element type Sicherungsklemme - + Sectionable sectional terminal element type Trennklemme - + Diode diode terminal element type Diode - + Terre ground terminal element type Erde - - + + Générique generic terminal element function Generisch - + Phase phase terminal element function Aussenleiter - + Neutre neutral terminal element function Neutralleiter @@ -9581,7 +9617,7 @@ Möchten Sie sie ersetzen? Element öffnen - + Importer un fichier dxf DXF-Datei importieren @@ -14297,92 +14333,92 @@ Maximale Länge: %2px WiringListExport - - + + Erreur Fehler - + Impossible de lire la structure en mémoire du projet. Die Speicherstruktur des Projekts kann nicht gelesen werden. - + Exporter le plan de câblage Verdrahtungsplan erstellen - + Fichiers CSV (*.csv) CSV-Dateien (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. Die Datei kann nicht zum Schreiben geöffnet werden. - + Page Wiring list CSV header Seite - + Composant 1 Wiring list CSV header Bauteil 1 - + Borne 1 Wiring list CSV header Anschluss 1 - + Composant 2 Wiring list CSV header Bauteil 2 - + Borne 2 Wiring list CSV header Anschluss 2 - + Tension / Protocole Wiring list CSV header Spannung / Protokoll - + Couleur du fil Wiring list CSV header Leiterfarbe - + Section du fil Wiring list CSV header Leiterquerschnitt - + Fonction Wiring list CSV header Funktion - + Export réussi Export erfolgreich - + Le plan de câblage a été exporté avec succès ! Der Verdrahtungsplan wurde erfolgreich exportiert! diff --git a/sources/editor/ui/dynamictextfieldeditor.cpp b/sources/editor/ui/dynamictextfieldeditor.cpp index e432dd1f1..84f4db772 100644 --- a/sources/editor/ui/dynamictextfieldeditor.cpp +++ b/sources/editor/ui/dynamictextfieldeditor.cpp @@ -220,7 +220,7 @@ void DynamicTextFieldEditor::fillInfoComboBox() QStringList strl; auto type = elementEditor()->elementScene()->elementData().m_type; - if(type & ElementData::AllReport) { + if((type & ElementData::AllReport) || (type == ElementData::ConductorDefinition)) { strl = QETInformation::folioReportInfoKeys(); } else { @@ -365,7 +365,8 @@ void DynamicTextFieldEditor::on_m_text_from_cb_activated(int index) { void DynamicTextFieldEditor::on_m_composite_text_pb_clicked() { bool isReport = false; - if (elementEditor()->elementScene()->elementData().m_type & ElementData::AllReport) { + auto type = elementEditor()->elementScene()->elementData().m_type; + if ((type & ElementData::AllReport) || (type == ElementData::ConductorDefinition)) { isReport = true; } diff --git a/sources/editor/ui/elementpropertieseditorwidget.cpp b/sources/editor/ui/elementpropertieseditorwidget.cpp index 54bb447ba..397eadb64 100644 --- a/sources/editor/ui/elementpropertieseditorwidget.cpp +++ b/sources/editor/ui/elementpropertieseditorwidget.cpp @@ -133,6 +133,7 @@ void ElementPropertiesEditorWidget::setUpInterface() ui->m_base_type_cb->addItem (tr("Renvoi de folio précédent"), ElementData::PreviousReport); ui->m_base_type_cb->addItem (tr("Bornier"), ElementData::Terminal); ui->m_base_type_cb->addItem (tr("Vignette"), ElementData::Thumbnail); + ui->m_base_type_cb->addItem (tr("Définition de conducteur"), ElementData::ConductorDefinition); // Slave option ui->m_state_cb->addItem(tr("Normalement ouvert"), ElementData::NO); @@ -188,6 +189,9 @@ void ElementPropertiesEditorWidget::updateTree() case ElementData::PreviousReport: ui->m_tree->setDisabled(true); break; + case ElementData::ConductorDefinition: + ui->m_tree->setDisabled(true); + break; case ElementData::Master: ui->m_tree->setEnabled(true); break; diff --git a/sources/editor/ui/qetelementeditor.cpp b/sources/editor/ui/qetelementeditor.cpp index b8681b19b..45530dc98 100644 --- a/sources/editor/ui/qetelementeditor.cpp +++ b/sources/editor/ui/qetelementeditor.cpp @@ -736,40 +736,62 @@ bool QETElementEditor::checkElement() QList warnings; QList errors; - // Warning #1: Element haven't got terminal - // (except for report, because report must have one terminal and this checking is do below) + // Warning #1: Element haven't got terminal + // (except for report and conductor definition, because they must have one terminal and this checking is done below) if (!m_elmt_scene -> containsTerminals() && - !(m_elmt_scene->elementData().m_type & ElementData::AllReport)) { + !(m_elmt_scene->elementData().m_type & ElementData::AllReport) && + m_elmt_scene->elementData().m_type != ElementData::ConductorDefinition) { warnings << qMakePair( - tr("Absence de borne", "warning title"), - tr( - "
En l'absence de borne, l'élément ne pourra être" - " relié à d'autres éléments par l'intermédiaire de conducteurs.", - "warning description" - ) - ); - } + tr("Absence de borne", "warning title"), + tr( + "
En l'absence de borne, l'élément ne pourra être" + " relié à d'autres éléments par l'intermédiaire de conducteurs.", + "warning description" + ) + ); + } // Check folio report element - if (m_elmt_scene->elementData().m_type & ElementData::AllReport) - { - int terminal =0; + if (m_elmt_scene->elementData().m_type & ElementData::AllReport) + { + int terminal =0; - for(auto qgi : m_elmt_scene -> items()) { - if (qgraphicsitem_cast(qgi)) { - terminal ++; + for(auto qgi : m_elmt_scene -> items()) { + if (qgraphicsitem_cast(qgi)) { + terminal ++; + } + } + + //Error folio report must have only one terminal + if (terminal != 1) { + errors << qMakePair (tr("Absence de borne"), + tr("
Erreur :" + "
Les reports de folio doivent posséder une seul borne." + "
Solution :" + "
Verifier que l'élément ne possède qu'une seul borne")); } } - //Error folio report must have only one terminal - if (terminal != 1) { - errors << qMakePair (tr("Absence de borne"), - tr("
Erreur :" - "
Les reports de folio doivent posséder une seul borne." - "
Solution :" - "
Verifier que l'élément ne possède qu'une seul borne")); + // Check conductor definition element + if (m_elmt_scene->elementData().m_type == ElementData::ConductorDefinition) + { + int terminal =0; + + for(auto qgi : m_elmt_scene -> items()) { + if (qgraphicsitem_cast(qgi)) { + terminal ++; + } + } + + // Error: Conductor definition must have exactly one terminal + if (terminal != 1) { + errors << qMakePair (tr("Nombre de bornes incorrect"), + tr("
Erreur :" + "
Les définitions de conducteur ne peuvent posséder qu'une seule borne." + "
Solution :" + "
Vérifier que l'élément ne possède qu'une seule borne")); + } } - } if (!errors.count() && !warnings.count()) { return(true); diff --git a/sources/properties/elementdata.cpp b/sources/properties/elementdata.cpp index 6620afc65..7930ff1cc 100644 --- a/sources/properties/elementdata.cpp +++ b/sources/properties/elementdata.cpp @@ -45,14 +45,26 @@ QDomElement ElementData::toXml(QDomDocument &xml_element) const { bool ElementData::fromXml(const QDomElement &xml_element) { if(xml_element.tagName() != QLatin1String("definition") || - xml_element.attribute(QStringLiteral("type")) != QLatin1String("element")) { + xml_element.attribute(QStringLiteral("type")) != QLatin1String("element")) { return false; - } + } + + // --- HIER STARTET UNSER DEBUG-BLOCK --- + // Wir holen den String aus der XML und speichern ihn kurz zwischen + QString raw_type_string = xml_element.attribute(QStringLiteral("link_type"), QStringLiteral("simple")); + + qDebug() << "\n=== NEUES BAUTEIL WIRD GELADEN ==="; + qDebug() << "[XML Parser] Roher 'link_type' String aus der .elmt Datei:" << raw_type_string; + + // Jetzt übergeben wir ihn an deine Übersetzungs-Funktion + m_type = typeFromString(raw_type_string); + + qDebug() << "[XML Parser] Übersetzter ElementData-Typ:" << typeToString(m_type); + // --- HIER ENDET UNSER DEBUG-BLOCK --- - m_type = typeFromString(xml_element.attribute(QStringLiteral("link_type"), QStringLiteral("simple"))); kindInfoFromXml(xml_element); m_informations.fromXml(xml_element.firstChildElement(QStringLiteral("elementInformations")), - QStringLiteral("elementInformation")); + QStringLiteral("elementInformation")); m_names_list.fromXml(xml_element); auto xml_draw_info = xml_element.firstChildElement(QStringLiteral("informations")); @@ -323,6 +335,8 @@ QString ElementData::typeToString(ElementData::Type type) return QStringLiteral("terminal"); case ElementData::Thumbnail: return QStringLiteral("thumbnail"); + case ElementData::ConductorDefinition: + return QStringLiteral("conductor_definition"); default: qDebug() << "ElementData::typeToString : type don't exist" << "return failsafe value 'simple'"; @@ -346,6 +360,8 @@ ElementData::Type ElementData::typeFromString(const QString &string) return ElementData::Terminal; } else if (string == QLatin1String("thumbnail")) { return ElementData::Thumbnail; + } else if (string == QLatin1String("conductor_definition")) { + return ElementData::ConductorDefinition; } //Return simple if nothing match diff --git a/sources/properties/elementdata.h b/sources/properties/elementdata.h index 9596970b8..565253874 100644 --- a/sources/properties/elementdata.h +++ b/sources/properties/elementdata.h @@ -41,7 +41,8 @@ class ElementData : public PropertiesInterface Master = 8, Slave = 16, Terminal = 32, - Thumbnail = 64}; + Thumbnail = 64, + ConductorDefinition = 128}; Q_ENUM(Type) Q_DECLARE_FLAGS(Types, Type) diff --git a/sources/qetgraphicsitem/dynamicelementtextitem.cpp b/sources/qetgraphicsitem/dynamicelementtextitem.cpp index 7efff4811..4c23cb2a4 100644 --- a/sources/qetgraphicsitem/dynamicelementtextitem.cpp +++ b/sources/qetgraphicsitem/dynamicelementtextitem.cpp @@ -302,7 +302,8 @@ void DynamicElementTextItem::refreshLabelConnection() if ((m_text_from == ElementInfo && m_info_name == "label") || (m_text_from == CompositeText && m_composite_text.contains("%{label}"))) { - if(m_parent_element.data()->linkType() & Element::AllReport) + if((m_parent_element.data()->linkType() & Element::AllReport) || + m_parent_element.data()->linkType() == Element::ConductorDefinition) { updateReportFormulaConnection(); updateReportText(); @@ -418,7 +419,8 @@ void DynamicElementTextItem::setInfoName(const QString &info_name) updateXref(); } - if (m_parent_element && (m_parent_element.data()->linkType() & Element::AllReport)) //special treatment for report + if (m_parent_element && ((m_parent_element.data()->linkType() & Element::AllReport) || + m_parent_element.data()->linkType() == Element::ConductorDefinition)) //special treatment for report { if(old_info_name != info_name) { @@ -472,7 +474,8 @@ void DynamicElementTextItem::setCompositeText(const QString &text) updateXref(); } - if (m_parent_element && (m_parent_element.data()->linkType() & Element::AllReport)) //special treatment for report + if (m_parent_element && ((m_parent_element.data()->linkType() & Element::AllReport) || + m_parent_element.data()->linkType() == Element::ConductorDefinition)) //special treatment for report { /* * May be in some case the old and new composite text both have the var %{label}, @@ -726,28 +729,29 @@ QVariant DynamicElementTextItem::itemChange(QGraphicsItem::GraphicsItemChange ch if(!m_parent_element.data()->linkedElements().isEmpty()) masterChanged(); } - else if(m_parent_element.data()->linkType() & Element::AllReport) + else if((m_parent_element.data()->linkType() & Element::AllReport) || + m_parent_element.data()->linkType() == Element::ConductorDefinition) { - //Get the report formula, and add connection to keep up to date the formula. + //Get the report formula, and add connection to keep up to date the formula. if (m_parent_element.data()->diagram() && m_parent_element.data()->diagram()->project()) { m_report_formula = m_parent_element.data()->diagram()->project()->defaultReportProperties(); m_report_formula_con = connect(m_parent_element.data()->diagram()->project(), &QETProject::reportPropertiesChanged, this, &DynamicElementTextItem::reportFormulaChanged); } - - //Add connection to keep up to date the status of the element linked to the parent folio report of this text. + + //Add connection to keep up to date the status of the element linked to the parent folio report of this text. connect(m_parent_element.data(), &Element::linkedElementChanged, this, &DynamicElementTextItem::reportChanged); - //The parent is already linked, we call reportChanged for init the connection + //The parent is already linked, we call reportChanged for init the connection if(!m_parent_element.data()->linkedElements().isEmpty()) reportChanged(); - + if(m_parent_element.data()->terminals().size()) { - //Add connection to keep up date the conductors added or removed to the parent folio report element + //Add connection to keep up date the conductors added or removed to the parent folio report element connect(m_parent_element.data()->terminals().first(), &Terminal::conductorWasAdded, this, &DynamicElementTextItem::conductorWasAdded); connect(m_parent_element.data()->terminals().first(), &Terminal::conductorWasRemoved, this, &DynamicElementTextItem::conductorWasRemoved); } - //Get a conductor in the potential + //Get a conductor in the potential setPotentialConductor(); } else if(m_parent_element.data()->linkType() == Element::Master) @@ -1027,7 +1031,8 @@ void DynamicElementTextItem::clearFormulaConnection() void DynamicElementTextItem::updateReportFormulaConnection() { - if(!(m_parent_element.data()->linkType() & Element::AllReport)) + if(!(m_parent_element.data()->linkType() & Element::AllReport) && + m_parent_element.data()->linkType() != Element::ConductorDefinition) return; removeConnectionForReportFormula(m_report_formula); @@ -1041,7 +1046,8 @@ void DynamicElementTextItem::updateReportFormulaConnection() */ void DynamicElementTextItem::updateReportText() { - if(!(m_parent_element.data()->linkType() & Element::AllReport)) + if(!(m_parent_element.data()->linkType() & Element::AllReport) && + m_parent_element.data()->linkType() != Element::ConductorDefinition) return; if (m_text_from == ElementInfo && m_info_name == "label") @@ -1123,7 +1129,8 @@ void DynamicElementTextItem::conductorWasRemoved(Conductor *conductor) */ void DynamicElementTextItem::setPotentialConductor() { - if(parentElement() && (parentElement()->linkType() & Element::AllReport)) + if(parentElement() && ((parentElement()->linkType() & Element::AllReport) || (parentElement()->linkType() == Element::ConductorDefinition) || + parentElement()->linkType() == Element::ConductorDefinition)) { if(parentElement()->terminals().isEmpty()) return; @@ -1156,6 +1163,7 @@ void DynamicElementTextItem::setPotentialConductor() connect(m_watched_conductor.data(), &Conductor::propertiesChange, this, &DynamicElementTextItem::conductorPropertiesChanged); } } + conductorPropertiesChanged(); } else //This text haven't got a parent element, then ther isn't a conductor in the potential { @@ -1172,7 +1180,8 @@ void DynamicElementTextItem::setPotentialConductor() */ void DynamicElementTextItem::conductorPropertiesChanged() { - if(m_parent_element && (m_parent_element.data()->linkType() & Element::AllReport)) + if(m_parent_element && ((m_parent_element.data()->linkType() & Element::AllReport) || (m_parent_element.data()->linkType() == Element::ConductorDefinition) || + m_parent_element.data()->linkType() == Element::ConductorDefinition)) { if(m_text_from == ElementInfo) { @@ -1200,8 +1209,9 @@ void DynamicElementTextItem::conductorPropertiesChanged() QString DynamicElementTextItem::reportReplacedCompositeText() const { QString string; - - if(m_parent_element.data()->linkType() & Element::AllReport) + + if((m_parent_element.data()->linkType() & Element::AllReport) || (m_parent_element.data()->linkType() == Element::ConductorDefinition) || + m_parent_element.data()->linkType() == Element::ConductorDefinition) { string = m_composite_text; diff --git a/sources/qetgraphicsitem/element.cpp b/sources/qetgraphicsitem/element.cpp index 4204aed1b..408e89e4d 100644 --- a/sources/qetgraphicsitem/element.cpp +++ b/sources/qetgraphicsitem/element.cpp @@ -36,6 +36,7 @@ #include "../qetxml.h" #include "../qetversion.h" #include "qgraphicsitemutility.h" +#include #include #include @@ -431,6 +432,11 @@ bool Element::buildFromXml(const QDomElement &xml_def_elmt, int *state) m_data.fromXml(xml_def_elmt); setToolTip(name()); + QString my_type_str = xml_def_elmt.attribute(QStringLiteral("link_type"), QStringLiteral("simple")); + if (my_type_str == QLatin1String("conductor_definition")) { + m_link_type = Element::ConductorDefinition; + } + //load kind informations m_kind_informations.fromXml( xml_def_elmt.firstChildElement(QStringLiteral("kindInformations")), @@ -627,6 +633,9 @@ Terminal *Element::parseTerminal(const QDomElement &dom_element) Terminal *new_terminal = new Terminal(data, this); m_terminals << new_terminal; + connect(new_terminal, &Terminal::conductorWasAdded, this, &Element::updateConductorTexts); + connect(new_terminal, &Terminal::conductorWasRemoved, this, &Element::updateConductorTexts); + //Sort from top to bottom and left to right std::sort(m_terminals.begin(), m_terminals.end(), @@ -1288,6 +1297,8 @@ QString Element::linkTypeToString() const return QStringLiteral("Terminale"); case Thumbnail: return QStringLiteral("Thumbnail"); + case ConductorDefinition: + return QStringLiteral("ConductorDefinition"); default: return QStringLiteral("Unknown"); } @@ -1555,3 +1566,25 @@ ElementsLocation Element::location() const { return m_location; } + +/** + * @brief Element::updateConductorTexts + *Slot that is triggered when a cable is * + *connected to or disconnected from a terminal on this component. + */ +/** + * @brief Element::updateConductorTexts + */ +void Element::updateConductorTexts() +{ + if (m_link_type != Element::ConductorDefinition) { + return; + } + + for (DynamicElementTextItem *deti : m_dynamic_text_list) { + if (deti) { + deti->setPotentialConductor(); + deti->updateLabel(); + } + } +} diff --git a/sources/qetgraphicsitem/element.h b/sources/qetgraphicsitem/element.h index 16e821744..2c3ea5b6a 100644 --- a/sources/qetgraphicsitem/element.h +++ b/sources/qetgraphicsitem/element.h @@ -52,14 +52,15 @@ class Element : public QetGraphicsItem (master, slave, report ect...) */ enum kind { - Simple = 1, - NextReport = 2, - PreviousReport = 4, - AllReport = 6, - Master = 8, - Slave = 16, - Terminale = 32, - Thumbnail = 64}; + Simple = 1, + NextReport = 2, + PreviousReport = 4, + AllReport = 6, + Master = 8, + Slave = 16, + Terminale = 32, + Thumbnail = 64, + ConductorDefinition = 128}; Element(const ElementsLocation &location, QGraphicsItem * = nullptr, @@ -95,6 +96,8 @@ class Element : public QetGraphicsItem DynamicElementTextItem *text, ElementTextItemGroup *group); + public slots: + void updateConductorTexts(); public: QList terminals() const; diff --git a/sources/ui/elementpropertieswidget.cpp b/sources/ui/elementpropertieswidget.cpp index 5bb302163..10cc84ea7 100644 --- a/sources/ui/elementpropertieswidget.cpp +++ b/sources/ui/elementpropertieswidget.cpp @@ -308,6 +308,9 @@ void ElementPropertiesWidget::updateUi() case Element::Terminale: m_list_editor << new ElementInfoWidget(m_element, this); break; + case Element::ConductorDefinition: + break; + default: break; }