Syndication : Atom 1.0  RSS 2.0
Blogs des développeurs   »   Alp Mestan :: Blog

Article complet: Hello Gtk2Hs !

12/06/2009

[GTK+][Linux][OpenSource] Hello Gtk2Hs !

Bonjour,

M'étant mis à Haskell depuis quelques temps (principalement grâce au désormais fameux Real World Haskell), je me suis dis qu'il était temps que je regarde un peu du côté des bibliothèques pour interfaces utilisateurs. Hé bien, je n'ai pas été déçu. Il y a notamment Gtk2Hs qui fournit un bon binding de GTK+, compatible avec Glade (le designer) et qui permet donc de charger des interfaces depuis du XML.

Gtk2Hs en action

[Suite:]

Allez-y, devinez combien de lignes il a fallu ?
Initialiser le GUI, créer les widgets, ... Hmm beaucoup ?

Hé bien non ! Le designer, Glade, exporte le "projet" suivant dans un XML.

Designer de fenêtres de GTK+

XML généré :
 
<?xml version="1.0"?> 
<glade-interface> 
  <!-- interface-requires gtk+ 2.16 --> 
  <!-- interface-naming-policy project-wide --> 
  <widget class="GtkWindow" id="window1"> 
  <property name="title" translatable="yes">Hello, Developpez !</property> 
  <property name="default_width">400</property> 
  <property name="default_height">400</property> 
  <child> 
  <widget class="GtkButton" id="yo"> 
  <property name="label" translatable="yes">Bonjour Developpez, comment vas-tu ? 
 
Je suis un programme Haskell qui utilise 
Gtk2Hs, binding Haskell de GTK+. 
 
Clique pour fermer.</property> 
  <property name="visible">True</property> 
  <property name="can_focus">True</property> 
  <property name="receives_default">True</property> 
  </widget> 
  </child> 
  </widget> 
</glade-interface> 

Et voilà, l'essentiel est fait.

Voici donc le main.hs, qui est le programme Haskell dont vous avez vu un screenshot plus haut :

 
module Main where 
 
import Graphics.UI.Gtk -- on importe le module GTK 
import Graphics.UI.Gtk.Glade -- et le module Glade, pour créer une IHM depuis le XML au format Glade 
 
main = do 
  initGUI 
  Just xml <- xmlNew "test.glade"  
  window <- xmlGetWidget xml castToWindow "window1" 
  button <- xmlGetWidget xml castToButton "yo" 
  onClicked button $ do 
  putStrLn "Bye" 
  mainQuit 
  onDestroy window mainQuit 
  widgetShowAll window 
  mainGUI 

Et voilà. Assez simple non ? ;)

Social Bookmarking:

                                     

Commentaires, Pingbacks:

Connectez-vous pour vous abonner à cet article:

Flux de commentaires pour cet article : Atom 1.0  RSS 2.0
Commentaire de: SpiceGuid [Membre]
Très bonne idée.
C'est important de montrer qu'on peut aussi le faire avec un langage fonctionnel même aussi pur que Haskell, c'est évident pour nous mais ça ne l'est pas forcément pour tout le monde, certains ont des doutes à ce sujet.

Dans la même catégorie des bindings pas du tout académiques il y a un (des?) binding Haskell pour la SDL.

Permalien 14/06/2009 @ 19:53

Vous devez être identifié pour poster un commentaire.

Liste des blogs

Alp Mestan :: Blog


Powered by Caml
Powered by Haskell
Mon blog en anglais.

Blog de Alp Mestan

Rechercher

<  Février 2012  >
Lun Mar Mer Jeu Ven Sam Dim
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29        

Syndiquez ce blog XML

Articles :

Commentaires :

 
 
 
 
Partenaires

Hébergement Web