Les Objets

From PilibWiki

Jump to: navigation, search

Section Précédente : Premier Programme | | Retour au sommaire | | Section Suivante : Organiser une fenêtre


Il est maintenant temps d'apprendre a utiliser les objets qui vous intéressent. J’entends par objets les boutons, les zones de texte, mes menus, ... Une fois que vous aurez fait le tour de ceux qui vous intéressent, rendez vous la section « Organiser sa fenêtre ».


Contents

Les fenêtres

Dans cette section, nous allons apprendre a générer une simple fenêtre avec gkwindow. Vous pouvez vous referez la section gkwindow dans le fichier pilib.html inclus dans la pack PILIB pour plus d'informations sur les types (integer, string, ...). La subroutine gkwindow est structuréé de cette manière :


gkwindow(caption,iborder,istate,window,iclos)

caption 
le texte affiché dans l'entête de la fenêtre.
iborder 
taille de la fenêtre. Par exemple, si vous mettez 200, vous aurez une fenêtre de 200x200 pixels.
istate 
l’état de la fenêtre : 0 pour normal ("restored") et 1 pour maximisé
window 
le nom de la fenêtre pour le programme. Nous utiliserons ce nom pour appeler la fenêtre. Attention, donnez des noms explicites pour ne pas vous perdre.
iclos 
cette argument vaut 0 en temps normal, et vaut 1 lorsque la fenêtre est ferme. Remarque : La fenêtre reste ouverte jusqu' l'appelle de gkdestroy.

Exemple :


program example
use pimod
implicit none
integer(kind=kptr) :: Win,iclos
call piinit

call gkwindow(c('window example'),100,0,Win,iclos)

call gkshow(Win) 
do while(iclos.eq.0)
	call gkproc
end do
call gkdestroy(Win)
end program example


Fenêtre d'exemple
Fenêtre d'exemple

Le Texte ou Label

Dans cette section, nous allons apprendre à générer un objet texte avec gktext. Vous pouvez vous referez à la section gktext dans le fichier pilib.html inclus dans la pack PILIB pour plus d'informations sur les types (integer, string, ...). (Vous pouvez changer de texte en cours de programme avec la fonction gksetstring, voir section suivante avec les zones de texte.) La subroutine gktext est structurée de cette manière :


gktext(texte,nom)

texte 
le texte afficher.
nom 
le nom du texte pour le programme.

Exemple :

program example
use pimod
implicit none
integer(kind=kptr) :: i,Win,iclos,Text
call piinit

call gkwindow(c('Texte'),0,0,Win,iclos)

call gktext(c('Salut les amiches'),Text)
call gkput(0,0,-1,-1,Win,Text)

call gkshow(Win) 
do while(iclos.eq.0)
	call gkproc
end do
call gkdestroy(Win)
end program example
Un Texte simple
Un Texte simple

Les boutons

Dans cette section, nous allons apprendre à générer un objet bouton avec gkbutton. Vous pouvez, encore une fois et comme toujours, vous referez la section gkbutton dans le fichier pilib.html inclus dans la pack PILIB pour plus d'informations sur les types (integer, string, ...). La subroutine gkbutton est structurée de cette manière :


gkbutton(texte,nom,iclick)

texte 
le texte afficher dans le bouton.
nom 
le nom du bouton pour le programme.
iclick 
variable entière associée à ce bouton. De valeur 0 en temps normal, elle change de valeur et passe à 1 lorsque l'utilisateur clique sur le bouton.

Exemple :


program example
use pimod
implicit none
integer(kind=kptr) :: i,Win,iclos,But
call piinit

call gkwindow(c('Bouton'),0,0,Win,iclos)

call gkbutton(c('Ceci est un bouton'),But,i)
call gkput(0,0,-1,-1,Win,But)

call gkshow(Win) 
do while(iclos.eq.0)
	call gkproc
end do
call gkdestroy(Win)
end program example


Un Bouton nommé Bouton
Un Bouton nommé Bouton

Les zones de texte ou Text Field

Dans cette section, nous allons apprendre à générer une zone de texte sur une ligne avec gkxedt et une sur plusieurs lignes avec gkzedt (le nom n'est pas vraiment explicite ce coup çi, je vous l'accorde). Bon, cette fois là , vous avez compris, referez vous la section gkxedt ou gkzedt pour plus d'infos.

Afin de récupérer ou de mettre du texte dans ces zones (en imaginant que nous avons une zone de texte de nom 'ihzonedetext'), il faut utiliser les fonctions :

gksetstring pour mettre du texte :

gksetstring(c('tapez ici votre texte'),ihzonedetext)

gkgetstring pour récupérer le texte :

gkgetstring(message,ihzonedetext) 

Remarque : 'message' est ici une variable type(string) qui vaudra le texte qui était dans la zone de texte au moment de l'appel de la fonction gkgetstring.)

La subroutine gkxedt est structurée de cette manière :


gkxedt(len,nom)

len 
nombre maximum de caractères possibles. 0 pour infinie.
nom 
le nom de la zone de texte pour le programme.

La subroutine gkzedt est structurée de cette manière :


gkzedt(scroll,nom)

scroll 
nom du container dans lequel est placé la zone de texte. Attention !! Le gkcontain correspondant (voir la section « Organiser sa fenêtre ») doit être de type scroll.
nom 
le nom de la zone de texte pour le programme.

exemple Zone de texte basique :


program example
use pimod
implicit none
integer(kind=kptr) :: i,Win,iclos,TextField
call piinit

call gkwindow(c('Zone de texte'),0,0,Win,iclos)

call gkxedt(50,TextField)
call gkput(0,0,-1,-1,Win,TextField)

call gkshow(Win) 
do while(iclos.eq.0)
	call gkproc
end do
call gkdestroy(Win)
end program example


Zone de texte de base
Zone de texte de base


exemple grosse zone de texte :

program example
use pimod
implicit none
integer(kind=kptr) :: i,Win,iclos,zedt,contain
call piinit

call gkwindow(c('Zone de texte scroll'),0,0,Win,iclos)

call gkcontain(2,-1,-1,0,contain)	
call gkzedt(contain,zedt)
call gkput(0,0,-1,-1,Win,contain)

call gkshow(Win) 
do while(iclos.eq.0)
	call gkproc
end do
call gkdestroy(Win)
end program example


Zone de texte avec défillement
Zone de texte avec défillement

Les barres de chargement

Dans cette section, nous allons apprendre à gérer une barre de chargement avec gkbar. Referez vous la section gkbar pour plus d'infos.

La subroutine gkbar est structuré de cette manière :


gkbar(nom)

nom 
le nom de la barre pour le programme.

Pour gérer l'avancement de la barre, il est nécessaire d'utiliser la fonction gksetfloat. Par exemple, si votre barre a pour nom 'ihbar', avec la ligne de code :


gksetfloat(0.5DO,ihbar)

La barre sera à 50 pour cents. Les valeurs en pourcentage sont comprises entre 0 et 1 (0 et 100 pour cent) et doivent être des réels de taille 8. ( l'utilisation de 'D0' signifiant 'fois 10 puissance 0 pour un float de taille 8', je vous rappelle au passage que PILIB nécessite des réels de taille 8).



program example
use pimod
implicit none
integer(kind=kptr) :: Win,iclos,barre
call piinit

call gkwindow(c('Barre'),0,0,Win,iclos)
call gkbar(barre)
call gksetfloat(0.7D0,barre)
	
call gkput(0,0,-1,-1,Win,barre)

call gkshow(Win) 
do while(iclos.eq.0)
	call gkproc
end do
call gkdestroy(Win)
end program example


Barre de chargement
Barre de chargement

Les Boîtes de Dialogue : MSGBOX

Dans cette section, nous allons apprendre gérer une boite de dialogue avec gkmsgbox. Referez vous à la section gkmsgbox pour plus d'infos. La subroutine gkmsgbox est structuré de cette manière :


gkmsgbox(texte,ibouton,icone,iaction)

texte 
le texte à afficher dans la boîte de dialogue.
ibouton 
L'entier ibutton décrit les boutons à afficher, entrez les valeurs suivantes pour obtenir la combinaison souhaité :

1: OK

2: Close

3: Cancel

4: Yes, No

5: Ok, Cancel

6: Yes, No, Cancel

icone 
même chose que pour l'affichage des buttons, choisissez l'icone à afficher :


0: Info

Info
Info

1: Warning

Warning
Warning

2: Question

Question
Question

3: Error

Error
Error


iaction 
l'entier iaction prend la valeur du bouton pressé. Par exemple, si l'utilisateur presse 'Yes', iaction vaudra 4 à la fermeture de la boîte de dialogue.

1: Ok

2: Cancel

3: Close

4: Yes

5: No


Pour plus d'explications sur le fonctionnement des MessagesBoxes, rendez vous à la section prévue à cet effet dans la section Les Bases pour programmer avec PILIB.

Les Listes

Dans cette section, nous allons apprendre gérer une liste avec gklist. Attention, afin de permettre l'accés au site en faible résolution, certaines lignes ont été coupées, puis reportés sur la ligne suivante. Le symbole suivant les accompagnes : /!\. La subroutine gklist est structuré de cette manière :


subroutine gklist(titrescol,largeurscol, /!\
           positiontexte,nbcol,pas,scroll,nomListe)

titrescol 
Titres des différentes colonnes.
largeurscol 
Largeur en pixels des différentes colonnes.
positiontexte 
position du texte dans les différentes colonnes.
         0.0: gauche
         0.5: centre
         1.0: droite
nbcol 
nombre de colonnes.
pas 
pas en x entre les textes.
scroll 
nom du container scroll.
nomListe 
nom de la liste pour le programme.


Exemple de programme :

program list
    
use pimod
implicit none
integer(kind=kptr) :: ihwin,iclos,ihscrollcontain,ihlist
integer(kind=kptr), dimension (3) :: ihwidth
real(kind=kdouble), dimension (3) :: ihalign
type(string) :: cols(3),vals1(3),vals2(3),vals3(3)


cols(1)=c('Nom')
ihwidth(1)=100
ihalign(1)=0.5D0
cols(2)=c('Prenom')
ihwidth(2)=100
ihalign(2)=0.5D0
cols(3)=c('Age')
ihwidth(3)=100
ihalign(3)=0.5D0

vals1(1)=c('Alfred')
vals1(2)=c('Dupond')
vals1(3)=c('13')
vals2(1)=c('Roger')
vals2(2)=c('Delafond')
vals2(3)=c('14')
vals3(1)=c('Dudule')
vals3(2)=c('Pitipoix')
vals3(3)=c('12')
call piinit

call gkwindow(c('gklist'),0,0,ihwin,iclos)

call gkcontain(2,0,0,0,ihscrollcontain)

call gklist(cols(1:3),ihwidth(1:3),ihalign(1:3), /!\
            3,0,ihscrollcontain,ihlist)
call gklistins(1,vals1(1:3),3,ihlist)
call gklistins(2,vals2(1:3),3,ihlist)
call gklistins(3,vals3(1:3),3,ihlist)
call gkput(0,0,300,100,ihwin,ihscrollcontain)
    
call gkshow(ihwin)

DO WHILE(iclos.eq.0)
    call gkproc
END DO

call gkdestroy(ihwin)
    
end program list


Liste dans PILIB
Liste dans PILIB

Les Selectionneurs de fichier

Dans cette section, nous allons apprendre gérer Les Selectionneurs de fichier avec gkfilesel. Attention, afin de permettre l'accés au site en faible résolution, certaines lignes ont été coupées, puis reportés sur la ligne suivante. Le symbole suivant les accompagnes : /!\ La subroutine gkfilesel est structuré de cette manière :


subroutine gkfilesel(titre,types,description, /!\
                     ntypes,nomfichier,numérotype)

titre 
Titre de la fenêtre de selection.
types 
Types de fichiers (leur extensions).
description 
Description des types de fichiers. (en relation avec Types de la ligne d'au dessus).
ntypes 
nombre de types.
nomfichier 
nom du fichier séléctionné par l'utilisateur.
numérotype 
numéro du type de fichier séléctionné par l'utilisateur.


Exemple de programme : (il retournera dans l'invite de commande ou la console le nom du fichier séléctionné, ainsi que son numéro de type.)

program fileselect
    
use pimod
implicit none
integer(kind=kptr) :: nbselected
integer(kind=kptr), dimension (3) :: ihwidth
real(kind=kdouble), dimension (3) :: ihalign
type(string) :: cols(3),pat(3),fichier

cols(1)=c('.f95')
cols(2)=c('.f77')
cols(3)=c('.txt')

pat(1)=c('fichiers fortran95')
pat(2)=c('fichiers fortran77')
pat(3)=c('fichiers fortrantexte')

call piinit

call gkfilesel(c('Selectionnez le fichier'),cols(1:3), /!\
               pat(1:3),3,fichier,nbselected)
print *,f_str2char(fichier)
print *,nbselected
    
end program fileselect


Selection de fichier
Selection de fichier


Section Précédente : Premier Programme | | Retour au sommaire | | Section Suivante : Organiser une fenêtre

Personal tools