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";
}