forked from enlightenment/efl
edje - file set - use vpath for edje files now too like evas images
This commit is contained in:
parent
b39d869b7a
commit
90e8ad8d7d
|
@ -189,14 +189,25 @@ _edje_edit_efl_file_file_set(Eo *obj, Edje_Edit *eed, const char *file, const ch
|
||||||
* (GROUP parts or BOX/TABLE items pointing to non-existent/renamed
|
* (GROUP parts or BOX/TABLE items pointing to non-existent/renamed
|
||||||
* groups).
|
* groups).
|
||||||
*/
|
*/
|
||||||
|
Efl_Vpath_File *file_obj =
|
||||||
|
efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS, file);
|
||||||
|
efl_vpath_file_do(file_obj);
|
||||||
|
// XXX:FIXME: allow this to be async
|
||||||
|
efl_vpath_file_wait(file_obj);
|
||||||
|
file = efl_vpath_file_result_get(file_obj);
|
||||||
|
|
||||||
Eina_Bool int_ret = EINA_FALSE;
|
Eina_Bool int_ret = EINA_FALSE;
|
||||||
int_ret = efl_file_set(eo_super(obj, MY_CLASS), file, group);
|
int_ret = efl_file_set(eo_super(obj, MY_CLASS), file, group);
|
||||||
if (!int_ret)
|
if (!int_ret)
|
||||||
return ret;
|
{
|
||||||
|
eo_del(file_obj);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
eed->program_scripts = eina_hash_int32_new((Eina_Free_Cb)_edje_edit_program_script_free);
|
eed->program_scripts = eina_hash_int32_new((Eina_Free_Cb)_edje_edit_program_script_free);
|
||||||
|
|
||||||
ef = eet_open(file, EET_FILE_MODE_READ);
|
ef = eet_open(file, EET_FILE_MODE_READ);
|
||||||
|
eo_del(file_obj);
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "edje/scripts/embryo/source/%i",
|
snprintf(buf, sizeof(buf), "edje/scripts/embryo/source/%i",
|
||||||
eed->base->collection->id);
|
eed->base->collection->id);
|
||||||
|
|
|
@ -246,11 +246,18 @@ edje_file_collection_list(const char *file)
|
||||||
Eina_List *lst;
|
Eina_List *lst;
|
||||||
|
|
||||||
if ((!file) || (!*file)) return NULL;
|
if ((!file) || (!*file)) return NULL;
|
||||||
|
Efl_Vpath_File *file_obj =
|
||||||
|
efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS, file);
|
||||||
|
efl_vpath_file_do(file_obj);
|
||||||
|
// XXX:FIXME: allow this to be async
|
||||||
|
efl_vpath_file_wait(file_obj);
|
||||||
|
file = efl_vpath_file_result_get(file_obj);
|
||||||
f = eina_file_open(file, EINA_FALSE);
|
f = eina_file_open(file, EINA_FALSE);
|
||||||
|
|
||||||
lst = edje_mmap_collection_list(f);
|
lst = edje_mmap_collection_list(f);
|
||||||
|
|
||||||
eina_file_close(f);
|
eina_file_close(f);
|
||||||
|
eo_del(file_obj);
|
||||||
return lst;
|
return lst;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1412,11 +1419,6 @@ _edje_file_add(Edje *ed, const Eina_File *f)
|
||||||
ed->file = NULL;
|
ed->file = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
// FIXME: it will be actually better to remove ed->path.
|
|
||||||
ed->path = eina_stringshare_add(eina_file_filename_get(f));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -1660,6 +1660,8 @@ struct _Edje
|
||||||
|
|
||||||
double duration_scale;
|
double duration_scale;
|
||||||
|
|
||||||
|
Efl_Vpath_File *file_obj;
|
||||||
|
|
||||||
Eina_List *user_defined;
|
Eina_List *user_defined;
|
||||||
|
|
||||||
lua_State *L;
|
lua_State *L;
|
||||||
|
|
|
@ -50,6 +50,11 @@ _edje_object_eo_base_constructor(Eo *obj, Edje *ed)
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_edje_object_eo_base_destructor(Eo *obj, Edje *class_data)
|
_edje_object_eo_base_destructor(Eo *obj, Edje *class_data)
|
||||||
{
|
{
|
||||||
|
if (class_data->file_obj)
|
||||||
|
{
|
||||||
|
eo_del(class_data->file_obj);
|
||||||
|
class_data->file_obj = NULL;
|
||||||
|
}
|
||||||
eo_destructor(eo_super(obj, MY_CLASS));
|
eo_destructor(eo_super(obj, MY_CLASS));
|
||||||
eo_data_unref(obj, class_data->base);
|
eo_data_unref(obj, class_data->base);
|
||||||
}
|
}
|
||||||
|
@ -359,11 +364,28 @@ _edje_object_efl_file_file_set(Eo *obj, Edje *ed, const char *file, const char *
|
||||||
|
|
||||||
ret = EINA_FALSE;
|
ret = EINA_FALSE;
|
||||||
|
|
||||||
|
if (ed->file_obj)
|
||||||
|
{
|
||||||
|
eo_del(ed->file_obj);
|
||||||
|
ed->file_obj = NULL;
|
||||||
|
}
|
||||||
if (file)
|
if (file)
|
||||||
{
|
{
|
||||||
f = eina_file_open(file, EINA_FALSE);
|
const char *file2;
|
||||||
|
|
||||||
|
ed->file_obj = efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS, file);
|
||||||
|
efl_vpath_file_do(ed->file_obj);
|
||||||
|
// XXX:FIXME: allow this to be async
|
||||||
|
efl_vpath_file_wait(ed->file_obj);
|
||||||
|
file2 = efl_vpath_file_result_get(ed->file_obj);
|
||||||
|
|
||||||
|
f = eina_file_open(file2, EINA_FALSE);
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
|
eo_del(ed->file_obj);
|
||||||
|
ed->file_obj = NULL;
|
||||||
|
if (ed->path) eina_stringshare_del(ed->path);
|
||||||
|
ed->path = NULL;
|
||||||
ed->load_error = EDJE_LOAD_ERROR_DOES_NOT_EXIST;
|
ed->load_error = EDJE_LOAD_ERROR_DOES_NOT_EXIST;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -371,7 +393,23 @@ _edje_object_efl_file_file_set(Eo *obj, Edje *ed, const char *file, const char *
|
||||||
nested = eina_array_new(8);
|
nested = eina_array_new(8);
|
||||||
|
|
||||||
if (_edje_object_file_set_internal(obj, f, group, NULL, NULL, nested))
|
if (_edje_object_file_set_internal(obj, f, group, NULL, NULL, nested))
|
||||||
ret = EINA_TRUE;
|
{
|
||||||
|
if (file)
|
||||||
|
{
|
||||||
|
ed->path = eina_stringshare_add(file);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ed->path) eina_stringshare_del(ed->path);
|
||||||
|
ed->path = NULL;
|
||||||
|
}
|
||||||
|
ret = EINA_TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ed->path) eina_stringshare_del(ed->path);
|
||||||
|
ed->path = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
eina_array_free(nested);
|
eina_array_free(nested);
|
||||||
eina_file_close(f);
|
eina_file_close(f);
|
||||||
|
|
Loading…
Reference in New Issue