int main (int argc, char **argv) { GtkWidget *window; GdkScreen *screen; int monitor; GdkRectangle rect; GError *error = NULL; char *font = NULL; GtkApplication *application; guint status; GOptionEntry goptions[] = { { "font", 0, 0, G_OPTION_ARG_STRING, &font, N_("Font to start with; ex: 'Serif 27'"), N_("FONT") }, { "version", 0, G_OPTION_FLAG_HIDDEN | G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, option_version_cb, NULL, NULL }, { NULL } }; bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #ifdef HAVE_GCONF /* GConf uses ORBit2 which need GThread. See bug #565516 */ g_thread_init (NULL); #endif /* Set programme name explicitly (see bug #653115) */ g_set_prgname("gucharmap"); if (!gtk_init_with_args (&argc, &argv, NULL, goptions, GETTEXT_PACKAGE, &error)) { g_printerr ("%s\n", error->message); g_error_free (error); exit (1); } g_set_application_name (_("Character Map")); gtk_window_set_default_icon_name (GUCHARMAP_ICON_NAME); application = gtk_application_new ("org.gnome.Charmap", G_APPLICATION_NON_UNIQUE); g_signal_connect (application, "startup", G_CALLBACK (startup_cb), NULL); g_signal_connect (application, "activate", G_CALLBACK (gucharmap_activate), NULL); g_application_register (G_APPLICATION (application), NULL, NULL); window = gucharmap_window_new (application); screen = gtk_window_get_screen (GTK_WINDOW (window)); monitor = gdk_screen_get_monitor_at_point (screen, 0, 0); #if GTK_CHECK_VERSION (3, 3, 5) gdk_screen_get_monitor_workarea (screen, monitor, &rect); #else gdk_screen_get_monitor_geometry (screen, monitor, &rect); #endif gtk_window_set_default_size (GTK_WINDOW (window), rect.width * 9/16, rect.height * 9/16); if (font) { gucharmap_window_set_font (GUCHARMAP_WINDOW (window), font); g_free (font); } gtk_window_present (GTK_WINDOW (window)); status = g_application_run (G_APPLICATION (application), argc, argv); g_object_unref (application); return status; }
int main (int argc, char **argv) { GtkWidget *window; GdkScreen *screen; int monitor; GdkRectangle rect; GError *error = NULL; char *font = NULL; char **remaining = NULL; GtkApplication *application; guint status; GOptionEntry goptions[] = { { "font", 0, 0, G_OPTION_ARG_STRING, &font, N_("Font to start with; ex: 'Serif 27'"), N_("FONT") }, { "version", 0, G_OPTION_FLAG_HIDDEN | G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, option_version_cb, NULL, NULL }, { "print", 'p', 0, G_OPTION_ARG_CALLBACK, option_print_cb, "Print characters in string", "STRING" }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &remaining, NULL, N_("[STRING…]") }, { NULL } }; bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); /* Not interested in silly debug spew polluting the journal, bug #749195 */ if (g_getenv ("G_ENABLE_DIAGNOSTIC") == NULL) g_setenv ("G_ENABLE_DIAGNOSTIC", "0", TRUE); /* Set programme name explicitly (see bug #653115) */ g_set_prgname("gucharmap"); if (!gtk_init_with_args (&argc, &argv, NULL, goptions, GETTEXT_PACKAGE, &error)) { g_printerr ("%s\n", error->message); g_error_free (error); exit (1); } g_set_application_name (_("Character Map")); gtk_window_set_default_icon_name (GUCHARMAP_ICON_NAME); application = gtk_application_new ("org.gnome.Charmap", G_APPLICATION_NON_UNIQUE); g_signal_connect (application, "startup", G_CALLBACK (startup_cb), NULL); g_signal_connect (application, "activate", G_CALLBACK (gucharmap_activate), NULL); g_application_register (G_APPLICATION (application), NULL, NULL); /* Gucharmap doesn't work right with the dark theme, see #741939. * Apparently this got fixed in gtk+ some time before 3.22, so * only work around this on older versions. */ if (gtk_check_version (3, 22, 0) != NULL /* < 3.22.0 */) g_object_set (gtk_settings_get_default (), "gtk-application-prefer-dark-theme", FALSE, NULL); window = gucharmap_window_new (application); screen = gtk_window_get_screen (GTK_WINDOW (window)); monitor = gdk_screen_get_monitor_at_point (screen, 0, 0); #if GTK_CHECK_VERSION (3, 3, 5) gdk_screen_get_monitor_workarea (screen, monitor, &rect); #else gdk_screen_get_monitor_geometry (screen, monitor, &rect); #endif gtk_window_set_default_size (GTK_WINDOW (window), rect.width * 9/16, rect.height * 9/16); if (font) { gucharmap_window_set_font (GUCHARMAP_WINDOW (window), font); g_free (font); } gtk_window_present (GTK_WINDOW (window)); if (remaining) { char *str = g_strjoinv (" ", remaining); gucharmap_window_search (GUCHARMAP_WINDOW (window), str); g_free (str); g_strfreev (remaining); } status = g_application_run (G_APPLICATION (application), argc, argv); g_object_unref (application); return status; }