[mirc] picwin approfondissement

Picwin, approfondissement.  

I) Introduction

Ce tutorial et la suite du tutorial "Les bases du picwin" disponible

ici .

Ici nous allons apprendre a creer un bouton dynamique, un check, un text défilant et un edit.

II) Bouton dynamique

Ici nous allons faire un effet lorsque l'on survole un bouton.Voici le code commenté entièrement :

; on creer l'alias bout alias bout {
; on ouvre une fenetre window -Ckdip +Let @te 1 1 70 70
; on dessiner un bouton grace a deux rectangle, un noir et un gris pour fair l'effet ressortit
; remarque : il est important de faire celui pour l'effet ressorti avant pour ne pas avoir un bouton de couleur grise

drawrect @te 14 1 10 10 31 11drawrect @te 1 1 10 10 30 10 ; si on est minutieux, on dessine des points blanc sur l'ombre afin de faire pile poil l'ombre (facultatif)
drawdot @te 0 1 40 10
drawdot @te 0 1 10 20
}
menu @te {mouse: { ; si on bouge la souris dans le rectangle .......if $inrect($mouse.x,$mouse.y,10,10,30,10) { ; on efface toute la win grace a un drawrect -f de couleur 0 (a changer suivant le fond de votre win)
drawrect -f @te 0 1 0 0 70 70 ===
; on dessine le meme bouton mais avec un effet renfoncé cette fois,
; donc un autre rectangle au dessus du premier
===
drawrect @te 14 1 9 9 31 11drawrect @te 1 1 10 10 30 10 ; pareil, on peut ajuster le renfoncement
drawdot @te 0 1 39 9
drawdot @te 0 1 9 19} ; si la souris n'es pas dans le rectangle indiqué si dessus :else { ; on efface tout et on refais le bouton normal :)
drawrect -f @te 0 1 0 0 70 70
drawrect @te 14 1 10 10 31 11
drawrect @te 1 1 10 10 30 10
drawdot @te 0 1 40 10
drawdot @te 0 1 10 20
}
}
}

III) Check, Radio

Rien de plus simple ! Pour le check on dessine un petit carré avec ce que l'on veut a coté et lorsque l'on clique dessus et ca coche, ou décoche en fonction d'une variable :)

alias check { ;on ouvre une @window (c'est toujours pareil :x)window -Ckdp +LetB @check 1 1 80 60 ; on dessine un carré pour faire le checkdrawrect @check 1 1 10 10 15 15 ; on dessine des cercles pour faire les radio
drawrect -e @check 1 1 30 10 15 15
drawrect -e @check 1 1 50 10 15 15
}
menu @check {sclick { ; si on clique dans le rectangle bla bla bla bla :
if $inrect($mouse.x,$mouse.y,10,10,15,15) { ===
; et si la variable est sur on, on efface le contenu du check, donc on déselectionne le check
; on change aussi la variable de position if %check on { drawrect -f @check 0 1 11 11 13 13 | set %check off } ===
; sinon : on dessine un point dans le check et on change aussi la variable de position
; personellement j'ai mis un point mais on peut mettre un "X" ou des lignes peut importe. else { drawdot @check 4 4 19 19 | set %check on } }
; pour les radios
; Si on clique dans le premier cercle (noter que j'ai quand meme mis un $inrect malgré le cercle on va pas s'embeter avec ca)
; on efface le point de l'autre radio correspondant et on met un point sur celui selectionné if $inrect($mouse.x,$mouse.y,30,10,15,15) { drawdot @check 4 4 39 19 | drawdot @check 0 4 59 19 }
; et inversement ;) if $inrect($mouse.x,$mouse.y,50,10,15,15) { drawdot @check 0 4 39 19 | drawdot @check 4 4 59 19 }

}
}

===

IV) Texte defilant

Le principte est de dessiner une texte a un endroit et d'augmenter la distance a chaque fois afin d'avoir l'impression que le text avance.

Soit le code :

alias text {
; on fais une variable %text qui donne la position du text en largeur
set %text 1
; on ouvre une window
window -Ckp +Let @text 1 1 500 50
; on dessine déja le text une fois
drawtext @text 5 %text 8 Ceci est un texte
; on lance un timer qui va effectuer l'alias text2 tout les 50 millisecondes (cf aide mirc /timer)
; vous pouvez changer le 50 pour modifier la vitesse du texte
.timertext -ho 0 50 text2
}

alias text2 {
; si la variable est inferieur ou égale a 500 (soit le bors de la win) on arrète (ca sert a rien de continuer alors que l'on voit plus le texte
if (%text <= 500) {
; on efface toute la fenetre sinon il va nous rester tout les drawtext précédents
drawrect -f @text 0 1 0 0 500 50
; on incrémente la variable pour faire "avancer" le texte
inc %text
; on redessine le text, et comme par miracle, il a avancé d'un pixel :)
drawtext @text 5 %text 8 Ceci est un texte
}
}
; on rajoute un event pour que lorsque l'on ferme la win et que le timer n'es pas terminé, on ai pas de messages d'erreur
on *:close:@text: .timertext off

V) Edit

Simple edit servant juste a montrer le principe et le fonctionnement.

Ce n'est qu'un enchainement de variable et un rectangle, rien de plus. J'ai juste faire un rectange ce n'est pas le design qui m'interressait pour cet exemple.

alias edit {
; met un petit truc dans la variable pour ne pas qu'elle soit nulle
set %edit $+
; on ouvre la fenetre
window -pCk +Letd @ed 1 1 120 40
; on dessine l'edit
; ici je me suis pas embété, j'ai juste fais un simple rectange
drawrect @ed 1 1 10 10 100 20
}
; réaction a l'evenement keydown
on *:keydown:@ed:*:{
; si on ne presse pas la touche retour arrière :
if ($keyval != 8) {
; si on presse la touche espace :
if ($keyval == 32) {
; on ouvre une nouvelle variable avec la première comprise plus le caractère espace
set %edit2 %edit $+ $chr(160)
; on met la première variable égale a la première
; pas super comme technique mais c'est pratique
set %edit %edit2
; on dessine le texte
drawtext @ed 4 12 14 %edit
}
; si c'est un autre caractère que le 32 :
else {
; on ouvre une nouvelle variable avec la première comprise plus le caractère spécifié
set %edit2 %edit $+ $keychar
; toujours pareil :s
set %edit %edit2
; et on redessine le texte
drawtext @ed 4 12 14 %edit
}
}
; si le keyval est 8 (soit la touche retour arrière)
else {
; on prend toutes les lettres de %edit sauf la dernière
set %edit2 $left(%edit,$calc($len(%edit) - 1))
set %edit %edit2
; on efface le dessin et on refais le rectangle
drawrect -f @ed 0 1 0 0 120 40
drawrect @ed 1 1 10 10 100 20
; si %edit n'est pas nul (pour eviter les message d'erreur)
if (%edit) {
; on dessine la phrase sans la dernière caractère
drawtext @ed 4 12 14 %edit
}
}
}

VI) Conclusion

Voila j'espère que vous avez appris encore un peu plus de choses sur le picwin, que cela vous a donné une idée assez concrète des multiples possiblités du picwin.

C'est vraiment de vagues exemples mais ca mérite d'etre compris ;)

<hr>

Kinder_Maxi

tidjo45@hotmail.com

version du mardi 22 février 2005

Adresse d'origine

Ce document intitulé « [mirc] picwin approfondissement » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous