UniWidgets  1.0.0
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 // #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