diff --git a/README b/README index 817471d..9491f2f 100644 --- a/README +++ b/README @@ -56,9 +56,20 @@ Ctrl+. = Full Edje View / Split View Ctrl+W = Show/Hide Dummy Swallow Object Ctrl++ = Font Size Up Ctrl+- = Font Size Down -Ctrl+T = Insert Template Code - - +Ctrl+T = Insert Defaut Template Code +Ctrl+Shift+A = Insert Part Template Code: Table +Ctrl+Shift+B = Insert Part Template Code: Textblock +Ctrl+Shift+E = Insert Part Template Code: External +Ctrl+Shift+G = Insert Part Template Code: Gradient +Ctrl+Shift+I = Insert Part Template Code: Image +Ctrl+Shift+O = Insert Part Template Code: Group +Ctrl+Shift+P = Insert Part Template Code: Proxy +Ctrl+Shift+R = Insert Part Template Code: Rectangle +Ctrl+Shift+T = Insert Part Template Code: Text +Ctrl+Shift+S = Insert Part Template Code: Spacer +Ctrl+Shift+W = Insert Part Template Code: Swallow +Ctrl+Shift+X = Insert Part Template Code: Box + [Command Line Usage] enventor --help diff --git a/src/bin/edc_editor.c b/src/bin/edc_editor.c index a371802..d49d72e 100644 --- a/src/bin/edc_editor.c +++ b/src/bin/edc_editor.c @@ -4,6 +4,7 @@ //FIXME: Make flexible const int MAX_LINE_DIGIT_CNT = 10; +const double SYNTAX_COLOR_TIME = 0.25; struct editor_s { @@ -178,7 +179,8 @@ edit_changed_cb(void *data, Evas_Object *obj, void *event_info) if (!syntax_color) return; if (ed->syntax_color_timer) ecore_timer_del(ed->syntax_color_timer); - ed->syntax_color_timer = ecore_timer_add(0.25, syntax_color_timer_cb, ed); + ed->syntax_color_timer = ecore_timer_add(SYNTAX_COLOR_TIME, + syntax_color_timer_cb, ed); } static void @@ -260,8 +262,10 @@ edit_attr_candidate_show(edit_data *ed, attr_value *attr, int x, int y, const ch } void -edit_template_insert(edit_data *ed) +edit_template_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 space = indent_space_get(ed); @@ -271,18 +275,50 @@ edit_template_insert(edit_data *ed) memset(p, ' ', space); p[space] = '\0'; - int line_cnt = TEMPLATE_PART_LINE_CNT; + int line_cnt; + char **t; + + switch(type) + { + case EDJE_PART_TYPE_RECTANGLE: + line_cnt = TEMPLATE_PART_RECT_LINE_CNT; + t = (char **) &TEMPLATE_PART_RECT; + break; + case EDJE_PART_TYPE_TEXT: + line_cnt = TEMPLATE_PART_TEXT_LINE_CNT; + t = (char **) &TEMPLATE_PART_TEXT; + break; + case EDJE_PART_TYPE_SWALLOW: + line_cnt = TEMPLATE_PART_SWALLOW_LINE_CNT; + t = (char **) &TEMPLATE_PART_SWALLOW; + break; + case EDJE_PART_TYPE_TEXTBLOCK: + line_cnt = TEMPLATE_PART_TEXTBLOCK_LINE_CNT; + t = (char **) &TEMPLATE_PART_TEXTBLOCK; + break; + case EDJE_PART_TYPE_SPACER: + line_cnt = TEMPLATE_PART_SPACER_LINE_CNT; + t = (char **) &TEMPLATE_PART_SPACER; + break; + case EDJE_PART_TYPE_IMAGE: + defaut: + line_cnt = TEMPLATE_PART_IMAGE_LINE_CNT; + t = (char **) &TEMPLATE_PART_IMAGE; + break; + } + int i; for (i = 0; i < line_cnt; i++) { elm_entry_entry_insert(ed->en_edit, p); - elm_entry_entry_insert(ed->en_edit, TEMPLATE_PART[i]); + elm_entry_entry_insert(ed->en_edit, t[i]); } elm_entry_cursor_pos_set(ed->en_edit, cursor_pos); if (ed->syntax_color_timer) ecore_timer_del(ed->syntax_color_timer); - ed->syntax_color_timer = ecore_timer_add(0.25, syntax_color_timer_cb, ed); + ed->syntax_color_timer = ecore_timer_add(SYNTAX_COLOR_TIME, + syntax_color_timer_cb, ed); } static void diff --git a/src/bin/edc_parser.c b/src/bin/edc_parser.c index bf5ac9a..fafbe41 100644 --- a/src/bin/edc_parser.c +++ b/src/bin/edc_parser.c @@ -349,6 +349,33 @@ part_name_thread_cancel(void *data, Ecore_Thread *thread EINA_UNUSED) free(td); } +void +parser_current_paragh_name_get(parser_data *pd, Evas_Object *entry) +{ + const char *PARTS = "parts"; + const char *PART = "part"; + const char *DESC = "description"; + const char *PROGS = "programs"; + + Evas_Object *tb = elm_entry_textblock_get(entry); + char *text = (char *) evas_object_textblock_text_markup_get(tb); + if (!text) return; + + char *utf8 = elm_entry_markup_to_utf8(text); + if (!utf8) return; + + int cur_pos = elm_entry_cursor_pos_get(entry); + + char *p = utf8; + char *end = utf8 + cur_pos; + + while (p <= end) + { + + + } +} + void parser_part_name_get(parser_data *pd, Evas_Object *entry, void (*cb)(void *data, Eina_Stringshare *part_name), void *data) { diff --git a/src/bin/main.c b/src/bin/main.c index bfeb23c..32886a2 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -22,6 +22,7 @@ struct app_s Eio_Monitor *edc_monitor; Eina_Bool ctrl_pressed : 1; + Eina_Bool shift_pressed : 1; Eina_Bool menu_opened : 1; }; @@ -158,6 +159,8 @@ main_key_up_cb(void *data, int type EINA_UNUSED, void *ev) edit_editable_set(ad->ed, EINA_TRUE); ad->ctrl_pressed = EINA_FALSE; } + else if (!strcmp("Shift_L", event->keyname)) + ad->shift_pressed = EINA_FALSE; return ECORE_CALLBACK_PASS_ON; } @@ -195,6 +198,43 @@ auto_indentation_toggle(app_data *ad) config_auto_indent_set(ad->cd, toggle); } +static Eina_Bool +template_insert(app_data *ad, const char *keyname) +{ + Edje_Part_Type type; + + if (!strcmp(keyname, "a") || !strcmp(keyname, "A")) + type = EDJE_PART_TYPE_TABLE; + else if (!strcmp(keyname, "b") || !strcmp(keyname, "B")) + type = EDJE_PART_TYPE_TEXTBLOCK; + else if (!strcmp(keyname, "e") || !strcmp(keyname, "E")) + type = EDJE_PART_TYPE_EXTERNAL; + else if (!strcmp(keyname, "g") || !strcmp(keyname, "G")) + type = EDJE_PART_TYPE_GRADIENT; + else if (!strcmp(keyname, "i") || !strcmp(keyname, "I")) + type = EDJE_PART_TYPE_IMAGE; + else if (!strcmp(keyname, "o") || !strcmp(keyname, "O")) + type = EDJE_PART_TYPE_GROUP; + else if (!strcmp(keyname, "p") || !strcmp(keyname, "P")) + type = EDJE_PART_TYPE_PROXY; + else if (!strcmp(keyname, "r") || !strcmp(keyname, "R")) + type = EDJE_PART_TYPE_RECTANGLE; + else if (!strcmp(keyname, "t") || !strcmp(keyname, "T")) + type = EDJE_PART_TYPE_TEXT; + else if (!strcmp(keyname, "s") || !strcmp(keyname, "S")) + type = EDJE_PART_TYPE_SPACER; + else if (!strcmp(keyname, "w") || !strcmp(keyname, "W")) + type = EDJE_PART_TYPE_SWALLOW; + else if (!strcmp(keyname, "x") || !strcmp(keyname, "X")) + type = EDJE_PART_TYPE_BOX; + else + type = EDJE_PART_TYPE_NONE; + + edit_template_insert(ad->ed, type); + + return ECORE_CALLBACK_DONE; +} + static Eina_Bool ctrl_func(app_data *ad, const char *keyname) { @@ -213,12 +253,6 @@ ctrl_func(app_data *ad, const char *keyname) //Select All if (!strcmp(keyname, "a") || !strcmp(keyname, "A")) return ECORE_CALLBACK_PASS_ON; - //Template Code - if (!strcmp(keyname, "t") || !strcmp(keyname, "T")) - { - edit_template_insert(ad->ed); - return ECORE_CALLBACK_DONE; - } //Part Highlight if (!strcmp(keyname, "h") || !strcmp(keyname, "H")) { @@ -274,7 +308,18 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev) Ecore_Event_Key *event = ev; app_data *ad = data; - if (ad->ctrl_pressed) return ctrl_func(ad, event->keyname); + //Shift Key + if (!strcmp("Shift_L", event->keyname)) + { + ad->shift_pressed = EINA_TRUE; + return ECORE_CALLBACK_DONE; + } + + if (ad->ctrl_pressed) + { + if (ad->shift_pressed) return template_insert(ad, event->keyname); + else return ctrl_func(ad, event->keyname); + } //Main Menu if (!strcmp(event->keyname, "Escape")) diff --git a/src/bin/syntax_color.c b/src/bin/syntax_color.c index ce64ea1..6df2d4a 100644 --- a/src/bin/syntax_color.c +++ b/src/bin/syntax_color.c @@ -407,10 +407,12 @@ color_apply(color_data *cd, const char *src, int length, Eina_Bool realtime) COLOR_INSERT(strbuf, &src, length, &cur, &prev, "mouse_events", col3); COLOR_INSERT(strbuf, &src, length, &cur, &prev, "name", col3); COLOR_INSERT(strbuf, &src, length, &cur, &prev, "normal", col3); + COLOR_INSERT(strbuf, &src, length, &cur, &prev, "offset", col3); COLOR_INSERT(strbuf, &src, length, &cur, &prev, "on", col3); COLOR_INSERT(strbuf, &src, length, &cur, &prev, "scale", col3); COLOR_INSERT(strbuf, &src, length, &cur, &prev, "signal", col3); COLOR_INSERT(strbuf, &src, length, &cur, &prev, "state", col3); + COLOR_INSERT(strbuf, &src, length, &cur, &prev, "style", col3); COLOR_INSERT(strbuf, &src, length, &cur, &prev, "relative", col3); COLOR_INSERT(strbuf, &src, length, &cur, &prev, "repeat_events", col3); COLOR_INSERT(strbuf, &src, length, &cur, &prev, "source", col3); diff --git a/src/include/edc_editor.h b/src/include/edc_editor.h index 7f46cbc..4bb7498 100644 --- a/src/include/edc_editor.h +++ b/src/include/edc_editor.h @@ -14,4 +14,4 @@ void edit_new(edit_data* ed); void edit_part_changed_cb_set(edit_data *ed, void (*cb)(void *data, const char *part_name), void *data); void edit_cur_part_update(edit_data *ed); void edit_font_size_update(edit_data *ed, Eina_Bool msg); -void edit_template_insert(edit_data *ed); +void edit_template_insert(edit_data *ed, Edje_Part_Type type);