UniWidgets  1.0.0
IButton.h
00001 #ifndef _IBUTTON_H
00002 #define _IBUTTON_H
00003 // -------------------------------------------------------------------------
00004 #include <uniwidgets/UDefaultFunctions.h>
00005 #include <uniwidgets/SensorProp.h>
00006 #include <global_macros.h>
00007 #include <gtkmm.h>
00008 #include <objects/SwitchRTVLogic.h>
00009 #include <objects/SimpleObject.h>
00010 #include <plugins.h>
00011 // -------------------------------------------------------------------------
00012 namespace UniWidgets
00013 {
00014 class ImageBlink;
00015 class SwitchRTVLogic;
00027 class IButton : public Gtk::ToggleButton
00028 {
00029 
00030 public:
00031     IButton();
00032     explicit IButton(Gtk::ToggleButton::BaseObjectType* gobject);
00033     ~IButton() {};
00034 
00035     ImageBlink* image_;                 
00036     bool current_state_;                    
00037     virtual void on_clicked();              
00038     void start_blink(const long type,const long mode);  
00039     void stop_blink(const long mode);           
00041 protected:
00042 
00043     /* Event handlers */
00044     virtual void on_realize();
00045 
00046 private:
00047     SwitchRTVLogic* logic;                  
00048     std::map<long, Glib::ustring > images_;         
00050     /* Methods */
00051     void constructor();
00052     void initialise_image();
00053     DISALLOW_COPY_AND_ASSIGN(IButton);
00054     /* Properties */
00055     //Картинки для двух состояний(нажата, отжата) и отсутствующая картинка
00056     ADD_PROPERTY( image0_path_, Glib::ustring )
00057     ADD_PROPERTY( image1_path_, Glib::ustring )
00058     ADD_PROPERTY( image0_alarm_path_, Glib::ustring )
00059     ADD_PROPERTY( image1_alarm_path_, Glib::ustring )
00060     ADD_PROPERTY( image0_sw_path_, Glib::ustring )
00061     ADD_PROPERTY( image1_sw_path_, Glib::ustring )
00062     /*Датчики команд переключения и состояния переключателя*/
00063     ADD_PROPERTY( state_di, UniSetTypes::ObjectId )
00064     ADD_PROPERTY( state_common_di, UniSetTypes::ObjectId )
00065     ADD_PROPERTY( cmd_state_di, UniSetTypes::ObjectId )
00066     ADD_PROPERTY( cmd_state_common_di, UniSetTypes::ObjectId )
00067     /*Возможность задания смежного управления.
00068     Например, со второй GUI станции как в проекте ЯУЗА*/
00069     ADD_PROPERTY( cmd_state_slave_di, UniSetTypes::ObjectId )
00070     ADD_PROPERTY( cmd_state_slave_common_di, UniSetTypes::ObjectId )
00071     ADD_PROPERTY( node, UniSetTypes::ObjectId )
00072     ADD_PROPERTY( object, long )
00073 };
00074 
00075 }
00076 #endif