Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-sidebar-links.c
diff options
context:
space:
mode:
authorNickolay V. Shmyrev <nshmyrev@src.gnome.org>2005-04-19 08:57:50 (GMT)
committer Nickolay V. Shmyrev <nshmyrev@src.gnome.org>2005-04-19 08:57:50 (GMT)
commite6e647fb236b236df1399ff4dba8faf0172002a1 (patch)
treeed7cd98953cd68ebc0449fbbc1324e71aaf08008 /shell/ev-sidebar-links.c
parent7ffb31c1dccfa67e3920e4a746dba023af2c9c08 (diff)
Small rework of sidebar pages handling. See bug #164811 for details
Diffstat (limited to 'shell/ev-sidebar-links.c')
-rw-r--r--shell/ev-sidebar-links.c65
1 files changed, 52 insertions, 13 deletions
diff --git a/shell/ev-sidebar-links.c b/shell/ev-sidebar-links.c
index 1a4312f..830d6be 100644
--- a/shell/ev-sidebar-links.c
+++ b/shell/ev-sidebar-links.c
@@ -28,6 +28,7 @@
#include <glib/gi18n.h>
#include <gtk/gtk.h>
+#include "ev-sidebar-page.h"
#include "ev-sidebar-links.h"
#include "ev-job-queue.h"
#include "ev-document-links.h"
@@ -52,17 +53,30 @@ enum {
};
-static void links_page_num_func (GtkTreeViewColumn *tree_column,
- GtkCellRenderer *cell,
- GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- EvSidebarLinks *sidebar_links);
-static void update_page_callback (EvPageCache *page_cache,
- gint current_page,
- EvSidebarLinks *sidebar_links);
+static void links_page_num_func (GtkTreeViewColumn *tree_column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ EvSidebarLinks *sidebar_links);
+static void update_page_callback (EvPageCache *page_cache,
+ gint current_page,
+ EvSidebarLinks *sidebar_links);
+static void ev_sidebar_links_page_iface_init (EvSidebarPageIface *iface);
+static void ev_sidebar_links_clear_document (EvSidebarLinks *sidebar_links);
+static void ev_sidebar_links_set_document (EvSidebarPage *sidebar_page,
+ EvDocument *document);
+static gboolean ev_sidebar_links_support_document (EvSidebarPage *sidebar_page,
+ EvDocument *document);
+static const gchar* ev_sidebar_links_get_label (EvSidebarPage *sidebar_page);
-G_DEFINE_TYPE (EvSidebarLinks, ev_sidebar_links, GTK_TYPE_VBOX)
+G_DEFINE_TYPE_EXTENDED (EvSidebarLinks,
+ ev_sidebar_links,
+ GTK_TYPE_VBOX,
+ 0,
+ G_IMPLEMENT_INTERFACE (EV_TYPE_SIDEBAR_PAGE,
+ ev_sidebar_links_page_iface_init))
+
#define EV_SIDEBAR_LINKS_GET_PRIVATE(object) \
(G_TYPE_INSTANCE_GET_PRIVATE ((object), EV_TYPE_SIDEBAR_LINKS, EvSidebarLinksPrivate))
@@ -313,7 +327,7 @@ ev_sidebar_links_new (void)
return ev_sidebar_links;
}
-void
+static void
ev_sidebar_links_clear_document (EvSidebarLinks *sidebar_links)
{
EvSidebarLinksPrivate *priv;
@@ -428,14 +442,17 @@ job_finished_cb (EvJobLinks *job,
}
-void
-ev_sidebar_links_set_document (EvSidebarLinks *sidebar_links,
+static void
+ev_sidebar_links_set_document (EvSidebarPage *sidebar_page,
EvDocument *document)
{
+ EvSidebarLinks *sidebar_links;
EvSidebarLinksPrivate *priv;
- g_return_if_fail (EV_IS_SIDEBAR_LINKS (sidebar_links));
+ g_return_if_fail (EV_IS_SIDEBAR_PAGE (sidebar_page));
g_return_if_fail (EV_IS_DOCUMENT (document));
+
+ sidebar_links = EV_SIDEBAR_LINKS (sidebar_page);
priv = sidebar_links->priv;
@@ -454,3 +471,25 @@ ev_sidebar_links_set_document (EvSidebarLinks *sidebar_links,
}
+static gboolean
+ev_sidebar_links_support_document (EvSidebarPage *sidebar_page,
+ EvDocument *document)
+{
+ return (EV_IS_DOCUMENT_LINKS (document) &&
+ ev_document_links_has_document_links (EV_DOCUMENT_LINKS (document)));
+}
+
+static const gchar*
+ev_sidebar_links_get_label (EvSidebarPage *sidebar_page)
+{
+ return _("Index");
+}
+
+static void
+ev_sidebar_links_page_iface_init (EvSidebarPageIface *iface)
+{
+ iface->support_document = ev_sidebar_links_support_document;
+ iface->set_document = ev_sidebar_links_set_document;
+ iface->get_label = ev_sidebar_links_get_label;
+}
+