<?xml version="1.0" encoding="utf-8"?>
<!-- generator="wordpress/2.0.11" -->
<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/"
	>

<channel>
	<title>context switch</title>
	<link>http://log.emmanuelebassi.net</link>
	<description>Random babblings of a geek.</description>
	<pubDate>Fri, 10 Oct 2008 22:04:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.11</generator>
	<language>en</language>
			<item>
		<title>Odalisque</title>
		<link>http://log.emmanuelebassi.net/archives/2008/07/odalisque/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/07/odalisque/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 16:00:26 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>General</category>

		<category>gtk</category>

		<category>guadec</category>

		<category>clutter</category>

		<category>conference</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/07/odalisque/</guid>
		<description><![CDATA[this GUADEC has been quite a ride, and we&#8217;re just halfway through.
gtk+: the gtk+ team meeting on tuesday went really well &#8212; and part of the discussion was incorporated in Kris always excellent State of the union talk. the team went over and over this issue since last GUADEC and during the hackfest, and even [...]]]></description>
			<content:encoded><![CDATA[<p>this GUADEC has been quite a ride, and we&#8217;re just halfway through.</p>
<p><strong>gtk+</strong>: the gtk+ team meeting on tuesday went really well &mdash; and part of the discussion was incorporated in Kris always excellent <em>State of the union</em> talk. the team went over and over this issue since last GUADEC and during the hackfest, and even though something at some point will probably go wrong the plan is good and allows leeway to reduce the overall effort for moving the entire platform. I think that given the circumstances this is the best plan that can be realistically implemented.</p>
<p><strong>gnome</strong>: everyone will be discussing the <a href="http://www.vuntz.net/journal/2008/07/10/480-live-from-istanbul-gnome-30">release</a> <a href="http://blogs.gnome.org/lucasr/2008/07/10/gnome-30/">team</a> plan as well. I can only say: let&#8217;s do it!</p>
<p><strong>clutter</strong>: the <em>Clutter Guts</em> talk went really smoothly; we tried to fill <a href="http://blogs.gnome.org/lucasr/2008/07/10/gnome-30/">Matthew</a> shoes &mdash; and had to be in three to do it &mdash; but I think people came out of the talk with more knowledge about the deep magic and the pixie fairies dust that power Clutter and make it as awesome as it is. as I said during the talk, Clutter 0.8 is really in the final stages now, and it&#8217;s going to be released as soon as we finish testing some of the backends. people will just have to wait a little bit, but by the time everyone gets back home from GUADEC they will be able to get the tarball from the <a href="http://www.clutter-project.org">server</a>.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/07/odalisque/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Good Intentions/2</title>
		<link>http://log.emmanuelebassi.net/archives/2008/04/good-intentions2/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/04/good-intentions2/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 21:30:50 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>GNOME</category>

		<category>C</category>

		<category>developer</category>

		<category>gtk</category>

		<category>clutter</category>

		<category>crack</category>

		<category>json-glib</category>

		<category>glib</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/04/good-intentions2/</guid>
		<description><![CDATA[gtk+: I&#8217;ve been working again on the RecentManager and in trunk you&#8217;ll see some new stuff, namely:

use GIO to determine the MIME type of a URI, on every platform supported
use the file monitoring API to avoid polling the storage file
add a GtkSettings property for clamping the recently used resources list to a 30 days limit

more [...]]]></description>
			<content:encoded><![CDATA[<p><strong>gtk+</strong>: I&#8217;ve been working again on the <a href="http://library.gnome.org/devel/gtk/stable/GtkRecentManager.html">RecentManager</a> and in <code>trunk</code> you&#8217;ll see some new stuff, namely:</p>
<ul>
<li>use GIO to determine the MIME type of a URI, on every platform supported</li>
<li>use the file monitoring API to avoid polling the storage file</li>
<li>add a GtkSettings property for clamping the recently used resources list to a 30 days limit</li>
</ul>
<p>more stuff I&#8217;d like to add is:</p>
<ul>
<li>small parser changes to <a href="http://library.gnome.org/devel/glib/stable/glib-Bookmark-file-parser.html">GBookmarkFile</a>, to reflect changes in the spec</li>
<li>bulk addition, for applications storing multiple items when quitting</li>
<li>new API needed to follow the usability review in bug <a href="http://bugzilla.gnome.org/show_bug.cgi?id=349541">349541</a></li>
<li>moving the RecentItem icon code to GIO, and add API to extract the thumbnail</li>
</ul>
<p><strong>twitter</strong>: I&#8217;ve been using <a href="http://twitter.com">Twitter</a> a lot in the past two weeks; it&#8217;s nice, it makes it easier to copy and paste a quote or a thought, and the 160 characters limit is an interesting challenge. As it&#8217;s been ages since I last wrote an application<sup><a href="#footnote-1-261" id="footnote-link-1-261" class="footnote-link footnote-identifier-link" title="lately all I&#8217;ve been doing was writing libraries">1</a></sup>, I decided to start writing a Twitter reader/writer &mdash; using <a href="http://www.gtk.org">GTK+</a>, <a href="http://www.clutter-project.org">Clutter</a> and Tidy; without much thinking, I opened gvim and started writing code in C<sup><a href="#footnote-2-261" id="footnote-link-2-261" class="footnote-link footnote-identifier-link" title="hey, that&#8217;s what I do for a living, it&#8217;s hard to switch off; plus, I could reuse some of the platform libraries">2</a></sup> &mdash; so, the obvious thing that happened was that I ended up writing a library <em>yet again</em> in order to use Twitter&#8217;s web API. luckily for me, libsoup has now a really nice API to work with; all you need is <code>GET</code> and <code>POST</code> to their RESTful API, retrieve the result, parse it through JSON-GLib, hide everything inside a new GObject and you have a wrapper around a web service. the application, you say? oh, I was sure I forgot something. well, it&#8217;s <a href="http://github.com/ebassi/tweet/tree/master">coming along</a> &mdash; it just needs some work still.
</p>
<ol start="1" class="footnotes"><li id="footnote-1-261" class="footnote">lately all I&#8217;ve been doing was writing libraries [<a href="#footnote-link-1-261" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-2-261" class="footnote">hey, that&#8217;s what I do for a living, it&#8217;s hard to switch off; plus, I could reuse some of the platform libraries [<a href="#footnote-link-2-261" class="footnote-link footnote-back-link">&#8617;</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/04/good-intentions2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Time to Build</title>
		<link>http://log.emmanuelebassi.net/archives/2008/03/time-to-build/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/03/time-to-build/#comments</comments>
		<pubDate>Sun, 23 Mar 2008 21:42:11 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>GNOME</category>

		<category>recent-files</category>

		<category>gtk</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/03/time-to-build/</guid>
		<description><![CDATA[Claudio did some interesting profiling (and patching) of the BookmarkFile implementation in GLib &#8212; so kudos to him and Felix.
one thing that he noted is:
However, I still have the feeling that letting ~\.recently-used.xbel grow without control is very, very wrong. In my laptop, this file is about 5MB, which accounts for ca. 9000 files(!).
this is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gnome.org/~csaavedra/news-2008-03.html#D22">Claudio</a> did some interesting profiling (and patching) of the BookmarkFile implementation in GLib &mdash; so <em>kudos</em> to him and Felix.</p>
<p>one thing that he noted is:</p>
<blockquote><p>However, I still have the feeling that letting ~\.recently-used.xbel grow without control is very, very wrong. In my laptop, this file is about 5MB, which accounts for ca. 9000 files(!).</p></blockquote>
<p>this is very true, but I feel it needs some context. when I first wrote the RecentManager code I only had the EggRecent implementation as a comparison; the old EggRecentModel had an hardcoded limit of 500 items stored per file. limiting on the number, instead of the <em>age</em> of an item inside a <em>recently used</em> file list did not feel right, so I thought about hardcoding a limit of 30 days &mdash; but stopped short of doing it because I realized that hardcoding limits at the toolkit level was not a good idea:</p>
<ul>
<li>application developers will not be able to change it in any way</li>
<li>users will not be able to change it in any way</li>
<li>system administrators will not be able to change it in any way</li>
</ul>
<p>just to give a few examples: while I was still writing the RecentManager inside libegg, Alex Graveley was writing Gimmie. Gimmie had<sup><a href="#footnote-1-255" id="footnote-link-1-255" class="footnote-link footnote-identifier-link" title="and might still have &mdash; I haven&#8217;t checked it for a while now">1</a></sup> a local document and application history that could allow you to go back in time of months; had I hardcoded a limit, the Gimmie developers would have needed a new implementation, defeating the purpose of shipping the RecentManager inside GTK+ to cut down the amount of code replication.</p>
<p>hardcoding limits is also something that makes it hard, or even impossible, for users and administrators to control; I might want a 30 days limit, but other might want a 90 days, or a 7 days &mdash; or even a 1 day limit. some might not even want to save the recently used files at all (think kiosks).</p>
<p>I don&#8217;t believe in strictly hardcoding policies in the toolkit; providing fallbacks is perfectly fine, but preventing people from actually having different settings is akin to convince everyone that you&#8217;re right and they&#8217;re wrong.</p>
<p>still, this doesn&#8217;t solve the problem at hand, that is the current <em>lack of policy</em>.</p>
<p>what I&#8217;d like to see is some process taking care of purging the old entries, using some key inside gconf, at the end of the session; gnome-settings-daemon would fit the role for GNOME, and other desktop environments using GTK+ could provide the same functionality<sup><a href="#footnote-2-255" id="footnote-link-2-255" class="footnote-link footnote-identifier-link" title="if you&#8217;re not using a GTK+ based desktop environment you&#8217;re either using the same spec used by GTK+ so you can provide your own way of purging the cache, or you&#8217;re using another way to store the recently used files, so the size of the file saved/read by the RecentManager will not bubble out of control so easily &mdash; and you can still flush it yourself">2</a></sup>. after all, gnome-settings-daemon should already <a href="http://bugzilla.gnome.org/show_bug.cgi?id=523159">flush the thumbnails cache</a> &mdash; it wouldn&#8217;t be much of a complication.
</p>
<ol start="1" class="footnotes"><li id="footnote-1-255" class="footnote">and might still have &mdash; I haven&#8217;t checked it for a while now [<a href="#footnote-link-1-255" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-2-255" class="footnote">if you&#8217;re not using a GTK+ based desktop environment you&#8217;re either using the same spec used by GTK+ so you can provide your own way of purging the cache, or you&#8217;re using another way to store the recently used files, so the size of the file saved/read by the RecentManager will not bubble out of control so easily &mdash; and you can still flush it yourself [<a href="#footnote-link-2-255" class="footnote-link footnote-back-link">&#8617;</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/03/time-to-build/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Berlin/Final</title>
		<link>http://log.emmanuelebassi.net/archives/2008/03/berlinfinal/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/03/berlinfinal/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 00:35:06 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>gtk</category>

		<category>conference</category>

		<category>hackfest</category>

		<category>berlin</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/03/berlinfinal/</guid>
		<description><![CDATA[some final thoughts on the Hackfest: it has been a great opportunity for discussing with all the usual suspects and more, and on a very high bandwidth channel &#8212; unlike IRC or the mailing list. definitely, an experience that must be repeated next year, because the discussions we had and the work we started will [...]]]></description>
			<content:encoded><![CDATA[<p>some final thoughts on the Hackfest: it has been a great opportunity for discussing with all the usual suspects and more, and on a very high bandwidth channel &mdash; unlike IRC or the mailing list. definitely, an experience that must be repeated next year, because the discussions we had and the work we started will keep us all busy at least until GUADEC &mdash; and from then on, towards a very bright future for GTK+ and the whole GNOME project.</p>
<p>thanks to Mathias and Openismus for being the local organization; thanks to Tim, Kris and the entire Imendio, for moderating the whole panels; thanks to Vincent and the GNOME Foundation, and obviously all the sponsors, for helping out in organizing and funding this gathering of hackers; and thanks to everyone that made these five days an incredible experience for me: you all really rock the GNOME community.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/03/berlinfinal/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Berlin/5</title>
		<link>http://log.emmanuelebassi.net/archives/2008/03/berlin5/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/03/berlin5/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 00:35:03 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>GNOME</category>

		<category>C</category>

		<category>gtk</category>

		<category>conference</category>

		<category>hackfest</category>

		<category>berlin</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/03/berlin5/</guid>
		<description><![CDATA[last post of the Berlin Hackfest series, written on the last minutes of day 5
today was &#8220;wrap up&#8221; day. we got together in the room used for the presentations and summed up all our work during the various sessions of the week. it turned out that the amount of work, even though not reflected by [...]]]></description>
			<content:encoded><![CDATA[<p><em>last post of the Berlin Hackfest series, written on the last minutes of day 5</em></p>
<p>today was &#8220;wrap up&#8221; day. we got together in the room used for the presentations and summed up all our work during the various sessions of the week. it turned out that the amount of work, even though not reflected by the wiki page, was really enormous; the introspection guys worked a lot and now that they have received a lot of input, they are going to rework things and kick ass even more. apparently, Behdad decided that I would tackle the GL integration inside GDK &mdash; which, of course, I&#8217;d really like to do; the GL integration, and a GDK wrapper for the GLX_texture_from_pixmap (and the equivalent call for the other platforms) would obviously be the primary way to integrate Cairo 2D high quality drawing and GL 3D and hardware acceleration in a simple way. and this is a step forward the implementation of a scene graph inside GTK+.</p>
<p>in the meantime, I&#8217;m &mdash; as Ryan would put it &mdash; deeply recursing. it all started on tuesday, when I decided to start hacking on a <em>real</em> application with Vala using all the bits and pieces a modern GTK+ application requires: GtkUIManager, about dialogs, command-line switches. the application was supposedly going to read the new GTest framework reports, and allow comparing of multiple runs in a fast way. this, in turn, led to <a href="http://bugzilla.gnome.org/show_bug.cgi?id=522059">some</a> <a href="http://bugzilla.gnome.org/show_bug.cgi?id=522060">bugs</a> <a href="http://bugzilla.gnome.org/show_bug.cgi?id=522061">filed</a> against Vala GTK+ bindings. working around these issues, I also found out that the libxml-2.0 bindings in Vala &mdash; which I need to parse the GTest report XML &mdash; require a lot of pointers usage and are, in general, quite sub-obtimal, due to the very C oriented API. while investigating on a substitute, I found out XmlReader &mdash; the cursor-based XML traversal API that .Net and other high-level languages implement<sup><a href="#footnote-1-250" id="footnote-link-1-250" class="footnote-link footnote-identifier-link" title="Even libxml-2.0 implements it, even though it suffers from the same issues of its DOM API, and it&#8217;s still not GObject-based">1</a></sup>. Thus, today at a coffe shop<sup><a href="#footnote-2-250" id="footnote-link-2-250" class="footnote-link footnote-identifier-link" title="Behdad is right: a coffee shop without any Internet connectivity makes wonders with your productivity levels">2</a></sup> I started hacking very quickly on a rough implementation of a XmlReader GObject class which, as of at this moment works quite nicely:</p>
<pre>
  XmlReader *reader = xml_reader_new ();
  GError *error = <span style="color:purple">NULL</span>;

  if (xml_reader_load_from_file (reader, <span style="color:red">&#8220;book.xml&#8221;</span>, &#038;error))
    g_error (<span style="color:red">&#8220;Unable to parse book.xml: <span style="color:purple">%s</span>&#8220;</span>, error-&gt;message);

  xml_reader_read_start_element (reader, <span style="color:red">&#8220;book-info&#8221;</span>);

  xml_reader_read_start_element (reader, <span style="color:red">&#8220;author&#8221;</span>);
  author = g_strdup (xml_reader_get_element_value (reader));
  xml_reader_read_end_element (reader);

  xml_reader_read_start_element (reader, <span style="color:red">&#8220;title&#8221;</span>);
  title = g_strdup (xml_reader_get_element_value (reader));
  xml_reader_read_end_element (reader);

  xml_reader_read_end_element (reader);

  g_print (<span style="color:red">&#8220;The author of <span style="color:purple">%s</span> is <span style="color:purple">%s\n</span>&#8220;</span>, title, author);

  g_free (title);
  g_free (author);
  g_object_unref (reader);
</pre>
<p>and you&#8217;re done. at this moment, I&#8217;m cleaning it up and adding the gtk-doc API reference to the build<sup><a href="#footnote-3-250" id="footnote-link-3-250" class="footnote-link footnote-identifier-link" title="When I write new libraries, I usually stub out the API and document it at the same time; now I started to add the GTest units before I even implement the API">3</a></sup>. I&#8217;m probably going to add the generic <code>read()</code> method, so that:</p>
<pre>
  <span style="color:orange">while</span> (xml_reader_read (reader))
    {
    &#8230;
    }
</pre>
<p>will work as expected. it&#8217;s, as usual, code replication &mdash; but I&#8217;m going to need it anyway, so it&#8217;s good code replication.
</p>
<ol start="1" class="footnotes"><li id="footnote-1-250" class="footnote">Even libxml-2.0 implements it, even though it suffers from the same issues of its DOM API, and it&#8217;s still not GObject-based [<a href="#footnote-link-1-250" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-2-250" class="footnote">Behdad is right: a coffee shop without any Internet connectivity makes wonders with your productivity levels [<a href="#footnote-link-2-250" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-3-250" class="footnote">When I write new libraries, I usually stub out the API and document it at the same time; now I started to add the GTest units before I even implement the API [<a href="#footnote-link-3-250" class="footnote-link footnote-back-link">&#8617;</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/03/berlin5/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Berlin/3</title>
		<link>http://log.emmanuelebassi.net/archives/2008/03/berlin3/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/03/berlin3/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 00:35:00 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>GNOME</category>

		<category>gtk</category>

		<category>clutter</category>

		<category>conference</category>

		<category>hackfest</category>

		<category>berlin</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/03/berlin3/</guid>
		<description><![CDATA[second and third day of the hackfest, edited on day five
on tuesday, Behdad and I started working on OpenGL integration inside GTK+. as stated multiple times on the Bugzilla entry, what we both would like is a Cairo-like integration of GL inside the available drawing systems in GTK+. in short: not a specialized widget like [...]]]></description>
			<content:encoded><![CDATA[<p><em>second and third day of the hackfest, edited on day five</em></p>
<p>on tuesday, Behdad and I started working on OpenGL integration inside GTK+. as stated multiple times on the Bugzilla entry, what we both would like is a Cairo-like integration of GL inside the available drawing systems in GTK+. in short: not a specialized widget like GtkGLArea, which would make it difficult &mdash; or plainly impossible without jumping through a long series of hoops. in flames. tied. and blindfolded &mdash; to integrate GL inside existsing projects; and not the incredible API dump that GtkGLExt is.</p>
<p>the design we mostly agreed on was a shared object inside GTK+, containing the GL context abstraction object, and two simple calls to delimit the drawing code, wait for vblank and swap the GL buffers. plus, an easy to use wrapper around the <code>texture_from_pixmap</code> extension, to allow drawing with cairo on a Pixmap and then have it pushed into the GL pipeline.</p>
<p>Carl arrived on wednesday, and partecipated at the scene graph BoF we held. the BoF itself was pretty straightforward: we read the slides that Havoc sent on the mailing list and discussed the various points. we all agreed on a lot of points &mdash; and we tried to define the problem space more deeply<sup><a href="#footnote-1-252" id="footnote-link-1-252" class="footnote-link footnote-identifier-link" title="We did not always succeed in this, but the issue at hand is quite large and it&#8217;s understandable">1</a></sup>. being there, I could bring to the table my experience in the past two years<sup><a href="#footnote-2-252" id="footnote-link-2-252" class="footnote-link footnote-identifier-link" title="It&#8217;s really two years? holy crap! The time really flew&#8230;">2</a></sup> with the design and implementation of Clutter. some of the attendees were already familiar with it &mdash; something very satisfying &mdash; and I could expand some points in Havoc&#8217;s slides about Clutter that have been recently fixed or are going to be fixed in this cycle. the biggest point is that the scene graph should integrate with Cairo, in order to allow applications and people to gently merge both the 2D drawing of surfaces into a full 3D environment; I&#8217;ll leave to Carl to explain the Cairo side, because he&#8217;s obviously better at this than I am. <img src='http://log.emmanuelebassi.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>the operative result of the scene graph discussion was that Clutter emerged as an already powerful and established solution for this problem space, and given that it already nicely integrates with GTK+, we can work towards the common goal of making it &#8220;the GTK+ canvas&#8221;, outside the actual library so that it can grow unrestrained and experiment in new directions.
</p>
<ol start="1" class="footnotes"><li id="footnote-1-252" class="footnote">We did not always succeed in this, but the issue at hand is quite large and it&#8217;s understandable [<a href="#footnote-link-1-252" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-2-252" class="footnote">It&#8217;s really two years? holy crap! The time really flew&#8230; [<a href="#footnote-link-2-252" class="footnote-link footnote-back-link">&#8617;</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/03/berlin3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Berlin/1</title>
		<link>http://log.emmanuelebassi.net/archives/2008/03/berlin1/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/03/berlin1/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 18:22:20 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>travel</category>

		<category>gtk</category>

		<category>celebrations</category>

		<category>conference</category>

		<category>hackfest</category>

		<category>berlin</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/03/berlin1/</guid>
		<description><![CDATA[day two of the gtk+ hackfest.
yesterday was devoted to the Imendio vision of a better toolkit, and how to get out of the hole we dug for ourselves with the current API/ABI contract - but others have written about it better than I could possibly do.
today was introspection day; Johan Dahlin showed the current state [...]]]></description>
			<content:encoded><![CDATA[<p>day two of the gtk+ <a href="http://live.gnome.org/GTK+/Hackfest2008">hackfest</a>.</p>
<p>yesterday was devoted to the Imendio vision of a better toolkit, and how to get out of the hole we dug for ourselves with the current API/ABI contract - but <a href="http://inverted-tree.livejournal.com/58280.html">others</a> <a href="http://aruiz.typepad.com/siliconisland/2008/03/gtk-hackfest-20.html">have</a> written about it better than I could possibly do.</p>
<p>today was introspection day; Johan Dahlin showed the current state of the <a href="http://svn.gnome.org/viewvc/gobject-introspection/trunk/">GObject introspection</a> code by using a Vala widget, subclassing a GtkDrawingArea, from a Perl script &mdash; which was beyond cool. <em>kudos</em> to everyone that has been working on it.</p>
<p>today it&#8217;s also six years since the <a href="http://mail.gnome.org/archives/gtk-devel-list/2002-March/msg00234.html">gtk+ 2.0.0 release</a>, so happy birthday gtk+ 2.x!
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/03/berlin1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Time is Running Out</title>
		<link>http://log.emmanuelebassi.net/archives/2007/06/time-is-running-out/</link>
		<comments>http://log.emmanuelebassi.net/archives/2007/06/time-is-running-out/#comments</comments>
		<pubDate>Tue, 19 Jun 2007 12:59:34 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>GNOME</category>

		<category>C</category>

		<category>gtk</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2007/06/time-is-running-out/</guid>
		<description><![CDATA[Today I committed a couple of fixes to GtkRecentManager and I thought it was worth mentioning them on pgo.
Up until now, GtkRecentManager instances were available either via the gtk_recent_manager_new() constructor - which left the memory management duties to the developer - or via the gtk_recent_manager_get_default() which tried to do the right thing, by returning a [...]]]></description>
			<content:encoded><![CDATA[<p>Today I committed a couple of fixes to <code>GtkRecentManager</code> and I thought it was worth mentioning them on <acronym title="Planet GNOME.org">pgo</acronym>.</p>
<p>Up until now, <code>GtkRecentManager</code> instances were available either via the <code>gtk_recent_manager_new()</code> constructor - which left the memory management duties to the developer - or via the <code>gtk_recent_manager_get_default()</code> which tried to do the right thing, by returning a singleton instance to be shared inside an application. The master plan was having the singleton attached to the <code>GdkScreen</code> to take advantage of the lifetime management of the screen done by GTK+ and cleanly dispose the recent manager when the screen was closed. This approach would have worked well, except for two <em>tiny</em> details:</p>
<ol>
<li>if you change screen, <code>gtk_recent_manager_get_default()</code> will return a different instance</li>
<li><code>GdkScreen</code> are never closed unless you do that explicitly.</li>
</ol>
<p>So much for the master plan.</p>
<p>Thanks to Morten Welinder, who did some very appreciated <a href="http://bugzilla.gnome.org/show_bug.cgi?id=439327">detective work</a> on it, it was decided to switch to a more common approach, with a static variable and a private synchronisation function that gets called when the main loop level reaches zero. What does this mean, for the application developer? First of all, two deprecations: both <code>gtk_recent_manager_get_for_screen()</code> and <code>gtk_recent_manager_set_screen()</code> are deprecated as of GTK+ 2.12 and should never be used again (the first evaluates to <code>gtk_recent_manager_get_default()</code> and the second to a NOP, if you ever decide to compile with <code>GTK_DISABLE_DEPRECATED</code> turned off); second of all, no more juggling around with the screen changes: multiple calls of <code>gtk_recent_manager_get_default()</code> will always return the same instance of the <code>GtkRecentManager</code> object - which you should never unref. Obviously, if you were creating your own recent manager instance with the <code>gtk_recent_manager_new()</code> constructor, none of this matters and you&#8217;ll have to handle the manager lifetime by yourself.</p>
<p>Another change I committed was the switch to the <code>g_timeout_add_seconds()</code> for the polling of the recent files storage file. Since the timeout was set to every N seconds I decided that the lifespan of my laptop&#8217;s battery was more important than having a millisecond precision on a <code>stat()</code> call. In other news, laptop owners around the world rejoice as one. Since every signal under GTK+ is emitted under the assumption that the emitter is inside the GDK master lock, the newly added <code>gdk_threads_add_*()</code> functions weren&#8217;t fit for my cunning plan of using the approximate timeout source; for this reason, I added a <code>g_timeout_add_seconds_full()</code> inside GLib and the equivalent code directly inside <code>GtkRecentManager</code>.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2007/06/time-is-running-out/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Expect</title>
		<link>http://log.emmanuelebassi.net/archives/2007/06/expect/</link>
		<comments>http://log.emmanuelebassi.net/archives/2007/06/expect/#comments</comments>
		<pubDate>Thu, 07 Jun 2007 12:47:32 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>rants</category>

		<category>gtk</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2007/06/expect/</guid>
		<description><![CDATA[Well, it seems that after six years a new release of Emacs is out - and it uses GTK+ as the GUI toolkit. I&#8217;d like to think that what took so long was not adding this thing to the file selection dialog:

Otherwise, I might expect something like this for the next release.
And this has nothing [...]]]></description>
			<content:encoded><![CDATA[<p>Well, it seems that after six years a new release of Emacs is <a href="http://applications.linux.com/article.pl?sid=07/06/04/1629254">out</a> - and it uses GTK+ as the GUI toolkit. I&#8217;d like to think that what took so long was <strong>not</strong> adding this <em>thing</em> to the file selection dialog:</p>
<div style="text-align:center"><a class="imagelink" href="http://log.emmanuelebassi.net/wp-content/2007/06/screenshot-emacs-file.png" title="screenshot-emacs-file-chooser.png"><img id="image216" src="http://log.emmanuelebassi.net/wp-content/2007/06/screenshot-emacs-file-chooser.png" alt="screenshot-emacs-file-chooser.png" /></a></div>
<p>Otherwise, I might expect <a href="http://www.gnome.org/~ebassi/Screenshot-emacs-file.png">something like this</a> for the next release.</p>
<p><em>And this has nothing to do with the fact that I&#8217;m a ViM user. No, really.</em>
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2007/06/expect/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Company Calls Epilogue</title>
		<link>http://log.emmanuelebassi.net/archives/2007/05/company-calls-epilogue/</link>
		<comments>http://log.emmanuelebassi.net/archives/2007/05/company-calls-epilogue/#comments</comments>
		<pubDate>Fri, 04 May 2007 16:45:29 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>GNOME</category>

		<category>C</category>

		<category>recent-files</category>

		<category>gtk</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2007/05/company-calls-epilogue/</guid>
		<description><![CDATA[Today I gave the final touches to a patch based upon the patch for search capabilities in the GtkFileChooser embeddable widget, adding the &#8220;Recently Used&#8221; shortcut:

there are still a few missing bits (the icon for the shortcut is one of them) but it&#8217;s already working remarkably well. I&#8217;ll work toward implementing what&#8217;s left in the [...]]]></description>
			<content:encoded><![CDATA[<p>Today I gave the final touches to a patch based upon the patch for search capabilities in the <code>GtkFileChooser</code> embeddable widget, adding the &#8220;Recently Used&#8221; shortcut:</p>
<div style="text-align:center"><a id="p214" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2007/05/company-calls-epilogue/file-chooser-support-for-recently-used-files/" title="File Chooser Support for Recently Used Files"><img id="image214" src="http://log.emmanuelebassi.net/wp-content/2007/05/file-chooser-recent-files.png" alt="File Chooser Support for Recently Used Files" /></a></div>
<p>there are still a few <a href="http://bugzilla.gnome.org/show_bug.cgi?id=435342">missing bits</a> (the icon for the shortcut is one of them) but it&#8217;s already working remarkably well. I&#8217;ll work toward implementing what&#8217;s left in the next few days, while I also fix some of the warts of the search support.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2007/05/company-calls-epilogue/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Company Calls</title>
		<link>http://log.emmanuelebassi.net/archives/2007/05/company-calls/</link>
		<comments>http://log.emmanuelebassi.net/archives/2007/05/company-calls/#comments</comments>
		<pubDate>Thu, 03 May 2007 09:20:26 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>GNOME</category>

		<category>C</category>

		<category>gtk</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2007/05/company-calls/</guid>
		<description><![CDATA[Search support for the GtkFileChooser (#344785) landed in GTK+ trunk. It&#8217;s a patch written by Federico and updated by Matthias Clasen (I merely kept it in sync with trunk). The patch adds a private search engine abstraction object and three implementations, using libbeagle, libtracker and a simple file-tree-walking search. There&#8217;s no hard dependency on Beagle [...]]]></description>
			<content:encoded><![CDATA[<p>Search support for the <code>GtkFileChooser</code> (<a href="http://bugzilla.gnome.org/show_bug.cgi?id=344785">#344785</a>) landed in GTK+ trunk. It&#8217;s a patch written by <a href="http://primates.ximian.com/~federico/news.html">Federico</a> and updated by Matthias Clasen (I merely kept it in sync with trunk). The patch adds a private search engine abstraction object and three implementations, using libbeagle, libtracker and a simple file-tree-walking search. There&#8217;s no hard dependency on Beagle or Tracker: the libraries are opened using <code>g_module_open()</code> if they are found installed on your system, otherwise it&#8217;ll all fall back to the simple search backend (it&#8217;s the same solution used by Nautilus for its search support).</p>
<p>The file chooser now has a &#8220;Search&#8221; shortcut:</p>
<div style="text-align:center"><a id="p210" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2007/05/company-calls/gtkfilechooser-search-support1/" title="GtkFileChooser Search Support/1"><img id="image210" src="http://log.emmanuelebassi.net/wp-content/2007/05/file-chooser-search-1.png" alt="GtkFileChooser Search Support/1" /></a></div>
<p>If you double click it, you&#8217;ll get a search pane:</p>
<div style="text-align:center"><a id="p211" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2007/05/company-calls/gtkfilechooser-search-support2/" title="GtkFileChooser Search Support/2"><img id="image211" src="http://log.emmanuelebassi.net/wp-content/2007/05/file-chooser-search-2.png" alt="GtkFileChooser Search Support/2" /></a></div>
<p>Where you can search for &#8220;foo&#8221; and get the matching results:</p>
<div style="text-align:center"><a id="p212" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2007/05/company-calls/gtkfilechooser-search-support3/" title="GtkFileChooser Search Support/3"><img id="image212" src="http://log.emmanuelebassi.net/wp-content/2007/05/file-chooser-search-3.png" alt="GtkFileChooser Search Support/3" /></a></div>
<p>Next stop: fix all the missing bits (<a href="http://bugzilla.gnome.org/show_bug.cgi?id=435343">#435343</a>) and add a &#8220;Recently Used&#8221; shortcut showing the list of recently used files (bug <a href="http://bugzilla.gnome.org/show_bug.cgi?id=435342">#435342</a>).</p>
<p>By the way: libbeagle has an incredibly nice API, whereas libtracker doesn&#8217;t. Please, Tracker developers: instead patching projects or writing a GTK+ widgets library which only new projects can use, focus on writing a nice, GObject-based API for all the existing projects out there. Pretty please, with the sugar on top.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2007/05/company-calls/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Down on the corner</title>
		<link>http://log.emmanuelebassi.net/archives/2007/05/down-on-the-corner/</link>
		<comments>http://log.emmanuelebassi.net/archives/2007/05/down-on-the-corner/#comments</comments>
		<pubDate>Tue, 01 May 2007 19:28:41 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>GNOME</category>

		<category>gtk</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2007/05/down-on-the-corner/</guid>
		<description><![CDATA[VFS: Lennart, what you want is GVFS, which is being developed right now by alexl, has dropped the POSIX abstraction approach and it&#8217;s surely more portable than FUSE. And, most of all, has a sane API (for a change). For &#8220;sane API&#8221; I mean that I almost cried tears of joy when I saw the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>VFS</strong>: <a href="http://0pointer.de/blog/projects/gnomevfs-future">Lennart</a>, what you want is GVFS, which is being developed <strong>right now</strong> by <a href="http://blogs.gnome.org/view/alexl/">alexl</a>, has dropped the POSIX abstraction approach and it&#8217;s surely more portable than FUSE. And, most of all, has a <em>sane API</em> (for a change). For &#8220;sane API&#8221; I mean that I almost cried tears of joy when I saw the file monitoring interface - and I wasn&#8217;t the <a href="http://burtonini.com/">only one</a>.</p>
<p><strong>Ubuntu</strong>: so, it seems that Dell signed on with Canonical to provide Ubuntu on their desktops and laptops. Good for the community, GNOME, Linux and, obviously, good for Canonical. Mark Shuttleworth will be rich (again), and without even having to resort to the patent on the <a href="http://geekz.co.uk/lovesraymond/archive/cancomical-lynchpad">hand-cranked XML parser</a>.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2007/05/down-on-the-corner/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Time For Lovin&#8217;</title>
		<link>http://log.emmanuelebassi.net/archives/2007/03/time-for-lovin/</link>
		<comments>http://log.emmanuelebassi.net/archives/2007/03/time-for-lovin/#comments</comments>
		<pubDate>Thu, 15 Mar 2007 21:15:57 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>GNOME</category>

		<category>recent-files</category>

		<category>gtk</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2007/03/time-for-lovin/</guid>
		<description><![CDATA[You can see I&#8217;m listening to the Beastie Boys, right now
In the last three days I&#8217;ve finally managed to resolve as fixed these GTK+ bugs:

Bug 347375 – Not possible to set startup notification ID on a GtkWindow
Bug 418219 – GtkRecentChooser should apply filter before sorting and clamping the list
Bug 418634 – gtk_recent_chooser_menu_set_show_numbers docs
Bug 418673 – [...]]]></description>
			<content:encoded><![CDATA[<p><em>You can see I&#8217;m listening to the Beastie Boys, right now</em></p>
<p>In the last three days I&#8217;ve finally managed to resolve as fixed these GTK+ bugs:</p>
<ul>
<li><a href="http://bugzilla.gnome.org/show_bug.cgi?id=347375">Bug 347375</a> – Not possible to set startup notification ID on a GtkWindow</li>
<li><a href="http://bugzilla.gnome.org/show_bug.cgi?id=418219">Bug 418219</a> – GtkRecentChooser should apply filter before sorting and clamping the list</li>
<li><a href="http://bugzilla.gnome.org/show_bug.cgi?id=418634">Bug 418634</a> – gtk_recent_chooser_menu_set_show_numbers docs</li>
<li><a href="http://bugzilla.gnome.org/show_bug.cgi?id=418673">Bug 418673</a> – gtk_recent_manager_add_item</li>
<li><a href="http://bugzilla.gnome.org/show_bug.cgi?id=338843">Bug 338843</a> – add recent files support inside the ui manager</li>
</ul>
<p>Bug #347375 contained a patch Vytautas Liuolia wrote last year, as part of his guniqueapp Summer of Code project.</p>
<p>Bugs #418219, #418634 and #418673 have also been backported to the stable branch, as they fixed documentation or simply bad behaviours in the code.</p>
<p>Bug #338843 finally closes the long standing bug about the integration between the recent files and <code>GtkUIManager</code>; you can now add a <code>GtkRecentAction</code> to your actions group and let it do the right thing.</p>
<p>Many thanks go to Vytautas Liuolia, Matthias Clasen, Paolo Borelli and Morten Welinder.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2007/03/time-for-lovin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Of Angels And Angles</title>
		<link>http://log.emmanuelebassi.net/archives/2007/03/of-angels-and-angles/</link>
		<comments>http://log.emmanuelebassi.net/archives/2007/03/of-angels-and-angles/#comments</comments>
		<pubDate>Thu, 08 Mar 2007 17:46:51 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>GNOME</category>

		<category>C</category>

		<category>open-source</category>

		<category>developer</category>

		<category>gtk</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2007/03/of-angels-and-angles/</guid>
		<description><![CDATA[GtkApplication class: I&#8217;ve updated the application class page on the wiki. Now, it has an updated layout of the API (which is what I&#8217;m currently working on) and the design requirements it should fulfil. While writing it I had some sort of epiphany about the whole library consolidation effort and its perception among the platform [...]]]></description>
			<content:encoded><![CDATA[<p><strong>GtkApplication class</strong>: I&#8217;ve updated the <a href="http://live.gnome.org/GTK+/ApplicationClass">application class</a> page on the wiki. Now, it has an updated layout of the API (which is what I&#8217;m currently working on) and the design requirements it should fulfil. While writing it I had some sort of epiphany about the whole library consolidation effort and its perception among the platform developers. <em><a href="http://live.gnome.org/ProjectRidley">Project Ridley</a></em> as it stands is a double-edged sword: on one hand we&#8217;d like to have <a href="http://www.chipx86.com/blog/?p=205">more functionalities</a> moved from external libraries to GLib and GTK+; on the other hand, the size of the platform libraries maintainer teams is not growing at the same rate. If we are to move widgets, features and whatnot to GTK+ we must be sure not only that someone is actively working on them after inclusion, but also that someone is willing to work on the rest of the codebase, in order to review the patches leading to the inclusion of new functionalities. So, waiting for <em>Project Ridley</em> to come to the rescue is not going to cut it anymore: if you are proposing to move some functionality from a library to GLib or GTK+ be prepared to work on the whole code and not only on your pet feature.</p>
<p><strong>GtkUnique</strong>: since a &#8220;single instance application class&#8221; doesn&#8217;t really make any sense without an &#8220;application class&#8221; to make it inherit from, I&#8217;m punting the GtkUnique inclusion in GTK+ until the application class lands in first - and that makes it part of the post-2.12 masterplan; hence, I&#8217;m going to remove the gtk namespace from gtkunique and releasing it as a standalone library for the time being. I&#8217;ll commit the namespace switch before this weekend: it&#8217;ll switch from <code>GtkUnique</code> to <code>Unique</code>; everything else will stay the same. Remember to check it out from GNOME SVN server:</p>
<pre>
  svn co http://svn.gnome.org/svn/gtkunique/trunk
</pre>
<p><strong>GConfig</strong>: as I mentioned in the <a href="http://log.emmanuelebassi.net/archives/2007/03/live-wire/">last blog post</a>, I&#8217;m working on the next iteration of GConf. Aside from ongoing design and API churning, I&#8217;ve also submitted a <a href="http://guadec.org/node/533">talk proposal</a> for the next GUADEC about how to tackle the whole &#8216;GConf issue&#8217;. GConf is part of the core GNOME platform, and it has been so since 2000; it&#8217;s almost seven years old, and now it begins to show its age. Since <a href="http://mail.gnome.org/archives/gconf-list/2001-February/msg00010.html">2001</a>, Havoc has been asking the community to implement the same <a href="http://www.gnome.org/projects/gconf/plans.html">set of (five) features</a>; no one has answered his call yet. Maybe the community is to be blamed for this; maybe we need to rethink part of the GConf design to allow someone other than &#8216;the usual suspects&#8217; to fix GConf shortcomings and add new features. For instance: the backend API is a really nasty piece of code and it&#8217;s not easy to drop a new backend into an existing GConf installation; probably, that&#8217;s also why, after all these years, we still have only the XML and had to wait a long time for the evo-ldap backends. I&#8217;m going to put a page on the wiki with what kind of API I&#8217;m thinking about.</p>
<p><strong>talks</strong>: aside from the GConf talk, I&#8217;ve also proposed <a href="http://guadec.org/node/529">a talk/tutorial about the Perl bindings for GTK+</a>. I&#8217;ll also do two talks about Perl, GObject and GTK+ at <a href="http://conferences.yapceurope.org/npw2007/">this year&#8217;s Nordic Perl Workshop</a> which will be held at the end of April in Copenhagen.</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2007/03/of-angels-and-angles/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Live Wire</title>
		<link>http://log.emmanuelebassi.net/archives/2007/03/live-wire/</link>
		<comments>http://log.emmanuelebassi.net/archives/2007/03/live-wire/#comments</comments>
		<pubDate>Fri, 02 Mar 2007 13:09:36 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>GNOME</category>

		<category>C</category>

		<category>project-ridley</category>

		<category>developer</category>

		<category>fosdem</category>

		<category>gtk</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2007/03/live-wire/</guid>
		<description><![CDATA[Back from FOSDEM 2007, after a little detour in Helsinki.
I&#8217;ve opened a bug for the places support in GtkFileChooser: #413076. Attached to it you&#8217;ll find a patch; it should be taken with a grain of salt: it&#8217;s still a work in progress, but implements the main features and shows how the new API should work. [...]]]></description>
			<content:encoded><![CDATA[<p>Back from FOSDEM 2007, after a little detour in Helsinki.</p>
<p>I&#8217;ve opened a bug for the <a href="http://log.emmanuelebassi.net/archives/2007/02/like-eating-glass/">places support</a> in <code>GtkFileChooser</code>: <a href="http://bugzilla.gnome.org/show_bug.cgi?id=413076">#413076</a>. Attached to it you&#8217;ll find <a href="http://bugzilla.gnome.org/attachment.cgi?id=83546&#038;action=view">a patch</a>; it should be taken with a grain of salt: it&#8217;s still a work in progress, but implements the main features and shows how the new API should work. In short, if your application need to use some predefined, user visible folder and you want to provide a link inside the file chooser, you need to create your bookmark file, drop it somewhere and call:</p>
<pre>
gtk_file_chooser_add_shortcuts_from_file (file_chooser
                                          <span style="color:red">&#8220;/path/to/bookmarks.xbel&#8221;</span>,
                                          <span style="color:purple">NULL</span>);
</pre>
<p>We&#8217;d need an intltool able to recognise the <code>title</code> (and eventually <code>description</code>) markup elements of the bookmark files and merge them into the translation pool, so that you can have the places already localised (the machinery is already in place in the patch). I&#8217;ll keep working on it, and finish up the implementation of the automagic places that applications can install in a common place and have it appear in every file chooser, based on the group or application name used in the bookmark.</p>
<p>I&#8217;m also working again on the <a href="http://live.gnome.org/GTK%2B/ApplicationClass">Application class</a> (the wiki page is really out of date with the current iteration I have been workin on - I&#8217;ll update it as soon as possible); now that the session management code has landed in <code>libegg</code> I will add hooks into the application class to have it do The Right Thing®.  Other than an application class, GTK+ really needs a desktop abstraction - a simple API to know whether we are connected to a network, or to control the screensaver, or to launch the default browser/mailer/editor/whatever.  For that to work properly we should really have a working configuration system like GConf moved below GTK+.  I did some prototype API for a configuration engine, mostly stealing<span style="color:blue">^W</span>taking inspiration from alexl work on GVFS (which already has a nice and clean API); will probably have something usable soon.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2007/03/live-wire/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
