My idea is to have 1 edje group by window. The application create the window, load the group and get the objects needed (buttons, list ...). With this method in the theme you have a complete controls: you can use 5 panels or 2, display 3 list or 3 buttons to display one of the three list ...
With generic interface we will have a way to have a theme for bif screen with a list and a second for small screen with a hoversel. But this part is not my priority, this is a big job. This is what I try to do with Enki. Then I will write a theme for small screen like phone. My first problem will be to retrieve the content of a elementary object. The first object in the current enki theme is a elm_panels. I will add the possibility to do this. 2010/7/19 Dave Andreoli <d...@gurumeditation.it> > 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 > > > -- Regards. ------------------------------------------------------------------------------ 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