Author: Yu Chen <[email protected]>
Date:   Thu Nov 24 10:30:31 2011 +0800

Eanble preview starts from beginning again if the timeslider is on last frame 
and play is pressed.
Cleanup the paly/pause button icons code.

---

 synfig-studio/src/gui/preview.cpp |   33 +++++++++++++++++++--------------
 synfig-studio/src/gui/preview.h   |    2 +-
 2 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/synfig-studio/src/gui/preview.cpp 
b/synfig-studio/src/gui/preview.cpp
index 0bc5dd3..6492ea5 100644
--- a/synfig-studio/src/gui/preview.cpp
+++ b/synfig-studio/src/gui/preview.cpp
@@ -765,7 +765,7 @@ void studio::Widget_Preview::clear()
 
 void studio::Widget_Preview::play()
 {
-       if(preview && !playing)
+       if(preview)
        {
                //synfig::info("Playing at %lf",adj_time_scrub.get_value());
                //audiotime = adj_time_scrub.get_value();
@@ -789,7 +789,6 @@ void studio::Widget_Preview::play()
                timecon = 
Glib::signal_timeout().connect(sigc::mem_fun(*this,&Widget_Preview::play_update),timeout);
                timer.reset();
        }
-
 }
 
 void studio::Widget_Preview::play_pause()
@@ -798,6 +797,15 @@ void studio::Widget_Preview::play_pause()
        signal_pause()();
        if(audio) audio->stop(); //!< stop the audio
        //synfig::info("Stopping...");
+
+       Gtk::Image *icon;
+       icon = manage(new Gtk::Image(Gtk::StockID("synfig-animate_play"), 
Gtk::ICON_SIZE_BUTTON));
+       play_pausebutton->remove();
+       play_pausebutton->add(*icon);
+       play_pausebutton->set_tooltip_text(_("Play"));
+       icon->set_padding(0,0);
+       icon->show();
+       
 }
 
 void studio::Widget_Preview::pause()
@@ -810,28 +818,25 @@ void studio::Widget_Preview::pause()
 void studio::Widget_Preview::on_play_pause_pressed()
 {
        bool play_flag;
-       Gtk::Image *icon1;
+       float begin = preview->get_begintime();
+       float end = preview->get_endtime();
+       float current = adj_time_scrub.get_value();
+       Gtk::Image *icon;
 
        if(!playing)
        {
-               icon1 = manage(new 
Gtk::Image(Gtk::StockID("synfig-animate_pause"), Gtk::ICON_SIZE_BUTTON));
                play_pausebutton->remove();
-               play_pausebutton->add(*icon1);
+               if(current == end) adj_time_scrub.set_value(begin);
+               icon = manage(new 
Gtk::Image(Gtk::StockID("synfig-animate_pause"), Gtk::ICON_SIZE_BUTTON));
                play_pausebutton->set_tooltip_text(_("Pause"));
-               icon1->set_padding(0,0);
-               icon1->show();
+               play_pausebutton->add(*icon);
+               icon->set_padding(0,0);
+               icon->show();
 
                play_flag=true;
        }
        else
        {
-               icon1 = manage(new 
Gtk::Image(Gtk::StockID("synfig-animate_play"), Gtk::ICON_SIZE_BUTTON));
-               play_pausebutton->remove();
-               play_pausebutton->add(*icon1);
-               play_pausebutton->set_tooltip_text(_("Play"));
-               icon1->set_padding(0,0);
-               icon1->show();
-
                play_flag=false;
        }
        if(play_flag) play(); else pause();
diff --git a/synfig-studio/src/gui/preview.h b/synfig-studio/src/gui/preview.h
index 39e2352..664492d 100644
--- a/synfig-studio/src/gui/preview.h
+++ b/synfig-studio/src/gui/preview.h
@@ -223,7 +223,7 @@ class Widget_Preview : public Gtk::Table
        void preview_draw();
 
        sigc::signal<void,float>        signal_play_;
-       sigc::signal<void>                      signal_pause_;
+       sigc::signal<void>              signal_pause_;
        sigc::signal<void,float>        signal_seek_;
 
 public:


------------------------------------------------------------------------------
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

Reply via email to