[Synfig-devl] Carlos Lopez : Add Play/Stop button to the Frame Dial.

2009-08-01 Thread Genete
Module: synfig
Branch: master
Commit: f2a5ca9cf3c770c4eb236d0c5c1ae7ecab242787
URL:
http://synfig.git.sourceforge.net/git/gitweb.cgi?p=synfig;a=commit;h=f2a5ca9cf3c770c4eb236d0c5c1ae7ecab242787

Author: Carlos Lopez car...@pcnuevo.(none)
Date:   Mon Jun 22 20:08:36 2009 +0200

Add Play/Stop button to the Frame Dial.

---

 synfig-studio/trunk/src/gtkmm/canvasview.cpp |   35 +++--
 synfig-studio/trunk/src/gtkmm/canvasview.h   |4 +++
 synfig-studio/trunk/src/gtkmm/framedial.cpp  |9 --
 synfig-studio/trunk/src/gtkmm/framedial.h|   12 ++---
 4 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp 
b/synfig-studio/trunk/src/gtkmm/canvasview.cpp
index 32530cd..7c3aa0a 100644
--- a/synfig-studio/trunk/src/gtkmm/canvasview.cpp
+++ b/synfig-studio/trunk/src/gtkmm/canvasview.cpp
@@ -99,7 +99,6 @@
 #include preview.h
 #include audiocontainer.h
 #include widget_timeslider.h
-#include framedial.h
 #include keyframedial.h
 
 #include synfigapp/main.h
@@ -997,13 +996,16 @@ CanvasView::create_time_bar()
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)
);
@@ -3154,8 +3156,8 @@ CanvasView::play()
return;
}
}
+   on_play_stop_pressed();
is_playing_=false;
-
time_adjustment().set_value(endtime);
time_adjustment().value_changed();
 }
@@ -3919,3 +3921,30 @@ CanvasView::on_delete_event(GdkEventAny* event 
__attribute__ ((unused)))
 
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();
+}
diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.h 
b/synfig-studio/trunk/src/gtkmm/canvasview.h
index 6f1f87e..844a57f 100644
--- a/synfig-studio/trunk/src/gtkmm/canvasview.h
+++ b/synfig-studio/trunk/src/gtkmm/canvasview.h
@@ -65,6 +65,7 @@
 
 #include dialog_waypoint.h
 #include dialog_keyframe.h
+#include framedial.h
 
 #include duckmatic.h
 #include gtkmm/scale.h
@@ -263,6 +264,7 @@ private:
Gtk::Widget *timebar;
Gtk::Button *animatebutton;
Gtk::Button *keyframebutton;
+   FrameDial *framedial;
 
 
//! Shows current time and allows edition
@@ -679,6 +681,8 @@ private:
//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);
diff --git a/synfig-studio/trunk/src/gtkmm/framedial.cpp 
b/synfig-studio/trunk/src/gtkmm/framedial.cpp
index a361bd3..0392f4b 100644
--- a/synfig-studio/trunk/src/gtkmm/framedial.cpp
+++ b/synfig-studio/trunk/src/gtkmm/framedial.cpp
@@ -49,7 +49,7 @@ using namespace studio;
 
 /* === 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);
 
@@ -57,6 +57,8 @@ FrameDial::FrameDial(): Gtk::Table(3, 1, false)
_(Seek to Begin));
seek_prev_frame = create_icon(iconsize, Gtk::Stock::MEDIA_REWIND,
_(Previous Frame));
+   play_stop = create_icon(iconsize, Gtk::Stock::MEDIA_PLAY,
+ 

[Synfig-devl] Carlos Lopez : Add Play/Stop button to the Frame Dial.

2009-07-27 Thread Genete
Module: synfig
Branch: genete_master
Commit: 44a6e894eaa7af4bcebb7c317a303f547878e01c
URL:
http://synfig.git.sourceforge.net/git/gitweb.cgi?p=synfig;a=commit;h=44a6e894eaa7af4bcebb7c317a303f547878e01c

Author: Carlos Lopez car...@pcnuevo.(none)
Date:   Mon Jun 22 20:08:36 2009 +0200

Add Play/Stop button to the Frame Dial.

---

 synfig-studio/trunk/src/gtkmm/canvasview.cpp |   35 +++--
 synfig-studio/trunk/src/gtkmm/canvasview.h   |4 +++
 synfig-studio/trunk/src/gtkmm/framedial.cpp  |9 --
 synfig-studio/trunk/src/gtkmm/framedial.h|   12 ++---
 4 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp 
b/synfig-studio/trunk/src/gtkmm/canvasview.cpp
index 32530cd..7c3aa0a 100644
--- a/synfig-studio/trunk/src/gtkmm/canvasview.cpp
+++ b/synfig-studio/trunk/src/gtkmm/canvasview.cpp
@@ -99,7 +99,6 @@
 #include preview.h
 #include audiocontainer.h
 #include widget_timeslider.h
-#include framedial.h
 #include keyframedial.h
 
 #include synfigapp/main.h
@@ -997,13 +996,16 @@ CanvasView::create_time_bar()
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)
);
@@ -3154,8 +3156,8 @@ CanvasView::play()
return;
}
}
+   on_play_stop_pressed();
is_playing_=false;
-
time_adjustment().set_value(endtime);
time_adjustment().value_changed();
 }
@@ -3919,3 +3921,30 @@ CanvasView::on_delete_event(GdkEventAny* event 
__attribute__ ((unused)))
 
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();
+}
diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.h 
b/synfig-studio/trunk/src/gtkmm/canvasview.h
index 6f1f87e..844a57f 100644
--- a/synfig-studio/trunk/src/gtkmm/canvasview.h
+++ b/synfig-studio/trunk/src/gtkmm/canvasview.h
@@ -65,6 +65,7 @@
 
 #include dialog_waypoint.h
 #include dialog_keyframe.h
+#include framedial.h
 
 #include duckmatic.h
 #include gtkmm/scale.h
@@ -263,6 +264,7 @@ private:
Gtk::Widget *timebar;
Gtk::Button *animatebutton;
Gtk::Button *keyframebutton;
+   FrameDial *framedial;
 
 
//! Shows current time and allows edition
@@ -679,6 +681,8 @@ private:
//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);
diff --git a/synfig-studio/trunk/src/gtkmm/framedial.cpp 
b/synfig-studio/trunk/src/gtkmm/framedial.cpp
index a361bd3..0392f4b 100644
--- a/synfig-studio/trunk/src/gtkmm/framedial.cpp
+++ b/synfig-studio/trunk/src/gtkmm/framedial.cpp
@@ -49,7 +49,7 @@ using namespace studio;
 
 /* === 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);
 
@@ -57,6 +57,8 @@ FrameDial::FrameDial(): Gtk::Table(3, 1, false)
_(Seek to Begin));
seek_prev_frame = create_icon(iconsize, Gtk::Stock::MEDIA_REWIND,
_(Previous Frame));
+   play_stop = create_icon(iconsize, Gtk::Stock::MEDIA_PLAY,
+  

[Synfig-devl] Carlos Lopez : Add Play/Stop button to the Frame Dial.

2009-07-27 Thread Genete
Module: synfig
Branch: genete_master
Commit: f2a5ca9cf3c770c4eb236d0c5c1ae7ecab242787
URL:
http://synfig.git.sourceforge.net/git/gitweb.cgi?p=synfig;a=commit;h=f2a5ca9cf3c770c4eb236d0c5c1ae7ecab242787

Author: Carlos Lopez car...@pcnuevo.(none)
Date:   Mon Jun 22 20:08:36 2009 +0200

Add Play/Stop button to the Frame Dial.

---

 synfig-studio/trunk/src/gtkmm/canvasview.cpp |   35 +++--
 synfig-studio/trunk/src/gtkmm/canvasview.h   |4 +++
 synfig-studio/trunk/src/gtkmm/framedial.cpp  |9 --
 synfig-studio/trunk/src/gtkmm/framedial.h|   12 ++---
 4 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp 
b/synfig-studio/trunk/src/gtkmm/canvasview.cpp
index 32530cd..7c3aa0a 100644
--- a/synfig-studio/trunk/src/gtkmm/canvasview.cpp
+++ b/synfig-studio/trunk/src/gtkmm/canvasview.cpp
@@ -99,7 +99,6 @@
 #include preview.h
 #include audiocontainer.h
 #include widget_timeslider.h
-#include framedial.h
 #include keyframedial.h
 
 #include synfigapp/main.h
@@ -997,13 +996,16 @@ CanvasView::create_time_bar()
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)
);
@@ -3154,8 +3156,8 @@ CanvasView::play()
return;
}
}
+   on_play_stop_pressed();
is_playing_=false;
-
time_adjustment().set_value(endtime);
time_adjustment().value_changed();
 }
@@ -3919,3 +3921,30 @@ CanvasView::on_delete_event(GdkEventAny* event 
__attribute__ ((unused)))
 
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();
+}
diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.h 
b/synfig-studio/trunk/src/gtkmm/canvasview.h
index 6f1f87e..844a57f 100644
--- a/synfig-studio/trunk/src/gtkmm/canvasview.h
+++ b/synfig-studio/trunk/src/gtkmm/canvasview.h
@@ -65,6 +65,7 @@
 
 #include dialog_waypoint.h
 #include dialog_keyframe.h
+#include framedial.h
 
 #include duckmatic.h
 #include gtkmm/scale.h
@@ -263,6 +264,7 @@ private:
Gtk::Widget *timebar;
Gtk::Button *animatebutton;
Gtk::Button *keyframebutton;
+   FrameDial *framedial;
 
 
//! Shows current time and allows edition
@@ -679,6 +681,8 @@ private:
//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);
diff --git a/synfig-studio/trunk/src/gtkmm/framedial.cpp 
b/synfig-studio/trunk/src/gtkmm/framedial.cpp
index a361bd3..0392f4b 100644
--- a/synfig-studio/trunk/src/gtkmm/framedial.cpp
+++ b/synfig-studio/trunk/src/gtkmm/framedial.cpp
@@ -49,7 +49,7 @@ using namespace studio;
 
 /* === 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);
 
@@ -57,6 +57,8 @@ FrameDial::FrameDial(): Gtk::Table(3, 1, false)
_(Seek to Begin));
seek_prev_frame = create_icon(iconsize, Gtk::Stock::MEDIA_REWIND,
_(Previous Frame));
+   play_stop = create_icon(iconsize, Gtk::Stock::MEDIA_PLAY,
+  

[Synfig-devl] Carlos Lopez : Add Play/Stop button to the Frame Dial.

2009-07-16 Thread Konstantin Dmitriev
Module: synfig
Branch: zelgadis_master
Commit: f2a5ca9cf3c770c4eb236d0c5c1ae7ecab242787
URL:
http://synfig.git.sourceforge.net/git/gitweb.cgi?p=synfig;a=commit;h=f2a5ca9cf3c770c4eb236d0c5c1ae7ecab242787

Author: Carlos Lopez car...@pcnuevo.(none)
Date:   Mon Jun 22 20:08:36 2009 +0200

Add Play/Stop button to the Frame Dial.

---

 synfig-studio/trunk/src/gtkmm/canvasview.cpp |   35 +++--
 synfig-studio/trunk/src/gtkmm/canvasview.h   |4 +++
 synfig-studio/trunk/src/gtkmm/framedial.cpp  |9 --
 synfig-studio/trunk/src/gtkmm/framedial.h|   12 ++---
 4 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp 
b/synfig-studio/trunk/src/gtkmm/canvasview.cpp
index 32530cd..7c3aa0a 100644
--- a/synfig-studio/trunk/src/gtkmm/canvasview.cpp
+++ b/synfig-studio/trunk/src/gtkmm/canvasview.cpp
@@ -99,7 +99,6 @@
 #include preview.h
 #include audiocontainer.h
 #include widget_timeslider.h
-#include framedial.h
 #include keyframedial.h
 
 #include synfigapp/main.h
@@ -997,13 +996,16 @@ CanvasView::create_time_bar()
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)
);
@@ -3154,8 +3156,8 @@ CanvasView::play()
return;
}
}
+   on_play_stop_pressed();
is_playing_=false;
-
time_adjustment().set_value(endtime);
time_adjustment().value_changed();
 }
@@ -3919,3 +3921,30 @@ CanvasView::on_delete_event(GdkEventAny* event 
__attribute__ ((unused)))
 
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();
+}
diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.h 
b/synfig-studio/trunk/src/gtkmm/canvasview.h
index 6f1f87e..844a57f 100644
--- a/synfig-studio/trunk/src/gtkmm/canvasview.h
+++ b/synfig-studio/trunk/src/gtkmm/canvasview.h
@@ -65,6 +65,7 @@
 
 #include dialog_waypoint.h
 #include dialog_keyframe.h
+#include framedial.h
 
 #include duckmatic.h
 #include gtkmm/scale.h
@@ -263,6 +264,7 @@ private:
Gtk::Widget *timebar;
Gtk::Button *animatebutton;
Gtk::Button *keyframebutton;
+   FrameDial *framedial;
 
 
//! Shows current time and allows edition
@@ -679,6 +681,8 @@ private:
//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);
diff --git a/synfig-studio/trunk/src/gtkmm/framedial.cpp 
b/synfig-studio/trunk/src/gtkmm/framedial.cpp
index a361bd3..0392f4b 100644
--- a/synfig-studio/trunk/src/gtkmm/framedial.cpp
+++ b/synfig-studio/trunk/src/gtkmm/framedial.cpp
@@ -49,7 +49,7 @@ using namespace studio;
 
 /* === 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);
 
@@ -57,6 +57,8 @@ FrameDial::FrameDial(): Gtk::Table(3, 1, false)
_(Seek to Begin));
seek_prev_frame = create_icon(iconsize, Gtk::Stock::MEDIA_REWIND,
_(Previous Frame));
+   play_stop = create_icon(iconsize, Gtk::Stock::MEDIA_PLAY,
+

[Synfig-devl] Carlos Lopez : Add Play/Stop button to the Frame Dial.

2009-07-13 Thread Genete
Module: synfig
Branch: master
Commit: 44a6e894eaa7af4bcebb7c317a303f547878e01c
URL:
http://synfig.git.sourceforge.net/git/gitweb.cgi?p=synfig;a=commit;h=44a6e894eaa7af4bcebb7c317a303f547878e01c

Author: Carlos Lopez car...@pcnuevo.(none)
Date:   Mon Jun 22 20:08:36 2009 +0200

Add Play/Stop button to the Frame Dial.

---

 synfig-studio/trunk/src/gtkmm/canvasview.cpp |   35 +++--
 synfig-studio/trunk/src/gtkmm/canvasview.h   |4 +++
 synfig-studio/trunk/src/gtkmm/framedial.cpp  |9 --
 synfig-studio/trunk/src/gtkmm/framedial.h|   12 ++---
 4 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp 
b/synfig-studio/trunk/src/gtkmm/canvasview.cpp
index 32530cd..7c3aa0a 100644
--- a/synfig-studio/trunk/src/gtkmm/canvasview.cpp
+++ b/synfig-studio/trunk/src/gtkmm/canvasview.cpp
@@ -99,7 +99,6 @@
 #include preview.h
 #include audiocontainer.h
 #include widget_timeslider.h
-#include framedial.h
 #include keyframedial.h
 
 #include synfigapp/main.h
@@ -997,13 +996,16 @@ CanvasView::create_time_bar()
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)
);
@@ -3154,8 +3156,8 @@ CanvasView::play()
return;
}
}
+   on_play_stop_pressed();
is_playing_=false;
-
time_adjustment().set_value(endtime);
time_adjustment().value_changed();
 }
@@ -3919,3 +3921,30 @@ CanvasView::on_delete_event(GdkEventAny* event 
__attribute__ ((unused)))
 
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();
+}
diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.h 
b/synfig-studio/trunk/src/gtkmm/canvasview.h
index 6f1f87e..844a57f 100644
--- a/synfig-studio/trunk/src/gtkmm/canvasview.h
+++ b/synfig-studio/trunk/src/gtkmm/canvasview.h
@@ -65,6 +65,7 @@
 
 #include dialog_waypoint.h
 #include dialog_keyframe.h
+#include framedial.h
 
 #include duckmatic.h
 #include gtkmm/scale.h
@@ -263,6 +264,7 @@ private:
Gtk::Widget *timebar;
Gtk::Button *animatebutton;
Gtk::Button *keyframebutton;
+   FrameDial *framedial;
 
 
//! Shows current time and allows edition
@@ -679,6 +681,8 @@ private:
//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);
diff --git a/synfig-studio/trunk/src/gtkmm/framedial.cpp 
b/synfig-studio/trunk/src/gtkmm/framedial.cpp
index a361bd3..0392f4b 100644
--- a/synfig-studio/trunk/src/gtkmm/framedial.cpp
+++ b/synfig-studio/trunk/src/gtkmm/framedial.cpp
@@ -49,7 +49,7 @@ using namespace studio;
 
 /* === 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);
 
@@ -57,6 +57,8 @@ FrameDial::FrameDial(): Gtk::Table(3, 1, false)
_(Seek to Begin));
seek_prev_frame = create_icon(iconsize, Gtk::Stock::MEDIA_REWIND,
_(Previous Frame));
+   play_stop = create_icon(iconsize, Gtk::Stock::MEDIA_PLAY,
+