From 5935ffddcf38f1b2bba1c51a1314dac3689878c9 Mon Sep 17 00:00:00 2001 From: xavierqet Date: Fri, 21 Sep 2007 12:35:28 +0000 Subject: [PATCH] Classe QETApp renommee en QETDiagramEditor git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@127 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- diagram.cpp | 2 +- diagram.h | 2 +- editor/qetelementeditor.cpp | 6 +- element.cpp | 2 +- elementscategorieslist.cpp | 4 +- elementspanel.cpp | 4 +- elementspanel.h | 2 +- lang/qet_en.qm | Bin 40415 -> 24414 bytes lang/qet_en.ts | 2 +- main.cpp | 11 ++-- qelectrotech.pro | 24 +++---- qetapp.cpp => qetdiagrameditor.cpp | 102 ++++++++++++++--------------- qetapp.h => qetdiagrameditor.h | 12 ++-- 13 files changed, 87 insertions(+), 86 deletions(-) rename qetapp.cpp => qetdiagrameditor.cpp (94%) rename qetapp.h => qetdiagrameditor.h (93%) diff --git a/diagram.cpp b/diagram.cpp index 3df1d2902..3db72db4d 100644 --- a/diagram.cpp +++ b/diagram.cpp @@ -302,7 +302,7 @@ bool Diagram::fromXml(QDomDocument &document, QPointF position, bool consider_in // cree un element dont le type correspond à l'id type QString type_id = e.attribute("type"); - QString chemin_fichier = QETApp::realPath(type_id); + QString chemin_fichier = QETDiagramEditor::realPath(type_id); CustomElement *nvel_elmt = new CustomElement(chemin_fichier); if (nvel_elmt -> isNull()) { QString debug_message = QString("Le chargement de la description de l'element %1 a echoue avec le code d'erreur %2").arg(chemin_fichier).arg(nvel_elmt -> etat()); diff --git a/diagram.h b/diagram.h index 039980063..4c58f1845 100644 --- a/diagram.h +++ b/diagram.h @@ -5,7 +5,7 @@ #define MARGIN 5.0 #include #include -#include "qetapp.h" +#include "qetdiagrameditor.h" #include "borderinset.h" class Element; class Terminal; diff --git a/editor/qetelementeditor.cpp b/editor/qetelementeditor.cpp index 464875fbc..df7b9cc0c 100644 --- a/editor/qetelementeditor.cpp +++ b/editor/qetelementeditor.cpp @@ -3,7 +3,7 @@ #include "elementview.h" #include "customelementpart.h" #include "newelementwizard.h" -#include "qetapp.h" +#include "qetdiagrameditor.h" QETElementEditor::QETElementEditor(QWidget *parent) : QMainWindow(parent), @@ -388,7 +388,7 @@ void QETElementEditor::slot_open() { QString user_filename = QFileDialog::getOpenFileName( this, tr("Ouvrir un fichier"), - QETApp::customElementsDir(), + QETDiagramEditor::customElementsDir(), tr("\311l\351ments QElectroTech (*.elmt);;Fichiers XML (*.xml);;Tous les fichiers (*)") ); if (user_filename == "") return; @@ -411,7 +411,7 @@ bool QETElementEditor::slot_saveAs() { QString fn = QFileDialog::getSaveFileName( this, tr("Enregistrer sous"), - QETApp::customElementsDir(), + QETDiagramEditor::customElementsDir(), tr("\311l\351ments QElectroTech (*.elmt)") ); // si aucun nom n'est entre, renvoie faux. diff --git a/element.cpp b/element.cpp index 1c52995b4..3d8b3e0c5 100644 --- a/element.cpp +++ b/element.cpp @@ -380,7 +380,7 @@ QDomElement Element::toXml(QDomDocument &document, QHash &table // type QString chemin_elmt = typeId(); - QString type_elmt = QETApp::symbolicPath(chemin_elmt); + QString type_elmt = QETDiagramEditor::symbolicPath(chemin_elmt); element.setAttribute("type", type_elmt); // position, selection et orientation diff --git a/elementscategorieslist.cpp b/elementscategorieslist.cpp index 29a7603b2..d2aecda4a 100644 --- a/elementscategorieslist.cpp +++ b/elementscategorieslist.cpp @@ -1,7 +1,7 @@ #include #include "elementscategorieslist.h" #include "elementscategory.h" -#include "qetapp.h" +#include "qetdiagrameditor.h" /** Constructeur @@ -31,7 +31,7 @@ void ElementsCategoriesList::reload() { while (takeTopLevelItem(0)); // chargement des elements de la collection utilisateur - addDir(invisibleRootItem(), QETApp::customElementsDir(), tr("Collection utilisateur")); + addDir(invisibleRootItem(), QETDiagramEditor::customElementsDir(), tr("Collection utilisateur")); } /** diff --git a/elementspanel.cpp b/elementspanel.cpp index c0647b39f..7151dd7dd 100644 --- a/elementspanel.cpp +++ b/elementspanel.cpp @@ -177,10 +177,10 @@ void ElementsPanel::reload() { while (takeTopLevelItem(0)); // chargement des elements de la collection QET - addDir(invisibleRootItem(), QETApp::commonElementsDir(), tr("Collection QET")); + addDir(invisibleRootItem(), QETDiagramEditor::commonElementsDir(), tr("Collection QET")); // chargement des elements de la collection utilisateur - addDir(invisibleRootItem(), QETApp::customElementsDir(), tr("Collection utilisateur")); + addDir(invisibleRootItem(), QETDiagramEditor::customElementsDir(), tr("Collection utilisateur")); } void ElementsPanel::editCategory() { diff --git a/elementspanel.h b/elementspanel.h index 4af587107..cc4b71495 100644 --- a/elementspanel.h +++ b/elementspanel.h @@ -1,7 +1,7 @@ #ifndef PANELAPPAREILS_H #define PANELAPPAREILS_H #include -#include "qetapp.h" +#include "qetdiagrameditor.h" /** Cette classe represente le panel d'appareils (en tant qu'element graphique) dans lequel l'utilisateur choisit les composants de diff --git a/lang/qet_en.qm b/lang/qet_en.qm index cfb165b6cf732b7c50157e27706b34a2589c1eb3..0e9859c48abfcc21425eb1d69737d42ecafbb297 100644 GIT binary patch literal 24414 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 LT!WrfR#g0d-~q6t diff --git a/lang/qet_en.ts b/lang/qet_en.ts index a09a6a180..cea758e2e 100644 --- a/lang/qet_en.ts +++ b/lang/qet_en.ts @@ -1289,7 +1289,7 @@ Please check rights of the directory - QETApp + QETDiagramEditor Active / désactive l'antialiasing pour le rendu du schéma courant diff --git a/main.cpp b/main.cpp index 11238eece..b78e1fe55 100644 --- a/main.cpp +++ b/main.cpp @@ -1,6 +1,6 @@ #include #include -#include "qetapp.h" +#include "qetdiagrameditor.h" /** Fonction principale du programme QElectroTech @@ -10,23 +10,24 @@ int main(int argc, char **argv) { // Creation de l'application QApplication app(argc, argv); + app.setQuitOnLastWindowClosed(false); QString system_language = QLocale::system().name().left(2); // charge les eventuelles traductions pour la lib Qt QTranslator qtTranslator; - qtTranslator.load("qt_" + system_language, QETApp::languagesPath()); + qtTranslator.load("qt_" + system_language, QETDiagramEditor::languagesPath()); app.installTranslator(&qtTranslator); // determine la langue a utiliser pour l'application QTranslator trad; if (system_language != "fr") { // utilisation de la version anglaise par defaut - if (!trad.load("qet_" + system_language, QETApp::languagesPath())) trad.load("qet_en", QETApp::languagesPath()); + if (!trad.load("qet_" + system_language, QETDiagramEditor::languagesPath())) trad.load("qet_en", QETDiagramEditor::languagesPath()); app.installTranslator(&trad); } - // Creation et affichage du QETApp : QElectroTechApplication - (new QETApp()) -> show(); + // Creation et affichage d'un editeur de schema + (new QETDiagramEditor()) -> show(); // Execution de l'application return(app.exec()); } diff --git a/qelectrotech.pro b/qelectrotech.pro index 1706316aa..0296c9012 100644 --- a/qelectrotech.pro +++ b/qelectrotech.pro @@ -1,5 +1,5 @@ ###################################################################### -# Automatically generated by qmake (2.01a) dim. avr. 29 22:04:08 2007 +# Automatically generated by qmake (2.01a) ven. sept. 21 14:11:20 2007 ###################################################################### TEMPLATE = app @@ -11,14 +11,18 @@ INCLUDEPATH += . editor HEADERS += aboutqet.h \ borderinset.h \ conducer.h \ + conducerprofile.h \ conducersegment.h \ + conducersegmentprofile.h \ customelement.h \ diagram.h \ diagramview.h \ element.h \ + elementdeleter.h \ elementscategorieslist.h \ elementscategorieswidget.h \ elementscategory.h \ + elementscategorydeleter.h \ elementscategoryeditor.h \ elementspanel.h \ elementspanelwidget.h \ @@ -32,7 +36,7 @@ HEADERS += aboutqet.h \ orientationset.h \ orientationsetwidget.h \ qet.h \ - qetapp.h \ + qetdiagrameditor.h \ qgimanager.h \ terminal.h \ editor/arceditor.h \ @@ -58,22 +62,21 @@ HEADERS += aboutqet.h \ editor/styleeditor.h \ editor/terminaleditor.h \ editor/texteditor.h \ - editor/textfieldeditor.h \ - elementscategorydeleter.h \ - elementdeleter.h \ - conducersegmentprofile.h \ - conducerprofile.h + editor/textfieldeditor.h SOURCES += aboutqet.cpp \ borderinset.cpp \ conducer.cpp \ + conducerprofile.cpp \ conducersegment.cpp \ customelement.cpp \ diagram.cpp \ diagramview.cpp \ element.cpp \ + elementdeleter.cpp \ elementscategorieslist.cpp \ elementscategorieswidget.cpp \ elementscategory.cpp \ + elementscategorydeleter.cpp \ elementscategoryeditor.cpp \ elementspanel.cpp \ elementspanelwidget.cpp \ @@ -87,7 +90,7 @@ SOURCES += aboutqet.cpp \ newelementwizard.cpp \ orientationset.cpp \ orientationsetwidget.cpp \ - qetapp.cpp \ + qetdiagrameditor.cpp \ qgimanager.cpp \ terminal.cpp \ editor/arceditor.cpp \ @@ -114,10 +117,7 @@ SOURCES += aboutqet.cpp \ editor/styleeditor.cpp \ editor/terminaleditor.cpp \ editor/texteditor.cpp \ - editor/textfieldeditor.cpp \ - elementscategorydeleter.cpp \ - elementdeleter.cpp \ - conducerprofile.cpp + editor/textfieldeditor.cpp RESOURCES += qelectrotech.qrc TRANSLATIONS += lang/qet_en.ts lang/qt_fr.ts QT += xml diff --git a/qetapp.cpp b/qetdiagrameditor.cpp similarity index 94% rename from qetapp.cpp rename to qetdiagrameditor.cpp index 3bca3b57d..4bb83330c 100644 --- a/qetapp.cpp +++ b/qetdiagrameditor.cpp @@ -1,4 +1,4 @@ -#include "qetapp.h" +#include "qetdiagrameditor.h" #include "diagramview.h" #include "elementspanelwidget.h" #include "aboutqet.h" @@ -7,7 +7,7 @@ constructeur @param parent le widget parent de la fenetre principale */ -QETApp::QETApp(QWidget *parent) : QMainWindow(parent) { +QETDiagramEditor::QETDiagramEditor(QWidget *parent) : QMainWindow(parent) { // cree les dossiers de configuration si necessaire QDir config_dir(configDir()); @@ -99,14 +99,14 @@ QETApp::QETApp(QWidget *parent) : QMainWindow(parent) { /** Destructeur */ -QETApp::~QETApp() { +QETDiagramEditor::~QETDiagramEditor() { } /** Gere les evenements relatifs au QSystemTrayIcon @param raison un entier representant l'evenement survenu sur le systray */ -void QETApp::systray(QSystemTrayIcon::ActivationReason reason) { +void QETDiagramEditor::systray(QSystemTrayIcon::ActivationReason reason) { if (!QSystemTrayIcon::isSystemTrayAvailable()) return; switch(reason) { case QSystemTrayIcon::Context: @@ -127,7 +127,7 @@ void QETApp::systray(QSystemTrayIcon::ActivationReason reason) { /** Reduit l'application dans le systray */ -void QETApp::systrayReduce() { +void QETDiagramEditor::systrayReduce() { // on sauvegarde la position et les dimensions de l'application wg = saveGeometry(); // on cache l'application @@ -140,7 +140,7 @@ void QETApp::systrayReduce() { /** Restaure l'application reduite dans le systray */ -void QETApp::systrayRestore() { +void QETDiagramEditor::systrayRestore() { // on restaure la position et les dimensions de l'application restoreGeometry(wg); // on affiche l'application @@ -154,7 +154,7 @@ void QETApp::systrayRestore() { Permet de quitter l'application lors de la fermeture de la fenetre principale @param qce Le QCloseEvent correspondant a l'evenement de fermeture */ -void QETApp::closeEvent(QCloseEvent *qce) { +void QETDiagramEditor::closeEvent(QCloseEvent *qce) { quit(qce); } @@ -162,7 +162,7 @@ void QETApp::closeEvent(QCloseEvent *qce) { Gere la sortie de l'application @param e Le QCloseEvent correspondant a l'evenement de fermeture */ -void QETApp::quit(QCloseEvent *e) { +void QETDiagramEditor::quit(QCloseEvent *e) { // quitte directement s'il n'y a aucun schema ouvert bool peut_quitter = true; if (diagramEnCours()) { @@ -187,7 +187,7 @@ void QETApp::quit(QCloseEvent *e) { /** Fait passer la fenetre du mode plein ecran au mode normal et vice-versa */ -void QETApp::toggleFullScreen() { +void QETDiagramEditor::toggleFullScreen() { setWindowState(windowState() ^ Qt::WindowFullScreen); } @@ -196,9 +196,9 @@ void QETApp::toggleFullScreen() { Le dialogue en question est cree lors du premier appel de cette fonction. En consequence, sa premiere apparition n'est pas immediate. Par la suite, le dialogue n'a pas a etre recree et il apparait instantanement. Il est - detruit en meme temps que son parent (ici, la QETApp). + detruit en meme temps que son parent (ici, la QETDiagramEditor). */ -void QETApp::aPropos() { +void QETDiagramEditor::aPropos() { static AboutQET *apqet = new AboutQET(this); apqet -> exec(); } @@ -206,7 +206,7 @@ void QETApp::aPropos() { /** Mise en place des actions */ -void QETApp::actions() { +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); @@ -396,7 +396,7 @@ void QETApp::actions() { /** Mise en place des menus */ -void QETApp::menus() { +void QETDiagramEditor::menus() { QMenu *menu_fichier = menuBar() -> addMenu(tr("&Fichier")); QMenu *menu_edition = menuBar() -> addMenu(tr("&\311dition")); QMenu *menu_affichage = menuBar() -> addMenu(tr("Afficha&ge")); @@ -484,7 +484,7 @@ void QETApp::menus() { /** Mise en place de la barre d'outils */ -void QETApp::toolbar() { +void QETDiagramEditor::toolbar() { barre_outils = new QToolBar(tr("Outils"), this); // Modes selection / visualisation @@ -513,7 +513,7 @@ void QETApp::toolbar() { /** Imprime le schema courant */ -void QETApp::dialog_print() { +void QETDiagramEditor::dialog_print() { DiagramView *sv = diagramEnCours(); if (!sv) return; sv -> dialogPrint(); @@ -522,7 +522,7 @@ void QETApp::dialog_print() { /** Gere l'export de schema sous forme d'image */ -void QETApp::dialog_export() { +void QETDiagramEditor::dialog_export() { DiagramView *sv = diagramEnCours(); if (!sv) return; sv -> dialogExport(); @@ -533,7 +533,7 @@ void QETApp::dialog_export() { 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 QETApp::enregistrer() { +bool QETDiagramEditor::enregistrer() { if (!diagramEnCours()) return(false); return(diagramEnCours() -> enregistrer()); } @@ -547,7 +547,7 @@ bool QETApp::enregistrer() { @return true si l'enregistrement a reussi, false sinon @todo detecter le chemin du bureau automatiquement */ -bool QETApp::dialogue_enregistrer_sous() { +bool QETDiagramEditor::dialogue_enregistrer_sous() { if (!diagramEnCours()) return(false); return(diagramEnCours() -> enregistrer_sous()); } @@ -556,7 +556,7 @@ bool QETApp::dialogue_enregistrer_sous() { 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 QETApp::nouveau() { +bool QETDiagramEditor::nouveau() { addDiagramView(new DiagramView(this)); return(true); } @@ -565,7 +565,7 @@ bool QETApp::nouveau() { Cette fonction demande un nom de fichier a ouvrir a l'utilisateur @return true si l'ouverture a reussi, false sinon */ -bool QETApp::ouvrir() { +bool QETDiagramEditor::ouvrir() { // demande un nom de fichier a ouvrir a l'utilisateur QString nom_fichier = QFileDialog::getOpenFileName( this, @@ -610,7 +610,7 @@ bool QETApp::ouvrir() { @return true si la fermeture du fichier a reussi, false sinon @todo detecter les modifications et ne demander que si besoin est */ -bool QETApp::fermer() { +bool QETDiagramEditor::fermer() { DiagramView *sv = diagramEnCours(); if (!sv) return(false); return(sv -> close()); @@ -619,112 +619,112 @@ bool QETApp::fermer() { /** @return Le DiagramView qui a le focus dans l'interface MDI */ -DiagramView *QETApp::diagramEnCours() const { +DiagramView *QETDiagramEditor::diagramEnCours() const { return(qobject_cast(workspace.activeWindow())); } /** Effectue l'action "couper" sur le schema en cours */ -void QETApp::slot_couper() { +void QETDiagramEditor::slot_couper() { if(diagramEnCours()) diagramEnCours() -> couper(); } /** Effectue l'action "copier" sur le diagram en cours */ -void QETApp::slot_copier() { +void QETDiagramEditor::slot_copier() { if(diagramEnCours()) diagramEnCours() -> copier(); } /** Effectue l'action "coller" sur le schema en cours */ -void QETApp::slot_coller() { +void QETDiagramEditor::slot_coller() { if(diagramEnCours()) diagramEnCours() -> coller(); } /** Effectue l'action "zoom avant" sur le diagram en cours */ -void QETApp::slot_zoomPlus() { +void QETDiagramEditor::slot_zoomPlus() { if(diagramEnCours()) diagramEnCours() -> zoomPlus(); } /** Effectue l'action "zoom arriere" sur le schema en cours */ -void QETApp::slot_zoomMoins() { +void QETDiagramEditor::slot_zoomMoins() { if(diagramEnCours()) diagramEnCours() -> zoomMoins(); } /** Effectue l'action "zoom arriere" sur le diagram en cours */ -void QETApp::slot_zoomFit() { +void QETDiagramEditor::slot_zoomFit() { if(diagramEnCours()) diagramEnCours() -> zoomFit(); } /** Effectue l'action "zoom par defaut" sur le schema en cours */ -void QETApp::slot_zoomReset() { +void QETDiagramEditor::slot_zoomReset() { if(diagramEnCours()) diagramEnCours() -> zoomReset(); } /** Effectue l'action "selectionner tout" sur le schema en cours */ -void QETApp::slot_selectAll() { +void QETDiagramEditor::slot_selectAll() { if(diagramEnCours()) diagramEnCours() -> selectAll(); } /** Effectue l'action "deselectionenr tout" sur le schema en cours */ -void QETApp::slot_selectNothing() { +void QETDiagramEditor::slot_selectNothing() { if(diagramEnCours()) diagramEnCours() -> selectNothing(); } /** Effectue l'action "inverser la selection" sur le schema en cours */ -void QETApp::slot_selectInvert() { +void QETDiagramEditor::slot_selectInvert() { if(diagramEnCours()) diagramEnCours() -> selectInvert(); } /** Effectue l'action "supprimer" sur le schema en cours */ -void QETApp::slot_supprimer() { +void QETDiagramEditor::slot_supprimer() { if(diagramEnCours()) diagramEnCours() -> supprimer(); } /** Effectue l'action "pivoter" sur le schema en cours */ -void QETApp::slot_pivoter() { +void QETDiagramEditor::slot_pivoter() { if(diagramEnCours()) diagramEnCours() -> pivoter(); } /** Effectue l'action "mode selection" sur le schema en cours */ -void QETApp::slot_setSelectionMode() { +void QETDiagramEditor::slot_setSelectionMode() { if(diagramEnCours()) diagramEnCours() -> setSelectionMode(); } /** Effectue l'action "mode visualisation" sur le schema en cours */ -void QETApp::slot_setVisualisationMode() { +void QETDiagramEditor::slot_setVisualisationMode() { if(diagramEnCours()) diagramEnCours() -> setVisualisationMode(); } /** gere les actions ayant besoin d'un document ouvert */ -void QETApp::slot_updateActions() { +void QETDiagramEditor::slot_updateActions() { DiagramView *sv = diagramEnCours(); bool document_ouvert = (sv != 0); @@ -795,7 +795,7 @@ void QETApp::slot_updateActions() { Ajoute un schema dans l'espace de travail @param sv L'objet DiagramView a ajouter a l'espace de travail */ -void QETApp::addDiagramView(DiagramView *sv) { +void QETDiagramEditor::addDiagramView(DiagramView *sv) { if (!sv) return; // on maximise la nouvelle fenetre si la fenetre en cours est inexistante ou bien maximisee @@ -815,7 +815,7 @@ void QETApp::addDiagramView(DiagramView *sv) { /** met a jour le menu "Fenetres" */ -void QETApp::slot_updateMenuFenetres() { +void QETDiagramEditor::slot_updateMenuFenetres() { // nettoyage du menu foreach(QAction *a, menu_fenetres -> actions()) menu_fenetres -> removeAction(a); @@ -861,7 +861,7 @@ void QETApp::slot_updateMenuFenetres() { lequel QET doit chercher les definitions XML des elements de la collection QET. @return Le chemin du dossier des elements communs */ -QString QETApp::commonElementsDir() { +QString QETDiagramEditor::commonElementsDir() { return(QDir::current().path() + "/elements/"); } @@ -871,8 +871,8 @@ QString QETApp::commonElementsDir() { l'utilisateur. @return Le chemin du dossier des elements persos */ -QString QETApp::customElementsDir() { - return(QETApp::configDir() + "elements/"); +QString QETDiagramEditor::customElementsDir() { + return(QETDiagramEditor::configDir() + "elements/"); } /** @@ -883,7 +883,7 @@ QString QETApp::customElementsDir() { ~/.qet sous les systemes type UNIX. @return Le chemin du dossier de configuration de QElectroTech */ -QString QETApp::configDir() { +QString QETDiagramEditor::configDir() { #ifdef Q_OS_WIN32 return(QDir::homePath() + "/Application Data/qet/"); #else @@ -898,7 +898,7 @@ QString QETApp::configDir() { @return Une chaine de caracteres vide en cas d'erreur ou le chemin absolu du fichier *.elmt. */ -QString QETApp::realPath(QString &sym_path) { +QString QETDiagramEditor::realPath(QString &sym_path) { QString directory; if (sym_path.startsWith("common://")) { directory = commonElementsDir(); @@ -915,7 +915,7 @@ QString QETApp::realPath(QString &sym_path) { @return Une chaine de caracteres vide en cas d'erreur ou le chemin symbolique designant l'element. */ -QString QETApp::symbolicPath(QString &real_path) { +QString QETDiagramEditor::symbolicPath(QString &real_path) { // recupere les dossier common et custom QString commond = commonElementsDir(); QString customd = customElementsDir(); @@ -932,14 +932,14 @@ QString QETApp::symbolicPath(QString &real_path) { /** @return Le chemin du dossier contenant les fichiers de langue */ -QString QETApp::languagesPath() { +QString QETDiagramEditor::languagesPath() { return(QDir::current().path() + "/lang/"); } /** Edite les informations du schema en cours */ -void QETApp::slot_editInfos() { +void QETDiagramEditor::slot_editInfos() { DiagramView *sv = diagramEnCours(); if (!sv) return; sv -> dialogEditInfos(); @@ -948,7 +948,7 @@ void QETApp::slot_editInfos() { /** Ajoute une colonne au schema en cours */ -void QETApp::slot_addColumn() { +void QETDiagramEditor::slot_addColumn() { DiagramView *sv = diagramEnCours(); if (!sv) return; sv -> addColumn(); @@ -957,7 +957,7 @@ void QETApp::slot_addColumn() { /** Enleve une colonne au schema en cours */ -void QETApp::slot_removeColumn() { +void QETDiagramEditor::slot_removeColumn() { DiagramView *sv = diagramEnCours(); if (!sv) return; sv -> removeColumn(); @@ -966,7 +966,7 @@ void QETApp::slot_removeColumn() { /** Allonge le schema en cours en hauteur */ -void QETApp::slot_expand() { +void QETDiagramEditor::slot_expand() { DiagramView *sv = diagramEnCours(); if (!sv) return; sv -> expand(); @@ -975,7 +975,7 @@ void QETApp::slot_expand() { /** Retrecit le schema en cours en hauteur */ -void QETApp::slot_shrink() { +void QETDiagramEditor::slot_shrink() { DiagramView *sv = diagramEnCours(); if (!sv) return; sv -> shrink(); diff --git a/qetapp.h b/qetdiagrameditor.h similarity index 93% rename from qetapp.h rename to qetdiagrameditor.h index d485007dc..938c8e3d4 100644 --- a/qetapp.h +++ b/qetdiagrameditor.h @@ -1,5 +1,5 @@ -#ifndef QETAPP_H -#define QETAPP_H +#ifndef QET_DIAGRAM_EDITOR_H +#define QET_DIAGRAM_EDITOR_H #include class DiagramView; class ElementsPanelWidget; @@ -10,16 +10,16 @@ class ElementsPanelWidget; « Diagram » en guise de widget central et un « Panel d'Appareils » en guise de widget « Dock ». */ -class QETApp : public QMainWindow { +class QETDiagramEditor : public QMainWindow { Q_OBJECT // constructeurs, destructeur public: - QETApp(QWidget * = 0); - virtual ~QETApp(); + QETDiagramEditor(QWidget * = 0); + virtual ~QETDiagramEditor(); private: - QETApp(const QETApp &); + QETDiagramEditor(const QETDiagramEditor &); // methodes public: