Author: Yu Chen <[email protected]>
Date:   Thu Feb 23 22:42:56 2012 +0800

Add accelerator keys for prev/next frame, play/pause, loop

---

 synfig-studio/src/gui/preview.cpp |   42 +++++++++++++++++++++++++++++++++++++
 synfig-studio/src/gui/preview.h   |    1 +
 2 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/synfig-studio/src/gui/preview.cpp 
b/synfig-studio/src/gui/preview.cpp
index c118584..2c7a374 100644
--- a/synfig-studio/src/gui/preview.cpp
+++ b/synfig-studio/src/gui/preview.cpp
@@ -308,6 +308,9 @@ Widget_Preview::Widget_Preview():
        l_lasttime("0s"),
        playing(false)
 {
+       //catch key press event for shortcut keys
+       signal_key_press_event().connect(sigc::mem_fun(*this, 
&Widget_Preview::on_key_pressed));
+
        //connect to expose events
        //signal_expose_event().connect(sigc::mem_fun(*this, 
&studio::Widget_Preview::redraw));
 
@@ -1026,3 +1029,42 @@ void studio::Widget_Preview::eraseall()
                preview->clear();
        }
 }
+
+
+//shortcut keys TODO: customizable shortcut keys would be awesome.
+
+bool studio::Widget_Preview::on_key_pressed(GdkEventKey *ev)
+{
+       //previous rendered frame
+       if (ev->keyval == gdk_keyval_from_name("a"))
+       {
+               if(playing) pause();
+               seek_frame(-1);
+               return true;
+       }
+
+       //play/pause
+       if (ev->keyval == gdk_keyval_from_name("s"))
+       {
+               on_play_pause_pressed();
+               return true;
+       }
+
+       //next render frame
+       if (ev->keyval == gdk_keyval_from_name("d"))
+       {
+               if(playing) pause();
+               seek_frame(+1);
+               return true;
+       }
+
+       //loop
+       if (ev->keyval == gdk_keyval_from_name("f"))
+       {
+               if(get_loop_flag()) set_loop_flag(false);
+               else set_loop_flag(true);
+               return true;
+       }
+
+       return false;
+}
diff --git a/synfig-studio/src/gui/preview.h b/synfig-studio/src/gui/preview.h
index 28c031a..fb7e823 100644
--- a/synfig-studio/src/gui/preview.h
+++ b/synfig-studio/src/gui/preview.h
@@ -285,6 +285,7 @@ protected:
 private:
 
        Gtk::Button *play_pausebutton;
+       bool on_key_pressed(GdkEventKey*);
 };
 
 }; // END of namespace studio


------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to