hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=64f7cccd5f4171ce0d43f4dd127ddeba3a6a200c
commit 64f7cccd5f4171ce0d43f4dd127ddeba3a6a200c Author: ChunEon Park <her...@hermet.pe.kr> Date: Sat Aug 9 14:29:51 2014 +0900 template: code refactoring. spllit out the template functions from edc_editor. --- src/bin/auto_comp.c | 2 +- src/bin/edc_editor.c | 198 ++++++----------------------------------------- src/bin/edc_parser.c | 4 +- src/bin/main.c | 8 +- src/bin/search.c | 4 +- src/bin/template.c | 177 +++++++++++++++++++++++++++++++++++++++++- src/include/edc_editor.h | 4 +- src/include/edc_parser.h | 2 +- src/include/template.h | 4 +- 9 files changed, 214 insertions(+), 189 deletions(-) diff --git a/src/bin/auto_comp.c b/src/bin/auto_comp.c index 56d4bf9..8bd05eb 100644 --- a/src/bin/auto_comp.c +++ b/src/bin/auto_comp.c @@ -541,7 +541,7 @@ autocomp_key_event_hook(const char *key) { insert_completed_text(ad); queue_reset(ad); - edit_syntax_color_partial_apply(ad->ed); + edit_syntax_color_partial_apply(ad->ed, -1); return EINA_TRUE; } diff --git a/src/bin/edc_editor.c b/src/bin/edc_editor.c index fd48fda..91e466c 100644 --- a/src/bin/edc_editor.c +++ b/src/bin/edc_editor.c @@ -1,6 +1,5 @@ #include <Elementary.h> #include "common.h" -#include "template_code.h" //FIXME: Make flexible const int MAX_LINE_DIGIT_CNT = 10; @@ -373,183 +372,11 @@ edit_syntax_color_full_apply(edit_data *ed, Eina_Bool force) } void -edit_syntax_color_partial_apply(edit_data *ed) +edit_syntax_color_partial_apply(edit_data *ed, double interval) { if (ed->syntax_color_lock > 0) ed->syntax_color_lock = 0; - syntax_color_partial_update(ed, SYNTAX_COLOR_DEFAULT_TIME); -} - -void -edit_template_insert(edit_data *ed) -{ - const char *paragh = parser_paragh_name_get(ed->pd, ed->en_edit); - if (!paragh) return; - - if (!strcmp(paragh, "parts")) - { - edit_template_part_insert(ed, EDJE_PART_TYPE_IMAGE); - return; - } - - int line_cnt; - char **t = NULL; - char buf[64]; - char buf2[12]; - - if (!strcmp(paragh, "part")) - { - line_cnt = TEMPLATE_DESC_LINE_CNT; - t = (char **) &TEMPLATE_DESC; - strcpy(buf2, "Description"); - } - else if (!strcmp(paragh, "programs")) - { - line_cnt = TEMPLATE_PROG_LINE_CNT; - t = (char **) &TEMPLATE_PROG; - strcpy(buf2, "Program"); - } - else if (!strcmp(paragh, "images")) - { - line_cnt = TEMPLATE_IMG_LINE_CNT; - t = (char **) &TEMPLATE_IMG; - strcpy(buf2, "Image File"); - } - else if (!strcmp(paragh, "collections")) - { - line_cnt = TEMPLATE_GROUP_LINE_CNT; - t = (char **) &TEMPLATE_GROUP; - strcpy(buf2, "Group"); - } - - if (!t) - { - stats_info_msg_update("Can't insert template code here. Move the cursor inside the \"Collections,Images,Parts,Part,Programs\" scope."); - return; - } - - int cursor_pos = elm_entry_cursor_pos_get(ed->en_edit); - elm_entry_cursor_line_begin_set(ed->en_edit); - int cursor_pos1 = elm_entry_cursor_pos_get(ed->en_edit); - int space = indent_space_get(syntax_indent_data_get(ed->sh), ed->en_edit); - - //Alloc Empty spaces - char *p = alloca(space + 1); - memset(p, ' ', space); - p[space] = '\0'; - - int i; - for (i = 0; i < (line_cnt - 1); i++) - { - elm_entry_entry_insert(ed->en_edit, p); - elm_entry_entry_insert(ed->en_edit, t[i]); - } - edit_line_increase(ed, (line_cnt -1)); - elm_entry_entry_insert(ed->en_edit, p); - elm_entry_entry_insert(ed->en_edit, t[i]); - - int cursor_pos2 = elm_entry_cursor_pos_get(ed->en_edit); - redoundo_entry_region_push(ed->rd, cursor_pos1, cursor_pos2); - - elm_entry_cursor_pos_set(ed->en_edit, cursor_pos); - - syntax_color_partial_update(ed, 0); - snprintf(buf, sizeof(buf), "Template code inserted. (%s)", buf2); - stats_info_msg_update(buf); -} - -int -edit_cur_indent_depth_get(edit_data *ed) -{ - return indent_space_get(syntax_indent_data_get(ed->sh), ed->en_edit); -} - -void -edit_template_part_insert(edit_data *ed, Edje_Part_Type type) -{ - if (type == EDJE_PART_TYPE_NONE) return; - - int cursor_pos = elm_entry_cursor_pos_get(ed->en_edit); - elm_entry_cursor_line_begin_set(ed->en_edit); - int cursor_pos1 = elm_entry_cursor_pos_get(ed->en_edit); - int space = indent_space_get(syntax_indent_data_get(ed->sh), ed->en_edit); - - //Alloc Empty spaces - char *p = alloca(space + 1); - memset(p, ' ', space); - p[space] = '\0'; - - int line_cnt; - char **t; - char buf[64]; - char part[20]; - - switch(type) - { - case EDJE_PART_TYPE_RECTANGLE: - line_cnt = TEMPLATE_PART_RECT_LINE_CNT; - t = (char **) &TEMPLATE_PART_RECT; - strcpy(part, "Rect"); - break; - case EDJE_PART_TYPE_TEXT: - line_cnt = TEMPLATE_PART_TEXT_LINE_CNT; - t = (char **) &TEMPLATE_PART_TEXT; - strcpy(part, "Text"); - break; - case EDJE_PART_TYPE_SWALLOW: - line_cnt = TEMPLATE_PART_SWALLOW_LINE_CNT; - t = (char **) &TEMPLATE_PART_SWALLOW; - strcpy(part, "Swallow"); - break; - case EDJE_PART_TYPE_TEXTBLOCK: - line_cnt = TEMPLATE_PART_TEXTBLOCK_LINE_CNT; - t = (char **) &TEMPLATE_PART_TEXTBLOCK; - strcpy(part, "Textblock"); - break; - case EDJE_PART_TYPE_SPACER: - line_cnt = TEMPLATE_PART_SPACER_LINE_CNT; - t = (char **) &TEMPLATE_PART_SPACER; - strcpy(part, "Spacer"); - break; - case EDJE_PART_TYPE_IMAGE: - case EDJE_PART_TYPE_NONE: - case EDJE_PART_TYPE_GRADIENT: - case EDJE_PART_TYPE_GROUP: - case EDJE_PART_TYPE_BOX: - case EDJE_PART_TYPE_TABLE: - case EDJE_PART_TYPE_EXTERNAL: - case EDJE_PART_TYPE_PROXY: - case EDJE_PART_TYPE_LAST: - line_cnt = TEMPLATE_PART_IMAGE_LINE_CNT; - t = (char **) &TEMPLATE_PART_IMAGE; - strcpy(part, "Image"); - break; - } - - elm_entry_entry_insert(ed->en_edit, p); - const char *first_line = template_part_first_line_get(); - elm_entry_entry_insert(ed->en_edit, first_line); - edit_line_increase(ed, 1); - - int i; - for (i = 0; i < (line_cnt - 1); i++) - { - elm_entry_entry_insert(ed->en_edit, p); - elm_entry_entry_insert(ed->en_edit, t[i]); - //Incease line by (line count - 1) - edit_line_increase(ed, 1); - } - - elm_entry_entry_insert(ed->en_edit, p); - elm_entry_entry_insert(ed->en_edit, t[i]); - - int cursor_pos2 = elm_entry_cursor_pos_get(ed->en_edit); - redoundo_entry_region_push(ed->rd, cursor_pos1, cursor_pos2); - - elm_entry_cursor_pos_set(ed->en_edit, cursor_pos); - - syntax_color_partial_update(ed, 0); - snprintf(buf, sizeof(buf), "Template code inserted. (%s Part)", part); - stats_info_msg_update(buf); + if (interval < 0) syntax_color_partial_update(ed, SYNTAX_COLOR_DEFAULT_TIME); + else syntax_color_partial_update(ed, interval); } static void @@ -875,6 +702,12 @@ edit_line_delete(edit_data *ed) edit_changed_set(ed, EINA_TRUE); } +int +edit_cur_indent_depth_get(edit_data *ed) +{ + return indent_space_get(syntax_indent_data_get(ed->sh), ed->en_edit); +} + static void edit_redoundo(edit_data *ed, Eina_Bool undo) { @@ -1261,6 +1094,12 @@ edit_edc_reload(edit_data *ed, const char *edc_path) } Eina_Stringshare * +edit_cur_paragh_get(edit_data *ed) +{ + return parser_paragh_name_get(ed->pd, ed->en_edit); +} + +Eina_Stringshare * edit_cur_prog_name_get(edit_data *ed) { return parser_cur_name_fast_get(ed->en_edit, "program"); @@ -1341,3 +1180,10 @@ edit_line_decrease(edit_data *ed, int cnt) if (ed->line_max < 1) line_init(ed); stats_line_num_update(ed->cur_line, ed->line_max); } + +void +edit_redoundo_region_push(edit_data *ed, int cursor_pos1, int cursor_pos2) +{ + redoundo_entry_region_push(ed->rd, cursor_pos1, cursor_pos2); +} + diff --git a/src/bin/edc_parser.c b/src/bin/edc_parser.c index 659c5fc..026b859 100644 --- a/src/bin/edc_parser.c +++ b/src/bin/edc_parser.c @@ -570,7 +570,7 @@ type_init_thread_cancel(void *data, Ecore_Thread *thread EINA_UNUSED) free(td); } -const char * +Eina_Stringshare * parser_paragh_name_get(parser_data *pd EINA_UNUSED, Evas_Object *entry) { //FIXME: list up groups @@ -650,7 +650,7 @@ parser_paragh_name_get(parser_data *pd EINA_UNUSED, Evas_Object *entry) { group_info *gi = &group_list[i]; if (!strncmp(cur, gi->str, gi->len)) - return gi->str; + return eina_stringshare_add_length(gi->str, gi->len); } } diff --git a/src/bin/main.c b/src/bin/main.c index 0a0df11..9a92346 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -70,7 +70,7 @@ auto_indentation_toggle() } static Eina_Bool -template_insert(app_data *ad, const char *key) +template_insert_patch(app_data *ad, const char *key) { Edje_Part_Type type; @@ -101,7 +101,7 @@ template_insert(app_data *ad, const char *key) else type = EDJE_PART_TYPE_NONE; - edit_template_part_insert(ad->ed, type); + template_part_insert(ad->ed, type); return ECORE_CALLBACK_DONE; } @@ -150,7 +150,7 @@ ctrl_func(app_data *ad, const char *key) //Template Code if (!strcmp(key, "t") || !strcmp(key, "T")) { - edit_template_insert(ad->ed); + template_insert(ad->ed); return ECORE_CALLBACK_DONE; } //Full Edit View @@ -198,7 +198,7 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev) if (ad->ctrl_pressed) { - if (ad->shift_pressed) return template_insert(ad, event->key); + if (ad->shift_pressed) return template_insert_patch(ad, event->key); else return ctrl_func(ad, event->key); } diff --git a/src/bin/search.c b/src/bin/search.c index bf652eb..3d270da 100644 --- a/src/bin/search.c +++ b/src/bin/search.c @@ -298,7 +298,7 @@ win_unfocused_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { search_data *sd = g_sd; - edit_syntax_color_partial_apply(sd->ed); + edit_syntax_color_partial_apply(sd->ed, -1); sd->syntax_color--; } @@ -427,7 +427,7 @@ search_close(void) while (sd->syntax_color > 0) { - edit_syntax_color_partial_apply(sd->ed); + edit_syntax_color_partial_apply(sd->ed, -1); sd->syntax_color--; } diff --git a/src/bin/template.c b/src/bin/template.c index d44a396..951ac07 100644 --- a/src/bin/template.c +++ b/src/bin/template.c @@ -1,10 +1,11 @@ #include <Elementary.h> #include "common.h" +#include "template_code.h" const char *NAME_SEED = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; const int NAME_SEED_LEN = 52; -const char * +static const char * template_part_first_line_get(void) { static char buf[40]; @@ -18,3 +19,177 @@ template_part_first_line_get(void) return (const char *) buf; } + +void +template_insert(edit_data *ed) +{ + Evas_Object *entry = edit_entry_get(ed); + Eina_Stringshare *paragh = edit_cur_paragh_get(ed); + if (!paragh) return; + + if (!strcmp(paragh, "parts")) + { + template_part_insert(ed, EDJE_PART_TYPE_IMAGE); + goto end; + } + + int line_cnt; + char **t = NULL; + char buf[64]; + char buf2[12]; + + if (!strcmp(paragh, "part")) + { + line_cnt = TEMPLATE_DESC_LINE_CNT; + t = (char **) &TEMPLATE_DESC; + strcpy(buf2, "Description"); + } + else if (!strcmp(paragh, "programs")) + { + line_cnt = TEMPLATE_PROG_LINE_CNT; + t = (char **) &TEMPLATE_PROG; + strcpy(buf2, "Program"); + } + else if (!strcmp(paragh, "images")) + { + line_cnt = TEMPLATE_IMG_LINE_CNT; + t = (char **) &TEMPLATE_IMG; + strcpy(buf2, "Image File"); + } + else if (!strcmp(paragh, "collections")) + { + line_cnt = TEMPLATE_GROUP_LINE_CNT; + t = (char **) &TEMPLATE_GROUP; + strcpy(buf2, "Group"); + } + + if (!t) + { + stats_info_msg_update("Can't insert template code here. Move the cursor inside the \"Collections,Images,Parts,Part,Programs\" scope."); + goto end; + } + + int cursor_pos = elm_entry_cursor_pos_get(entry); + elm_entry_cursor_line_begin_set(entry); + int cursor_pos1 = elm_entry_cursor_pos_get(entry); + int space = edit_cur_indent_depth_get(ed); + + //Alloc Empty spaces + char *p = alloca(space + 1); + memset(p, ' ', space); + p[space] = '\0'; + + int i; + for (i = 0; i < (line_cnt - 1); i++) + { + elm_entry_entry_insert(entry, p); + elm_entry_entry_insert(entry, t[i]); + } + edit_line_increase(ed, (line_cnt -1)); + elm_entry_entry_insert(entry, p); + elm_entry_entry_insert(entry, t[i]); + + int cursor_pos2 = elm_entry_cursor_pos_get(entry); + edit_redoundo_region_push(ed, cursor_pos1, cursor_pos2); + + elm_entry_cursor_pos_set(entry, cursor_pos); + + edit_syntax_color_partial_apply(ed, 0); + snprintf(buf, sizeof(buf), "Template code inserted. (%s)", buf2); + stats_info_msg_update(buf); + +end: + eina_stringshare_del(paragh); +} + +void +template_part_insert(edit_data *ed, Edje_Part_Type type) +{ + if (type == EDJE_PART_TYPE_NONE) return; + + Evas_Object *entry = edit_entry_get(ed); + + int cursor_pos = elm_entry_cursor_pos_get(entry); + elm_entry_cursor_line_begin_set(entry); + int cursor_pos1 = elm_entry_cursor_pos_get(entry); + int space = edit_cur_indent_depth_get(ed); + + //Alloc Empty spaces + char *p = alloca(space + 1); + memset(p, ' ', space); + p[space] = '\0'; + + int line_cnt; + char **t; + char buf[64]; + char part[20]; + + switch(type) + { + case EDJE_PART_TYPE_RECTANGLE: + line_cnt = TEMPLATE_PART_RECT_LINE_CNT; + t = (char **) &TEMPLATE_PART_RECT; + strcpy(part, "Rect"); + break; + case EDJE_PART_TYPE_TEXT: + line_cnt = TEMPLATE_PART_TEXT_LINE_CNT; + t = (char **) &TEMPLATE_PART_TEXT; + strcpy(part, "Text"); + break; + case EDJE_PART_TYPE_SWALLOW: + line_cnt = TEMPLATE_PART_SWALLOW_LINE_CNT; + t = (char **) &TEMPLATE_PART_SWALLOW; + strcpy(part, "Swallow"); + break; + case EDJE_PART_TYPE_TEXTBLOCK: + line_cnt = TEMPLATE_PART_TEXTBLOCK_LINE_CNT; + t = (char **) &TEMPLATE_PART_TEXTBLOCK; + strcpy(part, "Textblock"); + break; + case EDJE_PART_TYPE_SPACER: + line_cnt = TEMPLATE_PART_SPACER_LINE_CNT; + t = (char **) &TEMPLATE_PART_SPACER; + strcpy(part, "Spacer"); + break; + case EDJE_PART_TYPE_IMAGE: + case EDJE_PART_TYPE_NONE: + case EDJE_PART_TYPE_GRADIENT: + case EDJE_PART_TYPE_GROUP: + case EDJE_PART_TYPE_BOX: + case EDJE_PART_TYPE_TABLE: + case EDJE_PART_TYPE_EXTERNAL: + case EDJE_PART_TYPE_PROXY: + case EDJE_PART_TYPE_LAST: + line_cnt = TEMPLATE_PART_IMAGE_LINE_CNT; + t = (char **) &TEMPLATE_PART_IMAGE; + strcpy(part, "Image"); + break; + } + + elm_entry_entry_insert(entry, p); + const char *first_line = template_part_first_line_get(); + elm_entry_entry_insert(entry, first_line); + edit_line_increase(ed, 1); + + int i; + for (i = 0; i < (line_cnt - 1); i++) + { + elm_entry_entry_insert(entry, p); + elm_entry_entry_insert(entry, t[i]); + //Incease line by (line count - 1) + edit_line_increase(ed, 1); + } + + elm_entry_entry_insert(entry, p); + elm_entry_entry_insert(entry, t[i]); + + int cursor_pos2 = elm_entry_cursor_pos_get(entry); + edit_redoundo_region_push(ed, cursor_pos1, cursor_pos2); + + elm_entry_cursor_pos_set(entry, cursor_pos); + + edit_syntax_color_partial_apply(ed, 0); + snprintf(buf, sizeof(buf), "Template code inserted. (%s Part)", part); + stats_info_msg_update(buf); +} + diff --git a/src/include/edc_editor.h b/src/include/edc_editor.h index 44d2219..89b1bad 100644 --- a/src/include/edc_editor.h +++ b/src/include/edc_editor.h @@ -19,11 +19,13 @@ void edit_line_delete(edit_data *ed); void edit_edc_reload(edit_data *ed, const char *edc_path); Eina_Stringshare *edit_cur_prog_name_get(edit_data *ed); Eina_Stringshare *edit_cur_part_name_get(edit_data *ed); +Eina_Stringshare *edit_cur_paragh_get(edit_data *ed); int edit_max_line_get(edit_data *ed); void edit_goto(edit_data *ed, int line); void edit_syntax_color_full_apply(edit_data *ed, Eina_Bool force); -void edit_syntax_color_partial_apply(edit_data *ed); +void edit_syntax_color_partial_apply(edit_data *ed, double interval); Evas_Object * edit_entry_get(edit_data *ed); void edit_line_increase(edit_data *ed, int cnt); void edit_line_decrease(edit_data *ed, int cnt); int edit_cur_indent_depth_get(edit_data *ed); +void edit_redoundo_region_push(edit_data *ed, int cursor_pos1, int cursor_pos2); diff --git a/src/include/edc_parser.h b/src/include/edc_parser.h index f8b2def..26edf40 100644 --- a/src/include/edc_parser.h +++ b/src/include/edc_parser.h @@ -14,7 +14,7 @@ void parser_cur_group_name_get(parser_data *pd, Evas_Object *entry, void (*cb)(v Eina_Stringshare *parser_cur_name_fast_get(Evas_Object *entry, const char *scope); Eina_Bool parser_type_name_compare(parser_data *pd, const char *str); attr_value *parser_attribute_get(parser_data *pd, const char *text, const char *cur); -const char * parser_paragh_name_get(parser_data *pd, Evas_Object *entry); +Eina_Stringshare *parser_paragh_name_get(parser_data *pd, Evas_Object *entry); char *parser_name_get(parser_data *pd, const char *cur); void parser_cancel(parser_data *pd); int parser_line_cnt_get(parser_data *pd EINA_UNUSED, const char *src); diff --git a/src/include/template.h b/src/include/template.h index 61c4216..0917da0 100644 --- a/src/include/template.h +++ b/src/include/template.h @@ -1 +1,3 @@ -const char *template_part_first_line_get(void); +void template_insert(edit_data *ed); +void template_part_insert(edit_data *ed, Edje_Part_Type type); + --