|
UniWidgets
1.0.0
|
00001 #ifndef _USENSORJOURNAL_H 00002 #define _USENSORJOURNAL_H 00003 // ------------------------------------------------------------------------- 00004 #include <gtkmm.h> 00005 #include <time.h> 00006 #include <uwidgets/UEventBox.h> 00007 // #include <uniwidgets/USignals.h> 00008 // #include <uwidgets/KineticScroll.h> 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(time); 00026 add(bgcolor); 00027 add(fgcolor); 00028 add(stype); 00029 add(mark); 00030 add(watch); 00031 } 00032 00033 Gtk::TreeModelColumn<long> value_string; 00034 Gtk::TreeModelColumn<Glib::ustring> time_string; 00035 Gtk::TreeModelColumn<Glib::ustring> text_message; 00036 Gtk::TreeModelColumn<long> id_string; 00037 Gtk::TreeModelColumn<Glib::ustring> name_string; 00038 Gtk::TreeModelColumn<time_t> time; 00039 Gtk::TreeModelColumn<Gdk::Color> bgcolor; 00040 Gtk::TreeModelColumn<Gdk::Color> fgcolor; 00041 Gtk::TreeModelColumn<UniversalIO::IOTypes> stype; 00042 Gtk::TreeModelColumn<bool> mark; 00043 Gtk::TreeModelColumn<bool> watch; 00044 }; 00045 // ------------------------------------------------------------------------- 00051 class USensorJournal : public UEventBox 00052 { 00053 public: 00054 USensorJournal(); 00055 explicit USensorJournal(GtkmmBaseType::BaseObjectType* gobject); 00056 virtual ~USensorJournal(); 00057 00058 virtual void set_connector(const ConnectorRef& connector) throw(); 00059 virtual void on_connect() throw(); 00060 virtual void on_disconnect() throw(); 00061 00062 protected: 00063 00064 /* Handlers */ 00065 virtual void on_realize(); 00066 void on_treeview_row_activated(const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column); 00067 void on_change_browse(); 00068 bool on_button_press_event(GdkEventButton* event); 00069 bool on_my_event(GdkEvent* event); 00070 bool on_my_log_event(GdkEvent* event); 00071 00072 void on_menu_watch_generic(); 00073 void on_menu_unwatch_generic(); 00074 void on_menu_clear_all_generic(); 00075 void on_menu_mark_generic(bool state = true); 00076 void on_menu_unmarkall_generic(); 00077 void add_watching_for(UniSetTypes::ObjectId id); 00078 void del_watching_for(UniSetTypes::ObjectId id); 00079 void clear_logs(UniSetTypes::ObjectId id = UniSetTypes::DefaultObjectId); 00080 bool on_foreach(const Gtk::TreeIter& it); 00081 std::string get_time(); 00082 00083 std::map<UniSetTypes::ObjectId,Gtk::TreeModel::iterator > SensorStore; 00084 00085 Gtk::TreeView tree_view_; 00086 Glib::RefPtr<Gtk::TreeStore> tree_model_ref_; 00087 Glib::RefPtr<Gtk::TreeModelFilter> tree_model_filter_; 00088 Gtk::Entry browse; 00089 Gtk::VBox vbox; 00090 Gtk::Table parameters; 00091 Gtk::CheckButton chk_id; 00092 Gtk::CheckButton chk_name; 00093 Gtk::CheckButton chk_text; 00094 Gtk::CheckButton chk_reglet; 00095 Gtk::CheckButton chk_di; 00096 Gtk::CheckButton chk_do; 00097 Gtk::CheckButton chk_ai; 00098 Gtk::CheckButton chk_ao; 00099 Gtk::VPaned vpan; 00100 Gtk::TreeView tree_view_log_; 00101 Glib::RefPtr<Gtk::ListStore> tree_model_log_ref_; 00102 // Glib::Property<Glib::ustring> property_shmid; /*!< свойство: идентификатор SM */ 00103 00104 SensorColumnRecord columns_; 00106 Gtk::ScrolledWindow scrolled_window_; 00107 Gtk::ScrolledWindow scrolled_window_log_; 00109 Gtk::Menu m_Menu_Popup; 00110 Gtk::Menu m_Menu_Popup_Logs; 00111 00112 private: 00113 00114 void constructor(); 00115 void update_row(UniSetTypes::ObjectId id, UniSetTypes::ObjectId node, long value); 00116 // void treeviewcolumn_validated_on_cell_data(Gtk::CellRenderer* renderer, const Gtk::TreeModel::iterator& iter); 00117 void on_editing_started(Gtk::CellEditable* editable, const Glib::ustring& path_string); 00118 void on_editing_canceled(); 00119 void on_my_editing_done(); 00120 void on_my_edited(const Glib::ustring& path_string, const Glib::ustring& new_text); 00121 void on_modify(const Gtk::TreeModel::iterator& iter,Glib::ValueBase& value,int column ); 00122 bool on_rows_visible(const Gtk::TreeModel::iterator& iter ); 00123 bool on_check_row_type(const Gtk::TreeModel::iterator& iter ); 00124 bool find_in_string(const Glib::ustring& str1); 00125 // void on_row_changed(const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator& iter); 00126 // void on_row_filtered_changed(const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator& iter); 00127 void on_value_changed(const Gtk::SpinButton* pSpin, const Glib::ustring &path_strin); 00128 void on_set_sensor(const Glib::ustring& path_string, long value ); 00129 00130 void on_id_title_changed(); 00131 void on_name_title_changed(); 00132 void on_value_title_changed(); 00133 void on_time_title_changed(); 00134 void on_text_title_changed(); 00135 00136 void on_id_width_changed(); 00137 void on_name_width_changed(); 00138 void on_value_width_changed(); 00139 void on_time_width_changed(); 00140 00141 UniSetTypes::ObjectId block_id; 00142 sigc::connection value_change_connection_; 00143 bool value_changed_; 00144 00145 DISALLOW_COPY_AND_ASSIGN(USensorJournal); 00146 /*Properties*/ 00147 ADD_PROPERTY( property_id_title, Glib::ustring); 00148 ADD_PROPERTY( property_name_title, Glib::ustring); 00149 ADD_PROPERTY( property_value_title, Glib::ustring); 00150 ADD_PROPERTY( property_time_title, Glib::ustring); 00151 ADD_PROPERTY( property_text_title, Glib::ustring); 00152 ADD_PROPERTY( property_info_color, Gdk::Color); 00153 ADD_PROPERTY( property_warn_color, Gdk::Color); 00154 ADD_PROPERTY( property_alarm_color, Gdk::Color); 00155 ADD_PROPERTY( property_attention_color, Gdk::Color); 00157 ADD_PROPERTY( property_id_width, long); 00158 ADD_PROPERTY( property_name_width, long) 00159 ADD_PROPERTY( property_value_width, long); 00160 ADD_PROPERTY( property_time_width, long); 00161 ADD_PROPERTY( property_text_width, long); 00162 00163 }; 00164 #endif
1.7.6.1