glib/demo/forms.c | 21 ++++++++++++++++----- glib/poppler-form-field.cc | 34 ++++++++++++++++++++++++++++++++++ glib/poppler-form-field.h | 1 + glib/poppler-private.h | 1 + glib/reference/poppler-sections.txt | 1 + 5 files changed, 53 insertions(+), 5 deletions(-)
New commits: commit d94d5056d5570e2f5cb578736eba12317ea63fa4 Author: Carlos Garcia Campos <[email protected]> Date: Mon Mar 28 18:20:31 2011 +0200 glib-demo: show the activation action of form fields if there's one diff --git a/glib/demo/forms.c b/glib/demo/forms.c index fc9695d..3a74ef5 100644 --- a/glib/demo/forms.c +++ b/glib/demo/forms.c @@ -131,11 +131,12 @@ static void pgd_form_field_view_set_field (GtkWidget *field_view, PopplerFormField *field) { - GtkWidget *alignment; - GtkWidget *table; - GEnumValue *enum_value; - gchar *text; - gint row = 0; + GtkWidget *alignment; + GtkWidget *table; + PopplerAction *action; + GEnumValue *enum_value; + gchar *text; + gint row = 0; alignment = gtk_bin_get_child (GTK_BIN (field_view)); if (alignment) { @@ -170,6 +171,16 @@ pgd_form_field_view_set_field (GtkWidget *field_view, g_free (text); } + action = poppler_form_field_get_action (field); + if (action) { + GtkWidget *action_view; + + action_view = pgd_action_view_new (NULL); + pgd_action_view_set_action (action_view, action); + pgd_table_add_property_with_custom_widget (GTK_TABLE (table), "<b>Action:</b>", action_view, &row); + gtk_widget_show (action_view); + } + switch (poppler_form_field_get_field_type (field)) { case POPPLER_FORM_FIELD_BUTTON: enum_value = g_enum_get_value ((GEnumClass *) g_type_class_ref (POPPLER_TYPE_FORM_BUTTON_TYPE), commit ba0f36b76d0c2fd4ef39f3013fc125a53747c03f Author: Carlos Garcia Campos <[email protected]> Date: Mon Mar 28 18:17:52 2011 +0200 glib: Add poppler_form_field_get_action() Fixes bug #33174. diff --git a/glib/poppler-form-field.cc b/glib/poppler-form-field.cc index 55d3bb3..09f8be1 100644 --- a/glib/poppler-form-field.cc +++ b/glib/poppler-form-field.cc @@ -45,6 +45,11 @@ poppler_form_field_finalize (GObject *object) g_object_unref (field->document); field->document = NULL; } + if (field->action) + { + poppler_action_free (field->action); + field->action = NULL; + } field->widget = NULL; G_OBJECT_CLASS (poppler_form_field_parent_class)->finalize (object); @@ -159,6 +164,35 @@ poppler_form_field_is_read_only (PopplerFormField *field) return field->widget->isReadOnly (); } +/** + * poppler_form_field_get_action: + * @field: a #PopplerFormField + * + * Retrieves the action (#PopplerAction) that shall be + * performed when @field is activated, or %NULL + * + * Return value: (transfer none): the action to perform. The returned + * object is owned by @field and should not be freed + * + * Since: 0.18 + */ +PopplerAction * +poppler_form_field_get_action (PopplerFormField *field) +{ + LinkAction *action; + + if (field->action) + return field->action; + + action = field->widget->getActivationAction(); + if (!action) + return NULL; + + field->action = _poppler_action_new (NULL, action, NULL); + + return field->action; +} + /* Button Field */ /** * poppler_form_field_button_get_button_type diff --git a/glib/poppler-form-field.h b/glib/poppler-form-field.h index 8ae718e..898e0f6 100644 --- a/glib/poppler-form-field.h +++ b/glib/poppler-form-field.h @@ -67,6 +67,7 @@ gboolean poppler_form_field_is_read_only (PopplerFormFie gchar *poppler_form_field_get_partial_name (PopplerFormField *field); gchar *poppler_form_field_get_mapping_name (PopplerFormField *field); gchar *poppler_form_field_get_name (PopplerFormField *field); +PopplerAction *poppler_form_field_get_action (PopplerFormField *field); /* Button Field */ PopplerFormButtonType poppler_form_field_button_get_button_type (PopplerFormField *field); diff --git a/glib/poppler-private.h b/glib/poppler-private.h index 4e06a0e..2becc99 100644 --- a/glib/poppler-private.h +++ b/glib/poppler-private.h @@ -68,6 +68,7 @@ struct _PopplerFormField GObject parent_instance; PopplerDocument *document; FormWidget *widget; + PopplerAction *action; }; struct _PopplerAnnot diff --git a/glib/reference/poppler-sections.txt b/glib/reference/poppler-sections.txt index 525dcb5..417f03a 100644 --- a/glib/reference/poppler-sections.txt +++ b/glib/reference/poppler-sections.txt @@ -277,6 +277,7 @@ poppler_form_field_get_font_size poppler_form_field_get_partial_name poppler_form_field_get_mapping_name poppler_form_field_get_name +poppler_form_field_get_action poppler_form_field_button_get_button_type poppler_form_field_button_get_state poppler_form_field_button_set_state _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
