Skip to content

Dear Planet GNOME readers…

April 27, 2011

… please welcome your new kid on the blog: his name is Denis Washington, and he is a 21-year old Computer Science student living in Berlin, Germany. He is a passionate Linux user since the days of Fedora Core 1 and has made several small contributions to GNOME in the past few years, including participation in the Google Highly Open Participation Contest 2007/2008 (now called Google Code-in). He has been accepted to this year’s GNOME Summer of Code and will try as well as he can to keep you updated about his progress in the next months with his blog. Please be nice to him!

That guy would be me, yes.

So now it’s finally time for me to say: Hello, Planet GNOME! First of all, let me tell you how much of a honor it is to be aggregated here. I’ve been reading the Planet for years and have learned a lot about GNOME, it’s community and the development of Free Software (thanks to everyone who has ever posted here!). Being part of it now feels just awesome!

I would also like to thank the GNOME project for accepting me to Google Summer of Code and thus giving me the possibility to not only post here, but also work full-time on making GNOME rock even harder – and even be paid a impressive amount of cash (for a student) in the process. Special thanks go to Juan Pablo Ugarte, who agreed to be my mentor for the summer (I hope he won’t regret it!). Also, great thanks to Google for even making it possible for the GNOME project to give me the possibility to… erm… just thanks! 🙂

Phew. Now with all the acknowledigments of my limitless gratitude out of the way, let me introduce you to what I am going to work on during the summer. My project is titled GObject property binding support in GtkBuilder and Glade, and this is exactly what I’m going to deliver: the possibility to create bindings between widget properties right within Glade – our beloved GTK+ user interface editor – and save them along with the interface to GtkBuilder files.

Now before you follow the above link to my extremely lengthy Summer of Code application, let you give you a quick overview of the project.

What is this about?

Since 2.26, GLib has a GObject property binding API (named GBinding) which implements a simple form of what the cool kids call reactive programming. Basically, it lets you define that whenever a specified property of a particular GObject (the source) changes its value, a certain other GObject instance property (the target) should be updated accordingly – either by setting it to the same value, or by passing that value to a transformer function which computes the target’s new value. This is a nice thing to have, as this can save a lot of potentially error-prone boilerplate code (writing and connecting signal handlers which call setters on property changes) in favor of a single call to g_object_bind_property() for things like “This widget should be sensitive if that checkbox is enabled” or “The page displayed by this notebook  depends on that radio group’s currently selected item” (among other things).

Now this is nice and all, but it would be even better if you could define bindings between your Glade UI’s widgets graphically and save them as part of GtkBuilder files, without having to write a single line of additional code, wouldn’t it? Well, this is exactly what I’d like to implement this summer. To be exact, you’ll be able to:

  • Right-click a property of a widget in Glade’s property inspector and choose “Bind to Source Property…” (or something similar) to make create a property binding
  • Specify source-to-target transformation functions for property bindings by name which will be automatically connected like gtk_builder_connect_signals() already does for signals
  • See the effect of  the defined property bindings in preview mode and directly in the Glade workspace
  •  Free your code from tedious manual-property-binding signal handlers and calls
  • Thank me for my awesome work 😉

I hope I’ll be able to deliver all of this, including a lot of polish and extensive testing,  in the next 12 weeks; considering that my semester ends only a few weeks after GSoC starts, it won’t be easy, but I’ll certainly do my best.

In any case, I will keep you updated about my progress during this summer. (This is, of course, the reason why I created this blog, and why I was able to sneak into Planet GNOME.) So expect to hear from me again soon!

Best regards,
Denis Washington


From → GNOME, Summer of Code

  1. Great post! I have to admit before reading this, I had no idea what the project was about, but now you have me interested 🙂

  2. Nice to see you accepted! Good luck and see you at Desktop Summit!

  3. What’s up to all, the contents present at this web page are actually awesome for people knowledge, well, keep up the nice
    work fellows.

Trackbacks & Pingbacks

  1. Glade and property binding: Finally something to see! « denisw

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: