mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-13 20:23:04 +02:00
La classe CustomElement utilise desormais la classe NamesList pour gerer ses noms
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@93 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
parent
8cb3499469
commit
0472392977
@ -94,33 +94,15 @@ CustomElement::CustomElement(QString &nom_fichier, QGraphicsItem *qgi, Diagram *
|
||||
t.setJoinStyle(Qt::MiterJoin);
|
||||
qp.setPen(t);
|
||||
|
||||
// recupere les deux premiers caracteres de la locale en cours du systeme
|
||||
QString system_language = QLocale::system().name().left(2);
|
||||
// extrait les noms de la definition XML
|
||||
names.fromXml(racine);
|
||||
|
||||
// au depart, le nom de l'element est celui du fichier le decrivant
|
||||
bool name_found = false;
|
||||
QString name_elmt = infos_file.baseName();
|
||||
|
||||
// parcours des enfants de la definition : noms et parties du dessin
|
||||
// parcours des enfants de la definition : parties du dessin
|
||||
int nb_elements_parses = 0;
|
||||
for (QDomNode node = racine.firstChild() ; !node.isNull() ; node = node.nextSibling()) {
|
||||
QDomElement elmts = node.toElement();
|
||||
if (elmts.isNull()) continue;
|
||||
if (elmts.tagName() == "names") {
|
||||
// gestion des noms de l'element
|
||||
if (name_found) continue;
|
||||
for (QDomNode n = node.firstChild() ; !n.isNull() ; n = n.nextSibling()) {
|
||||
QDomElement qde = n.toElement();
|
||||
if (qde.isNull() || qde.tagName() != "name" || !qde.hasAttribute("lang")) continue;
|
||||
if (qde.attribute("lang") == system_language) {
|
||||
name_elmt = qde.text();
|
||||
name_found = true;
|
||||
break;
|
||||
} else if (qde.attribute("lang") == "en") {
|
||||
name_elmt = qde.text();
|
||||
}
|
||||
}
|
||||
} else if (elmts.tagName() == "description") {
|
||||
if (elmts.tagName() == "description") {
|
||||
// gestion de la description graphique de l'element
|
||||
// = parcours des differentes parties du dessin
|
||||
for (QDomNode n = node.firstChild() ; !n.isNull() ; n = n.nextSibling()) {
|
||||
@ -136,9 +118,6 @@ CustomElement::CustomElement(QString &nom_fichier, QGraphicsItem *qgi, Diagram *
|
||||
}
|
||||
}
|
||||
|
||||
// on garde le nom trouve
|
||||
priv_nom = name_elmt;
|
||||
|
||||
// fin du dessin
|
||||
qp.end();
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define ELEMENTPERSO_H
|
||||
#include "fixedelement.h"
|
||||
#include <QtGui>
|
||||
#include "nameslist.h"
|
||||
/**
|
||||
Cette classe represente un element electrique. Elle est utilisable
|
||||
comme un element fixe. La difference est que l'element perso lit
|
||||
@ -20,7 +21,7 @@ class CustomElement : public FixedElement {
|
||||
// attributs
|
||||
private:
|
||||
int elmt_etat; // contient le code d'erreur si l'instanciation a echoue ou 0 si l'instanciation s'est bien passe
|
||||
QString priv_nom;
|
||||
NamesList names;
|
||||
QString nomfichier;
|
||||
QPicture dessin;
|
||||
int nb_terminals;
|
||||
@ -96,7 +97,7 @@ inline int CustomElement::etat() const {
|
||||
@return Le nom de l'element
|
||||
*/
|
||||
inline QString CustomElement::nom() const {
|
||||
return(priv_nom);
|
||||
return(names.name(QFileInfo(nomfichier).baseName()));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -65,24 +65,10 @@ void ElementsCategory::loadNames() {
|
||||
|
||||
/**
|
||||
Methode permettant d'obtenir le nom affichable de cette categorie.
|
||||
Par ordre de preference, on prendra :
|
||||
- le nom dans la langue du systeme
|
||||
- le nom en anglais
|
||||
- le nom du dossier
|
||||
@return Le nom affichable de la categorie
|
||||
*/
|
||||
QString ElementsCategory::name() const {
|
||||
// recupere les deux premiers caracteres de la locale en cours du systeme
|
||||
QString system_language = QLocale::system().name().left(2);
|
||||
QString category_name;
|
||||
if (category_names[system_language] != QString()) {
|
||||
category_name = category_names[system_language];
|
||||
} else if (category_names["en"] != QString()) {
|
||||
category_name = category_names["en"];
|
||||
} else {
|
||||
category_name = dirName();
|
||||
}
|
||||
return(category_name);
|
||||
return(category_names.name(dirName()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,3 +126,26 @@ QDomElement NamesList::toXml(QDomDocument &xml_document) const {
|
||||
}
|
||||
return(names_elmt);
|
||||
}
|
||||
|
||||
/**
|
||||
Retourne le nom approprie en fonction de la langue du systeme
|
||||
Par ordre de preference, on prendra :
|
||||
- le nom dans la langue du systeme
|
||||
- le nom en anglais
|
||||
- le nom du dossier
|
||||
@param fallback_name Le nom a retourner si aucun nom approprie n'est trouve
|
||||
@return Le nom approprie en fonction de la langue du systeme
|
||||
*/
|
||||
const QString &NamesList::name(const QString &fallback_name) const {
|
||||
// recupere les deux premiers caracteres de la locale en cours du systeme
|
||||
QString system_language = QLocale::system().name().left(2);
|
||||
QString *returned_name;
|
||||
if (hash_names[system_language] != QString()) {
|
||||
returned_name = new QString(hash_names[system_language]);
|
||||
} else if (hash_names["en"] != QString()) {
|
||||
returned_name = new QString(hash_names["en"]);
|
||||
} else {
|
||||
returned_name = new QString(fallback_name);
|
||||
}
|
||||
return(*returned_name);
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ class NamesList {
|
||||
int count() const;
|
||||
QString &operator[](const QString &);
|
||||
const QString operator[](const QString &) const;
|
||||
const QString &name(const QString & = QString()) const;
|
||||
|
||||
// methodes relatives a XML
|
||||
void fromXml(const QDomElement &);
|
||||
|
Loading…
x
Reference in New Issue
Block a user