From b79dad7a05ae97dffb3f5fd9ab48ff8ffbbf6ea7 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sun, 21 Oct 2018 18:34:56 +0200 Subject: Full order of precedence for finding stylesheets --- src/presentation.c | 28 +++++++++++++++++++++++++++- src/stylesheet.c | 2 ++ 2 files changed, 29 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/presentation.c b/src/presentation.c index a33a541..686c97d 100644 --- a/src/presentation.c +++ b/src/presentation.c @@ -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/.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: /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); diff --git a/src/stylesheet.c b/src/stylesheet.c index 020107e..ed84905 100644 --- a/src/stylesheet.c +++ b/src/stylesheet.c @@ -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; -- cgit v1.2.3