diff --git a/diagram.cpp b/diagram.cpp index 3db72db4d..693154446 100644 --- a/diagram.cpp +++ b/diagram.cpp @@ -1,4 +1,5 @@ #include +#include "qetapp.h" #include "conducer.h" #include "customelement.h" #include "diagram.h" @@ -302,7 +303,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 = QETDiagramEditor::realPath(type_id); + QString chemin_fichier = QETApp::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/editor/qetelementeditor.cpp b/editor/qetelementeditor.cpp index df7b9cc0c..89ebabab9 100644 --- a/editor/qetelementeditor.cpp +++ b/editor/qetelementeditor.cpp @@ -1,9 +1,9 @@ #include "qetelementeditor.h" +#include "qetapp.h" #include "elementscene.h" #include "elementview.h" #include "customelementpart.h" #include "newelementwizard.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"), - QETDiagramEditor::customElementsDir(), + QETApp::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"), - QETDiagramEditor::customElementsDir(), + QETApp::customElementsDir(), tr("\311l\351ments QElectroTech (*.elmt)") ); // si aucun nom n'est entre, renvoie faux. diff --git a/element.cpp b/element.cpp index 3d8b3e0c5..ce04e448c 100644 --- a/element.cpp +++ b/element.cpp @@ -1,4 +1,5 @@ #include "element.h" +#include "qetapp.h" #include "diagram.h" #include "conducer.h" #include "elementtextitem.h" @@ -380,7 +381,7 @@ QDomElement Element::toXml(QDomDocument &document, QHash &table // type QString chemin_elmt = typeId(); - QString type_elmt = QETDiagramEditor::symbolicPath(chemin_elmt); + QString type_elmt = QETApp::symbolicPath(chemin_elmt); element.setAttribute("type", type_elmt); // position, selection et orientation diff --git a/elementscategorieslist.cpp b/elementscategorieslist.cpp index d2aecda4a..e228463cb 100644 --- a/elementscategorieslist.cpp +++ b/elementscategorieslist.cpp @@ -1,5 +1,6 @@ #include #include "elementscategorieslist.h" +#include "qetapp.h" #include "elementscategory.h" #include "qetdiagrameditor.h" @@ -31,7 +32,7 @@ void ElementsCategoriesList::reload() { while (takeTopLevelItem(0)); // chargement des elements de la collection utilisateur - addDir(invisibleRootItem(), QETDiagramEditor::customElementsDir(), tr("Collection utilisateur")); + addDir(invisibleRootItem(), QETApp::customElementsDir(), tr("Collection utilisateur")); } /** diff --git a/elementspanel.cpp b/elementspanel.cpp index 7151dd7dd..5706a11b8 100644 --- a/elementspanel.cpp +++ b/elementspanel.cpp @@ -1,4 +1,5 @@ #include "elementspanel.h" +#include "qetapp.h" #include "elementscategory.h" #include "elementscategoryeditor.h" #include "elementscategorydeleter.h" @@ -177,10 +178,10 @@ void ElementsPanel::reload() { while (takeTopLevelItem(0)); // chargement des elements de la collection QET - addDir(invisibleRootItem(), QETDiagramEditor::commonElementsDir(), tr("Collection QET")); + addDir(invisibleRootItem(), QETApp::commonElementsDir(), tr("Collection QET")); // chargement des elements de la collection utilisateur - addDir(invisibleRootItem(), QETDiagramEditor::customElementsDir(), tr("Collection utilisateur")); + addDir(invisibleRootItem(), QETApp::customElementsDir(), tr("Collection utilisateur")); } void ElementsPanel::editCategory() { diff --git a/main.cpp b/main.cpp index b78e1fe55..cf684f775 100644 --- a/main.cpp +++ b/main.cpp @@ -1,6 +1,4 @@ -#include -#include -#include "qetdiagrameditor.h" +#include "qetapp.h" /** Fonction principale du programme QElectroTech @@ -9,25 +7,11 @@ */ 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, 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, QETDiagramEditor::languagesPath())) trad.load("qet_en", QETDiagramEditor::languagesPath()); - app.installTranslator(&trad); - } + QETApp app(argc, argv); // 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 0296c9012..e6f747522 100644 --- a/qelectrotech.pro +++ b/qelectrotech.pro @@ -36,6 +36,7 @@ HEADERS += aboutqet.h \ orientationset.h \ orientationsetwidget.h \ qet.h \ + qetapp.h \ qetdiagrameditor.h \ qgimanager.h \ terminal.h \ @@ -90,6 +91,7 @@ SOURCES += aboutqet.cpp \ newelementwizard.cpp \ orientationset.cpp \ orientationsetwidget.cpp \ + qetapp.cpp \ qetdiagrameditor.cpp \ qgimanager.cpp \ terminal.cpp \ diff --git a/qetdiagrameditor.cpp b/qetdiagrameditor.cpp index 4bb83330c..3a9f0b485 100644 --- a/qetdiagrameditor.cpp +++ b/qetdiagrameditor.cpp @@ -1,4 +1,5 @@ #include "qetdiagrameditor.h" +#include "qetapp.h" #include "diagramview.h" #include "elementspanelwidget.h" #include "aboutqet.h" @@ -10,11 +11,11 @@ QETDiagramEditor::QETDiagramEditor(QWidget *parent) : QMainWindow(parent) { // cree les dossiers de configuration si necessaire - QDir config_dir(configDir()); - if (!config_dir.exists()) config_dir.mkpath(configDir()); + QDir config_dir(QETApp::configDir()); + if (!config_dir.exists()) config_dir.mkpath(QETApp::configDir()); - QDir custom_elements_dir(customElementsDir()); - if (!custom_elements_dir.exists()) custom_elements_dir.mkpath(customElementsDir()); + QDir custom_elements_dir(QETApp::customElementsDir()); + if (!custom_elements_dir.exists()) custom_elements_dir.mkpath(QETApp::customElementsDir()); // mise en place de l'interface MDI au centre de l'application setCentralWidget(&workspace); @@ -856,86 +857,6 @@ void QETDiagramEditor::slot_updateMenuFenetres() { } } -/** - Renvoie le dossier des elements communs, c-a-d le chemin du dossier dans - lequel QET doit chercher les definitions XML des elements de la collection QET. - @return Le chemin du dossier des elements communs -*/ -QString QETDiagramEditor::commonElementsDir() { - return(QDir::current().path() + "/elements/"); -} - -/** - Renvoie le dossier des elements de l'utilisateur, c-a-d le chemin du dossier - dans lequel QET chercher les definitions XML des elements propres a - l'utilisateur. - @return Le chemin du dossier des elements persos -*/ -QString QETDiagramEditor::customElementsDir() { - return(QETDiagramEditor::configDir() + "elements/"); -} - -/** - Renvoie le dossier de configuration de QET, c-a-d le chemin du dossier dans - lequel QET lira les informations de configuration et de personnalisation - propres a l'utilisateur courant. Ce dossier est generalement - C:\Documents And Settings\utilisateur\Application Data\qet sous Windows et - ~/.qet sous les systemes type UNIX. - @return Le chemin du dossier de configuration de QElectroTech -*/ -QString QETDiagramEditor::configDir() { -#ifdef Q_OS_WIN32 - return(QDir::homePath() + "/Application Data/qet/"); -#else - return(QDir::homePath() + "/.qet/"); -#endif -} - -/** - Permet de connaitre le chemin absolu du fichier *.elmt correspondant a un - chemin symbolique (du type custom://outils_pervers/sado_maso/contact_bizarre) - @param sym_path Chaine de caracteres representant le chemin absolu du fichier - @return Une chaine de caracteres vide en cas d'erreur ou le chemin absolu du - fichier *.elmt. -*/ -QString QETDiagramEditor::realPath(QString &sym_path) { - QString directory; - if (sym_path.startsWith("common://")) { - directory = commonElementsDir(); - } else if (sym_path.startsWith("custom://")) { - directory = customElementsDir(); - } else return(QString()); - return(directory + QDir::toNativeSeparators(sym_path.right(sym_path.length() - 9))); -} - -/** - Construit le chemin symbolique (du type custom://outils_pervers/sado_maso/ - contact_bizarre) correspondant a un fichier. - @param real_pathChaine de caracteres representant le chemin symbolique du fichier - @return Une chaine de caracteres vide en cas d'erreur ou le chemin - symbolique designant l'element. -*/ -QString QETDiagramEditor::symbolicPath(QString &real_path) { - // recupere les dossier common et custom - QString commond = commonElementsDir(); - QString customd = customElementsDir(); - QString chemin; - // analyse le chemin de fichier passe en parametre - if (real_path.startsWith(commond)) { - chemin = "common://" + real_path.right(real_path.length() - commond.length()); - } else if (real_path.startsWith(customd)) { - chemin = "custom://" + real_path.right(real_path.length() - customd.length()); - } else chemin = QString(); - return(chemin); -} - -/** - @return Le chemin du dossier contenant les fichiers de langue -*/ -QString QETDiagramEditor::languagesPath() { - return(QDir::current().path() + "/lang/"); -} - /** Edite les informations du schema en cours */ diff --git a/qetdiagrameditor.h b/qetdiagrameditor.h index 938c8e3d4..68997bea6 100644 --- a/qetdiagrameditor.h +++ b/qetdiagrameditor.h @@ -25,12 +25,6 @@ class QETDiagramEditor : public QMainWindow { public: void closeEvent(QCloseEvent *); void addDiagramView(DiagramView *); - static QString commonElementsDir(); - static QString customElementsDir(); - static QString configDir(); - static QString languagesPath(); - static QString realPath(QString &); - static QString symbolicPath(QString &); protected: void actions();