Resend per Raster's request.

-------- Original Message --------
Subject: Abbreviating border names in clientlist menu....
Date: Sun, 04 Mar 2007 01:31:45 -0600
From: Ravenlock <[EMAIL PROTECTED]>
To: Enlightenment-Devel <enlightenment-devel@lists.sourceforge.net>

Hello,

Someone had complained in irc that their client list menu was sooo wide
that it did not fit on their screen.

The attached patch will allow a user to configure the maximum length a
menu caption can have in the client list menu.

--
Regards,
Ravenlock


--
Regards,
Ravenlock
Index: e17/apps/e/src/bin/e_config.c
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_config.c,v
retrieving revision 1.227
diff -u -r1.227 e_config.c
--- e17/apps/e/src/bin/e_config.c       21 Feb 2007 00:05:27 -0000      1.227
+++ e17/apps/e/src/bin/e_config.c       4 Mar 2007 08:47:28 -0000
@@ -509,6 +509,7 @@
    E_CONFIG_VAL(D, T, clientlist_sort_by, INT);
    E_CONFIG_VAL(D, T, clientlist_separate_iconified_apps, INT);
    E_CONFIG_VAL(D, T, clientlist_warp_to_iconified_desktop, INT);
+   E_CONFIG_VAL(D, T, clientlist_max_caption_len, INT);
    
    E_CONFIG_VAL(D, T, border_raise_on_mouse_action, INT);
    E_CONFIG_VAL(D, T, border_raise_on_focus, INT);
@@ -1335,6 +1336,10 @@
    e_config->clientlist_warp_to_iconified_desktop = 0;
    IFCFGEND;
 
+   IFCFG(0x111)
+   e_config->clientlist_max_caption_len = 0;
+   IFCFGEND;
+
    e_config->config_version = E_CONFIG_FILE_VERSION;   
      
 #if 0 /* example of new config */
@@ -1452,6 +1457,7 @@
    E_CONFIG_LIMIT(e_config->clientlist_sort_by, 0, 3);
    E_CONFIG_LIMIT(e_config->clientlist_separate_iconified_apps, 0, 2);
    E_CONFIG_LIMIT(e_config->clientlist_warp_to_iconified_desktop, 0, 1);
+   E_CONFIG_LIMIT(e_config->clientlist_max_caption_len, 0, 
E_CLIENTLIST_MAX_CAPTION_LEN);
    
    /* FIXME: disabled auto apply because it causes problems */
    e_config->cfgdlg_auto_apply = 0;
Index: e17/apps/e/src/bin/e_config.h
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_config.h,v
retrieving revision 1.142
diff -u -r1.142 e_config.h
--- e17/apps/e/src/bin/e_config.h       21 Feb 2007 00:05:27 -0000      1.142
+++ e17/apps/e/src/bin/e_config.h       4 Mar 2007 08:47:29 -0000
@@ -52,7 +52,7 @@
 /* increment this whenever a new set of config values are added but the users
  * config doesn't need to be wiped - simply new values need to be put in
  */
-#define E_CONFIG_FILE_GENERATION 0x0110
+#define E_CONFIG_FILE_GENERATION 0x0111
 #define E_CONFIG_FILE_VERSION    ((E_CONFIG_FILE_EPOCH << 16) | 
E_CONFIG_FILE_GENERATION)
 
 #define E_EVAS_ENGINE_DEFAULT      0
@@ -252,6 +252,7 @@
    int         clientlist_sort_by;
    int         clientlist_separate_iconified_apps;
    int         clientlist_warp_to_iconified_desktop;
+   int         clientlist_max_caption_len;
 
    int         display_res_restore; // GUI
    int         display_res_width; // GUI
Index: e17/apps/e/src/bin/e_int_config_clientlist.c
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_int_config_clientlist.c,v
retrieving revision 1.2
diff -u -r1.2 e_int_config_clientlist.c
--- e17/apps/e/src/bin/e_int_config_clientlist.c        1 Mar 2007 21:39:06 
-0000       1.2
+++ e17/apps/e/src/bin/e_int_config_clientlist.c        4 Mar 2007 08:47:29 
-0000
@@ -16,6 +16,7 @@
    int sort_by;
    int separate_iconified_apps;
    int warp_to_iconified_desktop;
+   int max_caption_len;
 };
 
 EAPI E_Config_Dialog *
@@ -48,6 +49,7 @@
    cfdata->sort_by = e_config->clientlist_sort_by;
    cfdata->separate_iconified_apps = 
e_config->clientlist_separate_iconified_apps;
    cfdata->warp_to_iconified_desktop = 
e_config->clientlist_warp_to_iconified_desktop;
+   cfdata->max_caption_len = e_config->clientlist_max_caption_len;
 }
 
 static void *
@@ -74,6 +76,7 @@
    e_config->clientlist_sort_by = cfdata->sort_by;
    e_config->clientlist_separate_iconified_apps = 
cfdata->separate_iconified_apps;
    e_config->clientlist_warp_to_iconified_desktop = 
cfdata->warp_to_iconified_desktop;
+   e_config->clientlist_max_caption_len = cfdata->max_caption_len;
 
    return 1;
 }
@@ -135,6 +138,11 @@
    //e_widget_list_object_append(o, of, 1, 1, 0.5);
    e_widget_table_object_append(ot, of, 1, 1, 1, 1, 1, 1, 1, 1);
 
+   of = e_widget_framelist_add(evas, _("Maximum Caption Length"), 0);
+   ob = e_widget_slider_add(evas, 1, 0, _("%1.0f Chars"), 0.0, 
E_CLIENTLIST_MAX_CAPTION_LEN, 2.0, 0, NULL, &(cfdata->max_caption_len), 200);
+   e_widget_framelist_object_append(of, ob);
+   e_widget_table_object_append(ot, of, 0, 2, 2, 1, 1, 1, 1, 0);
+
    e_widget_list_object_append(o, ot, 1, 1, 0.5); 
 
    return o;
Index: e17/apps/e/src/bin/e_int_config_clientlist.h
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_int_config_clientlist.h,v
retrieving revision 1.1
diff -u -r1.1 e_int_config_clientlist.h
--- e17/apps/e/src/bin/e_int_config_clientlist.h        21 Feb 2007 00:05:27 
-0000      1.1
+++ e17/apps/e/src/bin/e_int_config_clientlist.h        4 Mar 2007 08:47:29 
-0000
@@ -20,6 +20,8 @@
 #define E_CLIENTLIST_GROUPICONS_CURRENT 1
 #define E_CLIENTLIST_GROUPICONS_SEP 2
 
+#define E_CLIENTLIST_MAX_CAPTION_LEN 256
+
 EAPI E_Config_Dialog *e_int_config_clientlist(E_Container *con);
 
 #endif
Index: e17/apps/e/src/bin/e_int_menus.c
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.199
diff -u -r1.199 e_int_menus.c
--- e17/apps/e/src/bin/e_int_menus.c    1 Mar 2007 21:39:06 -0000       1.199
+++ e17/apps/e/src/bin/e_int_menus.c    4 Mar 2007 08:47:30 -0000
@@ -57,6 +57,7 @@
 static void _e_int_menus_clients_add_by_desk    (E_Desk *curr_desk, Evas_List 
*borders, E_Menu *m);
 static void _e_int_menus_clients_add_by_none    (Evas_List *borders, E_Menu 
*m);
 static void _e_int_menus_clients_menu_add_iconified  (Evas_List *borders, 
E_Menu *m);
+static const char *_e_int_menus_clients_title_abbrv (const char *title);
 static void _e_int_menus_virtuals_pre_cb     (void *data, E_Menu *m);
 static void _e_int_menus_virtuals_item_cb    (void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void _e_int_menus_themes_about        (void *data, E_Menu *m, 
E_Menu_Item *mi);
@@ -1254,13 +1255,36 @@
    e_object_data_set(E_OBJECT(m), borders);
 }
 
+static const char *
+_e_int_menus_clients_title_abbrv(const char *title)
+{
+   char *abbv, *left, *right;
+   int max_len;
+
+   max_len = e_config->clientlist_max_caption_len;
+   if ((max_len != 0) && (strlen(title) > max_len))
+     {
+       abbv = calloc(E_CLIENTLIST_MAX_CAPTION_LEN+4, sizeof(char));
+       left = title;
+       right = title + (strlen(title) - (max_len/2));
+               
+       strncpy(abbv, left, max_len/2);
+       strncat(abbv, "...", 3);
+       strncat(abbv, right, max_len/2);
+
+       return abbv;
+     }
+   else
+     return title;
+}
+
 static void
 _e_int_menus_clients_item_create(E_Border *bd, E_Menu *m)
 {
    E_Menu_Item *mi;
    const char *title;
        
-   title = e_border_name_get(bd);
+   title = _e_int_menus_clients_title_abbrv(e_border_name_get(bd));
    mi = e_menu_item_new(m);
    e_menu_item_check_set(mi, 1);
    if ((title) && (title[0]))

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to