/usr/share/xcrysden/Tcl/multiWid.tcl is in xcrysden-data 1.5.60-1build3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | #############################################################################
# Author: #
# ------ #
# Anton Kokalj Email: Tone.Kokalj@ijs.si #
# Department of Physical and Organic Chemistry Phone: x 386 1 477 3523 #
# Jozef Stefan Institute Fax: x 386 1 477 3811 #
# Jamova 39, SI-1000 Ljubljana #
# SLOVENIA #
# #
# Source: $XCRYSDEN_TOPDIR/Tcl/multiWid.tcl
# ------ #
# Copyright (c) 1996-2003 by Anton Kokalj #
#############################################################################
proc MultiWidget {t args} {
global multi_widget_list
set i 0
set ic 0
set ib 0
set create_tplw 0
foreach option $args {
incr i
# odd cycles are tags, even options
if { $i%2 } {
set tag $option
} else {
switch -- $tag {
"-create_tplw" {set create_tplw $option}
"-tplw_args" {set tplw_args $option}
"-testbutton" {set testbutton [expr $option - 1]}
"-width" {set width $option}
"-height" {set height $option}
"-b_height" {set b_height $option}
"-b_width" {set b_width $option}
"-command" {
foreach item $option {
set b_text($ic) [lindex $item 0]
set b_com($ic) [lindex $item 1]
incr ic
}
}
"-bottom_button" {
foreach item $option {
set botb_text($ib) [lindex $item 0]
set botb_com($ib) [lindex $item 1]
incr ib
}
}
default {
tk_dialog .mb_error Error \
"ERROR: Bad FillEntries configure option $tag" \
error 0 OK
return 0
}
}
}
}
if { $i%2 } {
tk_dialog .mb_error1 Error \
"ERROR: You called MultiWidget with an odd number of args !" \
error 0 OK
return 0
}
########################################
# is it needed to create toplevel ?????
if $create_tplw {
set t [eval $tplw_args]
}
########################################
set multi_widget_list(post) {}
set mas [frame $t.mas]
set top [frame $mas.top -highlightthickness 0]
set bot [frame $mas.bot -relief raised -bd 3 \
-highlightthickness 0 ]
if [info exists width] { $bot configure -width $width }
if [info exists height] { $bot configure -height $height}
set multi_widget_list(buttons) {}
for {set i 0} {$i < $ic} {incr i} {
set b($i) [button $top.b$i -text $b_text($i) \
-relief raised -bd 1 \
-highlightthickness 0 \
-command [list PostMultiWidget $bot $top.b$i $b_com($i)]]
lappend multi_widget_list(buttons) $b($i)
if [info exists b_height] { $b($i) config -height $b_height }
if [info exists b_width] { $b($i) config -width $b_width }
pack $b($i) -side left -expand 1 -fill both
}
pack $mas -padx 10 -pady 10 -fill both
pack $top $bot -side top -fill both -padx 0 -pady 0 \
-ipadx 0 -ipady 0 -expand 1
# BOTTOM-BUTTONS
# get toplevel window
set tplw [winfo toplevel $t]
for {set i 0} {$i < $ib} {incr i} {
button $mas.b$i \
-relief raised -bd 3 \
-highlightthickness 0 \
-text $botb_text($i) \
-command [list eval $botb_com($i) $tplw]
pack $mas.b$i -side left -expand 1 -fill both -ipady 2
}
# test geometry of largest window
PostMultiWidget $bot $top.b$testbutton $b_com($testbutton) test
# default Posted widget is first one
PostMultiWidget $bot $top.b0 $b_com(0)
puts stdout $mas
}
proc PostMultiWidget {f b com_list {test {}}} {
global multi_widget_list
foreach but $multi_widget_list(buttons) {
$but configure -bd 1
}
$b configure -bd 3
xcDebug "PostMultiWidget:: $multi_widget_list(post)"
foreach wid $multi_widget_list(post) {
if [winfo exists $wid] { destroy $wid }
}
set multi_widget_list(post) {}
if { $test == {} } {
eval $com_list $f
} else {
eval $com_list $f $test
}
}
|