2010/7/18 Gustavo Sverzut Barbieri <barbi...@profusion.mobi>:
> On Sat, Jul 17, 2010 at 8:08 AM, Atton Jonathan
> <jonathan.at...@gmail.com> wrote:
>> Hello,
>>
>> I am writting this messages to give a list of what is needed in edje
>> external. I am rewriting the layout of  enki and I see some limitations.
>>
>>
>>   - We can't access to the content of a elementary widget (the content of
>>   elm_notify for example). With a evas box we can use "box[item_name]", we
>>   need the same tips with a external widget "notify[content]" or
>>   "panes["left"].
>
> As said at IRC, this is a problem harder to solve in Elementary than
> in Edje/Externals API. We could just add a sub_object_get(name) to the
> externals API, but we have no standard way to get them from
> Elementary. If we need to implement it per-widget, it will be a major
> pain to keep in sync.
>
>
>>   - a  program which is in a group can't access to a sub-group. Simple
>>   example : I have a part in a item of a box, a program can't have this item
>>   as target "target:box[item]:part". If my program send a signal which should
>>   set the state of this rectangle, I can't :(
>
> I recall Cedric and Sachiel doing something related to it these days.
> It should work with box and table at least.
>
>
>>   - We can set the target of a elementary widget. For example, I have a
>>   hoversel, I can't set his target. I have patched the hoversel, now the
>>   default target is the edje group but we can't set a part as target.
>
> Again, this is highly specific of the Elementary's EXTERNAL
> implementation. You could do this today by exposing a property target
> with a string property that internally retrieves the object by name
> and calls the C function with it.
>
>
>>   - Currently a program can't listen a smart event from  a elementary
>>   object. For example I can't have a program which listen the signal 
>> "clicked"
>>   of a elementary button.
>
> Well, it should be possible! Isn't it working? I did the initial
> implementation in external_signals_proxy(). It will use the
> introspection to listen to widget signals and proxy them to Edje, most
> of the objects exposed already have that, but if some are missing you
> can extend them just grep for Evas_Smart_Cb_Description in src/lib/,
> usually you find some code like elm_button.c:
>
> static const Evas_Smart_Cb_Description _signals[] = {
>  {SIG_CLICKED, ""},
>  {SIG_REPEATED, ""},
>  {SIG_UNPRESSED, ""},
>  {NULL, NULL}
> };
>
> ...
>
> evas_object_smart_callbacks_descriptions_set(obj, _signals);
>
>
> If the part that contains the button is called "bt" you should receive
> a "bt" "clicked" signal in Edje.
>
>
>>   - we need generic interface for list/genlist/hoversel ... then in the
>>   theme we can use other widegts (a list instead of a hoversel ...). This 
>> part
>>   is a big job.
>
> The sub-object management is not there, the problem is to define how
> to interact with it without being too specific to some lib. For
> instance, should we handle sub_object_get(name) (as above) and
> sub_object_set(name, value), choosing inside name if we want to
> append, prepend, insert or replace? Or should we create an extensive
> API, with replication in Embryo and Lua and probably
> edje_object_part_external with all possible sub-object management like
> append/prepend/insert/remove/replace?  Of course we have
> middle-ground, with set, insert with key values such as -1 for end,
> remove... without replace/append/prepend variants.
>
> Anyway, the api is easy to extend, however if we're doing it, better
> do it sooner than later.
>
> But I'd like to see some real world use cases. In real world use
> cases, one often populate things like boxes from C... often those uses
> that you try to use them from Edje are wrong-usage, which you should
> just have many parts in the same object, or use Edje's native
> BOX/TABLE objects, or going even further, if you want your app to
> provide specific hoversel to some items, you create your specialized
> hoversel EXTERNAL in your app, register it to be used by Edje and have
> fun.
>
> One of the bad points of abusing these interfaces is that in a way or
> another, these are slower than plain C access. If you have to populate
> a huge genlist, for instance, for each item you'd have to call a
> function, resolve some text->object, then resolve text->function, then
> do some strcmp(), then call the final function.... but if you just get
> your edje_object_part_external_object_get(), you have the maximum
> speed, with all the required interface, checks and clear API usage.
>
> IOW, I don't want to introduce some option of bad habits just to make
> some demos simpler :-)
>
I totally agree with your position :)
We need to NOT abuse edje, edje files should just describe your interface,
don't make themes 'another program'

DaveMDS

>
> --
> Gustavo Sverzut Barbieri
> http://profusion.mobi embedded systems
> --------------------------------------
> MSN: barbi...@gmail.com
> Skype: gsbarbieri
> Mobile: +55 (19) 9225-2202
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Sprint
> What will you do first with EVO, the first 4G phone?
> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to