Del sitio web de Gtk2Hs: Gtk2Hs es una libreria GUI (Interfaz gráfico de usuario) para Haskell basada en Gtk+. Gtk+ es un conjunto de herramientas extensivo y maduro, multi-plataforma para crear interfaces gráficos de usuario.
El objetivo de este tutorial es el programador intermedio de Haskell, y cubre todo lo necesario para escribir los interfaces de usuario más comunes. En particular los contenidos están indicados en el índice de este tutorial. Para los usuarios avanzados la documentación de la API de Gtk2Hs contiene mucha más información.
Gtk+ es fundamentalmente una biblioteca de componentes llamados 'widgets', que se organizan en una jerarquía orientada a objetos. En Gtk2Hs esto se hace dando a cada widget tanto un tipo como una clase de tipo (type y type class) de Haskell. De este modo el sistema de tipos de Haskell está rigurosamente preservado, y el programador tiene todas las ventajas de la comprobación de tipos del compilador y del interprete de Haskell de Glasgow (ghc). Gtk2Hs tiene también muchas funciones para el casting de tipos.
Los widgets tienen atributos que controlan su comportamiento y apariencia, existiendo dos funciones generales para obtener y establecer los atributos de los mismos.
Para dar/establecer (set) uno o más atributos a un widget usa:
set widget [widgetAttr1 := foo, widgetAttr2 := fie, widgetAttr3 := bar]
Para obtener el valor de un atributo (get) de un widget usa:
x <- get widget widgetAttr1
Casi siempre hay funciones específicas para obtener y establecer los atributos de los widgets, pero en el futuro serán eliminadas. Actualmente, sin embargo es más común el uso de dichas funciones.
Todo lo que sucede en una aplicación en Gtk2Hs está determinado
por las acciones del usuario, como pulsaciones de ratón, presionado de
botones, selección de botones de radio y demás.A esto se le llama eventos y resultan en señales emitidas.
La información sobre los eventos, por ejemplo cuando el usuario pulsa el
botón derecho o izquierdo del ratón, se captura en campos de
datos que pueden ser consultados por el programador de Gtk2Hs.
Normalmente las señales se gestionan por funciones específicas de cada
tipo de widget. Se listan en la sección señales (*Signals*) de
la documentación de la API de ese widget. La mayoría toman una función
de tipo IO ()
como parámetro, pero algunas tienen algún resultado.
El programador de Gtk2Hs, por supuesto, debe escribir esas funciones que determinan la
respuesta del sistema a la acción del usuario.
Finalmente, el etablecimiento del árbol de widgets para tu aplicación y la determinación de la disposición (layout) visual (empaquetado) puede hacerse con el diseñador de interfaces de Glade. Gtk2Hs se integra perfectamente con Glade y hay un tutorial introductorio en el sitio web de Gtk2Hs. Se recomienda el uso de Glade para el seguimiento de este tutorial.