|
UniWidgets
1.0.0
|
00001 #ifndef _TRANSPROPERTY_H 00002 #define _TRANSPROPERTY_H 00003 // ------------------------------------------------------------------------- 00004 #include <uniwidgets/SensorProperty.h> 00005 #include <iostream> 00006 // ------------------------------------------------------------------------- 00033 template <class ValueType> class TransProperty 00034 { 00035 public: 00036 typedef Glib::Property<ValueType> PropertyType; 00037 typedef Glib::PropertyProxy<ValueType> PropertyProxyType; 00041 void set_value(const ValueType& data) 00042 { m_property = data; } 00047 TransProperty( Gtk::Widget& owner, Glib::ustring name ) : 00048 m_owner(&owner), 00049 m_name(name), 00050 m_property(owner, name) 00051 { 00052 } 00058 TransProperty( Gtk::Widget& owner, Glib::ustring name, ValueType def_value) : 00059 m_owner(&owner), 00060 m_name(name), 00061 m_property(owner, name, def_value) 00062 { 00063 } 00064 00065 /* TransProperty( Gtk::Widget& owner, PropertyType &property, Glib::ustring name, ValueType def_value) : 00066 m_owner(&owner), 00067 m_name(name), 00068 m_property(owner, name, def_value) 00069 { 00070 connected_properties.push_back(&property.get_proxy()); 00071 property.set_value (m_property); 00072 } 00073 00074 TransProperty( Gtk::Widget& owner, PropertyType &property, Glib::ustring name ) : 00075 m_owner(&owner), 00076 m_name(name), 00077 m_property(owner, name) 00078 { 00079 connected_properties.push_back(&property.get_proxy()); 00080 property.set_value (m_property); 00081 }*/ 00088 TransProperty( Gtk::Widget& owner, PropertyProxyType property_proxy, Glib::ustring name, ValueType def_value) : 00089 m_owner(&owner), 00090 m_name(name), 00091 m_property(owner, name, def_value) 00092 { 00093 connected_properties.push_back 00094 (new PropertyProxyType(property_proxy)); 00095 } 00101 TransProperty( Gtk::Widget& owner, PropertyProxyType property_proxy, Glib::ustring name ) : 00102 m_owner(&owner), 00103 m_name(name), 00104 m_property(owner, name) 00105 { 00106 connected_properties.push_back 00107 (new PropertyProxyType(property_proxy)); 00108 } 00111 void connect_processing() 00112 { 00113 on_property_changed(); 00114 m_owner->connect_property_changed( m_name, sigc::mem_fun(*this, &TransProperty::on_property_changed)); 00115 } 00116 00117 operator PropertyType& () { return m_property; } 00120 ValueType get_value() {return m_property.get_value();} 00124 void connect_property( const PropertyType& property ) 00125 { 00126 connected_properties.push_back(&property); 00127 property.set_value (m_property); 00128 } 00131 void on_property_changed(); 00132 00133 00134 protected: 00135 TransProperty(); 00136 Gtk::Widget* m_owner; 00137 Glib::ustring m_name; 00138 PropertyType m_property; 00139 std::list< PropertyProxyType* > connected_properties; 00140 }; 00141 // ------------------------------------------------------------------------- 00142 template<> inline 00143 void TransProperty<USensorProperty>::on_property_changed() 00144 { 00145 for (std::list<PropertyProxyType*>::iterator it = connected_properties.begin(); it != connected_properties.end(); it++) 00146 { 00147 *(*it) = m_property; 00148 } 00149 } 00150 // ------------------------------------------------------------------------- 00151 template<class T> inline 00152 void TransProperty<T>::on_property_changed() 00153 { 00154 for (typename std::list<PropertyProxyType*>::iterator it = connected_properties.begin(); it != connected_properties.end(); it++) 00155 { 00156 (*it)->set_value( m_property.get_value() ); 00157 } 00158 00159 } 00160 // ------------------------------------------------------------------------- 00161 template<> inline 00162 void TransProperty<USensorProperty>::connect_processing() 00163 { 00164 m_owner->connect_property_changed( m_name + "-sensor-name", sigc::mem_fun(*this, &TransProperty::on_property_changed)); 00165 m_owner->connect_property_changed( m_name + "-sensor-id", sigc::mem_fun(*this, &TransProperty::on_property_changed)); 00166 m_owner->connect_property_changed( m_name + "-node-name", sigc::mem_fun(*this, &TransProperty::on_property_changed)); 00167 m_owner->connect_property_changed( m_name + "-node-id", sigc::mem_fun(*this, &TransProperty::on_property_changed)); 00168 m_owner->connect_property_changed( m_name + "-stype", sigc::mem_fun(*this, &TransProperty::on_property_changed)); 00169 } 00170 // ------------------------------------------------------------------------- 00171 #endif
1.7.6.1