Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto
Dir : e17/proto/entropy/src Modified Files: entropy_config.c Log Message: * Migrate standard location structures and associated API to EET config. Much easier to deal with :) =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/entropy_config.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- entropy_config.c 19 Mar 2006 10:38:47 -0000 1.12 +++ entropy_config.c 20 Mar 2006 11:58:54 -0000 1.13 @@ -7,7 +7,7 @@ #include <Eet.h> #include <stdarg.h> -#define ENTROPY_CONFIG_VERSION 6 +#define ENTROPY_CONFIG_VERSION 9 static Entropy_Config* _Entropy_Config = NULL; @@ -15,6 +15,7 @@ static Eet_Data_Descriptor *_entropy_config_loaded_edd; static Eet_Data_Descriptor *_entropy_config_mime_binding_edd; static Eet_Data_Descriptor *_entropy_config_mime_binding_action_edd; +static Eet_Data_Descriptor *_entropy_config_structure_edd; void entropy_config_loaded_config_free() @@ -22,8 +23,11 @@ Evas_List *l, *l2; Entropy_Config_Mime_Binding* binding; Entropy_Config_Mime_Binding_Action* action; + Entropy_Config_Structure* structure; + + /*Free MIME bindings*/ for (l = _Entropy_Config->Loaded_Config->mime_bindings; l; ) { binding = l->data; @@ -46,6 +50,20 @@ } evas_list_free(_Entropy_Config->Loaded_Config->mime_bindings); + + /*Free Structure bindings*/ + for (l = _Entropy_Config->Loaded_Config->structures; l; ) { + structure = l->data; + + IF_FREE(structure->name); + IF_FREE(structure->uri); + IF_FREE(structure); + + l = l->next; + } + evas_list_free(_Entropy_Config->Loaded_Config->structures); + + free(_Entropy_Config->Loaded_Config); } @@ -100,6 +118,27 @@ EET_DATA_DESCRIPTOR_ADD_LIST(_entropy_config_mime_binding_edd, Entropy_Config_Mime_Binding, "actions", actions, _entropy_config_mime_binding_action_edd); + _entropy_config_structure_edd = + eet_data_descriptor_new("entropy_config_mime_binding", sizeof(Entropy_Config_Structure), + (void *(*)(void *))evas_list_next, + (void *(*)(void *, void *))evas_list_append, + (void *(*)(void *))evas_list_data, + (void *(*)(void *))evas_list_free, + (void (*) + (void *, + int (*)(void *, const char *, void *, void *), + void *))evas_hash_foreach, (void *(*)(void *, + const char + *, + void *)) + evas_hash_add, (void (*)(void *))evas_hash_free); + EET_DATA_DESCRIPTOR_ADD_BASIC(_entropy_config_structure_edd, Entropy_Config_Structure, + "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_entropy_config_structure_edd, Entropy_Config_Structure, + "uri", uri, EET_T_STRING); + + + _entropy_config_loaded_edd = eet_data_descriptor_new("entropy_config_loaded", sizeof(Entropy_Config_Loaded), @@ -117,6 +156,8 @@ evas_hash_add, (void (*)(void *))evas_hash_free); EET_DATA_DESCRIPTOR_ADD_LIST(_entropy_config_loaded_edd, Entropy_Config_Loaded, "mime_bindings", mime_bindings, _entropy_config_mime_binding_edd); + EET_DATA_DESCRIPTOR_ADD_LIST(_entropy_config_loaded_edd, Entropy_Config_Loaded, "structures", structures, + _entropy_config_structure_edd); } @@ -197,6 +238,18 @@ } } + +Entropy_Config_Structure* +entropy_config_structure_new(char* name, char* uri) +{ + Entropy_Config_Structure* structure = calloc(1,sizeof(Entropy_Config_Structure)); + + structure->name = strdup(name); + structure->uri = strdup(uri); + + return structure; +} + Entropy_Config_Mime_Binding* entropy_config_binding_new(char* mime_type, Entropy_Config_Mime_Binding_Action* action1, ...) { @@ -277,70 +330,10 @@ //Does the config dir exist? if (stat(_Entropy_Config->config_dir_and_file_eet, &eetstat)) { //Make the dir.. - mimes->config_version = ENTROPY_CONFIG_VERSION; - mimes->mime_bindings = evas_list_append(mimes->mime_bindings, - entropy_config_binding_new("image/jpeg", - entropy_config_binding_action_new("Exhibit (Single File)", "exhibit", "\%pf"), - entropy_config_binding_action_new("Exhibit (Directory)", "exhibit", "\%p"), - NULL - )); - mimes->mime_bindings = evas_list_append(mimes->mime_bindings, - entropy_config_binding_new("image/png", - entropy_config_binding_action_new("Exhibit (Single File)", "exhibit", "\%pf"), - entropy_config_binding_action_new("Exhibit (Directory)", "exhibit", "\%p"), - NULL - )); - - mimes->mime_bindings = evas_list_append(mimes->mime_bindings, - entropy_config_binding_new("image/gif", - entropy_config_binding_action_new("Exhibit (Single File)", "exhibit", "\%pf"), - entropy_config_binding_action_new("Exhibit (Directory)", "exhibit", "\%p"), - NULL - )); - - mimes->mime_bindings = evas_list_append(mimes->mime_bindings, - entropy_config_binding_new("text/csrc", - entropy_config_binding_action_new("Gvim", "gvim", "\%pf"), - NULL - )); - - mimes->mime_bindings = evas_list_append(mimes->mime_bindings, - entropy_config_binding_new("text/html", - entropy_config_binding_action_new("Firefox", "firefox", "\%pf"), - NULL - )); - mimes->mime_bindings = evas_list_append(mimes->mime_bindings, - entropy_config_binding_new("audio/x-mp3", - entropy_config_binding_action_new("Xmms", "xmms", "\%pf"), - entropy_config_binding_action_new("Mpg123 (via eVFS)", "evfscat \"%u\" | mpg123 -", ""), - NULL - )); - - mimes->mime_bindings = evas_list_append(mimes->mime_bindings, - entropy_config_binding_new("video/x-ms-wmv", - entropy_config_binding_action_new("MPlayer", "mplayer", "\%pf"), - entropy_config_binding_action_new("MPlayer (via evfs)", "evfscat \"%u\" | mplayer -cache 4096 -", ""), - entropy_config_binding_action_new("Xine", "xine", "%pf"), - NULL - )); - - mimes->mime_bindings = evas_list_append(mimes->mime_bindings, - entropy_config_binding_new("video/mpeg", - entropy_config_binding_action_new("MPlayer", "mplayer", "\%pf"), - entropy_config_binding_action_new("MPlayer (via evfs)", "evfscat \"%u\" | mplayer -cache 4096 -", ""), - entropy_config_binding_action_new("Xine", "xine", "%pf"), - NULL - )); - - mimes->mime_bindings = evas_list_append(mimes->mime_bindings, - entropy_config_binding_new("video/x-msvideo", - entropy_config_binding_action_new("MPlayer", "mplayer", "\%pf"), - entropy_config_binding_action_new("MPlayer (via evfs)", "evfscat \"%u\" | mplayer -cache 4096 -", ""), - entropy_config_binding_action_new("Xine", "xine", "%pf"), - NULL - )); + entropy_config_defaults_populate(mimes); + /*ecore_list_append(mime_type_actions, "application/msword:abiword"); ecore_list_append(mime_type_actions, "application/vnd.ms-excel:gnumeric");*/ @@ -494,72 +487,108 @@ - - /*Config helper functions*/ +void entropy_config_defaults_populate(Entropy_Config_Loaded* config) +{ + char* home; + char buf[PATH_MAX]; + + config->config_version = ENTROPY_CONFIG_VERSION; + config->mime_bindings = evas_list_append(config->mime_bindings, + entropy_config_binding_new("image/jpeg", + entropy_config_binding_action_new("Exhibit (Single File)", "exhibit", "\%pf"), + entropy_config_binding_action_new("Exhibit (Directory)", "exhibit", "\%p"), + NULL + )); + config->mime_bindings = evas_list_append(config->mime_bindings, + entropy_config_binding_new("image/png", + entropy_config_binding_action_new("Exhibit (Single File)", "exhibit", "\%pf"), + entropy_config_binding_action_new("Exhibit (Directory)", "exhibit", "\%p"), + NULL + )); + config->mime_bindings = evas_list_append(config->mime_bindings, + entropy_config_binding_new("image/gif", + entropy_config_binding_action_new("Exhibit (Single File)", "exhibit", "\%pf"), + entropy_config_binding_action_new("Exhibit (Directory)", "exhibit", "\%p"), + NULL + )); -Ecore_Hash * -entropy_config_standard_structures_parse (entropy_gui_component_instance * instance, - char *config) -{ - Ecore_Hash *ret = ecore_hash_new (ecore_str_hash, ecore_str_compare); + config->mime_bindings = evas_list_append(config->mime_bindings, + entropy_config_binding_new("text/csrc", + entropy_config_binding_action_new("Gvim", "gvim", "\%pf"), + NULL + )); - if (!strstr (config, "|")) { - char *name; - char *uri; + config->mime_bindings = evas_list_append(config->mime_bindings, + entropy_config_binding_new("text/html", + entropy_config_binding_action_new("Firefox", "firefox", "\%pf"), + NULL + )); - //printf("Simple case - only one object...\n"); + config->mime_bindings = evas_list_append(config->mime_bindings, + entropy_config_binding_new("audio/x-mp3", + entropy_config_binding_action_new("Xmms", "xmms", "\%pf"), + entropy_config_binding_action_new("Mpg123 (via eVFS)", "evfscat \"%u\" | mpg123 -", ""), + NULL + )); - name = strtok (config, ";"); - uri = strtok (NULL, ";"); + config->mime_bindings = evas_list_append(config->mime_bindings, + entropy_config_binding_new("video/x-ms-wmv", + entropy_config_binding_action_new("MPlayer", "mplayer", "\%pf"), + entropy_config_binding_action_new("MPlayer (via evfs)", "evfscat \"%u\" | mplayer -cache 4096 -", ""), + entropy_config_binding_action_new("Xine", "xine", "%pf"), + NULL + )); - ecore_hash_set(ret, strdup(name), strdup(uri)); + config->mime_bindings = evas_list_append(config->mime_bindings, + entropy_config_binding_new("video/mpeg", + entropy_config_binding_action_new("MPlayer", "mplayer", "\%pf"), + entropy_config_binding_action_new("MPlayer (via evfs)", "evfscat \"%u\" | mplayer -cache 4096 -", ""), + entropy_config_binding_action_new("Xine", "xine", "%pf"), + NULL + )); - } - else { - Ecore_List *objects = ecore_list_new (); - char *object; - char *name; - char *uri; + config->mime_bindings = evas_list_append(config->mime_bindings, + entropy_config_binding_new("video/x-msvideo", + entropy_config_binding_action_new("MPlayer", "mplayer", "\%pf"), + entropy_config_binding_action_new("MPlayer (via evfs)", "evfscat \"%u\" | mplayer -cache 4096 -", ""), + entropy_config_binding_action_new("Xine", "xine", "%pf"), + NULL + )); - //printf("Complex case, multiple objects...\n"); - object = strtok (config, "|"); - ecore_list_append (objects, strdup (object)); - while ((object = strtok (NULL, "|"))) { - ecore_list_append (objects, strdup (object)); - } + /*Add some default structures*/ + home = entropy_core_home_dir_get (entropy_core_get_core()); + snprintf(buf, PATH_MAX, "file://%s", home); + + config->structures = evas_list_append(config->structures, + entropy_config_structure_new("Computer", "file:///") + ); + config->structures = evas_list_append(config->structures, + entropy_config_structure_new("Home", buf) + ); - ecore_list_goto_first (objects); - while ((object = ecore_list_next (objects))) { - name = strtok (object, ";"); - uri = strtok (NULL, ";"); + - + +} - ecore_hash_set(ret, strdup(name), strdup(uri)); - free (object); - } - ecore_list_destroy (objects); - } - return ret; +Evas_List * +entropy_config_standard_structures_parse (entropy_gui_component_instance * instance, + char *config) +{ + return _Entropy_Config->Loaded_Config->structures; } void entropy_config_standard_structures_add (entropy_gui_component_instance * instance, char *name, char *uri) { - char *current_uri = - entropy_config_str_get ("layout_ewl_simple", "structure_bar"); - char new_uri[HEADER_CONFIG_MAX]; - - snprintf (new_uri, HEADER_CONFIG_MAX, "%s|%s;%s", current_uri, name, uri); - entropy_config_str_set ("layout_ewl_simple", "structure_bar", new_uri); - - entropy_free (current_uri); + _Entropy_Config->Loaded_Config->structures = evas_list_append(_Entropy_Config->Loaded_Config->structures, + entropy_config_structure_new(name,uri)); } void ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs