desktop name ipc patch.

slight formatting stuff.


SVN revision: 16043
This commit is contained in:
Carsten Haitzler 2005-08-06 04:00:03 +00:00
parent 48aae699c2
commit f1f9673f11
7 changed files with 219 additions and 4 deletions

View File

@ -353,7 +353,7 @@ ACT_FN_GO(move_absolute)
if (cx == '-') x = bd->zone->w - bd->w - x;
if (cy == '-') y = bd->zone->h - bd->h - y;
if (x != bd->x || y != bd->y)
if ((x != bd->x) || (y != bd->y))
{
e_border_move(bd, x, y);

View File

@ -30,6 +30,7 @@ static E_Config_DD *_e_config_bindings_mouse_edd = NULL;
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 */
@ -81,6 +82,17 @@ e_config_init(void)
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
@ -211,7 +223,9 @@ e_config_init(void)
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); /**/
@ -323,6 +337,7 @@ e_config_init(void)
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;
@ -966,6 +981,7 @@ e_config_shutdown(void)
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;
}
@ -1352,6 +1368,7 @@ _e_config_free(void)
}
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);

View File

@ -37,6 +37,7 @@ typedef struct _E_Config_Theme E_Config_Theme;
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 @@ struct _E_Config
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 @@ struct _E_Config_Desktop_Background
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);

View File

@ -31,6 +31,8 @@ e_desk_new(E_Zone *zone, int x, int y)
{
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 @@ e_desk_new(E_Zone *zone, int x, int y)
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;
}
@ -56,6 +80,96 @@ e_desk_name_set(E_Desk *desk, const char *name)
desk->name = strdup(name);
}
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)
{

View File

@ -33,6 +33,9 @@ EAPI int e_desk_init(void);
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);

View File

@ -2981,7 +2981,6 @@ break;
#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)
@ -4442,6 +4441,72 @@ break;
#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

View File

@ -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