# xtext_utils.tcl --
# 
# 
# Procédures complémentaires non indispenssables au fonctionnement
# normal du widget xtext.
# Le chargement de ce fichier peut ainsi etre différé jusqu'au
# moment du besoin réel.
# 
# 
package provide xtext 2.0


## xtext_grep - retourne une sélection de lignes du widget w
# 
# Si la patterne n'est pas précisée : retourne les métacommentaires
# 
# 
proc xtext_grep { w {rpat ""}} {

    global xtext

    # Si la patterne n'est pas préciser : on considére qu'on
    # veut extraire les métacommentaires
    # 
    if {[string equal $rpat ""]} {
        set rpat "^$xtext($w,metaPrefix)"        
    }

    # A FAIRE : refaire en utilisant la future procédure :
    #    xtext_get $w ?key value...?
    # 
    set result ""
    set lines [split [$w get 1.0 end] \n]
    foreach line  $lines  {
        if {[regexp $rpat $line]} {
            append result $line\n
        }
    } 
    return $result
}

## xtext_fontEnlarges - modifie la taille de la fonte du texte 
# 
# Création diam le 21/06/02
#    A refondre apres utilisation des fontes nommées (cmd "font")
# 
proc xtext_fontEnlarges {w {incrPoints 1} } {
    
    global xtext
    
    set font [$w cget -font]
    set fontName  [lindex $font 0]
    set fontSize  [lindex $font 1]
    set fontShape [lindex $font 2]
                               
    set font  [list $fontName [incr fontSize $incrPoints] $fontShape]
    $w configure -font $font
    set ::EDITPREFS(textfont) $font
}

## xtext_fontToggleWeight - modifie le poids de la fonte du texte 
# 
# w : nom du widget text
# weight : bold | normal | toggle
# 
# Création diam le 21/06/02
#    A refondre apres utilisation des fontes nommées (cmd "font")
# 
proc xtext_fontToggleWeight {w {weight "toggle"} } {
    
    global xtext
    
    set font [$w cget -font]
    set fontName  [lindex $font 0]
    set fontSize  [lindex $font 1]
    set fontStyle [lindex $font 2]
    
    
    # Vérification du parametr"e weight"
    if {![regexp -- {^bold|normal|toggle$} $weight]} {
        error "\nIncorrect value for weight param: should be :
                bold | normal | toggle\n"
    }
    
    
    # Test du style de fonte actuel 
    # 
    if {[string match "toggle" $weight]} {
        if {![regexp -- "bold" $fontStyle]} {
            set newFontStyle "bold"
        } else {
            set newFontStyle "normal"
        }
    } else {
        set newFontStyle $weight
    }
    
    set font [list $fontName $fontSize $newFontStyle]
    $w configure -font $font
    set ::EDITPREFS(textfont) $font
}

# ./


