diff options
author | Hanspeter Portner <dev@open-music-kontrollers.ch> | 2017-10-22 18:30:20 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-04-05 13:21:24 +0200 |
commit | 6721ea54b752b183c45bac83d705f7de40e74fd1 (patch) | |
tree | e3cc280096294279e85d3c9aa00531eefe29272e | |
parent | ed1015dd8c99d8fe6275b7c8fb95774d206e6ee9 (diff) | |
download | jalv-6721ea54b752b183c45bac83d705f7de40e74fd1.tar.gz jalv-6721ea54b752b183c45bac83d705f7de40e74fd1.tar.bz2 jalv-6721ea54b752b183c45bac83d705f7de40e74fd1.zip |
Add a command line argument to select a specific UI
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | doc/jalv.1 | 4 | ||||
-rw-r--r-- | doc/jalv.gtk.1 | 4 | ||||
-rw-r--r-- | src/jalv.c | 9 | ||||
-rw-r--r-- | src/jalv_console.c | 7 | ||||
-rw-r--r-- | src/jalv_gtk.c | 2 | ||||
-rw-r--r-- | src/jalv_internal.h | 1 |
7 files changed, 29 insertions, 1 deletions
@@ -1,8 +1,9 @@ jalv (1.6.5) unstable; * Support port events for ui:showInterface UIs + * Add a command line argument to select a specific UI - -- David Robillard <d@drobilla.net> Sun, 05 Apr 2020 07:39:19 +0000 + -- David Robillard <d@drobilla.net> Sun, 05 Apr 2020 11:14:53 +0000 jalv (1.6.4) stable; @@ -21,6 +21,10 @@ Set control value (e.g. "vol=1.4"). Dump plugin <=> UI communication. .TP +\fB\-U URI\fR +Load the UI with the given URI. + +.TP \fB\-h\fR Print the command line options. diff --git a/doc/jalv.gtk.1 b/doc/jalv.gtk.1 index 5177e1d..8062e06 100644 --- a/doc/jalv.gtk.1 +++ b/doc/jalv.gtk.1 @@ -21,6 +21,10 @@ Set control value (e.g. "vol=1.4"). Dump plugin <=> UI communication. .TP +\fB\-U URI\fR +Load the UI with the given URI. + +.TP \fB\-g\fR, \fB\-\-generic\-ui\fR Use Jalv generic UI and not the plugin UI. @@ -737,6 +737,15 @@ jalv_select_custom_ui(const Jalv* const jalv) { const char* const native_ui_type_uri = jalv_native_ui_type(); + if (jalv->opts.ui_uri) { + // Specific UI explicitly requested by user + LilvNode* uri = lilv_new_uri(jalv->world, jalv->opts.ui_uri); + const LilvUI* ui = lilv_uis_get_by_uri(jalv->uis, uri); + + lilv_node_free(uri); + return ui; + } + #ifdef HAVE_SUIL if (native_ui_type_uri) { // Try to find an embeddable UI diff --git a/src/jalv_console.c b/src/jalv_console.c index a97b388..2d4a197 100644 --- a/src/jalv_console.c +++ b/src/jalv_console.c @@ -38,6 +38,7 @@ print_usage(const char* name, bool error) fprintf(os, " -b SIZE Buffer size for plugin <=> UI communication\n"); fprintf(os, " -c SYM=VAL Set control value (e.g. \"vol=1.4\")\n"); fprintf(os, " -d Dump plugin <=> UI communication\n"); + fprintf(os, " -U URI Load the UI with the given URI\n"); fprintf(os, " -h Display this help and exit\n"); fprintf(os, " -l DIR Load state from save directory\n"); fprintf(os, " -n NAME JACK client name\n"); @@ -74,6 +75,12 @@ jalv_init(int* argc, char*** argv, JalvOptions* opts) opts->show_ui = true; } else if ((*argv)[a][1] == 'p') { opts->print_controls = true; + } else if ((*argv)[a][1] == 'U') { + if (++a == *argc) { + fprintf(stderr, "Missing argument for -U\n"); + return 1; + } + opts->ui_uri = jalv_strdup((*argv)[a]); } else if ((*argv)[a][1] == 'u') { if (++a == *argc) { fprintf(stderr, "Missing argument for -u\n"); diff --git a/src/jalv_gtk.c b/src/jalv_gtk.c index bd9bc36..375ea76 100644 --- a/src/jalv_gtk.c +++ b/src/jalv_gtk.c @@ -97,6 +97,8 @@ jalv_init(int* argc, char*** argv, JalvOptions* opts) "Load state from preset", "URI" }, { "dump", 'd', 0, G_OPTION_ARG_NONE, &opts->dump, "Dump plugin <=> UI communication", NULL }, + { "ui-uri", 'U', 0, G_OPTION_ARG_STRING, &opts->ui_uri, + "Load the UI with the given URI", "URI" }, { "trace", 't', 0, G_OPTION_ARG_NONE, &opts->trace, "Print trace messages from plugin", NULL }, { "show-hidden", 's', 0, G_OPTION_ARG_NONE, &opts->show_hidden, diff --git a/src/jalv_internal.h b/src/jalv_internal.h index 0e76fd0..855cf62 100644 --- a/src/jalv_internal.h +++ b/src/jalv_internal.h @@ -175,6 +175,7 @@ typedef struct { int show_ui; ///< Show non-embedded UI int print_controls; ///< Print control changes to stdout int non_interactive; ///< Do not listen for commands on stdin + char* ui_uri; ///< URI of UI to load } JalvOptions; typedef struct { |