Author: Yu Chen <jco...@gmail.com> Date: Mon Nov 28 09:04:29 2011 +0800
Add seek to previous and next rendered frame buttons since scrollbar is replaced with scale widget --- synfig-studio/src/gui/preview.cpp | 45 ++++++++++++++++++++++++++++++++++++- synfig-studio/src/gui/preview.h | 3 ++ 2 files changed, 47 insertions(+), 1 deletions(-) diff --git a/synfig-studio/src/gui/preview.cpp b/synfig-studio/src/gui/preview.cpp index ff5655d..773a2d4 100644 --- a/synfig-studio/src/gui/preview.cpp +++ b/synfig-studio/src/gui/preview.cpp @@ -354,7 +354,22 @@ playing(false) //2nd row hbox = manage(new Gtk::HBox); - //play pause button + //prevframe play/pause nextframe buttons + + //prev rendered frame + Gtk::Button *prev_framebutton; + Gtk::Image *icon0 = manage(new Gtk::Image(Gtk::StockID("synfig-animate_seek_prev_frame"), Gtk::ICON_SIZE_BUTTON)); + prev_framebutton = manage(new class Gtk::Button()); + prev_framebutton->set_tooltip_text(_("Prev frame")); + icon0->set_padding(0,0); + icon0->show(); + prev_framebutton->add(*icon0); + prev_framebutton->set_relief(Gtk::RELIEF_NONE); + prev_framebutton->show(); + prev_framebutton->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::prev_frame)); + hbox->pack_start(*prev_framebutton, Gtk::PACK_SHRINK, 0); + + //play pause Gtk::Image *icon1 = manage(new Gtk::Image(Gtk::StockID("synfig-animate_play"), Gtk::ICON_SIZE_BUTTON)); play_pausebutton = manage(new class Gtk::Button()); play_pausebutton->set_tooltip_text(_("Play")); @@ -366,6 +381,21 @@ playing(false) play_pausebutton->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::on_play_pause_pressed)); hbox->pack_start(*play_pausebutton, Gtk::PACK_SHRINK, 0); + //next rendered frame + Gtk::Button *next_framebutton; + Gtk::Image *icon2 = manage(new Gtk::Image(Gtk::StockID("synfig-animate_seek_next_frame"), Gtk::ICON_SIZE_BUTTON)); + next_framebutton = manage(new class Gtk::Button()); + next_framebutton->set_tooltip_text(_("Next frame")); + icon2->set_padding(0,0); + icon2->show(); + next_framebutton->add(*icon2); + next_framebutton->set_relief(Gtk::RELIEF_NONE); + next_framebutton->show(); + next_framebutton->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::next_frame)); + hbox->pack_start(*next_framebutton, Gtk::PACK_SHRINK, 0); + + //space between next frame button and loop button + button = &b_loop; IMAGIFY_BUTTON(button,"synfig-animate_loop",_("Loop")); hbox->pack_start(b_loop,Gtk::PACK_SHRINK,0); @@ -844,6 +874,19 @@ void studio::Widget_Preview::on_play_pause_pressed() if(play_flag) play(); else pause(); } +void studio::Widget_Preview::next_frame() +{ + float rate = preview->get_fps(); + adj_time_scrub.set_value((adj_time_scrub.get_value()*rate+1.000001)/rate); + +} + +void studio::Widget_Preview::prev_frame() +{ + float rate = preview->get_fps(); + adj_time_scrub.set_value((adj_time_scrub.get_value()*rate-0.99999)/rate); +} + bool studio::Widget_Preview::scroll_move_event(GdkEvent *event) { switch(event->type) diff --git a/synfig-studio/src/gui/preview.h b/synfig-studio/src/gui/preview.h index f79e990..a194c33 100644 --- a/synfig-studio/src/gui/preview.h +++ b/synfig-studio/src/gui/preview.h @@ -245,6 +245,9 @@ public: void on_play_pause_pressed(); + void prev_frame(); + void next_frame(); + void stoprender(); sigc::signal<void,float> &signal_play() {return signal_play_;} ------------------------------------------------------------------------------ Try before you buy = See our experts in action! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-dev2 _______________________________________________ Synfig-devl mailing list Synfig-devl@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/synfig-devl