CodeS-SourceS
Rechercher un code, un tuto, une réponse

[mirc scripting] comment faire un dialog ?

Novembre 2017

Tout d'abord, pour dessiner vos dialogs, placer vos éléments (bouton, icon, etc), les organiser, je vous conseille le logiciel : Dialog Studio.
Vous pourrez le trouver à l'adresse suivante : http://botcorporation.free.fr/telechargement/dstudio.zip
Si vraiment le courage vous en dit de faire les dialogs à la main, pourquoi pas ... Mais se sera du temps perdu.

Dialog Studio :
Voici quelques explications sur ce logiciel, une fois téléchargé, dézippez là où vous le voulez, et lancez le.
A votre 1ère ouverture, vous allez voir 4 fenêtres dans celle de Dialog Studio :
- "New Projet" (c'est le dialog que vous aller créer)
- "Tool..." (c'est votre barre d'outil, comportant tout les élements qu'un simple dialog peut posséder)
- "Properties Browser" (Ce sont les propriétés de se que vous sélectionnez, comme les propriétés de votre dialog, d'un bouton, etc)
- "Menu Editor" (Permet de créer des menus, en haut de votre dialog, comme comporte tout logiciel)


En mettant votre curseur sur l'un des bords de la fenêtre "New Projet", vous pouvez modifier la taille de votre dialog.
Maintenant, regardons la fenêtre "Properties Browser" :
"Caption" : C'est se qui représente le titre de votre dialog, par défault, "New Projet", à vous d'en changer.
"Don't add Quotes" : Permet d'enlèver les "" dans le code servant pour la caption. Utile uniquement si vous comptez afficher un identifieur en caption. (Tel que : Il est $time, dans ce cas, vous devrez cocher cette case)
"XYWH" : Ce sont les paramètres hauteur/largeur. Inutile de modifier manuellement, vu que vous pouvez le faire avec la souris en vous placant aux extremités de l'élement souhaité.
"Type" : Assigne un type à votre item. Votre dialog ne peut comporter de type, mais par exemple, un bouton peut en comporter : "Normal" , "OK" , "Cancel" "OK/Cancel"
"Align" : Sert uniquement pour certains items. Permet d'aligner le texte d'un item, ou bien d'en inverser le sens. (comme pour les checks)
"Tab" : Réfère au tab auquel l'item appartient. Inutile de modifier ce paramètre, dialog studio le fera tout seul si vous créer un TAB. (Un tab, c'est l'item avec les différents onglets)
"Options" :
- "Disable" : Permet de désactiver un item, se qui le rend inutilisable. (mais visible, contrairement à hide)
- "Result" : Je n'en connais pas l'utilité, et je m'en suis jamais servi.
- "Group" : Idem que pour Result :(
- "Hide" : Permet de cacher un item, se qui le rend invisible et inutilisable.
"Name" : C'est le nom de votre dialog, qui apparaîtra dans le code. N'oubliez pas de le changer non plus, car un dialog ayant par défault pour nom "new_table", c'est pas très pro. (évitez les noms avec espaces)
"Lock ID" : Vous pouvez le cocher si vous souhaitez modifier l'ID d'un item (vous permettra de vous référer à un item plus tard dans votre code). Pas spécialement utile étant donné que dialog studio assigne les IDs automatiquement, mais on sait jamais.


Toujours dans la fenêtre "Properties Browser", allons dans le 2ème onglet de cette fenêtre, "More properties" :
Là dessus, je ne connais pas vraiment à quoi sert ces paramètres, mais il ne vous sera pas utile de les modifier pour le moment.
"Dialog Icon" : Vous pouvez choisir un .ico, comme icone pour votre Dialog, par défault, vous aurez celui de votre mIRC.

Maintenant, allons dans la fenêtre "Tool...", et sélectionnez l'item bouton. (celui en haut à droite, si vous savez pas à quoi correspond chaque item, il vous suffit de laisser votre curseur dessus, et son nom apparaitra)
Placez donc un bouton sur la fenêtre du dialog, (par défault, "New Project") où vous voulez.
Ensuite, si vous sélectionnez ce bouton une fois placé, vous verrez que de nouveaux paramètres sont disponibles dans "Properties Browser" :
"Caption" : C'est le texte qui apparaitra sur votre bouton.
"Don't add Quotes" : Même effet que pour celui du dialog. (voir plus haut, dans le tutorial)
Pour tout les autres paramètres, cela rejoint aux même explications que pour ceux du dialog.


Basculons dans l'onglet "More properties" : (toujours en laissant sélectionné le bouton)
"Default Boutton" : Si vous le cocher, une fois que vous presserez la touche ENTREE de votre clavier, ce bouton s'activera. (il lancera le code assigné à celui-ci)
"Flat Appearance" : Style assez particulier pour les boutons. Cela enlève sa 3D, et le rend tout plat.
"Multi-line" : Permet de rentrer du texte en caption sur votre bouton, sur plusieurs lignes.

Je vais pas vous expliquer tout les paramètres pour chaque item, car il se ressemble tous
Par contre, je vais vous expliquer à quoi correspond en gros chaque item :

Bouton : C'est un boutton.
Edit : C'est une "case" dans laquelle on peut rentrer du texte, et/ou en afficher.
Combo : C'est une sorte de LIST
Text : L'équivalent d'un 'label' en vb, affiche du texte sur le dialog.
Box : Là, je ne sais comment l'expliquer, à vous d'en placer une pour voir se que cela donne. (Permet de donner un style assez jolie à certains dialogs, mais n'en abusez pas, sinon sa fera carrément moche)
List : Permet de 'lister' des élements dans cet item.
Check : Permet de cocher/décocher cet item, et selon son état, éxécuter une action.
Radio : Fonctionne avec minimum 2 radios, si vous en "cochez" un, le 2ème sera décoché, et si vous cochez le 2ème, le 1er sera décoché. Par contre, si vous utilisez qu'un seul radio, une fois coché, vous ne pourrez le décocher.
Link : Permet de faire un lien vers une url, en bleu souligné.
Icon : Permet d'insérer des images dans votre dialog, une fois celui-ci placé, vous devez aller dans "Properties Browser", puis "More properties", et pour finir : Dialog Icon, en cliquant sur "...", vous pourrez choisir une image.
Tab : Permet de faire différentes rubriques dans un dialog, permet un gain énorme de place. Par exemple, au lieu de faire 4 dialogs, vous pourrez tout faire sur un dialog, en mettant un tab à 4 rubriques.
Scroll : Je m'en suis jamais servis, et je ne pense pas qu'il puisse vous être d'une grande utilité. (Chaque item peut avoir des scrolls, suffit de se rendre dans "Properties Browser", puis "More properties et de cocher les cases concernées)

Une fois votre dialog terminé, faites ALT+V, et copiez/collez le code ainsi obtenu dans vos remotes.

Nous allons passer à notre 1er exemple, mettez ceci dans vos remotes :

;Ici c'est le nom de notre dialog "test1"
dialog test1 {
;La caption de notre dialog "Test"
title "Test"
;"Les paramètres de la taille du dialog"
size -1 -1 142 24
option dbu
;"Notre bouton avec la caption "OK", et ayant l'id 1
button "OK", 1, 5 7 37 12
;"Notre edit avec aucune caption "", et ayant l'id 2
edit "", 2, 46 8 88 10
}

Pour ouvrir le dialog, faites /dialog -m test1 test1
-m est le paramètre qui doit être présent à chaque fois.
Voici les autres paramètres disponibles avec la commande /dialog :
-a : Utilisé avec -m, utilise la fenêtre active comme parent.
-x : Ferme le dialogue sans effectuer d'évènements. (/dialog -x dname dname)
-d : Ouvre le dialogue sur le bureau avec -m. (/dialog -dm dname dname)
-t : fixer le titre du dialogue. (/dialog -t dname titre)
-s : fixer la taille ou la position du dialogue. (/dialog -s dname x y w h)
-r : centrer le dialogue.
-o : fixer le dialogue au-dessus de toute les fenêtres.
-n : enlever l'option précédente.
-k : cliquer bouton ok.
-c : cliquer bouton cancel.
-v : le dialogue est la fenêtre active.
-ie : minimise ou fait réapparaître le dialog crée comme fenêtre desktop.
-bp : interprète le size comme dbu ou pixels.

Maintenant, nous allons passer aux actions dans notre dialog.
Mettez ceci dans vos remotes :

ON *:DIALOG:test1:*:*:{
if ($devent = = init) { echo -a Dialog lancé ! }
if ($devent == sclick) {
if ($did == 1) && ($did(2)) { echo -a Vous venez de cliquer sur le bouton ayant l'id 1, et vous avez entré $did(2) dans l'id 2 ! }
else { echo -a Vous n'avez rien rentré dans la case ayant l'id 2 ! }
}
}

Explication :
Syntaxe de l'événement DIALOG : ON *:DIALOG:nomdudialog:devent:id:{ }
nomdudialog, c'est le nom de votre dialog. (à ne pas confondre avec la caption du dialog)
Devent, c'est l'évément produit sur votre dialog.
ID, c'est l'id qui doit réagir.

Voici la liste des différents devent :
init : juste avant que le dialogue ne soit affiché, les contrôles peuvent être initialisés, id est zéro
close : dès que le dialog se ferme
mouse : réagit à chaque fois que la souris est sur la fenêtre du dialog, et se déplace.
edit : texte dans un editbox ou combo à changé
sclick : simple click dans une list/combo, ou coche/décoche d'un bouton radio/check, ou le click d'un bouton
dclick : double click dans une list/combo
menu : une item menu a été sélectionné
scroll : position du scroll a changé

Dans notre exemple, j'ai tout regroupé, pour que le code soit le plus petit possible, et le plus clair, mais nous aurions pu faire aussi :

ON *:DIALOG:test1:init:0:{
echo -a dialog lancé !
}
ON *:DIALOG:test1:sclick:1:{
if ($did(2)) { echo -a Vous venez de cliquer sur le bouton ayant l'id 1, et vous avez entré $did(2) dans l'id 2 ! }
else { echo -a Vous n'avez rien rentré dans la case ayant l'id 2 ! }
}

Dans l'événement DIALOG, $devent retourne le devent produit. (init, sclick, etc..)
$did retourne l'id ayant réagit.
$did(ID) retourne le contenu de cet ID.

Pour vérifier si un ID est vide ou non, utilisez :
if ($did(id)) { echo -a Pas vide }
else { echo -a vide }

Passons à notre 2ème exemple, mettez ce code dans vos remotes :

dialog test2 {
title "Test"
size -1 -1 101 80
option dbu
list 1, 6 15 92 50, size
edit "", 2, 7 3 50 10
button "&Ajouter", 3, 60 3 37 10
button "&Afficher", 4, 7 67 37 10
}
ON *:DIALOG:test2:*:*:{
if ($devent == sclick) {
if ($did == 3) && ($did(2)) { did -a $dname 1 $did(2) | did -r $dname 2 }
if ($did(4)) && ($did(1).seltext) { echo -a $did(1).seltext }
}
}

Explication :
/did -a nomdudialog ID contenu Permet d'ajouter du texte.
$dname retourne le nom du dialog dans lequel vous utilisez cet identifieur.
did -r nomdudialog ID efface le contenu de cet ID.
$did(ID).seltext retourne le texte sélectionné dans notre LIST.

Voici les différents paramètres que peut comporter la commande /did :
/did -ftebvhnmcukradiogjz nom id [n * [texte | fichier]

-f : mettre le focus sur l'id
-t : mettre l'id comme bouton default

-e : activer id
-b : désactiver id
-v : démasquer id
-h : masquer id
-n : activer une editbox
-m : désactiver une editbox
-c : cocher un checkbox/radiobutton ou une ligne d'une list/combo
-u : décocher un checkbox/radiobutton ou une ligne d'une list/combo
-k : fonctionne avec -cu, conserve les autres sélections dans un liste
-r : effacer texte de l'id
-a : ajouter ligne de texte à la fin
-d : effacer la Nième ligne
-i : insérer texte à la Nième ligne
-o : réécrire la Nième ligne avec texte
-g : mettre un nouvel icône/bmp pour un contrôle d'icône

/did -g nom id [n * fichier

-z : remets à zéro la largeur d'une barre horizontale de déroulement dans une list
-j : remets à la valeur initiale le contenu d'un editbox

Voici maintenant les différents paramètres de $did() :
$did(nom,id)
$did(nom,id,N)

Si utilisé dans l'évènement on dialog, nom devient optionnel:
text : retourne la ligne ou la Nième ligne
$did(id) est pareil à $did(id).text
len : retourne la longueur de la ligne ou de la Nième ligne
lines : retourne le nombre de lignes
sel : retourne le numéro de la Nième ligne sélectionnée

si N est 0, retourne le nombre de lignes sélectionné

seltext : retourne le text sélectionné dans un edit
selstart : retourne le caractère de départ dans un editbox
selend : retourne le caractère de fin dans un editbox
edited : retourne $true si le texte d'un editbox a été changéstate : retourne 0 off, 1 on, and 2 = indéterminé ( utilisé par exemple pour savoir si un check est coché ou non, if ($did(id_du_check).state == 1) { echo -a il est coché } )
next : retourne l'id du contrôle suivant selon la méthode du TAB
prev : retourne l'id du control précédent selon la méthode du TAB
visible : retourne $true si le contrôle est visible, sinon $false
enabled : retourne $true si le contrôle est actif, sinon $false

Vous pouvez accéder à l'edit d'un combo en utilisant N = 0.

Passons au 3ème et dernier exemple :

dialog test3 {
title "Test"
size -1 -1 96 47
option dbu
link "www.Sorn-Creation.fr.tc", 1, 15 9 62 8
box "Lien", 2, 9 1 78 21
button "OK !", 3, 28 28 37 12, default
}
ON *:DIALOG:test3:*:*:{
if ($devent == sclick) {
if ($did == 1) { run http://www.Sorn-Creation.fr.tc }
if ($did == 3) { echo -a Vous venez de presser la touche ENTREE du clavier ! }
}
}

Explication :
Etant donné que j'ai donné le paramètre default à mon bouton, dès que j'appuie sur la touche ENTREE, il réagit et lance l'action correspondante à son ID, dans notre cas :
echo -a Vous venez de presser la touche ENTREE du clavier !

Pour le lien, dès que l'on clique dessus, il lance l'action run http://www.Sorn-Creation.fr.tc.
/run adresse ayant pour action d'ordonner au naviguateur de s'y rendre.


Voila, ce tutorial est déjà fini, je pense que vous aurez les bases pour démarrer vos premiers dialogs. Pour compléter ce tutorial, je vous conseille de lire l'aide de mIRC.
Si vous avez des questions, n'hésitez pas : Sorn_Drixer@hotmail.com, je ferai mon possible pour vous répondre.

Adresse d'origine
Publié par cs_SornDrixer.
Ce document intitulé «  [mirc scripting] comment faire un dialog ?  » 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.
[mirc scripting] les sockets tcp : les bases
[mirc scripting] les boucles avec /while et /goto