Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-sidebar-bookmarks.c
diff options
context:
space:
mode:
authorJonathan Blandford <jrb@redhat.com>2004-12-22 18:41:31 (GMT)
committer Jonathan Blandford <jrb@src.gnome.org>2004-12-22 18:41:31 (GMT)
commit37ca059dda89fecb22f6297d337ea393b2069605 (patch)
tree3e14d00ef2e9cc9f54c363a50711e091cd316d58 /shell/ev-sidebar-bookmarks.c
parent29d4b297afccd67742563fb1ae68d6a39b4a8686 (diff)
initial sidebar document setting code.
Wed Dec 22 13:41:01 2004 Jonathan Blandford <jrb@redhat.com> * shell/ev-sidebar.c (ev_sidebar_set_document): initial sidebar document setting code.
Diffstat (limited to 'shell/ev-sidebar-bookmarks.c')
-rw-r--r--shell/ev-sidebar-bookmarks.c86
1 files changed, 85 insertions, 1 deletions
diff --git a/shell/ev-sidebar-bookmarks.c b/shell/ev-sidebar-bookmarks.c
index b7e060f..e29975a 100644
--- a/shell/ev-sidebar-bookmarks.c
+++ b/shell/ev-sidebar-bookmarks.c
@@ -31,6 +31,8 @@
struct _EvSidebarBookmarksPrivate {
GtkWidget *tree_view;
+ GtkTreeModel *model;
+ EvDocument *current_document;
};
enum {
@@ -38,9 +40,15 @@ enum {
BOOKMARKS_COLUMN_OUTLINE,
BOOKMARKS_COLUMN_PAGE_NUM,
BOOKMARKS_COLUMN_PAGE_VALID,
- NUM_COLUMNS
+ BOOKMARKS_COLUMN_NUM_COLUMNS
};
+static void bookmarks_page_num_func (GtkTreeViewColumn *tree_column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ gpointer data);
+
G_DEFINE_TYPE (EvSidebarBookmarks, ev_sidebar_bookmarks, GTK_TYPE_VBOX)
#define EV_SIDEBAR_BOOKMARKS_GET_PRIVATE(object) \
@@ -63,8 +71,16 @@ ev_sidebar_bookmarks_construct (EvSidebarBookmarks *ev_sidebar_bookmarks)
{
EvSidebarBookmarksPrivate *priv;
GtkWidget *swindow;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *renderer;
priv = ev_sidebar_bookmarks->priv;
+ priv->model = (GtkTreeModel *) gtk_tree_store_new (BOOKMARKS_COLUMN_NUM_COLUMNS,
+ G_TYPE_STRING,
+ G_TYPE_POINTER,
+ G_TYPE_INT,
+ G_TYPE_BOOLEAN);
+
swindow = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow),
@@ -76,9 +92,30 @@ ev_sidebar_bookmarks_construct (EvSidebarBookmarks *ev_sidebar_bookmarks)
priv->tree_view = gtk_tree_view_new ();
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (priv->tree_view), FALSE);
gtk_container_add (GTK_CONTAINER (swindow), priv->tree_view);
+ gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (priv->tree_view), TRUE);
gtk_box_pack_start (GTK_BOX (ev_sidebar_bookmarks), swindow, TRUE, TRUE, 0);
gtk_widget_show_all (GTK_WIDGET (ev_sidebar_bookmarks));
+
+ column = gtk_tree_view_column_new ();
+ gtk_tree_view_column_set_expand (GTK_TREE_VIEW_COLUMN (column), TRUE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (priv->tree_view), column);
+
+ renderer = (GtkCellRenderer*)
+ g_object_new (GTK_TYPE_CELL_RENDERER_TEXT,
+ "ellipsize", PANGO_ELLIPSIZE_END,
+ NULL);
+ gtk_tree_view_column_pack_start (GTK_TREE_VIEW_COLUMN (column), renderer, TRUE);
+ gtk_tree_view_column_set_attributes (GTK_TREE_VIEW_COLUMN (column), renderer,
+ "markup", BOOKMARKS_COLUMN_MARKUP,
+ NULL);
+
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_tree_view_column_pack_end (GTK_TREE_VIEW_COLUMN (column), renderer, FALSE);
+ gtk_tree_view_column_set_cell_data_func (GTK_TREE_VIEW_COLUMN (column), renderer,
+ (GtkTreeCellDataFunc) bookmarks_page_num_func,
+ NULL, NULL);
+
}
static void
@@ -89,6 +126,37 @@ ev_sidebar_bookmarks_init (EvSidebarBookmarks *ev_sidebar_bookmarks)
ev_sidebar_bookmarks_construct (ev_sidebar_bookmarks);
}
+static void
+bookmarks_page_num_func (GtkTreeViewColumn *tree_column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ gpointer data)
+{
+ int page_num;
+ gboolean page_valid;
+
+ gtk_tree_model_get (tree_model, iter,
+ BOOKMARKS_COLUMN_PAGE_NUM, &page_num,
+ BOOKMARKS_COLUMN_PAGE_VALID, &page_valid,
+ -1);
+
+ if (page_valid) {
+ gchar *markup = g_strdup_printf ("<i>%d</i>", page_num);
+ g_object_set (cell,
+ "markup", markup,
+ "visible", TRUE,
+ NULL);
+ g_free (markup);
+ } else {
+ g_object_set (cell,
+ "visible", FALSE,
+ NULL);
+ }
+}
+
+/* Public Functions */
+
GtkWidget *
ev_sidebar_bookmarks_new (void)
{
@@ -98,3 +166,19 @@ ev_sidebar_bookmarks_new (void)
return ev_sidebar_bookmarks;
}
+
+void
+ev_sidebar_bookmarks_set_document (EvSidebarBookmarks *sidebar_bookmarks,
+ EvDocument *document)
+{
+ EvSidebarBookmarksPrivate *priv;
+
+ g_return_if_fail (EV_IS_SIDEBAR_BOOKMARKS (sidebar_bookmarks));
+ g_return_if_fail (EV_IS_DOCUMENT (document));
+
+ priv = sidebar_bookmarks->priv;
+
+ g_assert (priv->current_document == NULL);
+
+}
+