summaryrefslogtreecommitdiff
path: root/src/generators.c
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@users.sourceforge.net>2011-06-04 17:30:12 +0200
committerTomas Bzatek <tbzatek@users.sourceforge.net>2011-06-04 17:30:12 +0200
commitfb5a52884dd17d17bab47de7f53c17c05ced6e1b (patch)
treefdb3873d295b615bfb1689c54fb76e3abb4e273f /src/generators.c
parent960c477148cf832f79e89a4cdf9f3ce3389c7b06 (diff)
downloadcataract-fb5a52884dd17d17bab47de7f53c17c05ced6e1b.tar.xz
Introduce conditional system
This is very basic scripting support - simple value retrieval and block conditionals. Defines could be either static from theme setup or programatically added during page generation.
Diffstat (limited to 'src/generators.c')
-rw-r--r--src/generators.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/generators.c b/src/generators.c
index 051ee28..4f0963d 100644
--- a/src/generators.c
+++ b/src/generators.c
@@ -280,6 +280,7 @@ write_html_album (TGallerySetup *setup,
ReplaceTable *local_replace_table;
BlockParser *block_parser;
TImageSize *image_size, *thumb_image_size;
+ GHashTable *defines;
fin = fopen (template_src, "r");
@@ -296,8 +297,10 @@ write_html_album (TGallerySetup *setup,
res = TRUE;
- global_replace_table = replace_table_new ();
+ global_replace_table = replace_table_new_from_defines (theme->defines);
block_parser = block_parser_new ();
+ defines = clone_string_hash_table (theme->defines);
+ block_parser_set_conditionals (block_parser, defines);
/* Get number of real pictures in the list */
real_total_items = 0;
@@ -460,7 +463,7 @@ write_html_album (TGallerySetup *setup,
}
/* Generate images (preview, original, thumbnail) */
- local_replace_table = replace_table_new ();
+ local_replace_table = replace_table_new_from_defines (defines);
s1 = NULL;
switch (item->type) {
@@ -546,6 +549,7 @@ write_html_album (TGallerySetup *setup,
fclose (fout);
fclose (fin);
+ g_hash_table_destroy (defines);
replace_table_free (global_replace_table);
block_parser_free (block_parser);
return res;
@@ -600,6 +604,7 @@ write_html_image (TGallerySetup *setup,
ReplaceTable *replace_table;
BlockParser *block_parser;
TImageSize *image_size;
+ GHashTable *defines;
fin = fopen (template_src, "r");
@@ -620,8 +625,10 @@ write_html_image (TGallerySetup *setup,
preload_imgname = NULL;
res = TRUE;
- replace_table = replace_table_new ();
+ replace_table = replace_table_new_from_defines (theme->defines);
block_parser = block_parser_new ();
+ defines = clone_string_hash_table (theme->defines);
+ block_parser_set_conditionals (block_parser, defines);
/* Get our index in the album */
item_index = 0;
@@ -927,6 +934,7 @@ write_html_image (TGallerySetup *setup,
g_free (img_orig_dst_page);
g_free (imgname);
g_free (preload_imgname);
+ g_hash_table_destroy (defines);
free_exif_data (exif);
replace_table_free (replace_table);
block_parser_free (block_parser);