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

Reply via email to