* Add in the gadman right-click menu the ability to choose the orientation of the gadget

* Fix Ibar to handle new orient param

SVN revision: 37464
This commit is contained in:
Davide Andreoli 2008-11-05 03:12:45 +00:00
parent 3dbf7c1d30
commit 2699ee7a4c
3 changed files with 88 additions and 10 deletions

View File

@ -410,6 +410,7 @@ struct _E_Config_Gadcon_Client
int seq, flags;
} state_info;
const char *style;
int orient;
unsigned char autoscroll;
unsigned char resizable;
};

View File

@ -29,6 +29,9 @@ static void on_hide_stop(void *data __UNUSED__, Evas_Object *o __UNUSED__,
static void on_menu_style_plain(void *data, E_Menu *m, E_Menu_Item *mi);
static void on_menu_style_inset(void *data, E_Menu *m, E_Menu_Item *mi);
static void on_menu_style_float(void *data, E_Menu *m, E_Menu_Item *mi);
static void on_menu_style_horiz(void *data, E_Menu *m, E_Menu_Item *mi);
static void on_menu_style_vert(void *data, E_Menu *m, E_Menu_Item *mi);
static void on_menu_layer_bg(void *data, E_Menu *m, E_Menu_Item *mi);
static void on_menu_layer_top(void *data, E_Menu *m, E_Menu_Item *mi);
static void on_menu_delete(void *data, E_Menu *m, E_Menu_Item *mi);
@ -179,7 +182,7 @@ gadman_gadget_place(E_Config_Gadcon_Client *cf, int ontop)
/* Call the client orientation function */
if (cc->func.orient)
cc->func.orient(gcc, E_GADCON_ORIENT_FLOAT); //TODO make this configurable per instance
cc->func.orient(gcc, gcc->cf->orient);
return gcc;
}
@ -661,6 +664,34 @@ _attach_menu(void *data, E_Gadcon_Client *gcc, E_Menu *menu)
e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, on_menu_style_inset, gcc);
mi = e_menu_item_new(mn);
e_menu_item_separator_set(mi, 1);
/* orient */
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Free"));
e_menu_item_radio_set(mi, 1);
e_menu_item_radio_group_set(mi, 2);
if (gcc->cf->orient == E_GADCON_ORIENT_FLOAT)
e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, on_menu_style_float, gcc);
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Horizontal"));
e_menu_item_radio_set(mi, 1);
e_menu_item_radio_group_set(mi, 2);
if (gcc->cf->orient == E_GADCON_ORIENT_HORIZ)
e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, on_menu_style_horiz, gcc);
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Vertical"));
e_menu_item_radio_set(mi, 1);
e_menu_item_radio_group_set(mi, 2);
if (gcc->cf->orient == E_GADCON_ORIENT_VERT)
e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, on_menu_style_vert, gcc);
mi = e_menu_item_new(menu);
e_menu_item_label_set(mi, _("Appearance"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/appearance");
@ -828,6 +859,48 @@ on_menu_style_inset(void *data, E_Menu *m, E_Menu_Item *mi)
e_config_save_queue();
}
static void
on_menu_style_float(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Gadcon_Client *gcc;
gcc = data;
gcc->cf->orient = E_GADCON_ORIENT_FLOAT;
if (gcc->client_class->func.orient)
gcc->client_class->func.orient(gcc, E_GADCON_ORIENT_FLOAT);
e_config_save_queue();
}
static void
on_menu_style_horiz(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Gadcon_Client *gcc;
gcc = data;
gcc->cf->orient = E_GADCON_ORIENT_HORIZ;
if (gcc->client_class->func.orient)
gcc->client_class->func.orient(gcc, E_GADCON_ORIENT_HORIZ);
e_config_save_queue();
}
static void
on_menu_style_vert(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Gadcon_Client *gcc;
gcc = data;
gcc->cf->orient = E_GADCON_ORIENT_VERT;
if (gcc->client_class->func.orient)
gcc->client_class->func.orient(gcc, E_GADCON_ORIENT_VERT);
e_config_save_queue();
}
static void
on_menu_layer_bg(void *data, E_Menu *m, E_Menu_Item *mi)
{

View File

@ -174,9 +174,13 @@ static void
_gc_orient(E_Gadcon_Client *gcc, E_Gadcon_Orient orient)
{
Instance *inst;
static last = E_GADCON_ORIENT_HORIZ;
if (orient != -1)
last = orient;
inst = gcc->data;
switch (orient)
switch (last)
{
case E_GADCON_ORIENT_FLOAT:
case E_GADCON_ORIENT_HORIZ:
@ -510,7 +514,7 @@ _ibar_config_update(Config_Item *ci)
inst->ibar->apps = e_order_new(buf);
_ibar_fill(inst->ibar);
_ibar_resize_handle(inst->ibar);
_gc_orient(inst->gcc, inst->gcc->gadcon->orient);
_gc_orient(inst->gcc, -1);
for (i = inst->ibar->icons; i; i = i->next)
{
@ -666,7 +670,7 @@ _ibar_cb_app_change(void *data, E_Order *eo)
_ibar_fill(b);
_ibar_resize_handle(b);
if (b->inst)
_gc_orient(b->inst->gcc, b->inst->gcc->gadcon->orient);
_gc_orient(b->inst->gcc, -1);
}
static void
@ -719,7 +723,7 @@ _ibar_cb_menu_icon_remove(void *data, E_Menu *m, E_Menu_Item *mi)
ic->ibar->icons = eina_list_remove(ic->ibar->icons, ic);
_ibar_resize_handle(ic->ibar);
gc = ic->ibar->inst->gcc;
_gc_orient(gc, gc->gadcon->orient);
_gc_orient(gc, -1);
e_order_remove(ic->ibar->apps, ic->app);
_ibar_icon_free(ic);
}
@ -933,7 +937,7 @@ _ibar_cb_icon_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info
ic->ibar->icons = eina_list_remove(ic->ibar->icons, ic);
_ibar_resize_handle(ic->ibar);
gc = ic->ibar->inst->gcc;
_gc_orient(gc, gc->gadcon->orient);
_gc_orient(gc, -1);
e_order_remove(ic->ibar->apps, ic->app);
_ibar_icon_free(ic);
}
@ -1062,7 +1066,7 @@ _ibar_drop_position_update(Instance *inst, Evas_Coord x, Evas_Coord y)
-1, -1 /* max */
);
_ibar_resize_handle(inst->ibar);
_gc_orient(inst->gcc, inst->gcc->gadcon->orient);
_gc_orient(inst->gcc, -1);
}
static void
@ -1121,7 +1125,7 @@ _ibar_inst_cb_leave(void *data, const char *type, void *event_info)
inst->ibar->o_drop_over = NULL;
_ibar_resize_handle(inst->ibar);
e_gadcon_client_autoscroll_cb_set(inst->gcc, NULL, NULL);
_gc_orient(inst->gcc, inst->gcc->gadcon->orient);
_gc_orient(inst->gcc, -1);
}
static void
@ -1201,7 +1205,7 @@ _ibar_inst_cb_drop(void *data, const char *type, void *event_info)
e_gadcon_client_autoscroll_cb_set(inst->gcc, NULL, NULL);
_ibar_empty_handle(inst->ibar);
_ibar_resize_handle(inst->ibar);
_gc_orient(inst->gcc, inst->gcc->gadcon->orient);
_gc_orient(inst->gcc, -1);
}