Frozen-bubble-menu
Un article de Le wiki de l'association Okiwi.
Frozen-bubble-menu est une interface graphique très simple permettant d'accéder à certaines options de frozen-bubble disponibles uniquement en ligne de commande. L'objectif est de simplifier leur utilisation par un utilisateur final. Cet outil est dû à un besoin familial et à des commentaires faits lors de la sortie de Frozen Bubble (v.2) sur Linuxfr.
Le choix du nom est directement inspiré de l'analogie entre jumpnbump et jumpnbump-menu (une interface graphique permettant de lancer jumpnbump avec les options sélectionnées par l'utilisateur). Comme pour jumpnbump, le *-menu a été réalisé par des développeurs qui ne font pas partie du projet. Après envoi d'un e-mail au développeur de frozen bubble, Guillaume Cottenceau m'a dit que le nom choisi ne leur posait pas de problème.
Frozen-bubble-menu prend en compte des options disponibles dans la version 2 (et peuvent donc être absentes de la version 1). Les versions 0.1.x étaient écrites en python-tk. À partir de la version 0.2.0, l'interface utilisée est gtk+. Frozen-bubble-menu est publié sous licence GNU General Public Licence version 2 ou supérieure.
Capture d'écran de la fenêtre principale (thème SphereCrystal de GNOME) :
Un projet sur SourceForge.net héberge le code source (archive et dépôt svn).
Installation et utilisation
L'utilisateur devrait télécharger la dernière version disponible directement sur Sourceforge. La toute première version publique (aujourd'hui obsolète) est disponible sur okiwi.org (archive).
Une fois l'archive récupérée : la décompresser et, en tant qu'administrateur de l'ordinateur taper dans une console (une fois dans le répertoire décompressé) :
make install
Tout utilisateur de l'ordinateur a alors à sa disposition frozen-bubble-menu (à taper dans une console). Il est possible de rajouter un racourci dans un menu ou sur le bureau. Ces opérations peuvent dépendre de l'environnement de bureau utilisé. Elles ne seront donc pas détaillées ici.
Pour son bon fonctionnement, il est nécessaire que soit installé :
- frozenbubble (sinon on aura rien à exécuter);
- python (version 2.4 minimum) ;
- les modules pygtk, gtk et gtk.glade : je n'ai pas eu de problème particulier à ce niveau. Cependant, étant donné que j'utilise GNOME au quotidien, le test n'a qu'une valeur limitée... On ne peut pas exclure des problèmes de bibliothèques manquantes pour les machines n'ayant que l'environnement KDE.
Un message d'erreur apparaitra si les modules python ou si Frozen Bubble ne sont pas trouvés.
Fonctionnement interne
Frozen-bubble-menu est un script python qui crée une liste des paramètres à lancer (dans la fonction buildCommandLineParameters()) en fonctions des choix de l'utilisateur (via les cases à cocher et les boutons radio de l'interface graphique). Lorsque l'utilisateur clique sur "Jouer", frozen-bubble-menu lance le jeu grâce à la fonction call() du module subprocess.
Dans le cas où ce petit outil aurait du succès, les chaînes de caractères visibles par l'utilisateur sont internationalisées. Pour cela, on utilise le module gettext et les chaînes à traduire sont marquées avec "_()". Dans le code source, on ne trouve que des chaînes en anglais, les chaînes traduites se trouvant dans les fichiers frozen-bubble-menu.po et frozen-bubble-menu.mo. Le fichier .po est compilé en .mo. C'est ce dernier qui est utilisé par le script. Le fichier a les chaînes du script python mais aussi du fichier glade.
Limites et avenir
Ce programme était l'occasion pour moi de tester la façon de créer une interface graphique en python. Il y subsiste probablement encore des maladresses.
Les première versions étaient écrite avec Tk ("import tkinter"). Cependant, je vois deux problèmes à Tk:
- Les widgets de Tk s'intègrent mal avec le reste de l'environnement (boutons radio, boites à cocher).
- Tk est sensé être livré avec python. Sauf que certaines distributions (debian par exemple) l'ont séparé du paquet python (probablement pour des raisons de modularité). Du coup, la promesse de départ n'est plus vérifiée. Tant qu'à installer un paquet pour faire l'interface graphique, autant utiliser une bibliothèque plus moderne/mise à jour/intégrée/à la mode/etc.
C'est pourquoi, à partir de la version 0.2.0, l'application utilise GTK+ (et Glade parce que j'avais envie de le tester). Glade est une interface graphique qui permet de créer graphiquement l'interface. Le fichier produit est un fichier XML dont le nom d'extension est glade. (incroyable, hein?)
Cela m'a permis de concevoir l'interface très rapidement et d'avoir un meilleur résultat avec moins d'effort. Le cas le plus flagrant étant la boîte de dialogue "À propos" qui est prévu d'origine donc il n'y a qu'à remplir les champs avec le texte adéquat.
L'option concernant les effets graphiques de la toute première version (0.1.0) a été supprimée car elle est inutile : en effet elle est disponible dans l'interface principale de Frozen Bubble. Autant éviter de faire doublon.
Les versions suivantes ne devraient pas voir de bouleversements majeurs. Je pense que les bases sont maintenant stables et que l'avenir devrait se concentrer sur l'ajout de fonctions (gérer plus d'options de Frozen Bubble).

