diff --git a/README b/README index afcf41f..e2a2a2f 100644 --- a/README +++ b/README @@ -60,7 +60,7 @@ Ctrl+- = Font Size Down - Command Line Usage: enventor --help -enventor [input file] [-id image path] [-sd sound path] [-fd font path] +enventor [input file] [-id image path] [-sd sound path] [-fd font path] [-dd data path] * FOR ANY ISSUES PLEASE EMAIL * diff --git a/src/bin/config_data.c b/src/bin/config_data.c index 2751a0d..7cfc99a 100644 --- a/src/bin/config_data.c +++ b/src/bin/config_data.c @@ -9,9 +9,11 @@ struct config_s Eina_List *edc_img_path_list; Eina_List *edc_snd_path_list; Eina_List *edc_fnt_path_list; + Eina_List *edc_data_path_list; Eina_Strbuf *edc_img_path_buf; //pre-stored image paths for edc compile. Eina_Strbuf *edc_snd_path_buf; //pre-stored sound paths for edc compile. - Eina_Strbuf *edc_fnt_path_buf; //pre-stored sound paths for edc compile. + Eina_Strbuf *edc_fnt_path_buf; //pre-stored font paths for edc compile. + Eina_Strbuf *edc_data_path_buf; //pre-stored data paths for edc compile. float font_size; @@ -68,7 +70,8 @@ config_edc_path_set(config_data *cd, const char *edc_path) config_data * config_init(const char *edc_path, const char *edc_img_path, - const char *edc_snd_path, const char *edc_fnt_path) + const char *edc_snd_path, const char *edc_fnt_path, + const char *edc_data_path) { config_data *cd = calloc(1, sizeof(config_data)); @@ -77,6 +80,7 @@ config_init(const char *edc_path, const char *edc_img_path, config_edc_img_path_set(cd, edc_img_path); config_edc_snd_path_set(cd, edc_snd_path); config_edc_fnt_path_set(cd, edc_fnt_path); + config_edc_data_path_set(cd, edc_data_path); cd->font_size = 1.0f; cd->linenumber = EINA_TRUE; @@ -111,9 +115,15 @@ config_term(config_data *cd) eina_stringshare_del(str); eina_list_free(cd->edc_fnt_path_list); + //free the data paths + EINA_LIST_FOREACH(cd->edc_data_path_list, l, str) + eina_stringshare_del(str); + eina_list_free(cd->edc_data_path_list); + if (cd->edc_img_path_buf) eina_strbuf_free(cd->edc_img_path_buf); if (cd->edc_snd_path_buf) eina_strbuf_free(cd->edc_snd_path_buf); if (cd->edc_fnt_path_buf) eina_strbuf_free(cd->edc_fnt_path_buf); + if (cd->edc_data_path_buf) eina_strbuf_free(cd->edc_data_path_buf); free(cd); } @@ -161,6 +171,49 @@ config_edc_snd_path_set(config_data *cd, const char *edc_snd_path) } } +void +config_edc_data_path_set(config_data *cd, const char *edc_data_path) +{ + //Free the existing paths + Eina_List *l; + const char *s; + EINA_LIST_FOREACH(cd->edc_data_path_list, l, s) + eina_stringshare_del(s); + cd->edc_data_path_list = eina_list_free(cd->edc_data_path_list); + + if (cd->edc_data_path_buf) eina_strbuf_free(cd->edc_data_path_buf); + cd->edc_data_path_buf = eina_strbuf_new(); + + //parse paths by ';' + const char *lex; + Eina_Stringshare *append; + + while(edc_data_path && (strlen(edc_data_path) > 0)) + { + lex = strstr(edc_data_path, ";"); + if (lex) + { + append = eina_stringshare_add_length(edc_data_path, + (lex - edc_data_path)); + cd->edc_data_path_list = eina_list_append(cd->edc_data_path_list, + append); + eina_strbuf_append(cd->edc_data_path_buf, " -fd "); + eina_strbuf_append(cd->edc_data_path_buf, append); + lex++; + } + else + { + append = eina_stringshare_add(edc_data_path); + cd->edc_data_path_list = eina_list_append(cd->edc_data_path_list, + append); + eina_strbuf_append(cd->edc_data_path_buf, " -fd "); + eina_strbuf_append(cd->edc_data_path_buf, append); + } + + edc_data_path = lex; + } +} + void config_edc_fnt_path_set(config_data *cd, const char *edc_fnt_path) { @@ -265,6 +318,12 @@ config_edc_snd_path_list_get(config_data *cd) return cd->edc_snd_path_list; } +const Eina_List * +config_edc_data_path_list_get(config_data *cd) +{ + return cd->edc_data_path_list; +} + const Eina_List * config_edc_fnt_path_list_get(config_data *cd) { @@ -285,6 +344,13 @@ config_edc_snd_path_get(config_data *cd) return eina_strbuf_string_get(cd->edc_snd_path_buf); } +const char * +config_edc_data_path_get(config_data *cd) +{ + if (!cd->edc_data_path_buf) return NULL; + return eina_strbuf_string_get(cd->edc_data_path_buf); +} + const char * config_edc_fnt_path_get(config_data *cd) { diff --git a/src/bin/main.c b/src/bin/main.c index 3e29c2d..b18049d 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -58,12 +58,13 @@ edje_cc_cmd_set(config_data *cd) { Eina_Strbuf *buf = eina_strbuf_new(); if (!buf) return EINA_FALSE; - eina_strbuf_append_printf(buf, "edje_cc -fastcomp %s %s %s %s %s", + eina_strbuf_append_printf(buf, "edje_cc -fastcomp %s %s %s %s %s %s", config_edc_path_get(cd), config_edj_path_get(cd), config_edc_img_path_get(cd), config_edc_snd_path_get(cd), - config_edc_fnt_path_get(cd)); + config_edc_fnt_path_get(cd), + config_edc_data_path_get(cd)); eina_strbuf_append(buf, " > /dev/null"); EDJE_CC_CMD = eina_strbuf_string_steal(buf); eina_strbuf_free(buf); @@ -387,12 +388,13 @@ config_update_cb(void *data, config_data *cd) static void args_dispatch(int argc, char **argv, char *edc_path, char *img_path, - char *snd_path, char *fnt_path) + char *snd_path, char *fnt_path, char *data_path) { Eina_Bool default_edc = EINA_TRUE; Eina_Bool default_img = EINA_TRUE; Eina_Bool default_snd = EINA_TRUE; Eina_Bool default_fnt = EINA_TRUE; + Eina_Bool default_data = EINA_TRUE; //No arguments. set defaults if (argc == 1) goto defaults; @@ -400,7 +402,7 @@ args_dispatch(int argc, char **argv, char *edc_path, char *img_path, //Help if ((argc >=2 ) && !strcmp(argv[1], "--help")) { - fprintf(stdout, "Usage: enventor [input file] [-id image path] [-sd sound path] [-fd font path]\n"); + fprintf(stdout, "Usage: enventor [input file] [-id image path] [-sd sound path] [-fd font path] [-dd data path]\n"); exit(0); } @@ -434,6 +436,11 @@ args_dispatch(int argc, char **argv, char *edc_path, char *img_path, sprintf(fnt_path, "%s", argv[cur_arg + 1]); default_fnt = EINA_FALSE; } + else if (!strcmp("-dd", argv[cur_arg])) + { + sprintf(data_path, "%s", argv[cur_arg + 1]); + default_data = EINA_FALSE; + } } cur_arg += 2; } @@ -443,6 +450,7 @@ defaults: if (default_img) sprintf(img_path, "%s/images", elm_app_data_dir_get()); if (default_snd) sprintf(snd_path, "%s/sounds", elm_app_data_dir_get()); if (default_fnt) sprintf(fnt_path, "%s/fonts", elm_app_data_dir_get()); + if (default_data) sprintf(data_path, "%s/data", elm_app_data_dir_get()); } static void @@ -452,9 +460,11 @@ config_data_set(app_data *ad, int argc, char **argv) char img_path[PATH_MAX]; char snd_path[PATH_MAX]; char fnt_path[PATH_MAX]; + char data_path[PATH_MAX]; - args_dispatch(argc, argv, edc_path, img_path, snd_path, fnt_path); - config_data *cd = config_init(edc_path, img_path, snd_path, fnt_path); + args_dispatch(argc, argv, edc_path, img_path, snd_path, fnt_path, data_path); + config_data *cd = config_init(edc_path, img_path, snd_path, fnt_path, + data_path); config_update_cb_set(cd, config_update_cb, ad); ad->cd = cd; } diff --git a/src/include/config_data.h b/src/include/config_data.h index 7d5f1fb..d482d5c 100644 --- a/src/include/config_data.h +++ b/src/include/config_data.h @@ -1,17 +1,21 @@ config_data *config_init(const char *edc_path, const char *edc_img_path, - const char *edc_snd_path, const char *edc_fnt_path); + const char *edc_snd_path, const char *edc_fnt_path, + const char *edc_data_path); void config_term(config_data *cd); const char *config_edc_path_get(config_data *cd); const char *config_edj_path_get(config_data *cd); const char *config_edc_img_path_get(config_data *cd); const char *config_edc_snd_path_get(config_data *cd); const char *config_edc_fnt_path_get(config_data *cd); +const char *config_edc_data_path_get(config_data *cd); void config_edc_img_path_set(config_data *cd, const char *edc_img_path); void config_edc_snd_path_set(config_data *cd, const char *edc_snd_path); void config_edc_fnt_path_set(config_data *cd, const char *edc_fnt_path); +void config_edc_data_path_set(config_data *cd, const char *edc_fnt_path); const Eina_List *config_edc_img_path_list_get(config_data *cd); const Eina_List *config_edc_snd_path_list_get(config_data *cd); const Eina_List *config_edc_fnt_path_list_get(config_data *cd); +const Eina_List *config_edc_data_path_list_get(config_data *cd); void config_update_cb_set(config_data *cd, void (*cb)(void *data, config_data *cd), void *data);