Files
geant4/environments/Momo/tcltk/GAG/GAGparam.proc
T
2016-06-01 15:25:35 +02:00

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> {}
}