#include "preview.h"
#include "audiocontainer.h"
#include "widget_timeslider.h"
-#include "framedial.h"
#include "keyframedial.h"
#include <synfigapp/main.h>
current_time_widget->show();
//Setup the FrameDial widget
- FrameDial *framedial = manage(new class FrameDial());
+ framedial = manage(new class FrameDial());
framedial->signal_seek_begin().connect(
sigc::bind(sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::seek_time), Time::begin())
);
framedial->signal_seek_prev_frame().connect(
sigc::bind(sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::seek_frame), -1)
);
+ framedial->signal_play_stop().connect(
+ sigc::mem_fun(*this, &studio::CanvasView::on_play_stop_pressed)
+ );
framedial->signal_seek_next_frame().connect(
sigc::bind(sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::seek_frame), 1)
);
return;
}
}
+ on_play_stop_pressed();
is_playing_=false;
-
time_adjustment().set_value(endtime);
time_adjustment().value_changed();
}
return true;
}
+
+//! Modify the play stop button apearence and play stop the animation
+void
+CanvasView::on_play_stop_pressed()
+{
+ Gtk::Image *icon;
+ Gtk::Button *stop_button;
+ stop_button=framedial->get_play_button();
+ bool play_flag;
+ if(!is_playing())
+ {
+ icon = manage(new Gtk::Image(Gtk::Stock::MEDIA_STOP, Gtk::IconSize::from_name("synfig-small_icon")));
+ stop_button->set_relief(Gtk::RELIEF_NORMAL);
+ play_flag=true;
+ }
+ else
+ {
+ icon = manage(new Gtk::Image(Gtk::Stock::MEDIA_PLAY, Gtk::IconSize::from_name("synfig-small_icon")));
+ stop_button->set_relief(Gtk::RELIEF_NONE);
+ play_flag=false;
+ }
+ stop_button->remove();
+ stop_button->add(*icon);
+ icon->set_padding(0, 0);
+ icon->show();
+ if(play_flag) play(); else stop();
+}
#include "dialog_waypoint.h"
#include "dialog_keyframe.h"
+#include "framedial.h"
#include "duckmatic.h"
#include <gtkmm/scale.h>
Gtk::Widget *timebar;
Gtk::Button *animatebutton;
Gtk::Button *keyframebutton;
+ FrameDial *framedial;
//! Shows current time and allows edition
//void on_audio_play();
bool on_audio_scrub();
+ void on_play_stop_pressed();
+
protected:
bool close_instance_when_safe();
bool on_delete_event(GdkEventAny* event);
/* === M E T H O D S ======================================================= */
-FrameDial::FrameDial(): Gtk::Table(3, 1, false)
+FrameDial::FrameDial(): Gtk::Table(5, 1, false)
{
Gtk::IconSize iconsize = Gtk::IconSize::from_name("synfig-small_icon");
_("Seek to Begin"));
seek_prev_frame = create_icon(iconsize, Gtk::Stock::MEDIA_REWIND,
_("Previous Frame"));
+ play_stop = create_icon(iconsize, Gtk::Stock::MEDIA_PLAY,
+ _("Play"));
seek_next_frame = create_icon(iconsize, Gtk::Stock::MEDIA_FORWARD,
_("Next Frame"));
seek_end = create_icon(iconsize, Gtk::Stock::MEDIA_NEXT,
attach(*seek_begin, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
attach(*seek_prev_frame, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
- attach(*seek_next_frame, 2, 3, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
- attach(*seek_end, 3, 4, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
+ attach(*play_stop, 2, 3, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
+ attach(*seek_next_frame, 3, 4, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
+ attach(*seek_end, 4, 5, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
}
Gtk::Button *
Gtk::Button *seek_begin;
Gtk::Button *seek_prev_frame;
+ Gtk::Button *play_stop;
Gtk::Button *seek_next_frame;
Gtk::Button *seek_end;
public:
FrameDial();
- Glib::SignalProxy0<void> signal_seek_begin() { return seek_begin->signal_clicked(); }
- Glib::SignalProxy0<void> signal_seek_prev_frame() { return seek_prev_frame->signal_clicked(); }
- Glib::SignalProxy0<void> signal_seek_next_frame() { return seek_next_frame->signal_clicked(); }
- Glib::SignalProxy0<void> signal_seek_end() { return seek_end->signal_clicked(); }
+ Glib::SignalProxy0<void> signal_seek_begin() { return seek_begin->signal_clicked(); }
+ Glib::SignalProxy0<void> signal_seek_prev_frame() { return seek_prev_frame->signal_clicked(); }
+ Glib::SignalProxy0<void> signal_play_stop() { return play_stop->signal_clicked(); }
+ Glib::SignalProxy0<void> signal_seek_next_frame() { return seek_next_frame->signal_clicked(); }
+ Glib::SignalProxy0<void> signal_seek_end() { return seek_end->signal_clicked(); }
+
+ Gtk::Button *get_play_button() { return play_stop; }
}; // END of class FrameDial