Beispiel #1
0
/**
 * 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;
}
Beispiel #2
0
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);
}
Beispiel #3
0
static void
glide_window_image_open_response_callback (GtkDialog *dialog,
					   int response,
					   gpointer user_data)
{
  GlideWindow *window = (GlideWindow *)user_data;

  if (response == GTK_RESPONSE_ACCEPT)
    {
      GError *e = NULL;
      ClutterActor *im;
      // Todo: URI
      gchar *filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
      
      im =  glide_image_new_from_file (filename, &e);
      if (e)
	{
	  g_warning ("Failed to load image (%s): %s", filename, e->message);
	  
	  glide_gtk_util_show_error_dialog ("Failed to load image", e->message);
	  g_free (filename);

	  g_error_free (e);
	  gtk_widget_destroy (GTK_WIDGET (dialog));
	  return;
	}
      glide_stage_manager_add_actor (window->priv->manager, GLIDE_ACTOR (im));
      glide_undo_manager_append_insert (window->priv->undo_manager, GLIDE_ACTOR (im));
      
      g_free (filename);
      
      clutter_actor_show (im);
    }
  
  gtk_widget_destroy (GTK_WIDGET (dialog));
}