Bonjour à toutes et à tous.
Je viens vers vous pour un petit souci d'utilisation de GOptionContext*.
Je désire parser la ligne de commande dont certaines options attentent plusieurs arguments. J'ai donc déclaré entre autres options ceci :
Puis, dans le GOption Entry :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ... static gchar **context_viewport = NULL; ...
J'ai initialisé tout ce petit monde comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 static GOptionEntry entries[] = { ... {"viewport", 0, 0, G_OPTION_ARG_CALLBACK, (GOptionArgFunc*)callback_viewport, "Set the viewport for the current graph", "xmin ymin xmax ymax"}, {NULL} };
Pour finir voici le callback associé à "--viewport" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #ifdef G_OS_WIN32 args = g_win32_get_command_line (); #else args = g_strdupv (argv); #endif context = g_option_context_new (""); g_option_context_add_main_entries (context, entries, NULL); g_option_context_add_group (context, gtk_get_option_group (TRUE)); if (!g_option_context_parse_strv (context, &args, &error)) { g_printerr ("option parsing failed: %s\n", error->message); g_error_free (error); g_strfreev (args); exit (1); } g_strfreev (args);
Tout fonctionne correctement sauf que je désire, comme vous pouvez le voir dans la description des arguments à transmettre à "--viewport" quatre arguments. Si j'écris ceci en ligne de commande je n'obtiens que le premier argument.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 static gboolean callback_viewport (const gchar *option_name, const gchar *value, gpointer data, GError **error) { if (*error) { g_printerr ("callback viewport error : %s\n", (*error)->message); g_error_free (*error); return FALSE; } g_printerr ("callback viewport : %s, %s\n", option_name, value); return TRUE; }
Comment faire pour récupérer tout ce petit monde ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ./test --viewport 12 34 56 78 callback viewport : --viewport, 12
En vous remerciant par avance,
Gérald
Partager