Pour cette démonstration deux choix s’offrent à nous
ou plutôt deux logiciels permettant de créer rapidement une interface
utilisateur graphique sous WxWindows.
Ainsi
j’ai pu tester deux logiciels WxDesigner (logiciel payant) et WxGlade (logiciel
gratuit).
Il
faut savoir que j’ai commencé sous WxGlade car le
développement de notre interface graphique n’avait pas pris en compte un
logiciel spécifique.
Il
m’a été très difficile de faire une interface avec ce dernier. Je suis donc passé
par une version d’évaluation de WxDesigner.
Illustration
du logiciel WxDesigner
Etapes
à suivre :
A partir de fichier source:
1. Aller sur le site de WxWindows pour télécharger les
sources
Puis “Download” et choisir la
version concernant le système d’exploitation adequate
2. Compresser le fichier source :
Si le fichier se termine par gz
Il faut taper la commande suivante :
tar zxvf
wxGTK-2.4.1.tar.gz
Si le fichier se termine par bz2
Il faut taper la commande suivante
tar jxvf
wxGTK-2.4.1.tar.bz2
3. Aller dans le répertoire wxGTK-2.4.1
cd wxGTK-2.4.1
4. Configurer le fichier source
./configure
5. Compiler le fichier source
make
6. Se mettre en Super Utilisateur et taper le mot de passe
du root
su
7. Installer du fichier source dans le système exploitation
make install
8. Prévenir le système de l’ajout de nouvelles librairies
ldconfig
9. Sortir du mode Super Utilisateur
exit
A partir du fichier RPM :
1. Aller sur le site de WxWindows pour télécharger les
sources
Puis “Download” et choisir la
version concernant le système d’exploitation adequate
2. Se mettre en Super Utilisateur et taper le mot de passe
du root
su
3. Installer
rpm
-Uvh wxGTK-2.4.1-1.i386.rpm wxGTK-devel-2.4.1-1.i386.rpm
4. Sortir du mode Super Utilisateur
exit
1. Télécharger les paquets qui permettent de gérer WxWindows
Puis “Download” et choisir la
version concernant le système d’exploitation Windows
2. Installer le paquet WxWindows 2.4.2
Il serait intéressant de
présenter le code source à travers un exemple simple même si le code génèré par WxDesigner est relativement simple et clair.
Exemple
simple de code avec l’Api WxWindows :
HelloWorld.cpp
/* librairies utilisées pour la
compilation du programme */
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
/* Définition de mon application dérivant de wxApp */
class MyApp : public wxApp
{
public:
//Surdéfinition de la méthode OnInit()
virtual bool OnInit();
};
/* Definition de la fenêtre pricaipale de type wxFrame */
class MyFrame : public wxFrame
{
public:
// Constructeur
MyFrame(const wxString&
title, const wxPoint& pos, const wxSize& size, long
style = wxDEFAULT_FRAME_STYLE);
/* méthodes des évènements */
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
private:
/* Définition obligatoire des macros WxWindows. Cette macro
contient la correspondance entre les évènements
et les méthodes qui y sont attachés */
DECLARE_EVENT_TABLE()
};
/* ID pour les contrôles et le menu */
enum
{
/* Items des menus */
On_Quit = 1,
On_About = wxID_ABOUT
};
/* Déclaration des autres mcros WxWindows */
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(On_Quit, MyFrame::OnQuit)
EVT_MENU(On_About, MyFrame::OnAbout)
END_EVENT_TABLE()
IMPLEMENT_APP(MyApp)
/* Methode d’initialisation de la fenetre principale */
bool MyApp::OnInit()
{
// création de la fenêtre principale
MyFrame *frame = new MyFrame(_T("Hello World"), wxPoint(50,
50), wxSize(450, 340));
// On rend visible la fenêtre
frame->Show(TRUE);
//indique si l'initiation s'est bien
passé
return
TRUE;
}
/* Contructeur de la fenêtre principale */
MyFrame::MyFrame(const wxString& title, const wxPoint&
pos,
const wxSize& size,
long style): wxFrame(NULL, -1, title,
pos, size, style)
{
// Création du menu File
wxMenu *menuFile = new wxMenu;
//
Création du menu Help
wxMenu *helpMenu = new wxMenu;
helpMenu->Append(On_About, _T("&A Propos\tF1"), _T("Information
de l'application"));
menuFile->Append(On_Quit, _T("&Sortir\tAlt-X"),
_T("Sortir de l'application"));
//
Ajout des menus dans la barre de menu
wxMenuBar *menuBar = new wxMenuBar();
menuBar->Append(menuFile, _T("&Fichier"));
menuBar->Append(helpMenu,
_T("&Aide"));
//
Liaison de la barre de menu à la fenêtre
SetMenuBar(menuBar);
//
Création de la barre de statut
CreateStatusBar();
SetStatusText(_T("Bienvenue avec wxWindows!"));
}
// Méthodes paramétrant les évènements
void MyFrame::OnQuit(wxCommandEvent&
WXUNUSED(event))
{
// TRUE force la fenêtre à se fermer
Close(TRUE);
}
// Méthodes affichant la boite de dialogue « A propos »
void MyFrame::OnAbout(wxCommandEvent&
WXUNUSED(event))
{
// Affiche une boite de dialogue
wxMessageBox(_T("Exemple simple Hello world
"), _T("A propos"),
wxOK | wxICON_INFORMATION, this);
}
Cet exemple présente l’ensemble des éléments de base à
positionner pour avoir un programme utilisant les concepts de base de l’Api
WxWindows.