On Wed, Oct 8, 2008 at 4:05 AM, Michael 'Mickey' Lauer
<[EMAIL PROTECTED]> wrote:
> Congrats to the release, Gustavo!
>
> Can you briefly summarize how Guarana relates to Ewl, Etk, and
> Elementary?

Guarana is more than a widget set, we provide some utilities that help
development, like the module loader.

As for our widget set, it's much like *last* Elementary. Actually I'm
talking about this idea for a long time, back to the days Caio and I
were hacking Canola2, he doing ETK and I doing Evas/Edje. Going with
Evas/Edje was much simpler, much more extensible, it just lacked some
base to work on top, that's the base we provided with python-terra
(proprietary, python, Canola) and now in guarana (free software -
lpgl, Cl). We used to say that "Etk copied just not the api, but the
problems from Gtk", since you get some limitations that Gtk imposes to
you because of their design.

Elementary started out as a simple widget set, but old-fashioned. It
*was* very similar to E widgets, don't know why raster did that.  I
also don't know if it was me talking to him (and sending guarana for
beta testing), but he also realized that that is not the way to go and
recently changed Elementary to be much more like Guarana... that's
awesome, because there is no "infrastructure" need, we just provide
smart objects, so it's easy to mix both. I'll try to get raster to
drop Elementary and hack on Guarana, so we join efforts ;-)

EWL is also different, it abstracts completely Evas/Edje from you. If
you want something, you need to get and embedded widget to work with.
That's a concept, I can't say it is wrong, but I don't like it.

Other great Guarana stuff:
   - Accessor/Iterator: now in Eina (which we plan to use ASAP,
dropping our code), this enables your data types to provide a common
interface to access by index or to iterate, you can have as much
accessors/iterators as wished for the same data type (unlike Ecore),
and it's easy to use. The main reason I wrote so is thinking about
Python (and others) integration: you just need to write a
python_acessor and iterator and map to Python's __getitem__() and
sudently your code will just work :-)
    - module loader: create a map (grn_loader_conf) of key=(file,
symbol, prio, enabled) and it will return a list or the highest
priority symbol that matches. It's a very easy way to split your code
into modules to be dynamically loaded, specially with mvc
    - model-view-controller (mvc) basics and integrated with module
loader. This is great because your module can request "Give me all the
models that implement Model/MainMenu" and you get a list of functions,
that you call and get the models. Then you want to "enter" some item,
you go and ask: "Give me the first controller for model
Model/Folder/Audio", it will try to check for "Model/Folder/Audio" and
if not found will try "Model/Folder". That way you can just implement
the model folder to list stuff by name, then go do some interesting
stuff. When you're done with interesting stuff and you want to do some
fancy stuff, you can go and write a Model/Folder/Audio that shows the
title, cover art, etc... without need for whole software recompile. It
will just work :-)

These concepts are not new. I borrowed some from Zope, some from
Python itself, some from Turbogears/Ruby-on-Rails. Controller
discovery is much like mime-types. I used this kind of infrastructure
for Freevo back in 2002, then in Canola1, Canola2 and some other
private projects. So it works, and works nice. But we lacked something
to use with EFL, and here it is :-)

Have fun,


-- 
Gustavo Sverzut Barbieri
http://profusion.mobi embedded systems
--------------------------------------
MSN: [EMAIL PROTECTED]
Skype: gsbarbieri
Mobile: +55 (19) 9225-2202

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to