From dd4467505ea29d6120e5e7d467d76836a6630ff4 Mon Sep 17 00:00:00 2001 From: Sungtaek Hong Date: Tue, 14 Nov 2017 19:59:42 +0900 Subject: [PATCH] efl_ui_widget: find new edc resource for efl_ui_widgets new eo widgets(efl_ui_ prefix) finds new edc group in data/elementary/themes/edc/efl/*.edc. New group name is "klass/group:style" and "base" group name and "default" style name can be omitted. for now, separator for style is ':' but needs to be decided. --- data/elementary/themes/Makefile.am | 25 +- data/elementary/themes/default.edc | 25 +- data/elementary/themes/edc/efl/bg.edc | 11 + data/elementary/themes/edc/efl/border.edc | 21 ++ data/elementary/themes/edc/efl/button.edc | 8 + data/elementary/themes/edc/efl/calendar.edc | 3 + data/elementary/themes/edc/efl/check.edc | 7 + data/elementary/themes/edc/efl/cursor.edc | 91 ++++++ data/elementary/themes/edc/efl/focus.edc | 7 + data/elementary/themes/edc/efl/frame.edc | 3 + .../elementary/themes/edc/efl/multibuttonentry.edc | 19 ++ data/elementary/themes/edc/{elm => efl}/nstate.edc | 4 +- data/elementary/themes/edc/efl/panes.edc | 44 +++ data/elementary/themes/edc/efl/photocam.edc | 3 + data/elementary/themes/edc/efl/progress.edc | 20 ++ data/elementary/themes/edc/efl/radio.edc | 3 + data/elementary/themes/edc/efl/scroller.edc | 12 + data/elementary/themes/edc/efl/slider.edc | 73 +++++ data/elementary/themes/edc/efl/text.edc | 328 +++++++++++++++++++++ data/elementary/themes/edc/efl/textpath.edc | 3 + data/elementary/themes/edc/efl/tooltip.edc | 15 + data/elementary/themes/edc/efl/uiclock.edc | 223 ++++++++++++++ data/elementary/themes/edc/efl/video.edc | 3 + data/elementary/themes/edc/efl/win.edc | 3 + src/lib/elementary/efl_ui_panes.c | 68 ++++- src/lib/elementary/efl_ui_slider.c | 12 +- src/lib/elementary/efl_ui_text.c | 79 +++-- src/lib/elementary/efl_ui_win.c | 20 +- src/lib/elementary/elm_priv.h | 3 +- src/lib/elementary/elm_spinner.c | 7 +- src/lib/elementary/elm_theme.c | 26 +- src/lib/elementary/elm_widget.c | 10 + src/lib/elementary/els_cursor.c | 6 +- src/lib/elementary/elu_ews_wm.c | 8 +- 34 files changed, 1105 insertions(+), 88 deletions(-) create mode 100644 data/elementary/themes/edc/efl/bg.edc create mode 100644 data/elementary/themes/edc/efl/border.edc create mode 100644 data/elementary/themes/edc/efl/calendar.edc create mode 100644 data/elementary/themes/edc/efl/check.edc create mode 100644 data/elementary/themes/edc/efl/cursor.edc create mode 100644 data/elementary/themes/edc/efl/focus.edc create mode 100644 data/elementary/themes/edc/efl/frame.edc create mode 100644 data/elementary/themes/edc/efl/multibuttonentry.edc rename data/elementary/themes/edc/{elm => efl}/nstate.edc (66%) create mode 100644 data/elementary/themes/edc/efl/panes.edc create mode 100644 data/elementary/themes/edc/efl/photocam.edc create mode 100644 data/elementary/themes/edc/efl/progress.edc create mode 100644 data/elementary/themes/edc/efl/radio.edc create mode 100644 data/elementary/themes/edc/efl/scroller.edc create mode 100644 data/elementary/themes/edc/efl/slider.edc create mode 100644 data/elementary/themes/edc/efl/text.edc create mode 100644 data/elementary/themes/edc/efl/textpath.edc create mode 100644 data/elementary/themes/edc/efl/tooltip.edc create mode 100644 data/elementary/themes/edc/efl/uiclock.edc create mode 100644 data/elementary/themes/edc/efl/video.edc create mode 100644 data/elementary/themes/edc/efl/win.edc diff --git a/data/elementary/themes/Makefile.am b/data/elementary/themes/Makefile.am index f1ee7b1..758f778 100644 --- a/data/elementary/themes/Makefile.am +++ b/data/elementary/themes/Makefile.am @@ -130,7 +130,6 @@ elementary/themes/edc/elm/menu.edc \ elementary/themes/edc/elm/multibuttonentry.edc \ elementary/themes/edc/elm/naviframe.edc \ elementary/themes/edc/elm/notify.edc \ -elementary/themes/edc/elm/nstate.edc \ elementary/themes/edc/elm/panel.edc \ elementary/themes/edc/elm/panes.edc \ elementary/themes/edc/elm/photocam.edc \ @@ -1016,8 +1015,28 @@ elementary/themes/snd/kbd-tap5.wav \ elementary/themes/snd/kbd-tap.wav efl_ui_themes_files = \ -elementary/themes/edc/efl/button.edc - +elementary/themes/edc/efl/bg.edc \ +elementary/themes/edc/efl/border.edc \ +elementary/themes/edc/efl/button.edc \ +elementary/themes/edc/efl/calendar.edc \ +elementary/themes/edc/efl/check.edc \ +elementary/themes/edc/efl/uiclock.edc \ +elementary/themes/edc/efl/cursor.edc \ +elementary/themes/edc/efl/focus.edc \ +elementary/themes/edc/efl/frame.edc \ +elementary/themes/edc/efl/multibuttonentry.edc \ +elementary/themes/edc/efl/nstate.edc \ +elementary/themes/edc/efl/panes.edc \ +elementary/themes/edc/efl/photocam.edc \ +elementary/themes/edc/efl/progress.edc \ +elementary/themes/edc/efl/radio.edc \ +elementary/themes/edc/efl/scroller.edc \ +elementary/themes/edc/efl/slider.edc \ +elementary/themes/edc/efl/text.edc \ +elementary/themes/edc/efl/textpath.edc \ +elementary/themes/edc/efl/tooltip.edc \ +elementary/themes/edc/efl/video.edc \ +elementary/themes/edc/efl/win.edc elementary_fdo_actions_128_files = \ elementary/themes/fdo/actions/128/address-book-new.png \ diff --git a/data/elementary/themes/default.edc b/data/elementary/themes/default.edc index 9d61529..d3254be 100644 --- a/data/elementary/themes/default.edc +++ b/data/elementary/themes/default.edc @@ -13,7 +13,6 @@ collections { // elm #include "edc/elm/bg.edc" #include "edc/elm/button.edc" -#include "edc/elm/nstate.edc" // XXX: mobile mode needs invisible scrollers... make signals that do this #include "edc/elm/scroller.edc" // XXX: mobile mode needs different entry setup @@ -167,5 +166,29 @@ collections { #include "edc/O/icons.edc" // New efl ui themes +#include "edc/efl/bg.edc" #include "edc/efl/button.edc" +#include "edc/efl/calendar.edc" +#include "edc/efl/nstate.edc" +// XXX: mobile mode needs invisible scrollers... make signals that do this +#include "edc/efl/scroller.edc" +// XXX: mobile mode needs different entry setup +#include "edc/efl/text.edc" +#include "edc/efl/frame.edc" +#include "edc/efl/check.edc" +#include "edc/efl/slider.edc" +#include "edc/efl/radio.edc" +#include "edc/efl/panes.edc" +#include "edc/efl/video.edc" +#include "edc/efl/focus.edc" +#include "edc/efl/multibuttonentry.edc" +#include "edc/efl/tooltip.edc" +#include "edc/efl/photocam.edc" +#include "edc/efl/progress.edc" +#include "edc/efl/border.edc" +// XXX: min size calc problems - too wide! ... err ok on my 32bit box... eh? +#include "edc/efl/cursor.edc" +#include "edc/efl/textpath.edc" +#include "edc/efl/win.edc" +#include "edc/efl/uiclock.edc" } diff --git a/data/elementary/themes/edc/efl/bg.edc b/data/elementary/themes/edc/efl/bg.edc new file mode 100644 index 0000000..43547d3 --- /dev/null +++ b/data/elementary/themes/edc/efl/bg.edc @@ -0,0 +1,11 @@ +/* bg widget style information + + [SWALLOW] + elm.swallow.rectangle: Used for elm_bg_color_set() + elm.swallow.background: Used for elm_bg_file_set() + elm.swallow.content: Used for elm_layout_part_content_set(bg, "overlay", content). +*/ + +group { "efl/bg"; + inherit: "elm/bg/base/default"; +} diff --git a/data/elementary/themes/edc/efl/border.edc b/data/elementary/themes/edc/efl/border.edc new file mode 100644 index 0000000..5574826 --- /dev/null +++ b/data/elementary/themes/edc/efl/border.edc @@ -0,0 +1,21 @@ +/* Window client-side decorations and extra slots + * Includes swallows for: + * - app content + * - main menu + * - indicator + * - soft key + * - virtual keyboard + */ + +group { "efl/border"; + inherit: "elm/border/base/default"; +} + +group { "efl/border/dialog"; + inherit: "elm/border/dialog/default"; +} + +group { "efl/border/naviframe"; + inherit: "elm/border/naviframe/default"; +} + diff --git a/data/elementary/themes/edc/efl/button.edc b/data/elementary/themes/edc/efl/button.edc index e69de29..1fe935b 100644 --- a/data/elementary/themes/edc/efl/button.edc +++ b/data/elementary/themes/edc/efl/button.edc @@ -0,0 +1,8 @@ +group { "efl/button"; + inherit: "elm/button/base/default"; +} + +group { "efl/button:anchor"; + inherit: "elm/button/base/anchor"; +} + diff --git a/data/elementary/themes/edc/efl/calendar.edc b/data/elementary/themes/edc/efl/calendar.edc new file mode 100644 index 0000000..c6b8276 --- /dev/null +++ b/data/elementary/themes/edc/efl/calendar.edc @@ -0,0 +1,3 @@ +group { "efl/calendar"; + inherit: "elm/calendar/base/default"; +} diff --git a/data/elementary/themes/edc/efl/check.edc b/data/elementary/themes/edc/efl/check.edc new file mode 100644 index 0000000..76db7a8 --- /dev/null +++ b/data/elementary/themes/edc/efl/check.edc @@ -0,0 +1,7 @@ +group { "efl/check"; + inherit: "elm/check/base/default"; +} + +group { "efl/check:toggle"; + inherit: "elm/check/base/toggle"; +} diff --git a/data/elementary/themes/edc/efl/cursor.edc b/data/elementary/themes/edc/efl/cursor.edc new file mode 100644 index 0000000..1302e4c --- /dev/null +++ b/data/elementary/themes/edc/efl/cursor.edc @@ -0,0 +1,91 @@ +// cursors available: +// +// "x" +// "arrow" +// "based_arrow_down" +// "based_arrow_up" +// "boat" +// "bogosity" +// "bottom_left_corner" +// "bottom_right_corner" +// "bottom_side" +// "bottom_tee" +// "box_spiral" +// "center_ptr" +// "circle" +// "clock" +// "coffee_mug" +// "cross" +// "cross_reverse" +// "crosshair" +// "diamond_cross" +// "dot" +// "dot_box_mask" +// "double_arrow" +// "draft_large" +// "draft_small" +// "draped_box" +// "exchange" +// "fleur" +// "gobbler" +// "gumby" +// "hand1" *DONE* +// "hand2" +// "heart" +// "icon" +// "iron_cross" +// "left_ptr" +// "left_side" +// "left_tee" +// "leftbutton" +// "ll_angle" +// "lr_angle" +// "man" +// "middlebutton" +// "mouse" +// "pencil" +// "pirate" +// "plus" +// "question_arrow" +// "right_ptr" +// "right_side" +// "right_tee" +// "rightbutton" +// "rtl_logo" +// "sailboat" +// "sb_down_arrow" +// "sb_h_double_arrow" +// "sb_left_arrow" +// "sb_right_arrow" +// "sb_up_arrow" +// "sb_v_double_arrow" +// "shuttle" +// "sizing" +// "spider" +// "spraycan" +// "star" +// "target" +// "tcross" +// "top_left_arrow" +// "top_left_corner" +// "top_right_corner" +// "top_side" +// "top_tee" +// "trek" +// "ul_angle" +// "umbrella" +// "ur_angle" +// "watch" +// "xterm" + +group { "efl/cursor/hand1"; + inherit: "elm/cursor/hand1/default"; +} + +group { "efl/cursor/blank"; + inherit: "elm/cursor/blank/default"; +} + +group { "efl/cursor/xterm"; + inherit: "elm/cursor/xterm/default"; +} diff --git a/data/elementary/themes/edc/efl/focus.edc b/data/elementary/themes/edc/efl/focus.edc new file mode 100644 index 0000000..d7c3b78 --- /dev/null +++ b/data/elementary/themes/edc/efl/focus.edc @@ -0,0 +1,7 @@ +group { "efl/focus_highlight/top"; + inherit: "elm/focus_highlight/top/default"; +} + +group { "efl/focus_highlight/top:blank"; + inherit: "elm/focus_highlight/top/blank"; +} diff --git a/data/elementary/themes/edc/efl/frame.edc b/data/elementary/themes/edc/efl/frame.edc new file mode 100644 index 0000000..f8b4690 --- /dev/null +++ b/data/elementary/themes/edc/efl/frame.edc @@ -0,0 +1,3 @@ +group { "efl/frame"; + inherit: "elm/frame/base/default"; +} diff --git a/data/elementary/themes/edc/efl/multibuttonentry.edc b/data/elementary/themes/edc/efl/multibuttonentry.edc new file mode 100644 index 0000000..149f9e6 --- /dev/null +++ b/data/elementary/themes/edc/efl/multibuttonentry.edc @@ -0,0 +1,19 @@ +group { "efl/multibuttonentry"; + inherit: "elm/multibuttonentry/base/default"; +} + +group { "efl/multibuttonentry/label"; + inherit: "elm/multibuttonentry/label/default"; +} + +group { "efl/multibuttonentry/guidetext"; + inherit: "elm/multibuttonentry/guidetext/default"; +} + +group { "efl/multibuttonentry/btn"; + inherit: "elm/multibuttonentry/btn/default"; +} + +group { "efl/multibuttonentry/closedbutton"; + inherit: "elm/multibuttonentry/closedbutton/default"; +} diff --git a/data/elementary/themes/edc/elm/nstate.edc b/data/elementary/themes/edc/efl/nstate.edc similarity index 66% rename from data/elementary/themes/edc/elm/nstate.edc rename to data/elementary/themes/edc/efl/nstate.edc index f058806..c63624d 100644 --- a/data/elementary/themes/edc/elm/nstate.edc +++ b/data/elementary/themes/edc/efl/nstate.edc @@ -1,5 +1,5 @@ -group { name: "elm/nstate/base/default"; - inherit: "elm/button/base/default"; +group { "efl/nstate"; + inherit: "efl/button"; programs { program { signal: "mouse,clicked,1"; source: "event"; diff --git a/data/elementary/themes/edc/efl/panes.edc b/data/elementary/themes/edc/efl/panes.edc new file mode 100644 index 0000000..38f178c --- /dev/null +++ b/data/elementary/themes/edc/efl/panes.edc @@ -0,0 +1,44 @@ +/* panes widget style information + + [SIGNAL] + elm,panes,fixed: Used for elm_panes_fixed_set() + elm,panes,unfixed: Used for elm_panes_fixed_set() + + [SIGNAL EMIT] + elm,action,click: Used for "clicked" smart callback. + elm,action,click,double: Used for "clicked,double" smart callback. + elm,action,press: Used for "press" smart callback. + elm,action,unpress: Used for "unpress" smart callback. +*/ + +group { "efl/panes/vertical"; + inherit: "elm/panes/vertical/default"; +} + +group { "efl/panes/horizontal"; + inherit: "elm/panes/horizontal/default"; +} + +group { "efl/panes/vertical:flush"; + inherit: "elm/panes/vertical/flush"; +} + +group { "efl/panes/horizontal:flush"; + inherit: "elm/panes/horizontal/flush"; +} + +group { "efl/panes/vertical:left-fold"; + inherit: "elm/panes/vertical/left-fold"; +} + +group { "efl/panes/vertical:right-fold"; + inherit: "elm/panes/vertical/right-fold"; +} + +group { "efl/panes/horizontal:up-fold"; + inherit: "elm/panes/horizontal/up-fold"; +} + +group { "efl/panes/horizontal:down-fold"; + inherit: "elm/panes/horizontal/down-fold"; +} diff --git a/data/elementary/themes/edc/efl/photocam.edc b/data/elementary/themes/edc/efl/photocam.edc new file mode 100644 index 0000000..ccc226e --- /dev/null +++ b/data/elementary/themes/edc/efl/photocam.edc @@ -0,0 +1,3 @@ +group { "efl/photocam"; + inherit: "elm/photocam/base/default"; +} diff --git a/data/elementary/themes/edc/efl/progress.edc b/data/elementary/themes/edc/efl/progress.edc new file mode 100644 index 0000000..2cb11b2 --- /dev/null +++ b/data/elementary/themes/edc/efl/progress.edc @@ -0,0 +1,20 @@ +group { "efl/progressbar/horizontal"; + inherit: "elm/progressbar/horizontal/default"; +} + +group { "efl/progressbar/vertical"; + inherit: "elm/progressbar/vertical/default"; +} + +group { "efl/progressbar/horizontal:wheel"; + inherit: "elm/progressbar/horizontal/wheel"; + alias: "efl/progressbar/vertical:wheel"; +} + +group { "efl/progressbar/horizontal:double"; + inherit: "elm/progressbar/horizontal/double"; +} + +group { "efl/progressbar/vertical:double"; + inherit: "elm/progressbar/vertical/double"; +} diff --git a/data/elementary/themes/edc/efl/radio.edc b/data/elementary/themes/edc/efl/radio.edc new file mode 100644 index 0000000..5c6dc64 --- /dev/null +++ b/data/elementary/themes/edc/efl/radio.edc @@ -0,0 +1,3 @@ +group { "efl/radio"; + inherit: "elm/radio/base/default"; +} diff --git a/data/elementary/themes/edc/efl/scroller.edc b/data/elementary/themes/edc/efl/scroller.edc new file mode 100644 index 0000000..e0d8148 --- /dev/null +++ b/data/elementary/themes/edc/efl/scroller.edc @@ -0,0 +1,12 @@ +group { "efl/scroller"; + inherit: "elm/scroller/base/default"; +} + +group { "efl/scroller:noclip"; + inherit: "elm/scroller/base/noclip"; +} + +group { "efl/scroller/contents"; + inherit: "elm/scroller/contents/default"; +} + diff --git a/data/elementary/themes/edc/efl/slider.edc b/data/elementary/themes/edc/efl/slider.edc new file mode 100644 index 0000000..20b479b --- /dev/null +++ b/data/elementary/themes/edc/efl/slider.edc @@ -0,0 +1,73 @@ +group { "efl/slider/hidden/limit"; + inherit: "elm/slider/hidden/limit"; +} + +group { "efl/slider/horizontal/indicator"; + inherit: "elm/slider/horizontal/indicator/default"; + alias: "efl/slider/horizontal/indicator:disabled"; + alias: "efl/slider/horizontal/popup"; + alias: "efl/slider_interval/horizontal/indicator"; + alias: "efl/slider_interval/horizontal/popup"; +} + +group { "efl/slider/vertical/indicator"; + inherit: "elm/slider/vertical/indicator/default"; + alias: "efl/slider/vertical/indicator:disabled"; + alias: "efl/slider/vertical/popup"; + alias: "efl/slider_interval/vertical/indicator"; + alias: "efl/slider_interval/vertical/popup"; +} + +group { "efl/slider/horizontal"; + inherit: "elm/slider/horizontal/default"; + alias: "efl/slider/horizontal:disabled"; + parts { + part { "limits"; + source: "efl/slider/hidden/limit"; + } + part { "button"; + source: "efl/slider/horizontal/indicator"; + } + } +} + +group { "efl/slider/vertical"; + inherit: "elm/slider/vertical/default"; + alias: "efl/slider/vertical:disabled"; + parts { + part { "limits"; + source: "efl/slider/hidden/limit"; + } + part { "button"; + source: "efl/slider/vertical/indicator"; + } + } +} + +//Range + +group { "efl/slider_interval/horizontal"; + inherit: "elm/slider/range/horizontal/default"; + alias: "efl/slider/horizontal:disabled"; + parts { + part { "limits"; + source: "efl/slider/hidden/limit"; + } + part { "button"; + source: "efl/slider_interval/horizontal/indicator"; + } + } +} + +group { "efl/slider_interval/vertical"; + inherit: "elm/slider/range/vertical/default"; + alias: "efl/slider/vertical:disabled"; + parts { + part { "limits"; + source: "efl/slider/hidden/limit"; + } + part { "button"; + source: "efl/slider_interval/vertical/indicator"; + } + } +} diff --git a/data/elementary/themes/edc/efl/text.edc b/data/elementary/themes/edc/efl/text.edc new file mode 100644 index 0000000..5ee4227 --- /dev/null +++ b/data/elementary/themes/edc/efl/text.edc @@ -0,0 +1,328 @@ +group { "efl/text/scroller"; + inherit: "elm/scroller/entry/default"; +} + +group { "efl/text/single/scroller"; + inherit: "elm/scroller/entry_single/default"; +} + +group { "efl/text/cursor"; + inherit: "elm/entry/cursor/default"; + alias: "efl/text/single/cursor"; + alias: "efl/text/charwrap/cursor"; + alias: "efl/text/mixedwrap/cursor"; + alias: "efl/text/nowrap/cursor"; + alias: "efl/text/noedit/cursor"; + alias: "efl/text/single-noedit/cursor"; + alias: "efl/text/noedit-charwrap/cursor"; + alias: "efl/text/noedit-mixedwrap/cursor"; + alias: "efl/text/nowrap-noedit/cursor"; +} + +group { "efl/text/selection"; + inherit: "elm/entry/selection/default"; + alias: "efl/text/single/selection"; + alias: "efl/text/charwrap/selection"; + alias: "efl/text/mixedwrap/selection"; + alias: "efl/text/nowrap/selection"; + alias: "efl/text/noedit/selection"; + alias: "efl/text/single-noedit/selection"; + alias: "efl/text/noedit-charwrap/selection"; + alias: "efl/text/noedit-mixedwrap/selection"; + alias: "efl/text/nowrap-noedit/selection"; +} + +group { "efl/text/anchor"; + inherit: "elm/entry/anchor/default"; + alias: "efl/text/single/anchor"; + alias: "efl/text/charwrap/anchor"; + alias: "efl/text/mixedwrap/anchor"; + alias: "efl/text/nowrap/anchor"; + alias: "efl/text/noedit/anchor"; + alias: "efl/text/single-noedit/anchor"; + alias: "efl/text/noedit-charwrap/anchor"; + alias: "efl/text/noedit-mixedwrap/anchor"; + alias: "efl/text/nowrap-noedit/anchor"; +} + +group { "efl/text"; + inherit: "elm/entry/base/default"; + alias: "efl/text/mixedwrap"; + alias: "efl/text/charwrap"; + alias: "efl/text/nowrap"; + alias: "efl/text/single"; + alias: "efl/text/single-noedit"; + alias: "efl/text/noedit"; + alias: "efl/text/noedit-mixedwrap"; + alias: "efl/text/noedit-charwrap"; + alias: "efl/text/nowrap-noedit"; + alias: "efl/text/password"; + sounds { + sample { name: "key-tap1" LOSSY 64; + source: "kbd-tap.wav"; + } + sample { name: "key-tap2" LOSSY 64; + source: "kbd-tap2.wav"; + } + sample { name: "key-tap3" LOSSY 64; + source: "kbd-tap3.wav"; + } + sample { name: "key-tap4" LOSSY 64; + source: "kbd-tap4.wav"; + } + sample { name: "key-tap5" LOSSY 64; + source: "kbd-tap5.wav"; + } + } + +// data.item: "context_menu_orientation" "horizontal"; + parts { + part { name: "elm.swallow.background"; type: SWALLOW; + description { state: "default" 0.0; + rel1.offset: 1 1; + rel2.offset: -2 -2; + } + } + part { name: "elm.text"; type: SWALLOW; + scale: 1; + entry_mode: EDITABLE; + select_mode: DEFAULT; +// select_mode: EXPLICIT; + cursor_mode: BEFORE; + multiline: 1; + source: "efl/text/selection"; // selection under +// source2: "X"; // selection over +// source3: "X"; // cursor under + source4: "efl/text/cursor"; // cursorover +// source5: "efl/text/anchor"; // anchor under + source6: "efl/text/anchor"; // anchor over + description { state: "default" 0.0; + /* we gotta use 0 0 here, because of scrolled entries */ + fixed: 0 0; + rel1.offset: 2 2; + rel2.offset: -3 -3; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + } + } + } + programs { + program { + signal: "load"; source: ""; + action: FOCUS_SET; + target: "elm.text"; + } + program { + signal: "elm,state,disabled"; source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "elm.text"; + } + program { + signal: "elm,state,enabled"; source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.text"; + } + #if 0 + program { + signal: "elm,guide,disabled"; source: "elm"; + action: STATE_SET "hidden" 0.0; + target: "elm.guide"; + } + program { + signal: "elm,guide,enabled"; source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.guide"; + } + #endif + program { name: "key-down"; + signal: "entry,keydown"; source: "elm.text"; + script { + new buf[32]; + snprintf(buf, 31, "key-down%i", (rand() % 5) + 1); + run_program(get_program_id(buf)); + } + } + program { name: "key-down1"; + action: PLAY_SAMPLE "key-tap1" 1.0 INPUT; + } + program { name: "key-down2"; + action: PLAY_SAMPLE "key-tap2" 1.0 INPUT; + } + program { name: "key-down3"; + action: PLAY_SAMPLE "key-tap3" 1.0 INPUT; + } + program { name: "key-down4"; + action: PLAY_SAMPLE "key-tap4" 1.0 INPUT; + } + program { name: "key-down5"; + action: PLAY_SAMPLE "key-tap5" 1.0 INPUT; + } + } +} + +group { "efl/text/magnifier"; + inherit: "elm/entry/magnifier/default"; + alias: "efl/text/single/magnifier"; + alias: "efl/text/charwrap/magnifier"; + alias: "efl/text/mixedwrap/magnifier"; + alias: "efl/text/nowrap/magnifier"; + alias: "efl/text/noedit/magnifier"; + alias: "efl/text/single-noedit/magnifier"; + alias: "efl/text/noedit-charwrap/magnifier"; + alias: "efl/text/noedit-mixedwrap/magnifier"; + alias: "efl/text/nowrap-noedit/magnifier"; +} + +group { "efl/text/handler/start"; + inherit: "elm/entry/handler/start/default"; + alias: "efl/text/single/handler/start"; + alias: "efl/text/charwrap/handler/start"; + alias: "efl/text/mixedwrap/handler/start"; + alias: "efl/text/nowrap/handler/start"; + alias: "efl/text/noedit/handler/start"; + alias: "efl/text/single-noedit/handler/start"; + alias: "efl/text/noedit-charwrap/handler/start"; + alias: "efl/text/noedit-mixedwrap/handler/start"; + alias: "efl/text/nowrap-noedit/handler/start"; +} + +group { "efl/text/handler/end"; + inherit: "elm/entry/handler/end/default"; + alias: "efl/text/single/handler/end"; + alias: "efl/text/charwrap/handler/end"; + alias: "efl/text/mixedwrap/handler/end"; + alias: "efl/text/nowrap/handler/end"; + alias: "efl/text/noedit/handler/end"; + alias: "efl/text/single-noedit/handler/end"; + alias: "efl/text/noedit-charwrap/handler/end"; + alias: "efl/text/noedit-mixedwrap/handler/end"; + alias: "efl/text/nowrap-noedit/handler/end"; +} + +/////////////////////////////////////////////////////////////////////////////// +// emoticon images from: +// Tanya - Latvia +// http://lazycrazy.deviantart.com/ +// http://lazycrazy.deviantart.com/art/Very-Emotional-Emoticons-144461621 +group { "efl/text/emoticon/angry"; images.image: + "emo-angry.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-angry.png"; } } } } +group { "efl/text/emoticon/angry-shout"; images.image: + "emo-angry-shout.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-angry-shout.png"; } } } } +group { "efl/text/emoticon/crazy-laugh"; images.image: + "emo-crazy-laugh.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-crazy-laugh.png"; } } } } +group { "efl/text/emoticon/evil-laugh"; images.image: + "emo-evil-laugh.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-evil-laugh.png"; } } } } +group { "efl/text/emoticon/evil"; images.image: + "emo-evil.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-evil.png"; } } } } +group { "efl/text/emoticon/goggle-smile"; images.image: + "emo-goggle-smile.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-goggle-smile.png"; } } } } +group { "efl/text/emoticon/grumpy"; images.image: + "emo-grumpy.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-grumpy.png"; } } } } +group { "efl/text/emoticon/grumpy-smile"; images.image: + "emo-grumpy-smile.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-grumpy-smile.png"; } } } } +group { "efl/text/emoticon/guilty"; images.image: + "emo-guilty.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-guilty.png"; } } } } +group { "efl/text/emoticon/guilty-smile"; images.image: + "emo-guilty-smile.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-guilty-smile.png"; } } } } +group { "efl/text/emoticon/haha"; images.image: + "emo-haha.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-haha.png"; } } } } +group { "efl/text/emoticon/half-smile"; images.image: + "emo-half-smile.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-half-smile.png"; } } } } +group { "efl/text/emoticon/happy-panting"; images.image: + "emo-happy-panting.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-happy-panting.png"; } } } } +group { "efl/text/emoticon/happy"; images.image: + "emo-happy.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-happy.png"; } } } } +group { "efl/text/emoticon/indifferent"; images.image: + "emo-indifferent.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-indifferent.png"; } } } } +group { "efl/text/emoticon/kiss"; images.image: + "emo-kiss.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-kiss.png"; } } } } +group { "efl/text/emoticon/knowing-grin"; images.image: + "emo-knowing-grin.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-knowing-grin.png"; } } } } +group { "efl/text/emoticon/laugh"; images.image: + "emo-laugh.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-laugh.png"; } } } } +group { "efl/text/emoticon/little-bit-sorry"; images.image: + "emo-little-bit-sorry.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-little-bit-sorry.png"; } } } } +group { "efl/text/emoticon/love-lots"; images.image: + "emo-love-lots.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-love-lots.png"; } } } } +group { "efl/text/emoticon/love"; images.image: + "emo-love.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-love.png"; } } } } +group { "efl/text/emoticon/minimal-smile"; images.image: + "emo-minimal-smile.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-minimal-smile.png"; } } } } +group { "efl/text/emoticon/not-happy"; images.image: + "emo-not-happy.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-not-happy.png"; } } } } +group { "efl/text/emoticon/not-impressed"; images.image: + "emo-not-impressed.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-not-impressed.png"; } } } } +group { "efl/text/emoticon/omg"; images.image: + "emo-omg.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-omg.png"; } } } } +group { "efl/text/emoticon/opensmile"; images.image: + "emo-opensmile.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-opensmile.png"; } } } } +group { "efl/text/emoticon/smile"; images.image: + "emo-smile.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-smile.png"; } } } } +group { "efl/text/emoticon/sorry"; images.image: + "emo-sorry.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-sorry.png"; } } } } +group { "efl/text/emoticon/squint-laugh"; images.image: + "emo-squint-laugh.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-squint-laugh.png"; } } } } +group { "efl/text/emoticon/surprised"; images.image: + "emo-surprised.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-surprised.png"; } } } } +group { "efl/text/emoticon/suspicious"; images.image: + "emo-suspicious.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-suspicious.png"; } } } } +group { "efl/text/emoticon/tongue-dangling"; images.image: + "emo-tongue-dangling.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-tongue-dangling.png"; } } } } +group { "efl/text/emoticon/tongue-poke"; images.image: + "emo-tongue-poke.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-tongue-poke.png"; } } } } +group { "efl/text/emoticon/uh"; images.image: + "emo-uh.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-uh.png"; } } } } +group { "efl/text/emoticon/unhappy"; images.image: + "emo-unhappy.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-unhappy.png"; } } } } +group { "efl/text/emoticon/very-sorry"; images.image: + "emo-very-sorry.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-very-sorry.png"; } } } } +group { "efl/text/emoticon/what"; images.image: + "emo-what.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-what.png"; } } } } +group { "efl/text/emoticon/wink"; images.image: + "emo-wink.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-wink.png"; } } } } +group { "efl/text/emoticon/worried"; images.image: + "emo-worried.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-worried.png"; } } } } +group { "efl/text/emoticon/wtf"; images.image: + "emo-wtf.png" COMP; parts { part { "icon"; nomouse; desc { "default"; max: 64 64; image.normal: + "emo-wtf.png"; } } } } +//------------------------------------------------------------ diff --git a/data/elementary/themes/edc/efl/textpath.edc b/data/elementary/themes/edc/efl/textpath.edc new file mode 100644 index 0000000..ed4924f --- /dev/null +++ b/data/elementary/themes/edc/efl/textpath.edc @@ -0,0 +1,3 @@ +group { "efl/textpath"; + inherit: "elm/textpath/base/default"; +} diff --git a/data/elementary/themes/edc/efl/tooltip.edc b/data/elementary/themes/edc/efl/tooltip.edc new file mode 100644 index 0000000..204b2b4 --- /dev/null +++ b/data/elementary/themes/edc/efl/tooltip.edc @@ -0,0 +1,15 @@ +group { "efl/label/tooltip"; + inherit: "elm/label/base/tooltip/default"; + alias: "efl/label/base/tooltip"; //XXX: Remove it in EFL 2.0 + alias: "efl/label/base/tooltip/transparent"; +} + +group { "efl/tooltip"; + inherit: "elm/tooltip/base/default"; +} + +group { "efl/tooltip:transparent"; + inherit: "elm/tooltip/base/transparent"; +} + +/////////////////////////////////////////////////////////////////////////////// diff --git a/data/elementary/themes/edc/efl/uiclock.edc b/data/elementary/themes/edc/efl/uiclock.edc new file mode 100644 index 0000000..e0b0586 --- /dev/null +++ b/data/elementary/themes/edc/efl/uiclock.edc @@ -0,0 +1,223 @@ +#define DATETIME_FIELD(_pos) \ + part { \ + name: "field"#_pos; type: SWALLOW; \ + scale: 1; \ + clip_to: "clip"; \ + description { state: "default" 0.0; \ + visible: 0; \ + min: 0 0; \ + align: 0.0 0.5; \ + fixed: 1 1; \ + rel1.relative: 1.0 0.0; \ + rel1.to: "separator"#_pos; \ + rel2.relative: 1.0 1.0; \ + rel2.to: "separator"#_pos; \ + } \ + description { state: "enable" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + min: 8 10; \ + } \ + } \ + programs{ \ + program { name: "field_"#_pos"enabled"; \ + signal: "field"#_pos",enable"; source: "elm"; \ + action: STATE_SET "enable" 0.0; \ + target: "field"#_pos; \ + } \ + program { name: "field_"#_pos"disabled"; \ + signal: "field"#_pos",disable"; source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "field"#_pos; \ + } \ + } +#define DATETIME_SEPARATOR(_pos, _after) \ + part { \ + name: "separator"#_pos; type: TEXT; \ + scale: 1; \ + effect: SHADOW BOTTOM; \ + clip_to: "disclip"; \ + description { state: "default" 0.0; \ + visible: 0; \ + min: 0 0; \ + align: 0.0 0.5; \ + fixed: 1 0; \ + rel1 { \ + relative: 1.0 0.0; \ + to: "field"#_after; \ + } \ + rel2 { \ + relative: 1.0 1.0; \ + to: "field"#_after; \ + } \ + color_class: "datetime_separator_text"; \ + text { \ + font: "Sans"; size: 10; \ + min: 1 0; \ + ellipsis: -1; \ + align: 0.5 0.5; \ + text_class: "datetime_separator_text"; \ + } \ + } \ + description { state: "enable" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + min: 8 10; \ + } \ + } \ + part { \ + name: "separator"#_pos"d"; type: TEXT; \ + scale: 1; \ + effect: SHADOW BOTTOM; \ + clip_to: "disclip2"; \ + description { state: "default" 0.0; \ + visible: 0; \ + rel1.to: "separator"#_pos; \ + rel2.to: "separator"#_pos; \ + color_class: "datetime_separator_text_disabled"; \ + text { \ + text_source: "separator"#_pos; \ + font: "Sans"; size: 10; \ + text_class: "datetime_separator_text_disabled"; \ + } \ + } \ + description { state: "enable" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + programs { \ + program { \ + signal: "field"#_after",enable"; source: "elm"; \ + action: STATE_SET "enable" 0.0; \ + target: "separator"#_pos; \ + target: "separator"#_pos"d"; \ + } \ + program { \ + signal: "field"#_after",disable"; source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "separator"#_pos; \ + target: "separator"#_pos"d"; \ + } \ + } + +group { "efl/uiclock"; + parts { + part { name: "bg"; type: RECT; + description { state: "default" 0.0; + color_class: "datetime_bg"; + } + } + part { name: "clip"; type: RECT; + description { state: "default" 0.0; + rel1.to: "separator0"; + rel2.to: "separator7"; + } + } + part { name: "disclip"; type: RECT; + clip_to: "clip"; + description { state: "default" 0.0; + rel1.to: "separator0"; + rel2.to: "separator7"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "disclip2"; type: RECT; + clip_to: "clip"; + description { state: "default" 0.0; + rel1.to: "separator0"; + rel2.to: "separator7"; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "separator0"; type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 8 10; + align: 0.0 0.5; + fixed: 1 0; + rel2.relative: 0.0 1.0; + } + } + DATETIME_FIELD(0) + DATETIME_SEPARATOR(1,0) + DATETIME_FIELD(1) + DATETIME_SEPARATOR(2,1) + DATETIME_FIELD(2) + DATETIME_SEPARATOR(3,2) + DATETIME_FIELD(3) + DATETIME_SEPARATOR(4,3) + DATETIME_FIELD(4) + DATETIME_SEPARATOR(5,4) + DATETIME_FIELD(5) + DATETIME_SEPARATOR(6,5) + DATETIME_FIELD(6) + DATETIME_SEPARATOR(7,6) + DATETIME_FIELD(7) + DATETIME_SEPARATOR(8,7) + part { name: "separator9"; type: SPACER; + description { state: "default" 0.0; + rel1.to: "separator7"; + rel1.relative: 1.0 0.0; + min: 8 10; + } + } + part { name: "discover"; type: RECT; + description { state: "default" 0.0; + rel1.to: "separator0"; + rel2.to: "separator7"; + visible: 0; + color: 0 0 0 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "elm.access"; type: RECT; repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } + programs { + program { + signal: "elm,state,disabled"; source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + target: "disclip2"; + target: "discover"; + } + program { + signal: "elm,state,enabled"; source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + target: "disclip2"; + target: "discover"; + } + } +} +#undef DATETIME_SEPARATOR +#undef DATETIME_FIELD + +// AM_PM_BUTTON +group { "efl/uiclock/ampm" + inherit: "efl/button"; +} + +//ENTRY +group { "efl/uiclock/text" + inherit: "efl/text"; + alias: "efl/uiclock/text/single"; + alias: "efl/uiclock/text/single-noedit"; +} +group { "efl/uiclock/text/selection" + inherit: "efl/text/selection"; +} diff --git a/data/elementary/themes/edc/efl/video.edc b/data/elementary/themes/edc/efl/video.edc new file mode 100644 index 0000000..3a2a658 --- /dev/null +++ b/data/elementary/themes/edc/efl/video.edc @@ -0,0 +1,3 @@ +group { "efl/video"; + inherit: "elm/video/base/default"; +} diff --git a/data/elementary/themes/edc/efl/win.edc b/data/elementary/themes/edc/efl/win.edc new file mode 100644 index 0000000..d0b6611 --- /dev/null +++ b/data/elementary/themes/edc/efl/win.edc @@ -0,0 +1,3 @@ +group { "efl/win"; + inherit: "elm/win/base/default"; +} diff --git a/src/lib/elementary/efl_ui_panes.c b/src/lib/elementary/efl_ui_panes.c index 1d70fd2..893ee1d 100644 --- a/src/lib/elementary/efl_ui_panes.c +++ b/src/lib/elementary/efl_ui_panes.c @@ -53,18 +53,78 @@ static const Elm_Layout_Part_Alias_Description _content_aliases[] = static void _set_min_size_new(void *data); +//TODO: efl_ui_slider also use this. +static const char * +_theme_group_modify_pos_get(const char *cur_group, const char *search, size_t len, Eina_Bool is_legacy) +{ + const char *pos = NULL; + const char *temp_str = NULL; + + if (is_legacy) + return cur_group; + + temp_str = cur_group + len - strlen(search); + if (temp_str >= cur_group) + { + if (!strcmp(temp_str, search)) + pos = temp_str; + } + + return pos; +} + +static char * +_efl_ui_panes_theme_group_get(Evas_Object *obj, Efl_Ui_Panes_Data *sd) +{ + const char *pos = NULL; + const char *cur_group = elm_widget_theme_element_get(obj); + Eina_Strbuf *new_group = eina_strbuf_new(); + Eina_Bool is_legacy = elm_widget_is_legacy(obj); + size_t len = 0; + + if (cur_group) + { + len = strlen(cur_group); + pos = _theme_group_modify_pos_get(cur_group, "horizontal", len, is_legacy); + if (!pos) + pos = _theme_group_modify_pos_get(cur_group, "vertical", len, is_legacy); + + // TODO: change separator when it is decided. + // can skip when prev_group == cur_group + if (!pos) + { + eina_strbuf_append(new_group, cur_group); + eina_strbuf_append(new_group, "/"); + } + else + { + eina_strbuf_append_length(new_group, cur_group, pos - cur_group); + } + } + + if (sd->dir == EFL_UI_DIR_HORIZONTAL) + eina_strbuf_append(new_group, "horizontal"); + else + eina_strbuf_append(new_group, "vertical"); + + return eina_strbuf_release(new_group); +} + EOLIAN static Efl_Ui_Theme_Apply _efl_ui_panes_elm_widget_theme_apply(Eo *obj, Efl_Ui_Panes_Data *sd) { double size; Evas_Coord minw = 0, minh = 0; + char *group; Efl_Ui_Theme_Apply int_ret = EFL_UI_THEME_APPLY_FAILED; - if (sd->dir == EFL_UI_DIR_HORIZONTAL) - elm_widget_theme_element_set(obj, "horizontal"); - else - elm_widget_theme_element_set(obj, "vertical"); + group = _efl_ui_panes_theme_group_get(obj, sd); + if (group) + { + elm_widget_theme_element_set(obj, group); + free(group); + } evas_object_hide(sd->event); elm_coords_finger_size_adjust(1, &minw, 1, &minh); diff --git a/src/lib/elementary/efl_ui_slider.c b/src/lib/elementary/efl_ui_slider.c index e445385..9ec6cb2 100644 --- a/src/lib/elementary/efl_ui_slider.c +++ b/src/lib/elementary/efl_ui_slider.c @@ -663,9 +663,9 @@ _popup_add(Efl_Ui_Slider_Data *sd, Eo *obj, Evas_Object **popup, *popup = edje_object_add(evas_object_evas_get(obj)); evas_object_smart_member_add(*popup, obj); if (_is_horizontal(sd->dir)) - _elm_theme_set(elm_widget_theme_get(obj), *popup, "slider", "horizontal/popup", elm_widget_style_get(obj)); + efl_ui_widget_theme_object_set(obj, *popup, "slider", "horizontal/popup", elm_widget_style_get(obj)); else - _elm_theme_set(elm_widget_theme_get(obj), *popup, "slider", "vertical/popup", elm_widget_style_get(obj)); + efl_ui_widget_theme_object_set(obj, *popup, "slider", "vertical/popup", elm_widget_style_get(obj)); edje_object_scale_set(*popup, efl_gfx_scale_get(obj) * elm_config_scale_get()); edje_object_signal_callback_add(*popup, "popup,hide,done", "elm", // XXX: for compat @@ -708,11 +708,11 @@ _efl_ui_slider_elm_widget_theme_apply(Eo *obj, Efl_Ui_Slider_Data *sd) else elm_widget_theme_element_set(obj, "range/horizontal"); if (sd->popup) - _elm_theme_set(elm_widget_theme_get(obj), sd->popup, + efl_ui_widget_theme_object_set(obj, sd->popup, "slider", "horizontal/popup", elm_widget_style_get(obj)); if (sd->popup2) - _elm_theme_set(elm_widget_theme_get(obj), sd->popup2, + efl_ui_widget_theme_object_set(obj, sd->popup2, "slider", "horizontal/popup", elm_widget_style_get(obj)); } @@ -724,11 +724,11 @@ _efl_ui_slider_elm_widget_theme_apply(Eo *obj, Efl_Ui_Slider_Data *sd) elm_widget_theme_element_set(obj, "range/vertical"); if (sd->popup) - _elm_theme_set(elm_widget_theme_get(obj), sd->popup, + efl_ui_widget_theme_object_set(obj, sd->popup, "slider", "vertical/popup", elm_widget_style_get(obj)); if (sd->popup2) - _elm_theme_set(elm_widget_theme_get(obj), sd->popup2, + efl_ui_widget_theme_object_set(obj, sd->popup2, "slider", "vertical/popup", elm_widget_style_get(obj)); } diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c index 7586812..44f546d 100644 --- a/src/lib/elementary/efl_ui_text.c +++ b/src/lib/elementary/efl_ui_text.c @@ -658,56 +658,43 @@ _efl_ui_text_theme_group_get(Evas_Object *obj) { EFL_UI_TEXT_DATA_GET(obj, sd); + if (sd->password) return "password"; if (sd->editable) { - if (sd->password) return "base-password"; - else + if (sd->single_line) return "single"; + switch (sd->line_wrap) { - if (sd->single_line) return "base-single"; - else - { - switch (sd->line_wrap) - { - case ELM_WRAP_CHAR: - return "base-charwrap"; + case ELM_WRAP_CHAR: + return "charwrap"; - case ELM_WRAP_WORD: - return "base"; + case ELM_WRAP_WORD: + return "base"; - case ELM_WRAP_MIXED: - return "base-mixedwrap"; + case ELM_WRAP_MIXED: + return "mixedwrap"; - case ELM_WRAP_NONE: - default: - return "base-nowrap"; - } - } + case ELM_WRAP_NONE: + default: + return "nowrap"; } } else { - if (sd->password) return "base-password"; - else + if (sd->single_line) return "single-noedit"; + switch (sd->line_wrap) { - if (sd->single_line) return "base-single-noedit"; - else - { - switch (sd->line_wrap) - { - case ELM_WRAP_CHAR: - return "base-noedit-charwrap"; + case ELM_WRAP_CHAR: + return "noedit-charwrap"; - case ELM_WRAP_WORD: - return "base-noedit"; + case ELM_WRAP_WORD: + return "noedit"; - case ELM_WRAP_MIXED: - return "base-noedit-mixedwrap"; + case ELM_WRAP_MIXED: + return "noedit-mixedwrap"; - case ELM_WRAP_NONE: - default: - return "base-nowrap-noedit"; - } - } + case ELM_WRAP_NONE: + default: + return "nowrap-noedit"; } } } @@ -931,7 +918,7 @@ _efl_ui_text_elm_widget_theme_apply(Eo *obj, Efl_Ui_Text_Data *sd) _mirrored_set(obj, efl_ui_mirrored_get(obj)); elm_widget_theme_object_set - (obj, sd->entry_edje, "efl_ui_text", _efl_ui_text_theme_group_get(obj), style); + (obj, sd->entry_edje, "text", _efl_ui_text_theme_group_get(obj), style); if (elm_widget_disabled_get(obj)) edje_object_signal_emit(sd->entry_edje, "elm,state,disabled", "elm"); @@ -1007,9 +994,9 @@ _efl_ui_text_elm_widget_theme_apply(Eo *obj, Efl_Ui_Text_Data *sd) if (sd->start_handler) { elm_widget_theme_object_set(obj, sd->start_handler, - "entry", "handler/start", style); + "text", "handler/start", style); elm_widget_theme_object_set(obj, sd->end_handler, - "entry", "handler/end", style); + "text", "handler/end", style); } sd->changed = EINA_TRUE; @@ -1753,7 +1740,7 @@ _magnifier_create(void *data) //Bg sd->mgf_bg = edje_object_add(e); - _elm_theme_object_set(data, sd->mgf_bg, "entry", "magnifier", "default"); + elm_widget_theme_object_set(data, sd->mgf_bg, "text", "magnifier", "default"); evas_object_show(sd->mgf_bg); //Proxy @@ -2582,16 +2569,16 @@ _item_get(void *data, const char *item) evas_object_del(o); o = edje_object_add(evas_object_evas_get(data)); elm_widget_theme_object_set - (data, o, "entry/emoticon", "wtf", style); + (data, o, "text/emoticon", "wtf", style); } return o; } o = edje_object_add(evas_object_evas_get(data)); if (!elm_widget_theme_object_set - (data, o, "entry", item, style)) + (data, o, "text", item, style)) elm_widget_theme_object_set - (data, o, "entry/emoticon", "wtf", style); + (data, o, "text/emoticon", "wtf", style); return o; } @@ -3027,7 +3014,7 @@ _efl_ui_text_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Text_Data *priv) _dnd_pos_cb, NULL, _dnd_drop_cb, NULL); - if (!elm_layout_theme_set(obj, "efl_ui_text", "base", elm_widget_style_get(obj))) + if (!elm_layout_theme_set(obj, "text", "base", elm_widget_style_get(obj))) CRI("Failed to set layout!"); edje_object_part_swallow(priv->entry_edje, "elm.text", text_obj); @@ -3189,7 +3176,7 @@ _create_selection_handlers(Evas_Object *obj, Efl_Ui_Text_Data *sd, { Evas_Object *handle; - handle = _decoration_create(sd, file, "elm/entry/handler/start", EINA_TRUE); + handle = _decoration_create(sd, file, "text/handler/start", EINA_TRUE); evas_object_pass_events_set(handle, EINA_FALSE); sd->start_handler = handle; evas_object_event_callback_add(handle, EVAS_CALLBACK_MOUSE_DOWN, @@ -3200,7 +3187,7 @@ _create_selection_handlers(Evas_Object *obj, Efl_Ui_Text_Data *sd, _start_handler_mouse_up_cb, obj); evas_object_show(handle); - handle = _decoration_create(sd, file, "elm/entry/handler/end", EINA_TRUE); + handle = _decoration_create(sd, file, "text/handler/end", EINA_TRUE); evas_object_pass_events_set(handle, EINA_FALSE); sd->end_handler = handle; evas_object_event_callback_add(handle, EVAS_CALLBACK_MOUSE_DOWN, diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index 5472d81..457d65d 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -1170,7 +1170,7 @@ _elm_win_focus_highlight_reconfigure_job(void *data) else str = "default"; - elm_widget_theme_object_set + efl_ui_widget_theme_object_set (sd->obj, fobj, "focus_highlight", "top", str); sd->focus_highlight.theme_changed = EINA_FALSE; @@ -3153,15 +3153,15 @@ _elm_win_wl_cursor_set(Evas_Object *obj, const char *cursor) if (cursor) { - if (!_elm_theme_object_set(sd->obj, sd->pointer.obj, + if (!efl_ui_widget_theme_object_set(sd->obj, sd->pointer.obj, "cursor", cursor, "default")) { - _elm_theme_object_set(sd->obj, sd->pointer.obj, + efl_ui_widget_theme_object_set(sd->obj, sd->pointer.obj, "pointer", "base", "default"); } } else - _elm_theme_object_set(sd->obj, sd->pointer.obj, + efl_ui_widget_theme_object_set(sd->obj, sd->pointer.obj, "pointer", "base", "default"); edje_object_size_min_get(sd->pointer.obj, &mw, &mh); @@ -3976,7 +3976,7 @@ _elm_win_frame_cb_resize_show(void *data, { Efl_Ui_Win_Move_Resize_Mode mode = _move_resize_mode_get(source); const resize_info *ri = _resize_info_get(sd->rot, mode); - if (ri) _elm_theme_object_set(sd->obj, sd->pointer.obj, "pointer", "base", ri->cursor); + if (ri) efl_ui_widget_theme_object_set(sd->obj, sd->pointer.obj, "pointer", "base", ri->cursor); } #else (void)source; @@ -3996,7 +3996,7 @@ _elm_win_frame_cb_resize_hide(void *data, #ifdef HAVE_ELEMENTARY_WL2 if (sd->pointer.obj) - _elm_theme_object_set(sd->obj, sd->pointer.obj, + efl_ui_widget_theme_object_set(sd->obj, sd->pointer.obj, "pointer", "base", "default"); #endif } @@ -4288,7 +4288,7 @@ _elm_win_frame_add(Efl_Ui_Win_Data *sd, const char *element, const char *style) v = version ? atoi(version) : 0; if (EINA_LIKELY(v >= FRAME_OBJ_THEME_MIN_VERSION)) { - if (!elm_widget_theme_object_set + if (!efl_ui_widget_theme_object_set (sd->obj, sd->frame_obj, "border", element, style)) { ERR("Failed to set main border theme for the window."); @@ -5240,7 +5240,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Efl_U Evas_Coord mw = 1, mh = 1, hx = 0, hy = 0; sd->pointer.obj = o = edje_object_add(ecore_evas_get(tmp_sd.ee)); - _elm_theme_object_set(obj, o, "pointer", "base", "default"); + efl_ui_widget_theme_object_set(obj, o, "pointer", "base", "default"); edje_object_size_min_calc(o, &mw, &mh); evas_object_resize(o, mw, mh); edje_object_part_geometry_get(o, "elm.swallow.hotspot", @@ -6517,8 +6517,8 @@ _elm_win_theme_internal(Eo *obj, Efl_Ui_Win_Data *sd) Eina_Bool ret = EINA_FALSE, prev_alpha; const char *s; - int_ret = _elm_theme_object_set(obj, sd->legacy.edje, "win", "base", - elm_widget_style_get(obj)); + int_ret = efl_ui_widget_theme_object_set(obj, sd->legacy.edje, "win", "base", + elm_widget_style_get(obj)); if (!int_ret) return EFL_UI_THEME_APPLY_FAILED; edje_object_mirrored_set(sd->legacy.edje, efl_ui_mirrored_get(obj)); diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h index 8029384..135b06b 100644 --- a/src/lib/elementary/elm_priv.h +++ b/src/lib/elementary/elm_priv.h @@ -540,7 +540,8 @@ Efl_Ui_Theme_Apply _elm_theme_set(Elm_Theme *th, Evas_Object *o, const char *clas, const char *group, - const char *style); + const char *style, + Eina_Bool is_legacy); Eina_Bool _elm_theme_icon_set(Elm_Theme *th, Evas_Object *o, const char *group, diff --git a/src/lib/elementary/elm_spinner.c b/src/lib/elementary/elm_spinner.c index 5c25079..3e809ef 100644 --- a/src/lib/elementary/elm_spinner.c +++ b/src/lib/elementary/elm_spinner.c @@ -1293,8 +1293,11 @@ _elm_spinner_elm_widget_theme_apply(Eo *obj, Elm_Spinner_Data *sd) { ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EFL_UI_THEME_APPLY_FAILED); - if (!elm_layout_theme_set(obj, "spinner", "base", elm_widget_style_get(obj))) - CRI("Failed to set layout!"); + if (!efl_ui_widget_theme_apply(efl_super(obj, MY_CLASS))) + { + CRI("Failed to set layout!"); + return EFL_UI_THEME_APPLY_FAILED; + } if (edje_object_part_exists(wd->resize_obj, "elm.swallow.dec_button")) sd->button_layout = EINA_TRUE; diff --git a/src/lib/elementary/elm_theme.c b/src/lib/elementary/elm_theme.c index 3f2144b..69028c6 100644 --- a/src/lib/elementary/elm_theme.c +++ b/src/lib/elementary/elm_theme.c @@ -281,7 +281,7 @@ _elm_theme_object_set(Evas_Object *parent, Evas_Object *o, const char *clas, con Elm_Theme *th = NULL; if (parent) th = elm_widget_theme_get(parent); - return _elm_theme_set(th, o, clas, group, style); + return _elm_theme_set(th, o, clas, group, style, elm_widget_is_legacy(parent)); } /* only issued by elm_icon.c */ @@ -296,14 +296,21 @@ _elm_theme_object_icon_set(Evas_Object *o, } Efl_Ui_Theme_Apply -_elm_theme_set(Elm_Theme *th, Evas_Object *o, const char *clas, const char *group, const char *style) +_elm_theme_set(Elm_Theme *th, Evas_Object *o, const char *clas, const char *group, const char *style, Eina_Bool is_legacy) { Eina_File *file; char buf2[1024]; + const char *group_sep = "/"; + const char *style_sep = ":"; - if ((!clas) || (!group) || (!style) || !o) return EFL_UI_THEME_APPLY_FAILED; + if ((!clas) || !o) return EFL_UI_THEME_APPLY_FAILED; if (!th) th = &(theme_default); - snprintf(buf2, sizeof(buf2), "elm/%s/%s/%s", clas, group, style); + if (is_legacy) + snprintf(buf2, sizeof(buf2), "elm/%s/%s/%s", clas, (group) ? group : "base", (style) ? style : "default"); + else + snprintf(buf2, sizeof(buf2), "efl/%s%s%s%s%s", clas, + ((group) ? group_sep : "\0"), ((group) ? group : "\0"), + ((style) ? style_sep : "\0"), ((style) ? style : "\0")); if (!eina_hash_find(th->cache_style_load_failed, buf2)) { file = _elm_theme_group_file_find(th, buf2); @@ -312,7 +319,7 @@ _elm_theme_set(Elm_Theme *th, Evas_Object *o, const char *clas, const char *grou if (edje_object_mmap_set(o, file, buf2)) return EFL_UI_THEME_APPLY_SUCCESS; else { - INF("could not set theme group '%s' from file '%s': %s", + ERR("could not set theme group '%s' from file '%s': %s", buf2, eina_file_filename_get(file), edje_load_error_str(edje_object_load_error_get(o))); @@ -322,8 +329,15 @@ _elm_theme_set(Elm_Theme *th, Evas_Object *o, const char *clas, const char *grou eina_hash_add(th->cache_style_load_failed, buf2, (void *)1); } + if (!style) + return EFL_UI_THEME_APPLY_FAILED; + // Use the elementary default style. - snprintf(buf2, sizeof(buf2), "elm/%s/%s/default", clas, group); + if (is_legacy) + snprintf(buf2, sizeof(buf2), "elm/%s/%s/%s", clas, (group) ? group : "base", "default"); + else + snprintf(buf2, sizeof(buf2), "efl/%s%s%s", clas, + ((group) ? group_sep : "\0"), ((group) ? group : "\0")); if (!eina_hash_find(th->cache_style_load_failed, buf2)) { file = _elm_theme_group_file_find(th, buf2); diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index 89386b2..45163c8 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -3016,6 +3016,10 @@ elm_widget_scroll_child_locked_y_get(const Eo *obj) EOLIAN static Efl_Ui_Theme_Apply _elm_widget_theme_object_set(Eo *obj, Elm_Widget_Smart_Data *sd, Evas_Object *edj, const char *wname, const char *welement, const char *wstyle) { + if (eina_streq(welement, "base")) + welement = NULL; + if (eina_streq(wstyle, "default")) + wstyle = NULL; Efl_Ui_Theme_Apply ret = _elm_theme_object_set(obj, edj, wname, welement, wstyle); if (!ret) { @@ -3613,6 +3617,9 @@ EAPI Eina_Bool elm_widget_theme_element_set(Evas_Object *obj, const char *name) { ELM_WIDGET_DATA_GET_OR_RETURN(obj, pd, EINA_FALSE); + if (eina_streq(name, "base")) + name = NULL; + return eina_stringshare_replace(&(pd->group), name); } @@ -3643,6 +3650,9 @@ EAPI Eina_Bool elm_widget_theme_style_set(Evas_Object *obj, const char *name) { ELM_WIDGET_DATA_GET_OR_RETURN(obj, pd, EINA_FALSE); + if (eina_streq(name, "default")) + name = NULL; + return eina_stringshare_replace(&(pd->style), name); } diff --git a/src/lib/elementary/els_cursor.c b/src/lib/elementary/els_cursor.c index f8be56e..9f1a371 100644 --- a/src/lib/elementary/els_cursor.c +++ b/src/lib/elementary/els_cursor.c @@ -270,7 +270,7 @@ _elm_cursor_obj_add(Evas_Object *obj, Elm_Cursor *cur) cur->obj = edje_object_add(cur->evas); if (!cur->obj) return EINA_FALSE; - if (!_elm_theme_object_set(obj, cur->obj, "cursor", cur->cursor_name, + if (!efl_ui_widget_theme_object_set(obj, cur->obj, "cursor", cur->cursor_name, cur->style ? cur->style : "default")) { ELM_SAFE_FREE(cur->obj, evas_object_del); @@ -740,7 +740,7 @@ _elm_widget_efl_ui_cursor_cursor_style_set(Evas_Object *obj, Elm_Widget_Smart_Da } else { - if (!_elm_theme_object_set(obj, cur->obj, "cursor", cur->cursor_name, + if (!efl_ui_widget_theme_object_set(obj, cur->obj, "cursor", cur->cursor_name, style)) { ERR("Could not apply the theme to the cursor style=%s", style); @@ -768,7 +768,7 @@ void elm_cursor_theme(Elm_Cursor *cur) { if ((!cur) || (!cur->obj)) return; - if (!_elm_theme_object_set(cur->owner, cur->obj, "cursor", + if (!efl_ui_widget_theme_object_set(cur->owner, cur->obj, "cursor", cur->cursor_name, cur->style)) ERR("Could not apply the theme to the cursor style=%s", cur->style); else diff --git a/src/lib/elementary/elu_ews_wm.c b/src/lib/elementary/elu_ews_wm.c index d8c63cfc..9799b2a 100644 --- a/src/lib/elementary/elu_ews_wm.c +++ b/src/lib/elementary/elu_ews_wm.c @@ -170,7 +170,7 @@ _elm_ews_border_config_apply(Ecore_Evas *ee, Evas_Object *o, Elm_Theme *th) if (ecore_evas_borderless_get(ee)) style = "borderless"; - _elm_theme_set(th, o, "ews", "decoration", style ? style : "default"); + _elm_theme_set(th, o, "ews", "decoration", style ? style : "default", EINA_TRUE); if (ecore_evas_shaped_get(ee) || ecore_evas_alpha_get(ee) || ecore_evas_transparent_get(ee)) @@ -446,7 +446,7 @@ _elm_ews_wm_rescale(Elm_Theme *th, Eina_Bool use_theme) _elm_ews_wm_border_theme_set(*(void**)tp->key, tp->data, NULL); if (_ews_bg) - _elm_theme_set(NULL, _ews_bg, "ews", "background", "default"); + _elm_theme_set(NULL, _ews_bg, "ews", "background", "default", EINA_TRUE); } else { @@ -454,7 +454,7 @@ _elm_ews_wm_rescale(Elm_Theme *th, Eina_Bool use_theme) _elm_ews_wm_border_theme_set(*(void**)tp->key, tp->data, th); if (_ews_bg) - _elm_theme_set(th, _ews_bg, "ews", "background", "default"); + _elm_theme_set(th, _ews_bg, "ews", "background", "default", EINA_TRUE); } eina_iterator_free(it); @@ -477,7 +477,7 @@ _elm_ews_wm_init(void) o = edje_object_add(e); if (!o) return EINA_FALSE; - if (!_elm_theme_set(NULL, o, "ews", "background", "default")) + if (!_elm_theme_set(NULL, o, "ews", "background", "default", EINA_TRUE)) { ERR("Could not set background theme, fallback to rectangle"); evas_object_del(o); -- 2.7.4