void extensions__dlg_preferences_apply (GtkWidget *dialog, GthBrowser *browser, GtkBuilder *dialog_builder) { BrowserData *data; GList *active_extensions; GthExtensionManager *manager; GList *extension_names; GList *scan; data = g_object_get_data (G_OBJECT (dialog), BROWSER_DATA_KEY); g_return_if_fail (data != NULL); active_extensions = NULL; manager = gth_main_get_default_extension_manager (); extension_names = gth_extension_manager_get_extensions (manager); for (scan = extension_names; scan; scan = scan->next) { char *extension_name = scan->data; GthExtensionDescription *description; description = gth_extension_manager_get_description (manager, extension_name); if ((description == NULL) || description->mandatory || description->hidden) continue; if (gth_extension_description_is_active (description)) active_extensions = g_list_prepend (active_extensions, g_strdup (extension_name)); } active_extensions = g_list_reverse (active_extensions); _g_settings_set_string_list (data->settings, PREF_GENERAL_ACTIVE_EXTENSIONS, active_extensions); if (! list_equal (active_extensions, data->active_extensions)) { GtkWidget *dialog; int response; dialog = _gtk_message_dialog_new (GTK_WINDOW (data->dialog), GTK_DIALOG_MODAL, _GTK_ICON_NAME_DIALOG_WARNING, _("Restart required"), _("You need to restart gthumb for these changes to take effect"), _("_Continue"), GTK_RESPONSE_CANCEL, _("_Restart"), GTK_RESPONSE_OK, NULL); response = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); if (response == GTK_RESPONSE_OK) gth_quit (TRUE); } g_list_foreach (active_extensions, (GFunc) g_free, NULL); g_list_free (active_extensions); g_list_free (extension_names); }
static void copy_to_folder_dialog (GthBrowser *browser, GList *files, gboolean move) { GSettings *settings; GtkWidget *dialog; char *start_uri; GList *history; GList *scan; GtkWidget *box; GtkWidget *view_destination_button; settings = g_settings_new (GTHUMB_FILE_MANAGER_SCHEMA); dialog = gtk_file_chooser_dialog_new (move ? _("Move To") : _("Copy To"), GTK_WINDOW (browser), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, _GTK_LABEL_CANCEL, GTK_RESPONSE_CANCEL, (move ? _("Move") : _("Copy")), GTK_RESPONSE_ACCEPT, NULL); _gtk_dialog_add_class_to_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT, GTK_STYLE_CLASS_SUGGESTED_ACTION); start_uri = g_settings_get_string (settings, PREF_FILE_MANAGER_COPY_LAST_FOLDER); if ((start_uri == NULL) || (strcmp (start_uri, "") == 0)) { g_free (start_uri); start_uri = g_strdup (get_home_uri ()); } gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (dialog), start_uri); g_free(start_uri); history = _g_settings_get_string_list (settings, PREF_FILE_MANAGER_COPY_HISTORY); for (scan = history; scan; scan = scan->next) { char *uri = scan->data; gtk_file_chooser_add_shortcut_folder_uri (GTK_FILE_CHOOSER (dialog), uri, NULL); } box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_container_set_border_width (GTK_CONTAINER (box), 6); gtk_widget_show (box); view_destination_button = gtk_check_button_new_with_mnemonic (_("_View the destination")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (view_destination_button), g_settings_get_boolean (settings, PREF_FILE_MANAGER_COPY_VIEW_DESTINATION)); gtk_widget_show (view_destination_button); gtk_box_pack_start (GTK_BOX (box), view_destination_button, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), box, FALSE, FALSE, 0); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { char *destination_uri; destination_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog)); if (destination_uri != NULL) { gboolean view_destination; /* save the options */ view_destination = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (view_destination_button)); g_settings_set_boolean (settings, PREF_FILE_MANAGER_COPY_VIEW_DESTINATION, view_destination); g_settings_set_string (settings, PREF_FILE_MANAGER_COPY_LAST_FOLDER, destination_uri); /* save the destination in the history list, prevent * the list from growing without limit. */ history = g_list_prepend (history, g_strdup (destination_uri)); while (g_list_length (history) > MAX_HISTORY_LENGTH) { GList *link = g_list_last (history); history = g_list_remove_link (history, link); _g_string_list_free (link); } _g_settings_set_string_list (settings, PREF_FILE_MANAGER_COPY_HISTORY, history); /* copy / move the files */ copy_files_to_folder (browser, files, move, destination_uri, view_destination); } g_free (destination_uri); } _g_string_list_free (history); gtk_widget_destroy (dialog); g_object_unref (settings); }