source: flair-src/trunk/lib/FlairCore/src/Widget.cpp @ 42

Last change on this file since 42 was 15, checked in by Bayard Gildas, 5 years ago

sources reformatted with flair-format-dir script

File size: 5.7 KB
RevLine 
[2]1// %flair:license{
[15]2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
[2]4// %flair:license}
5//  created:    2012/05/02
6//  filename:   Widget.cpp
7//
8//  author:     Guillaume Sanahuja
9//              Copyright Heudiasyc UMR UTC/CNRS 7253
10//
11//  version:    $Id: $
12//
13//  purpose:    Abstract class for all Framework's widget classes
14//
15//
16/*********************************************************************/
17
18#include "Widget.h"
19#include "Widget_impl.h"
20
21using std::string;
22
[15]23namespace flair {
24namespace gui {
[2]25
26using namespace core;
27
[15]28Widget::Widget(const Widget *parent, string name, string type)
29    : Object(parent, name, type) {
30  pimpl_ = new Widget_impl(this, parent, name, type);
[2]31}
32
[15]33Widget::~Widget() { delete pimpl_; }
[2]34
[15]35template <> bool Widget::GetPersistentXmlProp(std::string prop, double &value) {
36  xmlChar *result = NULL;
37  result = xmlGetProp(pimpl_->file_node, (xmlChar *)prop.c_str());
[2]38
[15]39  if (result != NULL) {
40    value = xmlXPathCastStringToNumber(result);
41    xmlFree(result);
42    return true;
43  } else {
44    return false;
45  }
[2]46}
47
[15]48template <> bool Widget::GetPersistentXmlProp(std::string prop, float &value) {
49  double tmp;
50  if (GetPersistentXmlProp<double>(prop, tmp)) {
51    value = tmp;
52    return true;
53  } else {
54    return false;
55  }
[2]56}
57
[15]58template <> bool Widget::GetPersistentXmlProp(std::string prop, bool &value) {
59  double tmp;
60  if (GetPersistentXmlProp<double>(prop, tmp)) {
61    value = tmp;
62    return true;
63  } else {
64    return false;
65  }
[2]66}
67
68template <>
[15]69bool Widget::GetPersistentXmlProp(std::string prop, int32_t &value) {
70  double tmp;
71  if (GetPersistentXmlProp<double>(prop, tmp)) {
72    value = tmp;
73    return true;
74  } else {
75    return false;
76  }
[2]77}
78
79template <>
[15]80bool Widget::GetPersistentXmlProp(std::string prop, uint16_t &value) {
81  double tmp;
82  if (GetPersistentXmlProp<double>(prop, tmp)) {
83    value = tmp;
84    return true;
85  } else {
86    return false;
87  }
[2]88}
89
90template <>
[15]91void Widget::SetVolatileXmlProp(string prop, string value, xmlNodePtr node) {
92  if (node == NULL)
93    node = pimpl_->send_node;
94  xmlSetProp(node, (xmlChar *)prop.c_str(), (xmlChar *)value.c_str());
[2]95}
96
97template <>
[15]98void Widget::SetVolatileXmlProp(string prop, char *value, xmlNodePtr node) {
99  if (node == NULL)
100    node = pimpl_->send_node;
101  xmlSetProp(node, (xmlChar *)prop.c_str(), (xmlChar *)value);
[2]102}
103
104template <>
[15]105void Widget::SetVolatileXmlProp(string prop, double value, xmlNodePtr node) {
106  xmlChar *xmlChar_value = xmlXPathCastNumberToString(value);
[2]107
[15]108  if (node == NULL)
109    node = pimpl_->send_node;
110  xmlSetProp(node, (xmlChar *)prop.c_str(), xmlChar_value);
111  xmlFree(xmlChar_value);
[2]112}
113
114template <>
[15]115void Widget::SetVolatileXmlProp(string prop, float value, xmlNodePtr node) {
116  SetVolatileXmlProp<double>(prop, value, node);
[2]117}
118
119template <>
[15]120void Widget::SetVolatileXmlProp(string prop, int32_t value, xmlNodePtr node) {
121  SetVolatileXmlProp<double>(prop, value, node);
[2]122}
123
124template <>
[15]125void Widget::SetVolatileXmlProp(string prop, uint32_t value, xmlNodePtr node) {
126  SetVolatileXmlProp<double>(prop, value, node);
[2]127}
128
129template <>
[15]130void Widget::SetVolatileXmlProp(string prop, int16_t value, xmlNodePtr node) {
131  SetVolatileXmlProp<double>(prop, value, node);
[2]132}
133
134template <>
[15]135void Widget::SetVolatileXmlProp(string prop, uint16_t value, xmlNodePtr node) {
136  SetVolatileXmlProp<double>(prop, value, node);
[2]137}
138
139template <>
[15]140void Widget::SetVolatileXmlProp(string prop, int8_t value, xmlNodePtr node) {
141  SetVolatileXmlProp<double>(prop, value, node);
[2]142}
143
144template <>
[15]145void Widget::SetVolatileXmlProp(string prop, uint8_t value, xmlNodePtr node) {
146  SetVolatileXmlProp<double>(prop, value, node);
[2]147}
148
149template <>
[15]150void Widget::SetVolatileXmlProp(string prop, bool value, xmlNodePtr node) {
151  SetVolatileXmlProp<double>(prop, value, node);
[2]152}
153
154template <>
[15]155void Widget::SetVolatileXmlProp(string prop, xmlChar *value, xmlNodePtr node) {
156  if (node == NULL)
157    node = pimpl_->send_node;
158  xmlSetProp(node, (xmlChar *)prop.c_str(), value);
[2]159}
160
161template <>
[15]162void Widget::SetVolatileXmlProp(string prop, DataType const &dataType,
163                                xmlNodePtr node) {
164  if (node == NULL)
165    node = pimpl_->send_node;
166  xmlSetProp(node, (xmlChar *)prop.c_str(),
167             (xmlChar *)dataType.GetDescription().c_str());
168  /*
169      switch(dataType)
170      {
171          case io_data::Float:
172              xmlSetProp(node,(xmlChar*)prop.c_str(),(xmlChar*)"float");
173              break;
174          case io_data::Int8_t:
175              xmlSetProp(node,(xmlChar*)prop.c_str(),(xmlChar*)"int8_t");
176              break;
177          case io_data::Int16_t:
178              xmlSetProp(node,(xmlChar*)prop.c_str(),(xmlChar*)"int16_t");
179              break;
180      }
181      */
[2]182}
183
[15]184template <> void Widget::SetPersistentXmlProp(std::string prop, double value) {
185  SetVolatileXmlProp(prop, value);
186  SetVolatileXmlProp(prop, value, pimpl_->file_node);
[2]187}
188
[15]189template <> void Widget::SetPersistentXmlProp(std::string prop, float value) {
190  SetVolatileXmlProp(prop, value);
191  SetVolatileXmlProp(prop, value, pimpl_->file_node);
[2]192}
193
[15]194template <> void Widget::SetPersistentXmlProp(std::string prop, int32_t value) {
195  SetVolatileXmlProp(prop, value);
196  SetVolatileXmlProp(prop, value, pimpl_->file_node);
[2]197}
198
199template <>
[15]200void Widget::SetPersistentXmlProp(std::string prop, uint16_t value) {
201  SetVolatileXmlProp(prop, value);
202  SetVolatileXmlProp(prop, value, pimpl_->file_node);
[2]203}
204
[15]205template <> void Widget::SetPersistentXmlProp(std::string prop, bool value) {
206  SetVolatileXmlProp(prop, value);
207  SetVolatileXmlProp(prop, value, pimpl_->file_node);
[2]208}
209
[15]210void Widget::SendXml(void) { pimpl_->SendXml(); }
[2]211
[15]212void Widget::setEnabled(bool status) { pimpl_->setEnabled(status); }
[2]213
[15]214bool Widget::isEnabled(void) const { return pimpl_->isenabled; }
[2]215
216} // end namespace gui
217} // end namespace flair
Note: See TracBrowser for help on using the repository browser.