fjxokt
Messages postés
840
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 février 2009
1
15 nov. 2005 à 21:32
Si tu as envie de te faire une source avec un dialog en picwin, c'est bien pour toi
mais sache que qui dit "dialog picwin" dit "tout faire" c'est a dire
que tu dois a la fois coder l'interface graphique (ce que tout le monde
est capable de faire, vive les drawrect..) mais SURTOUT coder tout ce
qui est dynamique/editable/cochable/"scrollable" etc
De plus, les lits sont dans une source en picwin un des items les plus compliqué a faire (ne parlons pas des tabs non plus...)
en conclusion, si tu veu nous faire une petite source dont la seule
originalité sera d'être en picwin, tu ferais bien de la faire en dialog
et de te créer un GUI (c'est à la mode en plus) , car c'est bien beau
d'avoir des chouettes idées, mais les réaliser peut parfois être très
compliqué
bon je vais quand même (essayer de) te repondre
pour ce qui est du "_" rien de compliqué:
Tu dessine ton symbole par ex aux coordonnees 150 150 avec un rectangle de dimension 10x10
en gros drawrect blabla.... 150 150 10 10
ensuite tu drawtext ton symbole
Puis lors de l'event sclick de la @win, tu verifies si la souris se
situe dans ton carré: $inrect($mouse.y,$mouse.y,150,150,10,10))
-> si c'est $true, alors tu fais un /window -n
Pour la liste, beaucoup plus compliqué, plein de methodes
Si il n'y a pas d'ascenseurs à gérer c'est déja plus facile
tu drawrect ta list ex /drawrect blabla... 50 50 100 150
ensuite tu met les données de la list dans une @win cachée (pas une picwin)
tu calcul le nombre de lignes de la @win cachée: $lines(@win,0)
ensuite tu va faire une boucle de 1 a 150 (la hauteur de la liste) et
tu la remplis en lisant chaque ligne de la @win, puis tu incremente ta
var qui indique la hauteur d'ecriture de $height(text,font,taille)
Tiens voila un petit code qui recapitule les 2 choses que je viens de te dire
alias plist {
window -pod @plist -1 -1 350 350
;on crée une liste aux position xy = 50 50, de largeur 200 et de hauteur 250, a savoir pour la suite du code
drawrect @plist 1 2 50 50 200 250
;on crée le petit bouton "_"
drawrect @plist 1 2 250 15 15 15 | drawtext @plist 4 arial 11 255 14 _
;on crée le bouton pour remplir la list
drawrect @plist 1 2 20 20 100 20 | drawtext @plist 4 arial 12 28 23 Remplir la liste
}
alias plist_r {
;on crée la win qui contien ttes les données de la list (ou on ajoute des données dedans)
window @list | loadbuf @list mirc.ini
;on fait une boucle de 1 a la hauteur de la list
var %i 1, %max 250, %p 1
while (%i <= %max) {
;on met la ligne %p de la @win dans une var, et on
crée une var %h qui contient la hauteur en pixel du text avec la font
arial 11
var %text = $line(@list,%p) , %h $height(%text,arial,11)
;on ecrit avec cette meme font a x = 55 (pour ne pas
ecrire juste au debut de la list) 50 + %i qui represente la hauteur (y)
, 185 car sinon le text pourra depasser la list et %h car c'est obligé
:)
if (%text != $chr(32)) drawtext -c @plist 1 arial 11 55 $calc(50 + %i) 185 %h %text
;on incremente la ligne de la @win
inc %p
;on incremente la position y qui sert au drawtext de %h (la hauteur de la font arial 11 je le repete)
inc %i %h
}
}
menu @plist {
sclick {
;si le curseur est dans le rectangle du petit bouton "_" alors on reduit la @plist
if ($inrect($mouse.x,$mouse.y,250,15,15,15)) window -n @plist
;si le curseur est dans le bouton on lance l'alias plist_r qui va remplir la list
elseif ($inrect($mouse.x,$mouse.y,20,20,100,20)) plist_r
}
}
Lis bien et essaye de comprendre le code, pas de le recopier betement ;-)