954 lines
28 KiB
PSL
954 lines
28 KiB
PSL
## GAGparam
|
|
## (GAG procedure)
|
|
# make Parameter window
|
|
##
|
|
# 1998 7 5 ; display only the curr dir name in the macro filechooser
|
|
|
|
## k.ohtubo(Tubocky)
|
|
##
|
|
## 1998.3.19
|
|
## Tcl/Tk version 8.0
|
|
# 1998 July 5 GEANT4 Beta-01
|
|
##
|
|
|
|
proc Param NAME {
|
|
global FONT F_COLOR B_COLOR PARAM COMMAND_NAME \
|
|
errorCode errorInfo env
|
|
|
|
set W $NAME
|
|
|
|
if [winfo exists .$W] {
|
|
raise .$W
|
|
focus .$W.main.val.in.ent
|
|
return
|
|
}
|
|
|
|
if {![info exists PARAM($NAME)]} {
|
|
GAG_Command $NAME
|
|
return
|
|
}
|
|
|
|
set COMMAND_NAME($W) $NAME
|
|
toplevel .$W
|
|
|
|
frame .$W.butt -highlightthickness 0
|
|
pack .$W.butt -side top -fill x
|
|
|
|
button .$W.butt.comm -text $NAME -bd 3 -highlightthickness 0 \
|
|
-command {
|
|
scan [focus] .%s W
|
|
set W [lindex [split $W \.] 0]
|
|
set LENGTH [.$W.main.para.list index end]
|
|
for {set i 0} {$i < $LENGTH} {incr i} {
|
|
set P [.$W.main.para.list get $i]
|
|
set V [.$W.main.val.list get $i]
|
|
if {$P == ""} {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Warning!\nWhat's happen?"
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
} elseif {$V == ""} {
|
|
if {$PARAM($COMMAND_NAME($W).$P.omit) == "1"} {
|
|
set ANSWER [Value_Check $PARAM($COMMAND_NAME($W).$P.type) $PARAM($COMMAND_NAME($W).$P.default)]
|
|
if {$ANSWER != "ERROR"} {
|
|
set PARAM($COMMAND_NAME($W).$P.now) $ANSWER
|
|
Put_Param $COMMAND_NAME($W)
|
|
}
|
|
} else {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Cannot omit this parameter"
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
}
|
|
} else {
|
|
set ANSWER [Value_Check $PARAM($COMMAND_NAME($W).$P.type) $V]
|
|
if {$ANSWER != "ERROR"} {
|
|
set PARAM($COMMAND_NAME($W).$P.now) $ANSWER
|
|
Put_Param $COMMAND_NAME($W)
|
|
}
|
|
}
|
|
}
|
|
set P [join [.$W.main.val.list get 0 end]]
|
|
GAG_Command "$COMMAND_NAME($W) $P"
|
|
}
|
|
button .$W.butt.now -text Current -bd 3 -highlightthickness 0 \
|
|
-command {
|
|
scan [focus] .%s W
|
|
set W [lindex [split $W \.] 0]
|
|
GAG_Command ?$COMMAND_NAME($W)
|
|
}
|
|
button .$W.butt.def -text Default -bd 3 -highlightthickness 0 \
|
|
-command {
|
|
scan [focus] .%s W
|
|
set W [lindex [split $W \.] 0]
|
|
set LIST [.$W.main.para.in.ent get]
|
|
.$W.main.val.in.ent delete 0 end
|
|
.$W.main.val.in.ent insert end $PARAM($COMMAND_NAME($W).$LIST.default)
|
|
}
|
|
button .$W.butt.clear -text Clear -bd 3 -highlightthickness 0 \
|
|
-command {
|
|
scan [focus] .%s W
|
|
set W [lindex [split $W \.] 0]
|
|
.$W.main.para.list see 0
|
|
.$W.main.val.list see 0
|
|
.$W.main.para.list selection clear 0 end
|
|
.$W.main.val.list selection clear 0 end
|
|
focus .$W.main.val.in.ent
|
|
.$W.main.para.in.ent configure -state normal
|
|
.$W.main.para.in.ent delete 0 end
|
|
.$W.main.para.in.ent insert end [.$W.main.para.list get 0]
|
|
.$W.main.para.in.ent configure -state disabled
|
|
.$W.main.val.in.ent delete 0 end
|
|
set GET [.$W.main.para.list get 0]
|
|
if [info exists PARAM($COMMAND_NAME($W).$GET.type)] {
|
|
.$W.right.type configure -text \
|
|
$PARAM($COMMAND_NAME($W).$GET.type)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$GET.guide)] {
|
|
.$W.right.info configure -text \
|
|
$PARAM($COMMAND_NAME($W).$GET.guide)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$GET.range)] {
|
|
.$W.right.range configure -text \
|
|
$PARAM($COMMAND_NAME($W).$GET.range)
|
|
}
|
|
.$W.main.val.list delete 0 end
|
|
set END [.$W.main.para.list index end]
|
|
for {set i 0} {$i < $END} {incr i} {
|
|
.$W.main.val.list insert end ""
|
|
}
|
|
}
|
|
button .$W.butt.cancel -text Cancel -bd 3 -highlightthickness 0 \
|
|
-command {
|
|
scan [focus] .%s W
|
|
set W [lindex [split $W \.] 0]
|
|
destroy .$W
|
|
}
|
|
button .$W.butt.clear1 \
|
|
-command {
|
|
scan [focus] .%s W
|
|
set W [lindex [split $W \.] 0]
|
|
.$W.main.para.list see 0
|
|
.$W.main.val.list see 0
|
|
.$W.main.para.list selection clear 0 end
|
|
.$W.main.val.list selection clear 0 end
|
|
focus .$W.main.val.in.ent
|
|
.$W.main.para.in.ent configure -state normal
|
|
.$W.main.para.in.ent delete 0 end
|
|
.$W.main.para.in.ent insert end [.$W.main.para.list get 0]
|
|
.$W.main.para.in.ent configure -state disabled
|
|
.$W.main.val.in.ent delete 0 end
|
|
.$W.main.val.in.ent insert end [.$W.main.val.list get 0]
|
|
set GET [.$W.main.para.list get 0]
|
|
if [info exists PARAM($COMMAND_NAME($W).$GET.type)] {
|
|
.$W.right.type configure -text \
|
|
$PARAM($COMMAND_NAME($W).$GET.type)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$GET.guide)] {
|
|
.$W.right.info configure -text \
|
|
$PARAM($COMMAND_NAME($W).$GET.guide)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$GET.range)] {
|
|
.$W.right.range configure -text \
|
|
$PARAM($COMMAND_NAME($W).$GET.range)
|
|
}
|
|
}
|
|
pack .$W.butt.comm .$W.butt.now .$W.butt.def \
|
|
.$W.butt.clear .$W.butt.cancel -side left
|
|
|
|
|
|
frame .$W.main -highlightthickness 0
|
|
pack .$W.main -side top -fill both -expand 1
|
|
|
|
|
|
frame .$W.main.para -highlightthickness 0
|
|
pack .$W.main.para -side left -fill both -expand 1
|
|
|
|
|
|
frame .$W.main.para.in -bd 1 -relief raised -highlightthickness 0
|
|
pack .$W.main.para.in -side top -fill x
|
|
|
|
label .$W.main.para.in.lb -text Parameter -highlightthickness 0
|
|
pack .$W.main.para.in.lb -side left
|
|
|
|
entry .$W.main.para.in.ent -state disabled -highlightthickness 0
|
|
pack .$W.main.para.in.ent -side left -fill x -expand 1
|
|
|
|
listbox .$W.main.para.list -height 3 \
|
|
-yscrollcommand ".$W.main.scroll.scroll set" \
|
|
-highlightthickness 0
|
|
pack .$W.main.para.list -side top -fill both -expand 1
|
|
|
|
|
|
frame .$W.main.val -highlightthickness 0
|
|
pack .$W.main.val -side left -fill both -expand 1
|
|
|
|
|
|
frame .$W.main.val.in -bd 1 -relief raised -highlightthickness 0
|
|
pack .$W.main.val.in -side top -fill x
|
|
|
|
label .$W.main.val.in.lb -text Value -highlightthickness 0
|
|
pack .$W.main.val.in.lb -side left
|
|
|
|
entry .$W.main.val.in.ent -highlightthickness 0
|
|
pack .$W.main.val.in.ent -side left -fill x -expand 1
|
|
|
|
listbox .$W.main.val.list -height 3 \
|
|
-yscrollcommand ".$W.main.scroll.scroll set" \
|
|
-highlightthickness 0
|
|
pack .$W.main.val.list -side top -fill both -expand 1
|
|
|
|
frame .$W.main.scroll -bd 1 -highlightthickness 0
|
|
pack .$W.main.scroll -side left -fill y
|
|
|
|
entry .$W.main.scroll.dummy -state disabled -relief flat \
|
|
-width 0 -highlightthickness 0
|
|
pack .$W.main.scroll.dummy -side top
|
|
|
|
scrollbar .$W.main.scroll.scroll -highlightthickness 0 \
|
|
-command {
|
|
scan [focus] .%s W
|
|
set W [lindex [split $W \.] 0]
|
|
Scroll_Link ".$W.main.para.list .$W.main.val.list"
|
|
}
|
|
pack .$W.main.scroll.scroll -side top -fill y -expand 1
|
|
|
|
|
|
frame .$W.left -highlightthickness 0
|
|
pack .$W.left -side left
|
|
|
|
label .$W.left.type -text Type -anchor w -highlightthickness 0
|
|
pack .$W.left.type -side top -fill x
|
|
|
|
label .$W.left.info -text Guidance -anchor w -highlightthickness 0
|
|
pack .$W.left.info -side top -fill x
|
|
|
|
label .$W.left.range -text Range -anchor w -highlightthickness 0
|
|
pack .$W.left.range -side top -fill x
|
|
|
|
|
|
frame .$W.right -highlightthickness 0
|
|
pack .$W.right -side left -fill x -expand 1
|
|
|
|
label .$W.right.type -anchor w \
|
|
-bd 1 -relief sunken -highlightthickness 0
|
|
pack .$W.right.type -side top -fill x
|
|
|
|
label .$W.right.info -anchor w \
|
|
-bd 1 -relief sunken -highlightthickness 0
|
|
pack .$W.right.info -side top -fill x
|
|
|
|
label .$W.right.range -anchor w \
|
|
-bd 1 -relief sunken -highlightthickness 0
|
|
pack .$W.right.range -side top -fill x
|
|
|
|
|
|
# Binding
|
|
bind .$W.main.para.list <ButtonRelease> {
|
|
scan %W .%%s W
|
|
set W [lindex [split $W \.] 0]
|
|
focus .$W.main.val.in.ent
|
|
.$W.main.para.in.ent configure -state normal
|
|
.$W.main.para.in.ent delete 0 end
|
|
.$W.main.val.in.ent delete 0 end
|
|
if {![catch {selection get} GET]} {
|
|
if {$errorCode != "NONE"} {
|
|
set errorCode NONE
|
|
}
|
|
if {$errorInfo != ""} {
|
|
set errorInfo ""
|
|
}
|
|
.$W.main.para.in.ent insert end $GET
|
|
if [info exists PARAM($COMMAND_NAME($W).$GET.type)] {
|
|
.$W.right.type configure -text \
|
|
$PARAM($COMMAND_NAME($W).$GET.type)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$GET.guide)] {
|
|
.$W.right.info configure -text \
|
|
$PARAM($COMMAND_NAME($W).$GET.guide)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$GET.range)] {
|
|
.$W.right.range configure -text \
|
|
$PARAM($COMMAND_NAME($W).$GET.range)
|
|
}
|
|
if {[info exists PARAM($COMMAND_NAME($W).$GET.candidate)] \
|
|
&& ($PARAM($COMMAND_NAME($W).$GET.candidate) != "")} {
|
|
Candidate $GET
|
|
} else {
|
|
Delete_Candidate $W
|
|
}
|
|
}
|
|
if {![catch {.$W.main.val.list get [.$W.main.para.list index @%x,%y]} VALUE]} {
|
|
if {$errorCode != "NONE"} {
|
|
set errorCode NONE
|
|
}
|
|
if {$errorInfo != ""} {
|
|
set errorInfo ""
|
|
}
|
|
.$W.main.val.in.ent insert end $VALUE
|
|
}
|
|
.$W.main.para.in.ent configure -state disabled
|
|
}
|
|
bind .$W.main.val.list <ButtonRelease> {
|
|
scan %W .%%s W
|
|
set W [lindex [split $W \.] 0]
|
|
focus .$W.main.val.in.ent
|
|
.$W.main.para.in.ent configure -state normal
|
|
.$W.main.para.in.ent delete 0 end
|
|
.$W.main.val.in.ent delete 0 end
|
|
if {![catch {selection get} GET]} {
|
|
if {$errorCode != "NONE"} {
|
|
set errorCode NONE
|
|
}
|
|
if {$errorInfo != ""} {
|
|
set errorInfo ""
|
|
}
|
|
.$W.main.val.in.ent insert end $GET
|
|
}
|
|
if {![catch {.$W.main.para.list get [.$W.main.val.list index @%x,%y]} VARIABLE]} {
|
|
if {$errorCode != "NONE"} {
|
|
set errorCode NONE
|
|
}
|
|
if {$errorInfo != ""} {
|
|
set errorInfo ""
|
|
}
|
|
.$W.main.para.in.ent insert end $VARIABLE
|
|
if [info exists PARAM($COMMAND_NAME($W).$VARIABLE.type)] {
|
|
.$W.right.type configure -text \
|
|
$PARAM($COMMAND_NAME($W).$VARIABLE.type)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$VARIABLE.guide)] {
|
|
.$W.right.info configure -text \
|
|
$PARAM($COMMAND_NAME($W).$VARIABLE.guide)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$VARIABLE.range)] {
|
|
.$W.right.range configure -text \
|
|
$PARAM($COMMAND_NAME($W).$VARIABLE.range)
|
|
}
|
|
if {[info exists PARAM($COMMAND_NAME($W).$VARIABLE.candidate)] \
|
|
&& ($PARAM($COMMAND_NAME($W).$VARIABLE.candidate) != "")} {
|
|
Candidate $VARIABLE
|
|
} else {
|
|
Delete_Candidate $W
|
|
}
|
|
}
|
|
.$W.main.para.in.ent configure -state disabled
|
|
}
|
|
bind .$W <Enter> {
|
|
scan %W .%%s W
|
|
set W [lindex [split $W \.] 0]
|
|
raise .$W
|
|
focus .$W.main.val.in.ent
|
|
}
|
|
foreach BIND {Return Tab Down Control-n} {
|
|
bind .$W.main.val.in.ent <$BIND> {
|
|
scan %W .%%s W
|
|
set W [lindex [split $W \.] 0]
|
|
set P [.$W.main.para.in.ent get]
|
|
set V [.$W.main.val.in.ent get]
|
|
if {$P == ""} {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Warning!\nWhat's happen?"
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
} elseif {$V == ""} {
|
|
if {$PARAM($COMMAND_NAME($W).$P.omit) == "1"} {
|
|
set ANSWER [Value_Check $PARAM($COMMAND_NAME($W).$P.type) $PARAM($COMMAND_NAME($W).$P.default)]
|
|
if {$ANSWER != "ERROR"} {
|
|
set PARAM($COMMAND_NAME($W).$P.now) $ANSWER
|
|
Put_Param $COMMAND_NAME($W)
|
|
}
|
|
} else {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Cannot omit this parameter."
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
}
|
|
} else {
|
|
set ANSWER [Value_Check $PARAM($COMMAND_NAME($W).$P.type) $V]
|
|
if {$ANSWER != "ERROR"} {
|
|
set PARAM($COMMAND_NAME($W).$P.now) $ANSWER
|
|
Put_Param $COMMAND_NAME($W)
|
|
}
|
|
}
|
|
set P_END [.$W.main.para.list index end]
|
|
for {set Num 0} {$Num <= $P_END} {incr Num} {
|
|
if {$P == [.$W.main.para.list get $Num]} {
|
|
break
|
|
}
|
|
}
|
|
if {$Num < 0} {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Warning\nWhat's happen?"
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
} else {
|
|
incr Num
|
|
if {$Num >= $P_END} {set Num 0}
|
|
.$W.butt.clear1 invoke
|
|
.$W.main.para.in.ent configure -state normal
|
|
.$W.main.para.in.ent delete 0 end
|
|
set VARIABLE [.$W.main.para.list get $Num]
|
|
.$W.main.para.in.ent insert end $VARIABLE
|
|
.$W.main.para.in.ent configure -state disabled
|
|
.$W.main.val.in.ent delete 0 end
|
|
.$W.main.val.in.ent insert end [.$W.main.val.list get $Num]
|
|
.$W.main.para.list selection set $Num
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$VARIABLE.type)] {
|
|
.$W.right.type configure -text \
|
|
$PARAM($COMMAND_NAME($W).$VARIABLE.type)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$VARIABLE.guide)] {
|
|
.$W.right.info configure -text \
|
|
$PARAM($COMMAND_NAME($W).$VARIABLE.guide)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$VARIABLE.range)] {
|
|
.$W.right.range configure -text \
|
|
$PARAM($COMMAND_NAME($W).$VARIABLE.range)
|
|
}
|
|
if {[info exists PARAM($COMMAND_NAME($W).$VARIABLE.candidate)] \
|
|
&& ($PARAM($COMMAND_NAME($W).$VARIABLE.candidate) != "")} {
|
|
Candidate $VARIABLE
|
|
} else {
|
|
Delete_Candidate $W
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach BIND {Shift-Tab Up Control-p} {
|
|
bind .$W.main.val.in.ent <$BIND> {
|
|
scan %W .%%s W
|
|
set W [lindex [split $W \.] 0]
|
|
set P [.$W.main.para.in.ent get]
|
|
set V [.$W.main.val.in.ent get]
|
|
if {$P == ""} {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Warning!\nWhat's happen?"
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
} elseif {$V == ""} {
|
|
if {$PARAM($COMMAND_NAME($W).$P.omit) == "1"} {
|
|
set ANSWER [Value_Check $PARAM($COMMAND_NAME($W).$P.type) $PARAM($COMMAND_NAME($W).$P.default)]
|
|
if {$ANSWER != "ERROR"} {
|
|
set PARAM($COMMAND_NAME($W).$P.now) $ANSWER
|
|
Put_Param $COMMAND_NAME($W)
|
|
}
|
|
} else {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Cannot omitt this parameter."
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
}
|
|
} else {
|
|
set ANSWER [Value_Check $PARAM($COMMAND_NAME($W).$P.type) $V]
|
|
if {$ANSWER != "ERROR"} {
|
|
set PARAM($COMMAND_NAME($W).$P.now) $ANSWER
|
|
Put_Param $COMMAND_NAME($W)
|
|
}
|
|
}
|
|
set P_END [.$W.main.para.list index end]
|
|
for {set Num 0} {$Num <= $P_END} {incr Num} {
|
|
if {$P == [.$W.main.para.list get $Num]} {
|
|
break
|
|
}
|
|
}
|
|
if {$Num < 0} {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Warning\nWhat's happen?"
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
} else {
|
|
incr Num -1
|
|
if {$Num < 0} {set Num [expr $P_END - 1]}
|
|
.$W.butt.clear1 invoke
|
|
.$W.main.para.in.ent configure -state normal
|
|
.$W.main.para.in.ent delete 0 end
|
|
set VARIABLE [.$W.main.para.list get $Num]
|
|
.$W.main.para.in.ent insert end $VARIABLE
|
|
.$W.main.para.in.ent configure -state disabled
|
|
.$W.main.val.in.ent delete 0 end
|
|
.$W.main.val.in.ent insert end [.$W.main.val.list get $Num]
|
|
.$W.main.para.list selection set $Num
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$VARIABLE.type)] {
|
|
.$W.right.type configure -text \
|
|
$PARAM($COMMAND_NAME($W).$VARIABLE.type)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$VARIABLE.guide)] {
|
|
.$W.right.info configure -text \
|
|
$PARAM($COMMAND_NAME($W).$VARIABLE.guide)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$VARIABLE.range)] {
|
|
.$W.right.range configure -text \
|
|
$PARAM($COMMAND_NAME($W).$VARIABLE.range)
|
|
}
|
|
if {[info exists PARAM($COMMAND_NAME($W).$VARIABLE.candidate)] \
|
|
&& ($PARAM($COMMAND_NAME($W).$VARIABLE.candidate) != "")} {
|
|
Candidate $VARIABLE
|
|
} else {
|
|
Delete_Candidate $W
|
|
}
|
|
}
|
|
}
|
|
|
|
Put_Param $NAME
|
|
focus .$W.main.val.in.ent
|
|
wm title .$W Command
|
|
wm protocol .$W WM_DELETEWINDOW {
|
|
.$W.butt.cancel invoke
|
|
}
|
|
Tab_off
|
|
Control
|
|
set GET [.$W.main.para.in.ent get]
|
|
if {[info exists PARAM($COMMAND_NAME($W).$GET.candidate)] \
|
|
&& ($PARAM($COMMAND_NAME($W).$GET.candidate) != "")} {
|
|
Candidate $GET
|
|
} else {
|
|
Delete_Candidate $W
|
|
}
|
|
if {$W == "/control/execute"} {
|
|
Command_Dir $W
|
|
.$W.butt.comm configure -command {
|
|
scan [focus] .%s W
|
|
set W [lindex [split $W \.] 0]
|
|
set P [.$W.main.para.in.ent get]
|
|
set V [.$W.main.val.list get 0]
|
|
if {$P == ""} {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Warning!\nWhat's happen?"
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
} elseif {$V == ""} {
|
|
if {$PARAM($COMMAND_NAME($W).$P.omit) != "1"} {
|
|
set ANSWER [Value_Check $PARAM($COMMAND_NAME($W).$P.type) $PARAM($COMMAND_NAME($W).$P.default)]
|
|
if {$ANSWER != "ERROR"} {
|
|
set PARAM($COMMAND_NAME($W).$P.now) $ANSWER
|
|
Put_Param $COMMAND_NAME($W)
|
|
}
|
|
} else {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Cannot omit this parameter."
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
}
|
|
} else {
|
|
set ANSWER [Value_Check $PARAM($COMMAND_NAME($W).$P.type) $V]
|
|
if {$ANSWER != "ERROR"} {
|
|
set PARAM($COMMAND_NAME($W).$P.now) $ANSWER
|
|
Put_Param $COMMAND_NAME($W)
|
|
}
|
|
}
|
|
set P [.$W.main.val.list get 0]
|
|
GAG_Command "$COMMAND_NAME($W) $P"
|
|
}
|
|
}
|
|
|
|
Win_Size .$W
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .$W
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .$W
|
|
}
|
|
.$W.main.para.list selection set 0
|
|
}
|
|
|
|
# Putout Parameter on Param window
|
|
proc Put_Param NAME {
|
|
global PARAM COMMAND_NAME FONT F_COLOR B_COLOR
|
|
|
|
set W $NAME
|
|
|
|
if {![winfo exists .$W]} {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Warning!\nWhat's happen?"
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
return
|
|
}
|
|
|
|
.$W.main.para.list delete 0 end
|
|
.$W.main.val.list delete 0 end
|
|
foreach LIST $PARAM($NAME) {
|
|
.$W.main.para.list insert end $LIST
|
|
if {[info exists PARAM($NAME.$LIST.now)]} {
|
|
.$W.main.val.list insert end $PARAM($NAME.$LIST.now)
|
|
} elseif {[info exists PARAM($NAME.$LIST.default)]} {
|
|
.$W.main.val.list insert end $PARAM($NAME.$LIST.default)
|
|
} else {
|
|
.$W.main.val.list insert end ""
|
|
}
|
|
}
|
|
set GET [.$W.main.para.list get 0]
|
|
.$W.main.para.in.ent configure -state normal
|
|
.$W.main.para.in.ent delete 0 end
|
|
.$W.main.para.in.ent insert end $GET
|
|
.$W.main.para.in.ent configure -state disabled
|
|
.$W.main.val.in.ent delete 0 end
|
|
.$W.main.val.in.ent insert end [.$W.main.val.list get 0]
|
|
if [info exists PARAM($COMMAND_NAME($W).$GET.type)] {
|
|
.$W.right.type configure -text \
|
|
$PARAM($COMMAND_NAME($W).$GET.type)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$GET.guide)] {
|
|
.$W.right.info configure -text \
|
|
$PARAM($COMMAND_NAME($W).$GET.guide)
|
|
}
|
|
if [info exists PARAM($COMMAND_NAME($W).$GET.range)] {
|
|
.$W.right.range configure -text \
|
|
$PARAM($COMMAND_NAME($W).$GET.range)
|
|
}
|
|
}
|
|
|
|
# Analyze parameter
|
|
proc Make_Param LINE {
|
|
global PARAM PRE COMMAND_NAME Win_Name FONT F_COLOR B_COLOR \
|
|
COMM_RANGE FLAG_P
|
|
|
|
set LINE [string trimleft $LINE]
|
|
set LINE [string trimleft $LINE "\{"]
|
|
set SWITCH [lindex [split $LINE] 0]
|
|
|
|
switch -- $SWITCH {
|
|
"@@command_range" {
|
|
set HEAD [expr [string first \" $LINE] + 1]
|
|
set TAIL [expr [string last \" $LINE] - 1]
|
|
set COMM_RANGE [string range $LINE $HEAD $TAIL]
|
|
if {$COMM_RANGE == ""} {
|
|
unset COMM_RANGE
|
|
}
|
|
}
|
|
"@@param_name" {
|
|
set PRE(name) [Pick_Up_Param $LINE]
|
|
}
|
|
"@@param_guide" {
|
|
set PRE(guide) [Another_Line [Pick_Up_Param $LINE]]
|
|
}
|
|
"@@param_type" {
|
|
set PRE(type) [Pick_Up_Param $LINE]
|
|
}
|
|
"@@param_omit" {
|
|
set PRE(omit) [Pick_Up_Param $LINE]
|
|
}
|
|
"@@param_default" {
|
|
set PRE(default) [Pick_Up_Param $LINE]
|
|
}
|
|
"@@param_range" {
|
|
set PRE(range) [Pick_Up_Param $LINE]
|
|
if {$PRE(range) == ""} {
|
|
unset PRE(range)
|
|
}
|
|
if {[info exists COMM_RANGE] && [info exists PRE(range)]} {
|
|
set PRE(range) "$COMM_RANGE\n[Pick_Up_Param $LINE]"
|
|
} elseif {[info exists COMM_RANGE] && ![info exists PRE(range)]} {
|
|
set PRE(range) $COMM_RANGE
|
|
}
|
|
}
|
|
"@@param_candidate" {
|
|
set PRE(candidate) [Pick_Up_Param $LINE]
|
|
}
|
|
"\}" {
|
|
if {![info exists Win_Name]} {
|
|
Message_Skeleton -icon error -button O.K. \
|
|
-message "Error!\nCheck this GEANT code."
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
}
|
|
if {[lsearch [array name PARAM] $COMMAND_NAME($Win_Name).$PRE(name).guide] < 0} {
|
|
lappend PARAM($COMMAND_NAME($Win_Name)) $PRE(name)
|
|
}
|
|
foreach LIST {guide type omit default range candidate} {
|
|
if {[info exists PRE($LIST)]} {
|
|
set PARAM($COMMAND_NAME($Win_Name).$PRE(name).$LIST) $PRE($LIST)
|
|
} else {
|
|
set PARAM($COMMAND_NAME($Win_Name).$PRE(name).$LIST) ""
|
|
}
|
|
}
|
|
if {$PARAM($COMMAND_NAME($Win_Name).$PRE(name).type) == "boolean" || $PARAM($COMMAND_NAME($Win_Name).$PRE(name).type) == "b"} {
|
|
if {$PARAM($COMMAND_NAME($Win_Name).$PRE(name).candidate) == ""} {
|
|
set PARAM($COMMAND_NAME($Win_Name).$PRE(name).candidate) "TRUE FALSE"
|
|
}
|
|
}
|
|
unset PRE
|
|
}
|
|
default {
|
|
if {[string index $SWITCH 0] == "\/"} {
|
|
set FLAG_P $SWITCH
|
|
set Win_Name $SWITCH
|
|
set COMMAND_NAME($Win_Name) $SWITCH
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Pick up Parameter from parameter data
|
|
proc Pick_Up_Param LINE {
|
|
set HEAD [expr [string first : $LINE] + 1]
|
|
set LINE [string range $LINE $HEAD end]
|
|
set LINE [string trimleft $LINE]
|
|
if {[string index $LINE 0] == "\""} {
|
|
set LINE [string range $LINE 1 end]
|
|
}
|
|
set LINE [string trimright $LINE "\""]
|
|
return $LINE
|
|
}
|
|
|
|
# add Candidate list box in Parameter window
|
|
proc Candidate PARA_NAME {
|
|
global FONT F_COLOR B_COLOR
|
|
|
|
update
|
|
scan [focus] .%s W
|
|
set W [lindex [split $W \.] 0]
|
|
if {![winfo exists .$W]} {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Warning!\nWhat's happen?"
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
return
|
|
}
|
|
|
|
if {![winfo exists .$W.main.candidate]} {
|
|
frame .$W.main.candidate -highlightthickness 0
|
|
pack .$W.main.candidate -side left -fill y
|
|
|
|
label .$W.main.candidate.lb -text Candidate -anchor w \
|
|
-bd 2 -relief flat -highlightthickness 0
|
|
pack .$W.main.candidate.lb -side top -fill x
|
|
|
|
listbox .$W.main.candidate.list -height 3 \
|
|
-yscrollcommand ".$W.main.candidate.scroll set" \
|
|
-highlightthickness 0
|
|
pack .$W.main.candidate.list -side left -fill y
|
|
|
|
scrollbar .$W.main.candidate.scroll \
|
|
-command ".$W.main.candidate.list yview" \
|
|
-highlightthickness 0
|
|
pack .$W.main.candidate.scroll -side left -fill y
|
|
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .$W
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .$W
|
|
}
|
|
Win_Size .$W
|
|
Tab_off
|
|
Control
|
|
|
|
bind .$W.main.candidate.list <ButtonRelease> {
|
|
scan %W .%%s W
|
|
set W [lindex [split $W \.] 0]
|
|
focus .$W.main.val.in.ent
|
|
.$W.main.val.in.ent delete 0 end
|
|
if {![catch {selection get} GET]} {
|
|
if {$errorCode != "NONE"} {
|
|
set errorCode NONE
|
|
}
|
|
if {$errorInfo != ""} {
|
|
set errorInfo ""
|
|
}
|
|
.$W.main.val.in.ent insert end $GET
|
|
}
|
|
}
|
|
} else {
|
|
.$W.main.candidate.list delete 0 end
|
|
}
|
|
|
|
global PARAM COMMAND_NAME
|
|
|
|
foreach L [split $PARAM($COMMAND_NAME($W).$PARA_NAME.candidate)] {
|
|
.$W.main.candidate.list insert end $L
|
|
}
|
|
}
|
|
|
|
# delete Candidate list box from Parameter window
|
|
proc Delete_Candidate W {
|
|
global FONT F_COLOR B_COLOR
|
|
|
|
if {![winfo exists .$W]} {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Warning!\nWhat's happen?"
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
return
|
|
}
|
|
|
|
if [winfo exists .$W.main.candidate] {
|
|
destroy .$W.main.candidate
|
|
}
|
|
}
|
|
|
|
# add Directry(& File) list in Parameter window
|
|
proc Command_Dir W {
|
|
global env FONT F_COLOR B_COLOR errorCode errorInfo
|
|
|
|
if {![winfo exists .$W]} {
|
|
Message_Skeleton -icon warning -button O.K. \
|
|
-message "Warning!\nWhat's happen?"
|
|
if {$FONT != ""} {
|
|
Change_Font $FONT .msgskeleton
|
|
}
|
|
if {$F_COLOR != "" && $B_COLOR != ""} {
|
|
Change_Color $F_COLOR $B_COLOR .msgskeleton
|
|
}
|
|
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
|
|
return
|
|
}
|
|
|
|
frame .$W.main.dir -highlightthickness 0
|
|
pack .$W.main.dir -side right -fill both -expand 1
|
|
|
|
|
|
set END [string length $env(HOME)]
|
|
set PATH ~[string range $env(G_PATH) $END end]
|
|
## only current dir name
|
|
set dlist [file split $PATH]
|
|
set cdir [lindex $dlist end]
|
|
label .$W.main.dir.current -text $cdir -anchor w -highlightthickness 0
|
|
## label .$W.main.dir.current -text $PATH -anchor w -highlightthickness 0
|
|
pack .$W.main.dir.current -side top -fill x
|
|
|
|
|
|
frame .$W.main.dir.select -highlightthickness 0
|
|
pack .$W.main.dir.select -side top -fill both -expand 1
|
|
|
|
listbox .$W.main.dir.select.list -width 20 -height 3 \
|
|
-yscrollcommand ".$W.main.dir.select.scroll set" \
|
|
-highlightthickness 0
|
|
pack .$W.main.dir.select.list -side left -fill both -expand 1
|
|
|
|
scrollbar .$W.main.dir.select.scroll -command ".$W.main.dir.select.list yview" \
|
|
-highlightthickness 0
|
|
pack .$W.main.dir.select.scroll -side left -fill y
|
|
|
|
|
|
Put_File_List .$W.main.dir
|
|
|
|
|
|
# Binding
|
|
bind .$W.main.dir.select.list <ButtonRelease> {
|
|
set W /control/execute
|
|
if {![catch {selection get} GET]} {
|
|
if [file isdirectory $env(G_PATH)/$GET] {
|
|
Change_Path $GET
|
|
set END [string length $env(HOME)]
|
|
set PATH ~[string range $env(G_PATH) $END end]
|
|
## only current dir name
|
|
set dlist [file split $PATH]
|
|
set cdir [lindex $dlist end]
|
|
.$W.main.dir.current configure -text $cdir
|
|
## .$W.main.dir.current configure -text $PATH
|
|
.$W.main.dir.select.list see 0
|
|
.$W.main.dir.select.list selection clear 0 end
|
|
.$W.main.val.in.ent delete 0 end
|
|
Put_File_List .$W.main.dir
|
|
if [winfo exists .cd] {
|
|
## only current dir name
|
|
set dlist [file split $PATH]
|
|
set cdir [lindex $dlist end]
|
|
.cd.info.label1 configure -text $cdir
|
|
## .cd.info.label1 configure -text $PATH
|
|
Put_File_List .cd
|
|
}
|
|
}
|
|
}
|
|
if {$errorCode != "NONE"} {
|
|
set errorCode NONE
|
|
}
|
|
if {$errorInfo != ""} {
|
|
set errorInfo ""
|
|
}
|
|
}
|
|
|
|
bind .$W.main.dir.select.list <Double-Button> {
|
|
set W /control/execute
|
|
if {![catch {selection get} Name]} {
|
|
if {[file isfile $env(G_PATH)/$Name] && ![file executable $env(G_PATH)/$Name]} {
|
|
.$W.main.val.in.ent delete 0 end
|
|
.$W.main.val.in.ent insert end $env(G_PATH)/$Name
|
|
## .$W.main.val.in.ent insert end $Name
|
|
}
|
|
}
|
|
if {$errorCode != "NONE"} {
|
|
set errorCode NONE
|
|
}
|
|
if {$errorInfo != ""} {
|
|
set errorInfo ""
|
|
}
|
|
}
|
|
|
|
bind .$W.main.dir.select.list <Double-ButtonRelease> {}
|
|
}
|