<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ensandecer de um computólogo &#187; efl</title>
	<atom:link href="http://danielmartins.eti.br/blog/category/efl/feed/" rel="self" type="application/rss+xml" />
	<link>http://danielmartins.eti.br/blog</link>
	<description>return 1;</description>
	<lastBuildDate>Thu, 15 Dec 2011 05:05:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Flisol &#8211; Manaus &#8211; Amazonas</title>
		<link>http://danielmartins.eti.br/blog/2009/04/27/flisol-manaus-amazonas/</link>
		<comments>http://danielmartins.eti.br/blog/2009/04/27/flisol-manaus-amazonas/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 13:46:49 +0000</pubDate>
		<dc:creator>Daniel Elias</dc:creator>
				<category><![CDATA[amazonas]]></category>
		<category><![CDATA[Computação]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[Comunidades]]></category>
		<category><![CDATA[efl]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[manaus]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[flisol-am python efl]]></category>

		<guid isPermaLink="false">http://danielmartins.eti.br/blog/?p=390</guid>
		<description><![CDATA[O flisol em manaus foi um sucesso na minha opnião, graças ao comprometimento dos &#8220;pigs&#8221; da comunidade de software livre em manaus, pessoas como Antônio Junior, Davyd Smelk, Marcelo Mendes entre outros e a estes pigs deixo aqui postado meus parabéns. houve uma quantidade razoável de participantes,  [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-391" title="flisol-manaus-logo" src="http://danielmartins.eti.br/blog/wp-content/uploads/2009/04/flisol-manaus-logo-300x162.png" alt="flisol-manaus-logo" width="300" height="162" />O flisol em manaus foi um sucesso na minha opnião, graças ao comprometimento dos &#8220;<a href="http://en.wikipedia.org/wiki/The_Chicken_and_the_Pig" target="_blank">pigs</a>&#8221; da comunidade de software livre em manaus, pessoas como <a href="http://brankinhu.eti.br/" target="_blank">Antônio Junior</a>, Davyd Smelk, <a href="http://marcelomendes.eti.br/" target="_blank">Marcelo Mendes</a> entre outros e a estes pigs deixo aqui postado meus parabéns. houve uma quantidade razoável de participantes, todas as palestras estavam cheias e as oficinas foram também bastante frequentadas.</p>
<p>Tirei algumas fotos do evento apartir do meu E71, a câmera não é boa mas como estava de dia até que as fotos ficaram boas. Segue abaixo algumas fotos.</p>
<p><a class="tt-flickr tt-flickr-Medium" title="Oficina de D-Bus" href="http://www.flickr.com/photos/danielelias/3474502331/"><img class="alignnone" src="http://farm4.static.flickr.com/3345/3474502331_dfeed09f02.jpg" alt="Oficina de D-Bus" width="500" height="375" /></a></p>
<p>A foto acima é da oficina de D-Bus.</p>
<p><a class="tt-flickr tt-flickr-Medium" title="25/04/2009" href="http://www.flickr.com/photos/danielelias/3474487847/"><img class="alignnone" src="http://farm4.static.flickr.com/3345/3474487847_54118ac03d.jpg" alt="25/04/2009" width="500" height="375" /></a></p>
<p>Coordenação do Flisol indo almoçar.</p>
<p><a href="http://www.flickr.com/photos/danielelias/tags/flisolam/" target="_blank">Mais fotos no meu flickr</a>.</p>
<p>Também não pude deixar de contribuir e fiz uma palestra sobre Python com EFL e ajudei em algumas oficinas. Como prometi na minha palestra que iria postar a minha apresentação no blog, cá estou eu postando.</p>
<p><a href="http://danielmartins.eti.br/Python_Efl_Flisol.pdf">Slides Python e EFl</a></p>
<p>Segue abaixo os códigos que fiz de exemplo, mas faltou tempo para comentar linha a linha. Para quem quiser estudar segue código.</p>
<div class="codecolorer-container python twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python2.5</span><br />
<span style="color: #808080; font-style: italic;"># -*- coding: utf-8 -*-</span><br />
<span style="color: #808080; font-style: italic;"># Copyleft </span><br />
<span style="color: #808080; font-style: italic;">#</span><br />
<span style="color: #808080; font-style: italic;"># @author: Daniel Martins</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">import</span> ecore<br />
<span style="color: #ff7700;font-weight:bold;">from</span> ecore.<span style="color: black;">evas</span> <span style="color: #ff7700;font-weight:bold;">import</span> SoftwareX11<br />
<span style="color: #ff7700;font-weight:bold;">import</span> evas<br />
<span style="color: #ff7700;font-weight:bold;">import</span> edje<br />
<br />
X_DIRECTION<span style="color: #66cc66;">,</span> Y_DIRECTION <span style="color: #66cc66;">=</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span><br />
<br />
<br />
w<span style="color: #66cc66;">,</span> h <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">800</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">480</span><br />
ee <span style="color: #66cc66;">=</span> ecore.<span style="color: black;">evas</span>.<span style="color: black;">SoftwareX11</span><span style="color: black;">&#40;</span>w<span style="color: #66cc66;">=</span>w<span style="color: #66cc66;">,</span> h<span style="color: #66cc66;">=</span>h<span style="color: black;">&#41;</span><br />
canvas <span style="color: #66cc66;">=</span> ee.<span style="color: black;">evas</span><br />
<br />
states <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span><br />
anime <span style="color: #66cc66;">=</span> <span style="color: #008000;">False</span><br />
anime_max <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span><br />
<br />
<br />
bg <span style="color: #66cc66;">=</span> canvas.<span style="color: black;">Rectangle</span><span style="color: black;">&#40;</span>color<span style="color: #66cc66;">=</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">255</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">255</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">255</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">255</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">,</span> size<span style="color: #66cc66;">=</span>ee.<span style="color: black;">size</span><span style="color: black;">&#41;</span><br />
bg.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> change_object<span style="color: black;">&#40;</span>o<span style="color: #66cc66;">,</span> e<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">global</span> w<span style="color: #66cc66;">,</span> h<span style="color: #66cc66;">,</span> states<span style="color: #66cc66;">,</span> anime_max<br />
&nbsp; &nbsp; im_w<span style="color: #66cc66;">,</span> im_h <span style="color: #66cc66;">=</span> o.<span style="color: black;">image_size</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> states <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">0</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; o.<span style="color: black;">pos_set</span><span style="color: black;">&#40;</span>w-im_w<span style="color: #66cc66;">,</span> <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">elif</span> states <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">1</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: black;">&#40;</span>x<span style="color: #66cc66;">,</span> y<span style="color: black;">&#41;</span> <span style="color: #66cc66;">=</span> o.<span style="color: black;">pos_get</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; o.<span style="color: black;">pos_set</span><span style="color: black;">&#40;</span>x<span style="color: #66cc66;">,</span> h-im_h<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">elif</span> states <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">2</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: black;">&#40;</span>x<span style="color: #66cc66;">,</span> y<span style="color: black;">&#41;</span> <span style="color: #66cc66;">=</span> o.<span style="color: black;">pos_get</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; o.<span style="color: black;">pos_set</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: #66cc66;">,</span> y<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">elif</span> states <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">3</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: black;">&#40;</span>x<span style="color: #66cc66;">,</span> y<span style="color: black;">&#41;</span> <span style="color: #66cc66;">=</span> o.<span style="color: black;">pos_get</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; o.<span style="color: black;">pos_set</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; states <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span><br />
&nbsp; &nbsp; states +<span style="color: #66cc66;">=</span> <span style="color: #ff4500;">1</span><br />
&nbsp; &nbsp; <br />
<br />
<br />
ball_object <span style="color: #66cc66;">=</span> canvas.<span style="color: black;">Image</span><span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Generic_football.png&quot;</span><span style="color: #66cc66;">,</span> geometry<span style="color: #66cc66;">=</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">0</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">66</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">65</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
im_w<span style="color: #66cc66;">,</span> im_h <span style="color: #66cc66;">=</span> ball_object.<span style="color: black;">image_size</span><br />
ball_object.<span style="color: black;">fill_set</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: #66cc66;">,</span><span style="color: #ff4500;">0</span><span style="color: #66cc66;">,</span> im_w<span style="color: #66cc66;">,</span> im_h<span style="color: black;">&#41;</span><br />
ball_object.<span style="color: black;">on_mouse_up_add</span><span style="color: black;">&#40;</span>change_object<span style="color: black;">&#41;</span><br />
ball_object.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
<br />
<span style="color: #808080; font-style: italic;"># Load and setup UI</span><br />
ee.<span style="color: black;">title</span> <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;Exemplo de Python EFL&quot;</span><br />
<br />
<br />
ee.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
ecore.<span style="color: black;">main_loop_begin</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></td></tr></tbody></table></div>
<p>Exemplo animado:</p>
<div class="codecolorer-container python twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python2.5</span><br />
<span style="color: #808080; font-style: italic;"># -*- coding: utf-8 -*-</span><br />
<span style="color: #808080; font-style: italic;"># Copyleft </span><br />
<span style="color: #808080; font-style: italic;">#</span><br />
<span style="color: #808080; font-style: italic;"># @author: Daniel Martins</span><br />
<br />
<br />
<span style="color: #ff7700;font-weight:bold;">import</span> ecore<br />
<span style="color: #ff7700;font-weight:bold;">from</span> ecore.<span style="color: black;">evas</span> <span style="color: #ff7700;font-weight:bold;">import</span> SoftwareX11<br />
<span style="color: #ff7700;font-weight:bold;">import</span> evas<br />
<span style="color: #ff7700;font-weight:bold;">import</span> edje<br />
<br />
X_DIRECTION<span style="color: #66cc66;">,</span> X_DIRECTION_NEGATIVE<span style="color: #66cc66;">,</span> Y_DIRECTION<span style="color: #66cc66;">,</span> Y_DIRECTION_NEGATIVE <span style="color: #66cc66;">=</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">4</span><span style="color: black;">&#41;</span><br />
<br />
<br />
w<span style="color: #66cc66;">,</span> h <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">800</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">480</span><br />
ee <span style="color: #66cc66;">=</span> ecore.<span style="color: black;">evas</span>.<span style="color: black;">SoftwareX11</span><span style="color: black;">&#40;</span>w<span style="color: #66cc66;">=</span>w<span style="color: #66cc66;">,</span> h<span style="color: #66cc66;">=</span>h<span style="color: black;">&#41;</span><br />
canvas <span style="color: #66cc66;">=</span> ee.<span style="color: black;">evas</span><br />
<br />
states <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span><br />
anime <span style="color: #66cc66;">=</span> <span style="color: #008000;">False</span><br />
anime_max <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span><br />
<br />
<br />
bg <span style="color: #66cc66;">=</span> canvas.<span style="color: black;">Rectangle</span><span style="color: black;">&#40;</span>color<span style="color: #66cc66;">=</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">255</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">255</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">255</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">255</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">,</span> size<span style="color: #66cc66;">=</span>ee.<span style="color: black;">size</span><span style="color: black;">&#41;</span><br />
bg.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> anime_ball<span style="color: black;">&#40;</span>img_obj<span style="color: #66cc66;">,</span> direction<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">global</span> anime_max<br />
&nbsp; &nbsp; <span style="color: black;">&#40;</span>x<span style="color: #66cc66;">,</span>y<span style="color: black;">&#41;</span> <span style="color: #66cc66;">=</span> img_obj.<span style="color: black;">pos_get</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> &nbsp; &nbsp;<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> direction <span style="color: #66cc66;">==</span> X_DIRECTION:<br />
&nbsp; &nbsp; &nbsp; &nbsp; img_obj.<span style="color: black;">pos_set</span><span style="color: black;">&#40;</span>x+<span style="color: #ff4500;">5</span><span style="color: #66cc66;">,</span>y<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; img_obj.<span style="color: black;">pass_events_set</span><span style="color: black;">&#40;</span><span style="color: #008000;">True</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> x <span style="color: #66cc66;">&gt;</span> anime_max:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; img_obj.<span style="color: black;">pass_events_set</span><span style="color: black;">&#40;</span><span style="color: #008000;">False</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">False</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> direction <span style="color: #66cc66;">==</span> X_DIRECTION_NEGATIVE:<br />
&nbsp; &nbsp; &nbsp; &nbsp; img_obj.<span style="color: black;">pos_set</span><span style="color: black;">&#40;</span>x-<span style="color: #ff4500;">5</span><span style="color: #66cc66;">,</span>y<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; img_obj.<span style="color: black;">pass_events_set</span><span style="color: black;">&#40;</span><span style="color: #008000;">True</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> x <span style="color: #66cc66;">&lt;</span> anime_max:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; img_obj.<span style="color: black;">pass_events_set</span><span style="color: black;">&#40;</span><span style="color: #008000;">False</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">False</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">elif</span> direction <span style="color: #66cc66;">==</span> Y_DIRECTION:<br />
&nbsp; &nbsp; &nbsp; &nbsp; img_obj.<span style="color: black;">pos_set</span><span style="color: black;">&#40;</span>x<span style="color: #66cc66;">,</span>y+<span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; img_obj.<span style="color: black;">pass_events_set</span><span style="color: black;">&#40;</span><span style="color: #008000;">True</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> y <span style="color: #66cc66;">&gt;</span> anime_max:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; img_obj.<span style="color: black;">pass_events_set</span><span style="color: black;">&#40;</span><span style="color: #008000;">False</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">False</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">elif</span> direction <span style="color: #66cc66;">==</span> Y_DIRECTION_NEGATIVE:<br />
&nbsp; &nbsp; &nbsp; &nbsp; img_obj.<span style="color: black;">pos_set</span><span style="color: black;">&#40;</span>x<span style="color: #66cc66;">,</span>y-<span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; img_obj.<span style="color: black;">pass_events_set</span><span style="color: black;">&#40;</span><span style="color: #008000;">True</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> y <span style="color: #66cc66;">&lt;</span> anime_max:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; img_obj.<span style="color: black;">pass_events_set</span><span style="color: black;">&#40;</span><span style="color: #008000;">False</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">False</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">True</span><br />
&nbsp; &nbsp; &nbsp;<br />
<br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> change_object<span style="color: black;">&#40;</span>o<span style="color: #66cc66;">,</span> e<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">global</span> w<span style="color: #66cc66;">,</span> h<span style="color: #66cc66;">,</span> states<span style="color: #66cc66;">,</span> anime_max<br />
&nbsp; &nbsp; im_w<span style="color: #66cc66;">,</span> im_h <span style="color: #66cc66;">=</span> o.<span style="color: black;">image_size</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> states <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">0</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; anime_max <span style="color: #66cc66;">=</span> w-im_w<br />
&nbsp; &nbsp; &nbsp; &nbsp; ecore.<span style="color: black;">animator_add</span><span style="color: black;">&#40;</span>anime_ball<span style="color: #66cc66;">,</span> o<span style="color: #66cc66;">,</span> X_DIRECTION<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">elif</span> states <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">1</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; anime_max <span style="color: #66cc66;">=</span> h-im_h<br />
&nbsp; &nbsp; &nbsp; &nbsp; ecore.<span style="color: black;">animator_add</span><span style="color: black;">&#40;</span>anime_ball<span style="color: #66cc66;">,</span> o<span style="color: #66cc66;">,</span> Y_DIRECTION<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">elif</span> states <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">2</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; anime_max <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ecore.<span style="color: black;">animator_add</span><span style="color: black;">&#40;</span>anime_ball<span style="color: #66cc66;">,</span> o<span style="color: #66cc66;">,</span> X_DIRECTION_NEGATIVE<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">elif</span> states <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">3</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; anime_max <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ecore.<span style="color: black;">animator_add</span><span style="color: black;">&#40;</span>anime_ball<span style="color: #66cc66;">,</span> o<span style="color: #66cc66;">,</span> Y_DIRECTION_NEGATIVE<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; states <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span><br />
&nbsp; &nbsp; states +<span style="color: #66cc66;">=</span> <span style="color: #ff4500;">1</span><br />
<br />
<br />
ball_object <span style="color: #66cc66;">=</span> canvas.<span style="color: black;">Image</span><span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Generic_football.png&quot;</span><span style="color: #66cc66;">,</span> geometry<span style="color: #66cc66;">=</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">0</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">66</span><span style="color: #66cc66;">,</span> <span style="color: #ff4500;">65</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
im_w<span style="color: #66cc66;">,</span> im_h <span style="color: #66cc66;">=</span> ball_object.<span style="color: black;">image_size</span><br />
ball_object.<span style="color: black;">fill_set</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: #66cc66;">,</span><span style="color: #ff4500;">0</span><span style="color: #66cc66;">,</span> im_w<span style="color: #66cc66;">,</span> im_h<span style="color: black;">&#41;</span><br />
ball_object.<span style="color: black;">on_mouse_up_add</span><span style="color: black;">&#40;</span>change_object<span style="color: black;">&#41;</span><br />
ball_object.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
<br />
<span style="color: #808080; font-style: italic;"># Load and setup UI</span><br />
ee.<span style="color: black;">title</span> <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;Exemplo de Python EFL Animado&quot;</span><br />
<br />
ee.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
ecore.<span style="color: black;">main_loop_begin</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></td></tr></tbody></table></div>
<p><a href="http://danielmartins.eti.br/python_efl_flisol_src.tar.gz" target="_blank">Link para baixar tudo, inclusive a imagem.</a> Só não esqueça que para executar é preciso ter instalado as EFL e os python bindings.Para a instalação tenho um post sobre. <a href="http://danielmartins.eti.br/blog/2008/08/23/estudando-python-efl-parte-1/" target="_blank">Confira</a>.</p>
<p>Espero que tenham gostado do evento tanto quanto eu gostei. Qualquer dúvida, crítica e/ou sugestão pode colocar nos comentários.</p>
<p>Até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://danielmartins.eti.br/blog/2009/04/27/flisol-manaus-amazonas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Estudando python EFL &#8211; edição especial :-P</title>
		<link>http://danielmartins.eti.br/blog/2008/12/16/estudando-python-efl-edicao-especial-p/</link>
		<comments>http://danielmartins.eti.br/blog/2008/12/16/estudando-python-efl-edicao-especial-p/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 05:06:38 +0000</pubDate>
		<dc:creator>Daniel Elias</dc:creator>
				<category><![CDATA[Computação]]></category>
		<category><![CDATA[Dicas & How To]]></category>
		<category><![CDATA[efl]]></category>
		<category><![CDATA[maemo]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[python efl enlightenment]]></category>
		<category><![CDATA[python efl treinamento]]></category>

		<guid isPermaLink="false">http://danielmartins.eti.br/blog/?p=333</guid>
		<description><![CDATA[Bom, irei participar de um treinamento de python EFL onde o instrutor será o Gustavo Barbiery, tentarei fazer um resumo do curso até mesmo para que me sirva de referência futura e postarei aqui no blog, tenho conhecidos que trabalham e estudam também EFL e python e que ficaram tristes por não  [...]]]></description>
			<content:encoded><![CDATA[<p>Bom, irei participar de um treinamento de python EFL onde o instrutor será o <a href="http://blog.gustavobarbieri.com.br/" target="_blank">Gustavo Barbiery</a>, tentarei fazer um resumo do curso até mesmo para que me sirva de referência futura e postarei aqui no blog, tenho conhecidos que trabalham e estudam também EFL e python e que ficaram tristes por não poderem participar do treinamento, infelizmente não é possível que todos participem. Mas como sou um cara legal e sempre gostei de compartilhar conhecimento <img src='http://danielmartins.eti.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  , além de fazer o resumo do curso que conterá muito código de exemplo. Irei também reportar a evolução do curso pelo <a href="http://twitter.com/daniel_martins" target="_blank">meu Twitter</a> em tempo real. Para isso instalei um widget no sidebar do wordpress, o qual vocês podem acompanhar ao seu lado direito da tela.</p>
<p>Para quem tem twitter, pode me seguir e fazer perguntas sobre a tecnologia em tempo real, para quem não tiver, pode deixar comentário no blog pois ficarei o tempo todo on line. Não atenderei todas as perguntas, irei filtrar as mais interessantes, portanto caprichem nas perguntas (se houver) que na primeira oportunidade que surgir perguntarei ao Gustavo e postarei no resumo do blog a resposta, sei que muitas das minhas dúvidas são as dúvidas de outros que começaram a trabalhar com EFL a pouco tempo, portanto muita coisa será respondida no resumo que farei do curso e não de forma imediata.</p>
<p>Qualquer coisa, seja sugestão ou crítica comenta ai. <img src='http://danielmartins.eti.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Update</strong>: Posts só sairão, no final de semana. Tá cruel, muita coisa pra fazer/estudar. <img src='http://danielmartins.eti.br/blog/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://danielmartins.eti.br/blog/2008/12/16/estudando-python-efl-edicao-especial-p/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Estudando python EFL &#8211; parte 2</title>
		<link>http://danielmartins.eti.br/blog/2008/12/13/estudando-python-efl-parte-2/</link>
		<comments>http://danielmartins.eti.br/blog/2008/12/13/estudando-python-efl-parte-2/#comments</comments>
		<pubDate>Sat, 13 Dec 2008 19:37:03 +0000</pubDate>
		<dc:creator>Daniel Elias</dc:creator>
				<category><![CDATA[canola2]]></category>
		<category><![CDATA[Comunidades]]></category>
		<category><![CDATA[Dicas & How To]]></category>
		<category><![CDATA[efl]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://danielmartins.eti.br/blog/?p=303</guid>
		<description><![CDATA[Continuando a série de post sobre a tecnologia EFL , a qual estou estudando e trabalhando.
Este post visa ser uma visão geral do que é e como funciona esta tecnologia e está respectivamente divido em duas seções: O que é ? e Como Funciona ?.
O que é ?
EFL é um conjunto de bibliotecas escrita em C  [...]]]></description>
			<content:encoded><![CDATA[<p>Continuando a série de <a title="Categoria EFL" href="http://danielmartins.eti.br/blog/category/efl/" target="_blank">post sobre a tecnologia EFL</a> , a qual estou estudando e trabalhando.</p>
<p>Este post visa ser uma visão geral do que é e como funciona esta tecnologia e está respectivamente divido em duas seções: O que é ? e Como Funciona ?.</p>
<p><strong>O que é ?</strong></p>
<p>EFL é um conjunto de bibliotecas escrita em C para facilitar o desenvolvimento de um gerenciador de janelas baseado no X, o famoso <a title="Enlightenement" href="http://www.enlightenment.org/" target="_blank">Enlightenment</a>, o qual possui muitos recursos <strong>eye candy</strong> sem precisar de gerenciadores de janela com suporte a aceleração através de OpenGL, ex: <a href="http://pt.wikipedia.org/wiki/Compiz" target="_blank">compiz</a>. E sempre fez um ótimo trabalho sem esse tipo de recurso.</p>
<p>Segui alguns vídeos coletados no youtube do Enlightenment em ação.</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/2yDB60wqgN4&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/2yDB60wqgN4&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p><object width="425" height="344" data="http://www.youtube.com/v/nmlmMM42C30&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/nmlmMM42C30&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p>E existem <a href="http://www.youtube.com/results?search_query=Enlightenment+e17&amp;search_type=&amp;aq=f" target="_blank">outros mais</a>. É possível implementar funcionalidades muito parecidas com as do iphone, por exemplo:</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/3UsPer9c5bg&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/3UsPer9c5bg&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p>E olha um teclado virtual feito com EFL baseado no teclado do iPhone, feito pelo <a href="http://blog.gustavobarbieri.com.br/2007/07/24/iphone-like-virtual-keyboard-for-n800/" target="_blank">Gustavo Barbiery</a>, um dos geeks que trabalha com EFL aqui no Brasil e que por sinal próxima semana estará em Manaus para dar um treinamento de EFL na <a href="http://fpf.br" target="_blank">FPF</a>¸após eu ter tido muitas conversas com o <a href="http://www.gavinho.eti.br/wiki/index.php?title=P%C3%A1gina_principal" target="_blank">chefinho</a>. <img src='http://danielmartins.eti.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><object width="425" height="344" data="http://www.youtube.com/v/TrWpUBTDDr0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="src" value="http://www.youtube.com/v/TrWpUBTDDr0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p>E como o EFL faz muito com pouco processamento, foi portado para outras arquiteturas como ARM, onde roda em dispositivos como o Internet <a href="http://danielmartins.eti.br/blog/2008/10/17/ubuntu-theme-para-o-canola2/" target="_blank">Tablet N810 da Nokia</a> e existem algumas aplicações rodando com EFL, mas a aplicação de referência de uso do EFL no <a href="http://www.maemo.org" target="_blank">Maemo</a> é o <a href="http://openbossa.indt.org.br/canola/" target="_blank">Canola</a>, que é um player para o maemo. Alguns vídeos do canola em ação:</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/bH5zTtHIy2c&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/bH5zTtHIy2c&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p><object width="425" height="344" data="http://www.youtube.com/v/FEn_NNkaJ7A&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/FEn_NNkaJ7A&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p>E roda também em celulares, e já está sendo feito uma plataforma completa para dispositivos móveis, o Illumine, e um dos geeks é um dos criadores do EFL, o Rasterman (Carsten Haitzler)<span> e olhem só sua gang que já roda illumine:</span></p>
<div class="wp-caption alignnone" style="width: 494px"><img title="Rasterman Gangs" src="http://www.rasterman.com/files/the-gang-03.jpg" alt="Rasterman Gangs" width="484" height="480" /><p class="wp-caption-text">Rasterman Gang&#39;s</p></div>
<p>E tudo isso e muito mais foi desenvolvido primariamente com EFL, Ficou afim de entender melhor e começar a desenvolver ? Bom&#8230;. posso guiá-lo pelo caminho que percorri no estudo. <img src='http://danielmartins.eti.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Como funciona ?</strong></p>
<p>Já que na <a title="Estudando python EFL  - parte 1" href="http://danielmartins.eti.br/blog/2008/08/23/estudando-python-efl-parte-1/" target="_blank">primeira parte</a> instalamos as técnologias básicas(ecore, evas, edje), vamos dá uma olhada em seu funcionamento.</p>
<p>Bem, vamos começar pelo começo. <img src='http://danielmartins.eti.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Arquitetura completa do EFL.</p>
<p><img class="alignnone" title="Arquitetura EFL." src="http://www.enlightenment.org/p/about/efl/d/efl.png" alt="" width="512" height="306" /></p>
<p>Concentre-se na parte azul da arquitetura, o core EFL.</p>
<p><strong>Evas</strong> é o canvas onde tudo é renderizado e também gera sinais para aplicação.</p>
<p><strong>Ecore</strong> é o responsável por capturar todos os eventos de uma janela originados do <a href="http://pt.wikipedia.org/wiki/X11" target="_blank">X11</a> e direcionar esses eventos para os devidos callbacks, possui também um mecanismo de MainLoop e uma série de ferramentas que auxiliam o trabalho com EFL e tarefas comuns de programação.</p>
<p>Alguns componentes do Ecore:</p>
<ul>
<li>Ecore_Con &#8211; Comunicação em rede</li>
<li>Ecore_IPC &#8211; Comunicação entre processos</li>
<li>Ecore_Config &#8211; Sistema de configuração</li>
<li>e outros.</li>
</ul>
<p><strong>Edje </strong>é um meio de separar o código da aplicação do código da interface, basicamente é o responsável por te prover o mecanismo de manipulação de objetos da interface, ou seja, manipular o canvas(evas) de forma descritiva e orientada a estados. Apartir do momento que você faz essa separação ou dividi a aplicação em camadas, você imediatamente ganha vantagens, como por exemplo no Enlightenment e no canola a interface é feita com Edje e por isso possui um mecanismo de Temas(Themes) avançado e flexível de temas, ou seja, você pode mudar toda a interface sem mexer no código da aplicação.</p>
<p>Fazendo uma analogia a arquitetura de desenvolvimento web, seria mais ou menos assim, olhe a figura do MVC abaixo</p>
<p><img class="size-full wp-image-320 alignleft" title="modelviewcontrollerdiagram" src="http://danielmartins.eti.br/blog/wp-content/uploads/2008/12/modelviewcontrollerdiagram.png" alt="modelviewcontrollerdiagram" width="321" height="151" />Sabemos que no desenvolvimento web, o <strong>Model </strong>é responsável pela lógica de negócio da aplicação, o <strong>Controller</strong> é responsável por capturar as requisições que vem da <strong>View</strong> e processa-lás junto a <strong>Model</strong> e então devolver a resposta a <strong>View</strong>, a <strong>View</strong> é a camada de apresentação que no contexto web é o html/css/javascript.</p>
<p>Olhando essa arquitetura MVC podemos fazer a seguinte analogia, que o <strong>View</strong> é o <strong>Edje</strong>, o <strong>Controller</strong> é o <strong>Ecore</strong>. E o <strong>Evas </strong> é o browser onde tudo é renderizado. <img src='http://danielmartins.eti.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Consegui explicar alguma coisa ? Se não,  deixe um comentário.</p>
<p>Falei alguma besteira ? Se sim, deixe um comentário corrigindo e colocarei os devidos créditos.</p>
<p>Próximos posts (Aguardem):</p>
<p>Estudando python EFL &#8211; parte 3 (Ecore-Evas)</p>
<p>Estudando python EFL &#8211; parte 4 (Edje)</p>
]]></content:encoded>
			<wfw:commentRss>http://danielmartins.eti.br/blog/2008/12/13/estudando-python-efl-parte-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VIM Highlight de Arquivos Edje</title>
		<link>http://danielmartins.eti.br/blog/2008/08/26/vim-highlight-de-arquivos-edje/</link>
		<comments>http://danielmartins.eti.br/blog/2008/08/26/vim-highlight-de-arquivos-edje/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 21:17:34 +0000</pubDate>
		<dc:creator>Daniel Elias</dc:creator>
				<category><![CDATA[Dicas & How To]]></category>
		<category><![CDATA[efl]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[vim highlight edje efl]]></category>

		<guid isPermaLink="false">http://danielmartins.eti.br/blog/2008/08/26/vim-highlight-de-arquivos-edje/</guid>
		<description><![CDATA[Para facilitar o desenvolvimento com arquivos edje (.edc) você pode baixar um plugin do repositório do EFL e então instalar este plugin para o vim.
Segue os passos:
$ mkdir $HOME/.vim/plugin
$ cd $HOME/.vim/plugin
$ svn co https://svn.enlightenment.org/svn/e/trunk/edje/data/edc.vim
pronto, você tem  [...]]]></description>
			<content:encoded><![CDATA[<p>Para facilitar o desenvolvimento com arquivos <strong>edje</strong> (.edc) você pode baixar um plugin do repositório do EFL e então instalar este plugin para o vim.</p>
<p>Segue os passos:</p>
<blockquote><p>$ mkdir $HOME/.vim/plugin</p>
<p>$ cd $HOME/.vim/plugin</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/edje/data/edc.vim</p></blockquote>
<p>pronto, você tem highlight quando editar os seus arquivos .edc, se o seu highlight não estiver habilitado automagicamente, quando você editar configure o tipo do arquivo:</p>
<blockquote><p>:set filetype=edc</p></blockquote>
<p>Já ajuda! <img src='http://danielmartins.eti.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://danielmartins.eti.br/blog/2008/08/26/vim-highlight-de-arquivos-edje/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Estudando python EFL &#8211; parte 1</title>
		<link>http://danielmartins.eti.br/blog/2008/08/23/estudando-python-efl-parte-1/</link>
		<comments>http://danielmartins.eti.br/blog/2008/08/23/estudando-python-efl-parte-1/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 01:45:53 +0000</pubDate>
		<dc:creator>Daniel Elias</dc:creator>
				<category><![CDATA[Computação]]></category>
		<category><![CDATA[Dicas & How To]]></category>
		<category><![CDATA[efl]]></category>
		<category><![CDATA[maemo]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[python efl enlightenment]]></category>

		<guid isPermaLink="false">http://danielmartins.eti.br/blog/?p=180</guid>
		<description><![CDATA[Bom, nos últimos tempos tenho estudado o Maemo, que utiliza o GTK como base dos widgets e de expansão da plataforma, mas vendo aplicações como canola que usa EFL, acredito que para uma aplicação mais interativa e eye-candy realmente vale a pena considerar o EFL como tecnologia para o  [...]]]></description>
			<content:encoded><![CDATA[<p>Bom, nos últimos tempos tenho estudado o <a title="Maemo" href="http://www.maemo.org" target="_blank">Maemo</a>, que utiliza o GTK como base dos widgets e de expansão da plataforma, mas vendo aplicações como canola que usa <a href="http://www.enlightenment.org/p.php?p=about/efl&amp;l=en" target="_blank">EFL</a>, acredito que para uma aplicação mais interativa e <strong>eye-candy</strong> realmente vale a pena considerar o <a href="http://www.enlightenment.org/p.php?p=about/efl&amp;l=en" target="_blank">EFL</a> como tecnologia para o desenvolvimento de aplicações para maemo, imaginei que a instalação do ambiente fosse algo mais trivial (e é depois que aprendi),  com a ajuda do <a href="http://blog.gustavobarbieri.com.br/" target="_blank">Gustavo Barbiery</a> consegui finalizar a configuração do ambiente. E agora estou escrevendo um how-to para complementar o aprendizado.</p>
<p>A idéia é escrever um conjunto de posts para compartilhar os conhecimentos adquiridos, ajudando os mais novos (assim como eu) entrar no desenvolvimento de aplicações para maemo ou desktop utilizando esta tecnologia. Pretendo nos posts ter 2 seções uma com resumo e outra explicando com mais detalhes para os que não possuem muita experiência com linux possam entender e aprender.</p>
<p>Para constar, estou usando o Ubuntu 8.10.</p>
<p><strong>Resumido:</strong></p>
<ol>
<li>Instalar os pacotes <strong>build-essential libpng12-dev libjpeg62-dev python-setuptools librsvg2-dev python2.5-dev subversion autoconf automake autotools-dev m4 libtool cvs git-core libdbus-1-dev<br />
</strong></li>
<li>Fazer o checkout do código do trunk do svn do enlightenment dos seguintes pacotes: <strong>eina</strong> <strong>eet evas ecore </strong><strong> embryo </strong><strong>edje etk edje_editor.</strong></li>
<li>Compilar os códigos na seguinte ordem: <strong>eina</strong> <strong>eet evas ecore </strong><strong>embryo</strong><strong> edje etk edje_editor.<br />
</strong></li>
<li>Fazer checkout dos bindings do efl para python do SVN: <strong>cython python-efl-utils python-evas python-ecore python-edje</strong> <strong>python-etk</strong>.</li>
<li>Instalar os pacotes na seguinte ordem: <strong>python-efl-utils python-evas.</strong></li>
<blockquote>
<li>Após instalar o <strong>python-evas</strong>, você precisa instalar os headers para compilar o <strong>python-ecore</strong>, então: <strong><em>python setup.py install_headers</em></strong></li>
</blockquote>
<li>Continuar a instalação dos pacotes dos bindings: <strong>python-ecore</strong>, <strong>python-edje e python-etk<br />
</strong></li>
</ol>
<p><strong>Detalhado:</strong></p>
<p>Instalar os pacotes essenciais para compilar os códigos, usando apt-get ou aptitude:</p>
<blockquote><p>$ apt-get install <strong>build-essential libpng12-dev libjpeg62-dev python-setuptools librsvg2-dev python2.5-dev subversion autoconf automake autotools-dev m4 libtool cvs </strong><strong>git-core libdbus-1-dev<br />
</strong></p></blockquote>
<p>Após instalar esses pacotes é preciso fazer o checkout do repositório do enlightenment, você pode criar uma pasta no seu home e entre no diretório:</p>
<blockquote><p>$ mkdir $HOME/e_src</p>
<p>$ cd $HOME/e_src</p></blockquote>
<p>entrar na pasta e fazer o checkout dos códigos <strong>eina</strong> <strong>eet </strong><strong>evas ecore </strong><strong>embryo edje etk edje_editor</strong>:</p>
<blockquote><p>$ svn co https://svn.enlightenment.org/svn/e/trunk/eina eina</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/eet eet</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/evas evas</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/ecore ecore</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/embryo embryo</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/edje edje</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/etk etk</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/edje_editor edje_editor</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/e_dbus e_dbus</p></blockquote>
<p>após ter feito o checkout do código, você precisar exportar os códigos para não mexer no código que veio pelo svn assim você pode aproveitar sempre as alterações do código, para atualizar sua cópia do svn basta:</p>
<blockquote><p>$ svn up</p></blockquote>
<p>crie uma pasta onde conterá o código exportado para compilação e entre na diretório:</p>
<blockquote><p>$ mkdir $HOME/e_src_exported</p>
<p>$ cd $HOME/e_src_exported</p></blockquote>
<p>exportando:</p>
<blockquote><p>$ svn export $HOME/e_src/eina eina</p>
<p>$ svn export $HOME/e_src/eet eet</p>
<p>$ svn export $HOME/e_src/evas evas</p>
<p>$ svn export $HOME/e_src/ecore ecore</p>
<p>$ svn export $HOME/e_src/embryo embryo</p>
<p>$ svn export $HOME/e_src/edje edje</p>
<p>$ svn export $HOME/e_src/e_dbus e_dbus</p></blockquote>
<p>após exportar, precisamos compilar, começaremos pelo <strong>eina </strong>e estes comandos devem ser repetidos para cada diretório:</p>
<blockquote><p>$ cd eina</p>
<p>$ sh autogen.sh</p>
<p>$ make</p>
<p>$ sudo make install</p>
<p>$ sudo ldconfig</p>
<p>$ cd ..</p></blockquote>
<p>depois o <strong>eet</strong>:</p>
<blockquote><p>$ cd eet</p>
<p>$ sh autogen.sh</p>
<p>$ make</p>
<p>$ sudo make install</p>
<p>$ sudo ldconfig</p>
<p>$ cd ..</p></blockquote>
<p>depois <strong>evas</strong>:</p>
<blockquote><p>$ cd evas</p>
<p>$ sh autogen.sh</p>
<p>$ make</p>
<p>$ sudo make install</p>
<p>$ sudo ldconfig</p>
<p>$ cd ..</p></blockquote>
<p>depois <strong>ecore</strong>:</p>
<blockquote><p>$ cd ecore</p>
<p>$ sh autogen.sh</p>
<p>$ make</p>
<p>$ sudo make install</p>
<p>$ sudo ldconfig</p>
<p>$ cd ..</p></blockquote>
<p>depois o <strong>embryo</strong>:</p>
<blockquote><p>$ cd embryo</p>
<p>$ sh autogen.sh</p>
<p>$ make</p>
<p>$ sudo make install</p>
<p>$ sudo ldconfig</p>
<p>$ cd ..</p></blockquote>
<p>depois e por último o <strong>edje</strong>:</p>
<blockquote><p>$ cd edje</p>
<p>$ sh autogen.sh</p>
<p>$ make</p>
<p>$ sudo make install</p>
<p>$ sudo ldconfig</p>
<p>$ cd ..</p></blockquote>
<p>depois o <strong>etk</strong>:</p>
<blockquote><p>$ cd etk</p>
<p>$ sh autogen.sh</p>
<p>$ make</p>
<p>$ sudo make install</p>
<p>$ sudo ldconfig</p>
<p>$ cd ..</p></blockquote>
<p>depois o <strong>edje_editor:</strong></p>
<blockquote><p>$ cd edje_editor</p>
<p>$ sh autogen.sh</p>
<p>$ make</p>
<p>$ sudo make install</p>
<p>$ cd ..</p></blockquote>
<p>depois o <strong>e_dbus:</strong></p>
<blockquote><p>$ cd e_dbus</p>
<p>$ sh autogen.sh</p>
<p>$ make</p>
<p>$ sudo make install</p>
<p>$ cd ..</p></blockquote>
<p>Antes de instalar os bindings é preciso instalar algumas dependências:</p>
<blockquote><p>$ wget -c http://www.cython.org/Cython-0.10.3.tar.gz</p>
<p>$ git clone git://git.profusion.mobi/users/ulisses/python-dispatcher.git</p></blockquote>
<p>E após, instale o <strong>Cython</strong>:</p>
<blockquote><p>$ tar -zxvf Cython-0.10.3.tar.gz</p>
<p>$ cd Cython-0.10.3</p>
<p>$ sudo python setup.py install</p>
<p>$ cd ..</p></blockquote>
<p>e o <strong>Python-Dispather</strong>:</p>
<blockquote><p>$ cd python-dispatcher</p>
<p>$ sudo python setup.py install</p>
<p>$ cd ..</p></blockquote>
<p>Após ter compilado e instalado os componentes essenciais do EFL, você precisa compilar e instalar os bindings para python, baixando os pacotes dentro do mesmo diretório pra onde exportou o código do svn:</p>
<blockquote><p>$  svn co https://svn.enlightenment.org/svn/e/trunk/BINDINGS/python/python-evas</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/BINDINGS/python/python-ecore</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/BINDINGS/python/python-edje</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/BINDINGS/python/python-etk</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/BINDINGS/python/python-e_dbus</p></blockquote>
<p>Exportando:</p>
<blockquote><p>$ cd $HOME/e_src_exported</p>
<p>$ svn export $HOME/e_src/python-evas python-evas</p>
<p>$ svn export $HOME/e_src/python-ecore python-ecore</p>
<p>$ svn export $HOME/e_src/python-edje python-edje</p>
<p>$ svn export $HOME/e_src/python-etk python-etk</p></blockquote>
<p>depois o <strong>python-evas</strong>:</p>
<blockquote><p>$ cd python-evas</p>
<p>$ sudo python setup.py install</p>
<p>$ sudo python setup.py install_headers</p>
<p>$ cd ..</p></blockquote>
<p>depois o  <strong>python-ecore</strong>:</p>
<blockquote><p>$ cd python-ecore</p>
<p>$ sudo python setup.py install</p>
<p>$ cd ..</p></blockquote>
<p>depois o <strong>python-edje</strong>:</p>
<blockquote><p>$ cd python-edje</p>
<p>$ sudo python setup.py install</p>
<p>$ cd ..</p></blockquote>
<p>depois o <strong>python-etk</strong>:</p>
<blockquote><p>$ cd python-etk</p>
<p>$ sudo python setup.py install</p>
<p>$ cd ..</p></blockquote>
<p>depois o <strong>python-e_dbus</strong>:</p>
<blockquote><p>$ cd python-e_dbus</p>
<p>$ sudo python setup.py install</p>
<p>$ cd ..</p></blockquote>
<p>Pronto! você possui uma instalação funcional.</p>
<p>Para testar, você pode o exemplo que o <a href="http://blog.gustavobarbieri.com.br/2007/06/23/edje-demo-on-n800-application-launcher-mockup/" target="_blank"><strong>Gustavo Barbiery</strong></a> fez, você precisa fazer o checkout:</p>
<blockquote><p>$ mkdir $HOME/efl_demo</p>
<p>$ cd $HOME/efl_demo</p>
<p>$ svn co https://svn.enlightenment.org/svn/e/trunk/BINDINGS/python/python-edje/examples/evas-demo/01-app_launcher 01-app_launcher</p>
<p>$ cd 01-app_launcher</p>
<p>$ edje_cc 01-app_launcher.edc</p>
<p>$ python 01-app_launcher.py</p></blockquote>
<p>Se tudo funcionar,  pronto você realmente tem uma instalação funcional do python efl. <img src='http://danielmartins.eti.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Fontes:</p>
<p><a href="http://wiki.enlightenment.org/index.php/Creating_Edje_User_Interfaces" target="_blank">http://wiki.enlightenment.org/</a></p>
<p>Basicamente, não tem muita referência de instalação do <a href="http://www.enlightenment.org/p.php?p=about/efl&amp;l=en" target="_blank">efl</a> e esse é um dos motivos de eu estar escrevendo o post.</p>
<p>Qualquer coisa comenta ai! <img src='http://danielmartins.eti.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Update 24/01/09</strong>: Adicionado compilação do <strong>e_dbus</strong> e <strong>python-e_dbus</strong>.</p>
<p><strong>Update 01/09/08</strong>: Considerando uma instalação inicial inclui mais alguns pacotes para instalar antes de iniciar a compilação: <strong>autoconf automake autotools-dev m4 libtool</strong></p>
<p><strong>Update 14/10/08</strong>: Houve mudanças nos repositórios do EFL, e agora é preciso compilar também o pacote EINA. Incluído Eina e correções na hora de instalar os bindings</p>
<p><strong>Update 22/12/08</strong>: Esse modo de instalação que fiz funcionava bem com a versão antiga do efl, antes do eina. Atualizei para a versão do SVN e inclui a instalação de mais 2 pacotes do EFL, 1 binding e um utilitário(python-dispatcher) e a remoção do python-efl-utils. E tudo feito no ubuntu 8.10.</p>
]]></content:encoded>
			<wfw:commentRss>http://danielmartins.eti.br/blog/2008/08/23/estudando-python-efl-parte-1/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

