Manager - calendrier en picwin (perpetuel)

Description

Voici une autre de mes picwin que je viens à peine de réaliser. Si vous connaissez QS (Quick System, dispo ici : http://www.ircfr.com/codes/QUICK-SYSTEM-BUREAU-SUR-MIRC_36244.aspx), vous y verrez quelques points de ressemblance, notamment le drag&drop.

Lancer le manager en tapant /manager

Il s'agit ici d'un calendrier perpetuel, qui utilise le calcul de temps de l'ordinateur (avec les fonctions $time, $ctime, $date)
Contrairement à la première version, celle-ci présente un calendrier perpetuel.

Les jours sont classées par colonne, la première ne regroupera que des Lundi, la deuxième que des Mardi, ...

Le principe, c'est de voir un calendrier, de cliquer sur un jour, de gérer les évènements (comme par exemple mettre un rendez-vous, mémo, ou tout autre rappel) de ce jour.
Il fonctionne aussi bien dans le passé que dans le futur (il peut donc fonctionner en journal : vous mettez ce que vous avez vécu, ... Utile pour noter un anniversaire) ;)

Il dispose de deux modes d'affichage.

1] Le mode Big
1) Le premier est plus grand que le second et permet d'ajouter une image de fond dans le reste de la fenêtre.
Cette fenêtre est dimensionable via le menu (clic droit)
Vous pourrez également déplacer le calendrier à l'intérieur de la fenêtre, et bouger cette fenêtre par rapport à l'écran.
2) Quand vous cliquez sur un jour, une autre fenêtre vient s'ajouter sur la première. Encore une fois, cette dernière fenêtre peut avoir un fond d'écran configuré.
Une zone de texte (la zone où s'afficheront les évènements du jour en particulier) peut être placée n'importe où sur la fenêtre et peut également prendre la taille souhaitée (permet de ne pas masquer une partie de l'image de fond que vous aimez bien par exemple :p).
Avec cette seconde fenêtre, vous pourrez visionner la fête du jour (à condition d'avoir placé le fichier saint.ini dans le dossier ArKanis placé dans le dossier mIRC)

2] Le mode Alone
1) Le deuxième mode est un mode réduit. Vous ne disposerez pas d'arrière-plan. La fenêtre a la taille du calendrier, que vous pourrez bouger n'importe où.
2) En cliquant sur un jour, vous aurez ici aussi une autre fenêtre qui s'affichera au dessus de la précédente, avec le même fond que dans le I]2). La différence ici est que la zone de texte est agrandie au maximum, et ne peut être redimensionnée.
Ce mode est pratique pour les personnes qui ne veulent pas de fond. Il permet aussi de ne pas prendre beaucoup de place quand la fenêtre est placée en mode on-top (au dessus de tout)

Pour changer de mode, soit vous utiliser le menu, soit vous cliquez sur la barre verticale entre les deux ascenseurs à droite.

Une alarme peut être placée pour chaque jour et se déclenchera à l'heure indiquée le jour même. Pour cela, déplacer la souris en bas à gauche de la case représentant le jour souhaité.

Le jour actuel est coloré en bleu, les jours où un planning/journal existe sont en rouge.

Si vous avez des idées d'amélioration, merci d'en faire part :)
Comme dit tout au début, il est en quelque sorte la suite de QS, j'espère que vous l'apprécierez tout autant :)

Source / Exemple :


;*********************
; Manager by ArKanis
;   www.arkanis.eu
;       v1.3
;*********************

alias manager {
  if ($window(@Manager)) {
    if ($1 == -x) window -c @Manager
    else window -a @Manager
  }
  else {
    if ($hget(Manager)) hfree Manager
    manager.debug
    hadd -m Manager Date $date
    if ($readini(Config.ini,Manager,Mode) == Alone) {
      window -aBCdg0k0pRz +dl @Manager 0 0 265 230 ArKanis/Icones/qs.ico
      hadd -m Manager Mode Alone
    }
    else {
      hadd -m Manager Mode Big
      var %d = $manager.width, %maxx = $gettok(%d,1,32), %maxy = $gettok(%d,2,32)
      window -aBCdg0k0pRz +dl @Manager -1 -1 %maxx %maxy ArKanis/Icones/qs.ico
      drawfill -nr @Manager 0 $getdot(@Manager,5,5) 5 5
      if ($readini(Config.ini,Manager,Background)) {
        var %img = $ifmatch
        if ($exists($ifmatch)) drawpic -cnms @Manager 0 0 %maxx %maxy $+(",%img,")
      }
    }
    manager.calendar
    drawdot @Manager
    manager.copy
    .timermanager.heure 0 1 manager.heure
  }
}
alias -l manager.calendar {
  titlebar @Manager by ArKanis
  if ($hget(Manager,Mode) == Alone) var %ox = 0, %oy = 0, %maxx = 370, %maxy = 230
  else {
    var %d = $manager.width, %maxx = $gettok(%d,1,32), %maxy = $gettok(%d,2,32), %origin = $iif($hget(Manager,Origin),$ifmatch,$readini(Config.ini,Manager,Origin)), %ox = $gettok(%origin,1,32), %oy = $gettok(%origin,2,32)
    var %v1 = $calc(%maxx - 7 * 35 -26), %v2 = $calc(%maxy - 6 * 35 -35)
    if (!%ox) var %ox = 10
    elseif (%ox > %v1) var %ox = %v1
    if (!%oy) var %oy = $calc(%maxy - 190)
    elseif (%oy > %v2) var %oy = %v2
  }
  hadd -m Manager Origin %ox %oy
  drawrect -frn @Manager 16777215 1 %ox %oy $calc(35*7 -1) $calc(35*6)
  drawrect -rn @Manager 0 1 $calc(%ox -1) $calc(%oy -1) $calc(35*7 +1) $calc(35*6 +2)
  var %month = $iif($gettok($1,2,47),$ifmatch,$asctime(mm)), %year = $iif($gettok($1,3,47),$ifmatch,$asctime(yyyy))
  var %1st = $ctime($+(01/,%month,/,%year)), %y = %oy, %id = 0
  var %j = $gettok($manager.translate($+(01/,%month,/,%year)),1,32), %i = $findtok(Lundi-Mardi-Mercredi-Jeudi-Vendredi-Samedi-Dimanche,%j,45), %x = $calc(%ox + %i * 35 -35)
  hadd -m Manager 1st %i
  var %max = $gettok($+(30-,$iif($manager.bisex(%year),29,28),-31-30-31-30-31-31-30-31-30-31),%month,45)
  hadd -m Manager Month $+(01/,%month,/,%year)
  while %id < %max {
    var %date = $+($base($calc(%id +1),10,10,2),/,$base(%month,10,10,2),/,%year)
    drawrect -rn @Manager 0 1 %x %y 35 35
    drawrect -frn @Manager $iif(%date == $date,16437970,$iif($lines($+(Manager/,$replace(%date,$chr(47),-),.txt)),12632319,16777215)) 1 $calc(%x +1) $calc(%y +1) 33 33
    drawtext -rn @Manager 0 Tahoma 10 $calc(%x + 5) $calc(%y + 5) $gettok(%date,1-2,47)
    if (!$hget(ManagerAlarmes)) manager.alarmes
    if ($hmatch(ManagerAlarmes,$+(Date:,%date,*),0).data) {
      drawline -rn @Manager 255 1 $calc(%x + 4) $calc(%y + 32) $calc(%x + 8) $calc(%y + 24) $calc(%x + 12) $calc(%y + 32) $calc(%x + 2) $calc(%y + 32)
      drawfill -srn @Manager 255 $getdot(@Manager,$calc(%x + 6),$calc(%y + 30)) $calc(%x + 6) $calc(%y + 30)
    }
    drawline -nr @Manager 15767190 1 $calc(%x + 33) $calc(%y + 23) $calc(%x + 33) $calc(%y + 33) $calc(%x + 23) $calc(%y + 33) $calc(%x + 33) $calc(%y + 23)
    drawfill -snr @Manager 15767190 $getdot(@Manager,$calc(%x + 32),$calc(%y + 32)) $calc(%x + 32) $calc(%y + 32)
    if (7 \\ %i) inc %x 35
    else { var %x = %ox | inc %y 35 }
    inc %id
    inc %i
  }
  drawrect -frn @Manager 0 1 $calc(%ox + 210) $calc(%oy + 175) 35 35
  if ($exists(ArKanis/Icones/engrenage.jpg)) {
    drawpic -cnms @Manager $calc(%ox + 211) $calc(%oy + 176) 33 33 ArKanis/Icones/engrenage.jpg 
  }
  else drawrect -frn @Manager 16755370 1 $calc(%ox + 211) $calc(%oy + 176) 33 33
  if (stop isin $2-) { if (copy isin $2-) { manager.copy } | return }
  var %o1 = $calc(%ox + 7*35 -1), %o2 = $calc(%ox + 7*35), %i = 1, %p1 = $+(%ox,|,$calc(%ox +1),|,%o1,|,%o2,|,%o1,|,%o2,|,%o1,|,%o2,|,%o1,|,%o2)
  var %p2 = $+($calc(%oy + 6*35),|,$calc(%oy + 6*35 +1),|,%oy,|,$calc(%oy +20),|,%oy,|,$calc(%oy +1),|,$calc(%oy + 35*6 -20),|,$calc(%oy + 35*6 -19),|,$calc(%oy + 35*6),|,$calc(%oy + 35*6 +1))
  var %p3 = 245|243|20|18|20|18|20|18|20|18, %p4 = $+(20|18|,$calc(35*6 +20),|,$calc(6*35),|20|18|20|18|20|18), %p5 = $+(0|12706303|0|16448240|0|16435400|0|16435400|0|1317140,$iif($hget(Manager,Mode) == Alone,1,0))
  while %i <= 10 {
    drawrect $iif(2 // %i,-frn,-rn) @Manager $gettok(%p5,%i,124) 1 $gettok(%p1,%i,124) $gettok(%p2,%i,124) $gettok(%p3,%i,124) $gettok(%p4,%i,124)
    inc %i
  }
  manager.heure
  manager.encoche
  if (copy isin $2-) manager.copy
}

;************
; Paramètres
;************
alias -l manager.width {
  if ($hget(Manager,Mode) == Alone) return 264 229
  if (!$hget(Manager,Width)) hadd -m Manager Width $iif($readini(Config.ini,Manager,Width),$ifmatch,800 600)
  var %r = $hget(Manager,Width)
  return $iif($gettok(%r,1,32) isnum 600-1600,$ifmatch,800) $iif($gettok(%r,2,32) isnum 400-1200,$ifmatch,600)
}
alias -l manager.copy {
  var %w = $manager.width, %w1 = $gettok(%w,1,32), %w2 = $gettok(%w,2,32)
  if ($window(@Manager.copy)) window -c @Manager.copy
  window -BCg0hk0pRz +dL @Manager.copy 0 0 %w1 %w2
  drawcopy @Manager 0 0 %w1 %w2 @Manager.copy 0 0
}
alias -l manager.copy.calendar {
  var %w = $hget(Manager,Origin), %w1 = $gettok(%w,1,32), %w2 = $gettok(%w,2,32)
  if ($window(@Manager.copy.calendar)) window -c @Manager.copy.calendar
  if (!$window(@Manager.copy.calendar)) window -BCg0hk0pRz +dL @Manager.copy.calendar 1 1 265 231
  drawcopy @Manager %w1 %w2 265 231 @Manager.copy.calendar 1 1
}
alias -l manager.backup {
  if ($hget(Manager,Date) != $date) {
    manager -x
    manager
  }
  if (!$window(@Manager.copy)) return
  var %w = $manager.width, %w1 = $gettok(%w,1,32), %w2 = $gettok(%w,2,32)
  drawcopy -n @Manager.copy 0 0 %w1 %w2 @Manager 0 0
  titlebar @Manager by ArKanis
}

;******
; Menu
;******
menu @Manager {
  sclick:manager.sclick $mouse.x $mouse.y
  mouse:manager.mouse $mouse.x $mouse.y
  -
  Changer l'Arrière-Plan
  .Général:{
    if (!$input.request.y.n(Voulez-vous vraiment changer l'arrière plan ?)) return
    var %img = $sfile($mircdir,Fichier Image,Sélectionner)
    if (!$exists(%img)) { input.request.ok Ce fichier n'existe pas ! | return }
    writeini -n Config.ini Manager Background %img
    manager -x
    manager
    input.request.ok L'image de fond a correctement été changée.
  }
  .Des informations d'un jour:{
    if (!$input.request.y.n(Voulez-vous vraiment changer l'arrière plan des informations d'un jour ?)) return
    var %img = $sfile($mircdir,Fichier Image,Sélectionner)
    if (!$exists(%img)) { input.request.ok Ce fichier n'existe pas ! | return }
    writeini -n Config.ini Manager Day %img
    input.request.ok L'image de fond a correctement été changée.
  }
  Changer le mode d'affichage:manager.chgmode
  Afficher le calendrier actuel:manager.calendar -3 stop
  $iif($hget(Manager,Infos) || $hget(Manager(Config),$style(2)) Changer la date:{
    var %i = $input.request(Quelle date voulez-vous visionner ?)
    manager.calendar %i stop
  }
  -
  Deplacer $iif($hget(Manager,Infos) || $hget(Manager,Config),la zone de texte,le calendrier):{
    var %nom = $iif($hget(Manager,Infos) || $hget(Manager,Config),la zone de texte,le calendrier)
    if (!$input.request.y.n(Voulez-vous réellement déplacer %nom ?)) return
    input.request.ok Votre prochain clic sur la fenêtre déplacera %nom à cet endroit. Si les calculs indiquent que %nom sortira de la fenêtre, %nom sera déplacé le plus proche possible de l'emplacement souhaité.
    hadd -m Manager Clic 1
  }
  Modifier la taille de la fenêtre:{
    if (!$input.request.y.n(Etes-vous sûr(e) de vouloir redimensionner la fenêtre ?)) return
    var %x = $iif($input.request(Largeur (horizontale) ?) isnum 600-1600,$ifmatch,800)
    var %y = $iif($input.request(Hauteur (Verticale) ?) isnum 400-1200,$ifmatch,600)
    writeini -n Config.ini Manager Width %x %y
    manager -x
    manager
    input.request.ok La taille de la fenêtre a changé
  }
  -
  $iif($readini(Manager\Manager.ini,Config,Alarmes),$style(1) Alarmes activées,Alarmes désactivées):writeini -n Manager\Manager.ini Config Alarmes $iif($readini(Manager\Manager.ini,Config,Alarmes),0,1)
  -
  $iif($hget(Manager,OnTop),$style(1)) On Top:{
    if ($hget(Manager,OnTop)) { hdel Manager OnTop | window -u @Manager }
    else { hadd -m Manager OnTop 1 | window -o @Manager }
  }
  -
  Fermer:window -c @Manager
}
alias -l manager.sclick {
  ;echo -a Souris : $mouse.x $mouse.y - $getdot(@Manager,$mouse.x,$mouse.y)
  var %r = $manager.width, %maxx = $gettok(%r,1,32), %maxy = $gettok(%r,2,32)
  if ($0 < 2) return
  if ($hget(Manager,Clic)) {
    if ($hget(Manager,Infos) || $hget(Manager,Config)) {
      if ($hget(Manager,Clic) == 2) {
        writeini -n Config.ini Manager $+($iif($hget(Manager,Config),Alarm,Infos),Origin) $hget(Manager,Memo) $calc($1 - $gettok($hget(Manager,Memo),1,32)) $calc($2 - $gettok($hget(Manager,Memo),2,32))
        hdel Manager Memo
        hdel Manager Clic
        input.request.ok La position de la zone de texte a correctement été modifiée.
        if ($hget(Manager,Config)) manager.display.zone.alarmes
        else manager.display.day $hget(Manager,DayInfo)
      }
      else {
        hadd -m Manager Memo $1-2
        hadd -m Manager Clic 2
        input.request.ok Votre second clic déterminera la largeur et la hauteur de la zone de texte.
      }
    }
    else {
      writeini -n Config.ini Manager Origin $1-2
      manager -x
      manager
      input.request.ok La position du calendrier a correctement été modifié.
      hdel Manager Clic
    }
  }
  elseif ($hget(Manager,Infos)) {
    if ($inrect($1,$2,15,$calc(%maxy - 35),100,20)) { manager.backup | manager.calendar $hget(Manager,Month) | hdel Manager Infos | drawdot @Manager }
    elseif ($inrect($1,$2,$iif($hget(Manager,Mode) == Alone,120,140),$calc(%maxy -35),80,20)) {
      if (!$isdir(Manager)) .mkdir Manager
      var %file = $+(Manager/,$replace($gettok($hget(Manager,DayInfo),2,32),$chr(47),-),.txt)
      if (!$exists(%file)) write -c %file
      var %m = $lines(%file)
      if (!%m) var %l = 1, %mode = $null
      else {
        var %l = $input.request(Quelle est la ligne à modifier ? Ne mettez rien si vous voulez la mettre à la fin.)
        if (!%l) unset %mode %l
        else var %mode = $iif($input.request.y.n(Souhaitez-vous ajouter une ligne ? Si non : écrire par dessus),il,l)
      }
      if (%mode == il) var %new = $input.request(Evènement à ajouter sur la ligne %l pour le $gettok($hget(Manager,DayInfo),2,32))
      elseif (%mode == l) var %r = $read(%file,%l), %new = $input.request(Evènement à placer sur la ligne %l pour le $gettok($hget(Manager,DayInfo),2,32) - Actuellement $iif(%r,%r,vide))
      else var %new = $input.request(Quel est le nouvel évènement à ajouter ?)
      if (!$input.request.y.n(Etes-vous sûr(e) de vouloir écrire votre nouvel évènement $iif(%l,sur la ligne %l) ?)) return
      if (%l !isnum) var %l = $null, %mode = %l
      if ((%l > %m) && (%l isnum) && (%m isnum)) {
        if ((%mode == il) || (!%mode)) inc %m
        while (%m < %l) {
          write %file $crlf
          inc %m
        }
      }
      write $iif(%mode,$+(-,$iif((%mode == l) && (!%new),dl,%mode),%l)) %file %new
      manager.display.texte $hget(Manager,Liste) $hget(Manager,Line)
      drawdot @Manager
    }
    else {
      var %x = $1, %y = $2
      tokenize 32 $hget(Manager,Asc1)
      if ($inrect(%x,%y,$1,$2,$3,$4)) {
        if ($hget(Manager,Line) <= 0) return
        hdec Manager Line 2
        hdel Manager AscBloque
        manager.display.texte $hget(Manager,Liste) $hget(Manager,Line)
        drawdot @Manager
      }
      tokenize 32 $hget(Manager,Asc2)
      if ($inrect(%x,%y,$1,$2,$3,$4)) {
        if ($hget(Manager,AscBloque)) return
        hinc Manager Line 2
        manager.display.texte $hget(Manager,Liste) $hget(Manager,Line)
        drawdot @Manager
      }
      tokenize 32 $hget(Manager,Liste)
      if ($inrect(%x,%y,$1,$2,$3,$4)) {
        var %n = 1, %max = $hget(ManagerListe,0).item, %i = 0
        while %n <= %max {
          if ($hget(ManagerListe,%n).item <= %y) {
            var %o = $hget(ManagerListe,$ifmatch), %last = $iif(%last > %o,%last,%o)
          }
          else var %i = %last
          inc %n
        }
        if (!%i) var %i = $hget(ManagerListe,0).item
        if (!%i) return
        if (!$input.request.y.n(Voulez-vous opérer une opération de nettoyage sur la ligne %i ?)) return
        if (!$isdir(Manager)) .mkdir Manager
        var %file = $+(Manager/,$replace($gettok($hget(Manager,DayInfo),2,32),$chr(47),-),.txt)
        if (!$exists(%file)) write -c %file
        write $+(-,$iif($input.request.y.n(Effacer la ligne ? Si non : la vider),d),l,%i) %file
        manager.display.texte $hget(Manager,Liste) $hget(Manager,Line)
      }
      drawdot @Manager
    }
  }
  elseif ($hget(Manager,Config)) {
    var %x = $1, %y = $2
    tokenize 32 $hget(Manager,Asc1)
    if ($inrect(%x,%y,$1,$2,$3,$4)) {
      if ($hget(Manager,Line) <= 1) return
      hdec Manager Line 3
      if ($hget(Manager,Line) <= 0) hadd -m Manager Line 1
      hdel Manager AscBloque
      manager.display.alarmes $hget(Manager,Liste) $hget(Manager,Line)
      drawdot @Manager
    }
    tokenize 32 $hget(Manager,Asc2)
    if ($inrect(%x,%y,$1,$2,$3,$4)) {
      if ($hget(Manager,AscBloque)) return
      hinc Manager Line 3
      manager.display.alarmes $hget(Manager,Liste) $hget(Manager,Line)
      drawdot @Manager
    }
    if ($inrect(%x,%y,15,$calc(%maxy - 35),145,20)) { hsave -i ManagerListe Manager\Manager.ini Hebdo | manager.alarmes | manager.backup | manager.calendar $hget(Manager,Month) | hdel Manager Config | drawdot @Manager }
    elseif ($inrect(%x,%y,200,$calc(%maxy -35),42,20)) {
      var %n = $replace($input.request(Quel sera le nom de l'alarme ?),$chr(32),$chr(165))
      var %h = $input.request(Quelle sera l'heure de son déclenchement ?)
      if (!$regex(%h,^([0-1][0-9]|[0-9]|2[0-4]):([0-6][0-9])$)) { input.request.ok Heure invalide | return }
      var %file = Manager\Manager.ini, %nb = $calc($readini(%file,Config,Id) +1)
      writeini -n %file Config Id %nb
      hadd -m ManagerListe %nb $+(Heure:,%h) $+(Objet:,%n)
      manager.display.alarmes $hget(Manager,Liste) $hget(Manager,Line)
      drawdot @Manager
    }
    elseif ($inrect(%x,%y,40,50,$calc(%maxx - 80),$calc(%maxy - 100))) {
      var %n = 1, %max = $hget(ManagerList,0).item, %i = 0, %last = 67
      while %n <= %max {
        var %1 = $gettok($hget(ManagerList,%n).item,1,45), %2 = $gettok($hget(ManagerList,%n).item,2,45)
        if (%y isnum $+(%1,-,%2)) {
          var %old = %last, %last = $hget(ManagerList,%n).item, %i = $hget(ManagerList,%last)
        }
        inc %n
      }
      var %x1 = $gettok($hget(Manager,Liste),1,32), %x2 = $gettok($hget(Manager,Liste),3,32), %y1 = $gettok($hget(Manager,Liste),2,32), %y2 = $gettok($hget(Manager,Liste),4,32), %j = $calc(%x2 + %x1), %jo = 8
      while %x <= %j {
        dec %j 60
        dec %jo
      }
      if (%i) {
        var %j = $gettok(L-M-W-J-V-S-D,%jo,45)
        if ((%jo >= 1) && ($getdot(@Manager,%x,%y) != 0)) {
          var %read = $hget(ManagerListe,%i), %r = $regex(%read,Jours:([^\s]+)), %r = $regml(1), %r2 = $regsub(%read,Jours:([^\s]+),,%re)
          var %mm = $calc(%last - %old), %ll = 59
          if (%jo = 7) dec %ll 3
          if (%j isin %r) {
            var %r = $remtok(%r,%j,1,45), %d = $calc(%x2 - 17 - (7 - %jo) * 60)
            drawfill -nr @Manager 16777215 0 %x %y
            hadd -m ManagerListe %i %re $iif(%r,$+(Jours:,%r))
          }
          else {
            var %r = $addtok(%r,%j,45), %d = $calc(%x2 - 17 - (7 - %jo) * 60)
            drawfill -nr @Manager 16752800 0 %x %y
            hadd -m ManagerListe %i %re $+(Jours:,%r)
          }
        }
        elseif (%jo <= 0) {
          var %read = $hget(ManagerListe,%i), %r = $regex(%read,Status:([^\s]+)), %r = $regml(1), %r2 = $regsub(%read,Status:([^\s]+),,%re)
          if ($getdot(@Manager,%x,%y) == 255) {
            var %h = $regex(%read,Heure:([^\s]+)), %h = $regml(1)
            var %o = $regex(%read,Objet:([^\s]+)), %o = $regml(1)
            if (!$input.request.y.n(Voulez-vous supprimer l'alerte se déclenchant à %h concernant %o ?)) return
            hdel ManagerListe %i
          }
          else {
            hadd -m ManagerListe %i %re $+(Status:,$iif(%r != 0,0,1))
          }
          manager.display.alarmes $hget(Manager,Liste) $hget(Manager,Line)
        }
      }
      drawdot @Manager
    }
  }
  elseif ($manager.case($1,$2)) {
    var %i = $ifmatch, %d = $hget(Manager,Month)
    if (%i == Prev) {
      var %month = $calc($gettok(%d,2,47) -1), %y = $gettok(%d,3,47)
      if (%month <= 0) var %month = 12, %y = $calc(%y -1)
      manager.calendar $+(01/,%month,/,%y) copy stop
    }
    elseif (%i == Next) {
      var %month = $calc($gettok(%d,2,47) +1), %y = $gettok(%d,3,47)
      if (%month >= 13) var %month = 1, %y = $calc(%y +1)
      manager.calendar $+(01/,%month,/,%y) copy stop
    }
    elseif ($gettok(%i,1,32) == Alarme) {
      var %date = $gettok(%i,3,32)
      if (!$isdir(Manager)) .mkdir Manager
      if (!$hget(ManagerAlarmes)) manager.alarmes
      if ($hmatch(ManagerAlarmes,$+(Date:,%date,*),0).data) {
        var %m = $ifmatch, %i = 1
        while %i <= %m {
          var %hm = $hmatch(ManagerAlarmes,$+(Date:,%date,*),%i).data, %j = $hget(ManagerAlarmes,%hm)
          var %a = $regex(%j,Heure:([\S]+)), %heure = $regml(1)
          if ($input.request.y.n(Voulez-vous désactiver l'alarme du %date $iif(%heure,se déclenchant à $+(%heure,$chr(41))) ?)) { remini Manager\Manager.ini Alarmes %hm | hdel ManagerAlarmes %hm }
          inc %i
        }
      }
      else {
        var %u = $+($r(a,z),$r(a,z),$r(a,z),$r(a,z),$r(0,9))
        writeini -n Manager\Manager.ini Alarmes %u $+(Date:,%date) $+(Heure:,$input.request(A quelle heure doit-elle sonner ?)) $+(Nom:,$iif($input.request(Quelle nom donner à l'alarme ?),$ifmatch,1))
        hadd -m ManagerAlarmes %u $readini(Manager\Manager.ini,Alarmes,%u)
        manager.alarmes
      }
      manager.calendar $hget(Manager,Month)
    }
    elseif ($gettok(%i,1,32) == Config) manager.display.zone.alarmes
    elseif ($gettok(%i,1,32) == Texte) {
      if (!$isdir(Manager)) .mkdir Manager
      var %txt = $+(Manager\,$replace($gettok(%i,3-,32),$chr(47),-),.txt)
      if (!$exists(%txt)) write -c %txt
      run %txt
    }
    elseif ($numtok(%i,32) > 1) manager.display.day %i
  }
  elseif ($getdot(@Manager,$1,$2) == 13171400) {
    manager.copy.calendar
    .timermove.calendar -h 0 50 manager.move.calendar $1 $2
  }
  elseif ($getdot(@Manager,$1,$2) == 16448240) manager.chgmode
  elseif ($inpoly($1,$2,$calc(%maxx - 21),%maxy,%maxx,%maxy,%maxx,$calc(%maxy - 21))) .timermove.manager -h 0 0 move.manager $1 $2
}
alias -l manager.mouse {
  if (($timer(move.manager)) || ($timer(move.calendar))) return
  if ($0 < 2) return
  if (!$hget(Manager,Infos) && !$hget(Manager,Config)) {
    if ($manager.case($1,$2)) {
      var %donnees = $ifmatch, %ox = $gettok($hget(Manager,Origin),1,32), %oy = $gettok($hget(Manager,Origin),2,32)
      if (%donnees == Prev) var %nom = Cliquez ici pour voir le mois précédent
      elseif (%donnees == Next) var %nom = Cliquez ici pour voir le mois suivant
      elseif ($gettok(%donnees,1,32) == Alarme) {
        if (!$hget(ManagerAlarmes)) manager.alarmes
        var %nom = $iif($hmatch(ManagerAlarmes,$+(Date:,$gettok(%donnees,3,32),*)).data,Désactiver l'alarme du,Mettre une alarme pour le) $manager.translate($gettok(%donnees,3-,32))
      }
      elseif ($gettok(%donnees,1,32) == Config) var %nom = Configurer l'alarme quotidienne
      elseif ($gettok(%donnees,1,32) == Texte) var %nom = Lancer le fichier texte du $manager.translate($gettok(%donnees,3-,32))
      elseif ($gettok(%donnees,2,32)) {
        var %nom = $iif($manager.compare($ifmatch,$date),Planifier la journée du,Consulter le journal du) $manager.translate($gettok(%donnees,2,32))
      }
      drawrect -frn @Manager 12706303 1 $calc(%ox +1) $calc(%oy + 6*35 +1) 243 18
      if (%nom) drawtext -crn @Manager 0 Tahoma 10 $calc(%ox +5) $calc(%oy + 6*35 +5) 235 15 %nom
      else manager.heure force
      drawdot @Manager
      hadd -m Manager Help 1
    }
    elseif ($getdot(@Manager,$1,$2) == 13171400) {
      var %ox = $gettok($hget(Manager,Origin),1,32), %oy = $gettok($hget(Manager,Origin),2,32)
      drawrect -frn @Manager 12706303 1 $calc(%ox +1) $calc(%oy + 6*35 +1) 243 18
      drawtext -crn @Manager 0 Tahoma 10 $calc(%ox +5) $calc(%oy + 6*35 +5) 235 15 Cliquez ici pour déplacer la fenêtre
      drawdot @Manager
      hadd -m Manager Help 1
    }
    elseif ($getdot(@Manager,$1,$2) == 16448240) {
      var %ox = $gettok($hget(Manager,Origin),1,32), %oy = $gettok($hget(Manager,Origin),2,32)
      drawrect -frn @Manager 12706303 1 $calc(%ox +1) $calc(%oy + 6*35 +1) 243 18
      drawtext -crn @Manager 0 Tahoma 10 $calc(%ox +5) $calc(%oy + 6*35 +5) 235 15 Changer le mode d'apparence
      drawdot @Manager
      hadd -m Manager Help 1
    }
    elseif ($hget(Manager,Help)) {
      if (!$window(@Manager.copy)) return
      var %ox = $gettok($hget(Manager,Origin),1,32), %oy = $gettok($hget(Manager,Origin),2,32)
      drawrect -frn @Manager 12706303 1 $calc(%ox +1) $calc(%oy + 6*35 +1) 243 18
      drawtext -crn @Manager 0 Tahoma 10 $calc(%ox +5) $calc(%oy + 6*35 +5) 235 15 $manager.translate($date) - $time
      drawdot @Manager
      hdel Manager Help
    }
  }
}

;******************
; Calculs de temps
;******************
alias -l manager.case {
  if ($0 < 2) return
  var %ox = $gettok($hget(Manager,Origin),1,32), %oy = $gettok($hget(Manager,Origin),2,32)
  if ($inrect($1,$2,$calc(%ox + 210),$calc(%oy + 175),35,35)) return Config %id %e
  elseif (($1 isnum $+(%ox,-,$calc(%ox + 35 * 7))) && ($2 isnum $+(%oy,-,$calc(%oy + 35 * 6)))) {
    var %casex = $gettok($calc(($1 - %ox)/35),1,46), %casey = $gettok($calc(($2 - %oy)/35),1,46), %id = $calc(%casey * 7 + %casex - $hget(Manager,1st) +1)
    var %year = $gettok($hget(Manager,Month),3,47), %month = $gettok($hget(Manager,Month),2,47)
    var %max = $calc($gettok($+(30-,$iif($manager.bisex(%year),29,28),-31-30-31-30-31-31-30-31-30-31),%month,45) -1)
    if (%id !isnum $+(0-,%max)) return
    var %d = $+($base($calc(%id + 1),10,10,2),/,$base(%month,10,10,2),/,$base(%year,10,10,2))
    var %x = $calc(%ox + 35 * %casex), %y = $calc(%oy + 35 * %casey), %e = $iif($gettok(%d,2,47) == %month,%d)
    if ($getdot(@Manager,$1,$2) == 255) return Alarme %id %e
    if ($inpoly($1,$2,$calc(%x + 4),$calc(%y + 32),$calc(%x + 8),$calc(%y + 24),$calc(%x + 12),$calc(%y + 32),$calc(%x + 2),$calc(%y + 32))) return Alarme %id %e
    if ($getdot(@Manager,$1,$2) == 15767190) return Texte %id %e
    if ($inpoly($1,$2,$calc(%x + 23),$calc(%y + 33),$calc(%x + 33),$calc(%y + 33),$calc(%x + 33),$calc(%y + 23))) {
      ;Ce procédé est utile pour ceux qui ont des vieux PC ne pouvant pas correctement récupérer une couleur (comme Wims :D)
      return Texte %id %e
    }
    return %id %e
  }
  elseif ($1 isnum $+($calc(%ox + 35 * 7),-,$calc(%ox + 35 * 7 +19))) {
    if ($2 isnum $+(%oy,-,$calc(%oy +20))) return Prev
    elseif ($2 isnum $+($calc(%oy + 6 * 35 -20),-,$calc(%oy + 6 * 35))) return Next
  }
}
alias -l manager.bisex {
  if (!$1) return
  if (4 // $1) {
    if (100 // $1) {
      if (400 // $1) return 1
      return 0
    }
    return 1
  }
  return 0
}
alias -l manager.translate {
  if (!$1) return
  var %j = $gettok($1,1,47), %m = $gettok($1,2,47), %a = $gettok($1,3,47)
  if (%m < 3) var %n = $calc($int($calc(365.25*(%a - 1))) + $int($calc(30.6*(%m + 13))) + %j - 621049)
  else var %n = $calc($int($calc(365.25 * %a)) + $int($calc(30.6*(%m +1))) + %j - 621049)
  var %d = $calc(%n % 7)
  if (%d == 0) var %d = 7
  return $gettok(Lundi-Mardi-Mercredi-Jeudi-Vendredi-Samedi-Dimanche,%d,45) $int(%j) $gettok(Janvier-Février-Mars-Avril-Mai-Juin-Juillet-Août-Septembre-Octobre-Novembre-Décembre,$int(%m),45) $int(%a)
}
alias -l manager.compare {
  if ($0 < 2) return
  tokenize 47 $+($1,/,$2)
  if ($3 < $6) return 0
  elseif ($3 > $6) return 1
  else {
    if ($2 < $5) return 0
    elseif ($2 > $5) return 1
    else {
      if ($1 < $4) return 0
      return 1
    }
  }
}
;***********************
; Draw (avec option -n)
;***********************
alias -l manager.button {
  if ($0 < 4) return
  drawrect -rn @Manager 0 1 $1-
  drawrect -frn @Manager 12706303 1 $calc($1 +1) $calc($2 +1) $calc($3 -2) $calc($4 -2)
  if (($5 isnum) && ($6-)) drawtext -crn @Manager 0 Tahoma $5 $calc($1 +4) $calc($2 +4) $calc($3 -8) $calc($4 -8) $6-
}
alias -l manager.display.day {
  if (!$0) return
  hadd -m Manager DayInfo $1-
  unset %img
  var %r = $manager.width, %maxx = $gettok(%r,1,32), %maxy = $gettok(%r,2,32), %donnees = $1-
  if ($readini(Config.ini,Manager,Day)) var %img = $ifmatch
  if (!$exists(%img)) {
    drawrect -rn @Manager 0 1 5 5 $calc(%maxx - 10) $calc(%maxy - 10)
    drawrect -frn @Manager 16777215 1 11 11 $calc(%maxx - 22) $calc(%maxy - 22)
  }
  else drawpic -cnms @Manager 10 10 $calc(%maxx - 20) $calc(%maxy - 20) $+(",%img,")
  var %texte = $iif($manager.compare($gettok(%donnees,2,32),$date),Planning,Journal) du $manager.translate($gettok(%donnees,2-,32)), %width = $width(%texte,Tahoma,12)
  manager.button $calc(%maxx / 2 - %width / 2 -6) 20 $calc(%width +11) 25 12 %texte
  drawline -rn @Manager 0 1 $calc(%maxx / 2 - %width / 2 -2) 38 $calc(%maxx / 2 + %width /2) 38
  manager.button $iif($hget(Manager,Mode) == Alone,120,140) $calc(%maxy -35) 80 20 10 Ajouter/Effacer
  manager.button 15 $calc(%maxy -35) 100 20 10 Retour au calendrier
  if ($hget(Manager,Mode) != Alone) {
    var %saint = Saint(e) $readini(ArKanis/saint.ini,$gettok($gettok(%donnees,2,32),2,47),$gettok($gettok(%donnees,2,32),1,47))
    manager.button 245 $calc(%maxy - 35) $calc($width(%saint,Tahoma,10) +8) 20 10 %saint
    if ($readini(Config.ini,Manager,InfosOrigin)) var %x1 = $gettok($ifmatch,1,32), %y1 = $gettok($ifmatch,2,32), %x2 = $gettok($ifmatch,3,32), %y2 = $gettok($ifmatch,4,32)
    var %v1 = $calc(%maxx - 120), %b1 = $calc(%maxy - 120)
    if (!%x1) var %x1 = 50
    if (!%x2) var %x2 = 150
    if (!%y1) var %y1 = 75
    if (!%y2) var %y2 = 300
    if (%x1 < 25) var %x1 = 25
    elseif (%x1 > %v1) var %x1 = %v1
    if (%y1 < 50) var %y1 = 50
    elseif (%y1 > %b1) var %y1 = %b1
    var %v2 = $calc(%maxx - %x1 - 40), %b2 = $calc(%maxy - %y1 - 45)
    if (%x2 > %v2) var %x2 = %v2
    if (%x2 < 95) var %x1 = $calc(%x1 - 95 + %x2), %x2 = 95
    if (%y2 > %b2) var %y2 = %b2
    if (%y2 < 95) var %y1 = $calc(%y1 - 95 + %y2), %y2 = 95
  }
  else var %x1 = 15, %x2 = $calc(%maxx - 45), %y1 = 47, %y2 = 140
  drawrect -nr @Manager 0 1 %x1 %y1 %x2 %y2
  drawrect -nr @Manager 0 1 $calc(%x1 + %x2 -1) %y1 15 %y2
  drawrect -fnr @Manager 15180752 1 $calc(%x1 + %x2) $calc(%y1 +1) 13 $calc(%y2 -2)
  hadd -m Manager Asc1 $calc(%x1 + %x2 -1) %y1 15 15
  drawrect -nr @Manager 0 1 $hget(Manager,Asc1)
  drawrect -fnr @Manager 16240098 1 $calc(%x1 + %x2) $calc(%y1 +1) 13 13
  hadd -m Manager Asc2 $calc(%x1 + %x2 -1) $calc(%y1 + %y2 -15) 15 15
  drawrect -nr @Manager 0 1 $hget(Manager,Asc2)
  drawrect -fnr @Manager 16240098 1 $calc(%x1 + %x2) $calc(%y1 + %y2 -14) 13 13
  hadd -m Manager Liste %x1 %y1 %x2 %y2
  hadd -m Manager Line 1
  manager.display.texte %x1 %y1 %x2 %y2 1
  titlebar @Manager - $gettok(%donnees,2,32)
  drawdot @Manager
  hadd -m Manager Infos 1
}
alias -l manager.display.texte {
  if ($0 < 5) return
  var %x1 = $1, %y1 = $2, %x2 = $3, %y2 = $4, %nb = $5
  drawrect -fnr @Manager 16777215 1 $calc(%x1 +1) $calc(%y1 +1) $calc(%x2 -2) $calc(%y2 -2)
  if (!$isdir(Manager)) .mkdir Manager
  if ($hget(ManagerListe)) hfree ManagerListe
  var %file = $+(Manager/,$replace($gettok($hget(Manager,DayInfo),2,32),$chr(47),-),.txt), %l = $lines(%file), %posy = $calc(%y1 + 2), %width = $calc(%x2 - 6), %posx = $calc(%x1 + 3), %max = $calc(%y1 + %y2 -10)
  if (%nb <= 0) var %nb = 1
  while ((%posy <= %max) && (%nb <= %l)) {
    var %text = %nb - $read(%file,%nb), %n2 = 0
    if (!%text) inc %posy 10
    while ((%text) && (%posy <= %max)) {
      var %n = 2, %m = $len(%text)
      while (($width($left(%text,$calc(%n +1)),Tahoma,10) <= $calc(%width - $iif(%n2 > 0,5,0))) && (%n <= %m)) inc %n
      drawtext -nr @Manager 0 Tahoma 10 $calc(%posx + $iif(%n2 > 0,5,0)) %posy $left(%text,%n)
      if (%n2 == 0) hadd -m ManagerListe %posy %nb
      inc %posy 10
      var %text = $right(%text,$+(-,%n))
      inc %n2
    }
    inc %nb
  }
  if (%nb > %l) hadd -m Manager AscBloque 1
}
alias -l manager.encoche {
  var %d = $manager.width, %maxx = $gettok(%d,1,32), %maxy = $gettok(%d,2,32), %i = 21
  while %i >= 3 {
    drawline -rn @Manager 0 1 $calc(%maxx - %i) %maxy %maxx $calc(%maxy - %i)
    dec %i 3
  }
}
alias -l manager.heure {
  var %r = $hget(Manager,Origin), %ox = $gettok(%r,1,32), %oy = $gettok(%r,2,32)
  if ($1 != force) {
    if (!$window(@Manager)) { .timermanager.heure off | return }
    if (($timer(manager.move)) || ($timer(manager.calendar))) return
    if (($hget(Manager,Infos)) || ($hget(Manager,Config))) return
    if ($getdot(@Manager,$mouse.x,$mouse.y) == 13171400) return
    if ($inrect($mouse.x,$mouse.y,%ox,%oy,$calc(10*35 +20),$calc(6*35))) return
  }
  drawrect -frn @Manager 12706303 1 $calc(%ox +1) $calc(%oy + 6*35 +1) 243 18
  drawtext -crn @Manager 0 Tahoma 10 $calc(%ox +5) $calc(%oy + 6*35 +5) 235 15 $manager.translate($date) - $time
  drawdot @Manager
}
alias -l manager.chgmode {
  writeini -n Config.ini Manager Mode $iif($readini(Config.ini,Manager,Mode) != Alone,Alone,Big)
  manager -x
  manager
}

;******
; Move
;******
alias -l move.manager {
  var %x = $mouse.dx, %y $mouse.dy
  if (!$window(@Manager)) .timermove.manager off
  if ($mouse.key & 1) {
    hadd -m Manager Move 1
    .timermove.manager -h 0 0 move.manager $1-
    window @Manager $calc(%x - $1) $calc(%y - $2)
  }
  elseif ($hget(Manager,Move)) { hdel Manager Move | .timermove.manager off }
}
alias -l manager.move.calendar {
  if (!$window(@Manager.copy.calendar)) return
  var %x = $calc($mouse.dx - $window(@Manager).dx - 7*35 -10), %y = $calc($mouse.dy - $window(@Manager).dy - 6*35 - 10)
  if ($mouse.key & 1) {
    var %d = $manager.width, %maxx = $gettok(%d,1,32), %maxy = $gettok(%d,2,32)
    drawrect -frn @Manager 16777215 1 0 0 %maxx %maxy
    if ($readini(Config.ini,Manager,Background)) {
      var %img = $ifmatch
      if ($exists(%img)) drawpic -cnms @Manager 0 0 %maxx %maxy $+(",%img,")
    }
    var %v1 = $calc(%maxx - 7 * 35 -26), %v2 = $calc(%maxy - 6 * 35 -35)
    if (!%x) var %x = 10
    elseif (%x > %v1) var %x = %v1
    elseif (%x < 5) var %x = 5
    if (!%y) var %y = $calc(%maxy - 190)
    elseif (%y > %v2) var %y = %v2
    elseif (%y < 5) var %y = 5
    hadd -m Manager Origin %x %y
    drawcopy -n @Manager.copy.calendar 1 1 265 231 @Manager %x %y
    manager.encoche
    drawdot @Manager
  }
  else { .timermove.calendar off | manager.copy | writeini -n Config.ini Manager Origin $hget(Manager,Origin) }
}
;*********
; Alarmes
;*********
on *:start:{
  .timermanager.alarmes -o 0 7200 manager.alarmes
  manager.alarmes Prevenir
}
alias -l manager.alarmes {
  if (!$hget(ManagerAlarmes)) hmake ManagerAlarmes 10
  hload -i ManagerAlarmes Manager\Manager.ini Alarmes
  var %max = $hmatch(ManagerAlarmes,$+(Date:,$date,*),0).data, %i = 1
  while %i <= %max {
    unset %heure %nom %du
    var %hm = $hmatch(ManagerAlarmes,$+(Date:,$date,*),%i).data, %j = $hget(ManagerAlarmes,%hm)
    var %a = $regex(%j,Heure:([\S]+)), %heure = $regml(1), %c = $ctime(%heure $date)
    if (%c >= $ctime) var %du = $duration($calc(%c - $ctime))
    else {
      remini Manager\Manager.ini %hm
      hdel ManagerAlarmes %hm
      unset %heure
    }
    var %a = $regex(%j,Nom:([\S]+)), %nom = $regml(1)
    if ($1 == Prevenir) input.request.ok Vous avez une alarme aujourd'hui $iif(%heure,à %heure (dans $+(%du,$chr(41)))) ! $iif(%nom,$+($chr(40),$ifmatch,$chr(41)))
    .timeralarme. $+ %i %heure 1 0 manager.alarmes.declencher %hm %nom
    inc %i
  }
  if (!$hget(ManagerListe)) { hmake ManagerListe 20 | hload -i ManagerListe Manager\Manager.ini Hebdo }
  var %i = 1, %max = $hget(ManagerListe,0).item
  while %i <= %max {
    var %r = $hget(ManagerListe,%i).data
    if ($regex(%r,Jours:([^\s]+))) {
      var %j = $regml(1), %j2 = $gettok(L-M-W-J-V-S-D,$findtok(Mon-Tue-Wed-Thu-Fri-Sat-Sun,$asctime(ddd),45),45)
      if (%j2 isin %j) {
        unset %e %o %s
        var %e = $regex(%r,Heure:([^\s]+)), %e = $regml(1), %s = $regex(%r,Status:([^\s]+)), %s = $regml(1), %o = $regex(%r,Objet:([^\s]+)), %o = $regml(1)
        if ((%e) && (%s != 0)) {
          var %c = $ctime(%e $date)
          if (%c > $ctime) {
            var %du = $duration($calc(%c - $ctime))
            .timeralarmehebdo. $+ %i %e 1 0 manager.alarmes.declencher $hget(ManagerListe,%i).item %o
            if ($1 == Prevenir) input.request.ok Vous avez une alarme aujourd'hui $iif(%e,à %e (dans $+(%du,$chr(41)))) ! $iif(%o,$+($chr(40),$ifmatch,$chr(41)))
          }
        }
      }
    }
    inc %i
  }
}
alias -l manager.alarmes.declencher {
  if (!$readini(Manager\Manager.ini,Config,Alarmes)) return
  if ($hget(ManagerAlarmes,$1)) hdel ManagerAlarmes $1
  remini Manager\Manager.ini Alarmes %hm
  manager.beep Alarme déclenchée : il est $asctime(HH:nn) $iif($2,$+($chr(40),$2-,$chr(41)))
  if (($window(@Manager)) && (!$hget(Manager,Infos))) manager.calendar $hget(Manager,Month)
}
alias -l manager.beep {
  beep 5 1
  if ($0) hadd -mu5 Manager Temp $1-
  if ($dialog(manager.beep)) dialog -v manager.beep
  if (!$dialog(manager.beep)) dialog -rmdao manager.beep manager.beep
}
dialog manager.beep {
  title Alarme
  size -1 -1 150 50
  option dbu
  icon ArKanis/Icones/qs.ico
  button "Alarme" 11, 1 0 149 50, ok default
}
on *:dialog:manager.beep:init:*:if ($hget(Manager,Temp)) did -o $dname 11 1 $ifmatch

alias -l manager.display.zone.alarmes {
  if ($hget(Manager,Mode) == Alone) {
    writeini -n Config.ini Manager Mode Big
    manager -x
    manager
    .timer -h 1 1 manager.display.zone.alarmes
  }
  unset %img
  var %r = $manager.width, %maxx = $gettok(%r,1,32), %maxy = $gettok(%r,2,32)
  if ($readini(Config.ini,Manager,Day)) var %img = $ifmatch
  if (!$exists(%img)) {
    drawrect -rn @Manager 0 1 5 5 $calc(%maxx - 10) $calc(%maxy - 10)
    drawrect -frn @Manager 16777215 1 11 11 $calc(%maxx - 22) $calc(%maxy - 22)
  }
  else drawpic -cnms @Manager 10 10 $calc(%maxx - 20) $calc(%maxy - 20) $+(",%img,")
  var %texte = Alarmes hebdomadaires, %width = $width(%texte,Tahoma,12)
  manager.button $calc(%maxx / 2 - %width / 2 -6) 20 $calc(%width +11) 25 12 %texte
  drawline -rn @Manager 0 1 $calc(%maxx / 2 - %width / 2 -2) 38 $calc(%maxx / 2 + %width /2) 38
  manager.button 200 $calc(%maxy -35) 42 20 10 Ajouter
  manager.button 15 $calc(%maxy -35) 145 20 10 Sauvegarder les changements
  var %x1 = 40, %y1 = 50, %x2 = $calc(%maxx - 80), %y2 = $calc(%maxy - 100)
  drawrect -nr @Manager 0 1 %x1 %y1 %x2 %y2
  drawrect -nr @Manager 0 1 $calc(%x1 + %x2 -1) %y1 15 %y2
  drawrect -fnr @Manager 15180752 1 $calc(%x1 + %x2) $calc(%y1 +1) 13 $calc(%y2 -2)
  hadd -m Manager Asc1 $calc(%x1 + %x2 -1) %y1 15 15
  drawrect -nr @Manager 0 1 $hget(Manager,Asc1)
  drawrect -fnr @Manager 16240098 1 $calc(%x1 + %x2) $calc(%y1 +1) 13 13
  hadd -m Manager Asc2 $calc(%x1 + %x2 -1) $calc(%y1 + %y2 -15) 15 15
  drawrect -nr @Manager 0 1 $hget(Manager,Asc2)
  drawrect -fnr @Manager 16240098 1 $calc(%x1 + %x2) $calc(%y1 + %y2 -14) 13 13
  hadd -m Manager Liste %x1 %y1 %x2 %y2
  hadd -m Manager Line 1
  if ($hget(ManagerListe)) hfree ManagerListe
  hmake ManagerListe 20
  hload -i ManagerListe Manager\Manager.ini Hebdo
  manager.display.alarmes %x1 %y1 %x2 %y2 1
  titlebar @Manager - Alarmes hebdomadaires
  hadd -m Manager Config 1
  drawdot @Manager
}
alias -l manager.display.alarmes {
  if ($0 < 5) return
  var %x1 = $1, %y1 = $2, %x2 = $3, %y2 = $4, %nb = $5
  drawrect -fnr @Manager 16777215 1 $calc(%x1 +1) $calc(%y1 +1) $calc(%x2 -2) $calc(%y2 -2)
  var %l = $hget(ManagerListe,0).item, %posy = $calc(%y1 + 17), %width = $calc(%x2 - 6), %posx = $calc(%x1 + 3), %max = $calc(%y1 + %y2 -10)
  var %1 = $calc(%x1 + %x2 -58), %2 = $calc(%y1 + %y2), %min = $calc(%x1 + %x2 - 7 * 60), %j = 7
  drawtext -nr @Manager 0 Tahoma 10 $calc(%x1 + 10) $calc(%y1 + 2) Nom de l'alarme
  drawline -nr @Manager 0 1 %x1 $calc(%y1 + 16) $calc(%x1 + %x2) $calc(%y1 + 16)
  while %1 >= %min {
    drawtext -nr @Manager 0 Tahoma 10 $calc(%1 + 5) $calc(%y1 + 2) $gettok(Lundi-Mardi-Mercredi-Jeudi-Vendredi-Samedi-Dimanche,%j,45)
    drawline -nr @Manager 0 1 %1 %y1 %1 %2
    dec %1 60
    dec %j
  }
  if ($hget(ManagerList)) hfree ManagerList
  hmake ManagerList 15
  var %nb = $hget(Manager,Line)
  if (!%nb) var %nb = 1
  drawline -nr @Manager 0 1 $calc(%x1 + 14) $calc(%y1 +17) $calc(%x1 + 14) %2
  while ((%posy <= %max) && (%nb <= %l)) {
    var %i = $hget(ManagerListe,%nb).item, %text = $hget(ManagerListe,%i), %n2 = 0
    if (!%text) inc %posy 10
    unset %r %s
    var %d = %posy
    while ((%text) && (%posy <= %max)) {
      if ($regex(%text,Jours:([^\s]+))) var %r = $regml(1)
      if ($regex(%text,Status:([^\s]+))) var %s = $regml(1)
      var %e = $regsub(%text,Jours:([^\s]+),,%text), %e = $regsub(%text,Status([^\s]+),,%text), %text = $replace(%text,$chr(165),$chr(32))
      var %n = 2, %m = $len(%text)
      while (($width($left(%text,$calc(%n +1)),Tahoma,10) <= $calc(%x2 - 7*60 - $iif(%n2 > 0,5,0))) && (%n <= %m)) inc %n
      if (%s == 0) drawrect -fnr @Manager 11184810 0 $calc(%x1 +15) $calc(%posy + $iif(%posy > 68,1,0)) $calc(%1 +5) $iif(%posy > 68,11,12)
      drawrect -fnr @Manager 255 1 $calc(%x1 +1) $calc(%posy + $iif(%posy > 68,1,0)) 13 $iif(%posy > 68,11,12)
      drawtext -nr @Manager 0 Tahoma 10 $calc(%posx + 15+ $iif(%n2 > 0,5,0)) %posy $left(%text,%n)
      inc %posy 10
      var %text = $right(%text,$+(-,%n))
      inc %n2
    }
    hadd -m ManagerList $+(%d,-,$calc(%posy +2)) %i
    inc %nb
    drawline -nr @Manager 0 1 %x1 $calc(%posy + 2) $calc(%x2 + %x1) $calc(%posy + 2)
    var %ii = 1, %te = L-M-W-J-V-S-D
    while %ii <= 7 {
      if ($gettok(%te,%ii,45) isin %r) drawfill -snr @Manager 16752800 16777215 $calc(%x1 + %x2 - (8 - %ii) * 60 + 5) $calc(%posy - 6)
      inc %ii
    }
    inc %posy 2
  }
  if (%nb > %l) hadd -m Manager AscBloque 1
}

;********
; Others

on *:load:{ if (!$isalias(input.request.ok)) alias input.request.ok return $input($1-,o) if (!$isalias(input.request.y.n)) alias input.request.y.n return $input($1-,y) if (!$isalias(input.request)) alias input.request return $input($1-) if ($exists(ArKanis/Icones/backgroundManager.jpg)) writeini -n Config.ini Manager Background ArKanis/Icones/backgroundManager.jpg if ($exists(ArKanis/Icones/backgroundDay.jpg)) writeini -n Config.ini Manager Day ArKanis/Icones/backgroundDay.jpg } on *:unload:{ .timermanager.* off if ($window(@Manager)) window -c @Manager if ($window(@Manager.copy)) window -c @Manager.copy if ($window(@Manager.copy.calendar)) window -c @Manager.copy.calendar } alias manager.debug { if ($script(Script-ArKanis.mrc)) .disable #inputrequest else .enable #inputrequest return Manager debuggué } #inputrequest off alias input.request.ok { if ($script(Script-ArKanis.mrc)) return return $input($1-,o) } alias input.request.y.n { if ($script(Script-ArKanis.mrc)) return return $input($1-,y) } alias input.request { if ($script(Script-ArKanis.mrc)) return return $input($1-,e) } #inputrequest end ;End Of File

Conclusion :


Je pense très prochainement l'implémenter dans mon add-on Script-ArKanis disponible sur www.arkanis.eu
QS y est déjà.

Si vous disposez de Script-ArKanis, les questions qui vous seront posées seront dans des boîtes de dialogue autres que celles avec $input

D'autres screens de ce Manager :
http://www.arkanis.eu/?page=screen

Pour charger le .mrc, mettez le dossier ArKanis dans votre dossier mIRC et tapez /load -rs ArKanis/Manager.mrc

Codes Sources

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.