glib/demo/forms.c | 58 ++++++++++++++++++++++++++++++++++++++------- glib/poppler-form-field.cc | 57 ++++++++++++++++++++++++++++++++++++++++++++ glib/poppler-form-field.h | 24 ++++++++++++++++++ glib/poppler-private.h | 4 +++ 4 files changed, 134 insertions(+), 9 deletions(-)
New commits: commit b8cae8886a2894502dc12ceba63f2aab62ab3992 Author: Albert Astals Cid <[email protected]> Date: Tue Nov 6 22:11:28 2018 +0000 Update since to 0.72 diff --git a/glib/poppler-form-field.cc b/glib/poppler-form-field.cc index 1881ef6e..7bb9c692 100644 --- a/glib/poppler-form-field.cc +++ b/glib/poppler-form-field.cc @@ -208,7 +208,7 @@ poppler_form_field_get_action (PopplerFormField *field) * object is owned by @field and should not be freed. * * - * Since: 0.71 + * Since: 0.72 */ PopplerAction * poppler_form_field_get_additional_action (PopplerFormField *field, diff --git a/glib/poppler-form-field.h b/glib/poppler-form-field.h index 7c7f73cb..541bc44d 100644 --- a/glib/poppler-form-field.h +++ b/glib/poppler-form-field.h @@ -69,7 +69,7 @@ typedef enum * * Form field additional action types to be passed to @poppler_form_field_get_additional_action * - * Since: 0.71 + * Since: 0.72 */ typedef enum { commit d09f763b3ea5581f7819b46b659f3d9b1b5fd78c Author: Elliott Sales de Andrade <[email protected]> Date: Thu Nov 7 00:51:11 2013 -0500 glib: Support getting form widget additional actions. diff --git a/glib/demo/forms.c b/glib/demo/forms.c index 11c64894..98c28f0e 100644 --- a/glib/demo/forms.c +++ b/glib/demo/forms.c @@ -182,6 +182,46 @@ pgd_form_field_view_set_field (GtkWidget *field_view, gtk_widget_show (action_view); } + action = poppler_form_field_get_additional_action (field, POPPLER_ADDITIONAL_ACTION_FIELD_MODIFIED); + 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_GRID (table), "<b>Field Modified Action:</b>", action_view, &row); + gtk_widget_show (action_view); + } + + action = poppler_form_field_get_additional_action (field, POPPLER_ADDITIONAL_ACTION_FORMAT_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_GRID (table), "<b>Field Format Action:</b>", action_view, &row); + gtk_widget_show (action_view); + } + + action = poppler_form_field_get_additional_action (field, POPPLER_ADDITIONAL_ACTION_VALIDATE_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_GRID (table), "<b>Validate Field Action:</b>", action_view, &row); + gtk_widget_show (action_view); + } + + action = poppler_form_field_get_additional_action (field, POPPLER_ADDITIONAL_ACTION_CALCULATE_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_GRID (table), "<b>Calculate Field 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), diff --git a/glib/poppler-form-field.cc b/glib/poppler-form-field.cc index 2e1244b0..1881ef6e 100644 --- a/glib/poppler-form-field.cc +++ b/glib/poppler-form-field.cc @@ -196,6 +196,63 @@ poppler_form_field_get_action (PopplerFormField *field) return field->action; } +/** + * poppler_form_field_get_additional_action: + * @field: a #PopplerFormField + * @type: the type of additional action + * + * Retrieves the action (#PopplerAction) that shall be performed when + * an additional action is triggered on @field, or %NULL. + * + * Return value: (transfer none): the action to perform. The returned + * object is owned by @field and should not be freed. + * + * + * Since: 0.71 + */ +PopplerAction * +poppler_form_field_get_additional_action (PopplerFormField *field, + PopplerAdditionalActionType type) +{ + Annot::FormAdditionalActionsType form_action; + LinkAction *link_action; + PopplerAction **action; + + switch (type) + { + case POPPLER_ADDITIONAL_ACTION_FIELD_MODIFIED: + form_action = Annot::actionFieldModified; + action = &field->field_modified_action; + break; + case POPPLER_ADDITIONAL_ACTION_FORMAT_FIELD: + form_action = Annot::actionFormatField; + action = &field->format_field_action; + break; + case POPPLER_ADDITIONAL_ACTION_VALIDATE_FIELD: + form_action = Annot::actionValidateField; + action = &field->validate_field_action; + break; + case POPPLER_ADDITIONAL_ACTION_CALCULATE_FIELD: + form_action = Annot::actionCalculateField; + action = &field->calculate_field_action; + break; + default: + g_return_val_if_reached (nullptr); + return nullptr; + } + + if (*action) + return *action; + + link_action = field->widget->getAdditionalAction (form_action); + if (!link_action) + return NULL; + + *action = _poppler_action_new (NULL, link_action, NULL); + + return *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 94774860..7c7f73cb 100644 --- a/glib/poppler-form-field.h +++ b/glib/poppler-form-field.h @@ -58,6 +58,27 @@ typedef enum POPPLER_FORM_CHOICE_LIST } PopplerFormChoiceType; +/** + * PopplerAdditionalActionType: + * @POPPLER_ADDITIONAL_ACTION_FIELD_MODIFIED: The action to be performed when the user modifies the field. + * @POPPLER_ADDITIONAL_ACTION_FORMAT_FIELD: The action to be performed before the field is formatted to + * display its value. + * @POPPLER_ADDITIONAL_ACTION_VALIDATE_FIELD: The action to be performed when the field value changes. + * @POPPLER_ADDITIONAL_ACTION_CALCULATE_FIELD: The action to be performed when the field needs to be + * recalculated. + * + * Form field additional action types to be passed to @poppler_form_field_get_additional_action + * + * Since: 0.71 + */ +typedef enum +{ + POPPLER_ADDITIONAL_ACTION_FIELD_MODIFIED, + POPPLER_ADDITIONAL_ACTION_FORMAT_FIELD, + POPPLER_ADDITIONAL_ACTION_VALIDATE_FIELD, + POPPLER_ADDITIONAL_ACTION_CALCULATE_FIELD +} PopplerAdditionalActionType; + POPPLER_PUBLIC GType poppler_form_field_get_type (void) G_GNUC_CONST; @@ -77,6 +98,9 @@ POPPLER_PUBLIC gchar *poppler_form_field_get_name (PopplerFormField *field); POPPLER_PUBLIC PopplerAction *poppler_form_field_get_action (PopplerFormField *field); +POPPLER_PUBLIC +PopplerAction *poppler_form_field_get_additional_action (PopplerFormField *field, + PopplerAdditionalActionType type); /* Button Field */ POPPLER_PUBLIC diff --git a/glib/poppler-private.h b/glib/poppler-private.h index 5a4d131a..3e6b4b17 100644 --- a/glib/poppler-private.h +++ b/glib/poppler-private.h @@ -71,6 +71,10 @@ struct _PopplerFormField PopplerDocument *document; FormWidget *widget; PopplerAction *action; + PopplerAction *field_modified_action; + PopplerAction *format_field_action; + PopplerAction *validate_field_action; + PopplerAction *calculate_field_action; }; struct _PopplerAnnot commit ee6166ab599c3d5f694191707c366653afa7b0d3 Author: Elliott Sales de Andrade <[email protected]> Date: Thu Nov 7 00:50:38 2013 -0500 glib-demo: Fix indent for actions code. diff --git a/glib/demo/forms.c b/glib/demo/forms.c index 8fa8785e..11c64894 100644 --- a/glib/demo/forms.c +++ b/glib/demo/forms.c @@ -130,7 +130,7 @@ pgd_form_field_view_set_field (GtkWidget *field_view, PopplerFormField *field) { GtkWidget *table; - PopplerAction *action; + PopplerAction *action; GEnumValue *enum_value; gchar *text; gint row = 0; @@ -172,15 +172,15 @@ 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 = 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_GRID (table), "<b>Action:</b>", action_view, &row); - gtk_widget_show (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_GRID (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: _______________________________________________ poppler mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/poppler
