static void ev_form_field_finalize (GObject *object) { EvFormField *field = EV_FORM_FIELD (object); g_object_unref (field->page); field->page = NULL; g_clear_object (&field->activation_link); (* G_OBJECT_CLASS (ev_form_field_parent_class)->finalize) (object); }
EvFormField * ev_form_field_signature_new (gint id) { EvFormField *field; g_return_val_if_fail (id >= 0, NULL); field = EV_FORM_FIELD (g_object_new (EV_TYPE_FORM_FIELD_SIGNATURE, NULL)); field->id = id; return field; }
static void ev_page_accessible_initialize_children (EvPageAccessible *self) { EvView *view; EvMappingList *images; EvMappingList *links; EvMappingList *fields; GList *children = NULL; GList *list; if (self->priv->children_initialized) return; view = ev_page_accessible_get_view (self); if (!ev_page_cache_is_page_cached (view->page_cache, self->priv->page)) return; self->priv->children_initialized = TRUE; links = ev_page_cache_get_link_mapping (view->page_cache, self->priv->page); images = ev_page_cache_get_image_mapping (view->page_cache, self->priv->page); fields = ev_page_cache_get_form_field_mapping (view->page_cache, self->priv->page); if (!links && !images && !fields) return; children = g_list_copy (ev_mapping_list_get_list (links)); children = g_list_concat (children, g_list_copy (ev_mapping_list_get_list (images))); children = g_list_concat (children, g_list_copy (ev_mapping_list_get_list (fields))); children = g_list_sort (children, (GCompareFunc) compare_mappings); self->priv->children = g_ptr_array_new_full (g_list_length (children), (GDestroyNotify) g_object_unref); for (list = children; list && list->data; list = list->next) { EvMapping *mapping = list->data; AtkObject *child = NULL; if (links && ev_mapping_list_find (links, mapping->data)) { EvLinkAccessible *link = ev_link_accessible_new (self, EV_LINK (mapping->data), &mapping->area); AtkHyperlink *atk_link = atk_hyperlink_impl_get_hyperlink (ATK_HYPERLINK_IMPL (link)); child = atk_hyperlink_get_object (atk_link, 0); } else if (images && ev_mapping_list_find (images, mapping->data)) child = ATK_OBJECT (ev_image_accessible_new (self, EV_IMAGE (mapping->data), &mapping->area)); else if (fields && ev_mapping_list_find (fields, mapping->data)) child = ATK_OBJECT (ev_form_field_accessible_new (self, EV_FORM_FIELD (mapping->data), &mapping->area)); if (child) g_ptr_array_add (self->priv->children, child); } g_list_free (children); }
EvFormField * ev_form_field_choice_new (gint id, EvFormFieldChoiceType type) { EvFormField *field; g_return_val_if_fail (id >= 0, NULL); g_return_val_if_fail (type >= EV_FORM_FIELD_CHOICE_COMBO && type <= EV_FORM_FIELD_CHOICE_LIST, NULL); field = EV_FORM_FIELD (g_object_new (EV_TYPE_FORM_FIELD_CHOICE, NULL)); field->id = id; EV_FORM_FIELD_CHOICE (field)->type = type; return field; }
EvFormField * ev_form_field_button_new (gint id, EvFormFieldButtonType type) { EvFormField *field; g_return_val_if_fail (id >= 0, NULL); g_return_val_if_fail (type >= EV_FORM_FIELD_BUTTON_PUSH && type <= EV_FORM_FIELD_BUTTON_RADIO, NULL); field = EV_FORM_FIELD (g_object_new (EV_TYPE_FORM_FIELD_BUTTON, NULL)); field->id = id; EV_FORM_FIELD_BUTTON (field)->type = type; return field; }
EvFormField * ev_form_field_text_new (gint id, EvFormFieldTextType type) { EvFormField *field; g_return_val_if_fail (id >= 0, NULL); g_return_val_if_fail (type >= EV_FORM_FIELD_TEXT_NORMAL && type <= EV_FORM_FIELD_TEXT_FILE_SELECT, NULL); field = EV_FORM_FIELD (g_object_new (EV_TYPE_FORM_FIELD_TEXT, NULL)); field->id = id; EV_FORM_FIELD_TEXT (field)->type = type; return field; }