Import Geant4 0.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-01 15:25:35 +02:00
parent 54d6b71f95
commit b97f8d0df7
3237 changed files with 807095 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
GUI_STYLE horizontal
GUI_POSITION left
FORE_GROUND_COLOR #000000000
BACK_GROUND_COLOR #d90d90d90
+26
View File
@@ -0,0 +1,26 @@
#Momo Plug-in example
# An example of Momo/Tcl Plug-in
#1998 July 20 H Yoshida
# A line starting with # is a comment line.
# An empty line is ignored.
# Momoseparator is a separation line between menu items.
# Any Unix X-window applications can be invoked by describing
# the command name and associated arguments.
# See the example below.
# Commands are executed in the background.
# But & is not necessary at the end of a line.
#java GGE
#java gag
xclock
Momoseparator
xterm
Momoseparator
netscape
+5
View File
@@ -0,0 +1,5 @@
FONT -adobe-times-bold-r-normal--14-140-75-75-p-77-iso8859-1
GUI_STYLE horizontal
GUI_POSITION left
FORE_GROUND_COLOR #000000000
BACK_GROUND_COLOR #947fffc28
+382
View File
@@ -0,0 +1,382 @@
## DefineColor
## (Momo procedure)
# Define foreground and background Color of all widgets
##
## k.ohtubo(Tubocky)
##
## 1997.3.16
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
proc Define_Color {} {
global env FC FR FG FB BC BR BG BB
if {![info exists FC]} {
if {[lsearch [array name env] FORE_GROUND_COLOR] >= 0} {
set FC $env(FORE_GROUND_COLOR)
Reset_Color F
}
}
if {![info exists BC]} {
if {[lsearch [array name env] BACK_GROUND_COLOR] >= 0} {
set BC $env(BACK_GROUND_COLOR)
Reset_Color B
}
}
if [winfo exists .dc] {
raise .dc
return
}
toplevel .dc -highlightthickness 0
wm title .dc "Define Colors"
frame .dc.butt -highlightthickness 0
pack .dc.butt -side top -fill x
button .dc.butt.change -text "Change Color" -bd 3 \
-highlightthickness 0 \
-command {
Change_Color $FC $BC .
set env(FORE_GROUND_COLOR) $FC
set env(BACK_GROUND_COLOR) $BC
if [winfo exists .cf] {
Change_Color $FC $BC .cf
}
if [winfo exists .se] {
Change_Color $FC $BC .se
Put_Env
}
Make_Color .dc.fg.main.color
Make_Color .dc.bg.main.color
}
pack .dc.butt.change -side left
button .dc.butt.default -text Default -bd 3 -highlightthickness 0 \
-command {
set FR 0
set FG 0
set FB 0
Make_Color .dc.fg.main.color
set BR 0.848
set BG 0.848
set BB 0.848
Make_Color .dc.bg.main.color
}
pack .dc.butt.default -side left
button .dc.butt.cancel -text Cancel -bd 3 -highlightthickness 0 \
-command {
destroy .dc
}
pack .dc.butt.cancel -side left
frame .dc.space -height 10 -highlightthickness 0
pack .dc.space -side top
frame .dc.fg -highlightthickness 0
pack .dc.fg -side top -fill both
frame .dc.fg.input -relief raised -bd 1 -highlightthickness 0
pack .dc.fg.input -side top -fill x
label .dc.fg.input.label -text Foreground: -highlightthickness 0
pack .dc.fg.input.label -side left
entry .dc.fg.input.ent -textvariable FC -state disabled -relief flat \
-highlightthickness 0
pack .dc.fg.input.ent -side left -fill x -expand 1
frame .dc.fg.main -relief raised -bd 1 -highlightthickness 0
pack .dc.fg.main -side top -fill x
frame .dc.fg.main.color -relief sunken -bd 1 -width 70 -height 40 \
-highlightthickness 0
pack .dc.fg.main.color -side left -padx 20 -pady 10
frame .dc.fg.main.scale -highlightthickness 0
pack .dc.fg.main.scale -side left -fill x -expand 1
frame .dc.fg.main.scale.r -highlightthickness 0
pack .dc.fg.main.scale.r -side top -fill x -expand 1
label .dc.fg.main.scale.r.label -text R -anchor w \
-highlightthickness 0
pack .dc.fg.main.scale.r.label -side left
entry .dc.fg.main.scale.r.ent -width 5 -relief flat \
-textvariable FR -highlightthickness 0
pack .dc.fg.main.scale.r.ent -side left
scale .dc.fg.main.scale.r.scale -from 0 -to 1 -resolution 0.01 \
-variable FR -orient horizontal -showvalue false \
-activebackground #fff000000 -troughcolor #bcd000000 \
-command {Make_Color .dc.fg.main.color} \
-highlightthickness 0
pack .dc.fg.main.scale.r.scale -side left -fill x -expand 1
frame .dc.fg.main.scale.g -highlightthickness 0
pack .dc.fg.main.scale.g -side top -fill x -expand 1
label .dc.fg.main.scale.g.label -text G -anchor w \
-highlightthickness 0
pack .dc.fg.main.scale.g.label -side left
entry .dc.fg.main.scale.g.ent -width 5 -relief flat \
-textvariable FG -highlightthickness 0
pack .dc.fg.main.scale.g.ent -side left
scale .dc.fg.main.scale.g.scale -from 0 -to 1 -resolution 0.01 \
-variable FG -orient horizontal -showvalue false \
-activebackground #000fff000 -troughcolor #000bcd000 \
-command {Make_Color .dc.fg.main.color} \
-highlightthickness 0
pack .dc.fg.main.scale.g.scale -side left -fill x -expand 1
frame .dc.fg.main.scale.b -highlightthickness 0
pack .dc.fg.main.scale.b -side top -fill x -expand 1
label .dc.fg.main.scale.b.label -text B -anchor w \
-highlightthickness 0
pack .dc.fg.main.scale.b.label -side left
entry .dc.fg.main.scale.b.ent -width 5 -relief flat \
-textvariable FB -highlightthickness 0
pack .dc.fg.main.scale.b.ent -side left
scale .dc.fg.main.scale.b.scale -from 0 -to 1 -resolution 0.01 \
-variable FB -orient horizontal -showvalue false \
-activebackground #000000fff -troughcolor #000000bcd \
-command {Make_Color .dc.fg.main.color} \
-highlightthickness 0
pack .dc.fg.main.scale.b.scale -side left -fill x -expand 1
frame .dc.between -height 10 -highlightthickness 0
pack .dc.between -side top -fill x
frame .dc.bg -highlightthickness 0
pack .dc.bg -side top -fill both
frame .dc.bg.input -relief raised -bd 1 -highlightthickness 0
pack .dc.bg.input -side top -fill x
label .dc.bg.input.label -text Background: -highlightthickness 0
pack .dc.bg.input.label -side left
entry .dc.bg.input.ent -textvariable BC -state disabled \
-relief flat -highlightthickness 0
pack .dc.bg.input.ent -side left -fill x -expand 1
frame .dc.bg.main -relief raised -bd 1 -highlightthickness 0
pack .dc.bg.main -side top -fill x
frame .dc.bg.main.color -relief sunken -bd 1 -width 70 -height 40 \
-highlightthickness 0
pack .dc.bg.main.color -side left -padx 20 -pady 10
frame .dc.bg.main.scale -highlightthickness 0
pack .dc.bg.main.scale -side left -fill x -expand 1
frame .dc.bg.main.scale.r -highlightthickness 0
pack .dc.bg.main.scale.r -side top -fill x -expand 1
label .dc.bg.main.scale.r.label -text R -anchor w \
-highlightthickness 0
pack .dc.bg.main.scale.r.label -side left
entry .dc.bg.main.scale.r.ent -width 5 -relief flat \
-textvariable BR -highlightthickness 0
pack .dc.bg.main.scale.r.ent -side left
scale .dc.bg.main.scale.r.scale -from 0 -to 1 -resolution 0.01 \
-variable BR -orient horizontal -showvalue false \
-activebackground #fff000000 -troughcolor #bcd000000 \
-command {Make_Color .dc.bg.main.color} \
-highlightthickness 0
pack .dc.bg.main.scale.r.scale -side left -fill x -expand 1
frame .dc.bg.main.scale.g -highlightthickness 0
pack .dc.bg.main.scale.g -side top -fill x -expand 1
label .dc.bg.main.scale.g.label -text G -anchor w \
-highlightthickness 0
pack .dc.bg.main.scale.g.label -side left
entry .dc.bg.main.scale.g.ent -width 5 -relief flat \
-textvariable BG -highlightthickness 0
pack .dc.bg.main.scale.g.ent -side left
scale .dc.bg.main.scale.g.scale -from 0 -to 1 -resolution 0.01 \
-variable BG -orient horizontal -showvalue false \
-activebackground #000fff000 -troughcolor #000bcd000 \
-command {Make_Color .dc.bg.main.color} \
-highlightthickness 0
pack .dc.bg.main.scale.g.scale -side left -fill x -expand 1
frame .dc.bg.main.scale.b -highlightthickness 0
pack .dc.bg.main.scale.b -side top -fill x -expand 1
label .dc.bg.main.scale.b.label -text B -anchor w \
-highlightthickness 0
pack .dc.bg.main.scale.b.label -side left
entry .dc.bg.main.scale.b.ent -width 5 -relief flat \
-textvariable BB -highlightthickness 0
pack .dc.bg.main.scale.b.ent -side left
scale .dc.bg.main.scale.b.scale -from 0 -to 1 -resolution 0.01 \
-variable BB -orient horizontal -showvalue false \
-activebackground #000000fff -troughcolor #000000bcd \
-command {Make_Color .dc.bg.main.color} \
-highlightthickness 0
pack .dc.bg.main.scale.b.scale -side left -fill x -expand 1
# Binding
foreach BIND {Return Tab Down Control-n} {
bind .dc.fg.main.scale.r.ent <$BIND> {
focus .dc.fg.main.scale.g.ent
}
bind .dc.fg.main.scale.g.ent <$BIND> {
focus .dc.fg.main.scale.b.ent
}
bind .dc.fg.main.scale.b.ent <$BIND> {
focus .dc.bg.main.scale.r.ent
}
bind .dc.bg.main.scale.r.ent <$BIND> {
focus .dc.bg.main.scale.g.ent
}
bind .dc.bg.main.scale.g.ent <$BIND> {
focus .dc.bg.main.scale.b.ent
}
bind .dc.bg.main.scale.b.ent <$BIND> {
focus .dc.fg.main.scale.r.ent
}
}
foreach BIND {Shift-Tab Up Control-p} {
bind .dc.fg.main.scale.r.ent <$BIND> {
focus .dc.bg.main.scale.b.ent
}
bind .dc.fg.main.scale.g.ent <$BIND> {
focus .dc.fg.main.scale.r.ent
}
bind .dc.fg.main.scale.b.ent <$BIND> {
focus .dc.fg.main.scale.g.ent
}
bind .dc.bg.main.scale.r.ent <$BIND> {
focus .dc.fg.main.scale.b.ent
}
bind .dc.bg.main.scale.g.ent <$BIND> {
focus .dc.bg.main.scale.r.ent
}
bind .dc.bg.main.scale.b.ent <$BIND> {
focus .dc.bg.main.scale.g.ent
}
}
if {[lsearch [array names env] FONT] >= 0} {
Change_Font $env(FONT) .dc
}
Change_Color $env(FORE_GROUND_COLOR) $env(BACK_GROUND_COLOR) .dc
Win_Size .dc
wm resizable .dc 1 0
Tab_off
Control
}
# Make Color (RGB)
proc Make_Color {w args} {
switch $w {
.dc.fg.main.color {
global FC FR FG FB
regexp {^[0-9]+} [expr $FR * 4095] red
regexp {^[0-9]+} [expr $FG * 4095] green
regexp {^[0-9]+} [expr $FB * 4095] blue
set FC [format #%03x%03x%03x $red $green $blue]
$w configure -bg $FC
}
.dc.bg.main.color {
global BC BR BG BB
regexp {^[0-9]+} [expr $BR * 4095] red
regexp {^[0-9]+} [expr $BG * 4095] green
regexp {^[0-9]+} [expr $BB * 4095] blue
set BC [format #%03x%03x%03x $red $green $blue]
$w configure -bg $BC
}
}
}
# Set Color(FG BG) value in environment variable
proc Set_Color {} {
global env FC BC
set env(FORE_GROUND_COLOR) $FC
set env(BACK_GROUND_COLOR) $BC
}
# Reset Color default value
proc Reset_Color SWITCH {
global FC FR FG FB BC BR BG BB
switch $SWITCH {
F {
switch [string length $FC] {
4 { scan $FC #%01x%01x%01x red green blue
set FR [expr [format %f $red] / 4095.0]
set FG [expr [format %f $green] / 4095.0]
set FB [expr [format %f $blue] / 4095.0]
}
7 { scan $FC #%02x%02x%02x red green blue
set FR [expr [format %f $red] / 4095.0]
set FG [expr [format %f $green] / 4095.0]
set FB [expr [format %f $blue] / 4095.0]
}
10 { scan $FC #%03x%03x%03x red green blue
set FR [expr [format %f $red] / 4095.0]
set FG [expr [format %f $green] / 4095.0]
set FB [expr [format %f $blue] / 4095.0]
}
}
}
B {
switch [string length $BC] {
4 { scan $BC #%01x%01x%01x red green blue
set BR [expr [format %f $red] / 4095.0]
set BG [expr [format %f $green] / 4095.0]
set BB [expr [format %f $blue] / 4095.0]
}
7 { scan $BC #%02x%02x%02x red green blue
set BR [expr [format %f $red] / 4095.0]
set BG [expr [format %f $green] / 4095.0]
set BB [expr [format %f $blue] / 4095.0]
}
10 { scan $BC #%03x%03x%03x red green blue
set BR [expr [format %f $red] / 4095.0]
set BG [expr [format %f $green] / 4095.0]
set BB [expr [format %f $blue] / 4095.0]
}
}
}
}
}
+149
View File
@@ -0,0 +1,149 @@
## FBmain.proc
## (Momo procedure)
# File Browser main
## assumes MOMOPATH/tcltk/Momo/FBtext directories
# uses FBtext procs for file browser
##
## k.ohtubo(Tubocky)
##
## 1998.3.16
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
proc FBmain {} {
global env FONT F_COLOR B_COLOR WISH HOME
if [winfo exists .fbm] {
raise .fbm
focus .fbm.name.ent
return
}
if {[lsearch [array name env] FONT] >= 0} {
set FONT $env(FONT)
} else {
set FONT ""
}
if {[lsearch [array name env] FORE_GROUND_COLOR] >= 0} {
set F_COLOR $env(FORE_GROUND_COLOR)
} else {
set F_COLOR #000000000
}
if {[lsearch [array names env] BACK_GROUND_COLOR] >= 0} {
set B_COLOR $env(BACK_GROUND_COLOR)
} else {
set B_COLOR #d90d90d90
}
toplevel .fbm -highlightthickness 0
frame .fbm.butt -highlightthickness 0
pack .fbm.butt -side top -fill x
menubutton .fbm.butt.b0 -text Function -bd 3 -menu .fbm.butt.b0.func \
-relief raised -highlightthickness 0
pack .fbm.butt.b0 -side left -fill y
menu .fbm.butt.b0.func -tearoff 0
.fbm.butt.b0.func add command -label Clear -command {
.fbm.select.list see 0
.fbm.select.list selection clear 0 end
focus .fbm.name.ent
.fbm.name.ent delete 0 end
set END [string length $env(HOME)]
set Path ~[string range $env(G_PATH) $END end]
.fbm.info.label1 configure -text $Path
Put_File_List .fbm
}
.fbm.butt.b0.func add separator
.fbm.butt.b0.func add command -label "Close File Browser" -command {destroy .fbm}
frame .fbm.info -highlightthickness 0
pack .fbm.info -side top -fill x
label .fbm.info.label0 -text Directory: -anchor w -highlightthickness 0
pack .fbm.info.label0 -side left
set END [string length $env(HOME)]
set Path ~[string range $env(G_PATH) $END end]
label .fbm.info.label1 -text $Path -anchor w -highlightthickness 0
pack .fbm.info.label1 -side left -fill x -expand 1
frame .fbm.name -highlightthickness 0
pack .fbm.name -side top -fill x
label .fbm.name.label -text "File Name" -anchor w -highlightthickness 0
pack .fbm.name.label -side left
entry .fbm.name.ent -highlightthickness 0
pack .fbm.name.ent -side left -fill x -expand 1
frame .fbm.select -highlightthickness 0
pack .fbm.select -side top -fill both
listbox .fbm.select.list -width 20 -height 20 \
-yscrollcommand ".fbm.select.scroll set" -highlightthickness 0
pack .fbm.select.list -side left -fill both -expand 1
scrollbar .fbm.select.scroll -command ".fbm.select.list yview" \
-highlightthickness 0
pack .fbm.select.scroll -side left -fill y
## Binding
bind .fbm.select.list <ButtonRelease> {
.fbm.name.ent delete 0 end
.fbm.name.ent insert end [selection get]
set NAME [.fbm.name.ent get]
if [file isdirectory $env(G_PATH)/$NAME] {
Change_Path $NAME
set END [string length $env(HOME)]
set Path ~[string range $env(G_PATH) $END end]
.fbm.info.label1 configure -text $Path
.fbm.butt.b0.func invoke 1
Put_File_List .fbm
}
}
bind .fbm.select.list <Double-Button> {
set NAME [.fbm.name.ent get]
if {$NAME != ""} {
if [file executable $env(G_PATH)/$NAME] {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\nCannot open."
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 [file isfile $env(G_PATH)/$NAME] {
set env(FB_Open_File_Name) $env(G_PATH)/$NAME
exec $WISH $HOME/FBtext/FBtext.tcl &
}
}
}
focus .fbm.name.ent
Put_File_List .fbm
wm title .fbm "File Browser"
if {$FONT != ""} {
Change_Font $FONT .fbm
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .fbm
}
Win_Size .fbm
Tab_off
Del_Bind
Control
}
@@ -0,0 +1,61 @@
## FBclear
## (FBtext procedure)
# Clear Log
##
## k.ohtubo(Tubocky)
##
## 1997.11.10
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
##
proc Clear_Log {} {
global FONT F_COLOR B_COLOR
if {![winfo exists .fbt.text]} {
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
}
set RANGE [.fbt.text tag range sel]
if {$RANGE == ""} {
Message_Skeleton -icon question -button {Yes No} \
-message "Check!\nClear all?"
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
.fbt.text delete 1.0 end
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
return
} else {
Message_Skeleton -icon question -button {Yes No} \
-message "Check!\nClear marked part?"
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
.fbt.text tag remove sel 1.0 end
eval .fbt.text delete $RANGE
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
return
}
}
@@ -0,0 +1,287 @@
## GAGsavelog
## (FBtext procedure)
# check Before Save
##
## k.ohtubo(Tubocky)
##
## 1998.3.16
## Tcl/Tk version 8.0
# 1998 July 5 GEANT4 Beta-01
## Procedures
proc Before_Save {} {
global SAVE_RANGE FONT F_COLOR B_COLOR
if {![winfo exists .fbt.text]} {
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 {[.fbt.text tag range SEARCH_ALL_TAG] != ""} {
Message_Skeleton -icon question -button {O.K. Cancel} \
-message "Save only searched strings."
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
set SAVE_RANGE [.fbt.text tag range SEARCH_ALL_TAG]
Save_Window
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
} elseif {[.fbt.text tag range sel] != ""} {
Message_Skeleton -icon question -button {O.K. Cancel} \
-message "Save only marked part."
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
set SAVE_RANGE [.fbt.text tag range sel]
Save_Window
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
} else {
set SAVE_RANGE [list 0.0 [.fbt.text index end]]
Save_Window
}
}
# make Save window
proc Save_Window {} {
if [winfo exists .sl] {
raise .sl
focus .sl.name.ent
return
}
global FONT F_COLOR B_COLOR errorCode errorInfo env
set DIR $env(G_PATH)
File_List_Skeleton .sl
.sl.butt.b0 configure -text "Save Text" -command {
set Name [.sl.name.ent get]
if {$Name != ""} {
if [file isdirectory $env(G_PATH)/$Name] {
cd $Name
set END [string length $env(HOME)]
set PATH ~[string range $env(G_PATH) $END end]
.sl.info.label1 configure -text $PATH
.sl.butt.b1 invoke
Put_File_List .sl
} elseif [file executable $env(G_PATH)/$Name] {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\n\"$Name\" is an executable file."
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 [file isfile $env(G_PATH)/$Name] {
Message_Skeleton -icon question -button {Yes No} \
-message "$Name: Overwrite?"
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
Save
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
} else {
Message_Skeleton -icon question -button {Yes No} \
-message "$Name: New file?"
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
Save
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
}
}
}
.sl.butt.b1 configure -text Clear -command {
.sl.select.list see 0
.sl.select.list selection clear 0 end
focus .sl.name.ent
.sl.name.ent delete 0 end
set END [string length $env[HOME)]
set PATH ~[string range [pwd] $END end]
.sl.info.label1 configure -text $PATH
Put_File_List .sl
}
.sl.butt.b2 configure -text Cancel -command {
destroy .sl
}
# Binding
bind .sl.select.list <ButtonRelease> {
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]
.sl.info.label1 configure -text $PATH
.sl.butt.b1 invoke
Put_File_List .sl
} else {
.sl.name.ent delete 0 end
.sl.name.ent insert end $GET
}
}
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
}
bind .sl.select.list <Double-Button> {
set Name [.sl.name.ent get]
if {$Name != ""} {
if [file executable $env(G_PATH)/$Name] {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\n\"$Name\" is an executable file."
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 [file isfile $env(G_PATH)/$Name] {
Message_Skeleton -icon question -button {Yes No} \
-message "$Name: Overwrite?"
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
Save
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
} else {
Message_Skeleton -icon question -button {Yes No} \
-message "$Name: New file?"
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
Save
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
}
}
}
bind .sl.select.list <Double-ButtonRelease> {}
bind .sl.name.ent <Return> {.sl.butt.b0 invoke}
bind .sl <Enter> {
raise .sl
focus .sl.name.ent
}
wm title .sl "Save Log"
wm protocol .sl WM_DELETEWINDOW {
grab release .sl
Change_Path $DIR
}
Put_File_List .sl
if {$FONT != ""} {
Change_Font $FONT .sl
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .sl
}
Win_Size .sl
Tab_off
Control
grab set .sl
}
# Save log
proc Save {} {
global SAVE_RANGE FONT F_COLOR B_COLOR errorCode errorInfo env
if {![winfo exists .sl]} {
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
}
set Name [.sl.name.ent get]
if {![catch {open $env(G_PATH)/$Name w} file_ID]} {
set LENGTH [llength $SAVE_RANGE]
for {set i 0} {$i < $LENGTH} {incr i} {
puts $file_ID [.fbt.text get [lindex $SAVE_RANGE $i] [lindex $SAVE_RANGE [expr $i + 1]]]
incr i
}
close $file_ID
} else {
Message_Skeleton -icon warning -button O.K. \
-message "Cannot open."
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 {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
}
@@ -0,0 +1,411 @@
## FBsearchstring
## (FBtext procedure)
# make Search String window
##
## k.ohtubo(Tubocky)
##
## 1997.3.16
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
##
proc Search_String {} {
global FONT SEARCH REPLACE F_COLOR B_COLOR
if {![winfo exists .fbt.text]} {
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 .ss] {
raise .ss
focus .ss.ent.search
return
}
toplevel .ss -highlightthickness 0
wm title .ss "Search String"
wm protocol .ss WM_DELETE_WINDOW {
.fbt.text tag remove SEARCH_TAG 1.0 end
.fbt.text tag remove SEARCH_ALL_TAG 1.0 end
destroy .ss
}
frame .ss.butt -highlightthickness 0
pack .ss.butt -side top -fill x
button .ss.butt.b0 -text Search -bd 3 -highlightthickness 0 \
-command {
if {[.ss.ent.search get] != ""} {
if {![Search]} {
set STRING [.ss.ent.search get]
Message_Skeleton -icon info -button O.K. \
-message "$STRING:No match."
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 {
Message_Skeleton -icon error -button O.K. \
-message "Input String."
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}
}
}
button .ss.butt.b1 -text Replace -bd 3 -highlightthickness 0 \
-command {
if {[.ss.ent.search get] != ""} {
if {[.ss.ent.replace get] != ""} {
Message_Skeleton -icon question -button {Yes No} \
-message "Chack!\nDelete [.ss.ent.search get]?"
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
Replace
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
}
} else {
Message_Skeleton -icon error -button O.K. \
-message "Input String."
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}
}
}
menubutton .ss.butt.b2 -text Option -menu .ss.butt.b2.set \
-relief raised -bd 3 -highlightthickness 0
menu .ss.butt.b2.set -tearoff 0
.ss.butt.b2.set add cascade -label Search -menu .ss.butt.b2.set.search
.ss.butt.b2.set add cascade -label Replace \
-menu .ss.butt.b2.set.replace
menu .ss.butt.b2.set.search -tearoff 0
.ss.butt.b2.set.search add radiobutton -label Up \
-variable SEARCH -value Up
.ss.butt.b2.set.search add radiobutton -label Down \
-variable SEARCH -value Down
menu .ss.butt.b2.set.replace -tearoff 0
.ss.butt.b2.set.replace add radiobutton -label "Only One" \
-variable REPLACE -value One
.ss.butt.b2.set.replace add radiobutton -label "About All" \
-variable REPLACE -value All
button .ss.butt.b3 -text Clear -bd 3 -highlightthickness 0 \
-command {
.ss.ent.search delete 0 end
.ss.ent.replace delete 0 end
.fbt.text tag remove SEARCH_TAG 1.0 end
.fbt.text tag remove SEARCH_ALL_TAG 1.0 end
focus .ss.ent.search
.fbt.text see end
}
button .ss.butt.b4 -text Cancel -bd 3 -highlightthickness 0 \
-command {
if [winfo exists .ss] {destroy .ss}
.fbt.text tag remove SEARCH_TAG 1.0 end
.fbt.text tag remove SEARCH_ALL_TAG 1.0 end
}
pack .ss.butt.b0 .ss.butt.b1 .ss.butt.b2 .ss.butt.b3 .ss.butt.b4 \
-side left -fill x
frame .ss.space -highlightthickness 0
pack .ss.space -side top -fill both -expand 1
frame .ss.label -highlightthickness 0
pack .ss.label -side left
label .ss.label.search -text Search -anchor w \
-highlightthickness 0
pack .ss.label.search -side top -fill x
label .ss.label.replace -text Replace -anchor w \
-highlightthickness 0
pack .ss.label.replace -side top -fill x
frame .ss.ent -highlightthickness 0
pack .ss.ent -side left -fill x -expand 1
entry .ss.ent.search -highlightthickness 0
pack .ss.ent.search -side top -fill x
entry .ss.ent.replace -highlightthickness 0
pack .ss.ent.replace -side top -fill x
focus .ss.ent.search
Tab_off
Control
foreach BIND {Return Tab Shift-Tab Down Control-n} {
bind .ss.ent.search <$BIND> {focus .ss.ent.replace}
}
foreach BIND {Return Tab Shift-Tab Up Control-p} {
bind .ss.ent.replace <$BIND> {focus .ss.ent.search}
}
if {$FONT != ""} {
Change_Font $FONT .ss
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .ss
}
Win_Size .ss
wm resizable .ss 1 0
}
# Search string on FBtext window
proc Search {} {
global SEARCH FONT F_COLOR B_COLOR
if {![winfo exists .ss.ent.search]} {
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 1
}
.fbt.text tag remove SEARCH_ALL_TAG 1.0 end
.fbt.text tag configure SEARCH_ALL_TAG \
-foreground #fffffffff -background #000000000
set CURSOL [.fbt.text index insert]
set CUR 1.0
set STRING [.ss.ent.search get]
if {$STRING != ""} {
while {[set CUR [.fbt.text search -count LENGTH -regexp --\
$STRING $CUR end]] != ""} {
.fbt.text tag add SEARCH_ALL_TAG \
$CUR "$CUR + $LENGTH char"
set CUR [.fbt.text index "$CUR + $LENGTH char"]
}
}
.fbt.text index $CURSOL
switch $SEARCH {
Up {
if [Search_Up] {
return 1
} else {
return 0
}
}
Down {
if [Search_Down] {
return 1
} else {
return 0
}
}
default {
Message_Skeleton -icon error -button O.K. \
-message "Click \"Option\" button.\nAnd check search up or down."
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 1
}
}
}
# Search mode is "up"
proc Search_Up {} {
.fbt.text tag remove SEARCH_TAG 1.0 end
.fbt.text tag configure SEARCH_TAG \
-foreground #fffffffff -background #ccc000000
set CURSOL [.fbt.text index insert]
set STRING [.ss.ent.search get]
set STOP 1.0
set INDEX [.fbt.text search -backwards \
-count LENGTH -regexp -- $STRING $CURSOL $STOP]
if {$INDEX != ""} {
scan $INDEX %d.%d LINE HEAD
set TAIL [expr $HEAD + $LENGTH]
.fbt.text tag add SEARCH_TAG $LINE.$HEAD $LINE.$TAIL
.fbt.text mark set insert $LINE.$HEAD
.fbt.text yview -pickplace insert
} else {
.fbt.text mark set insert 1.0
return 0
}
return 1
}
# Search mode is "down"
proc Search_Down {} {
.fbt.text tag remove SEARCH_TAG 1.0 end
.fbt.text tag configure SEARCH_TAG \
-foreground #fffffffff -background #ccc000000
set CURSOL [.fbt.text index insert]
set STRING [.ss.ent.search get]
set STOP [.fbt.text index end]
set INDEX [.fbt.text search -count LENGTH -regexp \
-- $STRING $CURSOL $STOP]
if {$INDEX != ""} {
scan $INDEX %d.%d LINE HEAD
set TAIL [expr $HEAD + $LENGTH]
.fbt.text tag add SEARCH_TAG $LINE.$HEAD $LINE.$TAIL
.fbt.text mark set insert $LINE.$TAIL
.fbt.text yview -pickplace insert
} else {
.fbt.text mark set insert end
return 0
}
return 1
}
# Replace string on FBtext window
proc Replace {} {
global REPLACE FONT F_COLOR B_COLOR errorCode errorInfo
if {![winfo exists .ss.ent.replace]} {
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
}
set STRING [.ss.ent.search get]
switch $REPLACE {
One {
if {![Replace_One]} {
Message_Skeleton -icon info -button O.K. \
-message "$STRING:No match."
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}
}
}
All {
Message_Skeleton -icon question -button {Yes No} \
-message "Check!\nReplace all?"
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
Replace_All
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
}
default {
Message_Skeleton -icon warning -button O.K. \
-message "Click \"Option\" button.\nAnd check replace one or all."
if {$FONT != ""} {
Change_Font $FONT .msgskeleton
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .msgskeleton
}
.msgskeleton.butt.0 conigure -command {destroy .msgskeleton}
}
}
}
# Replace mode is "one"
proc Replace_One {} {
if {[set RANGE [.fbt.text tag range SEARCH_TAG]] == ""} {
if {![Search]} {
return 0
} else {
return 1
}
}
if {[.ss.ent.search get] != [eval ".fbt.text get $RANGE"]} {
if {![Search]} {
return 0
} else {
set RANGE [.fbt.text tag range SEARCH_TAG]
}
}
.fbt.text tag remove SEARCH_TAG 1.0 end
eval .fbt.text delete $RANGE
set INSERT [lindex [split $RANGE] 0]
if {![catch {.ss.ent.replace get} STRING]} {
.fbt.text insert $INSERT $STRING
scan $INSERT %d.%d LINE HEAD
set TAIL [expr [string length $STRING] + $HEAD]
.fbt.text tag add SEARCH_TAG $LINE.$HEAD $LINE.$TAIL
if {![Search]} {return 0}
}
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
return 1
}
# Replace mode is "all"
proc Replace_All {} {
while {[Replace_One] != 0} {}
}
+159
View File
@@ -0,0 +1,159 @@
## FBtext.tcl
## Window Manager
## called by FBmain.proc
##
## k.ohtubo(Tubocky)
##
## 1998.3.16
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
wm title . "File Browser Text"
## Set global variable
if [info exists env(MOMOPATH)] {
set END [expr [string length $env(MOMOPATH)] - 1]
if {[string index $env(MOMOPATH) $END] == "/"} {
set HOME [strinf range $env(MOMOPATH) 0 [expr $END - 1]]
} else {
set HOME $env(MOMOPATH)
}
} else {
set HOME $env(HOME)/Momo/tcltk
}
set FILE $env(FB_Open_File_Name)
if {[lsearch [array names env] FONT] >= 0} {
set FONT $env(FONT)
} else {
set FONT ""
}
if {[lsearch [array names env] FORE_GROUND_COLOR] >= 0} {
set F_COLOR $env(FORE_GROUND_COLOR)
} else {
set F_COLOR #000000000
}
if {[lsearch [array names env] BACK_GROUND_COLOR] >= 0} {
set B_COLOR $env(BACK_GROUND_COLOR)
} else {
set B_COLOR #d90d90d90
}
set SEARCH Down
set REPLACE One
set errorCode NONE
set errorInfo ""
## tclIndex
set auto_path [linsert $auto_path 0 $HOME/]
set auto_path [linsert $auto_path 0 $HOME/FBtext/]
## Source
#source $HOME/FBtext/FBsearchstring.proc
#source $HOME/FBtext/FBclear.proc
#source $HOME/FBtext/FBsavelog.proc
## Make window
frame .butt -highlightthickness 0
pack .butt -side top -fill x
menubutton .butt.func -text Function -bd 3 -menu .butt.func.menu \
-relief raised -highlightthickness 0
pack .butt.func -side left -fill y
menu .butt.func.menu -tearoff 0
.butt.func.menu add command -label Clear -command Clear_Log
.butt.func.menu add command -label Save -command Before_Save
.butt.func.menu add command -label Search -command Search_String
.butt.func.menu add separator
.butt.func.menu add command -label "Exit File Browser Text" -command exit
frame .dir -highlightthickness 0
pack .dir -side top -fill x
label .dir.lbl -text Directory: -anchor w -highlightthickness 0
pack .dir.lbl -side left
set END [string length $env(HOME)]
set Path ~[string range [pwd] $END end]
label .dir.lbr -text $Path -anchor w -highlightthickness 0
pack .dir.lbr -side left -fill x -expand 1
frame .file -highlightthickness 0
pack .file -side top -fill x
label .file.lb -text "Load File:" -anchor w -highlightthickness 0
pack .file.lb -side left
entry .file.ent -highlightthickness 0
pack .file.ent -side left -fill x -expand 1
frame .fbt -highlightthickness 0
pack .fbt -side top -fill both -expand 1
text .fbt.text -width 80 -height 15 -bd 2 -yscrollcommand {.fbt.scroll set} \
-highlightthickness 0
pack .fbt.text -side left -fill both -expand 1
scrollbar .fbt.scroll -command {.fbt.text yview} -highlightthickness 0
pack .fbt.scroll -side left -fill y
frame .info -highlightthickness 0
pack .info -side top -fill x
frame .info.lbl -highlightthickness 0
pack .info.lbl -side left
label .info.lbl.info -text Information -anchor w \
-highlightthickness 0
pack .info.lbl.info -side top -fill x
frame .info.lbr -highlightthickness 0
pack .info.lbr -side left -fill x -expand 1
label .info.lbr.info -relief sunken -anchor w -highlightthickness 0
pack .info.lbr.info -side top -fill x -expand 1
if {$FONT != ""} {
Change_Font $FONT .
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .
}
Tab_off
Win_Size .
Del_Bind
Control
if {[file readable $FILE] && [file writable $FILE]} {
.info.lbr.info configure -text "This file is readable & writable."
set FILE_ID [open $FILE r]
.fbt.text insert end [read $FILE_ID]
close $FILE_ID
} elseif [file readable $FILE] {
.info.lbr.info configure -text "This file is readable."
set FILE_ID [open $FILE r]
.fbt.text insert end [read $FILE_ID]
.fbt.text configure -state disabled
.butt.func.menu entryconfigure 0 -state disabled
.butt.func.menu entryconfigure 1 -state disabled
close $FILE_ID
} else {
.info.lbr.info configure -text "This file is not readable."
}
.file.ent insert end $FILE
.file.ent configure -state disabled
+29
View File
@@ -0,0 +1,29 @@
## global variable
env
FONT
F_COLOR
B_COLOR
SAVE_RANGE
SEARCH
REPLACE
errorCode
errorInfo
## procedures
#FBclear.proc
Clear_Log
#FBsavelog.proc
Before_Save
Save_Window
Save
#FBsearchstring.proc
Search_String
Search
Search_Up
Search_Down
Replace
Replace_One
Replace_All
+19
View File
@@ -0,0 +1,19 @@
# Tcl autoload index file, version 2.0
# This file is generated by the "auto_mkindex" command
# and sourced to set up indexing information for one or
# more commands. Typically each line is a command that
# sets an element in the auto_index array, where the
# element name is the name of a command and the value is
# a script that loads the command.
set auto_index(Clear_Log) [list source [file join $dir FBclear.proc]]
set auto_index(Search_String) [list source [file join $dir FBsearchstring.proc]]
set auto_index(Search) [list source [file join $dir FBsearchstring.proc]]
set auto_index(Search_Up) [list source [file join $dir FBsearchstring.proc]]
set auto_index(Search_Down) [list source [file join $dir FBsearchstring.proc]]
set auto_index(Replace) [list source [file join $dir FBsearchstring.proc]]
set auto_index(Replace_One) [list source [file join $dir FBsearchstring.proc]]
set auto_index(Replace_All) [list source [file join $dir FBsearchstring.proc]]
set auto_index(Before_Save) [list source [file join $dir FBsavelog.proc]]
set auto_index(Save_Window) [list source [file join $dir FBsavelog.proc]]
set auto_index(Save) [list source [file join $dir FBsavelog.proc]]
+256
View File
@@ -0,0 +1,256 @@
## GAG.tcl
## GAG Window Manager
##
## k.ohtubo(Tubocky)
##
## 1998.3.16
## 1998 July 5 Hajime
# added "Exit GEANT4" and "Kill GEANT4" menus
# yet to debug for invokation of non-GEANT4 executables
# which hangs the pipe.
# Non GEANT4 command which is suspended can be killed by the
# new "Kill GEANT4" menu.
## 1998 July 20 Hajime
# renamed Exec GEANT4 => Run GEANT4
# added Continue GEANT4
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
## 1998 December 3 Beta-03 Added protection against G4 binaries with
# G4UIterminal session
#
# MOMOPATH/tcltk/Momo/GAG
wm title . GAG
wm protocol . WM_DELETE_WINDOW {
.mbutt.function.command invoke last
}
## Set global variable
if [info exists env(MOMOPATH)] {
set END [expr [string length $env(MOMOPATH)] - 1]
if {[string index $env(MOMOPATH) $END] == "/"} {
set HOME [string range $env(MOMOPATH) 0 [expr $END - 1]]
} else {
set HOME $env(MOMOPATH)
}
} else {
set HOME $env(HOME)/Momo/tcltk
}
if {[lsearch [array names env] FONT] >= 0} {
set FONT $env(FONT)
} else {
set FONT ""
}
set PROMPT "GAG> "
set Protocol "T1.0a"
if {[lsearch [array names env] FORE_GROUND_COLOR] >= 0} {
set F_COLOR $env(FORE_GROUND_COLOR)
} else {
set F_COLOR #000000000
}
if {[lsearch [array names env] BACK_GROUND_COLOR] >= 0} {
set B_COLOR $env(BACK_GROUND_COLOR)
} else {
set B_COLOR #d90d90d90
}
if {![info exists env(G_PATH)]} {
set env(G_PATH) $env(PWD)
}
set SEARCH Down
set REPLACE One
set HISTORY ""
set errorCode NONE
set errorInfo ""
## Source
#source $HOME/GAG/GAGclearlog.proc
#source $HOME/GAG/GAGconnect.proc
#source $HOME/GAG/GAGdirectory.proc
#source $HOME/GAG/GAGparam.proc
#source $HOME/GAG/GAGsavelog.proc
#source $HOME/GAG/GAGsearchstring.proc
#source $HOME/Public.proc
## tclIndex
set auto_path [linsert $auto_path 0 $HOME/]
set auto_path [linsert $auto_path 0 $HOME/GAG/]
## Make window
. configure -highlightthickness 0
frame .mbutt -relief raised -bd 1 -highlightthickness 0
pack .mbutt -side top -fill x
menubutton .mbutt.function -text Function -relief raised -bd 3 \
-menu .mbutt.function.command -highlightthickness 0
pack .mbutt.function -side left
menu .mbutt.function.command -tearoff 0
.mbutt.function.command add command -label "Run GEANT4" -command Directory
.mbutt.function.command add command -label "Continue" -command {
puts $GEANT_ID continue
.log.text insert end continue\n}
## GEANT4_ID is not yet checked 720
.mbutt.function.command add command -label "Exit GEANT4" -command {
Message_Skeleton -icon question -button {Yes No} \
-message "Do you exit GEANT4?"
if {$FONT != ""} {
Change_Font $FONT .msgskeleton
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .msgskeleton
}
.msgskeleton.butt.0 configure -command {
catch {puts $GEANT_ID exit}
destroy .msgskeleton
## exit
}
.msgskeleton.butt.1 configure -command {
destroy .msgskeleton
}
}
.mbutt.function.command add command -label "Kill GEANT4" -command {
Message_Skeleton -icon question -button {Yes No} \
-message "Do you really kill GEANT4?"
if {$FONT != ""} {
Change_Font $FONT .msgskeleton
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .msgskeleton
}
.msgskeleton.butt.0 configure -command {
##test
set PID [pid $GEANT_ID]
catch {exec kill $PID}
destroy .msgskeleton
## exit
}
.msgskeleton.butt.1 configure -command {
destroy .msgskeleton
}
}
.mbutt.function.command add separator
.mbutt.function.command add command -label "Command History" -command Command_History
.mbutt.function.command add separator
.mbutt.function.command add command -label "Save Log" -command Before_Save
.mbutt.function.command add command -label "Search Log" \
-command Search_String
.mbutt.function.command add command -label "Clear Log" -command Clear_Log
.mbutt.function.command add separator
.mbutt.function.command add command -label "Exit GAG" -command {
Message_Skeleton -icon question -button {Yes No} \
-message "Do you exit GAG?"
if {$FONT != ""} {
Change_Font $FONT .msgskeleton
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .msgskeleton
}
.msgskeleton.butt.0 configure -command {
catch {puts $GEANT_ID exit}
catch {close $GEANT_ID}
destroy .msgskeleton
exit
}
.msgskeleton.butt.1 configure -command {
destroy .msgskeleton
}
}
frame .space0 -height 15 -relief flat -highlightthickness 0
pack .space0 -side top -fill x
frame .log -highlightthickness 0
pack .log -side top -fill both -expand 1
text .log.text -width 85 -height 15 -bd 2 -relief raised \
-yscrollcommand {.log.scroll set} -highlightthickness 0
pack .log.text -side left -fill both -expand 1
scrollbar .log.scroll -command {.log.text yview} -highlightthickness 0
pack .log.scroll -side left -fill y
frame .space1 -height 5 -relief flat -highlightthickness 0
pack .space1 -side top -fill x
frame .comm -highlightthickness 0
pack .comm -side top -fill x
label .comm.label -text Command -highlightthickness 0
pack .comm.label -side left
entry .comm.ent -highlightthickness 0
pack .comm.ent -side left -fill x -expand 1
label .help -relief sunken -anchor w -highlightthickness 0
pack .help -side top -fill x
## Dummy Button
button .dummy -command {
set PARA [.comm.ent get]
if {$PARA != ""} {
GAG_Connect $PARA
} else {
.log.text insert end \n>
.log.text see end
}
}
## Binding & Focus
# Binding on command line
bind .comm.ent <Return> {.dummy invoke}
bind .comm.ent <Control-c> {}
bind .comm.ent <Enter> {.help configure -text "direct command typein"}
bind .comm.ent <Leave> {.help configure -text "setup phase"}
focus .comm.ent
# Binding on Log board
bind .log <Enter> {
.help configure -text "editable log window"
}
bind .log <Leave> {
.help configure -text "setup phase"
.log.text configure -relief raised
focus .comm.ent
}
bind .log.text <Button> {
.log.text configure -relief sunken
focus .log.text
}
if {$FONT != ""} {
Change_Font $FONT .
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .
}
Win_Size .
Tab_off
Del_Bind
Control
# Out put on Logboard
.log.text insert end "GEANT4 Adaptive GUI (GAG) : 1998 December \nGAG protocol version $Protocol.\n####### GOOD LUCK TO YOUR SIMULATION! #######\n> "
#bind Menubutton <Leave> {
# foreach w [winfo children .mbutt] {
# grab release $w
# }
#}
#bind Menubutton <Motion> {}
@@ -0,0 +1,82 @@
## GAGclearlog.proc
## (GAG procedure)
## clear the whole or marked part of GEANT4 log in.log.text
##
## k.ohtubo(Tubocky)
##
## 1997.11.10
## Tcl/Tk version 8.0
## 1998. July 5 Beta-01
##
## Procedures
# Clear Log
proc Clear_Log {} {
global FONT F_COLOR B_COLOR
if {![winfo exists .log.text]} {
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 .comm.ent]} {
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
} else {
.comm.ent delete 0 end
}
set RANGE [.log.text tag range sel]
if {$RANGE == ""} {
Message_Skeleton -icon question -button {Yes No} \
-message "Check!\nClear whole log?"
if {$FONT != ""} {
Change_Font $FONT .msgskeleton
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .msgskeleton
}
.msgskeleton.butt.0 configure -command {
.log.text delete 1.0 end
destroy .msgskeleton
}
.msgskeleton.butt.1 configure -command {
destroy .msgskeleton
}
return
} else {
Message_Skeleton -icon question -button {Yes No} \
-message "Check!\nClear marked log?"
if {$FONT != ""} {
Change_Font $FONT .msgskeleton
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .msgskeleton
}
.msgskeleton.butt.0 configure -command {
.log.text tag remove sel 1.0 end
eval .log.text delete $RANGE
destroy .msgskeleton
}
.msgskeleton.butt.1 configure -command {
destroy .msgskeleton
}
return
}
}
+822
View File
@@ -0,0 +1,822 @@
## GAGconnect
## (GAG procedure)
##
## k.ohtubo(Tubocky)
## H. Yoshida
##
## 1998.3.17
## Tcl/Tk version 8.0
### 1998.6.19 patch for "NULLCOMMAND" in example34 of Alpha07 tag H. Y.
## 1998.7.2 Added @@Ask protocol to ask user's typed-in answer
## in the command line (.comm.ent).
## ==> this shall be replaced with type-in dialog
## 1998 December 3 Add @@G4UIterminal case to close the G4UIterminal session.
# This remedies the infinite loop of GAG for G4UIterminal session.
## Procedures
# Connect to GEANT
proc GAG_Connect COMMAND {
global HISTORY errorCode errorInfo env
if [file isfile $env(G_PATH)/$COMMAND] {
global GEANT_ID FLAG_B FLAG_P FLAG_D
if [catch {open "|$env(G_PATH)/$COMMAND 2>@stdout" a+} GEANT_ID] {
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
.log.text insert end $COMMAND\n$GEANT_ID\n
} else {
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
.comm.label configure -text $COMMAND
.log.text insert end $COMMAND\n
set HISTORY ""
if [winfo exists .ch] {
.ch.butt.func.menu invoke 0
}
fconfigure $GEANT_ID -blocking off -buffering none
fileevent $GEANT_ID readable Parse_Line
.dummy configure -command {
set PARA [.comm.ent get]
if {$PARA != ""} {
GAG_Command $PARA
} else {
.log.text insert end \n$PROMPT
.log.text see end
scan [.log.text index end] %d.%d L T
incr L -1
.log.text mark set insert $L.end
}
}
set FLAG_B 0
set FLAG_P 0
set FLAG_D 0
GAG_Command @@GAGmodeTcl
}
} else {
if {$COMMAND == "exit"} {
.mbutt.function.command invoke last
} elseif [catch {eval exec $COMMAND} msg0] {
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
catch {eval $COMMAND} msg1
.log.text insert end $COMMAND\n$msg1\n
.log.text insert end "> "
} else {
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
.log.text insert end $COMMAND\n$msg0\n
.log.text insert end "> "
}
if [winfo exists .cd] {
Directory
}
}
scan [.log.text index end] %d.%d L T
incr L -1
.log.text mark set insert $L.end
.comm.ent delete 0 end
.log.text see end
}
# Send command to GEANT
proc GAG_Command COMMAND {
global HISTORY GEANT_ID FONT F_COLOR B_COLOR errorCode errorInfo
if {$GEANT_ID == ""} {
return 0
}
if [eof $GEANT_ID] {
catch {close $GEANT_ID}
Command_Passive
if {$errorCode != "NONE" && $errorInfo != ""} {
.log.text insert end "Error.\n\n$errorCode\n\n$errorInfo\n"
set errorInfo ""
set errorCode NONE
} elseif {$errorCode != "NONE"} {
.log.text insert end "Error.\n\n$errorCode\n"
set errorCode NONE
} elseif {$errorInfo != ""} {
.log.text insert end "Error.\n\n$errorInfo\n"
set errorInfo ""
}
.dummy configure -command {
set PARA [.comm.ent get]
if {$PARA != ""} {
GAG_Connect $PARA
} else {
.log.text insert end \n>
.log.text see end
scan [.log.text index end] %d.%d L T
incr L -1
.log.text mark set insert $L.end
}
}
Delete_Button
} else {
if {$COMMAND != "exit"} {
if {[string first "@@" $COMMAND] != 0} {
.log.text insert end $COMMAND\n
lappend HISTORY "$COMMAND"
if [winfo exists .ch] {
.ch.main.text insert end $COMMAND\n
}
}
Command_Active $COMMAND
.comm.ent delete 0 end
} else {
Message_Skeleton -icon question -button {Yes No} \
-message "Do you exit GEANT?"
if {$FONT != ""} {
Change_Font $FONT .msgskeleton
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .msgskeleton
}
.msgskeleton.butt.0 configure -command {
set COMMAND [.comm.ent get]
.log.text insert end $COMMAND\n
lappend HISTORY $COMMAND
if [winfo exists .ch] {
.ch.main.text insert end $COMMAND\n
}
puts $GEANT_ID $COMMAND
catch {close $GEANT_ID}
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
.dummy configure -command {
set PARA [.comm.ent get]
if {$PARA != ""} {
GAG_Connect $PARA
} else {
.log.text insert end \n>
.log.text see end
scan [.log.text index end] %d.%d L T
incr L -1
.log.text mark set insert $L.end
}
}
Delete_Button
destroy .msgskeleton
.comm.ent delete 0 end
}
.msgskeleton.butt.1 configure -command {
destroy .msgskeleton
.comm.ent delete 0 end
}
}
scan [.log.text index end] %d.%d L T
incr L -1
.log.text mark set insert $L.end
}
.log.text see end
}
# Parse Line
proc Parse_Line {} {
global GEANT_ID PROMPT FLAG_B FLAG_P FLAG_D FONT F_COLOR B_COLOR \
errorCode errorInfo PARAM COMMAND_NAME Protocol DISABLE \
COMM_RANGE
if {![winfo exists .log.text]} {
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 0
}
if [eof $GEANT_ID] {
catch {close $GEANT_ID}
if {$errorCode != "NONE" && $errorInfo != ""} {
.log.text insert end "Error.\n\n$errorCode\n\n$errorInfo\n"
set errorInfo ""
set errorCode NONE
} elseif {$errorCode != "NONE"} {
.log.text insert end "Error.\n\n$errorCode\n"
set errorCode NONE
} elseif {$errorInfo != ""} {
.log.text insert end "Error.\n\n$errorInfo\n"
set errorInfo ""
}
.dummy configure -command {
set PARA [.comm.ent get]
if {$PARA != ""} {
GAG_Connect $PARA
} else {
.log.text insert end \n>
.log.text see end
scan [.log.text index end] %d.%d L T
incr L -1
.log.text mark set insert $L.end
}
}
Command_Passive
Delete_Button
.log.text see end
.comm.ent delete 0 end
return
} else {
set Line [read $GEANT_ID]
if {$Line == "\n"} {
.log.text insert end \n
}
set LINES [split $Line \n]
}
set n [llength $LINES]
for {set i 0} {$i < $n} {incr i} {
set SWITCH [lindex $LINES $i]
set SWITCH [string trimleft $SWITCH]
set SWITCH [lindex [split $SWITCH] 0]
switch -- $SWITCH {
"@@G4UIterminal" {
Message_Skeleton -icon warning -button O.K. \
-message "This program must run in the terminal mode. Let's close this session. GAG is ready to run other programs compiled with the GAG mode."
if {$FONT != ""} {
Change_Font $FONT .msgskeleton
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .msgskeleton
}
.msgskeleton.butt.0 configure -command {
set PID [pid $GEANT_ID]
catch {exec kill $PID}
destroy .msgskeleton
#exit
}
#.msgskeleton.butt.0 configure -command {
#set UIterminalMode 1
#focus .comm.ent
#.comm.ent delete 0 end
#.dummy configure -command {
# set PARA [.comm.ent get]
# if {$PARA != ""} {
# GAG_Command $PARA
# } else {
# .log.text insert end \n$PROMPT
# .log.text see end
# scan [.log.text index end] %d.%d L T
# incr L -1
# .log.text mark set insert $L.end
# }
#}
#destroy .msgskeleton
########
#}
}
"@@maketree_start" {
if {[llength [winfo children .mbutt]] > 1} {
Delete_Button
}
set FLAG_B 1
}
"@@maketree_end" {
set FLAG_B 0
}
"@@PROMPT" {
set PROMPT [lindex $LINES $i]
set HEAD [expr [string first \" $PROMPT] + 1]
set TAIL [expr [string last \" $PROMPT] - 1]
if {$HEAD <= $TAIL} {
set PROMPT [string range $PROMPT $HEAD $TAIL]>
} else {
set PROMPT ">"
}
}
"@@Ask" {
.log.text insert end $Line
.log.text see end
Command_Passive
.dummy configure -command {
focus .comm.ent
set ANSWER [.comm.ent get]
if {$ANSWER != ""} {
GAG_Command $ANSWER
.log.text insert end \n$ANSWER
.log.text see end
}
}
}
"@@parameter_start" {
set FLAG_P 1
}
"@@parameter_end" {
if {[info exists COMM_RANGE]} {
unset COMM_RANGE
}
if {[winfo exists .[join [split $FLAG_P "/"] ""]]} {
Put_Param $FLAG_P
.[join [split $FLAG_P "/"] ""].main.para.list selection set 0
focus .[join [split $FLAG_P "/"] ""].main.val.in.ent
set NAME [selection get]
if {[info exists PARAM($FLAG_P.$NAME.candidate)] \
&& $PARAM($FLAG_P.$NAME.candidate) != ""} {
Candidate $NAME
}
}
set FLAG_P 0
}
"@@DisableListBegin" {
if {[info exists DISABLE]} {
unset DISABLE
}
set FLAG_D 1
}
"@@DisableListEnd" {
if {[llength [winfo children .mbutt]] > 1} {
Command_Disable
}
set FLAG_D 0
}
"@@ErrResult" {
set Err [lindex $LINES $i]
set HEAD [expr [string first \" $Err] + 1]
set TAIL [expr [string last \" $Err] - 1]
if {$HEAD < $TAIL} {
set Err [string range $Err $HEAD $TAIL]
} elseif {$HEAND == $TAIL} {
set Err " "
} else {
set Err ""
}
Message_Skeleton -icon error -button O.K. \
-message $Err
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}
}
"@@CurrentValue" {
set INDEX [.log.text search -backwards -regexp -- "\\?/" end 1.0]
scan $INDEX %d.%d LINE HEAD
set W [.log.text get $LINE.[expr $HEAD + 1] $LINE.end]
set Current [lrange [split [lindex $LINES $i]] 1 end]
.log.text insert end $Current\n
if {[llength $PARAM($COMMAND_NAME($W))] != [llength $Current]} {
Message_Skeleton -icon error -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}
}
for {set j 0} {$j < [llength $Current]} {incr j} {
set PARAM($COMMAND_NAME($W).[lindex $PARAM($COMMAND_NAME($W)) $j].now) [lindex $Current $j]
}
if {[winfo exists .$W]} {
Put_Param $COMMAND_NAME($W)
}
}
"@@Version" {
if {[lindex [split [lindex $LINES $i]] 1] != $Protocol} {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\nNo match this protocol version."
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}
}
}
"@@State" {}
"" {}
default {
if {$SWITCH == $PROMPT} {
scan [.log.text index end] %d.%d L T
incr L -1
scan [.log.text index $L.end] %d.%d L T
if {[.log.text get $L.0 $L.$T] != $PROMPT} {
.log.text insert end $PROMPT
Command_Passive
}
if {[string first "@@parameter_start" [lindex $LINES $i]] > 0} {
set FLAG_P 1
} elseif {[string first "@@maketree_start" [lindex $LINES $i]] > 0} {
set FLAG_B 1
} elseif {[string first "@@parameter_end" [lindex $LINES $i]] > 0} {
set FLAG_P 0
} elseif {[string first "@@maketree_end" [lindex $LINES $i]] > 0} {
set FLAG_B 0
}
.log.text see end
scan [.log.text index end] %d.%d L T
incr L -1
.log.text mark set insert $L.end
} elseif {$FLAG_B == 1 && $FLAG_P != "0"} {
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}
} elseif {$FLAG_D == 1} {
set DISABLE [lappend DISABLE $SWITCH]
} elseif {$FLAG_B == 1} {
Make_Button [lindex $LINES $i]
} elseif {$FLAG_P != "0"} {
Make_Param [lindex $LINES $i]
} else {
.log.text insert end [lindex $LINES $i]\n
.log.text see end
scan [.log.text index end] %d.%d L T
incr L -1
.log.text mark set insert $L.end
}
}
}
}
if {[string index $Line [expr [string length $Line] -1]] != "\n"} {
if {$Line != "\n"} {
.log.text delete insert
.log.text see insert
}
}
}
# Analyze command & Make button
proc Make_Button LINE {
global FONT F_COLOR B_COLOR HELP
if {![winfo exists .mbutt]} {
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 0
}
if {![winfo exists .help]} {
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 0
}
set CUT [string first "@@" $LINE]
if {$CUT >= 0} {
set SWITCH [string range $LINE $CUT end]
set CUT [string first " " $SWITCH]
if {$CUT >= 0} {
set SWITCH [string range $SWITCH 0 [expr $CUT - 1]]
}
} else {
set SWITCH ""
}
switch -glob -- $SWITCH {
"@@title" {
set CUT [string first "\"" $LINE]
if {$CUT >= 0} {
set HELP_STRING [string range $LINE [expr $CUT + 1] end]
set HELP_STRING [Another_Line $HELP_STRING]
set CUT [string last "\"" $HELP_STRING]
if {$CUT >= 0} {
set HELP_STRING [string range $HELP_STRING 0 [expr $CUT - 1]]
} else {
Message_Skeleton -icon error -button O.K. \
-message "Cannot find last \".\n$HELP_STRING"
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 HELP_STRING ""
}
set LINE [string trim [lindex [split $LINE] 0] /]
if {[string first / $LINE] >= 0} {
set LINE [string trim [lindex [split $LINE] 0] /]
set CUT [string first / $LINE]
set HEAD [string range $LINE 0 [expr $CUT - 1]]
set PATH [string range $LINE $CUT end]
set CUT [string last / $PATH]
set TAIL [string range $PATH [expr $CUT + 1] end]
set PATH [string range $PATH 0 [expr $CUT -1]]
set PATH [join [split $PATH "/"] "."]
set W .mbutt.$HEAD.menu$PATH
set LAST [$W index last]
set HELP($W.$LAST) $HELP_STRING
} else {
set W .mbutt.$LINE
set HELP($W) $HELP_STRING
}
}
"@@cascade" {
set LINE [string trim [lindex [split $LINE] 0] /]
set CUT [string first / $LINE]
set HEAD [string range $LINE 0 [expr $CUT - 1]]
set PATH [string range $LINE $CUT end]
set CUT [string last / $PATH]
set TAIL [string range $PATH [expr $CUT + 1] end]
set PATH [string range $PATH 0 [expr $CUT -1]]
set PATH [join [split $PATH "/"] "."]
set W .mbutt.$HEAD.menu$PATH
$W add cascade -label $TAIL -menu $W.$TAIL
menu $W.$TAIL -tearoff 0
set HELP($W.$TAIL.none) ""
bind $W.$TAIL <Motion> {
.help configure -text $HELP(%W.[%W index active])
}
if {$FONT != ""} {
Change_Font $FONT $W.$TAIL
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR $W.$TAIL
}
}
"@@command" {
set LINE [string trim [lindex [split $LINE] 0] /]
set CUT [string first / $LINE]
set HEAD [string range $LINE 0 [expr $CUT - 1]]
set PATH [string range $LINE $CUT end]
set CUT [string last / $PATH]
set TAIL [string range $PATH [expr $CUT + 1] end]
set PATH [string range $PATH 0 [expr $CUT -1]]
set PATH [join [split $PATH "/"] "."]
set W .mbutt.$HEAD.menu$PATH
###### DEBUG 6-19
set NULLCOMMAND [string match *..* $W]
if {$NULLCOMMAND == 0} {
$W add command -label $TAIL -command "Param /$LINE"
} else {
.log.text insert end "Invalid command: $LINE\n"
}
##### DEBUG 6-19 end
}
default {
set LINE [string trim $LINE /]
if {[string first / $LINE] >= 0} {
Message_Skeleton -icon error -button O.K. \
-message "Error!\nCheck this GEANT code.\n\n$LINE"
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 {
menubutton .mbutt.$LINE -text $LINE -relief raised \
-bd 3 -menu .mbutt.$LINE.menu \
-highlightthickness 0
pack .mbutt.$LINE -side left
menu .mbutt.$LINE.menu -tearoff 0
set HELP(.mbutt.$LINE.menu.none) ""
bind .mbutt.$LINE <Enter> {
if [info exists HELP(%W)] {
.help configure -text $HELP(%W)
}
}
bind .mbutt.$LINE <Leave> {
.help configure -text ""
}
bind .mbutt.$LINE.menu <Motion> {
if [info exists HELP(%W.[%W index active])] {
.help configure -text $HELP(%W.[%W index active])
}
}
if {$FONT != ""} {
Change_Font $FONT .mbutt.$LINE
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .mbutt.$LINE
}
}
}
}
}
# Delete Button
proc Delete_Button {} {
global PARAM COMMAND_NAME FONT F_COLOR B_COLOR
if {![winfo exists .mbutt]} {
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 0
}
if [info exists PARAM] {
unset PARAM
}
if [info exists COMMAND_NAME] {
unset COMMAND_NAME
}
eval destroy [lrange [winfo children .mbutt] 1 end]
.comm.label configure -text Command
.log.text insert end "> "
.log.text see end
foreach W [winfo children .] {
switch -- $W {
\.msgskeleton -
\.mbutt -
\.space0 -
\.log -
\.space1 -
\.comm -
\.help -
\.dummy -
\.cd -
\.ch -
\.ss -
\.sl {}
default {
destroy $W
}
}
}
}
# Command button state is normal
proc Command_Passive {} {
. configure -cursor ""
.log.text configure -cursor ""
.comm.ent configure -cursor "" -state normal
.comm.ent delete 0 end
if [winfo exists .ch] {
.ch.main.text configure -cursor "" -state normal
}
.mbutt.function.command entryconfigure last -state normal
foreach W [lrange [winfo children .mbutt] 1 end] {
$W configure -state normal
}
foreach W [winfo children .] {
switch -- $W {
\.msgskeleton -
\.mbutt -
\.space0 -
\.log -
\.space1 -
\.comm -
\.help -
\.dummy -
\.cd -
\.ch -
\.ss -
\.sl {}
default {
$W.butt.comm configure -state normal
}
}
}
}
# Command button state is disable
proc Command_Active COMMAND {
global GEANT_ID
puts $GEANT_ID $COMMAND
. configure -cursor watch
.log.text configure -cursor watch
.comm.ent configure -cursor watch -state disabled
if [winfo exists .ch] {
.ch.main.text configure -cursor watch -state disabled
}
.mbutt.function configure -cursor ""
.mbutt.function.command entryconfigure last -state disabled
foreach W [lrange [winfo children .mbutt] 1 end] {
$W configure -state disabled
}
foreach W [winfo children .] {
switch -- $W {
\.msgskeleton -
\.mbutt -
\.space0 -
\.log -
\.space1 -
\.comm -
\.help -
\.dummy -
\.cd -
\.ch -
\.ss -
\.sl {}
default {
$W.butt.comm configure -state disabled
}
}
}
}
# Disable menu button
proc Command_Disable {} {
global DISABLE FONT F_COLOR B_COLOR
if {[llength [winfo children .mbutt]] <= 1} {
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}
}
foreach LIST $DISABLE {
set END [expr [string length $LIST] - 1]
if {[string index $LIST $END] == "/"} {
incr END -1
set LIST [string range $LIST 0 $END]
}
set END [string last "\/" $LIST]
if {$END == 0} {
set LIST [join [split $LIST "/"] "."]
$LIST configure -state disabled
return
} elseif {$END < 0} {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!Check disable command list."
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}
}
set Category [string range $LIST 0 [expr $END -1]]
set Label [string range $LIST [expr $END + 1] end]
set Category [join [split $Category "/"] "."]
set Category [join [linsert [split $Category "\."] 2 menu] "\."]
.mbutt$Category entryconfigure [.mbutt$Category index $Label] -state disabled
}
}
@@ -0,0 +1,138 @@
## GAGdirectory
## (GAG procedure)
## Procedures
# make "cd" command window
##
# displaying current dir name only
##
## k.ohtubo(Tubocky)
##
## 1998.3.16
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
proc Directory {} {
global FONT F_COLOR B_COLOR env errorCode errorInfo
if {![winfo exists .comm.ent]} {
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 $BCOLOR .msgskeleton
}
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
return
}
if [winfo exists .cd] {
raise .cd
focus .cd.name.ent
.cd.butt.b1 invoke
Put_File_List .cd
set END [string length $env(HOME)]
set PATH ~[string range $env(G_PATH) $END end]
##supress .cd.info.label1 configure -text $PATH
set dlist [file split $PATH]
set cdir [lindex $dlist end]
.cd.info.label1 configure -text $cdir
return
}
File_List_Skeleton .cd
.cd.butt.b0 configure -text "Change directory" -command {
set NAME [.cd.name.ent get]
if [file isdirectory $env(G_PATH)/$NAME] {
Change_Path $NAME
set END [string length $env(HOME)]
set PATH ~[string range $env(G_PATH) $END end]
##suppress .cd.info.label1 configure -text $PATH
set dlist [file split $PATH]
set cdir [lindex $dlist end]
.cd.info.label1 configure -text $cdir
.cd.butt.b1 invoke
Put_File_List .cd
if [winfo exists .controlexecute] {
.controlexecute.main.dir.current configure -text $PATH
Put_File_List .controlexecute.main.dir
}
} elseif [file executable $env(G_PATH)/$NAME] {
.comm.ent delete 0 end
.comm.ent insert end $NAME
.cd.name.ent delete 0 end
}
}
.cd.butt.b1 configure -text Clear -command {
.cd.select.list see 0
.cd.select.list selection clear 0 end
focus .cd.name.ent
.cd.name.ent delete 0 end
set END [string length $env(HOME)]
set PATH ~[string range $env(G_PATH) $END end]
##supress .cd.info.label1 configure -text $PATH
set dlist [file split $PATH]
set cdir [lindex $dlist end]
.cd.info.label1 configure -text $cdir
Put_File_List .cd
}
.cd.butt.b2 configure -text Cancel -command {
if [winfo exists .cd] {
destroy .cd
}
}
.cd.name.label configure -text Directory
.cd.info.label0 configure -text "Current Dir: "
# Binding
bind .cd.select.list <ButtonRelease> {
catch {.cd.name.ent delete 0 end}
catch {.cd.name.ent insert end [selection get]}
.cd.butt.b0 invoke
if {$errorInfo != ""} {
set errorInfo ""
}
if {$errorCode != "NONE"} {
set errorCode NONE
}
}
bind .cd.select.list <Double-Button> {
if {[.comm.ent get] != ""} {
.dummy invoke
raise .
focus .comm.ent
}
}
bind .cd.select.list <Double-ButtonRelease> {
.comm.ent delete 0 end
}
bind .cd.name.ent <Return> {.cd.butt.b0 invoke}
bind .cd <Enter> {
raise .cd
focus .cd.name.ent
}
wm title .cd "File Chooser"
Put_File_List .cd
if {$FONT != ""} {
Change_Font $FONT .cd
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .cd
}
Win_Size .cd
Tab_off
Control
}
+763
View File
@@ -0,0 +1,763 @@
## GAGhistory
## (GAG procedure)
## Procedures
## make Command History window, execute a memorised command, save to a file
##
## k.ohtubo(Tubocky)
##
## 1998.3.16
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
proc Command_History {} {
global HISTORY FONT F_COLOR B_COLOR
if {![winfo exists .log.text]} {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\nWhat's happen?"
if {$FONT != ""} {
Chnage_Font $FONT .msgskeleton
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .msgskeleton
}
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
return
}
if {![info exists HISTORY]} {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\nWhat's happen?"
if {$FONT != ""} {
Chnage_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 .ch] {
raise .ch
focus .ch.main.text
return
}
toplevel .ch -highlightthickness 0
wm title .ch "Command History Manager"
wm protocol .ch WM_DELETEWINDOW {
.comm.ent delete 0 end
}
frame .ch.butt -highlightthickness 0
pack .ch.butt -side top -fill x
menubutton .ch.butt.func -text Function -menu .ch.butt.func.menu \
-bd 3 -relief raised -highlightthickness 0
pack .ch.butt.func -side left
menu .ch.butt.func.menu -tearoff 0
.ch.butt.func.menu add command -label Clear -command {
.ch.main.text delete 0.0 end
.comm.ent delete 0 end
}
.ch.butt.func.menu add command -label Restore -command {
.ch.butt.func.menu invoke 0
foreach comm $HISTORY {
.ch.main.text insert end $comm\n
}
}
.ch.butt.func.menu add command -label "Save command history" \
-command CH_Save_Window
.ch.butt.func.menu add command -label Search -command Search_String_CH
.ch.butt.func.menu add separator
.ch.butt.func.menu add command -label "Close command history manager" \
-command {destroy .ch}
frame .ch.main -highlightthickness 0
pack .ch.main -side top -fill both -expand 1
text .ch.main.text -width 50 -bd 2 -relief sunken \
-yscrollcommand ".ch.main.scroll set" -highlightthickness 0
pack .ch.main.text -side left -fill both -expand 1
scrollbar .ch.main.scroll -command ".ch.main.text yview" \
-highlightthickness 0
pack .ch.main.scroll -side left -fill y
# Binding
bind .ch.main.text <ButtonRelease> {
scan [.ch.main.text index insert] %%d.%%d LINE HEAD
.comm.ent delete 0 end
.comm.ent insert end [.ch.main.text get $LINE.0 $LINE.end]
}
bind .ch.main.text <Double-Button> {
scan [.ch.main.text index insert] %%d.%%d LINE HEAD
.comm.ent delete 0 end
.comm.ent insert end [.ch.main.text get $LINE.0 $LINE.end]
.dummy invoke
}
bind .ch.main.text <Double-ButtonRelease> {.comm.ent delete 0 end}
bind .ch <Enter> {
focus .ch.main.text
}
if {$FONT != ""} {
Change_Font $FONT .ch
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .ch
}
Win_Size .ch
Tab_off
Control
foreach comm $HISTORY {
.ch.main.text insert end $comm\n
}
}
# make Save Command History window
proc CH_Save_Window {} {
global FONT F_COLOR B_COLOR errorCode errorInfo env
if [winfo exists .sach] {
raise .sach
focus .sach.name.ent
return
}
set DIR $env(G_PATH)
File_List_Skeleton .sach
.sach.butt.b0 configure -text "Save command history" -command {
set Name [.sach.name.ent get]
if {$Name != ""} {
if [file isdirectory $env(G_PATH)/$Name] {
Change_Path $Name
set END [string length $env(HOME)]
set PATH ~[string range $env(G_PATH) $END end]
### display the current dir name
set dlist [file split $PATH]
set cdir [lindex $dlist end]
.sach.info.label1 configure -text $cdir
## .sach.info.label1 configure -text $PATH
.sach.butt.b1 invoke
Put_File_List .sach
} elseif [file executable $env(G_PATH)/$Name] {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\n\"$Name\"is an executable file."
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 [file isfile $env(G_PATH)/$Name] {
Message_Skeleton -icon question -button {Yes No} \
-message "$Name: Overwrite?"
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
CH_Save
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
} else {
Message_Skeleton -icon question -button {Yes No} \
-message "$Name: New file?"
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
CH_Save
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
}
}
}
.sach.butt.b1 configure -text Clear -command {
.sach.select.list see 0
.sach.select.list selection clear 0 end
focus .sach.name.ent
.sach.name.ent delete 0 end
set END [string length $env(HOME)]
set PATH ~[string range $env(G_PATH) $END end]
### display the current dir name
set dlist [file split $PATH]
set cdir [lindex $dlist end]
.sach.info.label1 configure -text $cdir
## .sach.info.label1 configure -text $PATH
Put_File_List .sach
}
.sach.butt.b2 configure -text Cancel -command {
destroy .sach
}
# Binding
bind .sach.select.list <ButtonRelease> {
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]
### display the current dir name
set dlist [file split $PATH]
set cdir [lindex $dlist end]
.sach.info.label1 configure -text $cdir
## .sach.info.label1 configure -text $PATH
.sach.butt.b1 invoke
Put_File_List .sach
} else {
.sach.name.ent delete 0 end
.sach.name.ent insert end $GET
}
}
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
}
bind .sach.select.list <Double-Button> {
set Name [.sach.name.ent get]
if {$Name != ""} {
if [file executable $env(G_PATH)/$Name] {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\n\"$Name\"is an executable file."
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 [file isfile $env(G_PATH)/$Name] {
Message_Skeleton -icon question -button {Yes No} \
-message "$Name: Overwrite?"
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
CH_Save
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
} else {
Message_Skeleton -icon question -button {Yes No} \
-message "$Name: New file?"
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
CH_Save
}
.msgekeleton.butt.1 configure -command {destroy .msgskeleton}
}
}
}
bind .sach.select.list <Double-ButtonRelease> {}
bind .sach.name.ent <Return> {.sach.butt.b0 invoke}
bind .sach <Enter> {
raise .sach
focus .sach.name.ent
}
wm title .sach "Save command history"
wm protocol .sach WM_DELETEWINDOW {
grab release .sach
Change_Path $DIR
}
Put_File_List .sach
if {$FONT != ""} {
Change_Font $FONT .sach
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .sach
}
Win_Size .sach
Tab_off
Control
grab set .sach
}
# save Command Histry & Check file open
proc CH_Save {} {
global FONT F_COLOR B_COLOR errorCode errorInfo env
if {![winfo exists .sach]} {
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
}
set Name [.sach.name.ent get]
if {![catch {open $env(G_PATH)/$Name w} file_ID]} {
puts $file_ID [.ch.main.text get 0.0 end]
close $file_ID
} else {
Message_Skeleton -icon warning -button O.K. \
-message "Cannot open."
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 {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
}
# make Search Command History window
proc Search_String_CH {} {
global FONT SEARCH REPLACE F_COLOR B_COLOR
if {![winfo exists .ch.main.text]} {
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 .sech] {
raise .sech
focus .sech.ent.search
return
}
toplevel .sech -highlightthickness 0
wm title .sech "Search Command History"
wm protocol .sech WM_DELETE_WINDOW {
.ch.main.text tag remove SEARCH_TAG 1.0 end
.ch.main.text tag remove SEARCH_ALL_TAG 1.0 end
destroy .sech
}
frame .sech.butt -highlightthickness 0
pack .sech.butt -side top -fill x
button .sech.butt.b0 -text Search -bd 3 -highlightthickness 0 \
-command {
if {[.sech.ent.search get] != ""} {
if {![Search_CH]} {
set STRING [.sech.ent.search get]
Message_Skeleton -icon info -button O.K. \
-message "$STRING:No match."
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 {
Message_Skeleton -icon error -button O.K. \
-message "Input String."
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}
}
}
button .sech.butt.b1 -text Replace -bd 3 -highlightthickness 0 \
-command {
if {[.sech.ent.search get] != ""} {
if {[.sech.ent.replace get] == ""} {
Message_Skeleton -icon question -button {Yes No} \
-message "Check!\nDelete [.sech.ent.search get]?"
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
Replace_CH
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
} else {
Replace_CH
}
} else {
Message_Skeleton -icon error -button O.K. \
-message "Input String."
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}
}
}
menubutton .sech.butt.b2 -text Option -menu .sech.butt.b2.set \
-relief raised -bd 3 -highlightthickness 0
menu .sech.butt.b2.set -tearoff 0
.sech.butt.b2.set add cascade -label Search -menu .sech.butt.b2.set.search
.sech.butt.b2.set add cascade -label Replace \
-menu .sech.butt.b2.set.replace
menu .sech.butt.b2.set.search -tearoff 0
.sech.butt.b2.set.search add radiobutton -label Up \
-variable SEARCH -value Up
.sech.butt.b2.set.search add radiobutton -label Down \
-variable SEARCH -value Down
menu .sech.butt.b2.set.replace -tearoff 0
.sech.butt.b2.set.replace add radiobutton -label "Only One" \
-variable REPLACE -value One
.sech.butt.b2.set.replace add radiobutton -label "About All" \
-variable REPLACE -value All
button .sech.butt.b3 -text Clear -bd 3 -highlightthickness 0 \
-command {
.sech.ent.search delete 0 end
.sech.ent.replace delete 0 end
.ch.main.text tag remove SEARCH_TAG 1.0 end
.ch.main.text tag remove SEARCH_ALL_TAG 1.0 end
focus .sech.ent.search
.ch.main.text see end
}
button .sech.butt.b4 -text Cancel -bd 3 -highlightthickness 0 \
-command {
if [winfo exists .sech] {destroy .sech}
.ch.main.text tag remove SEARCH_TAG 1.0 end
.ch.main.text tag remove SEARCH_ALL_TAG 1.0 end
}
pack .sech.butt.b0 .sech.butt.b1 .sech.butt.b2 \
.sech.butt.b3 .sech.butt.b4 -side left -fill x
frame .sech.space -highlightthickness 0
pack .sech.space -side top -fill both -expand 1
frame .sech.label -highlightthickness 0
pack .sech.label -side left
label .sech.label.search -text Search -anchor w \
-highlightthickness 0
pack .sech.label.search -side top -fill x
label .sech.label.replace -text Replace -anchor w \
-highlightthickness 0
pack .sech.label.replace -side top -fill x
frame .sech.ent -highlightthickness 0
pack .sech.ent -side left -fill x -expand 1
entry .sech.ent.search -highlightthickness 0
pack .sech.ent.search -side top -fill x
entry .sech.ent.replace -highlightthickness 0
pack .sech.ent.replace -side top -fill x
focus .sech.ent.search
Tab_off
Control
foreach BIND {Return Tab Shift-Tab Down Control-n} {
bind .sech.ent.search <$BIND> {focus .sech.ent.replace}
}
foreach BIND {Return Tab Shift-Tab Up Control-p} {
bind .sech.ent.replace <$BIND> {focus .sech.ent.search}
}
if {$FONT != ""} {
Change_Font $FONT .sech
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .sech
}
Win_Size .sech
wm resizable .sech 1 0
}
# Search string on Command Histry window
proc Search_CH {} {
global SEARCH FONT F_COLOR B_COLOR
if {![winfo exists .sech.ent.search]} {
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 1
}
.ch.main.text tag remove SEARCH_ALL_TAG 1.0 end
.ch.main.text tag configure SEARCH_ALL_TAG \
-foreground #fffffffff -background #000000000
set CURSOL [.ch.main.text index insert]
set CUR 1.0
set STRING [.sech.ent.search get]
if {$STRING != ""} {
while {[set CUR [.ch.main.text search -count LENGTH -regexp --\
$STRING $CUR end]] != ""} {
.ch.main.text tag add SEARCH_ALL_TAG \
$CUR "$CUR + $LENGTH char"
set CUR [.ch.main.text index "$CUR + $LENGTH char"]
}
}
.ch.main.text index $CURSOL
switch $SEARCH {
Up {
if [Search_Up_CH] {
return 1
} else {
return 0
}
}
Down {
if [Search_Down_CH] {
return 1
} else {
return 0
}
}
default {
Message_Skeleton -icon error -button O.K. \
-message "Click \"Option\" button.\nAnd check search up or down."
if {$FONT != ""} {
Change_Font $FONT .msgskeleton
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Chane_Color $F_COLOR $B_COLOR .msgskeleton
}
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
return 1
}
}
}
# Search mode is "up"
proc Search_Up_CH {} {
.ch.main.text tag remove SEARCH_TAG 1.0 end
.ch.main.text tag configure SEARCH_TAG \
-foreground #fffffffff -background #ccc000000
set CURSOL [.ch.main.text index insert]
set STRING [.sech.ent.search get]
set STOP 1.0
set INDEX [.ch.main.text search -backwards \
-count LENGTH -regexp -- $STRING $CURSOL $STOP]
if {$INDEX != ""} {
scan $INDEX %d.%d LINE HEAD
set TAIL [expr $HEAD + $LENGTH]
.ch.main.text tag add SEARCH_TAG $LINE.$HEAD $LINE.$TAIL
.ch.main.text mark set insert $LINE.$HEAD
.ch.main.text yview -pickplace insert
} else {
.ch.main.text mark set insert 1.0
return 0
}
return 1
}
# Search mode is "down"
proc Search_Down_CH {} {
.ch.main.text tag remove SEARCH_TAG 1.0 end
.ch.main.text tag configure SEARCH_TAG \
-foreground #fffffffff -background #ccc000000
set CURSOL [.ch.main.text index insert]
set STRING [.sech.ent.search get]
set STOP [.ch.main.text index end]
set INDEX [.ch.main.text search -count LENGTH -regexp \
-- $STRING $CURSOL $STOP]
if {$INDEX != ""} {
scan $INDEX %d.%d LINE HEAD
set TAIL [expr $HEAD + $LENGTH]
.ch.main.text tag add SEARCH_TAG $LINE.$HEAD $LINE.$TAIL
.ch.main.text mark set insert $LINE.$TAIL
.ch.main.text yview -pickplace insert
} else {
.ch.main.text mark set insert end
return 0
}
return 1
}
# Replace string on Command Histry window
proc Replace_CH {} {
global REPLACE FONT F_COLOR B_COLOR errorCode errorInfo
if {![winfo exists .sech.ent.replace]} {
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
}
set STRING [.sech.ent.search get]
switch $REPLACE {
One {
if {![Replace_One_CH]} {
Message_Skeleton -icon info -button O.K. \
-message "$STRING:No match."
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}
}
}
All {
Message_Skeleton -icon question -button {Yes No} \
-message "Check!\nReplace all?"
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
Replace_All_CH
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
}
default {
Message_Skeleton -icon warning -button O.K. \
-message "Click \"Option\" button.\nAnd check replace one or all."
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}
}
}
}
# Replace mode is "one"
proc Replace_One_CH {} {
if {[set RANGE [.ch.main.text tag range SEARCH_TAG]] == ""} {
if {![Search_CH]} {
return 0
} else {
return 1
}
}
if {[.sech.ent.search get] != [eval ".ch.main.text get $RANGE"]} {
if {![Search_CH]} {
return 0
} else {
set RANGE [.ch.main.text tag range SEARCH_TAG]
}
}
.ch.main.text tag remove SEARCH_TAG 1.0 end
eval .ch.main.text delete $RANGE
set INSERT [lindex [split $RANGE] 0]
if {![catch {.sech.ent.replace get} STRING]} {
.ch.main.text insert $INSERT $STRING
scan $INSERT %d.%d LINE HEAD
set TAIL [expr [string length $STRING] + $HEAD]
.ch.main.text tag add SEARCH_TAG $LINE.$HEAD $LINE.$TAIL
if {![Search_CH]} {return 0}
}
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
return 1
}
# Replace mode is "all"
proc Replace_All_CH {} {
while {[Replace_One_CH] != 0} {}
}
+953
View File
@@ -0,0 +1,953 @@
## 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> {}
}
+303
View File
@@ -0,0 +1,303 @@
## GAGsavelog
## (GAG procedure)
## Save log to a file. check before Save
##
# 1998 7 5 ; display only the current dir name
## k.ohtubo(Tubocky)
##
## 1998.3.16
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
proc Before_Save {} {
global SAVE_RANGE FONT F_COLOR B_COLOR
if {![winfo exists .log.text]} {
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 {[.log.text tag range SEARCH_ALL_TAG] != ""} {
Message_Skeleton -icon question -button {O.K. Cancel} \
-message "Save only searched strings."
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
set SAVE_RANGE [.log.text tag range SEARCH_ALL_TAG]
Save_Window
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
} elseif {[.log.text tag range sel] != ""} {
Message_Skeleton -icon question -button {O.K. Cancel} \
-message "Save only selected range."
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
set SAVE_RANGE [.log.text tag range sel]
Save_Window
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
} else {
set SAVE_RANGE [list 0.0 [.log.text index end]]
Save_Window
}
}
# make Save window
proc Save_Window {} {
if [winfo exists .sl] {
raise .sl
focus .sl.name.ent
return
}
global FONT F_COLOR B_COLOR errorCode errorInfo env
set DIR $env(G_PATH)
File_List_Skeleton .sl
.sl.butt.b0 configure -text "Save Log" -command {
set Name [.sl.name.ent get]
if {$Name != ""} {
if [file isdirectory $env(G_PATH)/$Name] {
Change_Path $Name
set END [string length $env(HOME)]
set PATH ~[string range $env(G_PATH) $END end]
### split the current dir
set dlist [file split $PATH]
set cdir [lindex $dlist end]
.sl.info.label1 configure -text $cdir
### .sl.info.label1 configure -text $PATH
.sl.butt.b1 invoke
Put_File_List .sl
} elseif [file executable $env(G_PATH)/$Name] {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\n\"$Name\" is an executable file."
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 [file isfile $env(G_PATH)/$Name] {
Message_Skeleton -icon question -button {Yes No} \
-message "$Name: Overwrite?"
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
Save
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
} else {
Message_Skeleton -icon question -button {Yes No} \
-message "$Name: New file?"
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
Save
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
}
}
}
.sl.butt.b1 configure -text Clear -command {
.sl.select.list see 0
.sl.select.list selection clear 0 end
focus .sl.name.ent
.sl.name.ent delete 0 end
set END [string length $env(HOME)]
set PATH ~[string range $env(G_PATH) $END end]
### split the current dir
set dlist [file split $PATH]
set cdir [lindex $dlist end]
.sl.info.label1 configure -text $cdir
## .sl.info.label1 configure -text $PATH
Put_File_List .sl
}
.sl.butt.b2 configure -text Cancel -command {
destroy .sl
}
# Binding
bind .sl.select.list <ButtonRelease> {
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]
### split the current dir
set dlist [file split $PATH]
set cdir [lindex $dlist end]
.sl.info.label1 configure -text $cdir
## .sl.info.label1 configure -text $PATH
.sl.butt.b1 invoke
Put_File_List .sl
} else {
.sl.name.ent delete 0 end
.sl.name.ent insert end $GET
}
}
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
}
bind .sl.select.list <Double-Button> {
set Name [.sl.name.ent get]
if {$Name != ""} {
if [file executable $env(G_PATH)/$Name] {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\n\"$Name\" is executable file."
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 [file isfile $env(G_PATH)/$Name] {
Message_Skeleton -icon question -button {Yes No} \
-message "$Name: Overwrite?"
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
Save
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
} else {
Message_Skeleton -icon question -button {Yes No} \
-message "$Name: New file?"
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
Save
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
}
}
}
bind .sl.select.list <Double-ButtonRelease> {}
bind .sl.name.ent <Return> {.sl.butt.b0 invoke}
bind .sl <Enter> {
raise .sl
focus .sl.name.ent
}
wm title .sl "Save Log"
wm protocol .sl WM_DELETEWINDOW {
grab release .sl
Change_Path $DIR
}
Put_File_List .sl
if {$FONT != ""} {
Change_Font $FONT .sl
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .sl
}
Win_Size .sl
Tab_off
Control
grab set .sl
}
# Save log
proc Save {} {
global SAVE_RANGE FONT F_COLOR B_COLOR errorCode errorInfo env
if {![winfo exists .sl]} {
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
}
set Name [.sl.name.ent get]
if {![catch {open $env(G_PATH)/$Name w} file_ID]} {
set LENGTH [llength $SAVE_RANGE]
for {set i 0} {$i < $LENGTH} {incr i} {
puts $file_ID [.log.text get [lindex $SAVE_RANGE $i] [lindex $SAVE_RANGE [expr $i + 1]]]
incr i
}
close $file_ID
} else {
Message_Skeleton -icon warning -button O.K. \
-message "Cannot open."
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 {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
}
@@ -0,0 +1,411 @@
## GAGsearchstring
## (GAGlogterm procedure)
# make Search String window
##
## k.ohtubo(Tubocky)
##
## 1997.3.16
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
proc Search_String {} {
global FONT SEARCH REPLACE F_COLOR B_COLOR
if {![winfo exists .log.text]} {
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 .ss] {
raise .ss
focus .ss.ent.search
return
}
toplevel .ss -highlightthickness 0
wm title .ss "Search String"
wm protocol .ss WM_DELETE_WINDOW {
.log.text tag remove SEARCH_TAG 1.0 end
.log.text tag remove SEARCH_ALL_TAG 1.0 end
destroy .ss
}
frame .ss.butt -highlightthickness 0
pack .ss.butt -side top -fill x
button .ss.butt.b0 -text Search -bd 3 -highlightthickness 0 \
-command {
if {[.ss.ent.search get] != ""} {
if {![Search]} {
set STRING [.ss.ent.search get]
Message_Skeleton -icon info -button O.K. \
-message "$STRING: No match."
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 {
Message_Skeleton -icon error -button O.K. \
-message "Input String."
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}
}
}
button .ss.butt.b1 -text Replace -bd 3 -highlightthickness 0 \
-command {
if {[.ss.ent.search get] != ""} {
if {[.ss.ent.replace get] == ""} {
Message_Skeleton -icon question -button {Yes No} \
-message "Check!\nDelete [.ss.ent.search get]?"
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
Replace
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
} else {
Replace
}
} else {
Message_Skeleton -icon error -button O.K. \
-message "Input String."
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}
}
}
menubutton .ss.butt.b2 -text Option -menu .ss.butt.b2.set \
-relief raised -bd 3 -highlightthickness 0
menu .ss.butt.b2.set -tearoff 0
.ss.butt.b2.set add cascade -label Search -menu .ss.butt.b2.set.search
.ss.butt.b2.set add cascade -label Replace \
-menu .ss.butt.b2.set.replace
menu .ss.butt.b2.set.search -tearoff 0
.ss.butt.b2.set.search add radiobutton -label Up \
-variable SEARCH -value Up
.ss.butt.b2.set.search add radiobutton -label Down \
-variable SEARCH -value Down
menu .ss.butt.b2.set.replace -tearoff 0
.ss.butt.b2.set.replace add radiobutton -label "Only One" \
-variable REPLACE -value One
.ss.butt.b2.set.replace add radiobutton -label "About All" \
-variable REPLACE -value All
button .ss.butt.b3 -text Clear -bd 3 -highlightthickness 0 \
-command {
.ss.ent.search delete 0 end
.ss.ent.replace delete 0 end
.log.text tag remove SEARCH_TAG 1.0 end
.log.text tag remove SEARCH_ALL_TAG 1.0 end
focus .ss.ent.search
.log.text see end
}
button .ss.butt.b4 -text Cancel -bd 3 -highlightthickness 0 \
-command {
if [winfo exists .ss] {destroy .ss}
.log.text tag remove SEARCH_TAG 1.0 end
.log.text tag remove SEARCH_ALL_TAG 1.0 end
}
pack .ss.butt.b0 .ss.butt.b1 .ss.butt.b2 .ss.butt.b3 .ss.butt.b4 \
-side left -fill x
frame .ss.space -highlightthickness 0
pack .ss.space -side top -fill both -expand 1
frame .ss.label -highlightthickness 0
pack .ss.label -side left
label .ss.label.search -text Search -anchor w \
-highlightthickness 0
pack .ss.label.search -side top -fill x
label .ss.label.replace -text Replace -anchor w \
-highlightthickness 0
pack .ss.label.replace -side top -fill x
frame .ss.ent -highlightthickness 0
pack .ss.ent -side left -fill x -expand 1
entry .ss.ent.search -highlightthickness 0
pack .ss.ent.search -side top -fill x
entry .ss.ent.replace -highlightthickness 0
pack .ss.ent.replace -side top -fill x
focus .ss.ent.search
Tab_off
Control
foreach BIND {Return Tab Shift-Tab Down Control-n} {
bind .ss.ent.search <$BIND> {focus .ss.ent.replace}
}
foreach BIND {Return Tab Shift-Tab Up Control-p} {
bind .ss.ent.replace <$BIND> {focus .ss.ent.search}
}
if {$FONT != ""} {
Change_Font $FONT .ss
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Change_Color $F_COLOR $B_COLOR .ss
}
Win_Size .ss
wm resizable .ss 1 0
}
# Search string on GAG main window
proc Search {} {
global SEARCH FONT F_COLOR B_COLOR
if {![winfo exists .ss.ent.search]} {
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 1
}
.log.text tag remove SEARCH_ALL_TAG 1.0 end
.log.text tag configure SEARCH_ALL_TAG \
-foreground #fffffffff -background #000000000
set CURSOL [.log.text index insert]
set CUR 1.0
set STRING [.ss.ent.search get]
if {$STRING != ""} {
while {[set CUR [.log.text search -count LENGTH -regexp --\
$STRING $CUR end]] != ""} {
.log.text tag add SEARCH_ALL_TAG \
$CUR "$CUR + $LENGTH char"
set CUR [.log.text index "$CUR + $LENGTH char"]
}
}
.log.text index $CURSOL
switch $SEARCH {
Up {
if [Search_Up] {
return 1
} else {
return 0
}
}
Down {
if [Search_Down] {
return 1
} else {
return 0
}
}
default {
Message_Skeleton -icon error -button O.K. \
-message "Click \"Option\" button.\nAnd check search up or down."
if {$FONT != ""} {
Change_Font $FONT .msgskeleton
}
if {$F_COLOR != "" && $B_COLOR != ""} {
Chane_Color $F_COLOR $B_COLOR .msgskeleton
}
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
return 1
}
}
}
# Search mode is "up"
proc Search_Up {} {
.log.text tag remove SEARCH_TAG 1.0 end
.log.text tag configure SEARCH_TAG \
-foreground #fffffffff -background #ccc000000
set CURSOL [.log.text index insert]
set STRING [.ss.ent.search get]
set STOP 1.0
set INDEX [.log.text search -backwards \
-count LENGTH -regexp -- $STRING $CURSOL $STOP]
if {$INDEX != ""} {
scan $INDEX %d.%d LINE HEAD
set TAIL [expr $HEAD + $LENGTH]
.log.text tag add SEARCH_TAG $LINE.$HEAD $LINE.$TAIL
.log.text mark set insert $LINE.$HEAD
.log.text yview -pickplace insert
} else {
.log.text mark set insert 1.0
return 0
}
return 1
}
# Search mode is "down"
proc Search_Down {} {
.log.text tag remove SEARCH_TAG 1.0 end
.log.text tag configure SEARCH_TAG \
-foreground #fffffffff -background #ccc000000
set CURSOL [.log.text index insert]
set STRING [.ss.ent.search get]
set STOP [.log.text index end]
set INDEX [.log.text search -count LENGTH -regexp \
-- $STRING $CURSOL $STOP]
if {$INDEX != ""} {
scan $INDEX %d.%d LINE HEAD
set TAIL [expr $HEAD + $LENGTH]
.log.text tag add SEARCH_TAG $LINE.$HEAD $LINE.$TAIL
.log.text mark set insert $LINE.$TAIL
.log.text yview -pickplace insert
} else {
.log.text mark set insert end
return 0
}
return 1
}
# Replace string on GAG main window
proc Replace {} {
global REPLACE FONT F_COLOR B_COLOR errorCode errorInfo
if {![winfo exists .ss.ent.replace]} {
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
}
set STRING [.ss.ent.search get]
switch $REPLACE {
One {
if {![Replace_One]} {
Message_Skeleton -icon info -button O.K. \
-message "$STRING:No match."
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}
}
}
All {
Message_Skeleton -icon question -button {Yes No} \
-message "Check!\nReplace all?"
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
Replace_All
}
.msgskeleton.butt.1 configure -command {destroy .msgskeleton}
}
default {
Message_Skeleton -icon warning -button O.K. \
-message "Click \"Option\" button.\nAnd check replace one or all."
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}
}
}
}
# Replace mode is "one"
proc Replace_One {} {
if {[set RANGE [.log.text tag range SEARCH_TAG]] == ""} {
if {![Search]} {
return 0
} else {
return 1
}
}
if {[.ss.ent.search get] != [eval ".log.text get $RANGE"]} {
if {![Search]} {
return 0
} else {
set RANGE [.log.text tag range SEARCH_TAG]
}
}
.log.text tag remove SEARCH_TAG 1.0 end
eval .log.text delete $RANGE
set INSERT [lindex [split $RANGE] 0]
if {![catch {.ss.ent.replace get} STRING]} {
.log.text insert $INSERT $STRING
scan $INSERT %d.%d LINE HEAD
set TAIL [expr [string length $STRING] + $HEAD]
.log.text tag add SEARCH_TAG $LINE.$HEAD $LINE.$TAIL
if {![Search]} {return 0}
}
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
return 1
}
# Replace mode is "all"
proc Replace_All {} {
while {[Replace_One] != 0} {}
}
+73
View File
@@ -0,0 +1,73 @@
## global variable
env
TEXT_LOG
FONT
SEARCH
REPLACE
GEANT_ID
F_COLOR
B_COLOR
PROMPT
HOME
HELP()
FLAG_B
FLAG_P
PARAM()
PRE()
COMMAND_NAME()
Win_Name
HISTORY
errorCode
errorInfo
## procedures
#GAGclearlog.proc
Clear_Log
#GAGconnect.proc
GAG_Connect COMMAND
GAG_Command COMMAND
Parse_Line
Make_Button LINE
Delete_Button
Make_Param LINE
Command_Passive
Command_Active COMMAND
#GAGdirectory
Directory
#GAGparam.proc
Param NAME
Put_Param NAME
Make_Param LINE
Pick_Up_Param LINE
Candidate PARA_NAME
Delete_Candidate W
Command_Dir W
#GAGsavelog.proc
Before_Save
Save_Window
Save
#GAGsearchstring.proc
Search_String
Search
Search_Up
Search_Down
Replace
Replace_One
Replace_All
#GAGhistory.proc
Command_History
CH_Save_Window
CH_Save
Search_String_CH
Search_CH
Search_Up_CH
Search_Down_CH
Replace_CH
Replace_One_CH
Replace_All_CH
+45
View File
@@ -0,0 +1,45 @@
# Tcl autoload index file, version 2.0
# This file is generated by the "auto_mkindex" command
# and sourced to set up indexing information for one or
# more commands. Typically each line is a command that
# sets an element in the auto_index array, where the
# element name is the name of a command and the value is
# a script that loads the command.
set auto_index(Clear_Log) [list source [file join $dir GAGclearlog.proc]]
set auto_index(Directory) [list source [file join $dir GAGdirectory.proc]]
set auto_index(Param) [list source [file join $dir GAGparam.proc]]
set auto_index(Put_Param) [list source [file join $dir GAGparam.proc]]
set auto_index(Make_Param) [list source [file join $dir GAGparam.proc]]
set auto_index(Pick_Up_Param) [list source [file join $dir GAGparam.proc]]
set auto_index(Candidate) [list source [file join $dir GAGparam.proc]]
set auto_index(Delete_Candidate) [list source [file join $dir GAGparam.proc]]
set auto_index(Command_Dir) [list source [file join $dir GAGparam.proc]]
set auto_index(GAG_Connect) [list source [file join $dir GAGconnect.proc]]
set auto_index(GAG_Command) [list source [file join $dir GAGconnect.proc]]
set auto_index(Parse_Line) [list source [file join $dir GAGconnect.proc]]
set auto_index(Make_Button) [list source [file join $dir GAGconnect.proc]]
set auto_index(Delete_Button) [list source [file join $dir GAGconnect.proc]]
set auto_index(Command_Passive) [list source [file join $dir GAGconnect.proc]]
set auto_index(Command_Active) [list source [file join $dir GAGconnect.proc]]
set auto_index(Command_Disable) [list source [file join $dir GAGconnect.proc]]
set auto_index(Before_Save) [list source [file join $dir GAGsavelog.proc]]
set auto_index(Save_Window) [list source [file join $dir GAGsavelog.proc]]
set auto_index(Save) [list source [file join $dir GAGsavelog.proc]]
set auto_index(Search_String) [list source [file join $dir GAGsearchstring.proc]]
set auto_index(Search) [list source [file join $dir GAGsearchstring.proc]]
set auto_index(Search_Up) [list source [file join $dir GAGsearchstring.proc]]
set auto_index(Search_Down) [list source [file join $dir GAGsearchstring.proc]]
set auto_index(Replace) [list source [file join $dir GAGsearchstring.proc]]
set auto_index(Replace_One) [list source [file join $dir GAGsearchstring.proc]]
set auto_index(Replace_All) [list source [file join $dir GAGsearchstring.proc]]
set auto_index(Command_History) [list source [file join $dir GAGhistory.proc]]
set auto_index(CH_Save_Window) [list source [file join $dir GAGhistory.proc]]
set auto_index(CH_Save) [list source [file join $dir GAGhistory.proc]]
set auto_index(Search_String_CH) [list source [file join $dir GAGhistory.proc]]
set auto_index(Search_CH) [list source [file join $dir GAGhistory.proc]]
set auto_index(Search_Up_CH) [list source [file join $dir GAGhistory.proc]]
set auto_index(Search_Down_CH) [list source [file join $dir GAGhistory.proc]]
set auto_index(Replace_CH) [list source [file join $dir GAGhistory.proc]]
set auto_index(Replace_One_CH) [list source [file join $dir GAGhistory.proc]]
set auto_index(Replace_All_CH) [list source [file join $dir GAGhistory.proc]]
+43
View File
@@ -0,0 +1,43 @@
## global variable
env
HOME
FC
FR
FG
FB
BC
BR
BG
BB
## procedures
#Momo.tcl
Style_Pack
Position_Pack
#Public.proc
File_List_Skeleton w
Change_Path DIR
Put_File_List w
Win_Size w
Chenge_Font {FONT WIDGET}
Scroll_Link {WIDGET args}
Chenge_Color {F B WIDGET}
Value_Check {TYPE VALUE}
Tab_off
Message_Skeleton args
#SelectFont.proc
Select_Font
Get_Font_List
#DefineColor.proc
Define_Color
Make_Color {w args}
Set_Color
Reset_Color SWITCH
#SetEnv.proc
List_Env
Put_Env
+293
View File
@@ -0,0 +1,293 @@
## Momo.tcl
# Momo main proc
## !!!!!!!!! This is obsolete !!!!!! Use tMomo.tcl instead
# Tcl/Tk version and JAVA version are separated.
# tMomo.tcl is the "pure" Tcl/Tk Momo
##
## k.ohtubo(Tubocky)
##
## 1998.3.16
## Tcl/Tk version 8.0
## NO MORE SUPPORTED FOR GEANT4 BETA
## Set global variable
# $MOMOPATH/Momo/tcltk/GAG structure is assumed
if [info exists env(MOMOPATH)] {
set END [expr [string length $env(MOMOPATH)] - 1]
if {[string index $env(MOMOPATH) $END] == "/"} {
set HOME [string range $env(MOMOPATH) 0 [expr $END - 1]]
} else {
set HOME $env(MOMOPATH)
}
} else {
set HOME $env(HOME)/Momo/tcltk
}
set WISH wish$tk_version
set JAVA java
set env(G_PATH) $env(PWD)
set Env_Name [list FONT GUI_STYLE GUI_POSITION FORE_GROUND_COLOR BACK_GROUND_COLOR]
# .Momorc to save fonts and colors, .Momoext to save Momo extension
set SAVE_FILE .Momorc
set ENV_FILE .Momoext
set errorCode NONE
set errorInfo ""
## tclIndex
set auto_path [linsert $auto_path 0 $HOME/]
if [file exists $env(HOME)/$SAVE_FILE] {
set file_ID [open $env(HOME)/$SAVE_FILE r]
while {![eof $file_ID]} {
set STRING [gets $file_ID]
while {[string index $STRING 0] == " " || [string index $STRING 0 ] == "\t"} {
set STRING [string range $STRING 1 end]
}
set LAST [string length $STRING]
incr LAST -1
while {[string index $STRING $LAST] == " " || [string index $STRING 0 ] == "\t"} {
incr LAST -1
set STRING [string range $STRING 0 $LAST]
}
set LAST [string first " " $STRING]
set FIRST [expr $LAST + 1]
incr LAST -1
set env([string range $STRING 0 $LAST]) [string range $STRING $FIRST end]
}
unset env([string range $STRING 0 $LAST])
close $file_ID
}
if {[lsearch [array names env] GUI_STYLE] < 0} {
set env(GUI_STYLE) horizontal
}
if {[lsearch [array names env] GUI_POSITION] < 0} {
set env(GUI_POSITION) left
}
if {[lsearch [array names env] FORE_GROUND_COLOR] < 0} {
set env(FORE_GROUND_COLOR) #000000000
set FC env(FORE_GROUND_COLOR)
set FR 0
set FG 0
set FB 0
} else {
set FC $env(FORE_GROUND_COLOR)
if {[string index $FC 0] == "#"} {
Reset_Color F
} else {
set FR 0
set FG 0
set FB 0
}
}
if {[lsearch [array names env] BACK_GROUND_COLOR] < 0} {
set env(BACK_GROUND_COLOR) #d90d90d90
set BC env(BACK_GROUND_COLOR)
set BR 0.848
set BG 0.848
set BB 0.848
} else {
set BC $env(BACK_GROUND_COLOR)
if {[string index $BC 0] == "#"} {
Reset_Color B
} else {
set BR 0.848
set BG 0.848
set BB 0.848
}
}
## Make window
. configure -highlightthickness 0
menubutton .function -text Function -menu .function.menu -bd 3 \
-relief raised -highlightthickness 0
menu .function.menu -tearoff 0
.function.menu add cascade -label Position \
-menu .function.menu.position
.function.menu add cascade -label Style \
-menu .function.menu.style
.function.menu add separator
.function.menu add command -label Exit -command {
set file_ID [open $env(HOME)/$SAVE_FILE w]
foreach VARIABLE $Env_Name {
if [info exists env($VARIABLE)] {
puts $file_ID "$VARIABLE $env($VARIABLE)"
}
}
close $file_ID
exit
}
menu .function.menu.position -tearoff 0
.function.menu.position add radiobutton -label Left \
-variable env(GUI_POSITION) -value left -command Position_Pack
.function.menu.position add radiobutton -label Right \
-variable env(GUI_POSITION) -value right -command Position_Pack
menu .function.menu.style -tearoff 0
.function.menu.style add radiobutton -label Horizontal \
-variable env(GUI_STYLE) -value horizontal -command Style_Pack
.function.menu.style add radiobutton -label Vertical \
-variable env(GUI_STYLE) -value vertical -command Style_Pack
menubutton .env -text Environment -menu .env.menu -bd 3 \
-relief raised -highlightthickness 0
menu .env.menu -tearoff 0
.env.menu add command -label Color -command Define_Color
.env.menu add command -label Font -command Select_Font
.env.menu add separator
.env.menu add command -label "ENV variables" -command List_Env
#.env.menu entryconfigure Font -state disabled
menubutton .gag -text "GAG(GEANT4 Adaptive GUI)" -bd 3 -menu .gag.menu \
-relief raised -highlightthickness 0
menu .gag.menu -tearoff 0
.gag.menu add command -label "Tcl/Tk(8.0) version" \
-command {
raise .
exec $WISH $HOME/GAG/GAG.tcl &
}
.gag.menu add command -label "Java version" \
-command {
raise .
exec $JAVA $HOME/GAG/GAG &
}
menubutton .gge -text "GGE(GEANT4 Geometry Editor)" -bd 3 \
-relief raised -menu .gge.menu -highlightthickness 0
menu .gge.menu -tearoff 0
.gge.menu add command -label "Tcl/Tk(8.0) version" \
-command {
raise .
exec $WISH $HOME/GGE/GGE.tcl &
}
.gge.menu add command -label "Java version" \
-command {
raise .
exec $JAVA $HOME/GGE/GAG &
}
button .fb -text "File Browser" -bd 3 -highlightthickness 0 \
-command {
raise .
FBmain
}
if [file exists $env(HOME)/$ENV_FILE] {
menubutton .ext -text Extension -bd 3 -menu .ext.menu \
-relief raised -highlightthickness 0
menu .ext.menu -tearoff 0
set file_ID [open $env(HOME)/$ENV_FILE r]
while {![eof $file_ID]} {
set STRING [gets $file_ID]
while {[string index $STRING 0] == " " || [string index $STRING 0 ] == "\t"} {
set STRING [string range $STRING 1 end]
}
set LAST [string length $STRING]
incr LAST -1
while {[string index $STRING $LAST] == " " || [string index $STRING 0 ] == "\t"} {
incr LAST -1
set STRING [string range $STRING 0 $LAST]
}
if {$STRING == "Momoseparator"} {
.ext.menu add separator
} elseif {$STRING != "" && [string index $STRING 0] != "#"} {
.ext.menu add command -label $STRING -command "exec $STRING &"
}
}
close $file_ID
bind .ext <ButtonRelease> {
raise .
raise .ext.menu
}
}
## Procedures
# Change Style
proc Style_Pack {} {
global env
set WIDGET [winfo children .]
pack forget .
switch $env(GUI_STYLE) {
horizontal {eval pack $WIDGET -side left -fill both
.gag configure -text "GAG(GEANT4 Adaptive GUI)"
.gge configure -text "GGE(GEANT4 Geometry Editor)"
}
vertical {eval pack $WIDGET -side top -fill both
.gag configure -text "GAG\n(GEANT4 Adaptive GUI)"
.gge configure -text "GGE\n(GEANT4 Geometry Editor)"
}
}
}
# Change Position
proc Position_Pack {} {
global env
switch $env(GUI_POSITION) {
left {wm geometry . +0+0}
right {wm geometry . -0+0}
}
}
wm deiconify .
wm geometry . +0+0
wm overrideredirect . 1
wm resizable . 0 0
# Binding
bind .function <ButtonRelease> {
raise .
raise .function.menu
}
bind .env <ButtonRelease> {
raise .
raise .env.menu
}
bind .gag <ButtonRelease> {
raise .
raise .gag.menu
}
bind .gge <ButtonRelease> {
raise .
raise .gge.menu
}
bind .fb <ButtonRelease> {
raise .
}
if {[lsearch [array names env] FONT] >= 0} {
Change_Font $env(FONT) .
}
Change_Color $env(FORE_GROUND_COLOR) $env(BACK_GROUND_COLOR) .
Tab_off
Style_Pack
Position_Pack
Del_Bind
Control
#bind Menubutton <Leave> {
# foreach w [winfo children .] {
# grab release $w
# }
#}
#bind Menubutton <Motion> {}
+547
View File
@@ -0,0 +1,547 @@
## Public.proc
## (Momo, GGE, GAG, FB procedure)
# File List window model
#
# This must be revised to have better display of the file's path
# The absolute path is displayed so that it demands too large width.
# 1998 7 5 displaying $w.info.label1 only the currect dir name
##
## k.ohtubo(Tubocky)
##
## 1998.3.17
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
proc File_List_Skeleton w {
global env
if [winfo exists $w] {
raise $w
focus $w.name.ent
return
}
toplevel $w -highlightthickness 0
frame $w.butt -highlightthickness 0
pack $w.butt -side top -fill x
button $w.butt.b0 -text O.K. -bd 3 -highlightthickness 0
button $w.butt.b1 -text Clear -bd 3 -highlightthickness 0
button $w.butt.b2 -text Cancel -bd 3 -highlightthickness 0
pack $w.butt.b0 $w.butt.b1 $w.butt.b2 -side left
frame $w.info -highlightthickness 0
pack $w.info -side top -fill x
label $w.info.label0 -text "Current Dir:" -anchor w \
-highlightthickness 0
pack $w.info.label0 -side left
set END [string length $env(HOME)]
set Path ~[string range $env(G_PATH) $END end]
## cut out the current dir
set dlist [file split $Path]
set cdir [lindex $dlist end]
##supress label $w.info.label1 -text $Path -anchor w -highlightthickness 0
label $w.info.label1 -text $cdir -anchor w -highlightthickness 0
pack $w.info.label1 -side left -fill x -expand 1
frame $w.name -highlightthickness 0
pack $w.name -side top -fill x
label $w.name.label -text File -highlightthickness 0
pack $w.name.label -side left
entry $w.name.ent -highlightthickness 0
pack $w.name.ent -side left -fill x -expand 1
frame $w.select -highlightthickness 0
pack $w.select -side top -fill both
listbox $w.select.list -width 20 -height 20 \
-yscrollcommand "$w.select.scroll set" \
-highlightthickness 0
pack $w.select.list -side left -fill both -expand 1
scrollbar $w.select.scroll -command "$w.select.list yview" \
-highlightthickness 0
pack $w.select.scroll -side left -fill y
focus $w.name.ent
}
# Change Path (Like Unix command "cd")
proc Change_Path DIR {
global env
if {![info exists env(G_PATH)]} {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\nCheck \"G_PATH\" value."
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
return
}
set DIR [string trimright $DIR "/"]
if {$DIR == "\."} {
return $env(G_PATH)
}
if {$DIR == "\.\."} {
set END [expr [string last "/" $env(G_PATH)] -1]
set env(G_PATH) [string range $env(G_PATH) 0 $END]
return $env(G_PATH)
}
if {![file isdirectory $env(G_PATH)/$DIR]} {
return It_is_file
}
foreach l [glob $env(G_PATH)/*/] {
set l [string trimright $l "/"]
set END [expr [string last "/" $l] + 1]
set l [string range $l $END end]
if {$DIR == $l} {
set env(G_PATH) $env(G_PATH)/$DIR
return $env(G_PATH)
}
}
return It_is_file
}
# Putout File name List
proc Put_File_List w {
global env
if {![winfo exists $w.select.list]} {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\nWhat's happen?"
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
return
}
$w.select.list delete 0 end
foreach l [glob $env(G_PATH)/\.* $env(G_PATH)/*] {
set END [expr [string last "/" $l] + 1]
if {[file isdirectory $l]} {
set l $l/
}
set l [string range $l $END end]
$w.select.list insert end $l
}
}
# Define window size
proc Win_Size w {
update
wm geometry $w {}
scan [wm geometry $w] %dx%d WIDTH HEIGHT
wm minsize $w $WIDTH $HEIGHT
}
# Change Font on window
proc Change_Font {FONT WIDGET} {
global errorCode errorInfo
if {![catch {winfo children $WIDGET} LIST]} {
foreach w $LIST {
Change_Font $FONT $w
}
} else {
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
return
}
foreach w $LIST {
catch {eval $w configure -font "$FONT"}
}
catch {eval $WIDGET configure -font "$FONT"}
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
}
# Scroll Link
proc Scroll_Link {WIDGET args} {
foreach w [split $WIDGET] {
eval $w yview $args
}
}
# Change Color on window(FG BG)
proc Change_Color {F B WIDGET} {
global errorCode errorInfo
if {![catch {winfo children $WIDGET} LIST]} {
foreach w $LIST {
Change_Color $F $B $w
}
} else {
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
return
}
foreach w $LIST {
catch {$w configure -foreground $F}
catch {$w configure -background $B}
}
catch {$WIDGET configure -foreground $F}
catch {$WIDGET configure -background $B}
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
}
# Check value (int,double,boolean,string)
proc Value_Check {TYPE VALUE} {
switch $TYPE {
int -
i { if {[regexp {^[+-]?0x[0-9a-fA-F]+$} $VALUE] || \
[regexp {^[+-]?0x[0-9a-fA-F]+\.$} $VALUE] || \
[regexp {^[+-]?0x[0-9a-fA-F]*\.[0-9a-fA-F]+$} $VALUE] || \
[regexp {^[+-]?0x[0-9a-fA-F]+\.?[eE][+-]?[0-9a-fA-F]+$} $VALUE] || \
[regexp {^[+-]?0x[0-9a-fA-F]*\.[0-9a-fA-F]+[eE][+-]?[0-9a-fA-F]+$} $VALUE]} {
set ANSWER [tk_messageBox -type yesnocancel -icon question \
-message "This value $VALUE is hexadecimal.\nChange to [expr $VALUE]?"]
switch $ANSWER {
yes { return [Value_Check $TYPE [expr $VALUE]]}
no { if {[string index $VALUE 0] != "0"} {
set FLAG [string index $VALUE 0]
} else {
set FLAG ""
}
set HEAD [expr [string first 0x $VALUE] + 2]
set VALUE $FLAG[string range $VALUE $HEAD end]
return [Value_Check $TYPE $VALUE]
}
cancel {return ERROR}
}
} elseif {[regexp {^[+-]?0[0-7]+$} $VALUE] || \
[regexp {^[+-]?0[0-7]+\.$} $VALUE] || \
[regexp {^[+-]?0[0-7]+\.[0-7]+$} $VALUE] || \
[regexp {^[+-]?0[0-7]+\.?[eE][+-]?[0-7]+$} $VALUE] || \
[regexp {^[+-]?0[0-7]+\.[0-7]+[eE][+-]?[0-7]+$} $VALUE]} {
if {[string index $VALUE 0] != "0"} {
set FLAG [string index $VALUE 0]
set VALUE [string range $VALUE 1 end]
} else {
set FLAG ""
}
set ANSWER [tk_messageBox -type yesnocancel -icon question \
-message "This value $VALUE is octal.\nChange to [expr $VALUE]?"]
switch $ANSWER {
yes { return [Value_Check $TYPE $FLAG[expr $VALUE]]}
no { while {[string index $VALUE 0] == "0"} {
set VALUE [string range $VALUE 1 end]
}
return [Value_Check $TYPE $FLAG$VALUE]
}
cancel {return ERROR}
}
} elseif {[regexp {^[+-]?0[0-9]+$} $VALUE] || \
[regexp {^[+-]?0[0-9]+\.$} $VALUE] || \
[regexp {^[+-]?0[0-9]+\.[0-9]+$} $VALUE] || \
[regexp {^[+-]?0[0-9]+\.?[eE][+-]?[0-9]+$} $VALUE] || \
[regexp {^[+-]?0[0-9]+\.[0-9]+[eE][+-]?[0-9]+$} $VALUE]} {
if {[string index $VALUE 0] != "0"} {
set FLAG [string index $VALUE 0]
set VALUE [string range $VALUE 1 end]
} else {
set FLAG ""
}
while {[string index $VALUE 0] == "0"} {
set VALUE [string range $VALUE 1 end]
}
return [Value_Check $TYPE $FLAG$VALUE]
} elseif {[regexp {^[+-]?[0-9]+\.$} $VALUE] || \
[regexp {^[+-]?[0-9]*\.[0-9]+$} $VALUE] || \
[regexp {^[+-]?[0-9]+\.?[eE][+-]?[0-9]+$} $VALUE] || \
[regexp {^[+-]?[0-9]*\.[0-9]+[eE][+-]?[0-9]+$} $VALUE]} {
set ANSWER [tk_messageBox -type yesnocancel -icon question \
-message "This value is $VALUE.\nType is $TYPE.\nChange to integer?"]
switch $ANSWER {
yes { return [Value_Check $TYPE [expr int($VALUE)]]}
no { return ERROR}
cancel {return ERROR}
}
} elseif {[regexp {^[+-]?[0-9]+$} $VALUE]} {
return $VALUE
} else {
tk_messageBox -type ok -icon question \
-message "Check!\nParameter type doesn't match."
return ERROR
}
}
double -
d { if {[regexp {^[+-]?0x[0-9a-fA-F]+$} $VALUE] || \
[regexp {^[+-]?0x[0-9a-fA-F]+\.$} $VALUE] || \
[regexp {^[+-]?0x[0-9a-fA-F]*\.[0-9a-fA-F]+$} $VALUE] || \
[regexp {^[+-]?0x[0-9a-fA-F]+\.?[eE][+-]?[0-9a-fA-F]+$} $VALUE] || \
[regexp {^[+-]?0x[0-9a-fA-F]*\.[0-9a-fA-F]+[eE][+-]?[0-9a-fA-F]+$} $VALUE]} {
set ANSWER [tk_messageBox -type yesnocancel -icon question \
-message "This value $VALUE is hexadecimal.\nChange to [expr $VALUE]?"]
switch $ANSWER {
yes { return [Value_Check $TYPE [expr $VALUE]]}
no { if {[string index $VALUE 0] != "0"} {
set FLAG [string index $VALUE 0]
} else {
set FLAG ""
}
set HEAD [expr [string first 0x $VALUE] + 2]
set VALUE $FLAG[string range $VALUE $HEAD end]
return [Value_Check $TYPE $VALUE]
}
cancel {return ERROR}
}
} elseif {[regexp {^[+-]?0[0-7]+$} $VALUE] || \
[regexp {^[+-]?0[0-7]+\.$} $VALUE] || \
[regexp {^[+-]?0[0-7]+\.[0-7]+$} $VALUE] || \
[regexp {^[+-]?0[0-7]+\.?[eE][+-]?[0-7]+$} $VALUE] || \
[regexp {^[+-]?0[0-7]+\.[0-7]+[eE][+-]?[0-7]+$} $VALUE]} {
if {[string index $VALUE 0] != "0"} {
set FLAG [string index $VALUE 0]
set VALUE [string range $VALUE 1 end]
} else {
set FLAG ""
}
set ANSWER [tk_messageBox -type yesnocancel -icon question \
-message "This value $VALUE is octal.\nChange to [expr $VALUE]?"]
switch $ANSWER {
yes { return [Value_Check $TYPE $FLAG[expr $VALUE]]}
no { while {[string index $VALUE 0] == "0"} {
set VALUE [string range $VALUE 1 end]
}
return [Value_Check $TYPE $FLAG$VALUE]
}
cancel {return ERROR}
}
} elseif {[regexp {^[+-]?0[0-9]+$} $VALUE] || \
[regexp {^[+-]?0[0-9]+\.$} $VALUE] || \
[regexp {^[+-]?0[0-9]+\.[0-9]+$} $VALUE] || \
[regexp {^[+-]?0[0-9]+\.?[eE][+-]?[0-9]+$} $VALUE] || \
[regexp {^[+-]?0[0-9]+\.[0-9]+[eE][+-]?[0-9]+$} $VALUE]} {
if {[string index $VALUE 0] != "0"} {
set FLAG [string index $VALUE 0]
set VALUE [string range $VALUE 1 end]
} else {
set FLAG ""
}
while {[string index $VALUE 0] == "0"} {
set VALUE [string range $VALUE 1 end]
}
return [Value_Check $TYPE $FLAG$VALUE]
} elseif {[regexp {^[+-]?[0-9]+$} $VALUE]} {
return $VALUE.0
} elseif {[regexp {^[+-]?[0-9]+\.$} $VALUE] || \
[regexp {^[+-]?[0-9]*\.[0-9]+$} $VALUE] || \
[regexp {^[+-]?[0-9]+\.?[eE][+-]?[0-9]+$} $VALUE] || \
[regexp {^[+-]?[0-9]*\.[0-9]+[eE][+-]?[0-9]+$} $VALUE]} {
return $VALUE
} else {
tk_messageBox -type ok -icon question \
-message "Check!\nParameter type doesn't match."
return ERROR
}
}
boolean -
b { foreach B {TRUE FALSE YES NO T F Y N 1 0} {
if {[regexp -nocase -- $B $VALUE]} {
return $VALUE
}
}
return ERROR
}
char -
c -
string -
s { return $VALUE}
default {
tk_messageBox -type ok -icon warning \
-message "Type is \"$TYPE\".\nWhat's this?"
return ERROR
}
}
}
# Tab key off for all
proc Tab_off {} {
bind all <Tab> {}
bind all <Shift-Tab> {}
}
# Delete key bind for entry & text
proc Del_Bind {} {
bind Entry <Delete> {
if [%W selection present] {
%W delete sel.first sel.last
} else {
set X [expr [%W index insert] - 1]
if {$X>= 0} {
%W delete $X
}
if {[%W index @0] >= [%W index insert]} {
set RANGE [%W xview]
set LEFT [lindex $RANGE 0]
set RIGHT [lindex $RANGE 1]
%W xview moveto [expr $LEFT - ($RIGHT - $LEFT)/2.0]
}
}
}
bind Text <Delete> {
if {[%W tag nextrange sel 1.0 end] != ""} {
%W delete sel.first sel.last
} elseif [%W compare insert != 1.0] {
%W delete insert-1c
%W see insert
}
}
}
# Dialog box model
proc Message_Skeleton args {
global FONT F_COLOR B_COLOR
if [winfo exists .msgskeleton] {
destroy .msgskeleton
}
set COUNT [llength $args]
for {set i 0} {$i < $COUNT} {incr i} {
switch -- [lindex $args $i] {
"-icon" {
incr i
set ICON [lindex $args $i]
}
"-butt" -
"-button" {
incr i
set BUTTON [lindex $args $i]
}
"-message" {
incr i
set MESSAGE [lindex $args $i]
}
}
}
set FOCUS [focus]
toplevel .msgskeleton -highlightthickness 0
wm transient .msgskeleton .
wm title .msgskeleton "Dialog Box"
wm protocol .msgskeleton WM_DELETE_WINDOW {
grab release .msgskeleton
focus $FOCUS
}
frame .msgskeleton.info -highlightthickness 0
pack .msgskeleton.info -side top -fill both -expand 1
if [info exists ICON] {
label .msgskeleton.info.icon -bitmap $ICON -highlightthickness 0
pack .msgskeleton.info.icon -padx 15 -pady 5 -side left
}
if [info exists MESSAGE] {
message .msgskeleton.info.msg -text $MESSAGE -width 7c -highlightthickness 0
pack .msgskeleton.info.msg -pady 5 -side left -fill both -expand 1
}
frame .msgskeleton.butt -highlightthickness 0
pack .msgskeleton.butt -padx 5 -side top -fill x -expand 1
set COUNT 0
if [info exists BUTTON] {
foreach i [split $BUTTON] {
button .msgskeleton.butt.$COUNT -text " $i " -bd 3 \
-highlightthickness 0
pack .msgskeleton.butt.$COUNT -padx 3 -pady 3 -side left -expand 1
incr COUNT
}
} else {
button .msgskeleton.butt.$COUNT -text " OK " -bd 3 \
-command {destroy .msgskeleton} -highlightthickness 0
pack .msgskeleton.butt.$COUNT -padx 3 -pady 3 -side left -expand 1
}
wm withdraw .msgskeleton
update
set x [expr [winfo screenwidth .msgskeleton]/2 \
- [winfo width .msgskeleton]/2]
set y [expr [winfo screenheight .msgskeleton]/2 \
- [winfo height .msgskeleton]/2]
wm geom .msgskeleton +$x+$y
wm deiconify .msgskeleton
Win_Size .msgskeleton
Tab_off
Control
grab set .msgskeleton
focus $FOCUS
}
proc Another_Line STRING {
if {[string first "\\n" $STRING] >= 0} {
set HEAD [string first "\\n" $STRING]
set TAIL [expr $HEAD + 2]
incr HEAD -1
set STRING [string range $STRING 0 $HEAD]\n[string range $STRING $TAIL end]
set STRING [Another_Line $STRING]
} elseif {[string first ". " $STRING] >= 0} {
set HEAD [string first ". " $STRING]
set TAIL [expr $HEAD + 2]
incr HEAD -1
set STRING [string range $STRING 0 $HEAD].\n[string range $STRING $TAIL end]
set STRING [Another_Line $STRING]
}
return $STRING
}
proc Control {} {
global CTRL
bind Text <Control-k> {
if [%W compare insert == {insert lineend}] {
set CTRL(%W) "\n"
%W delete insert
} else {
scan [%W index insert] %%d.%%d LINE HEAD
set CTRL(%W) [%W get insert $LINE.end]
%W delete insert {insert lineend}
}
}
bind Entry <Control-k> {
set CTRL(%W) [string range [%W get] [%W index insert] end]
%W delete insert end
}
foreach WIDGET {Text Entry} {
bind $WIDGET <Control-y> {
if {[info exists CTRL(%W)]} {
%W insert insert $CTRL(%W)
}
}
}
}
+82
View File
@@ -0,0 +1,82 @@
README Tcl/Tk Momo and GAG
--22 July 1998 at Niigata WS
- standard MOMOPATH is $G4INSTALL/environments/Momo/tcltk
- type %$MOMOPATH/tmomo to invoke Momo and GAG
- Add "New Shell" button
- Add "Continue" button
- example .Momoext and .Momorc files included in the repository
--5 July 1998
- All relevant file contains a line including "Beta-01"
- Unnecessary files removed.
- Tcl/Tk GGE is left as it was, though its development has been
stopped. See GGE/README file.
Improvements
- GAG can now defend itself from some illegal command hierarchy
- GAG has "Exit, Kill GEANT4" menu buttons.
- GAG menu structures and displayed labels are more
understandable, we hope.
--16 Apr 1998
Momo and GAG(Geant4 Adaptive GUI) are developed under tcl8.0, tk8.0.
The older versions (Tcl7.6/Tk7.4 etc.) are no longer supported.
Momo.tcl which can invoke both Java and Tcl/Tk GAG is now obsolete.
tMomo.tcl is a pure Tcl/Tk version which invokes only Tcl/Tk scripts.
A) How to invoke.
%wish8.0 ~/Momo/tcltk/tMomo.tcl
The older version of wish 7.4 can be used.
The version of wish to invoke ~/Momo/tcltk/GAG/GAG.tcl and
~/Momo/tcltk/GGE/GGE.tcl from ~/Momo/tcltk/tMomo.tcl is the same
as that used to invoke ~/Momo/tcltk/Momo.tcl.
B) Environmental variable MOMOPATH
This variable is used to specify the directory to which tMomo.tcl
refers. If not setenved, users home directory becomes the MOMOPATH.
MOMOHOME is no longer valid.
C) Save working environments
The following working environments of Momo are saved automatically
in a file .Momorc under the user's home directory, when Momo is
terminated normally. .Momorc is automatically used at the next
invocation.
If the file .Momorc is deleted, the default values are used.
D) Extensions/Plug-ins
You can use any plug-ins by writing a file .Momoext under the
home directory. This allows you to extend Momo's function as you like.
Momo/tcltk/tMomo.tcl analyses commands in .Momoext and creates menu
buttons "Extension". The extended commands are registered to Extension
as menu buttons and can be invoked upon mouse clicks.
Rule to write .Momoext)
1) a command per line
2) a line starting with "#" is a comment line
3) the reserved command "Momoseparator" creates a separator in the munu
See an example ~/Momo/tcltk/.Momoext for further details.
+146
View File
@@ -0,0 +1,146 @@
## SelectFont
## (Momo procedure)
# make Change Font window
##
# NOTE: proc Get_Font_List {} uses X command "xlsfonts"
# to have a list of available fonts.
# ==> This must be changed for Windows
#
## k.ohtubo(Tubocky)
##
## 1997.3.16
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
proc Select_Font {} {
if [winfo exists .cf] {
raise .cf
focus .cf.info.ent.font
return
}
global env
toplevel .cf -highlightthickness 0
wm title .cf "Select Font"
frame .cf.butt -highlightthickness 0
pack .cf.butt -side top -fill x
button .cf.butt.b0 -text "Change Font" -bd 3 -highlightthickness 0 \
-command {
set env(FONT) [.cf.info.ent.font get]
Change_Font $env(FONT) .
Win_Size .cf
if [winfo exists .dc] {
Change_Font $env(FONT) .dc
Win_Size .dc
}
if [winfo exists .se] {
Change_Font $env(FONT) .se
Put_Env
Win_Size .se
}
}
button .cf.butt.b1 -text Clear -bd 3 -highlightthickness 0 \
-command {
.cf.select.list see 0
.cf.select.list selection clear 0 end
focus .cf.info.ent.font
.cf.info.ent.font delete 0 end
}
button .cf.butt.b2 -text Cancel -bd 3 -highlightthickness 0 \
-command {
if [winfo exists .cf] {destroy .cf}
}
pack .cf.butt.b0 .cf.butt.b1 .cf.butt.b2 -side left
frame .cf.info -highlightthickness 0
pack .cf.info -side top -fill x
frame .cf.info.lb -highlightthickness 0
pack .cf.info.lb -side left
label .cf.info.lb.ex -text Example -anchor w \
-bd 1 -relief raised -highlightthickness 0
pack .cf.info.lb.ex -side top
label .cf.info.lb.font -text Font -anchor w \
-bd 1 -relief raised -highlightthickness 0
pack .cf.info.lb.font -side top -fill x
frame .cf.info.ent -highlightthickness 0
pack .cf.info.ent -side left -fill x -expand 1
label .cf.info.ent.ex -text "This is font style." -anchor w \
-relief sunken -highlightthickness 0
pack .cf.info.ent.ex -side top -fill x -expand 1
entry .cf.info.ent.font -highlightthickness 0
pack .cf.info.ent.font -side top -fill x -expand 1
frame .cf.select -highlightthickness 0
pack .cf.select -side top -fill both -expand 1
listbox .cf.select.list -width 80 -height 20 \
-yscrollcommand {.cf.select.scroll set} \
-highlightthickness 0
pack .cf.select.list -side left -fill both -expand 1
scrollbar .cf.select.scroll -command {.cf.select.list yview} \
-highlightthickness 0
pack .cf.select.scroll -side left -fill y
focus .cf.info.ent.font
# Binding
bind .cf.select.list <ButtonRelease> {
.cf.info.ent.font delete 0 end
set FONT [selection get]
.cf.info.ent.font insert end $FONT
catch {.cf.info.lb.ex configure -font $FONT}
catch {.cf.info.ent.ex configure -font $FONT}
global errorCode errorInfo
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
}
bind .cf.select.list <Double-Button> {.cf.butt.b0 invoke}
bind .cf.info.ent.font <Return> {.cf.butt.b0 invoke}
Get_Font_List
if {[lsearch [array names env] FONT] >= 0} {
Change_Font $env(FONT) .cf
}
Change_Color $env(FORE_GROUND_COLOR) $env(BACK_GROUND_COLOR) .cf
Win_Size .cf
Tab_off
Control
}
# Get Font List
# NOTE: Use X command "xlsfonts"
proc Get_Font_List {} {
if {![winfo exists .cf.select.list]} {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\nWhat's happen?"
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
return
}
set List [exec xlsfonts]
foreach l $List {
.cf.select.list insert end $l
}
}
+208
View File
@@ -0,0 +1,208 @@
## SetEnv
## (Momo procedure)
# Set environment value, make window
##
## k.ohtubo(Tubocky)
##
## 1997.3.16
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
proc List_Env {} {
if [winfo exists .se] {
raise .se
focus .se.left.input.ent
return
}
global env errorCode errorInfo
toplevel .se -highlightthickness 0
wm title .se "Set ENV variables"
frame .se.butt -highlightthickness 0
pack .se.butt -side top -fill x
button .se.butt.set -text "Set ENV variable" -bd 3 \
-highlightthickness 0 \
-command {
if [catch {.se.left.input.ent get} VARIABLE] {
Message_Skeleton -icon warning -button O.K. \
-message "Input Variable's name."
if {[lsearch [array names env] FONT] >= 0} {
Change_Font $env(FONT) .msgskeleton
}
Change_Color $env(FORE_GROUND_COLOR) $env(BACK_GROUND_COLOR) .msgskeleton
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
} elseif [catch {.se.right.input.ent get} VALUE] {
Message_Skeleton -icon warning -button O.K. \
-message "Input Value."
if {[lsearch [array names env] FONT] >= 0} {
Change_Font $env(FONT) .msgskeleton
}
Change_Color $env(FORE_GROUND_COLOR) $env(BACK_GROUND_COLOR) .msgskeleton
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
} else {
set env($VARIABLE) $VALUE
Put_Env
}
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
}
pack .se.butt.set -side left
# button .se.butt.clear -text Clear -bd 3 -highlightthickness 0 \
# -command {
# .se.left.list see 0
# .se.right.list see 0
# .se.left.list selection clear 0 end
# .se.right.list selection clear 0 end
# focus .se.left.input.ent
# .se.left.input.ent delete 0 end
# .se.right.input.ent delete 0 end
# }
# pack .se.butt.clear -side left
button .se.butt.cancel -text Cancel -bd 3 -highlightthickness 0 \
-command {
destroy .se
}
pack .se.butt.cancel -side left
frame .se.left -relief raised -bd 1 -highlightthickness 0
pack .se.left -side left -fill both -expand 1
frame .se.left.input -highlightthickness 0
pack .se.left.input -side top -fill x
label .se.left.input.label -text Variable -highlightthickness 0
pack .se.left.input.label -side left
entry .se.left.input.ent -highlightthickness 0
pack .se.left.input.ent -side left -fill x -expand 1
listbox .se.left.list -yscrollcommand ".se.scroll.scroll set" \
-highlightthickness 0
pack .se.left.list -side top -fill both -expand 1
frame .se.right -relief raised -bd 1 -highlightthickness 0
pack .se.right -side left -fill both -expand 1
frame .se.right.input -highlightthickness 0
pack .se.right.input -side top -fill x
label .se.right.input.label -text Value -highlightthickness 0
pack .se.right.input.label -side left
entry .se.right.input.ent -highlightthickness 0
pack .se.right.input.ent -side left -fill x -expand 1
listbox .se.right.list -yscrollcommand ".se.scroll.scroll set" \
-highlightthickness 0
pack .se.right.list -side top -fill both -expand 1
frame .se.scroll -bd 1 -highlightthickness 0
pack .se.scroll -side right -fill y
entry .se.scroll.dummy -state disabled -relief flat -width 0 \
-highlightthickness 0
pack .se.scroll.dummy -side top
scrollbar .se.scroll.scroll \
-command {Scroll_Link {.se.left.list .se.right.list}} \
-highlightthickness 0
pack .se.scroll.scroll -side top -fill y -expand 1
# Binding
bind .se.left.list <ButtonRelease> {
focus .se.left.input.ent
.se.left.input.ent delete 0 end
.se.right.input.ent delete 0 end
if {![catch {selection get} GET]} {
.se.left.input.ent insert end $GET
}
if {![catch {.se.right.list get [.se.left.list index @%x,%y]} VALUE]} {
.se.right.input.ent insert end $VALUE
}
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
}
bind .se.right.list <ButtonRelease> {
focus .se.right.input.ent
.se.left.input.ent delete 0 end
.se.right.input.ent delete 0 end
if {![catch {selection get} GET]} {
.se.right.input.ent insert end $GET
}
if {![catch {.se.left.list get [.se.right.list index @%x,%y]} VARIABLE]} {
.se.left.input.ent insert end $VARIABLE
}
if {$errorCode != "NONE"} {
set errorCode NONE
}
if {$errorInfo != ""} {
set errorInfo ""
}
}
foreach BIND {Return Tab Shift-Tab} {
bind .se <$BIND> {
if {[focus] == ".se.left.input.ent"} {
focus .se.right.input.ent
} else {
focus .se.left.input.ent
}
}
}
focus .se.left.input.ent
Put_Env
if {[lsearch [array names env] FONT] >= 0} {
Change_Font $env(FONT) .se
}
Change_Color $env(FORE_GROUND_COLOR) $env(BACK_GROUND_COLOR) .se
Win_Size .se
Tab_off
Control
}
# Putout enviroment value on list box
proc Put_Env {} {
global env
if {![winfo exists .se]} {
Message_Skeleton -icon warning -button O.K. \
-message "Warning!\nWhat's happen?"
if {[lsearch [array names env] FONT] >= 0} {
Change_Font $env(FONT) .msgskeleton
}
Change_Color $env(FORE_GROUND_COLOR) $env(BACK_GROUND_COLOR) .msgskeleton
.msgskeleton.butt.0 configure -command {destroy .msgskeleton}
return
}
.se.left.list delete 0 end
.se.right.list delete 0 end
foreach E [lsort [array names env]] {
if {$env($E) != ""} {
.se.left.list insert end $E
.se.right.list insert end $env($E)
}
}
}
+305
View File
@@ -0,0 +1,305 @@
## tMomo.tcl
## This can invoke Tcl/Tk GAG, File borwser and Extensions.
## This replaces Momo.tcl, an obsolete Momo
##
## k.ohtubo(Tubocky)
##
## 1998.3.16
## Tcl/Tk version 8.0
## 1998 July 5 GEANT4 Beta-01
## 1998 July 20 added "New Shell" and "continue" commands
## Set global variable
# MOMOPATH/tcltk/Momo/GAG hierarchy is required
if [info exists env(MOMOPATH)] {
set END [expr [string length $env(MOMOPATH)] - 1]
if {[string index $env(MOMOPATH) $END] == "/"} {
set HOME [string range $env(MOMOPATH) 0 [expr $END - 1]]
} else {
set HOME $env(MOMOPATH)
}
} else {
set HOME $env(HOME)/Momo/tcltk
}
set WISH wish$tk_version
set env(G_PATH) $env(PWD)
set Env_Name [list FONT GUI_STYLE GUI_POSITION FORE_GROUND_COLOR BACK_GROUND_COLOR]
## init files for Momo settings (font and color) and extension
set SAVE_FILE .Momorc
set ENV_FILE .Momoext
set errorCode NONE
set errorInfo ""
## tclIndex
set auto_path [linsert $auto_path 0 $HOME/]
if [file exists $env(HOME)/$SAVE_FILE] {
set file_ID [open $env(HOME)/$SAVE_FILE r]
while {![eof $file_ID]} {
set STRING [gets $file_ID]
while {[string index $STRING 0] == " " || [string index $STRING 0 ] == "\t"} {
set STRING [string range $STRING 1 end]
}
set LAST [string length $STRING]
incr LAST -1
while {[string index $STRING $LAST] == " " || [string index $STRING 0 ] == "\t"} {
incr LAST -1
set STRING [string range $STRING 0 $LAST]
}
set LAST [string first " " $STRING]
set FIRST [expr $LAST + 1]
incr LAST -1
set env([string range $STRING 0 $LAST]) [string range $STRING $FIRST end]
}
unset env([string range $STRING 0 $LAST])
close $file_ID
}
if {[lsearch [array names env] GUI_STYLE] < 0} {
set env(GUI_STYLE) horizontal
}
if {[lsearch [array names env] GUI_POSITION] < 0} {
set env(GUI_POSITION) left
}
if {[lsearch [array names env] FORE_GROUND_COLOR] < 0} {
set env(FORE_GROUND_COLOR) #000000000
set FC env(FORE_GROUND_COLOR)
set FR 0
set FG 0
set FB 0
} else {
set FC $env(FORE_GROUND_COLOR)
if {[string index $FC 0] == "#"} {
Reset_Color F
} else {
set FR 0
set FG 0
set FB 0
}
}
if {[lsearch [array names env] BACK_GROUND_COLOR] < 0} {
set env(BACK_GROUND_COLOR) #d90d90d90
set BC env(BACK_GROUND_COLOR)
set BR 0.848
set BG 0.848
set BB 0.848
} else {
set BC $env(BACK_GROUND_COLOR)
if {[string index $BC 0] == "#"} {
Reset_Color B
} else {
set BR 0.848
set BG 0.848
set BB 0.848
}
}
## Make window
. configure -highlightthickness 0
menubutton .function -text Function -menu .function.menu -bd 3 \
-relief raised -highlightthickness 0
menu .function.menu -tearoff 0
.function.menu add cascade -label Position \
-menu .function.menu.position
.function.menu add cascade -label Style \
-menu .function.menu.style
.function.menu add separator
.function.menu add command -label Exit -command {
set file_ID [open $env(HOME)/$SAVE_FILE w]
foreach VARIABLE $Env_Name {
if [info exists env($VARIABLE)] {
puts $file_ID "$VARIABLE $env($VARIABLE)"
}
}
close $file_ID
exit
}
menu .function.menu.position -tearoff 0
.function.menu.position add radiobutton -label Left \
-variable env(GUI_POSITION) -value left -command Position_Pack
.function.menu.position add radiobutton -label Right \
-variable env(GUI_POSITION) -value right -command Position_Pack
menu .function.menu.style -tearoff 0
.function.menu.style add radiobutton -label Horizontal \
-variable env(GUI_STYLE) -value horizontal -command Style_Pack
.function.menu.style add radiobutton -label Vertical \
-variable env(GUI_STYLE) -value vertical -command Style_Pack
menubutton .env -text Environment -menu .env.menu -bd 3 \
-relief raised -highlightthickness 0
menu .env.menu -tearoff 0
.env.menu add command -label Color -command Define_Color
.env.menu add command -label Font -command Select_Font
.env.menu add separator
.env.menu add command -label "Env Variables" -command List_Env
#.env.menu entryconfigure Font -state disabled
button .gag -text "GAG" -highlightthickness 0 \
-command {
raise .
exec $WISH $HOME/GAG/GAG.tcl &
} -bd 3
#menubutton .gag -text "GAG(GEANT4 Adaptive GUI)" -bd 3 -menu .gag.menu \
# -relief raised -highlightthickness 0
#menu .gag.menu -tearoff 0
#.gag.menu add command -label "Tcl/Tk(8.0) version" \
# -command {
# raise .
# exec $WISH $HOME/GAG/GAG.tcl &
# }
###### JAVA GAG removed
#.gag.menu add command -label "Java version" \
# -command {
# raise .
# exec $JAVA $HOME/GAG/GAG &
# }
##### GGE removed for Beta-01
#menubutton .gge -text "GGE(GEANT4 Geometry Editor)" -bd 3 \
# -relief raised -menu .gge.menu -highlightthickness 0
#menu .gge.menu -tearoff 0
#.gge.menu add command -label "Tcl/Tk(8.0) version" \
# -command {
# raise .
# exec $WISH $HOME/GGE/GGE.tcl &
# }
#.gge.menu add command -label "Java version" \
# -command {
# raise .
# exec $JAVA $HOME/GGE/GAG &
# }
button .fb -text "File Browser" -bd 3 -highlightthickness 0 \
-command {
raise .
FBmain
}
# added 1998 July 20
button .shel -text "New Shell" -bd 3 -highlightthickness 0 \
-command {
raise .
exec xterm &
}
if [file exists $env(HOME)/$ENV_FILE] {
menubutton .ext -text Plugins -bd 3 -menu .ext.menu \
-relief raised -highlightthickness 0
menu .ext.menu -tearoff 0
set file_ID [open $env(HOME)/$ENV_FILE r]
while {![eof $file_ID]} {
set STRING [gets $file_ID]
while {[string index $STRING 0] == " " || [string index $STRING 0 ] == "\t"} {
set STRING [string range $STRING 1 end]
}
set LAST [string length $STRING]
incr LAST -1
while {[string index $STRING $LAST] == " " || [string index $STRING 0 ] == "\t"} {
incr LAST -1
set STRING [string range $STRING 0 $LAST]
}
if {$STRING == "Momoseparator"} {
.ext.menu add separator
} elseif {$STRING != "" && [string index $STRING 0] != "#"} {
.ext.menu add command -label $STRING -command "exec $STRING &"
}
}
close $file_ID
bind .ext <ButtonRelease> {
raise .
raise .ext.menu
}
}
## Procedures
# Change Style
proc Style_Pack {} {
global env
set WIDGET [winfo children .]
pack forget .
switch $env(GUI_STYLE) {
horizontal {eval pack $WIDGET -side left -fill both
.gag configure -text "GAG"
# .gge configure -text "GGE(GEANT4 Geometry Editor)"
}
vertical {eval pack $WIDGET -side top -fill both
.gag configure -text "GAG\n"
# .gge configure -text "GGE\n(GEANT4 Geometry Editor)"
}
}
}
# Change Position
proc Position_Pack {} {
global env
switch $env(GUI_POSITION) {
left {wm geometry . +0+0}
right {wm geometry . -0+0}
}
}
wm deiconify .
wm geometry . +0+0
wm overrideredirect . 1
wm resizable . 0 0
# Binding
bind .function <ButtonRelease> {
raise .
raise .function.menu
}
bind .env <ButtonRelease> {
raise .
raise .env.menu
}
#bind .gag <ButtonRelease> {
# raise .
# raise .gag.menu
#}
#bind .gge <ButtonRelease> {
# raise .
# raise .gge.menu
#}
bind .fb <ButtonRelease> {
raise .
}
if {[lsearch [array names env] FONT] >= 0} {
Change_Font $env(FONT) .
}
Change_Color $env(FORE_GROUND_COLOR) $env(BACK_GROUND_COLOR) .
Tab_off
Style_Pack
Position_Pack
Del_Bind
Control
#bind Menubutton <Leave> {
# foreach w [winfo children .] {
# grab release $w
# }
#}
#bind Menubutton <Motion> {}
+30
View File
@@ -0,0 +1,30 @@
# Tcl autoload index file, version 2.0
# This file is generated by the "auto_mkindex" command
# and sourced to set up indexing information for one or
# more commands. Typically each line is a command that
# sets an element in the auto_index array, where the
# element name is the name of a command and the value is
# a script that loads the command.
set auto_index(Define_Color) [list source [file join $dir DefineColor.proc]]
set auto_index(Make_Color) [list source [file join $dir DefineColor.proc]]
set auto_index(Set_Color) [list source [file join $dir DefineColor.proc]]
set auto_index(Reset_Color) [list source [file join $dir DefineColor.proc]]
set auto_index(FBmain) [list source [file join $dir FBmain.proc]]
set auto_index(File_List_Skeleton) [list source [file join $dir Public.proc]]
set auto_index(Change_Path) [list source [file join $dir Public.proc]]
set auto_index(Put_File_List) [list source [file join $dir Public.proc]]
set auto_index(Win_Size) [list source [file join $dir Public.proc]]
set auto_index(Change_Font) [list source [file join $dir Public.proc]]
set auto_index(Scroll_Link) [list source [file join $dir Public.proc]]
set auto_index(Change_Color) [list source [file join $dir Public.proc]]
set auto_index(Value_Check) [list source [file join $dir Public.proc]]
set auto_index(Tab_off) [list source [file join $dir Public.proc]]
set auto_index(Del_Bind) [list source [file join $dir Public.proc]]
set auto_index(Message_Skeleton) [list source [file join $dir Public.proc]]
set auto_index(Another_Line) [list source [file join $dir Public.proc]]
set auto_index(Control) [list source [file join $dir Public.proc]]
set auto_index(Select_Font) [list source [file join $dir SelectFont.proc]]
set auto_index(Get_Font_List) [list source [file join $dir SelectFont.proc]]
set auto_index(List_Env) [list source [file join $dir SetEnv.proc]]
set auto_index(Put_Env) [list source [file join $dir SetEnv.proc]]
+2
View File
@@ -0,0 +1,2 @@
## invoke tMomo.tcl
wish $MOMOPATH/tMomo.tcl