SIL LSDev Linux Development

Language software for Linux and Mac OS X

Complex text input

I’m working on text input methods at the moment. That is, how pressing keys on the keyboard turn into text on the screen.

For English and other languages with a roman alphabet, this is fairly simple. Pressing ‘A’ on the keyboard results in the letter ‘A’ on the screen. But with some languages, this is not so simple. For example:

  • Chinese and other ideographic languages have several thousand characters, one key to one character really doesn’t work (unless you have a lot of desk space and very long arms).
  • Thai doesn’t have so many characters, but there are rules on how they can be used. For example, there are marks to denote rising and falling tones for sounds, but sounds may not rise and fall at the same time. A good computer program will respect these rules.

There are facilities in both Linux and Windows that deal with these issues. We have made a demonstration program to learn how to integrate the Linux methods of input into our own program. Read the rest of this post…

GTK# on Windows

Our GUI development on Linux is done with GTK2+, and in the case of Mono, GTK#.

On a GTK based Linux system using Mono, this setup ‘just works’. It takes a little bit more setting up on Windows, but with a small amount of effort, it is possible to take compiled programs straight from Linux and run them on Windows with Microsoft .NET (It is also possible to use Mono on Windows).

This is the procedure I used to use GTK# on Windows:

Read the rest of this post…

Explorations in GTK# part 2

Glade and custom widgets

Glade and GTK# are a powerful combination. One that we are using for our Mono re-implementation of WorldPad. It’s quite possible to build a very functional application using just the standard widgets provided by GTK, but sometimes specific functionality is needed which is not found in the regular set of widgets.

In this instance, a "custom widget" can be inserted into a Glade interface. This is easy to do, but filling in the custom widget with something useful is a bit more tricky.

Custom widgets in Glade
Above: Custom widgets in Glade.
Below: Custom widgets being implemented as "ColorPickerButton"s in the application.
Custom widgets in use

How do we implement the custom widget?

Read the rest of this post…

Explorations in GTK# part 1

GTK.Settings: What and how

For the standard set of GTK# widgets, there is a property or method to change almost any aspect of the widgets appearance and behaviour. But some things require using GTK.Settings. For example setting the palette in a colour selector, or changing the cursor behaviour in a text entry.

How…? To set a property, the following methods can be used:
Read the rest of this post…


Hi, this is Andy from the Language Software Development department of SIL in Canada. Welcome to our new blog!

Our motley crew!

Our motley crew!

Currently the focus of our work is moving the Fieldworks suite of applications from Microsoft Windows to the free operating system, Linux.

Through this blog, we will share news about our progress in our projects, as well as our day to day discoveries about Linux and software development as a whole.