* 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"
int current_index;
};
+enum {
+ PROP_0,
+ PROP_INDEX
+};
+
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))
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
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));
}
}
void
-ev_history_add_page (EvHistory *history, int page)
+ev_history_add_page (EvHistory *history, int page, const gchar *label)
{
EvLink *link;
- char *title;
+ EvLinkDest *dest;
+ EvLinkAction *action;
+ gchar *title;
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_return_if_fail (EV_IS_HISTORY (history));
history->priv->current_index = index;
+
+ g_object_notify (G_OBJECT (history), "index");
}
EvHistory *