From: cas Date: Wed, 3 Nov 1999 18:04:38 +0000 (+0000) Subject: Initial revision X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=1cf4eff566de3900b3cc63cfefbc4da3348d1ac6;p=occt-wok.git Initial revision --- diff --git a/src/WOKTclLib/wokPRM.tcl b/src/WOKTclLib/wokPRM.tcl new file mode 100755 index 0000000..2e1820b --- /dev/null +++ b/src/WOKTclLib/wokPRM.tcl @@ -0,0 +1,1492 @@ +;# +;# Cree une fenetre pour les parametres +;# +proc wokPRMAff { } { + set verrue [wokCWD readnocell] + if [wokinfo -x $verrue] { + if [wokPRM:Exists] { + wokPRM:Kill + } + wokPRM:Create $verrue + } else { + wokDialBox .wokcd {Unknown location} "Location $verrue is unknown" {} -1 OK + } + return +} +;# +;# cree le toplevel si il n'existe pas et init l'arbre , pop le toplevel sinon +;# +proc wokPRM:Create { location } { + global IWOK_GLOBALS + + if [info exists IWOK_GLOBALS(PRM,toplevel)] { + set w $IWOK_GLOBALS(PRM,toplevel) + if [winfo exists $w ] { + wm deiconify $w + raise $w + return 1 + } else { + return -1 + } + } + + set boldfnt [tix option get bold_font] + + set IWOK_GLOBALS(PRM,title) "Parameters ($location)" + set IWOK_GLOBALS(PRM,geometry) 1072x660 + set IWOK_GLOBALS(PRM,toplevel) .woktopl:params + set IWOK_GLOBALS(PRM,location) $location + + wokPRMInitDescriptionByClass $location + set IWOK_GLOBALS(PRM,Description) [tixDisplayStyle imagetext -font $boldfnt] + set IWOK_GLOBALS(PRM,DescriptionREAD) [tixDisplayStyle imagetext -fg orange -font $boldfnt] + set IWOK_GLOBALS(PRM,DescriptionFREAD) [tixDisplayStyle imagetext -fg orange] + + set w $IWOK_GLOBALS(PRM,toplevel) + + toplevel $w + wm title $w $IWOK_GLOBALS(PRM,title) + wm geometry $w $IWOK_GLOBALS(PRM,geometry) + + wokButton setw [list params $w] + + menubutton $w.file -menu $w.file.m -text File -underline 0 -takefocus 0 + menu $w.file.m + $w.file.m add command -label "Close " -underline 0 -command "wokPRM:Kill" + + menubutton $w.help -menu $w.help.m -text Help -underline 0 -takefocus 0 + menu $w.help.m + $w.help.m add command -label "Help" -underline 1 -command [list wokPRM:Help $w] + + set notes [tixNoteBook $w.notes -ipadx 5 -ipady 5] + + tixForm $w.file ; tixForm $w.help -right -2 + tixForm $notes -top $w.file -left 2 -right %99 -bottom %99 + + $notes add pag1 -createcmd "wokPRM:NOT wokPRM:ByClass $w $notes pag1" -label "By Class" \ + -raisecmd [list wokPRM:UPD $w] + $notes add pag2 -createcmd "wokPRM:NOT wokPRM:ByFile $w $notes pag2" -label "By file" \ + -raisecmd [list wokPRM:UPD $w] + $notes add pag3 -createcmd "wokPRM:NOT wokPRM:Modify $w $notes pag3" -label "Modify" \ + -raisecmd [list wokPRM:UPD $w] + + $notes.nbframe configure -backpagecolor grey51 + + return +} +;# +;# (((((((((( M O D I F Y )))))))))) +;# +proc wokPRM:wrkst { } { + global IWOK_GLOBALS + if { $IWOK_GLOBALS(PRM,Modify,wrkst,all) == 1 } { + foreach x [array names IWOK_GLOBALS PRM,Modify,wrkst,but,*] { + if { "$x" != "PRM,Modify,wrkst,but,all" } { + $IWOK_GLOBALS($x) select + } + } + } + return +} + +proc wokPRM:dbms { } { + global IWOK_GLOBALS + if { $IWOK_GLOBALS(PRM,Modify,dbms,all) == 1 } { + foreach x [array names IWOK_GLOBALS PRM,Modify,dbms,but,*] { + if { "$x" != "PRM,Modify,dbms,but,all" } { + $IWOK_GLOBALS($x) select + } + } + } + return +} + +proc wokPRM:Modify { adr nb page } { + global IWOK_GLOBALS + set w [$nb subwidget $page] + set fram [frame $w.top -relief sunken -bd 1] + pack $fram -expand yes -fill both -padx 1 -pady 1 + + tixLabelEntry $fram.nam -label "Parameter name :" -labelside left -options { + label.anchor w + entry.width 35 + } + + tixLabelEntry $fram.val -label "Current value :" -labelside left -options { + label.anchor w + entry.width 35 + } + + tixLabelEntry $fram.app -label "Append :" -labelside left -options { + label.anchor w + entry.width 35 + } + + tixLabelEntry $fram.fil -label " " -labelside left -options { + label.anchor w + entry.width 35 + entry.relief flat + } + + tixLabelFrame $fram.scope -label "Scope for modification:" + + set scp [$fram.scope subwidget frame] + + set ici [wokinfo -t [set x :$IWOK_GLOBALS(PRM,location)]] + if { "$ici" == "devunit" } { + radiobutton $scp.f -text [set loc [wokinfo -f $x]] \ + -var IWOK_GLOBALS(PRM,Modify,scope) -val [list [wokinfo -n $loc] [wokinfo -p AdmDir $loc]] + if { "$x" == "$loc" } { $scp.f select } + radiobutton $scp.s -text [set loc [wokinfo -s $x]] \ + -var IWOK_GLOBALS(PRM,Modify,scope) -val [list [wokinfo -n $loc] [wokinfo -p AdmDir $loc]] + if { "$x" == "$loc" } { $scp.s select } + radiobutton $scp.w -text [set loc [wokinfo -w $x]] \ + -var IWOK_GLOBALS(PRM,Modify,scope) -val [list [wokinfo -n $loc] [wokinfo -p AdmDir $loc]] + if { "$x" == "$loc" } { $scp.w select } + radiobutton $scp.u -text [set loc [wokinfo -u $x]] \ + -var IWOK_GLOBALS(PRM,Modify,scope) -val [list [wokinfo -n $loc] [wokinfo -p source:. $loc]] + if { "$x" == "$loc" } { $scp.u select } + pack $scp.f $scp.s $scp.w $scp.u -anchor w -padx 1m -pady 1m + } elseif { "$ici" == "workbench" } { + radiobutton $scp.f -text [set loc [wokinfo -f $x]] \ + -var IWOK_GLOBALS(PRM,Modify,scope) -val [list [wokinfo -n $loc] [wokinfo -p AdmDir $loc]] + if { "$x" == "$loc" } { $scp.f select } + radiobutton $scp.s -text [set loc [wokinfo -s $x]] \ + -var IWOK_GLOBALS(PRM,Modify,scope) -val [list [wokinfo -n $loc] [wokinfo -p AdmDir $loc]] + if { "$x" == "$loc" } { $scp.s select } + radiobutton $scp.w -text [set loc [wokinfo -w $x]] \ + -var IWOK_GLOBALS(PRM,Modify,scope) -val [list [wokinfo -n $loc] [wokinfo -p AdmDir $loc]] + if { "$x" == "$loc" } { $scp.w select } + label $scp.bid1 + pack $scp.f $scp.s $scp.w $scp.bid1 -anchor w -padx 1m -pady 1m + + } elseif { "$ici" == "workshop" } { + radiobutton $scp.f -text [set loc [wokinfo -f $x]] \ + -var IWOK_GLOBALS(PRM,Modify,scope) -val [list [wokinfo -n $loc] [wokinfo -p AdmDir $loc]] + if { "$x" == "$loc" } { $scp.f select } + radiobutton $scp.s -text [set loc [wokinfo -s $x]] \ + -var IWOK_GLOBALS(PRM,Modify,scope) -val [list [wokinfo -n $loc] [wokinfo -p AdmDir $loc]] + if { "$x" == "$loc" } { $scp.s select } + label $scp.bid1 ; label $scp.bid2 + pack $scp.f $scp.s $scp.bid1 $scp.bid2 -anchor w -padx 1m -pady 1m + } elseif { "$ici" == "factory" } { + + radiobutton $scp.f -text [set loc [wokinfo -f $x]] \ + -var IWOK_GLOBALS(PRM,Modify,scope) -val [list [wokinfo -n $loc] [wokinfo -p AdmDir $loc]] + if { "$x" == "$loc" } { $scp.f select } + label $scp.bid1 ; label $scp.bid2 ; label $scp.bid3 + pack $scp.f $scp.bid1 $scp.bid2 $scp.bid3 -anchor w -padx 1m -pady 2m + } elseif { "$ici" == "session" } { + set IWOK_GLOBALS(PRM,Modify,scope) [list : [pwd]] + } + + tixLabelFrame $fram.wrkst -label "Modify for stations:" + set wrkst [$fram.wrkst subwidget frame] + + set IWOK_GLOBALS(PRM,Modify,wrkst,but,all) \ + [checkbutton ${wrkst}.all -text all -var IWOK_GLOBALS(PRM,Modify,wrkst,all) -comm wokPRM:wrkst] + tixForm $IWOK_GLOBALS(PRM,Modify,wrkst,but,all) -top 2 + + set prev {} ; set curr {} ;set curwrkst [wokprofile -s] + foreach x [list sun sil ao1 hp wnt lin] { + set curr [string tolower ${wrkst}.${x}] + + checkbutton $curr -text $x -variable IWOK_GLOBALS(PRM,Modify,wrkst,$x) -command wokPRM:wrkst + set IWOK_GLOBALS(PRM,Modify,wrkst,but,$x) $curr + if { "$x" == "$curwrkst" } { + $curr select + } + + if { $prev == {} } { + tixForm $curr -top $IWOK_GLOBALS(PRM,Modify,wrkst,but,all) + } else { + tixForm $curr -top $IWOK_GLOBALS(PRM,Modify,wrkst,but,all) -left $prev + } + set prev $curr + } + + tixLabelFrame $fram.dbms -label "DBMs: " + set dbms [$fram.dbms subwidget frame] + + set IWOK_GLOBALS(PRM,Modify,dbms,but,all) \ + [checkbutton ${dbms}.all -text all -var IWOK_GLOBALS(PRM,Modify,dbms,all) -comm wokPRM:dbms] + tixForm $IWOK_GLOBALS(PRM,Modify,dbms,but,all) -top 2 + + set prev {} ; set curr {} ; set curdbms [wokprofile -b] + foreach x [list DFLT OBJS] { + set curr [string tolower ${dbms}.${x}] + checkbutton $curr -text $x -variable IWOK_GLOBALS(PRM,Modify,dbms,$x) -command wokPRM:dbms + set IWOK_GLOBALS(PRM,Modify,dbms,but,$x) $curr + if { "$x" == "$curdbms" } { + $curr select + } + if { $prev == {} } { + tixForm $curr -top $IWOK_GLOBALS(PRM,Modify,dbms,but,all) + } else { + tixForm $curr -top $IWOK_GLOBALS(PRM,Modify,dbms,but,all) -left $prev + } + set prev $curr + } + + checkbutton $fram.shot -text "One shot" -variable IWOK_GLOBALS(PRM,Modify,oneshot) + checkbutton $fram.verb -text "Verbose " -variable IWOK_GLOBALS(PRM,Modify,verbose) + + tixScrolledListBox $fram.cmp -command wokPRM:Selected + + tixButtonBox $fram.but -orientation horizontal -padx 0 -pady 0 + + tixScrolledText $fram.txt ; $fram.txt subwidget text config -font $IWOK_GLOBALS(font) + + tixForm $fram.nam -top 10m -left 1m -right %75 + tixForm $fram.val -top 25m -left 1m -right %75 + tixForm $fram.app -top 40m -left 1m -right %75 + + tixForm $fram.cmp -top 10m -left $fram.nam -right %99 -bottom %30 + tixForm $fram.fil -left 2 -right %99 -bottom %99 + tixForm $fram.txt -top $fram.cmp -right %99 -bottom $fram.fil + + tixForm $fram.scope -top $fram.cmp -left 1m -right $fram.txt + tixForm $fram.wrkst -top $fram.scope -left 1m -right $fram.txt + tixForm $fram.dbms -top $fram.wrkst -left 1m + tixForm $fram.shot -left $fram.dbms -top $fram.wrkst -right $fram.txt + tixForm $fram.verb -left $fram.dbms -top $fram.shot -right $fram.txt + tixForm $fram.but -top $fram.dbms -left 1m -right $fram.txt -bottom $fram.fil + + [set IWOK_GLOBALS(PRM,Modify,labnam) [$fram.nam subwidget label]] config -font $IWOK_GLOBALS(font) + set IWOK_GLOBALS(PRM,Modify,entnam) [$fram.nam subwidget entry] + $IWOK_GLOBALS(PRM,Modify,entnam) config -text IWOK_GLOBALS(PRM,Modify,name) + + [set IWOK_GLOBALS(PRM,Modify,labval) [$fram.val subwidget label]] config -font $IWOK_GLOBALS(font) + set IWOK_GLOBALS(PRM,Modify,entval) [$fram.val subwidget entry] + $IWOK_GLOBALS(PRM,Modify,entval) config -text IWOK_GLOBALS(PRM,Modify,value) + + [set IWOK_GLOBALS(PRM,Modify,labapp) [$fram.app subwidget label]] config -font $IWOK_GLOBALS(font) + set IWOK_GLOBALS(PRM,Modify,entapp) [$fram.app subwidget entry] + $IWOK_GLOBALS(PRM,Modify,entapp) config -text IWOK_GLOBALS(PRM,Modify,append) + + [set IWOK_GLOBALS(PRM,Modify,labfil) [$fram.fil subwidget label]] config -font $IWOK_GLOBALS(font) + set IWOK_GLOBALS(PRM,Modify,entfil) [$fram.fil subwidget entry] + $IWOK_GLOBALS(PRM,Modify,entfil) config -text IWOK_GLOBALS(PRM,Modify,file) + + set IWOK_GLOBALS(PRM,Modify,compl) [$fram.cmp subwidget listbox] + [set IWOK_GLOBALS(PRM,Modify,text) [$fram.txt subwidget text]] config -font $IWOK_GLOBALS(font) + + set IWOK_GLOBALS(PRM,Modify,bshow) [$fram.but add show -text Show -comm wokPRM:ShowModif] + set IWOK_GLOBALS(PRM,Modify,bcancel) [$fram.but add cancel -text Cancel -comm wokPRM:CancelModif] + set IWOK_GLOBALS(PRM,Modify,bwrite) [$fram.but add apply -text Write -comm [list wokPRM:ApplyModif W]] + set IWOK_GLOBALS(PRM,Modify,bappend) [$fram.but add append -text Append -comm [list wokPRM:ApplyModif A]] + + $IWOK_GLOBALS(PRM,Modify,bshow) configure -state active + $IWOK_GLOBALS(PRM,Modify,bcancel) configure -state active + $IWOK_GLOBALS(PRM,Modify,bwrite) configure -state active + $IWOK_GLOBALS(PRM,Modify,bappend) configure -state active + + ;# completions des noms de parametres + ;# + bind $IWOK_GLOBALS(PRM,Modify,entnam) { + wokPRM:InitCompletionModify %W + wokPRM:AffLocModify [wokPRM:CompleteModify [wokUtils:EASY:sb [%W get]]] + } + + bind $IWOK_GLOBALS(PRM,Modify,entnam) { + wokPRM:ModifyParam [wokUtils:EASY:sb [%W get]] + } + + bind $IWOK_GLOBALS(PRM,Modify,entval) { + wokPRM:ShowModif + } + + return +} + +proc wokPRM:ShowModif { } { + global IWOK_GLOBALS + + set pnam [wokUtils:EASY:sb [$IWOK_GLOBALS(PRM,Modify,entnam) get]] + if { "$pnam" == "" } { + return + } + set clas [wokPRM:ClassName $pnam] + if { "[string index $pnam 0]" != "%" } { + set pnam "%${pnam}" + } + if { "[string index $clas 0]" == "%" } { + set clas [string range $clas 1 end] + } + + set IWOK_GLOBALS(PRM,Modify,pnam) $pnam + + set pathdef [lindex $IWOK_GLOBALS(PRM,Modify,scope) 1] + set redef [lindex $IWOK_GLOBALS(PRM,Modify,scope) 0]_$clas + set IWOK_GLOBALS(PRM,Modify,file) $pathdef/${redef}.edl + + if { [set appval [$IWOK_GLOBALS(PRM,Modify,entapp) get]] != "" } { + set action "@string " + set assign "+=" + set value $appval + } else { + set action "@set " + set assign "=" + set value [$IWOK_GLOBALS(PRM,Modify,entval) get] + } + + catch { unset IWOK_GLOBALS(PRM,Modify,edlbuf) } + + append IWOK_GLOBALS(PRM,Modify,edlbuf) "-- File: ${clas}.edl" \n + append IWOK_GLOBALS(PRM,Modify,edlbuf) "-- Author: [id user]" \n + append IWOK_GLOBALS(PRM,Modify,edlbuf) "-- History: [fmtclock [getclock]]" \n \n + + if { $IWOK_GLOBALS(PRM,Modify,verbose) == 1 } { + append IWOK_GLOBALS(PRM,Modify,edlbuf) "@verboseon;" \n + } + + + if { $IWOK_GLOBALS(PRM,Modify,oneshot) == 1 } { + append IWOK_GLOBALS(PRM,Modify,edlbuf) "-- standard protection against multiple execution" \n + append IWOK_GLOBALS(PRM,Modify,edlbuf) "@ifnotdefined ( ${pnam}_EDL ) then" \n + append IWOK_GLOBALS(PRM,Modify,edlbuf) "@set ${pnam}_EDL = \"\"\;" \n \n + } + + if { $IWOK_GLOBALS(PRM,Modify,wrkst,all) == 0 } { + if { $IWOK_GLOBALS(PRM,Modify,dbms,all) == 0 } { + append IWOK_GLOBALS(PRM,Modify,edlbuf) "@if ( [wokPRM:test_wrkst] ) then" \n + append IWOK_GLOBALS(PRM,Modify,edlbuf) " @if ( [wokPRM:test_dbms] ) then" \n + append IWOK_GLOBALS(PRM,Modify,edlbuf) " $action $pnam $assign \"$value\"\;" \n + append IWOK_GLOBALS(PRM,Modify,edlbuf) " @endif\;" \n + append IWOK_GLOBALS(PRM,Modify,edlbuf) "@endif\;" + } else { + append IWOK_GLOBALS(PRM,Modify,edlbuf) "@if ( [wokPRM:test_wrkst] ) then" \n + append IWOK_GLOBALS(PRM,Modify,edlbuf) " $action $pnam $assign \"$value\"\;" \n + append IWOK_GLOBALS(PRM,Modify,edlbuf) "@endif\;" + } + } else { + if { $IWOK_GLOBALS(PRM,Modify,dbms,all) == 0 } { + append IWOK_GLOBALS(PRM,Modify,edlbuf) "@if ( [wokPRM:test_dbms] ) then" \n + append IWOK_GLOBALS(PRM,Modify,edlbuf) " $action $pnam $assign \"$value\"\;" \n + append IWOK_GLOBALS(PRM,Modify,edlbuf) "@endif\;" + } else { + append IWOK_GLOBALS(PRM,Modify,edlbuf) "$action $pnam $assign \"$value\"\;" + } + } + + if { $IWOK_GLOBALS(PRM,Modify,oneshot) == 1 } { + append IWOK_GLOBALS(PRM,Modify,edlbuf) \n "@endif\;" + } + + if { $IWOK_GLOBALS(PRM,Modify,verbose) == 1 } { + append IWOK_GLOBALS(PRM,Modify,edlbuf) \n "@verboseoff;" + } + + wokReadString $IWOK_GLOBALS(PRM,Modify,text) $IWOK_GLOBALS(PRM,Modify,edlbuf) + $IWOK_GLOBALS(PRM,Modify,labfil) configure -text "Will write in file : " + $IWOK_GLOBALS(PRM,Modify,entfil) configure -relief sunken + return +} + +proc wokPRM:test_wrkst { } { + global IWOK_GLOBALS + set l {} + foreach x [array names IWOK_GLOBALS PRM,Modify,wrkst,*] { + if { "$IWOK_GLOBALS($x)" == "1" } { + lappend l "%Station == \"[lindex [split $x ,] end]\"" || + } + } + if { $l != {}} { + return [join [lrange $l 0 [expr { [llength $l] - 2 }]] ] + } else { + return 1 + } +} + +proc wokPRM:test_dbms { } { + global IWOK_GLOBALS + set l {} + foreach x [array names IWOK_GLOBALS PRM,Modify,dbms,*] { + if { "$IWOK_GLOBALS($x)" == "1" } { + lappend l "%DBMS == \"[lindex [split $x ,] end]\"" || + } + } + if { $l != {}} { + return [join [lrange $l 0 [expr { [llength $l] - 2 }]] ] + } else { + return 1 + } +} + +proc wokPRM:ApplyModif { option } { + global IWOK_GLOBALS + switch -- $option { + W { + if [file exists $IWOK_GLOBALS(PRM,Modify,file)] { + set retval [wokDialBox .wokprm {File already exists} "File already exists." \ + warning 1 {Overwrite} {Abort}] + if { $retval } { + $IWOK_GLOBALS(PRM,Modify,labfil) configure -text "Abort... " + return + } + } + wokTextToFile $IWOK_GLOBALS(PRM,Modify,text) $IWOK_GLOBALS(PRM,Modify,file) + $IWOK_GLOBALS(PRM,Modify,labfil) configure -text "Created file : " + $IWOK_GLOBALS(PRM,Modify,labfil) configure -relief sunken + } + + A { + set l {} + if [file exists $IWOK_GLOBALS(PRM,Modify,file)] { + foreach ln [wokUtils:FILES:FileToList $IWOK_GLOBALS(PRM,Modify,file)] { + lappend l $ln + } + } + foreach x [wokTextToList $IWOK_GLOBALS(PRM,Modify,text)] { + lappend l $x + } + wokUtils:FILES:ListToFile $l $IWOK_GLOBALS(PRM,Modify,file) + $IWOK_GLOBALS(PRM,Modify,labfil) configure -text "Appended to file : " + $IWOK_GLOBALS(PRM,Modify,entfil) configure -relief sunken + } + } + + if { [info exists IWOK_GLOBALS(PRM,ByClass,AllParams)] } { + if { [lsearch $IWOK_GLOBALS(PRM,ByClass,AllParams) $IWOK_GLOBALS(PRM,Modify,pnam)] == -1 } { + lappend IWOK_GLOBALS(PRM,ByClass,AllParams) $IWOK_GLOBALS(PRM,Modify,pnam) + } + } + wokclose + + return +} + +proc wokPRM:CancelModif { } { + global IWOK_GLOBALS + catch { unset IWOK_GLOBALS(PRM,Modify,edlbuf) } + set IWOK_GLOBALS(PRM,Modify,name) "" + set IWOK_GLOBALS(PRM,Modify,value) "" + set IWOK_GLOBALS(PRM,Modify,append) "" + set IWOK_GLOBALS(PRM,Modify,file) "" + $IWOK_GLOBALS(PRM,Modify,text) delete 1.0 end + return +} + +proc wokPRM:ModifyParam { param } { + global IWOK_GLOBALS + $IWOK_GLOBALS(PRM,Modify,compl) delete 0 end + if [info exists IWOK_GLOBALS(PRM,ByClass,AllParams,$param)] { + set IWOK_GLOBALS(PRM,Modify,value) $IWOK_GLOBALS(PRM,ByClass,AllParams,$param) + } else { + set IWOK_GLOBALS(PRM,Modify,value) "" + } + return +} + +proc wokPRM:InitCompletionModify { w } { + global IWOK_GLOBALS + if ![info exists IWOK_GLOBALS(PRM,ByClass,InitCompletionByParams)] { + tixBusy $w on + update + wokPRM:InitCompletionByClass $w + set IWOK_GLOBALS(PRM,ByClass,AllParams) [wokPRM:LoadByParam $IWOK_GLOBALS(PRM,ByClass,AllClasses)] + set IWOK_GLOBALS(PRM,ByClass,InitCompletionByParams) done + tixBusy $w off + } + set IWOK_GLOBALS(PRM,CompletionType) Modify + return +} + +proc wokPRM:AffLocModify { ret } { + global IWOK_GLOBALS + if { $ret != {} } { + $IWOK_GLOBALS(PRM,Modify,entnam) delete 0 end + $IWOK_GLOBALS(PRM,Modify,entnam) insert 0 $ret + } + return +} + +proc wokPRM:CompleteModify { str } { + set lent [wokPRM:GetELByParam] + set retcomp [wokUtils:LIST:POF $str $lent] + set comp [lindex $retcomp 0] + set newaff [lindex $retcomp 1] + set lcomp [llength $newaff] + + if { $lcomp == 1 } { + return ${comp} + } + + if { $lcomp != 0 } { + wokPRM:AffEntModify $newaff + return ${comp} + } + + if { $lcomp == 0 } { + wokPRM:AffEntModify ___NoMatch___ + return {} + } +} + +proc wokPRM:AffEntModify { l } { + global IWOK_GLOBALS + $IWOK_GLOBALS(PRM,Modify,compl) delete 0 end + if { "$l" == "___NoMatch___" } { + $IWOK_GLOBALS(PRM,Modify,compl) insert end "No match." + } else { + foreach s $l { + $IWOK_GLOBALS(PRM,Modify,compl) insert end $s + } + } + return +} + + + +;# +;# (((((((((( B Y C L A S S )))))))))) +;# +proc wokPRM:ByClass { adr nb page } { + global IWOK_GLOBALS + + set w [$nb subwidget $page] + + frame $w.top -relief sunken -bd 1 + + tixPanedWindow $w.top.pane -orient horizontal -paneborderwidth 0 -separatorbg gray50 + pack $w.top.pane -side top -expand yes -fill both -padx 1 -pady 1 + + set p1 [$w.top.pane add tree -min 250 -size 300] + set tree [tixTree $p1.tree -options {separator "^" hlist.selectMode single }] + pack $p1.tree -expand yes -fill both -padx 1 -pady 1 + $tree config -browsecmd "wokPRM:BrowseByClass $w $tree" -opencmd "wokPRM:OpenByClass $tree" + + set p2 [$w.top.pane add fram] + set fram [frame $p2.fram] + pack $p2.fram -expand yes -fill both -padx 1 -pady 1 + + tixLabelEntry $fram.cla -label "Class name :" -labelside left -options { + label.anchor w + entry.width 35 + } + + tixLabelEntry $fram.nam -label "Parameter name :" -labelside left -options { + label.anchor w + entry.width 35 + } + + tixLabelEntry $fram.val -label "Parameter value :" -labelside left -options { + label.anchor w + entry.width 35 + } + + tixComboBox $fram.fil \ + -variable IWOK_GLOBALS(PRM,ByClass,file) \ + -command wokPRM:EdlTexte -label "Defined in file(s):" \ + -editable false -labelside left \ + -history 1 -prunehistory 1 + + $fram.fil subwidget label configure -anchor w -font $IWOK_GLOBALS(font) + $fram.fil subwidget entry configure -width 35 + + tixScrolledListBox $fram.cmp -command wokPRM:Selected + + tixScrolledText $fram.txt ; $fram.txt subwidget text config -font $IWOK_GLOBALS(font) + + tixForm $fram.cla -top 1c -left 1m -right %75 + tixForm $fram.nam -top 2c -left 1m -right %75 + tixForm $fram.val -top 3c -left 1m -right %75 + tixForm $fram.fil -top 4c -left 1m -right %75 + + tixForm $fram.cmp -top 1c -left $fram.fil -top 1c -bottom $fram.txt -right %99 + + tixForm $fram.txt -top 5c -left 2 -right %99 -bottom %99 + + tixForm $w.top -top 2 -left 2 -right %99 -bottom %99 + + set IWOK_GLOBALS(PRM,ByClass,tree) $tree + set IWOK_GLOBALS(PRM,ByClass,hlist) [$tree subwidget hlist] + + [set IWOK_GLOBALS(PRM,ByClass,labcla) [$fram.cla subwidget label]] config -font $IWOK_GLOBALS(font) + set IWOK_GLOBALS(PRM,ByClass,entcla) [$fram.cla subwidget entry] + + [set IWOK_GLOBALS(PRM,ByClass,labnam) [$fram.nam subwidget label]] config -font $IWOK_GLOBALS(font) + set IWOK_GLOBALS(PRM,ByClass,entnam) [$fram.nam subwidget entry] + + [set IWOK_GLOBALS(PRM,ByClass,labval) [$fram.val subwidget label]] config -font $IWOK_GLOBALS(font) + set IWOK_GLOBALS(PRM,ByClass,entval) [$fram.val subwidget entry] + + set IWOK_GLOBALS(PRM,ByClass,boxfil) $fram.fil + [set IWOK_GLOBALS(PRM,ByClass,labfil) [$fram.fil subwidget label]] config -font $IWOK_GLOBALS(font) + [set IWOK_GLOBALS(PRM,ByClass,entfil) [$fram.fil subwidget entry] + [set IWOK_GLOBALS(PRM,ByClass,lstfil) [$fram.fil subwidget listbox] + + $IWOK_GLOBALS(PRM,ByClass,entcla) config -text IWOK_GLOBALS(PRM,ByClass,class) + $IWOK_GLOBALS(PRM,ByClass,entnam) config -text IWOK_GLOBALS(PRM,ByClass,name) + $IWOK_GLOBALS(PRM,ByClass,entval) config -text IWOK_GLOBALS(PRM,ByClass,value) + + set IWOK_GLOBALS(PRM,ByClass,compl) [$fram.cmp subwidget listbox] + + set IWOK_GLOBALS(PRM,ByClass,text) [$fram.txt subwidget text] + + wokPRM:InitCompletionByClass $w + wokPRM:FillByClass + + ;# completions des noms de classe + ;# + bind $IWOK_GLOBALS(PRM,ByClass,entcla) { + wokPRM:InitCompletionByClass %W + wokPRM:AffLocByClass [wokPRM:CompleteByClass [wokUtils:EASY:sb [%W get]]] + } + bind $IWOK_GLOBALS(PRM,ByClass,entcla) { + wokPRM:AddByClass [wokUtils:EASY:sb [%W get]] + } + + ;# completions des noms de parametres + ;# + bind $IWOK_GLOBALS(PRM,ByClass,entnam) { + wokPRM:InitCompletionByParams %W + wokPRM:AffLocByParam [wokPRM:CompleteByParam [wokUtils:EASY:sb [%W get]]] + } + + bind $IWOK_GLOBALS(PRM,ByClass,entnam) { + wokPRM:AddByParam [wokUtils:EASY:sb [%W get]] + } + + return + +} + +proc wokPRM:InitCompletionByClass { w } { + global IWOK_GLOBALS + set IWOK_GLOBALS(PRM,CompletionType) ByClass + if ![info exists IWOK_GLOBALS(PRM,ByClass,InitCompletionByClass)] { + tixBusy $w on + set IWOK_GLOBALS(PRM,ByClass,AllClasses) [wokPRM:LoadByClass] + set IWOK_GLOBALS(PRM,ByClass,InitCompletionByClass) done + tixBusy $w off + } + return +} + +proc wokPRM:InitCompletionByParams { w } { + global IWOK_GLOBALS + if ![info exists IWOK_GLOBALS(PRM,ByClass,InitCompletionByParams)] { + tixBusy $w on + update + wokPRM:InitCompletionByClass $w + set IWOK_GLOBALS(PRM,ByClass,AllParams) [wokPRM:LoadByParam $IWOK_GLOBALS(PRM,ByClass,AllClasses)] + set IWOK_GLOBALS(PRM,ByClass,InitCompletionByParams) done + tixBusy $w off + } + set IWOK_GLOBALS(PRM,CompletionType) ByParam + return +} +# +# insert dans la ComBoBox.listbox la liste des fichiers definissant class. +# ComBoBox.entry le premier d'entre eux. ( declenche l'insertion du texte ) +# +proc wokPRM:InsertDEFByClass { class } { + global IWOK_GLOBALS + if [info exists IWOK_GLOBALS(PRM,ByClass,AllClasses,$class)] { + set lf [wokUtils:LIST:union $IWOK_GLOBALS(PRM,ByClass,AllClasses,$class) [wokparam -F $class]] + set IWOK_GLOBALS(PRM,ByClass,file) [lindex $lf 0] + $IWOK_GLOBALS(PRM,ByClass,lstfil) delete 0 end + foreach f [lrange $lf 1 end] { + $IWOK_GLOBALS(PRM,ByClass,lstfil) insert end $f + } + } + return +} +# +# +# +proc wokPRM:CleanByClass { widgets } { + global IWOK_GLOBALS + if { "$widgets" == "ALL" } { + set widgets [list text entcla entnam entval entfil compl] + } + foreach w $widgets { + switch -- $w { + text { + $IWOK_GLOBALS(PRM,ByClass,text) delete 1.0 end + } + entcla { + set IWOK_GLOBALS(PRM,ByClass,class) "" + } + entnam { + set IWOK_GLOBALS(PRM,ByClass,name) "" + } + entval { + set IWOK_GLOBALS(PRM,ByClass,value) "" + } + entfil { + $IWOK_GLOBALS(PRM,ByClass,boxfil) configure -disablecallback true + set IWOK_GLOBALS(PRM,ByClass,file) "" + $IWOK_GLOBALS(PRM,ByClass,lstfil) delete 0 end + $IWOK_GLOBALS(PRM,ByClass,boxfil) configure -disablecallback false + } + + compl { + $IWOK_GLOBALS(PRM,ByClass,compl) delete 0 end + } + } + } + update + return +} +;# +;# appele dans la listbox des completions +;# +proc wokPRM:Selected { } { + + global IWOK_GLOBALS + + switch -- $IWOK_GLOBALS(PRM,CompletionType) { + + ByClass { + set sl [$IWOK_GLOBALS(PRM,ByClass,compl) curselection] + if { "$sl" != "" } { + set class [$IWOK_GLOBALS(PRM,ByClass,compl) get $sl] + if { "$class" != "" } { + set IWOK_GLOBALS(PRM,ByClass,class) $class + wokPRM:AddByClass $class + } + } + } + + ByParam { + set sl [$IWOK_GLOBALS(PRM,ByClass,compl) curselection] + if { "$sl" != "" } { + set param [$IWOK_GLOBALS(PRM,ByClass,compl) get $sl] + if { "$param" != "" } { + set IWOK_GLOBALS(PRM,ByClass,name) $param + wokPRM:AddByParam $param + } + } + } + + Modify { + set sl [$IWOK_GLOBALS(PRM,Modify,compl) curselection] + if { "$sl" != "" } { + set param [$IWOK_GLOBALS(PRM,Modify,compl) get $sl] + if { "$param" != "" } { + set IWOK_GLOBALS(PRM,Modify,name) $param + wokPRM:ModifyParam $param + } + } + } + + } + return +} + +;# +;# Completions sur les noms de classe +;# +proc wokPRM:CompleteByClass { str } { + set lent [wokPRM:GetELByClass] + set retcomp [wokUtils:LIST:POF $str $lent] + set comp [lindex $retcomp 0] + set newaff [lindex $retcomp 1] + set lcomp [llength $newaff] + + if { $lcomp == 1 } { + return ${comp} + } + + if { $lcomp != 0 } { + wokPRM:AffEntByClass $newaff + return ${comp} + } + + if { $lcomp == 0 } { + wokPRM:AffEntByClass ___NoMatch___ + return {} + } +} + +;# +;# Completions sur les noms de classe +;# +proc wokPRM:CompleteByParam { str } { + set lent [wokPRM:GetELByParam] + set retcomp [wokUtils:LIST:POF $str $lent] + set comp [lindex $retcomp 0] + set newaff [lindex $retcomp 1] + set lcomp [llength $newaff] + + if { $lcomp == 1 } { + return ${comp} + } + + if { $lcomp != 0 } { + wokPRM:AffEntByClass $newaff + return ${comp} + } + + if { $lcomp == 0 } { + wokPRM:AffEntByClass ___NoMatch___ + return {} + } +} + +;# +;# Completions sur les noms de classe +;# +proc wokPRM:AffEntByClass { l } { + global IWOK_GLOBALS + $IWOK_GLOBALS(PRM,ByClass,compl) delete 0 end + if { "$l" == "___NoMatch___" } { + $IWOK_GLOBALS(PRM,ByClass,compl) insert end "No match." + } else { + foreach s $l { + $IWOK_GLOBALS(PRM,ByClass,compl) insert end $s + } + } + return +} +;# +;# Completions sur les noms de parametres +;# +proc wokPRM:AffEntByParam { l } { + global IWOK_GLOBALS + $IWOK_GLOBALS(PRM,ByClass,compl) delete 0 end + if { "$l" == "___NoMatch___" } { + $IWOK_GLOBALS(PRM,ByClass,compl) insert end "No match." + } else { + foreach s $l { + $IWOK_GLOBALS(PRM,ByClass,compl) insert end $s + } + } + return +} + +;# +;# Completions sur les noms de classe +;# +proc wokPRM:AffLocByClass { ret } { + global IWOK_GLOBALS + if { $ret != {} } { + $IWOK_GLOBALS(PRM,ByClass,entcla) delete 0 end + $IWOK_GLOBALS(PRM,ByClass,entcla) insert 0 $ret + } + return +} +;# +;# Completions sur les noms de classe +;# +proc wokPRM:AffLocByParam { ret } { + global IWOK_GLOBALS + if { $ret != {} } { + $IWOK_GLOBALS(PRM,ByClass,entnam) delete 0 end + $IWOK_GLOBALS(PRM,ByClass,entnam) insert 0 $ret + } + return +} +;# +;# Completions sur les noms de classe +;# +proc wokPRM:GetELByClass { } { + global IWOK_GLOBALS + return [lsort $IWOK_GLOBALS(PRM,ByClass,AllClasses)] +} +;# +;# Completions sur les noms de classe +;# +proc wokPRM:GetELByParam { } { + global IWOK_GLOBALS + return [lsort $IWOK_GLOBALS(PRM,ByClass,AllParams)] +} +;# +;# Appel declenche par le changement de valeur de la ComboBox +;# +proc wokPRM:EdlTexte { edlfile } { + global IWOK_GLOBALS + if { "$edlfile" != "" } { + $IWOK_GLOBALS(PRM,ByClass,boxfil) addhistory $edlfile + wokReadFile $IWOK_GLOBALS(PRM,ByClass,text) $edlfile + wokPRM:HiLiByClass + } + return +} +;# +;# +;# +proc wokPRM:AddByClass { class } { + global IWOK_GLOBALS + set hlist $IWOK_GLOBALS(PRM,ByClass,hlist) + + foreach e [$hlist info children] { + set ldata [lindex [$hlist info data $e] 1] + if { [lsearch $ldata $class] != -1 } { + wokPRM:OpenByClass $IWOK_GLOBALS(PRM,ByClass,tree) $e + $IWOK_GLOBALS(PRM,ByClass,tree) setmode $e close + wokPRM:OpenByClass $IWOK_GLOBALS(PRM,ByClass,tree) ${e}^${class} + $IWOK_GLOBALS(PRM,ByClass,tree) setmode ${e}^${class} close + wokPRM:CleanByClass [list entnam entval text] + set IWOK_GLOBALS(PRM,ByClass,class) $class + wokPRM:InsertDEFByClass $class + wokPRM:SeeMe ${e}^${class} + return + } + } + return +} +;# +;# +;# +proc wokPRM:AddByParam { param } { + global IWOK_GLOBALS + set hlist $IWOK_GLOBALS(PRM,ByClass,hlist) + set class [string range [wokPRM:ClassName $param] 1 end] ;# (retirer le %) + + foreach e [$hlist info children] { + set ldata [lindex [$hlist info data $e] 1] + if { [lsearch $ldata $class] != -1 } { + wokPRM:OpenByClass $IWOK_GLOBALS(PRM,ByClass,tree) $e + $IWOK_GLOBALS(PRM,ByClass,tree) setmode $e close + wokPRM:OpenByClass $IWOK_GLOBALS(PRM,ByClass,tree) ${e}^${class} + $IWOK_GLOBALS(PRM,ByClass,tree) setmode ${e}^${class} close + set IWOK_GLOBALS(PRM,ByClass,class) $class + wokPRM:InsertDEFByClass $class + set IWOK_GLOBALS(PRM,ByClass,name) $param + set IWOK_GLOBALS(PRM,ByClass,value) [lindex [$hlist info data ${e}^${class}^${param}] 2] + wokPRM:SeeMe ${e}^${class}^${param} + wokPRM:HiLiByClass + return + } + } + return +} +;# +;# +;# +proc wokPRM:FillByClass { } { + global IWOK_GLOBALS + set hlist $IWOK_GLOBALS(PRM,ByClass,hlist) + $hlist delete all + foreach name [lsort [array names IWOK_GLOBALS PRMDSC,*]] { + if { "$name" != "PRMDSC,DefaultFamilies" } { + $hlist add ${name} -itemtype imagetext -style $IWOK_GLOBALS(PRM,Description) \ + -text [lindex [split $name ,] 1] \ + -data [list F $IWOK_GLOBALS($name)] + $IWOK_GLOBALS(PRM,ByClass,tree) setmode ${name} open + } + } + + set all $IWOK_GLOBALS(PRM,ByClass,AllClasses) + set def $IWOK_GLOBALS(PRMDSC,DefaultFamilies) + set lothers [lsort [wokUtils:LIST:moins $all $def]] + $hlist add __Others__ -itemtype imagetext -style $IWOK_GLOBALS(PRM,Description) \ + -text "Others..." -data [list F $lothers] + $IWOK_GLOBALS(PRM,ByClass,tree) setmode __Others__ open + return +} +;# +;# retourne le nom dec la classe a partir de string +;# +proc wokPRM:ClassName { string } { + if [regexp {(^[^_]*)_(.*)} $string all class rest] { + return $class + } else { + ;#msgprint -w "Unknown syntax for a class name : $string" + return $string + } +} +# +# retourne une table avec toutes les classses et l'adresse des edls correspondants. +# +proc wokPRM:GetAllClasses { table } { + upvar $table TLOC + catch {unset TLOC} + foreach d [wokparam -L] { + foreach e [glob -nocomplain $d/*.edl] { + set cname [wokPRM:ClassName [file root [file tail $e]]] + if [info exists TLOC($cname)] { + set i $TLOC($cname) + lappend i $e + set TLOC($cname) $i + } else { + set TLOC($cname) $e + } + } + } + return +} +# +# retourne une table avec tous les parametres des lclasses et leur valeur +# +proc wokPRM:GetAllParams { lclasses table } { + upvar $table TLOC + catch {unset TLOC} + foreach class $lclasses { + foreach p [wokparam -l $class] { + if [regexp {^%.*} $p] { + set x [split $p =] + set TLOC([lindex $x 0]) [lindex $x 1] + } + } + } + return +} +;# +;# +;# +proc wokPRM:LoadByParam { l } { + global IWOK_GLOBALS + catch { unset table } + wokPRM:GetAllParams $l table + wokUtils:EASY:MAD IWOK_GLOBALS PRM,ByClass,AllParams table + return [lsort [array names table]] +} +;# +;# +;# +proc wokPRM:LoadByClass { } { + global IWOK_GLOBALS + catch { unset table } + wokPRM:GetAllClasses table + wokUtils:EASY:MAD IWOK_GLOBALS PRM,ByClass,AllClasses table + return [lsort [array names table]] +} +;# +;# appelee a l'ouverture d'un item: Le remplit avec les fichiers de l'UD. +;# +proc wokPRM:OpenByClass { tree ent } { + global IWOK_GLOBALS + set hlist [$tree subwidget hlist] + tixBusy $IWOK_GLOBALS(PRM,toplevel) on + update + if {[$hlist info children $ent] == {}} { + set dat [$hlist info data $ent] + set data [lindex $dat 1] + switch -- [lindex $dat 0] { + F { + foreach c $data { + $hlist add $ent^$c -itemtype imagetext -style $IWOK_GLOBALS(PRM,Description) \ + -text $c -data [list C $c] + $tree setmode $ent^$c open + } + wokPRM:CleanByClass ALL + } + + C { + catch { + foreach p [lsort [wokparam -l $data]] { + if [regexp {^%.*} $p] { + set x [split $p =] + set name [lindex $x 0] + set value [lindex $x 1] + $hlist add $ent^$name -itemtype imagetext -text $name -data [list P $name $value] + } + } + } + wokPRM:CleanByClass [list entnam entval compl] + } + + } + + } + tixBusy $IWOK_GLOBALS(PRM,toplevel) off + foreach kid [$hlist info children $ent] { + $hlist show entry $kid + } + + return +} + +# +# appelee quand on brouze la liste. +# +proc wokPRM:BrowseByClass { w slb args } { + global IWOK_GLOBALS + set hlist [$slb subwidget hlist] + + set ent [$hlist info anchor] + if {$ent == ""} { + return + } + + set kid [$hlist info children $ent] + if {$kid == {} } { + set fullitem [$hlist info data $ent] + tixBusy $IWOK_GLOBALS(PRM,toplevel) on + switch -- [lindex $fullitem 0] { + + C { + set class [lindex $fullitem 1] + set IWOK_GLOBALS(PRM,ByClass,class) $class + wokPRM:InsertDEFByClass $class + } + + P { + set class [lindex [$hlist info data [$hlist info parent $ent]] 1] + if { "$IWOK_GLOBALS(PRM,ByClass,class)" != "$class" } { + set IWOK_GLOBALS(PRM,ByClass,class) $class + wokPRM:InsertDEFByClass $class + } + + set IWOK_GLOBALS(PRM,ByClass,name) [lindex $fullitem 1] + set IWOK_GLOBALS(PRM,ByClass,value) [lindex $fullitem 2] + + wokPRM:HiLiByClass + } + } + tixBusy $IWOK_GLOBALS(PRM,toplevel) off + } + return +} +;# +;# surligne dans le texte le parametre en cours si il y en a un +;# +proc wokPRM:HiLiByClass { } { + global IWOK_GLOBALS + if { "$IWOK_GLOBALS(PRM,ByClass,name)" != "" } { + catch { + $IWOK_GLOBALS(PRM,ByClass,text) tag delete big + wokFAM $IWOK_GLOBALS(PRM,ByClass,text) $IWOK_GLOBALS(PRM,ByClass,name) \ + { $IWOK_GLOBALS(PRM,ByClass,text) tag add big first last } + $IWOK_GLOBALS(PRM,ByClass,text) tag configure big -background orange \ + -foreground black -borderwidth 2 \ + -font -Adobe-Helvetica-Medium-R-Normal--*-120-* -relief raised + set index [$IWOK_GLOBALS(PRM,ByClass,text) search \ + -exact $IWOK_GLOBALS(PRM,ByClass,name) 1.0] + $IWOK_GLOBALS(PRM,ByClass,text) see $index + } + } + return +} +;# +;# +;# +proc wokPRM:SeeMe { entry } { + global IWOK_GLOBALS + $IWOK_GLOBALS(PRM,ByClass,hlist) selection clear + $IWOK_GLOBALS(PRM,ByClass,hlist) anchor clear + $IWOK_GLOBALS(PRM,ByClass,hlist) anchor set $entry + $IWOK_GLOBALS(PRM,ByClass,hlist) selection set $entry + $IWOK_GLOBALS(PRM,ByClass,hlist) see $entry + return +} + +;# +;# Init des familles de classes +;# +proc wokPRMInitDescriptionByClass { location } { + global IWOK_GLOBALS + set IWOK_GLOBALS(PRMDSC,DefaultFamilies) [concat \ + [set IWOK_GLOBALS(PRMDSC,Compilations) [list CMPLRS OBJSCMPLRS]]\ + [set IWOK_GLOBALS(PRMDSC,Links/Shareables/Archives) [list LD LDSHR LDEXE ARX LDAR ]]\ + [set IWOK_GLOBALS(PRMDSC,Unit-description) [list FILENAME]]\ + [set IWOK_GLOBALS(PRMDSC,BD/Extractors) [list TCPP CODEGEN CPPENG]]\ + [set IWOK_GLOBALS(PRMDSC,Building-steps) [list WOKSteps WOKStepsDFLT ]]\ + [set IWOK_GLOBALS(PRMDSC,Environnement) [list COMMAND ENV]]\ + [set IWOK_GLOBALS(PRMDSC,Current-location) [wokparam -C $location]]\ + ] + return +} + +proc wokPRM:DBGByClass { {root {}} } { + global IWOK_GLOBALS + set hli $IWOK_GLOBALS(PRM,ByClass,hlist) + foreach c [$hli info children $root] { + puts "$c : data <[$hli info data $c]>" + wokPRM:DBGByClass $c + } + return +} +;# +;# ((((((((((( B Y F I L E ))))))))))) +;# +;# +proc wokPRM:ByFile { adr nb page } { + global IWOK_GLOBALS + + set w [$nb subwidget $page] + + frame $w.top -relief sunken -bd 1 + + tixPanedWindow $w.top.pane -orient horizontal -paneborderwidth 0 -separatorbg gray50 + pack $w.top.pane -side top -expand yes -fill both -padx 1 -pady 1 + + set p1 [$w.top.pane add tree -min 250 -size 380] + set tree [tixTree $p1.tree -options {separator "^" hlist.selectMode single }] + pack $p1.tree -expand yes -fill both -padx 1 -pady 1 + $tree config -browsecmd "wokPRM:BrowseByFile $w $tree" -opencmd "wokPRM:OpenByFile $tree" + + set p2 [$w.top.pane add fram ] + set fram [frame $p2.fram] + pack $p2.fram -expand yes -fill both -padx 1 -pady 1 + + tixLabelEntry $fram.cla -label "Class name :" -labelside left -options { + label.anchor w + entry.width 35 + } + + tixLabelEntry $fram.nam -label "Parameter name :" -labelside left -options { + label.anchor w + entry.width 35 + } + + tixLabelEntry $fram.val -label "Parameter value :" -labelside left -options { + label.anchor w + entry.width 35 + } + + ;# mettre ici la date du fichier etc... + + tixScrolledText $fram.txt + + tixForm $fram.cla -top 1c -left 1m -right %75 + tixForm $fram.nam -top 2c -left 1m -right %75 + tixForm $fram.val -top 3c -left 1m -right %75 + tixForm $fram.txt -top 5c -left 2 -right %99 -bottom %99 + + tixForm $w.top -top 2 -left 2 -right %99 -bottom %99 + + set IWOK_GLOBALS(PRM,ByFile,tree) $tree + set IWOK_GLOBALS(PRM,ByFile,hlist) [$tree subwidget hlist] + + [set IWOK_GLOBALS(PRM,ByFile,labcla) [$fram.cla subwidget label]] config -font $IWOK_GLOBALS(font) + [set IWOK_GLOBALS(PRM,ByFile,entcla) [$fram.cla subwidget entry]] config -stat disabled + + [set IWOK_GLOBALS(PRM,ByFile,labnam) [$fram.nam subwidget label]] config -font $IWOK_GLOBALS(font) + [set IWOK_GLOBALS(PRM,ByFile,entnam) [$fram.nam subwidget entry]] config -stat disabled + + [set IWOK_GLOBALS(PRM,ByFile,labval) [$fram.val subwidget label]] config -font $IWOK_GLOBALS(font) + [set IWOK_GLOBALS(PRM,ByFile,entval) [$fram.val subwidget entry]] config -stat disabled + + $IWOK_GLOBALS(PRM,ByFile,entcla) config -text IWOK_GLOBALS(PRM,ByFile,class) + $IWOK_GLOBALS(PRM,ByFile,entnam) config -text IWOK_GLOBALS(PRM,ByFile,name) + $IWOK_GLOBALS(PRM,ByFile,entval) config -text IWOK_GLOBALS(PRM,ByFile,value) + + [set IWOK_GLOBALS(PRM,ByFile,text) [$fram.txt subwidget text]] config -font $IWOK_GLOBALS(font) + + wokPRM:FillByFile + return +} +;# +;# remplit la hlist avec les directories du search-path +;# +proc wokPRM:FillByFile { } { + global IWOK_GLOBALS + set hlist $IWOK_GLOBALS(PRM,ByFile,hlist) + $hlist delete all + set inx [llength [set lf [wokUtils:LIST:reverse [wokparam -L]]]] + foreach name $lf { + set directory $name + set entry $name + set text [format "(%-2s) %s" ${inx} ${directory}] + if { [llength [set ledl [glob -nocomplain $directory/*.edl]]] == 0 } { + append text (empty) + } + $hlist add $entry -itemtype imagetext -style $IWOK_GLOBALS(PRM,Description) \ + -text $text \ + -data [list D [lsort $ledl]] + $IWOK_GLOBALS(PRM,ByFile,tree) setmode $entry open + incr inx -1 + } + return +} +proc wokPRM:OpenByFile { tree ent } { + global IWOK_GLOBALS + set hlist [$tree subwidget hlist] + tixBusy $IWOK_GLOBALS(PRM,toplevel) on + update + if {[$hlist info children $ent] == {}} { + set dat [$hlist info data $ent] + set data [lindex $dat 1] + switch -- [lindex $dat 0] { + D { + + set IWOK_GLOBALS(PRM,ByFile,value) "" + set IWOK_GLOBALS(PRM,ByFile,name) "" + set IWOK_GLOBALS(PRM,ByFile,class) "" + foreach c $data { + set t [file tail $c] + $hlist add $ent^$t -itemtype imagetext \ + -style $IWOK_GLOBALS(PRM,Description) \ + -text $t -data [list F $c] + $tree setmode $ent^$t open + } + + } + + F { + set IWOK_GLOBALS(PRM,ByFile,value) "" + set IWOK_GLOBALS(PRM,ByFile,name) "" + set IWOK_GLOBALS(PRM,ByFile,class) [wokPRM:ClassName [file root [file tail $data]]] + wokReadFile $IWOK_GLOBALS(PRM,ByFile,text) $data + foreach p [wokPRM:ParamsInfile $data] { + if ![$hlist info exists $ent^$p] { + $hlist add $ent^$p -itemtype imagetext \ + -text $p -data [list P $p] + } + } + } + + + P { + + } + + + } + + } + tixBusy $IWOK_GLOBALS(PRM,toplevel) off + foreach kid [$hlist info children $ent] { + $hlist show entry $kid + } + + return +} +;# +;# retourne la liste des parametres definis/ecrits dans file +;# syntaxes reconnues : @set %KERNEL_SCCS = ... +;# @string %SESSION_Adm = ... +;# retournera aussi le contenu entier du fichier ca ira plus vite +;# le meme parametre peut etre plusieurs fois dans la liste. +proc wokPRM:ParamsInfile { file } { + set synt_set {^[ ]*@set[ ]+(%[^ ]*)[ ]*=} + set synt_string {^[ ]*@string[ ]+(%[^ ]*)[ ]*=} + set lp {} + foreach str [wokUtils:FILES:FileToList $file] { + if { [regexp $synt_set $str all pname] || [regexp $synt_string $str all pname] } { + lappend lp $pname + } + } + return [lsort $lp] +} +proc wokPRM:BrowseByFile { w slb args } { + global IWOK_GLOBALS + set hlist [$slb subwidget hlist] + + set ent [$hlist info anchor] + if {$ent == ""} { + return + } + + set kid [$hlist info children $ent] + if {$kid == {} } { + set fullitem [$hlist info data $ent] + set action [lindex $fullitem 0] + tixBusy $IWOK_GLOBALS(PRM,toplevel) on + switch -- $action { + + P { + set parent [lindex [$hlist info data [$hlist info parent $ent]] 1] + set IWOK_GLOBALS(PRM,ByFile,class) [wokPRM:ClassName [file root [file tail $parent]]] + set prm [lindex $fullitem 1] + set IWOK_GLOBALS(PRM,ByFile,name) $prm + set IWOK_GLOBALS(PRM,ByFile,value) "" + catch {set IWOK_GLOBALS(PRM,ByFile,value) [wokparam -e $prm $IWOK_GLOBALS(PRM,location)]} + wokReadFile $IWOK_GLOBALS(PRM,ByFile,text) $parent + wokPRM:HiLiByFile + } + + } + tixBusy $IWOK_GLOBALS(PRM,toplevel) off + } + return +} +;# +;# surligne dans le texte le parametre en cours si il y en a un +;# +proc wokPRM:HiLiByFile { } { + global IWOK_GLOBALS + if { "$IWOK_GLOBALS(PRM,ByFile,name)" != "" } { + catch { + $IWOK_GLOBALS(PRM,ByFile,text) tag delete big + wokFAM $IWOK_GLOBALS(PRM,ByFile,text) $IWOK_GLOBALS(PRM,ByFile,name) \ + { $IWOK_GLOBALS(PRM,ByFile,text) tag add big first last } + $IWOK_GLOBALS(PRM,ByFile,text) tag configure big -background orange \ + -foreground black -borderwidth 2 \ + -font -Adobe-Helvetica-Medium-R-Normal--*-120-* -relief raised + set index [$IWOK_GLOBALS(PRM,ByFile,text) search \ + -exact $IWOK_GLOBALS(PRM,ByFile,name) 1.0] + $IWOK_GLOBALS(PRM,ByFile,text) see $index + } + } + return +} +;# +;# +;# +proc wokPRM:DBGByFile { {root {}} } { + global IWOK_GLOBALS + set hli $IWOK_GLOBALS(PRM,ByFile,hlist) + foreach c [$hli info children $root] { + puts "$c : data <[$hli info data $c]>" + wokPRM:DBGByFile $c + } + return +} + + +;# +;# ((((((( N O T E B O O K / H E L P / T O P L E V E L ))))))) +;# +;# +;# +;# +proc wokPRM:Scope { path location } { + return +} + +;# +;# test existence +;# +proc wokPRM:Exists { } { + global IWOK_GLOBALS + return [info exists IWOK_GLOBALS(PRM,toplevel)] +} +;# +;# detruit le toplevel et unset les variables associees +;# +proc wokPRM:Kill { } { + global IWOK_GLOBALS + wokButton delw [list params $IWOK_GLOBALS(PRM,toplevel)] + catch { + destroy $IWOK_GLOBALS(PRM,toplevel) + destroy $IWOK_GLOBALS(PRM,help) + } + foreach var [array names IWOK_GLOBALS PRM,*] { + unset IWOK_GLOBALS($var) + } + return +} + + +proc wokPRM:UPD { w } { + return +} +proc wokPRM:NOT { command adr w name } { + tixBusy $w on + set id [after 10000 tixBusy $w off] + $command $adr $w $name + after cancel $id + after 0 tixBusy $w off + return +} +;# +;# Help +;# +proc wokPRM:Help { w } { + global IWOK_GLOBALS + global env + set whelp [wokHelp [set IWOK_GLOBALS(PRM,help) .wokPRMHelp] "About parameters "] + set texte [lindex $whelp 0] ; set label [lindex $whelp 1] + if {[info exist IWOK_GLOBALS(windows)]} { + if {[lsearch $IWOK_GLOBALS(windows) .wokPRMHelp ] == -1} { + lappend IWOK_GLOBALS(windows) .wokPRMHelp + } + } + wokReadFile $texte $env(WOK_LIBRARY)/wokPRM.hlp + wokFAM $texte <.*> { $texte tag add big first last } + + $texte tag configure big -background Bisque3 -foreground black -borderwidth 2 \ + -relief raised + + $texte configure -state disabled + update + return +} + +