Author: Yu Chen <[email protected]>
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl