diff options
author | Peter Harvey <pah06@uow.edu.au> | 2005-10-17 04:29:26 +0800 |
---|---|---|
committer | Christian Persch <chpe@src.gnome.org> | 2005-10-17 04:29:26 +0800 |
commit | d21007362f8d0701d63e50fe6b219de067d95a87 (patch) | |
tree | 46326d5633d4f3c8504049476d0e72ae7ed0ca2c /src/bookmarks/ephy-bookmarks.c | |
parent | 35b9deda1f37ac0cc81d926b5295983de6b55dcf (diff) | |
download | gsoc2013-epiphany-d21007362f8d0701d63e50fe6b219de067d95a87.tar gsoc2013-epiphany-d21007362f8d0701d63e50fe6b219de067d95a87.tar.gz gsoc2013-epiphany-d21007362f8d0701d63e50fe6b219de067d95a87.tar.bz2 gsoc2013-epiphany-d21007362f8d0701d63e50fe6b219de067d95a87.tar.lz gsoc2013-epiphany-d21007362f8d0701d63e50fe6b219de067d95a87.tar.xz gsoc2013-epiphany-d21007362f8d0701d63e50fe6b219de067d95a87.tar.zst gsoc2013-epiphany-d21007362f8d0701d63e50fe6b219de067d95a87.zip |
H18 patch, by Peter Harvey <pah06@uow.edu.au>.
2005-10-16 Peter Harvey <pah06@uow.edu.au>
H18 patch, by Peter Harvey <pah06@uow.edu.au>.
* data/ui/epiphany-bookmark-editor-ui.xml:
* data/ui/epiphany-ui.xml:
* lib/egg/egg-editable-toolbar.c: (get_dock_position),
(get_toolbar_position), (get_toolbar_nth), (find_action),
(drag_data_delete_cb), (drag_begin_cb), (drag_end_cb),
(drag_data_get_cb), (move_item_cb), (set_dock_visible),
(remove_item_cb), (remove_toolbar_cb), (toggle_visibility_cb),
(egg_editable_toolbar_add_visibility_items),
(egg_editable_toolbar_add_popup_items), (popup_context_menu_cb),
(button_press_event_cb), (configure_item_sensitivity),
(configure_item_cursor), (connect_widget_signals),
(action_sensitive_cb), (create_item_from_action),
(create_item_from_position), (toolbar_drag_data_received_cb),
(toolbar_drag_drop_cb), (toolbar_drag_motion_cb),
(toolbar_drag_leave_cb), (configure_drag_dest), (create_dock),
(toolbar_changed_cb), (unparent_fixed), (update_fixed),
(toolbar_added_cb), (toolbar_removed_cb), (item_added_cb),
(item_removed_cb), (egg_editable_toolbar_construct),
(egg_editable_toolbar_set_ui_manager),
(egg_editable_toolbar_set_property),
(egg_editable_toolbar_get_property), (egg_editable_toolbar_init),
(egg_editable_toolbar_finalize),
(egg_editable_toolbar_get_edit_mode),
(egg_editable_toolbar_set_edit_mode),
(egg_editable_toolbar_set_fixed):
* lib/egg/egg-editable-toolbar.h:
* lib/egg/egg-toolbar-editor.c: (compare_items),
(item_added_or_removed_cb), (toolbar_removed_cb),
(egg_toolbar_editor_set_model), (egg_toolbar_editor_finalize),
(drag_begin_cb), (drag_end_cb), (drag_data_get_cb),
(editor_create_item), (editor_create_item_from_name),
(append_table), (update_editor_sheet), (egg_toolbar_editor_init):
* lib/egg/egg-toolbar-editor.h:
* lib/egg/egg-toolbars-model.c: (egg_toolbars_model_to_xml),
(egg_toolbars_model_save), (toolbar_node_new), (item_node_new),
(item_node_free), (toolbar_node_free),
(egg_toolbars_model_get_flags), (egg_toolbars_model_set_flags),
(egg_toolbars_model_get_data), (egg_toolbars_model_get_name),
(impl_add_item), (egg_toolbars_model_add_item),
(egg_toolbars_model_add_toolbar), (parse_data_list),
(parse_item_list), (parse_toolbars), (egg_toolbars_model_load),
(egg_toolbars_model_class_init), (egg_toolbars_model_init),
(egg_toolbars_model_finalize), (egg_toolbars_model_remove_toolbar),
(egg_toolbars_model_remove_item), (egg_toolbars_model_move_item),
(egg_toolbars_model_n_items), (egg_toolbars_model_item_nth),
(egg_toolbars_model_n_toolbars), (egg_toolbars_model_toolbar_nth),
(egg_toolbars_model_get_types), (egg_toolbars_model_set_types),
(fill_avail_array), (egg_toolbars_model_get_avail),
(egg_toolbars_model_get_n_avail), (egg_toolbars_model_set_n_avail):
* lib/egg/egg-toolbars-model.h:
* src/bookmarks/Makefile.am:
* src/bookmarks/ephy-bookmark-action-group.c: (smart_added_cb),
(smart_removed_cb), (node_changed_cb), (node_added_cb),
(node_removed_cb), (ephy_bookmark_group_new):
* src/bookmarks/ephy-bookmark-action-group.h:
* src/bookmarks/ephy-bookmark-action.c: (create_tool_item),
(ephy_bookmark_action_sync_icon), (show_context_menu),
(popup_menu_cb), (button_press_cb), (button_release_cb),
(connect_proxy), (ephy_bookmark_action_updated),
(ephy_bookmark_action_get_bookmark),
(ephy_bookmark_action_set_bookmark),
(ephy_bookmark_action_set_property),
(ephy_bookmark_action_get_property),
(ephy_bookmark_action_finalize), (ephy_bookmark_action_class_init),
(ephy_bookmark_action_init), (ephy_bookmark_action_name),
(ephy_bookmark_action_new):
* src/bookmarks/ephy-bookmark-action.h:
* src/bookmarks/ephy-bookmark-factory-action.c:
(ephy_bookmark_factory_action_get_type), (activate_item_cb),
(build_menu_for_topic), (build_menu), (remove_placeholder_cb),
(activate_placeholder_cb), (clicked_placeholder_cb),
(realize_placeholder_cb), (create_tool_item), (connect_proxy),
(ephy_bookmark_factory_action_class_init),
(ephy_bookmark_factory_action_new):
* src/bookmarks/ephy-bookmark-factory-action.h:
* src/bookmarks/ephy-bookmark-properties.c:
(ephy_bookmark_properties_set_property),
(ephy_bookmark_properties_get_property),
(bookmark_properties_response_cb), (update_entry),
(location_entry_changed_cb), (build_ui):
* src/bookmarks/ephy-bookmarks-editor.c: (add_entry_monitor),
(cmd_add_topic), (delete_topic_dialog_construct),
(cmd_bookmarks_import), (ephy_bookmarks_editor_finalize),
(ephy_bookmarks_editor_node_activated_cb),
(ephy_bookmarks_editor_update_menu), (view_focus_cb),
(add_focus_monitor), (remove_focus_monitor), (bookmarks_filter),
(search_entry_search_cb), (ephy_bookmarks_editor_construct),
(ephy_bookmarks_editor_set_parent),
(ephy_bookmarks_editor_set_property),
(ephy_bookmarks_editor_get_property), (ephy_bookmarks_editor_init):
* src/bookmarks/ephy-bookmarks-menu.c: (append_bookmarks),
(append_menu), (ephy_bookmarks_menu_build):
* src/bookmarks/ephy-bookmarks-menu.h:
* src/bookmarks/ephy-bookmarks-ui.c: (find_action),
(activate_bookmarks_menu), (activate_favorites_menu),
(erase_bookmarks_menu), (erase_favorites_menu), (tree_changed_cb),
(node_added_cb), (node_changed_cb), (node_removed_cb),
(ephy_bookmarks_ui_attach_window),
(ephy_bookmarks_ui_detach_window), (toolbar_node_removed_cb),
(topic_has_data), (topic_get_data), (topic_get_name),
(bookmark_has_data), (bookmark_get_data), (bookmark_get_name),
(bookmark_new_name), (ephy_bookmarks_ui_attach_toolbar_model),
(ephy_bookmarks_ui_detach_toolbar_model):
* src/bookmarks/ephy-bookmarks-ui.h:
* src/bookmarks/ephy-bookmarks.c: (ephy_bookmarks_get_type),
(ephy_bookmarks_init_defaults), (ephy_bookmarks_class_init),
(ephy_bookmarks_save_delayed), (add_to_favorites),
(update_bookmark_keywords), (ephy_bookmarks_init),
(ephy_bookmarks_finalize), (ephy_bookmarks_add),
(ephy_bookmarks_set_address), (ephy_bookmarks_set_icon),
(ephy_bookmarks_add_keyword),
(ephy_bookmarks_show_bookmark_properties),
(ephy_bookmarks_get_from_id), (ephy_bookmarks_compare_topics),
(ephy_bookmarks_compare_topic_pointers),
(ephy_bookmarks_compare_bookmarks),
(ephy_bookmarks_compare_bookmark_pointers):
* src/bookmarks/ephy-bookmarks.h:
* src/bookmarks/ephy-bookmarksbar-model.c:
* src/bookmarks/ephy-bookmarksbar-model.h:
* src/bookmarks/ephy-bookmarksbar.c:
* src/bookmarks/ephy-bookmarksbar.h:
* src/bookmarks/ephy-favorites-menu.c:
* src/bookmarks/ephy-favorites-menu.h:
* src/bookmarks/ephy-new-bookmark.c: (ephy_new_bookmark_add),
(build_editing_table), (ephy_new_bookmark_construct),
(ephy_new_bookmark_set_property), (ephy_new_bookmark_get_property):
* src/bookmarks/ephy-nodes-cover.c: (ephy_nodes_count_covered),
(ephy_nodes_remove_covered), (ephy_nodes_remove_not_covered),
(ephy_nodes_get_covered), (ephy_nodes_covered),
(ephy_nodes_get_covering):
* src/bookmarks/ephy-nodes-cover.h:
* src/bookmarks/ephy-open-tabs-action.c: (activate_cb),
(node_added_cb), (node_removed_cb), (ephy_open_tabs_group_new),
(ephy_open_tabs_action_name):
* src/bookmarks/ephy-open-tabs-action.h:
* src/bookmarks/ephy-related-action.c: (node_changed),
(node_destroyed), (open_link), (iface_init),
(ephy_related_action_get_type), (ephy_related_action_new):
* src/bookmarks/ephy-related-action.h:
* src/bookmarks/ephy-topic-action-group.c: (node_changed_cb),
(node_added_cb), (node_removed_cb), (ephy_topic_group_new):
* src/bookmarks/ephy-topic-action-group.h:
* src/bookmarks/ephy-topic-action.c: (ephy_topic_action_get_type),
(create_tool_item), (ephy_topic_action_sync_label), (get_popup),
(erase_popup), (child_added_cb), (child_changed_cb),
(child_removed_cb), (menu_destroy_cb), (menu_init_cb),
(button_deactivate_cb), (button_toggled_cb), (button_release_cb),
(button_press_cb), (connect_proxy), (ephy_topic_action_updated),
(ephy_topic_action_get_topic), (ephy_topic_action_set_topic),
(ephy_topic_action_set_property), (ephy_topic_action_get_property),
(ephy_topic_action_class_init), (ephy_topic_action_init),
(ephy_topic_action_name), (ephy_topic_action_new):
* src/bookmarks/ephy-topic-action.h:
* src/bookmarks/ephy-topic-factory-action.c:
(ephy_topic_factory_action_get_type), (sort_topics),
(activate_item_cb), (build_menu), (remove_placeholder_cb),
(activate_placeholder_cb), (clicked_placeholder_cb),
(realize_placeholder_cb), (create_tool_item), (connect_proxy),
(ephy_topic_factory_action_class_init),
(ephy_topic_factory_action_new):
* src/bookmarks/ephy-topic-factory-action.h:
* src/ephy-link-action.c: (ephy_link_action_group_get_type),
(ephy_link_action_group_new):
* src/ephy-link-action.h:
* src/ephy-lockdown.c: (find_name), (find_action_group),
(update_window):
* src/ephy-notebook.c: (move_tab_to_another_notebook),
(ephy_notebook_switch_page_cb), (ephy_notebook_init),
(tab_label_style_set_cb), (build_tab_label),
(ephy_notebook_add_tab):
* src/ephy-shell.c: (ephy_shell_get_toolbars_model):
* src/ephy-toolbar-editor.c: (ephy_toolbar_editor_constructor),
(ephy_toolbar_editor_finalize), (ephy_toolbar_editor_set_property),
(ephy_toolbar_editor_class_init):
* src/ephy-toolbar.c: (ephy_toolbar_realize),
(ephy_toolbar_unrealize), (ephy_toolbar_finalize):
* src/ephy-toolbars-model.c: (update_flags),
(ephy_toolbars_model_load):
* src/ephy-window.c: (ephy_window_get_type),
(get_chromes_visibility), (sync_chromes_visibility),
(ephy_window_key_press_event), (tool_item_enter_cb),
(tool_item_leave_cb), (tool_item_drag_begin_cb),
(connect_tool_item), (disconnect_tool_item), (disconnect_proxy_cb),
(connect_proxy_cb), (update_chromes_actions), (show_embed_popup),
(tab_added_cb), (tab_removed_cb), (ephy_window_set_chrome),
(ephy_window_dispose), (ephy_window_class_init),
(ephy_window_init), (ephy_window_finalize),
(ephy_window_remove_tab), (ephy_window_set_zoom),
(sync_prefs_with_chrome), (ephy_window_view_toolbar_cb):
* src/ephy-window.h:
Revision history:
h18, released 2005/09/23, for Epiphany 1.8.0
* Just an update for 1.8.0.
h17, released 2005/08/30, for Epiphany 1.7.6 or CVS HEAD
* Mostly just an update for 1.7.6.
* Topic menus on the toolbar now open without releasing the mouse button.
* Topic menus on the toolbar are now also hierarchical (see if you like it.
h16, released 2005/08/25, for Epiphany 1.7.5 or CVS HEAD
* Just an update for 1.7.5. Sorry, I've been busy. :)
h15, released 2005/07/19, for Epiphany 1.7.2 or CVS HEAD
* Code cleanup
h14, released 2005/07/9, for Epiphany 1.7.1 or CVS HEAD
* Improved helpful tip when adding a bookmark
* Improved toolbar context menu
* Toolbar visibility state is now saved
* Separated bookmark/topic action groups into separate files
* Topics in the overflow menu now behave as submenus
* Now importing old bookmarksbar, and saving to new filename
* Incremented toolbar file format version number to 1.1
* Fixed the 'sticky' statusbar help
* Fixed a crashing bug (dnd then open a topic on the toolbar)
h13, released 2005/05/12, for CVS HEAD
* Added middle-mouse drag-drop for the editable toolbar.
* Fixed some warnings at compile and run time.
* Added brief help for the user when adding a new bookmark.
* Cleaned up the editable toolbar code a little.
h12, released 2005/05/10, for CVS HEAD
* Added new editing facilities for the editable toolbar.
h11, released 2005/04/29, for CVS HEAD
* Fixed bug in statusbar information for toolbar items.
* Added an all-new 'Related' toolbar widget which changes to show
the most related topic whenever a bookmark is activated.
h10, released 2005/04/15, for Epiphany 1.6.2 or CVS HEAD
* Added statusbar information for all toolbar items.
* Empty toolbars are now only deleted when exiting edit mode.
* Fixed regression of middle-click for bookmarks on toolbar.
* Fixed regression of ellipsized bookmark names in menus.
h9, released 2005/04/12, for Epiphany 1.6.1
* Updated patch for 1.6.1. Long time no see.
* Now using EphyLink objects everywhere.
h7, released 2004/10/21, for Epiphany 1.4.4
* Updated patch for 1.4.4.
* Fixed bugs causing crashes when bookmarks were added (thanks Reinout).
* Added "Open in Tabs" back into bookmark menus where suitable.
h6, released 2004/09/20, for Epiphany 1.4.0
* Updated patch for 1.4.0.
* Removed the bookmarks bar.
* Generate shared XML string for bookmarks menu.
* Slightly improve performance of node-cover code.
* Delay adding bookmarks menu until it is first used.
* Fixed bug(?) in ephy-node.
h4, released 2004/08/08, for Epiphany 1.3.4
* Updated patch due to changes to topics selector.
* Removed 'Most Visited' from the min-cover calculations.
* Fixed Epiphany 1.3.4 bug where topics in selector aren't sorted.
* Updated patch due to other changes in Epiphany 1.3.4 source.
h3, released 2004/07/12, for Epiphany 1.3.2
* Simple update for Epiphany 1.3.2
h3, released 2004/05/24, for Epiphany 1.2.5
* Moved duplicated functions into a seperate file.
* Improved topic selector.
* Bookmarks toolbar topic menus now have subdivisions.
* Topic names in menu now change if modified in the bookmarks editor.
h2, released 2004/05/23, for Epiphany 1.2.5
* Significantly cleaned up the code.
* 'Most Visited' no longer appears as a submenu.
* Subtopics are selected much more intelligently, giving a better
approximation to a true minimum cover.
* Topic selector now shows suggestions with arrows, not bold font.
h1, released 2004/05/19, for Epiphany 1.2.5
* Initial release.
Diffstat (limited to 'src/bookmarks/ephy-bookmarks.c')
-rw-r--r-- | src/bookmarks/ephy-bookmarks.c | 293 |
1 files changed, 112 insertions, 181 deletions
diff --git a/src/bookmarks/ephy-bookmarks.c b/src/bookmarks/ephy-bookmarks.c index c6435e40d..4e661a497 100644 --- a/src/bookmarks/ephy-bookmarks.c +++ b/src/bookmarks/ephy-bookmarks.c @@ -30,7 +30,6 @@ #include "ephy-debug.h" #include "ephy-tree-model-node.h" #include "ephy-node-common.h" -#include "ephy-bookmarksbar-model.h" #include "ephy-bookmarks-export.h" #include "ephy-bookmarks-import.h" #include "ephy-bookmark-properties.h" @@ -58,7 +57,6 @@ struct _EphyBookmarksPrivate { - EphyBookmarksBarModel *toolbars_model; gboolean init_defaults; gboolean dirty; guint save_timeout_id; @@ -110,12 +108,6 @@ static const char *default_topics [] = }; static int n_default_topics = G_N_ELEMENTS (default_topics); -enum -{ - PROP_0, - PROP_TOOLBARS_MODEL -}; - /* Signals */ enum { @@ -136,33 +128,33 @@ static GObjectClass *parent_class = NULL; GType ephy_bookmarks_get_type (void) { - static GType type = 0; - - if (G_UNLIKELY (type == 0)) - { - static const GTypeInfo our_info = - { - sizeof (EphyBookmarksClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) ephy_bookmarks_class_init, - NULL, - NULL, /* class_data */ - sizeof (EphyBookmarks), - 0, /* n_preallocs */ - (GInstanceInitFunc) ephy_bookmarks_init - }; + static GType type = 0; + + if (G_UNLIKELY (type == 0)) + { + static const GTypeInfo our_info = + { + sizeof (EphyBookmarksClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc) ephy_bookmarks_class_init, + NULL, + NULL, /* class_data */ + sizeof (EphyBookmarks), + 0, /* n_preallocs */ + (GInstanceInitFunc) ephy_bookmarks_init + }; volatile GType flags_type; /* work around gcc's optimiser */ /* make sure the flags type is known */ flags_type = EPHY_TYPE_BOOKMARK_PROPERTY; - type = g_type_register_static (G_TYPE_OBJECT, + type = g_type_register_static (G_TYPE_OBJECT, "EphyBookmarks", &our_info, 0); - } + } - return type; + return type; } static void @@ -180,126 +172,18 @@ ephy_bookmarks_init_defaults (EphyBookmarks *eb) EphyNode *bmk; bmk = ephy_bookmarks_add (eb, _(default_bookmarks[i].title), - _(default_bookmarks[i].location)); - ephy_bookmarksbar_model_add_bookmark (eb->priv->toolbars_model, FALSE, - ephy_node_get_id (bmk)); - } -} - -static char * -get_item_type_forward_cb (EggToolbarsModel *model, - GdkAtom type, - EggToolbarsModel *bookmarksbar_model) -{ - char *retval; - - g_signal_emit_by_name (bookmarksbar_model, "get_item_type", - type, &retval); - - return retval; -} - -static char * -get_item_id_forward_cb (EggToolbarsModel *model, - const char *type, - const char *name, - EggToolbarsModel *bookmarksbar_model) -{ - char *retval; - - g_signal_emit_by_name (bookmarksbar_model, "get_item_id", - type, name, &retval); - - return retval; -} - -static char * -get_item_data_forward_cb (EggToolbarsModel *model, - const char *type, - const char *id, - EggToolbarsModel *bookmarksbar_model) -{ - char *retval; - - g_signal_emit_by_name (bookmarksbar_model, "get_item_data", - type, id, &retval); - - return retval; -} - -GObject * -ephy_bookmarks_get_toolbars_model (EphyBookmarks *eb) -{ - g_return_val_if_fail (EPHY_IS_BOOKMARKS (eb), NULL); - - LOG ("ephy_bookmarks_get_toolbars_model"); - - if (eb->priv->toolbars_model == NULL) - { - GObject *toolbars_model; - - eb->priv->toolbars_model = EPHY_BOOKMARKSBAR_MODEL - (ephy_bookmarksbar_model_new (eb)); - - /* forward those signals, so that bookmarks can also be on the main model */ - toolbars_model = ephy_shell_get_toolbars_model (ephy_shell, FALSE); - - g_signal_connect_after (toolbars_model, "get_item_type", - G_CALLBACK (get_item_type_forward_cb), - eb->priv->toolbars_model); - g_signal_connect_after (toolbars_model, "get_item_id", - G_CALLBACK (get_item_id_forward_cb), - eb->priv->toolbars_model); - g_signal_connect_after (toolbars_model, "get_item_data", - G_CALLBACK (get_item_data_forward_cb), - eb->priv->toolbars_model); - - if (eb->priv->init_defaults) - { - ephy_bookmarks_init_defaults (eb); - } + _(default_bookmarks[i].location)); } - - return G_OBJECT (eb->priv->toolbars_model); } static void -ephy_bookmarks_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - /* no writable properties */ - g_assert_not_reached (); -} - -static void -ephy_bookmarks_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - EphyBookmarks *eb = EPHY_BOOKMARKS (object); - - switch (prop_id) - { - case PROP_TOOLBARS_MODEL: - g_value_set_object (value, ephy_bookmarks_get_toolbars_model (eb)); - break; - } -} - - -static void ephy_bookmarks_class_init (EphyBookmarksClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); - parent_class = g_type_class_peek_parent (klass); + parent_class = g_type_class_peek_parent (klass); - object_class->finalize = ephy_bookmarks_finalize; - object_class->set_property = ephy_bookmarks_set_property; - object_class->get_property = ephy_bookmarks_get_property; + object_class->finalize = ephy_bookmarks_finalize; klass->resolve_address = impl_resolve_address; @@ -325,14 +209,6 @@ ephy_bookmarks_class_init (EphyBookmarksClass *klass) G_TYPE_STRING, G_TYPE_STRING); - g_object_class_install_property (object_class, - PROP_TOOLBARS_MODEL, - g_param_spec_object ("toolbars-model", - "Toolbars model", - "Toolbars model", - EPHY_TYPE_BOOKMARKSBAR_MODEL, - G_PARAM_READABLE)); - g_type_class_add_private (object_class, sizeof(EphyBookmarksPrivate)); } @@ -408,7 +284,7 @@ ephy_bookmarks_save_delayed (EphyBookmarks *bookmarks, int delay) { bookmarks->priv->save_timeout_id = g_timeout_add (BOOKMARKS_SAVE_DELAY, - (GSourceFunc) save_bookmarks_delayed, + (GSourceFunc) save_bookmarks_delayed, bookmarks); } else @@ -485,7 +361,7 @@ add_to_favorites (EphyBookmarks *eb, EphyNode *node, EphyHistory *eh) if (eb->priv->lower_fav && full_menu) { ephy_node_remove_child (eb->priv->favorites, - eb->priv->lower_fav); + eb->priv->lower_fav); } ephy_node_add_child (eb->priv->favorites, node); @@ -692,7 +568,7 @@ update_bookmark_keywords (EphyBookmarks *eb, EphyNode *bookmark) g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, case_normalized_keywords); ephy_node_set_property (bookmark, EPHY_NODE_BMK_PROP_KEYWORDS, - &value); + &value); g_value_unset (&value); g_string_free (list, TRUE); @@ -998,30 +874,30 @@ ephy_bookmarks_init (EphyBookmarks *eb) /* Translators: this topic contains all bookmarks */ g_value_set_string (&value, Q_("bookmarks|All")); ephy_node_set_property (eb->priv->bookmarks, - EPHY_NODE_KEYWORD_PROP_NAME, - &value); + EPHY_NODE_KEYWORD_PROP_NAME, + &value); g_value_unset (&value); ephy_node_signal_connect_object (eb->priv->bookmarks, - EPHY_NODE_CHILD_REMOVED, - (EphyNodeCallback) bookmarks_removed_cb, - G_OBJECT (eb)); + EPHY_NODE_CHILD_REMOVED, + (EphyNodeCallback) bookmarks_removed_cb, + G_OBJECT (eb)); ephy_node_signal_connect_object (eb->priv->bookmarks, - EPHY_NODE_CHILD_CHANGED, - (EphyNodeCallback) bookmarks_changed_cb, - G_OBJECT (eb)); + EPHY_NODE_CHILD_CHANGED, + (EphyNodeCallback) bookmarks_changed_cb, + G_OBJECT (eb)); /* Keywords */ eb->priv->keywords = ephy_node_new_with_id (db, KEYWORDS_NODE_ID); g_value_init (&value, G_TYPE_INT); g_value_set_int (&value, EPHY_NODE_ALL_PRIORITY); ephy_node_set_property (eb->priv->bookmarks, - EPHY_NODE_KEYWORD_PROP_PRIORITY, - &value); + EPHY_NODE_KEYWORD_PROP_PRIORITY, + &value); g_value_unset (&value); ephy_node_signal_connect_object (eb->priv->keywords, - EPHY_NODE_CHILD_REMOVED, - (EphyNodeCallback) topics_removed_cb, - G_OBJECT (eb)); + EPHY_NODE_CHILD_REMOVED, + (EphyNodeCallback) topics_removed_cb, + G_OBJECT (eb)); ephy_node_add_child (eb->priv->keywords, eb->priv->bookmarks); @@ -1034,8 +910,8 @@ ephy_bookmarks_init (EphyBookmarks *eb) /* Translators: this topic contains the most used bookmarks */ g_value_set_string (&value, Q_("bookmarks|Most Visited")); ephy_node_set_property (eb->priv->favorites, - EPHY_NODE_KEYWORD_PROP_NAME, - &value); + EPHY_NODE_KEYWORD_PROP_NAME, + &value); g_value_unset (&value); g_value_init (&value, G_TYPE_INT); g_value_set_int (&value, EPHY_NODE_SPECIAL_PRIORITY); @@ -1053,8 +929,8 @@ ephy_bookmarks_init (EphyBookmarks *eb) /* Translators: this topic contains the not categorized bookmarks */ g_value_set_string (&value, Q_("bookmarks|Not Categorized")); ephy_node_set_property (eb->priv->notcategorized, - EPHY_NODE_KEYWORD_PROP_NAME, - &value); + EPHY_NODE_KEYWORD_PROP_NAME, + &value); g_value_unset (&value); g_value_init (&value, G_TYPE_INT); g_value_set_int (&value, EPHY_NODE_SPECIAL_PRIORITY); @@ -1120,6 +996,11 @@ ephy_bookmarks_init (EphyBookmarks *eb) eb->priv->init_defaults = TRUE; } } + + if (eb->priv->init_defaults) + { + ephy_bookmarks_init_defaults (eb); + } eb->priv->disable_bookmark_editing_notifier_id = eel_gconf_notification_add (CONF_LOCKDOWN_DISABLE_BOOKMARK_EDITING, @@ -1150,13 +1031,6 @@ ephy_bookmarks_finalize (GObject *object) ephy_bookmarks_save (eb); - /* have to do this before unreffing the nodes */ - LOG ("Unref bookmarks toolbars model"); - if (eb->priv->toolbars_model != NULL) - { - g_object_unref (eb->priv->toolbars_model); - } - ephy_node_unref (eb->priv->bookmarks); ephy_node_unref (eb->priv->keywords); ephy_node_unref (eb->priv->favorites); @@ -1236,13 +1110,13 @@ ephy_bookmarks_add (EphyBookmarks *eb, g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, title); ephy_node_set_property (bm, EPHY_NODE_BMK_PROP_TITLE, - &value); + &value); g_value_unset (&value); g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, url); ephy_node_set_property (bm, EPHY_NODE_BMK_PROP_LOCATION, - &value); + &value); g_value_unset (&value); update_has_smart_address (eb, bm, url); @@ -1266,7 +1140,7 @@ ephy_bookmarks_set_address (EphyBookmarks *eb, g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, address); ephy_node_set_property (bookmark, EPHY_NODE_BMK_PROP_LOCATION, - &value); + &value); g_value_unset (&value); update_has_smart_address (eb, bookmark, address); @@ -1318,7 +1192,7 @@ ephy_bookmarks_set_icon (EphyBookmarks *eb, g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, icon); ephy_node_set_property (node, EPHY_NODE_BMK_PROP_ICON, - &value); + &value); g_value_unset (&value); } @@ -1468,13 +1342,13 @@ ephy_bookmarks_add_keyword (EphyBookmarks *eb, g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, name); ephy_node_set_property (key, EPHY_NODE_KEYWORD_PROP_NAME, - &value); + &value); g_value_unset (&value); g_value_init (&value, G_TYPE_INT); g_value_set_int (&value, EPHY_NODE_NORMAL_PRIORITY); ephy_node_set_property (key, EPHY_NODE_KEYWORD_PROP_PRIORITY, - &value); + &value); g_value_unset (&value); ephy_node_add_child (eb->priv->keywords, key); @@ -1504,7 +1378,7 @@ bookmark_destroyed_cb (EphyNode *bookmark, GtkWidget * ephy_bookmarks_show_bookmark_properties (EphyBookmarks *bookmarks, EphyNode *bookmark, - GtkWidget *parent) + GtkWidget *parent) { GtkWidget *dialog = NULL; @@ -1734,3 +1608,60 @@ ephy_bookmarks_get_from_id (EphyBookmarks *eb, long id) { return ephy_node_db_get_node_from_id (eb->priv->db, id); } + +int +ephy_bookmarks_compare_topics (gconstpointer a, gconstpointer b) +{ + EphyNode *node_a = (EphyNode *)a; + EphyNode *node_b = (EphyNode *)b; + const char *title1, *title2; + int priority1, priority2; + + priority1 = ephy_node_get_property_int (node_a, EPHY_NODE_KEYWORD_PROP_PRIORITY); + priority2 = ephy_node_get_property_int (node_b, EPHY_NODE_KEYWORD_PROP_PRIORITY); + + if (priority1 > priority2) return 1; + if (priority1 < priority2) return -1; + + title1 = ephy_node_get_property_string (node_a, EPHY_NODE_KEYWORD_PROP_NAME); + title2 = ephy_node_get_property_string (node_b, EPHY_NODE_KEYWORD_PROP_NAME); + + if (title1 == title2) return 0; + if (title1 == NULL) return -1; + if (title2 == NULL) return 1; + return g_utf8_collate (title1, title2); +} + +int +ephy_bookmarks_compare_topic_pointers (gconstpointer a, gconstpointer b) +{ + EphyNode *node_a = *(EphyNode **)a; + EphyNode *node_b = *(EphyNode **)b; + + return ephy_bookmarks_compare_topics (node_a, node_b); +} + +int +ephy_bookmarks_compare_bookmarks (gconstpointer a, gconstpointer b) +{ + EphyNode *node_a = (EphyNode *)a; + EphyNode *node_b = (EphyNode *)b; + const char *title1, *title2; + + title1 = ephy_node_get_property_string (node_a, EPHY_NODE_BMK_PROP_TITLE); + title2 = ephy_node_get_property_string (node_b, EPHY_NODE_BMK_PROP_TITLE); + + if (title1 == title2) return 0; + if (title1 == NULL) return -1; + if (title2 == NULL) return 1; + return g_utf8_collate (title1, title2); +} + +int +ephy_bookmarks_compare_bookmark_pointers (gconstpointer a, gconstpointer b) +{ + EphyNode *node_a = *(EphyNode **)a; + EphyNode *node_b = *(EphyNode **)b; + + return ephy_bookmarks_compare_bookmarks (node_a, node_b); +} |