Make gtk argument parsing use goption. Add gtk_get_option_group and
2004-09-05 Anders Carlsson <andersca@gnome.org> * gdk/gdk.c: (gdk_arg_class_cb), (gdk_arg_name_cb), (gdk_add_option_entries_libgtk_only), (gdk_pre_parse_libgtk_only), (gdk_parse_args): * gdk/gdk.h: * gdk/gdkinternals.h: * gdk/linux-fb/gdkmain-fb.c: (_gdk_windowing_init): * gdk/win32/gdkmain-win32.c: (_gdk_windowing_init): * gdk/x11/gdkdisplay-x11.c: (gdk_display_open): * gdk/x11/gdkmain-x11.c: (_gdk_windowing_init): * gtk/gtkmain.c: (gtk_arg_debug_cb), (gtk_arg_no_debug_cb), (gtk_arg_module_cb), (gtk_arg_warnings_cb), (do_pre_parse_initialization), (do_post_parse_initialization), (pre_parse_hook), (post_parse_hook), (gtk_get_option_group), (gtk_init_with_args), (gtk_parse_args): * gtk/gtkmain.h: Make gtk argument parsing use goption. Add gtk_get_option_group and gtk_init_with_args. * tests/testtreemodel.c: (main): Use gtk_init_with_args.
This commit is contained in:
committed by
Anders Carlsson
parent
b2e8a932e6
commit
04d65a6d3d
23
ChangeLog
23
ChangeLog
@ -1,3 +1,26 @@
|
|||||||
|
2004-09-05 Anders Carlsson <andersca@gnome.org>
|
||||||
|
|
||||||
|
* gdk/gdk.c: (gdk_arg_class_cb), (gdk_arg_name_cb),
|
||||||
|
(gdk_add_option_entries_libgtk_only), (gdk_pre_parse_libgtk_only),
|
||||||
|
(gdk_parse_args):
|
||||||
|
* gdk/gdk.h:
|
||||||
|
* gdk/gdkinternals.h:
|
||||||
|
* gdk/linux-fb/gdkmain-fb.c: (_gdk_windowing_init):
|
||||||
|
* gdk/win32/gdkmain-win32.c: (_gdk_windowing_init):
|
||||||
|
* gdk/x11/gdkdisplay-x11.c: (gdk_display_open):
|
||||||
|
* gdk/x11/gdkmain-x11.c: (_gdk_windowing_init):
|
||||||
|
* gtk/gtkmain.c: (gtk_arg_debug_cb), (gtk_arg_no_debug_cb),
|
||||||
|
(gtk_arg_module_cb), (gtk_arg_warnings_cb),
|
||||||
|
(do_pre_parse_initialization), (do_post_parse_initialization),
|
||||||
|
(pre_parse_hook), (post_parse_hook), (gtk_get_option_group),
|
||||||
|
(gtk_init_with_args), (gtk_parse_args):
|
||||||
|
* gtk/gtkmain.h:
|
||||||
|
Make gtk argument parsing use goption. Add gtk_get_option_group and
|
||||||
|
gtk_init_with_args.
|
||||||
|
|
||||||
|
* tests/testtreemodel.c: (main):
|
||||||
|
Use gtk_init_with_args.
|
||||||
|
|
||||||
Sun Sep 5 01:04:01 2004 Matthias Clasen <maclas@gmx.de>
|
Sun Sep 5 01:04:01 2004 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
Allow sorting of tree models to be turned off
|
Allow sorting of tree models to be turned off
|
||||||
|
|||||||
@ -1,3 +1,26 @@
|
|||||||
|
2004-09-05 Anders Carlsson <andersca@gnome.org>
|
||||||
|
|
||||||
|
* gdk/gdk.c: (gdk_arg_class_cb), (gdk_arg_name_cb),
|
||||||
|
(gdk_add_option_entries_libgtk_only), (gdk_pre_parse_libgtk_only),
|
||||||
|
(gdk_parse_args):
|
||||||
|
* gdk/gdk.h:
|
||||||
|
* gdk/gdkinternals.h:
|
||||||
|
* gdk/linux-fb/gdkmain-fb.c: (_gdk_windowing_init):
|
||||||
|
* gdk/win32/gdkmain-win32.c: (_gdk_windowing_init):
|
||||||
|
* gdk/x11/gdkdisplay-x11.c: (gdk_display_open):
|
||||||
|
* gdk/x11/gdkmain-x11.c: (_gdk_windowing_init):
|
||||||
|
* gtk/gtkmain.c: (gtk_arg_debug_cb), (gtk_arg_no_debug_cb),
|
||||||
|
(gtk_arg_module_cb), (gtk_arg_warnings_cb),
|
||||||
|
(do_pre_parse_initialization), (do_post_parse_initialization),
|
||||||
|
(pre_parse_hook), (post_parse_hook), (gtk_get_option_group),
|
||||||
|
(gtk_init_with_args), (gtk_parse_args):
|
||||||
|
* gtk/gtkmain.h:
|
||||||
|
Make gtk argument parsing use goption. Add gtk_get_option_group and
|
||||||
|
gtk_init_with_args.
|
||||||
|
|
||||||
|
* tests/testtreemodel.c: (main):
|
||||||
|
Use gtk_init_with_args.
|
||||||
|
|
||||||
Sun Sep 5 01:04:01 2004 Matthias Clasen <maclas@gmx.de>
|
Sun Sep 5 01:04:01 2004 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
Allow sorting of tree models to be turned off
|
Allow sorting of tree models to be turned off
|
||||||
|
|||||||
@ -1,3 +1,26 @@
|
|||||||
|
2004-09-05 Anders Carlsson <andersca@gnome.org>
|
||||||
|
|
||||||
|
* gdk/gdk.c: (gdk_arg_class_cb), (gdk_arg_name_cb),
|
||||||
|
(gdk_add_option_entries_libgtk_only), (gdk_pre_parse_libgtk_only),
|
||||||
|
(gdk_parse_args):
|
||||||
|
* gdk/gdk.h:
|
||||||
|
* gdk/gdkinternals.h:
|
||||||
|
* gdk/linux-fb/gdkmain-fb.c: (_gdk_windowing_init):
|
||||||
|
* gdk/win32/gdkmain-win32.c: (_gdk_windowing_init):
|
||||||
|
* gdk/x11/gdkdisplay-x11.c: (gdk_display_open):
|
||||||
|
* gdk/x11/gdkmain-x11.c: (_gdk_windowing_init):
|
||||||
|
* gtk/gtkmain.c: (gtk_arg_debug_cb), (gtk_arg_no_debug_cb),
|
||||||
|
(gtk_arg_module_cb), (gtk_arg_warnings_cb),
|
||||||
|
(do_pre_parse_initialization), (do_post_parse_initialization),
|
||||||
|
(pre_parse_hook), (post_parse_hook), (gtk_get_option_group),
|
||||||
|
(gtk_init_with_args), (gtk_parse_args):
|
||||||
|
* gtk/gtkmain.h:
|
||||||
|
Make gtk argument parsing use goption. Add gtk_get_option_group and
|
||||||
|
gtk_init_with_args.
|
||||||
|
|
||||||
|
* tests/testtreemodel.c: (main):
|
||||||
|
Use gtk_init_with_args.
|
||||||
|
|
||||||
Sun Sep 5 01:04:01 2004 Matthias Clasen <maclas@gmx.de>
|
Sun Sep 5 01:04:01 2004 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
Allow sorting of tree models to be turned off
|
Allow sorting of tree models to be turned off
|
||||||
|
|||||||
@ -1,3 +1,26 @@
|
|||||||
|
2004-09-05 Anders Carlsson <andersca@gnome.org>
|
||||||
|
|
||||||
|
* gdk/gdk.c: (gdk_arg_class_cb), (gdk_arg_name_cb),
|
||||||
|
(gdk_add_option_entries_libgtk_only), (gdk_pre_parse_libgtk_only),
|
||||||
|
(gdk_parse_args):
|
||||||
|
* gdk/gdk.h:
|
||||||
|
* gdk/gdkinternals.h:
|
||||||
|
* gdk/linux-fb/gdkmain-fb.c: (_gdk_windowing_init):
|
||||||
|
* gdk/win32/gdkmain-win32.c: (_gdk_windowing_init):
|
||||||
|
* gdk/x11/gdkdisplay-x11.c: (gdk_display_open):
|
||||||
|
* gdk/x11/gdkmain-x11.c: (_gdk_windowing_init):
|
||||||
|
* gtk/gtkmain.c: (gtk_arg_debug_cb), (gtk_arg_no_debug_cb),
|
||||||
|
(gtk_arg_module_cb), (gtk_arg_warnings_cb),
|
||||||
|
(do_pre_parse_initialization), (do_post_parse_initialization),
|
||||||
|
(pre_parse_hook), (post_parse_hook), (gtk_get_option_group),
|
||||||
|
(gtk_init_with_args), (gtk_parse_args):
|
||||||
|
* gtk/gtkmain.h:
|
||||||
|
Make gtk argument parsing use goption. Add gtk_get_option_group and
|
||||||
|
gtk_init_with_args.
|
||||||
|
|
||||||
|
* tests/testtreemodel.c: (main):
|
||||||
|
Use gtk_init_with_args.
|
||||||
|
|
||||||
Sun Sep 5 01:04:01 2004 Matthias Clasen <maclas@gmx.de>
|
Sun Sep 5 01:04:01 2004 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
Allow sorting of tree models to be turned off
|
Allow sorting of tree models to be turned off
|
||||||
|
|||||||
273
gdk/gdk.c
273
gdk/gdk.c
@ -77,135 +77,6 @@ static const int gdk_ndebug_keys = G_N_ELEMENTS (gdk_debug_keys);
|
|||||||
|
|
||||||
#endif /* G_ENABLE_DEBUG */
|
#endif /* G_ENABLE_DEBUG */
|
||||||
|
|
||||||
static GdkArgContext *
|
|
||||||
gdk_arg_context_new (gpointer cb_data)
|
|
||||||
{
|
|
||||||
GdkArgContext *result = g_new (GdkArgContext, 1);
|
|
||||||
result->tables = g_ptr_array_new ();
|
|
||||||
result->cb_data = cb_data;
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gdk_arg_context_destroy (GdkArgContext *context)
|
|
||||||
{
|
|
||||||
g_ptr_array_free (context->tables, TRUE);
|
|
||||||
g_free (context);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gdk_arg_context_add_table (GdkArgContext *context, GdkArgDesc *table)
|
|
||||||
{
|
|
||||||
g_ptr_array_add (context->tables, table);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gdk_arg_context_parse (GdkArgContext *context, gint *argc, gchar ***argv)
|
|
||||||
{
|
|
||||||
int i, j, k;
|
|
||||||
|
|
||||||
if (argc && argv)
|
|
||||||
{
|
|
||||||
for (i = 1; i < *argc; i++)
|
|
||||||
{
|
|
||||||
char *arg;
|
|
||||||
|
|
||||||
if (!((*argv)[i][0] == '-' && (*argv)[i][1] == '-'))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
arg = (*argv)[i] + 2;
|
|
||||||
|
|
||||||
/* '--' terminates list of arguments */
|
|
||||||
if (*arg == 0)
|
|
||||||
{
|
|
||||||
(*argv)[i] = NULL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (j = 0; j < context->tables->len; j++)
|
|
||||||
{
|
|
||||||
GdkArgDesc *table = context->tables->pdata[j];
|
|
||||||
for (k = 0; table[k].name; k++)
|
|
||||||
{
|
|
||||||
switch (table[k].type)
|
|
||||||
{
|
|
||||||
case GDK_ARG_STRING:
|
|
||||||
case GDK_ARG_CALLBACK:
|
|
||||||
case GDK_ARG_INT:
|
|
||||||
{
|
|
||||||
int len = strlen (table[k].name);
|
|
||||||
|
|
||||||
if (strncmp (arg, table[k].name, len) == 0 &&
|
|
||||||
(arg[len] == '=' || arg[len] == 0))
|
|
||||||
{
|
|
||||||
char *value = NULL;
|
|
||||||
|
|
||||||
(*argv)[i] = NULL;
|
|
||||||
|
|
||||||
if (arg[len] == '=')
|
|
||||||
value = arg + len + 1;
|
|
||||||
else if (i < *argc - 1)
|
|
||||||
{
|
|
||||||
value = (*argv)[i + 1];
|
|
||||||
(*argv)[i+1] = NULL;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
value = "";
|
|
||||||
|
|
||||||
switch (table[k].type)
|
|
||||||
{
|
|
||||||
case GDK_ARG_STRING:
|
|
||||||
*(gchar **)table[k].location = g_strdup (value);
|
|
||||||
break;
|
|
||||||
case GDK_ARG_INT:
|
|
||||||
*(gint *)table[k].location = atoi (value);
|
|
||||||
break;
|
|
||||||
case GDK_ARG_CALLBACK:
|
|
||||||
(*table[k].callback)(table[k].name, value, context->cb_data);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
goto next_arg;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case GDK_ARG_BOOL:
|
|
||||||
case GDK_ARG_NOBOOL:
|
|
||||||
if (strcmp (arg, table[k].name) == 0)
|
|
||||||
{
|
|
||||||
(*argv)[i] = NULL;
|
|
||||||
|
|
||||||
*(gboolean *)table[k].location = (table[k].type == GDK_ARG_BOOL) ? TRUE : FALSE;
|
|
||||||
goto next_arg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
next_arg:
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 1; i < *argc; i++)
|
|
||||||
{
|
|
||||||
for (k = i; k < *argc; k++)
|
|
||||||
if ((*argv)[k] != NULL)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (k > i)
|
|
||||||
{
|
|
||||||
k -= i;
|
|
||||||
for (j = i + k; j < *argc; j++)
|
|
||||||
(*argv)[j-k] = (*argv)[j];
|
|
||||||
*argc -= k;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef G_ENABLE_DEBUG
|
#ifdef G_ENABLE_DEBUG
|
||||||
static void
|
static void
|
||||||
gdk_arg_debug_cb (const char *key, const char *value, gpointer user_data)
|
gdk_arg_debug_cb (const char *key, const char *value, gpointer user_data)
|
||||||
@ -224,49 +95,78 @@ gdk_arg_no_debug_cb (const char *key, const char *value, gpointer user_data)
|
|||||||
}
|
}
|
||||||
#endif /* G_ENABLE_DEBUG */
|
#endif /* G_ENABLE_DEBUG */
|
||||||
|
|
||||||
static void
|
static gboolean
|
||||||
gdk_arg_class_cb (const char *key, const char *value, gpointer user_data)
|
gdk_arg_class_cb (const char *key, const char *value, gpointer user_data, GError **error)
|
||||||
{
|
{
|
||||||
gdk_set_program_class (value);
|
gdk_set_program_class (value);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static gboolean
|
||||||
gdk_arg_name_cb (const char *key, const char *value, gpointer user_data)
|
gdk_arg_name_cb (const char *key, const char *value, gpointer user_data, GError **error)
|
||||||
{
|
{
|
||||||
g_set_prgname (value);
|
g_set_prgname (value);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GdkArgDesc gdk_args[] = {
|
static GOptionEntry gdk_args[] = {
|
||||||
{ "class" , GDK_ARG_CALLBACK, NULL, gdk_arg_class_cb },
|
{ "class", 0, 0, G_OPTION_ARG_CALLBACK, gdk_arg_class_cb, NULL, NULL },
|
||||||
{ "name", GDK_ARG_CALLBACK, NULL, gdk_arg_name_cb },
|
{ "name", 0, 0, G_OPTION_ARG_CALLBACK, gdk_arg_name_cb, NULL, NULL },
|
||||||
{ "display", GDK_ARG_STRING, &_gdk_display_name, (GdkArgFunc)NULL },
|
{ "display", 0, G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_STRING, &_gdk_display_name, NULL, NULL },
|
||||||
{ "screen", GDK_ARG_INT, &_gdk_screen_number, (GdkArgFunc)NULL },
|
{ "screen", 0, 0, G_OPTION_ARG_INT, &_gdk_screen_number, NULL, NULL },
|
||||||
|
|
||||||
#ifdef G_ENABLE_DEBUG
|
#ifdef G_ENABLE_DEBUG
|
||||||
{ "gdk-debug", GDK_ARG_CALLBACK, NULL, gdk_arg_debug_cb },
|
{ "gdk-debug", 0, 0, G_OPTION_ARG_CALLBACK, gdk_arg_debug_cb, NULL, NULL },
|
||||||
{ "gdk-no-debug", GDK_ARG_CALLBACK, NULL, gdk_arg_no_debug_cb },
|
{ "gdk-no-debug", 0, 0, G_OPTION_ARG_CALLBACK, gdk_arg_no_debug_cb, NULL, NULL },
|
||||||
#endif /* G_ENABLE_DEBUG */
|
#endif /* G_ENABLE_DEBUG */
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* _gdk_get_command_line_args:
|
* gdk_add_option_entries_libgtk_only:
|
||||||
* @argv: location to store argv pointer
|
* @group: An option group.
|
||||||
* @argc: location
|
|
||||||
*
|
*
|
||||||
* Retrieve the command line arguments passed to gdk_init().
|
* Appends gdk option entries to the passed in option group. This is
|
||||||
* The returned argv pointer points to static storage ; no
|
* not public API and must not be used by applications.
|
||||||
* copy is made.
|
|
||||||
**/
|
**/
|
||||||
void
|
void
|
||||||
_gdk_get_command_line_args (int *argc,
|
gdk_add_option_entries_libgtk_only (GOptionGroup *group)
|
||||||
char ***argv)
|
|
||||||
{
|
{
|
||||||
*argc = gdk_argc;
|
g_option_group_add_entries (group, gdk_args);
|
||||||
*argv = gdk_argv;
|
g_option_group_add_entries (group, _gdk_windowing_args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gdk_pre_parse_libgtk_only (void)
|
||||||
|
{
|
||||||
|
gdk_initialized = TRUE;
|
||||||
|
|
||||||
|
/* We set the fallback program class here, rather than lazily in
|
||||||
|
* gdk_get_program_class, since we don't want -name to override it.
|
||||||
|
*/
|
||||||
|
gdk_progclass = g_strdup (g_get_prgname ());
|
||||||
|
if (gdk_progclass && gdk_progclass[0])
|
||||||
|
gdk_progclass[0] = g_ascii_toupper (gdk_progclass[0]);
|
||||||
|
|
||||||
|
#ifdef G_ENABLE_DEBUG
|
||||||
|
{
|
||||||
|
gchar *debug_string = getenv("GDK_DEBUG");
|
||||||
|
if (debug_string != NULL)
|
||||||
|
_gdk_debug_flags = g_parse_debug_string (debug_string,
|
||||||
|
(GDebugKey *) gdk_debug_keys,
|
||||||
|
gdk_ndebug_keys);
|
||||||
|
}
|
||||||
|
#endif /* G_ENABLE_DEBUG */
|
||||||
|
|
||||||
|
g_type_init ();
|
||||||
|
|
||||||
|
/* Do any setup particular to the windowing system
|
||||||
|
*/
|
||||||
|
_gdk_windowing_init ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gdk_parse_args:
|
* gdk_parse_args:
|
||||||
* @argc: the number of command line arguments.
|
* @argc: the number of command line arguments.
|
||||||
@ -287,70 +187,27 @@ void
|
|||||||
gdk_parse_args (int *argc,
|
gdk_parse_args (int *argc,
|
||||||
char ***argv)
|
char ***argv)
|
||||||
{
|
{
|
||||||
GdkArgContext *arg_context;
|
GOptionContext *option_context;
|
||||||
gint i;
|
GOptionGroup *option_group;
|
||||||
|
|
||||||
if (gdk_initialized)
|
if (gdk_initialized)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gdk_initialized = TRUE;
|
gdk_pre_parse_libgtk_only ();
|
||||||
|
|
||||||
/* Save a copy of the original argc and argv */
|
|
||||||
if (argc && argv)
|
|
||||||
{
|
|
||||||
gdk_argc = *argc;
|
|
||||||
|
|
||||||
gdk_argv = g_malloc ((gdk_argc + 1) * sizeof (char*));
|
|
||||||
for (i = 0; i < gdk_argc; i++)
|
|
||||||
gdk_argv[i] = g_strdup ((*argv)[i]);
|
|
||||||
gdk_argv[gdk_argc] = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (argc && argv && *argc > 0)
|
|
||||||
{
|
|
||||||
gchar *d;
|
|
||||||
|
|
||||||
d = strrchr((*argv)[0], G_DIR_SEPARATOR);
|
|
||||||
if (d != NULL)
|
|
||||||
g_set_prgname (d + 1);
|
|
||||||
else
|
|
||||||
g_set_prgname ((*argv)[0]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
g_set_prgname ("<unknown>");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We set the fallback program class here, rather than lazily in
|
|
||||||
* gdk_get_program_class, since we don't want -name to override it.
|
|
||||||
*/
|
|
||||||
gdk_progclass = g_strdup (g_get_prgname ());
|
|
||||||
if (gdk_progclass[0])
|
|
||||||
gdk_progclass[0] = g_ascii_toupper (gdk_progclass[0]);
|
|
||||||
|
|
||||||
#ifdef G_ENABLE_DEBUG
|
option_context = g_option_context_new (NULL);
|
||||||
{
|
g_option_context_set_ignore_unknown_options (option_context, TRUE);
|
||||||
gchar *debug_string = getenv("GDK_DEBUG");
|
g_option_context_set_help_enabled (option_context, FALSE);
|
||||||
if (debug_string != NULL)
|
option_group = g_option_group_new (NULL, NULL, NULL, NULL, NULL);
|
||||||
_gdk_debug_flags = g_parse_debug_string (debug_string,
|
g_option_context_set_main_group (option_context, option_group);
|
||||||
(GDebugKey *) gdk_debug_keys,
|
|
||||||
gdk_ndebug_keys);
|
|
||||||
}
|
|
||||||
#endif /* G_ENABLE_DEBUG */
|
|
||||||
|
|
||||||
arg_context = gdk_arg_context_new (NULL);
|
g_option_group_add_entries (option_group, gdk_args);
|
||||||
gdk_arg_context_add_table (arg_context, gdk_args);
|
g_option_group_add_entries (option_group, _gdk_windowing_args);
|
||||||
gdk_arg_context_add_table (arg_context, _gdk_windowing_args);
|
|
||||||
gdk_arg_context_parse (arg_context, argc, argv);
|
g_option_context_parse (option_context, argc, argv, NULL);
|
||||||
gdk_arg_context_destroy (arg_context);
|
g_option_context_free (option_context);
|
||||||
|
|
||||||
GDK_NOTE (MISC, g_message ("progname: \"%s\"", g_get_prgname ()));
|
GDK_NOTE (MISC, g_message ("progname: \"%s\"", g_get_prgname ()));
|
||||||
|
|
||||||
g_type_init ();
|
|
||||||
|
|
||||||
/* Do any setup particular to the windowing system
|
|
||||||
*/
|
|
||||||
_gdk_windowing_init (argc, argv);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -67,6 +67,8 @@ void gdk_init (gint *argc,
|
|||||||
gchar ***argv);
|
gchar ***argv);
|
||||||
gboolean gdk_init_check (gint *argc,
|
gboolean gdk_init_check (gint *argc,
|
||||||
gchar ***argv);
|
gchar ***argv);
|
||||||
|
void gdk_add_option_entries_libgtk_only (GOptionGroup *group);
|
||||||
|
void gdk_pre_parse_libgtk_only (void);
|
||||||
|
|
||||||
#ifndef GDK_DISABLE_DEPRECATED
|
#ifndef GDK_DISABLE_DEPRECATED
|
||||||
void gdk_exit (gint error_code);
|
void gdk_exit (gint error_code);
|
||||||
|
|||||||
@ -238,9 +238,7 @@ void _gdk_colormap_real_destroy (GdkColormap *colormap);
|
|||||||
|
|
||||||
void _gdk_cursor_destroy (GdkCursor *cursor);
|
void _gdk_cursor_destroy (GdkCursor *cursor);
|
||||||
|
|
||||||
extern GdkArgDesc _gdk_windowing_args[];
|
extern GOptionEntry _gdk_windowing_args[];
|
||||||
void _gdk_windowing_init (gint *argc,
|
|
||||||
gchar ***argv);
|
|
||||||
void _gdk_windowing_set_default_display (GdkDisplay *display);
|
void _gdk_windowing_set_default_display (GdkDisplay *display);
|
||||||
|
|
||||||
gchar *_gdk_windowing_substitute_screen_number (const gchar *display_name,
|
gchar *_gdk_windowing_substitute_screen_number (const gchar *display_name,
|
||||||
@ -327,9 +325,6 @@ GType _gdk_pixmap_impl_get_type (void) G_GNUC_CONST;
|
|||||||
void _gdk_image_exit (void);
|
void _gdk_image_exit (void);
|
||||||
void _gdk_windowing_exit (void);
|
void _gdk_windowing_exit (void);
|
||||||
|
|
||||||
void _gdk_get_command_line_args (int *argc,
|
|
||||||
char ***argv);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|||||||
@ -65,7 +65,7 @@ static const int gdk_ndebug_keys = sizeof(gdk_debug_keys)/sizeof(GDebugKey);
|
|||||||
|
|
||||||
#endif /* G_ENABLE_DEBUG */
|
#endif /* G_ENABLE_DEBUG */
|
||||||
|
|
||||||
GdkArgDesc _gdk_windowing_args[] = {
|
GOptionEntry _gdk_windowing_args[] = {
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -883,7 +883,7 @@ gdk_fb_display_destroy (GdkFBDisplay *display)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_gdk_windowing_init (int *argc, char ***argv)
|
_gdk_windowing_init (void)
|
||||||
{
|
{
|
||||||
if (gdk_initialized)
|
if (gdk_initialized)
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -52,15 +52,14 @@
|
|||||||
|
|
||||||
static gboolean gdk_synchronize = FALSE;
|
static gboolean gdk_synchronize = FALSE;
|
||||||
|
|
||||||
GdkArgDesc _gdk_windowing_args[] = {
|
GOptionEntry _gdk_windowing_args[] = {
|
||||||
{ "sync", GDK_ARG_BOOL, &gdk_synchronize, (GdkArgFunc) NULL},
|
{ "sync", 0, 0, G_OPTION_ARG_NONE, &_gdk_synchronize, NULL, NULL },
|
||||||
{ "no-wintab", GDK_ARG_BOOL, &_gdk_input_ignore_wintab,
|
{ "no-wintab", 0, 0, G_OPTION_ARG_NONE, &_gdk_input_ignore_wintab, NULL, NULL },
|
||||||
(GdkArgFunc) NULL},
|
{ "ignore-wintab", 0, 0, G_OPTION_ARG_NONE, &_gdk_input_ignore_wintab, NULL, NULL },
|
||||||
{ "ignore-wintab", GDK_ARG_BOOL, &_gdk_input_ignore_wintab,
|
#if 0
|
||||||
(GdkArgFunc) NULL},
|
{ "use-wintab", 0, 0, G_OPTION_ARG_NONE, &_gdk_input_ignore_wintab, NULL, NULL },
|
||||||
{ "use-wintab", GDK_ARG_NOBOOL, &_gdk_input_ignore_wintab,
|
#endif
|
||||||
(GdkArgFunc) NULL},
|
{ "max-colors", 0, 0, G_OPTION_ARG_INT, &_gdk_max_colors, NULL, NULL },
|
||||||
{ "max-colors", GDK_ARG_INT, &_gdk_max_colors, (GdkArgFunc) NULL},
|
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -75,8 +74,7 @@ DllMain (HINSTANCE hinstDLL,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_gdk_windowing_init (gint *argc,
|
_gdk_windowing_init (void)
|
||||||
gchar ***argv)
|
|
||||||
{
|
{
|
||||||
gchar buf[10];
|
gchar buf[10];
|
||||||
|
|
||||||
|
|||||||
@ -130,6 +130,7 @@ gdk_display_x11_class_init (GdkDisplayX11Class * class)
|
|||||||
parent_class = g_type_class_peek_parent (class);
|
parent_class = g_type_class_peek_parent (class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gdk_display_open:
|
* gdk_display_open:
|
||||||
* @display_name: the name of the display to open
|
* @display_name: the name of the display to open
|
||||||
@ -148,7 +149,7 @@ gdk_display_open (const gchar *display_name)
|
|||||||
GdkDisplayX11 *display_x11;
|
GdkDisplayX11 *display_x11;
|
||||||
GdkWindowAttr attr;
|
GdkWindowAttr attr;
|
||||||
gint argc;
|
gint argc;
|
||||||
gchar **argv;
|
gchar *argv[1];
|
||||||
const char *sm_client_id;
|
const char *sm_client_id;
|
||||||
|
|
||||||
XClassHint *class_hint;
|
XClassHint *class_hint;
|
||||||
@ -227,7 +228,13 @@ gdk_display_open (const gchar *display_name)
|
|||||||
class_hint->res_name = g_get_prgname ();
|
class_hint->res_name = g_get_prgname ();
|
||||||
|
|
||||||
class_hint->res_class = (char *)gdk_get_program_class ();
|
class_hint->res_class = (char *)gdk_get_program_class ();
|
||||||
_gdk_get_command_line_args (&argc, &argv);
|
|
||||||
|
/* XmbSetWMProperties sets the RESOURCE_NAME environment variable
|
||||||
|
* from argv[0], so we just synthesize an argument array here.
|
||||||
|
*/
|
||||||
|
argc = 1;
|
||||||
|
argv[0] = g_get_prgname ();
|
||||||
|
|
||||||
XmbSetWMProperties (display_x11->xdisplay,
|
XmbSetWMProperties (display_x11->xdisplay,
|
||||||
display_x11->leader_window,
|
display_x11->leader_window,
|
||||||
NULL, NULL, argv, argc, NULL, NULL,
|
NULL, NULL, argv, argc, NULL, NULL,
|
||||||
|
|||||||
@ -86,14 +86,13 @@ static int gdk_x_io_error (Display *display);
|
|||||||
static GSList *gdk_error_traps = NULL; /* List of error traps */
|
static GSList *gdk_error_traps = NULL; /* List of error traps */
|
||||||
static GSList *gdk_error_trap_free_list = NULL; /* Free list */
|
static GSList *gdk_error_trap_free_list = NULL; /* Free list */
|
||||||
|
|
||||||
GdkArgDesc _gdk_windowing_args[] = {
|
GOptionEntry _gdk_windowing_args[] = {
|
||||||
{ "sync", GDK_ARG_BOOL, &_gdk_synchronize, (GdkArgFunc)NULL },
|
{ "sync", 0, 0, G_OPTION_ARG_NONE, &_gdk_synchronize, NULL, NULL },
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
_gdk_windowing_init (gint *argc,
|
_gdk_windowing_init (void)
|
||||||
gchar ***argv)
|
|
||||||
{
|
{
|
||||||
_gdk_x11_initialize_locale ();
|
_gdk_x11_initialize_locale ();
|
||||||
|
|
||||||
|
|||||||
327
gtk/gtkmain.c
327
gtk/gtkmain.c
@ -348,35 +348,71 @@ gtk_disable_setlocale (void)
|
|||||||
#undef gtk_init_check
|
#undef gtk_init_check
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
static GString *gtk_modules_string = NULL;
|
||||||
* gtk_parse_args:
|
|
||||||
* @argc: a pointer to the number of command line arguments.
|
#ifdef G_ENABLE_DEBUG
|
||||||
* @argv: a pointer to the array of command line arguments.
|
static gboolean
|
||||||
*
|
gtk_arg_debug_cb (const char *key, const char *value, gpointer user_data)
|
||||||
* Parses command line arguments, and initializes global
|
{
|
||||||
* attributes of GTK+, but does not actually open a connection
|
gtk_debug_flags |= g_parse_debug_string (value,
|
||||||
* to a display. (See gdk_display_open(), gdk_get_display_arg_name())
|
gtk_debug_keys,
|
||||||
*
|
gtk_ndebug_keys);
|
||||||
* Any arguments used by GTK+ or GDK are removed from the array and
|
|
||||||
* @argc and @argv are updated accordingly.
|
return TRUE;
|
||||||
*
|
}
|
||||||
* You shouldn't call this function explicitely if you are using
|
|
||||||
* gtk_init(), or gtk_init_check().
|
static gboolean
|
||||||
*
|
gtk_arg_no_debug_cb (const char *key, const char *value, gpointer user_data)
|
||||||
* Return value: %TRUE if initialization succeeded, otherwise %FALSE.
|
{
|
||||||
**/
|
gtk_debug_flags &= ~g_parse_debug_string (value,
|
||||||
gboolean
|
gtk_debug_keys,
|
||||||
gtk_parse_args (int *argc,
|
gtk_ndebug_keys);
|
||||||
char ***argv)
|
}
|
||||||
|
#endif /* G_ENABLE_DEBUG */
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gtk_arg_module_cb (const char *key, const char *value, gpointer user_data)
|
||||||
|
{
|
||||||
|
if (value && *value)
|
||||||
|
{
|
||||||
|
if (gtk_modules_string)
|
||||||
|
g_string_append_c (gtk_modules_string, G_SEARCHPATH_SEPARATOR);
|
||||||
|
else
|
||||||
|
gtk_modules_string = g_string_new (NULL);
|
||||||
|
|
||||||
|
g_string_append (gtk_modules_string, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gtk_arg_warnings_cb (const char *key, const char *value, gpointer user_data)
|
||||||
|
{
|
||||||
|
GLogLevelFlags fatal_mask;
|
||||||
|
|
||||||
|
fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK);
|
||||||
|
fatal_mask |= G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL;
|
||||||
|
g_log_set_always_fatal (fatal_mask);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static GOptionEntry gtk_args[] = {
|
||||||
|
{ "gtk-module", 0, 0, G_OPTION_ARG_CALLBACK, gtk_arg_module_cb, NULL, NULL },
|
||||||
|
{ "g-fatal-warnings", 0, 0, G_OPTION_ARG_CALLBACK, gtk_arg_warnings_cb, NULL, NULL },
|
||||||
|
#ifdef G_ENABLE_DEBUG
|
||||||
|
{ "gtk-debug", 0, 0, G_OPTION_ARG_CALLBACK, gtk_arg_debug_cb, NULL, NULL },
|
||||||
|
{ "gtk-no-debug", 0, 0, G_OPTION_ARG_CALLBACK, gtk_arg_no_debug_cb, NULL, NULL },
|
||||||
|
#endif /* G_ENABLE_DEBUG */
|
||||||
|
{ NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
do_pre_parse_initialization (int *argc,
|
||||||
|
char ***argv)
|
||||||
{
|
{
|
||||||
GString *gtk_modules_string = NULL;
|
|
||||||
const gchar *env_string;
|
const gchar *env_string;
|
||||||
|
|
||||||
if (gtk_initialized)
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
if (!check_setugid ())
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
g_set_error_handler (gtk_error);
|
g_set_error_handler (gtk_error);
|
||||||
@ -391,7 +427,7 @@ gtk_parse_args (int *argc,
|
|||||||
g_warning ("Locale not supported by C library.\n\tUsing the fallback 'C' locale.");
|
g_warning ("Locale not supported by C library.\n\tUsing the fallback 'C' locale.");
|
||||||
}
|
}
|
||||||
|
|
||||||
gdk_parse_args (argc, argv);
|
gdk_pre_parse_libgtk_only ();
|
||||||
gdk_event_handler_set ((GdkEventFunc)gtk_main_do_event, NULL, NULL);
|
gdk_event_handler_set ((GdkEventFunc)gtk_main_do_event, NULL, NULL);
|
||||||
|
|
||||||
#ifdef G_ENABLE_DEBUG
|
#ifdef G_ENABLE_DEBUG
|
||||||
@ -408,109 +444,13 @@ gtk_parse_args (int *argc,
|
|||||||
env_string = g_getenv ("GTK_MODULES");
|
env_string = g_getenv ("GTK_MODULES");
|
||||||
if (env_string)
|
if (env_string)
|
||||||
gtk_modules_string = g_string_new (env_string);
|
gtk_modules_string = g_string_new (env_string);
|
||||||
|
}
|
||||||
|
|
||||||
if (argc && argv)
|
static void
|
||||||
{
|
do_post_parse_initialization (int *argc,
|
||||||
gint i, j, k;
|
char ***argv)
|
||||||
|
{
|
||||||
for (i = 1; i < *argc;)
|
GSList *slist;
|
||||||
{
|
|
||||||
if (strcmp ("--gtk-module", (*argv)[i]) == 0 ||
|
|
||||||
strncmp ("--gtk-module=", (*argv)[i], 13) == 0)
|
|
||||||
{
|
|
||||||
gchar *module_name = (*argv)[i] + 12;
|
|
||||||
|
|
||||||
if (*module_name == '=')
|
|
||||||
module_name++;
|
|
||||||
else if (i + 1 < *argc)
|
|
||||||
{
|
|
||||||
(*argv)[i] = NULL;
|
|
||||||
i += 1;
|
|
||||||
module_name = (*argv)[i];
|
|
||||||
}
|
|
||||||
(*argv)[i] = NULL;
|
|
||||||
|
|
||||||
if (module_name && *module_name)
|
|
||||||
{
|
|
||||||
if (gtk_modules_string)
|
|
||||||
g_string_append_c (gtk_modules_string, G_SEARCHPATH_SEPARATOR);
|
|
||||||
else
|
|
||||||
gtk_modules_string = g_string_new (NULL);
|
|
||||||
|
|
||||||
g_string_append (gtk_modules_string, module_name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (strcmp ("--g-fatal-warnings", (*argv)[i]) == 0)
|
|
||||||
{
|
|
||||||
GLogLevelFlags fatal_mask;
|
|
||||||
|
|
||||||
fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK);
|
|
||||||
fatal_mask |= G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL;
|
|
||||||
g_log_set_always_fatal (fatal_mask);
|
|
||||||
(*argv)[i] = NULL;
|
|
||||||
}
|
|
||||||
#ifdef G_ENABLE_DEBUG
|
|
||||||
else if ((strcmp ("--gtk-debug", (*argv)[i]) == 0) ||
|
|
||||||
(strncmp ("--gtk-debug=", (*argv)[i], 12) == 0))
|
|
||||||
{
|
|
||||||
gchar *equal_pos = strchr ((*argv)[i], '=');
|
|
||||||
|
|
||||||
if (equal_pos != NULL)
|
|
||||||
{
|
|
||||||
gtk_debug_flags |= g_parse_debug_string (equal_pos+1,
|
|
||||||
gtk_debug_keys,
|
|
||||||
gtk_ndebug_keys);
|
|
||||||
}
|
|
||||||
else if ((i + 1) < *argc && (*argv)[i + 1])
|
|
||||||
{
|
|
||||||
gtk_debug_flags |= g_parse_debug_string ((*argv)[i+1],
|
|
||||||
gtk_debug_keys,
|
|
||||||
gtk_ndebug_keys);
|
|
||||||
(*argv)[i] = NULL;
|
|
||||||
i += 1;
|
|
||||||
}
|
|
||||||
(*argv)[i] = NULL;
|
|
||||||
}
|
|
||||||
else if ((strcmp ("--gtk-no-debug", (*argv)[i]) == 0) ||
|
|
||||||
(strncmp ("--gtk-no-debug=", (*argv)[i], 15) == 0))
|
|
||||||
{
|
|
||||||
gchar *equal_pos = strchr ((*argv)[i], '=');
|
|
||||||
|
|
||||||
if (equal_pos != NULL)
|
|
||||||
{
|
|
||||||
gtk_debug_flags &= ~g_parse_debug_string (equal_pos+1,
|
|
||||||
gtk_debug_keys,
|
|
||||||
gtk_ndebug_keys);
|
|
||||||
}
|
|
||||||
else if ((i + 1) < *argc && (*argv)[i + 1])
|
|
||||||
{
|
|
||||||
gtk_debug_flags &= ~g_parse_debug_string ((*argv)[i+1],
|
|
||||||
gtk_debug_keys,
|
|
||||||
gtk_ndebug_keys);
|
|
||||||
(*argv)[i] = NULL;
|
|
||||||
i += 1;
|
|
||||||
}
|
|
||||||
(*argv)[i] = NULL;
|
|
||||||
}
|
|
||||||
#endif /* G_ENABLE_DEBUG */
|
|
||||||
i += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 1; i < *argc; i++)
|
|
||||||
{
|
|
||||||
for (k = i; k < *argc; k++)
|
|
||||||
if ((*argv)[k] != NULL)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (k > i)
|
|
||||||
{
|
|
||||||
k -= i;
|
|
||||||
for (j = i + k; j < *argc; j++)
|
|
||||||
(*argv)[j-k] = (*argv)[j];
|
|
||||||
*argc -= k;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gtk_debug_flags & GTK_DEBUG_UPDATES)
|
if (gtk_debug_flags & GTK_DEBUG_UPDATES)
|
||||||
gdk_window_set_debug_updates (TRUE);
|
gdk_window_set_debug_updates (TRUE);
|
||||||
@ -552,8 +492,133 @@ gtk_parse_args (int *argc,
|
|||||||
_gtk_modules_init (argc, argv, gtk_modules_string->str);
|
_gtk_modules_init (argc, argv, gtk_modules_string->str);
|
||||||
g_string_free (gtk_modules_string, TRUE);
|
g_string_free (gtk_modules_string, TRUE);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
gboolean open_default_display;
|
||||||
|
} OptionGroupInfo;
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
pre_parse_hook (GOptionContext *context,
|
||||||
|
GOptionGroup *group,
|
||||||
|
gpointer data,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
do_pre_parse_initialization (NULL, NULL);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
post_parse_hook (GOptionContext *context,
|
||||||
|
GOptionGroup *group,
|
||||||
|
gpointer data,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
OptionGroupInfo *info = data;
|
||||||
|
|
||||||
|
|
||||||
|
do_post_parse_initialization (NULL, NULL);
|
||||||
|
|
||||||
|
if (info->open_default_display)
|
||||||
|
return gdk_display_open_default_libgtk_only () != NULL;
|
||||||
else
|
else
|
||||||
_gtk_modules_init (argc, argv, "");
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GOptionGroup *
|
||||||
|
gtk_get_option_group (gboolean open_default_display)
|
||||||
|
{
|
||||||
|
GOptionGroup *group;
|
||||||
|
OptionGroupInfo *info;
|
||||||
|
|
||||||
|
info = g_new0 (OptionGroupInfo, 1);
|
||||||
|
info->open_default_display = open_default_display;
|
||||||
|
|
||||||
|
group = g_option_group_new ("gtk", _("GTK+ Options"), _("Show GTK+ Options"), info, g_free);
|
||||||
|
g_option_group_set_parse_hooks (group, pre_parse_hook, post_parse_hook);
|
||||||
|
|
||||||
|
gdk_add_option_entries_libgtk_only (group);
|
||||||
|
g_option_group_add_entries (group, gtk_args);
|
||||||
|
|
||||||
|
return group;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gtk_init_with_args (int *argc,
|
||||||
|
char ***argv,
|
||||||
|
char *parameter_string,
|
||||||
|
GOptionEntry *entries,
|
||||||
|
char *translation_domain,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
GOptionContext *context;
|
||||||
|
GOptionGroup *gtk_group;
|
||||||
|
gboolean retval;
|
||||||
|
|
||||||
|
if (gtk_initialized)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
gtk_group = gtk_get_option_group (TRUE);
|
||||||
|
|
||||||
|
context = g_option_context_new (parameter_string);
|
||||||
|
g_option_context_add_group (context, gtk_group);
|
||||||
|
|
||||||
|
if (entries)
|
||||||
|
g_option_context_add_main_entries (context, entries, translation_domain);
|
||||||
|
|
||||||
|
retval = g_option_context_parse (context, argc, argv, error);
|
||||||
|
|
||||||
|
g_option_context_free (context);
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_parse_args:
|
||||||
|
* @argc: a pointer to the number of command line arguments.
|
||||||
|
* @argv: a pointer to the array of command line arguments.
|
||||||
|
*
|
||||||
|
* Parses command line arguments, and initializes global
|
||||||
|
* attributes of GTK+, but does not actually open a connection
|
||||||
|
* to a display. (See gdk_display_open(), gdk_get_display_arg_name())
|
||||||
|
*
|
||||||
|
* Any arguments used by GTK+ or GDK are removed from the array and
|
||||||
|
* @argc and @argv are updated accordingly.
|
||||||
|
*
|
||||||
|
* You shouldn't call this function explicitely if you are using
|
||||||
|
* gtk_init(), or gtk_init_check().
|
||||||
|
*
|
||||||
|
* Return value: %TRUE if initialization succeeded, otherwise %FALSE.
|
||||||
|
**/
|
||||||
|
gboolean
|
||||||
|
gtk_parse_args (int *argc,
|
||||||
|
char ***argv)
|
||||||
|
{
|
||||||
|
GOptionContext *option_context;
|
||||||
|
|
||||||
|
if (gtk_initialized)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if (!check_setugid ())
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
do_pre_parse_initialization (argc, argv);
|
||||||
|
|
||||||
|
option_context = g_option_context_new (NULL);
|
||||||
|
g_option_context_set_ignore_unknown_options (option_context, TRUE);
|
||||||
|
g_option_context_set_help_enabled (option_context, FALSE);
|
||||||
|
|
||||||
|
g_option_context_add_main_entries (option_context, gtk_args, NULL);
|
||||||
|
|
||||||
|
g_option_context_parse (option_context, argc, argv, NULL);
|
||||||
|
g_option_context_free (option_context);
|
||||||
|
|
||||||
|
do_post_parse_initialization (argc, argv);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -94,6 +94,16 @@ void gtk_init (int *argc,
|
|||||||
|
|
||||||
gboolean gtk_init_check (int *argc,
|
gboolean gtk_init_check (int *argc,
|
||||||
char ***argv);
|
char ***argv);
|
||||||
|
|
||||||
|
gboolean gtk_init_with_args (int *argc,
|
||||||
|
char ***argv,
|
||||||
|
char *parameter_string,
|
||||||
|
GOptionEntry *entries,
|
||||||
|
char *translation_domain,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
|
GOptionGroup *gtk_get_option_group (gboolean open_default_display);
|
||||||
|
|
||||||
#ifdef G_PLATFORM_WIN32
|
#ifdef G_PLATFORM_WIN32
|
||||||
|
|
||||||
/* Variants that are used to check for correct struct packing
|
/* Variants that are used to check for correct struct packing
|
||||||
|
|||||||
@ -234,12 +234,7 @@ main (int argc, char *argv[])
|
|||||||
GtkTreeModel *model;
|
GtkTreeModel *model;
|
||||||
GOptionContext *context;
|
GOptionContext *context;
|
||||||
|
|
||||||
gtk_init (&argc, &argv);
|
gtk_init_with_args (&argc, &argv, NULL, entries, NULL, NULL);
|
||||||
|
|
||||||
context = g_option_context_new ("");
|
|
||||||
g_option_context_add_main_entries (context, entries, "");
|
|
||||||
g_option_context_parse (context, &argc, &argv, NULL);
|
|
||||||
g_option_context_free (context);
|
|
||||||
|
|
||||||
model = GTK_TREE_MODEL (gtk_list_store_new (2, G_TYPE_INT, G_TYPE_STRING));
|
model = GTK_TREE_MODEL (gtk_list_store_new (2, G_TYPE_INT, G_TYPE_STRING));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user