###########################################################################
#f case.tcl - conversuion minuscule/majuscule

package provide stead 2.0


## xtext_capitalise -- conertit la sélection en majuscule, minuscule
# 
# A FAIRE : SI PAS DE SELECTION : sélectionner mot precedent 
# 
# Extrait de lib/tcl8.3/word.tcl :
#    if {[string equal $tcl_platform(platform) "windows"]} {
#        # Windows style - any but a unicode space char
#        set tcl_wordchars "\\S"
#        set tcl_nonwordchars "\\s"
#    } else {
#        # Motif style - any unicode word char (number, letter, or underscore)
#        set tcl_wordchars "\\w"
#        set tcl_nonwordchars "\\W"
#    }
# 
proc xtext_capitalise { w args } {
    
    Parsarg_fullSpec opt {
        how  {
            -default  auto
            -regexp   {^auto|toupper|tolower|toinitial$}
            -label   "type de conversion à effectuer"
        }
    }
    if {[xtext_hasSel $w]} {
        set sel [xtext_getSel $w]
    } else {
        # sélectionner le mot englobant ou précédent l'insert
        xtext_select $w -word
        set sel [xtext_getSel $w]
    }                     
    # 1 - si le type est  "auto" il faut le déterminer exactement
    if {[string equal "auto" $opt(-how) ]} {
        
        if { [regexp -- {[a-z]} $sel] } {
            # Si la selection contient au moins une minuscule => toupper
            set  opt(-how) toupper
            
        } elseif { [regexp -- {[A-Z]} $sel] } {
            # Sinon si la selection contient au moins une majuscule => tolower
            set  opt(-how) tolower
        } else {
            # Pour l'instant, dans les autre cas on impose toupper
            set  opt(-how) toupper
        }
    }
    xtext_applyToSel $w [list string $opt(-how)]
}
# ./


