enventor - added a feature: part template code insert.

This commit is contained in:
ChunEon Park 2013-09-01 02:50:17 +09:00
parent f9c47b40d4
commit 0262bb3afa
6 changed files with 137 additions and 16 deletions

17
README
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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