# fichier local.tcl    -*-tcl-*-
# 
# 
# Ce fichier contient des commandes succeptibles d'être adaptées
# à votre site
# 
# En particulier, la procédure "stead:localHook"
# Est TOUJOURS exécutée, vous pouvez y mettre des commandes 
# spécifiques pour une plateforme particuliere

package provide local 1.0


## stead:postLocalHook : post-traitement spécifique au site
# 
# Cette procédure est appelée à la fin du lancement de stead
# Elle peut contenir du code destiner à correger le comportement par
# défaut de stead pour une plateforme particulière
# (on peut abuser ici de la procédure "xtcl_platform")
# 
proc stead:postLocalHook {} {
    global stead
    switch -glob -- [xtcl_guessArch] {

        *machine=ppc*os=Linux*   -
        *machine=ppc*os=Darwin*  {
            
            # On peut ajouter ou remplacer un binding particulier
            bind $stead(text) <Alt-N>  {
                xtext_insert  $stead(text) ~
            }
            bind $stead(text) <Meta-N>  {
                xtext_insert  $stead(text) ~
            }
        }
    }
    
    # Alias statiques pour le dévelopeur (voir fichier macro_abbrev)
    # 
    stead:defineDevSalias
    
    # # Quelque bindind de test si administrateur de stead
    # if {$stead(superuser)} {
    #     bind Stead <F7> style_test 
    #     bind Stead <F8> {xtext_style $w remove}        
    # }
}


########################################################################
# 
# But : lancer demander à netscape d'ouvrir une URL
# -----
# Principe :
# ---------
# # On lance netscape dans cet environnement 
# 
#     exec netscape  -install  -geometry=+0+0 \
#                    -remote "OpenURL($@, new-window)" &
# 
# Modifications :
# ---------------
#    28/10/99 (diam@ensta.fr) création
#    15/03/00 (diam@ensta.fr) traitement des cas le la forme "www*"
#             en tant qu'URL et non pas fichier local
#    29/03/00 (diam@ensta.fr) rajout des mail du type
#             "mailto:diam@ensta.f"r  ainsi que "diam@ensta.fr"
#    29/05/00 (diam@ensta.fr) modif traitement sélection (en l'abscence 
#             de sélection)
#    26/07/01 (diam@ensta.fr) modif pout tk8 ou ultérieure 
#    19/03/02 (diam@ensta.fr) remplacement de netscape par mozilla
#             (facilement modifiable, mais ce n'est pas encore une préférence) 
# 
# 
proc Viewurl {{xuri ""} {verbose 0}} {

    # PROVISOIRE : pour le choix du browser => en faire une préférence
    global Viewurl
    # set Viewurl(browser) netscape
    set Viewurl(browser) mozilla


    # verif et completion de l'URL
    if {$verbose}  { puts "reçu :          xuri=$xuri"}
    
    if {![string match http://* $xuri]
             && ![string match https://* $xuri]
             && ![string match ftp://* $xuri]
             && ![string match file://* $xuri]
             && ![string match news:* $xuri]
             && ![string match mailto:* $xuri]
             && ![string match www* $xuri]
                } {
                
          # Version wish8.0
          if {[file pathtype $xuri] == "absolute"} {
              # nom de fichier absolu
              set xuri "file://$xuri"
          } elseif {[string match *@* $xuri] } {
              # c'est une adresse mail : on ajoute le préfixe "mailto:"
              set xuri "mailto:$xuri"
          } {
              # nom de fichier relatif
              set xuri "file://[pwd]/$xuri"
          }
    }
    
    if {$verbose}  { puts "ouverture de :  xuri=$xuri"}
    # # if [ catch { exec netscape -remote "openURL($xuri,new-window)" } tmp ] {
    # #     if { [ string first "not running on" $tmp ] != -1 } {
    # #         exec netscape $xuri &
    # #     }
    # # }
    if {[string equal ${::tcl_platform(os)}  Darwin]} {
        exec open $xuri
        return
    }
    
    if [ catch { exec $Viewurl(browser) \
                        -remote "openURL($xuri,new-window)" } tmp ] {
        # Si erreur avec netcape : "... not running on ..."
        # Si erreur avec mozilla : "No running window found."
        if { [ string first " running " $tmp ] != -1 } {
            exec $Viewurl(browser) $xuri &
        }
    }
}


proc Viewurl_Selected {} {
    
    if {[catch {selection get} sel]} {
        # Pas de sélection
        Viewurl .
    } {
        # Sélection non vide
        Viewurl $sel
    }

}
########################################################################
# 
# # Visualisation dees fichiers dvi pour latex EN TACHE DE FOND
# proc stead:viewDvi& fileName {
#     xdvi $fileName &
# }
# 
# # Visualisation dees fichiers postscript EN TACHE DE FOND
# proc stead:viewDvi& fileName {
#     ghostview $fileName &
# }
# 
# # Visualisation dees fichiers dvi pour latex EN AVANT PLAN
# proc stead:viewDvi fileName {
#     xdvi $fileName 
# }
# 
# # Visualisation dees fichiers postscript EN AVANT PLAN
# proc stead:viewDvi fileName {
#     ghostview $fileName 
# }
# ./
