### Interface

# Gio Action

since: 2.0

#### Description

    interface Gio.Action : GObject.Object

`GAction` represents a single named action.

The main interface to an action is that it can be activated with `g_action_activate()`. This results in the ‘activate’ signal being emitted. An activation has a `GVariant` parameter (which may be `NULL`). The correct type for the parameter is determined by a static parameter type (which is given at construction time).

An action may optionally have a state, in which case the state may be set with `g_action_change_state()`. This call takes a `GVariant`. The correct type for the state is determined by a static state type (which is given at construction time).

The state may have a hint associated with it, specifying its valid range.

`GAction` is merely the interface to the concept of an action, as described above. Various implementations of actions exist, including `GSimpleAction`.

In all cases, the implementing class is responsible for storing the name of the action, the parameter type, the enabled state, the optional state type and the state and emitting the appropriate signals when these change. The implementor is responsible for filtering calls to `g_action_activate()` and `g_action_change_state()` for type safety and for the state being enabled.

Probably the only useful thing to do with a `GAction` is to put it inside of a `GSimpleActionGroup`.

Available since: 2.0

#### Prerequisite

In order to implement Action, your type must inherit from`GObject`.

#### Implementations

- GPropertyAction
- GSimpleAction

#### Functions

###### g_action_name_is_valid

Checks if `action_name` is valid.

since: 2.38

###### g_action_parse_detailed_name

Parses a detailed action name into its separate name and target components.

since: 2.38

###### g_action_print_detailed_name

Formats a detailed action name from `action_name` and `target_value`.

since: 2.38

#### Instance methods

###### g_action_activate

Activates the action.

since: 2.28

###### g_action_change_state

Request for the state of `action` to be changed to `value`.

since: 2.30

###### g_action_get_enabled

Checks if `action` is currently enabled.

since: 2.28

###### g_action_get_name

Queries the name of `action`.

since: 2.28

###### g_action_get_parameter_type

Queries the type of the parameter that must be given when activating `action`.

since: 2.28

###### g_action_get_state

Queries the current state of `action`.

since: 2.28

###### g_action_get_state_hint

Requests a hint about the valid range of values for the state of `action`.

since: 2.28

###### g_action_get_state_type

Queries the type of the state of `action`.

since: 2.28

#### Properties

###### Gio.Action:enabled

If `action` is currently enabled.

since: 2.28

###### Gio.Action:name

The name of the action. This is mostly meaningful for identifying the action once it has been added to a `GActionGroup`. It is immutable.

since: 2.28

###### Gio.Action:parameter-type

The type of the parameter that must be given when activating the action. This is immutable, and may be `NULL` if no parameter is needed when activating the action.

since: 2.28

###### Gio.Action:state

The state of the action, or `NULL` if the action is stateless.

since: 2.28

###### Gio.Action:state-type

The `GVariantType` of the state that the action has, or `NULL` if the action is stateless. This is immutable.

since: 2.28

#### Interface structure

    struct GioActionInterface {
      GTypeInterface g_iface;
      const gchar* (* get_name) (
        GAction* action
      );
      const GVariantType* (* get_parameter_type) (
        GAction* action
      );
      const GVariantType* (* get_state_type) (
        GAction* action
      );
      GVariant* (* get_state_hint) (
        GAction* action
      );
      gboolean (* get_enabled) (
        GAction* action
      );
      GVariant* (* get_state) (
        GAction* action
      );
      void (* change_state) (
        GAction* action,
        GVariant* value
      );
      void (* activate) (
        GAction* action,
        GVariant* parameter
      );

    }

The virtual function table for `GAction`.

###### Interface members

`g_iface` |
    GTypeInterface
| No description available.
`get_name` |
    const gchar* (* get_name) (
        GAction* action
      )
| The virtual function pointer for `g_action_get_name()`
`get_parameter_type` |
    const GVariantType* (* get_parameter_type) (
        GAction* action
      )
| The virtual function pointer for `g_action_get_parameter_type()`
`get_state_type` |
    const GVariantType* (* get_state_type) (
        GAction* action
      )
| The virtual function pointer for `g_action_get_state_type()`
`get_state_hint` |
    GVariant* (* get_state_hint) (
        GAction* action
      )
| The virtual function pointer for `g_action_get_state_hint()`
`get_enabled` |
    gboolean (* get_enabled) (
        GAction* action
      )
| The virtual function pointer for `g_action_get_enabled()`
`get_state` |
    GVariant* (* get_state) (
        GAction* action
      )
| The virtual function pointer for `g_action_get_state()`
`change_state` |
    void (* change_state) (
        GAction* action,
        GVariant* value
      )
| The virtual function pointer for `g_action_change_state()`
`activate` |
    void (* activate) (
        GAction* action,
        GVariant* parameter
      )
| The virtual function pointer for `g_action_activate()`. Note that `GAction` does not have an ‘activate’ signal but that implementations of it may have one.

#### Virtual methods

###### Gio.Action.activate

Activates the action.

since: 2.28

###### Gio.Action.change_state

Request for the state of `action` to be changed to `value`.

since: 2.30

###### Gio.Action.get_enabled

Checks if `action` is currently enabled.

since: 2.28

###### Gio.Action.get_name

Queries the name of `action`.

since: 2.28

###### Gio.Action.get_parameter_type

Queries the type of the parameter that must be given when activating `action`.

since: 2.28

###### Gio.Action.get_state

Queries the current state of `action`.

since: 2.28

###### Gio.Action.get_state_hint

Requests a hint about the valid range of values for the state of `action`.

since: 2.28

###### Gio.Action.get_state_type

Queries the type of the state of `action`.

since: 2.28