changeset 298:cb93a982fcdd

Add the possibility to truncate overlay infos displayed: %fCamera:20% will truncate data displayed to 20 characters and add 3 dots at the end. For example, %name% -> some_file, %name:4% -> some...
author zas_
date Thu, 10 Apr 2008 10:43:15 +0000
parents 76cdc3f1fe34
children 49eaa6463492
files src/image-overlay.c src/preferences.c
diffstat 2 files changed, 27 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/image-overlay.c	Thu Apr 10 00:09:43 2008 +0000
+++ b/src/image-overlay.c	Thu Apr 10 10:43:15 2008 +0000
@@ -139,19 +139,43 @@
 
 	while (TRUE)
 		{
+		gint was_digit = 0;
+		gint limit = 0;
+		gchar *trunc = NULL;
+		gchar *p;
+
 		start = strchr(new->str, delim);
 		if (!start)
 			break;
 		end = strchr(start+1, delim);
 		if (!end)
 			break;
+		
+		for (p = end; p > start; p--)
+			{
+			if (*p == ':' && was_digit)
+				{
+				trunc = p;
+				break;
+				}
+			was_digit = (*p >= '0' && *p <= '9');
+			}
 
-		name = g_strndup(start+1, end-start-1);
+		if (trunc) limit = atoi(trunc+1);
+
+		name = g_strndup(start+1, ((limit > 0) ? trunc : end)-start-1);
+
 		pos = start-new->str;
 		data = g_strdup(g_hash_table_lookup(vars, name));
 		if (!data && exif)
 			data = exif_get_data_as_text(exif, name);
-
+		if (data && *data && limit > 0)
+			{
+			gchar *new_data = g_strdup_printf("%-*.*s...", limit, limit, data);
+			g_free(data);
+			data = new_data;
+			}
+		
 		g_string_erase(new, pos, end-start+1);
 		if (data)
 			g_string_insert(new, pos, data);
--- a/src/preferences.c	Thu Apr 10 00:09:43 2008 +0000
+++ b/src/preferences.c	Thu Apr 10 10:43:15 2008 +0000
@@ -1354,6 +1354,7 @@
 	  "<i>%size%</i> (filesize), <i>%width%</i>, <i>%height%</i>, <i>%res%</i> (resolution)\n"
 	  "To access exif data use the exif name, e. g. <i>%fCamera%</i> is the formatted camera name,\n"
 	  "<i>%Exif.Photo.DateTimeOriginal%</i> the date of the original shot.\n"
+	  "<i>%fCamera:20</i> notation will truncate the displayed data to 20 characters and will add 3 dots at the end to denote the truncation.\n"
 	  "If two or more variables are connected with the |-sign, it prints available variables with a separator.\n"
 	  "<i>%fShutterSpeed%</i>|<i>%fISOSpeedRating%</i>|<i>%fFocalLength%</i> could show \"1/20s - 400 - 80 mm\" or \"1/200 - 80 mm\",\n"
 	  "if there's no ISO information in the Exif data.\n"