void glide_window_open_document (GlideWindow *window, const gchar *filename) { JsonParser *p = json_parser_new (); GError *e = NULL; JsonNode *root, *slide_n; JsonArray *slide_array; JsonObject *root_obj; json_parser_load_from_file (p, filename, &e); if (e) { gchar *sec = g_strdup_printf ("Failed to load the document: %s", filename); g_warning("Error loading file: %s", e->message); glide_gtk_util_show_error_dialog ("Failed to load document", sec); g_error_free (e); g_free (sec); g_object_unref (G_OBJECT (p)); return; } root = json_parser_get_root (p); root_obj = json_node_get_object (root); glide_window_set_document (window, glide_document_new (glide_json_object_get_string (root_obj, "name"))); glide_document_set_path (window->priv->document, filename); slide_n = json_object_get_member (root_obj, "slides"); slide_array = json_node_get_array (slide_n); glide_stage_manager_load_slides (window->priv->manager, slide_array); g_object_unref (p); }
/** * glide_document_load_archive: * @document: A #GlideDocument * @filename: Path to a Glide archive file to open. * * Opens a Glide archive file, and returns a #JsonParser for * the contained document. * * Return value: A newly created #JsonParser for @filename. */ JsonParser * glide_document_load_archive (GlideDocument *document, const gchar *filename) { JsonParser *p; GError *e = NULL; gchar *json_file; g_return_val_if_fail (GLIDE_IS_DOCUMENT (document), NULL); p = json_parser_new (); glide_document_make_working_dir (document); glide_document_extract_archive (document, filename); json_file = g_strdup_printf("%s/document.json",document->priv->working_path); json_parser_load_from_file (p, json_file, &e); if (e) { gchar *sec = g_strdup_printf ("Failed to load the document: %s", filename); g_warning("Error loading file: %s", e->message); glide_gtk_util_show_error_dialog ("Failed to load document", sec); g_error_free (e); g_object_unref (G_OBJECT (p)); g_free (json_file); g_free (sec); return NULL; } g_free (json_file); glide_document_set_path (document, filename); return p; }
static void glide_window_save_document_real (GlideWindow *w, const gchar *filename) { JsonNode *node; JsonGenerator *gen; node = glide_document_serialize (w->priv->document); gen = json_generator_new (); g_object_set (gen, "pretty", TRUE, NULL); json_generator_set_root (gen, node); // TODO: Error json_generator_to_file (gen, filename, NULL); glide_document_set_dirty (w->priv->document, FALSE); glide_document_set_path (w->priv->document, filename); // Maybe gets called twice? glide_window_update_title (w); }