* Now gadman place the gadget when E say so, and not only on startup.

SVN revision: 37594
This commit is contained in:
Davide Andreoli 2008-11-12 01:14:18 +00:00
parent 022a2caf44
commit 1a5b14aa48
4 changed files with 38 additions and 19 deletions

View File

@ -215,7 +215,10 @@ e_gadcon_provider_register(const E_Gadcon_Client_Class *cc)
for (l = gadcons; l; l = l->next)
{
gc = l->data;
e_gadcon_populate_class(gc, cc);
if (gc->populate_class.func)
gc->populate_class.func(gc->populate_class.data, gc, cc);
else
e_gadcon_populate_class(gc, cc);
}
}
@ -370,6 +373,16 @@ e_gadcon_frame_request_callback_set(E_Gadcon *gc, Evas_Object *(*func) (void *da
gc->frame_request.data = data;
}
EAPI void
e_gadcon_populate_callback_set(E_Gadcon *gc, void (*func) (void *data, E_Gadcon *gc, const E_Gadcon_Client_Class *cc), void *data)
{
E_OBJECT_CHECK(gc);
E_OBJECT_TYPE_CHECK(gc, E_GADCON_TYPE);
gc->populate_class.func = func;
gc->populate_class.data = data;
}
EAPI void
e_gadcon_layout_policy_set(E_Gadcon *gc, E_Gadcon_Layout_Policy layout_policy)
{

View File

@ -83,6 +83,11 @@ struct _E_Gadcon
void (*func) (void *data, E_Gadcon_Client *gcc, E_Menu *menu);
void *data;
} menu_attach;
struct
{
void (*func) (void *data, E_Gadcon *gc, const E_Gadcon_Client_Class *cc);
void *data;
} populate_class;
E_Config_Dialog *config_dialog;
unsigned char editing : 1;
@ -196,6 +201,7 @@ EAPI void e_gadcon_swallowed_min_size_set(E_Gadcon *gc, Evas_Coord w
EAPI void e_gadcon_min_size_request_callback_set(E_Gadcon *gc, void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h), void *data);
EAPI void e_gadcon_size_request_callback_set(E_Gadcon *gc, void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h), void *data);
EAPI void e_gadcon_frame_request_callback_set(E_Gadcon *gc, Evas_Object *(*func) (void *data, E_Gadcon_Client *gcc, const char *style), void *data);
EAPI void e_gadcon_populate_callback_set(E_Gadcon *gc, void (*func) (void *data, E_Gadcon *gc, const E_Gadcon_Client_Class *cc), void *data);
EAPI void e_gadcon_layout_policy_set(E_Gadcon *gc, E_Gadcon_Layout_Policy layout_policy);
EAPI void e_gadcon_populate(E_Gadcon *gc);
EAPI void e_gadcon_unpopulate(E_Gadcon *gc);

View File

@ -74,23 +74,6 @@ gadman_init(E_Module *m)
/* Create 2 mover objects */
Man->mover = _create_mover(Man->gc);
Man->mover_top = _create_mover(Man->gc_top);
/* Start existing gadgets */
for (l = Man->gc->cf->clients; l; l = l->next)
{
E_Config_Gadcon_Client *cf_gcc;
if (!(cf_gcc = l->data)) continue;
gadman_gadget_place(cf_gcc, 0);
}
for (l = Man->gc_top->cf->clients; l; l = l->next)
{
E_Config_Gadcon_Client *cf_gcc;
if(!(cf_gcc = l->data)) continue;
gadman_gadget_place(cf_gcc, 1);
}
}
void
@ -127,6 +110,22 @@ gadman_shutdown(void)
Man = NULL;
}
void
gadman_populate_class(void *data, E_Gadcon *gc, const E_Gadcon_Client_Class *cc)
{
Eina_List *l;
for (l = gc->cf->clients; l; l = l->next)
{
E_Config_Gadcon_Client *cf_gcc;
if (!(cf_gcc = l->data)) continue;
printf(" cf_gcc name %s\n", cf_gcc->name);
if (cf_gcc->name && cc->name && !strcmp(cf_gcc->name, cc->name))
gadman_gadget_place(cf_gcc, (int)data);
}
}
E_Gadcon_Client *
gadman_gadget_place(E_Config_Gadcon_Client *cf, int ontop)
{
@ -494,6 +493,7 @@ _gadman_gadcon_new(const char* name, int ontop)
e_gadcon_zone_set(gc, e_zone_current_get(Man->container));
e_gadcon_util_menu_attach_func_set(gc, _attach_menu, NULL);
e_gadcon_populate_callback_set(gc, gadman_populate_class, (void*)ontop);
gc->id = 114 + ontop; // TODO what's this ??????? 114 is a random number
gc->edje.o_parent = NULL;

View File

@ -29,7 +29,7 @@ e_modapi_init(E_Module *m)
/* Set this module to be loaded after all other modules, or we don't see
modules loaded after this */
e_module_priority_set(m, -100);
e_module_priority_set(m, 100);
gadman_init(m);