Mercurial > hg > forks > geeqie
changeset 2657:cc61621468a9
Slideshow --remote delay in hrs-mins-secs
author | Colin Clark <colin.clark@cclark.uk> |
---|---|
date | Sat, 04 Nov 2017 10:46:22 +0000 |
parents | 4693738a63e8 |
children | b3f34f91ac4d |
files | src/remote.c |
diffstat | 1 files changed, 39 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/remote.c Fri Nov 03 12:04:17 2017 +0000 +++ b/src/remote.c Sat Nov 04 10:46:22 2017 +0000 @@ -492,15 +492,47 @@ static void gr_slideshow_delay(const gchar *text, GIOChannel *channel, gpointer data) { - gdouble n; + gdouble t1, t2, t3, n; + gint res; - n = g_ascii_strtod(text, NULL); - if (n < SLIDESHOW_MIN_SECONDS || n > SLIDESHOW_MAX_SECONDS) + res = sscanf(text, "%lf:%lf:%lf", &t1, &t2, &t3); + if (res == 3) + { + n = (t1 * 3600) + (t2 * 60) + t3; + if (n < SLIDESHOW_MIN_SECONDS || n > SLIDESHOW_MAX_SECONDS || + t1 >= 24 || t2 >= 60 || t3 >= 60) + { + printf_term("Remote slideshow delay out of range (%.1f to %.1f)\n", + SLIDESHOW_MIN_SECONDS, SLIDESHOW_MAX_SECONDS); + return; + } + } + else if (res == 2) { - printf_term("Remote slideshow delay out of range (%.1f to %.1f)\n", - SLIDESHOW_MIN_SECONDS, SLIDESHOW_MAX_SECONDS); - return; + n = t1 * 60 + t2; + if (n < SLIDESHOW_MIN_SECONDS || n > SLIDESHOW_MAX_SECONDS || + t1 >= 60 || t2 >= 60) + { + printf_term("Remote slideshow delay out of range (%.1f to %.1f)\n", + SLIDESHOW_MIN_SECONDS, SLIDESHOW_MAX_SECONDS); + return; + } } + else if (res == 1) + { + n = t1; + if (n < SLIDESHOW_MIN_SECONDS || n > SLIDESHOW_MAX_SECONDS) + { + printf_term("Remote slideshow delay out of range (%.1f to %.1f)\n", + SLIDESHOW_MIN_SECONDS, SLIDESHOW_MAX_SECONDS); + return; + } + } + else + { + n = 0; + } + options->slideshow.delay = (gint)(n * 10.0 + 0.01); } @@ -756,7 +788,7 @@ { "-ss","--slideshow-start", gr_slideshow_start, FALSE, FALSE, NULL, N_("start slide show") }, { "-sS","--slideshow-stop", gr_slideshow_stop, FALSE, FALSE, NULL, N_("stop slide show") }, { NULL, "--slideshow-recurse:", gr_slideshow_start_rec, TRUE, FALSE, N_("<FOLDER>"), N_("start recursive slide show in FOLDER") }, - { "-d", "--delay=", gr_slideshow_delay, TRUE, FALSE, N_("<[N][.M]>"), N_("set slide show delay to N.M seconds") }, + { "-d", "--delay=", gr_slideshow_delay, TRUE, FALSE, N_("<[H:][M:][N][.M]>"), N_("set slide show delay to Hrs Mins N.M seconds") }, { "+t", "--tools-show", gr_tools_show, FALSE, TRUE, NULL, N_("show tools") }, { "-t", "--tools-hide", gr_tools_hide, FALSE, TRUE, NULL, N_("hide tools") }, { "-q", "--quit", gr_quit, FALSE, FALSE, NULL, N_("quit") },