diff options
author | Peter Harvey <peter.a.harvey@gmail.com> | 2006-01-31 07:02:35 +0800 |
---|---|---|
committer | Peter Anthony Harvey <paharvey@src.gnome.org> | 2006-01-31 07:02:35 +0800 |
commit | 5a25f384ec84c94e89e07558296620dc74681e7b (patch) | |
tree | 21464a9c77288b240f7ca52a23a18627acc5cbdf /src/bookmarks/ephy-bookmark-properties.c | |
parent | 7d08bb7e103b567fd9fc707d4625be9a1335f3fd (diff) | |
download | gsoc2013-epiphany-5a25f384ec84c94e89e07558296620dc74681e7b.tar gsoc2013-epiphany-5a25f384ec84c94e89e07558296620dc74681e7b.tar.gz gsoc2013-epiphany-5a25f384ec84c94e89e07558296620dc74681e7b.tar.bz2 gsoc2013-epiphany-5a25f384ec84c94e89e07558296620dc74681e7b.tar.lz gsoc2013-epiphany-5a25f384ec84c94e89e07558296620dc74681e7b.tar.xz gsoc2013-epiphany-5a25f384ec84c94e89e07558296620dc74681e7b.tar.zst gsoc2013-epiphany-5a25f384ec84c94e89e07558296620dc74681e7b.zip |
src/bookmarks/ephy-bookmark-properties.c src/bookmarks/ephy-bookmarks.c
2006-01-30 Peter Harvey <peter.a.harvey@gmail.com>
* src/bookmarks/ephy-bookmark-properties.c
* src/bookmarks/ephy-bookmarks.c
* src/bookmarks/ephy-bookmarks.h
Made the 'Similar' button show more bookmarks, and
separate into 'identical' and 'similar'.
Diffstat (limited to 'src/bookmarks/ephy-bookmark-properties.c')
-rw-r--r-- | src/bookmarks/ephy-bookmark-properties.c | 117 |
1 files changed, 75 insertions, 42 deletions
diff --git a/src/bookmarks/ephy-bookmark-properties.c b/src/bookmarks/ephy-bookmark-properties.c index 578ab4eef..6c46ccbc8 100644 --- a/src/bookmarks/ephy-bookmark-properties.c +++ b/src/bookmarks/ephy-bookmark-properties.c @@ -84,8 +84,8 @@ update_warning (EphyBookmarkProperties *properties) char *label; priv->duplicate_idle = 0; - priv->duplicate_count = ephy_bookmarks_count_duplicates - (priv->bookmarks, priv->bookmark); + priv->duplicate_count = ephy_bookmarks_get_similar + (priv->bookmarks, priv->bookmark, NULL, NULL); /* Translators: This string is used when counting bookmarks that * are similar to each other */ @@ -178,20 +178,21 @@ activate_merge_cb (GtkMenuItem *item, EphyBookmarkProperties *properties) { EphyBookmarkPropertiesPrivate *priv = properties->priv; - GPtrArray *duplicates; GPtrArray *topics; EphyNode *node, *topic; gint i, j; - duplicates = ephy_bookmarks_find_duplicates - (priv->bookmarks, priv->bookmark); + GPtrArray *identical = g_ptr_array_new (); + + ephy_bookmarks_get_similar + (priv->bookmarks, priv->bookmark, identical, NULL); node = ephy_bookmarks_get_keywords (priv->bookmarks); topics = ephy_node_get_children (node); - for (i = 0; i < duplicates->len; i++) + for (i = 0; i < identical->len; i++) { - node = g_ptr_array_index (duplicates, i); + node = g_ptr_array_index (identical, i); for (j = 0; j < topics->len; j++) { topic = g_ptr_array_index (topics, j); @@ -205,7 +206,7 @@ activate_merge_cb (GtkMenuItem *item, ephy_node_unref (node); } - g_ptr_array_free (duplicates, TRUE); + g_ptr_array_free (identical, TRUE); update_warning (properties); } @@ -223,50 +224,82 @@ show_duplicate_cb (GtkButton *button, { EphyBookmarkPropertiesPrivate *priv = properties->priv; EphyNode *node; - GPtrArray *duplicates; GtkMenuShell *menu; GtkWidget *item, *image; char *label; gint i; - update_warning (properties); - if (priv->duplicate_count == 0) - { - return; - } - - duplicates = ephy_bookmarks_find_duplicates - (priv->bookmarks, priv->bookmark); + GPtrArray *identical = g_ptr_array_new (); + GPtrArray *similar = g_ptr_array_new (); + + ephy_bookmarks_get_similar (priv->bookmarks, + priv->bookmark, + identical, + similar); - menu = GTK_MENU_SHELL (gtk_menu_new ()); - item = gtk_image_menu_item_new_with_mnemonic (_("_Merge")); - image = gtk_image_new_from_stock (GTK_STOCK_CLEAR, GTK_ICON_SIZE_MENU); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); - g_signal_connect (item, "activate", G_CALLBACK (activate_merge_cb), properties); - gtk_widget_show (image); - gtk_widget_show (item); - gtk_menu_shell_append (menu, item); + if (identical->len + similar->len > 0) + { + menu = GTK_MENU_SHELL (gtk_menu_new ()); + + if (identical->len > 0) + { + label = g_strdup_printf (_("_Unify With %d Identical Bookmark(s)"), + identical->len); + item = gtk_image_menu_item_new_with_mnemonic (label); + g_free (label); + image = gtk_image_new_from_stock (GTK_STOCK_CLEAR, GTK_ICON_SIZE_MENU); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); + g_signal_connect (item, "activate", G_CALLBACK (activate_merge_cb), properties); + gtk_widget_show (image); + gtk_widget_show (item); + gtk_menu_shell_append (menu, item); - item = gtk_separator_menu_item_new (); - gtk_widget_show (item); - gtk_menu_shell_append (menu, item); + item = gtk_separator_menu_item_new (); + gtk_widget_show (item); + gtk_menu_shell_append (menu, item); - for (i = 0; i < duplicates->len; i++) - { - node = g_ptr_array_index (duplicates, i); - label = g_strdup_printf (_("Show “%s”"), - ephy_node_get_property_string (node, EPHY_NODE_BMK_PROP_TITLE)); - item = gtk_image_menu_item_new_with_label (label); - g_free (label); - g_signal_connect (item, "activate", G_CALLBACK (activate_show_cb), node); - gtk_widget_show (item); - gtk_menu_shell_append (menu, item); + for (i = 0; i < identical->len; i++) + { + node = g_ptr_array_index (identical, i); + label = g_strdup_printf (_("Show “%s”"), + ephy_node_get_property_string (node, EPHY_NODE_BMK_PROP_TITLE)); + item = gtk_image_menu_item_new_with_label (label); + g_free (label); + g_signal_connect (item, "activate", G_CALLBACK (activate_show_cb), node); + gtk_widget_show (item); + gtk_menu_shell_append (menu, item); + } + } + + if (identical->len > 0 && similar->len > 0) + { + item = gtk_separator_menu_item_new (); + gtk_widget_show (item); + gtk_menu_shell_append (menu, item); + } + + if (similar->len > 0) + { + for (i = 0; i < similar->len; i++) + { + node = g_ptr_array_index (similar, i); + label = g_strdup_printf (_("Show “%s”"), + ephy_node_get_property_string (node, EPHY_NODE_BMK_PROP_TITLE)); + item = gtk_image_menu_item_new_with_label (label); + g_free (label); + g_signal_connect (item, "activate", G_CALLBACK (activate_show_cb), node); + gtk_widget_show (item); + gtk_menu_shell_append (menu, item); + } + } + + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, + ephy_gui_menu_position_under_widget, button, + 0, gtk_get_current_event_time ()); } - gtk_menu_popup (GTK_MENU (menu), NULL, NULL, - ephy_gui_menu_position_under_widget, button, - 0, gtk_get_current_event_time ()); - g_ptr_array_free (duplicates, TRUE); + g_ptr_array_free (similar, TRUE); + g_ptr_array_free (identical, TRUE); } static void |