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