/usr/share/xcrysden/Tcl/modify.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 138 139 140 141 142 143 144 145 | #############################################################################
# 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/modify.tcl
# ------ #
# Copyright (c) 1996-2003 by Anton Kokalj #
#############################################################################
#===========================
# OPTION: NumCellDrawn
#===========================
proc NumCellDrawn {} {
global species nxdir nydir nzdir nxdirold nydirold nzdirold \
NumCellDrawn periodic XCState myParam
if { $periodic(dim) == 0 } { return }
#just in any case
if { [info exists NumCellDrawn(done)] } { unset NumCellDrawn(done) }
# this option is only for $species != molecule
#if { $periodic(dim) == 0 } {
# tk_dialog .nmdwarning "Warning" "WARNING:\"Number of Units Drawn\" \
# option can not be applied for MOLECULES/CLUSTERS !!!" \
# warning 0 OK
# return
#}
# if $species is not defined (whan we are using viewer just for viewing)
if { [info exist species] == 0 && [xcIsActive properties] == 0 } { return }
if [winfo exists .ncd] { return }
set t [xcToplevel .ncd "Modify Number of Units Drawn" "Modify" \
. 100 50 1]
# some decorations
set f1 [frame $t.f1 -relief groove -bd 2]
pack $f1 -side top -padx 7 -pady 7 -ipadx 7 -ipady 7 -fill x
set m [message $f1.msg -justify center -width 200 -text \
"Specify number of cells to be drawn for each dimension:"]
pack $m -expand 1 -padx 5 -pady 5
if [info exists nxdir] {set nxdirold $nxdir}
if [info exists nydir] {set nydirold $nydir}
if [info exists nzdir] {set nzdirold $nzdir}
puts stdout "nxdir,nydir,nzdir> $nxdir $nydir $nzdir"
# display entries for specifying nxdir,nydir,nzdir
if { $periodic(dim) == 3 } {
if { [info exists myParam(CRYSTAL_MAXCELL)] } {
set max $myParam(CRYSTAL_MAXCELL)
} else {
set max 10
}
set dirs {x y z}
} elseif { $periodic(dim) == 2 } {
if { [info exists myParam(SLAB_MAXCELL)] } {
set max $myParam(SLAB_MAXCELL)
} else {
set max 20
}
set dirs {x y}
} elseif { $periodic(dim) == 1 } {
if { [info exists myParam(POLYMER_MAXCELL)] } {
set max $myParam(POLYMER_MAXCELL)
} else {
set max 50
}
set dirs x
}
set res [expr {int($max/10)}]
foreach i $dirs {
set sc [scale $f1.sc$i -from 1 -to $max \
-length 200 \
-variable n${i}dirold \
-orient horizontal \
-label "In [string toupper $i]-dir:" \
-tickinterval $res \
-digits 1 \
-resolution 1 \
-showvalue true \
-width 10]
pack $sc -side top -fill x -expand 1 -padx 5 -pady 5
}
set okf [frame $t.okf -relief sunken -bd 2]
set ok [button $okf.ok -text OK -command [list NumCellDrawnOK $t]]
set upd [button $t.upd -text Update \
-command [list NumCellDrawnOK $t update]]
set can [button $t.can -text Cancel -command [list NumCellDrawnCan $t]]
pack $okf -side left -expand 1 -padx 5m -pady 2m
pack $upd -side left -expand 1 -padx 5m -pady 2m -ipadx 1m -ipady 1m
pack $can -side left -expand 1 -padx 5m -pady 2m -ipadx 1m -ipady 1m
pack $ok -padx 1m -pady 1m -ipadx 1m -ipady 1m
}
proc NumCellDrawnOK {t {update 0}} {
global nxdir nydir nzdir nxdirold nydirold nzdirold \
species mode NumCellDrawn err system periodic
# for $species == molecule it is inpossible to come here !!!
# ndirx must be specified for POLYMERS, SLABS, CRYSTALS
check_var {{nxdirold posint}} .ncd.f1.frame.entry1
# check_var return $err; if $err --> mistake -> RETURN
if $err { return }
if { $periodic(dim) > 1 } {
check_var {{nydirold posint}} .ncd.f1.frame.entry2
}
if $err { return }
if { $periodic(dim) == 3 } {
check_var {{nzdirold posint}} .ncd.f1.frame.entry3
}
if $err { return }
# if we come so far everything is good, update a structure
if { $update == 0 } {
destroy $t
}
# check for AdvGeom options;
# in future this should be replaced with $periodic(dim) !!!
if { [info exists AdvGeom(slab)] } { set nzdirold 0 }
# if OK/UPDATE button was pressed, than set nxdir/nydir/nzdir values
if { [info exists nxdirold] } { set nxdir $nxdirold }
if { [info exists nydirold] } { set nydir $nydirold }
if { [info exists nzdirold] } { set nzdir $nzdirold }
GenGeomDisplay 1
}
proc NumCellDrawnCan {t} {
destroy $t
return
}
|