📄 atkobject.c
字号:
case PROP_TABLE_SUMMARY: if (ATK_IS_TABLE (accessible)) atk_table_set_summary (ATK_TABLE (accessible), g_value_get_object (value)); break; case PROP_TABLE_CAPTION_OBJECT: if (ATK_IS_TABLE (accessible)) atk_table_set_caption (ATK_TABLE (accessible), g_value_get_object (value)); break; default: break; }}static voidatk_object_real_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec){ AtkObject *accessible; accessible = ATK_OBJECT (object); switch (prop_id) { case PROP_NAME: g_value_set_string (value, atk_object_get_name (accessible)); break; case PROP_DESCRIPTION: g_value_set_string (value, atk_object_get_description (accessible)); break; case PROP_ROLE: g_value_set_int (value, atk_object_get_role (accessible)); break; case PROP_LAYER: if (ATK_IS_COMPONENT (accessible)) g_value_set_int (value, atk_component_get_layer (ATK_COMPONENT (accessible))); break; case PROP_MDI_ZORDER: if (ATK_IS_COMPONENT (accessible)) g_value_set_int (value, atk_component_get_mdi_zorder (ATK_COMPONENT (accessible))); break; case PROP_PARENT: g_value_set_object (value, atk_object_get_parent (accessible)); break; case PROP_VALUE: if (ATK_IS_VALUE (accessible)) atk_value_get_current_value (ATK_VALUE (accessible), value); break; case PROP_TABLE_SUMMARY: if (ATK_IS_TABLE (accessible)) g_value_set_object (value, atk_table_get_summary (ATK_TABLE (accessible))); break; case PROP_TABLE_CAPTION_OBJECT: if (ATK_IS_TABLE (accessible)) g_value_set_object (value, atk_table_get_caption (ATK_TABLE (accessible))); break; case PROP_HYPERTEXT_NUM_LINKS: if (ATK_IS_HYPERTEXT (accessible)) g_value_set_int (value, atk_hypertext_get_n_links (ATK_HYPERTEXT (accessible))); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; }}static voidatk_object_finalize (GObject *object){ AtkObject *accessible; g_return_if_fail (ATK_IS_OBJECT (object)); accessible = ATK_OBJECT (object); g_free (accessible->name); g_free (accessible->description); /* * Free memory allocated for relation set if it have been allocated. */ if (accessible->relation_set) g_object_unref (accessible->relation_set); if (accessible->accessible_parent) g_object_unref (accessible->accessible_parent); G_OBJECT_CLASS (parent_class)->finalize (object);}static G_CONST_RETURN gchar*atk_object_real_get_name (AtkObject *object){ return object->name;}static G_CONST_RETURN gchar*atk_object_real_get_description (AtkObject *object){ return object->description;}static AtkObject*atk_object_real_get_parent (AtkObject *object){ return object->accessible_parent;}static AtkRoleatk_object_real_get_role (AtkObject *object){ return object->role;}static AtkLayeratk_object_real_get_layer (AtkObject *object){ return object->layer;}static AtkStateSet*atk_object_real_ref_state_set (AtkObject *accessible) { AtkStateSet *state_set; AtkObject *ap; AtkObject *focus_object; state_set = atk_state_set_new (); ap = atk_object_get_parent (accessible); if (ap) if (ATK_IS_SELECTION (ap)) { int i; atk_state_set_add_state (state_set, ATK_STATE_SELECTABLE); i = atk_object_get_index_in_parent (accessible); if (i >= 0) if (atk_selection_is_child_selected(ATK_SELECTION (ap), i)) atk_state_set_add_state (state_set, ATK_STATE_SELECTED); } focus_object = atk_get_focus_object (); if (focus_object == accessible) atk_state_set_add_state (state_set, ATK_STATE_FOCUSED); return state_set; }static voidatk_object_real_set_name (AtkObject *object, const gchar *name){ g_free (object->name); object->name = g_strdup (name);}static voidatk_object_real_set_description (AtkObject *object, const gchar *description){ g_free (object->description); object->description = g_strdup (description);}static voidatk_object_real_set_parent (AtkObject *object, AtkObject *parent){ if (object->accessible_parent) g_object_unref (object->accessible_parent); object->accessible_parent = parent; if (object->accessible_parent) g_object_ref (object->accessible_parent);}static voidatk_object_real_set_role (AtkObject *object, AtkRole role){ object->role = role;}static guintatk_object_real_connect_property_change_handler (AtkObject *obj, AtkPropertyChangeHandler *handler){ return g_signal_connect_closure_by_id (obj, atk_object_signals[PROPERTY_CHANGE], 0, g_cclosure_new ( G_CALLBACK (handler), NULL, (GClosureNotify) NULL), FALSE);}static voidatk_object_real_remove_property_change_handler (AtkObject *obj, guint handler_id){ g_signal_handler_disconnect (obj, handler_id);}/** * atk_object_initialize: * @accessible: a #AtkObject * @data: a #gpointer which identifies the object for which the AtkObject was created. * * This function is called when implementing subclasses of #AtkObject. * It does initialization required for the new object. It is intended * that this function should called only in the ..._new() functions used * to create an instance of a subclass of #AtkObject **/voidatk_object_initialize (AtkObject *accessible, gpointer data){ AtkObjectClass *klass; g_return_if_fail (ATK_IS_OBJECT (accessible)); klass = ATK_OBJECT_GET_CLASS (accessible); if (klass->initialize) klass->initialize (accessible, data);}/* * This function is a signal handler for notify signal which gets emitted * when a property changes value. * * It constructs an AtkPropertyValues structure and emits a "property_changed" * signal which causes the user specified AtkPropertyChangeHandler * to be called. */static voidatk_object_notify (GObject *obj, GParamSpec *pspec){ AtkPropertyValues values = { NULL, }; g_value_init (&values.new_value, pspec->value_type); g_object_get_property (obj, pspec->name, &values.new_value); values.property_name = pspec->name; g_signal_emit (obj, atk_object_signals[PROPERTY_CHANGE], g_quark_from_string (pspec->name), &values, NULL); g_value_unset (&values.new_value);}/** * atk_role_get_name: * @role: The #AtkRole whose name is required * * Gets the description string describing the #AtkRole @role. * * Returns: the string describing the AtkRole */G_CONST_RETURN gchar*atk_role_get_name (AtkRole role){ if (role >= 0 && role < ATK_ROLE_LAST_DEFINED) return roles + roles_offsets[role]; if (extra_roles) { gint n = role; n -= ATK_ROLE_LAST_DEFINED + 1; if (n >= 0 && n < extra_roles->len) return g_ptr_array_index (extra_roles, n); } return NULL;}/** * atk_role_get_localized_name: * @role: The #AtkRole whose localized name is required * * Gets the localized description string describing the #AtkRole @role. * * Returns: the localized string describing the AtkRole **/G_CONST_RETURN gchar*atk_role_get_localized_name (AtkRole role){ gettext_initialization (); if (role >= 0 && role < ATK_ROLE_LAST_DEFINED) return dgettext (GETTEXT_PACKAGE, roles + roles_offsets[role]); return atk_role_get_name (role);}/** * atk_role_for_name: * @name: a string which is the (non-localized) name of an ATK role. * * Get the #AtkRole type corresponding to a rolew name. * * Returns: the #AtkRole enumerated type corresponding to the specifiedname, * or #ATK_ROLE_INVALID if no matching role is found. **/AtkRoleatk_role_for_name (const gchar *name){ AtkRole role = ATK_ROLE_INVALID; gint i; g_return_val_if_fail (name, ATK_ROLE_INVALID); for (i = 0; i < G_N_ELEMENTS (roles_offsets); i++) { if (strcmp (name, roles + roles_offsets[i]) == 0) return (AtkRole) i; } if (extra_roles) { for (i = 0; i < extra_roles->len; i++) { gchar *extra_role = (gchar *)g_ptr_array_index (extra_roles, i); g_return_val_if_fail (extra_role, ATK_ROLE_INVALID); if (strcmp (name, extra_role) == 0) { role = i + 1 + ATK_ROLE_LAST_DEFINED; break; } } } return role;}/** * atk_object_add_relationship: * @object: The #AtkObject to which an AtkRelation is to be added. * @relationship: The #AtkRelationType of the relation * @target: The #AtkObject which is to be the target of the relation. * * Adds a relationship of the specified type with the specified target. * * Returns TRUE if the relationship is added. **/gbooleanatk_object_add_relationship (AtkObject *object, AtkRelationType relationship, AtkObject *target){ AtkObject *array[1]; AtkRelation *relation; g_return_val_if_fail (ATK_IS_OBJECT (object), FALSE); g_return_val_if_fail (ATK_IS_OBJECT (target), FALSE); array[0] = target; relation = atk_relation_new (array, 1, relationship); atk_relation_set_add (object->relation_set, relation); g_object_unref (relation); return TRUE;}/** * atk_object_remove_relationship: * @object: The #AtkObject from which an AtkRelation is to be removed. * @relationship: The #AtkRelationType of the relation * @target: The #AtkObject which is the target of the relation to be removed. * * Removes a relationship of the specified type with the specified target. * * Returns TRUE if the relationship is removed. **/gbooleanatk_object_remove_relationship (AtkObject *object, AtkRelationType relationship, AtkObject *target){ gboolean ret = FALSE; AtkRelation *relation; GPtrArray *array; g_return_val_if_fail (ATK_IS_OBJECT (object), FALSE); g_return_val_if_fail (ATK_IS_OBJECT (target), FALSE); relation = atk_relation_set_get_relation_by_type (object->relation_set, relationship); if (relation) { ret = atk_relation_remove_target (relation, target); array = atk_relation_get_target (relation); if (!array || array->len == 0) atk_relation_set_remove (object->relation_set, relation); } return ret;}static voidatk_object_real_initialize (AtkObject *accessible, gpointer data){ return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -