enventor - support data path set in edc compiling

This commit is contained in:
ChunEon Park 2013-08-28 13:16:34 +09:00
parent 77a9d74817
commit 9cc06885dc
4 changed files with 90 additions and 10 deletions

2
README
View File

@ -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 *

View File

@ -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)
{

View File

@ -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;
}

View File

@ -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);