Hello!

I just saw that something really weird happened... The attached file has not
been attached but sent as a link (???).
Anyway, sending it again... Hoping that it will work as expected this time :p

Cheers!

                                         ilLogict



Quoting ilLogict <[EMAIL PROTECTED]>:

Hello !

I'm attaching a patch that enables virtual desktop naming via ipc.
-desktop-name-add OPT1 OPT2 OPT3 OPT4 OPT5 Add a desktop name
definition. OPT1 =
container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y. OPT5 =
desktop name
-desktop-name-del OPT1 OPT2 OPT3 OPT4 Delete a desktop name
definition. OPT1 =
container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y.
-desktop-name-list List all current desktop name definitions

Yes, it has been merely inspired by how you change background on each desktop
:)

Comments are of course welcomed.

Cheers !

                                         ilLogict




--
Pièces jointes
http://imp4.free.fr/horde/imp/attachment.php?u=illogict%40free.fr&t=1123255649&f=desktop_naming.patch


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel



Index: e_config.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config.c,v
retrieving revision 1.86
diff -u -r1.86 e_config.c
--- e_config.c	31 Jul 2005 06:22:31 -0000	1.86
+++ e_config.c	5 Aug 2005 13:24:46 -0000
@@ -29,6 +29,7 @@
 static E_Config_DD *_e_config_bindings_key_edd = NULL;
 static E_Config_DD *_e_config_path_append_edd = NULL;
 static E_Config_DD *_e_config_desktop_bg_edd = NULL;
+static E_Config_DD *_e_config_desktop_name_edd = NULL;
 static E_Config_DD *_e_config_remember_edd = NULL;
 
 /* externally accessible functions */
@@ -80,6 +81,17 @@
    E_CONFIG_VAL(D, T, desk_y, INT);
    E_CONFIG_VAL(D, T, file, STR);
    
+   _e_config_desktop_name_edd = E_CONFIG_DD_NEW("E_Config_Desktop_Name", E_Config_Desktop_Name);
+#undef T
+#undef D
+#define T E_Config_Desktop_Name
+#define D _e_config_desktop_name_edd
+   E_CONFIG_VAL(D, T, container, INT);
+   E_CONFIG_VAL(D, T, zone, INT);
+   E_CONFIG_VAL(D, T, desk_x, INT);
+   E_CONFIG_VAL(D, T, desk_y, INT);
+   E_CONFIG_VAL(D, T, name, STR);
+
    _e_config_path_append_edd = E_CONFIG_DD_NEW("E_Path_Dir", E_Path_Dir);
 #undef T
 #undef D
@@ -210,7 +222,9 @@
    E_CONFIG_VAL(D, T, config_version, INT); /**/
    E_CONFIG_VAL(D, T, show_splash, INT); /**/
    E_CONFIG_VAL(D, T, desktop_default_background, STR); /**/
+   E_CONFIG_VAL(D, T, desktop_default_name, STR); /**/
    E_CONFIG_LIST(D, T, desktop_backgrounds, _e_config_desktop_bg_edd); /**/
+   E_CONFIG_LIST(D, T, desktop_names, _e_config_desktop_name_edd); /**/
    E_CONFIG_VAL(D, T, menus_scroll_speed, DOUBLE); /**/
    E_CONFIG_VAL(D, T, menus_fast_mouse_move_threshhold, DOUBLE); /**/
    E_CONFIG_VAL(D, T, menus_click_drag_timeout, DOUBLE); /**/
@@ -322,6 +336,7 @@
 	e_config->config_version = E_CONFIG_FILE_VERSION;
 	e_config->show_splash = 1;
 	e_config->desktop_default_background = strdup("");
+	e_config->desktop_default_name = strdup("Desktop %d, %d");
 	e_config->menus_scroll_speed = 1000.0;
 	e_config->menus_fast_mouse_move_threshhold = 300.0;
 	e_config->menus_click_drag_timeout = DEF_MENUCLICK;
@@ -965,6 +980,7 @@
    E_CONFIG_DD_FREE(_e_config_bindings_key_edd);
    E_CONFIG_DD_FREE(_e_config_path_append_edd);
    E_CONFIG_DD_FREE(_e_config_desktop_bg_edd);
+   E_CONFIG_DD_FREE(_e_config_desktop_name_edd);
    E_CONFIG_DD_FREE(_e_config_remember_edd);
    return 1;
 }
@@ -1324,6 +1340,7 @@
 	  }
 
 	E_FREE(e_config->desktop_default_background);
+	E_FREE(e_config->desktop_default_name);
 	E_FREE(e_config->language);
 	E_FREE(e_config->transition_start);
 	E_FREE(e_config->transition_desk);
Index: e_config.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config.h,v
retrieving revision 1.43
diff -u -r1.43 e_config.h
--- e_config.h	31 Jul 2005 06:22:31 -0000	1.43
+++ e_config.h	5 Aug 2005 13:24:46 -0000
@@ -37,6 +37,7 @@
 typedef struct _E_Config_Binding_Mouse      E_Config_Binding_Mouse;
 typedef struct _E_Config_Binding_Key        E_Config_Binding_Key;
 typedef struct _E_Config_Desktop_Background E_Config_Desktop_Background;
+typedef struct _E_Config_Desktop_Name       E_Config_Desktop_Name;
 typedef Eet_Data_Descriptor                 E_Config_DD;
 
 #else
@@ -59,6 +60,8 @@
    int         show_splash;
    char       *desktop_default_background;
    Evas_List  *desktop_backgrounds;
+   char       *desktop_default_name;
+   Evas_List  *desktop_names;
    double      menus_scroll_speed;
    double      menus_fast_mouse_move_threshhold;
    double      menus_click_drag_timeout;
@@ -182,6 +185,15 @@
    char          *file;
 };
 
+struct _E_Config_Desktop_Name
+{
+   int            container;
+   int            zone;
+   int            desk_x;
+   int            desk_y;
+   char          *name;
+};
+
 EAPI int e_config_init(void);
 EAPI int e_config_shutdown(void);
 
Index: e_desk.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desk.c,v
retrieving revision 1.46
diff -u -r1.46 e_desk.c
--- e_desk.c	21 Jul 2005 11:15:43 -0000	1.46
+++ e_desk.c	5 Aug 2005 13:24:46 -0000
@@ -31,6 +31,8 @@
 {
    E_Desk      *desk;
    char		name[40];
+   int ok;
+   Evas_List *l;
    
    E_OBJECT_CHECK_RETURN(zone, NULL);
    E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL);
@@ -41,9 +43,31 @@
    desk->zone = zone;
    desk->x = x;
    desk->y = y;
-   snprintf(name, sizeof(name), _("Desktop %d, %d"), x, y);
-   desk->name = strdup(name);
 
+/* Get current desktop's name */
+   ok = 0;
+
+   for (l = e_config->desktop_names; l; l = l->next)
+     {
+	E_Config_Desktop_Name *cfname;
+
+	cfname = l->data;
+	if ((cfname->container >= 0) &&
+	    (zone->container->num != cfname->container)) continue;
+	if ((cfname->zone >= 0) &&
+	    (zone->num != cfname->zone)) continue;
+	if ((cfname->desk_x != desk->x) || (cfname->desk_y != desk->y)) continue;
+	desk->name = strdup(cfname->name);
+	ok = 1;
+	break;
+     }
+
+   if (!ok)
+     {
+   	snprintf(name, sizeof(name), _(e_config->desktop_default_name), x, y);
+   	desk->name = strdup(name);
+     }
+   
    return desk;
 }
 
@@ -57,6 +81,96 @@
 }
 
 void
+e_desk_name_add(int container, int zone, int desk_x, int desk_y, char *name)
+{
+   E_Config_Desktop_Name *cfname;
+   
+   e_desk_name_del(container, zone, desk_x, desk_y);
+   cfname = E_NEW(E_Config_Desktop_Name, 1);
+   cfname->container = container;
+   cfname->zone = zone;
+   cfname->desk_x = desk_x;
+   cfname->desk_y = desk_y;
+   cfname->name = strdup(name);
+   e_config->desktop_names = evas_list_append(e_config->desktop_names, cfname);
+}
+
+void
+e_desk_name_del(int container, int zone, int desk_x, int desk_y)
+{
+   Evas_List *l;
+   
+   for (l = e_config->desktop_names; l; l = l->next)
+     {
+	E_Config_Desktop_Name *cfname;
+	
+	cfname = l->data;
+	if ((cfname->container == container) && (cfname->zone == zone) &&
+	    (cfname->desk_x == desk_x) && (cfname->desk_y == desk_y))
+	  {
+	     e_config->desktop_names = evas_list_remove_list(e_config->desktop_names, l);
+	     IF_FREE(cfname->name);
+	     free(cfname);
+	     break;
+	  }
+     }
+}
+
+void
+e_desk_name_update(void)
+{
+   Evas_List *m, *c, *z, *d, *l;
+   E_Manager *man;
+   E_Container *con;
+   E_Zone *zone;
+   E_Desk *desk;
+   int d_x, d_y, ok;
+   char	name[40];
+   
+   for (m = e_manager_list(); m; m = m->next)
+     {
+	man = m->data;
+	for (c = man->containers; c; c = c->next)
+	  {
+	     con = c->data;
+	     for (z = con->zones; z; z = z->next)
+	       {
+		  zone = z->data;
+		  for (d_x = 0; d_x < zone->desk_x_count; d_x++)
+		    {
+		       for (d_y = 0; d_y < zone->desk_y_count; d_y++)
+		         {
+			    desk = zone->desks[d_x + zone->desk_x_count * d_y];
+			    ok = 0;
+
+			    for (l = e_config->desktop_names; l; l = l->next)
+			      {
+				 E_Config_Desktop_Name *cfname;
+
+				 cfname = l->data;
+				 if ((cfname->container >= 0) &&
+				     (con->num != cfname->container)) continue;
+				 if ((cfname->zone >= 0) &&
+	    			     (zone->num != cfname->zone)) continue;
+				 if ((cfname->desk_x != d_x) || (cfname->desk_y != d_y)) continue;
+				 e_desk_name_set(desk,cfname->name);
+				 ok = 1;
+				 break;
+		       	      }
+
+			    if (!ok)
+			      {
+				 snprintf(name, sizeof(name), _(e_config->desktop_default_name), d_x, d_y);
+				 e_desk_name_set(desk,name);
+			      }
+			 }
+		    }
+	       }
+	  }
+     }
+}
+
+void
 e_desk_show(E_Desk *desk)
 {
    E_Border_List     *bl;
Index: e_desk.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desk.h,v
retrieving revision 1.19
diff -u -r1.19 e_desk.h
--- e_desk.h	20 Jul 2005 13:07:57 -0000	1.19
+++ e_desk.h	5 Aug 2005 13:24:46 -0000
@@ -33,6 +33,9 @@
 EAPI int          e_desk_shutdown(void);
 EAPI E_Desk      *e_desk_new(E_Zone *zone, int x, int y);
 EAPI void         e_desk_name_set(E_Desk *desk, const char *name);
+EAPI void         e_desk_name_add(int container, int zone, int desk_x, int desk_y, char *name);
+EAPI void         e_desk_name_del(int container, int zone, int desk_x, int desk_y);
+EAPI void         e_desk_name_update(void);
 EAPI void         e_desk_show(E_Desk *desk);
 EAPI void         e_desk_last_focused_focus(E_Desk *desk);
 EAPI E_Desk      *e_desk_current_get(E_Zone *zone);
Index: e_ipc_handlers.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc_handlers.h,v
retrieving revision 1.59
diff -u -r1.59 e_ipc_handlers.h
--- e_ipc_handlers.h	31 Jul 2005 06:22:31 -0000	1.59
+++ e_ipc_handlers.h	5 Aug 2005 13:24:49 -0000
@@ -2981,7 +2981,6 @@
 #undef HDL
 
 /****************************************************************************/
-
 #define HDL E_IPC_OP_WINLIST_WARP_WHILE_SELECTING_SET
 #if (TYPE == E_REMOTE_OPTIONS)
    OP("-winlist-warp-while-selecting-set", 1, "Set winlist (alt+tab) warp while selecting policy", 0, HDL)
@@ -4438,6 +4437,72 @@
 #endif
 #undef HDL
 
+/****************************************************************************/
+#define HDL E_IPC_OP_DESKTOP_NAME_ADD
+#if (TYPE == E_REMOTE_OPTIONS)
+   OP("-desktop-name-add", 5, "Add a desktop name definition. OPT1 = container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y. OPT5 = desktop name", 0, HDL)
+#elif (TYPE == E_REMOTE_OUT)
+   REQ_4INT_2STRING_START(HDL);
+   REQ_4INT_2STRING_END(atoi(params[0]), atoi(params[1]), atoi(params[2]), atoi(params[3]), params[4], "", HDL);
+#elif (TYPE == E_WM_IN)
+   INT4_STRING2(v, HDL);
+   e_desk_name_add(v->val1, v->val2, v->val3, v->val4, v->str1);
+   e_desk_name_update();
+   SAVE;
+   END_INT4_STRING2(v);
+#elif (TYPE == E_REMOTE_IN)
+#endif
+#undef HDL
+
+/****************************************************************************/
+#define HDL E_IPC_OP_DESKTOP_NAME_DEL
+#if (TYPE == E_REMOTE_OPTIONS)
+   OP("-desktop-name-del", 4, "Delete a desktop name definition. OPT1 = container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y.", 0, HDL)
+#elif (TYPE == E_REMOTE_OUT)
+   REQ_4INT_2STRING_START(HDL);
+   REQ_4INT_2STRING_END(atoi(params[0]), atoi(params[1]), atoi(params[2]), atoi(params[3]), "", "", HDL);
+#elif (TYPE == E_WM_IN)
+   INT4_STRING2(v, HDL);
+   e_desk_name_del(v->val1, v->val2, v->val3, v->val4);
+   e_desk_name_update();
+   SAVE;
+   END_INT4_STRING2(v);
+#elif (TYPE == E_REMOTE_IN)
+#endif
+#undef HDL
+
+/****************************************************************************/
+#define HDL E_IPC_OP_DESKTOP_NAME_LIST
+#if (TYPE == E_REMOTE_OPTIONS)
+   OP("-desktop-name-list", 0, "List all current desktop name definitions", 1, HDL)
+#elif (TYPE == E_REMOTE_OUT)
+   REQ_NULL(HDL);
+#elif (TYPE == E_WM_IN)
+   SEND_INT4_STRING2_LIST(e_config->desktop_names, E_Config_Desktop_Name, cfname, v, HDL);
+   v->val1 = cfname->container;
+   v->val2 = cfname->zone;
+   v->val3 = cfname->desk_x;
+   v->val4 = cfname->desk_y;
+   v->str1 = cfname->name;
+   v->str2 = "";
+   END_SEND_INT4_STRING2_LIST(v, E_IPC_OP_DESKTOP_NAME_LIST_REPLY);
+#elif (TYPE == E_REMOTE_IN)
+#endif
+#undef HDL
+
+/****************************************************************************/
+#define HDL E_IPC_OP_DESKTOP_NAME_LIST_REPLY
+#if (TYPE == E_REMOTE_OPTIONS)
+#elif (TYPE == E_REMOTE_OUT)
+#elif (TYPE == E_WM_IN)
+#elif (TYPE == E_REMOTE_IN)
+   INT4_STRING2_LIST(v, HDL);
+   printf("REPLY: BG CONTAINER=%i ZONE=%i DESK_X=%i DESK_Y=%i NAME=\"%s\"\n",
+	  v->val1, v->val2, v->val3, v->val4, v->str1);
+   END_INT4_STRING2_LIST(v);
+#endif
+#undef HDL
+
 #if 0
 }
 #endif
Index: e_ipc_handlers_list.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc_handlers_list.h,v
retrieving revision 1.14
diff -u -r1.14 e_ipc_handlers_list.h
--- e_ipc_handlers_list.h	22 Jul 2005 10:28:09 -0000	1.14
+++ e_ipc_handlers_list.h	5 Aug 2005 13:24:49 -0000
@@ -218,3 +218,7 @@
 #define E_IPC_OP_PROFILE_SET 218
 #define E_IPC_OP_PROFILE_GET 219
 #define E_IPC_OP_PROFILE_GET_REPLY 220
+#define E_IPC_OP_DESKTOP_NAME_ADD 221
+#define E_IPC_OP_DESKTOP_NAME_DEL 222
+#define E_IPC_OP_DESKTOP_NAME_LIST 223
+#define E_IPC_OP_DESKTOP_NAME_LIST_REPLY 224

Reply via email to