Simplify presentation file record
authorThomas White <taw@bitwiz.me.uk>
Mon, 29 Oct 2018 21:58:04 +0000 (22:58 +0100)
committerThomas White <taw@bitwiz.me.uk>
Mon, 29 Oct 2018 21:58:04 +0000 (22:58 +0100)
src/narrative_window.c
src/presentation.c
src/presentation.h

index 3ff369c..7f3690e 100644 (file)
@@ -196,15 +196,12 @@ static void about_sig(GSimpleAction *action, GVariant *parameter, gpointer vp)
 static void save_sig(GSimpleAction *action, GVariant *parameter, gpointer vp)
 {
        NarrativeWindow *nw = vp;
-       GFile *file;
 
-       if ( nw->p->uri == NULL ) {
+       if ( nw->p->file == NULL ) {
                return saveas_sig(NULL, NULL, nw);
        }
 
-       file = g_file_new_for_uri(nw->p->uri);
-       save_presentation(nw->p, file, nw->p->stylesheet_from);
-       g_object_unref(file);
+       save_presentation(nw->p, nw->p->file, nw->p->stylesheet_from);
 }
 
 
index 810293d..e1df7c8 100644 (file)
@@ -44,7 +44,8 @@ void free_presentation(struct presentation *p)
        int final = 0;
 
        /* FIXME: Loads of stuff leaks here */
-       free(p->uri);
+       g_object_unref(p->file);
+       g_object_unref(p->stylesheet_from);
        imagestore_destroy(p->is);
        free(p);
 
@@ -56,12 +57,10 @@ void free_presentation(struct presentation *p)
 
 char *get_titlebar_string(struct presentation *p)
 {
-       if ( p == NULL || p->uri == NULL ) {
+       if ( p == NULL || p->file == NULL ) {
                return strdup(_("(untitled)"));
        } else {
-               GFile *f = g_file_new_for_uri(p->uri);
-               char *bn = g_file_get_basename(f);
-               g_object_unref(f);
+               char *bn = g_file_get_basename(p->file);
                return bn;
        }
 }
@@ -129,7 +128,8 @@ struct presentation *new_presentation(const char *imagestore)
        new = calloc(1, sizeof(struct presentation));
        if ( new == NULL ) return NULL;
 
-       new->uri = NULL;
+       new->file = NULL;
+       new->stylesheet_from = NULL;
 
        new->scblocks = NULL;
 
@@ -169,6 +169,9 @@ int save_presentation(struct presentation *p, GFile *file, GFile *ssfile)
        g_object_unref(fh);
 
        if ( ssfile != NULL ) {
+               char *uri = g_file_get_uri(ssfile);
+               printf(_("Saving stylesheet to %s\n"), uri);
+               g_free(uri);
                sr = stylesheet_save(p->stylesheet, ssfile);
                if ( sr ) {
                        fprintf(stderr, _("Couldn't save stylesheet\n"));
@@ -181,7 +184,7 @@ int save_presentation(struct presentation *p, GFile *file, GFile *ssfile)
        if ( r || sr ) return 1;
 
        imagestore_set_parent(p->is, g_file_get_parent(file));
-       p->uri = g_file_get_uri(file);
+       p->file = file;
        p->saved = 1;
        update_titlebar(p->narrative_window);
        return 0;
@@ -343,8 +346,10 @@ int load_presentation(struct presentation *p, GFile *file)
 
        set_slide_size_from_stylesheet(p);
 
-       assert(p->uri == NULL);
-       p->uri = g_file_get_uri(file);
+       assert(p->file == NULL);
+       p->file = file;
+       g_object_ref(file);
+
        imagestore_set_parent(p->is, g_file_get_parent(file));
 
        return 0;
index 57542ca..a3e10cc 100644 (file)
@@ -40,7 +40,7 @@ struct menu_pl;
 
 struct presentation
 {
-       char             *uri;
+       GFile            *file;
        GFile            *stylesheet_from;
        int               completely_empty;
        int               saved;