
Historique :
- 25/11/02 (diam) : création

contenu :

    Ce fichier et juste un brouillon de doc pour moi ! Il sera
    compléter; mais pour l'instant je me contente de copier-coller
    queques presse-papier au fur et a mesure 



########################################################################
Voici un exemple de création de menu personaliser pour stead

## mode_gvt_defineMenu_Templates - défini le menu Templates de matlab
# 
# 
proc mode_gvt_defineMenu_Templates {} {
    global stead
    
    ####################################################################
    # 
    set menubutton  .menu.template
    set m           .menu.template.m
    
    if {[winfo exists $menubutton]} {
        destroy $menubutton
    }
    # Création d'un bouton de menu (ce qu'on voit)
    menubutton $menubutton \
            -text Templates \
            -menu $m
    
    lappend stead(mode,gvt,deleteCmds) [list destroy  $menubutton]
    
    # On positionne ce bouton
    pack append .menu $menubutton left
  
    # Création d'un menu (ce qui ce déroule quand on clique sur le menubutton)
    set m [menu $m]
    # 
    ####################################################################


    $m add command \
            -label "Insérer un separateur \"***...\"" \
            -command {separator 1}
    
    $m add separator
                                    
    ######## DEBUT DE EN TEST ########
    
    # Cette commande déclanche l'insertion d'un alias préalablement déclarer
    $m add command \
            -label {bloc (TEST 1 : electricAlias-insert "proc2")} \
            -command {electricAlias-insert $stead(text) proc2}
    
    # Meme chose que précédement, mais la sélection éventuelle est récupérer 
    # et inséré au niveau du premier "stop"
    $m add command \
            -label {bloc (TEST 2 : electricAlias-wrap "proc2")} \
            -command {electricAlias-wrap proc2}
            
    # Cette commande déclanche une procédure permettant un traitement
    # arbitrairement compliqué, spécifier par une procédure utilisateur
    # Dans ce cas : elle a le meme effet que ci-dessus
    $m add command \
            -label {bloc (TEST 3 : mySpecialInsertionProc "proc2")} \
            -command {mySpecialInsertionProc proc2}
        
    ######## FIN DE EN TEST ########
    
    $m add cascade -label Alias -menu $m.alias
    menu $m.alias
    foreach alias [electricAlias-softNames] {
        set tmp [string index $alias 0]
        if {$tmp == [string toupper $tmp]} {
            $m.alias add command \
              -label $alias \
              -command "electricAlias-insert $stead(text) [te:no_interp $alias]"
        }
    }
}

## mySpecialInsertionProc - exemple de procédure spécifique d'insertion
#  
# 
# 
proc mySpecialInsertionProc {alias} {

    global EDITPREFS stead
    set w $stead(text)
   
    # On mémorise l'état de l'éditeur en vu d'un undo éventuel
    xtext_pushState
    
    # On cherche la colonne courante du point d'insertion
    set ins [$w index insert]         ;# retourne par exemple 53.6
    set lin [lindex [split $ins .] 0] ;# retourne la ligne courante : 53
    set col [lindex [split $ins .] 1] ;# retourne la colonne courante : 6
    
    # On place le point d'insertion en fin de la ligne courante
    $w mark set insert "insert lineend"
    
    # On recupere le texte de la ligne courante :
    set currentIndent [$w get "insert linestart" "insert lineend"]
    
    # Si la ligne courante contient autre chose que des espaces :
    # on commence une nouvelle ligne avec indentation :
    if {![regexp "^\[ \t\]*\$" $currentIndent]} {
         $w insert insert "\n[i]"
         set currentIndent [i]
    }   
    
    # on pourrait inserer n'importe quoi par un text_insert ...
    electricAlias-wrap $alias
  
}
########################################################################
