Listes

cs_babass Messages postés 72 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 12 septembre 2004 - 29 janv. 2004 à 00:16
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 - 29 janv. 2004 à 21:11
Je voudrais faire un module de gestion des serveurs favorits genre le menu "connexion" de mirc mais je ne sais pas utiliser les listes (dans les dialogues) et je ne sais pas comment je pourrais bien enregistrer les differentes données genre : description, serveur, port, pour pouvoir les réutiliser apres.

Si qqun pouvait me renseigner sur un tutorial bien faut ou me montrer un exemple, ce serait sympa.
Les tutorials que j'ai trouvé sont assez vagues et j'ai trouvé qqes add-ons ressemblant a ce que je cherche mais le code en est assez obscur et aucune explication n'est fournie avec.

Voila, j'espere avoir des reponses qui m'aideront, d'avance merci.

babass

7 réponses

cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
29 janv. 2004 à 07:07
Renseigne toi sur la dll mdx, et intérèsse toi à la "treeview". C'est se que mIRC utilise dans ses options. ( la sorte d'arbre relié par les branches, dans lesquelles il y a les différentes rubriques )

Pour savoir utiliser la treeview, lis l'aide de mdx, disponible en FR sur ce site.
-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.
0
cs_babass Messages postés 72 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 12 septembre 2004
29 janv. 2004 à 10:42
Merci SornDrixer mais je sais ce qu'est une treeview et ce n'est pas du tout ma question.
Mes dialog sont deja realisé et je n'ai aucun probleme a ce point de vue la, je pense que tu dois avoir mal lu ou p-e est ce du à l'heure matinale a laquelle tu as reponde ;) .

babass
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
29 janv. 2004 à 10:47
Ton problème est très vague.
Tu ne sais pas te servir de l'item LIST ?
Si c'est ça, se n'est pas compliqué.
Pour y ajouter quelque chose dedans, tu fais :
did -a dialog id contenu
Pour récupèrer se que tu sélectionnes dans ta list, tu peux utiliser $did(ID).seltext .
Si tu veux par la suite conserver se que tu as dans la liste, il va falloir écrire se qu'elle contient dans un fichier, et charger celui dans la list à chaque ouverture du dialog.

Voila... Si ce n'était pas ça ton problème, essaie d'être plus précis.
-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.
0
cs_babass Messages postés 72 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 12 septembre 2004
29 janv. 2004 à 13:39
Merci SornDrixer, c bien la une partie de ma question mais j'aurais aussi voulu des idees sur le moyen d'enregistrer les donnees pour les recuperer par apres genre les mettre dans un fichier .ini ou en hashtable (je dis ca mais je sais pas si c possible je ne connais pas bien).
Dans la liste apparaitra par ex. "FantaisyNet" et qd on le selectionnera, il faudra qu'il recupere l'adresse et le port associé à FantaisyNet pour les utiliser dans la commande /server .

babass
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
29 janv. 2004 à 13:53
Tu fais par exemple un bouton, ayant l'id 1 (simple exemple, tu peux changer les id ), un edit ayant l'id 2, et une list ayant l'id 3 :

ON *:DIALOG:tondialog:*:*:{
if ($devent == init) { if ($exists(bla.txt)) loadbuf -o $dname 3 bla.txt }
if ($devent == sclick) {
if ($did == 1) {
if ($did(2)) { did -a $dname 3 $did(2) | write bla.txt $did(2) }
}
}

Donc, dès que tu entres quelque chose dans l'edit ayant l'id 2, et que tu appuies sur le bouton ayant l'id 1, cela ajoute à la liste le contenu de l'edit, et écris se que tu viens d'y ajouter dans le fichier bla.txt .
Ensuite, à chaque ouverture du dialog, si le fichier bla.txt existe, alors on charge tout son contenu dans la list ayant l'id 3.

Voila le principe avec un .txt
Pour les fichiers .ini, c'est plus dur que ca, faut juste adapter 2 3 trucs.
Pour écrire quelque chose dans un .ini :
/writeini fichier section sous-section contenu

Dans fichier, tu auras donc dans ce cas:
[section]
sous-section=contenu
( tu peux créer autant de section et de sous-section que tu veux )

Ensuite, pour ressortir le contenu d'une sous-section d'une section précise, tu utilises :
$readini(fichier,section,sous-section)

Voila, c'est pas plus dur que ça.
-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.
0
cs_babass Messages postés 72 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 12 septembre 2004
29 janv. 2004 à 19:42
Voila, mon code est presque fini mais les données ne se chargent pas dans le liste alors je vous affiche tout ici et si qqun trouve une solution pour que le contenu de [Descript] s'affiche dans la liste, je pourrais finaliser ca.
Le reste du code a ete testé et semble fonctionner.

dialog GServ1 {
title "Gestion des serveurs"
size -1 -1 195 150
option dbu
list 1, 5 20 85 120, size
text "Liste des serveurs", 2, 7 7 85 10
button "Joindre", 3, 100 20 90 12, ok
button "Ajouter", 4, 100 40 90 12
button "Editer", 5, 100 60 90 12
button "Supprimer", 6, 100 80 90 12
box "Mode de connection", 7, 100 100 90 40
radio "Dans la fenêtre active", 8, 112 110 69 10
radio "Dans une autre fenêtre", 9, 112 125 69 10
}

dialog GServ2 {
title "Ajout d'un serveur"
size -1 -1 120 106
option dbu
text "Nom du serveur", 1, 12 5 80 8
edit "", 2, 10 15 100 12, autohs
text "Adresse du serveur", 3, 12 30 80 8
edit "", 4, 10 40 100 12, autohs
text "Port du serveur", 5, 12 55 80 8
edit "", 6, 10 65 100 12, autohs
button "Ajouter", 7, 10 85 45 12, ok
button "Annuler", 8, 65 85 45 12, cancel
}

dialog GServ3 {
title "Edition du serveur"
size -1 -1 120 106
option dbu
text "Nom du serveur", 1, 12 5 80 8
edit "", 2, 10 15 100 12, autohs
text "Adresse du serveur", 3, 12 30 80 8
edit "", 4, 10 40 100 12, autohs
text "Port du serveur", 5, 12 55 80 8
edit "", 6, 10 65 100 12, autohs
button "Editer", 7, 10 85 45 12, ok
button "Annuler", 8, 65 85 45 12, cancel
}

dialog GServ4 {
title "Supprimer un serveur"
size -1 -1 130 46
option dbu
text "Etes-vous sûr de vouloir effacer ce serveur ?", 1, 10 10 109 10
button "Confirmer", 2, 10 25 45 12, ok
button "Anuller", 3, 72 25 45 12, cancel
}

on *:dialog:GServ1:*:*: {
if ($devent == init) {
if ($exist(GServ.ini)) {
var %GServ.nbr 1
while (%GServ.nbr <= $ini(GServ.ini,Descript,0)) {
did -a GServ1 1 $ini(GServ.ini,Descript,%GServ.nbr)
inc %GServ.nbr
}
}
did -b GServ1 3,5,6
did -c GServ1 8
}
elseif ($devent == sclick) {
if ($did == 1) { did -e GServ1 3,5,6 | set %GServ.sel $did(GServ1,1).seltext }
if ($did == 3) {
if ($did(8).state == 1) { server $readini(GServ.ini,Addr,%GServ.sel) $readini(GServ.ini,Port,%GServ.sel) }
elseif ($did(9).state == 1) { server -m $readini(GServ.ini,Addr,%GServ.sel) $readini(GServ.ini,Port,%GServ.sel) }
}
if ($did == 4) { dialog -m GServ2 GServ2 }
if ($did == 5) { dialog -m GServ3 GServ3 }
if ($did == 6) { dialog -m GServ4 GServ4 }
}
}

on *:dialog:GServ2:*:*: {
if ($devent == sclick) {
if ($did == 7) {
writeini -n GServ.ini Descript $did(2) $did(2)
writeini -n GServ.ini Addr $did(2) $did(4)
writeini -n GServ.ini Port $did(2) $did(6)
did -a GServ1 1 $did(GServ2,2)
}
}
}

on *:dialog:GServ3:*:*: {
if ($devent == init) {
if (%GServ.sel) {
did -a GServ3 2 $readini(GServ.ini,Descript,%GServ.sel)
did -a GServ3 4 $readini(GServ.ini,Addr,%GServ.sel)
did -a GServ3 6 $readini(GServ.ini,Port,%GServ.sel)
}
}
elseif ($devent == sclick) {
if ($did == 7) {
writeini -n GServ.ini Descript $did(2) $did(2)
writeini -n GServ.ini Addr $did(2) $did(4)
writeini -n GServ.ini Port $did(2) $did(6)
}
}
}

on *:dialog:GServ4:sclick:2: {
remini GServ.ini Descript %GServ.sel
remini GServ.ini Addr %GServ.sel
remini GServ.ini Port %GServ.sel
var %GServ.nbr 1
while (%GServ.nbr <= $ini(GServ.ini,Descript,0)) {
did -a GServ1 1 $ini(GServ.ini,Descript,%GServ.nbr)
inc %GServ.nbr
}
}

Je le mettrais p-e en source apres alors ca ne sert à rien de faire des critiques sur le code mtn, vous pourrez vous acharner sur moi apres, le forum n'est pas fait pour ca je pense.

babass
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
29 janv. 2004 à 21:11
Lol, erreur bête mais qui fait tout foirer.
$exist() n'existe pas, c'est $exists()

Voici ton code avec cette petite erreur corrigée :

dialog GServ1 {
  title "Gestion des serveurs"
  size -1 -1 195 150
  option dbu
  list 1, 5 20 85 120, size
  text "Liste des serveurs", 2, 7 7 85 10
  button "Joindre", 3, 100 20 90 12, ok
  button "Ajouter", 4, 100 40 90 12
  button "Editer", 5, 100 60 90 12
  button "Supprimer", 6, 100 80 90 12
  box "Mode de connection", 7, 100 100 90 40
  radio "Dans la fenêtre active", 8, 112 110 69 10
  radio "Dans une autre fenêtre", 9, 112 125 69 10
}

dialog GServ2 {
  title "Ajout d'un serveur"
  size -1 -1 120 106
  option dbu
  text "Nom du serveur", 1, 12 5 80 8
  edit "", 2, 10 15 100 12, autohs
  text "Adresse du serveur", 3, 12 30 80 8
  edit "", 4, 10 40 100 12, autohs
  text "Port du serveur", 5, 12 55 80 8
  edit "", 6, 10 65 100 12, autohs
  button "Ajouter", 7, 10 85 45 12, ok
  button "Annuler", 8, 65 85 45 12, cancel
}

dialog GServ3 {
  title "Edition du serveur"
  size -1 -1 120 106
  option dbu
  text "Nom du serveur", 1, 12 5 80 8
  edit "", 2, 10 15 100 12, autohs
  text "Adresse du serveur", 3, 12 30 80 8
  edit "", 4, 10 40 100 12, autohs
  text "Port du serveur", 5, 12 55 80 8
  edit "", 6, 10 65 100 12, autohs
  button "Editer", 7, 10 85 45 12, ok
  button "Annuler", 8, 65 85 45 12, cancel
}

dialog GServ4 {
  title "Supprimer un serveur"
  size -1 -1 130 46
  option dbu
  text "Etes-vous sûr de vouloir effacer ce serveur ?", 1, 10 10 109 10
  button "Confirmer", 2, 10 25 45 12, ok
  button "Anuller", 3, 72 25 45 12, cancel
}

on *:dialog:GServ1:*:*: {
  if ($devent == init) {
    if ($exists(GServ.ini)) {
      var %GServ.nbr 0
      while (%GServ.nbr <= $ini(GServ.ini,Descript,0)) {
        inc %GServ.nbr
        did -a $dname 1 $ini(GServ.ini,Descript,%GServ.nbr)
      }
    }
    did -b GServ1 3,5,6
    did -c GServ1 8
  }
  elseif ($devent == sclick) {
    if ($did == 1) { did -e GServ1 3,5,6 | set %GServ.sel $did(GServ1,1).seltext }
    if ($did == 3) {
      if ($did(8).state == 1) { server $readini(GServ.ini,Addr,%GServ.sel) $readini(GServ.ini,Port,%GServ.sel) }
      elseif ($did(9).state == 1) { server -m $readini(GServ.ini,Addr,%GServ.sel) $readini(GServ.ini,Port,%GServ.sel) }
    }
    if ($did == 4) { dialog -m GServ2 GServ2 }
    if ($did == 5) { dialog -m GServ3 GServ3 }
    if ($did == 6) { dialog -m GServ4 GServ4 }
  }
}

on *:dialog:GServ2:*:*: {
  if ($devent == sclick) {
    if ($did == 7) {
      writeini -n GServ.ini Descript $did(2) $did(2)
      writeini -n GServ.ini Addr $did(2) $did(4)
      writeini -n GServ.ini Port $did(2) $did(6)
      did -a GServ1 1 $did(GServ2,2)
    }
  }
}

on *:dialog:GServ3:*:*: {
  if ($devent == init) {
    if (%GServ.sel) { 
      did -a GServ3 2 $readini(GServ.ini,Descript,%GServ.sel)
      did -a GServ3 4 $readini(GServ.ini,Addr,%GServ.sel)
      did -a GServ3 6 $readini(GServ.ini,Port,%GServ.sel)
    }
  }
  elseif ($devent == sclick) {
    if ($did == 7) {
      writeini -n GServ.ini Descript $did(2) $did(2)
      writeini -n GServ.ini Addr $did(2) $did(4)
      writeini -n GServ.ini Port $did(2) $did(6)
    }
  }
}

on *:dialog:GServ4:sclick:2: {
  remini GServ.ini Descript %GServ.sel
  remini GServ.ini Addr %GServ.sel
  remini GServ.ini Port %GServ.sel
  var %GServ.nbr 1
  while (%GServ.nbr <= $ini(GServ.ini,Descript,0)) {
    did -a GServ1 1 $ini(GServ.ini,Descript,%GServ.nbr)
    inc %GServ.nbr
  }
}

-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.
0
Rejoignez-nous