[devhelp/gnome-2-32] Re-populate search combo if book manager updated
- From: Frederic Peters <fpeters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [devhelp/gnome-2-32] Re-populate search combo if book manager updated
- Date: Mon, 2 Aug 2010 14:37:00 +0000 (UTC)
commit acd07e66d67306514dcde62c330b48e868be1e34
Author: Aleksander Morgado <aleksander lanedo com>
Date: Thu May 20 13:17:44 2010 +0200
Re-populate search combo if book manager updated
src/dh-book-manager.c | 2 +-
src/dh-book.c | 19 +--------------
src/dh-search.c | 60 ++++++++++++++++++++++++++++++++++--------------
3 files changed, 44 insertions(+), 37 deletions(-)
---
diff --git a/src/dh-book-manager.c b/src/dh-book-manager.c
index a9415e4..23374c9 100644
--- a/src/dh-book-manager.c
+++ b/src/dh-book-manager.c
@@ -85,7 +85,7 @@ dh_book_manager_class_init (DhBookManagerClass *klass)
object_class->finalize = book_manager_finalize;
signals[DISABLED_BOOK_LIST_UPDATED] =
- g_signal_new ("open-link",
+ g_signal_new ("disabled-book-list-updated",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (DhBookManagerClass, disabled_book_list_updated),
diff --git a/src/dh-book.c b/src/dh-book.c
index 28c9735..baa45a2 100644
--- a/src/dh-book.c
+++ b/src/dh-book.c
@@ -114,22 +114,6 @@ unref_node_link (GNode *node,
dh_link_unref (node->data);
}
-static gchar *
-book_get_name_from_path (const gchar *path)
-{
- gchar *name;
- gchar *aux;
-
- g_return_val_if_fail (path, NULL);
-
- name = g_path_get_basename (path);
- aux = strrchr (name, '.');
- if (aux) {
- *aux = '\0';
- }
- return name;
-}
-
DhBook *
dh_book_new (const gchar *book_path)
{
@@ -164,8 +148,7 @@ dh_book_new (const gchar *book_path)
priv->title = g_strdup (dh_link_get_name ((DhLink *)priv->tree->data));
/* Setup name */
- priv->name = book_get_name_from_path (book_path);
-
+ priv->name = g_strdup (dh_link_get_book_id ((DhLink *)priv->tree->data));
return book;
}
diff --git a/src/dh-search.c b/src/dh-search.c
index 3dc60a0..4afd8c4 100644
--- a/src/dh-search.c
+++ b/src/dh-search.c
@@ -489,19 +489,19 @@ search_combo_row_separator_func (GtkTreeModel *model,
return result;
}
-static GtkWidget *
-search_combo_create (DhSearch *search)
+static void
+search_combo_populate (DhSearch *search)
{
- GtkTreeIter iter;
- GtkListStore *store;
- GtkWidget *combo;
- GtkCellRenderer *cell;
- GList *l;
- DhSearchPriv *priv;
+ DhSearchPriv *priv;
+ GtkListStore *store;
+ GtkTreeIter iter;
+ GList *l;
priv = GET_PRIVATE (search);
- store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
+ store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (priv->book_combo)));
+
+ gtk_list_store_clear (store);
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter,
@@ -536,24 +536,36 @@ search_combo_create (DhSearch *search)
}
}
- combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
+ gtk_combo_box_set_active (GTK_COMBO_BOX (priv->book_combo), 0);
+}
+
+
+static void
+search_combo_create (DhSearch *search)
+{
+ GtkListStore *store;
+ GtkCellRenderer *cell;
+ DhSearchPriv *priv;
+
+ priv = GET_PRIVATE (search);
+
+ store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
+ priv->book_combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
g_object_unref (store);
- gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combo),
+ search_combo_populate (search);
+
+ gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (priv->book_combo),
search_combo_row_separator_func,
NULL, NULL);
cell = gtk_cell_renderer_text_new ();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo),
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (priv->book_combo),
cell,
TRUE);
- gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo),
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (priv->book_combo),
cell,
"text", 0);
-
- gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
-
- return combo;
}
static void
@@ -579,6 +591,14 @@ completion_add_items (DhSearch *search)
}
}
+static void
+book_manager_disabled_book_list_changed_cb (DhBookManager *book_manager,
+ gpointer user_data)
+{
+ DhSearch *search = user_data;
+ search_combo_populate (search);
+}
+
GtkWidget *
dh_search_new (DhBookManager *book_manager)
{
@@ -595,10 +615,14 @@ dh_search_new (DhBookManager *book_manager)
priv = GET_PRIVATE (search);
priv->book_manager = g_object_ref (book_manager);
+ g_signal_connect (priv->book_manager,
+ "disabled-book-list-updated",
+ G_CALLBACK (book_manager_disabled_book_list_changed_cb),
+ search);
gtk_container_set_border_width (GTK_CONTAINER (search), 2);
- priv->book_combo = search_combo_create (search);
+ search_combo_create (search);
g_signal_connect (priv->book_combo, "changed",
G_CALLBACK (search_combo_changed_cb),
search);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]