<?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>eduardofleury.com &#187; Canola</title>
	<atom:link href="http://blog.eduardofleury.com/archives/category/canola/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.eduardofleury.com</link>
	<description>Thoughts, shuffled...</description>
	<lastBuildDate>Sat, 01 May 2010 00:22:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Canola-like layout in Qt Kinetic</title>
		<link>http://blog.eduardofleury.com/archives/2009/04/69/</link>
		<comments>http://blog.eduardofleury.com/archives/2009/04/69/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 22:17:15 +0000</pubDate>
		<dc:creator>fleury</dc:creator>
				<category><![CDATA[Canola]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Misc Links]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Primary]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[Qt Labs Americas (en)]]></category>
		<category><![CDATA[animated layouts]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[brasil]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[openbossa]]></category>
		<category><![CDATA[recife]]></category>
		<category><![CDATA[rich UI]]></category>

		<guid isPermaLink="false">http://blog.eduardofleury.com/?p=69</guid>
		<description><![CDATA[Hi all, We&#8217;ve just uploaded a new video showing our latest animated layout example. You can check it at: OpenBossa&#8217;s Youtube Channel Or here: Rather than showing how to animate from one layout to another, this example shows how could a Qt user create his/her own custom layout that uses QGraphicsLayoutProxies internally to animate its [...]]]></description>
			<content:encoded><![CDATA[<p>Hi all,</p>
<p>We&#8217;ve just uploaded a new video showing our latest animated layout example.</p>
<p>You can check it at:<br />
<a href=http://www.youtube.com/openbossa>OpenBossa&#8217;s Youtube Channel</a></p>
<p>Or here:<br />
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/eJcTBJaPRZg&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/eJcTBJaPRZg&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>Rather than showing how to animate from one layout to another, this example shows how could a Qt user create his/her own custom layout that uses QGraphicsLayoutProxies internally to animate its items.</p>
<p>From the usage point of view, once the layout is ready, all one has to do is to add or remove widgets to the layout or resize it to see them animating to the right places.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eduardofleury.com/archives/2009/04/69/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using QAnimation to create Animated Qt Layouts</title>
		<link>http://blog.eduardofleury.com/archives/2009/02/51/</link>
		<comments>http://blog.eduardofleury.com/archives/2009/02/51/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 15:22:27 +0000</pubDate>
		<dc:creator>fleury</dc:creator>
				<category><![CDATA[Canola]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Misc Links]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Português]]></category>
		<category><![CDATA[Primary]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[Qt Labs Americas (en)]]></category>
		<category><![CDATA[Talks]]></category>
		<category><![CDATA[qt; animated layouts; rich UI; gui; animation;]]></category>

		<guid isPermaLink="false">http://blog.eduardofleury.com/?p=51</guid>
		<description><![CDATA[In this post I&#8217;ll share a little bit about what we&#8217;ve been working with, Animated Layouts in Qt. To be more precise, how we have been animating QGraphicsLayouts. Layouts If you are familiar with Qt, chances are you have already used layouts and widgets a couple times. If you haven&#8217;t, try to think of a [...]]]></description>
			<content:encoded><![CDATA[<p>In this post I&#8217;ll share a little bit about what we&#8217;ve been working with, Animated Layouts in Qt. To be more precise, how we have been animating QGraphicsLayouts.</p>
<p><strong>Layouts</strong></p>
<p>If you are familiar with Qt, chances are you have already used layouts and widgets a couple times. If you haven&#8217;t, try to think of a layout as a set of geometry rules, or principles, that are applied to the children widgets when the layout is associated to a parent widget.</p>
<p>In other words, imagine you have a box drawn on the screen, and, inside it, three widgets, say, a button, a checkbox and a label. Now imagine you want these three components to be organized somehow inside the box, horizontally aligned for instance. In Qt all you have to do is to apply an horizontal layout to the box and its widgets (button, checkbox and label) will follow the rules enforced by that layout.</p>
<p><strong>The Goal</strong></p>
<p>While existing layouts work fine for forms  other static UIs but lack something when seek the development of rich, animated, interfaces, as the one in <a title="Canola 2" href="http://openbossa.indt.org.br/canola/" target="_blank">Canola 2</a>. In these scenarios animating from different layouts and/or different layout states is a must, and that&#8217;s what we went after. As the starting point, we focused on the <em>Graphics View Framework</em> and therefore started with QGraphicsLayouts rather than QLayouts. After talking with the guys at Qt Software we found a solution that enables:</p>
<ul><span></p>
<li>animated transitions from one QGraphicsLayout to a completely different one (grid to linear, for instance);</li>
<li>animated transitions from one QGraphicsLayout state to another (when an item is added for instance, or items are re-arranged);</li>
<li>works with all third-party QGraphicsLayout subclasses you may have coded to fit your personal needs; and</li>
<li>works with all third-party widgets.</li>
<p></span></ul>
<p><strong>The result</strong></p>
<p>A video is worth more than a bunch of words. <img src='http://blog.eduardofleury.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> In this demo we show:</p>
<ul>
<li>Addition of new items to a visible layout;</li>
<li>Change between three different layouts (horizontal, vertical and grid); and</li>
<li>Changes in the parent widget size.</li>
</ul>
<p><object width="425" height="344" data="http://www.youtube.com/v/M3HbmrNvQl4&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/M3HbmrNvQl4&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p>Can&#8217;t see the video? Watch it on YouTube:</p>
<p><a title="Animated Layouts Demo" href="http://www.youtube.com/watch?v=M3HbmrNvQl4" target="_blank">http://www.youtube.com/watch?v=M3HbmrNvQl4</a></p>
<p><strong>The Usage</strong></p>
<p>This post is focused on the internals but read <a title="MoRpHeUz blog" href="http://labs.morpheuz.eng.br/blog/26/02/2009/animated-layouts-with-qt-kinetic/" target="_blank">MoRpHeUz recent post</a> about this subject for the end-user point of view.</p>
<p><strong>The Solution</strong></p>
<p>We had a strong requirement of providing compatibility with 3rd party layouts and widgets, we also couldn&#8217;t break Qt&#8217;s API or ABI. To understand the next step it is necessary to know a little bit about how QGraphicsLayouts work in Qt, but, in a nutshell what happens when a layout is applied to a widget is the following:</p>
<ul>
<li>When the parent widget (the outer box) undergoes a change (is resized for instance), its associated layout is informed about it.</li>
<li>The layout recalculates new geometries for each of the child widgets (the label, the button and the checkbox).</li>
<li>The layout sets the new children geometries.</li>
</ul>
<p>What we did was to create an Animated Layout Proxy that sits between the Layout and each of the child widgets. Due to the way Qt is organized what is expected then is that our proxies pass along the geometry change information they received from the layout to the item below it. The <em>trick</em> here is that rather than sending the geometry change request immediatelly, the Proxy creates a QAnimation from the former state to the new one. The result after the animation is finished is the same, the child widgets were set to their new geometries, what is different however is that the widget moves in an animated, sleek way, rather than at once, which is the standard.</p>
<p>The high-level diagram below shows how the Animated Layout Proxy is inserted in the existing QGraphicsLayoutItem hierarchy. Other relationships were omitted to keep things simple.</p>
<p><img class="size-full wp-image-56" title="proxy" src="http://blog.eduardofleury.com/wp-content/uploads/2009/02/proxy.png" alt="Qt Animated Proxy Layout diagram" width="600" height="372" /><br />
<br />
Cheers,<br />
Fleury</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eduardofleury.com/archives/2009/02/51/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ensol 2.0</title>
		<link>http://blog.eduardofleury.com/archives/2008/05/25/</link>
		<comments>http://blog.eduardofleury.com/archives/2008/05/25/#comments</comments>
		<pubDate>Fri, 02 May 2008 20:25:10 +0000</pubDate>
		<dc:creator>fleury</dc:creator>
				<category><![CDATA[Canola]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Português]]></category>
		<category><![CDATA[Primary]]></category>
		<category><![CDATA[Talks]]></category>
		<category><![CDATA[ensol maemo mamona canola portugues]]></category>

		<guid isPermaLink="false">http://blog.eduardofleury.com/?p=25</guid>
		<description><![CDATA[Acontece nestes dias 2, 3 e 4 de Maio a segunda edição do Encontro de Software Livre da Paraíba, ou simplesmente, Ensol. Eu, Eduardo Fleury, e Rodrigo Vivi, teremos o prazer de apresentar duas palestras na manhã do Domingo, dia 04 e agradecemos antecipadamente a presença de todos. As palestras são independentes porém relacionadas, a [...]]]></description>
			<content:encoded><![CDATA[<p>Acontece nestes dias 2, 3 e 4 de Maio a segunda edi<span>ç</span>ão do <strong>Encontro de Software Livre da Paraíba</strong>, ou simplesmente, Ensol.</p>
<p>Eu, Eduardo Fleury, e Rodrigo Vivi, teremos o prazer de apresentar duas palestras na manhã do Domingo, dia 04 e agradecemos antecipadamente a presen<span>ça de todos.</span></p>
<p>As palestras são independentes porém relacionadas, a primeira, <strong>Embarcando no Linux para sistemas embarcados (<a title="Rodrigo Vivi" href="http://blog.vivi.eng.br" target="_blank">Rodrigo Vivi</a>)</strong> ocorrerá as <strong>09.00h de Domingo</strong> e cobrirá os conceitos fundamentais das plataformas móveis embarcadas baseadas em Linux, mais especificamente o Mamona e o Maemo.</p>
<p>Na seqüência, às <strong>10.15h</strong> apresentarei a palestra <strong>Velejando com o Linux para sistemas embarcados</strong> na qual discutirei aspectos focados no desenvolvimento de aplica<span>ções para estas plataformas, incluindo questões como o ciclo de desenvolvimento e uma compara</span><span>ção entre linguagens de programa</span><span>ção</span>, partindo então para uma introdu<span>ção à linguagem </span>Python e suas principais características.</p>
<p>Links:</p>
<ul>
<li>Ensol 2.0 &#8211; <a title="http://www.ensol.org.br/2008/" href="http://www.ensol.org.br/2008/" target="_blank">http://www.ensol.org.br/2008/</a></li>
<li>Embarcando no Linux para sistemas embarcados &#8211; <a title="http://www.ensol.org.br/2008/node/74" href="http://www.ensol.org.br/2008/node/74" target="_blank">http://www.ensol.org.br/2008/node/74</a></li>
<li><span class="title">Velejando com o Linux para sistemas embarcados &#8211; <a title="http://www.ensol.org.br/2008/node/73" href="http://www.ensol.org.br/2008/node/73" target="_blank">http://www.ensol.org.br/2008/node/73</a></span></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.eduardofleury.com/archives/2008/05/25/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running Canola2 plug-ins on the desktop</title>
		<link>http://blog.eduardofleury.com/archives/2008/04/24/</link>
		<comments>http://blog.eduardofleury.com/archives/2008/04/24/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 19:54:43 +0000</pubDate>
		<dc:creator>fleury</dc:creator>
				<category><![CDATA[Canola]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Primary]]></category>
		<category><![CDATA[canola linux]]></category>

		<guid isPermaLink="false">http://blog.eduardofleury.com/?p=24</guid>
		<description><![CDATA[Hey, A few days ago the Canola2 SDK was released allowing users to run Canola2 on their Linux desktops for plug-ins and themes development. In this post I&#8217;ll show how one can add plugins to the SDK. What you need When deploying plugins to Canola2 SDK one must observe three main steps: Install plug-in code [...]]]></description>
			<content:encoded><![CDATA[<p>Hey,</p>
<p>A few days ago the Canola2 SDK was released allowing users to run Canola2 on their Linux desktops for plug-ins and themes development. In this post I&#8217;ll show how one can add plugins to the SDK.</p>
<p><strong>What you need<br />
</strong></p>
<p>When deploying plugins to Canola2 SDK one must observe three main steps:</p>
<ol>
<li>Install plug-in code</li>
<li>Install plug-in theme extension (for some themes)</li>
<li>Rebuild plug-in database</li>
</ol>
<p>Note that some plug-ins require extra interface widgets, for those the 2nd step must be completed, for the others it will be skipped.</p>
<p><strong>SDK directory structure</strong></p>
<p>In Canola2 SDK plug-ins code is located at:</p>
<blockquote><p>canola/plugins/&lt;plugin_name&gt;/*</p></blockquote>
<p>Note that the &lt;plugin-name&gt; folder may be zipped so you may also see plugins in the form:</p>
<blockquote><p>canola/plugins/&lt;plugin_name&gt;.zip</p></blockquote>
<p>The theme extensions for each plug-in however are in a different folder:</p>
<blockquote><p>canola/THEMES/&lt;theme_name&gt;-&lt;plugin_name&gt;.edj</p></blockquote>
<p><strong>Example HOWTO &#8211; Installing Canola YouTube plug-in</strong></p>
<p>Note that &lt;SDK-base-dir&gt; is the directory where you installed the Canola2 SDK, aka the directory you run Canola2 from.</p>
<p>1. Get Canola YouTube plug-in binaries from maemo repository:</p>
<blockquote><p>$ mkdir /tmp/canola-youtube</p>
<p>$ cd /tmp/canola-youtube</p>
<p>$ wget   http://repository.maemo.org/extras/pool/bora/free/c/canola-youtube-plugin/canola2-youtube-plugin_0.1.1-maemo1_all.deb</p></blockquote>
<p>2. Extract contents (see notes if you don&#8217;t have dpkg-deb installed)</p>
<blockquote><p>$ dpkg-deb -X canola2-youtube-plugin_0.1.1-maemo1_all.deb .</p></blockquote>
<p>3. Copy plug-in code to the SDK dir</p>
<blockquote><p>$ cp usr/share/canola/plugins/canola-tube.zip &lt;SDK-base-dir&gt;/plugins/</p></blockquote>
<p>4. Copy plug-in theme extension to SDK dir</p>
<blockquote><p>$ cp usr/share/canola/themes/*.edj &lt;SDK-base-dir&gt;/THEMES</p></blockquote>
<p>5. Rebuild plug-in database</p>
<blockquote><p>$ cd &lt;SDK-base-dir&gt;</p>
<p>$ ./run-canola &#8211;shell</p>
<p>$ bin/cnl-rescan-collections</p>
<p>$ exit</p></blockquote>
<p>6. Run Canola2 SDK and test the new plugin</p>
<blockquote><p>./run-canola -n</p></blockquote>
<p>Notes:</p>
<p>- You can use &#8220;alien -t&#8221; and &#8220;tar xf&#8221; to extract the .deb contents if you don&#8217;t have dpkg-deb installed on your system.</p>
<p>- If you download the source code of a plug-in you will have to compile each theme extension using &#8220;edje_cc&#8221; that comes with your SDK installation. Just run &#8220;./run-canola &#8211;shell&#8221; to set-up the environment and you&#8217;ll have the compiler available. For more information regarding making your own plug-ins check the &#8220;Plug-ins development&#8221; section in the Canola2 SDK <a title="Canola2 Development README" href="http://openbossa.indt.org/canola/source_files/Development-README" target="_blank">Development-README</a>.</p>
<p><strong>Additional Information</strong></p>
<p>Checkout the <strong>#canola</strong> channel on the <strong>Freenode.net</strong> IRC servers.</p>
<p>Cheers,</p>
<p>Fleury</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eduardofleury.com/archives/2008/04/24/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
