From 6a54c7817bb71fde9234e7b89e87f1f349920ea1 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sat, 11 Apr 2009 12:59:58 +0200 Subject: User customizable image directories --- src/generators.c | 18 +++++++++--------- src/job-manager.c | 6 +++--- src/setup.c | 16 ++++++++++++++++ src/setup.h | 9 ++++++--- 4 files changed, 34 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/generators.c b/src/generators.c index ff88a73..8100196 100644 --- a/src/generators.c +++ b/src/generators.c @@ -91,7 +91,7 @@ generate_image (TGallerySetup *setup, /* Generate thumbnail */ g_assert (thumb_src_full != NULL); get_image_sizes (thumb_src_full, &thumb_w, &thumb_h); - thumb_dst = g_strconcat (dst_dir, "/", THUMBNAIL_DIR, "/", item->gen_thumb, NULL); + thumb_dst = g_strconcat (dst_dir, "/", setup->thumbnail_dir, "/", item->gen_thumb, NULL); if ((thumb_w > 0) && (thumb_h > 0)) { if (! item->gen_portrait) @@ -109,7 +109,7 @@ generate_image (TGallerySetup *setup, /* Generate/copy preview and original image */ if (items->type == GALLERY_TYPE_ALBUM) { - big_dst = g_strconcat (dst_dir, "/", IMG_BIG_DIR, "/", item->gen_img_src, NULL); + big_dst = g_strconcat (dst_dir, "/", setup->img_big_dir, "/", item->gen_img_src, NULL); if (item->preview == NULL) { /* No preview image supplied, generate it from original */ bigq = setup->preview_quality; @@ -155,7 +155,7 @@ generate_image (TGallerySetup *setup, if (item->force_fullsize || (items->fullsize && ! item->force_nofullsize) || (! item->force_nofullsize && ! items->nofullsize && ! setup->nofullsize)) { - orig_dst = g_strconcat (dst_dir, "/", IMG_ORIG_DIR, "/", item->gen_img_src, NULL); + orig_dst = g_strconcat (dst_dir, "/", setup->img_orig_dir, "/", item->gen_img_src, NULL); if (! copy_file(img_src_full, orig_dst)) fprintf (stderr, "generate_image: error copying original image %s\n", img_src_full); modify_exif (orig_dst, setup->erase_exif_thumbnail, setup->add_copyright); @@ -376,7 +376,7 @@ write_html_album (TGallerySetup *setup, replace_table_add_key (local_replace_table, "IMG_DESCRIPTION", item->title_description); replace_table_add_key_printf (local_replace_table, "IMG_LIST_ID", "i%d", i + 1); if (item->gen_thumb != NULL) - replace_table_add_key_printf (local_replace_table, "IMG_THUMBNAIL", "%s/%s", THUMBNAIL_DIR, item->gen_thumb); + replace_table_add_key_printf (local_replace_table, "IMG_THUMBNAIL", "%s/%s", setup->thumbnail_dir, item->gen_thumb); replace_table_add_key (local_replace_table, "IMG_FILENAME", item->gen_img_src); if (items->type == GALLERY_TYPE_INDEX) { s3 = g_strconcat (items->base_dir, "/", item->path, "/index.xml", NULL); @@ -517,12 +517,12 @@ write_html_image (TGallerySetup *setup, imgname = g_path_get_basename ((item->path == NULL && item->preview) ? item->preview : item->path); if (next_item && setup->preload) { s1 = g_path_get_basename ((next_item->path == NULL && next_item->preview) ? next_item->preview : next_item->path); - preload_imgname = g_strconcat (IMG_BIG_DIR, "/", s1, NULL); + preload_imgname = g_strconcat (setup->img_big_dir, "/", s1, NULL); g_free (s1); } s1 = g_path_get_dirname (dst); - big_dst = g_strconcat (s1, "/", IMG_BIG_DIR, "/", imgname, NULL); - orig_dst = g_strconcat (s1, "/", IMG_ORIG_DIR, "/", imgname, NULL); + big_dst = g_strconcat (s1, "/", setup->img_big_dir, "/", imgname, NULL); + orig_dst = g_strconcat (s1, "/", setup->img_orig_dir, "/", imgname, NULL); g_free (s1); res = TRUE; @@ -596,8 +596,8 @@ write_html_image (TGallerySetup *setup, replace_table_add_key_int (replace_table, "IMG_SIZE_BIG_H", img_big_h); replace_table_add_key_int (replace_table, "IMG_SIZE_ORIG_W", img_orig_w); replace_table_add_key_int (replace_table, "IMG_SIZE_ORIG_H", img_orig_h); - replace_table_add_key_printf (replace_table, "IMG_SRC_BIG", "%s/%s", IMG_BIG_DIR, imgname); - replace_table_add_key_printf (replace_table, "IMG_SRC_FULL", "%s/%s", IMG_ORIG_DIR, imgname); + replace_table_add_key_printf (replace_table, "IMG_SRC_BIG", "%s/%s", setup->img_big_dir, imgname); + replace_table_add_key_printf (replace_table, "IMG_SRC_FULL", "%s/%s", setup->img_orig_dir, imgname); replace_table_add_key (replace_table, "IMG_SRC_PRELOAD", preload_imgname ? preload_imgname : ""); /* Navigation bar (NOTE: 'int level' is used below + favicon) */ diff --git a/src/job-manager.c b/src/job-manager.c index e3ae00d..bcbc0b8 100644 --- a/src/job-manager.c +++ b/src/job-manager.c @@ -244,7 +244,7 @@ build_tree (TGallerySetup *setup, } /* Prepare target thumbnail directory */ - thumb_dir = g_strconcat (dst_dir, "/", THUMBNAIL_DIR, NULL); + thumb_dir = g_strconcat (dst_dir, "/", setup->thumbnail_dir, NULL); if (access (thumb_dir, R_OK | W_OK | X_OK)) if (g_mkdir_with_parents (thumb_dir, DEFAULT_DATA_DIR_MODE)) { fprintf (stderr, "error making target thumbnail directory: %s\n", strerror (errno)); @@ -258,8 +258,8 @@ build_tree (TGallerySetup *setup, if (items->type == GALLERY_TYPE_ALBUM) { res = TRUE; - img_big_dir = g_strconcat (dst_dir, "/", IMG_BIG_DIR, NULL); - img_orig_dir = g_strconcat (dst_dir, "/", IMG_ORIG_DIR, NULL); + img_big_dir = g_strconcat (dst_dir, "/", setup->img_big_dir, NULL); + img_orig_dir = g_strconcat (dst_dir, "/", setup->img_orig_dir, NULL); if (access (img_big_dir, R_OK | W_OK | X_OK)) if (g_mkdir_with_parents (img_big_dir, DEFAULT_DATA_DIR_MODE)) { fprintf (stderr, "error making target preview directory: %s\n", strerror (errno)); diff --git a/src/setup.c b/src/setup.c index 145a5f2..d07e6ab 100644 --- a/src/setup.c +++ b/src/setup.c @@ -104,6 +104,16 @@ parse_setup_xml (const char *filename, TGallerySetup *setup) if (setup->index_file_name == NULL || strlen (setup->index_file_name) == 0) setup->index_file_name = strdup (DEFAULT_INDEX_FILENAME); + setup->thumbnail_dir = xml_file_get_node_value (xml, "/gallery_setup/images/thumbnail_dir/text()"); + if (setup->thumbnail_dir == NULL || strlen (setup->thumbnail_dir) == 0) + setup->thumbnail_dir = strdup (DEFAULT_THUMBNAIL_DIR); + setup->img_big_dir = xml_file_get_node_value (xml, "/gallery_setup/images/preview_dir/text()"); + if (setup->img_big_dir == NULL || strlen (setup->img_big_dir) == 0) + setup->img_big_dir = strdup (DEFAULT_IMG_BIG_DIR); + setup->img_orig_dir = xml_file_get_node_value (xml, "/gallery_setup/images/original_dir/text()"); + if (setup->img_orig_dir == NULL || strlen (setup->img_orig_dir) == 0) + setup->img_orig_dir = strdup (DEFAULT_IMG_ORIG_DIR); + setup->thumbnail_landscape_width = xml_file_get_node_attribute_long (xml, "/gallery_setup/images/thumbnail", "landscape_w", 0); setup->thumbnail_landscape_height = xml_file_get_node_attribute_long (xml, "/gallery_setup/images/thumbnail", "landscape_h", 0); @@ -277,6 +287,12 @@ free_setup_data (TGallerySetup *setup) free (setup->favicon_file); if (setup->favicon_type) free (setup->favicon_type); + if (setup->thumbnail_dir) + free (setup->thumbnail_dir); + if (setup->img_big_dir) + free (setup->img_big_dir); + if (setup->img_orig_dir) + free (setup->img_orig_dir); free (setup); setup = NULL; } diff --git a/src/setup.h b/src/setup.h index 7fb32bd..4cd2629 100644 --- a/src/setup.h +++ b/src/setup.h @@ -23,9 +23,9 @@ /* Directory names */ -#define THUMBNAIL_DIR "_thumb" -#define IMG_BIG_DIR "_big" -#define IMG_ORIG_DIR "_orig" +#define DEFAULT_THUMBNAIL_DIR "_thumb" +#define DEFAULT_IMG_BIG_DIR "_big" +#define DEFAULT_IMG_ORIG_DIR "_orig" #define SETUP_XML "setup.xml" #define DEFAULT_INDEX_FILENAME "index.html" @@ -46,6 +46,9 @@ typedef struct { char **template_files; gboolean support_files_use_common_root; char *index_file_name; + char *thumbnail_dir; + char *img_big_dir; + char *img_orig_dir; char *footer; char *meta_author; -- cgit v1.2.3