Classes "ElementPerso" et "PanelAppareils" renommees en "CustomElement" et "ElementsPanel"

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@48 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavierqet
2007-01-30 22:32:21 +00:00
parent 29d35a2007
commit a5cc50f5ab
9 changed files with 44 additions and 44 deletions

View File

@@ -1,4 +1,4 @@
#include "elementperso.h" #include "customelement.h"
/** /**
Constructeur de la classe ElementPerso. Permet d'instancier un element Constructeur de la classe ElementPerso. Permet d'instancier un element
@@ -7,7 +7,7 @@
en parametre. en parametre.
@param nom_fichier Le chemin du fichier XML decrivant l'element @param nom_fichier Le chemin du fichier XML decrivant l'element
@param qgi Le QGraphicsItem parent de cet element @param qgi Le QGraphicsItem parent de cet element
@param s Le Diagram affichant cet element @param s Le Schema affichant cet element
@param etat Un pointeur facultatif vers un entier. La valeur de cet entier @param etat Un pointeur facultatif vers un entier. La valeur de cet entier
sera changee de maniere a refleter le deroulement de l'instanciation : sera changee de maniere a refleter le deroulement de l'instanciation :
- 0 : L'instanciation a reussi - 0 : L'instanciation a reussi
@@ -20,7 +20,7 @@
- 7 : L'analyse d'un element XML decrivant une partie du dessin de l'element a echoue - 7 : L'analyse d'un element XML decrivant une partie du dessin de l'element a echoue
- 8 : Aucune partie du dessin n'a pu etre chargee - 8 : Aucune partie du dessin n'a pu etre chargee
*/ */
ElementPerso::ElementPerso(QString &nom_fichier, QGraphicsItem *qgi, Diagram *s, int *etat) : FixedElement(qgi, s) { CustomElement::CustomElement(QString &nom_fichier, QGraphicsItem *qgi, Diagram *s, int *etat) : FixedElement(qgi, s) {
nomfichier = nom_fichier; nomfichier = nom_fichier;
nb_terminals = 0; nb_terminals = 0;
// pessimisme inside : par defaut, ca foire // pessimisme inside : par defaut, ca foire
@@ -157,7 +157,7 @@ ElementPerso::ElementPerso(QString &nom_fichier, QGraphicsItem *qgi, Diagram *s,
/** /**
@return Le nombre de bornes que l'element possede @return Le nombre de bornes que l'element possede
*/ */
int ElementPerso::nbTerminals() const { int CustomElement::nbTerminals() const {
return(nb_terminals); return(nb_terminals);
} }
@@ -166,7 +166,7 @@ int ElementPerso::nbTerminals() const {
@param qp Le QPainter a utiliser pour dessiner l'element @param qp Le QPainter a utiliser pour dessiner l'element
@param qsogi Les options graphiques @param qsogi Les options graphiques
*/ */
void ElementPerso::paint(QPainter *qp, const QStyleOptionGraphicsItem *) { void CustomElement::paint(QPainter *qp, const QStyleOptionGraphicsItem *) {
dessin.play(qp); dessin.play(qp);
} }
@@ -183,7 +183,7 @@ void ElementPerso::paint(QPainter *qp, const QStyleOptionGraphicsItem *) {
@param s Le schema sur lequel sera affiche l'element perso @param s Le schema sur lequel sera affiche l'element perso
@return true si l'analyse reussit, false sinon @return true si l'analyse reussit, false sinon
*/ */
bool ElementPerso::parseElement(QDomElement &e, QPainter &qp, Diagram *s) { bool CustomElement::parseElement(QDomElement &e, QPainter &qp, Diagram *s) {
if (e.tagName() == "borne") return(parseTerminal(e, s)); if (e.tagName() == "borne") return(parseTerminal(e, s));
else if (e.tagName() == "ligne") return(parseLigne(e, qp)); else if (e.tagName() == "ligne") return(parseLigne(e, qp));
else if (e.tagName() == "ellipse") return(parseEllipse(e, qp)); else if (e.tagName() == "ellipse") return(parseEllipse(e, qp));
@@ -204,7 +204,7 @@ bool ElementPerso::parseElement(QDomElement &e, QPainter &qp, Diagram *s) {
@param qp Le QPainter a utiliser pour dessiner l'element perso @param qp Le QPainter a utiliser pour dessiner l'element perso
@return true si l'analyse reussit, false sinon @return true si l'analyse reussit, false sinon
*/ */
bool ElementPerso::parseLigne(QDomElement &e, QPainter &qp) { bool CustomElement::parseLigne(QDomElement &e, QPainter &qp) {
// verifie la presence et la validite des attributs obligatoires // verifie la presence et la validite des attributs obligatoires
double x1, y1, x2, y2; double x1, y1, x2, y2;
if (!attributeIsAReal(e, QString("x1"), &x1)) return(false); if (!attributeIsAReal(e, QString("x1"), &x1)) return(false);
@@ -231,7 +231,7 @@ bool ElementPerso::parseLigne(QDomElement &e, QPainter &qp) {
@return true si l'analyse reussit, false sinon @return true si l'analyse reussit, false sinon
@todo utiliser des attributs plus coherents : x et y = centre, rayon = vrai rayon @todo utiliser des attributs plus coherents : x et y = centre, rayon = vrai rayon
*/ */
bool ElementPerso::parseCercle(QDomElement &e, QPainter &qp) { bool CustomElement::parseCercle(QDomElement &e, QPainter &qp) {
// verifie la presence des attributs obligatoires // verifie la presence des attributs obligatoires
double cercle_x, cercle_y, cercle_r; double cercle_x, cercle_y, cercle_r;
if (!attributeIsAReal(e, QString("x"), &cercle_x)) return(false); if (!attributeIsAReal(e, QString("x"), &cercle_x)) return(false);
@@ -258,7 +258,7 @@ bool ElementPerso::parseCercle(QDomElement &e, QPainter &qp) {
@return true si l'analyse reussit, false sinon @return true si l'analyse reussit, false sinon
@todo utiliser des attributs plus coherents : x et y = centre @todo utiliser des attributs plus coherents : x et y = centre
*/ */
bool ElementPerso::parseEllipse(QDomElement &e, QPainter &qp) { bool CustomElement::parseEllipse(QDomElement &e, QPainter &qp) {
// verifie la presence des attributs obligatoires // verifie la presence des attributs obligatoires
double ellipse_x, ellipse_y, ellipse_l, ellipse_h; double ellipse_x, ellipse_y, ellipse_l, ellipse_h;
if (!attributeIsAReal(e, QString("x"), &ellipse_x)) return(false); if (!attributeIsAReal(e, QString("x"), &ellipse_x)) return(false);
@@ -286,7 +286,7 @@ bool ElementPerso::parseEllipse(QDomElement &e, QPainter &qp) {
@param qp Le QPainter a utiliser pour dessiner l'element perso @param qp Le QPainter a utiliser pour dessiner l'element perso
@return true si l'analyse reussit, false sinon @return true si l'analyse reussit, false sinon
*/ */
bool ElementPerso::parseArc(QDomElement &e, QPainter &qp) { bool CustomElement::parseArc(QDomElement &e, QPainter &qp) {
// verifie la presence des attributs obligatoires // verifie la presence des attributs obligatoires
double arc_x, arc_y, arc_l, arc_h, arc_s, arc_a; double arc_x, arc_y, arc_l, arc_h, arc_s, arc_a;
if (!attributeIsAReal(e, QString("x"), &arc_x)) return(false); if (!attributeIsAReal(e, QString("x"), &arc_x)) return(false);
@@ -313,7 +313,7 @@ bool ElementPerso::parseArc(QDomElement &e, QPainter &qp) {
@param qp Le QPainter a utiliser pour dessiner l'element perso @param qp Le QPainter a utiliser pour dessiner l'element perso
@return true si l'analyse reussit, false sinon @return true si l'analyse reussit, false sinon
*/ */
bool ElementPerso::parsePolygone(QDomElement &e, QPainter &qp) { bool CustomElement::parsePolygone(QDomElement &e, QPainter &qp) {
int i = 1; int i = 1;
while(true) { while(true) {
if (attributeIsAReal(e, QString("x%1").arg(i)) && attributeIsAReal(e, QString("y%1").arg(i))) ++ i; if (attributeIsAReal(e, QString("x%1").arg(i)) && attributeIsAReal(e, QString("y%1").arg(i))) ++ i;
@@ -345,7 +345,7 @@ bool ElementPerso::parsePolygone(QDomElement &e, QPainter &qp) {
@param s Le schema sur lequel l'element perso sera affiche @param s Le schema sur lequel l'element perso sera affiche
@return true si l'analyse reussit, false sinon @return true si l'analyse reussit, false sinon
*/ */
bool ElementPerso::parseTerminal(QDomElement &e, Diagram *s) { bool CustomElement::parseTerminal(QDomElement &e, Diagram *s) {
// verifie la presence et la validite des attributs obligatoires // verifie la presence et la validite des attributs obligatoires
double terminalx, terminaly; double terminalx, terminaly;
Terminal::Orientation terminalo; Terminal::Orientation terminalo;
@@ -367,7 +367,7 @@ bool ElementPerso::parseTerminal(QDomElement &e, Diagram *s) {
@param qp Le QPainter a modifier @param qp Le QPainter a modifier
@param aa Booleen a true pour activer l'antialiasing, a false pour le desactiver @param aa Booleen a true pour activer l'antialiasing, a false pour le desactiver
*/ */
void ElementPerso::setQPainterAntiAliasing(QPainter &qp, bool aa) { void CustomElement::setQPainterAntiAliasing(QPainter &qp, bool aa) {
qp.setRenderHint(QPainter::Antialiasing, aa); qp.setRenderHint(QPainter::Antialiasing, aa);
qp.setRenderHint(QPainter::TextAntialiasing, aa); qp.setRenderHint(QPainter::TextAntialiasing, aa);
qp.setRenderHint(QPainter::SmoothPixmapTransform, aa); qp.setRenderHint(QPainter::SmoothPixmapTransform, aa);
@@ -381,7 +381,7 @@ void ElementPerso::setQPainterAntiAliasing(QPainter &qp, bool aa) {
@param entier Pointeur facultatif vers un entier @param entier Pointeur facultatif vers un entier
@return true si l'attribut est bien un entier, false sinon @return true si l'attribut est bien un entier, false sinon
*/ */
bool ElementPerso::attributeIsAnInteger(QDomElement &e, QString nom_attribut, int *entier) { bool CustomElement::attributeIsAnInteger(QDomElement &e, QString nom_attribut, int *entier) {
// verifie la presence de l'attribut // verifie la presence de l'attribut
if (!e.hasAttribute(nom_attribut)) return(false); if (!e.hasAttribute(nom_attribut)) return(false);
// verifie la validite de l'attribut // verifie la validite de l'attribut
@@ -400,7 +400,7 @@ bool ElementPerso::attributeIsAnInteger(QDomElement &e, QString nom_attribut, in
@param reel Pointeur facultatif vers un double @param reel Pointeur facultatif vers un double
@return true si l'attribut est bien un reel, false sinon @return true si l'attribut est bien un reel, false sinon
*/ */
bool ElementPerso::attributeIsAReal(QDomElement &e, QString nom_attribut, double *reel) { bool CustomElement::attributeIsAReal(QDomElement &e, QString nom_attribut, double *reel) {
// verifie la presence de l'attribut // verifie la presence de l'attribut
if (!e.hasAttribute(nom_attribut)) return(false); if (!e.hasAttribute(nom_attribut)) return(false);
// verifie la validite de l'attribut // verifie la validite de l'attribut
@@ -430,7 +430,7 @@ bool ElementPerso::attributeIsAReal(QDomElement &e, QString nom_attribut, double
@param e Element XML @param e Element XML
@return true si l'attribut "orientation" est valide, false sinon @return true si l'attribut "orientation" est valide, false sinon
*/ */
bool ElementPerso::validOrientationAttribute(QDomElement &e) { bool CustomElement::validOrientationAttribute(QDomElement &e) {
// verifie la presence de l'attribut orientation // verifie la presence de l'attribut orientation
if (!e.hasAttribute("orientation")) return(false); if (!e.hasAttribute("orientation")) return(false);
QString t = e.attribute("orientation"); QString t = e.attribute("orientation");
@@ -476,7 +476,7 @@ bool ElementPerso::validOrientationAttribute(QDomElement &e) {
@param e L'element XML a parser @param e L'element XML a parser
@param qp Le QPainter a modifier en fonction des styles @param qp Le QPainter a modifier en fonction des styles
*/ */
void ElementPerso::setPainterStyle(QDomElement &e, QPainter &qp) { void CustomElement::setPainterStyle(QDomElement &e, QPainter &qp) {
// recupere le QPen et la QBrush du QPainter // recupere le QPen et la QBrush du QPainter
QPen pen = qp.pen(); QPen pen = qp.pen();
QBrush brush = qp.brush(); QBrush brush = qp.brush();

View File

@@ -2,9 +2,9 @@
#define ELEMENTPERSO_H #define ELEMENTPERSO_H
#include "fixedelement.h" #include "fixedelement.h"
#include <QtGui> #include <QtGui>
class ElementPerso : public FixedElement { class CustomElement : public FixedElement {
public: public:
ElementPerso(QString &, QGraphicsItem * = 0, Diagram * = 0, int * = NULL); CustomElement(QString &, QGraphicsItem * = 0, Diagram * = 0, int * = NULL);
virtual int nbTerminals() const; virtual int nbTerminals() const;
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *); virtual void paint(QPainter *, const QStyleOptionGraphicsItem *);
inline QString typeId() { return(nomfichier); } inline QString typeId() { return(nomfichier); }

View File

@@ -1,6 +1,6 @@
#include <math.h> #include <math.h>
#include "conducer.h" #include "conducer.h"
#include "elementperso.h" #include "customelement.h"
#include "diagram.h" #include "diagram.h"
/** /**
@@ -349,7 +349,7 @@ Element *Diagram::elementFromXml(QDomElement &e, QHash<int, Terminal *> &table_i
QString type = e.attribute("type"); QString type = e.attribute("type");
QString chemin_fichier = QETApp::realPath(type); QString chemin_fichier = QETApp::realPath(type);
int etat; int etat;
Element *nvel_elmt = new ElementPerso(chemin_fichier, 0, 0, &etat); Element *nvel_elmt = new CustomElement(chemin_fichier, 0, 0, &etat);
if (etat != 0) return(false); if (etat != 0) return(false);
// charge les caracteristiques de l'element // charge les caracteristiques de l'element

View File

@@ -1,6 +1,6 @@
#include "diagramview.h" #include "diagramview.h"
#include "diagram.h" #include "diagram.h"
#include "elementperso.h" #include "customelement.h"
/** /**
Initialise le DiagramView Initialise le DiagramView
@@ -197,7 +197,7 @@ void DiagramView::dragMoveEvent(QDragMoveEvent *e) {
void DiagramView::dropEvent(QDropEvent *e) { void DiagramView::dropEvent(QDropEvent *e) {
QString fichier = e -> mimeData() -> text(); QString fichier = e -> mimeData() -> text();
int etat; int etat;
Element *el = new ElementPerso(fichier, 0, 0, &etat); Element *el = new CustomElement(fichier, 0, 0, &etat);
if (etat != 0) delete el; if (etat != 0) delete el;
else { else {
scene -> addItem(el); scene -> addItem(el);

View File

@@ -1,11 +1,11 @@
#include "panelappareils.h" #include "elementspanel.h"
#include "elementperso.h" #include "customelement.h"
/** /**
Constructeur Constructeur
@param parent Le QWidget parent du panel d'appareils @param parent Le QWidget parent du panel d'appareils
*/ */
PanelAppareils::PanelAppareils(QWidget *parent) : QTreeWidget(parent) { ElementsPanel::ElementsPanel(QWidget *parent) : QTreeWidget(parent) {
// selection unique // selection unique
setSelectionMode(QAbstractItemView::SingleSelection); setSelectionMode(QAbstractItemView::SingleSelection);
@@ -40,13 +40,13 @@ PanelAppareils::PanelAppareils(QWidget *parent) : QTreeWidget(parent) {
/** /**
Gere le mouvement lors d'un drag'n drop Gere le mouvement lors d'un drag'n drop
*/ */
void PanelAppareils::dragMoveEvent(QDragMoveEvent */*e*/) { void ElementsPanel::dragMoveEvent(QDragMoveEvent */*e*/) {
} }
/** /**
Gere le depot lors d'un drag'n drop Gere le depot lors d'un drag'n drop
*/ */
void PanelAppareils::dropEvent(QDropEvent */*e*/) { void ElementsPanel::dropEvent(QDropEvent */*e*/) {
} }
/** /**
@@ -54,7 +54,7 @@ void PanelAppareils::dropEvent(QDropEvent */*e*/) {
@param supportedActions Les actions supportees @param supportedActions Les actions supportees
@todo virer les lignes type «if ("tel appareil") construire TelAppareil» => trouver un moyen d'automatiser ca @todo virer les lignes type «if ("tel appareil") construire TelAppareil» => trouver un moyen d'automatiser ca
*/ */
void PanelAppareils::startDrag(Qt::DropActions /*supportedActions*/) { void ElementsPanel::startDrag(Qt::DropActions /*supportedActions*/) {
// recupere le nom du fichier decrivant l'element // recupere le nom du fichier decrivant l'element
QString nom_fichier = currentItem() -> data(0, 42).toString(); QString nom_fichier = currentItem() -> data(0, 42).toString();
if (nom_fichier == QString()) return; if (nom_fichier == QString()) return;
@@ -67,7 +67,7 @@ void PanelAppareils::startDrag(Qt::DropActions /*supportedActions*/) {
// appareil temporaire pour fournir un apercu // appareil temporaire pour fournir un apercu
int etat; int etat;
Element *appar = new ElementPerso(nom_fichier, 0, 0, &etat); Element *appar = new CustomElement(nom_fichier, 0, 0, &etat);
if (etat != 0) { if (etat != 0) {
delete appar; delete appar;
return; return;
@@ -97,7 +97,7 @@ void PanelAppareils::startDrag(Qt::DropActions /*supportedActions*/) {
dans le dossier et y lit le nom du dossier ; si ce fichier n'existe pas ou dans le dossier et y lit le nom du dossier ; si ce fichier n'existe pas ou
est invalide, la fonction utilise le nom du dossier. est invalide, la fonction utilise le nom du dossier.
*/ */
void PanelAppareils::ajouterDossier(QTreeWidgetItem *qtwi_parent, QString adr_dossier, QString nom) { void ElementsPanel::ajouterDossier(QTreeWidgetItem *qtwi_parent, QString adr_dossier, QString nom) {
QDir dossier(adr_dossier); QDir dossier(adr_dossier);
if (!dossier.exists()) return; if (!dossier.exists()) return;
adr_dossier = dossier.canonicalPath() + "/"; adr_dossier = dossier.canonicalPath() + "/";
@@ -127,11 +127,11 @@ void PanelAppareils::ajouterDossier(QTreeWidgetItem *qtwi_parent, QString adr_do
@param qtwi_parent QTreeWidgetItem parent sous lequel sera insere l'element @param qtwi_parent QTreeWidgetItem parent sous lequel sera insere l'element
@param fichier Chemin absolu du fichier XML decrivant l'element a inserer @param fichier Chemin absolu du fichier XML decrivant l'element a inserer
*/ */
void PanelAppareils::ajouterFichier(QTreeWidgetItem *qtwi_parent, QString fichier) { void ElementsPanel::ajouterFichier(QTreeWidgetItem *qtwi_parent, QString fichier) {
QString whats_this = tr("Ceci est un \351l\351ment que vous pouvez ins\351rer dans votre sch\351ma par cliquer-d\351placer"); QString whats_this = tr("Ceci est un \351l\351ment que vous pouvez ins\351rer dans votre sch\351ma par cliquer-d\351placer");
QString tool_tip = tr("Cliquer-d\351posez cet \351l\351ment sur le sch\351ma pour ins\351rer un \351l\351ment "); QString tool_tip = tr("Cliquer-d\351posez cet \351l\351ment sur le sch\351ma pour ins\351rer un \351l\351ment ");
int etat; int etat;
ElementPerso *elmt_perso = new ElementPerso(fichier, 0, 0, &etat); CustomElement *elmt_perso = new CustomElement(fichier, 0, 0, &etat);
if (etat != 0) { if (etat != 0) {
qDebug() << "Le chargement du composant" << fichier << "a echoue avec le code d'erreur" << etat; qDebug() << "Le chargement du composant" << fichier << "a echoue avec le code d'erreur" << etat;
return; return;
@@ -152,7 +152,7 @@ void PanelAppareils::ajouterFichier(QTreeWidgetItem *qtwi_parent, QString fichie
@param directory le chemin du dossier representant la categorie @param directory le chemin du dossier representant la categorie
@return Le nom affichable de la categorie @return Le nom affichable de la categorie
*/ */
QString PanelAppareils::categoryName(QDir &directory) { QString ElementsPanel::categoryName(QDir &directory) {
// en cas d'echec de la lecture du fichier de configuration // en cas d'echec de la lecture du fichier de configuration
// "qet_directory", le nom du dossier est retourne // "qet_directory", le nom du dossier est retourne
QString category_name = directory.dirName(); QString category_name = directory.dirName();

View File

@@ -7,10 +7,10 @@
graphique) dans lequel l'utilisateur choisit les composants de graphique) dans lequel l'utilisateur choisit les composants de
son choix et les depose sur le schema par drag'n drop. son choix et les depose sur le schema par drag'n drop.
*/ */
class PanelAppareils : public QTreeWidget { class ElementsPanel : public QTreeWidget {
Q_OBJECT Q_OBJECT
public: public:
PanelAppareils(QWidget * = 0); ElementsPanel(QWidget * = 0);
static QString categoryName(QDir &); static QString categoryName(QDir &);
public slots: public slots:
void dragMoveEvent(QDragMoveEvent *); void dragMoveEvent(QDragMoveEvent *);

View File

@@ -14,9 +14,9 @@ HEADERS += aboutqet.h \
conducer.h \ conducer.h \
element.h \ element.h \
fixedelement.h \ fixedelement.h \
elementperso.h \ customelement.h \
exportdialog.h \ exportdialog.h \
panelappareils.h \ elementspanel.h \
qetapp.h \ qetapp.h \
diagram.h \ diagram.h \
diagramview.h diagramview.h
@@ -26,10 +26,10 @@ SOURCES += aboutqet.cpp \
conducer.cpp \ conducer.cpp \
element.cpp \ element.cpp \
fixedelement.cpp \ fixedelement.cpp \
elementperso.cpp \ customelement.cpp \
exportdialog.cpp \ exportdialog.cpp \
main.cpp \ main.cpp \
panelappareils.cpp \ elementspanel.cpp \
qetapp.cpp \ qetapp.cpp \
diagram.cpp \ diagram.cpp \
diagramview.cpp diagramview.cpp

View File

@@ -1,7 +1,7 @@
#include "qetapp.h" #include "qetapp.h"
#include "diagramview.h" #include "diagramview.h"
#include "diagram.h" #include "diagram.h"
#include "panelappareils.h" #include "elementspanel.h"
#include "aboutqet.h" #include "aboutqet.h"
#include "exportdialog.h" #include "exportdialog.h"
@@ -56,7 +56,7 @@ QETApp::QETApp(QWidget *parent) : QMainWindow(parent) {
qdw_pa -> setAllowedAreas(Qt::AllDockWidgetAreas); qdw_pa -> setAllowedAreas(Qt::AllDockWidgetAreas);
qdw_pa -> setFeatures(QDockWidget::AllDockWidgetFeatures); qdw_pa -> setFeatures(QDockWidget::AllDockWidgetFeatures);
qdw_pa -> setMinimumWidth(160); qdw_pa -> setMinimumWidth(160);
qdw_pa -> setWidget(pa = new PanelAppareils(qdw_pa)); qdw_pa -> setWidget(pa = new ElementsPanel(qdw_pa));
addDockWidget(Qt::LeftDockWidgetArea, qdw_pa); addDockWidget(Qt::LeftDockWidgetArea, qdw_pa);
// mise en place des actions // mise en place des actions

View File

@@ -2,7 +2,7 @@
#define QETAPP_H #define QETAPP_H
#include <QtGui> #include <QtGui>
class DiagramView; class DiagramView;
class PanelAppareils; class ElementsPanel;
/** /**
Cette classe represente la fenetre principale de QElectroTech et, Cette classe represente la fenetre principale de QElectroTech et,
ipso facto, la plus grande partie de l'interface graphique de QElectroTech. ipso facto, la plus grande partie de l'interface graphique de QElectroTech.
@@ -96,7 +96,7 @@
/// Dock pour le Panel d'Appareils /// Dock pour le Panel d'Appareils
QDockWidget *qdw_pa; QDockWidget *qdw_pa;
/// Panel d'Appareils /// Panel d'Appareils
PanelAppareils *pa; ElementsPanel *pa;
/// Elements de menus pour l'icone du systray /// Elements de menus pour l'icone du systray
QMenu *menu_systray; QMenu *menu_systray;
QAction *systray_masquer; QAction *systray_masquer;