Edje_edit font_del

SVN revision: 48339
This commit is contained in:
Tiago Rezende Campos Falcao 2010-04-26 18:19:49 +00:00
parent f95de840fa
commit a68f8e5529
2 changed files with 107 additions and 0 deletions

View File

@ -742,6 +742,15 @@ edje_edit_font_add(
const char* alias ///< The file alias, or NULL to use filename
);
/**Remove a ttf font to the edje file.
* If font can't be deleted EINA_FALSE is returned.
*/
EAPI Eina_Bool ///@return EINA_TRUE on success or EINA_FALSE on failure
edje_edit_font_del(
Evas_Object *obj, ///< The edje object
const char* alias ///< The file alias
);
/**Get font name for a given part state. Remember to free the returned string using edje_edit_string_free().*/
EAPI const char * ///@return The name of the font used in the given part state
edje_edit_state_font_get(
@ -2223,6 +2232,17 @@ EAPI Eina_List * edje_edit_fonts_list_get(Evas_Object *obj);
*/
EAPI Eina_Bool edje_edit_font_add(Evas_Object *obj, const char *path, const char* alias);
/** Delete font from the edje file.
*
* The font will be removed from all the groups in the edje, not only the current one.
*
* @param obj Object being edited.
* @param alias The font alias
*
* @return EINA_TRUE if font deleted, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_font_del(Evas_Object *obj, const char* alias);
/** Get font name for a given part state.
*
* Remember to free the returned string using edje_edit_string_free().

View File

@ -4297,6 +4297,93 @@ edje_edit_font_add(Evas_Object *obj, const char* path, const char* alias)
return EINA_TRUE;
}
EAPI Eina_Bool
edje_edit_font_del(Evas_Object *obj, const char* alias)
{
Edje_Font_Directory_Entry *fnt;
GET_ED_OR_RETURN(EINA_FALSE);
INF("DEL FONT: %s\n", alias);
if (!alias) return EINA_FALSE;
if (!ed->file) return EINA_FALSE;
if (!ed->path) return EINA_FALSE;
if (!ed->file->font_dir)
return EINA_TRUE;
fnt = eina_hash_find(ed->file->font_hash, alias);
if (!fnt)
{
WRN("Unable to find font entry part \"%s\"", alias);
return EINA_TRUE;
}
ed->file->font_dir->entries = eina_list_remove(
ed->file->font_dir->entries,
fnt);
if (!eina_hash_del_by_key(ed->file->font_hash, alias))
{
ERR("Unable to remove font \"%s\" of fonts hash", alias);
ed->file->font_dir->entries = eina_list_append(
ed->file->font_dir->entries,
fnt);
return EINA_FALSE;
}
/* Erase font to edje file */
{
char entry[PATH_MAX];
Eet_File *eetf;
/* open the eet file */
eetf = eet_open(ed->path, EET_FILE_MODE_READ_WRITE);
if (!eetf)
{
ERR("Unable to open \"%s\" for writing output", ed->path);
eina_hash_direct_add(ed->file->font_hash, fnt->entry, fnt);
ed->file->font_dir->entries = eina_list_append(
ed->file->font_dir->entries,
fnt);
return EINA_FALSE;
}
snprintf(entry, sizeof(entry), "fonts/%s", alias);
if (eet_delete(eetf, entry) <= 0)
{
ERR("Unable to delete \"%s\" font entry", entry);
eet_close(eetf);
eina_hash_direct_add(ed->file->font_hash, fnt->entry, fnt);
ed->file->font_dir->entries = eina_list_append(
ed->file->font_dir->entries,
fnt);
return EINA_FALSE;
}
/* write the edje_file */
if (!_edje_edit_update_edje_file(ed, eetf))
{
eet_close(eetf);
eina_hash_direct_add(ed->file->font_hash, fnt->entry, fnt);
ed->file->font_dir->entries = eina_list_append(
ed->file->font_dir->entries,
fnt);
return EINA_FALSE;
}
eet_close(eetf);
}
free((char *)fnt->entry);
free((char *)fnt->path);
free(fnt);
return EINA_TRUE;
}
EAPI const char *
edje_edit_state_font_get(Evas_Object *obj, const char *part, const char *state, double value)
{