summaryrefslogtreecommitdiff
path: root/libdocument/ev-annotation.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdocument/ev-annotation.c')
-rw-r--r--libdocument/ev-annotation.c74
1 files changed, 68 insertions, 6 deletions
diff --git a/libdocument/ev-annotation.c b/libdocument/ev-annotation.c
index 55237cb9..d0e03ebb 100644
--- a/libdocument/ev-annotation.c
+++ b/libdocument/ev-annotation.c
@@ -68,6 +68,8 @@ struct _EvAnnotationAttachmentClass {
struct _EvAnnotationTextMarkup {
EvAnnotation parent;
+
+ EvAnnotationTextMarkupType type;
};
struct _EvAnnotationTextMarkupClass {
@@ -110,6 +112,11 @@ enum {
PROP_ATTACHMENT_ATTACHMENT = PROP_MARKUP_POPUP_IS_OPEN + 1
};
+/* EvAnnotationTextMarkup */
+enum {
+ PROP_TEXT_MARKUP_TYPE = PROP_MARKUP_POPUP_IS_OPEN + 1
+};
+
G_DEFINE_ABSTRACT_TYPE (EvAnnotation, ev_annotation, G_TYPE_OBJECT)
G_DEFINE_INTERFACE (EvAnnotationMarkup, ev_annotation_markup, EV_TYPE_ANNOTATION)
G_DEFINE_TYPE_WITH_CODE (EvAnnotationText, ev_annotation_text, EV_TYPE_ANNOTATION,
@@ -1237,6 +1244,51 @@ ev_annotation_attachment_set_attachment (EvAnnotationAttachment *annot,
static void
ev_annotation_text_markup_init (EvAnnotationTextMarkup *annot)
{
+ EV_ANNOTATION (annot)->type = EV_ANNOTATION_TYPE_TEXT_MARKUP;
+}
+
+static void
+ev_annotation_text_markup_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EvAnnotationTextMarkup *annot = EV_ANNOTATION_TEXT_MARKUP (object);
+
+ if (prop_id < PROP_TEXT_MARKUP_TYPE) {
+ ev_annotation_markup_set_property (object, prop_id, value, pspec);
+ return;
+ }
+
+ switch (prop_id) {
+ case PROP_TEXT_MARKUP_TYPE:
+ annot->type = (EvAnnotationTextMarkupType) g_value_get_enum (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+static void
+ev_annotation_text_markup_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EvAnnotationTextMarkup *annot = EV_ANNOTATION_TEXT_MARKUP (object);
+
+ if (prop_id < PROP_TEXT_MARKUP_TYPE) {
+ ev_annotation_markup_get_property (object, prop_id, value, pspec);
+ return;
+ }
+
+ switch (prop_id) {
+ case PROP_TEXT_MARKUP_TYPE:
+ g_value_set_enum (value, annot->type);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
}
static void
@@ -1245,6 +1297,18 @@ ev_annotation_text_markup_class_init (EvAnnotationTextMarkupClass *klass)
GObjectClass *g_object_class = G_OBJECT_CLASS (klass);
ev_annotation_markup_class_install_properties (g_object_class);
+
+ g_object_class->set_property = ev_annotation_text_markup_set_property;
+ g_object_class->get_property = ev_annotation_text_markup_get_property;
+
+ g_object_class_install_property (g_object_class,
+ PROP_TEXT_MARKUP_TYPE,
+ g_param_spec_enum ("type",
+ "Type",
+ "The text markup annotation type",
+ EV_TYPE_ANNOTATION_TEXT_MARKUP_TYPE,
+ EV_ANNOTATION_TEXT_MARKUP_HIGHLIGHT,
+ G_PARAM_READWRITE));
}
static void
@@ -1255,10 +1319,8 @@ ev_annotation_text_markup_markup_iface_init (EvAnnotationMarkupInterface *iface)
EvAnnotation *
ev_annotation_text_markup_highlight_new (EvPage *page)
{
- EvAnnotation *annot = EV_ANNOTATION (g_object_new (EV_TYPE_ANNOTATION_TEXT_MARKUP,
- "page", page,
- NULL));
- annot->type = EV_ANNOTATION_TYPE_HIGHLIGHT;
-
- return annot;
+ return EV_ANNOTATION (g_object_new (EV_TYPE_ANNOTATION_TEXT_MARKUP,
+ "page", page,
+ "type", EV_ANNOTATION_TEXT_MARKUP_HIGHLIGHT,
+ NULL));
}