Hi, Although the Eo API is not stable to outside, it's able to provide these properties... as elm external is generated and shipped by the same repo/build as the libelementary, I'd say you better invest time into creating an automatic generator.
before you commit the generator/generated version, check that if some properties broke, in that case we may need to work around to keep a legacy behavior (although there aren't many users...) the great part is that this would work for other Eo, like 3rd party libs, etc. On Fri, Apr 21, 2017 at 5:44 AM, Viacheslav Reutskiy <reutskiy....@gmail.com> wrote: > > 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 -- Gustavo Sverzut Barbieri -------------------------------------- Mobile: +55 (16) 99354-9890 ------------------------------------------------------------------------------ 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