diff --git a/legacy/elementary/configure.in b/legacy/elementary/configure.in index e1ce31e806..afb183d809 100644 --- a/legacy/elementary/configure.in +++ b/legacy/elementary/configure.in @@ -55,4 +55,5 @@ src/bin/Makefile data/Makefile data/themes/Makefile data/images/Makefile +data/objects/Makefile ]) diff --git a/legacy/elementary/data/Makefile.am b/legacy/elementary/data/Makefile.am index 0631c999cf..74645f0565 100644 --- a/legacy/elementary/data/Makefile.am +++ b/legacy/elementary/data/Makefile.am @@ -1,3 +1,3 @@ AUTOMAKE_OPTIONS = 1.4 foreign MAINTAINERCLEANFILES = Makefile.in -SUBDIRS = themes images +SUBDIRS = themes images objects diff --git a/legacy/elementary/data/objects/Makefile.am b/legacy/elementary/data/objects/Makefile.am new file mode 100644 index 0000000000..168440d116 --- /dev/null +++ b/legacy/elementary/data/objects/Makefile.am @@ -0,0 +1,20 @@ +AUTOMAKE_OPTIONS = 1.4 foreign +MAINTAINERCLEANFILES = Makefile.in + +EDJE_CC = edje_cc +EDJE_FLAGS = -v -id $(top_srcdir)/data -fd $(top_srcdir)/data + +filesdir = $(datadir)/elementary/objects + +files_DATA = test.edj + +EXTRA_DIST = \ +test.edc over.png under.png + +test.edj: Makefile $(EXTRA_DIST) + $(EDJE_CC) $(EDJE_FLAGS) \ + $(top_srcdir)/data/objects/test.edc \ + $(top_builddir)/data/objects/test.edj + +clean-local: + rm -f *.edj diff --git a/legacy/elementary/data/objects/over.png b/legacy/elementary/data/objects/over.png new file mode 100644 index 0000000000..5303e2dc49 Binary files /dev/null and b/legacy/elementary/data/objects/over.png differ diff --git a/legacy/elementary/data/objects/test.edc b/legacy/elementary/data/objects/test.edc new file mode 100644 index 0000000000..048f6acdb6 --- /dev/null +++ b/legacy/elementary/data/objects/test.edc @@ -0,0 +1,61 @@ +collections { + group { name: "layout"; + images { + image: "over.png" COMP; + image: "under.png" COMP; + } + parts { + part { name: "under"; + description { state: "default" 0.0; + align: 0.5 0.0; + aspect: 1.486068111 1.486068111; + aspect_preference: HORIZONTAL; + image.normal: "under.png"; + } + } + part { name: "element1"; + type: SWALLOW; + description { state: "default" 0.0; + rel1 { + relative: 0.2 0.2; + } + rel2 { + relative: 0.4 0.3; + } + } + } + part { name: "element2"; + type: SWALLOW; + description { state: "default" 0.0; + rel1 { + relative: 0.6 0.3; + } + rel2 { + relative: 0.9 0.5; + } + } + } + part { name: "element3"; + type: SWALLOW; + description { state: "default" 0.0; + rel1 { + relative: 0.1 0.7; + } + rel2 { + relative: 0.9 0.9; + } + } + } + part { name: "over"; + description { state: "default" 0.0; + align: 0.0 1.0; + aspect: 2.238095238 2.238095238; + max: 329 147; + aspect_preference: HORIZONTAL; + image.normal: "over.png"; + } + } + } + } +} + diff --git a/legacy/elementary/data/objects/under.png b/legacy/elementary/data/objects/under.png new file mode 100644 index 0000000000..91cb3fbd03 Binary files /dev/null and b/legacy/elementary/data/objects/under.png differ diff --git a/legacy/elementary/src/bin/test.c b/legacy/elementary/src/bin/test.c index 9c99feabbe..a2de8cbf3e 100644 --- a/legacy/elementary/src/bin/test.c +++ b/legacy/elementary/src/bin/test.c @@ -312,7 +312,6 @@ static void my_bt_8(void *data, Evas_Object *obj, void *event_info) { Evas_Object *win, *bg, *tb, *bt; - char buf[PATH_MAX]; win = elm_win_add(NULL, "table", ELM_WIN_BASIC); elm_win_title_set(win, "Table"); @@ -377,7 +376,6 @@ static void my_bt_9(void *data, Evas_Object *obj, void *event_info) { Evas_Object *win, *bg, *bx, *ck; - char buf[PATH_MAX]; win = elm_win_add(NULL, "clock", ELM_WIN_BASIC); elm_win_title_set(win, "Clock"); @@ -424,6 +422,46 @@ my_bt_9(void *data, Evas_Object *obj, void *event_info) evas_object_show(win); } +static void +my_bt_10(void *data, Evas_Object *obj, void *event_info) +{ + Evas_Object *win, *bg, *ly, *ck, *bt; + char buf[PATH_MAX]; + + win = elm_win_add(NULL, "layout", ELM_WIN_BASIC); + elm_win_title_set(win, "Layout"); + 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); + + ly = elm_layout_add(win); + snprintf(buf, sizeof(buf), "%s/objects/test.edj", PACKAGE_DATA_DIR); + elm_layout_file_set(ly, buf, "layout"); + evas_object_size_hint_weight_set(ly, 1.0, 1.0); + elm_win_resize_object_add(win, ly); + evas_object_show(ly); + + bt = elm_button_add(win); + elm_button_label_set(bt, "Button 1"); + elm_layout_content_set(ly, "element1", bt); + evas_object_show(bt); + + bt = elm_button_add(win); + elm_button_label_set(bt, "Button 2"); + elm_layout_content_set(ly, "element2", bt); + evas_object_show(bt); + + bt = elm_button_add(win); + elm_button_label_set(bt, "Button 3"); + elm_layout_content_set(ly, "element3", bt); + evas_object_show(bt); + + evas_object_show(win); +} + static void my_win_main(void) { @@ -580,6 +618,13 @@ my_win_main(void) elm_box_pack_end(bx, bt); evas_object_show(bt); + bt = elm_button_add(win); + elm_button_label_set(bt, "Layout"); + evas_object_smart_callback_add(bt, "clicked", my_bt_10, NULL); + evas_object_size_hint_align_set(bt, -1.0, 0.0); + elm_box_pack_end(bx, bt); + evas_object_show(bt); + /* set an initial window size */ evas_object_resize(win, 320, 320); /* show the window */ diff --git a/legacy/elementary/src/lib/Elementary.h b/legacy/elementary/src/lib/Elementary.h index 0136e90535..7f9eb99aa4 100644 --- a/legacy/elementary/src/lib/Elementary.h +++ b/legacy/elementary/src/lib/Elementary.h @@ -164,10 +164,18 @@ extern "C" { * "changed" - the user changed the time */ + EAPI Evas_Object *elm_layout_add(Evas_Object *parent); + EAPI void elm_layout_file_set(Evas_Object *obj, const char *file, const char *group); + EAPI void elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content); + EAPI Evas_Object *elm_layout_edje_get(Evas_Object *obj); + /* smart callbacks elm_win objects will call: + */ + // FIXME: fixes to do // * current sizing inefficient // * scroller could do with page up/down/left/right buttons and and idea of // a page size +// * tab widget focusing (not useful for touchscreen tho...) // // FIXME: immediate hitlist for widgets: // HOVER: select a widget (any) and attach a hover to it - the over will hover diff --git a/legacy/elementary/src/lib/elm_layout.c b/legacy/elementary/src/lib/elm_layout.c index 25ac80aec6..530dd2c408 100644 --- a/legacy/elementary/src/lib/elm_layout.c +++ b/legacy/elementary/src/lib/elm_layout.c @@ -111,7 +111,7 @@ EAPI void elm_layout_file_set(Evas_Object *obj, const char *file, const char *group) { Widget_Data *wd = elm_widget_data_get(obj); - _elm_theme_set(wd->lay, file, group); + edje_object_file_set(wd->lay, file, group); _sizing_eval(obj); } @@ -145,3 +145,10 @@ elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *conte _sizing_eval(obj); } } + +EAPI Evas_Object * +elm_layout_edje_get(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + return wd->lay; +}