source: flair-src/trunk/lib/FlairCore/src/unexported/Widget_impl.h

Last change on this file was 15, checked in by Bayard Gildas, 8 years ago

sources reformatted with flair-format-dir script

File size: 3.2 KB
Line 
1// %flair:license{
2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
4// %flair:license}
5/*!
6 * \file Widget_impl.h
7 * \brief Classe representant un Widget
8 * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
9 * \date 2012/05/02
10 * \version 4.0
11 */
12
13#ifndef WIDGET_IMPL_H
14#define WIDGET_IMPL_H
15
16#include <libxml/xpath.h>
17#include <io_data.h>
18
19namespace flair {
20namespace gui {
21class Widget;
22}
23}
24
25/*! \class Widget_impl
26* \brief Classe representant un Widget
27*
28* C'est une classe de base. Tout comme l'Object elle permet de gérer les liens
29*de parenté
30* et de détruire automatiquement les enfants. Elle permet en plus de gérer une
31*communication
32* avec la station sol, et donc d'y afficher un QWidget. \n
33* La comunication avec la station sol se fait par l'échange de fichiers xml.
34*Les propriétés xml du Widget sont
35* modifiables par les fonctions appropriées. \n
36* Un fichier xml de réglages par défaut du Widget est utilisé s'il a été
37*spécifié à la construction du FrameworkManager.
38*/
39class Widget_impl {
40 friend class flair::core::FrameworkManager;
41 friend class FrameworkManager_impl;
42
43public:
44 /*!
45 * \brief Constructeur
46 *
47 * Construit un Widget, qui est automatiquement enfant du parent. Le fichier
48 *xml
49 * spécifié au constructeur du FrameworkManager est utilisé pour les réglages
50 *par
51 * défaut. \n
52 * Sauf pour le FrameworkManager, ce constructeur doit être apellé depuis une
53 *tache temps réel
54 * lorsque l'on utilise la librairie framework_rt.
55 *
56 * \param parent parent
57 * \param name nom
58 * \param type type
59 */
60 Widget_impl(flair::gui::Widget *self, const flair::gui::Widget *parent,
61 std::string name, std::string type);
62
63 /*!
64 * \brief Déstructeur
65 *
66 * Détruit automatiquement les enfants.
67 * La destruction implique la destruction du QWidget associé sur la station
68 *sol.\n
69 * Sauf pour le FrameworkManager, ce déstructeur doit être apellé depuis une
70 *tache temps réel
71 * lorsque l'on utilise la librairie framework_rt.
72 *
73 */
74 ~Widget_impl();
75
76 /*!
77 * \brief Activer
78 *
79 * Active le QWidget associé sur la station sol. \n
80 * Un QWdiget désactivé apparait grisé et n'est pas modifiable.
81 *
82 * \param status
83 */
84 void setEnabled(bool status);
85
86 /*!
87 * \brief Envoi le xml
88 *
89 * Envoi le xml à la station sol pour prendre en compte les changements.
90 */
91 void SendXml(void);
92
93 xmlNodePtr file_node;
94 xmlNodePtr send_node;
95 bool isenabled;
96
97private:
98 flair::gui::Widget *self;
99
100 std::vector<flair::gui::Widget *> childs;
101
102 void AddChild(const flair::gui::Widget *child);
103 void RemoveChild(const flair::gui::Widget *child);
104
105 /*!
106 * \brief Efface les proriétés xml
107 *
108 * Permet d'effacer toutes les propriétés XML fixées par SetVolatileXmlProp.
109 * A utliser lorsque l'on a plus besoin d'utiliser ces propriétés. Utile
110 * pour réduire la taille des fichiers XML écangés avec la station sol.
111 */
112 void ClearXmlProps(void);
113
114 // xml
115 void ProcessXML(xmlNode *node);
116 xmlDocPtr CopyDoc(void);
117 static xmlNodePtr GetNodeByProp(xmlNodePtr doc, xmlChar *type, xmlChar *prop,
118 xmlChar *value);
119 void printSendNode();
120 xmlDocPtr send_doc;
121};
122
123#endif // WIDGET_IMPL_H
Note: See TracBrowser for help on using the repository browser.