From a49f1f7814006db82f13622b97ad627026360b7d Mon Sep 17 00:00:00 2001 From: Alexander Butenko Date: Thu, 1 Jul 2010 11:43:57 -0400 Subject: [PATCH] Introduce katze_bookmark_populate_tree_view() and rename ITEM_IS* macros --- katze/katze-item.h | 3 +++ katze/katze-utils.c | 30 +++++++++++++++++++++ katze/katze-utils.h | 12 ++++++--- panels/midori-bookmarks.c | 56 +++++++++++---------------------------- 4 files changed, 58 insertions(+), 43 deletions(-) diff --git a/katze/katze-item.h b/katze/katze-item.h index 23b61fd2..40c250f8 100644 --- a/katze/katze-item.h +++ b/katze/katze-item.h @@ -28,6 +28,9 @@ G_BEGIN_DECLS (G_TYPE_CHECK_CLASS_TYPE ((klass), KATZE_TYPE_ITEM)) #define KATZE_ITEM_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), KATZE_TYPE_ITEM, KatzeItemClass)) +#define KATZE_ITEM_IS_BOOKMARK(item) (item && katze_item_get_uri (item)) +#define KATZE_ITEM_IS_FOLDER(item) (item && !katze_item_get_uri (item)) +#define KATZE_ITEM_IS_SEPARATOR(item) (item == NULL) typedef struct _KatzeItem KatzeItem; typedef struct _KatzeItemClass KatzeItemClass; diff --git a/katze/katze-utils.c b/katze/katze-utils.c index 5416eb7b..39c70583 100644 --- a/katze/katze-utils.c +++ b/katze/katze-utils.c @@ -10,6 +10,7 @@ */ #include "katze-utils.h" +#include "katze-array.h" #include #include @@ -1123,6 +1124,35 @@ katze_tree_view_get_selected_iter (GtkTreeView* treeview, return FALSE; } +void +katze_bookmark_populate_tree_view (KatzeArray* array, + GtkTreeStore* model, + GtkTreeIter* parent) +{ + KatzeItem* child; + GtkTreeIter iter; + GtkTreeIter root_iter; + guint i = 0; + + while ((child = katze_array_get_nth_item (KATZE_ARRAY (array), i))) + { + if (KATZE_ITEM_IS_BOOKMARK (child)) + { + gtk_tree_store_insert_with_values (model, NULL, parent, + 0, 0, child, -1); + } + else + { + gtk_tree_store_insert_with_values (model, &root_iter, parent, + 0, 0, child, -1); + /* That's an invisible dummy, so we always have an expander */ + gtk_tree_store_insert_with_values (model, &iter, &root_iter, + 0, 0, NULL, -1); + } + i++; + } +} + /** * katze_strip_mnemonics: * @original: a string with mnemonics diff --git a/katze/katze-utils.h b/katze/katze-utils.h index 6a5843f6..6b811f54 100644 --- a/katze/katze-utils.h +++ b/katze/katze-utils.h @@ -14,6 +14,7 @@ #define __KATZE_UTILS_H__ #include +#include "katze-array.h" G_BEGIN_DECLS @@ -105,9 +106,14 @@ katze_pixbuf_new_from_buffer (const guchar* buffer, GError** error); gboolean -katze_tree_view_get_selected_iter (GtkTreeView* treeview, - GtkTreeModel** model, - GtkTreeIter* iter); +katze_tree_view_get_selected_iter (GtkTreeView* treeview, + GtkTreeModel** model, + GtkTreeIter* iter); + +void +katze_bookmark_populate_tree_view (KatzeArray* array, + GtkTreeStore* model, + GtkTreeIter* parent); gchar* katze_strip_mnemonics (const gchar* original); diff --git a/panels/midori-bookmarks.c b/panels/midori-bookmarks.c index f633d775..e1cc618d 100644 --- a/panels/midori-bookmarks.c +++ b/panels/midori-bookmarks.c @@ -24,10 +24,6 @@ #include -#define ITEM_IS_BOOKMARK(item) (item && katze_item_get_uri (item)) -#define ITEM_IS_FOLDER(item) (item && !katze_item_get_uri (item)) -#define ITEM_IS_SEPARATOR(item) (item == NULL) - void midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser, KatzeItem* bookmark, @@ -204,29 +200,9 @@ midori_bookmarks_read_from_db_to_model (MidoriBookmarks* bookmarks, const gchar* folder) { KatzeArray* array; - KatzeItem* child; - GtkTreeIter iter; - GtkTreeIter root_iter; - guint i = 0; array = midori_bookmarks_read_from_db (bookmarks, folder); - while ((child = katze_array_get_nth_item (KATZE_ARRAY (array), i))) - { - if (ITEM_IS_BOOKMARK (child)) - { - gtk_tree_store_insert_with_values (model, NULL, parent, - 0, 0, child, -1); - } - else - { - gtk_tree_store_insert_with_values (model, &root_iter, parent, - 0, 0, child, -1); - /* That's an invisible dummy, so we always have an expander */ - gtk_tree_store_insert_with_values (model, &iter, &root_iter, - 0, 0, NULL, -1); - } - i++; - } + katze_bookmark_populate_tree_view (array, model, parent); } void @@ -239,7 +215,7 @@ midori_bookmarks_insert_item_db (sqlite3* db, int type = 0; gchar* parent; - if (ITEM_IS_BOOKMARK (item)) + if (KATZE_ITEM_IS_BOOKMARK (item)) type = 1; if (folder) @@ -279,7 +255,7 @@ midori_bookmarks_remove_item_from_db (sqlite3* db, gchar* sqlcmd; char* errmsg = NULL; - if (ITEM_IS_BOOKMARK (item)) + if (KATZE_ITEM_IS_BOOKMARK (item)) sqlcmd = sqlite3_mprintf ( "DELETE FROM bookmarks WHERE uri = '%q'", katze_item_get_uri (item)); @@ -352,10 +328,10 @@ midori_bookmarks_edit_clicked_cb (GtkWidget* toolitem, gtk_tree_model_get (model, &iter, 0, &item, -1); - g_assert (!ITEM_IS_SEPARATOR (item)); + g_assert (!KATZE_ITEM_IS_SEPARATOR (item)); browser = midori_browser_get_for_widget (toolitem); - midori_browser_edit_bookmark_dialog_new (browser, item, FALSE, ITEM_IS_FOLDER (item)); + midori_browser_edit_bookmark_dialog_new (browser, item, FALSE, KATZE_ITEM_IS_FOLDER (item)); g_object_unref (item); } @@ -404,7 +380,7 @@ midori_bookmarks_cursor_or_row_changed_cb (GtkTreeView* treeview, { gtk_tree_model_get (model, &iter, 0, &item, -1); - gtk_widget_set_sensitive (bookmarks->edit, !ITEM_IS_SEPARATOR (item)); + gtk_widget_set_sensitive (bookmarks->edit, !KATZE_ITEM_IS_SEPARATOR (item)); gtk_widget_set_sensitive (bookmarks->delete, TRUE); if (item != NULL) @@ -568,10 +544,10 @@ midori_bookmarks_treeview_render_icon_cb (GtkTreeViewColumn* column, /* TODO: Would it be better to not do this on every redraw? */ pixbuf = NULL; - if (ITEM_IS_FOLDER (item)) + if (KATZE_ITEM_IS_FOLDER (item)) pixbuf = gtk_widget_render_icon (treeview, GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU, NULL); - else if (ITEM_IS_BOOKMARK (item)) + else if (KATZE_ITEM_IS_BOOKMARK (item)) pixbuf = katze_load_cached_icon (katze_item_get_uri (item), treeview); g_object_set (renderer, "pixbuf", pixbuf, NULL); @@ -639,7 +615,7 @@ midori_bookmarks_popup_item (GtkWidget* menu, const gchar* uri; GtkWidget* menuitem; - uri = ITEM_IS_BOOKMARK (item) ? katze_item_get_uri (item) : NULL; + uri = KATZE_ITEM_IS_BOOKMARK (item) ? katze_item_get_uri (item) : NULL; menuitem = gtk_image_menu_item_new_from_stock (stock_id, NULL); if (label) @@ -647,8 +623,8 @@ midori_bookmarks_popup_item (GtkWidget* menu, GTK_BIN (menuitem))), label); if (!strcmp (stock_id, GTK_STOCK_EDIT)) gtk_widget_set_sensitive (menuitem, - !ITEM_IS_SEPARATOR (item)); - else if (!ITEM_IS_FOLDER (item) && strcmp (stock_id, GTK_STOCK_DELETE)) + !KATZE_ITEM_IS_SEPARATOR (item)); + else if (!KATZE_ITEM_IS_FOLDER (item) && strcmp (stock_id, GTK_STOCK_DELETE)) gtk_widget_set_sensitive (menuitem, uri != NULL); g_object_set_data (G_OBJECT (menuitem), "KatzeItem", item); g_signal_connect (menuitem, "activate", G_CALLBACK (callback), bookmarks); @@ -681,7 +657,7 @@ midori_bookmarks_open_in_tab_activate_cb (GtkWidget* menuitem, guint n; item = (KatzeItem*)g_object_get_data (G_OBJECT (menuitem), "KatzeItem"); - if (ITEM_IS_FOLDER (item)) + if (KATZE_ITEM_IS_FOLDER (item)) { KatzeItem* child; KatzeArray* array; @@ -747,10 +723,10 @@ midori_bookmarks_edit_activate_cb (GtkWidget* menuitem, MidoriBrowser* browser; item = (KatzeItem*)g_object_get_data (G_OBJECT (menuitem), "KatzeItem"); - g_assert (!ITEM_IS_SEPARATOR (item)); + g_assert (!KATZE_ITEM_IS_SEPARATOR (item)); browser = midori_browser_get_for_widget (GTK_WIDGET (bookmarks)); - midori_browser_edit_bookmark_dialog_new (browser, item, FALSE, ITEM_IS_FOLDER (item)); + midori_browser_edit_bookmark_dialog_new (browser, item, FALSE, KATZE_ITEM_IS_FOLDER (item)); } static void @@ -786,7 +762,7 @@ midori_bookmarks_popup (GtkWidget* widget, GtkWidget* menuitem; menu = gtk_menu_new (); - if (ITEM_IS_FOLDER (item)) + if (KATZE_ITEM_IS_FOLDER (item)) midori_bookmarks_popup_item (menu, STOCK_TAB_NEW, _("Open all in _Tabs"), item, midori_bookmarks_open_in_tab_activate_cb, bookmarks); @@ -830,7 +806,7 @@ midori_bookmarks_button_release_event_cb (GtkWidget* widget, if (event->button == 2) { const gchar* uri; - if (ITEM_IS_BOOKMARK (item) && (uri = katze_item_get_uri (item)) && *uri) + if (KATZE_ITEM_IS_BOOKMARK (item) && (uri = katze_item_get_uri (item)) && *uri) { MidoriBrowser* browser; gint n;