From 1c71bdd5de3f4f112e477693a9420677c14289c7 Mon Sep 17 00:00:00 2001 From: raster Date: Fri, 21 Oct 2011 04:36:25 +0000 Subject: [PATCH] and really move all toggle stuff over to check. git-svn-id: https://svn.enlightenment.org/svn/e/trunk/elementary@64231 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- data/themes/widgets/toggle.edc | 444 +++++++++++++++++++++++++++++++++++++++++ src/lib/elm_check.c | 32 +-- 2 files changed, 450 insertions(+), 26 deletions(-) create mode 100644 data/themes/widgets/toggle.edc diff --git a/data/themes/widgets/toggle.edc b/data/themes/widgets/toggle.edc new file mode 100644 index 0000000..8194d54 --- /dev/null +++ b/data/themes/widgets/toggle.edc @@ -0,0 +1,444 @@ +group { name: "elm/check/base/toggle"; + images { + image: "shelf_inset.png" COMP; + image: "bt_basew.png" COMP; + image: "bt_bases.png" COMP; + image: "bt_hilightw.png" COMP; + image: "tog_base_on.png" COMP; + image: "tog_base_off.png" COMP; + image: "tog_dis_base_on.png" COMP; + image: "tog_dis_base_off.png" COMP; + } + script { + public is_rtl; + } + parts { + part { name: "bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1.relative: 1.0 0.0; + rel1.offset: -4 3; + rel2.offset: -4 -4; + align: 1.0 0.5; + min: 96 16; + max: 96 16; + aspect: 4.0 4.0; + aspect_preference: VERTICAL; + color: 255 255 255 255; + } + } + part { name: "clipper"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "bg"; + rel2.to: "bg"; + color: 255 255 255 255; + } + } + part { name: "button"; + type: RECT; + scale: 1; + clip_to: "clipper"; + mouse_events: 1; + dragable { + x: 1 1 0; + y: 0 0 0; + confine: "bg"; + } + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "bg"; + rel2.to: "bg"; + min: 16 16; + max: 16 16; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + color: 0 0 0 0; + } + } + part { name: "button_events"; + type: RECT; + dragable { + events: "button"; + } + description { state: "default" 0.0; + rel1.to_x: "bg"; + rel1.offset: 0 0; + rel1.relative: 0.0 0.0; + rel2.to_x: "bg"; + rel2.offset: -1 -1; + rel2.relative: 1.0 1.0; + color: 0 0 0 0; + } + } + part { name: "onrect"; + type: IMAGE; + scale: 1; + clip_to: "clipper"; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "button"; + rel1.relative: -5.0 0.0; + rel2.to: "button"; + rel2.relative: 0.5 1.0; + image.normal: "tog_base_on.png"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + image.normal: "tog_dis_base_on.png"; + } + } + part { name: "offrect"; + type: IMAGE; + scale: 1; + clip_to: "clipper"; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "button"; + rel1.relative: 0.5 0.0; + rel2.to: "button"; + rel2.relative: 6.0 1.0; + image.normal: "tog_base_off.png"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + image.normal: "tog_dis_base_off.png"; + } + } + part { name: "elm.offtext"; + type: TEXT; + mouse_events: 0; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to_x: "button"; + rel1.relative: 1.0 0.0; + rel2.to_x: "offrect"; + color: 0 0 0 255; + text { + font: "Sans,Edje-Vera"; + size: 10; + min: 0 1; + align: 0.5 0.5; + text: "OFF"; + } + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + } + } + part { name: "elm.ontext"; + type: TEXT; + effect: SOFT_SHADOW; + mouse_events: 0; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to_x: "onrect"; + rel1.offset: 1 1; + rel2.to_x: "button"; + rel2.offset: 0 0; + rel2.relative: 0.0 1.0; + color: 224 224 224 255; + color3: 0 0 0 64; + text { + font: "Sans,Edje-Vera"; + size: 10; + min: 0 1; + align: 0.5 0.5; + text: "ON"; + } + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + color3: 0 0 0 24; + } + } + part { name: "conf_over"; + mouse_events: 0; + description { state: "default" 0.0; + rel1.offset: -1 -1; + rel1.to: "bg"; + rel2.offset: 0 0; + rel2.to: "bg"; + image { + normal: "shelf_inset.png"; + border: 7 7 7 7; + middle: 0; + } + fill.smooth : 0; + } + } + part { name: "button0"; + mouse_events: 0; + clip_to: "clipper"; + description { state: "default" 0.0; + rel1.to: "button2"; + rel1.offset: -4 -4; + rel2.to: "button2"; + rel2.offset: 3 3; + image { + normal: "bt_bases.png"; + border: 11 11 11 11; + } + image.middle: SOLID; + color: 255 255 255 128; + } + } + part { name: "button2"; + mouse_events: 0; + clip_to: "clipper"; + description { state: "default" 0.0; + rel1.to: "button"; + rel1.offset: -2 -2; + rel2.to: "button"; + rel2.offset: 1 1; + image { + normal: "bt_basew.png"; + border: 7 7 7 7; + } + image.middle: SOLID; + } + } + part { name: "button3"; + mouse_events: 0; + clip_to: "clipper"; + description { state: "default" 0.0; + rel1.to: "button2"; + rel2.to: "button2"; + rel2.relative: 1.0 0.5; + image { + normal: "bt_hilightw.png"; + border: 4 4 4 0; + } + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + description { state: "default" 0.0; + fixed: 1 0; + visible: 0; + align: 0.0 0.5; + rel1.offset: 4 4; + rel2.relative: 0.0 1.0; + rel2.offset: 3 -5; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + aspect: 1.0 1.0; + rel2.offset: 4 -5; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + visible: 1; + aspect: 1.0 1.0; + } + } + part { name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + visible: 0; + rel1.to_x: "elm.swallow.content"; + rel1.relative: 1.0 0.0; + rel1.offset: 0 4; + rel2.to_x: "bg"; + rel2.relative: 0.0 1.0; + rel2.offset: -5 -5; + color: 0 0 0 255; + text { + font: "Sans,Edje-Vera"; + size: 10; + min: 0 0; + align: 0.0 0.5; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + text.min: 1 1; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + visible: 1; + text.min: 1 1; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "drag_end"; + signal: "mouse,up,1"; + source: "button"; + script { + new Float:dx, Float:dy; + get_drag(PART:"button", dx, dy); + if (dx > 0.5) + { + set_drag(PART:"button", 1.0, 0.0); + } + else + { + set_drag(PART:"button", 0.0, 0.0); + } + if (((get_int(is_rtl) == 1) && (dx <= 0.5)) || + (get_int(is_rtl) == 0) && (dx > 0.5)) { + emit("elm,action,check,on", ""); + } + else { + emit("elm,action,check,off", ""); + } + + } + } + program { name: "check_on"; + signal: "elm,state,check,on"; + source: "elm"; + script { + new Float:drag; + if (get_int(is_rtl) == 0) { + drag = 100.0; + } + else { + drag = 0.0; + } + set_drag(PART:"button", drag, 0.0); + } + } + program { name: "check_off"; + signal: "elm,state,check,off"; + source: "elm"; + script { + new Float:drag; + if (get_int(is_rtl) == 0) { + drag = 0.0; + } + else { + drag = 100.0; + } + set_drag(PART:"button", drag, 0.0); + } + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.text"; + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.swallow.content"; + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "elm.offtext"; + target: "elm.ontext"; + target: "onrect"; + target: "offrect"; + target: "disabler"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "disabled_visible", 0.0); + else + set_state(PART:"elm.text", "disabled", 0.0); + + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); + else + set_state(PART:"elm.swallow.content", "disabled", 0.0); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disabler"; + target: "onrect"; + target: "offrect"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "default", 0.0); + + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.swallow.content", "visible", 0.0); + else + set_state(PART:"elm.swallow.content", "default", 0.0); + } + } + program { name: "to_rtl"; + signal: "edje,state,rtl"; + source: "edje"; + script { + set_int(is_rtl, 1); + } + } + program { name: "to_ltr"; + signal: "edje,state,ltr"; + source: "edje"; + script { + set_int(is_rtl, 0); + } + } + } +} diff --git a/src/lib/elm_check.c b/src/lib/elm_check.c index 94c8fba..6c3ffd3 100644 --- a/src/lib/elm_check.c +++ b/src/lib/elm_check.c @@ -113,15 +113,9 @@ _theme_hook(Evas_Object *obj) else edje_object_signal_emit(wd->chk, "elm,state,icon,hidden", "elm"); if (wd->state) - { - edje_object_signal_emit(wd->chk, "elm,state,check,on", "elm"); - edje_object_signal_emit(wd->chk, "elm,state,toggle,on", "elm"); - } + edje_object_signal_emit(wd->chk, "elm,state,check,on", "elm"); else - { - edje_object_signal_emit(wd->chk, "elm,state,check,off", "elm"); - edje_object_signal_emit(wd->chk, "elm,state,toggle,off", "elm"); - } + edje_object_signal_emit(wd->chk, "elm,state,check,off", "elm"); if (wd->label) edje_object_signal_emit(wd->chk, "elm,state,text,visible", "elm"); else @@ -212,7 +206,6 @@ _signal_check_off(void *data, Evas_Object *obj __UNUSED__, const char *emission wd->state = EINA_FALSE; if (wd->statep) *wd->statep = wd->state; edje_object_signal_emit(wd->chk, "elm,state,check,off", "elm"); - edje_object_signal_emit(wd->chk, "elm,state,toggle,off", "elm"); evas_object_smart_callback_call(data, SIG_CHANGED, NULL); } @@ -224,7 +217,6 @@ _signal_check_on(void *data, Evas_Object *obj __UNUSED__, const char *emission _ wd->state = EINA_TRUE; if (wd->statep) *wd->statep = wd->state; edje_object_signal_emit(wd->chk, "elm,state,check,on", "elm"); - edje_object_signal_emit(wd->chk, "elm,state,toggle,on", "elm"); evas_object_smart_callback_call(data, SIG_CHANGED, NULL); } @@ -521,15 +513,9 @@ elm_check_state_set(Evas_Object *obj, Eina_Bool state) wd->state = state; if (wd->statep) *wd->statep = wd->state; if (wd->state) - { - edje_object_signal_emit(wd->chk, "elm,state,check,on", "elm"); - edje_object_signal_emit(wd->chk, "elm,state,toggle,on", "elm"); - } + edje_object_signal_emit(wd->chk, "elm,state,check,on", "elm"); else - { - edje_object_signal_emit(wd->chk, "elm,state,check,off", "elm"); - edje_object_signal_emit(wd->chk, "elm,state,toggle,off", "elm"); - } + edje_object_signal_emit(wd->chk, "elm,state,check,off", "elm"); } edje_object_message_signal_process(wd->chk); } @@ -556,15 +542,9 @@ elm_check_state_pointer_set(Evas_Object *obj, Eina_Bool *statep) { wd->state = *wd->statep; if (wd->state) - { - edje_object_signal_emit(wd->chk, "elm,state,check,on", "elm"); - edje_object_signal_emit(wd->chk, "elm,state,toggle,on", "elm"); - } + edje_object_signal_emit(wd->chk, "elm,state,check,on", "elm"); else - { - edje_object_signal_emit(wd->chk, "elm,state,check,off", "elm"); - edje_object_signal_emit(wd->chk, "elm,state,toggle,off", "elm"); - } + edje_object_signal_emit(wd->chk, "elm,state,check,off", "elm"); } } else -- 2.7.4