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

294 lines
6.8 KiB
Tcl

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