rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=b3156626fc4b6489724baf4fb8e14b33e41d704b
commit b3156626fc4b6489724baf4fb8e14b33e41d704b Author: Vyacheslav Reutskiy <v.reuts...@samsung.com> Date: Thu Sep 29 17:57:43 2016 +0300 project manager2: add return value Extend results enum PM_Project_Result. Now project manager APIs return the enum value, it's helps show to user more detail info in case of any error. Change-Id: I42ad6c7ef07f496f636cc5f96c41902de11a2d97 --- src/bin/project_manager/project_manager2.c | 290 +++++++++++++++-------------- src/bin/project_manager/project_manager2.h | 58 +++--- 2 files changed, 185 insertions(+), 163 deletions(-) diff --git a/src/bin/project_manager/project_manager2.c b/src/bin/project_manager/project_manager2.c index 7482a32..417829e 100644 --- a/src/bin/project_manager/project_manager2.c +++ b/src/bin/project_manager/project_manager2.c @@ -41,6 +41,7 @@ ECORE_EXE_PIPE_ERROR | ECORE_EXE_PIPE_ERROR_LINE_BUFFERED static Eet_Compression compess_level = EET_COMPRESSION_HI; +static PM_Project_Result last_error = PM_PROJECT_LAST; struct _Project_Process_Data { @@ -48,8 +49,6 @@ struct _Project_Process_Data PM_Project_Progress_Cb func_progress; /** The end callback. See #PM_Project_End_Cb. */ PM_Project_End_Cb func_end; - /** The project process result. */ - PM_Project_Result result; /** The user data. */ void *data; /** The new project, was created in the Project process. This pointer will be @@ -157,7 +156,7 @@ _project_process_data_cleanup(Project_Process_Data *ppd) free(ppd); } -__UNUSED_RESULT__ static Eina_Bool +__UNUSED_RESULT__ static PM_Project_Result _project_special_group_add(Project *project) { Eina_Bool ret = true; @@ -167,8 +166,9 @@ _project_special_group_add(Project *project) assert(project != NULL); + last_error = PM_PROJECT_SUCCESS; if (edje_file_group_exists(project->saved_edj, EFLETE_INTERNAL_GROUP_NAME)) - return true; + return last_error; groups = edje_file_collection_list(project->saved_edj); ecore_evas = ecore_evas_buffer_new(0, 0); @@ -179,7 +179,7 @@ _project_special_group_add(Project *project) if (!editor_internal_group_add(obj)) { CRIT("Could not add Eflete spec group"); - ret = false; + last_error = PM_PROJECT_ADD_SPEC_GROUP_FAILED; } you_shall_pass_editor_signals(NULL); @@ -193,9 +193,9 @@ static Project * _project_create(Project_Process_Data *ppd) { Project *pro; - Eina_Bool error = false; char buf[PATH_MAX]; + last_error = PM_PROJECT_SUCCESS; _project_descriptor_init(ppd); snprintf(buf, sizeof(buf), "%s/%s", ppd->path, ppd->name); @@ -206,9 +206,9 @@ _project_create(Project_Process_Data *ppd) else { ERR("Could't create a project folder!"); - error = true; + last_error = PM_PROJECT_CREATE_PRO_FAILED; + return NULL; } - if (error) return NULL; pro = (Project *)mem_calloc(1, sizeof(Project)); pro->version = PROJECT_FILE_VERSION; @@ -220,7 +220,12 @@ _project_create(Project_Process_Data *ppd) snprintf(buf, sizeof(buf), "%s/%s/%s.pro", ppd->path, ppd->name, ppd->name); pro->pro_path = eina_stringshare_add(buf); pro->ef = eet_open(buf, EET_FILE_MODE_READ_WRITE); - DBG("Create a specific project file '%s': %s", buf, error ? "failed" : "success"); + if (!pro->ef) + { + CRIT("Failed to create a pro file '%s'", buf); + last_error = PM_PROJECT_CREATE_PRO_FAILED; + goto exit; + } pro->pro_fd = -1; ecore_file_mkdir(pro->develop_path); snprintf(buf, sizeof(buf), "%s/images", pro->develop_path); @@ -231,10 +236,12 @@ _project_create(Project_Process_Data *ppd) ecore_file_mkdir(buf); if (!eet_data_write(pro->ef, ppd->eed_project, PROJECT_FILE_KEY, pro, compess_level)) - error = true; + last_error = PM_PROJECT_WRITE_PRO_FAILED; _pm_project_descriptor_shutdown(ppd); - if (error) + +exit: + if (PM_PROJECT_SUCCESS != last_error) { ERR("Could't create a .pro file! ") eina_stringshare_del(pro->name); @@ -248,10 +255,9 @@ _project_create(Project_Process_Data *ppd) return pro; } -__UNUSED_RESULT__ static Eina_Bool +__UNUSED_RESULT__ static PM_Project_Result _project_dummy_sample_add(Project *project) { - Eina_Bool ret = true; char buf[PATH_MAX]; Eina_List *list, *l; Evas_Object *obj; @@ -260,6 +266,7 @@ _project_dummy_sample_add(Project *project) assert(project != NULL); + last_error = PM_PROJECT_SUCCESS; list = edje_file_collection_list(project->saved_edj); ecore_evas = ecore_evas_buffer_new(0, 0); obj = edje_edit_object_add(ecore_evas_get(ecore_evas)); @@ -273,7 +280,7 @@ _project_dummy_sample_add(Project *project) if (!strcmp(data, EFLETE_DUMMY_SAMPLE_NAME)) { edje_edit_string_list_free(list); - return true; + return last_error; } } edje_edit_string_list_free(list); @@ -283,19 +290,18 @@ _project_dummy_sample_add(Project *project) if (!editor_sound_sample_add(obj, EFLETE_DUMMY_SAMPLE_NAME, buf, false)) { CRIT("Could not add Efelte dummy sample"); - ret = false; + last_error = PM_PROJECT_ADD_SPEC_SAMPLE_FAILED; } you_shall_pass_editor_signals(NULL); ecore_evas_free(ecore_evas); - return ret; + return last_error; } -__UNUSED_RESULT__ static Eina_Bool +__UNUSED_RESULT__ static PM_Project_Result _project_dummy_image_add(Project *project) { - Eina_Bool ret = true; char buf[PATH_MAX]; Eina_List *list, *l; Evas_Object *obj; @@ -304,6 +310,7 @@ _project_dummy_image_add(Project *project) assert(project != NULL); + last_error = PM_PROJECT_SUCCESS; list = edje_file_collection_list(project->saved_edj); ecore_evas = ecore_evas_buffer_new(0, 0); obj = edje_edit_object_add(ecore_evas_get(ecore_evas)); @@ -317,7 +324,7 @@ _project_dummy_image_add(Project *project) if (!strcmp(data, EFLETE_DUMMY_IMAGE_NAME)) { edje_edit_string_list_free(list); - return true; + return last_error; } } edje_edit_string_list_free(list); @@ -327,39 +334,35 @@ _project_dummy_image_add(Project *project) if (!editor_image_add(obj, buf, false)) { CRIT("Could not add eflete dummy image"); - ret = false; + last_error = PM_PROJECT_ADD_SPEC_IMAGE_FAILED; } you_shall_pass_editor_signals(NULL); ecore_evas_free(ecore_evas); - return ret; + return last_error; } -static Eina_Bool +static PM_Project_Result _project_edj_file_copy(Project_Process_Data *ppd) { - Eina_Stringshare *src, *dst; - Eina_Bool result; - - src = eina_stringshare_ref(ppd->edj); - dst = eina_stringshare_ref(ppd->project->saved_edj); - result = eina_file_copy(src, dst, - EINA_FILE_COPY_PERMISSION | EINA_FILE_COPY_XATTR, - NULL, NULL); - DBG("Copy the .edj file to project folder."); - eina_stringshare_del(src); - eina_stringshare_del(dst); + if (eina_file_copy(ppd->edj, ppd->project->saved_edj, + EINA_FILE_COPY_PERMISSION | EINA_FILE_COPY_XATTR, + NULL, NULL)) + last_error = PM_PROJECT_SUCCESS; + else + last_error = PM_PROJECT_COPY_FILE_FAILED; - return result; + return last_error; } -static Eina_Bool +static PM_Project_Result _copy_meta_data_to_pro(Project_Process_Data *ppd) { Eet_File *ef; char *name, *authors, *version, *license, *comment; + last_error = PM_PROJECT_SUCCESS; ef = eet_open(ppd->edj, EET_FILE_MODE_READ_WRITE); @@ -370,16 +373,15 @@ _copy_meta_data_to_pro(Project_Process_Data *ppd) comment = eet_read(ef, PROJECT_KEY_COMMENT, NULL); eet_close(ef); - if (!pm_project_meta_data_set(ppd->project, name, authors, - version, license, comment)) - return false; + last_error = pm_project_meta_data_set(ppd->project, name, authors, version, license, comment); if (name) free(name); if (authors) free(authors); if (version) free(version); if (license) free(license); if (comment) free(comment); - return true; + + return last_error; } static Eina_Bool @@ -393,19 +395,17 @@ static void _end_send(void *data) { PM_Project_End_Cb func; - PM_Project_Result result; Project *project; void *udata; Project_Process_Data *ppd = data; /** Copy the links to callback and meesage, to fast release worker resource. */ func = ppd->func_end; - result = ppd->result; udata = ppd->data; project = ppd->project; _project_process_data_cleanup(ppd); - func(udata, result, project); + func(udata, last_error, project); } #ifndef _WIN32 @@ -533,7 +533,7 @@ _exe_error_handler(void *data, { if (!strncmp(exe_err_msg->lines[i].line, "ERROR: ", sizeof("ERROR: "))) { - ppd->result = PM_PROJECT_ERROR; + last_error = PM_PROJECT_EXPORT_RESOURCE_FAILED; _end_send(ppd); } } @@ -552,14 +552,13 @@ _exporter_finish_handler(void *data, if (exporter_exit->exit_code != 0) { - ppd->result = PM_PROJECT_ERROR; + last_error = PM_PROJECT_EXPORT_RESOURCE_FAILED; _end_send(ppd); return ECORE_CALLBACK_DONE; } resource_manager_init(project); - ppd->result = PM_PROJECT_SUCCESS; _end_send(ppd); return ECORE_CALLBACK_DONE; } @@ -603,16 +602,16 @@ _project_close_internal(Project *project) #endif } -static Eina_Bool +static PM_Project_Result _project_open_internal(Project_Process_Data *ppd) { char cmd[PATH_MAX]; char *file_dir; #ifdef _WIN32 - HANDLE pro_fd = NULL; + HANDLE pro_fd = NULL; #else - int pro_fd; + int pro_fd; #endif Eet_File *ef; @@ -620,8 +619,9 @@ _project_open_internal(Project_Process_Data *ppd) int tmp_len; Edje_Load_Error error; - edje_file_cache_flush(); + last_error = PM_PROJECT_SUCCESS; + edje_file_cache_flush(); if (!_lock_try(ppd->path, true, &pro_fd)) { /* really this case is unlickly, but we need handle it */ @@ -632,14 +632,15 @@ _project_open_internal(Project_Process_Data *ppd) if (pro_fd != -1) close(pro_fd); #endif - return false; + return PM_PROJECT_LOCKED; } ef = eet_open(ppd->path, EET_FILE_MODE_READ_WRITE); if (!ef) { - ERR("Failed to open project file handler"); - return false; + ERR("Failed to open project file '%s'", ppd->path); + last_error = PM_PROJECT_OPEN_PRO_FAILED; + return last_error; } _project_descriptor_init(ppd); @@ -647,8 +648,9 @@ _project_open_internal(Project_Process_Data *ppd) _pm_project_descriptor_shutdown(ppd); if (!ppd->project) { - ERR("Failed to load project data"); - return false; + ERR("Failed to load project data from '%s'", ppd->path); + last_error = PM_PROJECT_READ_PRO_FAILED; + return last_error; } ppd->project->ef = ef; @@ -685,33 +687,44 @@ _project_open_internal(Project_Process_Data *ppd) { //message = eina_stringshare_add(_("Updating project files to version 3")); INFO("Updating project files to version 3"); - if (!_project_special_group_add(ppd->project)) - return false; + if (PM_PROJECT_SUCCESS != _project_special_group_add(ppd->project)) + { + CRIT("Update failed: Spec group is not added"); + return last_error; + } ppd->project->version = 3; } if (ppd->project->version < 4) /* upgrade to version 4 */ { //message = eina_stringshare_add(_("Updating project files to version 4")); INFO("Updating project files to version 4"); - if (!_project_dummy_image_add(ppd->project)) - return false; + if (PM_PROJECT_SUCCESS != _project_dummy_image_add(ppd->project)) + { + CRIT("Update failed: Spec image is not added"); + return last_error; + } ppd->project->version = 4; } if (ppd->project->version < 5) /* upgrade to version 4 */ { //message = eina_stringshare_add(_("Updating project files to version 5")); INFO("Updating project files to version 5"); - if (!_project_dummy_sample_add(ppd->project)) - return false; + if (PM_PROJECT_SUCCESS != _project_dummy_sample_add(ppd->project)) + { + CRIT("Update failed: Spec sample is not added"); + return last_error; + } ppd->project->version = 5; } - TODO("Add crash recovery prompt here") + TODO("Add crash recovery prompt here"); + TODO("replace this if statment to md5 check"); if (!edje_file_group_exists(ppd->project->saved_edj, EFLETE_INTERNAL_GROUP_NAME)) { CRIT("Missing internal group '"EFLETE_INTERNAL_GROUP_NAME" in file %s\n", ppd->project->saved_edj); - return false; + last_error = PM_PROJECT_ERROR; + return last_error; } _project_dev_file_create(ppd->project); ppd->project->mmap_file = eina_file_open(ppd->project->dev, false); @@ -724,8 +737,9 @@ _project_open_internal(Project_Process_Data *ppd) error = edje_object_load_error_get(ppd->project->global_object); if (EDJE_LOAD_ERROR_NONE != error) { - CRIT("Could not load internal object: %s\n", edje_load_error_str(error)); - return false; + CRIT("Could not load internal object: %s\n", edje_load_error_str(error)); + last_error = PM_PROJECT_LOAD_INTERNAL_OBJ_FAILED; + return last_error; } pm_project_meta_data_get(ppd->project, &ppd->project->name, NULL, NULL, NULL, NULL); @@ -746,10 +760,10 @@ _project_open_internal(Project_Process_Data *ppd) free(file_dir); - return true; + return last_error; } -Eina_Bool +PM_Project_Result pm_project_open(const char *path, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, @@ -757,7 +771,6 @@ pm_project_open(const char *path, { Project_Process_Data *ppd; char *spath; - Eina_Bool ret = true; assert(path != NULL); @@ -769,16 +782,15 @@ pm_project_open(const char *path, ppd->func_end = func_end; ppd->data = (void *)data; - if (!_project_open_internal(ppd)) + if (PM_PROJECT_SUCCESS != _project_open_internal(ppd)) { Project *project = ppd->project; _project_process_data_cleanup(ppd); _project_close_internal(project); - ret = false; } free(spath); - return ret; + return last_error; } static Eina_Bool @@ -796,12 +808,12 @@ _edje_pick_finish_handler(void *data, _ecore_event_handlers_del(ppd); ecore_file_cp(ppd->edj, ppd->project->saved_edj); - if (!_project_special_group_add(ppd->project) || - !_project_dummy_image_add(ppd->project) || - !_project_dummy_sample_add(ppd->project)) + if (PM_PROJECT_SUCCESS != _project_special_group_add(ppd->project) || + PM_PROJECT_SUCCESS != _project_dummy_image_add(ppd->project) || + PM_PROJECT_SUCCESS != _project_dummy_sample_add(ppd->project)) return ECORE_CALLBACK_CANCEL; - if (!_project_open_internal(ppd)) + if (PM_PROJECT_SUCCESS != _project_open_internal(ppd)) { _project_close_internal(ppd->project); return ECORE_CALLBACK_CANCEL; @@ -810,7 +822,7 @@ _edje_pick_finish_handler(void *data, return ECORE_CALLBACK_DONE; } -static Eina_Bool +static PM_Project_Result _project_import_edj(Project_Process_Data *ppd) { Eina_Stringshare *edj_in, *edj_out; @@ -827,19 +839,15 @@ _project_import_edj(Project_Process_Data *ppd) //eina_stringshare_del(msg); ppd->project = _project_create(ppd); - if (!ppd->project) - { - CRIT("Could not create project"); - return false; - } + return last_error; if (!_lock_try(ppd->project->pro_path, true, &ppd->project->pro_fd)) { /* really this case is unlickly, but we need handle it */ - ppd->result = PM_PROJECT_LOCKED; + last_error = PM_PROJECT_LOCKED; _end_send(ppd); - return false; + return last_error; } groups = edje_file_collection_list(ppd->edj); @@ -878,14 +886,16 @@ _project_import_edj(Project_Process_Data *ppd) CRIT("Can't load object"); free(arr[0]); free(arr); - return false; + last_error = PM_PROJECT_LOAD_GROUP_FAILED; + return last_error; } if (!editor_group_copy(obj, arr[1], arr[2], false)) { CRIT("Can not copy group %s, to %s", arr[1], arr[2]); free(arr[0]); free(arr); - return false; + last_error = PM_PROJECT_COPY_GROUP_FAILED; + return last_error; } you_shall_pass_editor_signals(NULL); eina_strbuf_append_printf(strbuf, " -g %s", arr[2]); @@ -915,19 +925,23 @@ _project_import_edj(Project_Process_Data *ppd) eina_stringshare_del(ppd->path); ppd->path = eina_stringshare_ref(ppd->project->pro_path); - if (!_project_edj_file_copy(ppd) || - !_copy_meta_data_to_pro(ppd) || - !_project_special_group_add(ppd->project) || - !_project_dummy_image_add(ppd->project) || - !_project_dummy_sample_add(ppd->project)) - return false; - if (!_project_open_internal(ppd)) - return false; + if (PM_PROJECT_SUCCESS != _project_edj_file_copy(ppd)) + return last_error; + if (PM_PROJECT_SUCCESS != _copy_meta_data_to_pro(ppd)) + return last_error; + if (PM_PROJECT_SUCCESS != _project_special_group_add(ppd->project)) + return last_error; + if (PM_PROJECT_SUCCESS != _project_dummy_image_add(ppd->project)) + return last_error; + if (PM_PROJECT_SUCCESS != _project_dummy_sample_add(ppd->project)) + return last_error; + if (PM_PROJECT_SUCCESS != _project_open_internal(ppd)) + return last_error; } - return true; + return last_error; } -Eina_Bool +PM_Project_Result pm_project_import_edj(const char *name, const char *path, const char *edj, @@ -936,7 +950,6 @@ pm_project_import_edj(const char *name, PM_Project_End_Cb func_end , const void *data) { - Eina_Bool ret = true; Project_Process_Data *ppd; assert(name != NULL); @@ -950,25 +963,23 @@ pm_project_import_edj(const char *name, ppd->func_progress = func_progress; ppd->func_end = func_end; ppd->data = (void *)data; - ppd->result = PM_PROJECT_LAST; ppd->name = eina_stringshare_add(name); ppd->path = eina_stringshare_add(spath); ppd->edj = eina_stringshare_add(sedj); ppd->widgets = list; - if (!_project_import_edj(ppd)) + if (PM_PROJECT_SUCCESS != _project_import_edj(ppd)) { Project *project = ppd->project; _project_process_data_cleanup(ppd); _project_close_internal(project); ecore_file_recursive_rm(spath); - ret = false; } free(spath); free(sedj); - return ret; + return last_error; } static Eina_Bool @@ -982,7 +993,7 @@ _finish_from_edje_cc(void *data, if (edje_cc_exit->exit_code != 0) { - ppd->result = PM_PROJECT_ERROR; + last_error = PM_PROJECT_BUILD_SOURCE_EDC_FAILED; _end_send(ppd); return ECORE_CALLBACK_DONE; } @@ -999,7 +1010,7 @@ _finish_from_edje_cc(void *data, return ECORE_CALLBACK_DONE; } -static Eina_Bool +static PM_Project_Result _project_import_edc(void *data) { Project_Process_Data *ppd = data; @@ -1007,6 +1018,7 @@ _project_import_edc(void *data) assert(ppd != NULL); + last_error = PM_PROJECT_SUCCESS; snprintf(buf, sizeof(buf), "Start import '%s' file as new project", ppd->edc); if (ppd->func_progress) ppd->func_progress(NULL, buf); @@ -1020,10 +1032,10 @@ _project_import_edc(void *data) ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_error_handler, ppd); ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _finish_from_edje_cc, ppd); - return true; + return last_error; } -Eina_Bool +PM_Project_Result pm_project_import_edc(const char *name, const char *path, const char *edc, @@ -1032,7 +1044,6 @@ pm_project_import_edc(const char *name, PM_Project_End_Cb func_end, const void *data) { - Eina_Bool ret = true; Project_Process_Data *ppd; assert(name != NULL); @@ -1046,33 +1057,32 @@ pm_project_import_edc(const char *name, ppd->func_progress = func_progress; ppd->func_end = func_end; ppd->data = (void *)data; - ppd->result = PM_PROJECT_LAST; ppd->name = eina_stringshare_add(name); ppd->path = eina_stringshare_add(spath); ppd->edc = eina_stringshare_add(sedc); ppd->build_options = eina_stringshare_add(import_options); - if (!_project_import_edc(ppd)) + if (PM_PROJECT_SUCCESS != _project_import_edc(ppd)) { Project *project = ppd->project; _project_process_data_cleanup(ppd); _project_close_internal(project); ecore_file_recursive_rm(spath); - ret = false; } free(spath); free(sedc); - return ret; + return last_error; } -Eina_Bool +PM_Project_Result pm_project_close(Project *project) { char buf[PATH_MAX]; assert(project != NULL); + last_error = PM_PROJECT_SUCCESS; snprintf(buf, sizeof(buf), "%s.backup", project->dev); ecore_file_unlink(buf); @@ -1094,7 +1104,7 @@ pm_project_close(Project *project) evas_object_smart_callback_call(ap.win, SIGNAL_PROJECT_CLOSED, NULL); free(project); - return true; + return last_error; } static Eina_Bool @@ -1104,13 +1114,13 @@ _copy_progress(void *data, unsigned long long done, unsigned long long total) if (done == total) { - ppd->result = PM_PROJECT_SUCCESS; + last_error = PM_PROJECT_SUCCESS; _end_send(ppd); } return true; } -Eina_Bool +PM_Project_Result pm_project_save(Project *project, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, @@ -1118,6 +1128,7 @@ pm_project_save(Project *project, { assert(project != NULL); + last_error = PM_PROJECT_SUCCESS; Project_Process_Data *ppd; ppd = mem_calloc(1, sizeof(Project_Process_Data)); ppd->func_progress = func_progress; @@ -1127,15 +1138,15 @@ pm_project_save(Project *project, if (!editor_save_all(ppd->project->global_object)) { ERR("Failed to save project."); - ppd->result = PM_PROJECT_ERROR; + last_error = PM_PROJECT_ERROR; _end_send(ppd); - return false; } - if (!eina_file_copy(ppd->project->dev, ppd->project->saved_edj, - EINA_FILE_COPY_PERMISSION | EINA_FILE_COPY_XATTR, _copy_progress, ppd)) - return false; + else if (!eina_file_copy(ppd->project->dev, ppd->project->saved_edj, + EINA_FILE_COPY_PERMISSION | EINA_FILE_COPY_XATTR, + _copy_progress, ppd)) + last_error = PM_PROJECT_COPY_FILE_FAILED; - return true; + return last_error; } void @@ -1168,7 +1179,7 @@ pm_project_meta_data_get(Project *project, #undef DATA_READ } -Eina_Bool +PM_Project_Result pm_project_meta_data_set(Project *project, const char *name, const char *authors, @@ -1177,11 +1188,11 @@ pm_project_meta_data_set(Project *project, const char *comment) { int bytes, size; - Eina_Bool res = true; assert(project != NULL); assert(project->ef != NULL); + last_error = PM_PROJECT_SUCCESS; #define DATA_WRITE(DATA, KEY) \ if (DATA) \ { \ @@ -1190,7 +1201,7 @@ pm_project_meta_data_set(Project *project, if (bytes <= 0 && size > 0) \ { \ CRIT("Could not write data '"#DATA"' size %i write %i\n", size, bytes); \ - res = false; \ + last_error = PM_PROJECT_WRITE_PRO_FAILED; \ }\ } @@ -1200,7 +1211,7 @@ pm_project_meta_data_set(Project *project, DATA_WRITE(license, PROJECT_KEY_LICENSE); DATA_WRITE(comment, PROJECT_KEY_COMMENT); - return res; + return last_error; } static Eina_Bool @@ -1210,12 +1221,12 @@ _group_export_finish_handler(void *data, { Project_Process_Data *ppd = data; - ppd->result = PM_PROJECT_SUCCESS; + last_error = PM_PROJECT_SUCCESS; _end_send(ppd); return ECORE_CALLBACK_DONE; } -Eina_Bool +PM_Project_Result pm_group_source_code_export(Project *project, Group2 *group, const char *path, @@ -1230,12 +1241,11 @@ pm_group_source_code_export(Project *project, assert(group != NULL); assert(path != NULL); - + last_error = PM_PROJECT_SUCCESS; ppd = mem_calloc(1, sizeof(Project_Process_Data)); ppd->func_progress = func_progress; ppd->func_end = func_end; ppd->data = (void *)data; - ppd->result = PM_PROJECT_LAST; snprintf(buf, sizeof(buf), EFLETE_BIN_PATH"eflete_exporter --edj %s --path %s -g %s -s", project->saved_edj, path, group->common.name); @@ -1246,10 +1256,10 @@ pm_group_source_code_export(Project *project, ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_error_handler, ppd); ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _group_export_finish_handler, ppd); - return true; + return last_error; } -Eina_Bool +PM_Project_Result pm_project_source_code_export(Project *project, const char *path, PM_Project_Progress_Cb func_progress, @@ -1262,12 +1272,11 @@ pm_project_source_code_export(Project *project, assert(project != NULL); assert(path != NULL); - + last_error = PM_PROJECT_SUCCESS; ppd = mem_calloc(1, sizeof(Project_Process_Data)); ppd->func_progress = func_progress; ppd->func_end = func_end; ppd->data = (void *)data; - ppd->result = PM_PROJECT_LAST; snprintf(buf, sizeof(buf), EFLETE_BIN_PATH"eflete_exporter --edj %s --path %s -s", project->saved_edj, path); @@ -1278,8 +1287,7 @@ pm_project_source_code_export(Project *project, ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_error_handler, ppd); ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _group_export_finish_handler, ppd); - return true; - + return last_error; } static Eina_Bool @@ -1293,9 +1301,10 @@ _develop_export_finish_handler(void *data, _ecore_event_handlers_del(ppd); + last_error = PM_PROJECT_SUCCESS; if (edje_pick_exit->exit_code != 0) { - ppd->result = PM_PROJECT_ERROR; + last_error = PM_PROJECT_EXPORT_DEVELOP_EDJ_FAILED; _end_send(ppd); return ECORE_CALLBACK_DONE; } @@ -1310,13 +1319,12 @@ _develop_export_finish_handler(void *data, snprintf(buf, sizeof(buf), _("Export to file '%s' successfull"), ppd->path); if (ppd->func_progress) ppd->func_progress(NULL, buf); - ppd->result = PM_PROJECT_SUCCESS; _end_send(ppd); return ECORE_CALLBACK_DONE; } -Eina_Bool +PM_Project_Result pm_project_develop_export(Project *project, const char *path, Eina_List *groups, @@ -1333,13 +1341,13 @@ pm_project_develop_export(Project *project, assert(path != NULL); assert(groups != NULL); + last_error = PM_PROJECT_SUCCESS; ppd = mem_calloc(1, sizeof(Project_Process_Data)); ppd->path = eina_stringshare_add(path); ppd->project = project; ppd->func_progress = func_progress; ppd->func_end = func_end; ppd->data = (void *)data; - ppd->result = PM_PROJECT_LAST; CRIT_ON_FAIL(editor_save_all(project->global_object)); @@ -1364,7 +1372,7 @@ pm_project_develop_export(Project *project, ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_error_handler, ppd); ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _develop_export_finish_handler, ppd); - return true; + return last_error; } static Eina_Bool @@ -1374,7 +1382,7 @@ _release_export_build_finish_handler(void *data, { Project_Process_Data *ppd = data; - ppd->result = PM_PROJECT_SUCCESS; + last_error = PM_PROJECT_SUCCESS; _end_send(ppd); return ECORE_CALLBACK_DONE; } @@ -1411,7 +1419,7 @@ _release_export_finish_handler(void *data, return ECORE_CALLBACK_DONE; } -Eina_Bool +PM_Project_Result pm_project_release_export(Project *project, const char *path, PM_Project_Progress_Cb func_progress, @@ -1424,6 +1432,7 @@ pm_project_release_export(Project *project, assert(project != NULL); assert(path != NULL); + last_error = PM_PROJECT_SUCCESS; ppd = mem_calloc(1, sizeof(Project_Process_Data)); ppd->path = eina_stringshare_add(path); ppd->project = project; @@ -1431,7 +1440,6 @@ pm_project_release_export(Project *project, ppd->func_end = func_end; ppd->edj = eina_stringshare_add(path); ppd->data = (void *)data; - ppd->result = PM_PROJECT_LAST; CRIT_ON_FAIL(editor_save_all(project->global_object)); @@ -1445,7 +1453,7 @@ pm_project_release_export(Project *project, ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_error_handler, ppd); ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _release_export_finish_handler, ppd); - return true; + return last_error; } Eina_Bool diff --git a/src/bin/project_manager/project_manager2.h b/src/bin/project_manager/project_manager2.h index cab5f80..fab6d87 100644 --- a/src/bin/project_manager/project_manager2.h +++ b/src/bin/project_manager/project_manager2.h @@ -144,6 +144,20 @@ enum _PM_Project_Result PM_PROJECT_CANCEL, PM_PROJECT_ERROR, PM_PROJECT_LOCKED, + PM_PROJECT_CREATE_PRO_FAILED, + PM_PROJECT_OPEN_PRO_FAILED, + PM_PROJECT_READ_PRO_FAILED, + PM_PROJECT_WRITE_PRO_FAILED, + PM_PROJECT_ADD_SPEC_GROUP_FAILED, + PM_PROJECT_ADD_SPEC_IMAGE_FAILED, + PM_PROJECT_ADD_SPEC_SAMPLE_FAILED, + PM_PROJECT_LOAD_INTERNAL_OBJ_FAILED, + PM_PROJECT_LOAD_GROUP_FAILED, + PM_PROJECT_COPY_GROUP_FAILED, + PM_PROJECT_COPY_FILE_FAILED, + PM_PROJECT_EXPORT_RESOURCE_FAILED, + PM_PROJECT_EXPORT_DEVELOP_EDJ_FAILED, + PM_PROJECT_BUILD_SOURCE_EDC_FAILED, PM_PROJECT_LAST }; @@ -202,11 +216,11 @@ typedef void * Project progress; * @param data The user data. * - * @return EINA_TRUE if project start open succesful, otherwise EINA_FALSE. + * @return The Project doing result * * @ingroup ProjectManager */ -Eina_Bool +PM_Project_Result pm_project_import_edj(const char *name, const char *path, const char *edj, @@ -232,13 +246,13 @@ pm_project_import_edj(const char *name, * Project progress; * @param data The user data. * - * @return EINA_TRUE if project start open succesful, otherwise EINA_FALSE. + * @return The Project doing result * * @note Function will not check a edc file, and directories. * * @ingroup ProjectManager */ -Eina_Bool +PM_Project_Result pm_project_import_edc(const char *name, const char *path, const char *edc, @@ -256,11 +270,11 @@ pm_project_import_edc(const char *name, * Project progress; * @param data The user data. * - * @return EINA_TRUE if project start open succesful, otherwise EINA_FALSE. + * @return The Project doing result * * @ingroup ProjectManager */ -Eina_Bool +PM_Project_Result pm_project_open(const char *path, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, @@ -275,11 +289,11 @@ pm_project_open(const char *path, * Project progress; * @param data The user data. * - * @return EINA_TRUE if project start save succesful, otherwise EINA_FALSE. + * @return The Project doing result * * @ingroup ProjectManager */ -Eina_Bool +PM_Project_Result pm_project_save(Project *project, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, @@ -291,11 +305,11 @@ pm_project_save(Project *project, * * @param project The current opened project. * - * @return EINA_TRUE if project save succesful, otherwise EINA_FALSE. + * @return The Project doing result * * @ingroup ProjectManager */ -Eina_Bool +PM_Project_Result pm_project_close(Project *project) EINA_ARG_NONNULL(1) __UNUSED_RESULT__; /** @@ -330,11 +344,11 @@ pm_project_meta_data_get(Project *project, * @param license A new project license, * @param comment A new project comment. * - * @return EINA_TRUE data is set, otherwise EINA_FALSE. + * @return The Project doing result * * @ingroup ProjectManager */ -Eina_Bool +PM_Project_Result pm_project_meta_data_set(Project *project, const char *name, const char *authors, @@ -352,11 +366,11 @@ pm_project_meta_data_set(Project *project, * @param func_end The user func for handle the end of export; * @param data The user data; * - * @return EINA_TRUE if project start export succesful, otherwise EINA_FALSE. + * @return The Project doing result * * @ingroup ProjectManager. */ -Eina_Bool +PM_Project_Result pm_group_source_code_export(Project *project, Group2 *group, const char *path, @@ -373,11 +387,11 @@ pm_group_source_code_export(Project *project, * @param pro The opened project; * @param dir_path directory path where source code would be exported; * - * @return EINA_TRUE if project start export succesful, otherwise EINA_FALSE. + * @return The Project doing result * * @ingroup ProjectManager. */ -Eina_Bool +PM_Project_Result pm_project_source_code_export(Project *project, const char *path, PM_Project_Progress_Cb func_progress, @@ -396,11 +410,11 @@ pm_project_source_code_export(Project *project, * Project progress; * @param data The user data. * - * @return EINA_TRUE on success, otherwise EINA_FALSE. + * @return The Project doing result * * @ingroup ProjectManager. */ -Eina_Bool +PM_Project_Result pm_project_develop_export(Project *pro, const char *path, Eina_List *groups, @@ -419,11 +433,11 @@ pm_project_develop_export(Project *pro, * Project progress; * @param data The user data. * - * @return EINA_TRUE on success, otherwise EINA_FALSE. + * @return The Project doing result * * @ingroup ProjectManager. */ -Eina_Bool +PM_Project_Result pm_project_release_export(Project *pro, const char *path, PM_Project_Progress_Cb func_progress, @@ -450,11 +464,11 @@ pm_lock_check(const char *path) EINA_ARG_NONNULL(1); * @param edj The path to edj file contains a group * @param group The group name for import * - * @return EINA_TRUE on success, otherwise EINA_FALSE + * @return The Project doing result * * @ingroup ProjectManager */ -Eina_Bool +PM_Project_Result pm_project_group_import(Project *project, const char *edj, const char *group); #endif /* PROJECT_MANAGER_H */ --