static void dlg_add_folder_save_current_options (DialogData *data, GFile *options_file) { char *base_dir; char *filename; const char *include_files; const char *exclude_files; const char *exclude_folders; gboolean update; gboolean recursive; gboolean no_symlinks; GKeyFile *key_file; get_options_from_widgets (data, &base_dir, &filename, &include_files, &exclude_files, &exclude_folders, &update, &recursive, &no_symlinks); fr_window_set_add_default_dir (data->window, base_dir); key_file = g_key_file_new (); g_key_file_set_string (key_file, "Options", "base_dir", base_dir); g_key_file_set_string (key_file, "Options", "filename", filename); g_key_file_set_string (key_file, "Options", "include_files", include_files); g_key_file_set_string (key_file, "Options", "exclude_files", exclude_files); g_key_file_set_string (key_file, "Options", "exclude_folders", exclude_folders); g_key_file_set_boolean (key_file, "Options", "update", update); g_key_file_set_boolean (key_file, "Options", "recursive", recursive); g_key_file_set_boolean (key_file, "Options", "no_symlinks", no_symlinks); g_key_file_save (key_file, options_file); g_key_file_free (key_file); g_free (base_dir); g_free (filename); }
static int file_sel_response_cb (GtkWidget *widget, int response, DialogData *data) { GtkFileChooser *file_sel = GTK_FILE_CHOOSER (widget); FrWindow *window = data->window; char *current_folder; char *uri; gboolean update; GSList *selections, *iter; GList *item_list = NULL; current_folder = gtk_file_chooser_get_current_folder_uri (file_sel); uri = gtk_file_chooser_get_uri (file_sel); if (current_folder != NULL) { g_settings_set_string (data->settings, PREF_ADD_CURRENT_FOLDER, current_folder); fr_window_set_add_default_dir (window, current_folder); } if (uri != NULL) { g_settings_set_string (data->settings, PREF_ADD_FILENAME, uri); g_free (uri); } if ((response == GTK_RESPONSE_CANCEL) || (response == GTK_RESPONSE_DELETE_EVENT)) { gtk_widget_destroy (data->dialog); g_free (current_folder); return TRUE; } if (response == GTK_RESPONSE_HELP) { show_help_dialog (GTK_WINDOW (data->dialog), "archive-edit"); g_free (current_folder); return TRUE; } /* check folder permissions. */ if (uri_is_dir (current_folder) && ! check_permissions (current_folder, R_OK)) { GtkWidget *d; char *utf8_path; utf8_path = g_filename_display_name (current_folder); d = _gtk_error_dialog_new (GTK_WINDOW (window), GTK_DIALOG_MODAL, NULL, _("Could not add the files to the archive"), _("You don't have the right permissions to read files from folder \"%s\""), utf8_path); gtk_dialog_run (GTK_DIALOG (d)); gtk_widget_destroy (GTK_WIDGET (d)); g_free (utf8_path); g_free (current_folder); return FALSE; } update = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->add_if_newer_checkbutton)); /**/ selections = gtk_file_chooser_get_uris (file_sel); for (iter = selections; iter != NULL; iter = iter->next) { char *uri = iter->data; item_list = g_list_prepend (item_list, g_file_new_for_uri (uri)); } if (item_list != NULL) fr_window_archive_add_files (window, item_list, update); gio_file_list_free (item_list); g_slist_foreach (selections, (GFunc) g_free, NULL); g_slist_free (selections); g_free (current_folder); gtk_widget_destroy (data->dialog); return TRUE; }