more bindings and actions

SVN revision: 14509
This commit is contained in:
Carsten Haitzler 2005-04-30 04:21:55 +00:00
parent a52d19b664
commit 51ce3de0c0
6 changed files with 180 additions and 32 deletions

View File

@ -168,43 +168,79 @@ ACT_FN_GO(window_close)
/***************************************************************************/
ACT_FN_GO(desk_flip_by)
{
E_Container *con;
E_Zone *zone;
if (!obj) return;
if (obj->type != E_MANAGER_TYPE) return;
con = e_manager_container_current_get((E_Manager *)obj);
/* FIXME: this shoudl really go into desk logic and zone... */
if (con)
zone = e_util_zone_current_get((E_Manager *)obj);
if (zone)
{
E_Zone *zone;
zone = e_zone_current_get(con);
if (zone)
if (params)
{
E_Desk *desk;
int dx = 0, dy = 0;
if (params)
{
if (sscanf(params, "%i %i", &dx, &dy) != 2)
{
dx = 0;
dy = 0;
}
}
dx = zone->desk_x_current + dx;
if (dx < 0) dx = 0;
else if (dx >= zone->desk_x_count) dx = zone->desk_x_count - 1;
dy = zone->desk_x_current + dy;
if (dy < 0) dy = 0;
else if (dy >= zone->desk_y_count) dy = zone->desk_y_count - 1;
desk = e_desk_at_xy_get(zone, dx, dy);
if (desk)
{
ecore_x_window_focus(con->manager->root);
e_desk_show(desk);
e_zone_update_flip(zone);
}
if (sscanf(params, "%i %i", &dx, &dy) == 2)
e_zone_desk_flip_by(zone, dx, dy);
}
}
}
/***************************************************************************/
ACT_FN_GO(desk_flip_to)
{
E_Zone *zone;
if (!obj) return;
if (obj->type != E_MANAGER_TYPE) return;
zone = e_util_zone_current_get((E_Manager *)obj);
if (zone)
{
if (params)
{
int dx = 0, dy = 0;
if (sscanf(params, "%i %i", &dx, &dy) == 2)
e_zone_desk_flip_to(zone, dx, dy);
}
}
}
/***************************************************************************/
ACT_FN_GO(desk_linear_flip_by)
{
E_Zone *zone;
if (!obj) return;
if (obj->type != E_MANAGER_TYPE) return;
zone = e_util_zone_current_get((E_Manager *)obj);
if (zone)
{
if (params)
{
int dx = 0;
if (sscanf(params, "%i", &dx) == 1)
e_zone_desk_linear_flip_by(zone, dx);
}
}
}
/***************************************************************************/
ACT_FN_GO(desk_linear_flip_to)
{
E_Zone *zone;
if (!obj) return;
if (obj->type != E_MANAGER_TYPE) return;
zone = e_util_zone_current_get((E_Manager *)obj);
if (zone)
{
if (params)
{
int dx = 0;
if (sscanf(params, "%i", &dx) == 1)
e_zone_desk_linear_flip_to(zone, dx);
}
}
}
@ -238,6 +274,12 @@ e_actions_init(void)
ACT_GO(window_close);
ACT_GO(desk_flip_by);
ACT_GO(desk_flip_to);
ACT_GO(desk_linear_flip_by);
ACT_GO(desk_linear_flip_to);
return 1;
}

View File

@ -82,6 +82,48 @@ e_bindings_init(void)
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"x", E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0,
"window_close", "");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"Left", E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_by", "-1");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"Right", E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_by", "1");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"F1", E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_to", "0");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"F2", E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_to", "1");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"F3", E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_to", "2");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"F4", E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_to", "3");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"F5", E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_to", "4");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"F6", E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_to", "5");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"F7", E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_to", "6");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"F8", E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_to", "7");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"F9", E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_to", "8");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"F10", E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_to", "9");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"F11", E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_to", "10");
e_bindings_key_add(E_BINDING_CONTEXT_ANY,
"F12", E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_to", "11");
return 1;
}

View File

@ -76,6 +76,22 @@ e_util_env_set(const char *var, const char *val)
}
}
E_Zone *
e_util_zone_current_get(E_Manager *man)
{
E_Container *con;
con = e_manager_container_current_get(man);
if (con)
{
E_Zone *zone;
zone = e_zone_current_get(con);
return zone;
}
return NULL;
}
/* local subsystem functions */
static void
_e_util_container_fake_mouse_up_cb(void *data)

View File

@ -10,6 +10,7 @@ EAPI void e_util_container_fake_mouse_up_later(E_Container *con, int button);
EAPI void e_util_container_fake_mouse_up_all_later(E_Container *con);
EAPI void e_util_wakeup(void);
EAPI void e_util_env_set(const char *var, const char *val);
EAPI E_Zone *e_util_zone_current_get(E_Manager *man);
#endif
#endif

View File

@ -499,6 +499,49 @@ e_zone_update_flip(E_Zone *zone)
_e_zone_update_flip(zone);
}
void
e_zone_desk_flip_by(E_Zone *zone, int dx, int dy)
{
dx = zone->desk_x_current + dx;
dy = zone->desk_x_current + dy;
e_zone_desk_flip_to(zone, dx, dy);
}
void
e_zone_desk_flip_to(E_Zone *zone, int x, int y)
{
E_Desk *desk;
if (x < 0) x = 0;
else if (x >= zone->desk_x_count) x = zone->desk_x_count - 1;
if (y < 0) y = 0;
else if (y >= zone->desk_y_count) y = zone->desk_y_count - 1;
desk = e_desk_at_xy_get(zone, x, y);
if (desk)
{
e_desk_show(desk);
_e_zone_update_flip(zone);
}
}
void
e_zone_desk_linear_flip_by(E_Zone *zone, int dx)
{
dx = zone->desk_x_current +
(zone->desk_y_current * zone->desk_x_count) + dx;
e_zone_desk_linear_flip_to(zone, dx);
}
void
e_zone_desk_linear_flip_to(E_Zone *zone, int x)
{
int y;
y = x / zone->desk_x_count;
x = x - (y * zone->desk_x_count);
e_zone_desk_flip_to(zone, x, y);
}
static void
_e_zone_event_zone_desk_count_set_free(void *data, void *ev)
{

View File

@ -58,6 +58,10 @@ EAPI void e_zone_flip_coords_handle(E_Zone *zone, int x, int y);
EAPI void e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count);
EAPI void e_zone_desk_count_get(E_Zone *zone, int *x_count, int *y_count);
EAPI void e_zone_update_flip(E_Zone *zone);
EAPI void e_zone_desk_flip_by(E_Zone *zone, int dx, int dy);
EAPI void e_zone_desk_flip_to(E_Zone *zone, int x, int y);
EAPI void e_zone_desk_linear_flip_by(E_Zone *zone, int dx);
EAPI void e_zone_desk_linear_flip_to(E_Zone *zone, int x);
extern EAPI int E_EVENT_ZONE_DESK_COUNT_SET;