diff options
author | Jonathan 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) |
commit | 37ca059dda89fecb22f6297d337ea393b2069605 (patch) | |
tree | 3e14d00ef2e9cc9f54c363a50711e091cd316d58 /shell/ev-sidebar-bookmarks.c | |
parent | 29d4b297afccd67742563fb1ae68d6a39b4a8686 (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.c | 86 |
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); + +} + |