Programmation Graphique Libre sous Windows
samedi 7 mai 2005
par
popularité : 16%
par
popularité : 16%

Documents | |||
---|---|---|---|
Programmation Graphique Libre sous Windows
Y. Morère
Mai 2005
Résumé
Le but de cet article est avant tout de présenter l'utilisation des logiciels libres pour la programmation graphique sous windows. Pour cela on se basera sur l'utilisation des bibliothèques GTK+ http://www.gtk.org/, de Glade http://glade.gnome.org/ pour windows pour de développement d'interface graphique et de DevCPP http://www.bloodshed.net/devcpp.html pour l'environnement de developpement. Cela montre aussi la facilité de portage d'une application Linux (en GTK+) vers Windows sans l'utilisation de Cygwin http://www.cygwin.com/.Table des Matières
1 Introduction/Prérequis1.1 Installation de DevCPP
2 Programmation Graphique avec GTK+
2.1 Présentation de GTK+
2.2 Installation Glade/Gtk+
2.3 Conversion des fichiers DevHelp en fichier .chm Aide Windows
2.4 Création d'interface graphique avec Glade
2.5 DevCPP et GTK+ : Création, compilation et exécution du projet GTK
2.5.1 Création du projet
2.5.2 Configuration du projet
2.5.3 Exécution du projet
2.6 Utilisation des DevPak
2.6.1 Présentation
2.6.2 DevPak pour l'utilisation de GTK+
3 Programmation Graphique avec FLTK
3.1 Présentation de FLTK
3.2 Installation Fluid/FLTK à partir des sources
3.2.1 Compilation de FLTK avec MinGW
3.2.2 Compilation de FLTK avec Cygwin
3.2.3 Génération d'interface avec Fluid
3.3 Installation Fluid/FLTK à partir des DevPak
3.4 Création, configuration et compilation du projet FLTK
3.5 Exécution du projet
4 Programmation Graphique avec wxWindows
4.1 Présentation de wxWindows
1 Introduction/Prérequis
Il s'agit dans un premier temps, d'installer et de configurer les outils dont nous allons nous servir pour nous permettre de programmer librement sous linux. Je considère aussi que vous avez un minimum de connaissance en ce qui concerne le C et la programmation à l'aide d'un IDE (Integrated Development Environment, EDI en français). Deux choses sont indispensables, l'IDE DevCPP et les bibliothèque de developpement de GTK+ sous windows.- DevCPP est librement téléchargeable à l'adresse suivante http://www.bloodshed.net/devcpp.html et la page de download http://www.bloodshed.net/dev/devcpp.html ou plus directement http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe
- Glade et les librairies GTK+ sont téléchargeables à l'adresse suivante http://gladewin32.sourceforge.net/, à l'heure ou j'écrit ces lignes, la version glib est 2.6 et gtk+ est la 2.6.7. Normalement vous n'avez besoin que de l'environnement de developpement qui contient tout. Par contre si vous désirez distribuer votre application, il faut aussi distribuer la version runtime des librairies.
1.1 Installation de DevCPP
Il s'agit du fichier devcpp-4.9.9.2_setup.exe à exécuter. L'installation de DevCPP ne pose aucun problème. Je vous conseille de conserver les chemins d'installation par défaut. En effet, comme il est basé sur le compilateur GCC (issu su monde Unix), vous risquez certains problèmes si vous l'installez dans le répertoire Program Files. En effet il n'aime pas trop les espaces dans les noms de chemins. A la fin de l'installation, ne l'exécuter pas avant d'avoir installé les librairies GTK+. En effet ce dernier scrute les fichiers entêtes de l'arborescence GTK+, afin de permettre la complétion automatique des fonctions lors de la programmation. Les sources du petit projet sont téléchargeables ici : zips/projet_gtk.zip2 Programmation Graphique avec GTK+
2.1 Présentation de GTK+
Sources : http://www.gtk-fr.org/wakka.php?wiki=PresentationGtk GTK+ est une bibliothèque permettant de créer des interfaces graphiques (GUI) très facilement. A l'origine, GTK+ a été développé pour les besoins du logiciel de traitement d'images GIMP (GNU Image Manipulation Program). Mais aujourd'hui, le domaine d'application ne se limite plus seulement à GIMP, mais est utilisée dans d'autres projets. Ainsi, l'environnement GNOME (GNU Network Object Model Environment) est basé sur GTK+. L'utilisation de GTK+ pour la création de GUI est très intéressante sur plusieurs points :- GTK+ est sous licence GNU LGPL. Cela fait de GTK+ une bibliothèque libre, permettant ainsi de l'utiliser ou de la modifier sans aucune contrainte financière. Pour avoir plus de renseignement, le plus simple est de visiter le site du projet GNU ;
- GTK+ existe sur plusieurs plates-formes. En effet, GTK+ fonctionne sur les plates-formes UNIX-like, Windows, BeOs;
- GTK+ est utilisable avec plusieurs langages de programmation. Même si les créateurs de GTK+ ont écris cette bibliothèque en C, sa structure orientée objets et sa licence ont permis à d'autres développeurs d'adapter GTK+ à leur langage préféré. Ainsi, il est maintenant possible de programmer des GUI GTK+ en C, C++, Ada, Perl, Python, PHP et bien d'autres.
2.2 Installation Glade/Gtk+
Il s'agit du fichier gtk-win32-devel-2.6.7-rc1.exe à exécuter. Ce dernier installera Glade et les librairies GTK+ dans le répertoire c:\gtk si vous conservez les options pas défaut (ce que je vous conseille de faire pour éviter toute surprise). N'oubliez pas, lors de l'installation de cocher la case qui va permettre à l'installateur de configurer DevCPP pour qu'il prenne en compte ces librairies. Finalement vous pouvez relancer DevCPP pour qu'il finisse de configurer en scrutant l'arborescence de GTK+ à la recherche des fichiers entêtes. Un fois terminé, vous obtenez la fenêtre suivante :

2.3 Conversion des fichiers DevHelp en fichier .chm Aide Windows
Sous Linux, Anjuta et DevHelp forme le couple parfait pour faire des recherches sur les fonctions GTK+ (et d'autres d'ailleurs). Sous Windows il est nécessaire d'utiliser le programme Help. Pour cela il faut convertir les fichiers devhelp en fichier chm. Pour cela il faut récupérer deux utilitaires. Un pour Unix/Cygwin qui va permettre de transformer les fichiers devhelp en projet Help Windows. DevHelp2CHM: Convert DevHelp books into CHM files, on trouvera un article à l'adresse suivante http://www.linuxeden.com/forum/blog/index.php?op=ViewArticle&articleId=640&blogId=110848 Il est possible de télécharger le script devhelp2chm.sh à l'adresse http://htmlhelp.berlios.de/formats/devhelp2chm.sh L'utilitaire de création des fichiers .chm, Microsoft fournit l'utilitaire suivant : HTML Help Workshop disponible à l'adresse suivante http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp Ensuite il suffit de lancer un bash Cygwin et d'effectuer les commandes suivantes pour générer les projets Windows Help.yann@gandalf /cygdrive/c/GTK/share/gtk-doc/html $ for i in gdk gdk-pixbuf glib gobject gtk gtkglext libglade pango& >do >~/devhelp2chm.sh -d $i ./$i/$i.devhelp; >done yann@gandalf /cygdrive/c/GTK/share/gtk-doc/htmlEnsuite il faut utiliser HTML Help Workshop pour générer les fichier .chm. Voici la totalité des fichiers .chm au format zip.
2.4 Création d'interface graphique avec Glade
Commencez par lancer Glade. Vous obtenez les trois fenêtres suivantes :








2.5 DevCPP et GTK+ : Création, compilation et exécution du projet GTK
La version de glade pour windows, lors de la génération de votre code source, a aussi généré, un répertoire devcpp, à l'intérieur du répertoire de votre projet Glade. Ce répertoire contient une fichier config.h qui nous sera utile lors de la compilation du projet. Comme le répertoire devcpp existe déjà, on l'utilisera pour y déposer le projet devcpp.2.5.1 Création du projet
On commence par lancer le programme DecvCPP et dans le menu fichier on choisit nouveau projet. On obtient alors la fenêtre suivante :



#include "../devcpp/config.h"Ce fichier contient la définition de constante comme PACKAGE_LOCAL_DIR. On obtient alors un projet prêt à compiler comme le montre la figure suivante. Malheureusement, il n'est pas compilable en l'état (en fait il va peut être compiler mais l'éditeur de liens échouera). Il faut configurer le projet afin qu'il prenne en compte les librairies GTK lors de l'édition de liens.

2.5.2 Configuration du projet
Il s'agit tout d'abord de vérifier que le compilateur connait GTK+. Pour cela allez dans le menu Outils -> Options du compilateur, puis vérifiez que les chemins vers les entêtes et les librairies GTK+ sont présents comme dans les figures ci-dessous. L'installation des librairies GTK+, modifie la configuration de base de Dev-C++ (si vous avez cochez l'option à l'installation). Et donc par défaut, Dev-C++ connait les chemin vers les fichiers entêtes de GTK+. Si vous n'avez pas cocher l'option, il n'y a rien de grave, il suffit de configurer le projet lui-même (cette dernière solution est d'ailleurs préférable si vous souhaitez developper avec d'autres toolkits graphique) Voici les options modifiées par l'installation de GTK+ :









2.5.3 Exécution du projet
Voilà, tout est prêt, il ne nous reste plus qu'à compiler et exécuter le projet, option compiler et exécuter du menu Projet, afin d'obtenir la fenêtre suivante.
2.6 Utilisation des DevPak
2.6.1 Présentation
DevCpp possède un utilitaires très intéressant Dev-C++ Package Manager, qui permet d'installer de nouvelles librairies de manière simple et efficace par l'intermédiaire d'une interface.
2.6.2 DevPak pour l'utilisation de GTK+
Il faut tout d'abord récupérer les librairies nécessaires pour l'utilisation de GTK+. Voici le liste des DevPak disponible à l'adresse suivante http://devpaks.org/list.php?category=GUI. L'installation se fait dans l'ordre suivant :- glib 2.6.3
- atk 1.9.0
- pango 1.8.0
- gtk+ 2.6.4





- Pour l'onglet compilateur :
-I"<INCLUDE>\gtk-2.0" -I"<INCLUDE>\..\lib\gtk-2.0\include" -I"<INCLUDE>\atk-1.0" -I"<INCLUDE>\pango-1.0" -I"<INCLUDE>\glib-2.0" -I"<INCLUDE>\..\lib\glib-2.0\include" -mms-bitfields
- pour l'onglet éditeur de liens
-lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl
3 Programmation Graphique avec FLTK
3.1 Présentation de FLTK
Source : http://www.xgarreau.org/aide/devel/langtk/cpp_fltk.php FLTK (prononcez "fulltick") signifie Fast Light ToolKit. C'est une librairie disponible pour plusieurs plateformes (Linux/Windows/MacOs X). FLTK a été conçu pour être lié de façon statique avec les applications qui l'utilisent. Rappelons que celà permet de s'affranchir du contrôle des dépendances lors de la distribution d'une application sous forme binaire. Le mauvais point est que chaque application utilisant fltk est livrée avec fltk, ce qui induit une occupation d'espace disque et mémoire qui n'est pas à priori nécessaire. Il est toutefois possible d'utiliser fltk comme un autre toolkit graphique et d'utiliser une liaison dynamique. Cette utilisation tend à se développer, fltk étant de plus en plus fourni avec les distributions linux. Dans la suite j'utiliserais la version de developpement de FLTK (FLTK2.0.x), qui est encore en developpement, car elle permet l'utilisation d'OpenGL.3.2 Installation Fluid/FLTK à partir des sources
3.2.1 Compilation de FLTK avec MinGW
Source : http://www-user.tu-chemnitz.de/~poenisch/FLUID-Tutorial/ Afin de pouvoir compiler la librairie sous Windows, il est nécessaire d'voir 3 composant :- un compilateur C++ MinGW. Il peut être récupérer à l'adresse suivante http://sourceforge.net/projects/mingw/. Récuperer un Snapshot de MinGW à l'adresse suivante http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=82724
- Une console MySYS (nécessaire au compilateur MinGW). Récuperer MySYS à l'adresse suivante http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=82724
- La librairie FLTK2 disponible aux adresses : http://www.fltk.org/, et http://www.fltk.net/.
3.2.2 Compilation de FLTK avec Cygwin
Cygwin est un environnement Style-Linux pour windows. Il est constitué de 2 partie, une DLL (cygwin1.dll) qui agit comme une couche d'émulation de l'API (Applacation Programming Interface) Linux, qui fournit de nombreuses fonctionnalités; et une collection d'outils qui donnent l'impression d'être sous Linux. Par contre Cygwin ne permet pas d'utiliser les application Linux nativement. Il est nécessaire de recompiler les applications à partir des sources. Pour installer Cygwin, il faut télécharger le fichier setup.exe à l'adresse suivante : http://www.cygwin.com/. Ce dernier permet d'installer Cygwin par l'inetermédiaire de votre connexion internet. En effet après avoir fait le choix du type d'installation, du serveur et enfin des utilitaires à installer, il va télécharger les fichiers sélectionnés et les installer. la liste des paquets nécessaires est la suivante :ash autoconf automake base-files base-passwd bash binutils bzip2 coreutils crypt cvs cvsutils cygrunsrv cygutils cygwin cygwin-doc db diffutils editrights expat findutils flex gawk gcc gcc-mingw gdbm gettext grep groff gzip less libiconv libxml2 libxslt liste_cygwin.txt login m4 make man mingw-runtime minires mktemp ncurses openssh openssl pcre perl popt readline rsync sed setsid tar termcap terminfo texinfo w32api which zlibVoici en images, l'installation de Cygwin :














3.2.3 Génération d'interface avec Fluid
C'est le programme de conception d'interface pour FLTK. C'est un éditeur graphique qui est utilisé pour générer du code source FLTK. Fluid édite et sauve l'interface dans des fichiers .fl. Ce sont des fichers textes qu'il est possible d'éditer (si l'on sait ce que l'on fait) afin d'obtenir des effets non gérés par Fluid. Fluid peut convertir le fichier .fl en un fichier .cxx et .h. Le fichier .cxx contient la définition de tous les objets du fichier .fl et le fichier .h déclare toutes le variables globales. Un programme simple peut être fait en mettant tout le code (avec la fonction main()) dans le fichier .fl, ce qui permet de générer un seul fichier .cxx pour la compilation. Mais la plupart des programmes sont plus complexes. Il est alors nécessaire d'écrire d'autres fichier .cxx qui appellent des fonctions Fluid. Ces fichiers doivent alors inclure les fichiers oubien inclure le fichier .cxx. D'une manière générale, le fichier Fluid définit une ou plusieurs fonctions ou classes qui produisent du code C++. Chaque fonction définit une ou plusieurs fenêtres FLTK, ainsi que tous les widgets qui se tronvent à l'intérieur de la fenêtre. Les widgets créées par Fluid peuvent être nommées, nommées complexes ou non nommées. Un widget nommé doit avoir un nom de variable valide (i.e. seulement des alphanumériques et souligné). Dans ce cas, Fluid définit une variable globale ou un membre de classe qui va pointer sur le widget après l'appel du constructeur (ou déclaration). Un objet qui possède un nom complexe possède un . ou une -> dasn son nom. Dans ce cas Fluid assigne au nom un pointeur de widget dans tenter de le déclarer. Ceci peut être utiliser pour récupérer des widgets dans une structure. Un widget non nommé possède un champ nom vide, et aucun pointer n'est stocké. Les widgets peuvent aussi appeler une fonction Callback, qu'il est possible d'écrire dans une autre fichier source, oubien vous pouvez fournir un petit morceau de code directement dans Fluid, qui va écrire un fonction callback provée dans le fichier .cxx. Tutoriel FLTK : http://www3.telus.net/public/robark/ Tutoriel FLTK Fluid en Allemand : http://www-user.tu-chemnitz.de/~poenisch/FLUID-Tutorial/ Tutoriel Fluid : http://embedded.centurysoftware.com/docs/nx/fltk-fluid.html, http://www.fltk.org/doc-2.0/fluid.html


3.3 Installation Fluid/FLTK à partir des DevPak
Comme pour GTK+, il est possible d'installer la librairie FLTK à l'aide de DevPak. Ces DevPak ne sont pas disponible sur le site d'origine http://www.fltk.org/, mais sur le site http://www.fltk.net/. Vous aurez besoin de la librairie pthread et FLTK2. Ces deux librairies sont disponibles aux adresses suivantes et à installer dans l'ordre :- http://www.fltk.net/files/devpak/libpthread.DevPak http://www.fltk.net/files/devpak/libpthread.DevPak


3.4 Création, configuration et compilation du projet FLTK



3.5 Exécution du projet

