[evince] libdocument: Use a common annotation type for text markup annotations
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evince] libdocument: Use a common annotation type for text markup annotations
- Date: Sun, 16 Nov 2014 10:30:56 +0000 (UTC)
commit 28e04b43c190b71cb141978505a4d7e36ab17a12
Author: Carlos Garcia Campos <carlosgc gnome org>
Date: Sun Nov 16 11:29:32 2014 +0100
libdocument: Use a common annotation type for text markup annotations
And a type property for the different kinds of text markup annotations
libdocument/ev-annotation.c | 69 +++++++++++++++++++++++++++++++++++++++++-
libdocument/ev-annotation.h | 6 +++-
2 files changed, 72 insertions(+), 3 deletions(-)
---
diff --git a/libdocument/ev-annotation.c b/libdocument/ev-annotation.c
index b6fd112..a84b5a1 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 {
@@ -111,6 +113,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,
@@ -1247,8 +1254,53 @@ ev_annotation_attachment_set_attachment (EvAnnotationAttachment *annot,
/* EvAnnotationTextMarkup */
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
+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 = g_value_get_enum (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+static void
ev_annotation_text_markup_init (EvAnnotationTextMarkup *annot)
{
+ EV_ANNOTATION (annot)->type = EV_ANNOTATION_TYPE_TEXT_MARKUP;
}
static void
@@ -1257,6 +1309,20 @@ ev_annotation_text_markup_class_init (EvAnnotationTextMarkupClass *class)
GObjectClass *g_object_class = G_OBJECT_CLASS (class);
ev_annotation_markup_class_install_properties (g_object_class);
+
+ g_object_class->get_property = ev_annotation_text_markup_get_property;
+ g_object_class->set_property = ev_annotation_text_markup_set_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 |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS));
}
static void
@@ -1269,8 +1335,7 @@ ev_annotation_text_markup_highlight_new (EvPage *page)
{
EvAnnotation *annot = EV_ANNOTATION (g_object_new (EV_TYPE_ANNOTATION_TEXT_MARKUP,
"page", page,
+ "type", EV_ANNOTATION_TEXT_MARKUP_HIGHLIGHT,
NULL));
- annot->type = EV_ANNOTATION_TYPE_HIGHLIGHT;
-
return annot;
}
diff --git a/libdocument/ev-annotation.h b/libdocument/ev-annotation.h
index dc1023e..6501525 100644
--- a/libdocument/ev-annotation.h
+++ b/libdocument/ev-annotation.h
@@ -93,7 +93,7 @@ typedef enum {
EV_ANNOTATION_TYPE_UNKNOWN,
EV_ANNOTATION_TYPE_TEXT,
EV_ANNOTATION_TYPE_ATTACHMENT,
- EV_ANNOTATION_TYPE_HIGHLIGHT
+ EV_ANNOTATION_TYPE_TEXT_MARKUP
} EvAnnotationType;
typedef enum {
@@ -109,6 +109,10 @@ typedef enum {
EV_ANNOTATION_TEXT_ICON_UNKNOWN
} EvAnnotationTextIcon;
+typedef enum {
+ EV_ANNOTATION_TEXT_MARKUP_HIGHLIGHT
+} EvAnnotationTextMarkupType;
+
/* EvAnnotation */
GType ev_annotation_get_type (void) G_GNUC_CONST;
EvAnnotationType ev_annotation_get_annotation_type (EvAnnotation *annot);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]