Criawips

ImendioConf and LWE

So, I haven't been blogging for quite some time. And I actually have to good excuses for that: I have been really busy during the last weeks (ImendioConf took place in the beginning of November; Linux World Expo in Cologne the week after) and my server has been down for 2 weeks (I'm sorry).

But now things are getting back up again (at least most of the SVN trees and web sites are) and I can catch up with some things.

libccc update

Editable Text

I just finished the text editing part of libccc (which is mostly a port of the GnomeCanvasTextEditable that I wrote for criawips). Check out libccc from subversion (new URL) and play around with it.

libccc download

So, now you can download a tarball of libccc (criawips' cairo based canvas).

Canvas Sweetness

I'm almost finished with my current project. A GTK+ and cairo based canvas.

It's pretty nice as it has got several nice features like:

  • Model/View split
  • API similar to GNOME canvas (easy to learn)
  • Cairo rendered Sweetness
  • GObject based API
  • Finer grained signal handling
  • Choose whether or not to have pixel-aligned objects
  • Small demo application showing some of its features

Editing text in existing presentations

This week I finished a big step forward for criawips: Editing of text in existing presentations.

This is an important step towards a usable application, now I just need to get a working implementation of templates and adding new text blocks and hey, we can release 0.1 (0.0.10 should be released this weekend).

Screenshot? You don't get one, here's my first istanbul video:

Pango Layouts and Editing

I didn't blog/hack for quite some time now (maybe except some minor bug fixing for some apps from Ubunut Breezy); the last 2 days I happily found time to hack on criawips.

I'm working on the editing stuff now, but I have some issues with to few documentation about using the Pango Layout class. Is there documentation about using the layout for custom widgets/etc. that need to support editing (that means especially stuff like cursor navigation, selections and text insertion)? I find the GtkEntry code very big for example code.

At least my code works now for text which is centered and aligned to the top of a display block. More work for sunday...

Complex text layouts

When I was looking for some thing wrt complex text layouts, I came up to the GTK+ guys and asked them whether they have seen some code to layout text in some complex ways (e.g. float around some image). Matthias gave me some hints and finally I found the Text Widget (which is not what the name promises).

The code generally does this: create some polygons; one which may contain text, others that should not be covered by text. Then it creates lots of GnomeCanvasText items and places them over the polygons arranged in a way that enables text floating around the polygons (so Matthias, you have benn wrong with the hint that it is a patch for pango; but that not so important).

Finally I got that code running, added some optimizations and got rid of some C++ code (now it's only plain C - which it has been only up to 80% before). The thing is now quite fast - even on my powerbook (that things is really a LOT slower with this application than the x86 machines I've been testing this on).

Next steps are: split the code into more logical parts (the "event" event handler for the canvas items is not really nice this way); remove the global variables and then start creating some structures tha can do text-layout in a way that PangoLayout can.

(Before you ask for the sources let me mention that they look really ugly at the moment and that I need to resolve a license issue before I publish my modifications, sorry)

Generic Undo/Redo

I took a look into the web and found the gundo project ("A Multilevel Undo/Redo Facility for Gtk"); I ported this from GTK+ 1.2 to GTK+ 2.0 and now I'm starting to make it look the way I would want to use it in an application:

  • have an Interface that can be implemented by applications document classes
  • have some GtkToolItems for undo/redo that can be used for undo/redo widgets in toolbars
  • have custom GtkAction elements for easy embedding into the application, etc

GUndo still only lives on my computer as I don't think that my changes are yet as clean as I want them to be. To be published soon...

20 May 2005

The last weeks I've been looking for some special things that I might want to use for criawips:

Automated Software Testing

When I found Tim's gerd I was quite impressed. Using it, you can record GObject-Events and use them to replay an application session. This could be very cool for both testing and demonstration puposes as one can easily record one session and launch the application later with that information (this way you have a much better i18n as for video recording things). Gerd is in the GNOME CVS tree (module "gerd").

30 Apr 2005

Finally I have a weekend with lots of time to spend on stuff I like. Three days ago I started a small project about code generation, my aim: deliver a small tool that creates GObject code to handle a Document Object Model (DOM). Well, there's alreday stuff like gdome... one might say, but my aims differ from gdome such as I don't want to have one generic API to access the DOM (which can be bloating your source code by adding code that's not as beautiful as possible).

Talking about presentation stuff, I want to achieve this:

  1. Generate a special API for one XML Schema
  2. Provide load/save and (un)seriallization code for this

So this should result in something like this:

  • Have an object-based API to access the DOM
  • Reduce coding erros by automatically generating the code
  • Provide automatically working load/save support for files

So I could end up with some XSLT sheets to convert other XML based format into the criawips format and have a nice API for the application and for importers of other formats.

The result (generating classes with xsd:string and xsd:boolean attributes) can be found at my website.

Syndicate content