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

Reply via email to