forked from enlightenment/enventor
template: insert the textblock styles when template code inserted.
Signed-Off-By: Kateryna Fesyna <k.fesyna@samsung.com>
This commit is contained in:
parent
a05f7fd6ea
commit
7c23ae8be4
|
@ -1,6 +1,13 @@
|
||||||
images {
|
images {
|
||||||
image: "live_spacer.png" COMP;
|
image: "live_spacer.png" COMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
styles {
|
||||||
|
style { name: "default_style";
|
||||||
|
base: "font="Sans" font_size=30 text_class=entry color=#0088AA style=shadow,bottom shadow_color=#00000080 valign=0.5 ellipsis=1.0 wrap=none align=center";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
group { name: "IMAGE_bg";
|
group { name: "IMAGE_bg";
|
||||||
parts {
|
parts {
|
||||||
part { name: "logo";
|
part { name: "logo";
|
||||||
|
@ -42,6 +49,7 @@ group { name: "TEXTBLOCK_bg";
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
color: 255 255 255 255;
|
color: 255 255 255 255;
|
||||||
text {
|
text {
|
||||||
|
style: "default_style";
|
||||||
size: 10;
|
size: 10;
|
||||||
font: FN;
|
font: FN;
|
||||||
text: "TEXTBLOCK";
|
text: "TEXTBLOCK";
|
||||||
|
|
|
@ -1010,15 +1010,12 @@ parser_end_of_parts_block_pos_get(const Evas_Object *entry,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
Eina_Bool
|
static Eina_Bool
|
||||||
parser_images_pos_get(const Evas_Object *entry, int *ret)
|
parser_collections_block_pos_get(const Evas_Object *entry,
|
||||||
|
const char *block_name, int *ret)
|
||||||
{
|
{
|
||||||
const char* GROUP_SYNTAX_NAME = "group";
|
const char* GROUP_SYNTAX_NAME = "group";
|
||||||
const char* IMAGES_BLOCK_NAME = "images";
|
const int BLOCK_NAME_LEN = strlen(block_name);
|
||||||
const int IMAGES_BLOCK_NAME_LEN = 6; //strlen of "images"
|
|
||||||
|
|
||||||
if (!ret) return EINA_FALSE;
|
|
||||||
|
|
||||||
*ret = -1;
|
*ret = -1;
|
||||||
|
|
||||||
const char *text = elm_entry_entry_get(entry);
|
const char *text = elm_entry_entry_get(entry);
|
||||||
|
@ -1027,12 +1024,12 @@ parser_images_pos_get(const Evas_Object *entry, int *ret)
|
||||||
char *utf8 = elm_entry_markup_to_utf8(text);
|
char *utf8 = elm_entry_markup_to_utf8(text);
|
||||||
if (!utf8) return EINA_FALSE;
|
if (!utf8) return EINA_FALSE;
|
||||||
|
|
||||||
const char *pos = strstr(utf8, IMAGES_BLOCK_NAME);
|
const char *pos = strstr(utf8, block_name);
|
||||||
if (pos)
|
if (pos)
|
||||||
{
|
{
|
||||||
/* TODO: Remove this check and process lines of the form
|
/* TODO: Remove this check and process lines of the form
|
||||||
"images.image: "logo.png" COMP;" */
|
"images.image: "logo.png" COMP;" */
|
||||||
if (*(pos + IMAGES_BLOCK_NAME_LEN + 1) == '.')
|
if (*(pos + BLOCK_NAME_LEN + 1) == '.')
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
|
|
||||||
pos = strstr(pos, "{\n");
|
pos = strstr(pos, "{\n");
|
||||||
|
@ -1050,3 +1047,15 @@ parser_images_pos_get(const Evas_Object *entry, int *ret)
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Eina_Bool
|
||||||
|
parser_images_pos_get(const Evas_Object *entry, int *ret)
|
||||||
|
{
|
||||||
|
return parser_collections_block_pos_get(entry, "images", ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eina_Bool
|
||||||
|
parser_styles_pos_get(const Evas_Object *entry, int *ret)
|
||||||
|
{
|
||||||
|
return parser_collections_block_pos_get(entry, "styles", ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,16 +6,12 @@ const char *NAME_SEED = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
||||||
const int NAME_SEED_LEN = 52;
|
const int NAME_SEED_LEN = 52;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
template_part_first_line_get(char *buf, int size)
|
template_random_string_create(char *buf, int size)
|
||||||
{
|
{
|
||||||
char name[9];
|
|
||||||
int i;
|
int i;
|
||||||
|
for (i = 0; i < (size - 1); i++)
|
||||||
for (i = 0; i < 8; i++)
|
buf[i] = NAME_SEED[(rand() % NAME_SEED_LEN)];
|
||||||
name[i] = NAME_SEED[(rand() % NAME_SEED_LEN)];
|
buf[i]='\0';
|
||||||
name[i]='\0';
|
|
||||||
|
|
||||||
snprintf(buf, size, "part { name: \"%s\";<br/>", name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -46,6 +42,41 @@ image_description_add(edit_data *ed)
|
||||||
elm_entry_cursor_pos_set(edit_entry, cursor_pos_to_restore);
|
elm_entry_cursor_pos_set(edit_entry, cursor_pos_to_restore);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
textblock_style_add(edit_data *ed, const char *style_name)
|
||||||
|
{
|
||||||
|
int cursor_pos;
|
||||||
|
Evas_Object * edit_entry = edit_entry_get(ed);
|
||||||
|
Eina_Bool styles_block = parser_styles_pos_get(edit_entry, &cursor_pos);
|
||||||
|
if (cursor_pos == -1) return;
|
||||||
|
int cursor_pos_to_restore = elm_entry_cursor_pos_get(edit_entry_get(ed));
|
||||||
|
|
||||||
|
elm_entry_cursor_pos_set(edit_entry, cursor_pos);
|
||||||
|
elm_entry_cursor_line_begin_set(edit_entry);
|
||||||
|
int cursor_pos1 = elm_entry_cursor_pos_get(edit_entry);
|
||||||
|
|
||||||
|
if (!styles_block)
|
||||||
|
elm_entry_entry_insert(edit_entry, TEMPLATE_TEXTBLOCK_STYLE_BLOCK[0]);
|
||||||
|
|
||||||
|
int buf_len = strlen(TEMPLATE_TEXTBLOCK_STYLE_BLOCK[1]) + strlen(style_name);
|
||||||
|
char *buf = malloc(buf_len);
|
||||||
|
snprintf(buf, buf_len, TEMPLATE_TEXTBLOCK_STYLE_BLOCK[1], style_name);
|
||||||
|
elm_entry_entry_insert(edit_entry, buf);
|
||||||
|
free(buf);
|
||||||
|
|
||||||
|
if (!styles_block)
|
||||||
|
elm_entry_entry_insert(edit_entry, TEMPLATE_TEXTBLOCK_STYLE_BLOCK[2]);
|
||||||
|
|
||||||
|
int line_inc = TEMPLATE_TEXTBLOCK_STYLE_LINE_CNT;
|
||||||
|
if (!styles_block) line_inc += 2;
|
||||||
|
edit_line_increase(ed, line_inc);
|
||||||
|
|
||||||
|
int cursor_pos2 = elm_entry_cursor_pos_get(edit_entry);
|
||||||
|
edit_redoundo_region_push(ed, cursor_pos1, cursor_pos2);
|
||||||
|
|
||||||
|
elm_entry_cursor_pos_set(edit_entry, cursor_pos_to_restore);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
template_part_insert_cursor_pos_set(edit_data *ed,
|
template_part_insert_cursor_pos_set(edit_data *ed,
|
||||||
Template_Insert_Type insert_type,
|
Template_Insert_Type insert_type,
|
||||||
|
@ -73,10 +104,6 @@ template_part_insert(edit_data *ed, Edje_Part_Type part_type,
|
||||||
float rel1_y, float rel2_x, float rel2_y,
|
float rel1_y, float rel2_x, float rel2_y,
|
||||||
const Eina_Stringshare *group_name)
|
const Eina_Stringshare *group_name)
|
||||||
{
|
{
|
||||||
if ((part_type == EDJE_PART_TYPE_IMAGE) &&
|
|
||||||
(insert_type == TEMPLATE_INSERT_LIVE_EDIT))
|
|
||||||
image_description_add(ed);
|
|
||||||
|
|
||||||
Evas_Object *edit_entry = edit_entry_get(ed);
|
Evas_Object *edit_entry = edit_entry_get(ed);
|
||||||
int cursor_pos = template_part_insert_cursor_pos_set(ed, insert_type,
|
int cursor_pos = template_part_insert_cursor_pos_set(ed, insert_type,
|
||||||
group_name);
|
group_name);
|
||||||
|
@ -138,8 +165,11 @@ template_part_insert(edit_data *ed, Edje_Part_Type part_type,
|
||||||
|
|
||||||
//Insert first line of the part block with generated name.
|
//Insert first line of the part block with generated name.
|
||||||
char first_line[40];
|
char first_line[40];
|
||||||
|
char random_name[9];
|
||||||
|
template_random_string_create(random_name, 9);
|
||||||
|
|
||||||
elm_entry_entry_insert(edit_entry, p);
|
elm_entry_entry_insert(edit_entry, p);
|
||||||
template_part_first_line_get(first_line, 40);
|
snprintf(first_line, 40, "part { name: \"%s\";<br/>", random_name);
|
||||||
elm_entry_entry_insert(edit_entry, first_line);
|
elm_entry_entry_insert(edit_entry, first_line);
|
||||||
|
|
||||||
//Insert part body
|
//Insert part body
|
||||||
|
@ -150,6 +180,14 @@ template_part_insert(edit_data *ed, Edje_Part_Type part_type,
|
||||||
elm_entry_entry_insert(edit_entry, t[i]);
|
elm_entry_entry_insert(edit_entry, t[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (part_type == EDJE_PART_TYPE_TEXTBLOCK)
|
||||||
|
{
|
||||||
|
elm_entry_entry_insert(edit_entry, p);
|
||||||
|
snprintf(buf, sizeof(buf), " text.style: \"%s\";<br/>",
|
||||||
|
random_name);
|
||||||
|
elm_entry_entry_insert(edit_entry, buf);
|
||||||
|
}
|
||||||
|
|
||||||
//Insert relatives
|
//Insert relatives
|
||||||
elm_entry_entry_insert(edit_entry, p);
|
elm_entry_entry_insert(edit_entry, p);
|
||||||
snprintf(buf, sizeof(buf), " rel1.relative: %.2f %.2f;<br/>", rel1_x,
|
snprintf(buf, sizeof(buf), " rel1.relative: %.2f %.2f;<br/>", rel1_x,
|
||||||
|
@ -184,6 +222,14 @@ template_part_insert(edit_data *ed, Edje_Part_Type part_type,
|
||||||
|
|
||||||
elm_entry_cursor_pos_set(edit_entry, cursor_pos);
|
elm_entry_cursor_pos_set(edit_entry, cursor_pos);
|
||||||
|
|
||||||
|
if (insert_type == TEMPLATE_INSERT_LIVE_EDIT)
|
||||||
|
{
|
||||||
|
if (part_type == EDJE_PART_TYPE_IMAGE)
|
||||||
|
image_description_add(ed);
|
||||||
|
else if (part_type == EDJE_PART_TYPE_TEXTBLOCK)
|
||||||
|
textblock_style_add(ed, random_name);
|
||||||
|
}
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "Template code inserted. (%s Part)", part);
|
snprintf(buf, sizeof(buf), "Template code inserted. (%s Part)", part);
|
||||||
stats_info_msg_update(buf);
|
stats_info_msg_update(buf);
|
||||||
edit_syntax_color_partial_apply(ed, 0);
|
edit_syntax_color_partial_apply(ed, 0);
|
||||||
|
@ -194,7 +240,8 @@ template_part_insert(edit_data *ed, Edje_Part_Type part_type,
|
||||||
void
|
void
|
||||||
template_insert(edit_data *ed, Template_Insert_Type insert_type)
|
template_insert(edit_data *ed, Template_Insert_Type insert_type)
|
||||||
{
|
{
|
||||||
const char *EXCEPT_MSG = "Can't insert template code here. Move the cursor" " inside the \"Collections,Images,Parts,Part,"
|
const char *EXCEPT_MSG = "Can't insert template code here. Move the cursor"
|
||||||
|
"inside the \"Collections,Images,Parts,Part,"
|
||||||
"Programs\" scope.";
|
"Programs\" scope.";
|
||||||
|
|
||||||
Evas_Object *entry = edit_entry_get(ed);
|
Evas_Object *entry = edit_entry_get(ed);
|
||||||
|
|
|
@ -20,6 +20,7 @@ void parser_cancel(parser_data *pd);
|
||||||
int parser_line_cnt_get(parser_data *pd EINA_UNUSED, const char *src);
|
int parser_line_cnt_get(parser_data *pd EINA_UNUSED, const char *src);
|
||||||
Eina_List *parser_states_filtered_name_get(Eina_List *states);
|
Eina_List *parser_states_filtered_name_get(Eina_List *states);
|
||||||
int parser_end_of_parts_block_pos_get(const Evas_Object *entry, const char *group_name);
|
int parser_end_of_parts_block_pos_get(const Evas_Object *entry, const char *group_name);
|
||||||
Eina_Bool parser_images_pos_get(const Evas_Object *entry, int *pos);
|
Eina_Bool parser_images_pos_get(const Evas_Object *entry, int *ret);
|
||||||
|
Eina_Bool parser_styles_pos_get(const Evas_Object *entry, int *ret);
|
||||||
const char * parser_colon_pos_get(parser_data *pd EINA_UNUSED, const char *cur);
|
const char * parser_colon_pos_get(parser_data *pd EINA_UNUSED, const char *cur);
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,7 @@ const char *TEMPLATE_PART_TEXT[TEMPLATE_PART_TEXT_LINE_CNT] =
|
||||||
" }<br/>"
|
" }<br/>"
|
||||||
};
|
};
|
||||||
|
|
||||||
#define TEMPLATE_PART_TEXTBLOCK_LINE_CNT 12
|
#define TEMPLATE_PART_TEXTBLOCK_LINE_CNT 7
|
||||||
|
|
||||||
const char *TEMPLATE_PART_TEXTBLOCK[TEMPLATE_PART_TEXTBLOCK_LINE_CNT] =
|
const char *TEMPLATE_PART_TEXTBLOCK[TEMPLATE_PART_TEXTBLOCK_LINE_CNT] =
|
||||||
{
|
{
|
||||||
|
@ -132,12 +132,7 @@ const char *TEMPLATE_PART_TEXTBLOCK[TEMPLATE_PART_TEXTBLOCK_LINE_CNT] =
|
||||||
" fixed: 0 0;<br/>",
|
" fixed: 0 0;<br/>",
|
||||||
" min: 0 0;<br/>",
|
" min: 0 0;<br/>",
|
||||||
" visible: 1;<br/>",
|
" visible: 1;<br/>",
|
||||||
" text {<br/>",
|
" text.text: \"TEXTBLOCK\";<br/>"
|
||||||
" style: \"XXX\";<br/>",
|
|
||||||
" text: \"TEXTBLOCK\";<br/>",
|
|
||||||
" align: 0.5 0.5;<br/>",
|
|
||||||
" min: 0 0;<br/>",
|
|
||||||
" }<br/>"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#define TEMPLATE_DESC_LINE_CNT 10
|
#define TEMPLATE_DESC_LINE_CNT 10
|
||||||
|
@ -181,3 +176,15 @@ const char *TEMPLATE_IMG[TEMPLATE_IMG_LINE_CNT] =
|
||||||
const char *TEMPLATE_IMG_BLOCK = " images {<br/>"
|
const char *TEMPLATE_IMG_BLOCK = " images {<br/>"
|
||||||
" image: \"logo.png\" COMP;<br/>"
|
" image: \"logo.png\" COMP;<br/>"
|
||||||
" }<br/>";
|
" }<br/>";
|
||||||
|
|
||||||
|
#define TEMPLATE_TEXTBLOCK_STYLE_LINE_CNT 3
|
||||||
|
|
||||||
|
const char *TEMPLATE_TEXTBLOCK_STYLE_BLOCK[TEMPLATE_TEXTBLOCK_STYLE_LINE_CNT] =
|
||||||
|
{
|
||||||
|
" styles {<br/>",
|
||||||
|
" style { name: \"%s\";<br/>"
|
||||||
|
" base: \"font=\"Sans\" font_size=30 text_class=entry color=#0088AA style=shadow,bottom shadow_color=#00000080 valign=0.5 ellipsis=1.0 wrap=none align=center\";<br/>"
|
||||||
|
" }<br/>",
|
||||||
|
" }<br/>"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue