template: code refactoring.

spllit out the template functions from edc_editor.
This commit is contained in:
ChunEon Park 2014-08-09 14:29:51 +09:00
parent 56c33ba6aa
commit 64f7cccd5f
9 changed files with 214 additions and 189 deletions

View File

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

View File

@ -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)
{
@ -1260,6 +1093,12 @@ edit_edc_reload(edit_data *ed, const char *edc_path)
redoundo_clear(ed->rd);
}
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)
{
@ -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);
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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