gtk-demo:Add a --list option

This just shows the available examples and then exists.
This commit is contained in:
Matthias Clasen 2015-09-09 10:14:17 -04:00
parent bce8d771a2
commit 23d7c3d435

View File

@ -1051,6 +1051,28 @@ auto_quit (gpointer data)
return G_SOURCE_REMOVE;
}
static void
list_demos (void)
{
Demo *d, *c;
d = gtk_demos;
while (d->title)
{
c = d->children;
if (d->name)
g_print ("%s\n", d->name);
d++;
while (c && c->title)
{
if (c->name)
g_print ("%s\n", c->name);
c++;
}
}
}
static void
command_line (GApplication *app,
GApplicationCommandLine *cmdline)
@ -1058,6 +1080,7 @@ command_line (GApplication *app,
GVariantDict *options;
const gchar *name = NULL;
gboolean autoquit = FALSE;
gboolean list = FALSE;
Demo *d, *c;
GDoDemoFunc func = 0;
GtkWidget *window, *demo;
@ -1067,6 +1090,14 @@ command_line (GApplication *app,
options = g_application_command_line_get_options_dict (cmdline);
g_variant_dict_lookup (options, "run", "&s", &name);
g_variant_dict_lookup (options, "autoquit", "b", &autoquit);
g_variant_dict_lookup (options, "list", "b", &list);
if (list)
{
list_demos ();
g_application_quit (app);
return;
}
if (name == NULL)
goto out;
@ -1134,6 +1165,7 @@ main (int argc, char **argv)
app);
g_application_add_main_option (G_APPLICATION (app), "run", 0, 0, G_OPTION_ARG_STRING, "Run an example", "EXAMPLE");
g_application_add_main_option (G_APPLICATION (app), "list", 0, 0, G_OPTION_ARG_NONE, "List examples", NULL);
g_application_add_main_option (G_APPLICATION (app), "autoquit", 0, 0, G_OPTION_ARG_NONE, "Quit after a delay", NULL);
g_signal_connect (app, "startup", G_CALLBACK (startup), NULL);