From 5406224a4ff06fdd0429837e2de0a59121ce3736 Mon Sep 17 00:00:00 2001 From: xavierqet Date: Sat, 29 Sep 2007 12:54:01 +0000 Subject: [PATCH] Mise a jour des traductions Nettoyage des entetes des classes QETDiagramEditor et DiagramView git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@146 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- diagram.cpp | 2 +- diagramview.cpp | 69 ++--- diagramview.h | 29 +- lang/qet_en.qm | Bin 24414 -> 43990 bytes lang/qet_en.ts | 664 ++++++++++++++++++++++++++++--------------- qetdiagrameditor.cpp | 502 ++++++++++++++++---------------- qetdiagrameditor.h | 100 ++++--- 7 files changed, 771 insertions(+), 595 deletions(-) diff --git a/diagram.cpp b/diagram.cpp index 2660dea04..3e9c38e13 100644 --- a/diagram.cpp +++ b/diagram.cpp @@ -29,7 +29,7 @@ Diagram::Diagram(QObject *parent) : QGraphicsScene(parent), qgi_manager(this) { Destructeur */ Diagram::~Diagram() { -}; +} /** Dessine l'arriere-plan du schema, cad la grille. diff --git a/diagramview.cpp b/diagramview.cpp index 15a382330..101dcbdc4 100644 --- a/diagramview.cpp +++ b/diagramview.cpp @@ -6,9 +6,10 @@ #include "diagramcommands.h" /** - Initialise le DiagramView + Constructeur + @param parent Le QWidegt parent de cette vue de schema */ -void DiagramView::initialise() { +DiagramView::DiagramView(QWidget *parent) : QGraphicsView(parent) { setInteractive(true); setCacheMode(QGraphicsView::CacheBackground); setOptimizationFlags(QGraphicsView::DontClipPainter|QGraphicsView::DontSavePainterState|QGraphicsView::DontAdjustForAntialiasing); @@ -34,21 +35,6 @@ void DiagramView::initialise() { connect(&(scene -> undoStack()), SIGNAL(cleanChanged(bool)), this, SLOT(updateWindowTitle())); } -/** - Constructeur par defaut -*/ -DiagramView::DiagramView() : QGraphicsView() { - initialise(); -} - -/** - Constructeur - @param parent Le QWidegt parent de cette vue de schema -*/ -DiagramView::DiagramView(QWidget *parent) : QGraphicsView(parent) { - initialise(); -} - /** Destructeur */ @@ -82,7 +68,7 @@ void DiagramView::selectInvert() { /** Supprime les composants selectionnes */ -void DiagramView::supprimer() { +void DiagramView::deleteSelection() { QSet garbage_elmt; QSet garbage_conducers; @@ -106,7 +92,7 @@ void DiagramView::supprimer() { /** Pivote les composants selectionnes */ -void DiagramView::pivoter() { +void DiagramView::rotateSelection() { if (scene -> selectedItems().isEmpty()) return; QHash elements_to_rotate; foreach (QGraphicsItem *item, scene -> selectedItems()) { @@ -177,7 +163,7 @@ void DiagramView::setSelectionMode() { /** Agrandit le schema (+33% = inverse des -25 % de zoomMoins()) */ -void DiagramView::zoomPlus() { +void DiagramView::zoomIn() { scale(4.0/3.0, 4.0/3.0); adjustGridToZoom(); } @@ -185,7 +171,7 @@ void DiagramView::zoomPlus() { /** Retrecit le schema (-25% = inverse des +33 % de zoomPlus()) */ -void DiagramView::zoomMoins() { +void DiagramView::zoomOut() { scale(0.75, 0.75); adjustGridToZoom(); } @@ -216,8 +202,8 @@ void DiagramView::zoomReset() { /** copie les elements selectionnes du schema dans le presse-papier puis les supprime */ -void DiagramView::couper() { - copier(); +void DiagramView::cut() { + copy(); QSet cut_elmt; QSet cut_conducers; @@ -240,7 +226,7 @@ void DiagramView::couper() { /** copie les elements selectionnes du schema dans le presse-papier */ -void DiagramView::copier() { +void DiagramView::copy() { QClipboard *presse_papier = QApplication::clipboard(); QString contenu_presse_papier = scene -> toXml(false).toString(4); if (presse_papier -> supportsSelection()) presse_papier -> setText(contenu_presse_papier, QClipboard::Selection); @@ -250,7 +236,7 @@ void DiagramView::copier() { /** importe les elements contenus dans le presse-papier dans le schema */ -void DiagramView::coller() { +void DiagramView::paste() { QString texte_presse_papier; QDomDocument document_xml; if ((texte_presse_papier = QApplication::clipboard() -> text()) == QString()) return; @@ -295,11 +281,11 @@ void DiagramView::mousePressEvent(QMouseEvent *e) { /** Ouvre un fichier *.qet dans cette DiagramView - @param nom_fichier Nom du fichier a ouvrir + @param n_fichier Nom du fichier a ouvrir @param erreur Si le pointeur est specifie, cet entier est mis a 0 en cas de reussite de l'ouverture, 1 si le fichier n'existe pas, 2 si le fichier n'est pas lisible, 3 si le fichier n'est pas un element XML, 4 si l'ouverture du fichier a echoue pour une autre raison (c'est pas ca qui manque ^^) @return true si l'ouverture a reussi, false sinon */ -bool DiagramView::ouvrir(QString n_fichier, int *erreur) { +bool DiagramView::open(QString n_fichier, int *erreur) { // verifie l'existence du fichier if (!QFileInfo(n_fichier).exists()) { if (erreur != NULL) *erreur = 1; @@ -326,7 +312,7 @@ bool DiagramView::ouvrir(QString n_fichier, int *erreur) { QDomDocument &doc = document; if (scene -> fromXml(doc)) { if (erreur != NULL) *erreur = 0; - nom_fichier = n_fichier; + file_name = n_fichier; scene -> undoStack().setClean(); return(true); } else { @@ -362,7 +348,7 @@ void DiagramView::closeEvent(QCloseEvent *event) { ); switch(reponse) { case QMessageBox::Cancel: retour = false; break; // l'utilisateur annule : echec de la fermeture - case QMessageBox::Yes: retour = enregistrer(); break; // l'utilisateur dit oui : la reussite depend de l'enregistrement + case QMessageBox::Yes: retour = save(); break; // l'utilisateur dit oui : la reussite depend de l'enregistrement default: retour = true; // l'utilisateur dit non ou ferme le dialogue: c'est reussi } } @@ -375,12 +361,12 @@ void DiagramView::closeEvent(QCloseEvent *event) { /** Methode enregistrant le schema dans le dernier nom de fichier connu. - Si aucun nom de fichier n'est connu, cette methode appelle la methode enregistrer_sous + Si aucun nom de fichier n'est connu, cette methode appelle la methode saveAs @return true si l'enregistrement a reussi, false sinon */ -bool DiagramView::enregistrer() { - if (nom_fichier == QString()) return(enregistrer_sous()); - else return(private_enregistrer(nom_fichier)); +bool DiagramView::save() { + if (file_name == QString()) return(saveAs()); + else return(saveDiagramToFile(file_name)); } /** @@ -390,8 +376,9 @@ bool DiagramView::enregistrer() { Si l'enregistrement reussit, le nom du fichier est conserve et la fonction renvoie true. Sinon, faux est renvoye. @return true si l'enregistrement a reussi, false sinon + @todo detecter le chemin du bureau automatiquement */ -bool DiagramView::enregistrer_sous() { +bool DiagramView::saveAs() { // demande un nom de fichier a l'utilisateur pour enregistrer le schema QString n_fichier = QFileDialog::getSaveFileName( this, @@ -404,11 +391,11 @@ bool DiagramView::enregistrer_sous() { // si le nom ne se termine pas par l'extension .qet, celle-ci est ajoutee if (!n_fichier.endsWith(".qet", Qt::CaseInsensitive)) n_fichier += ".qet"; // tente d'enregistrer le fichier - bool resultat_enregistrement = private_enregistrer(n_fichier); + bool resultat_enregistrement = saveDiagramToFile(n_fichier); // si l'enregistrement reussit, le nom du fichier est conserve if (resultat_enregistrement) { - nom_fichier = n_fichier; - setWindowTitle(nom_fichier + "[*]"); + file_name = n_fichier; + updateWindowTitle(); } // retourne un booleen representatif de la reussite de l'enregistrement return(resultat_enregistrement); @@ -418,10 +405,10 @@ bool DiagramView::enregistrer_sous() { Methode privee gerant l'enregistrement du fichier XML. S'il n'est pas possible d'ecrire dans le fichier, cette fonction affiche un message d'erreur et renvoie false. Autrement, elle renvoie true. - @param nom_fichier Nom du fichier dans lequel l'arbre XML doit etre ecrit + @param n_fichier Nom du fichier dans lequel l'arbre XML doit etre ecrit @return true si l'enregistrement a reussi, false sinon */ -bool DiagramView::private_enregistrer(QString &n_fichier) { +bool DiagramView::saveDiagramToFile(QString &n_fichier) { QFile fichier(n_fichier); if (!fichier.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::warning(this, tr("Erreur"), tr("Impossible d'ecrire dans ce fichier")); @@ -589,8 +576,8 @@ void DiagramView::adjustSceneRect() { void DiagramView::updateWindowTitle() { QString window_title; - if (nom_fichier.isNull()) window_title += tr("nouveau sch\351ma"); - else window_title += nom_fichier; + if (file_name.isNull()) window_title += tr("nouveau sch\351ma"); + else window_title += file_name; window_title += "[*]"; setWindowTitle(window_title); setWindowModified(!(scene -> undoStack().isClean())); diff --git a/diagramview.h b/diagramview.h index 613190d66..89c95ba61 100644 --- a/diagramview.h +++ b/diagramview.h @@ -10,7 +10,6 @@ class DiagramView : public QGraphicsView { // constructeurs, destructeur public: - DiagramView(); DiagramView(QWidget * = 0); virtual ~DiagramView(); @@ -18,17 +17,18 @@ class DiagramView : public QGraphicsView { DiagramView(const DiagramView &); // attributs + public: + QString file_name; + private: Diagram *scene; - QList garbage; // methodes public: - bool ouvrir(QString, int * = NULL); + bool open(QString, int * = NULL); void closeEvent(QCloseEvent *); - QString nom_fichier; - bool enregistrer(); - bool enregistrer_sous(); + bool save(); + bool saveAs(); void dialogExport(); void dialogEditInfos(); void dialogPrint(); @@ -40,8 +40,7 @@ class DiagramView : public QGraphicsView { bool hasSelectedItems(); private: - bool private_enregistrer(QString &); - void initialise(); + bool saveDiagramToFile(QString &); void mousePressEvent(QMouseEvent *); void dragEnterEvent(QDragEnterEvent *); void dragLeaveEvent(QDragLeaveEvent *); @@ -58,17 +57,17 @@ class DiagramView : public QGraphicsView { void selectNothing(); void selectAll(); void selectInvert(); - void supprimer(); - void pivoter(); + void deleteSelection(); + void rotateSelection(); void setVisualisationMode(); void setSelectionMode(); - void zoomPlus(); - void zoomMoins(); + void zoomIn(); + void zoomOut(); void zoomFit(); void zoomReset(); - void couper(); - void copier(); - void coller(); + void cut(); + void copy(); + void paste(); void adjustSceneRect(); void updateWindowTitle(); diff --git a/lang/qet_en.qm b/lang/qet_en.qm index 0e9859c48abfcc21425eb1d69737d42ecafbb297..25c93e416a905b479c0e5e95b3c51c62b349a797 100644 GIT binary patch literal 43990 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%0Au%i>YCqayXu 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 literal 24414 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 Angle : - + abscisse abscissa - + ordonnée ordinate - + diamètre horizontal horizontal diameter - + diamètre vertical vertical diameter - + angle de départ start angle - + angle angle @@ -162,22 +162,22 @@ Whoops, we have no website BorderInset - + Auteur : Author : - + Date : Date : - + Fichier : File : - + Folio : Folio : @@ -187,7 +187,7 @@ Whoops, we have no website Document title : - + Titre du document : Document title : @@ -205,17 +205,17 @@ Whoops, we have no website Diameter : - + abscisse abscissa - + ordonnée ordinate - + diamètre diameter @@ -223,22 +223,22 @@ Whoops, we have no website DiagramView - + ? ? - + Auteur : Author : - + Cartouche du schéma Diagram inset - + Date : Date : @@ -248,39 +248,39 @@ Whoops, we have no website Diagram QElectroTech (*.qet) - + Enregistrer le schéma en cours ? Save the current diagram ? - + Enregistrer sous Save as - + Erreur Error - + Fichier : File : - + Folio : Folio : - + Impossible d'ecrire dans ce fichier Can't write to the file Nouveau schéma - New diagram + New diagram @@ -288,20 +288,25 @@ Whoops, we have no website Diagram QElectroTech (*.qet) - + Schéma QElectroTech (*.qet) QElectroTech Diagram (*.qet) - + Titre : Title : - + Voulez-vous enregistrer le schéma Do you wish to save the diagram + + + nouveau schéma + new diagram + ElementDeleter @@ -338,57 +343,57 @@ Check your rights on the file ElementScene - + ligne line - + ellipse ellipse - + arc arc - + cercle circle - + borne terminal - + texte text - + champ de texte textfield - + polygone polygon - + Ce document XML n'est pas une definition d'élément. This XML document is not an element definition. - + Les dimensions ou le point de saisie ne sont pas valides. The size or the hotspot are not valid. - + Les orientations ne sont pas valides. Orientations are not valids. @@ -398,22 +403,22 @@ Check your rights on the file Edit size and hotspot - + Éditer les orientations Edit orientations - + L'orientation par défaut est l'orientation dans laquelle s'effectue la création de l'élément. Default orientation is the orientation which the drawing of the element takes place with. - + Éditer les noms Edit names - + Vous pouvez spécifier le nom de l'élément dans plusieurs langues. You may enter the element name in several languages. @@ -421,7 +426,7 @@ Check your rights on the file ElementsCategoriesList - + Collection utilisateur User Collection @@ -651,22 +656,22 @@ Please check rights of the directory vertical : - + abscisse abscissa - + ordonnée ordinate - + diamètre horizontal horizontal diameter - + diamètre vertical vertical diameter @@ -860,22 +865,22 @@ Please check rights of the directory LineEditor - + abscisse point 1 abscissa point 1 - + ordonnée point 1 ordinate point 1 - + abscisse point 2 abscissa point 2 - + ordonnée point 2 ordinate point 2 @@ -1116,7 +1121,7 @@ Please check rights of the directory Indiquez le nom du fichier dans lequel enregistrer le nouvel élément. - Enter the name of the file for the new element. + Enter the name of the file for the new element. @@ -1288,6 +1293,84 @@ Please check rights of the directory Polygon closure + + QETApp + + + QElectroTech + QElectroTech + + + + &Quitter + &Quit + + + + &Masquer + &Hide + + + + &Restaurer + &Show + + + + &Masquer tous les éditeurs de schéma + &Hide diagram editors + + + + &Restaurer tous les éditeurs de schéma + &Show diagram editors + + + + &Masquer tous les éditeurs d'élément + &Hide element editors + + + + &Restaurer tous les éditeurs d'élément + &Show element editors + + + + &Nouvel éditeur de schéma + &New diagram editor + + + + &Nouvel éditeur d'élément + &New element editor + + + + Ferme l'application QElectroTech + Closes QElectroTech + + + + Réduire QElectroTech dans le systray + Reduces QElectroTech into the systray + + + + Restaurer QElectroTech + Restore QElectroTech + + + + Éditeurs de schémas + Diagram editors + + + + Éditeurs d'élément + Element editors + + QETDiagramEditor @@ -1296,17 +1379,17 @@ Please check rights of the directory Render the current plan with or without antialiasing - + Active la fenêtre Activates the window - + Active la fenêtre précédente Activates the previous window - + Active la fenêtre suivante Activates the next window @@ -1316,107 +1399,107 @@ Please check rights of the directory Render with &Antialiasing - + Adapte la taille du schéma afin qu'il soit entièrement visible Changes the size of the plan so that it fits in the view - + Afficha&ge Displ&ay - + Affiche des informations sur la bibliothèque Qt Displays informations about Qt library - + Affiche des informations sur QElectroTech Displays informations about QElectroTech - + Affiche ou non la barre d'outils Displays or not the toolbar - + Affiche ou non le panel d'appareils Displays or not the elements panel - + Affiche QElectroTech en mode fenêtré Displays QElectroTech in windowed mode - + Affiche QElectroTech en mode plein écran Displays QELectroTech in full screen mode - + Afficher Display - + Agrandir le schéma Expand the diagram - + Agrandit le schéma Expand the diagram - + Agrandit le schéma en hauteur Expand the diagram's height - + &Aide &Help - + Ajouter une colonne Add a column - + Ajoute une colonne au schéma Add a column to the diagram - + Aligne les fenêtres réduites Arranges all iconized windows at the bottom of the workspace - + Annule l'action précédente Undoes the previous action Annu&ler - &Undo + &Undo - + À &propos de QElectroTech A&bout QElectroTech - + À propos de &Qt About &Qt - + Arranger les fenêtres réduites Arranges iconized windows @@ -1426,27 +1509,27 @@ Please check rights of the directory Hide Too&lbar - + &Cascade &Cascade - + Ce fichier n'est pas un document XML valide. This file is not a valid XML Document. - + Ce fichier n'existe pas. This file does not exist. - + C&oller &Paste - + &Configuration &Settings @@ -1456,77 +1539,77 @@ Please check rights of the directory Configure tool&bars - + &Configurer QElectroTech &Configure QElectroTech - + Copie les éléments sélectionnés dans le presse-papier Copies selected elements - + Cop&ier &Copy - + Co&uper Cu&t - + Crée un nouveau schéma Opens a new diagram - + Ctrl+0 - + Ctrl+9 - + Ctrl+I - + Ctrl+Q - + Ctrl+R Ctrl+R - + Ctrl+Shift+A - + Ctrl+Shift+F Ctrl+Shift+F - + Ctrl+Shift+I - + Ctrl+Shift+X - + Ctrl+Suppr Ctrl+Suppr @@ -1536,17 +1619,17 @@ Please check rights of the directory Render without &Antialiasing - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés Deselects selected elements and select non-selected elements - + Désélectionner tout Select none - + Désélectionne tous les éléments du schéma Deselect all elements on the plan @@ -1556,52 +1639,52 @@ Please check rights of the directory Diagram QelectroTech (*.qet);;XML Files(*.xml);;All files (*) - + Dispose les fenêtres en cascade Arranges windows in a cascade pattern - + Dispose les fenêtres en mosaïque Arranges windows in a tile pattern - + Édite les informations affichées par le cartouche Edit informations displayed by the inset - + &Édition &Edit - + Enlève les éléments sélectionnés du schéma Removes selected elements from the plan - + Enlever une colonne Remove a column - + Enlève une colonne au schéma Remove a column from the diagram - + Enregistre le schéma courant Saves the current plan - + Enregistre le schéma courant avec un autre nom de fichier Saves the current plan as another filename - + &Enregistrer &Save @@ -1611,22 +1694,22 @@ Please check rights of the directory Save the current schema ? - + Enregistrer sous Save as - + Erreur Error - + Exporte le schéma courant dans un autre format Exports the curent plan to another format - + E&xporter &Export @@ -1636,37 +1719,37 @@ Please check rights of the directory Export to file - + Fenêtre précédente Previous Window - + Fe&nêtres Wi&ndows - + Fenêtre suivante Next Window - + Ferme l'application QElectroTech Closes QElectroTech - + Ferme le schéma courant Closes the current plan - + &Fermer &Close - + &Fichier &File @@ -1676,12 +1759,12 @@ Please check rights of the directory PNG Picture (*.png) - + &Importer &Import - + Importe un schéma dans le schéma courant Imports a plan into the current plan @@ -1696,34 +1779,34 @@ Please check rights of the directory Can't read that file - + Impossible de lire ce fichier. Could not read file. - + Imprime le schéma courant Prints the current plan - + Imprimer Print - + Informations sur le schéma Diagram informations - + Inverser la sélection Invert selection &Masquer - &Hide + &Hide @@ -1731,47 +1814,47 @@ Please check rights of the directory &Fullscreen Mode - + Mode Selection Selection Mode - + Mode Visualisation View Mode - + &Mosaïque &Tile - + &Nouveau &New - + O&utils &Tools - + Outils Tools - + Ouvre un schéma existant Open an existing diagram - + &Ouvrir &Open - + Ouvrir un fichier Open a file @@ -1781,57 +1864,57 @@ Please check rights of the directory P - + Panel d'appareils Elements Panel - + Pas de zoom Reset zoom - + Passer en &mode plein écran F&ullScreen Screen Mode - + Permet de régler différents paramètres de QElectroTech Allows to specify various parameters for QElectroTech - + Permet de sélectionner les éléments Allows to select elements - + Permet de visualiser le schéma sans pouvoir le modifier Allows to view the plan without modifying it - + Pivote les éléments sélectionnés Rotates selected elements - + Pivoter Rotate - + Place les éléments du presse-papier sur le schéma Pastes elements from the clipboard into the plan QElectrotech - QElectrotech + QElectrotech - + QElectroTech QElectroTech @@ -1841,52 +1924,52 @@ Please check rights of the directory QElectrotech : Size of the drawing area : - + &Quitter &Quit Reduire QElectroTech dans le systray - Minimize QElectroTech to the sytray + Minimize QElectroTech to the sytray Re&faire - &Redo + &Redo - + Restaure l'action annulée Restores the undone action - + Restaure le zoom par défaut Restores default zoom level &Restaurer - &Show + &Show Restaurer QElectroTech - Restore QElectroTech + Restore QElectroTech - + Rétrécir le schéma Shrink the diagram - + Rétrécit le schéma Shrinks the plan - + Rétrécit le schéma en hauteur Shrink the diagram's height @@ -1911,37 +1994,37 @@ Please check rights of the directory QElectroTech Diagram (*.qet);;XML Files (*.xml);;All files (*) - + Schémas QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech Diagrams (*.qet);;XML Files (*.xml);;All files (*) - + Sélectionne tous les éléments du schéma Selects all elements on the plan - + Sortir du &mode plein écran Exit F&ullScreen Screen Mode - + Supprimer Delete - + Tout sélectionner Select All - + Transfère les éléments sélectionnés dans le presse-papier Puts selected elements into the clipboard - + Une erreur s'est produite lors de l'ouverture du fichier. An error occured while opening the file. @@ -1956,20 +2039,30 @@ Please check rights of the directory x - + Zoom adapté Fit in view - + Zoom arrière Zoom Out - + Zoom avant Zoom In + + + Annuler + Undo + + + + Refaire + Redo + QETElementEditor @@ -1979,142 +2072,142 @@ Please check rights of the directory QElectroTech - Element Editor - + &Nouveau &New - + &Ouvrir &Open - + &Enregistrer &Save - + Enregistrer sous Save as - + &Quitter &Quit - + Tout sélectionner Select All - + Désélectionner tout Select none - + Inverser la sélection Invert selection - + &Supprimer &Delete - + Éditer la taille et le point de saisie Edit size and hotspot - + Éditer les noms Edit names - + Éditer les orientations Edit orientations - + Déplacer un objet Move an object - + Ajouter une ligne Add a line - + Ajouter une ellipse Add an ellipse - + Ajouter un cercle Add a circle - + Ajouter un polygone Add a polygon - + Ajouter du texte Add text - + Ajouter un arc de cercle Add an arc - + Ajouter une borne Add a terminal - + Ajouter un champ de texte Add a textfield - + Annuler Undo - + Refaire Redo - + Ctrl+Q Ctrl+Q - + Ctrl+Shift+A Ctrl+Shift+A - + Ctrl+I Ctrl+I - + Ctrl+Suppr Ctrl+Del - + Parties Parts @@ -2149,110 +2242,115 @@ Please check rights of the directory Help - + [Modifié] [Changed] - + [lecture seule] [Read only] - + Informations Informations - + Annulations Undo - + Éditeur d'éléments Elements Editor - + parties sélectionnées. selected parts. - + Aucune partie sélectionnée. No part selected. - + Le fichier The file - + n'existe pas. does not exist. - + Impossible d'ouvrir le fichier Unable to open file - + Ce fichier n'est pas un document XML valide This file is not a valid XML document - + Erreur Error - + Édition en lecture seule Read only edition - + Vous n'avez pas les privilèges nécessaires pour modifier cet élement. Il sera donc ouvert en lecture seule. You are not allowed to modify this element. Thus it will be edited read-only. - + Impossible d'ecrire dans ce fichier Can't write to the file - + Ouvrir un fichier Open a file - + Éléments QElectroTech (*.elmt);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech elements (*.elmt);;XML files (*.xml);;All files (*) - + Éléments QElectroTech (*.elmt) QElectroTech elements (*.elmt) - + Enregistrer l'élément en cours ? Save current element ? - + Voulez-vous enregistrer l'élément Do you wish to save the element - + ? ? + + + Afficher + Display + QObject @@ -2267,17 +2365,17 @@ Please check rights of the directory move - + ajout insert - + modification modification - + modification points polygone modification polygon points @@ -2331,6 +2429,106 @@ Please check rights of the directory champ de texte textfield + + + ajouter 1 + add 1 + + + + ajouter un conducteur + add a conducer + + + + supprimer + delete + + + + coller + paste + + + + couper + cut + + + + déplacer + move + + + + modifier le texte + modify text + + + + pivoter + rotate + + + + modifier un conducteur + modify a conducer + + + + modifier le cartouche + modify the inset + + + + modifier les dimensions du schéma + modify the diagram size + + + + modification dimensions/hotspot + modify size/hotspot + + + + modification noms + modify names + + + + modification orientations + modify orientations + + + + éléments + elements + + + + élément + element + + + + et + et + + + + conducteurs + conducers + + + + conducteur + conducer + + + + Borne + Terminal + Schema @@ -2519,17 +2717,17 @@ Please check rights of the directory Orientation : - + abscisse abscissa - + ordonnée ordinate - + orientation orientation @@ -2562,22 +2760,22 @@ Please check rights of the directory Text : - + abscisse abscissa - + ordonnée ordinate - + texte text - + taille size @@ -2617,27 +2815,27 @@ Please check rights of the directory Default text : - + abscisse abscissa - + ordonnée ordinate - + texte text - + taille size - + propriété property diff --git a/qetdiagrameditor.cpp b/qetdiagrameditor.cpp index abee4f34e..31c405016 100644 --- a/qetdiagrameditor.cpp +++ b/qetdiagrameditor.cpp @@ -31,7 +31,7 @@ QETDiagramEditor::QETDiagramEditor(const QStringList &files, QWidget *parent) : // alors on ouvre ces fichiers foreach(QString file, files) { DiagramView *sv = new DiagramView(this); - if (sv -> ouvrir(file)) diagram_views << sv; + if (sv -> open(file)) diagram_views << sv; else delete sv; } } @@ -49,7 +49,7 @@ QETDiagramEditor::QETDiagramEditor(const QStringList &files, QWidget *parent) : setWindowIcon(QIcon(":/ico/qet.png")); // barre de statut de la fenetre - statusBar() -> showMessage(tr("QElectrotech")); + statusBar() -> showMessage(tr("QElectroTech")); // ajout du panel d'Appareils en tant que QDockWidget qdw_pa = new QDockWidget(tr("Panel d'appareils"), this); @@ -94,21 +94,21 @@ QETDiagramEditor::~QETDiagramEditor() { */ void QETDiagramEditor::closeEvent(QCloseEvent *qce) { // quitte directement s'il n'y a aucun schema ouvert - bool peut_quitter = true; + bool can_quit = true; if (currentDiagram()) { // sinon demande la permission de fermer chaque schema - foreach(QWidget *fenetre, workspace.windowList()) { - if (qobject_cast(fenetre)) { - workspace.setActiveWindow(fenetre); - if (!fermer()) { - peut_quitter = false; + foreach(QWidget *diagram_window, workspace.windowList()) { + if (qobject_cast(diagram_window)) { + workspace.setActiveWindow(diagram_window); + if (!closeDiagram()) { + can_quit = false; qce -> ignore(); break; } } } } - if (peut_quitter) { + if (can_quit) { setAttribute(Qt::WA_DeleteOnClose); qce -> accept(); } @@ -128,7 +128,7 @@ void QETDiagramEditor::toggleFullScreen() { le dialogue n'a pas a etre recree et il apparait instantanement. Il est detruit en meme temps que son parent (ici, la QETDiagramEditor). */ -void QETDiagramEditor::aPropos() { +void QETDiagramEditor::aboutQET() { static AboutQET *apqet = new AboutQET(this); apqet -> exec(); } @@ -138,134 +138,134 @@ void QETDiagramEditor::aPropos() { */ void QETDiagramEditor::actions() { // icones et labels - nouveau_fichier = new QAction(QIcon(":/ico/new.png"), tr("&Nouveau"), this); - ouvrir_fichier = new QAction(QIcon(":/ico/open.png"), tr("&Ouvrir"), this); - fermer_fichier = new QAction(QIcon(":/ico/fileclose.png"), tr("&Fermer"), this); - enr_fichier = new QAction(QIcon(":/ico/save.png"), tr("&Enregistrer"), this); - enr_fichier_sous = new QAction(QIcon(":/ico/saveas.png"), tr("Enregistrer sous"), this); - importer = new QAction(QIcon(":/ico/import.png"), tr("&Importer"), this); - exporter = new QAction(QIcon(":/ico/export.png"), tr("E&xporter"), this); - imprimer = new QAction(QIcon(":/ico/print.png"), tr("Imprimer"), this); - quitter_qet = new QAction(QIcon(":/ico/exit.png"), tr("&Quitter"), this); + new_file = new QAction(QIcon(":/ico/new.png"), tr("&Nouveau"), this); + open_file = new QAction(QIcon(":/ico/open.png"), tr("&Ouvrir"), this); + close_file = new QAction(QIcon(":/ico/fileclose.png"), tr("&Fermer"), this); + save_file = new QAction(QIcon(":/ico/save.png"), tr("&Enregistrer"), this); + save_file_sous = new QAction(QIcon(":/ico/saveas.png"), tr("Enregistrer sous"), this); + import_diagram = new QAction(QIcon(":/ico/import.png"), tr("&Importer"), this); + export_diagram = new QAction(QIcon(":/ico/export.png"), tr("E&xporter"), this); + print = new QAction(QIcon(":/ico/print.png"), tr("Imprimer"), this); + quit_editor = new QAction(QIcon(":/ico/exit.png"), tr("&Quitter"), this); - annuler = undo_group.createUndoAction(this, tr("Annuler")); - annuler -> setIcon(QIcon(":/ico/undo.png")); - refaire = undo_group.createRedoAction(this, tr("Refaire")); - refaire -> setIcon(QIcon(":/ico/redo.png")); - couper = new QAction(QIcon(":/ico/cut.png"), tr("Co&uper"), this); - copier = new QAction(QIcon(":/ico/copy.png"), tr("Cop&ier"), this); - coller = new QAction(QIcon(":/ico/paste.png"), tr("C&oller"), this); - sel_tout = new QAction( tr("Tout s\351lectionner"), this); - sel_rien = new QAction( tr("D\351s\351lectionner tout"), this); - sel_inverse = new QAction( tr("Inverser la s\351lection"), this); - supprimer = new QAction(QIcon(":/ico/delete.png"), tr("Supprimer"), this); - pivoter = new QAction(QIcon(":/ico/pivoter.png"), tr("Pivoter"), this); + undo = undo_group.createUndoAction(this, tr("Annuler")); + undo -> setIcon(QIcon(":/ico/undo.png")); + redo = undo_group.createRedoAction(this, tr("Refaire")); + redo -> setIcon(QIcon(":/ico/redo.png")); + cut = new QAction(QIcon(":/ico/cut.png"), tr("Co&uper"), this); + copy = new QAction(QIcon(":/ico/copy.png"), tr("Cop&ier"), this); + paste = new QAction(QIcon(":/ico/paste.png"), tr("C&oller"), this); + select_all = new QAction( tr("Tout s\351lectionner"), this); + select_nothing = new QAction( tr("D\351s\351lectionner tout"), this); + select_invert = new QAction( tr("Inverser la s\351lection"), this); + delete_selection = new QAction(QIcon(":/ico/delete.png"), tr("Supprimer"), this); + rotate_selection = new QAction(QIcon(":/ico/pivoter.png"), tr("Pivoter"), this); infos_diagram = new QAction(QIcon(":/ico/info.png"), tr("Informations sur le sch\351ma"), this); add_column = new QAction(QIcon(":/ico/add_col.png"), tr("Ajouter une colonne"), this); remove_column = new QAction(QIcon(":/ico/remove_col.png"), tr("Enlever une colonne"), this); expand_diagram = new QAction( tr("Agrandir le sch\351ma"), this); shrink_diagram = new QAction( tr("R\351tr\351cir le sch\351ma"), this); - zoom_avant = new QAction(QIcon(":/ico/viewmag+.png"), tr("Zoom avant"), this); - zoom_arriere = new QAction(QIcon(":/ico/viewmag-.png"), tr("Zoom arri\350re"), this); - zoom_adapte = new QAction(QIcon(":/ico/viewmagfit.png"), tr("Zoom adapt\351"), this); + zoom_in = new QAction(QIcon(":/ico/viewmag+.png"), tr("Zoom avant"), this); + zoom_out = new QAction(QIcon(":/ico/viewmag-.png"), tr("Zoom arri\350re"), this); + zoom_fit = new QAction(QIcon(":/ico/viewmagfit.png"), tr("Zoom adapt\351"), this); zoom_reset = new QAction(QIcon(":/ico/viewmag.png"), tr("Pas de zoom"), this); mode_selection = new QAction(QIcon(":/ico/select.png"), tr("Mode Selection"), this); mode_visualise = new QAction(QIcon(":/ico/move.png"), tr("Mode Visualisation"), this); - entrer_pe = new QAction(QIcon(":/ico/entrer_fs.png"), tr("Passer en &mode plein \351cran"), this); - sortir_pe = new QAction(QIcon(":/ico/sortir_fs.png"), tr("Sortir du &mode plein \351cran"), this); - configurer = new QAction(QIcon(":/ico/configure.png"), tr("&Configurer QElectroTech"), this); + fullscreen_on = new QAction(QIcon(":/ico/entrer_fs.png"), tr("Passer en &mode plein \351cran"), this); + fullscreen_off = new QAction(QIcon(":/ico/sortir_fs.png"), tr("Sortir du &mode plein \351cran"), this); + configure = new QAction(QIcon(":/ico/configure.png"), tr("&Configurer QElectroTech"), this); - f_mosaique = new QAction( tr("&Mosa\357que"), this); - f_cascade = new QAction( tr("&Cascade"), this); - f_reorganise = new QAction( tr("Arranger les fen\352tres r\351duites"), this); - f_suiv = new QAction( tr("Fen\352tre suivante"), this); - f_prec = new QAction( tr("Fen\352tre pr\351c\351dente"), this); + tile_window = new QAction( tr("&Mosa\357que"), this); + cascade_window = new QAction( tr("&Cascade"), this); + arrange_window = new QAction( tr("Arranger les fen\352tres r\351duites"), this); + next_window = new QAction( tr("Fen\352tre suivante"), this); + prev_window = new QAction( tr("Fen\352tre pr\351c\351dente"), this); - a_propos_de_qet = new QAction(QIcon(":/ico/qet.png"), tr("\300 &propos de QElectroTech"), this); - a_propos_de_qt = new QAction(QIcon(":/ico/qt.png"), tr("\300 propos de &Qt"), this); + about_qet = new QAction(QIcon(":/ico/qet.png"), tr("\300 &propos de QElectroTech"), this); + about_qt = new QAction(QIcon(":/ico/qt.png"), tr("\300 propos de &Qt"), this); // raccourcis clavier - nouveau_fichier -> setShortcut(QKeySequence::New); - ouvrir_fichier -> setShortcut(QKeySequence::Open); - fermer_fichier -> setShortcut(QKeySequence::Close); - enr_fichier -> setShortcut(QKeySequence::Save); - importer -> setShortcut(QKeySequence(tr("Ctrl+Shift+I"))); - exporter -> setShortcut(QKeySequence(tr("Ctrl+Shift+X"))); - imprimer -> setShortcut(QKeySequence(QKeySequence::Print)); - quitter_qet -> setShortcut(QKeySequence(tr("Ctrl+Q"))); + new_file -> setShortcut(QKeySequence::New); + open_file -> setShortcut(QKeySequence::Open); + close_file -> setShortcut(QKeySequence::Close); + save_file -> setShortcut(QKeySequence::Save); + import_diagram -> setShortcut(QKeySequence(tr("Ctrl+Shift+I"))); + export_diagram -> setShortcut(QKeySequence(tr("Ctrl+Shift+X"))); + print -> setShortcut(QKeySequence(QKeySequence::Print)); + quit_editor -> setShortcut(QKeySequence(tr("Ctrl+Q"))); - annuler -> setShortcut(QKeySequence::Undo); - refaire -> setShortcut(QKeySequence::Redo); - couper -> setShortcut(QKeySequence::Cut); - copier -> setShortcut(QKeySequence::Copy); - coller -> setShortcut(QKeySequence::Paste); - sel_tout -> setShortcut(QKeySequence::SelectAll); - sel_rien -> setShortcut(QKeySequence(tr("Ctrl+Shift+A"))); - sel_inverse -> setShortcut(QKeySequence(tr("Ctrl+I"))); - supprimer -> setShortcut(QKeySequence(tr("Ctrl+Suppr"))); - pivoter -> setShortcut(QKeySequence(tr("Ctrl+R"))); + undo -> setShortcut(QKeySequence::Undo); + redo -> setShortcut(QKeySequence::Redo); + cut -> setShortcut(QKeySequence::Cut); + copy -> setShortcut(QKeySequence::Copy); + paste -> setShortcut(QKeySequence::Paste); + select_all -> setShortcut(QKeySequence::SelectAll); + select_nothing -> setShortcut(QKeySequence(tr("Ctrl+Shift+A"))); + select_invert -> setShortcut(QKeySequence(tr("Ctrl+I"))); + delete_selection -> setShortcut(QKeySequence(tr("Ctrl+Suppr"))); + rotate_selection -> setShortcut(QKeySequence(tr("Ctrl+R"))); - zoom_avant -> setShortcut(QKeySequence::ZoomIn); - zoom_arriere -> setShortcut(QKeySequence::ZoomOut); - zoom_adapte -> setShortcut(QKeySequence(tr("Ctrl+9"))); + zoom_in -> setShortcut(QKeySequence::ZoomIn); + zoom_out -> setShortcut(QKeySequence::ZoomOut); + zoom_fit -> setShortcut(QKeySequence(tr("Ctrl+9"))); zoom_reset -> setShortcut(QKeySequence(tr("Ctrl+0"))); - entrer_pe -> setShortcut(QKeySequence(tr("Ctrl+Shift+F"))); - sortir_pe -> setShortcut(QKeySequence(tr("Ctrl+Shift+F"))); + fullscreen_on -> setShortcut(QKeySequence(tr("Ctrl+Shift+F"))); + fullscreen_off -> setShortcut(QKeySequence(tr("Ctrl+Shift+F"))); - f_suiv -> setShortcut(QKeySequence::NextChild); - f_prec -> setShortcut(QKeySequence::PreviousChild); + next_window -> setShortcut(QKeySequence::NextChild); + prev_window -> setShortcut(QKeySequence::PreviousChild); // affichage dans la barre de statut - nouveau_fichier -> setStatusTip(tr("Cr\351e un nouveau sch\351ma")); - ouvrir_fichier -> setStatusTip(tr("Ouvre un sch\351ma existant")); - fermer_fichier -> setStatusTip(tr("Ferme le sch\351ma courant")); - enr_fichier -> setStatusTip(tr("Enregistre le sch\351ma courant")); - enr_fichier_sous -> setStatusTip(tr("Enregistre le sch\351ma courant avec un autre nom de fichier")); - importer -> setStatusTip(tr("Importe un sch\351ma dans le sch\351ma courant")); - exporter -> setStatusTip(tr("Exporte le sch\351ma courant dans un autre format")); - imprimer -> setStatusTip(tr("Imprime le sch\351ma courant")); - quitter_qet -> setStatusTip(tr("Ferme l'application QElectroTech")); + new_file -> setStatusTip(tr("Cr\351e un nouveau sch\351ma")); + open_file -> setStatusTip(tr("Ouvre un sch\351ma existant")); + close_file -> setStatusTip(tr("Ferme le sch\351ma courant")); + save_file -> setStatusTip(tr("Enregistre le sch\351ma courant")); + save_file_sous -> setStatusTip(tr("Enregistre le sch\351ma courant avec un autre nom de fichier")); + import_diagram -> setStatusTip(tr("Importe un sch\351ma dans le sch\351ma courant")); + export_diagram -> setStatusTip(tr("Exporte le sch\351ma courant dans un autre format")); + print -> setStatusTip(tr("Imprime le sch\351ma courant")); + quit_editor -> setStatusTip(tr("Ferme l'application QElectroTech")); - annuler -> setStatusTip(tr("Annule l'action pr\351c\351dente")); - annuler -> setStatusTip(tr("Restaure l'action annul\351e")); - couper -> setStatusTip(tr("Transf\350re les \351l\351ments s\351lectionn\351s dans le presse-papier")); - copier -> setStatusTip(tr("Copie les \351l\351ments s\351lectionn\351s dans le presse-papier")); - coller -> setStatusTip(tr("Place les \351l\351ments du presse-papier sur le sch\351ma")); - sel_tout -> setStatusTip(tr("S\351lectionne tous les \351l\351ments du sch\351ma")); - sel_rien -> setStatusTip(tr("D\351s\351lectionne tous les \351l\351ments du sch\351ma")); - sel_inverse -> setStatusTip(tr("D\351s\351lectionne les \351l\351ments s\351lectionn\351s et s\351lectionne les \351l\351ments non s\351lectionn\351s")); - supprimer -> setStatusTip(tr("Enl\350ve les \351l\351ments s\351lectionn\351s du sch\351ma")); - pivoter -> setStatusTip(tr("Pivote les \351l\351ments s\351lectionn\351s")); + undo -> setStatusTip(tr("Annule l'action pr\351c\351dente")); + undo -> setStatusTip(tr("Restaure l'action annul\351e")); + cut -> setStatusTip(tr("Transf\350re les \351l\351ments s\351lectionn\351s dans le presse-papier")); + copy -> setStatusTip(tr("Copie les \351l\351ments s\351lectionn\351s dans le presse-papier")); + paste -> setStatusTip(tr("Place les \351l\351ments du presse-papier sur le sch\351ma")); + select_all -> setStatusTip(tr("S\351lectionne tous les \351l\351ments du sch\351ma")); + select_nothing -> setStatusTip(tr("D\351s\351lectionne tous les \351l\351ments du sch\351ma")); + select_invert -> setStatusTip(tr("D\351s\351lectionne les \351l\351ments s\351lectionn\351s et s\351lectionne les \351l\351ments non s\351lectionn\351s")); + delete_selection -> setStatusTip(tr("Enl\350ve les \351l\351ments s\351lectionn\351s du sch\351ma")); + rotate_selection -> setStatusTip(tr("Pivote les \351l\351ments s\351lectionn\351s")); infos_diagram -> setStatusTip(tr("\311dite les informations affich\351es par le cartouche")); add_column -> setStatusTip(tr("Ajoute une colonne au sch\351ma")); remove_column -> setStatusTip(tr("Enl\350ve une colonne au sch\351ma")); expand_diagram -> setStatusTip(tr("Agrandit le sch\351ma en hauteur")); shrink_diagram -> setStatusTip(tr("R\351tr\351cit le sch\351ma en hauteur")); - zoom_avant -> setStatusTip(tr("Agrandit le sch\351ma")); - zoom_arriere -> setStatusTip(tr("R\351tr\351cit le sch\351ma")); - zoom_adapte -> setStatusTip(tr("Adapte la taille du sch\351ma afin qu'il soit enti\350rement visible")); + zoom_in -> setStatusTip(tr("Agrandit le sch\351ma")); + zoom_out -> setStatusTip(tr("R\351tr\351cit le sch\351ma")); + zoom_fit -> setStatusTip(tr("Adapte la taille du sch\351ma afin qu'il soit enti\350rement visible")); zoom_reset -> setStatusTip(tr("Restaure le zoom par d\351faut")); mode_selection -> setStatusTip(tr("Permet de s\351lectionner les \351l\351ments")); mode_visualise -> setStatusTip(tr("Permet de visualiser le sch\351ma sans pouvoir le modifier")); - entrer_pe -> setStatusTip(tr("Affiche QElectroTech en mode plein \351cran")); - sortir_pe -> setStatusTip(tr("Affiche QElectroTech en mode fen\352tr\351")); - configurer -> setStatusTip(tr("Permet de r\351gler diff\351rents param\350tres de QElectroTech")); + fullscreen_on -> setStatusTip(tr("Affiche QElectroTech en mode plein \351cran")); + fullscreen_off -> setStatusTip(tr("Affiche QElectroTech en mode fen\352tr\351")); + configure -> setStatusTip(tr("Permet de r\351gler diff\351rents param\350tres de QElectroTech")); - f_mosaique -> setStatusTip(tr("Dispose les fen\352tres en mosa\357que")); - f_cascade -> setStatusTip(tr("Dispose les fen\352tres en cascade")); - f_reorganise -> setStatusTip(tr("Aligne les fen\352tres r\351duites")); - f_suiv -> setStatusTip(tr("Active la fen\352tre suivante")); - f_prec -> setStatusTip(tr("Active la fen\352tre pr\351c\351dente")); + tile_window -> setStatusTip(tr("Dispose les fen\352tres en mosa\357que")); + cascade_window -> setStatusTip(tr("Dispose les fen\352tres en cascade")); + arrange_window -> setStatusTip(tr("Aligne les fen\352tres r\351duites")); + next_window -> setStatusTip(tr("Active la fen\352tre suivante")); + prev_window -> setStatusTip(tr("Active la fen\352tre pr\351c\351dente")); - a_propos_de_qet -> setStatusTip(tr("Affiche des informations sur QElectroTech")); - a_propos_de_qt -> setStatusTip(tr("Affiche des informations sur la biblioth\350que Qt")); + about_qet -> setStatusTip(tr("Affiche des informations sur QElectroTech")); + about_qt -> setStatusTip(tr("Affiche des informations sur la biblioth\350que Qt")); // traitements speciaux mode_selection -> setCheckable(true); @@ -278,37 +278,37 @@ void QETDiagramEditor::actions() { grp_visu_sel -> setExclusive(true); // connexion a des slots - connect(quitter_qet, SIGNAL(triggered()), this, SLOT(close()) ); - connect(sel_tout, SIGNAL(triggered()), this, SLOT(slot_selectAll()) ); - connect(sel_rien, SIGNAL(triggered()), this, SLOT(slot_selectNothing()) ); - connect(sel_inverse, SIGNAL(triggered()), this, SLOT(slot_selectInvert()) ); - connect(supprimer, SIGNAL(triggered()), this, SLOT(slot_supprimer()) ); - connect(pivoter, SIGNAL(triggered()), this, SLOT(slot_pivoter()) ); - connect(entrer_pe, SIGNAL(triggered()), this, SLOT(toggleFullScreen()) ); - connect(sortir_pe, SIGNAL(triggered()), this, SLOT(toggleFullScreen()) ); + connect(quit_editor, SIGNAL(triggered()), this, SLOT(close()) ); + connect(select_all, SIGNAL(triggered()), this, SLOT(slot_selectAll()) ); + connect(select_nothing, SIGNAL(triggered()), this, SLOT(slot_selectNothing()) ); + connect(select_invert, SIGNAL(triggered()), this, SLOT(slot_selectInvert()) ); + connect(delete_selection, SIGNAL(triggered()), this, SLOT(slot_delete()) ); + connect(rotate_selection, SIGNAL(triggered()), this, SLOT(slot_rotate()) ); + connect(fullscreen_on, SIGNAL(triggered()), this, SLOT(toggleFullScreen()) ); + connect(fullscreen_off, SIGNAL(triggered()), this, SLOT(toggleFullScreen()) ); connect(mode_selection, SIGNAL(triggered()), this, SLOT(slot_setSelectionMode()) ); connect(mode_visualise, SIGNAL(triggered()), this, SLOT(slot_setVisualisationMode())); - connect(a_propos_de_qet, SIGNAL(triggered()), this, SLOT(aPropos()) ); - connect(a_propos_de_qt, SIGNAL(triggered()), qApp, SLOT(aboutQt()) ); - connect(zoom_avant, SIGNAL(triggered()), this, SLOT(slot_zoomPlus()) ); - connect(zoom_arriere, SIGNAL(triggered()), this, SLOT(slot_zoomMoins()) ); - connect(zoom_adapte, SIGNAL(triggered()), this, SLOT(slot_zoomFit()) ); + connect(about_qet, SIGNAL(triggered()), this, SLOT(aboutQET()) ); + connect(about_qt, SIGNAL(triggered()), qApp, SLOT(aboutQt()) ); + connect(zoom_in, SIGNAL(triggered()), this, SLOT(slot_zoomIn()) ); + connect(zoom_out, SIGNAL(triggered()), this, SLOT(slot_zoomOut()) ); + connect(zoom_fit, SIGNAL(triggered()), this, SLOT(slot_zoomFit()) ); connect(zoom_reset, SIGNAL(triggered()), this, SLOT(slot_zoomReset()) ); - connect(imprimer, SIGNAL(triggered()), this, SLOT(dialog_print()) ); - connect(exporter, SIGNAL(triggered()), this, SLOT(dialog_export()) ); - connect(enr_fichier_sous, SIGNAL(triggered()), this, SLOT(dialogue_enregistrer_sous())); - connect(enr_fichier, SIGNAL(triggered()), this, SLOT(enregistrer()) ); - connect(nouveau_fichier, SIGNAL(triggered()), this, SLOT(nouveau()) ); - connect(ouvrir_fichier, SIGNAL(triggered()), this, SLOT(ouvrir()) ); - connect(fermer_fichier, SIGNAL(triggered()), this, SLOT(fermer()) ); - connect(couper, SIGNAL(triggered()), this, SLOT(slot_couper()) ); - connect(copier, SIGNAL(triggered()), this, SLOT(slot_copier()) ); - connect(coller, SIGNAL(triggered()), this, SLOT(slot_coller()) ); - connect(f_mosaique, SIGNAL(triggered()), &workspace, SLOT(tile()) ); - connect(f_cascade, SIGNAL(triggered()), &workspace, SLOT(cascade()) ); - connect(f_reorganise, SIGNAL(triggered()), &workspace, SLOT(arrangeIcons()) ); - connect(f_suiv, SIGNAL(triggered()), &workspace, SLOT(activateNextWindow()) ); - connect(f_prec, SIGNAL(triggered()), &workspace, SLOT(activatePreviousWindow()) ); + connect(print, SIGNAL(triggered()), this, SLOT(printDialog()) ); + connect(export_diagram, SIGNAL(triggered()), this, SLOT(exportDialog()) ); + connect(save_file_sous, SIGNAL(triggered()), this, SLOT(saveAsDialog()) ); + connect(save_file, SIGNAL(triggered()), this, SLOT(save()) ); + connect(new_file, SIGNAL(triggered()), this, SLOT(newDiagram()) ); + connect(open_file, SIGNAL(triggered()), this, SLOT(openDiagram()) ); + connect(close_file, SIGNAL(triggered()), this, SLOT(closeDiagram()) ); + connect(cut, SIGNAL(triggered()), this, SLOT(slot_cut()) ); + connect(copy, SIGNAL(triggered()), this, SLOT(slot_copy()) ); + connect(paste, SIGNAL(triggered()), this, SLOT(slot_paste()) ); + connect(tile_window, SIGNAL(triggered()), &workspace, SLOT(tile()) ); + connect(cascade_window, SIGNAL(triggered()), &workspace, SLOT(cascade()) ); + connect(arrange_window, SIGNAL(triggered()), &workspace, SLOT(arrangeIcons()) ); + connect(next_window, SIGNAL(triggered()), &workspace, SLOT(activateNextWindow()) ); + connect(prev_window, SIGNAL(triggered()), &workspace, SLOT(activatePreviousWindow()) ); connect(infos_diagram, SIGNAL(triggered()), this, SLOT(slot_editInfos()) ); connect(add_column, SIGNAL(triggered()), this, SLOT(slot_addColumn()) ); connect(remove_column, SIGNAL(triggered()), this, SLOT(slot_removeColumn()) ); @@ -325,7 +325,7 @@ void QETDiagramEditor::menus() { QMenu *menu_affichage = menuBar() -> addMenu(tr("Afficha&ge")); QMenu *menu_outils = menuBar() -> addMenu(tr("O&utils")); QMenu *menu_config = menuBar() -> addMenu(tr("&Configuration")); - menu_fenetres = menuBar() -> addMenu(tr("Fe&n\352tres")); + windows_menu = menuBar() -> addMenu(tr("Fe&n\352tres")); QMenu *menu_aide = menuBar() -> addMenu(tr("&Aide")); // tear off feature rulezz... pas ^^ mais bon... @@ -334,37 +334,37 @@ void QETDiagramEditor::menus() { menu_affichage -> setTearOffEnabled(true); menu_outils -> setTearOffEnabled(true); menu_config -> setTearOffEnabled(true); - menu_fenetres -> setTearOffEnabled(true); + windows_menu -> setTearOffEnabled(true); menu_aide -> setTearOffEnabled(true); // menu Fichier - menu_fichier -> addAction(nouveau_fichier); - menu_fichier -> addAction(ouvrir_fichier); - menu_fichier -> addAction(enr_fichier); - menu_fichier -> addAction(enr_fichier_sous); - menu_fichier -> addAction(fermer_fichier); + menu_fichier -> addAction(new_file); + menu_fichier -> addAction(open_file); + menu_fichier -> addAction(save_file); + menu_fichier -> addAction(save_file_sous); + menu_fichier -> addAction(close_file); menu_fichier -> addSeparator(); - //menu_fichier -> addAction(importer); - menu_fichier -> addAction(exporter); + //menu_fichier -> addAction(import_diagram); + menu_fichier -> addAction(export_diagram); //menu_fichier -> addSeparator(); - menu_fichier -> addAction(imprimer); + menu_fichier -> addAction(print); menu_fichier -> addSeparator(); - menu_fichier -> addAction(quitter_qet); + menu_fichier -> addAction(quit_editor); // menu Edition - menu_edition -> addAction(annuler); - menu_edition -> addAction(refaire); + menu_edition -> addAction(undo); + menu_edition -> addAction(redo); menu_edition -> addSeparator(); - menu_edition -> addAction(couper); - menu_edition -> addAction(copier); - menu_edition -> addAction(coller); + menu_edition -> addAction(cut); + menu_edition -> addAction(copy); + menu_edition -> addAction(paste); menu_edition -> addSeparator(); - menu_edition -> addAction(sel_tout); - menu_edition -> addAction(sel_rien); - menu_edition -> addAction(sel_inverse); + menu_edition -> addAction(select_all); + menu_edition -> addAction(select_nothing); + menu_edition -> addAction(select_invert); menu_edition -> addSeparator(); - menu_edition -> addAction(supprimer); - menu_edition -> addAction(pivoter); + menu_edition -> addAction(delete_selection); + menu_edition -> addAction(rotate_selection); menu_edition -> addSeparator(); menu_edition -> addAction(infos_diagram); menu_edition -> addAction(add_column); @@ -383,9 +383,9 @@ void QETDiagramEditor::menus() { // menu Affichage menu_affichage -> addMenu(menu_aff_aff); menu_affichage -> addSeparator(); - menu_affichage -> addAction(zoom_avant); - menu_affichage -> addAction(zoom_arriere); - menu_affichage -> addAction(zoom_adapte); + menu_affichage -> addAction(zoom_in); + menu_affichage -> addAction(zoom_out); + menu_affichage -> addAction(zoom_fit); menu_affichage -> addAction(zoom_reset); // menu Outils @@ -393,15 +393,15 @@ void QETDiagramEditor::menus() { menu_outils -> addAction(mode_visualise); // menu Configuration - menu_config -> addAction(entrer_pe); - menu_config -> addAction(configurer); + menu_config -> addAction(fullscreen_on); + menu_config -> addAction(configure); // menu Fenetres - slot_updateMenuFenetres(); + slot_updateWindowsMenu(); // menu Aide - menu_aide -> addAction(a_propos_de_qet); - menu_aide -> addAction(a_propos_de_qt); + menu_aide -> addAction(about_qet); + menu_aide -> addAction(about_qt); } /** @@ -415,19 +415,19 @@ void QETDiagramEditor::toolbar() { barre_outils -> addAction(mode_selection); barre_outils -> addAction(mode_visualise); barre_outils -> addSeparator(); - barre_outils -> addAction(annuler); - barre_outils -> addAction(refaire); + barre_outils -> addAction(undo); + barre_outils -> addAction(redo); barre_outils -> addSeparator(); - barre_outils -> addAction(couper); - barre_outils -> addAction(copier); - barre_outils -> addAction(coller); + barre_outils -> addAction(cut); + barre_outils -> addAction(copy); + barre_outils -> addAction(paste); barre_outils -> addSeparator(); - barre_outils -> addAction(supprimer); - barre_outils -> addAction(pivoter); + barre_outils -> addAction(delete_selection); + barre_outils -> addAction(rotate_selection); barre_outils -> addSeparator(); - barre_outils -> addAction(zoom_avant); - barre_outils -> addAction(zoom_arriere); - barre_outils -> addAction(zoom_adapte); + barre_outils -> addAction(zoom_in); + barre_outils -> addAction(zoom_out); + barre_outils -> addAction(zoom_fit); barre_outils -> addAction(zoom_reset); // ajout de la barre d'outils a la fenetre principale @@ -437,7 +437,7 @@ void QETDiagramEditor::toolbar() { /** Imprime le schema courant */ -void QETDiagramEditor::dialog_print() { +void QETDiagramEditor::printDialog() { DiagramView *sv = currentDiagram(); if (!sv) return; sv -> dialogPrint(); @@ -446,7 +446,7 @@ void QETDiagramEditor::dialog_print() { /** Gere l'export de schema sous forme d'image */ -void QETDiagramEditor::dialog_export() { +void QETDiagramEditor::exportDialog() { DiagramView *sv = currentDiagram(); if (!sv) return; sv -> dialogExport(); @@ -454,33 +454,27 @@ void QETDiagramEditor::dialog_export() { /** Methode enregistrant le schema dans le dernier nom de fichier connu. - Si aucun nom de fichier n'est connu, cette methode appelle la methode enregistrer_sous @return true si l'enregistrement a reussi, false sinon */ -bool QETDiagramEditor::enregistrer() { +bool QETDiagramEditor::save() { if (!currentDiagram()) return(false); - return(currentDiagram() -> enregistrer()); + return(currentDiagram() -> save()); } /** Cette methode demande un nom de fichier a l'utilisateur pour enregistrer le schema - Si aucun nom n'est entre, elle renvoie faux. - Si le nom ne se termine pas par l'extension .qet, celle-ci est ajoutee. - Si l'enregistrement reussit, le nom du fichier est conserve et la fonction renvoie true. - Sinon, faux est renvoye. @return true si l'enregistrement a reussi, false sinon - @todo detecter le chemin du bureau automatiquement */ -bool QETDiagramEditor::dialogue_enregistrer_sous() { +bool QETDiagramEditor::saveAsDialog() { if (!currentDiagram()) return(false); - return(currentDiagram() -> enregistrer_sous()); + return(currentDiagram() -> saveAs()); } /** Cette methode cree un nouveau schema. @return true si tout s'est bien passe ; false si vous executez cette fonction dans un univers non cartesien (en fait y'a pas de return(false) :p) */ -bool QETDiagramEditor::nouveau() { +bool QETDiagramEditor::newDiagram() { addDiagramView(new DiagramView(this)); return(true); } @@ -489,7 +483,7 @@ bool QETDiagramEditor::nouveau() { Cette fonction demande un nom de fichier a ouvrir a l'utilisateur @return true si l'ouverture a reussi, false sinon */ -bool QETDiagramEditor::ouvrir() { +bool QETDiagramEditor::openDiagram() { // demande un nom de fichier a ouvrir a l'utilisateur QString nom_fichier = QFileDialog::getOpenFileName( this, @@ -503,7 +497,7 @@ bool QETDiagramEditor::ouvrir() { QString chemin_fichier = QFileInfo(nom_fichier).canonicalFilePath(); foreach (QWidget *fenetre, workspace.windowList()) { DiagramView *fenetre_en_cours = qobject_cast(fenetre); - if (QFileInfo(fenetre_en_cours -> nom_fichier).canonicalFilePath() == chemin_fichier) { + if (QFileInfo(fenetre_en_cours -> file_name).canonicalFilePath() == chemin_fichier) { workspace.setActiveWindow(fenetre); return(false); } @@ -512,7 +506,7 @@ bool QETDiagramEditor::ouvrir() { // ouvre le fichier DiagramView *sv = new DiagramView(this); int code_erreur; - if (sv -> ouvrir(nom_fichier, &code_erreur)) { + if (sv -> open(nom_fichier, &code_erreur)) { addDiagramView(sv); return(true); } else { @@ -534,7 +528,7 @@ bool QETDiagramEditor::ouvrir() { @return true si la fermeture du fichier a reussi, false sinon @todo detecter les modifications et ne demander que si besoin est */ -bool QETDiagramEditor::fermer() { +bool QETDiagramEditor::closeDiagram() { DiagramView *sv = currentDiagram(); if (!sv) return(false); return(sv -> close()); @@ -550,36 +544,36 @@ DiagramView *QETDiagramEditor::currentDiagram() const { /** Effectue l'action "couper" sur le schema en cours */ -void QETDiagramEditor::slot_couper() { - if(currentDiagram()) currentDiagram() -> couper(); +void QETDiagramEditor::slot_cut() { + if(currentDiagram()) currentDiagram() -> cut(); } /** Effectue l'action "copier" sur le diagram en cours */ -void QETDiagramEditor::slot_copier() { - if(currentDiagram()) currentDiagram() -> copier(); +void QETDiagramEditor::slot_copy() { + if(currentDiagram()) currentDiagram() -> copy(); } /** Effectue l'action "coller" sur le schema en cours */ -void QETDiagramEditor::slot_coller() { - if(currentDiagram()) currentDiagram() -> coller(); +void QETDiagramEditor::slot_paste() { + if(currentDiagram()) currentDiagram() -> paste(); } /** Effectue l'action "zoom avant" sur le diagram en cours */ -void QETDiagramEditor::slot_zoomPlus() { - if(currentDiagram()) currentDiagram() -> zoomPlus(); +void QETDiagramEditor::slot_zoomIn() { + if(currentDiagram()) currentDiagram() -> zoomIn(); } /** Effectue l'action "zoom arriere" sur le schema en cours */ -void QETDiagramEditor::slot_zoomMoins() { - if(currentDiagram()) currentDiagram() -> zoomMoins(); +void QETDiagramEditor::slot_zoomOut() { + if(currentDiagram()) currentDiagram() -> zoomOut(); } /** @@ -620,15 +614,15 @@ void QETDiagramEditor::slot_selectInvert() { /** Effectue l'action "supprimer" sur le schema en cours */ -void QETDiagramEditor::slot_supprimer() { - if(currentDiagram()) currentDiagram() -> supprimer(); +void QETDiagramEditor::slot_delete() { + if(currentDiagram()) currentDiagram() -> deleteSelection(); } /** Effectue l'action "pivoter" sur le schema en cours */ -void QETDiagramEditor::slot_pivoter() { - if(currentDiagram()) currentDiagram() -> pivoter(); +void QETDiagramEditor::slot_rotate() { + if(currentDiagram()) currentDiagram() -> rotateSelection(); } /** @@ -650,48 +644,48 @@ void QETDiagramEditor::slot_setVisualisationMode() { */ void QETDiagramEditor::slot_updateActions() { DiagramView *sv = currentDiagram(); - bool document_ouvert = (sv != 0); + bool opened_document = (sv != 0); // actions ayant juste besoin d'un document ouvert - fermer_fichier -> setEnabled(document_ouvert); - enr_fichier -> setEnabled(document_ouvert); - enr_fichier_sous -> setEnabled(document_ouvert); - importer -> setEnabled(document_ouvert); - exporter -> setEnabled(document_ouvert); - imprimer -> setEnabled(document_ouvert); - sel_tout -> setEnabled(document_ouvert); - sel_rien -> setEnabled(document_ouvert); - sel_inverse -> setEnabled(document_ouvert); - zoom_avant -> setEnabled(document_ouvert); - zoom_arriere -> setEnabled(document_ouvert); - zoom_adapte -> setEnabled(document_ouvert); - zoom_reset -> setEnabled(document_ouvert); - infos_diagram -> setEnabled(document_ouvert); - add_column -> setEnabled(document_ouvert); - remove_column -> setEnabled(document_ouvert); - expand_diagram -> setEnabled(document_ouvert); - shrink_diagram -> setEnabled(document_ouvert); + close_file -> setEnabled(opened_document); + save_file -> setEnabled(opened_document); + save_file_sous -> setEnabled(opened_document); + import_diagram -> setEnabled(opened_document); + export_diagram -> setEnabled(opened_document); + print -> setEnabled(opened_document); + select_all -> setEnabled(opened_document); + select_nothing -> setEnabled(opened_document); + select_invert -> setEnabled(opened_document); + zoom_in -> setEnabled(opened_document); + zoom_out -> setEnabled(opened_document); + zoom_fit -> setEnabled(opened_document); + zoom_reset -> setEnabled(opened_document); + infos_diagram -> setEnabled(opened_document); + add_column -> setEnabled(opened_document); + remove_column -> setEnabled(opened_document); + expand_diagram -> setEnabled(opened_document); + shrink_diagram -> setEnabled(opened_document); // affiche les actions correspondant au diagram view en cours if (sv) undo_group.setActiveStack(&(sv -> diagram() -> undoStack())); else { - annuler -> setEnabled(false); - refaire -> setEnabled(false); + undo -> setEnabled(false); + redo -> setEnabled(false); } // actions ayant aussi besoin d'elements selectionnes - bool elements_selectionnes = document_ouvert ? (sv -> hasSelectedItems()) : false; - couper -> setEnabled(elements_selectionnes); - copier -> setEnabled(elements_selectionnes); - supprimer -> setEnabled(elements_selectionnes); - pivoter -> setEnabled(elements_selectionnes); + bool selected_elements = opened_document ? (sv -> hasSelectedItems()) : false; + cut -> setEnabled(selected_elements); + copy -> setEnabled(selected_elements); + delete_selection -> setEnabled(selected_elements); + rotate_selection -> setEnabled(selected_elements); // action ayant aussi besoin d'un presse-papier plein - bool peut_coller = QApplication::clipboard() -> text() != QString(); - coller -> setEnabled(document_ouvert && peut_coller); + bool can_paste = QApplication::clipboard() -> text() != QString(); + paste -> setEnabled(opened_document && can_paste); // actions ayant aussi besoin d'un document ouvert et de la connaissance de son mode - if (!document_ouvert) { + if (!opened_document) { mode_selection -> setEnabled(false); mode_visualise -> setEnabled(false); } else { @@ -715,7 +709,7 @@ void QETDiagramEditor::slot_updateActions() { } } - slot_updateMenuFenetres(); + slot_updateWindowsMenu(); } /** @@ -743,44 +737,44 @@ void QETDiagramEditor::addDiagramView(DiagramView *dv) { /** met a jour le menu "Fenetres" */ -void QETDiagramEditor::slot_updateMenuFenetres() { +void QETDiagramEditor::slot_updateWindowsMenu() { // nettoyage du menu - foreach(QAction *a, menu_fenetres -> actions()) menu_fenetres -> removeAction(a); + foreach(QAction *a, windows_menu -> actions()) windows_menu -> removeAction(a); // actions de fermeture - menu_fenetres -> addAction(fermer_fichier); - //menu_fenetres -> addAction(closeAllAct); + windows_menu -> addAction(close_file); + //windows_menu -> addAction(closeAllAct); // actions de reorganisation des fenetres - menu_fenetres -> addSeparator(); - menu_fenetres -> addAction(f_mosaique); - menu_fenetres -> addAction(f_cascade); - menu_fenetres -> addAction(f_reorganise); + windows_menu -> addSeparator(); + windows_menu -> addAction(tile_window); + windows_menu -> addAction(cascade_window); + windows_menu -> addAction(arrange_window); // actiosn de deplacement entre les fenetres - menu_fenetres -> addSeparator(); - menu_fenetres -> addAction(f_suiv); - menu_fenetres -> addAction(f_prec); + windows_menu -> addSeparator(); + windows_menu -> addAction(next_window); + windows_menu -> addAction(prev_window); // liste des fenetres - QList fenetres = workspace.windowList(); + QList windows = workspace.windowList(); - f_mosaique -> setEnabled(!fenetres.isEmpty()); - f_cascade -> setEnabled(!fenetres.isEmpty()); - f_reorganise -> setEnabled(!fenetres.isEmpty()); - f_suiv -> setEnabled(!fenetres.isEmpty()); - f_prec -> setEnabled(!fenetres.isEmpty()); + tile_window -> setEnabled(!windows.isEmpty()); + cascade_window -> setEnabled(!windows.isEmpty()); + arrange_window -> setEnabled(!windows.isEmpty()); + next_window -> setEnabled(!windows.isEmpty()); + prev_window -> setEnabled(!windows.isEmpty()); - if (!fenetres.isEmpty()) menu_fenetres -> addSeparator(); - for (int i = 0 ; i < fenetres.size() ; ++ i) { - DiagramView *sv = qobject_cast(fenetres.at(i)); - QString sv_titre = sv -> windowTitle().left(sv -> windowTitle().length() - 3); - QAction *action = menu_fenetres -> addAction(sv_titre); - action -> setStatusTip(tr("Active la fen\352tre ") + sv_titre); + if (!windows.isEmpty()) windows_menu -> addSeparator(); + for (int i = 0 ; i < windows.size() ; ++ i) { + DiagramView *dv = qobject_cast(windows.at(i)); + QString dv_title = dv -> windowTitle().left(dv -> windowTitle().length() - 3); + QAction *action = windows_menu -> addAction(dv_title); + action -> setStatusTip(tr("Active la fen\352tre ") + dv_title); action -> setCheckable(true); - action -> setChecked(sv == currentDiagram()); + action -> setChecked(dv == currentDiagram()); connect(action, SIGNAL(triggered()), &windowMapper, SLOT(map())); - windowMapper.setMapping(action, sv); + windowMapper.setMapping(action, dv); } } diff --git a/qetdiagrameditor.h b/qetdiagrameditor.h index 4cc57d641..187b4f86e 100644 --- a/qetdiagrameditor.h +++ b/qetdiagrameditor.h @@ -36,31 +36,31 @@ class QETDiagramEditor : public QMainWindow { public slots: void toggleFullScreen(); - void aPropos(); - void dialog_print(); - void dialog_export(); - bool dialogue_enregistrer_sous(); - bool enregistrer(); - bool nouveau(); - bool ouvrir(); - bool fermer(); + void aboutQET(); + void printDialog(); + void exportDialog(); + bool saveAsDialog(); + bool save(); + bool newDiagram(); + bool openDiagram(); + bool closeDiagram(); void slot_editInfos(); - void slot_couper(); - void slot_copier(); - void slot_coller(); - void slot_zoomPlus(); - void slot_zoomMoins(); + void slot_cut(); + void slot_copy(); + void slot_paste(); + void slot_zoomIn(); + void slot_zoomOut(); void slot_zoomFit(); void slot_zoomReset(); void slot_selectAll(); void slot_selectNothing(); void slot_selectInvert(); - void slot_supprimer(); - void slot_pivoter(); + void slot_delete(); + void slot_rotate(); void slot_setSelectionMode(); void slot_setVisualisationMode(); void slot_updateActions(); - void slot_updateMenuFenetres(); + void slot_updateWindowsMenu(); void slot_addColumn(); void slot_removeColumn(); void slot_expand(); @@ -71,46 +71,44 @@ class QETDiagramEditor : public QMainWindow { // Actions faisables au travers de menus dans l'application QElectroTech QAction *mode_selection; QAction *mode_visualise; - QAction *nouveau_fichier; - QAction *ouvrir_fichier; - QAction *fermer_fichier; - QAction *enr_fichier; - QAction *enr_fichier_sous; - QAction *importer; - QAction *exporter; - QAction *imprimer; - QAction *quitter_qet; - QAction *annuler; - QAction *refaire; - QAction *couper; - QAction *copier; - QAction *coller; - QAction *sel_tout; - QAction *sel_rien; - QAction *sel_inverse; - QAction *supprimer; - QAction *selectionner; - QAction *pivoter; + QAction *new_file; + QAction *open_file; + QAction *close_file; + QAction *save_file; + QAction *save_file_sous; + QAction *import_diagram; + QAction *export_diagram; + QAction *print; + QAction *quit_editor; + QAction *undo; + QAction *redo; + QAction *cut; + QAction *copy; + QAction *paste; + QAction *select_all; + QAction *select_nothing; + QAction *select_invert; + QAction *delete_selection; + QAction *rotate_selection; QAction *infos_diagram; QAction *add_column; QAction *remove_column; QAction *expand_diagram; QAction *shrink_diagram; - QAction *poser_fil; - QAction *zoom_avant; - QAction *zoom_arriere; - QAction *zoom_adapte; + QAction *zoom_in; + QAction *zoom_out; + QAction *zoom_fit; QAction *zoom_reset; - QAction *a_propos_de_qet; - QAction *a_propos_de_qt; - QAction *configurer; - QAction *entrer_pe; - QAction *sortir_pe; - QAction *f_mosaique; - QAction *f_cascade; - QAction *f_reorganise; - QAction *f_prec; - QAction *f_suiv; + QAction *about_qet; + QAction *about_qt; + QAction *configure; + QAction *fullscreen_on; + QAction *fullscreen_off; + QAction *tile_window; + QAction *cascade_window; + QAction *arrange_window; + QAction *prev_window; + QAction *next_window; private: QWorkspace workspace; @@ -119,7 +117,7 @@ class QETDiagramEditor : public QMainWindow { QDockWidget *qdw_pa; /// Panel d'Appareils ElementsPanelWidget *pa; - QMenu *menu_fenetres; + QMenu *windows_menu; QToolBar *barre_outils; QUndoGroup undo_group; };