00001
00021
00022
00023
00024
00025 #ifndef __SYNFIG_WIDGET_SOUND_H
00026 #define __SYNFIG_WIDGET_SOUND_H
00027
00028
00029 #include <ETL/handle>
00030
00031 #include <gtkmm/drawingarea.h>
00032
00033 #include "widget_timeslider.h"
00034
00035
00036
00037
00038
00039
00040
00041 namespace studio {
00042
00043 class AudioProfile;
00044 class AudioContainer;
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 class Widget_Sound : public Widget_Timeslider
00056 {
00057 etl::handle<AudioProfile> audioprof;
00058
00059
00060 virtual bool on_expose_event(GdkEventExpose *heh = 0);
00061
00062
00063 virtual bool on_motion_notify_event(GdkEventMotion* event);
00064 virtual bool on_button_press_event(GdkEventButton *event);
00065 virtual bool on_button_release_event(GdkEventButton *event);
00066
00067
00068 sigc::signal1<void,double> signal_start_scrubbing_;
00069 sigc::signal1<void,double> signal_scrub_;
00070 sigc::signal0<void> signal_stop_scrubbing_;
00071
00072 public:
00073 Widget_Sound();
00074 ~Widget_Sound();
00075
00076 public:
00077 bool set_profile(etl::handle<AudioProfile> p);
00078 etl::handle<AudioProfile> get_profile() const;
00079
00080
00081 sigc::signal1<void,double> & signal_start_scrubbing() {return signal_start_scrubbing_;}
00082 sigc::signal1<void,double> & signal_scrub() {return signal_scrub_;}
00083 sigc::signal0<void> & signal_stop_scrubbing() {return signal_stop_scrubbing_;}
00084
00085 public:
00086 void set_position(double t);
00087 double get_position() const;
00088
00089 public:
00090 void draw();
00091
00092 void clear();
00093 };
00094
00095 };
00096
00097
00098
00099 #endif