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 {
|
||||
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";
|
||||
parts {
|
||||
part { name: "logo";
|
||||
|
@ -42,6 +49,7 @@ group { name: "TEXTBLOCK_bg";
|
|||
description { state: "default" 0.0;
|
||||
color: 255 255 255 255;
|
||||
text {
|
||||
style: "default_style";
|
||||
size: 10;
|
||||
font: FN;
|
||||
text: "TEXTBLOCK";
|
||||
|
|
|
@ -1010,15 +1010,12 @@ parser_end_of_parts_block_pos_get(const Evas_Object *entry,
|
|||
return ret;
|
||||
}
|
||||
|
||||
Eina_Bool
|
||||
parser_images_pos_get(const Evas_Object *entry, int *ret)
|
||||
static Eina_Bool
|
||||
parser_collections_block_pos_get(const Evas_Object *entry,
|
||||
const char *block_name, int *ret)
|
||||
{
|
||||
const char* GROUP_SYNTAX_NAME = "group";
|
||||
const char* IMAGES_BLOCK_NAME = "images";
|
||||
const int IMAGES_BLOCK_NAME_LEN = 6; //strlen of "images"
|
||||
|
||||
if (!ret) return EINA_FALSE;
|
||||
|
||||
const int BLOCK_NAME_LEN = strlen(block_name);
|
||||
*ret = -1;
|
||||
|
||||
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);
|
||||
if (!utf8) return EINA_FALSE;
|
||||
|
||||
const char *pos = strstr(utf8, IMAGES_BLOCK_NAME);
|
||||
const char *pos = strstr(utf8, block_name);
|
||||
if (pos)
|
||||
{
|
||||
/* TODO: Remove this check and process lines of the form
|
||||
"images.image: "logo.png" COMP;" */
|
||||
if (*(pos + IMAGES_BLOCK_NAME_LEN + 1) == '.')
|
||||
if (*(pos + BLOCK_NAME_LEN + 1) == '.')
|
||||
return EINA_FALSE;
|
||||
|
||||
pos = strstr(pos, "{\n");
|
||||
|
@ -1050,3 +1047,15 @@ parser_images_pos_get(const Evas_Object *entry, int *ret)
|
|||
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;
|
||||
|
||||
static void
|
||||
template_part_first_line_get(char *buf, int size)
|
||||
template_random_string_create(char *buf, int size)
|
||||
{
|
||||
char name[9];
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
name[i] = NAME_SEED[(rand() % NAME_SEED_LEN)];
|
||||
name[i]='\0';
|
||||
|
||||
snprintf(buf, size, "part { name: \"%s\";<br/>", name);
|
||||
for (i = 0; i < (size - 1); i++)
|
||||
buf[i] = NAME_SEED[(rand() % NAME_SEED_LEN)];
|
||||
buf[i]='\0';
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -46,6 +42,41 @@ image_description_add(edit_data *ed)
|
|||
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
|
||||
template_part_insert_cursor_pos_set(edit_data *ed,
|
||||
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,
|
||||
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);
|
||||
int cursor_pos = template_part_insert_cursor_pos_set(ed, insert_type,
|
||||
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.
|
||||
char first_line[40];
|
||||
char random_name[9];
|
||||
template_random_string_create(random_name, 9);
|
||||
|
||||
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);
|
||||
|
||||
//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]);
|
||||
}
|
||||
|
||||
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
|
||||
elm_entry_entry_insert(edit_entry, p);
|
||||
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);
|
||||
|
||||
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);
|
||||
stats_info_msg_update(buf);
|
||||
edit_syntax_color_partial_apply(ed, 0);
|
||||
|
@ -194,7 +240,8 @@ template_part_insert(edit_data *ed, Edje_Part_Type part_type,
|
|||
void
|
||||
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.";
|
||||
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
|
||||
|
|
|
@ -122,7 +122,7 @@ const char *TEMPLATE_PART_TEXT[TEMPLATE_PART_TEXT_LINE_CNT] =
|
|||
" }<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] =
|
||||
{
|
||||
|
@ -132,12 +132,7 @@ const char *TEMPLATE_PART_TEXTBLOCK[TEMPLATE_PART_TEXTBLOCK_LINE_CNT] =
|
|||
" fixed: 0 0;<br/>",
|
||||
" min: 0 0;<br/>",
|
||||
" visible: 1;<br/>",
|
||||
" text {<br/>",
|
||||
" style: \"XXX\";<br/>",
|
||||
" text: \"TEXTBLOCK\";<br/>",
|
||||
" align: 0.5 0.5;<br/>",
|
||||
" min: 0 0;<br/>",
|
||||
" }<br/>"
|
||||
" text.text: \"TEXTBLOCK\";<br/>"
|
||||
};
|
||||
|
||||
#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/>"
|
||||
" image: \"logo.png\" COMP;<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