Calendrier perpétuel en picwin

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 760 fois - Téléchargée 33 fois

Contenu du snippet

Il s'agit d'un calendrier perpétuel qui permet d'avoir les calendrier de toutes les années a partir de 2004.
pour le lancer vous pouvez taper /calendrier dans le status a ce moment vous aurez le calendrier des année 2004 et 2005

sinon vous pouvez taper /calendrier année
a ce moment vous aurez le calendrier de l'année désirée (si celle ci est superieure a 2004)

Source / Exemple :


alias calendrier { 
  if (!$1) { drawcld 2004 | drawcld 2005 | echo -a pour avoir d'autre année tapez : /calendrier année } 
  elseif ($1 isnum ) && ( $1 >= 2004 ) { drawcld $1 }
  else { echo -a erreur de spécification pour l'année, vous devez spécifier un nombre supérieur a 2003. }
}

alias drawmoi { 
  var %bi = $iif( $calc($1 /4) = $int($calc($1 /4)) ,$int($calc(($1 -2004)/4)),$int($calc(1+ ($1 -2004)/4)) ),%no = $calc($1 -2004 - %bi),%total = $calc(%bi *366 + %no *365),%itr = 1
  if ($calc($1 /4) = $int($calc($1 /4))) { var %moi = 31,29,31,30,31,30,31,31,30,31,30,31 }
  else { var %moi = 31,28,31,30,31,30,31,31,30,31,30,31 }
  while ( %itr < $2 ) { %total = $calc(%total + $gettok(%moi,%itr,44)) | inc %itr }
  var %itr = 1,%jour = Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche,%c = 4,%t = $calc(%total - 7* $int($calc(%total /7)))
  while ( %itr <= %t ) { if ( %c = 8 ) { %c = 1 } | inc %c | inc %itr }
  var %itr = 1,%fenetre = $+(@,$1,-,$2),%j = 25
  window -hkp %fenetre 0 0 291 153
  while ( %itr <= $gettok(%moi,$2,44) ) {
    if ( %c = 8 ) { %c = 1 }
    drawtext %fenetre 1 arial 9 $calc(40* (%c -1) +5) %j %itr
    if ( $calc(%itr /7) = $int($calc(%itr /7)) ) { inc %j 20 }
    inc %c
    inc %itr
  }
  var %i = 1,%j = 0
  while ($gettok(%jour,%i,44)) { 
    while ( %j <= 140 ) { drawline %fenetre 1 0 0 %j 280 %j | inc %j 20 }
    drawtext %fenetre 1 arial 9 $calc((%i -1) * 40 +2) 5 $gettok(%jour,%i,44)
    drawline %fenetre 1 0 $calc(%i *40) 0 $calc(%i *40) 140
    inc %i
  }
}

alias drawtab { 
  var %itr = 1
  if (!$window($1)) { halt }
  while ($gettok($4-,%itr,32)) {
    drawtext $1 1 arial 9 $calc( (%itr -1) * $2 +4) 3 $ifmatch
    drawline $1 1 0 $calc(%itr * $2) 0 $calc(%itr * $2) $3
    inc %itr
  }
  drawline $1 1 0 0 $3 $window($1).w $3
}

alias drawcld { window -ap $+(@Calendrier-,$1) -1 -1 293 183 | drawtab $+(@Calendrier-,$1) 23.5 15 1 2 3 4 5 6 7 8 9 10 11 12 }

menu @Calendrier-* { 
  sclick :{ 
    var %itr = 0,%c = 1,%p = 0,%window = $active,%date = $gettok(%window,2,45),%moi = Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Aout,Septembre,Octobre,Novembre,Décembre
    while ( %itr <= $window(%window).w ) {
      if ($inrect($mouse.x,$mouse.y,%itr,0,24,15)) { inc %p | goto end }
      inc %itr 23.5
      inc %c
    }
    :end
    if ( %p = 0 ) { halt }
    drawline %window 1 0 0 15 $window(%window).w 15
    drawline %window 0 0 %itr 15 $calc(%itr +24) 15
    drawrect -f %window 0 1 0 18 300 11
    drawtext %window 1 arial 9 0 18 $gettok(%moi,%c,44) %date
    if (!$window($+(@,%date,-,%c))) { drawmoi %date %c }
    drawcopy $+(@,%date,-,%c) 0 0 291 125 %window 2 30
  }
  Nouvelle Année : { 
    :c
    var %a = $$?="Entrer une année s'il vous plait"
    if ( %a < 2004 ) { Echo -a [Calendrier] Année invalide | goto c }
    drawcld %a
  }
}

on *:close:@Calendrier-*:{ var %window = $active,%date = $gettok(%window,2,45),%itr = 1 | while ( %itr <= 12 ) { window -c $+(@,%date,-,%itr) | inc %itr } }

Conclusion :


Ce code possede une limite, il ne va pas dans le passé, aussi une fois que la fenetre c'est lancé clicker sur les numéros de 1 a 12 pour voir le calendrier proprement dit.

J'ai essayé de copier tres sommairement des tabs mais l'effet est la.
Graphiquement c'est tres simple mais c'est rapide ça ne bug et ça fonctionne pour toutes les années avec la meme vitesse.

Je n'ai pas prevu de mise a jour. Tout va dépendre de vos appréciations.

Vu la simplicité du design je ne met pas de capture vous verez de vous meme :)

c'est un code rédigé a l'occasion d'un defi sur mircstudio.tk
(site de Remi34 merci au passage :) )

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1052
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
30 novembre 2009
2
tu a du en ch*** pour les années bissextiles
Messages postés
244
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
25 juin 2005

c'est celui que tu as fait pr notre defi ?

Sinon il est cool
10/10
Messages postés
708
Date d'inscription
lundi 15 juillet 2002
Statut
Membre
Dernière intervention
17 mars 2005

je sais d'ou viens l'erreur, c'est la } de la derniere ligne qui manque. Sinon mettre un commentaire a un jour précis ça ne devrait pas etre trop compliqué a faire c'est juste que je voulais faire un calendrier pas un agenda :D
Messages postés
2087
Date d'inscription
jeudi 12 décembre 2002
Statut
Modérateur
Dernière intervention
30 janvier 2011
8
Terrible ! Graphiquement un peu triste (blanc et noir) mais vraiment bien réalisé.
Messages postés
654
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
10 février 2009
1
J'ai pas testé mais il manque un screen ...
Afficher les 6 commentaires

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.