예제 #1
0
/**
 * Retrieves the key as a string.
 * @param   key The property key.
 * @return  Returns a character array in the form of 'key:type=value'.  @c NULL
 *          is returned if the property does not exist.
 * @ingroup Ecore_Config_Get_Group
 */
EAPI char               *
ecore_config_as_string_get(const char *key)
{
   Ecore_Config_Prop  *e;
   char               *val;
   char               *r;

   val = NULL;
   r = NULL;
   if (!(e = ecore_config_get(key)))
      ERR("no such property, \"%s\"...", key);
   else
     {
	switch (e->type)
	   {
	     case ECORE_CONFIG_NIL:
		val = strdup("<nil>");
		break;
	     case ECORE_CONFIG_INT:
		esprintf(&val, "%ld",    _ecore_config_int_get(e));
		break;
	     case ECORE_CONFIG_BLN:
		esprintf(&val, "%ld",    _ecore_config_boolean_get(e));
		break;
	     case ECORE_CONFIG_FLT:
		esprintf(&val, "%lf",    _ecore_config_float_get(e));
		break;
	     case ECORE_CONFIG_STR:
		esprintf(&val, "\"%s\"", _ecore_config_string_get(e));
		break;
	     case ECORE_CONFIG_RGB:
		esprintf(&val, "#%08x",  _ecore_config_int_get(e));
		break;
	     case ECORE_CONFIG_THM:
		esprintf(&val, "\"%s\"", _ecore_config_theme_get(e));
		break;
	     case ECORE_CONFIG_SCT:
		break;
	     default:
		esprintf(&r, "%s:unknown_type", key);
		break;
	   }
	if (val)
	   {
	     esprintf(&r, "%s:%s=%s", key, _ecore_config_type[e->type], val);
	     free(val);
	   }
     }
   return r;
}
예제 #2
0
void
_ecore_config_db_write(Ecore_Config_DB_File *db, Ecore_Config_Prop *e)
{
   char *prev_locale= NULL;
   char *val = NULL;
   char *r = NULL;
   int num;
   
   prev_locale = setlocale(LC_NUMERIC, "C");

   switch (e->type) 
     {
	case ECORE_CONFIG_INT:
	   esprintf(&val, "%i", _ecore_config_int_get(e));
	   break;
	case ECORE_CONFIG_BLN:
	   esprintf(&val, "%i", _ecore_config_boolean_get(e));
	   break;
	case ECORE_CONFIG_FLT:
	   esprintf(&val, "%16.16f", _ecore_config_float_get(e));
	   break;
	case ECORE_CONFIG_STR: 
	   val = _ecore_config_string_get(e);
	   break;
	case ECORE_CONFIG_THM:
	   val = _ecore_config_theme_get(e);
	   break;
	case ECORE_CONFIG_RGB:
	   val = _ecore_config_argbstr_get(e);
	   break;
	default:
	   WRN("Type %d not handled", e->type);
     }

   if (prev_locale)
     {
	setlocale(LC_NUMERIC, prev_locale);
     }
   
   if(val)
     {
	num = esprintf(&r, "%c%c%s%c", (char) e->type, 0, val, 0);
	if(num)
	  eet_write(db->ef, e->key, r, num, 1);
	free(r);
     }

   free(val);
}
예제 #3
0
/**
 * Returns a theme property.
 * @param   key The property key.
 * @return  The name of the theme the property refers to.  The function returns
 *          @c NULL if the property is not a theme or is not set.
 * @ingroup Ecore_Config_Get_Group
 */
EAPI char               *
ecore_config_theme_get(const char *key)
{
   return _ecore_config_theme_get( ecore_config_get(key) );
}