X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=sidebyside;f=shell%2Fev-sidebar.c;h=f042f0c5b3612beb92c6c2e72a46abb13c707b54;hb=d8ee8d47ba0982593a9774bb326944349a784b89;hp=4ff8405293fa5fe49d6138c3fff21b70a59c940d;hpb=5a7fb79a9faa64e7b877b16a220999945b54a128;p=evince.git diff --git a/shell/ev-sidebar.c b/shell/ev-sidebar.c index 4ff84052..f042f0c5 100644 --- a/shell/ev-sidebar.c +++ b/shell/ev-sidebar.c @@ -28,6 +28,10 @@ #include #include "ev-sidebar.h" +#include "ev-document-thumbnails.h" +#include "ev-document-bookmarks.h" +#include "ev-sidebar-bookmarks.h" +#include "ev-sidebar-thumbnails.h" typedef struct { @@ -76,10 +80,10 @@ ev_sidebar_init (EvSidebar *ev_sidebar) { GtkWidget *hbox; GtkCellRenderer *renderer; - + ev_sidebar->priv = EV_SIDEBAR_GET_PRIVATE (ev_sidebar); - gtk_box_set_spacing (GTK_BOX (ev_sidebar), 6); + /* data model */ ev_sidebar->priv->page_model = (GtkTreeModel *) gtk_list_store_new (PAGE_COLUMN_NUM_COLS, @@ -87,6 +91,7 @@ ev_sidebar_init (EvSidebar *ev_sidebar) G_TYPE_STRING, GTK_TYPE_WIDGET, G_TYPE_INT); + /* top option menu */ hbox = gtk_hbox_new (FALSE, 6); gtk_box_pack_start (GTK_BOX (ev_sidebar), hbox, @@ -98,6 +103,7 @@ ev_sidebar_init (EvSidebar *ev_sidebar) gtk_box_pack_start (GTK_BOX (hbox), ev_sidebar->priv->option_menu, FALSE, FALSE, 0); + renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (ev_sidebar->priv->option_menu), renderer, TRUE); @@ -170,6 +176,52 @@ ev_sidebar_add_page (EvSidebar *ev_sidebar, PAGE_COLUMN_MAIN_WIDGET, main_widget, PAGE_COLUMN_NOTEBOOK_INDEX, index, -1); + + /* Set the first item added as active */ + if (gtk_combo_box_get_active (GTK_COMBO_BOX (ev_sidebar->priv->option_menu))) + gtk_combo_box_set_active (GTK_COMBO_BOX (ev_sidebar->priv->option_menu), 0); +} + +void +ev_sidebar_set_document (EvSidebar *sidebar, + EvDocument *document) +{ + EvSidebarPrivate *priv; + GtkTreeIter iter; + gboolean result; + + g_return_if_fail (EV_IS_SIDEBAR (sidebar)); + g_return_if_fail (EV_IS_DOCUMENT (document)); + + priv = sidebar->priv; + + /* FIXME: We should prolly make sidebars have an interface. For now, we + * do this bad hack (TM) + */ + for (result = gtk_tree_model_get_iter_first (priv->page_model, &iter); + result; + result = gtk_tree_model_iter_next (priv->page_model, &iter)) { + GtkWidget *widget; + + gtk_tree_model_get (priv->page_model, &iter, + PAGE_COLUMN_MAIN_WIDGET, &widget, + -1); + + if (EV_IS_SIDEBAR_BOOKMARKS (widget) + && EV_IS_DOCUMENT_BOOKMARKS (document) + && ev_document_bookmarks_has_document_bookmarks (EV_DOCUMENT_BOOKMARKS (document))) + ev_sidebar_bookmarks_set_document (EV_SIDEBAR_BOOKMARKS (widget), + document); + else if (EV_IS_SIDEBAR_THUMBNAILS (widget) && + EV_IS_DOCUMENT_THUMBNAILS (document)) + ev_sidebar_thumbnails_set_document (EV_SIDEBAR_THUMBNAILS (widget), + document); + + + + } + + } void