Comme pour une fenêtre système, on peut rattacher un popup à une fenêtre utilisateur.
Pour ce faire, le plus simple est de définir le popup dans la section remote.
Un
popup de fenêtre utilisateur est identique à une extension de popup de fenêtre système, à ceci
près que l'on remplace menubar ou channel par le titre de la fenêtre utilisateur
préfixé d'un arrobas.
Par exemple on écrira:
menu @mafenetre {
...
}
Ce popup se déroule lorsqu'on clique du bouton droit dans la fenêtre utilisateur
Le paramètre qui est relié à la sélection dans la liste à droite est la fonction:
$sline(@<Nom de la fenetre>,<n>)
où <n> est le n ième objet sélectionné, la sélection pouvant être multiple.
L'équivalent de $sline avec un
popup normal sont les paramètres $1, $2 comme il a été dit à la page
"popups" de mon cours.
Pour prendre un exemple, redéfinissons notre fenêtre @mafenetre a l'aide d'un
alias "AfficheFenetre" qui sera écrit dans le remote (ne pas oublier le mot clé alias):
alias AfficheFenetre {
window -l15 @mafenetre
aline -ph @mafenetre Ceci est un texte
aline -l @mafenetre Riri
aline -l @mafenetre Fifi
aline -l @mafenetre Loulou
}
puis dessous, écrivez:
menu @mafenetre {
Afficher la sélection: aline -ph @mafenetre Vous avez sélectionné $sline(@mafenetre,1)
}
En mode commande, tapez /affichefenetre , ce qui a pour effet d'afficher une fenêtre avec
une liste à droite contenant les textes "Riri","Fifi" et "Loulou".
Lorsque vous cliquez le bouton droit sur Loulou, vous voyez apparaître un
popup ne contenant qu'un champ. Faites "Afficher la sélection" et vous vous apercevez
que mirc affiche la phrase Vous avez sélectionné Loulou. Faites de même avec Riri et
Fifi.
Si vous sélectionnez plusieurs objets (Fifi, Riri et Loulou par exemple) le message correspond
au premier objet de la sélection, car nous avons appelé $sline avec le paramètre <n>=1. Si
vous souhaitez que mirc vous affiche tous les messages correspondant à la sélection, il faut
faire une boucle. Il faut savoir que $sline(<Nom de fenetre>,0) retourne le
nombre de champs sélectionnés.
Voici un exemple qui permet d'afficher toute la sélection: on utilise un alias affichetout
et on a rajouté une ligne au popup de la fenêtre:
alias affichetout {
set %N $sline(@mafenetre,0)
if ( %N == $null ) return
set %i 1
aline -ph @mafenetre Les %N objet(s) que vous avez sélectionnés sont, dans l'ordre:
:boucle
aline -ph @mafenetre Objet %i : $sline(@mafenetre,%i)
inc %i
if ( %i > %N ) return
goto boucle
}
menu @mafenetre {
Afficher la sélection: aline -ph @mafenetre Vous avez sélectionné $sline(@mafenetre,1)
Afficher toute la sélection: affichetout
}
Si donc vous sélectionnez Riri et fifi, vous verrez affiché:
Les 2 objet(s) que vous avez sélectionnés sont, dans l'ordre:
Objet 1 : Riri
Objet 2 : Fifi
A noter que, et cela est une erreur courante que je fais souvent, la plupart des fonctions
de mirc retournent la chaîne vide au lieu d'un zéro. Par exemple, si vous n'avez rien
sélectionné dans la liste, la variable $sline(@mafenetre,0) retourne la chaîne nulle
au lieu de retourner zéro. Personnellement je trouve que c'est ridicule de retourner un
caractère spécial là ou on s'attend à un chiffre, mais c'est comme ça!
Notez aussi en aparté, que ce bout de script fonctionne parfaitement off-line: il n'est pas
utile d'être connecté à un serveur pour le faire fonctionner.
La fonction $sline peut aussi retourner le numéro de ou des objets sélectionnés: pour
cela, utilisez $sline( .. ).ln.
Enfin un petit mot sur la fonction $line: elle prend les mêmes paramètres que $sline
à la différence qu'elle renvoie la n ième ligne de la liste, indépendamment de la sélection ou
pas.
Précédent: Ecrire une fenetre Suivant: Le double-clic
Début de page Sommaire