Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ Discussion :

[Glib] parser plusieurs arguments


Sujet :

GTK+

  1. #1
    Expert confirmé
    [Glib] parser plusieurs arguments
    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 :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    static gchar **context_viewport = NULL;
    ...


    Puis, dans le GOption Entry :
    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}
        };


    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
    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);


    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
    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;
    }


    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
    ./test --viewport 12 34 56 78
     
    callback viewport : --viewport, 12


    Comment faire pour récupérer tout ce petit monde ?

    En vous remerciant par avance,

    Gérald
    Utilisation de Glade avec Gtk+ - N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk

  2. #2
    Membre confirmé
    Bonjour,

    Peut être en utilisant l'option G_OPTION_REMAINING( que je ne conseil pas)

    Ou bien:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ./test --viewport="12 34 56 78"


    A+