allow to reload file
This commit is contained in:
parent
ec431df440
commit
16e4843d05
@ -46,6 +46,7 @@ static Shortcut shortcuts[] = {
|
|||||||
{ XK_Prior, advance, {.i = -1} },
|
{ XK_Prior, advance, {.i = -1} },
|
||||||
{ XK_n, advance, {.i = +1} },
|
{ XK_n, advance, {.i = +1} },
|
||||||
{ XK_p, advance, {.i = -1} },
|
{ XK_p, advance, {.i = -1} },
|
||||||
|
{ XK_r, reload, {0} },
|
||||||
};
|
};
|
||||||
|
|
||||||
static Filter filters[] = {
|
static Filter filters[] = {
|
||||||
|
2
sent.1
2
sent.1
@ -35,6 +35,8 @@ Go to previous slide, if existent.
|
|||||||
.Bl -tag -width Ds
|
.Bl -tag -width Ds
|
||||||
.It Sy Escape | q
|
.It Sy Escape | q
|
||||||
Quit.
|
Quit.
|
||||||
|
.It Sy r
|
||||||
|
Reload the slides. Only works on file input.
|
||||||
.It Sy Right | Return | Space | l | j | Down | Next | n
|
.It Sy Right | Return | Space | l | j | Down | Next | n
|
||||||
Go to next slide, if existent.
|
Go to next slide, if existent.
|
||||||
.It Sy Left | Backspace | h | k | Up | Prior | p
|
.It Sy Left | Backspace | h | k | Up | Prior | p
|
||||||
|
61
sent.c
61
sent.c
@ -93,7 +93,8 @@ static void ffscale(Image *img);
|
|||||||
static void ffdraw(Image *img);
|
static void ffdraw(Image *img);
|
||||||
|
|
||||||
static void getfontsize(Slide *s, unsigned int *width, unsigned int *height);
|
static void getfontsize(Slide *s, unsigned int *width, unsigned int *height);
|
||||||
static void cleanup();
|
static void cleanup(int slidesonly);
|
||||||
|
static void reload(const Arg *arg);
|
||||||
static void load(FILE *fp);
|
static void load(FILE *fp);
|
||||||
static void advance(const Arg *arg);
|
static void advance(const Arg *arg);
|
||||||
static void quit(const Arg *arg);
|
static void quit(const Arg *arg);
|
||||||
@ -115,6 +116,7 @@ static void configure(XEvent *);
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
/* Globals */
|
/* Globals */
|
||||||
|
static const char *fname = NULL;
|
||||||
static Slide *slides = NULL;
|
static Slide *slides = NULL;
|
||||||
static int idx = 0;
|
static int idx = 0;
|
||||||
static int slidecount = 0;
|
static int slidecount = 0;
|
||||||
@ -346,18 +348,21 @@ getfontsize(Slide *s, unsigned int *width, unsigned int *height)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cleanup()
|
cleanup(int slidesonly)
|
||||||
{
|
{
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
|
|
||||||
for (i = 0; i < NUMFONTSCALES; i++)
|
if (!slidesonly) {
|
||||||
drw_fontset_free(fonts[i]);
|
for (i = 0; i < NUMFONTSCALES; i++)
|
||||||
free(sc);
|
drw_fontset_free(fonts[i]);
|
||||||
drw_free(d);
|
free(sc);
|
||||||
|
drw_free(d);
|
||||||
|
|
||||||
|
XDestroyWindow(xw.dpy, xw.win);
|
||||||
|
XSync(xw.dpy, False);
|
||||||
|
XCloseDisplay(xw.dpy);
|
||||||
|
}
|
||||||
|
|
||||||
XDestroyWindow(xw.dpy, xw.win);
|
|
||||||
XSync(xw.dpy, False);
|
|
||||||
XCloseDisplay(xw.dpy);
|
|
||||||
if (slides) {
|
if (slides) {
|
||||||
for (i = 0; i < slidecount; i++) {
|
for (i = 0; i < slidecount; i++) {
|
||||||
for (j = 0; j < slides[i].linecount; j++)
|
for (j = 0; j < slides[i].linecount; j++)
|
||||||
@ -366,11 +371,38 @@ cleanup()
|
|||||||
if (slides[i].img)
|
if (slides[i].img)
|
||||||
fffree(slides[i].img);
|
fffree(slides[i].img);
|
||||||
}
|
}
|
||||||
free(slides);
|
if (!slidesonly) {
|
||||||
slides = NULL;
|
free(slides);
|
||||||
|
slides = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
reload(const Arg *arg)
|
||||||
|
{
|
||||||
|
FILE *fp = NULL;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
if (!fname) {
|
||||||
|
fprintf(stderr, "sent: Cannot reload from stdin. Use a file!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup(1);
|
||||||
|
slidecount = 0;
|
||||||
|
|
||||||
|
if (!(fp = fopen(fname, "r")))
|
||||||
|
die("sent: Unable to open '%s' for reading:", fname);
|
||||||
|
load(fp);
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
LIMIT(idx, 0, slidecount-1);
|
||||||
|
for (i = 0; i < slidecount; i++)
|
||||||
|
ffload(&slides[i]);
|
||||||
|
xdraw();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
load(FILE *fp)
|
load(FILE *fp)
|
||||||
{
|
{
|
||||||
@ -658,9 +690,8 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (!argv[0] || !strcmp(argv[0], "-"))
|
if (!argv[0] || !strcmp(argv[0], "-"))
|
||||||
fp = stdin;
|
fp = stdin;
|
||||||
else if (!(fp = fopen(argv[0], "r")))
|
else if (!(fp = fopen(fname = argv[0], "r")))
|
||||||
die("sent: Unable to open '%s' for reading:", argv[0]);
|
die("sent: Unable to open '%s' for reading:", fname);
|
||||||
|
|
||||||
load(fp);
|
load(fp);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
@ -670,6 +701,6 @@ main(int argc, char *argv[])
|
|||||||
xinit();
|
xinit();
|
||||||
run();
|
run();
|
||||||
|
|
||||||
cleanup();
|
cleanup(0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user