From cd0aec7eaa3f45e373c4b12a984f3e99dbe249fa Mon Sep 17 00:00:00 2001 From: Bradford Hovinen Date: Fri, 11 Jan 2002 16:01:15 +0000 Subject: [PATCH] Commit the changeset (main): Construct a changeset (edit_cb): Pass the 2002-01-11 Bradford Hovinen * file-types-capplet.c (apply_cb): Commit the changeset (main): Construct a changeset (edit_cb): Pass the changeset to service_info_new * service-info.c (set_string): Don't set the value if it is NULL (service_info_load): Store changeset in info structure (service_info_save): Don't require a changeset; use the one stored in the structure --- capplets/file-types/ChangeLog | 7 +++++++ capplets/file-types/file-types-capplet.c | 13 ++++++++----- capplets/file-types/service-edit-dialog.c | 2 +- capplets/file-types/service-info.c | 17 +++++++++-------- capplets/file-types/service-info.h | 5 +++-- 5 files changed, 28 insertions(+), 16 deletions(-) diff --git a/capplets/file-types/ChangeLog b/capplets/file-types/ChangeLog index 0efe9dbb8..83a89899a 100644 --- a/capplets/file-types/ChangeLog +++ b/capplets/file-types/ChangeLog @@ -1,6 +1,13 @@ 2002-01-11 Bradford Hovinen + * file-types-capplet.c (apply_cb): Commit the changeset + (main): Construct a changeset + (edit_cb): Pass the changeset to service_info_new + * service-info.c (set_string): Don't set the value if it is NULL + (service_info_load): Store changeset in info structure + (service_info_save): Don't require a changeset; use the one stored + in the structure * service-edit-dialog.c (store_data): Call service_info_save diff --git a/capplets/file-types/file-types-capplet.c b/capplets/file-types/file-types-capplet.c index cbc592dbc..d680b9347 100644 --- a/capplets/file-types/file-types-capplet.c +++ b/capplets/file-types/file-types-capplet.c @@ -33,6 +33,8 @@ #include #include +#include +#include #include "mime-types-model.h" #include "mime-edit-dialog.h" @@ -42,7 +44,8 @@ #define WID(x) (glade_xml_get_widget (dialog, x)) -static GList *remove_list = NULL; +static GList *remove_list = NULL; +static GConfChangeSet *changeset = NULL; static void add_cb (GtkButton *button, GladeXML *dialog) @@ -67,7 +70,7 @@ edit_cb (GtkButton *button, GladeXML *dialog) gtk_tree_selection_get_selected (selection, &model, &iter); if (model_entry_is_protocol (model, &iter)) - edit_dialog = service_edit_dialog_new (service_info_load (model, &iter, NULL)); + edit_dialog = service_edit_dialog_new (service_info_load (model, &iter, changeset)); else edit_dialog = mime_edit_dialog_new (mime_type_info_load (model, &iter)); } @@ -144,9 +147,6 @@ create_dialog (void) return dialog; } -/* Stupid gnome-vfs install bug */ -void gnome_vfs_mime_registered_mime_type_delete (const gchar *mime_type); - static void apply_cb (void) { @@ -155,6 +155,8 @@ apply_cb (void) g_list_foreach (remove_list, (GFunc) gnome_vfs_mime_registered_mime_type_delete, NULL); g_list_foreach (remove_list, (GFunc) g_free, NULL); g_list_free (remove_list); + + gconf_client_commit_change_set (gconf_client_get_default (), changeset, TRUE, NULL); } int @@ -168,6 +170,7 @@ main (int argc, char **argv) gnome_program_init ("gnome-file-types-properties", VERSION, LIBGNOMEUI_MODULE, argc, argv, NULL); + changeset = gconf_change_set_new (); dialog = create_dialog (); g_signal_connect (G_OBJECT (WID ("main_apply_button")), "clicked", (GCallback) apply_cb, NULL); diff --git a/capplets/file-types/service-edit-dialog.c b/capplets/file-types/service-edit-dialog.c index 7836e5079..92cae925d 100644 --- a/capplets/file-types/service-edit-dialog.c +++ b/capplets/file-types/service-edit-dialog.c @@ -303,7 +303,7 @@ store_data (ServiceEditDialog *dialog) g_strdup (gnome_file_entry_get_full_path (GNOME_FILE_ENTRY (WID ("custom_program_entry")), FALSE)); service_info_update (dialog->p->info); - service_info_save (dialog->p->info, NULL); + service_info_save (dialog->p->info); } static void diff --git a/capplets/file-types/service-info.c b/capplets/file-types/service-info.c index 1c1848c4e..577296493 100644 --- a/capplets/file-types/service-info.c +++ b/capplets/file-types/service-info.c @@ -135,6 +135,7 @@ service_info_load (GtkTreeModel *model, GtkTreeIter *iter, GConfChangeSet *chang info = g_new0 (ServiceInfo, 1); info->model = model; info->iter = gtk_tree_iter_copy (iter); + info->changeset = changeset; info->protocol = g_value_dup_string (&protocol); info->description = get_string (info, "description", changeset); info->run_program = get_bool (info, "type", changeset); @@ -150,20 +151,20 @@ service_info_load (GtkTreeModel *model, GtkTreeIter *iter, GConfChangeSet *chang } void -service_info_save (const ServiceInfo *info, GConfChangeSet *changeset) +service_info_save (const ServiceInfo *info) { - set_string (info, "description", info->description, changeset); + set_string (info, "description", info->description, info->changeset); if (info->app == NULL) { - set_string (info, "command", info->custom_line, changeset); - set_string (info, "command-id", "", changeset); + set_string (info, "command", info->custom_line, info->changeset); + set_string (info, "command-id", "", info->changeset); } else { - set_string (info, "command", info->app->command, changeset); - set_string (info, "command-id", info->app->id, changeset); + set_string (info, "command", info->app->command, info->changeset); + set_string (info, "command-id", info->app->id, info->changeset); } - set_bool (info, "type", info->run_program, changeset); - set_bool (info, "need-terminal", info->need_terminal, changeset); + set_bool (info, "type", info->run_program, info->changeset); + set_bool (info, "need-terminal", info->need_terminal, info->changeset); } void diff --git a/capplets/file-types/service-info.h b/capplets/file-types/service-info.h index 74de313a8..e295ec634 100644 --- a/capplets/file-types/service-info.h +++ b/capplets/file-types/service-info.h @@ -45,13 +45,14 @@ struct _ServiceInfo { GnomeVFSMimeApplication *app; gchar *custom_line; gboolean need_terminal; + + GConfChangeSet *changeset; }; ServiceInfo *service_info_load (GtkTreeModel *model, GtkTreeIter *iter, GConfChangeSet *changeset); -void service_info_save (const ServiceInfo *info, - GConfChangeSet *changeset); +void service_info_save (const ServiceInfo *info); void service_info_update (ServiceInfo *info); void service_info_free (ServiceInfo *info);