Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/libmisc
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2009-08-19 13:29:40 (GMT)
committer Carlos Garcia Campos <carlosgc@gnome.org>2009-09-15 13:56:01 (GMT)
commitc4b192c34c4758bd078d1a212d69c6ae5084d6c8 (patch)
treeb5195dc33598e02878de1d9fb46437720f1bfbf2 /libmisc
parent1133f4bb67226d6de5cfec6af6893e061878442b (diff)
Move part of the EvPageCache to EvDocument
The static data about the document is stored now in EvDocument class
Diffstat (limited to 'libmisc')
-rw-r--r--libmisc/ev-page-action-widget.c67
-rw-r--r--libmisc/ev-page-action-widget.h4
-rw-r--r--libmisc/ev-page-action.c58
3 files changed, 66 insertions, 63 deletions
diff --git a/libmisc/ev-page-action-widget.c b/libmisc/ev-page-action-widget.c
index c24c756..249775c 100644
--- a/libmisc/ev-page-action-widget.c
+++ b/libmisc/ev-page-action-widget.c
@@ -42,9 +42,11 @@ struct _EvPageActionWidget
{
GtkToolItem parent;
+ EvDocument *document;
+ EvPageCache *page_cache;
+
GtkWidget *entry;
GtkWidget *label;
- EvPageCache *page_cache;
guint signal_id;
GtkTreeModel *filter_model;
GtkTreeModel *model;
@@ -56,14 +58,13 @@ G_DEFINE_TYPE (EvPageActionWidget, ev_page_action_widget, GTK_TYPE_TOOL_ITEM)
static void
update_pages_label (EvPageActionWidget *action_widget,
- gint page,
- EvPageCache *page_cache)
+ gint page)
{
char *label_text;
gint n_pages;
- n_pages = page_cache ? ev_page_cache_get_n_pages (page_cache) : 0;
- if (page_cache && ev_page_cache_has_nonnumeric_page_labels (page_cache)) {
+ n_pages = ev_document_get_n_pages (action_widget->document);
+ if (ev_document_has_text_page_labels (action_widget->document)) {
label_text = g_strdup_printf (_("(%d of %d)"), page + 1, n_pages);
} else {
label_text = g_strdup_printf (_("of %d"), n_pages);
@@ -77,14 +78,14 @@ page_changed_cb (EvPageCache *page_cache,
gint page,
EvPageActionWidget *action_widget)
{
- if (page_cache && page >= 0) {
+ if (page >= 0) {
gchar *page_label;
gtk_entry_set_width_chars (GTK_ENTRY (action_widget->entry),
- CLAMP (ev_page_cache_get_max_label_chars (page_cache),
+ CLAMP (ev_document_get_max_label_len (action_widget->document),
6, 12));
- page_label = ev_page_cache_get_page_label (page_cache, page);
+ page_label = ev_document_get_page_label (action_widget->document, page);
gtk_entry_set_text (GTK_ENTRY (action_widget->entry), page_label);
gtk_editable_set_position (GTK_EDITABLE (action_widget->entry), -1);
g_free (page_label);
@@ -93,7 +94,7 @@ page_changed_cb (EvPageCache *page_cache,
gtk_entry_set_text (GTK_ENTRY (action_widget->entry), "");
}
- update_pages_label (action_widget, page, page_cache);
+ update_pages_label (action_widget, page);
}
static gboolean
@@ -104,7 +105,7 @@ page_scroll_cb (EvPageActionWidget *action_widget, GdkEventScroll *event)
pageno = ev_page_cache_get_current_page (page_cache);
if ((event->direction == GDK_SCROLL_DOWN) &&
- (pageno < ev_page_cache_get_n_pages (page_cache) - 1))
+ (pageno < ev_document_get_n_pages (action_widget->document) - 1))
pageno++;
if ((event->direction == GDK_SCROLL_UP) && (pageno > 0))
pageno--;
@@ -139,8 +140,8 @@ activate_cb (EvPageActionWidget *action_widget)
/* rest the entry to the current page if we were unable to
* change it */
page_cache = action_widget->page_cache;
- page_label = ev_page_cache_get_page_label (page_cache,
- ev_page_cache_get_current_page (page_cache));
+ page_label = ev_document_get_page_label (action_widget->document,
+ ev_page_cache_get_current_page (page_cache));
gtk_entry_set_text (GTK_ENTRY (action_widget->entry), page_label);
gtk_editable_set_position (GTK_EDITABLE (action_widget->entry), -1);
g_free (page_label);
@@ -159,6 +160,7 @@ ev_page_action_widget_init (EvPageActionWidget *action_widget)
gtk_widget_add_events (action_widget->entry,
GDK_BUTTON_MOTION_MASK);
gtk_entry_set_width_chars (GTK_ENTRY (action_widget->entry), 5);
+ gtk_entry_set_text (GTK_ENTRY (action_widget->entry), "");
g_signal_connect_swapped (action_widget->entry, "scroll-event",
G_CALLBACK (page_scroll_cb),
action_widget);
@@ -186,9 +188,16 @@ ev_page_action_widget_init (EvPageActionWidget *action_widget)
}
void
-ev_page_action_widget_set_page_cache (EvPageActionWidget *action_widget,
- EvPageCache *page_cache)
+ev_page_action_widget_set_document (EvPageActionWidget *action_widget,
+ EvDocument *document)
{
+ EvPageCache *page_cache = ev_page_cache_get (document);
+
+ g_object_ref (document);
+ if (action_widget->document)
+ g_object_unref (action_widget->document);
+ action_widget->document = document;
+
if (action_widget->page_cache != NULL) {
if (action_widget->signal_id > 0) {
g_signal_handler_disconnect (action_widget->page_cache,
@@ -200,21 +209,16 @@ ev_page_action_widget_set_page_cache (EvPageActionWidget *action_widget,
action_widget->page_cache = NULL;
}
- if (page_cache != NULL) {
- action_widget->page_cache = page_cache;
- g_object_add_weak_pointer (G_OBJECT (page_cache),
- (gpointer)&action_widget->page_cache);
- action_widget->signal_id =
- g_signal_connect_object (page_cache, "page-changed",
- G_CALLBACK (page_changed_cb),
- action_widget, 0);
- page_changed_cb (page_cache,
- ev_page_cache_get_current_page (page_cache),
- action_widget);
- } else {
- action_widget->signal_id = 0;
- page_changed_cb (NULL, 0, action_widget);
- }
+ action_widget->page_cache = page_cache;
+ g_object_add_weak_pointer (G_OBJECT (page_cache),
+ (gpointer)&action_widget->page_cache);
+ action_widget->signal_id =
+ g_signal_connect_object (page_cache, "page-changed",
+ G_CALLBACK (page_changed_cb),
+ action_widget, 0);
+ page_changed_cb (page_cache,
+ ev_page_cache_get_current_page (page_cache),
+ action_widget);
}
static void
@@ -233,6 +237,11 @@ ev_page_action_widget_finalize (GObject *object)
action_widget->page_cache = NULL;
}
+ if (action_widget->document) {
+ g_object_unref (action_widget->document);
+ action_widget->document = NULL;
+ }
+
G_OBJECT_CLASS (ev_page_action_widget_parent_class)->finalize (object);
}
diff --git a/libmisc/ev-page-action-widget.h b/libmisc/ev-page-action-widget.h
index 066cf5c..1c9ee35 100644
--- a/libmisc/ev-page-action-widget.h
+++ b/libmisc/ev-page-action-widget.h
@@ -41,6 +41,6 @@ GType ev_page_action_widget_get_type (void) G_GNUC_CONST;
void ev_page_action_widget_update_model (EvPageActionWidget *proxy,
GtkTreeModel *model);
-void ev_page_action_widget_set_page_cache (EvPageActionWidget *action_widget,
- EvPageCache *page_cache);
+void ev_page_action_widget_set_document (EvPageActionWidget *action_widget,
+ EvDocument *document);
void ev_page_action_widget_grab_focus (EvPageActionWidget *proxy);
diff --git a/libmisc/ev-page-action.c b/libmisc/ev-page-action.c
index ced1666..090712e 100644
--- a/libmisc/ev-page-action.c
+++ b/libmisc/ev-page-action.c
@@ -33,7 +33,7 @@
struct _EvPageActionPrivate
{
- EvPageCache *page_cache;
+ EvDocument *document;
GtkTreeModel *model;
};
@@ -55,7 +55,7 @@ G_DEFINE_TYPE (EvPageAction, ev_page_action, GTK_TYPE_ACTION)
enum {
PROP_0,
- PROP_PAGE_CACHE,
+ PROP_DOCUMENT,
PROP_MODEL,
};
@@ -70,9 +70,10 @@ create_tool_item (GtkAction *action)
}
static void
-update_page_cache (EvPageAction *page, GParamSpec *pspec, EvPageActionWidget *proxy)
+update_document (EvPageAction *page, GParamSpec *pspec, EvPageActionWidget *proxy)
{
- ev_page_action_widget_set_page_cache (proxy, page->priv->page_cache);
+ if (page->priv->document)
+ ev_page_action_widget_set_document (proxy, page->priv->document);
}
static void
@@ -97,14 +98,12 @@ static void
connect_proxy (GtkAction *action, GtkWidget *proxy)
{
if (GTK_IS_TOOL_ITEM (proxy)) {
- g_signal_connect_object (action, "notify::page-cache",
- G_CALLBACK (update_page_cache),
+ g_signal_connect_object (action, "notify::document",
+ G_CALLBACK (update_document),
proxy, 0);
g_signal_connect (proxy, "activate_link",
G_CALLBACK (activate_link_cb),
action);
- update_page_cache (EV_PAGE_ACTION (action), NULL,
- EV_PAGE_ACTION_WIDGET (proxy));
g_signal_connect_object (action, "notify::model",
G_CALLBACK (update_model),
proxy, 0);
@@ -118,9 +117,9 @@ ev_page_action_dispose (GObject *object)
{
EvPageAction *page = EV_PAGE_ACTION (object);
- if (page->priv->page_cache) {
- g_object_unref (page->priv->page_cache);
- page->priv->page_cache = NULL;
+ if (page->priv->document) {
+ g_object_unref (page->priv->document);
+ page->priv->document = NULL;
}
G_OBJECT_CLASS (ev_page_action_parent_class)->dispose (object);
@@ -133,18 +132,18 @@ ev_page_action_set_property (GObject *object,
GParamSpec *pspec)
{
EvPageAction *page;
- EvPageCache *page_cache;
+ EvDocument *document;
GtkTreeModel *model;
-
+
page = EV_PAGE_ACTION (object);
switch (prop_id)
{
- case PROP_PAGE_CACHE:
- page_cache = page->priv->page_cache;
- page->priv->page_cache = EV_PAGE_CACHE (g_value_dup_object (value));
- if (page_cache)
- g_object_unref (page_cache);
+ case PROP_DOCUMENT:
+ document = page->priv->document;
+ page->priv->document = EV_DOCUMENT (g_value_dup_object (value));
+ if (document)
+ g_object_unref (document);
break;
case PROP_MODEL:
model = page->priv->model;
@@ -165,13 +164,13 @@ ev_page_action_get_property (GObject *object,
GParamSpec *pspec)
{
EvPageAction *page;
-
+
page = EV_PAGE_ACTION (object);
switch (prop_id)
{
- case PROP_PAGE_CACHE:
- g_value_set_object (value, page->priv->page_cache);
+ case PROP_DOCUMENT:
+ g_value_set_object (value, page->priv->document);
break;
case PROP_MODEL:
g_value_set_object (value, page->priv->model);
@@ -185,13 +184,8 @@ ev_page_action_get_property (GObject *object,
void
ev_page_action_set_document (EvPageAction *page, EvDocument *document)
{
- EvPageCache *page_cache = NULL;
-
- if (document)
- page_cache = ev_page_cache_get (document);
-
g_object_set (page,
- "page-cache", page_cache,
+ "document", document,
"model", NULL,
NULL);
}
@@ -251,11 +245,11 @@ ev_page_action_class_init (EvPageActionClass *class)
G_TYPE_OBJECT);
g_object_class_install_property (object_class,
- PROP_PAGE_CACHE,
- g_param_spec_object ("page-cache",
- "Page Cache",
- "Current page cache",
- EV_TYPE_PAGE_CACHE,
+ PROP_DOCUMENT,
+ g_param_spec_object ("document",
+ "Document",
+ "Current document",
+ EV_TYPE_DOCUMENT,
G_PARAM_READWRITE));
g_object_class_install_property (object_class,