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