Drag & Drop in Glom

24. October 2007

Glom drag & drop layout

Currently I am working on drag & drop layout support for glom (see #35809). After fighting a lot with GtkContainer internals I finally got the preview working more or less. On the screenshot you can see how the preview currently looks like. Of course this could be improved in many ways and it would be nice to get some feedback from UI designers how to improve the visual appearance of the preview. (Unfortunately you cannot see the mouse pointer in the screenshot…)

Glom drag & drop screenshot

The next steps are to create a nice toolbar-like window you can drag the new layout items from. Murray proposed a vertical bar which could fit good IMHO.

Anjuta progress

As you probably noticed already, we released a new bug-fix version (2.2.2) which should fix most critical bugs and some little usability problems. Anyway, the more interesting things happen in trunk, where Massimo is working on a new symbol browser that will support more languages and gives us much better informations about the available symbols. Sébastien is doing an awesome work on the debugger and many other parts of the code. tpgww (AT) onepost.net created great artwork for all kind of things and is continuing to add a lot of patches to bugzilla. I will show you more of the new features, once we have our first beta release (hopefully together with GNOME 2.21.1).

Blog migration

BTW, if you can read this I successfully migrated my blog from my own (outdated and probably insecure) wordpress installation to blogs.gnome.org. Thanks to Jeff for updating p.g.o and to the sysadmins for creating and maintaing this service!

This post is for all people that need debian packages for their software but are far too lazy to really learn all this packaging from the beginning. But be aware that it is really easy to build broken packages. I will not explain how to build packages for simple applications since this is explained quite good in the Debian packaging guide. Anyway, it does not explain library-packaging at all.

Packaging a library is not really difficult most of the time. Given that most GNOME libraries share a very common build system layout it would be a waste of time to start from scratch. So we search for a library the seems to be a good starting point for our own package. In my case, packaging libnotifymm, this was obviously glibmm. So first step, get the sources of that package:


apt-get source libglibmm-2.4-dev

Next step, copy the debian directory over to your project, not very tricky either, and delete the useless changelog:

cp -r glibmm-2.4-2.13.3/debian libnotifymm
cd libnotifymm/debian
rm changelog

Now, you end up with some files in the debian directory:

  • copyright: Check the license, put your name in, etc
  • control: The most important file. Replace the name of the library you took as sample with the name of your actual library, take care of the versions and update the dependencies. With an appropriate sample file the format is quite obvious.
  • *.dirs, *.install: These file show where the library gets installed on the system. Normally you should not have to change much here apart from renaming the files from oldlib.dirs to newlib.dirs. But always take a look a the files as there is probably mentioning the old package somewhere and you want to change that.
  • rules: Do not touch for now. Hopefully it will just work, otherwise you will notice that later

In the end, create a changelog using this command which will ensure you have the correct format:

dch --create

Now, let’s give it a go:

dpkg-buildpackage -rfakeroot

If you are (too) lucky, you will have fresh debian packages now. If not, it’s time to check the rules file for stupid shell scripting. The error messages normally give you some indication what could have been wrong. You may need some tries before everything works smoothly.

When you have finished, check if the packages install cleanly on your system and explore them with file-roller to see if they really install all the files needed.

As said before, this is really not the greatest way to create packages and you will do better if you read all the documentation about building packages. But often you get the idea from looking at other packages.

Anjuta 2.2.1 released

9. September 2007

So I am happy to annouce anjuta 2.2.1 (stable) release which is a rather unspectacular bug-fix release. Anyway, it fixes most critical bugs reported since our first stable realease in 2.2 series.

But we are not there yet. A lot of development is happening in trunk currently. But a screenshot is worth more than thousand words:
A function tooltip in gtksourceview editor
This shows a function tooltip in gtksourceview editor which now finally works and provides equal, but better-looking functionality as the scintilla editor.

And as we will soon merge the new sqlite-gda-based symbol-db, we will be able to have much better support for different languages and for more complicated cases. Think of “myclass.return_something()->do_something(” for example.

But I would also like to ask for help. Is there any GTK+ wizard who has an idea about this gdl related crash (or with a similar trace). It seems to crash deep inside GTK+ and I have no idea what could be the cause. Thanks!

This is something I noticed playing around in valgrind and seems to be quite common in GTK+ code. When you retrieve a string from a GtkTreeView, YOU are responsible for freeing it:


gchar* my_string
gtk_tree_model_get (model, COLUMN_MY_STRING, &my_string, -1);
g_message ("Printing my string: %s", my_string);
/* Do something more useful
------------------------------- */
g_free (my_string); // Important, otherwise YOU leak memory.

In the hope it is correct and helps some people…

ScanRail

6. August 2007

Today, I am leaving for a 3 weeks trip through Scandinavia using the train. This is rather cheap because of the ScanRail Pass which allows unlimited travel on Scandinavian railways.

My way, though subject to change at any time will bring me to Copenhagen, Stockholm, Helsinki, Gällivare, Östersund, Trondheim, Bergen, Olso, Göteborg and back to Malmö. In case you want to meet me anywhere on this route, send me a mail and hope that I will have Internet access somewhere to read it.

More important, I won’t read any mailings lists, bugzilla reminders, planets, blogs and so on in the next weeks so don’t expect to hear from me apart from private mail which I might have access to but that’s uncertain.

You thought weather was bad in Birmingham? Forget about it! When I came home (not really…) I saw the most heavy rain ever in my life. The whole region was declared a disaster area and each and every road which could probably have taken me home was flooded.

So after two hours of driving through the night and finding no way to the place where my parents live I ended up driving to my flat in Erlangen which was luckily still reachable. This morning, about 10 hours after the rain stopped, the motorway and the railway is still interrupted and rescue stuff is working all over. But I am finally there after at least some roads are usable again.

Anyway, time to thank some people:

  • For the beer: Philip and Dirk-Jan
  • For sponsering the trip: Openismus
  • For helping me solving the public transport problem and for the interesting talk during
    the flight (and for writing all these cool open source articles): Andreas
  • For giving me a Vala introduction: Jürg
  • For beeing awesome: Everybody!

GUADEC notes

20. July 2007

So GUADEC is absolutely rocking. OK, we do not talk about British weather but the rest is absolutely awesome!

Some notes:

  • Gtk+ 3.0 (or 4.0) seems to be necessary to make the work for maintainers easier. Anyway, until now I see no real reason for breaking two much of the API. Just break all this stuff which is crap and leave the rest as close to the current API as possible. BTW, the GTK+ developers/maintainers really rock – thank you!
  • GOD is definitly a bad acronym for Gnome Online Desktop but we might still have lots of advantages by making all those popular web techniques available for the Desktop. Not really making everything like web but giving the people the choice to use the things they want in an easy to use fashion (Google stuff, YouTube, Flickr, whatever…)
  • There are really many people out there fixing the platform and making it ready for the next generation desktop (gvfs, dconf for example)

Unrelated notes:

  • danilo persuaded me to join the i18n-list and he definitly made the hardest party on tuesday.
  • Vincent seems to be a very important member of the community but nobody really knows what he is doing 🙂
  • Behdad should start fixing the bugs if he wants his hat back
  • Met lots of other rockstars like Murray, Naba, Philip, Jens, Andreas, MacSlow to mention some
  • I am waiting for the power in the ETAP hotel to break down completely because all those people put their notebooks in the same socket and they already broke three.
  • For next GUADEC we need l10n for the name plates and they need to contain nicknames
  • My talk was not that great, at least IMHO. But people seem to be interested in the project so I hope things will improve!

Heading for Birmingham

29. April 2007

Well, I have been lucky and my proposal was accepted for the after hours of GUADEC.

To be honest, I have no idea how to get there and how to stay but I guess I will figure this out later. It is also my first presentation outside school/university and definitly the first in English but it’s going to be interesting.

The travel information on the GUADEC website is not yet very detailed. I miss some information about hostels or hotels for example but I hope it will improve.

Yet another beta version with much improved plugin handling and better docking together with lots of bugfixes. Grab it at Anjuta.org.

There is still much to do but we are on a good way. I have been busy with exams for the last weeks and will be until 4th April so I did not contribute really much to this release. But expect more improvements from my side for the next.

Thanks to everything who contributed or submitted bugs.

Today was the time to get some results on the improvements that can be reached using maemo-launcher. Of course all this tests might be inaccurate and wrong…

At first, I needed a simple example so I took the Hello World! example from the Gtk+ Tutorial. The only code change was to add a GTimer and to print the elapsed time before gtk_main() is called. I now made some test runs (not enough for a statistical correct result…).

Result Gtk: maemo-launcher speeds up this example by about 25%. That could mean the Gtk initialisation takes about 25% of the start-up time. Of course in bigger applications this value will decrease as they do much more than just to init Gtk and create some widgets.

So, the next step was to test what happens to an application that uses Gtkmm instead of Gtk. Again, I used the simplest example from the tutorial, Hello World in gtkmm and modified it to install a timer before Gtk::Main::run(). This test did not give me that nice results as the above. The standard deviation was much higher so I assume caching has a much bigger influence here.

Result Gtkmm: The speed-up reached by the launcher using the gtk booster was about 22% in average but in a range from +54% to -59%. If I used the new gtkmm booster together with the gtk booster I gained 35% more speed and the range was only +65% to -11%.

Overall results: It seems like maemo-launcher does speed things up a bit. On my laptop this only means some milliseconds but maybe it is more important on embedded platforms. I still wonder why I have such a big standard deviation with the C++ code. You can have a look a the exact results (gnumeric sheet)

All this was done using gtk+ 2.10.9, gtkmm 2.10.8 and maemo-launcher from SVN TRUNK. I had to modify the Gtk booster to work with 2.10 which means that it does only init all the GTypes but avoids all the more advanced hacks that no longer work because many leaks in Gtk have been fixed.