Full order of precedence for finding stylesheets
authorThomas White <taw@bitwiz.me.uk>
Sun, 21 Oct 2018 16:34:56 +0000 (18:34 +0200)
committerThomas White <taw@bitwiz.me.uk>
Sun, 21 Oct 2018 16:34:56 +0000 (18:34 +0200)
data/colloquium.gresource.xml
data/default.ss [new file with mode: 0644]
src/presentation.c
src/stylesheet.c

index 9c85e5b..819a966 100644 (file)
@@ -6,6 +6,7 @@
     <file>stylesheeteditor.ui</file>
     <file>demo.sc</file>
     <file>demo.ss</file>
+    <file>default.ss</file>
     <file>canvas.png</file>
     <file>alpha_warning.svg</file>
     <file>colloquium.svg</file>
diff --git a/data/default.ss b/data/default.ss
new file mode 100644 (file)
index 0000000..5ea74f6
--- /dev/null
@@ -0,0 +1,37 @@
+{
+       "narrative": {
+               "font": "Cantarell Regular 16",
+               "fgcol": "#222222",
+               "pad": "10,10,10,10",
+               "paraspace": "0,0,10,10",
+               "bgcol": "#ffffff"
+       },
+
+       "slide": {
+               "size": "1280x720",
+               "bggradv": "#333333,#000055",
+               "frame": {
+                       "font": "Cantarell Regular 14",
+                       "pad": "0,0,0,0",
+                       "fgcol": "#c5c5c5",
+                       "bgcol": "#ffffff00",
+                       "paraspace": "5,5,5,5"
+               },
+               "slidetitle": {
+                       "geometry": "1fx90u+0+0",
+                       "pad": "20,20,20,20",
+                       "fgcol": "#eeeeee",
+                       "font": "Cantarell Regular 36",
+                       "bgcol": "#ffffff00"
+               },
+               "prestitle": {
+                       "geometry": "1fx140u+0+0",
+                       "pad": "20,20,20,20",
+                       "fgcol": "#eeeeee",
+                       "font": "Cantarell Regular 64",
+                       "alignment": "center",
+                       "bgcol": "#ffffff00"
+               },
+               "_comment": "Add footer, credit and bp"
+       }
+}
index a33a541..686c97d 100644 (file)
@@ -246,6 +246,7 @@ int load_presentation(struct presentation *p, GFile *file)
        int r = 0;
        char *everything;
        GFile *ssfile;
+       GFile *parent;
        gchar *ssuri;
 
        assert(p->completely_empty);
@@ -269,6 +270,8 @@ int load_presentation(struct presentation *p, GFile *file)
        }
 
        p->stylesheet = NULL;
+
+       /* First choice: /same/directory/<presentation>.ss */
        ssuri = g_file_get_uri(file);
        if ( ssuri != NULL ) {
                size_t l = strlen(ssuri);
@@ -280,12 +283,35 @@ int load_presentation(struct presentation *p, GFile *file)
                        g_free(ssuri);
                }
        }
+
+       /* Second choice: /same/directory/stylesheet.ss */
+       if ( p->stylesheet == NULL ) {
+               parent = g_file_get_parent(file);
+               if ( parent != NULL ) {
+                       ssfile = g_file_get_child(parent, "stylesheet.ss");
+                       if ( ssfile != NULL ) {
+                               p->stylesheet = stylesheet_load(ssfile);
+                               g_object_unref(ssfile);
+                       }
+               }
+       }
+
+       /* Third choice: <cwd>/stylesheet.ss */
+       if ( p->stylesheet == NULL ) {
+               ssfile = g_file_new_for_path("./stylesheet.ss");
+               p->stylesheet = stylesheet_load(ssfile);
+               g_object_unref(ssfile);
+       }
+
+       /* Fourth choice: internal default stylesheet */
        if ( p->stylesheet == NULL ) {
-               ssfile = g_file_new_for_path("./stylesheet.json");
+               ssfile = g_file_new_for_uri("resource:///uk/me/bitwiz/Colloquium/default.ss");
                p->stylesheet = stylesheet_load(ssfile);
                g_object_unref(ssfile);
        }
 
+       /* Last resort is NULL stylesheet and SCInterpreter's defaults */
+
        set_slide_size_from_stylesheet(p);
 
        assert(p->uri == NULL);
index 020107e..ed84905 100644 (file)
@@ -49,6 +49,8 @@ Stylesheet *stylesheet_load(GFile *file)
        char *everything;
        gsize len;
 
+       printf("Trying stylesheet '%s'\n", g_file_get_uri(file));
+
        ss = calloc(1, sizeof(Stylesheet));
        if ( ss == NULL ) return NULL;