From 49dc72d06eba5a4924c2e123cb8e9d8af2236de7 Mon Sep 17 00:00:00 2001 From: cancel Date: Thu, 17 Jan 2019 06:21:19 +0900 Subject: [PATCH] Add --initial-size argument for tui --- tui_main.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/tui_main.c b/tui_main.c index c7f7121..4d03d2a 100644 --- a/tui_main.c +++ b/tui_main.c @@ -33,6 +33,9 @@ static void usage(void) { " If you plan to work with large files,\n" " set this to a low number.\n" " Default: 100\n" +" --initial-size When creating a new grid file, use these\n" +" starting dimensions.\n" +" Default: 57x25\n" " -h or --help Print this message and exit.\n" "\n" "OSC/MIDI options:\n" @@ -1814,6 +1817,7 @@ void push_save_as_form(char const* initial) { enum { Argopt_margins = UCHAR_MAX + 1, Argopt_undo_limit, + Argopt_init_grid_size, Argopt_osc_server, Argopt_osc_port, Argopt_osc_midi_bidule, @@ -1828,6 +1832,7 @@ int main(int argc, char** argv) { static struct option tui_options[] = { {"margins", required_argument, 0, Argopt_margins}, {"undo-limit", required_argument, 0, Argopt_undo_limit}, + {"initial-size", required_argument, 0, Argopt_init_grid_size}, {"help", no_argument, 0, 'h'}, {"osc-server", required_argument, 0, Argopt_osc_server}, {"osc-port", required_argument, 0, Argopt_osc_port}, @@ -1845,6 +1850,8 @@ int main(int argc, char** argv) { char const* osc_hostname = NULL; char const* osc_port = NULL; bool strict_timing = false; + int init_grid_dim_y = 25; + int init_grid_dim_x = 57; Midi_mode midi_mode; midi_mode_init_null(&midi_mode); for (;;) { @@ -1880,6 +1887,28 @@ int main(int argc, char** argv) { exit(1); } } break; + case Argopt_init_grid_size: { + enum { + Max_dim_arg_val_y = ORCA_Y_MAX, + Max_dim_arg_val_x = ORCA_X_MAX, + }; + if (sscanf(optarg, "%dx%d", &init_grid_dim_x, &init_grid_dim_y) != 2) { + fprintf(stderr, "Bad argument format or count for initial-size.\n"); + exit(1); + } + if (init_grid_dim_x <= 0 || init_grid_dim_x > Max_dim_arg_val_x) { + fprintf(stderr, + "X dimension for initial-size must be 1 <= n <= %d, was %d.\n", + Max_dim_arg_val_x, init_grid_dim_x); + exit(1); + } + if (init_grid_dim_y <= 0 || init_grid_dim_y > Max_dim_arg_val_y) { + fprintf(stderr, + "Y dimension for initial-size must be 1 <= n <= %d, was %d.\n", + Max_dim_arg_val_y, init_grid_dim_y); + exit(1); + } + } break; case Argopt_osc_server: { osc_hostname = optarg; } break; @@ -2001,7 +2030,8 @@ int main(int argc, char** argv) { heapstr_init_cstr(&file_name, input_file); } else { heapstr_init_cstr(&file_name, "unnamed"); - field_init_fill(&ged_state.field, 25, 57, '.'); + field_init_fill(&ged_state.field, (Usz)init_grid_dim_y, + (Usz)init_grid_dim_x, '.'); } ged_state.filename = file_name.str; ged_set_midi_mode(&ged_state, &midi_mode);