forked from enlightenment/enlightenment
working on shelves
... and a bit on gadcon. SVN revision: 20456
This commit is contained in:
parent
4746f6513b
commit
477a40e79b
|
@ -458,6 +458,11 @@ e_gadcon_client_size_request(E_Gadcon_Client *gcc, Evas_Coord w, Evas_Coord h)
|
||||||
case E_GADCON_ORIENT_RIGHT:
|
case E_GADCON_ORIENT_RIGHT:
|
||||||
e_gadcon_layout_pack_size_set(gcc->o_base, h);
|
e_gadcon_layout_pack_size_set(gcc->o_base, h);
|
||||||
break;
|
break;
|
||||||
|
case E_GADCON_ORIENT_FLOAT:
|
||||||
|
case E_GADCON_ORIENT_CORNER_TL:
|
||||||
|
case E_GADCON_ORIENT_CORNER_TR:
|
||||||
|
case E_GADCON_ORIENT_CORNER_BL:
|
||||||
|
case E_GADCON_ORIENT_CORNER_BR:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,13 +12,17 @@ typedef enum _E_Gadcon_Layout_Policy
|
||||||
typedef enum _E_Gadcon_Orient
|
typedef enum _E_Gadcon_Orient
|
||||||
{
|
{
|
||||||
/* generic orientations */
|
/* generic orientations */
|
||||||
E_GADCON_ORIENT_HORIZ,
|
E_GADCON_ORIENT_FLOAT,
|
||||||
|
E_GADCON_ORIENT_HORIZ,
|
||||||
E_GADCON_ORIENT_VERT,
|
E_GADCON_ORIENT_VERT,
|
||||||
/* specific oreintations */
|
|
||||||
E_GADCON_ORIENT_LEFT,
|
E_GADCON_ORIENT_LEFT,
|
||||||
E_GADCON_ORIENT_RIGHT,
|
E_GADCON_ORIENT_RIGHT,
|
||||||
E_GADCON_ORIENT_TOP,
|
E_GADCON_ORIENT_TOP,
|
||||||
E_GADCON_ORIENT_BOTTOM
|
E_GADCON_ORIENT_BOTTOM,
|
||||||
|
E_GADCON_ORIENT_CORNER_TL,
|
||||||
|
E_GADCON_ORIENT_CORNER_TR,
|
||||||
|
E_GADCON_ORIENT_CORNER_BL,
|
||||||
|
E_GADCON_ORIENT_CORNER_BR
|
||||||
} E_Gadcon_Orient;
|
} E_Gadcon_Orient;
|
||||||
|
|
||||||
typedef struct _E_Gadcon E_Gadcon;
|
typedef struct _E_Gadcon E_Gadcon;
|
||||||
|
|
|
@ -683,7 +683,7 @@ main(int argc, char **argv)
|
||||||
E_Shelf *es;
|
E_Shelf *es;
|
||||||
|
|
||||||
zone = l3->data;
|
zone = l3->data;
|
||||||
es = e_shelf_zone_new(zone, "shelf");
|
es = e_shelf_zone_new(zone, "shelf", 0, 200);
|
||||||
e_shelf_populate(es);
|
e_shelf_populate(es);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ e_shelf_shutdown(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI E_Shelf *
|
EAPI E_Shelf *
|
||||||
e_shelf_zone_new(E_Zone *zone, char *name)
|
e_shelf_zone_new(E_Zone *zone, char *name, int popup, int layer)
|
||||||
{
|
{
|
||||||
E_Shelf *es;
|
E_Shelf *es;
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
|
@ -32,21 +32,43 @@ e_shelf_zone_new(E_Zone *zone, char *name)
|
||||||
|
|
||||||
/* FIXME: geometry, layer and style shoudl be loaded from config for this
|
/* FIXME: geometry, layer and style shoudl be loaded from config for this
|
||||||
named shelf */
|
named shelf */
|
||||||
es->popup = e_popup_new(zone, 0, 0, zone->w, 32);
|
es->x = 0;
|
||||||
e_popup_layer_set(es->popup, 255);
|
es->y = 0;
|
||||||
|
es->w = zone->w;
|
||||||
|
es->h = 32;
|
||||||
|
if (popup)
|
||||||
|
{
|
||||||
|
es->popup = e_popup_new(zone, es->x, es->y, es->w, es->h);
|
||||||
|
e_popup_layer_set(es->popup, layer);
|
||||||
|
es->ee = es->popup->ecore_evas;
|
||||||
|
es->evas = es->popup->evas;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
es->ee = zone->container->bg_ecore_evas;
|
||||||
|
es->evas = zone->container->bg_evas;
|
||||||
|
}
|
||||||
|
es->layer = layer;
|
||||||
|
es->zone = zone;
|
||||||
es->style = strdup("default");
|
es->style = strdup("default");
|
||||||
|
|
||||||
es->ee = es->popup->ecore_evas;
|
|
||||||
es->evas = es->popup->evas;
|
|
||||||
es->o_base = edje_object_add(es->evas);
|
es->o_base = edje_object_add(es->evas);
|
||||||
es->name = strdup(name);
|
es->name = strdup(name);
|
||||||
snprintf(buf, sizeof(buf), "shelf/%s/base", es->style);
|
snprintf(buf, sizeof(buf), "shelf/%s/base", es->style);
|
||||||
evas_object_resize(es->o_base, es->popup->w, es->popup->h);
|
evas_object_resize(es->o_base, es->w, es->h);
|
||||||
if (!e_theme_edje_object_set(es->o_base, "base/theme/shelf", buf))
|
if (!e_theme_edje_object_set(es->o_base, "base/theme/shelf", buf))
|
||||||
e_theme_edje_object_set(es->o_base, "base/theme/shelf", "shelf/default/base");
|
e_theme_edje_object_set(es->o_base, "base/theme/shelf", "shelf/default/base");
|
||||||
|
if (es->popup)
|
||||||
|
{
|
||||||
|
e_popup_edje_bg_object_set(es->popup, es->o_base);
|
||||||
|
e_popup_show(es->popup);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
|
||||||
|
evas_object_layer_set(es->o_base, layer);
|
||||||
|
}
|
||||||
evas_object_show(es->o_base);
|
evas_object_show(es->o_base);
|
||||||
e_popup_edje_bg_object_set(es->popup, es->o_base);
|
|
||||||
e_popup_show(es->popup);
|
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%i", shelf_id);
|
snprintf(buf, sizeof(buf), "%i", shelf_id);
|
||||||
shelf_id++;
|
shelf_id++;
|
||||||
|
@ -67,6 +89,80 @@ e_shelf_populate(E_Shelf *es)
|
||||||
e_gadcon_populate(es->gadcon);
|
e_gadcon_populate(es->gadcon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_shelf_move(E_Shelf *es, int x, int y)
|
||||||
|
{
|
||||||
|
E_OBJECT_CHECK(es);
|
||||||
|
E_OBJECT_TYPE_CHECK(es, E_GADMAN_SHELF_TYPE);
|
||||||
|
es->x = x;
|
||||||
|
es->y = y;
|
||||||
|
if (es->popup)
|
||||||
|
e_popup_move(es->popup, es->x, es->y);
|
||||||
|
else
|
||||||
|
evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_shelf_resize(E_Shelf *es, int w, int h)
|
||||||
|
{
|
||||||
|
E_OBJECT_CHECK(es);
|
||||||
|
E_OBJECT_TYPE_CHECK(es, E_GADMAN_SHELF_TYPE);
|
||||||
|
es->w = w;
|
||||||
|
es->h = h;
|
||||||
|
if (es->popup)
|
||||||
|
e_popup_resize(es->popup, es->w, es->h);
|
||||||
|
else
|
||||||
|
evas_object_resize(es->o_base, es->w, es->h);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_shelf_move_resize(E_Shelf *es, int x, int y, int w, int h)
|
||||||
|
{
|
||||||
|
E_OBJECT_CHECK(es);
|
||||||
|
E_OBJECT_TYPE_CHECK(es, E_GADMAN_SHELF_TYPE);
|
||||||
|
es->x = x;
|
||||||
|
es->y = y;
|
||||||
|
es->w = w;
|
||||||
|
es->h = h;
|
||||||
|
if (es->popup)
|
||||||
|
e_popup_move_resize(es->popup, es->x, es->y, es->w, es->h);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
|
||||||
|
evas_object_resize(es->o_base, es->w, es->h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_shelf_layer_set(E_Shelf *es, int layer)
|
||||||
|
{
|
||||||
|
E_OBJECT_CHECK(es);
|
||||||
|
E_OBJECT_TYPE_CHECK(es, E_GADMAN_SHELF_TYPE);
|
||||||
|
es->layer = layer;
|
||||||
|
if (es->popup)
|
||||||
|
e_popup_layer_set(es->popup, es->layer);
|
||||||
|
else
|
||||||
|
evas_object_layer_set(es->o_base, es->layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_shelf_save(E_Shelf *es)
|
||||||
|
{
|
||||||
|
E_OBJECT_CHECK(es);
|
||||||
|
E_OBJECT_TYPE_CHECK(es, E_GADMAN_SHELF_TYPE);
|
||||||
|
/* FIXME: find or create saved shelf node and then modify and queue a
|
||||||
|
* save
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_shelf_orient(E_Shelf *es, E_Gadcon_Orient orient)
|
||||||
|
{
|
||||||
|
E_OBJECT_CHECK(es);
|
||||||
|
E_OBJECT_TYPE_CHECK(es, E_GADMAN_SHELF_TYPE);
|
||||||
|
e_gadcon_orient(es->gadcon, orient);
|
||||||
|
}
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
static void
|
static void
|
||||||
_e_shelf_free(E_Shelf *es)
|
_e_shelf_free(E_Shelf *es)
|
||||||
|
@ -76,6 +172,6 @@ _e_shelf_free(E_Shelf *es)
|
||||||
E_FREE(es->name);
|
E_FREE(es->name);
|
||||||
E_FREE(es->style);
|
E_FREE(es->style);
|
||||||
evas_object_del(es->o_base);
|
evas_object_del(es->o_base);
|
||||||
e_object_del(E_OBJECT(es->popup));
|
if (es->popup) e_object_del(E_OBJECT(es->popup));
|
||||||
free(es);
|
free(es);
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,10 @@ typedef struct _E_Shelf E_Shelf;
|
||||||
struct _E_Shelf
|
struct _E_Shelf
|
||||||
{
|
{
|
||||||
E_Object e_obj_inherit;
|
E_Object e_obj_inherit;
|
||||||
|
int x, y, w, h;
|
||||||
|
int layer;
|
||||||
E_Popup *popup; /* NULL if its within an existing canvas */
|
E_Popup *popup; /* NULL if its within an existing canvas */
|
||||||
|
E_Zone *zone;
|
||||||
Evas_Object *o_base;
|
Evas_Object *o_base;
|
||||||
Ecore_Evas *ee;
|
Ecore_Evas *ee;
|
||||||
Evas *evas;
|
Evas *evas;
|
||||||
|
@ -28,8 +31,14 @@ struct _E_Shelf
|
||||||
|
|
||||||
EAPI int e_shelf_init(void);
|
EAPI int e_shelf_init(void);
|
||||||
EAPI int e_shelf_shutdown(void);
|
EAPI int e_shelf_shutdown(void);
|
||||||
EAPI E_Shelf *e_shelf_zone_new(E_Zone *zone, char *name);
|
EAPI E_Shelf *e_shelf_zone_new(E_Zone *zone, char *name, int popup, int layer);
|
||||||
EAPI void e_shelf_populate(E_Shelf *es);
|
EAPI void e_shelf_populate(E_Shelf *es);
|
||||||
|
EAPI void e_shelf_move(E_Shelf *es, int x, int y);
|
||||||
|
EAPI void e_shelf_resize(E_Shelf *es, int w, int h);
|
||||||
|
EAPI void e_shelf_move_resize(E_Shelf *es, int x, int y, int w, int h);
|
||||||
|
EAPI void e_shelf_layer_set(E_Shelf *es, int layer);
|
||||||
|
EAPI void e_shelf_save(E_Shelf *es);
|
||||||
|
EAPI void e_shelf_orient(E_Shelf *es, E_Gadcon_Orient orient);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -136,7 +136,13 @@ _button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||||
case E_GADCON_ORIENT_RIGHT:
|
case E_GADCON_ORIENT_RIGHT:
|
||||||
dir = E_MENU_POP_DIRECTION_LEFT;
|
dir = E_MENU_POP_DIRECTION_LEFT;
|
||||||
break;
|
break;
|
||||||
|
case E_GADCON_ORIENT_FLOAT:
|
||||||
|
case E_GADCON_ORIENT_CORNER_TL:
|
||||||
|
case E_GADCON_ORIENT_CORNER_TR:
|
||||||
|
case E_GADCON_ORIENT_CORNER_BL:
|
||||||
|
case E_GADCON_ORIENT_CORNER_BR:
|
||||||
default:
|
default:
|
||||||
|
dir = E_MENU_POP_DIRECTION_AUTO;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
e_menu_activate_mouse(inst->main_menu,
|
e_menu_activate_mouse(inst->main_menu,
|
||||||
|
|
Loading…
Reference in New Issue