gint main(gint argc, gchar **argv) { GtkWidget *dialog; GtkWidget *settings_editor; GtkWidget *plug; GError *error = NULL; /* setup translation domain */ xfce_textdomain (GETTEXT_PACKAGE, LOCALEDIR, "UTF-8"); /* initialize Gtk+ */ if (!gtk_init_with_args (&argc, &argv, "", option_entries, GETTEXT_PACKAGE, &error)) { if (G_LIKELY (error)) { /* print error */ g_print ("%s: %s.\n", G_LOG_DOMAIN, error->message); g_print (_("Type '%s --help' for usage."), G_LOG_DOMAIN); g_print ("\n"); /* cleanup */ g_error_free (error); } else { g_error ("Unable to open display."); } return EXIT_FAILURE; } /* print version information */ if (G_UNLIKELY (opt_version)) { g_print ("%s %s (Xfce %s)\n\n", G_LOG_DOMAIN, PACKAGE_VERSION, xfce_version_string ()); g_print ("%s\n", "Copyright (c) 2008-2011"); g_print ("\t%s\n\n", _("The Xfce development team. All rights reserved.")); g_print (_("Please report bugs to <%s>."), PACKAGE_BUGREPORT); g_print ("\n"); return EXIT_SUCCESS; } /* initialize xfconf */ if (G_UNLIKELY (!xfconf_init (&error))) { /* print error and leave */ g_critical ("Failed to connect to Xfconf daemon: %s", error->message); g_error_free (error); return EXIT_FAILURE; } channel = xfconf_channel_new ("xfce4-settings-editor"); settings_editor = xfce_settings_editor_box_new ( xfconf_channel_get_int (channel, "/last/paned-position", 180)); if (G_UNLIKELY (opt_socket_id == 0)) { dialog = xfce_titled_dialog_new_with_buttons (_("Settings Editor"), NULL, GTK_DIALOG_DESTROY_WITH_PARENT, "gtk-help", GTK_RESPONSE_HELP, "gtk-close", GTK_RESPONSE_OK, NULL); xfce_titled_dialog_set_subtitle (XFCE_TITLED_DIALOG (dialog), _("Customize settings stored by Xfconf")); gtk_window_set_icon_name (GTK_WINDOW (dialog), "preferences-system"); gtk_window_set_type_hint (GTK_WINDOW (dialog), GDK_WINDOW_TYPE_HINT_NORMAL); gtk_window_set_default_size (GTK_WINDOW (dialog), xfconf_channel_get_int (channel, "/last/window-width", 640), xfconf_channel_get_int (channel, "/last/window-height", 500)); gtk_container_add_with_properties( GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), settings_editor, "expand", TRUE, "fill", TRUE, NULL); g_signal_connect (dialog, "response", G_CALLBACK (settings_dialog_response), settings_editor); gtk_widget_show_all (dialog); } else { /* Create plug widget */ plug = gtk_plug_new (opt_socket_id); g_signal_connect (plug, "delete-event", G_CALLBACK (plug_delete_event), settings_editor); gtk_window_set_default_size (GTK_WINDOW (plug), xfconf_channel_get_int (channel, "/last/window-width", 640), xfconf_channel_get_int (channel, "/last/window-height", 500)); gtk_widget_show (plug); gtk_container_add (GTK_CONTAINER(plug), settings_editor); /* Stop startup notification */ gdk_notify_startup_complete (); gtk_widget_show (GTK_WIDGET (settings_editor)); } gtk_main (); g_object_unref(channel); /* shutdown xfconf */ xfconf_shutdown (); return EXIT_SUCCESS; }
gint main (gint argc, gchar **argv) { GObject *dialog, *plug_child; GtkWidget *plug; GtkBuilder *builder; GError *error = NULL; /* setup translation domain */ xfce_textdomain (GETTEXT_PACKAGE, LOCALEDIR, "UTF-8"); /* initialize Gtk+ */ if(!gtk_init_with_args (&argc, &argv, "", entries, PACKAGE, &error)) { if (G_LIKELY (error)) { /* print error */ g_print ("%s: %s.\n", G_LOG_DOMAIN, error->message); g_print (_("Type '%s --help' for usage."), G_LOG_DOMAIN); g_print ("\n"); /* cleanup */ g_error_free (error); } else { g_error ("Unable to open display."); } return EXIT_FAILURE; } /* check if we should print version information */ if (G_UNLIKELY (opt_version)) { g_print ("%s %s (Xfce %s)\n\n", G_LOG_DOMAIN, PACKAGE_VERSION, xfce_version_string ()); g_print ("%s\n", "Copyright (c) 2008-2011"); g_print ("\t%s\n\n", _("The Xfce development team. All rights reserved.")); g_print (_("Please report bugs to <%s>."), PACKAGE_BUGREPORT); g_print ("\n"); return EXIT_SUCCESS; } /* initialize xfconf */ if (!xfconf_init (&error)) { /* print error and exit */ g_error ("Failed to connect to xfconf daemon: %s.", error->message); g_error_free (error); return EXIT_FAILURE; } /* open the channels */ accessibility_channel = xfconf_channel_new ("accessibility"); session_channel = xfconf_channel_new ("xfce4-session"); /* hook to make sure the libxfce4ui library is linked */ if (xfce_titled_dialog_get_type () == 0) return EXIT_FAILURE; /* load the Gtk user-interface file */ builder = gtk_builder_new (); if (gtk_builder_add_from_string (builder, accessibility_dialog_ui, accessibility_dialog_ui_length, &error) != 0) { /* Configure widgets */ accessibility_settings_dialog_configure_widgets (builder); if (G_UNLIKELY (opt_socket_id == 0)) { /* Get the dialog widget */ dialog = gtk_builder_get_object (builder, "dialog"); g_signal_connect (dialog, "response", G_CALLBACK (accessibility_settings_dialog_response), NULL); gtk_window_present (GTK_WINDOW (dialog)); /* To prevent the settings dialog to be saved in the session */ gdk_set_sm_client_id ("FAKE ID"); gtk_main (); } else { /* Create plug widget */ plug = gtk_plug_new (opt_socket_id); g_signal_connect (plug, "delete-event", G_CALLBACK (gtk_main_quit), NULL); gtk_widget_show (plug); /* Stop startup notification */ gdk_notify_startup_complete (); /* Get plug child widget */ plug_child = gtk_builder_get_object (builder, "plug-child"); gtk_widget_reparent (GTK_WIDGET (plug_child), plug); gtk_widget_show (GTK_WIDGET (plug_child)); /* To prevent the settings dialog to be saved in the session */ gdk_set_sm_client_id ("FAKE ID"); /* Enter main loop */ gtk_main (); } } else { g_error ("Failed to load the UI file: %s.", error->message); g_error_free (error); } /* Release Builder */ g_object_unref (G_OBJECT (builder)); /* release the channels */ g_object_unref (G_OBJECT (accessibility_channel)); g_object_unref (G_OBJECT (session_channel)); /* shutdown xfconf */ xfconf_shutdown(); return EXIT_SUCCESS; }
gint main (gint argc, gchar **argv) { GtkBuilder *builder; GError *error = NULL; GObject *dialog; GObject *object; gchar *version; xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); if (G_UNLIKELY (!gtk_init_with_args (&argc, &argv, NULL, opt_entries, PACKAGE, &error))) { if (G_LIKELY (error != NULL)) { g_print ("%s: %s.\n", G_LOG_DOMAIN, error->message); g_print (_("Type '%s --help' for usage information."), G_LOG_DOMAIN); g_print ("\n"); g_error_free (error); } else g_error (_("Unable to initialize GTK+.")); return EXIT_FAILURE; } if (G_UNLIKELY (opt_version)) { g_print ("%s %s (Xfce %s)\n\n", G_LOG_DOMAIN, PACKAGE_VERSION, xfce_version_string ()); g_print ("%s\n", "Copyright (c) 2008-2019"); g_print ("\t%s\n\n", _("The Xfce development team. All rights reserved.")); g_print (_("Please report bugs to <%s>."), PACKAGE_BUGREPORT); g_print ("\n"); return EXIT_SUCCESS; } builder = gtk_builder_new (); if (!gtk_builder_add_from_string (builder, xfce_about_dialog_ui, xfce_about_dialog_ui_length, &error)) { xfce_dialog_show_error (NULL, error, _("Failed to load interface")); g_error_free (error); g_object_unref (G_OBJECT (builder)); return EXIT_FAILURE; } dialog = gtk_builder_get_object (builder, "window"); g_signal_connect_swapped (G_OBJECT (dialog), "delete-event", G_CALLBACK (gtk_main_quit), NULL); #ifdef VENDOR_INFO /* I18N: first %s will be replaced by the version, second by * the name of the distribution (--with-vendor-info=NAME) */ version = g_strdup_printf (_("Version %s, distributed by %s"), xfce_version_string (), VENDOR_INFO); #else /* I18N: %s will be replaced by the Xfce version number */ version = g_strdup_printf (_("Version %s"), xfce_version_string ()); #endif xfce_titled_dialog_set_subtitle (XFCE_TITLED_DIALOG (dialog), version); g_free (version); object = gtk_builder_get_object (builder, "about-buffer"); xfce_about_about (GTK_TEXT_BUFFER (object)); object = gtk_builder_get_object (builder, "credits-buffer"); xfce_about_credits (GTK_TEXT_BUFFER (object)); object = gtk_builder_get_object (builder, "copyright-buffer"); xfce_about_copyright (GTK_TEXT_BUFFER (object)); #ifdef VENDOR_INFO xfce_about_vendor (builder); #endif object = gtk_builder_get_object (builder, "gpl-button"); g_signal_connect_swapped (G_OBJECT (object), "clicked", G_CALLBACK (xfce_about_license_gpl), builder); object = gtk_builder_get_object (builder, "lgpl-button"); g_signal_connect_swapped (G_OBJECT (object), "clicked", G_CALLBACK (xfce_about_license_lgpl), builder); object = gtk_builder_get_object (builder, "bsd-button"); g_signal_connect_swapped (G_OBJECT (object), "clicked", G_CALLBACK (xfce_about_license_bsd), builder); object = gtk_builder_get_object (builder, "help-button"); g_signal_connect (G_OBJECT (object), "clicked", G_CALLBACK (xfce_about_help), dialog); object = gtk_builder_get_object (builder, "close-button"); g_signal_connect_swapped (G_OBJECT (object), "clicked", G_CALLBACK (gtk_main_quit), NULL); gtk_widget_show (GTK_WIDGET (dialog)); gtk_main (); g_object_unref (G_OBJECT (builder)); return EXIT_SUCCESS; }
/* entry point */ int main (int argc, char **argv) { GtkWidget *mainwin; gint n_burners; GError *error = NULL; #ifdef HAVE_GUDEV gchar *error_msg; #endif XfburnTranscoder *transcoder; XfburnDeviceList *devlist; #if DEBUG > 0 /* I have to disable this until GtkTreeView gets fixed, * and doesn't complain anymore when a DnD doesn't add any * rows g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); */ #endif g_set_application_name (_("Xfburn")); gdk_threads_init (); gdk_threads_enter (); xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); if (!gtk_init_with_args (&argc, &argv, "", optionentries, GETTEXT_PACKAGE, &error)) { if (error != NULL) { g_print (_("%s: %s\nTry %s --help to see a full list of available command line options.\n"), PACKAGE, error->message, PACKAGE_NAME); g_error_free (error); return EXIT_FAILURE; } } if (!burn_initialize ()) { g_critical ("Unable to initialize libburn"); xfce_dialog_show_error (NULL, NULL, _("Unable to initialize the burning backend.")); gdk_threads_leave (); return EXIT_FAILURE; } #ifdef HAVE_GST if (!gst_init_check (&argc, &argv, &error)) { g_critical ("Failed to initialize gstreamer!"); /* I'm assuming this pretty much never happens. If it does, we should make this a soft failure and fall back to basic */ gdk_threads_leave (); burn_finish (); return EXIT_FAILURE; } #endif if (show_version) { #ifdef HAVE_GST const char *nano_str; guint gst_major, gst_minor, gst_micro, gst_nano; #endif g_print ("%s version %s for Xfce %s\n", PACKAGE, VERSION, xfce_version_string ()); g_print ("\tbuilt with GTK+-%d.%d.%d, ", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); g_print ("linked with GTK+-%d.%d.%d.\n", gtk_major_version, gtk_minor_version, gtk_micro_version); #ifdef HAVE_GST gst_version (&gst_major, &gst_minor, &gst_micro, &gst_nano); if (gst_nano == 1) nano_str = " (CVS)"; else if (gst_nano == 2) nano_str = " (Prerelease)"; else nano_str = ""; g_print ("\tGStreamer support (built with %d.%d.%d, linked against %d.%d.%d%s)\n", GST_VERSION_MAJOR, GST_VERSION_MINOR, GST_VERSION_MICRO, gst_major, gst_minor, gst_micro, nano_str); #endif exit (EXIT_SUCCESS); } if (transcoder_selection && strcmp (transcoder_selection, "list") == 0) { print_available_transcoders(); gdk_threads_leave (); burn_finish (); return EXIT_SUCCESS; } DBG ("%s version %s for Xfce %s\n", PACKAGE, VERSION, xfce_version_string ()); xfburn_settings_init (); #ifdef HAVE_GUDEV error_msg = xfburn_udev_manager_create_global (); if (error_msg) { xfce_dialog_show_error (NULL, NULL, "%s", error_msg); gdk_threads_leave (); burn_finish (); return EXIT_FAILURE; } else { g_message ("Using UDEV"); } #endif xfburn_stock_init (); devlist = xfburn_device_list_new (); g_object_get (devlist, "num-burners", &n_burners, NULL); if (n_burners < 1) { GtkMessageDialog *dialog = (GtkMessageDialog *) gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, ((const gchar *) _("No burners are currently available"))); gtk_message_dialog_format_secondary_text (dialog, _("Possibly the disc(s) are in use, and cannot get accessed.\n\n" "Please unmount and restart the application.\n\n" "If no disc is in the drive, check that you have read and write access to the drive with the current user.")); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (GTK_WIDGET (dialog)); } /*----------Transcoder--------------------------------------------------*/ if (!transcoder_selection) { /* select the best available */ #ifdef HAVE_GST transcoder = XFBURN_TRANSCODER (xfburn_transcoder_gst_new ()); #else transcoder = XFBURN_TRANSCODER (xfburn_transcoder_basic_new ()); #endif #ifdef HAVE_GST } else if (strcmp (transcoder_selection, "gst") == 0) { transcoder = XFBURN_TRANSCODER (xfburn_transcoder_gst_new ()); #endif } else if (strcmp (transcoder_selection, "basic") == 0) { transcoder = XFBURN_TRANSCODER (xfburn_transcoder_basic_new ()); } else { g_print ("'%s' is an invalid transcoder selection.\n", transcoder_selection); g_print ("\n"); print_available_transcoders(); gdk_threads_leave (); burn_finish (); return EXIT_FAILURE; } if (!xfburn_transcoder_is_initialized (transcoder, &error)) { xfce_dialog_show_warning(NULL, NULL, _("Failed to initialize %s transcoder: %s\n\t(falling back to basic implementation)"), xfburn_transcoder_get_name (transcoder), error->message); g_error_free (error); g_object_unref (transcoder); transcoder = XFBURN_TRANSCODER (xfburn_transcoder_basic_new ()); } else { g_message ("Using %s transcoder.", xfburn_transcoder_get_name (transcoder)); } xfburn_transcoder_set_global (transcoder); /*----------evaluate parsed command line action options-------------------------*/ /* heuristic for file names on the commandline */ if (argc == 2 && !add_data_composition && !add_audio_composition) { /* exactly one filename, assume it is an image */ image_filename = argv[1]; } else if (argc > 2) { /* several file names, for now just open up a data composition */ /* TODO: auto-detect music files for audio compositions */ add_data_composition = TRUE; } if (show_main) { xfburn_main_enter_main_window (); } if (image_filename != NULL) { GtkWidget *dialog = xfburn_burn_image_dialog_new (); other_action = TRUE; DBG ("image_filename = '%s'\n", image_filename); if (*image_filename != '\0') { gchar *image_fullname; if (!g_path_is_absolute (image_filename)) image_fullname = g_build_filename (g_get_current_dir (), image_filename, NULL); else image_fullname = image_filename; if (g_file_test (image_fullname, G_FILE_TEST_EXISTS)) xfburn_burn_image_dialog_set_filechooser_name (dialog, image_fullname); else xfce_dialog_show_error (NULL, NULL, _("Image file '%s' does not exist."), image_fullname); } gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } else if (blank) { GtkWidget *dialog = xfburn_blank_dialog_new (); other_action = TRUE; gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } /*----------main window--------------------------------------------------*/ if (!other_action || show_main) { xfburn_main_enter_main_window (); mainwin = xfburn_main_window_new (); gtk_widget_show (mainwin); if (add_data_composition) xfburn_main_window_add_data_composition_with_files (XFBURN_MAIN_WINDOW (mainwin), argc-1, argv+1); if (add_audio_composition) xfburn_main_window_add_audio_composition_with_files (XFBURN_MAIN_WINDOW (mainwin), argc-1, argv+1); } gtk_main (); /*----------shutdown--------------------------------------------------*/ g_object_unref (devlist); g_object_unref (transcoder); #ifdef HAVE_GUDEV xfburn_udev_manager_shutdown (); #endif xfburn_settings_flush (); xfburn_settings_free (); burn_finish (); gdk_threads_leave (); return EXIT_SUCCESS; }
int main (int argc, char **argv) { ThunarSessionClient *session_client; #ifdef HAVE_DBUS ThunarDBusService *dbus_service = NULL; #endif ThunarApplication *application; GError *error = NULL; gchar *working_directory; gchar **filenames = NULL; const gchar *startup_id; /* setup translation domain */ xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); /* setup application name */ g_set_application_name (_("Thunar")); #ifdef G_ENABLE_DEBUG /* Do NOT remove this line for now, If something doesn't work, * fix your code instead! */ g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING); #endif #if !GLIB_CHECK_VERSION (2, 32, 0) /* initialize the GThread system */ if (!g_thread_supported ()) g_thread_init (NULL); #endif /* get the startup notification id */ startup_id = g_getenv ("DESKTOP_STARTUP_ID"); /* initialize Gtk+ */ if (!gtk_init_with_args (&argc, &argv, _("[FILES...]"), option_entries, GETTEXT_PACKAGE, &error)) { /* check if we have an error message */ if (G_LIKELY (error == NULL)) { /* no error message, the GUI initialization failed */ const gchar *display_name = gdk_get_display_arg_name (); g_printerr (_("Thunar: Failed to open display: %s\n"), (display_name != NULL) ? display_name : " "); } else { /* yep, there's an error, so print it */ g_printerr (_("Thunar: %s\n"), error->message); g_error_free (error); } return EXIT_FAILURE; } /* check if we should print version information */ if (G_UNLIKELY (opt_version)) { g_print ("%s %s (Xfce %s)\n\n", PACKAGE_NAME, PACKAGE_VERSION, xfce_version_string ()); g_print ("%s\n", "Copyright (c) 2004-2012"); g_print ("\t%s\n\n", _("The Thunar development team. All rights reserved.")); g_print ("%s\n\n", _("Written by Benedikt Meurer <*****@*****.**>.")); g_print (_("Please report bugs to <%s>."), PACKAGE_BUGREPORT); g_print ("\n"); return EXIT_SUCCESS; } /* initialize xfconf */ if (!xfconf_init (&error)) { g_printerr (PACKAGE_NAME ": Failed to initialize Xfconf: %s\n\n", error->message); g_clear_error (&error); /* disable get/set properties */ thunar_preferences_xfconf_init_failed (); } #ifdef HAVE_GIO_UNIX /* set desktop environment for app infos */ g_desktop_app_info_set_desktop_env ("XFCE"); #endif /* register additional transformation functions */ thunar_g_initialize_transformations (); #ifdef HAVE_DBUS /* check if we should terminate a running Thunar instance */ if (G_UNLIKELY (opt_quit)) { /* try to terminate whatever is running */ if (!thunar_dbus_client_terminate (&error)) { g_printerr ("Thunar: Failed to terminate running instance: %s\n", error->message); g_error_free (error); return EXIT_FAILURE; } return EXIT_SUCCESS; } #endif /* determine the current working directory */ working_directory = g_get_current_dir (); /* check if atleast one filename was specified, else * fall back to opening the current working directory * if daemon mode is not requested. */ if (G_LIKELY (argc > 1)) { /* use the specified filenames */ filenames = g_strdupv (argv + 1); } else if (opt_bulk_rename) { /* default to an empty list */ filenames = g_new (gchar *, 1); filenames[0] = NULL; } else if (!opt_daemon)
static void initialize (int argc, char **argv) { gboolean disable_tcp = FALSE; GdkDisplay *dpy; XfceRc *rc; for (++argv; --argc > 0; ++argv) { if (strcmp (*argv, "--version") == 0) { printf ("%s (Xfce %s)\n\n" "Copyright (c) 2003-2006\n" " The Xfce development team. All rights reserved.\n\n" "Written for Xfce by Benedikt Meurer <*****@*****.**>.\n\n" "Built with Gtk+-%d.%d.%d, running with Gtk+-%d.%d.%d.\n\n" "Please report bugs to <%s>.\n", PACKAGE_STRING, xfce_version_string (), GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION, gtk_major_version, gtk_minor_version, gtk_micro_version, PACKAGE_BUGREPORT); exit (EXIT_SUCCESS); } else if (strcmp (*argv, "--disable-tcp") == 0) { disable_tcp = TRUE; } else { usage (strcmp (*argv, "--help") == 0 ? EXIT_SUCCESS : EXIT_FAILURE); } } setup_environment (); rc = xfsm_open_config (TRUE); dpy = gdk_display_get_default (); init_display (dpy, rc, disable_tcp); /* verify that the DNS settings are ok */ xfsm_splash_screen_next (splash_screen, _("Verifying DNS settings")); xfsm_dns_check (); xfsm_splash_screen_next (splash_screen, _("Loading session data")); xfce_rc_set_group (rc, "Compatibility"); compat_gnome = xfce_rc_read_bool_entry (rc, "LaunchGnome", FALSE); compat_kde = xfce_rc_read_bool_entry (rc, "LaunchKDE", FALSE); xfce_rc_set_group (rc, "General"); xfsm_startup_init (rc); xfsm_manager_init (rc); /* cleanup obsolete entries */ xfce_rc_set_group (rc, "General"); if (xfce_rc_has_entry (rc, "ConfirmLogout")) xfce_rc_delete_entry (rc, "ConfirmLogout", FALSE); if (xfce_rc_has_entry (rc, "AlwaysDisplayChooser")) xfce_rc_delete_entry (rc, "AlwaysDisplayChooser", FALSE); xfce_rc_delete_group (rc, "Splash Theme", FALSE); xfce_rc_close (rc); }
int main(int argc, char **argv) { GtkBuilder *builder; GtkWidget *notebook, *xfae_page, *lbl; GError *error = NULL; XfconfChannel *channel; xfce_textdomain(GETTEXT_PACKAGE, LOCALEDIR, "UTF-8"); if(!gtk_init_with_args (&argc, &argv, "", option_entries, GETTEXT_PACKAGE, &error)) { if(G_LIKELY(error)) { g_print("%s: %s.\n", G_LOG_DOMAIN, error->message); g_print(_("Type '%s --help' for usage."), G_LOG_DOMAIN); g_print("\n"); g_error_free (error); } else g_error("Unable to open display."); return EXIT_FAILURE; } if(G_UNLIKELY(opt_version)) { g_print("%s %s (Xfce %s)\n\n", G_LOG_DOMAIN, PACKAGE_VERSION, xfce_version_string ()); g_print("%s\n", "Copyright (c) 2004-2014"); g_print("\t%s\n\n", _("The Xfce development team. All rights reserved.")); g_print(_("Please report bugs to <%s>."), PACKAGE_BUGREPORT); g_print("\n"); return EXIT_SUCCESS; } if(G_UNLIKELY(!xfconf_init(&error))) { xfce_dialog_show_error (NULL, error, _("Unable to contact settings server")); g_error_free(error); return EXIT_FAILURE; } gtk_window_set_default_icon_name("xfce4-session"); /* hook to make sure the libxfce4ui library is linked */ if (xfce_titled_dialog_get_type() == 0) return EXIT_FAILURE; builder = gtk_builder_new(); gtk_builder_add_from_string(builder, xfce4_session_settings_ui, xfce4_session_settings_ui_length, &error); if(!builder) { xfce_dialog_show_error(NULL, error, _("Unable to create user interface from embedded definition data")); g_error_free (error); return EXIT_FAILURE; } splash_settings_init(builder); session_editor_init(builder); /* FIXME: someday, glade-ify this, maybe. */ xfae_page = xfae_window_new(); gtk_widget_show(xfae_page); notebook = GTK_WIDGET(gtk_builder_get_object(builder, "plug-child")); lbl = gtk_label_new_with_mnemonic(_("App_lication Autostart")); gtk_widget_show(lbl); gtk_notebook_insert_page(GTK_NOTEBOOK(notebook), xfae_page, lbl, 2); channel = xfconf_channel_get(SETTINGS_CHANNEL); /* bind widgets to xfconf */ xfconf_g_property_bind(channel, "/chooser/AlwaysDisplay", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_display_chooser"), "active"); xfconf_g_property_bind(channel, "/general/AutoSave", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_session_autosave"), "active"); xfconf_g_property_bind(channel, "/general/PromptOnLogout", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_logout_prompt"), "active"); xfconf_g_property_bind(channel, "/compat/LaunchGNOME", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_compat_gnome"), "active"); xfconf_g_property_bind(channel, "/compat/LaunchKDE", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_compat_kde"), "active"); xfconf_g_property_bind(channel, "/security/EnableTcp", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_enable_tcp"), "active"); xfconf_g_property_bind(channel, "/shutdown/LockScreen", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_lock_screen"), "active"); if(G_UNLIKELY(opt_socket_id == 0)) { GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "xfce4_session_settings_dialog")); g_signal_connect(dialog, "response", G_CALLBACK(xfce4_session_settings_dialog_response), NULL); g_signal_connect(dialog, "delete-event", G_CALLBACK(gtk_main_quit), NULL); gtk_widget_show(dialog); /* To prevent the settings dialog to be saved in the session */ gdk_set_sm_client_id ("FAKE ID"); gtk_main(); } else { GtkWidget *plug, *plug_child; plug = gtk_plug_new(opt_socket_id); gtk_widget_show(plug); g_signal_connect(plug, "delete-event", G_CALLBACK(gtk_main_quit), NULL); plug_child = GTK_WIDGET(gtk_builder_get_object(builder, "plug-child")); gtk_widget_reparent(plug_child, plug); gtk_widget_show(plug_child); /* Stop startup notification */ gdk_notify_startup_complete(); gtk_main(); } g_object_unref(builder); return EXIT_SUCCESS; }
/** * xfce_dialog_show_help_with_version: * @parent : (allow-none): transient parent of the dialog, or %NULL. * @component : (allow-none): name of the component opening the help page or %NULL. If the * value is %NULL the target will be the main page of the * documentation website. * @page : (allow-none): subpage of the @component on the website or %NULL. * @offset : (allow-none): anchor offset in @page or %NULL. * @version : (allow-none): alternative version, or %NULL to use xfce_version_string(). * * Asks the user to visit the online documentation. If confirmed, it will open * the webbrowser and redirect the user to the correct location. * * Appart from the @component, @page and @offset the following information * is also send to the server: user language and the xfce_version_string() * or @version if set. * * See also: xfce_dialog_show_help(). * * Since: 4.12 * */ void xfce_dialog_show_help_with_version (GtkWindow *parent, const gchar *component, const gchar *page, const gchar *offset, const gchar *version) { GtkWidget *dialog; const gchar *name; gchar *primary; GString *uri; gchar *locale; GtkWidget *message_box; GtkWidget *button; XfceRc *rc; gboolean auto_online; GdkScreen *screen; g_return_if_fail (parent == NULL || GTK_IS_WINDOW (parent)); /* get the user's locale without encoding */ locale = g_strdup (setlocale (LC_MESSAGES, NULL)); if (G_LIKELY (locale != NULL)) locale = g_strdelimit (locale, ".", '\0'); else locale = g_strdup ("C"); /* use desktop version if none is set */ if (version == NULL) version = xfce_version_string (); /* build the redirect uri */ uri = g_string_new (MANUAL_WEBSITE); g_string_append_printf (uri, "?version=%s&locale=%s", version, locale); g_free (locale); if (component != NULL) g_string_append_printf (uri, "&component=%s", component); if (page != NULL) g_string_append_printf (uri, "&page=%s", page); if (offset != NULL) g_string_append_printf (uri, "&offset=%s", offset); /* check if we should automatically go online */ rc = xfce_rc_config_open (XFCE_RESOURCE_CONFIG, "xfce4/help.rc", TRUE); if (rc != NULL) { auto_online = xfce_rc_read_bool_entry (rc, "auto-online", FALSE); xfce_rc_close (rc); if (auto_online) { if (parent != NULL) screen = gtk_window_get_screen (GTK_WINDOW (parent)); else screen = xfce_gdk_screen_get_active (NULL); xfce_dialog_show_help_uri (screen, parent, uri); g_string_free (uri, TRUE); return; } } /* try to get a translated name of the application */ name = g_get_application_name (); if (g_strcmp0 (name, g_get_prgname ()) == 0) name = NULL; /* try to get a decent primary text */ if (name != NULL) primary = g_strdup_printf (_("Do you want to read the %s manual online?"), name); else primary = g_strdup (_("Do you want to read the manual online?")); dialog = xfce_message_dialog_new (parent, _("Online Documentation"), #if !GTK_CHECK_VERSION (3, 10, 0) GTK_STOCK_DIALOG_QUESTION, #else "dialog-question", #endif primary, _("You will be redirected to the documentation website " "where the help pages are maintained and translated."), #if !GTK_CHECK_VERSION (3, 10, 0) GTK_STOCK_CANCEL, #else "gtk-cancel", #endif GTK_RESPONSE_NO, XFCE_BUTTON_TYPE_MIXED, #if !GTK_CHECK_VERSION (3, 10, 0) GTK_STOCK_HELP, #else "help-browser", #endif _("_Read Online"), GTK_RESPONSE_YES, NULL); g_free (primary); message_box = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); g_return_if_fail (GTK_IS_BOX (message_box)); button = gtk_check_button_new_with_mnemonic (_("_Always go directly to the online documentation")); gtk_box_pack_end (GTK_BOX (message_box), button, FALSE, TRUE, 0); #if GTK_CHECK_VERSION (3, 0, 0) g_object_set (G_OBJECT (button), "halign", GTK_ALIGN_END, "margin-start", 8, "margin-end", 8, NULL); gtk_widget_set_hexpand (button, TRUE); #endif g_signal_connect (G_OBJECT (button), "toggled", G_CALLBACK (xfce_dialog_show_help_auto_toggled), NULL); gtk_widget_show (button); /* don't focus the checkbutton */ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES); button = gtk_dialog_get_widget_for_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES); gtk_widget_grab_focus (button); /* show the dialog without locking the mainloop */ gtk_window_set_modal (GTK_WINDOW (dialog), parent != NULL); g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (xfce_dialog_show_help_response), uri); gtk_window_present (GTK_WINDOW (dialog)); }
gint main (gint argc, gchar **argv) { GOptionContext *context; PanelApplication *application; GError *error = NULL; PanelDBusService *dbus_service; gboolean succeed = FALSE; gboolean remote_succeed; guint i; const gint signums[] = { SIGINT, SIGQUIT, SIGTERM, SIGABRT, SIGUSR1 }; const gchar *error_msg; XfceSMClient *sm_client; panel_debug (PANEL_DEBUG_MAIN, "version %s on gtk+ %d.%d.%d (%d.%d.%d), glib %d.%d.%d (%d.%d.%d)", LIBXFCE4PANEL_VERSION, gtk_major_version, gtk_minor_version, gtk_micro_version, GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION, glib_major_version, glib_minor_version, glib_micro_version, GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); /* inform the user about usage of gdb/valgrind */ panel_debug_notify_proxy (); /* set translation domain */ xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); #ifdef G_ENABLE_DEBUG /* do NOT remove this line for now, If something doesn't work, * fix your code instead! */ g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING); #endif /* parse context options */ context = g_option_context_new (_("[ARGUMENTS...]")); g_option_context_add_main_entries (context, option_entries, GETTEXT_PACKAGE); g_option_context_add_group (context, gtk_get_option_group (TRUE)); g_option_context_add_group (context, xfce_sm_client_get_option_group (argc, argv)); if (!g_option_context_parse (context, &argc, &argv, &error)) { g_print ("%s: %s.\n", PACKAGE_NAME, error->message); g_print (_("Type \"%s --help\" for usage."), G_LOG_DOMAIN); g_print ("\n"); g_error_free (error); return EXIT_FAILURE; } g_option_context_free (context); gtk_init (&argc, &argv); if (opt_version) { /* print version information */ if (opt_arguments != NULL && *opt_arguments != NULL) g_print ("%s (%s)", *opt_arguments, PACKAGE_NAME); else g_print ("%s", PACKAGE_NAME); g_print (" %s (Xfce %s)\n\n", PACKAGE_VERSION, xfce_version_string ()); g_print ("%s\n", "Copyright (c) 2004-2011"); g_print ("\t%s\n\n", _("The Xfce development team. All rights reserved.")); g_print (_("Please report bugs to <%s>."), PACKAGE_BUGREPORT); g_print ("\n"); return EXIT_SUCCESS; } else if (opt_preferences >= 0) { /* send a signal to the running instance to show the preferences dialog */ succeed = panel_dbus_client_display_preferences_dialog (opt_preferences, opt_socket_id, &error); goto dbus_return; } else if (opt_add_items >= 0) { /* send a signal to the running instance to show the add items dialog */ succeed = panel_dbus_client_display_items_dialog (opt_add_items, &error); goto dbus_return; } else if (opt_save) { /* send a save signal to the running instance */ succeed = panel_dbus_client_save (&error); goto dbus_return; } else if (opt_add != NULL) { /* send a add-new-item signal to the running instance */ succeed = panel_dbus_client_add_new_item (opt_add, opt_arguments, &error); goto dbus_return; } else if (opt_restart || opt_quit) { /* send a terminate signal to the running instance */ succeed = panel_dbus_client_terminate (opt_restart, &error); goto dbus_return; } else if (opt_plugin_event != NULL) { /* send the plugin event to the running instance */ remote_succeed = FALSE; succeed = panel_dbus_client_plugin_event (opt_plugin_event, &remote_succeed, &error); /* the panel returns EXIT_FAILURE if the dbus event succeeds, but * no suitable plugin was found on the service side */ if (succeed && !remote_succeed) succeed = FALSE; goto dbus_return; } launch_panel: /* start dbus service */ dbus_service = panel_dbus_service_get (); if (!panel_dbus_service_is_owner (dbus_service)) { /* quit without error if an instance is running */ succeed = TRUE; g_print ("%s: %s\n\n", G_LOG_DOMAIN, _("There is already a running instance")); goto dbus_return; } /* start session management */ sm_client = xfce_sm_client_get (); xfce_sm_client_set_restart_style (sm_client, XFCE_SM_CLIENT_RESTART_IMMEDIATELY); xfce_sm_client_set_priority (sm_client, XFCE_SM_CLIENT_PRIORITY_CORE); g_signal_connect (G_OBJECT (sm_client), "quit", G_CALLBACK (panel_sm_client_quit), NULL); if (!xfce_sm_client_connect (sm_client, &error)) { g_printerr ("%s: Failed to connect to session manager: %s\n", G_LOG_DOMAIN, error->message); g_clear_error (&error); } /* setup signal handlers to properly quit the main loop */ for (i = 0; i < G_N_ELEMENTS (signums); i++) signal (signums[i], panel_signal_handler); application = panel_application_get (); panel_application_load (application, opt_disable_wm_check); /* open dialog if we started from launch_panel */ if (opt_preferences >= 0) panel_preferences_dialog_show_from_id (opt_preferences, opt_socket_id); gtk_main (); /* make sure there are no incomming events when we close */ g_object_unref (G_OBJECT (dbus_service)); /* destroy all the opened dialogs */ panel_application_destroy_dialogs (application); g_object_unref (G_OBJECT (application)); g_object_unref (G_OBJECT (sm_client)); if (panel_dbus_service_get_restart ()) { /* spawn ourselfs again */ g_print ("%s: %s\n\n", G_LOG_DOMAIN, _("Restarting...")); g_spawn_command_line_async (argv[0], NULL); } return EXIT_SUCCESS; dbus_return: /* stop any running startup notification */ gdk_notify_startup_complete (); if (G_UNLIKELY (error != NULL)) { /* get suitable error message */ if (opt_preferences >= 0) error_msg = _("Failed to show the preferences dialog"); else if (opt_add_items >= 0) error_msg = _("Failed to show the add new items dialog"); else if (opt_save) error_msg = _("Failed to save the panel configuration"); else if (opt_add) error_msg = _("Failed to add a plugin to the panel"); else if (opt_restart) error_msg = _("Failed to restart the panel"); else if (opt_quit) error_msg = _("Failed to quit the panel"); else error_msg = _("Failed to send D-Bus message"); /* show understandable message for this common error */ if (error->code == DBUS_GERROR_NAME_HAS_NO_OWNER) { /* normally start the panel */ if (opt_preferences >= 0 || opt_restart) { g_clear_error (&error); if (xfce_dialog_confirm (NULL, GTK_STOCK_EXECUTE, NULL, _("Do you want to start the panel? If you do, make sure " "you save the session on logout, so the panel is " "automatically started the next time you login."), _("No running instance of %s was found"), G_LOG_DOMAIN)) { panel_debug (PANEL_DEBUG_MAIN, "user confirmed to start the panel"); goto launch_panel; } else { return EXIT_FAILURE; } } else { /* I18N: %s is replaced with xfce4-panel */ g_clear_error (&error); g_set_error (&error, 0, 0, _("No running instance of %s was found"), G_LOG_DOMAIN); } } /* show error dialog */ xfce_dialog_show_error (NULL, error, "%s", error_msg); g_error_free (error); } return succeed ? EXIT_SUCCESS : EXIT_FAILURE; }