diff --git a/elements/contacts/qet_directory b/elements/contacts/qet_directory index 0c0adc670..3d49795c7 100644 --- a/elements/contacts/qet_directory +++ b/elements/contacts/qet_directory @@ -1 +1,6 @@ -Contacts + + + Contacts + Contacts + + diff --git a/elements/moteurs/qet_directory b/elements/moteurs/qet_directory index 8f68b96c5..775c34412 100644 --- a/elements/moteurs/qet_directory +++ b/elements/moteurs/qet_directory @@ -1 +1,6 @@ -Moteurs + + + Engines + Moteurs + + diff --git a/elements/semi_conducteurs/qet_directory b/elements/semi_conducteurs/qet_directory index 8c5a83ba3..011656bf7 100644 --- a/elements/semi_conducteurs/qet_directory +++ b/elements/semi_conducteurs/qet_directory @@ -1 +1,6 @@ -Semi conducteurs + + + Semiconductor + Semi-conducteurs + + diff --git a/elements/transformateurs/qet_directory b/elements/transformateurs/qet_directory index a79b3bd33..92d2472ba 100644 --- a/elements/transformateurs/qet_directory +++ b/elements/transformateurs/qet_directory @@ -1 +1,6 @@ -Transformateurs + + + Transformers + Transformateurs + + diff --git a/panelappareils.cpp b/panelappareils.cpp index f87019624..b62c731b5 100644 --- a/panelappareils.cpp +++ b/panelappareils.cpp @@ -103,22 +103,7 @@ void PanelAppareils::ajouterDossier(QTreeWidgetItem *qtwi_parent, QString adr_do adr_dossier = dossier.canonicalPath() + "/"; // recupere le nom de la categorie - QString nom_categorie = nom; - if (nom == QString()) { - QFile config_dossier(adr_dossier + "qet_directory"); - // verifie l'existence du fichier - if (config_dossier.exists()) { - // ouvre le fichier - if (config_dossier.open(QIODevice::ReadOnly | QIODevice::Text)) { - // lit la premiere ligne - char data[512]; - if (config_dossier.readLine(data, sizeof(data)) != -1) { - nom_categorie = QString(data).trimmed(); - } - } - } - if (nom_categorie == QString()) nom_categorie = dossier.dirName(); - } + QString nom_categorie = (nom != QString()) ? nom : categoryName(dossier); // creation du QTreeWidgetItem representant le dossier QTreeWidgetItem *qtwi_dossier = new QTreeWidgetItem(qtwi_parent, QStringList(nom_categorie)); @@ -159,3 +144,60 @@ void PanelAppareils::ajouterFichier(QTreeWidgetItem *qtwi_parent, QString fichie qtwi -> setIcon(0, QIcon(elmt_perso -> pixmap())); qtwi -> setData(0, 42, fichier); } + + +/** + Methode permettant d'obtenir le nom affichable d'une categorie etant donne + son chemin (dossier). + @param directory le chemin du dossier representant la categorie + @return Le nom affichable de la categorie +*/ +QString PanelAppareils::categoryName(QDir &directory) { + // en cas d'echec de la lecture du fichier de configuration + // "qet_directory", le nom du dossier est retourne + QString category_name = directory.dirName(); + // repere le chemin du fichier de configuration de la categorie + QFile directory_conf(directory.canonicalPath() + "/qet_directory"); + // verifie l'existence du fichier + if (directory_conf.exists()) { + // ouvre le fichier + if (directory_conf.open(QIODevice::ReadOnly | QIODevice::Text)) { + // recupere les deux premiers caracteres de la lcoale en cours du systeme + QString system_language = QLocale::system().name().left(2); + // lit le contenu du fichier dans un QDomDocument XML + QDomDocument document; + if (document.setContent(&directory_conf)) { + /* parcourt le document XML a la recherche d'un nom + par ordre de preference, on prendra : + - le nom dans la langue du systeme + - le nom en anglais + - le nom du dossier + */ + QDomElement root = document.documentElement(); + if (root.tagName() == "qet-directory") { + bool name_found = false; + // parcourt les "names" + for (QDomNode node = root.firstChild() ; !node.isNull() ; node = node.nextSibling()) { + QDomElement names = node.toElement(); + if (names.isNull() || names.tagName() != "names") continue; + // parcourt les "name" + for (QDomNode n = names.firstChild() ; !n.isNull() ; n = n.nextSibling()) { + QDomElement name = n.toElement(); + if (name.isNull() || name.tagName() != "name") continue; + if (name.attribute("lang") == system_language) { + category_name = name.text(); + name_found = true; + break; + } else if (name.attribute("lang") == "en") { + category_name = name.text(); + } + } + if (name_found) break; + } + } + } + directory_conf.close(); + } + } + return(category_name); +} diff --git a/panelappareils.h b/panelappareils.h index 799cc4c16..4e0b86540 100644 --- a/panelappareils.h +++ b/panelappareils.h @@ -11,6 +11,7 @@ Q_OBJECT public: PanelAppareils(QWidget * = 0); + static QString categoryName(QDir &); public slots: void dragMoveEvent(QDragMoveEvent *); void dropEvent(QDropEvent *); diff --git a/schema.cpp b/schema.cpp index e2e8b38fc..231433daa 100644 --- a/schema.cpp +++ b/schema.cpp @@ -283,6 +283,10 @@ bool Schema::fromXml(QDomDocument &document, QPointF position) { bool cia = ((Element *)p2 -> parentItem()) -> connexionsInternesAcceptees(); if (!cia) foreach(QGraphicsItem *item, p2 -> parentItem() -> children()) if (item == p1) peut_poser_conducteur = false; if (peut_poser_conducteur) new Conducteur(table_adr_id.value(id_p1), table_adr_id.value(id_p2), 0, this); + /*if (peut_poser_conducteur) { + Conducteur *nc = new Conducteur(table_adr_id.value(id_p1), table_adr_id.value(id_p2), 0, this); + nc -> setFlags(QGraphicsItem::ItemIsSelectable); + }*/ } } else qDebug() << "Le chargement du conducteur" << id_p1 << id_p2 << "a echoue"; }