Author: post
Date: 2010-11-28 20:50:03 +0100 (Sun, 28 Nov 2010)
New Revision: 3650
Modified:
trunk/src/rs-store.c
Log:
Truncate very long filenames in iconview.
Modified: trunk/src/rs-store.c
===================================================================
--- trunk/src/rs-store.c 2010-11-28 19:20:03 UTC (rev 3649)
+++ trunk/src/rs-store.c 2010-11-28 19:50:03 UTC (rev 3650)
@@ -59,7 +59,8 @@
enum {
PIXBUF_COLUMN, /* The displayed pixbuf */
PIXBUF_CLEAN_COLUMN, /* The clean thumbnail */
- TEXT_COLUMN, /* Icon text */
+ TEXT_COLUMN, /* Icon text, truncated to max length */
+ TEXT_COLUMN_FULL, /* Icon text, not truncated */
FULLNAME_COLUMN, /* Full path to image */
PRIORITY_COLUMN,
EXPORTED_COLUMN,
@@ -223,6 +224,7 @@
GDK_TYPE_PIXBUF,
G_TYPE_STRING,
G_TYPE_STRING,
+ G_TYPE_STRING,
G_TYPE_INT,
G_TYPE_BOOLEAN,
G_TYPE_OBJECT,
@@ -512,7 +514,7 @@
gtk_tree_model_get (model, &iter,
TYPE_COLUMN, &type,
- TEXT_COLUMN, &name,
+ TEXT_COLUMN_FULL, &name,
FULLNAME_COLUMN, &filename,
METADATA_COLUMN, &metadata,
-1);
@@ -664,8 +666,8 @@
gint ret;
gchar *a, *b;
- gtk_tree_model_get(model, tia, TEXT_COLUMN, &a, -1);
- gtk_tree_model_get(model, tib, TEXT_COLUMN, &b, -1);
+ gtk_tree_model_get(model, tia, TEXT_COLUMN_FULL, &a, -1);
+ gtk_tree_model_get(model, tib, TEXT_COLUMN_FULL, &b, -1);
if (!a[0] && !b[0])
ret = 0;
else if (!a[0])
@@ -1052,7 +1054,18 @@
return;
gchar *name = g_path_get_basename(fullname);
+ gchar *name_full = g_strdup(name);
+ /* This is where the maximum number of characters in the oicon names
are set */
+ const gint max_name_length = 25;
+ if (g_utf8_strlen(name, -1) > max_name_length)
+ {
+ /* Find offset to character number max_name_length-3 and terminate*/
+ gchar *end = g_utf8_offset_to_pointer(name, max_name_length-3);
+ end[0] = end[1] = end[2] = '.';
+ end[3] = 0;
+ }
+
/* Global default icon */
if (!icon_default)
icon_default = gdk_pixbuf_new_from_file(PACKAGE_DATA_DIR
"/icons/" PACKAGE ".png", NULL);
@@ -1065,6 +1078,7 @@
PIXBUF_COLUMN, icon_default,
PIXBUF_CLEAN_COLUMN, icon_default,
TEXT_COLUMN, name,
+ TEXT_COLUMN_FULL, name_full,
FULLNAME_COLUMN, fullname,
-1);
@@ -1697,7 +1711,7 @@
rs_store_set_sort_method(RSStore *store, RS_STORE_SORT_METHOD sort_method)
{
GtkTreeSortable *sortable;
- gint sort_column = TEXT_COLUMN;
+ gint sort_column = TEXT_COLUMN_FULL;
GtkTreeIterCompareFunc sort_func = model_sort_name;
g_assert(RS_IS_STORE(store));
@@ -1708,7 +1722,7 @@
switch (sort_method)
{
case RS_STORE_SORT_BY_NAME:
- sort_column = TEXT_COLUMN;
+ sort_column = TEXT_COLUMN_FULL;
sort_func = model_sort_name;
break;
case RS_STORE_SORT_BY_TIMESTAMP:
@@ -1912,6 +1926,7 @@
GdkPixbuf *pixbuf_clean = NULL;
gchar *fullname = NULL;
gchar *name = NULL;
+ gchar *name_full = NULL;
guint priority;
gboolean exported;
@@ -1923,6 +1938,7 @@
PIXBUF_COLUMN, &pixbuf,
PIXBUF_CLEAN_COLUMN, &pixbuf_clean,
TEXT_COLUMN, &name,
+ TEXT_COLUMN, &name_full,
FULLNAME_COLUMN, &fullname,
PRIORITY_COLUMN, &priority,
EXPORTED_COLUMN, &exported,
@@ -1937,6 +1953,7 @@
PIXBUF_COLUMN, pixbuf,
PIXBUF_CLEAN_COLUMN, pixbuf_clean,
TEXT_COLUMN, name,
+ TEXT_COLUMN_FULL, name_full,
FULLNAME_COLUMN, fullname,
PRIORITY_COLUMN, priority,
EXPORTED_COLUMN, exported,
@@ -2204,6 +2221,7 @@
PIXBUF_COLUMN, NULL,
PIXBUF_CLEAN_COLUMN, NULL,
TEXT_COLUMN, "",
+ TEXT_COLUMN_FULL, "",
FULLNAME_COLUMN, NULL,
PRIORITY_COLUMN, 0,
EXPORTED_COLUMN, 0,
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit