Picwin clipboard et liste de caracteres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 490 fois - Téléchargée 26 fois

Contenu du snippet

J'en avais marre de voir des listes de caractère basiques, alors j'en ai fait une en picwin sous la forme d'un tableau.

Des qu'on click dans la fenetre le caractère qui correspond est mis en mémoire dans le buffer c/c. S'il y a bcp de ligne dans ce buffer , la sauvegarde ne se fait pas ( on se sait jamais ).

l'interet de ce code est la présentation de $cb et de /clipboard histoire qu'elles ne passent pas inaperçu.

le deuxième interet est la parti sclick du menu, qui montre que l'on peut gerer 255 rectangles avec une boucle rapide de 10 lignes. ( ça peut toujours servir )

Source / Exemple :


alias -l g { if ($1) { return $gettok($hget(c,cds),$1,46) } }
alias char.all {
  if ( $window(@char)) { clear @char }
  else { window -ap @char 0 0 605 371 }
  if (!$hget(c).size) { hmake c 10 }
  hadd -m c cds -4.-2.0.0.1
  var %itr = 1,%i = 0,%j = 0
  drawline @char 1 1 0 %j  600 %j
  while ( %itr <= 255 ) { 
    drawtext @char 1 arial 11 %i %j $+(%itr,=,$chr(%itr))
    if ( %i < 560 ) { inc %i 40 | drawline @char 1 1 $calc(%i -5) 0 $calc(%i -5) 340 }
    else { set %i 0 | inc %j 20 | drawline @char 1 1 0 $calc(%j -2)  600 $calc(%j -2) }
    inc %itr
  }
  drawline @char 1 1 594 0 594 340
}

menu @char { 
  mouse: { 
    var %j = 0,%itr = 1
    while ( %j < 340 ) { 
      var %i = 0
      while ( %i < 561 ) { 
        if ($inrect($mouse.x,$mouse.y,$calc(%i -5),$calc(%j -2),40,20)) { 
          if ($hget(c,cds) = $+($calc(%i -4),.,$calc(%j -1),.,%i,.,%j,.,%itr)) { goto end }
          drawreplace @char 0 2 $calc(%i -5) $calc(%j -2) 40 20
          drawtext @char 11 arial 11 %i %j $+(%itr,=,$chr(%itr))
          drawreplace @char 2 0 $g(1) $g(2) 39 19
          drawtext @char 1 arial 11 $g(3) $g(4) $+($g(5),=,$chr($g(5)))
          hadd -m c cds $+($calc(%i -4),.,$calc(%j -1),.,%i,.,%j,.,%itr)
          goto end
        }
        inc %i 40
        inc %itr
      }
      inc %j 20
    }
    :end
    titlebar @char Caractère n° $+ %itr <=> $chr(%itr) , Combinaison : alt+ $+($str(0,$calc(4- $len(%itr))),%itr) 
  }
  Caractère $g(5) $chr($g(5)) : echo -a [Char] $g(5) $chr($g(5))
  Enregistrer : {
    if (!$cb(3)) { clipboard $chr($g(5)) }
    else { var %i = 1 | while ($cb(%i)) { inc %i } | echo -a Pas de sauvegarde , il y a %i lignes dans votre buffer. }
  }
  Forcer l'enregistrement $chr($g(5)) : clipboard $chr($g(5))
}

on *:close:@char: { if ( $hget(c).size) { hfree c } }

Conclusion :


Ca peut ne pas plaire a tout le monde dans la mesure ou c'est une source "déja vue"
Par contre je ne me rapel pas avoir deja vu ce type de codage pour toutes les listes qui figurent ici.
Je n'ai pas rencontré de bug lors de la campagne de test.

Graphiquement ça pourrait etre plus beau , mais c'est pour cela que je la poste comme une astuce, j'estime la base bonne je laisse donc les developpements a ceux qui aimeront la source.

ajout d'un petit wall over et d'un popup.

A voir également

Ajouter un commentaire

Commentaires

cs_KiNdErMaXi
Messages postés
1052
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
30 novembre 2009
2
si je peux me permettre un commentaire
c'est trop gros a mon gout,

-c'est très dommage, tu pourrai utiliser le mouse pour faire un petit rectanglea coté avec la combinaison de touche et le n° chr au lieu de le mettre a coté, ca te rétrécicerai la win
-pourquoi ne pas non plus utiliser la /editbox afin de le mettre directement dans la barred 'écriture

voila désoler de poster ce msg un peu tard
bonne continuation
Kerrigan
Messages postés
708
Date d'inscription
lundi 15 juillet 2002
Statut
Membre
Dernière intervention
17 mars 2005

a la limite je pense que je vais mettre la version commenté dans un fichier zip

parce que les commentaire brouille le code sur la page du site, déja que c'est bien fouilli ...
cs_Seregon
Messages postés
126
Date d'inscription
mercredi 30 avril 2003
Statut
Membre
Dernière intervention
29 août 2004

pour moi ca prendra de l'intéret si t'y ajoute d'autres types de caracteres (unicodes, valeurs exa des caracteres ascii etc)
Pour plus d'infos => www.asciitable.com
Sinon le code est plutot bien réalisé, l'idée dla picwin est bonne.
Tu devrai commenter ton code histoire d'en faire un snippest instructif :)
cs_PaDa
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
3
ok je sais pas d'ou ca vient alors ... quand ma souris se déplace le rectangle bleu de sélection mets une ou deux secondes a aller sur la bonne case ... ptet je rame tout seul en tout cas ce genre de codes en picwin qui fonctionne ca donne envie de s'y mettre et ca :)
Kerrigan
Messages postés
708
Date d'inscription
lundi 15 juillet 2002
Statut
Membre
Dernière intervention
17 mars 2005

avant c'etait en variable ... une vrao horreur :) et en hashtable c'est vraiment très très rapide !!! lol

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.