forked from enlightenment/enlightenment
Functions to create new config and del config.
SVN revision: 27676
This commit is contained in:
parent
3f41c2b290
commit
ff30cfcfe3
|
@ -632,11 +632,13 @@ e_gadcon_dnd_window_get(E_Gadcon *gc)
|
|||
}
|
||||
|
||||
EAPI E_Config_Gadcon_Client *
|
||||
e_gadcon_client_config_get(E_Gadcon *gc, const char *name, const char *id)
|
||||
e_gadcon_client_config_new(E_Gadcon *gc, const char *name)
|
||||
{
|
||||
Evas_List *l;
|
||||
E_Config_Gadcon *cf_gc = NULL;
|
||||
E_Config_Gadcon_Client *cf_gcc = NULL;
|
||||
E_Config_Gadcon *cf_gc;
|
||||
E_Config_Gadcon_Client *cf_gcc;
|
||||
int id = 0;
|
||||
char buf[256];
|
||||
|
||||
E_OBJECT_CHECK_RETURN(gc, NULL);
|
||||
E_OBJECT_TYPE_CHECK_RETURN(gc, E_GADCON_TYPE, NULL);
|
||||
|
@ -647,12 +649,46 @@ e_gadcon_client_config_get(E_Gadcon *gc, const char *name, const char *id)
|
|||
for (l = cf_gc->clients; l; l = l->next)
|
||||
{
|
||||
cf_gcc = l->data;
|
||||
if ((!strcmp(cf_gcc->name, name)) &&
|
||||
(!strcmp(cf_gcc->id, id)))
|
||||
if (!strcmp(name, cf_gcc->name)) id++;
|
||||
}
|
||||
snprintf(buf, sizeof(buf), "%s.%s.%i", cf_gc->id, name, id);
|
||||
|
||||
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
|
||||
if (!cf_gcc) return NULL;
|
||||
cf_gcc->name = evas_stringshare_add(name);
|
||||
cf_gcc->id = evas_stringshare_add(buf);
|
||||
cf_gcc->geom.res = 800;
|
||||
cf_gcc->geom.size = 80;
|
||||
cf_gcc->geom.pos = cf_gcc->geom.res - cf_gcc->geom.size;
|
||||
cf_gcc->style = NULL;
|
||||
cf_gcc->autoscroll = 0;
|
||||
cf_gcc->resizable = 0;
|
||||
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
|
||||
e_config_save_queue();
|
||||
return cf_gcc;
|
||||
}
|
||||
|
||||
EAPI E_Config_Gadcon_Client *
|
||||
e_gadcon_client_config_get(E_Gadcon *gc, const char *name, const char *id)
|
||||
{
|
||||
Evas_List *l;
|
||||
E_Config_Gadcon *cf_gc = NULL;
|
||||
E_Config_Gadcon_Client *cf_gcc = NULL;
|
||||
|
||||
E_OBJECT_CHECK_RETURN(gc, NULL);
|
||||
E_OBJECT_TYPE_CHECK_RETURN(gc, E_GADCON_TYPE, NULL);
|
||||
|
||||
cf_gc = e_gadcon_config_get(gc->name, gc->id);
|
||||
if (!cf_gc) return NULL;
|
||||
for (l = cf_gc->clients; l; l = l->next)
|
||||
{
|
||||
cf_gcc = l->data;
|
||||
if (!strcmp(cf_gcc->id, id))
|
||||
{
|
||||
return cf_gcc;
|
||||
}
|
||||
}
|
||||
if (!name) return NULL;
|
||||
|
||||
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
|
||||
if (!cf_gcc) return NULL;
|
||||
|
@ -669,6 +705,27 @@ e_gadcon_client_config_get(E_Gadcon *gc, const char *name, const char *id)
|
|||
return cf_gcc;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_gadcon_client_config_del(E_Gadcon *gc, const char *id)
|
||||
{
|
||||
E_Config_Gadcon *cf_gc;
|
||||
E_Config_Gadcon_Client *cf_gcc;
|
||||
|
||||
cf_gc = e_gadcon_config_get(gc->name, gc->id);
|
||||
if (cf_gc)
|
||||
{
|
||||
cf_gcc = e_gadcon_client_config_get(gc, NULL, id);
|
||||
if (cf_gcc)
|
||||
{
|
||||
if (cf_gcc->name) evas_stringshare_del(cf_gcc->name);
|
||||
if (cf_gcc->id) evas_stringshare_del(cf_gcc->id);
|
||||
if (cf_gcc->style) evas_stringshare_del(cf_gcc->style);
|
||||
cf_gc->clients = evas_list_remove(cf_gc->clients, cf_gcc);
|
||||
free(cf_gcc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EAPI E_Gadcon_Client *
|
||||
e_gadcon_client_new(E_Gadcon *gc, const char *style, Evas_Object *base_obj)
|
||||
{
|
||||
|
@ -1903,29 +1960,16 @@ _e_gadcon_cb_drag_finished(E_Drag *drag, int dropped)
|
|||
// This should result in a reorder, not a remove.
|
||||
E_Gadcon_Client *gcc;
|
||||
E_Gadcon *gc;
|
||||
E_Config_Gadcon *cf_gc = NULL;
|
||||
E_Config_Gadcon_Client *cf_gcc;
|
||||
|
||||
|
||||
gcc = drag->data;
|
||||
gc = gcc->gadcon;
|
||||
cf_gc = e_gadcon_config_get(gc->name, gc->id);
|
||||
if (cf_gc)
|
||||
{
|
||||
cf_gcc = e_gadcon_client_config_get(gc, gcc->name, gcc->id);
|
||||
if (cf_gcc)
|
||||
{
|
||||
if (cf_gcc->name) evas_stringshare_del(cf_gcc->name);
|
||||
if (cf_gcc->id) evas_stringshare_del(cf_gcc->id);
|
||||
if (cf_gcc->style) evas_stringshare_del(cf_gcc->style);
|
||||
cf_gc->clients = evas_list_remove(cf_gc->clients, cf_gcc);
|
||||
free(cf_gcc);
|
||||
}
|
||||
}
|
||||
e_gadcon_client_config_del(gc, gcc->id);
|
||||
e_object_unref(E_OBJECT(drag->data));
|
||||
|
||||
e_gadcon_unpopulate(gc);
|
||||
e_gadcon_populate(gc);
|
||||
e_config_save_queue();
|
||||
e_gadcon_edit_begin(gc);
|
||||
}
|
||||
|
||||
/* a smart object JUST for gadcon */
|
||||
|
|
|
@ -178,7 +178,9 @@ EAPI void e_gadcon_util_menu_attach_func_set(E_Gadcon *gc, void (*fu
|
|||
EAPI void e_gadcon_dnd_window_set(E_Gadcon *gc, Ecore_X_Window win);
|
||||
EAPI Ecore_X_Window e_gadcon_dnd_window_get(E_Gadcon *gc);
|
||||
|
||||
EAPI E_Config_Gadcon_Client *e_gadcon_client_config_new(E_Gadcon *gc, const char *name);
|
||||
EAPI E_Config_Gadcon_Client *e_gadcon_client_config_get(E_Gadcon *gc, const char *name, const char *id);
|
||||
EAPI void e_gadcon_client_config_del(E_Gadcon *gc, const char *id);
|
||||
EAPI E_Gadcon_Client *e_gadcon_client_new(E_Gadcon *gc, const char *style, Evas_Object *base_obj);
|
||||
EAPI void e_gadcon_client_edit_begin(E_Gadcon_Client *gcc);
|
||||
EAPI void e_gadcon_client_edit_end(E_Gadcon_Client *gcc);
|
||||
|
|
|
@ -93,23 +93,12 @@ _cb_select_client_instance(void *data)
|
|||
static void
|
||||
_cb_add_instance(void *data, void *data2)
|
||||
{
|
||||
char buf[1024];
|
||||
int id = 0;
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
E_Config_Gadcon_Client *cf_gcc;
|
||||
Evas_List *l;
|
||||
|
||||
cfdata = data;
|
||||
if (!cfdata) return;
|
||||
|
||||
for (l = cfdata->cf_gc->clients; l; l = l->next)
|
||||
{
|
||||
cf_gcc = l->data;
|
||||
if (!strcmp(cfdata->name_add, cf_gcc->name)) id++;
|
||||
}
|
||||
snprintf(buf, sizeof(buf), "%s.%s.%i", cfdata->cf_gc->id, cfdata->name_add, id);
|
||||
|
||||
e_gadcon_client_config_get(cfdata->gc, cfdata->name_add, buf);
|
||||
e_gadcon_client_config_new(cfdata->gc, cfdata->name_add);
|
||||
|
||||
e_gadcon_unpopulate(cfdata->gc);
|
||||
e_gadcon_populate(cfdata->gc);
|
||||
|
@ -124,29 +113,12 @@ static void
|
|||
_cb_remove_instance(void *data, void *data2)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
Evas_List *l;
|
||||
int i;
|
||||
|
||||
cfdata = data;
|
||||
i = e_widget_ilist_selected_get(cfdata->o_instances);
|
||||
|
||||
for (l = cfdata->cf_gc->clients; l; l = l->next)
|
||||
{
|
||||
E_Config_Gadcon_Client *cf_gcc;
|
||||
|
||||
cf_gcc = l->data;
|
||||
if (!cf_gcc) continue;
|
||||
if (!cf_gcc->name) continue;
|
||||
if (!strcmp(cf_gcc->id, cfdata->id_remove))
|
||||
{
|
||||
if (cf_gcc->name) evas_stringshare_del(cf_gcc->name);
|
||||
if (cf_gcc->id) evas_stringshare_del(cf_gcc->id);
|
||||
if (cf_gcc->style) evas_stringshare_del(cf_gcc->style);
|
||||
cfdata->cf_gc->clients = evas_list_remove(cfdata->cf_gc->clients, cf_gcc);
|
||||
free(cf_gcc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
e_gadcon_client_config_del(cfdata->gc, cfdata->id_remove);
|
||||
|
||||
_load_selected_gadgets(cfdata);
|
||||
|
||||
|
|
Loading…
Reference in New Issue