rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=86a0491daa23219996a9724faec7b0a6e47373fd
commit 86a0491daa23219996a9724faec7b0a6e47373fd Author: Vyacheslav Reutskiy <v.reuts...@samsung.com> Date: Wed May 18 10:43:22 2016 +0300 style_manager: made the manager is static Change-Id: I90c8cf33c06e3197f0b4df189fd9edc72396bfff --- src/bin/ui/style_manager.c | 410 ++++++++++++++++++++------------------------- 1 file changed, 184 insertions(+), 226 deletions(-) diff --git a/src/bin/ui/style_manager.c b/src/bin/ui/style_manager.c index 8c08a85..bbb1669 100644 --- a/src/bin/ui/style_manager.c +++ b/src/bin/ui/style_manager.c @@ -49,7 +49,7 @@ TODO("Rename this file to textblock_style_manager") typedef struct _Style_Tag_Entries Style_Tag_Entries; typedef struct _Style_entries Style_Entries; -typedef struct _Style_Editor Style_Editor; +typedef struct _Style_Manager Style_Manager; typedef struct _Search_Data Search_Data; struct _Search_Data @@ -58,7 +58,7 @@ struct _Search_Data Elm_Object_Item *last_item_found; }; -struct _Style_Editor +struct _Style_Manager { Evas_Object *win; Evas_Object *layout; @@ -103,27 +103,26 @@ struct _Style_Tag_Entries Evas_Object *tag_value; }; -#define POPUP style_edit->popup -#define CURRENT style_edit->current_style +#define POPUP mng.popup +#define CURRENT mng.current_style +static Style_Manager mng; static Elm_Genlist_Item_Class *_itc_style = NULL; static Elm_Genlist_Item_Class *_itc_tags = NULL; static Eina_Bool is_expanded_glitem = EINA_FALSE; static void -_on_popup_bt_cancel(void *data, +_on_popup_bt_cancel(void *data __UNUSED__, Evas_Object *obj, void *ei __UNUSED__) { - Style_Editor *style_edit = (Style_Editor *)data; Resource *res; - assert(style_edit != NULL); assert(POPUP.name_validator != NULL); if (obj && is_expanded_glitem) { - elm_genlist_item_expanded_set(elm_genlist_selected_item_get(style_edit->glist), false); + elm_genlist_item_expanded_set(elm_genlist_selected_item_get(mng.glist), false); is_expanded_glitem = EINA_FALSE; } @@ -142,19 +141,16 @@ _on_popup_bt_cancel(void *data, } static void -_on_unselected_cb(void *data, +_on_unselected_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { - Style_Editor *style_edit = (Style_Editor *)data; - assert(style_edit != NULL); - - elm_object_disabled_set(style_edit->button_del, true); + elm_object_disabled_set(mng.button_del, true); evas_object_smart_callback_call(ap.win, SIGNAL_STYLE_SELECTED, NULL); } static void -_on_glit_selected(void *data, +_on_glit_selected(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) { @@ -166,10 +162,7 @@ _on_glit_selected(void *data, const char *tag, *value = NULL; Evas_Textblock_Style *ts = NULL; - Style_Editor *style_edit = (Style_Editor *)data; - assert(style_edit != NULL); - - elm_object_disabled_set(style_edit->button_del, false); + elm_object_disabled_set(mng.button_del, false); Elm_Object_Item *glit = (Elm_Object_Item *)event_info; Eina_Strbuf *style = eina_strbuf_new(); @@ -199,7 +192,7 @@ _on_glit_selected(void *data, style_name = elm_object_item_data_get(glit_parent); tag = (char *)elm_object_item_data_get(glit); if (!strcmp(tag, "DEFAULT")) - elm_object_disabled_set(style_edit->button_del, true); + elm_object_disabled_set(mng.button_del, true); value = edje_edit_style_tag_value_get(edje_edit_obj, style_name, tag); eina_strbuf_append(style, value); } @@ -208,20 +201,20 @@ _on_glit_selected(void *data, current_style->st_tag = tag; current_style->stvalue = eina_stringshare_add(value); current_style->style = style; - current_style->textblock_style = style_edit->textblock_style; + current_style->textblock_style = mng.textblock_style; if (!elm_genlist_item_parent_get(glit)) { - elm_object_signal_emit(style_edit->entry_prev, "entry,hide", "eflete"); + elm_object_signal_emit(mng.entry_prev, "entry,hide", "eflete"); current_style->is_parent_item = EINA_TRUE; } else { - elm_object_signal_emit(style_edit->entry_prev, "entry,show", "eflete"); + elm_object_signal_emit(mng.entry_prev, "entry,show", "eflete"); eina_strbuf_append(style, "'"); ts = evas_textblock_style_new(); evas_textblock_style_set(ts, eina_strbuf_string_get(style)); - evas_object_textblock_style_set(style_edit->textblock_style, ts); - evas_object_size_hint_max_set(style_edit->textblock_style, EVAS_HINT_FILL, + evas_object_textblock_style_set(mng.textblock_style, ts); + evas_object_size_hint_max_set(mng.textblock_style, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_textblock_style_free(ts); } @@ -230,17 +223,14 @@ _on_glit_selected(void *data, } static void -_on_st_add_bt_ok(void *data, +_on_st_add_bt_ok(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *ei __UNUSED__) { Elm_Object_Item *glit_style = NULL; Evas_Object *edje_edit_obj = NULL; - Style_Editor *style_edit = (Style_Editor *)data; Resource *res; - assert(style_edit != NULL); - const char *style_name = elm_entry_entry_get(POPUP.name); edje_edit_obj = ap.project->global_object; @@ -268,9 +258,9 @@ _on_st_add_bt_ok(void *data, return; } - glit_style = elm_genlist_item_append(style_edit->glist, _itc_style, + glit_style = elm_genlist_item_append(mng.glist, _itc_style, style_name, NULL, ELM_GENLIST_ITEM_TREE, - _on_glit_selected, style_edit); + _on_glit_selected, NULL); elm_object_item_data_set(glit_style, (char *)style_name); elm_genlist_item_selected_set(glit_style, true); @@ -282,7 +272,7 @@ _on_st_add_bt_ok(void *data, (Eina_Compare_Cb) resource_cmp, res); - _on_popup_bt_cancel(style_edit, NULL, NULL); + _on_popup_bt_cancel(NULL, NULL, NULL); editor_save(ap.project->global_object); TODO("Remove this line once edje_edit API would be added into Editor Module and saving would work properly") @@ -290,17 +280,14 @@ _on_st_add_bt_ok(void *data, } static void -_on_tag_add_bt_ok(void *data, +_on_tag_add_bt_ok(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *ei __UNUSED__) { - Style_Editor *style_edit = (Style_Editor *)data; Elm_Object_Item *glit_tag = NULL; Evas_Object *edje_edit_obj = NULL; - assert(style_edit != NULL); - - const char *style_name = elm_object_item_data_get(style_edit->tag); + const char *style_name = elm_object_item_data_get(mng.tag); const char *tag_name = elm_entry_entry_get(POPUP.name); edje_edit_obj = ap.project->global_object; @@ -316,15 +303,15 @@ _on_tag_add_bt_ok(void *data, edje_edit_style_tag_del(edje_edit_obj, style_name, tag_name); return; } - glit_tag = elm_genlist_item_append(style_edit->glist, _itc_tags, - tag_name, style_edit->tag, + glit_tag = elm_genlist_item_append(mng.glist, _itc_tags, + tag_name, mng.tag, ELM_GENLIST_ITEM_NONE, - _on_glit_selected, style_edit); + _on_glit_selected, NULL); elm_object_item_data_set(glit_tag,(char *)tag_name); elm_genlist_item_selected_set(glit_tag, true); elm_genlist_item_bring_in(glit_tag, ELM_GENLIST_ITEM_SCROLLTO_TOP); - _on_popup_bt_cancel(style_edit, NULL, NULL); + _on_popup_bt_cancel(NULL, NULL, NULL); editor_save(ap.project->global_object); TODO("Remove this line once edje_edit API would be added into Editor Module and saving would work properly") @@ -332,12 +319,10 @@ _on_tag_add_bt_ok(void *data, } static void -_validate(void *data, +_validate(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { - Style_Editor *style_edit = (Style_Editor *)data; - if (ELM_REG_NOERROR != resource_name_validator_status_get(POPUP.name_validator)) elm_object_disabled_set(POPUP.btn_add, true); else @@ -345,16 +330,12 @@ _validate(void *data, } static void -_on_bt_style_add(void *data, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) +_style_add_cb(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) { Evas_Object *box, *item, *button; - Style_Editor *style_edit = (Style_Editor *)data; - - assert(style_edit != NULL); - POPUP.dialog = elm_popup_add(ap.win); elm_popup_orient_set(POPUP.dialog, ELM_POPUP_ORIENT_CENTER); elm_object_part_text_set(POPUP.dialog, "title,text", _("Add textblock style")); @@ -366,7 +347,7 @@ _on_bt_style_add(void *data, resource_name_validator_list_set(POPUP.name_validator, &ap.project->styles, true); ENTRY_ADD(item, POPUP.name, true); eo_event_callback_add(POPUP.name, ELM_ENTRY_EVENT_VALIDATE, resource_name_validator_helper, POPUP.name_validator); - evas_object_smart_callback_add(POPUP.name, "changed", _validate, style_edit); + evas_object_smart_callback_add(POPUP.name, "changed", _validate, NULL); elm_object_part_text_set(POPUP.name, "guide", _("Type a new style name")); elm_object_part_content_set(item, "elm.swallow.content", POPUP.name); elm_box_pack_end(box, item); @@ -375,30 +356,27 @@ _on_bt_style_add(void *data, evas_object_show(box); BUTTON_ADD(POPUP.dialog, POPUP.btn_add, _("Ok")); - evas_object_smart_callback_add(POPUP.btn_add, "clicked", _on_st_add_bt_ok, style_edit); + evas_object_smart_callback_add(POPUP.btn_add, "clicked", _on_st_add_bt_ok, NULL); elm_object_part_content_set(POPUP.dialog, "button1", POPUP.btn_add); elm_object_disabled_set(POPUP.btn_add, true); BUTTON_ADD(POPUP.dialog, button, _("Cancel")); - evas_object_smart_callback_add(button, "clicked", _on_popup_bt_cancel, style_edit); + evas_object_smart_callback_add(button, "clicked", _on_popup_bt_cancel, NULL); elm_object_part_content_set(POPUP.dialog, "button2", button); evas_object_show(POPUP.dialog); } static void -_on_bt_tag_add(void *data, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) +_tab_add_cb(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) { Evas_Object *box, *item, *button; - Style_Editor *style_edit = (Style_Editor *)data; - - assert(style_edit != NULL); assert(POPUP.name_validator == NULL); - Elm_Object_Item *glit = elm_genlist_selected_item_get(style_edit->glist); + Elm_Object_Item *glit = elm_genlist_selected_item_get(mng.glist); Elm_Object_Item *glit_parent = elm_genlist_item_parent_get(glit); const char *style_name; Eina_Stringshare *buf; @@ -421,12 +399,12 @@ _on_bt_tag_add(void *data, } style_name = elm_object_item_data_get(glit); - style_edit->tag = glit; + mng.tag = glit; } else { style_name = elm_object_item_data_get(glit_parent); - style_edit->tag = glit_parent; + mng.tag = glit_parent; } tags = edje_edit_style_tags_list_get(ap.project->global_object, style_name); @@ -450,7 +428,7 @@ _on_bt_tag_add(void *data, resource_name_validator_list_set(POPUP.name_validator, &POPUP.buf_resources, true); ENTRY_ADD(item, POPUP.name, true); eo_event_callback_add(POPUP.name, ELM_ENTRY_EVENT_VALIDATE, resource_name_validator_helper, POPUP.name_validator); - evas_object_smart_callback_add(POPUP.name, "changed", _validate, style_edit); + evas_object_smart_callback_add(POPUP.name, "changed", _validate, NULL); elm_object_part_text_set(POPUP.name, "guide", _("Type a new tag name.")); elm_object_part_content_set(item, "elm.swallow.content", POPUP.name); elm_box_pack_end(box, item); @@ -459,12 +437,12 @@ _on_bt_tag_add(void *data, evas_object_show(box); BUTTON_ADD(POPUP.dialog, POPUP.btn_add, _("Ok")); - evas_object_smart_callback_add(POPUP.btn_add, "clicked", _on_tag_add_bt_ok, style_edit); + evas_object_smart_callback_add(POPUP.btn_add, "clicked", _on_tag_add_bt_ok, NULL); elm_object_part_content_set(POPUP.dialog, "button1", POPUP.btn_add); elm_object_disabled_set(POPUP.btn_add, true); BUTTON_ADD(POPUP.dialog, button, _("Cancel")); - evas_object_smart_callback_add(button, "clicked", _on_popup_bt_cancel, style_edit); + evas_object_smart_callback_add(button, "clicked", _on_popup_bt_cancel, NULL); elm_object_part_content_set(POPUP.dialog, "button2", button); evas_object_show(POPUP.dialog); @@ -472,19 +450,15 @@ _on_bt_tag_add(void *data, } static void -_on_bt_del(void *data, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) +_btn_del_cb(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) { Evas_Object *edje_edit_obj = NULL; const char *style_name, *tag; - - Style_Editor *style_edit = (Style_Editor *)data; Resource *res; - assert(style_edit != NULL); - - Elm_Object_Item *glit = elm_genlist_selected_item_get(style_edit->glist); + Elm_Object_Item *glit = elm_genlist_selected_item_get(mng.glist); if (!glit) return; Elm_Object_Item *glit_parent = elm_genlist_item_parent_get(glit); edje_edit_obj = ap.project->global_object; @@ -505,7 +479,7 @@ _on_bt_del(void *data, elm_object_item_del(glit); - elm_object_disabled_set(style_edit->button_del, true); + elm_object_disabled_set(mng.button_del, true); evas_object_smart_callback_call(ap.win, SIGNAL_STYLE_SELECTED, NULL); editor_save(ap.project->global_object); @@ -697,48 +671,42 @@ _genlist_item_search_next_search(Evas_Object *obj, } static void -_search_changed(void *data, +_search_changed(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { - Style_Editor *style_edit = data; - - assert(style_edit != NULL); - if (elm_entry_is_empty(style_edit->style_search_data.search_entry)) + if (elm_entry_is_empty(mng.style_search_data.search_entry)) { - if (style_edit->style_search_data.last_item_found) + if (mng.style_search_data.last_item_found) { - elm_genlist_item_selected_set(style_edit->style_search_data.last_item_found, false); - style_edit->style_search_data.last_item_found = NULL; + elm_genlist_item_selected_set(mng.style_search_data.last_item_found, false); + mng.style_search_data.last_item_found = NULL; } - elm_genlist_item_bring_in(elm_genlist_first_item_get(style_edit->glist), + elm_genlist_item_bring_in(elm_genlist_first_item_get(mng.glist), ELM_GENLIST_ITEM_SCROLLTO_TOP); return; } Eina_Stringshare *str = eina_stringshare_printf("%s", - elm_entry_entry_get(style_edit->style_search_data.search_entry)); + elm_entry_entry_get(mng.style_search_data.search_entry)); - _genlist_item_search_first_search(style_edit->glist, &(style_edit->style_search_data), str); + _genlist_item_search_first_search(mng.glist, &(mng.style_search_data), str); eina_stringshare_del(str); } static void -_search_nxt_gd_item(void *data, +_search_nxt_gd_item(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { - Style_Editor *style_edit = data; - - assert(style_edit != NULL); - if (style_edit->style_search_data.last_item_found) + if (mng.style_search_data.last_item_found) { Eina_Stringshare *str = eina_stringshare_printf("%s", - elm_entry_entry_get(style_edit->style_search_data.search_entry)); + elm_entry_entry_get(mng.style_search_data.search_entry)); - _genlist_item_search_next_search(style_edit->glist, &(style_edit->style_search_data), str); + _genlist_item_search_next_search(mng.glist, &(mng.style_search_data), str); eina_stringshare_del(str); } @@ -765,11 +733,10 @@ _expand_request_cb(void *data __UNUSED__, } static void -_expanded_cb(void *data, +_expanded_cb(void *data __UNUSED__, Evas_Object *o __UNUSED__, void *event_info) { - Style_Editor *style_edit = (Style_Editor *)data; Elm_Object_Item *glit = (Elm_Object_Item *)event_info; const char *name = elm_object_item_data_get(glit); Eina_List *tags, *l_tg; @@ -779,9 +746,9 @@ _expanded_cb(void *data, tags = edje_edit_style_tags_list_get(ap.project->global_object, name); EINA_LIST_FOREACH(tags, l_tg, tag) { - glit_tag = elm_genlist_item_append(style_edit->glist, _itc_tags, + glit_tag = elm_genlist_item_append(mng.glist, _itc_tags, tag, glit, ELM_GENLIST_ITEM_NONE, - _on_glit_selected, style_edit); + _on_glit_selected, NULL); elm_object_item_data_set(glit_tag, tag); } eina_list_free(tags); @@ -806,23 +773,20 @@ _contracted_cb(void *data __UNUSED__, } static void -_on_bt_add(void *data, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) +_btn_add_cb(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) { - Style_Editor *style_edit = (Style_Editor *)data; Evas_Coord x, y, h; - assert(style_edit != NULL); - evas_object_geometry_get(obj, &x, &y, NULL, &h); - elm_menu_move(style_edit->menu, x, y + h); - evas_object_show(style_edit->menu); + elm_menu_move(mng.menu, x, y + h); + evas_object_show(mng.menu); - if (elm_genlist_selected_item_get(style_edit->glist)) - elm_object_item_disabled_set(style_edit->menu_tag, false); + if (elm_genlist_selected_item_get(mng.glist)) + elm_object_item_disabled_set(mng.menu_tag, false); else - elm_object_item_disabled_set(style_edit->menu_tag, true); + elm_object_item_disabled_set(mng.menu_tag, true); } static void @@ -831,11 +795,10 @@ _bg_cb(void *data, void *event_info __UNUSED__) { Bg_Preview bg_mode; - Style_Editor *edit = data; const char *signal = NULL; + Evas_Object *entry_prev = data; - Evas_Object *bg = elm_object_part_content_get(edit->entry_prev, "background"); - + Evas_Object *bg = elm_object_part_content_get(entry_prev, "background"); bg_mode = elm_radio_value_get(obj); switch (bg_mode) { @@ -854,7 +817,7 @@ _bg_cb(void *data, } static Evas_Object * -_radio_switcher_add(Style_Editor *edit, +_radio_switcher_add(Evas_Object *entry_prev, const char *style, Evas_Smart_Cb func, int state_value, @@ -866,14 +829,14 @@ _radio_switcher_add(Style_Editor *edit, evas_object_show(radio); elm_object_style_set(radio, style); elm_radio_state_value_set(radio, state_value); - evas_object_smart_callback_add(radio, "changed", func, edit); + evas_object_smart_callback_add(radio, "changed", func, entry_prev); elm_radio_group_add(radio, group); return radio; } static Evas_Object* -_add_box_bg(Style_Editor *edit) +_add_box_bg(void) { Evas_Object *box_bg; @@ -882,60 +845,69 @@ _add_box_bg(Style_Editor *edit) elm_box_align_set(box_bg, 1.0, 0.5); /* add to toolbar bg switcher */ - edit->bg_switcher.white = _radio_switcher_add(edit, "bg_white", _bg_cb, BG_PREVIEW_WHITE, NULL); - elm_box_pack_end(box_bg, edit->bg_switcher.white); + mng.bg_switcher.white = _radio_switcher_add(mng.entry_prev, "bg_white", _bg_cb, BG_PREVIEW_WHITE, NULL); + elm_box_pack_end(box_bg, mng.bg_switcher.white); - edit->bg_switcher.tile = _radio_switcher_add(edit, "bg_tile", _bg_cb, BG_PREVIEW_TILE, edit->bg_switcher.white); - elm_box_pack_end(box_bg, edit->bg_switcher.tile); + mng.bg_switcher.tile = _radio_switcher_add(mng.entry_prev, "bg_tile", _bg_cb, BG_PREVIEW_TILE, mng.bg_switcher.white); + elm_box_pack_end(box_bg, mng.bg_switcher.tile); - edit->bg_switcher.black = _radio_switcher_add(edit, "bg_black", _bg_cb, BG_PREVIEW_BLACK, edit->bg_switcher.white); - elm_box_pack_end(box_bg, edit->bg_switcher.black); + mng.bg_switcher.black = _radio_switcher_add(mng.entry_prev, "bg_black", _bg_cb, BG_PREVIEW_BLACK, mng.bg_switcher.white); + elm_box_pack_end(box_bg, mng.bg_switcher.black); - elm_radio_value_set(edit->bg_switcher.white, BG_PREVIEW_TILE); + elm_radio_value_set(mng.bg_switcher.white, BG_PREVIEW_TILE); return box_bg; } static void -_on_style_manager_close(void *data, - Evas *e __UNUSED__, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) +_mw_cancel_cb(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) { - Style_Editor *style_edit = (Style_Editor *)data; - - assert(style_edit != NULL); + Evas_Object *content; - eina_stringshare_del(CURRENT.stvalue); - free(style_edit); + /* unset and hide the image property */ + content = elm_object_content_unset(mng.win); + evas_object_hide(content); } static void -_property_hide(Style_Editor *mng) +_mw_done_cb(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) { Evas_Object *content; /* unset and hide the image property */ - content = elm_object_part_content_unset(mng->panes, "right"); + content = elm_object_content_unset(mng.win); evas_object_hide(content); } static void -_mw_cancel(void *data, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) +_style_mamanger_init(void) { - Style_Editor *mng = data; - _property_hide(mng); + Eina_List *l_st; + Resource *res; + Elm_Object_Item *glit_style; + + EINA_LIST_FOREACH(ap.project->styles, l_st, res) + { + glit_style = elm_genlist_item_append(mng.glist, _itc_style, + res->name, NULL, ELM_GENLIST_ITEM_TREE, + _on_glit_selected, NULL); + elm_object_item_data_set(glit_style, (char *)res->name); + } } static void -_mw_done(void *data, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) +_project_closed_cb(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) { - Style_Editor *mng = data; - _property_hide(mng); + elm_object_signal_emit(mng.entry_prev, "entry,hide", "eflete"); + //elm_entry_entry_set(mng.entry_prev, ""); + evas_object_smart_callback_call(ap.win, SIGNAL_STYLE_SELECTED, NULL); + elm_genlist_clear(mng.glist); } Evas_Object * @@ -943,55 +915,50 @@ style_manager_add() { Evas_Object *bg, *box_bg; Evas *canvas; - Elm_Object_Item *glit_style; Evas_Object *button_add, *search, *ic; - Eina_List *styles, *l_st; - Resource *res; Evas_Textblock_Style *ts; - Style_Editor *style_edit; static const char *style_buf = FONT_DEFAULT"'"; assert(ap.project != NULL); - style_edit = (Style_Editor *)mem_calloc(1, sizeof(Style_Editor)); - - style_edit->win = mw_add(); - mw_title_set(style_edit->win, _("Textblock style manager")); - evas_object_smart_callback_add(style_edit->win, "cancel", _mw_cancel, style_edit); - evas_object_smart_callback_add(style_edit->win, "done", _mw_done, style_edit); - ic = elm_icon_add(style_edit->win); + mng.win = mw_add(); + mw_title_set(mng.win, _("Textblock style manager")); + evas_object_smart_callback_add(mng.win, "cancel", _mw_cancel_cb, NULL); + evas_object_smart_callback_add(mng.win, "done", _mw_done_cb, NULL); + ic = elm_icon_add(mng.win); elm_icon_standard_set(ic, "text2"); - mw_icon_set(style_edit->win, ic); - style_edit->layout = elm_layout_add(ap.win); - elm_layout_theme_set(style_edit->layout, "layout", "style_manager", "default"); - elm_object_part_text_set(style_edit->layout, "elm.text", _("Preview")); - elm_layout_text_set(style_edit->layout, "elm.subtext", _("Font list")); - style_edit->panes = elm_panes_add(style_edit->win); - elm_object_content_set(style_edit->win, style_edit->panes); - elm_object_part_content_set(style_edit->panes, "left", style_edit->layout); - elm_object_part_content_set(style_edit->panes, "right", ap.property.style_manager); - - style_edit->entry_prev = elm_layout_add(style_edit->layout); - elm_layout_theme_set(style_edit->entry_prev, "layout", "style_manager", "preview"); - evas_object_show(style_edit->entry_prev); - elm_object_signal_emit(style_edit->entry_prev, "entry,hide", "eflete"); + mw_icon_set(mng.win, ic); + + if(mng.layout) goto done; + + mng.layout = elm_layout_add(ap.win); + elm_layout_theme_set(mng.layout, "layout", "style_manager", "default"); + elm_object_part_text_set(mng.layout, "elm.text", _("Preview")); + elm_layout_text_set(mng.layout, "elm.subtext", _("Font list")); + mng.panes = elm_panes_add(mng.win); + elm_object_part_content_set(mng.panes, "left", mng.layout); + elm_object_part_content_set(mng.panes, "right", ap.property.style_manager); + + mng.entry_prev = elm_layout_add(mng.layout); + elm_layout_theme_set(mng.entry_prev, "layout", "style_manager", "preview"); + evas_object_show(mng.entry_prev); + elm_object_signal_emit(mng.entry_prev, "entry,hide", "eflete"); canvas = evas_object_evas_get(ap.win); - /* Entry preview to show colorclass */ - bg = elm_layout_add(style_edit->layout); + bg = elm_layout_add(mng.layout); elm_layout_theme_set(bg, "layout", "workspace", "bg"); - elm_object_part_content_set(style_edit->entry_prev, "background", bg); + elm_object_part_content_set(mng.entry_prev, "background", bg); - style_edit->textblock_style = evas_object_textblock_add(canvas); - elm_object_part_content_set(style_edit->entry_prev, "entry", style_edit->textblock_style); - evas_object_textblock_valign_set(style_edit->textblock_style, 0.5); + mng.textblock_style = evas_object_textblock_add(canvas); + elm_object_part_content_set(mng.entry_prev, "entry", mng.textblock_style); + evas_object_textblock_valign_set(mng.textblock_style, 0.5); ts = evas_textblock_style_new(); evas_textblock_style_set(ts, style_buf); - evas_object_textblock_style_set(style_edit->textblock_style, ts); - evas_object_textblock_text_markup_set(style_edit->textblock_style, TEST_TEXT); - evas_object_show(style_edit->textblock_style); - elm_object_part_content_set(style_edit->layout, "elm.swallow.preview", style_edit->entry_prev); + evas_object_textblock_style_set(mng.textblock_style, ts); + evas_object_textblock_text_markup_set(mng.textblock_style, TEST_TEXT); + evas_object_show(mng.textblock_style); + elm_object_part_content_set(mng.layout, "elm.swallow.preview", mng.entry_prev); if (!_itc_style) { @@ -999,8 +966,6 @@ style_manager_add() _itc_style->item_style = "aligned"; _itc_style->func.text_get = _item_style_label_get; _itc_style->func.content_get = _item_style_icon_get; - _itc_style->func.state_get = NULL; - _itc_style->func.del = NULL; } if (!_itc_tags) { @@ -1008,61 +973,54 @@ style_manager_add() _itc_tags->item_style = "aligned"; _itc_tags->func.text_get = _item_tags_label_get; _itc_tags->func.content_get = _item_tags_icon_get; - _itc_tags->func.state_get = NULL; - _itc_tags->func.del = NULL; - } - - search = _style_manager_search_field_create(style_edit->layout); - elm_object_part_content_set(style_edit->layout, "elm.swallow.search", search); - evas_object_smart_callback_add(search, "changed", _search_changed, style_edit); - evas_object_smart_callback_add(search, "activated", _search_nxt_gd_item, style_edit); - evas_object_smart_callback_add(style_edit->glist, "pressed", _search_reset_cb, &(style_edit->style_search_data)); - style_edit->style_search_data.search_entry = search; - style_edit->style_search_data.last_item_found = NULL; - - style_edit->glist = elm_genlist_add(style_edit->layout); - elm_object_part_content_set(style_edit->layout, "elm.swallow.list", style_edit->glist); - evas_object_smart_callback_add(style_edit->glist, "expand,request", _expand_request_cb, NULL); - evas_object_smart_callback_add(style_edit->glist, "expanded", _expanded_cb, style_edit); - evas_object_smart_callback_add(style_edit->glist, "contract,request", _contract_request_cb, NULL); - evas_object_smart_callback_add(style_edit->glist, "contracted", _contracted_cb, NULL); - evas_object_smart_callback_add(style_edit->glist, "unselected", _on_unselected_cb, style_edit); - evas_object_show(style_edit->glist); - /*elm_genlist_tree_effect_enabled_set(style_edit->glist, EINA_TRUE);*/ - - styles = ap.project->styles; - - EINA_LIST_FOREACH(styles, l_st, res) - { - glit_style = elm_genlist_item_append(style_edit->glist, _itc_style, - res->name, NULL, ELM_GENLIST_ITEM_TREE, - _on_glit_selected, style_edit); - elm_object_item_data_set(glit_style, (char *)res->name); } - style_edit->menu = elm_menu_add(ap.win); - elm_menu_item_add(style_edit->menu, NULL, "text_style", _("Style"), _on_bt_style_add, style_edit); - style_edit->menu_tag = elm_menu_item_add(style_edit->menu, NULL, "text_style_tag", _("Tag"), _on_bt_tag_add, style_edit); + mng.glist = elm_genlist_add(mng.layout); + elm_object_part_content_set(mng.layout, "elm.swallow.list", mng.glist); + evas_object_smart_callback_add(mng.glist, "expand,request", _expand_request_cb, NULL); + evas_object_smart_callback_add(mng.glist, "expanded", _expanded_cb, NULL); + evas_object_smart_callback_add(mng.glist, "contract,request", _contract_request_cb, NULL); + evas_object_smart_callback_add(mng.glist, "contracted", _contracted_cb, NULL); + evas_object_smart_callback_add(mng.glist, "unselected", _on_unselected_cb, NULL); + evas_object_show(mng.glist); + + search = _style_manager_search_field_create(mng.layout); + elm_object_part_content_set(mng.layout, "elm.swallow.search", search); + evas_object_smart_callback_add(search, "changed", _search_changed, NULL); + evas_object_smart_callback_add(search, "activated", _search_nxt_gd_item, NULL); + evas_object_smart_callback_add(mng.glist, "pressed", _search_reset_cb, &(mng.style_search_data)); + mng.style_search_data.search_entry = search; + mng.style_search_data.last_item_found = NULL; + + mng.menu = elm_menu_add(ap.win); + elm_menu_item_add(mng.menu, NULL, "text_style", _("Style"), _style_add_cb, NULL); + mng.menu_tag = elm_menu_item_add(mng.menu, NULL, "text_style_tag", _("Tag"), _tab_add_cb, NULL); button_add = elm_button_add(ap.win); elm_object_style_set(button_add, "plus"); - evas_object_smart_callback_add(button_add, "clicked", _on_bt_add, style_edit); - elm_object_part_content_set(style_edit->layout, "elm.swallow.btn_add", button_add); + evas_object_smart_callback_add(button_add, "clicked", _btn_add_cb, NULL); + elm_object_part_content_set(mng.layout, "elm.swallow.btn_add", button_add); - style_edit->button_del = elm_button_add(ap.win); - elm_object_style_set(style_edit->button_del, "minus"); - evas_object_smart_callback_add(style_edit->button_del, "clicked", _on_bt_del, style_edit); - elm_object_part_content_set(style_edit->layout, "elm.swallow.btn_del", style_edit->button_del); - elm_object_disabled_set(style_edit->button_del, true); + mng.button_del = elm_button_add(ap.win); + elm_object_style_set(mng.button_del, "minus"); + evas_object_smart_callback_add(mng.button_del, "clicked", _btn_del_cb, NULL); + elm_object_part_content_set(mng.layout, "elm.swallow.btn_del", mng.button_del); + elm_object_disabled_set(mng.button_del, true); - box_bg = _add_box_bg(style_edit); - elm_object_part_content_set(style_edit->layout, "elm.swallow.menu", box_bg); + box_bg = _add_box_bg(); + elm_object_part_content_set(mng.layout, "elm.swallow.menu", box_bg); evas_textblock_style_free(ts); - evas_object_event_callback_add(style_edit->layout, EVAS_CALLBACK_DEL, _on_style_manager_close, style_edit); - - evas_object_smart_callback_call(ap.win, SIGNAL_STYLE_SELECTED, NULL); - - evas_object_show(style_edit->win); - return style_edit->win; + evas_object_smart_callback_add(ap.win, SIGNAL_PROJECT_CLOSED, _project_closed_cb, NULL); + +done: + /* if genlist is empty try to fill it. This happens if the managers called + * first time or project was reopened */ + if (!elm_genlist_realized_items_get(mng.glist)) + _style_mamanger_init(); + + elm_object_content_set(mng.win, mng.panes); + evas_object_show(mng.win); + elm_object_focus_set(mng.style_search_data.search_entry, true); + return mng.win; } --