From 56bb7d664aa9cdd0f8843b99dd443c42427387d9 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Thu, 18 Dec 2008 13:38:58 +0000 Subject: [PATCH] toolbar in. not 100% done yet. SVN revision: 38209 --- legacy/elementary/data/themes/Makefile.am | 6 +- .../elementary/data/themes/bt_dis_shine.png | Bin 0 -> 1153 bytes legacy/elementary/data/themes/default.edc | 329 ++++++++++++++---- .../data/themes/icon_left_arrow.png | Bin 0 -> 1887 bytes .../data/themes/icon_right_arrow.png | Bin 0 -> 1832 bytes legacy/elementary/data/themes/toolbar_sel.png | Bin 0 -> 2107 bytes legacy/elementary/src/bin/test.c | 64 ++++ legacy/elementary/src/lib/Elementary.h | 12 +- legacy/elementary/src/lib/Makefile.am | 1 + legacy/elementary/src/lib/elm_main.c | 26 +- legacy/elementary/src/lib/elm_scroller.c | 2 +- legacy/elementary/src/lib/elm_toolbar.c | 235 +++++++++++++ legacy/elementary/src/lib/els_scroller.c | 4 +- legacy/elementary/src/lib/els_scroller.h | 3 +- 14 files changed, 599 insertions(+), 83 deletions(-) create mode 100644 legacy/elementary/data/themes/bt_dis_shine.png create mode 100644 legacy/elementary/data/themes/icon_left_arrow.png create mode 100644 legacy/elementary/data/themes/icon_right_arrow.png create mode 100644 legacy/elementary/data/themes/toolbar_sel.png create mode 100644 legacy/elementary/src/lib/elm_toolbar.c diff --git a/legacy/elementary/data/themes/Makefile.am b/legacy/elementary/data/themes/Makefile.am index 1d7a38d509..1bf15d876c 100644 --- a/legacy/elementary/data/themes/Makefile.am +++ b/legacy/elementary/data/themes/Makefile.am @@ -67,7 +67,11 @@ outdent-top.png \ outdent-bottom.png \ updown.png \ leftright.png \ -hoversel_entry_bg.png +hoversel_entry_bg.png \ +bt_dis_shine.png \ +icon_left_arrow.png \ +icon_right_arrow.png \ +toolbar_sel.png default.edj: Makefile $(EXTRA_DIST) $(EDJE_CC) $(EDJE_FLAGS) \ diff --git a/legacy/elementary/data/themes/bt_dis_shine.png b/legacy/elementary/data/themes/bt_dis_shine.png new file mode 100644 index 0000000000000000000000000000000000000000..20285bebb1998bf8a2c7a31c130ee1b1dfd32f16 GIT binary patch literal 1153 zcmV-{1b+L8P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOV{ z2|EC>dS~DO000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000BrNklrAo;f&l4M`6G&)MMQyC$*%NjkS?HL zeJJTY@`;iS@Q3~ILj5cK)Ds|8P5%=J`$JWRMjve0e@DcB06;oN>K6cf%XLjDQ3xUB zr#d@HDPagfT_5Bz7($TTE-59f0Pc~h6;cyvsmsQ8*4DW}KT}GxGsKjV0F;?AgdirlDuMt2Vnn*GGvX^L zzP-I2n}p_hKJ7#SEfPdjvL7Onw>NJhBC4upnHBGP&$?)+cb1LKPl+)?*L9_xnX&6S zwaC7_yqubZ-rwKn%JaoLecz+13NwR<2z{iaLcZ%dW#+R@kBBCdRWw|C0c=1$aIqAa z$JqRKJgBNZK0dZ3cRU`a8bm#rfwqOM-=t>1L_~?GcygX+wSH9%`AAqrqy@b0S5=KM zmI(HJuQxY0Z9=cFuglfdRjDt_Qb<|EmSq70OGKE{sfvht+kCG0G%PVj?EAg|T$ZIc zAL)tJLcy*LB@lnszDL zNLd#2ks_bj>Umr9JwHD~lhDJ%L+tw=V~pDOz26^Nfk`gaLw(-VPwVq*#TZNG^Yiz8 zFTP$o!Y2tACEAKmY8aRDJkMt*J2Q*Fvh4kaVL(d`IjbTOsk^_e%8fR$a-PTLY7@G@ zzt@eMLMe~qD3*8*hXb5Wr*dqJPYxh*;Wftvn}f zNlxl>%?$!q_xlO+hTj9U1^m+M1vcjJZMHUTokQ5TWR?tdeSK|pe;L)i``!jP{EfF{ zywHXK5SoNC(AH~ti^$f^x@GejaP{rHo?AC;xA&0mxZo|l0F)XL+ylG!eWTS+6^2bh z*pShdclII!zX5cQ_-CU}XL167zX9N{FZ|W#hbKkw^?w8a<+e;0K4g5A?~C#unBL<- Tor;6l00000NkvXXu0mjfFE0%8 literal 0 HcmV?d00001 diff --git a/legacy/elementary/data/themes/default.edc b/legacy/elementary/data/themes/default.edc index a89479aa0c..dc8372dee2 100644 --- a/legacy/elementary/data/themes/default.edc +++ b/legacy/elementary/data/themes/default.edc @@ -4439,84 +4439,265 @@ collections { image.normal: "icon_arrow_right.png"; } } } } /////////////////////////////////////////////////////////////////////////////// - group { name: "elm/contact/base/default"; + group { name: "elm/toolbar/base/default"; images { - image: "bt_base1.png" COMP; - image: "bt_base2.png" COMP; - image: "bt_hilight.png" COMP; - image: "bt_shine.png" COMP; + image: "bt_dis_base.png" COMP; + image: "bt_dis_hilight.png" COMP; + image: "bt_dis_shine.png" COMP; + image: "icon_left_arrow.png" COMP; + image: "icon_right_arrow.png" COMP; } parts { - part { name: "button_image"; - mouse_events: 1; - description { state: "default" 0.0; - image { - normal: "bt_base2.png"; - border: 7 7 7 7; - } - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - image.normal: "bt_base1.png"; - } - } - part { name: "elm.swallow.content"; - type: SWALLOW; - type: RECT; - description { state: "default" 0.0; - aspect: 1.0 1.0; - aspect_preference: VERTICAL; - align: 0.0 0.5; - rel1.offset: 4 4; - rel2.offset: 4 -5; - rel2.relative: 0.0 1.0; - color: 255 0 0 128; - } - } - part { - name: "elm.text"; - type: TEXT; - effect: SOFT_SHADOW; - mouse_events: 0; - scale: 1; - description { state: "default" 0.0; - align: 0.0 1.0; - rel1.to_x: "elm.swallow.content"; - rel1.relative: 1.0 1.0; - rel1.offset: 0 -5; - rel2.offset: -5 -5; - color: 224 224 224 255; - color3: 0 0 0 64; - text { - text: "Name of Contact goes here"; - font: "Sans:style=Bold,Edje-Vera-Bold"; - size: 10; - min: 0 1; - align: 0.0 1.0; - } - } - } - part { name: "over1"; - mouse_events: 0; - description { state: "default" 0.0; - rel2.relative: 1.0 0.5; - image { - normal: "bt_hilight.png"; - border: 7 7 7 0; - } - } - } - part { name: "over2"; - mouse_events: 1; - repeat_events: 1; + part { name: "base"; + mouse_events: 1; + description { state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 2 2; + } + rel2.offset: -3 -3; + image { + normal: "bt_dis_base.png"; + border: 4 4 4 4; + } + } + } + part { name: "clipper"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "base"; + offset: 2 2; + } + rel2 { + to: "base"; + offset: -3 -3; + } + } + } + part { name: "elm.swallow.content"; + clip_to: "clipper"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1.to: "clipper"; + rel2.to: "clipper"; + } + } + part { name: "over2"; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + image { + normal: "bt_dis_shine.png"; + border: 4 4 4 4; + } + } + } + part { name: "over1"; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + rel2.relative: 1.0 0.5; + image { + normal: "bt_dis_hilight.png"; + border: 4 4 4 0; + } + color: 255 255 255 128; + } + } + part { name: "left_arrow"; + mouse_events: 0; + description { state: "default" 0.0; + image.normal: "icon_left_arrow.png"; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 0.0 0.5; + min: 32 32; + max: 32 32; + } + description { state: "hidden" 0.0; + inherit: "default" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { name: "right_arrow"; + mouse_events: 0; + description { state: "default" 0.0; + image.normal: "icon_right_arrow.png"; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 1.0 0.5; + min: 32 32; + max: 32 32; + } + description { state: "hidden" 0.0; + inherit: "default" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } + programs { + program { name: "sb_hbar_show"; + signal: "elm,action,show,hbar"; + source: "elm"; + action: STATE_SET "default" 0.0; + transition: LINEAR 0.5; + target: "left_arrow"; + target: "right_arrow"; + } + program { name: "sb_hbar_hide"; + signal: "elm,action,hide,hbar"; + source: "elm"; + action: STATE_SET "hidden" 0.0; + target: "left_arrow"; + target: "right_arrow"; + transition: LINEAR 0.5; + } + } + } + + group { name: "elm/toolbar/item/default"; + images { + image: "toolbar_sel.png" COMP; + } + parts { + part { name: "label2"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + align: 0.5 1.0; + fixed: 0 1; + rel1.to: "elm.text"; + rel2.to: "elm.text"; + color: 0 0 0 255; + text { + font: "Sans"; + text_source: "elm.text"; + size: 10; + min: 1 1; + align: 0.5 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "bg"; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + color: 255 255 255 0; + image { + normal: "toolbar_sel.png"; + border: 3 3 0 0; + } + fill.smooth: 0; + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + description { state: "default" 0.0; + align: 0.5 0.5; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + rel1 { + relative: 0.0 0.0; + offset: 2 2; + } + rel2 { + to_y: "elm.text"; + relative: 1.0 0.0; + offset: -3 -1; + } + color: 0 0 0 0; + } + } + part { name: "elm.text"; + type: TEXT; + effect: SOFT_SHADOW; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + align: 0.5 1.0; + fixed: 0 1; + rel1 { + relative: 0.0 1.0; + offset: 0 -1; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + visible: 0; + color: 224 224 224 255; + color3: 0 0 0 32; + text { + font: "Sans:style=Bold"; + size: 10; + min: 1 1; + align: 0.5 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; ignore_flags: ON_HOLD; - description { state: "default" 0.0; - image { - normal: "bt_shine.png"; - border: 7 7 7 7; - } - } - } + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg"; + target: "elm.text"; + target: "label2"; + transition: LINEAR 0.2; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg"; + target: "elm.text"; + target: "label2"; + transition: LINEAR 0.1; + } + program { name: "go"; + signal: "mouse,up,1"; + source: "event"; + action: SIGNAL_EMIT "elm,action,click" "elm"; + } } } } diff --git a/legacy/elementary/data/themes/icon_left_arrow.png b/legacy/elementary/data/themes/icon_left_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..556399eaadd5d9b3f9d58488fdf3d239cbbdb852 GIT binary patch literal 1887 zcmV-l2cYFim0%RS1DJEvze5Ojy)2Igf>ulBe0UVmnZ5dj_D` z4iwv-0VuWu#kQv&Kv}UJn8}0?BJ;J(<62!(08HTm6`A7n>C@GV7A-0hLg*+C&V!Ir zmP9i}yMPM7y?_7yg^5JspN3%!pFMkaA*!=9$G^AO!cFl4mHGx3j`%_a>A4=2W z@%WX2fq}(9xzi9zMSL0H2A*$hY^;k$qaVvGi^XCiCr_SS;xvR(5?{M!&6*$IxpQYY zTYNqtl#KY*t5?5t`}XbNY~u3;p=8ACx_;$J;xi%i_xFF-oHuMiC<*bo^nA8WOicX6 zoHSj4_*wvPO8n&H*0JDhCIqcJ>>-y*G*RKx%KLl#beZ!oGLD9tP zx;~OhrKFX1>((v3p`l?Pu+9YV?UDzOEq>j)bua6>{)u52(n<@3LU(*V-%+3qcn$a- z@U4;_0<(z!)T;QKH*enc`Fy_w-UNOE)B#@exn(5@U>5OLlgXsC(r(EU#5XoJzA`>O{#hcCkXD*0{x`r|rubKY#b)T+8vA(zFq3#)*DZ?= zg+kflU(OQma>U;Pi2qMK9+y^HC=`nNe7?ttFTKN1ws^na-=ORIe`B$jw9*PGUP|dq zPSDKcxXekZ%J26t85kINx4OFe2UealHa0e~apT5!Mn*=i0yluqfpOpq;69L$Ql^~n z`GN0d@6G)ILTIRL&I9p-gM;r?RaGsu@|^MU@rex^HvGPj;=yKC*zEZS;sb%e(!s&O z_vaw~UQ<(3!Nr4(q-citd4M|*2rNBy>ePE~w|j||sM2-)UQ<)kU@#agxOlKJ1kBK% zhnnU3ZS?&4h>FM~|wQGMjJUo0A_&*S$fZ}0}Lm;E~%TQxcdQ{bvlrkXDwVRjXFL9t;NGK=t|* z5Cf7xK?)b_E`#Zd3>V<)>gpOkapJ@!s}PngTlUlI*RQ_~q|8<@vjae)oK2#7Z5o*F z>FEjf_4Nf)sg$K2oIij5&qqf`e~ozoV#6;>Hm5I=YUY$E@%K^Tdm9)7#(R5vFCRaC z{EF2`sH&>k91e$1p(a;X_8nn9%+B3ly7#A10LD;`mjT-0!-p?xnkM${-RrX=q_VPd zb2uD!dA;5pKwJo6NV~hW$Jm?!NGYWd!T{o^nOni5JIIMZS-mT;bg6;Z%EC}~!`@aJR4*XjPL3?|9 zoyADl6p2JMkH@o_JV3C08hr4eM|X$cK%L)ffrY5^{9<51Z*T94_V)JWScn9Gcs%}B zuh-j#nsXe3;1~eN9m0_#M^^0GwQIT6WiA$ronEkD!Ow6If};Q+cL+z19$m3>=T6I! zkW423=J9x%aR`Fr0KgK2S9k2#vE1r@$1se)dpw>^KmwZ(@&W*IhtSv8_v-fT+bu&# zrBY{VYilGKoSRX2L-DX%@smtXXlU* zg4Wj7MRRAGSp?()N_M_%! zj);dMm&?zPPe}hgg^CIdHRDeL_b~4ZusQBCt!P8w5horF2Nx=@SdLlygWBZ8QNoir zcoc>b0RUh5u|&G1hlPQ8XW(>3sAK@7Eh9&e1|rGVuSF<90EM=v{#Rqq02JGSV%t*> Z;7jt~Y~i8sZz2Ey002ovPDHLkV1gKenq~k1 literal 0 HcmV?d00001 diff --git a/legacy/elementary/data/themes/icon_right_arrow.png b/legacy/elementary/data/themes/icon_right_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..6bbb2c6eaaff30f8e0e6d98e4a5ded40244708d0 GIT binary patch literal 1832 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 literal 0 HcmV?d00001 diff --git a/legacy/elementary/src/bin/test.c b/legacy/elementary/src/bin/test.c index cc87ef30b6..4943ebb2ed 100644 --- a/legacy/elementary/src/bin/test.c +++ b/legacy/elementary/src/bin/test.c @@ -1247,6 +1247,63 @@ my_bt_17(void *data, Evas_Object *obj, void *event_info) evas_object_show(win); } +static void +my_bt_18(void *data, Evas_Object *obj, void *event_info) +{ + Evas_Object *win, *bg, *bx, *tb, *ic; + char buf[PATH_MAX]; + + win = elm_win_add(NULL, "toolbar", ELM_WIN_BASIC); + elm_win_title_set(win, "Toolbar"); + 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); + elm_win_resize_object_add(win, bx); + evas_object_size_hint_weight_set(bx, 1.0, 1.0); + evas_object_show(bx); + + tb = elm_toolbar_add(win); + evas_object_size_hint_weight_set(tb, 0.0, 0.0); + evas_object_size_hint_align_set(tb, -1.0, 0.0); + + ic = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); + elm_icon_file_set(ic, buf, NULL); + elm_toolbar_item_add(tb, ic, "Hello", NULL, NULL); + + ic = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); + elm_icon_file_set(ic, buf, NULL); + elm_toolbar_item_add(tb, ic, "World", NULL, NULL); + + ic = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); + elm_icon_file_set(ic, buf, NULL); + elm_toolbar_item_add(tb, ic, "Here", NULL, NULL); + + ic = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); + elm_icon_file_set(ic, buf, NULL); + elm_toolbar_item_add(tb, ic, "Comes", NULL, NULL); + + ic = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); + elm_icon_file_set(ic, buf, NULL); + elm_toolbar_item_add(tb, ic, "Elementary", NULL, NULL); + + elm_box_pack_end(bx, tb); + evas_object_show(tb); + + evas_object_resize(win, 320, 300); + + evas_object_show(win); +} + static void my_win_main(void) { @@ -1459,6 +1516,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, "Toolbar"); + evas_object_smart_callback_add(bt, "clicked", my_bt_18, 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, 520); /* show the window */ diff --git a/legacy/elementary/src/lib/Elementary.h b/legacy/elementary/src/lib/Elementary.h index e1b06938e1..1c04f7302e 100644 --- a/legacy/elementary/src/lib/Elementary.h +++ b/legacy/elementary/src/lib/Elementary.h @@ -326,7 +326,14 @@ extern "C" { EAPI void elm_hoversel_hover_end(Evas_Object *obj); EAPI Elm_Hoversel_Item *elm_hoversel_item_add(Evas_Object *obj, const char *label, const char *icon_file, Elm_Icon_Type icon_type, void (*func) (void *data, Evas_Object *obj, void *event_info), const void *data); EAPI void elm_hoversel_item_del(Elm_Hoversel_Item *item); - + + typedef struct _Elm_Toolbar_Item Elm_Toolbar_Item; + EAPI Evas_Object *elm_toolbar_add(Evas_Object *parent); + EAPI Elm_Toolbar_Item *elm_toolbar_item_add(Evas_Object *obj, Evas_Object *icon, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), const void *data); + EAPI void elm_toolbar_item_del(Elm_Toolbar_Item *item); + EAPI void elm_toolbar_item_select(Elm_Toolbar_Item *item); + EAPI void elm_toolbar_scrollable_set(Evas_Object *obj, Evas_Bool scrollable); + //////////////////////////////////////////////////////////////////////////// /// FIXME: TODO LIST /////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// @@ -372,6 +379,9 @@ extern "C" { // * dialpad widget - need one with a phone dialpad // //// (improvements - low priority) +// * somehow a pdf(ps) viewer widget that doesnt make it gpl (lgpl) +// * emotion widget? +// * ewebkit widget // * need url and path entry modes for vkbd // * return list of toplevel window objects // * widgets should show who is focused (not useful for touchscreen) diff --git a/legacy/elementary/src/lib/Makefile.am b/legacy/elementary/src/lib/Makefile.am index 7f50e0896c..98b33cfdbe 100644 --- a/legacy/elementary/src/lib/Makefile.am +++ b/legacy/elementary/src/lib/Makefile.am @@ -35,6 +35,7 @@ elm_hover.c \ elm_entry.c \ elm_bubble.c \ elm_photo.c \ +elm_toolbar.c \ \ elc_notepad.c \ elc_anchorview.c \ diff --git a/legacy/elementary/src/lib/elm_main.c b/legacy/elementary/src/lib/elm_main.c index bf34b2af66..28133fe570 100644 --- a/legacy/elementary/src/lib/elm_main.c +++ b/legacy/elementary/src/lib/elm_main.c @@ -127,19 +127,20 @@ elm_init(int argc, char **argv) int val = 1000; ecore_x_init(NULL); + if (!ecore_x_screen_is_composited(0)) + _elm_config->compositing = 0; _elm_atom_enlightenment_scale = ecore_x_atom_get("ENLIGHTENMENT_SCALE"); ecore_x_event_mask_set(ecore_x_window_root_first_get(), ECORE_X_EVENT_MASK_WINDOW_PROPERTY); _elm_event_property_change = ecore_event_handler_add (ECORE_X_EVENT_WINDOW_PROPERTY, _elm_window_property_change, NULL); + /* FIXME if quickstart this happens in child */ if (ecore_x_window_prop_card32_get(ecore_x_window_root_first_get(), _elm_atom_enlightenment_scale, &val, 1) > 0) { if (val > 0) _elm_config->scale = (double)val / 1000.0; } - if (!ecore_x_screen_is_composited(0)) - _elm_config->compositing = 0; #endif } @@ -147,6 +148,27 @@ elm_init(int argc, char **argv) { _elm_config->scale = atof(elm_scale); } + /* FIXME: implement quickstart below */ + /* if !quickstart return + * else + * set up fast-start-fifo (in $ELM_FAST_START_FIFO) + * sit on blocking read + * read 2 bytes == length of data in bytes including nulls + * read N bytes (must be < (page_size - 2)) + * format: exename\0exepath\0[arg1\0][arg2\0][...] + * dlopen exepath + * dlsym elm_main in exe + * if (elm_main ! exists) + * ecore_exe exename + * else + * fork() + * [child] + * call exit(elm_main()); + * [parent] + * close x fd the nasty way (with close()) + * ecore_x_shutdown() + * ecore_x_init() etc. etc. loop back to blocking on fifo read + */ } EAPI void diff --git a/legacy/elementary/src/lib/elm_scroller.c b/legacy/elementary/src/lib/elm_scroller.c index b2307ed895..ac9df011f1 100644 --- a/legacy/elementary/src/lib/elm_scroller.c +++ b/legacy/elementary/src/lib/elm_scroller.c @@ -28,7 +28,7 @@ static void _theme_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); - elm_smart_scroller_theme_set(wd->scr, "default"); + elm_smart_scroller_theme_set(wd->scr, "scroller", "base", "default"); _sizing_eval(obj); } diff --git a/legacy/elementary/src/lib/elm_toolbar.c b/legacy/elementary/src/lib/elm_toolbar.c new file mode 100644 index 0000000000..9535e27453 --- /dev/null +++ b/legacy/elementary/src/lib/elm_toolbar.c @@ -0,0 +1,235 @@ +#include +#include "elm_priv.h" + +typedef struct _Widget_Data Widget_Data; +typedef struct _Item Item; + +struct _Widget_Data +{ + Evas_Object *scr, *bx; + Eina_List *items; + int icon_size; + Evas_Bool scrollable : 1; +}; + +struct _Item +{ + Evas_Object *obj; + Evas_Object *base; + const char *label; + Evas_Object *icon; + void (*func) (void *data, Evas_Object *obj, void *event_info); + const void *data; + Evas_Bool selected : 1; +}; + +static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); +static void _sizing_eval(Evas_Object *obj); +static void _mouse_up(void *data, Evas_Object *obj, void *event_info); + +static void +_item_show(Item *it) +{ + Widget_Data *wd = elm_widget_data_get(it->obj); + Evas_Coord x, y, w, h, bx, by; + + evas_object_geometry_get(wd->bx, &bx, &by, NULL, NULL); + evas_object_geometry_get(it->base, &x, &y, &w, &h); + elm_smart_scroller_child_region_show(wd->scr, x - bx, y - by, w, h); +} + +static void +_del_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + free(wd); +} + +static void +_theme_hook(Evas_Object *obj) +{ + // FIXME: re-eval icon and all min sizes + _sizing_eval(obj); +} + +static void +_sizing_eval(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1; + Evas_Coord vw = 0, vh = 0; + + edje_object_size_min_calc(elm_smart_scroller_edje_object_get(wd->scr), &minw, &minh); + evas_object_resize(wd->scr, 500, 500); + evas_object_size_hint_min_get(wd->bx, &minw, &minh); + evas_object_resize(wd->bx, minw, minh); + elm_smart_scroller_child_viewport_size_get(wd->scr, &vw, &vh); + if (wd->scrollable) + { + minw = 500 - vw; + minh = minh + (500 - vh); + } + else + { + minw = minw + (500 - vw); + minh = minh + (500 - vh); + } + evas_object_size_hint_min_set(obj, minw, minh); + evas_object_size_hint_max_set(obj, maxw, maxh); +} + +static void +_mouse_up(void *data, Evas_Object *obj, void *event_info) +{ + evas_object_smart_callback_call(data, "clicked", NULL); +} + +static void +_resize(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Widget_Data *wd = elm_widget_data_get(data); + Evas_Coord mw, mh, vw, vh, w, h; + Eina_List *l; + Item *it; + + elm_smart_scroller_child_viewport_size_get(wd->scr, &vw, &vh); + evas_object_size_hint_min_get(wd->bx, &mw, &mh); + evas_object_geometry_get(wd->bx, NULL, NULL, &w, &h); + if (vw >= mw) + { + if (w != vw) evas_object_resize(wd->bx, vw, h); + } + for (l = wd->items; l; l = l->next) + { + it = l->data; + if (it->selected) + { + _item_show(it); + break; + } + } + +} + +static void +_select(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Item *it = data, *it2; + Widget_Data *wd = elm_widget_data_get(it->obj); + Eina_List *l; + if (it->selected) return; + for (l = wd->items; l; l = l->next) + { + it2 = l->data; + if (it2->selected) + { + it2->selected = 0; + edje_object_signal_emit(it2->base, "elm,state,unselected", "elm"); + break; + } + } + it->selected = 1; + edje_object_signal_emit(it->base, "elm,state,selected", "elm"); + _item_show(it); + if (it->func) it->func(it->data, it->obj, NULL); +} + +EAPI Evas_Object * +elm_toolbar_add(Evas_Object *parent) +{ + Evas_Object *obj; + Evas *e; + Widget_Data *wd; + + wd = ELM_NEW(Widget_Data); + e = evas_object_evas_get(parent); + obj = elm_widget_add(e); + elm_widget_data_set(obj, wd); + elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); + elm_widget_can_focus_set(obj, 0); + + wd->scr = elm_smart_scroller_add(e); + elm_smart_scroller_theme_set(wd->scr, "toolbar", "base", "default"); + elm_widget_resize_object_set(obj, wd->scr); + elm_smart_scroller_policy_set(wd->scr, + ELM_SMART_SCROLLER_POLICY_AUTO, + ELM_SMART_SCROLLER_POLICY_OFF); + + wd->icon_size = 32; + wd->scrollable = 1; + + wd->bx = _els_smart_box_add(e); + _els_smart_box_orientation_set(wd->bx, 1); + _els_smart_box_homogenous_set(wd->bx, 1); + elm_widget_sub_object_add(obj, wd->bx); + elm_smart_scroller_child_set(wd->scr, wd->bx); + evas_object_show(wd->bx); + + evas_object_event_callback_add(wd->scr, EVAS_CALLBACK_RESIZE, + _resize, obj); + + _sizing_eval(obj); + return obj; +} + +EAPI Elm_Toolbar_Item * +elm_toolbar_item_add(Evas_Object *obj, Evas_Object *icon, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), const void *data) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Evas_Coord mw, mh; + Item *it = calloc(1, sizeof(Item)); + if (!it) return NULL; + wd->items = eina_list_append(wd->items, it); + it->obj = obj; + it->label = eina_stringshare_add(label); + it->icon = icon; + it->func = func; + it->data = data; + it->base = edje_object_add(evas_object_evas_get(obj)); + _elm_theme_set(it->base, "toolbar", "item", "default"); + edje_object_signal_callback_add(it->base, "elm,action,click", "elm", + _select, it); + if (icon) + { + edje_extern_object_min_size_set(icon, + (double)wd->icon_size * _elm_config->scale, + (double)wd->icon_size * _elm_config->scale); + edje_object_part_swallow(it->base, "elm.swallow.icon", icon); + evas_object_show(icon); + elm_widget_sub_object_add(obj, it->icon); + } + edje_object_part_text_set(it->base, "elm.text", label); + edje_object_size_min_calc(it->base, &mw, &mh); + evas_object_size_hint_weight_set(it->base, 0.0, 0.0); + evas_object_size_hint_align_set(it->base, -1.0, -1.0); + evas_object_size_hint_min_set(it->base, mw, mh); + evas_object_size_hint_max_set(it->base, 9999, mh); + _els_smart_box_pack_end(wd->bx, it->base); + evas_object_show(it->base); + elm_widget_sub_object_add(obj, it->base); + _sizing_eval(obj); + return (Elm_Toolbar_Item *)it; +} + +EAPI void +elm_toolbar_item_del(Elm_Toolbar_Item *item) +{ + // FIXME: remove item +} + +EAPI void +elm_toolbar_item_select(Elm_Toolbar_Item *item) +{ + // FIXME select item + // Widget_Data *wd = elm_widget_data_get(obj); +} + +EAPI void +elm_toolbar_scrollable_set(Evas_Object *obj, Evas_Bool scrollable) +{ + Widget_Data *wd = elm_widget_data_get(obj); + wd->scrollable = scrollable; + _sizing_eval(obj); +} diff --git a/legacy/elementary/src/lib/els_scroller.c b/legacy/elementary/src/lib/els_scroller.c index 39443964bc..a3f8fd11f5 100644 --- a/legacy/elementary/src/lib/els_scroller.c +++ b/legacy/elementary/src/lib/els_scroller.c @@ -338,10 +338,10 @@ elm_smart_scroller_single_dir_get(Evas_Object *obj) } void -elm_smart_scroller_theme_set(Evas_Object *obj, const char *style) +elm_smart_scroller_theme_set(Evas_Object *obj, const char *clas, const char *group, const char *style) { API_ENTRY return; - _elm_theme_set(sd->edje_obj, "scroller", "base", style); + _elm_theme_set(sd->edje_obj, clas, group, style); if (sd->pan_obj) edje_object_part_swallow(sd->edje_obj, "elm.swallow.content", sd->pan_obj); sd->vbar_visible = !sd->vbar_visible; diff --git a/legacy/elementary/src/lib/els_scroller.h b/legacy/elementary/src/lib/els_scroller.h index c3b09a8aa0..289a6eb0e8 100644 --- a/legacy/elementary/src/lib/els_scroller.h +++ b/legacy/elementary/src/lib/els_scroller.h @@ -23,5 +23,4 @@ void elm_smart_scroller_policy_get (Evas_Object *obj, Elm_Smart_Scr Evas_Object *elm_smart_scroller_edje_object_get (Evas_Object *obj); void elm_smart_scroller_single_dir_set (Evas_Object *obj, Evas_Bool single_dir); Evas_Bool elm_smart_scroller_single_dir_get (Evas_Object *obj); -void elm_smart_scroller_theme_set (Evas_Object *obj, const char *style); - +void elm_smart_scroller_theme_set (Evas_Object *obj, const char *clas, const char *group, const char *style);