shelves... for holding gadcons. now i have a test shelf ... i can go back to
gadcon SVN revision: 20272
This commit is contained in:
parent
04146f9dd8
commit
19d04b63db
|
@ -52,7 +52,8 @@ default_ilist.edc \
|
|||
default_tlist.edc \
|
||||
default_slider.edc \
|
||||
default_exebuf.edc \
|
||||
default_textblock.edc
|
||||
default_textblock.edc \
|
||||
default_shelf.edc
|
||||
|
||||
default.edj: Makefile $(EXTRA_DIST)
|
||||
$(EDJE_CC) $(EDJE_FLAGS) \
|
||||
|
|
|
@ -61,5 +61,6 @@ collections {
|
|||
#include "default_slider.edc"
|
||||
#include "default_exebuf.edc"
|
||||
#include "default_textblock.edc"
|
||||
#include "default_shelf.edc"
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
images {
|
||||
image: "e17_menu_bg.png" COMP;
|
||||
image: "e17_menu_bg_border.png" COMP;
|
||||
}
|
||||
|
||||
group {
|
||||
name: "shelf/default/base";
|
||||
parts {
|
||||
part {
|
||||
name: "base";
|
||||
mouse_events: 0;
|
||||
type: RECT;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
relative: 0.0 1.0;
|
||||
offset: 1 0;
|
||||
to_y: "base2";
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
offset: -2 -2;
|
||||
}
|
||||
color: 221 221 221 255;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "base2";
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
max: 99999 48;
|
||||
align: 0.5 0.0;
|
||||
rel1 {
|
||||
relative: 0.0 0.0;
|
||||
offset: 1 1;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
offset: -2 -2;
|
||||
}
|
||||
image {
|
||||
normal: "e17_menu_bg.png";
|
||||
}
|
||||
fill {
|
||||
smooth: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "base3";
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
relative: 0.0 0.0;
|
||||
offset: 0 0;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
offset: -1 -1;
|
||||
}
|
||||
image {
|
||||
normal: "e17_menu_bg_border.png";
|
||||
border: 1 1 1 1;
|
||||
middle: 0;
|
||||
}
|
||||
fill {
|
||||
smooth: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "items";
|
||||
mouse_events: 0;
|
||||
type: SWALLOW;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
relative: 0.0 0.0;
|
||||
offset: 2 2;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
offset: -3 -3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -139,7 +139,8 @@ e_color_class.h \
|
|||
e_widget_textblock.h \
|
||||
e_apps_error.h \
|
||||
e_stolen.h \
|
||||
e_gadcon.h
|
||||
e_gadcon.h \
|
||||
e_shelf.h
|
||||
|
||||
enlightenment_src = \
|
||||
e_user.c \
|
||||
|
@ -260,6 +261,7 @@ e_widget_textblock.c \
|
|||
e_apps_error.c \
|
||||
e_stolen.c \
|
||||
e_gadcon.c \
|
||||
e_shelf.c \
|
||||
$(ENLIGHTENMENTHEADERS)
|
||||
|
||||
enlightenment_SOURCES = \
|
||||
|
|
|
@ -118,3 +118,4 @@
|
|||
#include "e_apps_error.h"
|
||||
#include "e_stolen.h"
|
||||
#include "e_gadcon.h"
|
||||
#include "e_shelf.h"
|
||||
|
|
|
@ -602,6 +602,20 @@ main(int argc, char **argv)
|
|||
_e_main_shutdown(-1);
|
||||
}
|
||||
_e_main_shutdown_push(e_color_class_shutdown);
|
||||
/* setup gadcon */
|
||||
if (!e_gadcon_init())
|
||||
{
|
||||
e_error_message_show(_("Enlightenment cannot set up its gadget control system."));
|
||||
_e_main_shutdown(-1);
|
||||
}
|
||||
_e_main_shutdown_push(e_gadcon_shutdown);
|
||||
/* setup shelves */
|
||||
if (!e_shelf_init())
|
||||
{
|
||||
e_error_message_show(_("Enlightenment cannot set up its shelf system."));
|
||||
_e_main_shutdown(-1);
|
||||
}
|
||||
_e_main_shutdown_push(e_shelf_shutdown);
|
||||
|
||||
if (ipc_failed)
|
||||
e_error_dialog_show(_("Enlightenment IPC setup error!"),
|
||||
|
@ -641,6 +655,39 @@ main(int argc, char **argv)
|
|||
/* run any testing code now we are set up */
|
||||
e_test();
|
||||
|
||||
/* FIXME: for testing only */
|
||||
if (0)
|
||||
{
|
||||
Evas_List *l, *l2, *l3, *managers;
|
||||
int snum;
|
||||
|
||||
snum = 0;
|
||||
for (l = e_manager_list(); l; l = l->next)
|
||||
{
|
||||
E_Manager *man;
|
||||
|
||||
man = l->data;
|
||||
for (l2 = man->containers; l2; l2 = l2->next)
|
||||
{
|
||||
E_Container *con;
|
||||
|
||||
con = l2->data;
|
||||
for (l3 = con->zones; l3; l3 = l3->next)
|
||||
{
|
||||
E_Zone *zone;
|
||||
E_Shelf *es;
|
||||
char buf[256];
|
||||
|
||||
zone = l3->data;
|
||||
snprintf(buf, sizeof(buf), "shelf.%i", snum);
|
||||
snum++;
|
||||
es = e_shelf_zone_new(zone, buf);
|
||||
e_shelf_populate(es);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* no longer starting up */
|
||||
starting = 0;
|
||||
/* start our main loop */
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#include "e.h"
|
||||
|
||||
static void _e_shelf_free(E_Shelf *es);
|
||||
|
||||
static Evas_List *shelves = NULL;
|
||||
|
||||
/* externally accessible functions */
|
||||
EAPI int
|
||||
e_shelf_init(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_shelf_shutdown(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI E_Shelf *
|
||||
e_shelf_zone_new(E_Zone *zone, char *name)
|
||||
{
|
||||
E_Shelf *es;
|
||||
char buf[1024];
|
||||
|
||||
es = E_OBJECT_ALLOC(E_Shelf, E_SHELF_TYPE, _e_shelf_free);
|
||||
if (!es) return NULL;
|
||||
|
||||
/* FIXME: geometry, layer and style shoudl be loaded from config for this
|
||||
named shelf */
|
||||
es->popup = e_popup_new(zone, 0, 0, zone->w, 32);
|
||||
e_popup_layer_set(es->popup, 255);
|
||||
es->style = strdup("default");
|
||||
|
||||
es->ee = es->popup->ecore_evas;
|
||||
es->evas = es->popup->evas;
|
||||
es->o_base = edje_object_add(es->evas);
|
||||
es->name = strdup(name);
|
||||
snprintf(buf, sizeof(buf), "shelf/%s/base", es->style);
|
||||
evas_object_resize(es->o_base, es->popup->w, es->popup->h);
|
||||
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");
|
||||
evas_object_show(es->o_base);
|
||||
e_popup_edje_bg_object_set(es->popup, es->o_base);
|
||||
e_popup_show(es->popup);
|
||||
|
||||
es->gadcon = e_gadcon_swallowed_new(es->o_base, "items");
|
||||
|
||||
shelves = evas_list_append(shelves, es);
|
||||
|
||||
return es;
|
||||
}
|
||||
|
||||
EAPI E_Shelf *
|
||||
e_shelf_inline_new(Ecore_Evas *ee, char *name)
|
||||
{
|
||||
E_Shelf *es;
|
||||
|
||||
/* not done yet */
|
||||
return NULL;
|
||||
|
||||
es = E_OBJECT_ALLOC(E_Shelf, E_SHELF_TYPE, _e_shelf_free);
|
||||
if (!es) return NULL;
|
||||
|
||||
return es;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_shelf_populate(E_Shelf *es)
|
||||
{
|
||||
E_OBJECT_CHECK(es);
|
||||
E_OBJECT_TYPE_CHECK(es, E_GADMAN_SHELF_TYPE);
|
||||
/* actually tell all the moduels that livbed in this shelf to populate it */
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
static void
|
||||
_e_shelf_free(E_Shelf *es)
|
||||
{
|
||||
shelves = evas_list_remove(shelves, es);
|
||||
e_object_del(E_OBJECT(es->gadcon));
|
||||
E_FREE(es->name);
|
||||
E_FREE(es->style);
|
||||
evas_object_del(es->o_base);
|
||||
e_object_del(E_OBJECT(es->popup));
|
||||
free(es);
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#ifdef E_TYPEDEFS
|
||||
|
||||
typedef struct _E_Shelf E_Shelf;
|
||||
|
||||
#else
|
||||
#ifndef E_SHELF_H
|
||||
#define E_SHELF_H
|
||||
|
||||
#define E_SHELF_TYPE 0xE0b01024
|
||||
|
||||
struct _E_Shelf
|
||||
{
|
||||
E_Object e_obj_inherit;
|
||||
E_Popup *popup; /* NULL if its within an existing canvas */
|
||||
Evas_Object *o_base;
|
||||
Ecore_Evas *ee;
|
||||
Evas *evas;
|
||||
E_Gadcon *gadcon;
|
||||
char *name;
|
||||
char *style;
|
||||
/* FIXME: we need a more powerful sizing/placement policy rather than just
|
||||
* x,y, width & height
|
||||
*/
|
||||
};
|
||||
|
||||
EAPI int e_shelf_init(void);
|
||||
EAPI int e_shelf_shutdown(void);
|
||||
EAPI E_Shelf *e_shelf_zone_new(E_Zone *zone, char *name);
|
||||
EAPI E_Shelf *e_shelf_inline_new(Ecore_Evas *ee, char *name);
|
||||
EAPI void e_shelf_populate(E_Shelf *es);
|
||||
|
||||
#endif
|
||||
#endif
|
Loading…
Reference in New Issue