static void save_options_cb (GtkWidget *w, DialogData *data) { GFile *options_dir; GFile *options_file; char *opt_filename; options_dir = get_user_config_subdirectory (ADD_FOLDER_OPTIONS_DIR, TRUE); make_directory_tree (options_dir, 0700, NULL); opt_filename = _gtk_request_dialog_run ( GTK_WINDOW (data->dialog), GTK_DIALOG_MODAL, _("Save Options"), _("_Options Name:"), (data->last_options != NULL) ? data->last_options : "", 1024, GTK_STOCK_CANCEL, GTK_STOCK_SAVE); if (opt_filename == NULL) return; options_file = g_file_get_child_for_display_name (options_dir, opt_filename, NULL); dlg_add_folder_save_current_options (data, options_file); dlg_add_folder_save_last_used_options (data, opt_filename); g_free (opt_filename); g_object_unref (options_file); g_object_unref (options_dir); }
static void aod_remove_cb (GtkWidget *widget, LoadOptionsDialogData *aod_data) { GtkTreeSelection *selection; GtkTreeIter iter; char *filename; GFile *options_dir; GFile *options_file; GError *error = NULL; selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (aod_data->aod_treeview)); if (! gtk_tree_selection_get_selected (selection, NULL, &iter)) return; gtk_tree_model_get (aod_data->aod_model, &iter, 1, &filename, -1); gtk_list_store_remove (GTK_LIST_STORE (aod_data->aod_model), &iter); options_dir = get_user_config_subdirectory (ADD_FOLDER_OPTIONS_DIR, TRUE); options_file = g_file_get_child (options_dir, filename); if (! g_file_delete (options_file, NULL, &error)) { g_warning ("could not delete the options: %s", error->message); g_clear_error (&error); } g_object_unref (options_file); g_object_unref (options_dir); g_free (filename); }
static void aod_update_option_list (LoadOptionsDialogData *aod_data) { GtkListStore *list_store = GTK_LIST_STORE (aod_data->aod_model); GFile *options_dir; GFileEnumerator *file_enum; GFileInfo *info; GError *err = NULL; gtk_list_store_clear (list_store); options_dir = get_user_config_subdirectory (ADD_FOLDER_OPTIONS_DIR, TRUE); make_directory_tree (options_dir, 0700, NULL); file_enum = g_file_enumerate_children (options_dir, G_FILE_ATTRIBUTE_STANDARD_NAME, 0, NULL, &err); if (err != NULL) { g_warning ("Failed to enumerate children: %s", err->message); g_clear_error (&err); g_object_unref (options_dir); return; } while ((info = g_file_enumerator_next_file (file_enum, NULL, &err)) != NULL) { const char *name; char *display_name; GtkTreeIter iter; if (err != NULL) { g_warning ("Failed to get info while enumerating: %s", err->message); g_clear_error (&err); continue; } name = g_file_info_get_name (info); display_name = g_filename_display_name (name); gtk_list_store_append (GTK_LIST_STORE (aod_data->aod_model), &iter); gtk_list_store_set (GTK_LIST_STORE (aod_data->aod_model), &iter, 0, name, 1, display_name, -1); g_free (display_name); g_object_unref (info); } if (err != NULL) { g_warning ("Failed to get info after enumeration: %s", err->message); g_clear_error (&err); } g_object_unref (options_dir); }
static void migrate_options_directory (void) { char *old_directory_path; GFile *old_directory; GFile *new_directory; old_directory_path = get_home_relative_path (".gnome2/file-roller/options"); old_directory = g_file_new_for_path (old_directory_path); new_directory = get_user_config_subdirectory (ADD_FOLDER_OPTIONS_DIR, FALSE); if (g_file_query_exists (old_directory, NULL) && ! g_file_query_exists (new_directory, NULL)) { GFile *parent; parent = g_file_get_parent (new_directory); if (make_directory_tree (parent, 0700, NULL)) g_file_move (old_directory, new_directory, 0, NULL, NULL, NULL, NULL); g_object_unref (parent); } g_object_unref (new_directory); g_object_unref (old_directory); g_free (old_directory_path); }
static gboolean dlg_add_folder_load_options (DialogData *data, const char *name) { GFile *options_dir; GFile *options_file; char *file_path; GKeyFile *key_file; GError *error = NULL; char *base_dir = NULL; char *filename = NULL; char *include_files = NULL; char *exclude_files = NULL; char *exclude_folders = NULL; gboolean update; gboolean recursive; gboolean no_symlinks; options_dir = get_user_config_subdirectory (ADD_FOLDER_OPTIONS_DIR, TRUE); options_file = g_file_get_child (options_dir, name); file_path = g_file_get_path (options_file); key_file = g_key_file_new (); if (! g_key_file_load_from_file (key_file, file_path, G_KEY_FILE_KEEP_COMMENTS, &error)) { if (error->code != G_IO_ERROR_NOT_FOUND) g_warning ("Could not load options file: %s\n", error->message); g_clear_error (&error); g_object_unref (options_file); g_object_unref (options_dir); g_key_file_free (key_file); return FALSE; } base_dir = g_key_file_get_string (key_file, "Options", "base_dir", NULL); filename = g_key_file_get_string (key_file, "Options", "filename", NULL); include_files = g_key_file_get_string (key_file, "Options", "include_files", NULL); exclude_files = g_key_file_get_string (key_file, "Options", "exclude_files", NULL); exclude_folders = g_key_file_get_string (key_file, "Options", "exclude_folders", NULL); update = g_key_file_get_boolean (key_file, "Options", "update", NULL); recursive = g_key_file_get_boolean (key_file, "Options", "recursive", NULL); no_symlinks = g_key_file_get_boolean (key_file, "Options", "no_symlinks", NULL); sync_widgets_with_options (data, base_dir, filename, include_files, exclude_files, exclude_folders, update, recursive, no_symlinks); dlg_add_folder_save_last_used_options (data, file_path); g_free (base_dir); g_free (filename); g_free (include_files); g_free (exclude_files); g_free (exclude_folders); g_key_file_free (key_file); g_free (file_path); g_object_unref (options_file); g_object_unref (options_dir); return TRUE; }