This is Attributes.tcl in view mode; [Download] [Up]
# The attributes palette proc ATrefresh {} { global ATwin ATnum .curwin ATview ATimg ATsc ATname $ATwin hideDisplay { set .curwin $ATwin set ATview [new view 0 0 80 [expr $ATnum*80] {} -nowindow] set ATsc [new scrollview 0 20 100 100 $ATview] $ATsc autosize w h for {set i 0} {$i<$ATnum} {incr i} { [new button 0 [expr $i*80] 80 80 $ATname($i) "ATdo $i" -window $ATview] setImage $ATimg($i) -above } } $ATwin display } proc ATaddAtt {} { global ATaddWin .curwin ATpath set l [P_selection] if ([llength $l]==0)||([llength $l]>1) {alertPanel "Add attribute" "Please select exactly one object before trying to add it to the attribute list." OK} { if ![info exists ATaddWin] { new fromNIB $ATpath/../AddAttributes.nib set ATaddWin ${.curwin} } { $ATaddWin orderFront } } } proc ATdoAddObj {} { global ATtf ATaddWin $ATaddWin close addAttr [$ATtf value] } proc addAttr {name} { global ATpath n P_selToTIFF $ATpath/$name.tiff 75.0 75.0 set f [open $ATpath/$name.att w] puts $f [P_getobject $n] close $f ATadd $name } proc ATadd {n} { global ATsc ATimg ATpath ATnum ATdorefresh ATatt ATname set ATimg($ATnum) [new image -load $ATpath/$n.tiff] set f [open $ATpath/$n.att] set ATatt($ATnum) [read $f] set ATname($ATnum) $n close $f incr ATnum if $ATdorefresh { if [info exists ATsc] {$ATsc free} ATrefresh } } catch { set ATnum 0 set ATwin [new window 123 21 100 120 "Attribute"] new button 0 0 100 20 "Add attr..." ATaddAtt set ATpath [P_find Attributes] catch { set ATdorefresh 0 catch { foreach f [glob $ATpath/*.att] { catch {ATadd [file tail [file root $f]]} } } set ATdorefresh 1 ATrefresh } } proc ATdo {i} { global ATatt curL curBr set o $ATatt($i) P_setCurLayer [set ly [lindex $o 17]] P_setAttributes [lindex $o 1] [lindex $o 2] [lindex $o 4] [lindex $o 3] [lindex $o 5] [lindex $o 16] [lindex $o 10] [lindex $o 11] [lindex $o 12] [lindex $o 13] [lindex $o 14] [lindex $o 15] $curBr select $ly set curL $ly }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.