void glide_undo_manager_end_actor_action (GlideUndoManager *manager, GlideActor *a) { GlideUndoInfo *info; GlideUndoActorData *data; JsonNode *new_node; if (manager->priv->recorded_actor != (ClutterActor *)a) { g_warning ("Error, mismatched undo manager start/end actor actions."); return; } new_node = glide_actor_serialize (a); info = g_malloc (sizeof (GlideUndoInfo)); data = g_malloc (sizeof (GlideUndoActorData)); info->undo_callback = glide_undo_actor_action_undo_callback; info->redo_callback = glide_undo_actor_action_redo_callback; info->free_callback = glide_undo_actor_info_free_callback; info->label = manager->priv->recorded_label; info->user_data = data; data->actor = (ClutterActor *)g_object_ref (G_OBJECT (a)); data->old_state = manager->priv->recorded_state; data->new_state = json_node_get_object (new_node); glide_undo_manager_append_info (manager, info); }
static void glide_window_set_copy_buffer (GlideWindow *w, GlideActor *copy) { w->priv->keep_buffer = TRUE; if (w->priv->copy_buffer) json_node_free (w->priv->copy_buffer); w->priv->copy_buffer = glide_actor_serialize (copy); }
void glide_undo_manager_start_actor_action (GlideUndoManager *manager, GlideActor *a, const gchar *label) { JsonNode *anode; manager->priv->recorded_actor = (ClutterActor *)a; anode = glide_actor_serialize (a); manager->priv->recorded_state = json_node_get_object (anode); manager->priv->recorded_label = g_strdup (label); }
static void glide_document_json_obj_set_slides (GlideDocument *document, JsonObject *obj) { JsonNode *node = json_node_new (JSON_NODE_ARRAY); JsonArray *array = json_array_new (); GList *s; for (s = document->priv->slides; s; s = s->next) { JsonNode *n; GlideSlide *slide = (GlideSlide *)(s->data); n = glide_actor_serialize (GLIDE_ACTOR (slide)); json_array_add_element (array, n); } json_node_take_array (node, array); json_object_set_member (obj, "slides", node); }