As per discussions with raster, refactor the Desktop menu and include a
Shelves sub-menu. SVN revision: 26639
This commit is contained in:
parent
918b36a372
commit
a969a17416
|
@ -37,7 +37,7 @@ static void _e_int_menus_apps_del_hook (void *obj);
|
|||
static void _e_int_menus_apps_free_hook (void *obj);
|
||||
static void _e_int_menus_apps_run (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_apps_drag (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_apps_drag_finished(E_Drag *drag, int dropped);
|
||||
static void _e_int_menus_apps_drag_finished (E_Drag *drag, int dropped);
|
||||
static void _e_int_menus_config_pre_cb (void *data, E_Menu *m);
|
||||
static void _e_int_menus_config_free_hook (void *obj);
|
||||
static void _e_int_menus_config_item_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
@ -47,16 +47,22 @@ static void _e_int_menus_clients_free_hook (void *obj);
|
|||
static void _e_int_menus_clients_item_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_clients_icon_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_clients_cleanup_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_desktops_pre_cb (void *data, E_Menu *m);
|
||||
static void _e_int_menus_desktops_item_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
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);
|
||||
static void _e_int_menus_lost_clients_pre_cb (void *data, E_Menu *m);
|
||||
static void _e_int_menus_lost_clients_free_hook(void *obj);
|
||||
static void _e_int_menus_lost_clients_item_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_lost_clients_pre_cb (void *data, E_Menu *m);
|
||||
static void _e_int_menus_lost_clients_free_hook (void *obj);
|
||||
static void _e_int_menus_lost_clients_item_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_sys_pre_cb (void *data, E_Menu *m);
|
||||
static void _e_int_menus_sys_free_hook (void *obj);
|
||||
static void _e_int_menus_augmentation_add (E_Menu *m, Evas_List *augmentation);
|
||||
static void _e_int_menus_augmentation_del (E_Menu *m, Evas_List *augmentation);
|
||||
static void _e_int_menus_shelves_pre_cb (void *data, E_Menu *m);
|
||||
static void _e_int_menus_shelves_item_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_shelves_add_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_shelves_del_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_main_showhide (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_desk_item_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
||||
/* local subsystem globals */
|
||||
static Evas_Hash *_e_int_menus_augmentation = NULL;
|
||||
|
@ -102,7 +108,7 @@ e_int_menus_main_new(void)
|
|||
subm = e_int_menus_desktops_new();
|
||||
dat->desktops = subm;
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Desktops"));
|
||||
e_menu_item_label_set(mi, _("Desktop"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/desktops");
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
|
||||
|
@ -171,10 +177,33 @@ e_int_menus_apps_new(const char *dir)
|
|||
EAPI E_Menu *
|
||||
e_int_menus_desktops_new(void)
|
||||
{
|
||||
E_Menu *m;
|
||||
E_Menu *m, *subm;
|
||||
E_Menu_Item *mi;
|
||||
|
||||
m = e_menu_new();
|
||||
e_menu_pre_activate_callback_set(m, _e_int_menus_desktops_pre_cb, NULL);
|
||||
|
||||
subm = e_menu_new();
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Virtual"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/desktops");
|
||||
e_menu_pre_activate_callback_set(subm, _e_int_menus_virtuals_pre_cb, NULL);
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
|
||||
subm = e_int_menus_shelves_new();
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Shelves"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf");
|
||||
e_menu_pre_activate_callback_set(subm, _e_int_menus_shelves_pre_cb, NULL);
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Show/Hide All Windows"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/showhide");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_main_showhide, NULL);
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
|
@ -235,6 +264,16 @@ e_int_menus_lost_clients_new(void)
|
|||
return m;
|
||||
}
|
||||
|
||||
EAPI E_Menu *
|
||||
e_int_menus_shelves_new(void)
|
||||
{
|
||||
E_Menu *m;
|
||||
|
||||
m = e_menu_new();
|
||||
e_menu_pre_activate_callback_set(m, _e_int_menus_shelves_pre_cb, NULL);
|
||||
return m;
|
||||
}
|
||||
|
||||
EAPI E_Menu *
|
||||
e_int_menus_sys_new(void)
|
||||
{
|
||||
|
@ -575,21 +614,13 @@ _e_int_menus_apps_drag_finished(E_Drag *drag, int dropped)
|
|||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_desktops_pre_cb(void *data, E_Menu *m)
|
||||
_e_int_menus_virtuals_pre_cb(void *data, E_Menu *m)
|
||||
{
|
||||
E_Menu_Item *mi;
|
||||
E_Menu *root;
|
||||
|
||||
e_menu_pre_activate_callback_set(m, NULL, NULL);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Show/Hide All Windows"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/showhide");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_main_showhide, NULL);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
root = e_menu_root_get(m);
|
||||
if ((root) && (root->zone))
|
||||
{
|
||||
|
@ -607,13 +638,28 @@ _e_int_menus_desktops_pre_cb(void *data, E_Menu *m)
|
|||
e_menu_item_label_set(mi, desk->name);
|
||||
if (desk == e_desk_current_get(zone))
|
||||
e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _e_int_menus_desktops_item_cb, desk);
|
||||
e_menu_item_callback_set(mi, _e_int_menus_virtuals_item_cb, desk);
|
||||
}
|
||||
}
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Configure Virtual Desktops"));
|
||||
e_menu_item_callback_set(mi, _e_int_menus_desk_item_cb, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_desktops_item_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
_e_int_menus_desk_item_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
E_Container *con;
|
||||
|
||||
con = e_container_current_get(e_manager_current_get());
|
||||
e_int_config_desks(con);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_virtuals_item_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
E_Desk *desk = data;
|
||||
|
||||
|
@ -638,6 +684,12 @@ _e_int_menus_module_item_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
e_int_config_modules(m->zone->container);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_shelf_item_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
e_int_config_shelf(m->zone->container);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_applications_item_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
|
@ -687,6 +739,11 @@ _e_int_menus_config_pre_cb(void *data, E_Menu *m)
|
|||
e_util_menu_item_edje_icon_set(mi, "enlightenment/modules");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_module_item_cb, NULL);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Shelves"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_shelf_item_cb, NULL);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Applications"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/applications");
|
||||
|
@ -1101,3 +1158,143 @@ _e_int_menus_augmentation_del(E_Menu *m, Evas_List *augmentation)
|
|||
aug->del.func(aug->del.data, m);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_shelves_pre_cb(void *data, E_Menu *m)
|
||||
{
|
||||
E_Menu_Item *mi;
|
||||
Evas_List *l, *shelves = NULL;
|
||||
E_Container *con;
|
||||
E_Zone *zone;
|
||||
|
||||
e_menu_pre_activate_callback_set(m, NULL, NULL);
|
||||
con = e_container_current_get(e_manager_current_get());
|
||||
zone = e_zone_current_get(con);
|
||||
|
||||
/* get the current clients */
|
||||
shelves = e_shelf_list();
|
||||
|
||||
if (!shelves)
|
||||
{
|
||||
/* FIXME here we want nothing, but that crashes!!! */
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("(No Shelves)"));
|
||||
return;
|
||||
}
|
||||
for (l = shelves; l; l = l->next)
|
||||
{
|
||||
E_Shelf *s;
|
||||
const char *name;
|
||||
char buf[4096];
|
||||
|
||||
s = l->data;
|
||||
if (!s) continue;
|
||||
if (s->zone->num != zone->num) continue;
|
||||
if (s->cfg->container != con->num) continue;
|
||||
|
||||
name = s->name;
|
||||
if (!name) name = "shelf";
|
||||
snprintf(buf, sizeof(buf), "%s #%i", name, s->id);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, buf);
|
||||
e_menu_item_callback_set(mi, _e_int_menus_shelves_item_cb, s);
|
||||
switch (s->cfg->orient)
|
||||
{
|
||||
case E_GADCON_ORIENT_LEFT:
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf_position_left");
|
||||
break;
|
||||
case E_GADCON_ORIENT_RIGHT:
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf_position_right");
|
||||
break;
|
||||
case E_GADCON_ORIENT_TOP:
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf_position_top");
|
||||
break;
|
||||
case E_GADCON_ORIENT_BOTTOM:
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf_position_bottom");
|
||||
break;
|
||||
case E_GADCON_ORIENT_CORNER_TL:
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf_position_top_left");
|
||||
break;
|
||||
case E_GADCON_ORIENT_CORNER_TR:
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf_position_top_right");
|
||||
break;
|
||||
case E_GADCON_ORIENT_CORNER_BL:
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf_position_bottom_left");
|
||||
break;
|
||||
case E_GADCON_ORIENT_CORNER_BR:
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf_position_bottom_right");
|
||||
break;
|
||||
case E_GADCON_ORIENT_CORNER_LT:
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf_position_left_top");
|
||||
break;
|
||||
case E_GADCON_ORIENT_CORNER_RT:
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf_position_right_top");
|
||||
break;
|
||||
case E_GADCON_ORIENT_CORNER_LB:
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf_position_left_bottom");
|
||||
break;
|
||||
case E_GADCON_ORIENT_CORNER_RB:
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf_position_right_bottom");
|
||||
break;
|
||||
default:
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf");
|
||||
break;
|
||||
}
|
||||
}
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Add A Shelf"));
|
||||
e_menu_item_callback_set(mi, _e_int_menus_shelves_add_cb, NULL);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Delete A Shelf"));
|
||||
e_menu_item_callback_set(mi, _e_int_menus_shelves_del_cb, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_shelves_item_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
E_Shelf *s = data;
|
||||
|
||||
E_OBJECT_CHECK(s);
|
||||
e_int_shelf_config(s);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_shelves_add_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
E_Container *con;
|
||||
E_Zone *zone;
|
||||
E_Config_Shelf *cs;
|
||||
|
||||
con = e_container_current_get(e_manager_current_get());
|
||||
zone = e_zone_current_get(con);
|
||||
cs = E_NEW(E_Config_Shelf, 1);
|
||||
cs->name = evas_stringshare_add("shelf");
|
||||
cs->container = con->num;
|
||||
cs->zone = zone->num;
|
||||
cs->popup = 1;
|
||||
cs->layer = 200;
|
||||
cs->orient = E_GADCON_ORIENT_CORNER_BR;
|
||||
cs->fit_along = 1;
|
||||
cs->fit_size = 0;
|
||||
cs->style = evas_stringshare_add("default");
|
||||
cs->size = 40;
|
||||
cs->overlap = 0;
|
||||
e_config->shelves = evas_list_append(e_config->shelves, cs);
|
||||
e_config_save_queue();
|
||||
|
||||
e_shelf_config_init();
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_shelves_del_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
E_Container *con;
|
||||
|
||||
con = e_container_current_get(e_manager_current_get());
|
||||
e_int_config_shelf(con);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue