Allow passing drawings to open on the command line
The UI deserves an overhaul.
This commit is contained in:
parent
e08c63fe89
commit
dd71ce5ca0
2
LICENSE
2
LICENSE
|
@ -1,4 +1,4 @@
|
||||||
Copyright (c) 2014, Přemysl Eric Janouch <p@janouch.name>
|
Copyright (c) 2014 - 2023, Přemysl Eric Janouch <p@janouch.name>
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
purpose with or without fee is hereby granted.
|
purpose with or without fee is hereby granted.
|
||||||
|
|
25
neetdraw.c
25
neetdraw.c
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* neetdraw.c: terminal drawing application with multiplayer support
|
* neetdraw.c: terminal drawing application with multiplayer support
|
||||||
*
|
*
|
||||||
* Copyright (c) 2014, Přemysl Eric Janouch <p@janouch.name>
|
* Copyright (c) 2014 - 2023, Přemysl Eric Janouch <p@janouch.name>
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
* purpose with or without fee is hereby granted.
|
* purpose with or without fee is hereby granted.
|
||||||
|
@ -766,7 +766,7 @@ export_irc (struct app_context *app)
|
||||||
// --- Loading, saving ---------------------------------------------------------
|
// --- Loading, saving ---------------------------------------------------------
|
||||||
|
|
||||||
static void
|
static void
|
||||||
load (struct app_context *app)
|
load (struct app_context *app, const char *filename)
|
||||||
{
|
{
|
||||||
// Client cannot load at all, the server would have send the new bitmap out
|
// Client cannot load at all, the server would have send the new bitmap out
|
||||||
if (app->mode != NETWORK_MODE_STANDALONE)
|
if (app->mode != NETWORK_MODE_STANDALONE)
|
||||||
|
@ -776,7 +776,7 @@ load (struct app_context *app)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FILE *fp = fopen ("drawing.bin", "rb");
|
FILE *fp = fopen (filename, "rb");
|
||||||
if (!fp)
|
if (!fp)
|
||||||
{
|
{
|
||||||
display ("Error opening file for reading.");
|
display ("Error opening file for reading.");
|
||||||
|
@ -830,9 +830,9 @@ error:
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
save (struct app_context *app)
|
save (struct app_context *app, const char *filename)
|
||||||
{
|
{
|
||||||
FILE *fp = fopen ("drawing.bin", "wb");
|
FILE *fp = fopen (filename, "wb");
|
||||||
if (!fp)
|
if (!fp)
|
||||||
{
|
{
|
||||||
display ("Error opening file for writing.");
|
display ("Error opening file for writing.");
|
||||||
|
@ -952,8 +952,8 @@ on_key (struct app_context *app, termo_key_t *key)
|
||||||
if (key->modifiers)
|
if (key->modifiers)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (key->code.codepoint == 'l') load (app);
|
if (key->code.codepoint == 'l') load (app, "drawing.bin");
|
||||||
if (key->code.codepoint == 's') save (app);
|
if (key->code.codepoint == 's') save (app, "drawing.bin");
|
||||||
if (key->code.codepoint == 'e') export_ansi (app);
|
if (key->code.codepoint == 'e') export_ansi (app);
|
||||||
if (key->code.codepoint == 'E') export_irc (app);
|
if (key->code.codepoint == 'E') export_irc (app);
|
||||||
return true;
|
return true;
|
||||||
|
@ -1342,6 +1342,7 @@ struct app_options
|
||||||
struct addrinfo *client_address; ///< Address to connect to
|
struct addrinfo *client_address; ///< Address to connect to
|
||||||
struct addrinfo *server_address; ///< Address to listen at
|
struct addrinfo *server_address; ///< Address to listen at
|
||||||
bool no_wait; ///< Don't wait for server confirmations
|
bool no_wait; ///< Don't wait for server confirmations
|
||||||
|
const char *filename; ///< A filename to preload
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1414,8 +1415,8 @@ parse_program_arguments (struct app_options *options, int argc, char **argv)
|
||||||
{ 0, NULL, NULL, 0, NULL }
|
{ 0, NULL, NULL, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct opt_handler oh = opt_handler_make (argc, argv, opts,
|
struct opt_handler oh = opt_handler_make (argc, argv, opts, "[drawing.bin]",
|
||||||
NULL, "Terminal drawing application with multiplayer support");
|
"Terminal drawing application with multiplayer support");
|
||||||
|
|
||||||
int c;
|
int c;
|
||||||
while ((c = opt_handler_get (&oh)) != -1)
|
while ((c = opt_handler_get (&oh)) != -1)
|
||||||
|
@ -1454,7 +1455,8 @@ parse_program_arguments (struct app_options *options, int argc, char **argv)
|
||||||
argc -= optind;
|
argc -= optind;
|
||||||
argv += optind;
|
argv += optind;
|
||||||
|
|
||||||
if (argc)
|
options->filename = argv[0];
|
||||||
|
if (argc > 1)
|
||||||
{
|
{
|
||||||
opt_handler_usage (&oh, stderr);
|
opt_handler_usage (&oh, stderr);
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
|
@ -1598,6 +1600,9 @@ main (int argc, char *argv[])
|
||||||
redraw (&app);
|
redraw (&app);
|
||||||
redraw_canvas (&app);
|
redraw_canvas (&app);
|
||||||
|
|
||||||
|
if (options.filename)
|
||||||
|
load (&app, options.filename);
|
||||||
|
|
||||||
ev_run (loop, 0);
|
ev_run (loop, 0);
|
||||||
endwin ();
|
endwin ();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue