Improved docs for AtkAction, specifically get_name and get_keybindings.
[platform/upstream/atk.git] / atk / atkaction.c
index de941f3..f47687c 100755 (executable)
@@ -20,7 +20,7 @@
 #include "atkaction.h"
 
 GType
-atk_action_get_type ()
+atk_action_get_type (void)
 {
   static GType type = 0;
 
@@ -28,8 +28,8 @@ atk_action_get_type ()
     GTypeInfo tinfo =
     {
       sizeof (AtkActionIface),
-      NULL,
-      NULL,
+      (GBaseInitFunc) NULL,
+      (GBaseFinalizeFunc) NULL,
 
     };
 
@@ -42,23 +42,27 @@ atk_action_get_type ()
 /**
  * atk_action_do_action:
  * @action: a #GObject instance that implements AtkActionIface
- * @i: the action to be performed 
+ * @i: the action index corresponding to the action to be performed 
+ *
+ * Perform the specified action on the object.
+ *
+ * Returns: %TRUE if success, %FALSE otherwise
  *
- * Perform the specified action on the object
  **/
-void
+gboolean
 atk_action_do_action (AtkAction *obj,
                       gint      i)
 {
   AtkActionIface *iface;
 
-  g_return_if_fail (obj != NULL);
-  g_return_if_fail (ATK_IS_ACTION (obj));
+  g_return_val_if_fail (ATK_IS_ACTION (obj), FALSE);
 
   iface = ATK_ACTION_GET_IFACE (obj);
 
   if (iface->do_action)
-    (iface->do_action) (obj, i);
+    return (iface->do_action) (obj, i);
+  else
+    return FALSE;
 }
 
 /**
@@ -69,15 +73,14 @@ atk_action_do_action (AtkAction *obj,
  * If there are more than one, the first one is considered the
  * "default" action of the object.
  *
- * Returns: a the number of actions , or 0
- * if @action does not implement this interface.
+ * Returns: a the number of actions, or 0 if @action does not
+ * implement this interface.
  **/
 gint
 atk_action_get_n_actions  (AtkAction *obj)
 {
   AtkActionIface *iface;
 
-  g_return_val_if_fail (obj != NULL, 0);
   g_return_val_if_fail (ATK_IS_ACTION (obj), 0);
 
   iface = ATK_ACTION_GET_IFACE (obj);
@@ -91,9 +94,9 @@ atk_action_get_n_actions  (AtkAction *obj)
 /**
  * atk_action_get_description:
  * @action: a #GObject instance that implements AtkActionIface
- * @i: a %gint indicating the action
+ * @i: the action index corresponding to the action to be performed 
  *
- * Returns a description of the specified action of the object
+ * Returns a description of the specified action of the object.
  *
  * Returns a description string, or %NULL
  * if @action does not implement this interface.
@@ -104,7 +107,6 @@ atk_action_get_description (AtkAction *obj,
 {
   AtkActionIface *iface;
 
-  g_return_val_if_fail (obj != NULL, NULL);
   g_return_val_if_fail (ATK_IS_ACTION (obj), NULL);
 
   iface = ATK_ACTION_GET_IFACE (obj);
@@ -116,13 +118,88 @@ atk_action_get_description (AtkAction *obj,
 }
 
 /**
+ * atk_action_get_name:
+ * @action: a #GObject instance that implements AtkActionIface
+ * @i: the action index corresponding to the action to be performed 
+ *
+ * Returns a non-localized string naming the specified action of the 
+ * object. This name is generally not descriptive of the end result 
+ * of the action, but instead names the 'interaction type' which the 
+ * object supports. By convention, the above strings should be used to 
+ * represent the actions which correspond to the common point-and-click 
+ * interaction techniques of the same name: i.e. 
+ * "click", "press", "release", "drag", "drop", "popup", etc.
+ * The "popup" action should be used to pop up a context menu for the 
+ * object, if one exists.
+ *
+ * For technical reasons, some toolkits cannot guarantee that the 
+ * reported action is actually 'bound' to a nontrivial user event;
+ * i.e. the result of some actions via atk_action_do_action() may be
+ * NIL.
+ *
+ * Returns a name string, or %NULL
+ * if @action does not implement this interface.
+ **/
+G_CONST_RETURN gchar*
+atk_action_get_name (AtkAction *obj,
+                     gint      i)
+{
+  AtkActionIface *iface;
+
+  g_return_val_if_fail (ATK_IS_ACTION (obj), NULL);
+
+  iface = ATK_ACTION_GET_IFACE (obj);
+
+  if (iface->get_name)
+    return (iface->get_name) (obj, i);
+  else
+    return NULL;
+}
+
+/**
+ * atk_action_get_localized_name:
+ * @action: a #GObject instance that implements AtkActionIface
+ * @i: the action index corresponding to the action to be performed 
+ *
+ * Returns the localized name of the specified action of the object.
+ *
+ * Returns a name string, or %NULL
+ * if @action does not implement this interface.
+ **/
+G_CONST_RETURN gchar*
+atk_action_get_localized_name (AtkAction *obj,
+                               gint      i)
+{
+  AtkActionIface *iface;
+
+  g_return_val_if_fail (ATK_IS_ACTION (obj), NULL);
+
+  iface = ATK_ACTION_GET_IFACE (obj);
+
+  if (iface->get_localized_name)
+    return (iface->get_localized_name) (obj, i);
+  else
+    return NULL;
+}
+
+/**
  * atk_action_get_keybinding:
  * @action: a #GObject instance that implements AtkActionIface
- * @i: a %gint indicating the action
+ * @i: the action index corresponding to the action to be performed 
  *
  * Returns a keybinding associated with this action, if one exists.
+ * The returned string is in the format "<a>;<b>;<c>"
+ * (i.e. semicolon-delimited), where <a> is the keybinding which
+ * activates the object if it is presently enabled onscreen, 
+ * <b> corresponds to the keybinding or sequence of keys
+ * which invokes the action even if the relevant element is not
+ * currently posted on screen (for instance, for a menu item it
+ * posts the parent menus before invoking).  The last token in the
+ * above string, if non-empty, represents a keyboard shortcut which
+ * invokes the same action without posting the component or its
+ * enclosing menus or dialogs. 
  *
- * Returns a string representing the keybinding, or %NULL
+ * Returns a string representing the available keybindings, or %NULL
  * if there is no keybinding for this action.
  *
  **/
@@ -132,7 +209,6 @@ atk_action_get_keybinding (AtkAction *obj,
 {
   AtkActionIface *iface;
 
-  g_return_val_if_fail (obj != NULL, NULL);
   g_return_val_if_fail (ATK_IS_ACTION (obj), NULL);
 
   iface = ATK_ACTION_GET_IFACE (obj);
@@ -142,3 +218,30 @@ atk_action_get_keybinding (AtkAction *obj,
   else
     return NULL;
 }
+
+/**
+ * atk_action_set_description:
+ * @action: a #GObject instance that implements AtkActionIface
+ * @i: the action index corresponding to the action to be performed 
+ * @desc: the description to be assigned to this action
+ *
+ * Sets a description of the specified action of the object.
+ *
+ * Returns: a gboolean representing if the description was successfully set;
+ **/
+gboolean
+atk_action_set_description (AtkAction   *obj,
+                            gint        i,
+                            const gchar *desc)
+{
+  AtkActionIface *iface;
+
+  g_return_val_if_fail (ATK_IS_ACTION (obj), FALSE);
+
+  iface = ATK_ACTION_GET_IFACE (obj);
+
+  if (iface->set_description)
+    return (iface->set_description) (obj, i, desc);
+  else
+    return FALSE;
+}