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