]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-history.c
Move Evince icons under new apps directory.
[evince.git] / shell / ev-history.c
index a1e79543bb4e8a9bd35e97c4fefc495f77d1406d..d4aa8225a6320b8ab709a4edb31904f2b74455f5 100644 (file)
@@ -15,7 +15,6 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
- *  $Id$
  */
 
 #include "config.h"
  */
 
 #include "config.h"
@@ -30,11 +29,14 @@ struct _EvHistoryPrivate
        int current_index;
 };
 
        int current_index;
 };
 
+enum {
+       PROP_0,
+       PROP_INDEX
+};
+
 static void ev_history_init       (EvHistory *history);
 static void ev_history_class_init (EvHistoryClass *class);
 
 static void ev_history_init       (EvHistory *history);
 static void ev_history_class_init (EvHistoryClass *class);
 
-static GObjectClass *parent_class = NULL;
-
 G_DEFINE_TYPE (EvHistory, ev_history, G_TYPE_OBJECT)
 
 #define EV_HISTORY_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EV_TYPE_HISTORY, EvHistoryPrivate))
 G_DEFINE_TYPE (EvHistory, ev_history, G_TYPE_OBJECT)
 
 #define EV_HISTORY_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EV_TYPE_HISTORY, EvHistoryPrivate))
@@ -62,7 +64,47 @@ ev_history_finalize (GObject *object)
 
        free_links_list (history->priv->links);
 
 
        free_links_list (history->priv->links);
 
-       parent_class->finalize (object);
+       G_OBJECT_CLASS (ev_history_parent_class)->finalize (object);
+}
+
+static void
+ev_history_get_property (GObject *object, guint prop_id, GValue *value,
+                        GParamSpec *param_spec)
+{
+       EvHistory *self;
+
+       self = EV_HISTORY (object);
+
+       switch (prop_id) {
+       case PROP_INDEX:
+               g_value_set_int (value, self->priv->current_index);
+               break;
+       default:
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object,
+                                                  prop_id,
+                                                  param_spec);
+               break;
+       }
+}
+
+static void
+ev_history_set_property (GObject *object, guint prop_id, const GValue *value,
+                        GParamSpec *param_spec)
+{
+       EvHistory *self;
+       
+       self = EV_HISTORY (object);
+       
+       switch (prop_id) {
+       case PROP_INDEX:
+               ev_history_set_current_index (self, g_value_get_int (value));
+               break;
+       default:
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object,
+                                                  prop_id,
+                                                  param_spec);
+               break;
+       }
 }
 
 static void
 }
 
 static void
@@ -71,8 +113,18 @@ ev_history_class_init (EvHistoryClass *class)
        GObjectClass *object_class = G_OBJECT_CLASS (class);
 
        object_class->finalize = ev_history_finalize;
        GObjectClass *object_class = G_OBJECT_CLASS (class);
 
        object_class->finalize = ev_history_finalize;
-
-       parent_class = g_type_class_peek_parent (class);
+       object_class->set_property = ev_history_set_property;
+       object_class->get_property = ev_history_get_property;
+
+       g_object_class_install_property (object_class,
+                                        PROP_INDEX,
+                                        g_param_spec_int ("index",
+                                                          "Current Index",
+                                                          "The current index",
+                                                           -1,
+                                                           G_MAXINT,
+                                                           0,
+                                                           G_PARAM_READWRITE));
 
        g_type_class_add_private (object_class, sizeof (EvHistoryPrivate));
 }
 
        g_type_class_add_private (object_class, sizeof (EvHistoryPrivate));
 }
@@ -108,15 +160,20 @@ ev_history_add_link (EvHistory *history, EvLink *link)
 }
 
 void
 }
 
 void
-ev_history_add_page (EvHistory *history, int page)
+ev_history_add_page (EvHistory *history, int page, const gchar *label)
 {
        EvLink *link;
 {
        EvLink *link;
-       char *title;
+       EvLinkDest *dest;
+       EvLinkAction *action;
+       gchar *title;
 
        g_return_if_fail (EV_IS_HISTORY (history));
 
        g_return_if_fail (EV_IS_HISTORY (history));
+       
+       title = g_strdup_printf (_("Page: %s"), label);
 
 
-       title = g_strdup_printf (_("Page %d\n"), page);
-       link = ev_link_new_page (title, page);
+       dest = ev_link_dest_new_page (page);
+       action = ev_link_action_new_dest (dest);
+       link = ev_link_new (title, action);
        g_free (title);
 
        ev_history_add_link (history, link);
        g_free (title);
 
        ev_history_add_link (history, link);
@@ -156,6 +213,8 @@ ev_history_set_current_index (EvHistory *history, int index)
        g_return_if_fail (EV_IS_HISTORY (history));
 
        history->priv->current_index = index;
        g_return_if_fail (EV_IS_HISTORY (history));
 
        history->priv->current_index = index;
+
+       g_object_notify (G_OBJECT (history), "index");
 }
 
 EvHistory *
 }
 
 EvHistory *