xenocara/app/xlockmore/configure.tcl
2006-11-26 11:07:42 +00:00

428 lines
12 KiB
Tcl

#!/bin/sh
#charles vidal 1998 <cvidal@ivsweb.com>
# Thu Jul 30 06:21:57 MET DST 1998
#Projet Wizard in french Assistant
#http://www.chez.com/vidalc/assist/
#Sun Jul 4 01:35:05 MET DST 1999
# Add filevents find in setup.tcl of the xap ( X Application Panel )
# thank's to rasca, berlin 1999
#
# Sat Jul 29 20:18:28 JST 2000
# Fix font dialog and button action.
# Add I18N system
# By: YOKOTA Hiroshi <yokota@netlab.is.tsukuba.ac.jp>
#
# the next line restart wish \
exec wish "$0" "$@"
# Setup I18N system
set auto_path [linsert $auto_path end .]
set_catalogue [set_language]
set titleassist [_ "Wizard configure"]
wm title . $titleassist
# Declaration des variables globales
set nbwidget 0
# number of the current screen
set nb_ecran 0
set lang " "
proc cont {w input} {
if [eof $input] {
close $input
} else {
gets $input line
$w insert end "$line\n"
$w see end
}
}
proc read_pipe { command w } {
$w delete 1.0 end
$w insert end "$command\n"
set fileid [open "|$command" r]
fileevent $fileid readable "cont $w $fileid"
}
proc action { } {
global bitmapdir pixmapdir
global incdir libdir
global soundprog
global wgcc wmotif weditres wpurify wxpm wopengl wmesa wdtsaver wdpms
global esyslog emulroot emuluser eunstable
global nb_ecran nbtotalecran
global lang
if { $nb_ecran == [expr $nbtotalecran -1 ]} {
# Press "configure" button
set commandline "./configure"
append commandline $wgcc $wpurify $wmotif $weditres $wxpm $wopengl $wmesa $wdtsaver \
$esyslog $emuluser $emulroot $eunstable
if {$bitmapdir!=""} { append commandline " --enable-bitmapdir=$bitmapdir" }
if {$pixmapdir!=""} { append commandline " --enable-pixmapdir=$pixmapdir" }
if {$incdir!=""} { append commandline " --x-includes=$incdir" }
if {$libdir!=""} { append commandline " --x-libraries=$libdir" }
if {$soundprog!=""} { append commandline " --enable-def-play=$soundprog" }
append commandline " $lang"
if { [getyesno [_ "Do you really want to launch configure?"]] == "yes" } {
puts $commandline
pack forget .f$nb_ecran
frame .fconf
button .f.make -text [_ "Make"] -command {
set commandline "make"
read_pipe $commandline .fconf.t
}
button .f.install -text [_ "Make Install"] -command {
set commandline "make install"
read_pipe $commandline .fconf.t
}
button .f.exit -text [_ "Exit"] -command exit
scrollbar .fconf.s -orient vertical -command {.fconf.t yview}
text .fconf.t -yscrollcommand {.fconf.s set} \
-wrap word -width 50 -height 10 \
-setgrid 1
pack .fconf.s -side right -fill y
pack .fconf.t -expand yes -side right -fill both
pack .fconf -side top -expand yes -fill both
pack .f.make .f.install .f.exit -side left
pack forget .f.b1 .f.b2 .f.b3
update
read_pipe $commandline .fconf.t
}
} else {
# Press "abort" button
exit
}
}
# get a dialog yes or no
proc getyesno { text } {
return [ tk_messageBox -parent . -title [_ "Launch Configure"] -type yesno \
-icon warning \
-message $text ]
}
set tmpfnt ""
# Declaration des variables globales
set nbwidget 0
# numero de l'ecran courant
set nb_ecran 0
# open font dialog
proc openfont { var } {
upvar $var toto
global tmpfnt
set w .font
toplevel $w
wm title $w [_ "Font Options"]
frame $w.f
label $w.f.msg0 -text [_ "Font Options"]
listbox $w.f.names -yscrollcommand "$w.f.scroll set" \
-xscrollcommand "$w.f.scroll2 set" -setgrid 1 \
-exportselection false
bind $w.f.names <Double-1> "fontselect_action $w"
scrollbar $w.f.scroll -orient vertical -command "$w.f.names yview" \
-relief sunken -borderwidth 2
scrollbar $w.f.scroll2 -orient horizontal -command "$w.f.names xview" \
-relief sunken -borderwidth 2
label $w.f.test -text [_ "ABCDEFGHIJKabedfghijkmnopq12345"]
set fd [open "|xlsfonts" r]
while {[gets $fd line]>=0} {
$w.f.names insert end $line
}
close $fd
grid rowconfigure $w 0 -weight 100
grid columnconfigure $w 0 -weight 100
grid $w.f -column 0 -row 0 -sticky nsew
grid $w.f.msg0 -column 0 -row 0 -sticky ew
grid $w.f.names -column 0 -row 1 -sticky nsew
grid $w.f.scroll -column 1 -row 1 -sticky ns
grid $w.f.scroll2 -column 0 -row 2 -sticky ew
grid $w.f.test -column 0 -row 3 -sticky ew
grid rowconfigure $w.f 1 -weight 100
grid columnconfigure $w.f 0 -weight 100
frame $w.f2
button $w.f2.cancel -text [_ "Cancel"] -command "destroy $w"
button $w.f2.ok -text [_ "OK"] -command "set $var \$tmpfnt; destroy $w"
grid $w.f2 -column 0 -row 1
pack $w.f2.ok $w.f2.cancel -side left
}
proc fontselect_action {w} {
global tmpfnt
set fname [$w.f.names get [$w.f.names curselection]]
$w.f.test configure -font $fname
set tmpfnt $fname
}
# open color dialog
proc opencolorsel {titre var wf} {
upvar $var toto
set toto [tk_chooseColor -title $titre]
$wf.label configure -foreground $toto
}
# open file dialog
proc openfilesel { var } {
upvar $var toto
set toto [ tk_getOpenFile -parent .]
}
# Configure button state for "previous" button and "next" button
proc state_configure {} {
global nbtotalecran nb_ecran
if {$nb_ecran != 0} {
.f.b1 configure -state active
} else {
.f.b1 configure -state disabled
}
if {$nb_ecran != [expr $nbtotalecran - 1]} {
.f.b2 configure -state active
} else {
.f.b2 configure -state disabled
}
}
# Callback pour revenir a l'ecran precedent
proc prec_ecran { } {
global nbtotalecran nb_ecran
set tmp [expr $nb_ecran - 1]
if { $tmp >= 0} {
pack forget .f$nb_ecran
set nb_ecran [expr $nb_ecran - 1]
pack .f$nb_ecran
}
state_configure
if { $nb_ecran != [expr $nbtotalecran - 1 ]} {
.f.b3 configure -text [_ "Abort"]
}
}
# Callback pour aller a l'ecran suivant
proc next_ecran { } {
global nb_ecran nbtotalecran
set tmp [expr $nb_ecran + 1]
if { $tmp < $nbtotalecran} {
pack forget .f$nb_ecran
set nb_ecran [expr $nb_ecran + 1]
pack .f$nb_ecran
}
state_configure
if { $nb_ecran == [expr $nbtotalecran - 1 ]} {
.f.b3 configure -text [_ "Configure"]
}
if { $nb_ecran != [expr $nbtotalecran - 1 ]} {
.f.b3 configure -text [_ "Abort"]
}
}
# Creation du label titre et du texte explicatif
# Argument n:numero de l'ecran title:titre desc description
proc creationscreennb { n title desc icon} {
set currentarg 0
frame .f$n -height 10 -width 10
image create bitmap image$n -file bitmaps/$icon
label .f$n.lt$n -text [_ $title] -font [_ -Adobe-Courier-Bold-R-Normal-*-140-*]
label .f$n.li$n -image image$n
pack .f$n.lt$n .f$n.li$n
frame .f$n.fdesc
message .f$n.mesg -text [_ $desc] -width 25c
pack .f$n.mesg -fill x
pack .f$n.fdesc
}
# Creation de deux label + entry avec variable texte
# Argument n:numero de l'ecran label1:label devant texte vtext1:variable text
# De meme pour les xxxx2
proc creationentry { n nbf text variable value} {
frame .f$n.fr$nbf
label .f$n.fr$nbf.lab1 -text [_ $text]
entry .f$n.fr$nbf.e1 -textvariable $variable
.f$n.fr$nbf.e1 insert 0 $value
pack .f$n.fr$nbf
pack .f$n.fr$nbf.e1 -side right
pack .f$n.fr$nbf.lab1 -side left
}
proc mkecran { n args } {
global nbwidget
set nbf 0
set w .f$n
foreach i $args {
switch -regexp [lindex $i 0] {
LIST {
listbox $w.list$nbwidget
pack $w.list$nbwidget
}
ENTRY {
creationentry $n $nbwidget [lindex $i 1] [lindex $i 2] [lindex $i 3]
}
LABEL {
label $w.label$nbwidget -text [_ [lindex $i 1]]
pack $w.label$nbwidget
}
CHECK {
checkbutton $w.check$nbwidget \
-text [_ [lindex $i 1]] \
-variable [lindex $i 2] \
-onvalue [lindex $i 3] \
-offvalue [lindex $i 4]
pack $w.check$nbwidget
}
RADIO {
frame $w.fr$nbwidget
image create photo [lindex $i 4] -file [lindex $i 5]
label $w.fr$nbwidget.labrad -image [lindex $i 4]
radiobutton $w.fr$nbwidget.radio$nbwidget \
-text [_ [lindex $i 1]] \
-variable [lindex $i 2] \
-value [lindex $i 3]
pack $w.fr$nbwidget.labrad $w.fr$nbwidget.radio$nbwidget -side left
pack $w.fr$nbwidget
}
BUTTON {
button $w.button$nbwidget -text [_ [lindex $i 1]]
pack $w.button$nbwidget
}
SCALE {
scale $w.scale$nbwidget -from [lindex $i 1] -to [lindex $i 2] -orient horizontal
pack $w.scale$nbwidget
}
FILE {
frame $w.frame$nbwidget
set wf $w.frame$nbwidget
label $wf.label -text [_ [lindex $i 1]]
entry $wf.entry -textvariable [lindex $i 2]
$wf.entry insert 0 [lindex $i 3]
button $wf.button -text [_ "File"] -command "openfilesel [lindex $i 2]"
pack $wf
pack $wf.label $wf.entry $wf.button -side left
}
COLOR {
frame $w.frame$nbwidget
set wf $w.frame$nbwidget
if { [lindex $i 4] !="" } {
label $wf.label -text [_ [lindex $i 1]] -foreground [lindex $i 4]
} else {
label $wf.label -text [_ [lindex $i 1]]
}
entry $wf.entry -textvariable [lindex $i 2]
$wf.entry insert 0 [lindex $i 4]
button $wf.button -text [_ "Color"] -command "opencolorsel [lindex $i 3] [lindex $i 2] $wf"
pack $wf
pack $wf.label $wf.entry $wf.button -side left
}
FONT {
frame $w.frame$nbwidget
set wf $w.frame$nbwidget
label $wf.label -text [_ [lindex $i 1]]
entry $wf.entry -textvariable [lindex $i 2]
$wf.entry insert 0 [lindex $i 3]
button $wf.button -text [_ "Font"] -command "openfont [lindex $i 2]"
pack $wf
pack $wf.label $wf.entry $wf.button -side left
}
}
set nbwidget [expr $nbwidget + 1]
}
}
#-----------------------------------------------------------------------------
# number total of screens
set nbtotalecran 0
creationscreennb 0 "wizard configure xlockmore" "This should help you to build xlockmore" m-xlock.xbm
mkecran 0 \
{CHECK "without gcc " wgcc " --without-gcc" "" }\
{CHECK "with-purify " wpurify " --with-purify" "" }\
{CHECK "without motif " wmotif " --without-motif" ""}\
{CHECK "without editres" weditres " --without-editres" ""}\
{CHECK "without xpm " wxpm " --without-xpm" ""}\
{CHECK "without opengl " wopengl " --without-opengl" "" }\
{CHECK "without mesa " wmesa " --without-mesa" "" }\
{CHECK "without dtsaver" wdtsaver " --without-dtsaver" "" }\
{CHECK "without dpms " wdpms " --without-dpms" "" }\
{ }
incr nbtotalecran
creationscreennb 1 "Wizard configure image path" "please enter the image path" m-xlock.xbm
mkecran 1 \
{ENTRY "Bitmap dir" bitmapdir }\
{ENTRY "Pixmaps dir" pixmapdir }\
{ENTRY "sound player program" soundprog }\
{CHECK "enable syslog logging " esyslog " --enable-syslog" "" }\
{CHECK "enable multiple users " emuluser " --enable-multiple-user" "" }\
{CHECK "enable multiple root users " emulroot " --enable-multiple-root" "" }\
{CHECK "enable unstable " eunstable " --enable-unstable" "" }\
{ }
incr nbtotalecran
creationscreennb 2 "Wizard configure include and library path" "Please enter the path" m-x11.xbm
mkecran 2 \
{ENTRY "path of X include " incdir }\
{ENTRY "path of X library " libdir }\
{ENTRY "user executables in " bindir }\
{ENTRY "system admin executables in" sbindir }\
{ENTRY "program executables in " libexecdir }\
{ENTRY "info documentation in " infodir }\
{ENTRY "man documentation in " mandir }\
{ENTRY "find the sources in " srcdir }\
{ }
incr nbtotalecran
creationscreennb 3 "Wizard configure language" "Please choice your language " m-xlock.xbm
mkecran 3 \
{RADIO "Dutch " lang " --with-lang=nl" fdutch etc/gif/nlflag.gif}\
{RADIO "English " lang " " fenglish etc/gif/ukflag.gif}\
{RADIO "French " lang " --with-lang=fr" ffrench etc/gif/frflag.gif}\
{RADIO "German " lang " --with-lang=de" fgerman etc/gif/deflag.gif}\
{RADIO "Japanese" lang " --with-lang=jp" fjapanese etc/gif/jpflag.gif}\
{}
incr nbtotalecran
#-----------------------------
frame .f
button .f.b1 -text [_ "< Previous"] -command {prec_ecran} -state disabled
button .f.b2 -text [_ "Next >"] -command {next_ecran}
button .f.b3 -text [_ "Abort"] -command {action}
pack .f.b1 .f.b2 .f.b3 -padx 2m -pady 2m -side left
pack .f -side bottom
pack .f0
# end