USensorJournal.h
00001 #ifndef _USENSORJOURNAL_H
00002 #define _USENSORJOURNAL_H
00003
00004 #include <gtkmm.h>
00005 #include <time.h>
00006 #include <uwidgets/UEventBox.h>
00007
00008
00009 #include <plugins.h>
00010 #include <global_macros.h>
00011
00012 class msgItem;
00014 class SensorColumnRecord : public Gtk::TreeModel::ColumnRecord
00015 {
00016 public:
00017
00018 SensorColumnRecord()
00019 {
00020 add(value_string);
00021 add(time_string);
00022 add(text_message);
00023 add(id_string);
00024 add(name_string);
00025 add(node_string);
00026 add(unet_string);
00027 add(aps_group);
00028 add(time);
00029 add(bgcolor);
00030 add(fgcolor);
00031 add(stype);
00032 add(mark);
00033 add(watch);
00034 }
00035
00036 Gtk::TreeModelColumn<long> value_string;
00037 Gtk::TreeModelColumn<Glib::ustring> time_string;
00038 Gtk::TreeModelColumn<Glib::ustring> text_message;
00039 Gtk::TreeModelColumn<long> id_string;
00040 Gtk::TreeModelColumn<Glib::ustring> name_string;
00041 Gtk::TreeModelColumn<Glib::ustring> node_string;
00042 Gtk::TreeModelColumn<Glib::ustring> unet_string;
00043 Gtk::TreeModelColumn<Glib::ustring> aps_group;
00044 Gtk::TreeModelColumn<time_t> time;
00045 Gtk::TreeModelColumn<Gdk::Color> bgcolor;
00046 Gtk::TreeModelColumn<Gdk::Color> fgcolor;
00047 Gtk::TreeModelColumn<UniversalIO::IOTypes> stype;
00048 Gtk::TreeModelColumn<bool> mark;
00049 Gtk::TreeModelColumn<bool> watch;
00050 };
00051
00057 class USensorJournal : public UEventBox
00058 {
00059 public:
00060 USensorJournal();
00061 explicit USensorJournal(GtkmmBaseType::BaseObjectType* gobject);
00062 virtual ~USensorJournal();
00063
00064 virtual void set_connector(const ConnectorRef& connector) throw();
00065 virtual void on_connect() throw();
00066 virtual void on_disconnect() throw();
00067
00068 protected:
00069
00070
00071 virtual void on_realize();
00072 void on_treeview_row_activated(const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column);
00073 void on_change_browse();
00074 bool on_button_press_event(GdkEventButton* event);
00075 bool on_my_event(GdkEvent* event);
00076 bool on_my_log_event(GdkEvent* event);
00077
00078 void on_menu_watch_generic();
00079 void on_menu_unwatch_generic();
00080 void on_menu_clear_all_generic();
00081 void on_menu_mark_generic(bool state = true);
00082 void on_menu_unmarkall_generic();
00083 void add_watching_for(UniSetTypes::ObjectId id);
00084 void del_watching_for(UniSetTypes::ObjectId id);
00085 void clear_logs(UniSetTypes::ObjectId id = UniSetTypes::DefaultObjectId);
00086 bool on_foreach(const Gtk::TreeIter& it);
00087 std::string get_time();
00088
00089 typedef std::map<UniSetTypes::ObjectId,Gtk::TreeModel::iterator > SensorStoreMap;
00090 SensorStoreMap SensorStore;
00091
00092 Gtk::TreeView tree_view_;
00093 Glib::RefPtr<Gtk::TreeStore> tree_model_ref_;
00094 Glib::RefPtr<Gtk::TreeModelFilter> tree_model_filter_;
00095 Gtk::Entry browse;
00096 Gtk::VBox vbox;
00097 Gtk::Table parameters;
00098 Gtk::CheckButton chk_id;
00099 Gtk::CheckButton chk_name;
00100 Gtk::CheckButton chk_text;
00101 Gtk::CheckButton chk_aps;
00102 Gtk::CheckButton chk_reglet;
00103 Gtk::CheckButton chk_di;
00104 Gtk::CheckButton chk_do;
00105 Gtk::CheckButton chk_ai;
00106 Gtk::CheckButton chk_ao;
00107 Gtk::VPaned vpan;
00108 Gtk::TreeView tree_view_log_;
00109 Glib::RefPtr<Gtk::ListStore> tree_model_log_ref_;
00110
00111 Gtk::ProgressBar progress;
00112
00113 SensorColumnRecord columns_;
00115 Gtk::ScrolledWindow scrolled_window_;
00116 Gtk::ScrolledWindow scrolled_window_log_;
00118 Gtk::Menu m_Menu_Popup;
00119 Gtk::Menu m_Menu_Popup_Logs;
00120
00121 private:
00122
00123 void constructor();
00124
00125 bool update_rows();
00126
00127
00128 void on_editing_started(Gtk::CellEditable* editable, const Glib::ustring& path_string);
00129 void on_editing_canceled();
00130 void on_my_editing_done();
00131 void on_my_edited(const Glib::ustring& path_string, const Glib::ustring& new_text);
00132 void on_modify(const Gtk::TreeModel::iterator& iter,Glib::ValueBase& value,int column );
00133 bool on_rows_visible(const Gtk::TreeModel::iterator& iter );
00134 bool on_check_row_type(const Gtk::TreeModel::iterator& iter );
00135 bool find_in_string(const Glib::ustring& str1);
00136
00137
00138 void on_value_changed(const Gtk::SpinButton* pSpin, const Glib::ustring &path_strin);
00139 void on_set_sensor(const Glib::ustring& path_string, long value );
00140
00141 void on_id_title_changed();
00142 void on_name_title_changed();
00143 void on_value_title_changed();
00144 void on_time_title_changed();
00145 void on_text_title_changed();
00146 void on_aps_title_changed();
00147
00148 void on_id_width_changed();
00149 void on_name_width_changed();
00150 void on_value_width_changed();
00151 void on_time_width_changed();
00152 void on_aps_width_changed();
00153
00154 UniSetTypes::ObjectId block_id;
00155 sigc::connection value_change_connection_;
00156 bool value_changed_;
00157
00158 DISALLOW_COPY_AND_ASSIGN(USensorJournal);
00159
00160 ADD_PROPERTY( property_id_title, Glib::ustring);
00161 ADD_PROPERTY( property_name_title, Glib::ustring);
00162 ADD_PROPERTY( property_value_title, Glib::ustring);
00163 ADD_PROPERTY( property_time_title, Glib::ustring);
00164 ADD_PROPERTY( property_text_title, Glib::ustring);
00165 ADD_PROPERTY( property_aps_title, Glib::ustring);
00166 ADD_PROPERTY( property_info_color, Gdk::Color);
00167 ADD_PROPERTY( property_warn_color, Gdk::Color);
00168 ADD_PROPERTY( property_alarm_color, Gdk::Color);
00169 ADD_PROPERTY( property_attention_color, Gdk::Color);
00171 ADD_PROPERTY( property_id_width, long);
00172 ADD_PROPERTY( property_name_width, long)
00173 ADD_PROPERTY( property_value_width, long);
00174 ADD_PROPERTY( property_time_width, long);
00175 ADD_PROPERTY( property_aps_width, long);
00176 ADD_PROPERTY( property_text_width, long);
00177 ADD_PROPERTY( property_local_mode, bool);
00178
00179 };
00180 #endif