Hi,

the following patch add a wrapper for JavascriptActions to the glib
bindings. Comments and review welcome.


Greets

José
From f4b0e8d9f038e3ef4033e2c9af45bb48adf0c224 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Aliste?= <[email protected]>
Date: Tue, 29 Mar 2011 04:56:37 -0400
Subject: [PATCH] glib: add PopplerActionJavaScript wrapper.

---
 glib/poppler-action.cc |   22 ++++++++++++++++++++++
 glib/poppler-action.h  |   14 +++++++++++++-
 2 files changed, 35 insertions(+), 1 deletions(-)

diff --git a/glib/poppler-action.cc b/glib/poppler-action.cc
index ca88ca4..8b95543 100644
--- a/glib/poppler-action.cc
+++ b/glib/poppler-action.cc
@@ -140,6 +140,10 @@ poppler_action_free (PopplerAction *action)
 			g_list_free (action->ocg_state.state_list);
 		}
 		break;
+        case POPPLER_ACTION_JAVASCRIPT:
+		if (action->javascript.script)
+			g_free (action->javascript.script);
+		break;
 	default:
 		break;
 	}
@@ -514,6 +518,20 @@ build_movie (PopplerDocument *document,
 }
 
 static void
+build_javascript (PopplerAction *action,
+		  LinkJavaScript *link)
+{
+	action->javascript.script = NULL;
+	if (link) {
+		GooString *script;
+
+		script = link->getScript();
+		if (script)
+			action->javascript.script =  g_strdup (script->getCString ());
+	}
+}
+
+static void
 build_rendition (PopplerAction *action,
 		 LinkRendition *link)
 {
@@ -650,6 +668,10 @@ _poppler_action_new (PopplerDocument *document,
 		action->type = POPPLER_ACTION_OCG_STATE;
 		build_ocg_state (document, action, dynamic_cast<LinkOCGState*> (link));
 		break;
+	case actionJavaScript:
+		action->type = POPPLER_ACTION_JAVASCRIPT;
+		build_javascript (action, dynamic_cast<LinkJavaScript*> (link));
+		break;
 	case actionUnknown:
 	default:
 		action->type = POPPLER_ACTION_UNKNOWN;
diff --git a/glib/poppler-action.h b/glib/poppler-action.h
index 6bb87ba..b3df50b 100644
--- a/glib/poppler-action.h
+++ b/glib/poppler-action.h
@@ -36,6 +36,7 @@ G_BEGIN_DECLS
  * @POPPLER_ACTION_MOVIE: play movies. Since 0.14
  * @POPPLER_ACTION_RENDITION: play multimedia content. Since 0.14
  * @POPPLER_ACTION_OCG_STATE: state of layer. Since 0.14
+ * @POPPLER_ACTION_JAVASCRIPT: Javascript. Since 0.18
  *
  * Action types
  */
@@ -50,7 +51,8 @@ typedef enum
 	POPPLER_ACTION_NAMED,		/* named action*/
 	POPPLER_ACTION_MOVIE,		/* movie action */
 	POPPLER_ACTION_RENDITION,       /* rendition action */
-	POPPLER_ACTION_OCG_STATE        /* Set-OCG-State action */
+	POPPLER_ACTION_OCG_STATE,       /* Set-OCG-State action */
+	POPPLER_ACTION_JAVASCRIPT	/* Javascript action */
 } PopplerActionType;
 
 /**
@@ -145,6 +147,7 @@ typedef struct _PopplerActionNamed      PopplerActionNamed;
 typedef struct _PopplerActionMovie      PopplerActionMovie;
 typedef struct _PopplerActionRendition  PopplerActionRendition;
 typedef struct _PopplerActionOCGState   PopplerActionOCGState;
+typedef struct _PopplerActionJavaScript PopplerActionJavaScript;
 
 /**
  * PopplerDest:
@@ -265,6 +268,14 @@ struct _PopplerActionOCGState
 	GList            *state_list;
 };
 
+struct _PopplerActionJavaScript
+{
+	PopplerActionType  type;
+	gchar 		  *title;
+
+	gchar		  *script;
+};
+
 /**
  * PopplerAction:
  *
@@ -282,6 +293,7 @@ union _PopplerAction
 	PopplerActionMovie movie;
 	PopplerActionRendition rendition;
 	PopplerActionOCGState ocg_state;
+	PopplerActionJavaScript javascript;
 };
 
 #define POPPLER_TYPE_ACTION             (poppler_action_get_type ())
-- 
1.7.3.5

_______________________________________________
poppler mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/poppler

Reply via email to