On 04/13/17 08:35, Cedric BAIL wrote: > On Wed, Apr 12, 2017 at 10:22 PM, Viacheslav Reutskiy > <reutskiy....@gmail.com> wrote: >> On 04/13/17 00:23, Cedric BAIL wrote: >>> On Wed, Apr 12, 2017 at 1:36 AM, Viacheslav Reutskiy >>> <reutskiy....@gmail.com> wrote: >>>> On 04/11/17 01:12, Cedric BAIL wrote: >>>>> To address this, we have come up with a serie of idea. The first thing >>>>> is that we should have a small set of defined style that have a >>>>> defined API (text part, message, signals). As each style is linked >>>>> with an elementary widget, the idea is to add a style section to .eo >>>>> file that provide the needed description and would generate a C >>>>> function dedicated to that style. There is a ticket for this at >>>>> https://phab.enlightenment.org/T5307 that will track the discussion on >>>>> how to do so. This should help the community by documenting a minimal >>>>> theme. >>>>> >>>>> To further help application developers, we are going to add more use >>>>> of efl part and also document it's use per elementary widget. >>>>> Basically a button would have a background part (accessible with >>>>> efl_part(button, "bg")) that return a class that allow to directly >>>>> modify a few aspect of the theme like color and background picture. >>>>> This helper class will be available accross as many widget as possible >>>>> to make it easier to do simple branded apllication like other platform >>>>> provide. There is again a few ticket following this task, the main one >>>>> to discuss this idea would be https://phab.enlightenment.org/T5306 . >>>>> Another helper we are going to provide to application developers is an >>>>> animation framework. Something kind of like efx, but with Eo classes >>>>> basically (The ticket is there https://phab.enlightenment.org/T5337). >>>>> Finally something that we are not addressing yet, but would I think >>>>> make sense, is some way to describe simple layout (Like Android XML >>>>> file or Microsoft XAML). With Eo property it becomes quite easy to >>>>> automatically generate code for this. >>>> I have one more idea about layouts. We can use edje-external feature for >>>> create a simple layout with elementary widgets. This will provide the >>>> flow which developers already know, it means write a simple layout with >>>> edc. Edje external provide some API for get elementary widget from layout >>>> and can set same attributes, but this API is poor. If we can extend edje- >>>> external API for set more widget attributes, it's can avoid to make one >>>> more language for GUI layouts. Also, support External parts can be >>>> implement >>>> in eflete, in this case we have functionality for create a layouts/frame, >>>> and tool for it. Animations and flexibility already here, because it's edc. >>>> One more things, this flow can help to separate designer and developer >>>> work. >>>> Developer and designer can use conventions about controls naming in layout, >>>> that help to work with business logic and GUI separately. >>> Ok, I think this point has been brought in with enough argument from >>> you and Gustavo. There is real benefit into supporting external >>> properly. I think that with eolian we should have a way easier time >>> than before. I believe, but haven't tried anything, that we can >>> automatically generate an external for every .eo widget with zero code >>> being written, documentation included. All the object property would >>> become an edje external property (We would exclude every @beta one as >>> we want stable theme). This should lower the maintenance and make sure >>> it is up to date. >>> >>> I am guessing that from eflete point of view, the API for externals in >>> Edje_Edit.h is enough ? >> Edje_Edit already have API for work with the external part params, but need >> to check does it work properly. I mean 'external_*widget*_param_set' API's. >> These API need to review and need to a list of params that already supported, >> and another list - what params need to add. >> Actually I can not do that now, but I can schedule this task to next week. >> >> Please correct me if I'm wrong - You propose to include edje_external API to >> elementary API? > Not exactly. The widget that use eolian have all there properties > properly described inside the .eo. This properties are what external > widget param should be able to set. My idea is to just read the .eo > during efl compilation and generate the edje external that goes with > every widget following what the .eo contains. Basically making edje > external elementary widget always up to date and 100% feature > complete.
So I've finished review the edje external module. The Edje external module support many widgets, but not all. Below the list of widgets which supported in the module. Also I add the params which missing or does support by edje external. Before create a task I want to discuss it. Note: '???' means that this param is missing Another question what doubt me is the items for containers.Is it worth giving an opportunity to add items from edc. For example, on design stage was decided that combobox have five predefined items, and these items will not changed. For this case items can be added one time, and app code only need handle events from combobox. Edje external - supported params == elm widget == - "style" - "disabled" - "icon" - "tooltip" ??? - "content to part" - I think this param will be need for set content to custom part for custom widget style. = Widgets = == "elm/bg" == - "file" string - "options" "center/scale/stretch/tile" string - "color" ??? "elm/bg" is very controversial widget for edje_external, because all widget functionality can be implemented by parts type like IMAGE and RECT. Also elm_bg able to set solid color, this is option missing for edje_external. == "elm/actionslider" == - "label" string - "indicator position" ??? - "label left" ??? - "label right" ??? - "magnet position" ??? == "elm/bubble" == - "label" string - "icon" "standard icon name or group name" string - "info" string - "content" "other group" string - "position" ??? == "elm/button" == - "label" string - "icon" "standard icon name or group name" string - "autorepeat_initial" "timeout_value" double - "autorepeat_gap" "timeout_value" double - "autorepeat" bool == "elm/calendar" == - "year_min" int - "year_max" int - "select_mode" "default/always/none/ondemand" string - "week first day" ??? == "elm/check" == - "label" string - "icon" "standard icon name or group name" string - "state" bool == "elm/clock" == - "hours" int - "minutes" int - "seconds" int - "editable" bool - "edit mode" ??? - "am/pm" bool - "show seconds" bool == "elm/combobox" == - "guide" string == "elm/entry" == - "label" "USER TEXT" - "icon" "standard icon name or group name" - "entry" string - "scrollable" bool - "single line" bool - "password" bool - "horizontal bounce" bool - "vertical bounce" bool - "editable" bool - "line_wrap" "none/char/word/mixed" - "guide" ??? - "cnp_mode" ??? - "ctxmenu" ??? - "autocapital mode" ??? - "anchor hover style" ??? - "autosave" ??? - "prediction" ??? - "input hints" ??? - "input panel" ??? - "input panel layout" ??? - "input panel lang" ??? - "cursor pos" ??? == "elm/fileselector" == - "save" bool - "folder only" bool - "show buttons" bool - "expandable" bool - "path" ??? - "mode" ??? - "mime type filter" ??? - "thumbnail size" ??? - "sort method" ??? == "elm/fileselector_button" == - "label" "USER TEXT" - "icon" "standard icon name or group name" - "path" string - "save" bool - "folder only" bool - "expandable" bool - "inwin mode" bool - "mode" ??? - "mime type filter" ??? - "thumbnail size" ??? - "sort method" ??? - "window title" ??? - "window size" ??? == "elm/fileselector_entry" == - "label" "USER TEXT" - "icon" "standard icon name or group name" - "path" string - "save" bool - "folder only" bool - "expandable" bool - "inwin mode" bool - "guide" ??? - "mode" ??? - "mime type filter" ??? - "thumbnail size" ??? - "sort method" ??? - "window title" ??? - "window size" ??? == "elm/frame" == - "label" "USER TEXT" - "content" "other group" - "autocollapse" ??? - "collapse" ??? == "elm/gengrid" == - "multi select" bool - "no select" bool - "always select" bool - "height bounce" bool - "width bounce" bool - "horizontal page relative" double - "vertical page relative" double - "horizontal item size" int - "vertical item size" int - "horizontal" bool - "align x" double - "align y" double - "policy" ??? == "elm/genlist" == - "horizontal mode" "compress/scroll/limit/expand", default "scroll" - "multi select" bool - "always select" bool - "no select" bool - "homogeneous" bool - "height bounce" bool - "block count" ??? - "tree effect" ??? - "highlight mode" ??? - "mode" ??? - "policy" ??? - "bounce" ??? - "reorder mode" ??? == "elm/hoversel" == - "label" string - "icon" string - "horizontal" bool == "elm/icon" == - "icon" string - "file" string - "smooth" bool - "no scale" bool - "scale up" bool - "scale down" bool - "fill outside" bool - "prescale" int - "aspect" ??? - "fill inside/outside" ??? - "orient" ??? == "elm/index" == - "active" bool - "autohide" ??? - "omit" ??? - "horizontal" ??? - "delay change time" ??? - "indicator" ??? - "items level" ??? == "elm/label" == - "label" string - "wrap" ??? - "slide speed" ??? - "slide mode" ??? - "slide duration" ??? - "ellipsis" ??? == "elm/list" == - "list mode" "compress/scroll/limit/expand", default "scroll" - "horizontal scroll" "auto/on/off", default "auto" - "vertical scroll" "auto/on/off", default "auto" - "horizontal mode" bool - "multi-select mode" bool - "always-select mode" bool == "elm/map" == - "map source" "Mapnik, Osmarender/Cyclemap/Maplint", defualt "Mapnik" - "zoom mode" "manual/auto fit/auto fill", default "manual" - "zoom level" double - "zoom max" ??? - "rotate" ??? == "elm/multibuttonentry" == - "label" string - "guide text" string == "elm/naviframe" == - "preserve on pop" bool - "prev btn auto push" bool == "elm/notify" == - "content" string - "allow_events" bool - "timeout" double == "elm/panes" == - "content left" string - "content right" string - "horizontal" bool - "left size" double - "fixed" bool == "elm/photocam" == - "file" string - "zoom" double - "zoom mode" "manual/auto fit/auto fill", default "manual" - "paused" bool - "gesture" == "elm/progressbar" == - "label" string - "icon" string - "value" double - "horizontal" bool - "pulse" bool - "pulsing" bool - "inverted" bool - "span" int - "unit format", default "%1.2f" string - "part_value" ??? == "elm/radio" == - "label" string - "icon" string - "group" string - "value" int == "elm/scroller" == - "content" string - "wheel" - "step" - "movement block" - "gravity" - "bounce" - "policy" == "elm/segment_control" == Params is missing == "elm/slider" == - "label" string - "icon" string - "min" double - "max", 10.0 double_default - "value" double - "horizontal" bool - "inverted" bool - "span" int - "unit format", "%1.2f" string_default - "indicator format", "%1.2f" string_default - "step" ??? - "range" ??? == "elm/slideshow" == - "timeout" double - "loop" bool - "transition" "fade/black_fade/horizontal/vertical/square", default "fade", choice - "layout" "fullscreen/not_fullscreen, default "fullscreen", choice == "elm/spinner" == - "label format", "%1.2f" string_default - "min" double - "max", 100.0 double_default - "step", 1.0 double_default - "value" double - "wrap" bool - "editable" ??? - "base" ??? - "round" ??? - "specific value" == "elm/thumb" == - "animate" "loop/start/stop", default "loop", choice - "file" ??? - "aspect" ??? - "quality" ??? - "size" ??? - "crop" ??? - "compress" ??? - "editable" ??? == "elm/toolbar" == - "shrink" string - "icon size" int - "align" double - "always select" bool - "no select" bool - "horizontal" bool - "homogeneous" bool == "elm/video" == - "file" define_external_common_params - "uri" string - "play" bool - "pause" bool - "stop" bool - "audio mute" bool - "audio level" double - "play position" double - "play length" double - "remember position" bool == "elm/web == - "uri" string - "zoom level", 1.0 double_default - "zoom mode" "manual/ auto fit/auto fill", default "manual", choice - "inwin mode", EINA_FALSE bool_default Missing widgets support: == "elm/layout == - "theme" ??? == "elm/colorselector" == - "mode" ??? - "palette" ??? set a palette by name, maybe add or set custom palette == elm/ctxpopup == == elm/menu == == elm/datetime == == elm/dayselector == == elm/diskselector == == elm/flipselector == == elm/separator == -- Viacheslav Reutskiy (rimmed) ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel