aboutsummaryrefslogtreecommitdiffstats
path: root/src/bookmarks/ephy-topics-palette.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bookmarks/ephy-topics-palette.c')
-rw-r--r--src/bookmarks/ephy-topics-palette.c49
1 files changed, 32 insertions, 17 deletions
diff --git a/src/bookmarks/ephy-topics-palette.c b/src/bookmarks/ephy-topics-palette.c
index 93f032093..ee650b0a1 100644
--- a/src/bookmarks/ephy-topics-palette.c
+++ b/src/bookmarks/ephy-topics-palette.c
@@ -41,6 +41,7 @@ struct _EphyTopicsPalettePrivate
EphyBookmarks *bookmarks;
EphyNode *bookmark;
GtkListStore *store;
+ GtkTreeViewColumn *column;
int mode;
};
@@ -65,9 +66,9 @@ enum
enum
{
- MODE_ALL,
- MODE_TOPLEVEL,
- MODE_COMMUNITY
+ MODE_GROUPED,
+ MODE_LIST,
+ MODES
};
static GObjectClass *parent_class = NULL;
@@ -184,8 +185,10 @@ update_list (EphyTopicsPalette *palette)
valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (palette->priv->store), &iter);
first = TRUE;
- if (palette->priv->mode == MODE_ALL)
+ if (palette->priv->mode == MODE_LIST)
{
+ gtk_tree_view_column_set_title (palette->priv->column, _("By title"));
+
/* Allocate and fill the suggestions array. */
node = ephy_bookmarks_get_keywords (palette->priv->bookmarks);
children = ephy_node_get_children (node);
@@ -205,10 +208,12 @@ update_list (EphyTopicsPalette *palette)
append_topics (palette, &iter, &valid, &first, NULL, _("No topics"), topics);
g_ptr_array_free (topics, TRUE);
}
- else if (palette->priv->mode == MODE_TOPLEVEL)
+ else if (palette->priv->mode == MODE_GROUPED)
{
GPtrArray *suggested, *selected;
+ gtk_tree_view_column_set_title (palette->priv->column, _("By relation"));
+
/* Allocate and fill the bookmarks array. */
node = ephy_bookmarks_get_bookmarks (palette->priv->bookmarks);
children = ephy_node_get_children (node);
@@ -346,6 +351,14 @@ ephy_topics_palette_set_property (GObject *object,
}
static void
+column_clicked (GtkTreeViewColumn *column,
+ EphyTopicsPalette *palette)
+{
+ palette->priv->mode = (palette->priv->mode+1)%MODES;
+ update_list_idle (palette);
+}
+
+static void
cell_edited (GtkCellRendererText *renderer,
const char *path_str,
const char *new_text,
@@ -422,7 +435,6 @@ ephy_topics_palette_constructor (GType type,
EphyTopicsPalette *palette;
EphyTopicsPalettePrivate *priv;
GtkCellRenderer *renderer;
- GtkTreeViewColumn *column;
object = parent_class->constructor (type, n_construct_properties,
construct_params);
@@ -434,23 +446,26 @@ ephy_topics_palette_constructor (GType type,
gtk_tree_view_set_model (GTK_TREE_VIEW (object), GTK_TREE_MODEL (priv->store));
g_object_unref (priv->store);
- column = gtk_tree_view_column_new ();
+ priv->column = gtk_tree_view_column_new ();
+ gtk_tree_view_column_set_clickable (priv->column, TRUE);
+ g_signal_connect (priv->column, "clicked", G_CALLBACK (column_clicked), palette);
renderer = gtk_cell_renderer_toggle_new ();
- gtk_tree_view_column_pack_start (column, renderer, FALSE);
- gtk_tree_view_column_add_attribute (column, renderer, "active", COLUMN_SELECTED);
- gtk_tree_view_column_add_attribute (column, renderer, "visible", COLUMN_SELECTABLE);
+ gtk_tree_view_column_pack_start (priv->column, renderer, FALSE);
+ gtk_tree_view_column_add_attribute (priv->column, renderer, "active", COLUMN_SELECTED);
+ gtk_tree_view_column_add_attribute (priv->column, renderer, "visible", COLUMN_SELECTABLE);
g_signal_connect (renderer, "toggled", G_CALLBACK (toggled), palette);
renderer = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (column, renderer, TRUE);
- gtk_tree_view_column_add_attribute (column, renderer, "text", COLUMN_TITLE);
- gtk_tree_view_column_add_attribute (column, renderer, "weight", COLUMN_WEIGHT);
+ gtk_tree_view_column_pack_start (priv->column, renderer, TRUE);
+ gtk_tree_view_column_add_attribute (priv->column, renderer, "text", COLUMN_TITLE);
+ gtk_tree_view_column_add_attribute (priv->column, renderer, "weight", COLUMN_WEIGHT);
g_signal_connect (renderer, "edited", G_CALLBACK (cell_edited), palette);
-
- gtk_tree_view_append_column (GTK_TREE_VIEW (object), column);
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (object), FALSE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (object), priv->column);
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (object), TRUE);
+ gtk_tree_view_set_headers_clickable (GTK_TREE_VIEW (object), TRUE);
+
gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (object), is_separator, NULL, NULL);
gtk_tree_view_set_enable_search (GTK_TREE_VIEW (object), TRUE);
gtk_tree_view_set_search_column (GTK_TREE_VIEW (object), COLUMN_TITLE);
@@ -516,7 +531,7 @@ ephy_topics_palette_class_init (EphyTopicsPaletteClass *klass)
g_param_spec_int ("mode",
"Mode",
"Mode",
- 0, 2, 1, G_PARAM_WRITABLE));
+ 0, MODES-1, 0, G_PARAM_WRITABLE));
g_type_class_add_private (object_class, sizeof(EphyTopicsPalettePrivate));
}