[vinagre] Added an toolbar in bookmarks panel.



commit 8a91311b5cfe8e3982c6aee5a6ffb54783c64238
Author: Jonh Wendell <jwendell gnome org>
Date:   Mon Oct 26 09:05:15 2009 -0300

    Added an toolbar in bookmarks panel.
    
    Removed edit/delete entries from the bookmarks menu and moved them
    to a toolbar in the side panel.
    
    As a side effect, this fixes #581855.

 data/Makefile.am                 |    2 +-
 data/vinagre-fav-ui.xml          |   54 +++++++
 data/vinagre-ui.xml              |   26 ----
 vinagre/vinagre-commands.c       |   54 -------
 vinagre/vinagre-commands.h       |   12 +--
 vinagre/vinagre-fav.c            |  303 ++++++++++++++++++++++++++++++--------
 vinagre/vinagre-fav.h            |    8 +-
 vinagre/vinagre-ui.h             |   12 --
 vinagre/vinagre-window-private.h |    3 -
 vinagre/vinagre-window.c         |   78 +---------
 10 files changed, 307 insertions(+), 245 deletions(-)
---
diff --git a/data/Makefile.am b/data/Makefile.am
index 8f7b4cd..d2e3294 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -9,7 +9,7 @@ vinagre- VINAGRE_API_VERSION@.pc: vinagre.pc
 	cp vinagre.pc vinagre- VINAGRE_API_VERSION@.pc
 
 uidir = $(datadir)/vinagre
-ui_DATA = vinagre-ui.xml GNOME_VinagreApplet.xml vinagre.ui
+ui_DATA = vinagre-ui.xml GNOME_VinagreApplet.xml vinagre.ui vinagre-fav-ui.xml
 
 @INTLTOOL_DESKTOP_RULE@
 desktopdir       = $(datadir)/applications
diff --git a/data/vinagre-fav-ui.xml b/data/vinagre-fav-ui.xml
new file mode 100644
index 0000000..5b8bdd8
--- /dev/null
+++ b/data/vinagre-fav-ui.xml
@@ -0,0 +1,54 @@
+<!--
+ * vinagre-fav-ui.xml
+ * This file is part of vinagre
+ *
+ * Copyright (C) 2009 - Jonh Wendell <wendell bani com br>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<ui>
+
+  <toolbar name="FavToolBar">
+    <placeholder name="Tool_Opt1"/>
+    <toolitem action="BookmarksNewFolder"/>
+    <separator/>
+    <placeholder name="Tool_Opt2"/>
+    <toolitem action="BookmarksEdit"/>
+    <toolitem action="BookmarksDel"/>
+    <separator/>
+    <placeholder name="Tool_Opt3"/>
+  </toolbar>
+
+  <popup name="FavPopupConn" action="FavPopupActionConn">
+    <menuitem action="BookmarksOpen"/>
+    <separator/>
+    <menuitem action="BookmarksEdit"/>
+    <menuitem action="BookmarksDel"/>
+    <separator/>
+    <menuitem action="BookmarksNewFolder"/>
+  </popup>
+
+  <popup name="FavPopupFolder" action="FavPopupActionFolder">
+    <menuitem action="BookmarksEdit"/>
+    <menuitem action="BookmarksDel"/>
+    <separator/>
+    <menuitem action="BookmarksNewFolder"/>
+  </popup>
+
+  <popup name="FavPopupEmpty" action="FavPopupActionEmpty">
+    <menuitem action="BookmarksNewFolder"/>
+  </popup>
+
+</ui>
diff --git a/data/vinagre-ui.xml b/data/vinagre-ui.xml
index 1f3fddc..81d6095 100644
--- a/data/vinagre-ui.xml
+++ b/data/vinagre-ui.xml
@@ -38,9 +38,7 @@
 
     <menu name="EditMenu" action="Edit">
       <menuitem name="EditPreferencesMenu" action="EditPreferences"/>
-      <!--FIXME: Study this dialog for next release
       <menuitem name="EditPluginsMenu" action="EditPlugins"/>
-      -->
     </menu>
 
     <menu name="ViewMenu" action="View">
@@ -54,10 +52,6 @@
     <menu name="BookmarksMenu" action="Bookmarks">
       <menuitem name="BookmarksAddMenu" action="BookmarksAdd"/>
       <separator/>
-      <menuitem name="BookmarksNewFolderMenu" action="BookmarksNewFolder"/>
-      <menuitem name="BookmarksEditMenu" action="BookmarksEdit"/>
-      <menuitem name="BookmarksDelMenu" action="BookmarksDel"/>
-      <separator/>
       <placeholder name="BookmarksList"/>
       <separator/>
       <placeholder name="AvahiList"/>
@@ -78,24 +72,4 @@
     <separator/>
   </toolbar>
 
-  <popup name="FavPopupConn" action="FavPopupActionConn">
-    <menuitem action="BookmarksOpen"/>
-    <separator/>
-    <menuitem action="BookmarksEdit"/>
-    <menuitem action="BookmarksDel"/>
-    <separator/>
-    <menuitem action="BookmarksNewFolder"/>
-  </popup>
-
-  <popup name="FavPopupFolder" action="FavPopupActionFolder">
-    <menuitem action="BookmarksEdit"/>
-    <menuitem action="BookmarksDel"/>
-    <separator/>
-    <menuitem action="BookmarksNewFolder"/>
-  </popup>
-
-  <popup name="FavPopupEmpty" action="FavPopupActionEmpty">
-    <menuitem action="BookmarksNewFolder"/>
-  </popup>
-
 </ui>
diff --git a/vinagre/vinagre-commands.c b/vinagre/vinagre-commands.c
index 0d45927..077fb20 100644
--- a/vinagre/vinagre-commands.c
+++ b/vinagre/vinagre-commands.c
@@ -227,8 +227,6 @@ vinagre_cmd_edit_preferences (GtkAction     *action,
   vinagre_prefs_dialog_show (window);
 }
 
-/*
-FIXME: Study this dialog for next release
 void
 vinagre_cmd_edit_plugins (GtkAction     *action,
                           VinagreWindow *window)
@@ -237,7 +235,6 @@ vinagre_cmd_edit_plugins (GtkAction     *action,
 
   vinagre_plugin_dialog_show (GTK_WINDOW (window));
 }
-*/
 
 /* View Menu */
 void
@@ -340,57 +337,6 @@ vinagre_cmd_bookmarks_add (GtkAction     *action,
     }
 }
 
-void
-vinagre_cmd_bookmarks_new_folder (GtkAction     *action,
-				  VinagreWindow *window)
-{
-  g_return_if_fail (VINAGRE_IS_WINDOW (window));
-
-  vinagre_bookmarks_new_folder (vinagre_bookmarks_get_default (),
-				GTK_WINDOW (window));
-}
-
-void
-vinagre_cmd_bookmarks_edit (GtkAction     *action,
-			    VinagreWindow *window)
-{
-  g_return_if_fail (VINAGRE_IS_WINDOW (window));
-  g_return_if_fail (VINAGRE_IS_BOOKMARKS_ENTRY (window->priv->fav_entry_selected));
-
-  vinagre_bookmarks_edit (vinagre_bookmarks_get_default (),
-                          window->priv->fav_entry_selected,
-                          GTK_WINDOW (window));
-}
-
-void
-vinagre_cmd_bookmarks_del (GtkAction     *action,
-			   VinagreWindow *window)
-{
-  g_return_if_fail (VINAGRE_IS_WINDOW (window));
-  g_return_if_fail (VINAGRE_IS_BOOKMARKS_ENTRY (window->priv->fav_entry_selected));
-
-  vinagre_bookmarks_del (vinagre_bookmarks_get_default (),
-                         window->priv->fav_entry_selected,
-                         GTK_WINDOW (window));
-}
-
-void
-vinagre_cmd_bookmarks_open (GtkAction     *action,
-			    VinagreWindow *window)
-{
-  VinagreConnection *conn;
-
-  g_return_if_fail (VINAGRE_IS_WINDOW (window));
-
-  conn = g_object_get_data (G_OBJECT (action), "conn");
-  if (!conn)
-    conn = vinagre_bookmarks_entry_get_conn (window->priv->fav_entry_selected);
-
-  g_return_if_fail (VINAGRE_IS_CONNECTION (conn));
-
-  vinagre_cmd_open_bookmark (window, conn);
-}
-
 /* Help Menu */
 
 void
diff --git a/vinagre/vinagre-commands.h b/vinagre/vinagre-commands.h
index ec5cacd..adc3b75 100644
--- a/vinagre/vinagre-commands.h
+++ b/vinagre/vinagre-commands.h
@@ -46,10 +46,10 @@ void		vinagre_cmd_machine_quit	(GtkAction     *action,
 
 void		vinagre_cmd_edit_preferences	(GtkAction     *action,
 						 VinagreWindow *window);
-/*FIXME: Study this dialog for next release
+
 void		vinagre_cmd_edit_plugins	(GtkAction     *action,
 						 VinagreWindow *window);
-*/
+
 void		vinagre_cmd_view_show_toolbar	(GtkAction     *action,
 						 VinagreWindow *window);
 void		vinagre_cmd_view_show_statusbar	(GtkAction     *action,
@@ -63,14 +63,6 @@ void		vinagre_cmd_open_bookmark	(VinagreWindow     *window,
 						 VinagreConnection *conn);
 void		vinagre_cmd_bookmarks_add	(GtkAction     *action,
 						 VinagreWindow *window);
-void		vinagre_cmd_bookmarks_open	(GtkAction     *action,
-						 VinagreWindow *window);
-void		vinagre_cmd_bookmarks_new_folder(GtkAction     *action,
-						 VinagreWindow *window);
-void		vinagre_cmd_bookmarks_edit	(GtkAction     *action,
-						 VinagreWindow *window);
-void		vinagre_cmd_bookmarks_del	(GtkAction     *action,
-						 VinagreWindow *window);
 
 void		vinagre_cmd_help_contents	(GtkAction     *action,
 						 VinagreWindow *window);
diff --git a/vinagre/vinagre-fav.c b/vinagre/vinagre-fav.c
index b4f633e..396063b 100644
--- a/vinagre/vinagre-fav.c
+++ b/vinagre/vinagre-fav.c
@@ -35,17 +35,21 @@
 #ifdef VINAGRE_ENABLE_AVAHI
 #include "vinagre-mdns.h"
 #endif
- 
+
+#define VINAGRE_FAV_UI_XML_FILE "vinagre-fav-ui.xml"
 #define VINAGRE_FAV_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), VINAGRE_TYPE_FAV, VinagreFavPrivate))
 
 struct _VinagreFavPrivate
 {
-  VinagreWindow     *window;
-  GtkWidget         *tree;
-  GtkTreeModel      *model;
+  VinagreWindow         *window;
+  GtkWidget             *tree;
+  GtkTreeModel          *model;
+  GtkActionGroup        *action_group, *always_sensitive_action_group;
+  VinagreBookmarksEntry *selected;
+  GtkBox                *box;
 };
 
-G_DEFINE_TYPE(VinagreFav, vinagre_fav, GTK_TYPE_VBOX)
+G_DEFINE_TYPE(VinagreFav, vinagre_fav, GTK_TYPE_FRAME)
 
 /* Signals */
 enum
@@ -116,48 +120,6 @@ vinagre_fav_get_property (GObject    *object,
     }
 }
 
-static void 
-vinagre_fav_class_init (VinagreFavClass *klass)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-  object_class->get_property = vinagre_fav_get_property;
-  object_class->set_property = vinagre_fav_set_property;
-
-  g_object_class_install_property (object_class,
-				   PROP_WINDOW,
-				   g_param_spec_object ("window",
-							"Window",
-							"The VinagreWindow this panel is associated with",
-							 VINAGRE_TYPE_WINDOW,
-							 G_PARAM_READWRITE |
-							 G_PARAM_CONSTRUCT_ONLY));	
-
-  signals[FAV_ACTIVATED] =
-		g_signal_new ("fav-activated",
-			      G_OBJECT_CLASS_TYPE (object_class),
-			      G_SIGNAL_RUN_FIRST,
-			      G_STRUCT_OFFSET (VinagreFavClass, fav_activated),
-			      NULL, NULL,
-			      g_cclosure_marshal_VOID__OBJECT,
-			      G_TYPE_NONE,
-			      1,
-			      G_TYPE_OBJECT);
-
-  signals[FAV_SELECTED] =
-		g_signal_new ("fav-selected",
-			      G_OBJECT_CLASS_TYPE (object_class),
-			      G_SIGNAL_RUN_FIRST,
-			      G_STRUCT_OFFSET (VinagreFavClass, fav_selected),
-			      NULL, NULL,
-			      g_cclosure_marshal_VOID__OBJECT,
-			      G_TYPE_NONE,
-			      1,
-			      G_TYPE_OBJECT);
-
-  g_type_class_add_private (object_class, sizeof (VinagreFavPrivate));
-}
-
 static void
 vinagre_fav_row_activated_cb (GtkTreeView       *treeview,
 			      GtkTreePath       *path,
@@ -185,6 +147,9 @@ vinagre_fav_row_activated_cb (GtkTreeView       *treeview,
       return;
     }
 
+  vinagre_cmd_open_bookmark (fav->priv->window,
+			     vinagre_bookmarks_entry_get_conn (entry));
+
   /* Emits the signal saying that user has activated a bookmark */
   g_signal_emit (G_OBJECT (fav), 
 		 signals[FAV_ACTIVATED],
@@ -211,6 +176,11 @@ vinagre_fav_selection_changed_cb (GtkTreeSelection *selection,
 	entry = NULL;
     }
 
+  fav->priv->selected = entry;
+
+  gtk_action_group_set_sensitive (fav->priv->action_group,
+				  entry != NULL);
+
   /* Emits the signal saying that user has selected a bookmark */
   g_signal_emit (G_OBJECT (fav), 
 		 signals[FAV_SELECTED],
@@ -541,6 +511,110 @@ vinagre_fav_title_cell_data_func (GtkTreeViewColumn *column,
 }
 
 static void
+vinagre_fav_bookmarks_new_folder (GtkAction  *action,
+				  VinagreFav *fav)
+{
+  vinagre_bookmarks_new_folder (vinagre_bookmarks_get_default (),
+				GTK_WINDOW (fav->priv->window));
+}
+
+static void
+vinagre_fav_bookmarks_edit (GtkAction  *action,
+			    VinagreFav *fav)
+{
+  vinagre_bookmarks_edit (vinagre_bookmarks_get_default (),
+                          fav->priv->selected,
+                          GTK_WINDOW (fav->priv->window));
+}
+
+static void
+vinagre_fav_bookmarks_del (GtkAction  *action,
+			   VinagreFav *fav)
+{
+  vinagre_bookmarks_del (vinagre_bookmarks_get_default (),
+                         fav->priv->selected,
+                         GTK_WINDOW (fav->priv->window));
+}
+
+void
+vinagre_fav_bookmarks_open (GtkAction  *action,
+			    VinagreFav *fav)
+{
+  VinagreConnection *conn;
+
+  conn = g_object_get_data (G_OBJECT (action), "conn");
+  if (!conn)
+    conn = vinagre_bookmarks_entry_get_conn (fav->priv->selected);
+
+  g_return_if_fail (VINAGRE_IS_CONNECTION (conn));
+
+  vinagre_cmd_open_bookmark (fav->priv->window, conn);
+}
+
+static const GtkActionEntry always_sensitive_actions[] =
+{
+  {"BookmarksNewFolder", "folder-new", N_("_New Folder"), NULL,
+    N_("Create a new folder"), G_CALLBACK (vinagre_fav_bookmarks_new_folder) },
+};
+
+static const GtkActionEntry actions[] =
+{
+  { "BookmarksOpen", GTK_STOCK_CONNECT, N_("_Open bookmark"), NULL,
+    N_("Connect to this machine"), G_CALLBACK (vinagre_fav_bookmarks_open) },
+  {"BookmarksEdit", GTK_STOCK_EDIT, N_("_Edit bookmark"), NULL,
+    N_("Edit the details of selected bookmark"), G_CALLBACK (vinagre_fav_bookmarks_edit) },
+  {"BookmarksDel", GTK_STOCK_DELETE, N_("_Remove from bookmarks"), NULL,
+    N_("Remove current selected connection from bookmarks"), G_CALLBACK (vinagre_fav_bookmarks_del) },
+};
+
+static void
+vinagre_fav_create_toolbar (VinagreFav *fav)
+{
+  GtkWidget *toolbar;
+  GtkActionGroup *action_group;
+  GtkAction *action;
+  GtkUIManager *manager;
+  GError *error = NULL;
+
+  manager = fav->priv->window->priv->manager;
+  gtk_ui_manager_add_ui_from_file (manager,
+				   vinagre_fav_get_ui_xml_filename (),
+				   &error);
+  if (error != NULL)
+    {
+      g_critical (_("Could not merge UI XML file: %s"), error->message);
+      g_error_free (error);
+      return;
+    }
+
+  action_group = gtk_action_group_new ("BookmarksActionGroup");
+  gtk_action_group_set_translation_domain (action_group, NULL);
+  gtk_action_group_add_actions (action_group,
+				actions,
+				G_N_ELEMENTS (actions),
+				fav);
+  gtk_ui_manager_insert_action_group (manager, action_group, 0);
+  gtk_action_group_set_sensitive (action_group, FALSE);
+  fav->priv->action_group = action_group;
+
+  action_group = gtk_action_group_new ("BookmarksAlwaysSensitiveActionGroup");
+  gtk_action_group_set_translation_domain (action_group, NULL);
+  gtk_action_group_add_actions (action_group,
+				always_sensitive_actions,
+				G_N_ELEMENTS (always_sensitive_actions),
+				fav);
+  gtk_ui_manager_insert_action_group (manager, action_group, 0);
+  fav->priv->always_sensitive_action_group = action_group;
+
+  toolbar = gtk_ui_manager_get_widget (manager, "/FavToolBar");
+  gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_ICONS);
+  gtk_toolbar_set_icon_size (GTK_TOOLBAR (toolbar), GTK_ICON_SIZE_MENU);
+
+  gtk_widget_show (toolbar);
+  gtk_box_pack_start (fav->priv->box, toolbar, FALSE, FALSE, 0);
+}
+
+static void
 vinagre_fav_create_tree (VinagreFav *fav)
 {
   GtkCellRenderer   *cell;
@@ -557,7 +631,7 @@ vinagre_fav_create_tree (VinagreFav *fav)
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll),
 				       GTK_SHADOW_ETCHED_OUT);
 
-  gtk_box_pack_start (GTK_BOX(fav), scroll, TRUE, TRUE, 0);
+  gtk_box_pack_start (fav->priv->box, scroll, TRUE, TRUE, 0);
 
   /* Create the model */
   fav->priv->model = GTK_TREE_MODEL (gtk_tree_store_new (NUM_COLS,
@@ -722,11 +796,75 @@ drag_drop_handl (GtkWidget *widget,
 static void
 vinagre_fav_init (VinagreFav *fav)
 {
-  GtkWidget *label_box, *label, *close_button;
-
   fav->priv = VINAGRE_FAV_GET_PRIVATE (fav);
+  fav->priv->selected = NULL;
 
-  /* setup the tree */
+  gtk_frame_set_shadow_type (GTK_FRAME (fav), GTK_SHADOW_ETCHED_IN);
+  fav->priv->box = GTK_BOX (gtk_vbox_new (FALSE, 0));
+  gtk_container_add (GTK_CONTAINER (fav), GTK_WIDGET (fav->priv->box));
+}
+
+GtkWidget *
+vinagre_fav_new (VinagreWindow *window)
+{
+  g_return_val_if_fail (VINAGRE_IS_WINDOW (window), NULL);
+
+  return GTK_WIDGET (g_object_new (VINAGRE_TYPE_FAV,
+				   "window", window,
+				   NULL));
+}
+
+static void
+vinagre_fav_hide (GtkButton *button, VinagreFav *fav)
+{
+  GtkAction *action;
+
+  action = gtk_action_group_get_action (fav->priv->window->priv->always_sensitive_action_group,
+					"ViewSidePanel");
+  gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), FALSE);
+}
+
+static void
+vinagre_fav_create_title (VinagreFav *fav)
+{
+  GtkWidget *box, *label, *close_button, *image, *frame;
+
+  box = gtk_hbox_new (FALSE, 0);
+
+ /* setup image */
+  image = gtk_image_new_from_icon_name ("user-bookmarks", GTK_ICON_SIZE_SMALL_TOOLBAR);
+  gtk_misc_set_alignment (GTK_MISC (image), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 0);
+
+ /* setup label */
+  label = gtk_label_new (_("Bookmarks"));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_misc_set_padding (GTK_MISC (label), 6, 0);
+  gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+
+  /* setup small close button */
+  close_button = vinagre_utils_create_small_close_button ();
+  gtk_box_pack_start (GTK_BOX (box), close_button, FALSE, FALSE, 0);
+  gtk_widget_set_tooltip_text (close_button, _("Hide panel"));
+  g_signal_connect (close_button,
+		    "clicked",
+		    G_CALLBACK (vinagre_fav_hide),
+		    fav);
+
+  gtk_box_pack_start (fav->priv->box, box, FALSE, FALSE, 0);
+  gtk_widget_show_all (box);
+}
+
+static void
+vinagre_fav_constructed (GObject *object)
+{
+  VinagreFav *fav = VINAGRE_FAV (object);
+
+  if (G_OBJECT_CLASS (vinagre_fav_parent_class)->constructed)
+    G_OBJECT_CLASS (vinagre_fav_parent_class)->constructed (object);
+
+  vinagre_fav_create_title (fav);
+  vinagre_fav_create_toolbar (fav);
   vinagre_fav_create_tree (fav);
 
   gtk_drag_dest_set (fav->priv->tree,
@@ -756,14 +894,47 @@ vinagre_fav_init (VinagreFav *fav)
 #endif
 }
 
-GtkWidget *
-vinagre_fav_new (VinagreWindow *window)
+static void
+vinagre_fav_class_init (VinagreFavClass *klass)
 {
-  g_return_val_if_fail (VINAGRE_IS_WINDOW (window), NULL);
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-  return GTK_WIDGET (g_object_new (VINAGRE_TYPE_FAV,
-				   "window", window,
-				   NULL));
+  object_class->get_property = vinagre_fav_get_property;
+  object_class->set_property = vinagre_fav_set_property;
+  object_class->constructed  = vinagre_fav_constructed;
+
+  g_object_class_install_property (object_class,
+				   PROP_WINDOW,
+				   g_param_spec_object ("window",
+							"Window",
+							"The VinagreWindow this panel is associated with",
+							 VINAGRE_TYPE_WINDOW,
+							 G_PARAM_READWRITE |
+							 G_PARAM_CONSTRUCT_ONLY));
+
+  signals[FAV_ACTIVATED] =
+		g_signal_new ("fav-activated",
+			      G_OBJECT_CLASS_TYPE (object_class),
+			      G_SIGNAL_RUN_FIRST,
+			      G_STRUCT_OFFSET (VinagreFavClass, fav_activated),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__OBJECT,
+			      G_TYPE_NONE,
+			      1,
+			      G_TYPE_OBJECT);
+
+  signals[FAV_SELECTED] =
+		g_signal_new ("fav-selected",
+			      G_OBJECT_CLASS_TYPE (object_class),
+			      G_SIGNAL_RUN_FIRST,
+			      G_STRUCT_OFFSET (VinagreFavClass, fav_selected),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__OBJECT,
+			      G_TYPE_NONE,
+			      1,
+			      G_TYPE_OBJECT);
+
+  g_type_class_add_private (object_class, sizeof (VinagreFavPrivate));
 }
 
 static void
@@ -850,14 +1021,6 @@ vinagre_fav_update_list (VinagreFav *fav)
   /* bookmarks */
   list = vinagre_bookmarks_get_all (vinagre_bookmarks_get_default ());
 
-  gtk_tree_store_append (store, &parent_iter, NULL);
-  gtk_tree_store_set (store, &parent_iter,
-                      NAME_COL, _("Bookmarks"),
-                      IS_GROUP_COL, TRUE,
-                      IS_FOLDER_COL, FALSE,
-                      IS_AVAHI_COL, FALSE,
-                      -1);
-
   vinagre_fav_fill_bookmarks (store, list, NULL, FALSE);
 
 #ifdef VINAGRE_ENABLE_AVAHI
@@ -878,4 +1041,14 @@ vinagre_fav_update_list (VinagreFav *fav)
 
   return FALSE;
 }
+
+const gchar *
+vinagre_fav_get_ui_xml_filename (void)
+{
+  if (g_file_test (VINAGRE_FAV_UI_XML_FILE, G_FILE_TEST_EXISTS))
+    return VINAGRE_FAV_UI_XML_FILE;
+  else
+    return VINAGRE_DATADIR "/" VINAGRE_FAV_UI_XML_FILE;
+}
+
 /* vim: set ts=8: */
diff --git a/vinagre/vinagre-fav.h b/vinagre/vinagre-fav.h
index a22579d..1bcfe3a 100644
--- a/vinagre/vinagre-fav.h
+++ b/vinagre/vinagre-fav.h
@@ -41,13 +41,13 @@ typedef struct _VinagreFavClass   VinagreFavClass;
 
 struct _VinagreFav 
 {
-  GtkVBox vbox;
+  GtkFrame frame;
   VinagreFavPrivate *priv;
 };
 
 struct _VinagreFavClass 
 {
-  GtkVBoxClass parent_class;
+  GtkFrameClass parent_class;
 
   /* Signals */
   void	(* fav_activated)   (VinagreFav *fav,
@@ -63,6 +63,10 @@ GtkWidget   *vinagre_fav_new        (VinagreWindow *window);
 
 gboolean    vinagre_fav_update_list (VinagreFav *fav);
 
+void        vinagre_fav_bookmarks_open (GtkAction *action, VinagreFav *fav);
+
+const gchar * vinagre_fav_get_ui_xml_filename (void);
+
 G_END_DECLS
 
 #endif  /* __VINAGRE_FAV_H__  */
diff --git a/vinagre/vinagre-ui.h b/vinagre/vinagre-ui.h
index 58e7a11..bcc8d73 100644
--- a/vinagre/vinagre-ui.h
+++ b/vinagre/vinagre-ui.h
@@ -47,20 +47,8 @@ static const GtkActionEntry vinagre_always_sensitive_entries[] =
   /* Edit menu */
   { "EditPreferences", GTK_STOCK_PREFERENCES, NULL, NULL,
     N_("Edit the application preferences"), G_CALLBACK (vinagre_cmd_edit_preferences) },
-/*FIXME: Study this dialog for next release
   { "EditPlugins", GTK_STOCK_EXECUTE, N_("_Plugins"), NULL,
     N_("Select plugins"), G_CALLBACK (vinagre_cmd_edit_plugins) },
-*/
-
-  /* Bookmarks menu */
-  { "BookmarksOpen", GTK_STOCK_CONNECT, N_("_Open bookmark"), NULL,
-    N_("Connect to this machine"), G_CALLBACK (vinagre_cmd_bookmarks_open) },
-  { "BookmarksEdit", GTK_STOCK_EDIT, N_("_Edit bookmark"), NULL,
-    N_("Edit the details of selected bookmark"), G_CALLBACK (vinagre_cmd_bookmarks_edit) },
-  { "BookmarksDel", GTK_STOCK_DELETE, N_("_Remove from bookmarks"), NULL,
-    N_("Remove current selected connection from bookmarks"), G_CALLBACK (vinagre_cmd_bookmarks_del) },
-  { "BookmarksNewFolder", "folder-new", N_("_New Folder"), NULL,
-    N_("Create a new folder"), G_CALLBACK (vinagre_cmd_bookmarks_new_folder) },
 
   /* Help menu */
   {"HelpContents", GTK_STOCK_HELP, N_("_Contents"), "F1",
diff --git a/vinagre/vinagre-window-private.h b/vinagre/vinagre-window-private.h
index bae6cb0..cca409e 100644
--- a/vinagre/vinagre-window-private.h
+++ b/vinagre/vinagre-window-private.h
@@ -22,7 +22,6 @@
 #define __VINAGRE_WINDOW_PRIVATE_H__
 
 #include "vinagre-window.h"
-#include "vinagre-bookmarks-entry.h"
 #include "vinagre-notebook.h"
 
 G_BEGIN_DECLS
@@ -56,8 +55,6 @@ struct _VinagreWindowPrivate
   GtkWidget       *toolbar;
   GtkWidget       *menubar;
 
-  VinagreBookmarksEntry *fav_entry_selected;
-	
   gint            width;
   gint            height;
   GdkWindowState  window_state;
diff --git a/vinagre/vinagre-window.c b/vinagre/vinagre-window.c
index aa28653..bd86127 100644
--- a/vinagre/vinagre-window.c
+++ b/vinagre/vinagre-window.c
@@ -56,12 +56,6 @@ vinagre_window_dispose (GObject *object)
 {
   VinagreWindow *window = VINAGRE_WINDOW (object);
 
-  if (window->priv->fav_entry_selected)
-    {
-      g_object_unref (window->priv->fav_entry_selected);
-      window->priv->fav_entry_selected = NULL;
-    }
-
   if (!window->priv->dispose_has_run)
     {
       vinagre_plugins_engine_deactivate_plugins (vinagre_plugins_engine_get_default (),
@@ -401,8 +395,9 @@ create_menu_bar_and_toolbar (VinagreWindow *window,
   gtk_ui_manager_add_ui_from_file (manager, vinagre_utils_get_ui_xml_filename (), &error);
   if (error != NULL)
     {
-      g_warning (_("Could not merge vinagre-ui.xml: %s"), error->message);
+      g_critical (_("Could not merge UI XML file: %s"), error->message);
       g_error_free (error);
+      return;
     }
 
   /* Bookmarks */
@@ -486,49 +481,6 @@ fav_panel_size_allocate (GtkWidget     *widget,
 }
 
 static void
-fav_panel_activated (VinagreFav            *fav,
-		     VinagreBookmarksEntry *entry,
-		     VinagreWindow         *window)
-{
-  g_return_if_fail (vinagre_bookmarks_entry_get_node (entry) == VINAGRE_BOOKMARKS_ENTRY_NODE_CONN);
-
-  vinagre_cmd_open_bookmark (window, vinagre_bookmarks_entry_get_conn (entry));
-}
-
-static void
-fav_panel_selected (VinagreFav            *fav,
-		    VinagreBookmarksEntry *entry,
-		    VinagreWindow         *window)
-{
-  GtkAction *action1, *action2;
-
-  action1 = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
-					 "BookmarksDel");
-  action2 = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
-					 "BookmarksEdit");
-
-  if (window->priv->fav_entry_selected)
-    {
-      g_object_unref (window->priv->fav_entry_selected);
-      window->priv->fav_entry_selected = NULL;
-    }
-
-  if (entry)
-    {
-      window->priv->fav_entry_selected = g_object_ref (entry);
-      gtk_action_set_sensitive (action1, TRUE);
-      gtk_action_set_sensitive (action2, TRUE);
-      /* TODO: Change the menuitem label */
-    }
-  else
-    {
-      /* TODO: Change the menuitem label */
-      gtk_action_set_sensitive (action1, FALSE);
-      gtk_action_set_sensitive (action2, FALSE);
-    }
-}
-
-static void
 vinagre_window_populate_bookmarks (VinagreWindow *window,
 				   const gchar   *group,
 				   GSList        *entries,
@@ -605,8 +557,8 @@ vinagre_window_populate_bookmarks (VinagreWindow *window,
 					 action);
 	    g_signal_connect (action,
 			     "activate",
-			     G_CALLBACK (vinagre_cmd_bookmarks_open),
-			     window);
+			     G_CALLBACK (vinagre_fav_bookmarks_open),
+			     window->priv->fav_panel);
 
 	    path = g_strdup_printf ("/MenuBar/BookmarksMenu/%s%s", group, parent?parent:"");
 	    gtk_ui_manager_add_ui (p->manager,
@@ -645,8 +597,8 @@ vinagre_window_update_bookmarks_list_menu (VinagreWindow *window)
   for (l = actions; l != NULL; l = l->next)
     {
       g_signal_handlers_disconnect_by_func (GTK_ACTION (l->data),
-					    G_CALLBACK (vinagre_cmd_bookmarks_open),
-					    window);
+					    G_CALLBACK (vinagre_fav_bookmarks_open),
+					    window->priv->fav_panel);
       gtk_action_group_remove_action (p->bookmarks_list_action_group,
 				      GTK_ACTION (l->data));
     }
@@ -682,14 +634,6 @@ create_side_panel (VinagreWindow *window)
 		    "size-allocate",
 		    G_CALLBACK (fav_panel_size_allocate),
 		    window);
-  g_signal_connect (window->priv->fav_panel,
-		    "fav-activated",
-		    G_CALLBACK (fav_panel_activated),
-		    window);
-  g_signal_connect (window->priv->fav_panel,
-		    "fav-selected",
-		    G_CALLBACK (fav_panel_selected),
-		    window);
 }
 
 static void
@@ -701,15 +645,6 @@ init_widgets_visibility (VinagreWindow *window)
   gboolean visible;
   VinagrePrefs *prefs = vinagre_prefs_get_default ();
 
-  /* Remove and Edit bookmarks starts disabled */
-  action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
-					"BookmarksDel");
-  gtk_action_set_sensitive (action, FALSE);
-
-  action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
-					"BookmarksEdit");
-  gtk_action_set_sensitive (action, FALSE);
-
   /* side panel visibility */
   action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
 					"ViewSidePanel");
@@ -784,7 +719,6 @@ vinagre_window_init (VinagreWindow *window)
   gtk_window_set_default_icon_name ("vinagre");
 
   window->priv = VINAGRE_WINDOW_GET_PRIVATE (window);
-  window->priv->fav_entry_selected = NULL;
   window->priv->fullscreen = FALSE;
   window->priv->dispose_has_run = FALSE;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]