http://web.enlightenment.org/


July 01, 2009

pfritz

The new state system of EWL


Maybe you have already seen it, I started some weeks ago a branch for ewl in svn. Since the changes aren’t self explaining, I want to describe here how the new system works and also why it works that way.


The old system

Let’s start with some history about the old, but still current main trunk system. There are two different kinds of states:

  • One are for internal usage only. They are part of the Ewl_Flag enumeration and are set with macros like ewl_widget_state_add(). They are to keep track if a widget is pressed, has focus, etc.
  • The second kind is to keep the widget decoration informed about some evens. It is a tight wrapper around edje_object_signal_emit(). With “tight” I mean that it doesn’t provide any extra functionality besides that it can save one (and only one!) set state, so that the state will be applied if the widget is obscured and revealed again (this happens if the widget gets offscreen, or hidden for some time).

Losing states

This design has some flaws, because it ignores the fact that most ewl widgets are a composition of several widgets. For instance the label in a button need to know when the parent button container changes its appearance, in other words when it changes its state. On the first sight the solution seems to be obvious. Simply pass the state changes to the internal children.

But what happens if the label goes offscreen, but not the button? Or what happens if we create the label later than the button changed it theme? The label will not know about the state changes of the button. That means we need to keep track of all state changes so we can apply it to the children, when they are created or recreated. This list approach has also problems, for example if you apply “mouse,in”, you need to remove it from the list before you apply later “mouse,out”.


Having a state is different to getting a state

Another problem that exists with the current system is that we do not differ between retrieving a state and having a state. For example a themer might want to add a fancy animation when a checkbutton is checked, but on the other hand he maybe do not want an animation when the check is already applied, when the widget is new created or it is on-screen again. This issue is not inherent in the current system, and could probably also be solved in it. But it is something I had also in mind when I was going to switch to the new system.


The solution

I hope you understand now some of the issues that led me to change the current system. The first step is to remove the tight wrapping of edje_object_signal_emit(). I doubt it is possible to find a way that is not memory wasting and slow, but managed all the states in plain strings.

Like we already did it for the internal state management, states are now labeled by an enumeration. Every state in this enum reserves its own bit, so you can easily combine them with ORing. This atomatically solves the list problem. If the mouse enters the widget you simply add the EWL_STATE_MOUSE_IN bit and if the mouse later leaves you remove the state again.

Since old internal state keeping and the new state system works very similar, I simply merged them to one system, with the main difference that ewl_widget_state_add() will now inform the theme (actually the engine), that the state changed. If the widget isn’t already realized, the theme gets another information on realization, namely that the widget has this state. This solves the second problem.

The widget does not only save the directly applied states, but also the states that it inherits from the parent widget. Those are easily queried on realization and are kept up-to-date, if the state changes on the parent widget.

But the state enumeration is not enough. In some rare, but important cases, we still need custom states, that only makes sense for the given widget and are not general enough to be put into the enum. For those cases there is still a function that works as a tight wrapper around edje_object_signal_emit(). It is called ewl_widget_custom_state_set() and works like the old ewl_widget_state_set(), i.e. it does not inform the internal children about the change.

I hope I’ll write a second part of this blog discussing the changes from the view of a themer.

pfritz

by pfritz at July 01, 2009 10:04 PM

June 29, 2009

Brian 'morlenxus' Miculcy

Easy_e17.sh 1.2.5 released

This new release contains some cleanups and bugfixes. It also changes the default packagelist to a very basic limited list which only installs e17.
  • new commandline argument --packagelist= (basic, half, full)
  • added lib ethumb
  • added app image-viewer
  • added module configmenu
  • removed apps etk_extra,enhance,enthrall,emphasis because they are no longer maintained
  • removed systray module - it is now included in e17 itself
Grab your copy! :)

by Brian 'morlenxus' Miculcy at June 29, 2009 12:13 AM

June 21, 2009

Official Enlightenment Blog

ECN 2009/25

This is the first episode of the new Enlightenment Community News (ECN). ECN is your new regular source of information in the Enlightenment project. We will release interesting stuff over the mailinglist and enlightenment.org. This episode is not yet on enlightenment.org, but we'll get to this.

Unlike the current "News" section on enlightenment.org ECN will not do release announcements, instead it will contain interesting new things straight out of the SVN tree and the community.

If you are not only interested in reading the news, but also participating in writing it, feel free to take part at EnlightenmentCommunityNews.
Feedback is also highly welcome.

e17 News

  • Sergey Semernin introduced support for different categories for gadgets. With this, gadgets can be set to work only in specified containers, for now either 'shelf', 'toolbar' (e_fm) or 'desktop'. It's not in SVN yet.
  • jeffdameth added more plugins to the "Run Everything" module. It can now also open files, and more. e17 'Run Everything' module (file view) changeset:41135

EFL News

  • Cedric sent a patch that moves Evas modules to Eina. This will allow static linking, but introduces an API break. It is not up for discussion and not in SVN yet.
  • According to Gustavo Ethumb, the Epsilon replacement, is now mature enough to replace the latter completely. He suggests all developers to use Ethumb now. Python bindings are not ready yet, but on the way.
  • Vincent created an installer for EFL on windows. You can try it out: http://packages.enlightenment.org/windows/
  • André Pedralho announced the 0.1 release of the EFL-webkit port. Eve, the Enlightenment web-browser, already works with this version. You can find more information here: http://tonikitoo.blogspot.com/2009/06/webkitefl-01-released.html

Application News

  • urandom is porting Edje_Viewer from Etk to the new Elementary widget toolkit. The port is almost finished. changeset:41005 Elementary based Edje_Viewer
  • watchwolf did a big update on his presentation tool Eyelight: it now uses standard 'edj'-files for themes and 'elt'-files for the presentation. changeset:41090
  • quaker imported a new application in SVN: it's called Shellementary and allows you to give your shell scripts en elementary GUI (like Enity, which was moved to OLD). changeset:41141

Community Information

  • Gustavo now maintains http://planet.enlightenment.org/ and wants to make it an interesting section again. If you often blog about enlightenment stuff, drop him a mail with your RSS/ATOM link and category.

by thomasg at June 21, 2009 11:07 PM

Atton 'watchwolf' Jonathan

Some news about Eyelight

I have made some improvements to Eyelight :

  • Now Eyelight works as all Edje application : the theme is a classic Edje file with a list of groups ( item_text, item_image ... ). Consequently it's more easy to create a theme and we can create new extensions which are not managed by Edje ( for example add a video, or add an elementary object )
  • We can add a video, with or without borders, shadow. A video can be auto-play and/or auto-replay.
  • A summary can be generated automatically. The keywords chapter and section allows to create a summary with 2 levels. Each times one of these keywords is used, a menu will be added between 2 slides. The keyword summary allows to add a menu without using chapter or section. If the property summary has the value complete, the menu will be display without showed up the current chapter/section.

A video is available here. ps: the firefox icon is not scale because it has a minimal size of 128x128.

by Watchwolf at June 21, 2009 01:15 PM

June 19, 2009

Stephen 'okra' Houston

Sneak Peek

Ephoto development is coming along well.  I wrote a smart object that is a table, similar to evas_table, but a little more nurtured to my needs.  It does resizing and reuses objects to help with optimization.  The code is coming along well, however I still feel that the design/look leaves a little to be desired.  Therefore I'm providing a peek at what it looks like in hopes that people will chime in with design ideas or even animation ideas.

          Peek at Ephoto

If anyone has design ideas, or ideas for animations, please contact me via email: UnixTitan@gmail.com or on irc, my nick is okra.

Stephen

by UnixTitan@gmail.com (Administrator) at June 19, 2009 04:40 PM

Official Enlightenment Blog

Windows XP Installers

The installers (with and without debug symbols) have been uploaded. They are based on revision 41042 of the svn repository. They can be found in the binary packages page.

The installed EFL are Evil, Eina, Eet, Evas, Ecore, Embryo, Edje, Elementary and Ewl. Expedite, as well as all needed dependencies, are also installed.

Development files (import and static libraries, header files, .pc files) can be installed if they are selected.

by vtorri at June 19, 2009 04:39 AM

June 17, 2009

Official Enlightenment Blog

WebKit/EFL 0.1 released

André Pedralho just announced at enlightenment-devel mail list that his team at INdT released Webkit-EFL 0.1, the first release of this integration project.

Webkit-EFL brings together the power of webkit rendering engine to EFL applications, integrating with ecore main loop, evas canvas and input system as well as themes using edje. Rendering is done using cairo and networking uses curl, so shares base components with other webkit ports as GTK.

Similarly to Edje and Elementary, everything is exposed to developers as Evas_Object, so you can swallow, clip and go as crazy as you would with any other object. In fact, it's double-buffered using an internal image object. That is good since you can resize, clip, fade and move without paying re-render price, but be aware that it can add some overhead for pages with heavy animations (nothing comes for free, sorry ;-))

The code was developed mainly by INdT/Manaus. It is hosted at gitorious so it's easy to clone and contribute, as well as rebase with upstream webkit, which they do on a regular basis.

We have a sample browser using webkit-efl in svn, it's called Eve and lives under PROTO/eve, please join development so we can have great integration of Enlightenment and web technologies, rendering web content inside our apps.

For more information see André's co-worker page: http://tonikitoo.blogspot.com/2009/06/webkitefl-01-released.html

by barbieri at June 17, 2009 01:26 AM

June 15, 2009

Official Enlightenment Blog

June 2009 snapshot and releases

Hi all,

Thanks to huge effort by various contributors we're proud to provide a stable development snapshot of EFL and a new release of Eet library. Please help with testing and packaging it for your distribution, so we can get wider testing.

Next snapshot is due Monday, July 27th.

by barbieri at June 15, 2009 02:48 PM

Atton 'watchwolf' Jonathan

My training period

My training period in the company Calaos will be finish soon: the 26 June. Remember Calaos is a French company which use the EFL to create a touch screen front end for a domotic product. I have made some improvements in the application :

  • Improve the communication between the client (touch screen apps) and the server. Now the client use a cache to manage each IO and a MVC allows to easily displays and manages the state of an IO.
  • Create a scenario editor for the touch screen application. A scenario use a list of classic rules (conditions -> actions). The scenario editor allows the end user to create a scenario easily.
  • Create a photo manager which can display a photo from Flickr or from the local disk. Others sources can be added.
  • Some configurations panels have been added to configure the clock, the screen, the password and to sort the list of IO.

My report , the back page. The report is in French .. sorry :)

Some videos :

  • Configuration panels : http://watchwolf.fr/public/Calaos/calaos_date_veille_mdp.ogv
  • Scenario editor : http://www.flickr.com/photos/watchwolf/sets/72157617329010999/
  • Photo manager : http://calaos.fr/pub/video/calaos_photos.ogg

by Watchwolf at June 15, 2009 08:56 AM

June 13, 2009

Stephen 'okra' Houston

Core Ephoto

As many may or may not know, some months ago I began to rewrite Ephoto only using Ecore, Evas, and Edje.  Development has been a bit slow, but it is coming around.  A lot of functionality is there, but it is lacking some beauty.  I don't have much of an eye for graphics, and therefore my mockups were okay, but they lacked a bit of a visual appeal.  The "new" Ephoto will be embedded device friendly as well as perfect for anyone who wants a beautiful image viewer on their desktop computer.  I plan to put this "new" Ephoto into svn fairly soon, but I want to make sure its something I feel comfortable with and is respectable code, so be watching out for the "new" Ephoto, Coming Soon!

-Stephen Houston

by UnixTitan@gmail.com (Administrator) at June 13, 2009 03:08 PM

June 09, 2009

Atton 'watchwolf' Jonathan

A new theme for Eyelight

My training period in the company Calaos will be finish soon: the 26 June. That's why I prepare my report and my presentation. I plan to do my presentation with Eyelight, a presentation viewer than I have write last year during the Google Summer of Code. Eyelight is based on the EFL, especially Edje. A complete presentation and documentation are available on my wiki.

Last week I have created a new theme, better than the previous which was very simple. The new theme used some images originally created by the company Calaos for an Enlightenment presentation. The company allows me to use these images for doing a new Eyelight theme. This new theme is called ... wait .... wait for it .... default_theme ! :)

A video is available here.

by Watchwolf at June 09, 2009 05:28 PM

Official Enlightenment Blog

Release schedule and request for help

Hello all,

If you follow Release you will notice that more and more items are being strike out in the past months due work of many individuals, we'd like to thank them all. Among contributors we can even find out nice examples like Luca De Marini that is not a programmer but fund/help the work of Sergey P. Semernin to help finish that list.

I'd like to ask more people to step in and help, either with code directly of following Luca's example and finding a developer to do so (no need to pay, you can find a friend willing to do work). If you are willing to help but have no deep knowledge of the project, we can aid you with such tasks. Lots of them just require basic C skills, like converting Ecore/Evas data types usage to Eina (in Ecore, E_DBus, efreet, ...). We also need developers with optimizations and profiling skills to help with Efreet (not much to think, it's all known, just need manpower to implement).

Last but not least we need bug reports, and bug report reviewing! The last part is important, for example we had a bug listed as "efm will not work with other fm's drag&drop" but it does, so go there and comment on bugs. Not all developers spend lots of time on Trac (shame on me!), so if you have a bug that is there for some time without any comments, don't be afraid and post it here (e-devel or e-users), or talk with us at IRC (#edevelop or #e), maybe you can have your problems fixed by the end of the day ;-)

That's it, let's rock!

by barbieri at June 09, 2009 02:17 PM

June 04, 2009

Andre Dieb

Eupnp event bus and new deps

Since UPnP is event-driven itself, I have implemented a Event Bus. It is a channel onto publishers can publish events and into which subscribers can subscribe for a specific type of event (one-to-many).

The goodies about this bus is that it centralizes all eventing in one point, so, gets simpler to implement, debug, optimize and also use. The API got very simple and short, an example can be found on my example-test program.

One thing I'm still thinking about adding in this stage is multiple events subscription. I'm defining the events with independent constants (powers of 2), so it's possible to subscribe to a set of events by combining them with bitwise OR. One thing that I'm still wondering about is the frequency users would use this.

Apart from that, I have chosen two new dependencies:
  • libcurl: will be used to fetch XML's, perform soap POST's
  • libxml2: I'll use a SAX XML parser for "read-as-you-go" parsing, harder to implement but benefits in almost every way comparing to DOM.
I want to give the fetch result directly to the SAX parser, but I'm still studying the APIs to learn how to do it properly. While the XML doc is received and parsed, it'll be mounting the DeviceInfo object, without requiring a memory-expensive DOM tree.

by André Dieb (andre.dieb@gmail.com) at June 04, 2009 03:05 AM

May 27, 2009

Jorge 'turran' Luis Zapata

Look Ma, no Evas!

The past few months I've been away from main EFL development. With no particular reason than to build a different approach to the canvas library and to bring up this new concepts / features into mainline, similar to what happened with Eina.

The stack I've been developing is as follows:



  • Enesim: The graphics library. You can find more information about it at the wiki page
  • Emage: Is a library to load and save images in different formats. It supports synchronous and asynchronous operation and also user provided modules.
  • Etch: The animation library. It basically interpolates two values using several algorithms, like: discrete, linear, sin, with bezier control points, etc.
  • Ekeko: An OO property system. It has an abstract canvas and renderable types, UI events, generic properties, syncrhonous and asynchronous dispatching, among other features.
  • Eon: This is where all the efforts join. Eon started as an improvment to Etk (still called etk2 on the repository), but then the initial idea diverge and now the code base is very different to what Etk is. Basically Eon has support for basic renderable shapes, like images or rectangles, support for subcanvases, transformations for images, etc.

Here you can see a simple demo with some features I've done the past days: animated matrix transformations




Update: To create the video I used this xml. Eon has a parser for XML based scene files.


<etk w="100%" h="100%" id="canvas01">
<rect x="0" y="0" w="100%" h="100%" color="white" id="rect01"/>
<image x="40%" y="25%" w="50%" h="50%" file="tiger.png" id="image01">
<animMatrix name="matrix" type="0" dur="3s" from="0" to="0.7" calc="0" begin="click" repeat="-1" id="anim01"/>
<anim name="color" dur="5s" from="0xffff0000" to="0x66660000" calc="0" begin="click" repeat="-1" id="anim02"/>
</image>
<rect x="60%" y="10%" w="25%" h="25%" color="0xaa0000aa" id="rect02">
<anim name="y" dur="10s" from="10%" to="80%" calc="0" begin="click" repeat="3"/>
<anim name="color" dur="5s" from="blue" to="0xaaaaaaaa" calc="0" begin="click" repeat="-1"/>
</rect>
<rect x="10%" y="45%" w="25%" h="25%" color="red" id="rect02">
<anim id="myanim" name="x" dur="3s" from="10%" to="60%" calc="0" begin="click" repeat="1"/>
<anim id="anim04" name="color" dur="5s" from="red" to="0xaaaaaaaa" calc="0" begin="#myanim.stop" repeat="-1"/>
</rect>
</etk>

by turran (noreply@blogger.com) at May 27, 2009 03:06 PM

May 12, 2009

Andre Dieb

GSoc 2009: accepted!

I'm very happy. I've been accepted as student for Google Summer of Code 2009. My project is associated with The Enlightenment Project organization and it will be implementing a UPnP control point library in C. A brief description of the project can be found here.

I have already started coding a bit and done some bits on the SSDP server (finished the multicast listener).

The code will be available on a git repository on github. You can access the tree here and I'll be pushing the stuff soon.

Wish me luck!

by André Dieb (andre.dieb@gmail.com) at May 12, 2009 08:05 PM

GSoC 2009: let the games begin

For this past week I've been learning autotools as fast as I could, and as pragmatic as I could. I don't want to lose much time with this. I also managed to finish a lot of pendencies, so I'll have more time to write early code - before May 23 (official start-coding date).

by André Dieb (andre.dieb@gmail.com) at May 12, 2009 08:05 PM

GSoC Eupnp Progress

Project:
  • Repository: http://github.com/dieb/eupnp/tree
  • Cloning: git clone git://github.com/dieb/eupnp.git
  • Testing: ./autogen.sh, make, make install, try the binaries under src/bin with EINA_ERROR_LEVEL=3 if you want complete debug.
These are the features I already pushed (see update below):
  • UDP transport component;
  • SSDP HTTP basic request parser;
  • SSDP Discovery Request (M-Search);
  • Control Point and SSDP classes;
  • Working basic control point for testing features described above


Update: Gustavo Barbieri (project mentor) helped me a lot improving everything and also fix the repository tree that had a 'trunk' folder. So I created a new tree and pushed the files already improved.

From now on, only incremental commits! :-)


by André Dieb (andre.dieb@gmail.com) at May 12, 2009 08:04 PM

May 06, 2009

Andre Dieb

Zaroo Leaks!

Grinding Leaks:
  • cd eupnp
  • ./autogen.sh
  • make
  • Create the lt binary under .lib: EINA_ERROR_LEVEL=3 ./src/bin/eupnp_basic_control_point
  • Valgrind it: EINA_ERROR_LEVEL=3 valgrind --leak-check=full --num-callers=6 --show-reachable=yes src/bin/.libs/lt-eupnp_basic_control_point
Outputs
==17842== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 23 from 1)
==17842== malloc/free: in use at exit: 0 bytes in 0 blocks.
==17842== malloc/free: 36 allocs, 36 frees, 7,265 bytes allocated.
==17842== For counts of detected errors, rerun with: -v
==17842== All heap blocks were freed -- no leaks are possible.

Zaroo leaks!




Test construction failure leaks: two instances, one binds to the address, the other can't bind, check for leaks

Output:
[eupnp_udp_transport.c:85] eupnp_udp_transport_prepare() Error binding. Address already in use
[eupnp_udp_transport.c:135] eupnp_udp_transport_new() Could not prepare socket.
[eupnp_ssdp.c:324] eupnp_ssdp_server_new() Could not create SSDP server instance.
[eupnp_control_point.c:86] eupnp_control_point_new() Could not create control point.
==18183==
==18183== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 23 from 1)
==18183== malloc/free: in use at exit: 0 bytes in 0 blocks.
==18183== malloc/free: 23 allocs, 23 frees, 1,490 bytes allocated.
==18183== For counts of detected errors, rerun with: -v
==18183== All heap blocks were freed -- no leaks are possible.

by André Dieb (andre.dieb@gmail.com) at May 06, 2009 06:45 AM

April 26, 2009

pfritz

Setting up autofoo for gettext


Using gettext in your application or library is very easy and straight forward. The hard part is to setup autoconfig and automake to use gettext. Not because itis very difficult, but because there is not a good tutorial, at least I haven’t found one. The only resource is the gettext manual which is over 100 pages large and covers too many legacy cases to be simple. And the other resource is to look into existing project and take their setup as a base, either easy and you’ll find out that there are many ways of doing it, most of them are dated.

Since I added gettext support to EWL, I thought I can tell you the single steps, making your life easier, one you want to add i18n support to your application or library. I assume that you already have a autoconfig setup for your software.


First step: Setup the c code

Libraries need a different treatment here, because they cannot rely on global settings, else they would overwrite the catalog of the application that is using the library. Nevertheless the steps are very similar. I start here with the steps for the application.

Create a header file called intl.h or – if you prefer – mynamespace_intl.h it’s containing this code:

#ifndef INTL_H
#define INTL_H

#include <string.h>

#ifdef ENABLE_NLS
# include <libintl.h>
# include <locale.h>
#else
# define gettext(str) ((char*) (str))
#endif

#define _(str) gettext(str)
#define gettext_noop(str) str
#define N_(str) gettext_noop(str)
#define S_(str) sgettext(str)

static inline char *
sgettext(const char *msgid)
{
        char *msgval = gettext(msgid);
        if (msgval == msgid)
                msgval = strrchr(msgid, '|') + 1;
        return msgval;
}

#endif

This defines some useful macros, namely (), N() and S_(). Take a look into the gettext handbook to see how they work.

For libraries use this header:

#ifndef INTL_H
#define INTL_H

#include <string.h>

#ifdef ENABLE_NLS
# include <libintl.h>
# include <locale.h>
#else
# define dgettext(domain, str) ((char*) (str))
#endif

#define D_(str) dgettext(PACKAGE, str)
#define gettext_noop(str) str
#define N_(str) gettext_noop(str)
#define SD_(str) sdgettext(PACKAGE, str)

static inline char *
sdgettext(const char *domain, const char *msgid)
{
        char *msgval = dgettext(domain, msgid);
        if (msgval == msgid)
                msgval = strrchr(msgid, '|') + 1;
        return msgval;
}

#endif

Add this new header file to the (not installed) list of source files in your Makefile.am. You also need to add the following option to the AM_CPPFLAGS

-DPACKAGE_LOCALE_DIR=\"$(localedir)\"

We need this definition later.

To initialize the correct language and loading the language catalog we need to add some code, for apps add this code near the beginning of your main() function:

    /* Initialize NLS */
#ifdef ENABLE_NLS
    setlocale(LC_MESSAGES, "");
    bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR);
    bind_textdomain_codeset(PACKAGE, "UTF-8"); /* add this only if you want to
                                                  deal with UTF-8 strings
                                                  exclusivly. If you are using
                                                  evas, you most probably
                                                  want. */
    textdomain(PACKAGE);
#endif

For libraries add this:

    /* Initialize NLS */
#ifdef ENABLE_NLS
    bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR);
    bind_textdomain_codeset(PACKAGE, "UTF-8"); /* add this only if you want to
                                                  deal with UTF-8 strings
                                                  exclusivly. If you are using
                                                  evas, you most probably
                                                  want. */
#endif

As you can see it is up to the library user to set the locale. Don’t forget to add the intl.h header file.

The only missing thing for the c-files is to mark translatable strings, with the defined macros. I will not explain here how to use them.


Second step: Setup autoconfig and automake

First add the following line in your autogen.sh or bootstrap.sh file, if you are using autoreconf you can jump to the next topic.

echo "Running autopoint..." ; autopoint -f || :

Before the line where aclocal is called.

Now execute autopoint -f in your package base dir. It will create the po/-directory and copy some files you will need later.

Add the following lines some where in your configure.ac file:

AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.15])

And add po/Makefile.in (don’t forget the .in, this is not a typo!) into the AC_OUTPUT list. And add the po dir at the end of the subbdir list in the Makefile.am.

Now create the po/Makevars file, you will find there already a template for it. Simply copy it and adjust it for your needs. You may want to add the S_ or the D_ and SD_ macros to the xgettext options.

Create a new file called POTFILES.in. There you put every source file that contains a translatable string. The path should be relative to your base directory.

Well, if you are an English-speaker you are done know. Your project should now be translatable. If your not an English-speaker you can test your work and start a translation for your mother tongue.


Step three: The first translation

Run now ./autogen.sh, ./bootstrap.sh or autoreconf and the ./configure and make. After that you will find a pot file in the po/ directory. Use it to create a translation for your project and save the po file in the po/ dir.

Therefor that your translation will be converted into a binary form and later be installed add this file to a newly created LINGUAS file. There are all available translations listed. For example:

# Set of available languages.
de it cz

Call now make maintainer-clean and the next time you are going to build your project, your translation will be installed and used.

pfritz

by pfritz at April 26, 2009 10:44 PM

April 16, 2009

Official Enlightenment Blog

New website design

Hi all,

as you can see today we have a new website design. I have skinned the main E site (enlightenment.org) and trac to have the same look. The original mockup was designed by dresb and all the thanks goes to him.

Next step is to remove the old mediawiki, but I really need help on moving all the pages to the trac wiki. I have moved my pages... maybe you can move yours :)

In the next day I will make the Doxygen documentation fit well in the new dress, maybe with the help of the Doxigen plugin for trac.

I Hope you like the new designs, and please report any problem to me.

PS: we have plans to merge/feed the news on the e.org site with this blog. So you all are encouraged to write news regarding the E project here, if you don't have the permission to write here ask me (or mekius or another admin) to give you the grant :)

Dave

by DaveMDS at April 16, 2009 03:07 AM

Gustavo Sverzut Barbieri

Enlightenment getting ready to rock!

Not 1.0 release yet, but moving towards it!

Last week I started a discussion with some packagers so we could get ride of lots of outdated and unmaintained repositories as well as updating the maintained repositories so they get improvements from SVN HEAD and also help testing our code.

This was interesting, first packagers did not know each other (even various Ubuntu/E17 package maintainers) so the first task was to get them to talk and settle differences.

Then they complained about trunk often being unstable and hard to get a consistent snapshot to package. While this is true, I also complained about their interaction, or lack of, with developers to know how to build and we agreed that having a public schedule with period to stabilize code base followed by development snapshots could help. So I did propose one monthly plan that people liked, being this weekend (Thursday April 16th) the first freeze followed by a development snapshot on Monday.

The result is turning to be better than what I imagined: all packagers are now united and talking to developers, we set up http://packages.enlightenment.org/ to release packages until they go into mainline distros and we increased SVN commits, with lots of motivated people fixing problems here and there, cutting rough edges and making experience better and better. Now let’s hope during this bug fix weekend we manage to get rock solid EFL and E17 so we can release packages to spread use of our technologies.

Having more people to know and test Enlightenment and its technologies is very important. We’re getting our Release Plan done and expect to release E17 and EFL 1.0 this year. Our project got really interesting Google Summer of Code applications covering Netbook, Browser and other areas were we can rock. But we could use more press releases and marketing, people still don’t know that Enlightenment Technologies power products from phones to home automation systems to mobile media centers and even digital tv set-top boxes around the world!

PS: expect Debian/Ubuntu/SuSE packages for Canola, Enna and other nice applications on top of EFL afterwards. Thanks to all developers and packagers to make it happen!

by Gustavo Sverzut Barbieri at April 16, 2009 12:03 AM

March 29, 2009

Nathan Ingersoll

Summer is a'comin'

The Enlightenment project was accepted for Google's Summer of Code again this year. If you are a student interested in Open Source, please take a look at our ideas page and apply if you see anything interesting.

by Nathan (noreply@blogger.com) at March 29, 2009 07:48 PM

Brian 'morlenxus' Miculcy

Easy_e17.sh 1.2.4 released

This release has a little changelog as it's more for getting a dependency in:
  • added elementary toolkit
  • added exalt-client and systray module
Enjoy! :)

by Brian 'morlenxus' Miculcy at March 29, 2009 02:08 AM

March 28, 2009

Luis Felipe Strano

Canola2 Free Software + Maemo’s Summer of Code

Seventy Six trombones led the big parade
With a hundred and ten cornets close at hand …

Others have blogged about it already, but I still felt like I had to post something. Canola2 is now Free Software. We’ve been working on it since last year, and it has been quite an experience. As developer and team leader at ProFUSION, I can say that we’ve learned quite alot with this project and that we hope now with the release of the source code it will grow into a nice community.

I once heard that everytime a piece of proprietary software is released a puppy is born and angels sing Hallelujah in the sky. Don’t know if that is actually true, but either way, the source code is here and instructions for building it are here.

Google’s Summer of Code for 2009 has also started, and is now accepting student applications. Maemo got in as a mentoring organization, and I’ll be mentoring possible projects there (as will glima and antognolli from ProFUSION). There are a few ideas of plugins for Canola in Maemo’s suggested projects page. If you are eligible and want to develop for Canola, talk to us on irc.freenode.net at #canola.

by messias at March 28, 2009 03:38 PM

Gustavo Sverzut Barbieri

PyCON USA and Canola2

So here I am at Chicago attending at PyCON USA where I’ll present how Python enabled the development of mobile media center (Canola2) in record time. So far it’s being an amazing conference, lots of interesting talks but more MacOS-X than I’d like to see in a conference about a free software technology (at least we seem to have more Linux than Windows).

As for freedom, free software, mobile media centers and specially Canola2: as announced previously at Maemo community, Canola2 is now opensource (GPLv3)! That’s amazing news, specially to me as I have Canola2 as my baby and would like to have more people involved into its development. It’s not just a great end-user software, it’s an amazing Python platform where you can build all kind of rich user interface.

As you might know, ProFUSION is working with INdT to improve Canola2 and we plan to keep supporting it, starting with some instructions and scripts, see our post for more details. As we want to build a community around it, don’t miss the mailing list and our IRC channel #canola at irc.freenode.net.

by Gustavo Sverzut Barbieri at March 28, 2009 03:33 PM

March 04, 2009

Jorge 'turran' Luis Zapata

Glamo Xrender Benchmark with Expedite

Yesterday I've been testing the xrender engine on evas using the current EXA acceleration found in glamo (that is: solid fills and surface blitting). Sadly the test was taking ages to finish and even after walking up and leaving it the whole night it didnt finish but hang on the text test.

So, i wanted to test just the glue found on XRender and the implementation of it using EXA, but without painting anything, just memory moves from system memory to VRAM and the neccesary logic found on the Evas' Xrender engine. So I "removed" (just return TRUE) the functions from the xf86-video-glamo driver and .... here are the results:

.nobr br { display: none }








BenchmarkSoftware X11XRender without painting
Image Blend Unscaled2.76????
Image Blend Solid Unscaled12.6913.72
Image Blend Nearest Scaled1.5618.14
Image Blend Nearest Solid Scaled8.7718.00
Image Blend Smooth Scaled0.4518.22
Image Blend Smooth Solid Scaled5.9317.59
Image Blend Nearest Same Scaled5.0221.26
Image Blend Nearest Solid Same Scaled 22.0517.73
Image Blend Smooth Same Scaled1.2720.96
Image Blend Smooth Solid Same Scaled11.8417.76
Image Blend Border0.511.83
Image Blend Solid Border6.671.97
Image Blend Border Recolor0.441.23
Image Quality Scale4.29 1.97
Image Data ARGB7.223.71
Image Data ARGB Alpha4.89 1.70
Image Data YCbCr 601 Pointer List6.543.16
Image Data YCbCr 601 Pointer List Wide Stride6.045.40
Image Crossfade6.674.61
Text Basic9.282.25
Text Styles1.050.17
Text Styles Different Strings0.790.14
Text Change5.641.86
Textblock Basic5.671.50
Textblock Intl4.672.46
Rect Blend1.819.66
Rect Solid9.5718.02
Rect Blend Few69.84?????
Rect Solid Few84.2261.79
Image Blend Occlude 1 Few41.09196.75
Image Blend Occlude 2 Few24.0047.37
Image Blend Occlude 3 Few17.5070.32
Image Blend Occlude 143.2626.20
Image Blend Occlude 214.5914.03
Image Blend Occlude 34.8721.06
Image Blend Occlude 1 Many27.3112.14
Image Blend Occlude 2 Many6.814.61
Image Blend Occlude 3 Many2.21????
Image Blend Occlude 1 Very Many3.791.54
Image Blend Occlude 2 Very Many0.660.43
Image Blend Occlude 3 Very Many0.360.58
Polygon Blend3.511.69
EVAS SPEED11.8618.66



The results are very disappointing, there are several places where drawing on software is better than just doing the logic on XRender/EXA to achieve the same result but without drawing. And in the tests where XRender/EXA is better the speed up doesn't worth as the drawing will be for sure slower. Note that the Glamo chip can only do raster operations into a destination surface of format RGB565, which means that there wont be any acceleration even if the blending is possible on hardware as Evas uses ARGB8888 premul.

Then, how to improve the speed of the rendering on Evas specifically for this chip? The path through XRender/EXA is worthless, is there any other way? Well. one possibility we could use, is to use the Evas' software_16 engine (a destination surface of format RGB565) to reduce the bandwidth needed, but how to match that with the XRender API?

Another solution could be to leave the efforts on xf86-video-glamo acceleration and just build a specific Evas engine for glamo. Mmap the whole framebuffer memory and manage it through Eina's memory pool manager, handle the surfaces ourselves and do a mix between software_16 and this specific engine. A lot of work, yes, but looks like the only solution (X away) that can give us some results. But there's a problem, how to send the changes into the displayed X window? because in our engine we'll use a VRAM backbuffer and we can't know from a X client the phyisical memory of the area the window is being drawn. So we'll have a roundtrip here, physical memory (our glamo surface) -> virtual memory (Xshm/X memory) -> physical memory (destination framebuffer), that for sure will remove any speedup.

Suggestions?

by turran (noreply@blogger.com) at March 04, 2009 12:09 AM

March 01, 2009

Jorge 'turran' Luis Zapata

Initial Benchmark of the xf86-video-glamo on GTA02

After my tremendous problems building my build environment I have finally succeed :)
So I had the chance to give xorg-video-glamo a try and see how well it behaves. To do the benchmark I used expedite and the results are:


2.76 , Image Blend Unscaled
12.69 , Image Blend Solid Unscaled
1.56 , Image Blend Nearest Scaled
8.77 , Image Blend Nearest Solid Scaled
0.45 , Image Blend Smooth Scaled
5.93 , Image Blend Smooth Solid Scaled
5.02 , Image Blend Nearest Same Scaled
22.05 , Image Blend Nearest Solid Same Scaled
1.27 , Image Blend Smooth Same Scaled
11.84 , Image Blend Smooth Solid Same Scaled
0.51 , Image Blend Border
6.67 , Image Blend Solid Border
0.44 , Image Blend Border Recolor
4.29 , Image Quality Scale
7.22 , Image Data ARGB
4.89 , Image Data ARGB Alpha
6.54 , Image Data YCbCr 601 Pointer List
6.04 , Image Data YCbCr 601 Pointer List Wide Stride
6.67 , Image Crossfade
9.28 , Text Basic
1.05 , Text Styles
0.79 , Text Styles Different Strings
5.64 , Text Change
5.67 , Textblock Basic
4.67 , Textblock Intl
1.81 , Rect Blend
9.57 , Rect Solid
69.84 , Rect Blend Few
84.22 , Rect Solid Few
41.09 , Image Blend Occlude 1 Few
24.00 , Image Blend Occlude 2 Few
17.50 , Image Blend Occlude 3 Few
43.26 , Image Blend Occlude 1
14.59 , Image Blend Occlude 2
4.87 , Image Blend Occlude 3
27.31 , Image Blend Occlude 1 Many
6.81 , Image Blend Occlude 2 Many
2.21 , Image Blend Occlude 3 Many
3.79 , Image Blend Occlude 1 Very Many
0.66 , Image Blend Occlude 2 Very Many
0.36 , Image Blend Occlude 3 Very Many
3.51 , Polygon Blend
11.86 , EVAS SPEED

The benchmark took around half an hour to end and from the final EVAS SPEED value, it is really, really slow.

Note that right now the driver is just a wrapper on top of the fbdev, so no acceleration is coded yet, only software based rendering and giving that the CPU isn't that fast either, there's no surprise on the benchmark.

The Xrender acceleration is one of the possibilities to improve the performance and the good news is that Evas already provides a Xrender based engine. So let's get the hands dirty and start hacking the driver! :)

by turran (noreply@blogger.com) at March 01, 2009 07:46 PM

February 25, 2009

pfritz

Mythbusting


Today I was talking with Vincent about the memory usage of the Ecore and Eina datatypes. And he stated that Eina’s datatypes are using less memory then the counter-parts of Ecore. That wasn’t the first time that I heard about that myth, and I don’t know how it ever came off, if it was because of ignorance or if it is just a lie to promote Eina as the best stuff ever. In dubio pro reo! So let me show you that it is simply not true.

For the lists the calculation is pretty simple. The container base of Ecore_List and Ecore_DList has 4 pointers and 2 integers. That are on a 32-bit architecture, 24 bytes. The nodes of Ecore_List has 2 pointers the double linked version has 3. On 32-bit that are 8 and 12 bytes. The countainer base of Eina_List takes one integer and one pointer the nodes are taking 4 pointers. That are on 32-bit systems that are 8 and 16 bytes. If you now want to calculate the memory usage you get the formulas for Ecore_List 32 + 8n, for Ecore_DList 32 + 12n, for Eina_List 8 + 16n. And there is the special case that Eina_List is using 0 bytes if the list is empty. Indeed, Eina_List is using less memory then Ecore_Dlist, but only for lists that are shorter then 4 nodes! For large lists where the container base size is negliable it is using 33% more space.

For hashes the calculations are a bit more difficult. Ecore doesn’t use a static bucket size and Eina has a nested tree structure for collisions protection. If I understood it right, it has a tree for every hash value, those nodes are called heads, and every head has a tree for futher collisions. Since the formulars are here more complexe, I don’t want to discuss them in detail. I put them into a little c app, to actually calculate them. Since the memory usage of Eina_Hash differs depending of the quality of the hash function, I’ve calculated the best case (no collisions) and the worst case (only one hash value for every key). The real world case is some where between those two values. For bit fields I used the size of an integer, which should be at least on 32-bit architectures correct. You can find the source code here: http://mowem.de/ecore/hash.c

The results can be found here: http://mowem.de/ecore/plot1000.png http://mowem.de/ecore/plot10000.png

The red line is for Ecore, the blue for the worst case of Eina and the green line is for the best case scenario. Note: with best/worst case senario I’m talking about hash collisions and not about memory usage! So what we see is that Eina_Hash eats between 100% and 275% more memory then Ecore_Hash.

I know that there is a trade-off between memory usage and performance, but please stop pretending that Eina datatypes are using less memory then the Ecore counterparts. It’s simply not true.

pfritz

by pfritz at February 25, 2009 05:51 PM

February 24, 2009

Brian 'morlenxus' Miculcy

Busy!

Sorry folks, i'm absolutely busy with reallife stuff and work. I know i have a bunch of emails in my inbox but i currently don't have the time to respond to them. Please give me a little bit more time... Thanks :)

by Brian 'morlenxus' Miculcy at February 24, 2009 02:44 AM

February 23, 2009

mekius

Little Update

So I figured it had been long enough between posts and I should maybe throw a little update up here :) Nothing too exciting, just more work, family, etc.

In the work realm, things are getting crazy lately. A lot of stuff needs to get done ASAP. Isn't that how all businesses run? Anyway, I've been working a bit of overtime lately which has lead to me being quite worn out from it all. The weekends are generally no safe haven either since there is usually at least one party, event, etc planned.

Even though I'm busy with all of that I've been trying to spend time with my wife and daughter. My daughter, who is about 2 1/2, is starting to say quite a few words and beginning to figure things out. This has led to me having to watch what I say as well as not leaving this lay around quite so much :)

But I think right now I'm fairly happy with where I'm at, but any change is welcome, as long as it's good change. Can't say I'm too excited about the current economic situation. Also not too excited about the decisions our newly elected 'Messiah', as some like to call him, has made to fix it. The future looks bleak and I just hope we can all find some sturdy cardboard to cover ourselves.

February 23, 2009 06:30 AM

February 10, 2009

Toma

Keys… A step in a different direction


Hi all!

Back again. This time, without any theme advice and tips, but instead I give you Keys! Its a python-efl based on screen keyboard. I really needed an on-screen keyboard for my Aspire One and illume is madness for a desktop/laptop type machine. Onboard is a great little app written in python and quite function all, but sadly, its ugly as sin. After about a week of learning python, I hacked together this little app! Its 80 lines of python mixed with 300 lines of edje, so you can tell that its VERY heavily based on edje and that means you can change a lot of things about it without any need to know python.

The gritty info about it, is that it waits for the edje to send a clicked signal with the keycode attached then fires that out. Simple. VERY simple. You will need to compile some of the python-efl modules though. These are python-evas, python-ecore, python-edje. Also required is the virtkey python module. The size of the whole package is a whopping 600kb, but that’s mainly due to the font. If you use a fixed sys font, I’m sure you could get it under 100kb.

To check it out,

svn co http://svn.enlightenment.org/svn/e/trunk/PROTO/keys

And some eye-candy…

2 copied of Keys running to show the Shift function and resize capabilities.

2 copied of Keys running to show the Shift function and resize capabilities.

That’s it from me for now. I’m busy filling E17 with some icons. Very tedious work. Would much rather be hacking away at some crazy edje thing. Anyway…

Enjoy!

Toma.

Tomakeys

by edjy at February 10, 2009 01:30 AM

February 07, 2009

Luis Felipe Strano

Canola’s new release

After working on Canola for the past couple of months, finally we get to see it released. Hopefully people will like this new version, which is both faster and more stable (or less stable, I’m never quite sure which one we picked). We’re now back following the latest revision of the Enlightenment Foundation Libraries, which allowed us to make the UI experience alot smoother (check it out by going to the Photos section). Also there are a bunch of new features and lots of bugs fixed, so try it out yourself and tell us what you think. Hopefully now development of Canola will get back to more regular releases, and we’ll start seeing more external plugins being developed (such as the flickr plugin being done by Thomas Schimdt, available here).

For this release we went above and beyond the call of duty, doing tests that no one had ever done before (at least to our knowledge). That’s why we can say, with much confidence, that Canola works perfectly while drinking in Buenos Aires:

Canola in Buenos Aires

Canola in Buenos Aires

Testing in other capitals will ensue. Cheers !!!

by messias at February 07, 2009 03:12 AM

January 22, 2009

Gustavo Sverzut Barbieri

Presenting at PyCon US ‘09

Now that the list is published I can announce that my talk was approved and I’ll present at PyCon US 2009!

My talk Python enabling mobile media centers will tell you all how Python made it possible to finish Canola2 in record time and how it does not suck performance wise in mobile devices as the Nokia N800, N810 and it is even acceptable on 770! I’ll quickly cover how painful development of first version in C was, how we profiled, tools we used to write Python-EFL bindings and more.

For my beloved Brazilian friends, I plan to present it (or a similar talk) at Bossa Conference ‘09 and possible present it in Portuguese at PyCon-Brazil later this year.

by Gustavo Sverzut Barbieri at January 22, 2009 02:12 PM

January 14, 2009

Gustavo Sverzut Barbieri

Surpise: Qt goes LGPL

Wow! Making it stronger WOW to let you all know how I did feel when I received the excellent news: Qt 4.5 will be LGPL 2.1 (see official here).

I still remember myself talking to Mark Shuttleworth about possibility of Qt going LGPL and I was saying that it would never become LGPL since it was an excellent thing for Nokia, keeping adversaries away.

It turned out that I was wrong… “never say never!” they say. Nokia is seems so confident, or Motorola so non-intimidating, that it believes that doing the right thing and moving its product license to more commercial friendly will bring more developers and thus more applications.

Mark was wondering about GNOME goals could be delivered on top of Qt if this was LGPL. Well, in my opinion it is possible, but very unlikely. I dare to say GTK will get going along Qt and it will never go away. It’s about passion, not technology there.

Talking about technology and this concerns ProFUSION, I really like Qt, always did. As most of you know I hack using Qt, GTK and EFL for a long time, Qt is the easiest to use, largest and most complete library out there. And following their progress with 4.x versions you can see they’re heading the right direction, heading where EFL or MacOS libraries are today. ProFUSION will now be able to recommend Qt to a broader range of clients, those that wanted LGPL licenses to avoid licensing fees.

I’m still surprised! I expect Nokia keep doing these great surprises, the next being the next internet tablets (with $99 developer program ;-)) and maybe a Linux phone later this year!

by Gustavo Sverzut Barbieri at January 14, 2009 01:27 PM

Brian 'morlenxus' Miculcy

25C3 photos

Added my photos from this years hacker congress to the media section. This might give you a little look into this event...

by Brian 'morlenxus' Miculcy at January 14, 2009 12:18 AM

January 12, 2009

Luis Felipe Strano

Using clang’s static analyzer to debug Enlightenment

Clang’s static analyzer (description and more detailed information about setting it up here and here) is an wonderful tool that helps catching some nasty bugs and that has not been widely divulged so far. Lately we’ve been using it to help debug the Enlightenment Foundation Libraries (EFL), and I decided to post this just to help other people try it out.

In order to use it, basically one just needs to get both llvm and clang (preferably from svn, since these tools are being updated all the time) and install them somewhere on the PATH, and afterwards use the scan-build script to build the application/library you want to analyze. The output is a nice set of html files, with the reported bugs divided by type and with detailed information + commented source code.

I’m trying to maintain updated reports on the EFL here, using a really simple script that I made to compile some of the most important libraries, apart from E itself. The script is also available on the same URL, in case someone wants an easy way of trying this out.

by messias at January 12, 2009 06:13 PM

January 08, 2009

Gustavo Sverzut Barbieri

netbooks

I like them and I see why they’re the next big thing in hardware. They fit a nice spot, possible a better one than mobile internet devices/internet tablets: while they’re not as portable, they have a bigger screen, (almost) usable keyboard, more powerful cpu and bigger memory.

For geeks like me I guess it can easily replace laptops: I mostly use terminal with ssh + screen to our server, e17 as window manager (very light and fast), emacs for anything that requires me to edit, icecream/distcc to compile. Of course Firefox still don’t play well with memory and cpu, but I still have hope this bloat will go away some day. Since these netbooks have VGA port, we can easily simulate dockstations with usb keyboard+mouse and a bigger monitor. Long battery lifes are also a great thing to me. I still want to get one, but maybe I’ll wait one with ARM cpu (hopefully even longer battery life) and possible 3g as well, then let’s see if I can forget about my laptop as I did with my desktop some years ago.

But this post is also meant to highlight that non-geeks also like them! I was walking at a Brazilian mall the other day and spotted more than once some old women (the less tech-lovers out there) pointing eeepcs and saying they’d love to have those: they’re white, they’re small, “they’re soooooo cute” in their own words. Needless to say men of all ages and younger girls like these kind of toy too.

In my opinion Netbooks area is where Linux can gain great market share. Actually the market is still very small, but growing fast and Linux is there from beginning. Netbooks are not restricted to x86, so Linux can show its flexibility running on ARM and MIPS, areas where standard Windows does not play. Applications are not the same, or expected to be the same, people are not demanding heavyweight office applications, but they do demand excellent internet experience, and Firefox/Webkit technologies (not the apps!) do great there. Pidgin (libpurple or Telepathy) and other tools will help there, as well as our great multimedia platforms with MPlayer, Xine, GStreamer, VLC…

Another great thing about netbooks is that they’re cheap. Even in Brazil where everything imported is overtaxed, they’re acceptable. So people are willing to get one without fear of wasting too much money on something.

And  let’s remember we’re talking about a new product! So it’s more expensive than what it will be in few months, you don’t see internet addicts using it at the mall and here in Brazil you see no advertisement about them, expect more buzz when this happen. It’s a exciting technology, stay tuned!

by Gustavo Sverzut Barbieri at January 08, 2009 12:03 AM

January 05, 2009

jethomas

News


Well, today we released EWL 0.5.3, as its been 13 months since the last release.  According to my best estimates, 53241 lines of code were changed, and that isn’t including the massive formatting change that dj2 committed.  In addition, there were 85 bugs fixed.  Here is the release announcement:

I'm pleased to announce the release of EWL version 0.5.3. This release
has some extensive changes, including the following highlights:
       * Version 0.5.3:
         - Fixed compile warnings on 64-bit systems
         - Improved entry selection and cursor handling
         - A variety of bug fixes and type corrections
         - Formatting improvements
         - Normalized widget realize/unrealize and show/hide
         - Cleaned out private headers to reduce build times
         - Rewrite of paned widget
         - Addition of constructor unit tests
         - 'Create Directory' button added to filepicker
         - Kinetic scrolling added to the scrollpane
         - Stop building unneeded static libraries to reduce build time
         - The ewl_password widget is now part of ewl_entry to reduce code duplication
         - Various feature additions to the filepicker family of widgets
         - Better robustness of ewl_progressbar widget
         - Split flags into attributes of the ewl_object and ewl_widget objects
         - Internal XDND support
         - Improved MVC selection handling
         - Addition of a SHRINKABLE fill policy
         - Improved container behaviour
         - Keybinding support for the ewl_text widget
         - Addition of an ewl_icondialog widget
         - Improvement of model terminology
         - Add an UNMANAGED flag to improve container behaviour
         - EWL is now Evilized!
         - Addition of a alpha channel slider to the ewl_colorpicker widget
         - Autofoo improvements
         - Expanded support for config key removal
         - General window management hint improvements
         - Improved robustness of the ewl_grid widget
         - Improved widget signal handling
         - Use merged software X11 engine
         - Various code cleanups thanks to LLVM static analysis
         - Removal of original ewl_tree, rename ewl_tree2 to ewl_tree
         - Moved tutorials from the test files to seperate directory
         - Creation of coverage report with gcov and lcov is now supported
         - Addition of ewl_freebox_mvc widget
         - ewl_embed now inherits from ewl_cell instead of ewl_overlay
         - Expanding of the ewl_tree widget API
         - Various fixes and feature additions for the ewl_text widget
         - Allow the ewl_label widget to be trunctated with '...'
         - Improved the cosmetics of the debugging macros
         - Revamped ewl_combo MVC API and implementation
         - Split widget tests into GUI and unit test cases
         - Fixed widget reparenting

Thank you to the following contributors for making this release possible:

        Peter Wehrfritz
        Jaime Thomas
        Teodor Petrov
        Dan Sinclair
        Vincent Torri
        Stephen Houston

This release can be checked out from:
        http://svn.enlightenment.org/svn/e/tags/ewl/ewl-0.5.3/

Of course, Nathan Ingersoll should also get some credit for this release, seeing as he is the main author and did the actual releasing.

On a completely unrelated note, I’ve just finished moving into my house in Kanata.  I’ll be starting work tomorrow, but getting to work is a bit of a pain with the transit strike.  I’ll take a cab tomorrow morning, and hope that someone there is nice enough to offer me a ride home.  I guess I’ll see how that goes.

by j3thomas at January 05, 2009 12:26 AM

January 02, 2009

Brian 'morlenxus' Miculcy

Easy_e17.sh 1.2.3 released

Just a version bump to spread out some improvements:
  • `make clean` code has been improved
  • added exchange application
  • added drawer and places modules
  • fix package counter when preinstalled packages are found
  • new commandline argument --ask-on-src-conflicts, default behavour is now fixing src conflicts automatically
  • little fix when the svn checkout dir already exists and is empty
Upgrade please.

by Brian 'morlenxus' Miculcy at January 02, 2009 03:39 PM

December 22, 2008

Gustavo Sverzut Barbieri

Webkit-EFL interface prototype

After INdT guys released Webkit-EFL port last week some E hackers started to work an user interface on top of it, with Raoul creating a prototype called “ewww”.

I joined the hacking by creating my git repository with patches on top of Raoul’s, refactored some bits and made two smart objects: one for the scrolled webview and another with controls. Graphics and layout should be read from EDC descriptions and it looks like this:

ewww ui prototype

ewww ui prototype

This screenshot shows no scrollbars, but they exist on the right and bottom sides, they’re indicators only and will fade away after 1 second they’re displayed (usually by movements). Movements can be done by keyboard, mouse wheel or panning (drag on an “blank” area). Progress bar is under location text, like Safari. You can notice some details like smooth shadow on the viewport.

It is still very preliminary, Webkit-EFL needs lots of interfaces exposed and some bugs fixed, but we hope this can serve as a testbed for development and gather requirements. After some more work we’ll move it into E’s SVN under PROTO, but the name should change to something else since not everybody likes ewww. The good thing is that many people have ideas with regard to browser UI for embedded systems, raster wants to implement it as a little dragable icon that expands into full contros. I want to have each browser tab as a separate process and reparent its X window to a master process window/tab manager, much like Google Chrome. Let’s see how it works out in real use.

For those which would like to test:

    # if you don't have webkit-efl port, check it out: WARNING: this is HUGE!
    git clone git://code.staikos.net/webkit
    cd webkit
    git checkout origin/kenneth/efl-port
    ./autogen.sh –with-port=efl --enable-web-workers=no
    make all install

    # checkout my ewww:
    git clone git://git.profusion.mobi/users/gustavo/ewww.git
    cd ewww
    ./autogen.sh && make all install

EDIT: ewww repository missed “.git” extension.

EDIT.2: to get ewww you need git clone instead of git checkout.

by Gustavo Sverzut Barbieri at December 22, 2008 04:04 PM

December 21, 2008

Nathan Ingersoll

Always be a good boy, don't ever play with guns

I don't know how many people from "back home" actually read this, but it doesn't look like we will be coming back to Minnesota for the holidays. We haven't seen Missy's parents in a couple of years and this was the first real opportunity we've had in quite a while. So we will be traveling to Reno, NV from the 24th until the 29th. There isn't much chance we will go anywhere right after that since I think we'll be traveled out by the time we get back, but who knows, stranger things have happened.

by Nathan (noreply@blogger.com) at December 21, 2008 05:04 PM

December 20, 2008

Nathan Ingersoll

*Sigh*

I think this is one of the longest gaps between posts on my blog/news site since I started in '97. Not that I ever posted regularly, but it was usually closer to once a month.

The unusual thing is that this time it wasn't because I had nothing to say or no major events going on, but exactly the reverse. There were some pretty major events, but every time I thought to write about them they completely demotivated me. At this point, I'm hoping this rather meaningless post will help me to get past that block and feel free to start from a relatively clean slate. We'll see how that goes...

by Nathan (noreply@blogger.com) at December 20, 2008 09:03 PM

December 10, 2008

jethomas

Exam Time


Being close to Christmas break, its time for exams.  Unfortunately, Starcraft and ECDB keep me distracted and take up all of my time, so there is very little studying occurring.  Over the past two days I’ve been putting a lot of work into ECDB, and now have image burning working pretty well.  I’ve made a video to show what it can do.  Don’t mind the random percent jumps, I cut off the boring middle stuff to speed things up.

I quite like the editable textblock raster added to edje, it makes life so much easier.  With all of the time before heading off to Ottawa for co-op, I should be able to finish off data and audio disc creation.  The only issue at the moment is an old EWL bug that will cause problems with multiple embeds.  After that, I’ll start adding some configuration options and polish, then maybe someday a release.

http://vimeo.com/2477921

by j3thomas at December 10, 2008 05:03 PM

Jorge 'turran' Luis Zapata

Etch hits E's svn

Etch, a timeline based animation library, finally arrives to E's svn repository. Basically you define animations based on key frames and a data type (integer, float, argb colors, etc), set the interpolation between those key frames and your callbacks will be called at every frame based on the number of frames per second that you have set.

Etch *e;
e = etch_new();
etch_timer_fps_set(e, 30);
a = etch_animation_add(e, ETCH_UINT32, _animation_cb, NULL);
k = etch_animation_keyframe_add(a);
etch_animation_keyframe_type_set(k, ETCH_ANIMATION_COSIN);
etch_animation_keyframe_value_set(k, 10);
etch_animation_keyframe_time_set(k, 3, 3015);

Note that this library is totally agnostic about the main loop handler, you just need to call etch_timer_tick(e) to update the internal system.

The example below is an application that transforms an evas' image and moves it based on a couple of Etch's animations and Enesim's transformation functions.

by turran (noreply@blogger.com) at December 10, 2008 03:06 PM

November 29, 2008

pfritz

The Lists and their quirks


When I started to write this article I planed to write about the API of the two major list implementations and their weak points. But since this article is already long enough, I only focusing on evas_list. Don’t worry, an article about ecore_list will follow.

Both API are widely used so you should assume that they are proved to be suited for daily use. And that is right in most of the cases where I have seen them to be used. But they have some weak points, which I want to show you here. Creating a list is in both cases very simple, where it gets hairy is removing items from the list. Evas_List (now Eina_List) doesn’t have a real destroy function, so you have to figure out the best way to free a complete list.

But this is an relative easy job and you’ll find thousands of examples in the efl. The real tricky point is if you do selective destruction, i.e. you remove a list item under some conditions.

Let’s say we have a list of filenames and want to remove the files that doesn’t have the extension “.jpg”. This shouldn’t be a hard job you think, shouldn’t it? Well it could be easier.

Let’s start with Eina_List. I mimic here the unaware new user, of course I know already how to do it right. We start with the normal approach. Iterate over all items and remove the items we don’t like.

#include <Eina.h>
#include <Ecore_Str.h>
#include <string.h>
#include <stdio.h>

int
main(void)
{
        Eina_List *list = NULL;
        Eina_List *l;
        const char *file;

        eina_init();

        list = eina_list_append(list, "dsc01.jpg");
        list = eina_list_append(list, "blah");
        list = eina_list_append(list, "dsc02.jpg");
        list = eina_list_append(list, "dsc03.jpg");
        list = eina_list_append(list, "dsc04.jpg");
        list = eina_list_append(list, "dsc05.jpg");
        list = eina_list_append(list, "foooo");
        list = eina_list_append(list, "dsc07.jpg");
        list = eina_list_append(list, "dsc08.jpg");
        list = eina_list_append(list, "dada");
        list = eina_list_append(list, "dsc10.jpg");

        EINA_LIST_FOREACH(list, l, file)
        {
                if (!ecore_str_has_extension(file, ".jpg"))
                        list = eina_list_remove(list, file);
        }

        /* and now print the rest */
        while (list)
        {
                file = eina_list_data_get(list);

                printf("%s\n", file);
                list = eina_list_remove(list, file);
        }

        eina_shutdown();
        return 0;
}

This doesn’t look that bad on the first look and if you test it does indeed work. But it is wrong! Let me first explain why it is wrong, I’ll explain you later why it does work nevertheless. Let’s take a look on what the EINA_LIST_FOREACH-macro does. Here is the same loop but the macro expanded:

        for (l = list, file = eina_list_data_get(l); l; l = eina_list_next(l),
                        file = eina_list_data_get(l))
        {
                if (!ecore_str_has_extension(file, ".jpg"))
                        list = eina_list_remove(list, file);
        }

eina_list_remove() will, remove the node where l is pointing to and frees the node. So with the following l = eina_list_next(l) we are accessing an already freed node. But why doesn’t it crash? Or why doesn’t valgrind show any error? Because eina uses an memory pool, to reduce the free()s and malloc()s, so the given node isn’t in fact freed. Ok, but if eina is working like that, why shouldn’t we take it as a hidden feature, since it does the job as we need it?

Imagine we want now not only remove the non-jpg-files, but want to put them in a second list:

#include <Eina.h>
#include <Ecore_Str.h>
#include <string.h>
#include <stdio.h>

int
main(void)
{
        Eina_List *list = NULL;
        Eina_List *list2 = NULL;
        Eina_List *l;
        const char *file;

        eina_init();

        list = eina_list_append(list, "dsc01.jpg");
        list = eina_list_append(list, "blah");
        list = eina_list_append(list, "dsc02.jpg");
        list = eina_list_append(list, "dsc03.jpg");
        list = eina_list_append(list, "dsc04.jpg");
        list = eina_list_append(list, "dsc05.jpg");
        list = eina_list_append(list, "foooo");
        list = eina_list_append(list, "dsc07.jpg");
        list = eina_list_append(list, "dsc08.jpg");
        list = eina_list_append(list, "dada");
        list = eina_list_append(list, "dsc10.jpg");

        for (l = list, file = eina_list_data_get(l); l; l = eina_list_next(l),
                        file = eina_list_data_get(l))
        {
                if (!ecore_str_has_extension(file, ".jpg"))
                {
                        list = eina_list_remove(list, file);
                        list2 = eina_list_append(list2, file);
                }
        }

        /* and now print the rest */
        printf("first list:\n");
        while (list)
        {
                const char *file = eina_list_data_get(list);

                printf("\t%s\n", file);
                list = eina_list_remove(list, file);
        }

        /* and now print the rest */
        printf("second list:\n");
        while (list2)
        {
                const char *file = eina_list_data_get(list2);

                printf("\t%s\n", file);
                list2 = eina_list_remove(list2, file);
        }

        eina_shutdown();
        return 0;
}

And suddenly it doesn’t work anymore. The reason is pretty simple the removed node is put into the memory pool, but then before we iterate to the next node it is appended to the second list. So in fact we are looping after the first remove over the second list.

So how can we do it right? We need to go to the next node before we are removing the node, i.e. we need to keep a reference of the node that is to be removed and do the next step:

        for (l = list; l ;) 
        {
                Eina_List *tmp = l;

                l = eina_list_next(l);
                file = eina_list_data_get(tmp);
                if (!ecore_str_has_extension(file, ".jpg"))
                {
                        list = eina_list_remove(list, file);
                        list2 = eina_list_append(list2, file);
                }
        }

Nice that works! So are we finally done? Not quite. We are using eina_list_remove(). Although there is nothing wrong with this function, you should avoid to use it, because it does a linear search to find the node to remove, i.e. the complexity is O(n). Better use eina_list_remove_list(). Unlike the name suggests, it doesn’t remove a list, but it removes a list node, actually exactly what we want.

        for (l = list; l ;) 
        {
                Eina_List *tmp = l;

                l = eina_list_next(l);
                file = eina_list_data_get(tmp);
                if (!ecore_str_has_extension(file, ".jpg"))
                {
                        list = eina_list_remove_list(list, tmp);
                        list2 = eina_list_append(list2, file);
                }
        }

Puh, that was harden then expected, but it was doable, and we even kept it to be an O(n) algorithim. The actually bad thing was that our first shot worked by accident. So keep your eyes open, if you have ever to do a selective remove with eina_list.

pfritz

by pfritz at November 29, 2008 06:24 PM

November 20, 2008

Jorge 'turran' Luis Zapata

Enesim?

It all began when discussing some ideas about Evas, about splitting the Evas' common engine as a new direct rendering library for easy testing, to merge both a8r8g8b8 and r5g6b5 formats into a common place and for cases where one needs to draw without the canvas approach. So I took the code and did a new library called Emage (which is under the svn of efl-research Google's code) but then i realized that it was still too restrictive, mainly because the use of the graphic context, so i started a new library called Enesim. Enesim is a library that implements several graphics algorithms/concepts but flexible enough to draw whatever you want with your own pipeline. You have renderers, surfaces, rasterizers, scanlines, etc. The main purpose of this library was to be able to code vector graphics and raster graphics having a common graphics code base.

by turran (noreply@blogger.com) at November 20, 2008 10:14 AM

Evas Core, Evoak

I have uploaded the changes I've done to Evas and Evoak. The Evas package is renamed to evas_core for easy interoperation between the current evas and my own. My changes are:
  • Build Modules outside main tree
  • Rearrangement of the headers
  • Object Engine support
The Evoak's package is a rewrite of almost everything the old evoak had. Test the edje loader!. Feel free to leave any comments about them. Note that the cvs version I made my changes in is very old (a few months) so don't expect to find the latest cvs features, I didn't have the time to merge them.

by turran (noreply@blogger.com) at November 20, 2008 09:53 AM

GP2X

A few weeks ago i bought a gp2x portable console, I was interested on this device because it has Linux as operating system and also because there's a large community behind it. I have several plans with it and Enlightenmnent (mainly the EFL); but before that, the first step i should do is to port the linux 2.6.x to it. I've just registered a new Google Code's project but I'm having issues with it, don't know if it's better to register with SourceForge. There will be several news soon ....

by turran (noreply@blogger.com) at November 20, 2008 09:39 AM

November 19, 2008

Jorge 'turran' Luis Zapata

Ecore Framebuffer

After changing Ecore_Fb to handle Linux Input Device as the main input driver available I decided to go further and implement several ideas I have in mind:
  • Modules for input devices: Instead of having the input devices exclusive (linux_input or ps2/keyboard/tslib combo), ive made an abstraction to support input "modules" (for now they are just statically linked - its a similar approach to what evas had on the beginning with engines) For now we don't need real modules because the input modules is the only module type we have.
  • More Input Devices: A while ago i coded the linux_input (event devices) support and place the input devices that were on ecore_fb (tslib, keyboard, ps2) to support multiple devices (i.e two mice, three keyboards, whatever). I've re-enabled the replaced ones, following the module approach.
  • Support for keyboard layouts: In Ecore_Fb the keyboard layout was hard coded to english layout (ascii values only), with this code we can use different layouts (spanish, french, or your own), it was coded following the keymaps(5) idea. Ive also made a parser for keymaps (the files you have under /usr/share/keymaps/) which will export a c source file for now, i want to also export an eet file, but it wont be done until my eet patch gets in. btw, where's a good place to put this application? under /src/bin of ecore? on tests dir in cvs?
  • Support for not allocating a virtual terminal (in case there's no console attached to the fb) and some code to specify which fb device to use.
The only things that needs to be solved is to append the correct UTF-8 string into an Ecore_Fb event and that't it

by turran (noreply@blogger.com) at November 19, 2008 07:03 PM

November 13, 2008

Gustavo Sverzut Barbieri

ELC-E 2008 was great!

Back from The Netherlands after an amazing Embedded Linux Conference (ELC-E 2008) at Ede and then some good days at Amsterdam.

I really liked ELC-E, talked with lots of guys, my presentation was good as well (I hope so! let’s wait for the videos), you can see the slides at: http://palestras.gustavobarbieri.com.br/efl/elce2008/Rich_GUI_without_pain.pdf

After the main conference we had an extra UPnP/DLNA conference, it was really small, but interesting nonetheless.

Then I traveled to Amsterdam, it was my first time there and I really enjoyed the city, the people, the beer… and the museums, of course. There I could see the awesome piece that shows in this post called “For The Love of God”.

by Gustavo Sverzut Barbieri at November 13, 2008 11:06 PM

November 12, 2008

jethomas

Update


Its been a while, since I’ve written on here, so I guess its time for an update.  First off, I finally got a co-op job for this winter, at COM DEV International as a software developer.  I’ll be working on control systems for some parts of the James Webb Space Telescope (replacement for the Hubble Telescope), which is the best job I could hope for (although the ones for Xandros looked pretty cool as well).  I even need security clearance for it!  Anyways, I’ll be moving to Ottawa in a while for the co-op, and although its not Europe its still somewhere more interesting than here.

On an unrelated note, I’ve very slowly been working on ECDB.  I think that I have the erasing part working the way I’m happy with, although I haven’t tested it yet (don’t have an eraseable disc).  I need to ask pygi about how to simulate this.  Anyways, heres a screenshot (there is actually no EWL being used in this picture - all edje and embryo):

ecdb

by j3thomas at November 12, 2008 10:21 PM

November 01, 2008

Gustavo Sverzut Barbieri

work and pleasure

Today I finished integrating some cool code into Evas: box and table. These utility smart objects are now in Evas for good, we can stop replicating those in many projects and people who just want to use them and not a full featured toolkit like ETK or EWL are now free. More importantly: we can now expose these in Edje, making all layout elements dependent on theme, not having to rely on SWALLOW slots!

The integrated code is very flexible, it make use of the recently introduced “size hints” and also postpone heavy calculations to pre-render time with calculate smart callback. Table has three modes: regular, homogeneous based on table size and homogeneous based on largest minimum item size. Box, since it just represent a sequence of items, is more extensible and allows you to specify a layout function, we provide some like vertical, horizontal, stack, homogeneous based on box, homogeneous based on the largest minimum item size, etc… but you can easily write your “snake layout” and use it. If you need more option details than “size hints”, you can extend the class and implement options_* virtuals.

These code were integrated by me, but not totally written. Gustavo Lima, from ProFUSION, wrote the box for their sequence_box.c (it was relicensed to E’s BSD with permission) and Rasterman wrote table for his elementary “toolkit for mobiles” els_table.c.

On the pleasure and work side, I’ll fly to The Netherlands next Tuesday so I can attend ELC-E 2008 where I’ll present a talk about Rich Graphical User Interfaces on mobile systems, covering Evas, Edje and the new kids on the block Elementary and Guarana.

Last but not least, due trip and other stuff to do I’ll not be able to integrate table and box into Edje soon. If you always wanted to help E17 and EFL, now it’s your chance! :-) See my mail to the list and start hacking, I can reply to you by mail and IRC (when I’m online). We will also need Python bindings for those, so patches to python-evas and python-edje are also welcome!

by Gustavo Sverzut Barbieri at November 01, 2008 12:48 AM

October 16, 2008

Gustavo Sverzut Barbieri

Running Illume everywhere!

The Gang

Rasterman’s Gang: Nokia N810, Sharp Zaurus, OpenMoko Freerunner and Palm Treo-650

After Rasterman announced he had “The Gang” running Illume we decided to help him and run it in yet-another platform, the Freescale iMX31:

Some days ago raster already posted video of his virtual keyboard doing correction/prediction and operating on various resolutions, for those that liked my iPhone-like virtual keyboard demo for n800, this one looks better and is for real, check out his videos: 01, 02, 03 and 04

by Gustavo Sverzut Barbieri at October 16, 2008 11:31 PM

Luis Felipe Strano

X.Org and E17 packages for Ltib

Lately I’ve been working on Ltib (Linux Target Image Builder) in order to have Enjoy running on a demo iMX31 board here in ProFUSION. We’ve already published a few videos on youtube demoing our work here and here (more to follow soon), but so far the packages were scattered through different e-mails on the Ltib mailing list. But as of yesterday, Stuart Hughes merged those packages upstream and now it’s publicly available for all users of Ltib. Also, I’ve been given access to Ltib’s CVS and will be uploading more packages there soon (Enjoy and Illume are next on the list, already packaged and just in need of a few clean-ups).

If you are using Ltib and wish to test E17 (or just X.Org), here are the steps necessary (if you find anything missing from this guide or have any other suggestions, please do leave a comment here since this guide will probably be posted later on Ltib’s homepage) :

1) Update to the latest CVS version if you haven’t already.

2) If you’re going to install the Enlightenment packages, you’re going to need a few packages to be available on your host. Luckily you can just use Ltib to install them :

$ ./ltib –hostcf -p eet.spec
$ ./ltib –hostcf -p embryo.spec
$ ./ltib –hostcf -p evas.spec
$ ./ltib –hostcf -p ecore.spec
$ ./ltib –hostcf -p edje.spec

3) Run ‘./ltib –configure’, and inside Package List, there should be two new submenus, one for Enlightenment and one for X11. Choose the packages you wish to install. One package worth mentioning is Expedite, which can be easily used to benchmark your device and see if the installation was OK.

4) If you are going to run X.Org, you might need to patch xorg-server depending on your device’s supported display resolution (on CVS there is already a patch to add support for vga-portrait mode which is the default resolution for our test board, and I’m sending another patch soon to add support for WVGA).

5) Example of how to start X :

$ Xfbdev -screen 480×640 -mouse tslib,,device=/dev/input/ts0

6) Example of how to start Enlightenment :

$ DISPLAY=:0 enlightenment_start

Try it out and tell us if it worked well for you. Cheers.

by messias at October 16, 2008 06:04 PM

Toma

Blast!


Hey all,

Im up to my old tricks again, making some neat things for you to tinker with! This time Ive added to the Inspire wallpaper and added some stuff to make scaling easier. What that means to us artists, is that our work stays at the correct aspect when displayed on widescreen or standard displays. This is something that normal pixmap backgrounds obviously can not do, so we might as well use the tools we have!

Remember, this is only a demonstration of what can be done with these layers and parts. There are a multitude of things to play with in edje.

Lets get started! Firstly, fire up GIMP and create a new image at 800 x 600. (This resolution is only used for demo purposes) I created 4 layers. The base is the Blue galaxy swirl thing. This will layer be stretched to fill all the space. The next 2 are the corner graphics on their own separate layer. The last layer on top is the E logo, but you could swap this for anything, or scrap it entirely.

All the layers in Blast. These become edje parts later.

All the layers in Blast. These become edje parts later.

Next, save each layer as a separate image. This can be done by making the target layer the only visible one then saving and repeating the process. You might be able to Save Layer As… in GIMP 2.6, but I haven’t checked it out yet. Once you have all the layers separated, open them again and resize them to save some space. Things like E logo need to be in the dead centre of the image to centre correctly later.

Now comes the super fun code part! Heres the .edc from Blast. Its already commented so read on!

collections {
   group { name: "e/desktop/background";
      //
      // Lets make a wallpaper that will SCALE well!!! Because not everyone
      // has the same screen aspect these days. There are a couple ways to
      // get this to work. In this exmaple it keeps the objects at all the
      // same sizes so that no scaling happens.
      //
      // All min and max sizes are taken from their respective image properties
      //
      images {				// Include all files from the XCF
	 image: "Scaled.png" COMP;
	 image: "LeftBit.png" COMP;
	 image: "RightBit.png" COMP;
	 image: "ELogo.png" COMP;
      }
      parts {
	 part { name: "Scaled";
	    description { state: "default" 0.0;
	       image.normal: "Scaled.png"; // Make it fill all the space
	    }
	 }
	 part { name: "LeftBit";
	    description { state: "default" 0.0;
	       align: 0.0 1.0;		// Align left and at the bottom.
	       min: 334 314;		// Set the min size and...
	       max: 334 314;		// max size so it wont scale.
	       image.normal: "LeftBit.png";
	    }
	 }
	 part { name: "RightBit";
	    description { state: "default" 0.0;
	       align: 1.0 0.0;		// Align Right and at the top.
	       min: 260 284; 		// Set the min size and...
	       max: 260 284;		// max size so it wont scale.
	       image.normal: "RightBit.png";
	    }
	 }
	 part { name: "ELogo";
	    description { state: "default" 0.0;
	       min: 165 224;		// The absence of an align: will
	       max: 165 224;		// make the image centred.
	       image.normal: "ELogo.png";
	    }
	 }
      }
   }
}

Next you need to compile it up using ‘edje_cc blast.edc’ then import the picture from the Wallpaper selector. You should have a well scaled wallpaper that preserves your efforts for all screen sizes.

Here are some links to the wallpaper at a few different sizes for comparison.

1650×1080 (My Desktop)

480×640 (Embedded style display)

Wallpaper Selector

And here is the all important EDJ file for you to take home and study!

Enjoy!

Toma.

TomaBlast layout in GIMP.

by edjy at October 16, 2008 02:19 AM

October 13, 2008

Gustavo Sverzut Barbieri

x11 benchmark on embedded systems

Unlike most would say, x11 does quite well. See our benchmarks comparing X11, FB, DirectFB on a Fresscale imx31. There you can see how x11-16 bitch-slaps everything… that’s even better on n8×0 and that’s why Canola runs fast ;-)

by Gustavo Sverzut Barbieri at October 13, 2008 10:30 PM

October 09, 2008

mekius

The Cold Weather has Arrived

Summer of code is wrapping up. Only thing left is the mentor summit which I'm very excited about. I'm glad I have the opportunity to attend and hope that I can meet some people while I'm out there. It should also be a lot warmer there ;)

All in all the summer was good. My student (ptomaine) did some good work on efm. It is now much better then before and there are many things on his todo list. I also have a few things I'd like to finish when I find the time and motivation.

In other news, work is going alright. I've recently been moved to working on something else which I've never dealt with before so it's been exciting to dig into something new. My previous project is on hold for unknown reasons, but that's fine with me :)

Until next time, good night.

October 09, 2008 04:00 AM

October 08, 2008

Gustavo Sverzut Barbieri

Guarana and Enjoy 0.1.0 released!

ProFUSION is proud to announce the first public release of our Guarana framework and its demo Enjoy.

Guarana is a set of free software libraries to aid embedded application development. It comes with with a remote control access library, module loader, model-view-controller machinery, basic data structures and a fast growing widget set.

Enjoy is a demo music player targeted at embedded touchscreen devices. It uses Guarana’s MVC and widgets and Emotion to play media.

Here’s a video running on the target demo platform, a Freescale imx31 3-stack board. (it will run on N8×0, but will not play music because Emotion’s gstreamer backend uses decodebin, we need to patch it to use DSP decoders/sinks)

More information about Guarana features and an Enjoy screenshot see the original press release.

For those that don’t know, Guarana is a Brazilian plant and also the name of an excellent soft drink. It’s also the base of some energetic drinks. That’s why the demo is called Enjoy… okay, okay, it’s also because it starts with “e” as well ;-)

by Gustavo Sverzut Barbieri at October 08, 2008 03:11 AM

October 05, 2008

jethomas

ECDB Update


I had some requests on IRC for a recent screenshot of ECDB, so here’s a screencast instead:

by j3thomas at October 05, 2008 09:46 PM

Gustavo Sverzut Barbieri

LightMediaScanner 0.2.0 released

We’re proud to release a new version of LightMediaScanner, the fastest media scanner for your embedded device ;-)

This version now adds the direct relationship of audios and artists table, this will allow album-less audios to have an artist as well as have collections audios to display their artists. Yes, Canola will behave better now.

Also new are the often requested single-process scan and progress reporting.

Progress is reported using callbacks. Since it is impossible to know beforehand how many files will be in the directories before walking them, there is no “total” item reporting or percentage, this is up to you if you think it is worth to pay such penalty. Check also does not report so it’s uniform, but number of items to check is easier to discover, just check the database. These callbacks will also report the state of such file, so you can notify user if some files were skipped because they took too much to finish (more than slave_timeout).

Single process scan is now available, but it’s mostly there to aid debugging. While it will speed up scan on single-CPU machines (ie: Nokia N810), it is less safe and if it breaks/hangs (ie: due MMC being removed during parse, or bad FAT filesystem) it will bring down your whole software, so be aware of that before using.

Last but not least, our GIT moved from http://staff.get-e.org/ to http://gitweb.profusion.mobi/ (Gitweb) with repositories being cloned from git clone git://git.profusion.mobi/$PROJECT

Please report any bugs to our project at garage.maemo.org!

by Gustavo Sverzut Barbieri at October 05, 2008 04:01 PM