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

Reply via email to