+static const gchar *
+__get_name (GAction *act)
+{
+ return G_OBJECT_TYPE_NAME (act);
+}
+
+static const GVariantType *
+__get_state_type (GAction *act)
+{
+ return NULL;
+}
+
+
+static GVariant *
+__get_state (GAction *act)
+{
+ return NULL;
+}
+
+
+static const GVariantType *
+__get_parameter_type (GAction *act)
+{
+ return PSPPIRE_DIALOG_ACTION (act)->parameter_type;
+}
+
+static gboolean
+__get_enabled (GAction *act)
+{
+ return TRUE;
+}
+
+static void psppire_dialog_action_activate (PsppireDialogAction *act, GVariant *parameter);
+
+void
+psppire_dialog_action_activate_null (PsppireDialogAction *act)
+{
+ psppire_dialog_action_activate (act, NULL);
+}
+
+
+static void
+__activate (GAction *action, GVariant *parameter)
+{
+ psppire_dialog_action_activate (PSPPIRE_DIALOG_ACTION (action), parameter);
+}
+
+
+static void
+action_model_init (GActionInterface *iface)
+{
+ iface->get_name = __get_name;
+ iface->get_state_type = __get_state_type;
+ iface->get_state = __get_state;
+ iface->get_parameter_type = __get_parameter_type;
+ iface->get_enabled = __get_enabled;
+ iface->activate = __activate;
+}
+
+G_DEFINE_ABSTRACT_TYPE_WITH_CODE (PsppireDialogAction, \
+ psppire_dialog_action, \
+ G_TYPE_OBJECT, \
+ G_IMPLEMENT_INTERFACE (G_TYPE_ACTION, \
+ action_model_init))