Edit

IABSD.fr/xenocara/app/xlockmore/configure.tcl

Branch :

  • Show log

    Commit

  • Author : matthieu
    Date : 2006-11-26 11:07:42
    Hash : 110b2a92
    Message : Importing xlockmore 5.22

  • app/xlockmore/configure.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