Exploitation d'un dialog, exemple : rechercher avec google

Contenu du snippet

UNe fois de plus je sors une cource à des fins ebaucoup plus didactiques qu'utiles, quoi que 'jaie un peu bâclé mes commentaires cette fois ci... des améliorations sont à venir quand j'en airai le tempse t les moyens.

Pour comprendre ce tutoriel-code (un simple code commenté quoi), il faut savoir créer un dialog et connaitre les identifieurs et lescommande spour l'exploiter. ATTENTION, je 'nai aps dit qu'ilf aut savoir l'exploiter, sinon mon code n'aurait aucun intéret... ce modeste script vous permettra peut etre de comprendre (si vous 'navez pas encore compris) comment exploiter un dialog (bien sûr je ne me sers pas ici de tous els controls et identifieurs possibles).

Source / Exemple :


dialog google {
  size -1 -1 200 111
  title "Recherche par Google"
  option pixel
  text "Rechercher avec Google les mots clés :", 1, 1 1 198 16, center
  edit "", 2, 1 18 198 20, autohs
  radio "Pages web", 3, 1 40 70 16
  radio "Images", 4, 1 59 70 16
  button "Pages francophones", 5, 72 39 127 20, default
  button "Tout le Web", 6, 72 58 127 20
  check "Archiver", 7, 1 79 70 16
  link "Archives", 8, 150 80 80 16, center
  text "calopsfr", 9, 1 96 198 16, disable center
}

dialog archiv_init {
  size -1 -1 200 30
  title "Choisissez un format"
  option pixel
  button "HTML", 1, 1 1 67 28
  button "Dialog", 2, 133 1 67 28
  text "calopsfr", 3, 68 8 66 16, center disable
}

dialog archiv_google {
  size -1 -1 400 600
  title "Archives de vos recherches"
  option pixel
  text "Voici toutes les crecherches archivées que vous avez faites jusqu'alors.", 1, 1 1 398 16, center
  button "Effacer les archives", 2, 1 18 398 20
  box "Infos", 3, 1 39 398 130
  text "Pages web :", 4, 5 55 150 16
  text "Images :", 5, 5 71 150 16
  text "XX", 6, 156 55 40 16
  text "XX", 7, 156 71 40 16
  text "Pages francophones :", 8, 5 95 150 16
  text "Tout le Web :", 9, 5 111 150 16
  text "XX", 10, 156 95 40 16
  text "XX", 11, 156 111 40 16
  text "Recherches totales archivées :", 12, 5 132 390 16, center
  text "XX", 13, 5 148 390 16, center
  box "Archives", 14, 1 170 398 400
  button "Fermer", 15, 1 571 398 27, default cancel
  edit "", 16, 5 185 390 378, read vsbar multi
}

;On ne va rien expliquer ici, ce n'est que du graphique (et je suis large)
;et il n'y a aucune difficulté à faire ceci (à condition de savoir faire un
;dialog).

on *:dialog:archiv_init:sclick:*: {
  if ($did == 2) dialog -m archiv_google archiv_google
  else archiv_html
  dialog -x archiv_google
}

;###Premier évènement, sans trop de difficultés
;quand le $devent sclick se déclanche sur le dialog archiv_init {
;  si (le control est le n°2) on lance le dialog des archives
;  sinon on exécute l'alias archiv_html
;  on ferme le dialog
;}

alias google dialog -m google google
;Franchement, vous voulez que j'explique ça ?

;#####STOP#####
;Ici, on va couper un peu, je crois ^^
;On va faire ca par étapes
;#####REPRENONS#####

on *:dialog:google:*:*: {
  if ($devent == init) {
    did -c $dname 3
    did -c $dname 7
  }

;quand le dialog google se déclenche {
;  si l'action $devent est l'initialisation (init) {
;    on coche le controle 3
;    on coche le controle 7
;  }

  elseif ($devent == sclick) {
    if ($did == 5) || ($did == 6) {
      if (!$did(2)) {
        var %ars $?!="Vous n'avez pas rempli de mot(s) clé(s). Réessayer ?"
        if (%ars == $false) dialog -x google
      }

;  sinon, si l'action $devent est un simple click (sclick) {
;    si le control est le 5 ou le 6 {
;      si le control 2 est vide {
;        on place dans la variable la réponse à l'alerte ($true ou $false)
;        si la réponse est $false on ferme le dialog (sinon on ne fait rien)
;      }

      else {
        if ($did(7).state == 1) {
          if ($file(archiv_google.ini)) var %t = $readini(archiv_google.ini,infos,total), %pf = $readini(archiv_google.ini,infos,pf), %pw = $readini(archiv_google.ini,infos,pw), %w = $readini(archiv_google.ini,infos,w), %im = $readini(archiv_google.ini,infos,im)
          else var %t = 0, %pf = 0, %pw = 0, %im = 0, %w = 0

;      sinon {
;        si le control 7 est coché {
;          si le fichier archiv_google.ini existe on place les infos générales dans leurs variables respectives
;          sinon, leurs valeurs sont 0

          var %f archiv_google.ini
          inc %t
          if ($did(3).state == 1) inc %w
          elseif ($did(4).state == 1) inc %im
          if ($did == 5) inc %pw
          elseif ($did == 6) inc %pf
          writeini %f infos total %t
          writeini %f infos w %w
          writeini %f infos im %im
          writeini %f infos pw %pw
          writeini %f infos pf %pf
          writeini %f %t mts $did(2)
          writeini %f %t date $date(dd/mm/yy)
          writeini %f %t time $time(hh:nn:ss)
          writeini %f %t pages $did($did)
          writeini %f %t type $iif($did(3).state == 1,$did(3),$did(4))

;          la variable %f contient le nom du fichier (c'est pour les feignants comme moi)
;          on incrémente %t (elle contient le total des archives)
;          si le control 3 est coché, on incrémente %w
;          sinon, si le control 4 est coché on incrémente %im
;          si le control clické est 5 on incrémente %pw
;          sinon, si le control clické est le 6 on incrémente %pf
;          on écrit dans %f toutes les données correspondantes
;          ...

        }
        if ($did(3).state == 1) {
          if ($did == 5) {
            run http://www.google.fr/search?hl=fr&q= $+ $replace($did(2),$chr(32),+) $+ &btnG=Rechercher&meta=lr%3Dlang_fr&X=1
            writeini %f %t link http://www.google.fr/search?hl=fr&q= $+ $replace($did(2),$chr(32),+) $+ &btnG=Rechercher&meta=lr%3Dlang_fr&X=1
          }

;        }
;        si le control 3 est coché {
;          si le bouton clické est 5 {
;            on lance la page appropriée (en remplacant les espaces ($chr(32)) de $did(2) (control 2) par des + (syntaxe google)
;            on réécrit l'adresse dans els archives

          elseif ($did == 6) {
            run http://www.google.fr/search?hl=fr&q= $+ $replace($did(2),$chr(32),+) $+ &btnG=Rechercher&meta=&X=1
            writeini %f %t link http://www.google.fr/search?hl=fr&q= $+ $replace($did(2),$chr(32),+) $+ &btnG=Rechercher&meta=&X=1
          }
        }

;          sinon, si le bouton clické est 6 {
;             on lance la page appropriée (en remplacant les espaces ($chr(32)) de $did(2) (control 2) par des + (syntaxe google)
;             on réécrit l'adresse dans els archives
;          }
;        }

        else {
          run http://images.google.fr/images?hl=fr&lr=&q= $+ $replace($did(2),$chr(32),+)
          writeini %f %t link http://images.google.fr/images?hl=fr&lr=&q= $+ $replace($did(2),$chr(32),+)
        }
      }
    }

;        sinon {
;          on lance la page appropriée
;          on réécrit l'adresse
;        }
;       }
;      }

    if ($did == 8) dialog -m archiv_init archiv_init
    if ($did == 4) did -b $dname 5
    if ($did == 3) did -e $dname 5
  }
}

;    si le control est 8 on lance archiv_init
;    si le control est 4 on désactive le control 5
;    si el control est 3 on active le control 5
;  }
;}

;#####STOP#####
;Maintenant, plus rien à expliquer, c'est soir déjà vu, soit simple...
;il s'agit jsute de récupérer les donénes dans le fichier archiv_google.ini
;et de les reptranscrire.
;#####REPRENONS#####

on *:dialog:archiv_google:*:*: {
  if ($devent == init) {
    if ($file(archiv_google.ini)) {
      did -ra $dname 6 $readini(archiv_google.ini,infos,w)
      did -ra $dname 7 $readini(archiv_google.ini,infos,im)
      did -ra $dname 10 $readini(archiv_google.ini,infos,pw)
      did -ra $dname 11 $readini(archiv_google.ini,infos,pf)
      did -ra $dname 13 $readini(archiv_google.ini,infos,total)
      var %b $readini(archiv_google.ini,infos,total)
      var %line 0
      while (%b > 0) {
        inc %line
        did -i $dname 16 %line Recherche n° %b
        inc %line
        did -i $dname 16 %line Date : $readini(archiv_google.ini,%b,date)
        inc %line
        did -i $dname 16 %line Heure : $readini(archiv_google.ini,%b,time)
        inc %line
        did -i $dname 16 %line Recherche : $readini(archiv_google.ini,%b,mts)
        inc %line
        did -i $dname 16 %line Sur : $readini(archiv_google.ini,%b,pages)
        inc %line
        did -i $dname 16 %line Type : $readini(archiv_google.ini,%b,type)
        inc %line
        did -i $dname 16 %line 
        dec %b
      }
    }
  }
  elseif ($devent == sclick) {
    if ($did == 2) {
      var %truc $?!="Etes vous sûrs de vouloir effacer les archives ?"
      if (%truc == $true) {
        remove archiv_google.ini
        did -ra $dname 16 Les archives ont été effacées
      }
    }
  }
}

menu * {
  -
  Recherche Google
  .Rechercher:/dialog -m google google
  .Archives
  ..HTML:/archiv_html
  ..Dialog:/dialog -m archiv_google archiv_google
  ..Effacer les archives:/.remove archiv_google.ini | echo -a Archives effacées
  -
}

;ici, exactement le même systeme que pour le dialog... et je ne
;vais aps donenr un cours de HTML, langage (que dis, langage ?) relativement,
;voire extrèmement facile

alias archiv_html {
  if ($file(archiv_google.htm)) .remove archiv_google.htm
  write archiv_google.htm <html><head><title>Archives des recherches pas Google</title></head><body><center>Voici toutes les recherches archivées depuis le dernier effacement<br><table border=1 bordercolor=black><tr><td>Pages web :<b> $readini(archiv_google.ini,infos,w) </b><br>Images :<b> $readini(archiv_google.ini,infos,im) </b><br><br>Pages francophones :<b> $readini(archiv_google.ini,infos,pw) </b><br>Tout le Web :<b> $readini(archiv_google.ini,infos,pf) </b><br><br>Total des pages archivées :<b> $readini(archiv_google.ini,infos,total) </b></td></tr>
  var %b $readini(archiv_google.ini,infos,total)
  var %line 0
  while (%b > 0) {
    write archiv_google.htm <tr><td>Recherche n° %b <br>Date :<b> $readini(archiv_google.ini,%b,date) </b><br>Heure :<b> $readini(archiv_google.ini,%b,time) </b><br>Recherche :<b> $readini(archiv_google.ini,%b,mts) </b><br>Sur :<b> $readini(archiv_google.ini,%b,pages) </b><br>Type :<b> $readini(archiv_google.ini,%b,type) </b><br><a href= $+ $readini(archiv_google.ini,%b,link) $+ >Revoir les résultats sur www.google.fr</a></td></tr>
    dec %b
  }
  write archiv_google.htm </table></center></body></html>
  run archiv_google.htm
}

Conclusion :


Bien sur je vous entends venir : "pourquoi ne pas proposer toi-même les réponses ?"... en effet, pourquoi? je ne connais aps les sockets. Donc si vous me trouvez un tutoriel (tutoriel, pas un code commenté comme le mien), je pourra dnas la semaine améliorer cette source (tout enc ontinuant à la commenter).

euh, j'ia mis ca dans "Tutoriaux", dites le moi si je me susi trompé ^^

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.