diff --git a/data/themes/default/images.edc b/data/themes/default/images.edc index f48381f..b448ec5 100644 --- a/data/themes/default/images.edc +++ b/data/themes/default/images.edc @@ -25,8 +25,8 @@ images { #define ICON_GROUP(_group_name, _image_path) \ group { name: _group_name; \ parts { \ - part { name: "img"; \ - description { state: "default" 0.0; \ + part { \ + desc { \ image.normal: _image_path; \ } \ } \ @@ -47,11 +47,11 @@ ICON_GROUP("save", "save.png") ICON_GROUP("undo", "undo.png") ICON_GROUP("redo", "redo.png") ICON_GROUP("expand", "expand.png") -ICON_GROUP("IMAGE", "live_image.png") -ICON_GROUP("RECT", "live_rectangle.png") -ICON_GROUP("SPACER", "live_spacer.png") -ICON_GROUP("SWALLOW", "live_swallow.png") -ICON_GROUP("TEXT", "live_text.png") -ICON_GROUP("TEXTBLOCK", "live_textblock.png") +ICON_GROUP("Image", "live_image.png") +ICON_GROUP("Rect", "live_rectangle.png") +ICON_GROUP("Spacer", "live_spacer.png") +ICON_GROUP("Swallow", "live_swallow.png") +ICON_GROUP("Text", "live_text.png") +ICON_GROUP("Textblock", "live_textblock.png") #undef ICON_GROUP diff --git a/data/themes/default/images/logo.png b/data/themes/default/images/logo.png index 725990a..a6da587 100644 Binary files a/data/themes/default/images/logo.png and b/data/themes/default/images/logo.png differ diff --git a/data/themes/default/live_edit.edc b/data/themes/default/live_edit.edc index 1032a53..75740d3 100644 --- a/data/themes/default/live_edit.edc +++ b/data/themes/default/live_edit.edc @@ -1,5 +1,8 @@ images { image: "live_spacer.png" COMP; + image: "swallow.png" COMP; + image: "logo.png" COMP; + } styles { @@ -8,32 +11,30 @@ styles { } } -group { name: "IMAGE_bg"; +group { "Image_bg"; parts { - part { name: "logo"; - description { state: "default" 0.0; + image { + desc { image.normal: "logo.png"; } } } } -group { name: "RECT_bg"; +group { "Rect_bg"; parts { - part { name: "rect"; - type: RECT; - description { state: "default" 0.0; + rect { + desc { color: 0 136 170 255; } } } } -group { name: "TEXT_bg"; +group { "Text_bg"; parts { - part { name: "text"; - type: TEXT; + text { scale: 1; effect: FAR_SOFT_SHADOW; - description { state: "default" 0.0; + desc { color: 0 136 170 255; color2: 0 136 170 50; color3: 0 136 170 25; @@ -46,13 +47,11 @@ group { name: "TEXT_bg"; } } } -group { name: "TEXTBLOCK_bg"; +group { "Textblock_bg"; parts { - part { name: "text"; - type: TEXTBLOCK; + textblock { scale: 1; - description { state: "default" 0.0; - color: 255 255 255 255; + desc { text { style: "default_style"; size: 10; @@ -63,20 +62,20 @@ group { name: "TEXTBLOCK_bg"; } } } -group { name: "SWALLOW_bg"; +group { "Swallow_bg"; parts { - part { name: "bg"; - description { state: "default" 0.0; + image { + desc { image.normal: "swallow.png"; color: 255 255 255 155; } } } } -group { name: "SPACER_bg"; +group { "Spacer_bg"; parts { - part { name: "bg"; - description { state: "default" 0.0; + image { + desc { image.normal: "live_spacer.png"; image.border: 5 5 5 5; fill.smooth: 0; diff --git a/src/bin/live_edit.c b/src/bin/live_edit.c index a219d10..aea3943 100644 --- a/src/bin/live_edit.c +++ b/src/bin/live_edit.c @@ -8,6 +8,12 @@ #define CTRL_PT_LAYER 3 #define INFO_TEXT_LAYER (CTRL_PT_LAYER+1) +typedef struct livedit_item_s +{ + const char *name; + Edje_Part_Type type; +} liveedit_item; + typedef enum { Ctrl_Pt_Rel1 = 0, @@ -38,15 +44,9 @@ typedef enum Align_Line_Cnt } Align_Line; -typedef struct ctxpopup_it_data_s -{ - const char *name; - Edje_Part_Type type; -} ctxpopup_it_data; - typedef struct live_editor_s { - Evas_Object *ctxpopup; + Evas_Object *toolbox; Evas_Object *layout; Evas_Object *live_view; Evas_Object *trigger; @@ -69,18 +69,20 @@ typedef struct live_editor_s static void live_edit_update_internal(live_data *ld); -static const ctxpopup_it_data CTXPOPUP_ITEMS[] = -{ - {"RECT", EDJE_PART_TYPE_RECTANGLE}, - {"TEXT", EDJE_PART_TYPE_TEXT}, - {"IMAGE", EDJE_PART_TYPE_IMAGE}, - {"SWALLOW", EDJE_PART_TYPE_SWALLOW}, - {"TEXTBLOCK", EDJE_PART_TYPE_TEXTBLOCK}, - {"SPACER", EDJE_PART_TYPE_SPACER} -}; +#define LIVEEDIT_ITEMS_NUM 6 static live_data *g_ld = NULL; +static const liveedit_item LIVEEDIT_ITEMS[] = +{ + {"Rect", EDJE_PART_TYPE_RECTANGLE}, + {"Text", EDJE_PART_TYPE_TEXT}, + {"Image", EDJE_PART_TYPE_IMAGE}, + {"Swallow", EDJE_PART_TYPE_SWALLOW}, + {"Textblock", EDJE_PART_TYPE_TEXTBLOCK}, + {"Spacer", EDJE_PART_TYPE_SPACER} +}; + static Evas_Object * view_scroller_get(live_data *ld) { @@ -181,7 +183,7 @@ static void live_edit_symbol_set(live_data *ld) { char buf[PATH_MAX]; - snprintf(buf, sizeof(buf), "%s_bg", CTXPOPUP_ITEMS[ld->part_info.type].name); + snprintf(buf, sizeof(buf), "%s_bg", LIVEEDIT_ITEMS[ld->part_info.type].name); Evas_Object *layout_symbol = elm_layout_add(ld->layout); elm_layout_file_set(layout_symbol, EDJE_PATH, buf); elm_object_scale_set(layout_symbol, config_view_scale_get()); @@ -191,7 +193,7 @@ live_edit_symbol_set(live_data *ld) static void live_edit_insert(live_data *ld) { - int type = CTXPOPUP_ITEMS[ld->part_info.type].type; + int type = LIVEEDIT_ITEMS[ld->part_info.type].type; enventor_object_template_part_insert(base_enventor_get(), type, ENVENTOR_TEMPLATE_INSERT_LIVE_EDIT, @@ -708,7 +710,6 @@ layout_update(live_data *ld) static void live_edit_update_internal(live_data *ld) { - evas_norender(evas_object_evas_get(ld->layout)); layout_update(ld); ctrl_pt_update(ld); align_line_update(ld); @@ -910,59 +911,6 @@ live_edit_layer_set(live_data *ld) info_text_init(ld); } -static void -ctxpopup_it_selected_cb(void *data, Evas_Object *obj, - void *event_info EINA_UNUSED) -{ - live_data *ld = g_ld; - ld->part_info.type = (unsigned int)(uintptr_t)data; - live_edit_layer_set(ld); - - elm_ctxpopup_dismiss(obj); - - stats_info_msg_update(_("Double click the part to confirm.")); -} - -static void -ctxpopup_dismissed_cb(void *data, Evas_Object *obj, - void *event_info EINA_UNUSED) -{ - live_data *ld = data; - if (!ld->layout) live_edit_cancel(); - evas_object_focus_set(ld->live_view, EINA_TRUE); - evas_object_del(obj); - ld->ctxpopup = NULL; -} - -static Evas_Object * -ctxpopup_create(live_data *ld) -{ - const int CTXPOPUP_ITEMS_NUM = 6; - int i; - Evas_Object *ctxpopup = elm_ctxpopup_add(ld->live_view); - elm_ctxpopup_direction_priority_set(ctxpopup, ELM_CTXPOPUP_DIRECTION_DOWN, - ELM_CTXPOPUP_DIRECTION_RIGHT, - ELM_CTXPOPUP_DIRECTION_LEFT, - ELM_CTXPOPUP_DIRECTION_UP); - - for (i = 0; i < CTXPOPUP_ITEMS_NUM; i++) - { - Evas_Object *icon = elm_image_add(ctxpopup); - elm_image_file_set(icon, EDJE_PATH, CTXPOPUP_ITEMS[i].name); - elm_ctxpopup_item_append(ctxpopup, CTXPOPUP_ITEMS[i].name, icon, - ctxpopup_it_selected_cb, (void *)(uintptr_t)i); - } - - evas_object_smart_callback_add(ctxpopup, "dismissed", ctxpopup_dismissed_cb, - ld); - Evas_Coord x, y, w, h; - evas_object_geometry_get(ld->trigger, &x, &y, &w, &h); - evas_object_move(ctxpopup, (x + (w/2)), (y + h)); - evas_object_show(ctxpopup); - - return ctxpopup; -} - void live_edit_update(void) { @@ -979,26 +927,6 @@ live_edit_update(void) live_edit_update_internal(ld); } -void -live_edit_toggle(void) -{ - live_data *ld = g_ld; - Eina_Bool on = !ld->on; - - if (on) - { - enventor_object_disabled_set(base_enventor_get(), EINA_TRUE); - ld->live_view = enventor_object_live_view_get(base_enventor_get()); - ld->ctxpopup = ctxpopup_create(ld); - stats_info_msg_update(_("Select a part to add in Live View.")); - tools_live_update(EINA_TRUE); - } - else - live_edit_cancel(); - - ld->on = on; -} - Eina_Bool live_edit_get(void) { @@ -1012,8 +940,6 @@ live_edit_cancel(void) live_data *ld = g_ld; if (!ld->on) return EINA_FALSE; - if (ld->ctxpopup) elm_ctxpopup_dismiss(ld->ctxpopup); - enventor_object_disabled_set(base_enventor_get(), EINA_FALSE); ecore_event_handler_del(ld->key_down_handler); @@ -1056,11 +982,70 @@ live_edit_cancel(void) ld->on = EINA_FALSE; - tools_live_update(EINA_FALSE); - return EINA_TRUE; } +static void +live_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) +{ + live_edit_cancel(); + goto_close(); + search_close(); + + live_data *ld = g_ld; + + ld->part_info.type = (unsigned int)(uintptr_t)data; + enventor_object_disabled_set(base_enventor_get(), EINA_TRUE); + ld->live_view = enventor_object_live_view_get(base_enventor_get()); + ld->on = EINA_TRUE; + + live_edit_layer_set(ld); + + stats_info_msg_update(_("Double click the part to confirm. (Esc = cancel)")); +} + +static Evas_Object * +live_btn_create(Evas_Object *parent, const char *name, void * data) +{ + Evas_Object *btn = elm_button_add(parent); + elm_object_style_set(btn, elm_app_name_get()); + evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_focus_allow_set(btn, EINA_FALSE); + elm_object_tooltip_text_set(btn, name); + elm_object_tooltip_orient_set(btn, ELM_TOOLTIP_ORIENT_BOTTOM); + + Evas_Object *img = elm_image_add(btn); + elm_image_file_set(img, EDJE_PATH, name); + elm_object_content_set(btn, img); + + evas_object_smart_callback_add(btn, "clicked", live_btn_clicked_cb, data); + evas_object_show(btn); + + return btn; +} + +Evas_Object * +live_edit_tools_create(Evas_Object *parent) +{ + Evas_Object *box = elm_box_add(parent); + elm_box_horizontal_set(box, EINA_TRUE); + elm_box_padding_set(box, ELM_SCALE_SIZE(5), 0); + + Evas_Object *btn; + int i; + + for (i = 0; i < LIVEEDIT_ITEMS_NUM; i++) + { + btn = live_btn_create(box, LIVEEDIT_ITEMS[i].name, + (void *)(uintptr_t) i); + elm_box_pack_end(box, btn); + } + + evas_object_show(box); + return box; +} + void live_edit_init(Evas_Object *trigger) { @@ -1078,8 +1063,7 @@ void live_edit_term(void) { live_data *ld = g_ld; - evas_object_del(ld->ctxpopup); - ld->ctxpopup = NULL; + evas_object_del(ld->toolbox); live_edit_cancel(); free(ld); g_ld = NULL; diff --git a/src/bin/main.c b/src/bin/main.c index e342f39..dfdc792 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -677,12 +677,6 @@ ctrl_func(app_data *ad, Evas_Event_Key_Down *event) enventor_object_auto_complete_list_show(ad->enventor); return EINA_TRUE; } - //Live Edit - if (!strcmp(event->key, "e") || !strcmp(event->key, "E")) - { - live_edit_toggle(); - return EINA_TRUE; - } return EINA_FALSE; } diff --git a/src/bin/tools.c b/src/bin/tools.c index 5fa5657..5e53bbf 100644 --- a/src/bin/tools.c +++ b/src/bin/tools.c @@ -12,7 +12,6 @@ typedef struct tools_s Evas_Object *highlight_btn; Evas_Object *goto_btn; Evas_Object *find_btn; - Evas_Object *live_btn; Evas_Object *console_btn; Evas_Object *menu_btn; Evas_Object *box; @@ -86,15 +85,6 @@ console_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, base_console_toggle(); } -static void -live_edit_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - search_close(); - goto_close(); - live_edit_toggle(); -} - static void save_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -242,13 +232,14 @@ tools_init(Evas_Object *parent) elm_box_pack_end(box, btn); td->swallow_btn = btn; - btn = tools_btn_create(box, "live_edit", _("Live View Edit (Ctrl + E)"), - live_edit_cb); - evas_object_size_hint_weight_set(btn, 0.0, EVAS_HINT_EXPAND); + sp = elm_separator_add(box); + evas_object_show(sp); + elm_box_pack_end(box, sp); + + btn = live_edit_tools_create(box); + evas_object_size_hint_weight_set(btn, 0, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(btn, 0.0, EVAS_HINT_FILL); elm_box_pack_end(box, btn); - evas_object_data_set(box, "live_edit", btn); - td->live_btn = btn; //For a empty space Evas_Object *rect = evas_object_rectangle_add(evas_object_evas_get(box)); @@ -395,18 +386,6 @@ tools_search_update(void) elm_object_signal_emit(td->find_btn, "icon,highlight,disabled", ""); } -void -tools_live_update(Eina_Bool on) -{ - tools_data *td = g_td; - if (!td) return; - - if (on) - elm_object_signal_emit(td->live_btn, "icon,highlight,enabled", ""); - else - elm_object_signal_emit(td->live_btn, "icon,highlight,disabled", ""); -} - void tools_console_update(Eina_Bool on) { diff --git a/src/include/live_edit.h b/src/include/live_edit.h index 7cf6711..626146a 100644 --- a/src/include/live_edit.h +++ b/src/include/live_edit.h @@ -5,7 +5,7 @@ void live_edit_init(Evas_Object *trigger); void live_edit_term(void); -void live_edit_toggle(void); Eina_Bool live_edit_cancel(void); Eina_Bool live_edit_get(void); void live_edit_update(void); +Evas_Object *live_edit_tools_create(Evas_Object *parent);