|
UniWidgets
1.0.0
|
00001 00002 // ------------------------------------------------------------------------- 00003 #ifndef SlideEvent_H_ 00004 #define SlideEvent_H_ 00005 // ------------------------------------------------------------------------- 00006 #include <ostream> 00007 #include <gtkmm.h> 00008 // ------------------------------------------------------------------------- 00059 class SlideEvent 00060 { 00061 public: 00062 00063 SlideEvent(); 00064 ~SlideEvent(); 00065 00066 void set_widget( Gtk::Widget& w ); 00067 00071 inline void set_w_zone( double w ){ w_zone = w; } 00072 00074 inline void set_way_length( double l ){ way_length = l; } 00075 00076 enum SlideEventID 00077 { 00078 toLeftSlideEvent, 00079 toRightSlideEvent, 00080 toDownSlideEvent, 00081 toUpSlideEvent 00082 }; 00083 friend std::ostream& operator<<( std::ostream& os, SlideEventID i ); 00084 00085 typedef sigc::signal<void,SlideEventID> SlideEvent_Signal; 00086 00087 SlideEvent_Signal signal_slide_event(); 00088 00089 // для удобства можно подключится к конкретному событию 00090 typedef sigc::signal<void> SlideVoidEvent_Signal; 00091 SlideVoidEvent_Signal signal_toleft_slide_event(); 00092 SlideVoidEvent_Signal signal_toright_slide_event(); 00093 SlideVoidEvent_Signal signal_toup_slide_event(); 00094 SlideVoidEvent_Signal signal_todown_slide_event(); 00095 00096 protected: 00097 00098 bool on_motion_event(GdkEvent *event); 00099 Gtk::Widget* widget; 00100 00101 double prev_x; 00102 double prev_y; 00103 gint32 prev_t; 00104 00105 bool but_pressed; 00106 double w_zone; 00107 double way_length; 00108 00109 SlideEvent_Signal s_event; 00110 SlideVoidEvent_Signal l_event; 00111 SlideVoidEvent_Signal r_event; 00112 SlideVoidEvent_Signal u_event; 00113 SlideVoidEvent_Signal d_event; 00114 00115 private: 00116 }; 00117 // ------------------------------------------------------------------------- 00118 #endif // SlideEvent_H_ 00119 // -------------------------------------------------------------------------
1.7.6.1