Updating branch refs/heads/master to 626550456eae93cf97626d36ccd9d41d9236174c (commit) from 065f3a6fd1b2d616abe4965cb0387769dc9c8dd0 (commit)
commit 626550456eae93cf97626d36ccd9d41d9236174c Author: Enrico Tröger <enr...@xfce.org> Date: Fri Dec 31 01:15:14 2010 +0100 allow editing bookmarks from the main window popup menu src/window.c | 36 ++++++++++++++++++++++++++++++------ 1 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/window.c b/src/window.c index d69f924..9436021 100644 --- a/src/window.c +++ b/src/window.c @@ -606,6 +606,16 @@ static gboolean iter_is_bookmark(GigoloWindow *window, GtkTreeModel *model, GtkT } +static void update_create_edit_bookmark_action_label(GtkAction *action, gboolean is_bookmark) +{ + gtk_action_set_sensitive(action, TRUE); + if (is_bookmark) + gtk_action_set_label(action, _("Edit _Bookmark")); + else + gtk_action_set_label(action, _("Create _Bookmark")); +} + + static void update_sensitive_buttons(GigoloWindow *window, GtkTreeModel *model, GtkTreeIter *iter) { GigoloWindowPrivate *priv = GIGOLO_WINDOW_GET_PRIVATE(window); @@ -619,7 +629,7 @@ static void update_sensitive_buttons(GigoloWindow *window, GtkTreeModel *model, gtk_action_set_sensitive(priv->action_connect, (ref_type != GIGOLO_WINDOW_REF_TYPE_MOUNT)); gtk_action_set_sensitive(priv->action_disconnect, (ref_type == GIGOLO_WINDOW_REF_TYPE_MOUNT)); - gtk_action_set_sensitive(priv->action_bookmark_create, ! is_bookmark); + update_create_edit_bookmark_action_label(priv->action_bookmark_create, is_bookmark); gtk_action_set_sensitive(priv->action_open, gigolo_settings_has_file_manager(priv->settings)); gtk_action_set_sensitive(priv->action_copyuri, (ref_type == GIGOLO_WINDOW_REF_TYPE_MOUNT)); } @@ -871,16 +881,17 @@ static void action_create_bookmark_cb(G_GNUC_UNUSED GtkAction *button, GigoloWin if (gigolo_backend_gvfs_is_mount(mnt)) { gchar *uri, *name; + GigoloBookmark *bm; + GtkWidget *edit_dialog; gigolo_backend_gvfs_get_name_and_uri_from_mount(mnt, &name, &uri); - if (gigolo_settings_get_bookmark_by_uri(priv->settings, uri) == NULL) + bm = gigolo_settings_get_bookmark_by_uri(priv->settings, uri); + if (bm == NULL) { - GigoloBookmark *bm = gigolo_bookmark_new_from_uri(name, uri); + bm = gigolo_bookmark_new_from_uri(name, uri); if (gigolo_bookmark_is_valid(bm)) { - GtkWidget *edit_dialog; - /* show the bookmark edit dialog and add the bookmark only if it was * not cancelled */ edit_dialog = gigolo_bookmark_edit_dialog_new_with_bookmark( @@ -901,8 +912,21 @@ static void action_create_bookmark_cb(G_GNUC_UNUSED GtkAction *button, GigoloWin g_object_unref(bm); } else - verbose("Bookmark for %s already exists", uri); + { + /* bookmark exists */ + edit_dialog = gigolo_bookmark_edit_dialog_new_with_bookmark( + window, GIGOLO_BE_MODE_EDIT, bm); + if (gigolo_bookmark_edit_dialog_run( + GIGOLO_BOOKMARK_EDIT_DIALOG(edit_dialog)) == GTK_RESPONSE_OK) + { + /* this fills the values of the dialog into 'bm' */ + g_object_set(edit_dialog, "bookmark-update", bm, NULL); + gigolo_window_update_bookmarks(window); + gigolo_settings_write(priv->settings, GIGOLO_SETTINGS_BOOKMARKS); + } + gtk_widget_destroy(edit_dialog); + } g_free(uri); g_free(name); } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits