rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=9ccacb6852e60350ca3e634e10201d9ea22800a3
commit 9ccacb6852e60350ca3e634e10201d9ea22800a3 Author: Tetiana Naumenko <t.naume...@samsung.com> Date: Fri Jan 27 18:20:08 2017 +0200 property_group: add script preview default_entry.edc: add swallow for button in multiline entry tizen_entry.edc: add group for multiline entry Change-Id: I3f2a348b63f2c9569072370f3456aab02cfee544 --- data/themes/default/widgets/entry.edc | 16 + data/themes/tizen/widgets/entry.edc | 493 +++++++++++++++++++++ src/bin/Makefile.am | 1 + src/bin/common/signals.c | 3 + src/bin/common/signals.h | 3 + .../resource_manager/resource_manager_signals.h | 1 + src/bin/ui/property/property_common.c | 7 + src/bin/ui/property/property_group.c | 17 + src/bin/ui/property/property_private.h | 5 + src/bin/ui/property/property_script.c | 54 +++ 10 files changed, 600 insertions(+) diff --git a/data/themes/default/widgets/entry.edc b/data/themes/default/widgets/entry.edc index b52e5d4..701a7a0 100644 --- a/data/themes/default/widgets/entry.edc +++ b/data/themes/default/widgets/entry.edc @@ -1,5 +1,6 @@ group { name: "elm/entry/base/default"; alias: "elm/entry/base-single-noedit/default"; + alias: "elm/entry/base-nowrap-noedit/default"; parts { part { name: "elm.guide"; type: TEXTBLOCK; @@ -574,6 +575,21 @@ group { name: "elm/scroller/entry/default"; } } } + part { name: "elm.swallow.elipsis"; + type: SWALLOW; + description { state: "default" 0.0; + align: 1.0 0.0; + fixed: 1 1; + max: 24 24; + min: 24 24; + rel1 { + offset: 0 -2; + } + rel2 { + offset: 1 0; + } + } + } } programs { program { name: "v_mouse_down"; diff --git a/data/themes/tizen/widgets/entry.edc b/data/themes/tizen/widgets/entry.edc index 577dd1c..7bcfbb3 100644 --- a/data/themes/tizen/widgets/entry.edc +++ b/data/themes/tizen/widgets/entry.edc @@ -1,5 +1,6 @@ group { name: "elm/entry/base/default"; alias: "elm/entry/base-single-noedit/default"; + alias: "elm/entry/base-nowrap-noedit/default"; parts { part { name: "elm.guide"; type: TEXTBLOCK; @@ -80,6 +81,498 @@ group { name: "elm/entry/base/default"; } } +group { name: "elm/scroller/entry/default"; + data { + item: "focus_highlight" "on"; + } + parts { + part { name: "border"; + type: RECT; + description { state: "default" 0.0; + color_class: "border"; + min: 0 380; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + color_class: "border_focused"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + } + description { state: "hovered" 0.0; + inherit: "default" 0.0; + } + } + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color_class: "entry_bg"; + rel1 { + to: "border"; + offset: 1 1; + } + rel2 { + to: "border"; + offset: -2 -2; + } + } + description { state: "disabled" 0.0; + } + } + part { name: "sb_vbar"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + align: 1.0 0.5; + min: 6 0; + max: 6 -1; + rel1 { + to: "bg"; + offset: 0 1; + } + rel2 { + relative: 1.0 0.0; + to_x: "bg"; + to_y: "sb_hbar"; + offset: -2 -1; + } + } + description { state: "hidden" 0.0; + align: 1.0 0.0; + fixed: 1 0; + max: 0 -1; + rel1 { + offset: 0 1; + to_y: "bg"; + } + rel2 { + relative: 1.0 0.0; + offset: -2 -1; + to_x: "bg"; + to_y: "sb_hbar"; + } + } + } + part { name: "sb_vbar_p1"; + type: SPACER; + description { state: "default" 0.0; + rel1 { + to: "sb_vbar"; + } + rel2 { + relative: 1.0 0.0; + to: "elm.dragable.vbar"; + } + } + } + part { name: "sb_vbar_p2"; + type: SPACER; + description { state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + to: "elm.dragable.vbar"; + } + rel2 { + to: "sb_vbar"; + } + } + } + part { name: "elm.dragable.vbar"; + type: RECT; + scale: 1; + dragable { + x: 0 0 0; + y: 1 1 0; + confine: "sb_vbar"; + } + description { state: "default" 0.0; + fixed: 1 1; + min: 6 24; + max: 6 -1; + color: 0 0 0 0; + rel1 { + relative: 0.5 0.5; + to: "sb_vbar"; + } + rel2 { + relative: 0.5 0.5; + to: "sb_vbar"; + } + } + } + part { name: "sb_hbar"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + align: 0.0 1.0; + fixed: 0 1; + max: -1 6; + rel1 { + to_x: "bg"; + offset: 1 0; + } + rel2 { + relative: 0.0 1.0; + offset: -1 -3; + to_x: "sb_vbar"; + to_y: "bg"; + } + } + description { state: "hidden" 0.0; + align: 0.0 1.0; + fixed: 0 1; + max: -1 0; + rel1 { + to: "bg"; + } + rel2 { + relative: 0.0 1.0; + offset: -1 -3; + to_x: "sb_vbar"; + to_y: "bg"; + } + } + } + part { name: "sb_hbar_p1"; + type: SPACER; + description { state: "default" 0.0; + fixed: 1 1; + rel1 { + to: "sb_hbar"; + } + rel2 { + relative: 0.0 1.0; + to: "elm.dragable.hbar"; + } + } + } + part { name: "sb_hbar_p2"; + type: SPACER; + description { state: "default" 0.0; + rel1 { + relative: 1.0 0.0; + to: "elm.dragable.hbar"; + } + rel2 { + to: "sb_hbar"; + } + } + } + part { name: "elm.dragable.hbar"; + type: RECT; + scale: 1; + clip_to: "sb_hbar"; + dragable { + x: 1 1 0; + y: 0 0 0; + confine: "sb_hbar"; + } + description { state: "default" 0.0; + fixed: 1 1; + min: 24 6; + max: -1 6; + color: 0 0 0 0; + rel1 { + relative: 0.5 0.5; + to: "sb_hbar"; + } + rel2 { + relative: 0.5 0.5; + to: "sb_hbar"; + } + } + } + part { name: "clipper"; + type: RECT; + description { state: "default" 0.0; + rel1 { + to: "elm.swallow.content"; + } + rel2 { + to: "elm.swallow.content"; + } + } + } + part { name: "elm.swallow.background"; + type: SWALLOW; + clip_to: "clipper"; + description { state: "default" 0.0; + rel1 { + offset: 1 1; + to: "bg"; + } + rel2 { + offset: -2 -2; + to: "bg"; + } + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + clip_to: "clipper"; + description { state: "default" 0.0; + rel1 { + offset: 1 1; + to: "elm.swallow.background"; + } + rel2 { + relative: 0.0 0.0; + offset: -6 -6; + to_x: "sb_vbar"; + to_y: "sb_hbar"; + } + } + } + part { name: "elm.swallow.overlay"; + type: SWALLOW; + repeat_events: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + rel1 { + to: "elm.swallow.background"; + } + rel2 { + to: "elm.swallow.background"; + } + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + align: 1.0 0.0; + fixed: 1 1; + rel1 { + to: "bg"; + } + rel2 { + relative: 0.0 1.0; + to: "bg"; + } + } + description { state: "visible" 0.0; + align: 0.0 0.0; + fixed: 1 1; + rel1 { + to: "bg"; + } + rel2 { + relative: 0.0 1.0; + to: "bg"; + } + } + } + part { name: "elm.swallow.end"; + type: SWALLOW; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + fixed: 1 1; + rel1 { + relative: 1.0 0.0; + to: "bg"; + } + rel2 { + to: "bg"; + } + } + description { state: "visible" 0.0; + align: 1.0 0.0; + fixed: 1 1; + rel1 { + relative: 1.0 0.0; + to: "bg"; + } + rel2 { + to: "bg"; + } + } + } + part { name: "focus"; + type: RECT; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + rel1 { + to: "bg"; + } + rel2 { + to: "bg"; + } + } + description { state: "pass" 0.0; + color_class: "valid"; + rel1 { + to: "bg"; + } + rel2 { + to: "bg"; + } + } + description { state: "fail" 0.0; + color_class: "invalid"; + rel1 { + to: "bg"; + } + rel2 { + to: "bg"; + } + } + } + part { name: "elm.swallow.elipsis"; + type: SWALLOW; + description { state: "default" 0.0; + align: 1.0 0.0; + fixed: 1 1; + max: 24 24; + min: 24 24; + rel1 { + offset: 0 2; + } + rel2 { + offset: -3 0; + } + } + } + } + programs { + program { name: "v_mouse_down"; + signal: "mouse,down,1*"; + source: "elm.dragable.vbar"; + action: STATE_SET "clicked" 0.00; + target: "elm.dragable.vbar"; + } + program { name: "h_mouse_down"; + signal: "mouse,down,1*"; + source: "elm.dragable.hbar"; + action: STATE_SET "clicked" 0.00; + target: "elm.dragable.hbar"; + } + program { name: "horizontal_scroll_down"; + signal: "mouse,down,1*"; + source: "sb_hbar_p1"; + action: DRAG_VAL_PAGE -1.0000 0.0000; + target: "elm.dragable.vbar"; + } + program { name: "horizontal_scroll_up"; + signal: "mouse,down,1*"; + source: "sb_hbar_p2"; + action: DRAG_VAL_PAGE 1.0000 0.0000; + target: "elm.dragable.vbar"; + } + program { name: "vertical_scroll_down"; + signal: "mouse,down,1*"; + source: "sb_vbar_p1"; + action: DRAG_VAL_PAGE 0.0000 -1.0000; + target: "elm.dragable.hbar"; + } + program { name: "vertical_scroll_up"; + signal: "mouse,down,1*"; + source: "sb_vbar_p2"; + action: DRAG_VAL_PAGE 0.0000 1.0000; + target: "elm.dragable.hbar"; + } + program { name: "reload_on_load"; + signal: "load"; + source: ""; + action: SIGNAL_EMIT "reload" "elm"; + } + program { name: "v_mouse_up"; + signal: "mouse,up,1"; + source: "elm.dragable.vbar"; + action: STATE_SET "default" 0.00; + target: "elm.dragable.vbar"; + } + program { name: "h_mouse_up"; + signal: "mouse,up,1"; + source: "elm.dragable.hbar"; + action: STATE_SET "default" 0.00; + target: "elm.dragable.hbar"; + } + program { name: "show_horizontal_scroll"; + signal: "elm,action,show,hbar"; + source: "elm"; + action: STATE_SET "default" 0.00; + target: "sb_hbar"; + } + program { name: "hide_horizontal_scroll"; + signal: "elm,action,hide,hbar"; + source: "elm"; + action: STATE_SET "hidden" 0.00; + target: "sb_hbar"; + } + program { name: "show_vertical_scroll"; + signal: "elm,action,show,vbar"; + source: "elm"; + action: STATE_SET "default" 0.00; + target: "sb_vbar"; + } + program { name: "hide_vertical_scroll"; + signal: "elm,action,hide,vbar"; + source: "elm"; + action: STATE_SET "hidden" 0.00; + target: "sb_vbar"; + } + program { name: "icon_show"; + signal: "elm,action,show,icon"; + source: "elm"; + action: STATE_SET "visible" 0.00; + target: "elm.swallow.icon"; + } + program { name: "icon_hide"; + signal: "elm,action,hide,icon"; + source: "elm"; + action: STATE_SET "default" 0.00; + target: "elm.swallow.icon"; + } + program { name: "end_show"; + signal: "elm,action,show,end"; + source: "elm"; + action: STATE_SET "visible" 0.00; + target: "elm.swallow.end"; + } + program { name: "end_hide"; + signal: "elm,action,hide,end"; + source: "elm"; + action: STATE_SET "default" 0.00; + target: "elm.swallow.end"; + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.00; + target: "bg"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.00; + target: "bg"; + } + program { name: "validation_pass"; + signal: "validation,default,pass"; + source: "elm"; + action: STATE_SET "pass" 0.00; + target: "focus"; + } + program { name: "validation_fail"; + signal: "validation,default,fail"; + source: "elm"; + action: STATE_SET "fail" 0.00; + target: "focus"; + } + program { name: "validation_off"; + signal: "validation,default"; + source: "elm"; + action: STATE_SET "default" 0.00; + target: "focus"; + } + } +} + group { name: "elm/scroller/entry_single/default"; data { item: "focus_highlight" "on"; diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 7973fdf..703a6bc 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -124,6 +124,7 @@ libete_a_SOURCES = \ ../../src/bin/ui/property/property_sound.c \ ../../src/bin/ui/property/property_textblock.c \ ../../src/bin/ui/property/property_group.c \ +../../src/bin/ui/property/property_script.c \ ../../src/bin/ui/sound_player/sound_player.c \ ../../src/bin/ui/property/property_demo.c \ ../../src/bin/ui/workspace/workspace.c \ diff --git a/src/bin/common/signals.c b/src/bin/common/signals.c index f8c8599..5b3f801 100644 --- a/src/bin/common/signals.c +++ b/src/bin/common/signals.c @@ -111,6 +111,9 @@ const Signals signals = { .image_selector = { .changed = "[eflete]image,selector,changed", }, + .script_control = { + .clicked = "[eflete]script,control,clicked", + }, }, }, diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h index 3f7da3b..bc547f6 100644 --- a/src/bin/common/signals.h +++ b/src/bin/common/signals.h @@ -111,6 +111,9 @@ typedef struct { const struct { const char *changed; } image_selector; + const struct { + const char *clicked; + } script_control; } property; } eflete; diff --git a/src/bin/resource_manager/resource_manager_signals.h b/src/bin/resource_manager/resource_manager_signals.h index a2d688a..dd2e9d2 100644 --- a/src/bin/resource_manager/resource_manager_signals.h +++ b/src/bin/resource_manager/resource_manager_signals.h @@ -28,6 +28,7 @@ typedef enum { ATTRIBUTE_GROUP_MIN_H, ATTRIBUTE_GROUP_MAX_W, ATTRIBUTE_GROUP_MAX_H, + ATTRIBUTE_GROUP_SCRIPT, ATTRIBUTE_GROUP_DATA_NAME, ATTRIBUTE_GROUP_DATA_VALUE, ATTRIBUTE_STATE_NAME, diff --git a/src/bin/ui/property/property_common.c b/src/bin/ui/property/property_common.c index 88946d8..3a099ef 100644 --- a/src/bin/ui/property/property_common.c +++ b/src/bin/ui/property/property_common.c @@ -392,6 +392,12 @@ _control_create(Property_Attribute *pa, Property_Action *action, Evas_Object *pa evas_object_smart_callback_add(content, signals.elm.entry.activated, _stop_cb, pa); evas_object_smart_callback_add(content, signals.elm.entry.unfocused, _stop_cb, pa); break; + case PROPERTY_CONTROL_ENTRY_SCRIPT: + content = property_entry_script_control_add(parent); + evas_object_smart_callback_add(content, signals.elm.entry.changed_user, _start_change_cb, pa); + evas_object_smart_callback_add(content, signals.elm.entry.activated, _stop_cb, pa); + evas_object_smart_callback_add(content, signals.elm.entry.unfocused, _stop_cb, pa); + break; case PROPERTY_CONTROL_COLOR: content = property_color_control_add(parent); evas_object_smart_callback_add(content, signals.eflete.property.color_control.changed, _start_change_cb, pa); @@ -754,6 +760,7 @@ property_common_itc_init(Property_Data *pd) pd->item_classes[PROPERTY_CONTROL_NONE] [PROPERTY_CONTROL_NONE] = pd->itc_caption; pd->item_classes[PROPERTY_CONTROL_ENTRY] [PROPERTY_CONTROL_NONE] = pd->itc_1swallow; + pd->item_classes[PROPERTY_CONTROL_ENTRY_SCRIPT] [PROPERTY_CONTROL_NONE] = pd->itc_1swallow; pd->item_classes[PROPERTY_CONTROL_COMBOBOX] [PROPERTY_CONTROL_NONE] = pd->itc_1swallow; pd->item_classes[PROPERTY_CONTROL_COMBOBOX_CC] [PROPERTY_CONTROL_NONE] = pd->itc_1swallow; pd->item_classes[PROPERTY_CONTROL_COLORSEL] [PROPERTY_CONTROL_NONE] = pd->itc_1swallow_wide; diff --git a/src/bin/ui/property/property_group.c b/src/bin/ui/property/property_group.c index 284986e..18ee3c9 100644 --- a/src/bin/ui/property/property_group.c +++ b/src/bin/ui/property/property_group.c @@ -517,6 +517,7 @@ _subitems_get(Property_Attribute *pa) APPEND(PROPERTY_GROUP_ITEM_GROUP_NAME); APPEND(PROPERTY_GROUP_ITEM_GROUP_MIN); APPEND(PROPERTY_GROUP_ITEM_GROUP_MAX); + APPEND(PROPERTY_GROUP_ITEM_GROUP_SCRIPT); break; case PROPERTY_GROUP_ITEM_PART_TITLE: APPEND(PROPERTY_GROUP_ITEM_PART_NAME); @@ -849,6 +850,11 @@ _init_cb(Property_Attribute *pa, Property_Action *action) case ATTRIBUTE_PART_ITEM_NAME: elm_object_disabled_set(action->control, true); break; + case ATTRIBUTE_GROUP_SCRIPT: + elm_entry_single_line_set(action->control, false); + elm_entry_editable_set(action->control, false); + evas_object_size_hint_min_set(action->control, 0, 400); + break; case ATTRIBUTE_PROGRAM_SCRIPT: elm_entry_single_line_set(action->control, false); elm_entry_editable_set(action->control, false); @@ -1768,6 +1774,11 @@ _update_cb(Property_Attribute *pa, Property_Action *action) case ATTRIBUTE_GROUP_NAME: property_entry_set(action->control, group_pd.group->common.name); return true; + case ATTRIBUTE_GROUP_SCRIPT: + code = edje_edit_script_get(EDIT_OBJ); + property_entry_set(action->control, code); + free(code); + return true; case ATTRIBUTE_STATE_NAME: str_val1 = eina_stringshare_printf("%s %.2f", _state_name_get(), @@ -3482,6 +3493,7 @@ _change_cb(Property_Attribute *pa, Property_Action *action) double_val1 = elm_spinner_value_get(action->control); break; case PROPERTY_CONTROL_ENTRY: + case PROPERTY_CONTROL_ENTRY_SCRIPT: case PROPERTY_CONTROL_IMAGE_NORMAL: case PROPERTY_CONTROL_VECTOR_NORMAL: str_val1 = property_entry_get(action->control); @@ -4527,6 +4539,7 @@ _stop_cb(Property_Attribute *pa, Property_Action *action) switch (action->type.attribute) { case ATTRIBUTE_GROUP_NAME: + case ATTRIBUTE_GROUP_SCRIPT: case ATTRIBUTE_PART_NAME: case ATTRIBUTE_GROUP_DATA_NAME: case ATTRIBUTE_GROUP_DATA_VALUE: @@ -4882,6 +4895,10 @@ _init_items() _("The maximum height for the container defined by " "the composition of the parts. This value is not enforced.")); break; + case PROPERTY_GROUP_ITEM_GROUP_SCRIPT: + IT.name = "Script"; + _action1(&IT, NULL, NULL, PROPERTY_CONTROL_ENTRY_SCRIPT, ATTRIBUTE_GROUP_SCRIPT, NULL); + break; /* part block */ case PROPERTY_GROUP_ITEM_PART_TITLE: diff --git a/src/bin/ui/property/property_private.h b/src/bin/ui/property/property_private.h index d78af84..b3e70c8 100644 --- a/src/bin/ui/property/property_private.h +++ b/src/bin/ui/property/property_private.h @@ -51,6 +51,7 @@ enum _Property_Control { PROPERTY_CONTROL_COMBOBOX_CC, /* special combobox for color_classes */ PROPERTY_CONTROL_SPINNER, PROPERTY_CONTROL_ENTRY, + PROPERTY_CONTROL_ENTRY_SCRIPT, PROPERTY_CONTROL_COLOR, PROPERTY_CONTROL_COLORSEL, PROPERTY_CONTROL_LABEL, @@ -205,6 +206,7 @@ typedef enum { PROPERTY_GROUP_ITEM_GROUP_NAME, PROPERTY_GROUP_ITEM_GROUP_MIN, PROPERTY_GROUP_ITEM_GROUP_MAX, + PROPERTY_GROUP_ITEM_GROUP_SCRIPT, PROPERTY_GROUP_ITEM_PART_TITLE, PROPERTY_GROUP_ITEM_PART_NAME, @@ -618,6 +620,9 @@ property_textblock_manager_init(Property_Data *pd); Eina_List * property_textblock_manager_items_get(void); +Evas_Object * +property_entry_script_control_add(Evas_Object *parent); + /* dummy submodule. for implementation tests. will be deleted later */ void property_dummy_init(void); diff --git a/src/bin/ui/property/property_script.c b/src/bin/ui/property/property_script.c new file mode 100644 index 0000000..eb7e750 --- /dev/null +++ b/src/bin/ui/property/property_script.c @@ -0,0 +1,54 @@ +/* + * Edje Theme Editor + * Copyright (C) 2013-2017 Samsung Electronics. + * + * This file is part of Edje Theme Editor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; If not, see www.gnu.org/licenses/lgpl.html. + */ + +#include "property.h" +#include "property_private.h" +#include "main_window.h" + +static void +_btn_script_manager_cb(void *data, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) +{ + Evas_Object *content = data; + + assert(content != NULL); + + evas_object_smart_callback_call(content, signals.eflete.property.script_control.clicked, NULL); +} + +Evas_Object * +property_entry_script_control_add(Evas_Object *parent) +{ + Evas_Object *content, *btn; + + assert(parent != NULL); + + ENTRY_ADD(parent, content, true); + btn = elm_button_add(content); + elm_object_style_set(btn, "elipsis"); + evas_object_smart_callback_add(btn, signals.elm.button.clicked, _btn_script_manager_cb, content); + + elm_object_part_content_set(content, "elm.swallow.elipsis", btn); + elm_entry_editable_set(content, false); + evas_object_show(btn); + evas_object_show(content); + + return content; +} --