2017-05-30 10:33 GMT+02:00 Jean-Philippe André <j...@videolan.org>:
> Hello,
>
> I have a bit of a technical question here. You may want to skip this if
> you're not familiar with efl_part and efl_composite_attach.
>
>
> I'm currently working on T5315 also known as "Refactoring Edje/Elm_Layout".
> The goal is to provide a uniform, simple API for both edje and elm_layout
> objects.
>
> Yesterday I've worked on EO API for EXTERNAL parts. Those parts are similar
> to swallows except that they are filled in automatically with widgets such
> as "elm/button" or "elm/slider". As a consequence, each EXTERNAL will
> support a certain, unknown, set of APIs.
>
> There is a "param_set" API that allows setting specific parameters on those
> externals, such as "label" which is the text of a button. But those APIs
> (currently) don't cover all the APIs supported by a widget, and anyway are
> limited to int/bool/double/string values (eina_value in a more general
> case).

IMO param_set should not be exposed in our public API, we already
have the api of the widget itself, I really cannot see why there should be
another different way to change a property of a widget...

I think param_set is there just to be used internally by edje (and maybe
by the externals implementation) to let the param_set in edc files works.


>
> So a solution to exposing as much functionality as possible is to expose
> the internal widget directly. This is
> edje_object_part_external_object_get().
>
>
> All "part" APIs in Edje.Object are meant to be implemented with efl_part().
>
>
> Going forward with EO API I see 3 solutions:
> #1. Do not expose the widget at all, hope that someday we can expose all
> useful features through generic parameter API.
> #2. Expose the internal widget directly (i.e.
> edje_object_part_external_object_get
> () or efl_content_get())
> #3. Expose the widget API through composition, but not the widget itself.
>
>
> Point #3 requires explanation:
> efl_part(edje, "partname") returns a temporary object of a subtype of class
> Efl.Canvas.Layout.Part. This object is meant to be used for a single
> function call. But in this case, we can compose it with the real widget
> with efl_composite_attach(). Then all the functions of the widget are
> available on the part handle, except Efl.Object base functions (eg. wref,
> data, events, etc...)
>
>
> Right now I've implementewd both #2 and #3. I'm kind of happy with both,
> but would like your opinions. In particular, #3 could be used as a common
> pattern with efl_part() but it has the downside of overexposing internal
> features.
>
>
> Thanks in advance!
>
> --
> Jean-Philippe André
> ------------------------------------------------------------------------------
> 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

------------------------------------------------------------------------------
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