Générateur d'aide contextuelle

Contenu du snippet

Code servant à afficher une aide contextuelle avec le contenu que vous donnez.
Pour affiner la qualité de votre aide, vous pouvez mettre de la mise en forme grâce aux codes mIRC BURK (gras, souligné, inversé, couleur) et vous pouvez également insérer des images.

Source / Exemple :


;/contexthelp <texte>
;$chr(127) pour les sauts de ligne
;Ex: /contexthelp Bonjour toi&#127;p'tit gars!
;Pour laisser une ligne blanche, mettez un espace
;Les codes de contrôles (BURK) de mIRC sont acceptés
;Ex: /contexthelp Ouvre le fichier&#127; &#127;7Ferme l'ancien
;Pour insérer une image à la position courante, vous devez insérer un balise <[img]> où img est un fichier image
;Seules les images au format bmp, jpg et png sont acceptées
;Si l'image n'a pas pu être affichée, la balise sera affichée
;Ex /contexthelp Voici une image: <[mon image.bmp]>

;Ferme l'aide contextuelle si l'utilisateur a appuyé sur une touche
on *:keydown:@contexthelp:*:window -c @contexthelp
alias contexthelp {
  ;Initialisation des variables
  var %v = 0, %w = 0, %i = 1 , %cnt = $$1- , %match = "" , %wesp = $width($chr(32),verdana,11), %cur_width = 0
  tokenize 127 $replace($1-,$chr(32),$chr(160))
  ;Fenêtre cachée de même dimensions que le desktop
  window -ph @context_tmp 0 0 $window(-1).w $window(-1).h
  ;Fond jaunâtre
  drawrect -rf @context_tmp $rgb(255,255,233) 1 0 0 $window(@context_tmp).w $window(@context_tmp).h
  while ($ [ $+ [ %i ] ]) {
    %match = $ifmatch
    %cur_width = $width(%match,verdana,11)
    if (%match) {
      if (!$regex(%match,/<\[([^\?\*"<>\|]+.(?:bmp|jpg|png))\]>/gi)) {
        drawtext -pbr @context_tmp $rgb(0,0,0) $rgb(255,255,233) verdana 11 1 %v %match
        inc %v 14
      }
      else {
        ;party time
        var %z = 1 , %a = 1 , %l = 1 , %bas = 0 , %cont = 1 , %r = $replace($regml(%z),$chr(160),$chr(32)), %pos = $regml(%z).pos , %iw , %ih , %temp
        while (%cont) {
          if ($calc(%pos - 2) > %a) {
            var %tmp = $calc($ifmatch +1), %str = $mid(%match,%a,$calc(%tmp - %a - 1))
            drawtext -pbr @context_tmp $rgb(0,0,0) $rgb(255,255,233) verdana 11 %l %v %str
            inc %l $width(%str,verdana,11)
            if (14 > %bas) %bas = 14
            inc %a $len(%str)
          }
          if ($pic(%r)) {
            %iw = $pic(%r).width | %ih = $pic(%r).height
            drawpic @context_tmp %l %v " $+ %r $+ "
            inc %l %iw
            inc %a $len($+(<[,%r,]>))
            if (%ih > %bas) %bas = $calc(%ih + 2)

          }
          elseif (%cont == 1) {
            drawtext -pbr @context_tmp $rgb(0,0,0) $rgb(255,255,233) verdana 11 %l %v <[ $+ $regml(%z) $+ ]>
            inc %l $width($+(<[,%r,]>),verdana,11)
            inc %a $len($+(<[,%r,]>))
            if (14 > %bas) %bas = 14
          }
          inc %z
          if ($regml(%z)) {
            %r = $replace($ifmatch,$chr(160),$chr(32))
            %pos = $regml(%z).pos

            %cont = 1
          }
          elseif ($calc($len(%match) - %a) >= 0) {
            var %temp = $mid(%match,%a)
            drawtext -pbr @context_tmp $rgb(0,0,0) $rgb(255,255,233) verdana 11 %l %v %temp
            inc %l $width(%temp,verdana,11)
            if (14 > %bas) %bas = 14
            %cont = 0
          }
          else %cont = 0
        }
        %cur_width = %l - 1
        inc %v %bas
      }
      if (%cur_width > %w) %w = $ifmatch
    }
    inc %i
  }
  inc %w 5
  inc %v 3
  ;Création de la fenêtre d'aide contextuelle
  window -phkod +b @contexthelp $calc($mouse.dx +8) $mouse.dy %w %v
  drawcopy @context_tmp 0 0 %w %v @contexthelp 0 0
  window -c @context_tmp
  window -a @contexthelp
  .timerwincheck 0 0 contexthelp.check
}
;Ferme l'aide contextuelle si elle n'est pas la fenêtre active.
alias contexthelp.check { if (!$window(@contexthelp)) .timerwincheck off | if (!$appactive) || $active != @contexthelp { .timerwincheck off | window -c @contexthelp } }

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.