Getcolor boite de dialogue couleur

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 748 fois - Téléchargée 27 fois

Contenu du snippet

Le fonction prends une couleur en parametre, et retourne une couleur

- a copier dans la section remote.
- Utilisation : %NewColor = $getColor( %OldColor ) Renvoie un code CtrlK text , fond CtrlB ctrlU.

- Demonstration d'une Boite de dialogue qui retourne une valeur.

Source / Exemple :


;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Fonction GetColor
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
alias getColor {
  /set %GetColor.Color $$1
  /return  $$dialog( DialColor, TabColor, -2  )
}

dialog TabColor {
  title "Couleur"
  size -1 -1 294 140

  box "",201,4 92 286 44
  button "&Valider",001,32 106 74 24,ok,default
  button "&Annuler",002,110 106 74 24,cancel
  button "&Aide",003,188 106 74 24
  edit , 010,0 140 100 24,result

  box "Ecriture",202,4 4 140 44
  combo 101,12 20 124 100,drop
  box "Fond",203,4 48 140 44
  combo 102,12 64 124 100,drop
  box "Options",204,150 4 140 44
  check "&Gras",103,158 24 62 14 %GetColor.Color.g
  check "&Souligné",104,226 24 62 14 %GetColor.Color.s
  box "",205,150 48 140 44
  button "&Tester",105,158 62 124 24
}

on *:dialog:DialColor:init:00:{
  /did -r DialColor 101
  /did -i DialColor 101 1 Normal
  /did -i DialColor 101 2 Blanc
  /did -i DialColor 101 3 Noir
  /did -i DialColor 101 4 Bleu
  /did -i DialColor 101 5 Vert
  /did -i DialColor 101 6 Rouge pâle
  /did -i DialColor 101 7 Brun
  /did -i DialColor 101 8 Mauve
  /did -i DialColor 101 9 Orange
  /did -i DialColor 101 10 Jaune
  /did -i DialColor 101 11 Vert pâle
  /did -i DialColor 101 12 Cyan
  /did -i DialColor 101 13 Cyan pâle
  /did -i DialColor 101 14 Bleu pâle
  /did -i DialColor 101 15 Rose
  /did -i DialColor 101 16 Gris
  /did -i DialColor 101 17 Gris pâle
  /did -r DialColor 102
  /did -i DialColor 102 1 Normal
  /did -i DialColor 102 2 Blanc
  /did -i DialColor 102 3 Noir
  /did -i DialColor 102 4 Bleu
  /did -i DialColor 102 5 Vert
  /did -i DialColor 102 6 Rouge pâle
  /did -i DialColor 102 7 Brun
  /did -i DialColor 102 8 Mauve
  /did -i DialColor 102 9 Orange
  /did -i DialColor 102 10 Jaune
  /did -i DialColor 102 11 Vert pâle
  /did -i DialColor 102 12 Cyan
  /did -i DialColor 102 13 Cyan pâle
  /did -i DialColor 102 14 Bleu pâle
  /did -i DialColor 102 15 Rose
  /did -i DialColor 102 16 Gris
  /did -i DialColor 102 17 Gris pâle
  if ( %GetColor.Color == $null  ) {
    /did -c DialColor 101 1
    /did -c DialColor 102 1
    /did -u DialColor 103
    /did -u DialColor 104
  }
  else {
    ; Ctrl K et virgule
    if ((  isin %GetColor.Color  ) && ( $chr( 44 ) isin %GetColor.Color )) {
      /var %GetColor.Brut $remove( %GetColor.Color, ,,  )
      /var %pos $pos( %GetColor.Brut, $chr( 44 ),1  )
      ;      /echo -s %GetColor.Brut - %pos - $right( %GetColor.Brut, $calc( $len(%GetColor.Brut) - %pos  ) )
      /did -c DialColor 101 $calc( $left( %GetColor.Brut, $calc( %pos - 1 )) + 2  )
      /did -c DialColor 102 $calc( $right( %GetColor.Brut, $calc( $len(%GetColor.Brut) - %pos  ) ) + 2 )

    }
    ;ctrl k
    else if (  isin %GetColor.Color  ) {
      /did -c DialColor 101 $calc( $remove( %GetColor.Color,,,  ) + 2 )
      /did -c DialColor 102 1
    }
    else {
      did -c DialColor 101 1
    }
    ; Ctrl g gras
    if (  isin %GetColor.Color  ) { did -c DialColor 103 }
    else { did -u DialColor 103 }
    ; Ctrl u souligné
    if (  isin %GetColor.Color  ) { did -c DialColor 104 }
    else { did -u DialColor 104 }
  }
  if ( $did( DialColor,101 ).sel == 1 ) { did -bu DialColor 102 1 }
  else { did -e DialColor 102 }
}

on *:dialog:DialColor:sclick:101:{
  ; Si pas d ecriture, pas de fond
  if ( $did( 101 ).sel == 1 ) {
    /did -bu DialColor 102 1
  }
  else {
    /did -e DialColor 102
  }
}

; Test ecriture DialColor
on *:dialog:DialColor:sclick:105: {
  /echo $Color( info2) -a $did( 10 ).text $+ [Test d'écriture]
}

; resultat ...
on *:dialog:DialColor:*:*: {
  /did -ra DialColor 010 $iif( $did( 101 ).sel != 1,  $+ $calc( $did( 101 ).sel - 2 )) $+ $iif( $did( 102 ).sel != 1, $chr( 44 ) $+ $calc( $did( 102 ).sel - 2 )) $+ $iif( $did( 103 ).state,  ) $+ $iif( $did( 104 ).state,  )
}

Conclusion :


- 1° Ce n'est pas la premiere fois que vous voyez une Dlg pour la couleur.
- 2° Ce n'est pas la premiere fois que vous voyez une fonction de couleur.
- 3°
Je vous evite donc de commenté betement mon source et vous invite a etre un peu positif dans vos commentaires.
- 4° J'utilise une boite de dialogue qui renvoie une valeur grace a : edit , 010,0 140 100 24,result. et l'event : on *:dialog:DialColor:*:*: {
/did -ra DialColor 010 $iif( $did( 101 ).sel != 1,  $+ $calc( $did( 101 ).sel - 2 )) $+ $iif( $did( 102 ).sel != 1, $chr( 44 ) $+ $calc( $did( 102 ).sel - 2 )) $+ $iif( $did( 103 ).state,  ) $+ $iif( $did( 104 ).state,  )
} Ca peut servir de didacticiel.

A voir également

Ajouter un commentaire

Commentaires

cs_Kolibot
Messages postés
817
Date d'inscription
mercredi 25 juin 2003
Statut
Membre
Dernière intervention
19 avril 2004
-
Bon l'intéret honnêtement je l'ai toujours pas compris désolé... Quand au script... Oula... point de vue optimisation j'ai jamais rien vu de tel
Un exemple :
/did -r DialColor 101
/did -i DialColor 101 1 Normal
/did -i DialColor 101 2 Blanc
/did -i DialColor 101 3 Noir
/did -i DialColor 101 4 Bleu
/did -i DialColor 101 5 Vert
/did -i DialColor 101 6 Rouge pâle
/did -i DialColor 101 7 Brun
/did -i DialColor 101 8 Mauve
/did -i DialColor 101 9 Orange
/did -i DialColor 101 10 Jaune
/did -i DialColor 101 11 Vert pâle
/did -i DialColor 101 12 Cyan
/did -i DialColor 101 13 Cyan pâle
/did -i DialColor 101 14 Bleu pâle
/did -i DialColor 101 15 Rose
/did -i DialColor 101 16 Gris
/did -i DialColor 101 17 Gris pâle
/did -r DialColor 102
/did -i DialColor 102 1 Normal
/did -i DialColor 102 2 Blanc
/did -i DialColor 102 3 Noir
/did -i DialColor 102 4 Bleu
/did -i DialColor 102 5 Vert
/did -i DialColor 102 6 Rouge pâle
/did -i DialColor 102 7 Brun
/did -i DialColor 102 8 Mauve
/did -i DialColor 102 9 Orange
/did -i DialColor 102 10 Jaune
/did -i DialColor 102 11 Vert pâle
/did -i DialColor 102 12 Cyan
/did -i DialColor 102 13 Cyan pâle
/did -i DialColor 102 14 Bleu pâle
/did -i DialColor 102 15 Rose
/did -i DialColor 102 16 Gris
/did -i DialColor 102 17 Gris pâle

Que je résume à ça :

did -r $dname 101
did -r $dname 102
%c = 101
%b = Normal,Blanc,Noir,Bleu,Vert,Rouge pâle,Brun,Mauve,Orange,Jaune,Vert pâle,Cyan,Cyan pâle,Bleu pâle,Rose,Gris,Gris pâle
while %c !102 { %a 1 | while %a != 17 { did -a DialColor %c %a $gettok(%b,%a,44) | inc %a } | inc %c }

Et puis il est bizarre ton script...
Ya pleins de parties pas très très claires, tu t'embrouilles avec ton dialog, après sa lecture j'étais :
Je te mets : 4/10 car j'estime que tu t'es vraiment pas foulé au niveau de l'optimisation et que tu as beau essayer de rendre certaines choses plus explicites, croit moi, tu as encore beaucoup d'effort à faire.
nestor_chat
Messages postés
19
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
20 janvier 2004
-
relit ton code avant de critiquer ...
- le but d un code c est pas de tenir en une ligne mais de marcher. et d etre rapide.
en terme d'action tu fait 32 fois
- 1 test sur les while
- 1 gettok
- 1 inc
soit 96 actions a la place de 32....pas tres rapide au niveau de l interpreteur.

de plus ton code ne met a jour que la premiere Combo ... manque une remise a 1 quand la premiere combo est a 17. Tu devrais faire des efforts pour pas avoir l air bete quand tu commente les gens.
linkioto
Messages postés
14
Date d'inscription
samedi 19 avril 2003
Statut
Membre
Dernière intervention
2 septembre 2005
-
Disons que la source est marrant mais il reste des bugs, faut cliquer 2 fois sur annuler pour quitter la boite de dialogue apres un /getcolor
De plus la fonction /getcolor a quelques problemes car elle ne retourne pas la bonne couleur d'écriture (elle retourne tj l'écriture ayant 2 nombres de moins que celle qui devrait être retourné, exemple j'écris en rouge (nb 4), elle retournera bleu (nb 2)).
Puis si on met Ctrl + K tout seul par exemple, normalement on devrait avoir 'écriture normale' dans le dialogue alors que ca n'est pas le cas.
Bonne continuation

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.