[gegl/mrg_ui] ui: add a 5s slideshow auto-next toggled with S
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl/mrg_ui] ui: add a 5s slideshow auto-next toggled with S
- Date: Thu, 6 Aug 2015 19:46:26 +0000 (UTC)
commit 816031c6341e92ae075e00211a1ed48367c750c1
Author: Oyvind Kolas <pippin gimp org>
Date: Wed Aug 5 17:00:28 2015 +0200
ui: add a 5s slideshow auto-next toggled with S
bin/mrg-ui.c | 32 +++++++++++++++++++++++++++++++-
1 files changed, 31 insertions(+), 1 deletions(-)
---
diff --git a/bin/mrg-ui.c b/bin/mrg-ui.c
index 2576c82..ad23a7f 100644
--- a/bin/mrg-ui.c
+++ b/bin/mrg-ui.c
@@ -83,8 +83,11 @@ struct _State {
int controls_timeout;
-
char **ops; // the operations part of the commandline, if any
+
+ float slide_pause;
+ int slide_enabled;
+ int slide_timeout;
};
@@ -299,6 +302,8 @@ int mrg_ui_main (int argc, char **argv, char **ops)
o.scale = 1.0;
o.render_quality = 1.0;
o.preview_quality = 2.0;
+ o.slide_pause = 5.0;
+ o.slide_enabled = 0;
if (access (argv[1], F_OK) != -1)
o.path = realpath (argv[1], NULL);
@@ -784,6 +789,14 @@ static void ui_dir_viewer (State *o)
mrg_add_binding (mrg, "right", NULL, NULL, dir_pgdn_cb, o);
}
+static int slide_cb (Mrg *mrg, void *data)
+{
+ State *o = data;
+ o->slide_timeout = 0;
+ go_next (data);
+ return 0;
+}
+
static void ui_viewer (State *o)
{
Mrg *mrg = o->mrg;
@@ -857,6 +870,12 @@ static void ui_viewer (State *o)
mrg_add_binding (mrg, "n", NULL, NULL, go_next_cb, o);
mrg_add_binding (mrg, "p", NULL, NULL, go_prev_cb, o);
mrg_add_binding (mrg, "backspace", NULL, NULL, go_prev_cb, o);
+
+ if (o->slide_enabled && o->slide_timeout == 0)
+ {
+ o->slide_timeout =
+ mrg_add_timeout (o->mrg, o->slide_pause * 1000, slide_cb, o);
+ }
}
static void toggle_show_controls_cb (MrgEvent *event, void *data1, void *data2)
@@ -866,6 +885,16 @@ static void toggle_show_controls_cb (MrgEvent *event, void *data1, void *data2)
mrg_queue_draw (o->mrg, NULL);
}
+static void toggle_slideshow_cb (MrgEvent *event, void *data1, void *data2)
+{
+ State *o = data1;
+ o->slide_enabled = !o->slide_enabled;
+ if (o->slide_timeout)
+ mrg_remove_idle (o->mrg, o->slide_timeout);
+ o->slide_timeout = 0;
+ mrg_queue_draw (o->mrg, NULL);
+}
+
static void gegl_ui (Mrg *mrg, void *data)
{
State *o = data;
@@ -919,6 +948,7 @@ static void gegl_ui (Mrg *mrg, void *data)
mrg_add_binding (mrg, "f", NULL, NULL, toggle_fullscreen_cb, o);
mrg_add_binding (mrg, "F11", NULL, NULL, toggle_fullscreen_cb, o);
mrg_add_binding (mrg, "tab", NULL, NULL, toggle_show_controls_cb, o);
+ mrg_add_binding (mrg, "s", NULL, NULL, toggle_slideshow_cb, o);
mrg_add_binding (mrg, ",", NULL, NULL, preview_less_cb, o);
mrg_add_binding (mrg, ".", NULL, NULL, preview_more_cb, o);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]