visually yet), and some win util calls added.
SVN revision: 39456
fill.smooth : 0;
}
}
- part { name: "elm.swallow.content";
- type: SWALLOW;
- description { state: "default" 0.0;
- rel1 {
- to_y: "elm.text";
- relative: 0.0 1.0;
- offset: 8 2;
- }
- rel2.offset: -9 -9;
- }
- }
part { name: "elm.text";
type: TEXT;
mouse_events: 0;
fill.smooth : 0;
}
}
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1 {
+ to_y: "elm.text";
+ relative: 0.0 1.0;
+ offset: 8 2;
+ }
+ rel2.offset: -9 -9;
+ }
+ }
}
}
}
}
-///////////////////////////////////////////////////////////////////////////////
- group { name: "elm/check/base/default";
+ group { name: "elm/genlist/tree/default/default";
+ alias: "elm/genlist/tree_odd/default/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "labels" "elm.text";
+ data.item: "icons" "elm.swallow.icon elm.swallow.end";
+// data.item: "states" "";
images {
- image: "check_base.png" COMP;
- image: "check.png" COMP;
- image: "check2.png" COMP;
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
}
- parts {
+ parts {
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
part { name: "bg";
- mouse_events: 0;
- scale: 1;
- description { state: "default" 0.0;
- rel1.offset: 1 1;
- rel2.relative: 0.0 1.0;
- rel2.offset: 1 -2;
- align: 0.0 0.5;
- min: 16 16;
- max: 16 16;
- aspect: 1.0 1.0;
- aspect_preference: VERTICAL;
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
image {
- normal: "check_base.png";
- border: 5 5 5 5;
- middle: 0;
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
}
- fill.smooth : 0;
- }
- }
- part { name: "check";
- mouse_events: 0;
- scale: 1;
- description { state: "default" 0.0;
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
rel1 {
- to: "bg";
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
offset: 1 1;
}
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
rel2 {
- to: "bg";
- offset: -2 -2;
+ relative: 0.0 1.0;
+ offset: 4 -5;
}
- visible: 0;
- image.normal: "check.png";
- }
- description { state: "visible" 0.0;
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
inherit: "default" 0.0;
- visible: 1;
+ image.normal: "icon_arrow_down.png";
}
- }
- part { name: "elm.swallow.content";
- type: SWALLOW;
- description { state: "default" 0.0;
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
fixed: 1 0;
- visible: 0;
- align: 0.0 0.5;
- rel1.to_x: "bg";
- rel1.relative: 1.0 0.0;
- rel1.offset: 1 1;
- rel2.to_x: "bg";
- rel2.relative: 1.0 1.0;
- rel2.offset: 2 -2;
- }
- description { state: "visible" 0.0;
- inherit: "default" 0.0;
- fixed: 1 1;
- visible: 1;
- aspect: 1.0 1.0;
- aspect_preference: VERTICAL;
- }
- }
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
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: 1 1;
- rel2.relative: 1.0 1.0;
- rel2.offset: -2 -2;
- 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;
- }
- }
- part { name: "events";
- type: RECT;
- ignore_flags: ON_HOLD;
- description { state: "default" 0.0;
- color: 0 0 0 0;
- }
- }
- }
- programs {
- program { name: "click";
- signal: "mouse,up,1";
- source: "events";
- action: SIGNAL_EMIT "elm,action,check,toggle" "";
- }
- program { name: "check_on";
- signal: "elm,state,check,on";
- source: "elm";
- action: STATE_SET "visible" 0.0;
- target: "check";
- }
- program { name: "check_off";
- signal: "elm,state,check,off";
- source: "elm";
- action: STATE_SET "default" 0.0;
- target: "check";
- }
- program { name: "text_show";
- signal: "elm,state,text,visible";
- source: "elm";
- action: STATE_SET "visible" 0.0;
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+// min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+/*
+ group { name: "elm/genlist/tree_odd/default/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "labels" "elm.text";
+ data.item: "icons" "elm.swallow.icon elm.swallow.end";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+// min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+*/
+
+///////////////////////////////////////////////////////////////////////////////
+ group { name: "elm/check/base/default";
+ images {
+ image: "check_base.png" COMP;
+ image: "check.png" COMP;
+ image: "check2.png" COMP;
+ }
+ parts {
+ part { name: "bg";
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.offset: 1 1;
+ rel2.relative: 0.0 1.0;
+ rel2.offset: 1 -2;
+ align: 0.0 0.5;
+ min: 16 16;
+ max: 16 16;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ image {
+ normal: "check_base.png";
+ border: 5 5 5 5;
+ middle: 0;
+ }
+ fill.smooth : 0;
+ }
+ }
+ part { name: "check";
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ to: "bg";
+ offset: 1 1;
+ }
+ rel2 {
+ to: "bg";
+ offset: -2 -2;
+ }
+ visible: 0;
+ image.normal: "check.png";
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ visible: 0;
+ align: 0.0 0.5;
+ rel1.to_x: "bg";
+ rel1.relative: 1.0 0.0;
+ rel1.offset: 1 1;
+ rel2.to_x: "bg";
+ rel2.relative: 1.0 1.0;
+ rel2.offset: 2 -2;
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ fixed: 1 1;
+ visible: 1;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ }
+ }
+ 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: 1 1;
+ rel2.relative: 1.0 1.0;
+ rel2.offset: -2 -2;
+ 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;
+ }
+ }
+ part { name: "events";
+ type: RECT;
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ }
+ programs {
+ program { name: "click";
+ signal: "mouse,up,1";
+ source: "events";
+ action: SIGNAL_EMIT "elm,action,check,toggle" "";
+ }
+ program { name: "check_on";
+ signal: "elm,state,check,on";
+ source: "elm";
+ action: STATE_SET "visible" 0.0;
+ target: "check";
+ }
+ program { name: "check_off";
+ signal: "elm,state,check,off";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "check";
+ }
+ program { name: "text_show";
+ signal: "elm,state,text,visible";
+ source: "elm";
+ action: STATE_SET "visible" 0.0;
target: "elm.text";
}
program { name: "text_hide";
type: RECT;
mouse_events: 0;
description { state: "default" 0.0;
- rel1.to: "base";
- rel2.to: "base";
+ rel1 {
+ to: "base";
+ offset: -9999 -9999;
+ }
+ rel2 {
+ to: "base";
+ offset: 9999 9999;
+ }
color: 255 255 255 255;
}
description { state: "visible" 0.0;
rel2.relative: 1.0 1.0;
}
}
- part { name: "elm.swallow.content";
- type: SWALLOW;
- clip_to: "clip";
- description { state: "default" 0.0;
- rel1 {
- to: "base";
- offset: 8 8;
- }
- rel2 {
- to: "base";
- offset: -9 -9;
- }
- }
- }
part { name: "over";
mouse_events: 0;
clip_to: "clip";
fill.smooth : 0;
}
}
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "clip";
+ description { state: "default" 0.0;
+ rel1 {
+ to: "base";
+ offset: 8 8;
+ }
+ rel2 {
+ to: "base";
+ offset: -9 -9;
+ }
+ }
+ }
}
programs {
program { name: "show_start";
evas_object_show(win);
}
+static Elm_Genlist_Item_Class itc4;
+
+static void
+gl4_sel(void *data, Evas_Object *obj, void *event_info)
+{
+}
+static void
+gl4_exp(void *data, Evas_Object *obj, void *event_info)
+{
+ Elm_Genlist_Item *it = event_info;
+ Evas_Object *gl = elm_genlist_item_genlist_get(it);
+ int val = (int)elm_genlist_item_data_get(it);
+ val *= 10;
+ elm_genlist_item_append(gl, &itc4,
+ (void *)(val + 1)/* item data */, it/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc4,
+ (void *)(val + 2)/* item data */, it/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc4,
+ (void *)(val + 3)/* item data */, it/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
+ NULL/* func data */);
+}
+static void
+gl4_con(void *data, Evas_Object *obj, void *event_info)
+{
+ Elm_Genlist_Item *it = event_info;
+ elm_genlist_item_subitems_clear(it);
+}
+
+static void
+gl4_exp_req(void *data, Evas_Object *obj, void *event_info)
+{
+ Elm_Genlist_Item *it = event_info;
+ elm_genlist_item_expanded_set(it, 1);
+}
+static void
+gl4_con_req(void *data, Evas_Object *obj, void *event_info)
+{
+ Elm_Genlist_Item *it = event_info;
+ elm_genlist_item_expanded_set(it, 0);
+}
+
+char *gl4_label_get(const void *data, Evas_Object *obj, const char *part)
+{
+ char buf[256];
+ snprintf(buf, sizeof(buf), "Item mode %i", (int)data);
+ return strdup(buf);
+}
+Evas_Object *gl4_icon_get(const void *data, Evas_Object *obj, const char *part)
+{
+ char buf[PATH_MAX];
+ if (!strcmp(part, "elm.swallow.icon"))
+ {
+ Evas_Object *ic = elm_icon_add(obj);
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
+ elm_icon_file_set(ic, buf, NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ evas_object_show(ic);
+ return ic;
+ }
+ else if (!strcmp(part, "elm.swallow.end"))
+ {
+ Evas_Object *ck;
+ ck = elm_check_add(obj);
+ evas_object_show(ck);
+ return ck;
+ }
+ return NULL;
+}
+Evas_Bool gl4_state_get(const void *data, Evas_Object *obj, const char *part)
+{
+ return 0;
+}
+void gl4_del(const void *data, Evas_Object *obj)
+{
+}
+
+static void
+my_bt_36(void *data, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
+
+ win = elm_win_add(NULL, "genlist-tree", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Genlist Tree");
+ elm_win_autodel_set(win, 1);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, 1.0, 1.0);
+ evas_object_show(bg);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, 1.0, 1.0);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ gl = elm_genlist_add(win);
+ evas_object_size_hint_align_set(gl, -1.0, -1.0);
+ evas_object_size_hint_weight_set(gl, 1.0, 1.0);
+ evas_object_show(gl);
+
+ itc4.item_style = "default";
+ itc4.func.label_get = gl4_label_get;
+ itc4.func.icon_get = gl4_icon_get;
+ itc4.func.state_get = gl4_state_get;
+ itc4.func.del = gl4_del;
+
+ elm_genlist_item_append(gl, &itc4,
+ (void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc4,
+ (void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc4,
+ (void *)3/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+ NULL/* func data */);
+
+ evas_object_smart_callback_add(gl, "expand,request", gl4_exp_req, gl);
+ evas_object_smart_callback_add(gl, "contract,request", gl4_con_req, gl);
+ evas_object_smart_callback_add(gl, "expanded", gl4_exp, gl);
+ evas_object_smart_callback_add(gl, "contracted", gl4_con, gl);
+
+ elm_box_pack_end(bx, gl);
+ evas_object_show(bx2);
+
+ bx2 = elm_box_add(win);
+ elm_box_horizontal_set(bx2, 1);
+ elm_box_homogenous_set(bx2, 1);
+ evas_object_size_hint_weight_set(bx2, 1.0, 0.0);
+ evas_object_size_hint_align_set(bx2, -1.0, -1.0);
+
+ bt = elm_button_add(win);
+ elm_button_label_set(bt, "[1]");
+// evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
+ evas_object_size_hint_align_set(bt, -1.0, -1.0);
+ evas_object_size_hint_weight_set(bt, 1.0, 0.0);
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_button_label_set(bt, "[2]");
+// evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
+ evas_object_size_hint_align_set(bt, -1.0, -1.0);
+ evas_object_size_hint_weight_set(bt, 1.0, 0.0);
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_button_label_set(bt, "[3]");
+// evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
+ evas_object_size_hint_align_set(bt, -1.0, -1.0);
+ evas_object_size_hint_weight_set(bt, 1.0, 0.0);
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bx, bx2);
+ evas_object_show(bx2);
+
+ evas_object_resize(win, 320, 320);
+ evas_object_show(win);
+}
+
static void
my_win_main(void)
{
elm_list_item_append(li, "Checks", NULL, NULL, my_bt_33, NULL);
elm_list_item_append(li, "Radios", NULL, NULL, my_bt_34, NULL);
elm_list_item_append(li, "Pager", NULL, NULL, my_bt_35, NULL);
+ elm_list_item_append(li, "Genlist Tree", NULL, NULL, my_bt_36, NULL);
elm_list_go(li);
EAPI void elm_object_scale_set(Evas_Object *obj, double scale);
EAPI double elm_object_scale_get(const Evas_Object *obj);
+ EAPI double elm_scale_get(void);
+ EAPI void elm_scale_set(double scale);
+ EAPI Evas_Coord elm_finger_size_get(void);
+ EAPI void elm_finger_size_set(Evas_Coord size);
+
EAPI void elm_object_focus(Evas_Object *obj);
EAPI void elm_coords_finger_size_adjust(int times_w, Evas_Coord *w, int times_h, Evas_Coord *h);
EAPI void elm_win_shaped_set(Evas_Object *obj, Evas_Bool shaped);
EAPI void elm_win_alpha_set(Evas_Object *obj, Evas_Bool alpha);
EAPI void elm_win_override_set(Evas_Object *obj, Evas_Bool override);
+ EAPI void elm_win_fullscreen_set(Evas_Object *obj, Evas_Bool fullscreen);
+ EAPI void elm_win_maximized_set(Evas_Object *obj, Evas_Bool maximized);
+ EAPI void elm_win_iconified_set(Evas_Object *obj, Evas_Bool iconified);
+ EAPI void elm_win_layer_set(Evas_Object *obj, int layer);
+ /*...
+ * ecore_x_icccm_hints_set -> accepts_focus (add to ecore_evas)
+ * ecore_x_icccm_hints_set -> window_group (add to ecore_evas)
+ * ecore_x_icccm_size_pos_hints_set -> request_pos (add to ecore_evas)
+ * ecore_x_icccm_client_leader_set -> l (add to ecore_evas)
+ * ecore_x_icccm_window_role_set -> role (add to ecore_evas)
+ * ecore_x_icccm_transient_for_set -> forwin (add to ecore_evas)
+ * ecore_x_netwm_window_type_set -> type (add to ecore_evas)
+ *
+ * (add to ecore_x) set netwm argb icon! (add to ecore_evas)
+ * (blank mouse, private mouse obj, defaultmouse)
+ *
+ */
EAPI void elm_win_keyboard_mode_set(Evas_Object *obj, Elm_Win_Keyboard_Mode mode);
EAPI void elm_win_keyboard_win_set(Evas_Object *obj, Evas_Bool is_keyboard);
EAPI void elm_icon_no_scale_set(Evas_Object *obj, Evas_Bool no_scale);
EAPI void elm_icon_scale_set(Evas_Object *obj, Evas_Bool scale_up, Evas_Bool scale_down);
EAPI void elm_icon_fill_outside_set(Evas_Object *obj, Evas_Bool fill_outside);
+ EAPI void elm_icon_prescale_set(Evas_Object *obj, int size);
/* smart callbacks called:
* "clicked" - the user clicked the icon
*/
EAPI Elm_Genlist_Item *elm_genlist_last_item_get(const Evas_Object *obj);
EAPI Elm_Genlist_Item *elm_genlist_item_next_get(const Elm_Genlist_Item *item);
EAPI Elm_Genlist_Item *elm_genlist_item_prev_get(const Elm_Genlist_Item *item);
+ EAPI Evas_Object *elm_genlist_item_genlist_get(const Elm_Genlist_Item *item);
+ EAPI Elm_Genlist_Item *elm_genlist_item_parent_get(const Elm_Genlist_Item *it);
+ EAPI void elm_genlist_item_subitems_clear(Elm_Genlist_Item *item);
EAPI void elm_genlist_item_selected_set(Elm_Genlist_Item *item, Evas_Bool selected);
EAPI Evas_Bool elm_genlist_item_selected_get(const Elm_Genlist_Item *item);
+ EAPI void elm_genlist_item_expanded_set(Elm_Genlist_Item *item, Evas_Bool expanded);
+ EAPI Evas_Bool elm_genlist_item_expanded_get(const Elm_Genlist_Item *item);
EAPI void elm_genlist_item_disabled_set(Elm_Genlist_Item *item, Evas_Bool disabled);
EAPI Evas_Bool elm_genlist_item_disabled_get(const Elm_Genlist_Item *item);
EAPI void elm_genlist_item_show(Elm_Genlist_Item *item);
EAPI void elm_genlist_item_del(Elm_Genlist_Item *item);
EAPI const void *elm_genlist_item_data_get(const Elm_Genlist_Item *item);
EAPI void elm_genlist_item_update(Elm_Genlist_Item *item);
+ EAPI void elm_genlist_horizontal_mode_set(Evas_Object *obj, Elementary_List_Mode mode);
/* smart callbacks called:
- * "clicked" - the user clicked the hoversel button and popped up the sel
- * "selected" - an item in the hoversel list is selected
- * "dismissed" - the hover is dismissed
+ * "clicked" - when the user double-clicked an item
+ * "selected" - when the user selected an item
+ * "unselected" - when the user selected an item
+ * "expanded" - when the user expanded an item
+ * "contracted" - when the user contracted an item
+ * "expand,request" - when the user requested to expand an item
+ * "contract,request" - when the user requested to expand an item
*/
EAPI Evas_Object *elm_check_add(Evas_Object *parent);
{
Widget_Data *wd = elm_widget_data_get(obj);
_elm_theme_set(wd->img, "bg", "base", "default");
- _els_smart_icon_scale_set(wd->img, elm_widget_scale_get(obj) * _elm_config->scale);
}
static void
if (ch <= 0) break;
if (ch == '\n') str = _str_append(str, "<br>", &str_len, &str_alloc);
else if (ch == '\t') str = _str_append(str, "<\t>", &str_len, &str_alloc);
+ else if (ch == '<') str = _str_append(str, "<", &str_len, &str_alloc);
+ else if (ch == '>') str = _str_append(str, ">", &str_len, &str_alloc);
else
{
char tstr[16];
Eina_List *queue;
Eina_List *selected;
Elm_Genlist_Item *show_item;
+ Elementary_List_Mode mode;
Evas_Bool on_hold : 1;
Evas_Bool multi : 1;
Evas_Bool min_w : 1;
EINA_INLIST;
Widget_Data *wd;
Item_Block *block;
- Eina_Inlist *subblocks; // FIXME: not done yet
- Eina_Inlist *subitems; // FIXME: not done yet
+ Eina_List *items; // FIXME: not done yet
Evas_Coord x, y, w, h, minw, minh;
const Elm_Genlist_Item_Class *itc;
const void *data;
Evas_Bool delete_me : 1;
};
-struct _Pan {
+struct _Pan
+{
Evas_Object_Smart_Clipped_Data __clipped_data;
Widget_Data *wd;
};
Eina_List *l;
Elm_Genlist_Item *it;
EINA_LIST_FOREACH(itb->items, l, it)
- it->mincalcd = 0;
+ {
+ it->mincalcd = 0;
+ }
itb->changed = 1;
}
_sizing_eval(Evas_Object *obj)
{
Widget_Data *wd = elm_widget_data_get(obj);
- Evas_Coord vw, vh, minw, minh, maxw, maxh, w, h, vmw, vmh;
- double xw, xy;
-
- // fixme - now handle scroll hinting etc.
- /*
- evas_object_size_hint_min_get(wd->content, &minw, &minh);
- evas_object_size_hint_max_get(wd->content, &maxw, &maxh);
- evas_object_size_hint_weight_get(wd->content, &xw, &xy);
- elm_smart_scroller_child_viewport_size_get(wd->scr, &vw, &vh);
- if (xw > 0.0)
- {
- if ((minw > 0) && (vw < minw)) vw = minw;
- else if ((maxw > 0) && (vw > maxw)) vw = maxw;
- }
- else if (minw > 0) vw = minw;
- if (xy > 0.0)
- {
- if ((minh > 0) && (vh < minh)) vh = minh;
- else if ((maxh > 0) && (vh > maxh)) vh = maxh;
- }
- else if (minh > 0) vh = minh;
- evas_object_resize(wd->content, vw, vh);
- w = -1;
- h = -1;
- edje_object_size_min_calc(elm_smart_scroller_edje_object_get(wd->scr), &vmw, &vmh);
- if (wd->min_w) w = vmw + minw;
- if (wd->min_h) h = vmh + minh;
- evas_object_size_hint_min_set(obj, w, h);
- */
-}
-
-static void
-_changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
- _sizing_eval(data);
-}
+ Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1;
-static void
-_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
- _sizing_eval(data);
+ evas_object_size_hint_min_get(wd->scr, &minw, &minh);
+ evas_object_size_hint_max_get(wd->scr, &maxw, &maxh);
+ minh = -1;
+ if (wd->mode != ELM_LIST_LIMIT) minw = -1;
+ evas_object_size_hint_min_set(obj, minw, minh);
+ evas_object_size_hint_max_set(obj, maxw, maxh);
}
static Eina_List *
}
static void
+_signal_expand_toggle(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ Elm_Genlist_Item *it = data;
+ if (it->expanded)
+ evas_object_smart_callback_call(it->wd->obj, "contract,request", it);
+ else
+ evas_object_smart_callback_call(it->wd->obj, "expand,request", it);
+}
+
+static void
+_signal_expand(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ Elm_Genlist_Item *it = data;
+ if (!it->expanded)
+ evas_object_smart_callback_call(it->wd->obj, "expand,request", it);
+}
+
+static void
+_signal_contract(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ Elm_Genlist_Item *it = data;
+ if (it->expanded)
+ evas_object_smart_callback_call(it->wd->obj, "contract,request", it);
+}
+
+static void
_item_realize(Elm_Genlist_Item *it, int in, int calc)
{
const char *stacking;
edje_object_scale_set(it->base, elm_widget_scale_get(it->wd->obj) * _elm_config->scale);
evas_object_smart_member_add(it->base, it->wd->pan_smart);
elm_widget_sub_object_add(it->wd->obj, it->base);
- if (in & 0x1)
- snprintf(buf, sizeof(buf), "%s/%s", "item_odd", it->itc->item_style);
+ if (it->flags & ELM_GENLIST_ITEM_SUBITEMS)
+ {
+ if (in & 0x1)
+ snprintf(buf, sizeof(buf), "%s/%s", "tree_odd", it->itc->item_style);
+ else
+ snprintf(buf, sizeof(buf), "%s/%s", "tree", it->itc->item_style);
+ }
else
- snprintf(buf, sizeof(buf), "%s/%s", "item", it->itc->item_style);
+ {
+ if (in & 0x1)
+ snprintf(buf, sizeof(buf), "%s/%s", "item_odd", it->itc->item_style);
+ else
+ snprintf(buf, sizeof(buf), "%s/%s", "item", it->itc->item_style);
+ }
_elm_theme_set(it->base, "genlist", buf, "default");
if (!calc)
{
+ edje_object_signal_callback_add(it->base, "elm,action,expand,toggle", "elm", _signal_expand_toggle, it);
+ edje_object_signal_callback_add(it->base, "elm,action,expand", "elm", _signal_expand, it);
+ edje_object_signal_callback_add(it->base, "elm,action,contract", "elm", _signal_contract, it);
stacking = edje_object_data_get(it->base, "stacking");
if (stacking)
{
edje_object_signal_emit(it->base, "elm,state,selected", "elm");
if (it->disabled)
edje_object_signal_emit(it->base, "elm,state,disabled", "elm");
+ if (it->expanded)
+ edje_object_signal_emit(it->base, "elm,state,expanded", "elm");
}
if (it->itc->func.label_get)
{
wd->minw = minw;
wd->minh = minh;
+ evas_object_size_hint_min_set(wd->pan_smart, wd->minw, wd->minh);
evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
+ _sizing_eval(wd->obj);
}
wd->calc_job = NULL;
evas_object_smart_changed(wd->pan_smart);
Evas_Object *obj;
Evas *e;
Widget_Data *wd;
- Evas_Coord vw, vh, minw, minh;
+ Evas_Coord minw, minh;
static Evas_Smart *smart = NULL;
wd = ELM_NEW(Widget_Data);
elm_widget_resize_object_set(obj, wd->scr);
wd->obj = obj;
-
+ wd->mode = ELM_LIST_SCROLL;
+
if (!smart)
{
static Evas_Smart_Class sc;
edje_object_size_min_calc(elm_smart_scroller_edje_object_get(wd->scr), &minw, &minh);
evas_object_size_hint_min_set(obj, minw, minh);
- evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj);
_sizing_eval(obj);
return obj;
{
il = EINA_INLIST_GET(itb);
Item_Block *itbn = (Item_Block *)(il->next);
- it->wd->blocks = eina_inlist_remove(it->wd->blocks, il);
+ if (it->parent)
+ it->parent->items = eina_list_remove(it->parent->items, it);
+ else
+ it->wd->blocks = eina_inlist_remove(it->wd->blocks, il);
free(itb);
if (itbn) itbn->changed = 1;
}
static void
_item_del(Elm_Genlist_Item *it)
{
- it->delete_me = 1;
+ elm_genlist_item_subitems_clear(it);
if (it->wd->show_item == it) it->wd->show_item = NULL;
if (it->selected) it->wd->selected = eina_list_remove(it->wd->selected, it);
- if ((!it->delete_me) && (it->itc->func.del)) it->itc->func.del(it->data, it->wd->obj);
if (it->realized) _item_unrealize(it);
if (it->block) _item_block_del(it);
- // FIXME: tree. del it->subblocks
- // FIXME: tree. del it->subitems
+ if ((!it->delete_me) && (it->itc->func.del)) it->itc->func.del(it->data, it->wd->obj);
+ it->delete_me = 1;
if (it->queued)
- {
- it->wd->queue = eina_list_remove(it->wd->queue, it);
- }
+ it->wd->queue = eina_list_remove(it->wd->queue, it);
it->wd->items = eina_inlist_remove(it->wd->items, EINA_INLIST_GET(it));
+ if (it->parent)
+ it->parent->items = eina_list_remove(it->parent->items, it);
free(it);
}
static void
-_item_block_add(Widget_Data *wd, Elm_Genlist_Item *it, Elm_Genlist_Item *itpar)
+_item_block_add(Widget_Data *wd, Elm_Genlist_Item *it)
{
Item_Block *itb = NULL;
if (!it->rel)
{
newblock:
- if (!it->parent)
+ if (it->rel)
{
- if (it->rel)
+ itb = calloc(1, sizeof(Item_Block));
+ if (!itb) return;
+ itb->wd = wd;
+ if (!it->rel->block)
+ {
+ wd->blocks = eina_inlist_append(wd->blocks, EINA_INLIST_GET(itb));
+ itb->items = eina_list_append(itb->items, it);
+ }
+ else
{
- itb = calloc(1, sizeof(Item_Block));
- if (!itb) return;
- itb->wd = wd;
- if (!it->rel->block)
+ if (it->before)
{
- wd->blocks = eina_inlist_append(wd->blocks, EINA_INLIST_GET(itb));
- itb->items = eina_list_append(itb->items, it);
+ wd->blocks = eina_inlist_prepend_relative(wd->blocks, EINA_INLIST_GET(itb), EINA_INLIST_GET(it->rel->block));
+ itb->items = eina_list_prepend_relative(itb->items, it, it->rel);
}
else
{
- if (it->before)
- {
- wd->blocks = eina_inlist_prepend_relative(wd->blocks, EINA_INLIST_GET(itb), EINA_INLIST_GET(it->rel->block));
- itb->items = eina_list_prepend_relative(itb->items, it, it->rel);
- }
- else
- {
- wd->blocks = eina_inlist_append_relative(wd->blocks, EINA_INLIST_GET(itb), EINA_INLIST_GET(it->rel->block));
- itb->items = eina_list_append_relative(itb->items, it, it->rel);
- }
+ wd->blocks = eina_inlist_append_relative(wd->blocks, EINA_INLIST_GET(itb), EINA_INLIST_GET(it->rel->block));
+ itb->items = eina_list_append_relative(itb->items, it, it->rel);
}
}
- else
+ }
+ else
+ {
+ if (it->before)
{
- if (it->before)
+ if (wd->blocks)
{
- if (wd->blocks)
- {
- itb = (Item_Block *)(wd->blocks);
- if (itb->count >= 32)
- {
- itb = calloc(1, sizeof(Item_Block));
- if (!itb) return;
- itb->wd = wd;
- wd->blocks = eina_inlist_prepend(wd->blocks, EINA_INLIST_GET(itb));
- }
- }
- else
+ itb = (Item_Block *)(wd->blocks);
+ if (itb->count >= 32)
{
itb = calloc(1, sizeof(Item_Block));
if (!itb) return;
itb->wd = wd;
wd->blocks = eina_inlist_prepend(wd->blocks, EINA_INLIST_GET(itb));
}
- itb->items = eina_list_prepend(itb->items, it);
}
else
{
- if (wd->blocks)
- {
- itb = (Item_Block *)(wd->blocks->last);
- if (itb->count >= 32)
- {
- itb = calloc(1, sizeof(Item_Block));
- if (!itb) return;
- itb->wd = wd;
- wd->blocks = eina_inlist_append(wd->blocks, EINA_INLIST_GET(itb));
- }
- }
- else
+ itb = calloc(1, sizeof(Item_Block));
+ if (!itb) return;
+ itb->wd = wd;
+ wd->blocks = eina_inlist_prepend(wd->blocks, EINA_INLIST_GET(itb));
+ }
+ itb->items = eina_list_prepend(itb->items, it);
+ }
+ else
+ {
+ if (wd->blocks)
+ {
+ itb = (Item_Block *)(wd->blocks->last);
+ if (itb->count >= 32)
{
itb = calloc(1, sizeof(Item_Block));
if (!itb) return;
itb->wd = wd;
wd->blocks = eina_inlist_append(wd->blocks, EINA_INLIST_GET(itb));
}
- itb->items = eina_list_append(itb->items, it);
}
+ else
+ {
+ itb = calloc(1, sizeof(Item_Block));
+ if (!itb) return;
+ itb->wd = wd;
+ wd->blocks = eina_inlist_append(wd->blocks, EINA_INLIST_GET(itb));
+ }
+ itb->items = eina_list_append(itb->items, it);
}
}
- else
- {
- // FIXME: tree not handled.
- }
}
else
{
it = wd->queue->data;
wd->queue = eina_list_remove_list(wd->queue, wd->queue);
it->queued = 0;
- if (!it->parent)
- {
- _item_block_add(wd, it, NULL);
- }
- else
- {
- // FIXME: tree. not done yet
- }
+ _item_block_add(wd, it);
}
if (n > 0)
{
Elm_Genlist_Item *it = _item_new(wd, itc, data, parent, flags, func, func_data);
if (!it) return NULL;
if (!it->parent)
- wd->items = eina_inlist_append(wd->items, EINA_INLIST_GET(it));
+ {
+ wd->items = eina_inlist_append(wd->items, EINA_INLIST_GET(it));
+ it->rel = NULL;
+ it->before = 0;
+ }
else
{
- // FIXME: tree. not done yet
+ Elm_Genlist_Item *it2 = NULL;
+ Eina_List *ll = eina_list_last(it->parent->items);
+ if (ll) it2 = ll->data;
+ it->parent->items = eina_list_append(it->parent->items, it);
+ if (!it2) it2 = it->parent;
+ wd->items = eina_inlist_append_relative(wd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(it2));
+ it->rel = it2;
+ it->rel->relcount++;
+ it->before = 0;
}
- it->rel = NULL;
- it->before = 0;
_item_queue(wd, it);
return it;
}
wd->items = eina_inlist_prepend(wd->items, EINA_INLIST_GET(it));
else
{
- // FIXME: tree. not done yet
+ printf("FIXME: 12 tree not handled yet\n");
}
it->rel = NULL;
it->before = 1;
wd->items = eina_inlist_prepend_relative(wd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(before));
else
{
- // FIXME: tree. not done yet
+ printf("FIXME: 13 tree not handled yet\n");
}
it->rel = before;
it->rel->relcount++;
wd->items = eina_inlist_append_relative(wd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(after));
else
{
- // FIXME: tree. not done yet
+ printf("FIXME: 14 tree not handled yet\n");
}
it->rel = after;
it->rel->relcount++;
wd->pan_y = 0;
wd->minw = 0;
wd->minh = 0;
+ evas_object_size_hint_min_set(wd->pan_smart, wd->minw, wd->minh);
evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
+ _sizing_eval(obj);
}
EAPI void
return (Elm_Genlist_Item *)it;
}
+EAPI Evas_Object *
+elm_genlist_item_genlist_get(const Elm_Genlist_Item *it)
+{
+ if (!it) return NULL;
+ return it->wd->obj;
+}
+
+EAPI Elm_Genlist_Item *
+elm_genlist_item_parent_get(const Elm_Genlist_Item *it)
+{
+ if (!it) return NULL;
+ return it->parent;
+}
+
+EAPI void
+elm_genlist_item_subitems_clear(Elm_Genlist_Item *it)
+{
+ Eina_List *tl = NULL, *l;
+ Elm_Genlist_Item *it2;
+
+ if (!it) return;
+ EINA_LIST_FOREACH(it->items, l, it2)
+ tl = eina_list_append(tl, it2);
+ EINA_LIST_FREE(tl, it2)
+ elm_genlist_item_del(it2);
+}
+
EAPI void
elm_genlist_item_selected_set(Elm_Genlist_Item *it, Evas_Bool selected)
{
Widget_Data *wd = elm_widget_data_get(it->wd->obj);
+ if (!it) return;
if (it->delete_me) return;
selected = !!selected;
if (it->selected == selected) return;
EAPI Evas_Bool
elm_genlist_item_selected_get(const Elm_Genlist_Item *it)
{
+ if (!it) return 0;
return it->selected;
}
EAPI void
-elm_genlist_item_expanded_set(Elm_Genlist_Item *item, Evas_Bool expanded)
+elm_genlist_item_expanded_set(Elm_Genlist_Item *it, Evas_Bool expanded)
{
- // FIXME: tree. not done yet
+ if (!it) return;
+ if (it->expanded == expanded) return;
+ it->expanded = expanded;
+ if (it->expanded)
+ {
+ if (it->realized)
+ edje_object_signal_emit(it->base, "elm,state,expanded", "elm");
+ evas_object_smart_callback_call(it->wd->obj, "expanded", it);
+ }
+ else
+ {
+ if (it->realized)
+ edje_object_signal_emit(it->base, "elm,state,contracted", "elm");
+ evas_object_smart_callback_call(it->wd->obj, "contracted", it);
+ }
}
EAPI Evas_Bool
-elm_genlist_item_expanded_get(const Elm_Genlist_Item *item)
+elm_genlist_item_expanded_get(const Elm_Genlist_Item *it)
{
- // FIXME: tree. not done yet
+ if (!it) return 0;
+ return it->expanded;
}
EAPI void
elm_genlist_item_disabled_set(Elm_Genlist_Item *it, Evas_Bool disabled)
{
+ if (!it) return;
if (it->disabled == disabled) return;
if (it->delete_me) return;
it->disabled = disabled;
EAPI Evas_Bool
elm_genlist_item_disabled_get(const Elm_Genlist_Item *it)
{
+ if (!it) return 0;
if (it->delete_me) return 0;
return it->disabled;
}
EAPI void
elm_genlist_item_show(Elm_Genlist_Item *it)
{
+ if (!it) return;
if (it->delete_me) return;
if ((it->queued) || (!it->mincalcd))
{
if (!it) return;
if (it->relcount > 0)
{
+ elm_genlist_item_subitems_clear(it);
it->delete_me = 1;
if (it->wd->show_item == it) it->wd->show_item = NULL;
if (it->selected) it->wd->selected = eina_list_remove(it->wd->selected, it);
- if (it->itc->func.del) it->itc->func.del(it->data, it->wd->obj);
if (it->block)
{
if (it->realized) _item_unrealize(it);
if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
it->wd->calc_job = ecore_job_add(_calc_job, it->wd);
}
+ if (it->itc->func.del) it->itc->func.del(it->data, it->wd->obj);
return;
}
_item_del(it);
EAPI void
elm_genlist_item_update(Elm_Genlist_Item *it)
{
+ Evas_Coord minw, minh;
+ Eina_List *l;
+ Elm_Genlist_Item *it2;
+ Item_Block *itb;
+ int num, numb;
if (!it->block) return;
if (it->delete_me) return;
+ minw = it->wd->minw;
+ minh = it->minh;
it->mincalcd = 0;
- it->block->changed = 1;
- if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
- it->wd->calc_job = ecore_job_add(_calc_job, it->wd);
+ EINA_INLIST_FOREACH(it->wd->blocks, itb)
+ {
+ if (itb == it->block) break;
+ num += itb->count;
+ }
+ numb = num;
+ EINA_LIST_FOREACH(it->block->items, l, it2)
+ {
+ if (it2 == it) break;
+ num++;
+ }
+ if (it->realized)
+ {
+ _item_unrealize(it);
+ _item_realize(it, num, 0);
+ _item_block_recalc(it->block, numb);
+ _item_block_position(it->block);
+ }
+ else
+ {
+ _item_realize(it, num, 1);
+ _item_unrealize(it);
+ }
+ if ((it->minw > minw) || (it->minh != minh))
+ {
+ it->block->changed = 1;
+ if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
+ it->wd->calc_job = ecore_job_add(_calc_job, it->wd);
+ }
+}
+
+EAPI void
+elm_genlist_horizontal_mode_set(Evas_Object *obj, Elementary_List_Mode mode)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (wd->mode == mode) return;
+ wd->mode = mode;
+ if (wd->mode == ELM_LIST_LIMIT)
+ elm_scroller_content_min_limit(wd->scr, 1, 0);
+ else
+ elm_scroller_content_min_limit(wd->scr, 0, 0);
}
wd->fill_outside = fill_outside;
_sizing_eval(obj);
}
+
+EAPI void
+elm_icon_prescale_set(Evas_Object *obj, int size)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ _els_smart_icon_scale_size_set(wd->img, size);
+}
ECORE_X_EVENT_MASK_WINDOW_PROPERTY);
_elm_event_property_change = ecore_event_handler_add
(ECORE_X_EVENT_WINDOW_PROPERTY, _elm_window_property_change, NULL);
- if (ecore_x_window_prop_card32_get(ecore_x_window_root_first_get(),
- _elm_atom_enlightenment_scale,
- &val, 1) > 0)
- {
- if (val > 0)
+ if (!elm_scale)
+ {
+ if (ecore_x_window_prop_card32_get(ecore_x_window_root_first_get(),
+ _elm_atom_enlightenment_scale,
+ &val, 1) > 0)
{
- _elm_config->scale = (double)val / 1000.0;
- // FIXME: hack until e export finger size too
- if (!elm_finger_size)
- _elm_config->finger_size = 40.0 * _elm_config->scale;
+ if (val > 0)
+ {
+ _elm_config->scale = (double)val / 1000.0;
+ // FIXME: hack until e export finger size too
+ if (!elm_finger_size)
+ _elm_config->finger_size = 40.0 * _elm_config->scale;
+ }
}
- }
+ }
#endif
}
return elm_widget_scale_get(obj);
}
+EAPI double
+elm_scale_get(void)
+{
+ return _elm_config->scale;
+}
+
+EAPI void
+elm_scale_set(double scale)
+{
+ if (_elm_config->scale == scale) return;
+ _elm_config->scale = scale;
+ _elm_rescale();
+}
+
+EAPI Evas_Coord
+elm_finger_size_get(void)
+{
+ return _elm_config->finger_size;
+}
+
+EAPI void
+elm_finger_size_set(Evas_Coord size)
+{
+ elm_finger_size = NULL;
+ if (_elm_config->finger_size == size) return;
+ _elm_config->finger_size = size;
+ _elm_rescale();
+}
+
EAPI void
elm_object_focus(Evas_Object *obj)
{
{
Item *it = data;
edje_object_part_swallow(it->base, "elm.swallow.content", it->content);
+ edje_object_size_min_calc(it->base, &it->minw, &it->minh);
_sizing_eval(it->obj);
}
wd->scr = elm_smart_scroller_add(e);
elm_widget_resize_object_set(obj, wd->scr);
+ evas_object_event_callback_add(wd->scr, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints, obj);
edje_object_size_min_calc(elm_smart_scroller_edje_object_get(wd->scr), &minw, &minh);
evas_object_size_hint_min_set(obj, minw, minh);
if (w < 1) w = -1;
if (h < 1) h = -1;
if (maxw == -1) maxw = w;
- else if (w < maxw) maxw = w;
+ else if ((w > 0) && (w < maxw)) maxw = w;
if (maxh == -1) maxh = h;
- else if (h < maxh) maxh = h;
+ else if ((h > 0) && (h < maxh)) maxh = h;
}
if ((maxw >= 0) && (maxw < minw)) maxw = minw;
if ((maxh >= 0) && (maxh < minh)) maxh = minh;
}
EAPI void
+elm_win_fullscreen_set(Evas_Object *obj, Evas_Bool fullscreen)
+{
+ Elm_Win *win = elm_widget_data_get(obj);
+ if (!win) return;
+ ecore_evas_fullscreen_set(win->ee, fullscreen);
+ _elm_win_xwin_update(win);
+}
+
+EAPI void
+elm_win_maximized_set(Evas_Object *obj, Evas_Bool maximized)
+{
+ Elm_Win *win = elm_widget_data_get(obj);
+ if (!win) return;
+ ecore_evas_maximized_set(win->ee, maximized);
+ _elm_win_xwin_update(win);
+}
+
+EAPI void
+elm_win_iconified_set(Evas_Object *obj, Evas_Bool iconified)
+{
+ Elm_Win *win = elm_widget_data_get(obj);
+ if (!win) return;
+ ecore_evas_iconified_set(win->ee, iconified);
+ _elm_win_xwin_update(win);
+}
+
+EAPI void
+elm_win_layer_set(Evas_Object *obj, int layer)
+{
+ Elm_Win *win = elm_widget_data_get(obj);
+ if (!win) return;
+ ecore_evas_layer_set(win->ee, layer);
+ _elm_win_xwin_update(win);
+}
+
+EAPI void
elm_win_keyboard_mode_set(Evas_Object *obj, Elm_Win_Keyboard_Mode mode)
{
Elm_Win *win = elm_widget_data_get(obj);
sd->child.w = w;
sd->child.h = h;
_smart_scrollbar_size_adjust(sd);
+ evas_object_size_hint_min_set(sd->smart_obj, sd->child.w, sd->child.h);
}
}