UDiagram.h

00001 #ifndef _UDIAGRAM_H
00002 #define _UDIAGRAM_H
00003 // -------------------------------------------------------------------------
00004 #include <gtkmm.h>
00005 #include "UniOscilChannel.h"
00006 #include "UDefaultFunctions.h"
00007 #include "GuiPM.h"
00008 #include "USignals.h"
00009 #include "UScale.h"
00010 #include "plugins.h"
00011 #include "global_macros.h"
00012 // -------------------------------------------------------------------------
00018 class UDiagram : public UDefaultFunctions<Gtk::Fixed>
00019 {
00020     public:
00021         UDiagram();
00022         explicit UDiagram(GtkmmBaseType::BaseObjectType* gobject);
00023         virtual ~UDiagram();
00024 
00025         virtual void process_sensor(UniSetTypes::ObjectId,UniSetTypes::ObjectId,long);
00026         void startup_init(void);
00027 
00028         static std::string timeToString(time_t tm=time(0), std::string brk=""); 
00029         static std::string dateToString(time_t tm=time(0), std::string brk=""); 
00030         static bool createDir( const std::string dir );
00031         void timeToInt(long time,int &hour, int &min, int &sec); 
00033     protected:
00034         enum ScalePosition
00035         {
00036             LEFT = 0,
00037             RIGHT,
00038             TOP,
00039             BOTTOM
00040         };
00041         virtual bool on_plot_area_event(GdkEvent *event);
00042         virtual void on_add(Gtk::Widget* w);
00043         virtual void on_remove(Gtk::Widget* w);
00044         virtual void diagram_resize(Gtk::Allocation& alloc);
00045         virtual void on_realize();
00046         virtual bool on_expose_event(GdkEventExpose*);
00047         virtual void set_connector(const ConnectorRef& connector) throw();
00048         virtual void on_connect() throw();
00049         virtual void on_disconnect() throw();
00050         virtual void draw_min_value();
00051 
00052         bool on_timer_tick();
00053 
00054         Gtk::VBox *topScaleBox;
00055         Gtk::VBox *bottomScaleBox;
00056         Gtk::HBox *leftScaleBox;
00057         Gtk::HBox *rightScaleBox;
00058         HScale *topScale;
00059         HScale *bottomScale;
00060         VScale *leftScale;
00061         VScale *rightScale;
00062         Web *plot_area;
00063         Gtk::Table *table;
00064         Gtk::Image *BGImage;
00065         Gtk::Image *expandBGImage;
00066 
00067         Glib::RefPtr<Pango::Layout> tooltip_layout;
00068         Glib::RefPtr<Gdk::Pixbuf> tooltip_image;
00069 
00070         Glib::RefPtr<Pango::Layout> minValue_layout;
00071 
00072     private:
00073         void ctor();
00074         sigc::connection tmr;
00075 
00076         void connect_child(Gtk::Widget* child);
00077         void disconnect_child(Gtk::Widget& child);
00078 
00079         void set_child_connector(Gtk::Widget&);
00080 
00081         void on_web_enable_changed();
00082         void on_web_color_changed();
00083         void on_scales_enable_changed();
00084         void on_scales_range_changed();
00085         void on_scales_autoscale_changed();
00086         void on_font_changed();
00087         void on_font_color_changed();
00088         void on_scale_color_changed();
00089         void on_v_scale_changed();
00090         void on_h_scale_changed();
00091         void on_average_changed();
00092         void on_plot_bg_color_changed();
00093         void on_bg_image_changed();
00094         void on_expand_bg_image_changed();
00095         void on_bg_border_width_changed();
00096         void on_refresh_timeout_changed();
00097         void on_tooltip_image_changed();
00098         void on_tooltip_font_changed();
00099         void on_enable_min_value_changed();
00100         void on_min_value_font_changed();
00101         void on_min_value_text_line_num_changed();
00102         void on_history_enable_changed();
00103         void on_history_dir_changed();
00104 
00105         void save_channel();
00106         void save_all_channels();
00107         void save_channel_in_file(int channel_num, string filename);
00108         void save_all_channels_in_one_file();
00109         void diagram_expand();
00110         inline void set_diagram_web(){ prop_enableWeb.set_value(!prop_enableWeb);};
00111 
00112         typedef std::vector<UniOscilChannel*> ChannelsList;
00113         ChannelsList channels;
00114 
00115         struct CnannelData{
00116             CnannelData():
00117             value(0),
00118 //          name(""),
00119             color("black")
00120             {
00121             };
00122             float value;
00123             Gdk::Color color;
00124 //          string name;
00125         };
00126         typedef std::map<int,CnannelData> MinValueChannelMap;
00127         MinValueChannelMap min_value_channels;
00128 
00129         typedef std::map<int,Gdk::Color> MinValueLine;
00130         typedef std::map<float,MinValueLine> MinValueMap;
00131         MinValueMap min_value;
00132 
00133         struct CnannelHistoryData{
00134             CnannelHistoryData():
00135             value(0),
00136             tm()
00137             {
00138             };
00139             float value;
00140             time_t tm;
00141         }__attribute__((packed));
00142         typedef std::map<int,CnannelHistoryData> CnannelsDataMap;
00143         typedef std::map<double,CnannelsDataMap> HistoryMap;
00144         HistoryMap history;
00145 
00146         int width;
00147         int height;
00148         double point_x;
00149         int ch_num;
00150         double range;
00151         double average;
00152         double last_average;
00153         bool show_tooltip;
00154         bool is_show;
00155         bool is_expand;
00156         int widget_width;
00157         int widget_height;
00158         int widget_x;
00159         int widget_y;
00160 
00161         std::string history_file_fullname;
00162         Gtk::Menu* menu_popup;              
00163         Gtk::ImageMenuItem* mi_set_expand;      
00164         Gtk::ImageMenuItem* mi_set_web;         
00165         Gtk::ImageMenuItem* mi_save_all_in_one;     
00166         Gtk::ImageMenuItem* mi_save_channel;        
00167         Gtk::ImageMenuItem* mi_save_all_channels;   
00168         int save_channel_num;
00169 
00170         SensorProp averageSensor;
00171         ADD_PROPERTY( prop_staticAverage, bool )        
00172         ADD_PROPERTY( prop_average_value, float )       
00173         ADD_PROPERTY( prop_precision, int )         
00174         ADD_PROPERTY( prop_refresh_timeout, int )       
00175         ADD_PROPERTY( prop_dynamicLevels, bool )        
00176         ADD_PROPERTY( prop_highWarnLevel, float )       
00177         ADD_PROPERTY( prop_highCritLevel, float )       
00178         ADD_PROPERTY( prop_disableHighLevels, bool )        
00179         ADD_PROPERTY( prop_lowWarnLevel, float )        
00180         ADD_PROPERTY( prop_lowCritLevel, float )        
00181         ADD_PROPERTY( prop_disableLowLevels, bool )     
00182         ADD_PROPERTY( prop_infoColor, Gdk::Color )      
00183         ADD_PROPERTY( prop_warnColor, Gdk::Color )      
00184         ADD_PROPERTY( prop_critColor, Gdk::Color )      
00185         ADD_PROPERTY( prop_useGradientColor, bool )     
00186         ADD_PROPERTY( prop_insensColor, Gdk::Color )        
00187         ADD_PROPERTY( prop_webColor, Gdk::Color )       
00188         ADD_PROPERTY( prop_enableWeb, bool )            
00189         ADD_PROPERTY( prop_scaleColor, Gdk::Color )     
00190         ADD_PROPERTY( prop_scaleLabelColor, Gdk::Color )    
00191         ADD_PROPERTY( prop_scaleLabelFont, Glib::ustring )  
00192         ADD_PROPERTY( prop_scaleLabelFontSize, int )        
00193         ADD_PROPERTY( prop_topScale, bool )         
00194         ADD_PROPERTY( prop_bottomScale, bool )          
00195         ADD_PROPERTY( prop_leftScale, bool )            
00196         ADD_PROPERTY( prop_rightScale, bool )           
00197         ADD_PROPERTY( prop_Min, float )             
00198         ADD_PROPERTY( prop_Max, float )             
00199         ADD_PROPERTY( prop_XmaxMin, int )           
00200         ADD_PROPERTY( prop_XmaxMaj, int )           
00201         ADD_PROPERTY( prop_YmaxMin, int )           
00202         ADD_PROPERTY( prop_YmaxMaj, int )           
00203         ADD_PROPERTY( prop_BGImagePath, Glib::ustring)      
00204         ADD_PROPERTY( prop_expandBGImagePath, Glib::ustring)    
00205         ADD_PROPERTY( prop_bgBorderWidth, int)          
00206         ADD_PROPERTY( prop_enableMinValue, bool )       
00207         ADD_PROPERTY( prop_minValueNum, int )           
00208         ADD_PROPERTY( prop_minValueTextLineNum, int )       
00209         ADD_PROPERTY( prop_enableMinValueThreshold, bool )  
00210         ADD_PROPERTY( prop_minValueThreshold, float )       
00211         ADD_PROPERTY( prop_minValueTextFixedPosition, bool )    
00212         ADD_PROPERTY( prop_minValueTextColor, Gdk::Color )  
00213         ADD_PROPERTY( prop_minValueDynamicColor, bool )     
00214         ADD_PROPERTY( prop_minValueTextFont, Glib::ustring )    
00215         ADD_PROPERTY( prop_minValueTextFontSize, int )      
00216         ADD_PROPERTY( prop_minValueDashStep, double )       
00217         ADD_PROPERTY( prop_minValueDashOffset, double )     
00218         ADD_PROPERTY( prop_enableTooltip, bool )        
00219         ADD_PROPERTY( prop_tooltipImagePath, Glib::ustring) 
00220         ADD_PROPERTY( prop_tooltipImageWidth, int )     
00221         ADD_PROPERTY( prop_tooltipImageHeight, int )        
00222         ADD_PROPERTY( prop_tooltipLabelColor, Gdk::Color )  
00223         ADD_PROPERTY( prop_tooltipDynamicColor, bool )      
00224         ADD_PROPERTY( prop_tooltipLabelFont, Glib::ustring )    
00225         ADD_PROPERTY( prop_tooltipLabelFontSize, int )      
00226         ADD_PROPERTY( prop_enableHisory, bool )         
00227         ADD_PROPERTY( prop_dir, Glib::ustring )         
00228         ADD_PROPERTY( prop_historyPointInMem, long )        
00230         DISALLOW_COPY_AND_ASSIGN(UDiagram);
00231 };
00232 // -------------------------------------------------------------------------
00233 template<>
00234         inline GType UObj_Get_Type<UDiagram>()
00235 {
00236     static GType gtype = 0;
00237     if (gtype)
00238         return gtype;
00239 
00240     UDiagram* dummy = new UDiagram();
00241     GtkContainerClass* container_klass = GTK_CONTAINER_GET_CLASS( dummy->gobj() );
00242 
00243     gtype = G_OBJECT_TYPE(dummy->gobj());
00244     delete( dummy );
00245     Glib::wrap_register(gtype, &UObj_Wrap_New<UDiagram>);
00246 
00247     return gtype;
00248 }
00249 #endif

Документация по UniWidgets. Последние изменения: Fri Oct 10 09:57:50 2014. Создано системой  doxygen 1.5.9