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

Reply via email to