58 proc lockSpecificHandles {} {
59 global currentLockHandles
61 if {![
llength [
info commands minsky.canvas.item.lockGroup.allLockHandles]]} {
62 minsky.canvas.lockRavelsInSelection
64 getItemAt [minsky.canvas.item.x] [minsky.canvas.item.y]
65 if {![
llength [
info commands minsky.canvas.item.lockGroup.allLockHandles]]}
return 67 if {[
winfo exists .wiring.context.lockHandles]} {
destroy .wiring.context.lockHandles}
68 toplevel .wiring.context.lockHandles
69 frame .wiring.context.lockHandles.grid
70 pack .wiring.context.lockHandles.grid
72 if {![minsky.canvas.item.lockGroup.handleLockInfo.size]} {
73 minsky.canvas.item.lockGroup.setLockHandles [minsky.canvas.item.lockGroup.allLockHandles]
77 set ravelNames [minsky.canvas.item.lockGroup.ravelNames]
78 foreach r $ravelNames {
79 grid [
label .wiring.context.lockHandles.grid.name$col -text $r] -row 0 -column $col
82 global lockHandleAttributes
83 set lockHandleAttributes {"slicer" "orientation" "calipers" "order"}
85 "slicer includes whether a handle is an output handle or not"
86 "orientation includes whether a handle is collapsed or not"
88 "order includes picked slices"
90 foreach attribute {"Slicer" "Orientation" "Calipers" "SortOrder"} {
91 grid [
label .wiring.context.lockHandles.grid.name$col -text $attribute] -row 0 -column $col
92 tooltip .wiring.context.lockHandles.grid.name$col [
lindex $tooltips [
expr $col-[
llength $ravelNames]]]
96 for {
set row 1} {$row<=[minsky.canvas.item.lockGroup.handleLockInfo.size]} {
incr row} {
97 set info [minsky.canvas.item.lockGroup.handleLockInfo.@elem [
expr $row-1]]
98 set handles [$info.handleNames]
99 for {
set col 0} {$col<[
llength $ravelNames]} {
incr col} {
100 grid [ttk::combobox .wiring.context.lockHandles.grid.handle${col}_$row -state readony -values [
concat "\xA0" [minsky.canvas.item.lockGroup.handleNames $col]]] -row $row -column $col
101 .wiring.context.lockHandles.grid.handle${col}_$row set [
lindex $handles $col]
103 foreach attr $lockHandleAttributes {
104 grid [
checkbutton .wiring.context.lockHandles.grid.attr${col}_$row -variable lockHandleAttr(${attr}_$row)] -row $row -column $col
106 .wiring.context.lockHandles.grid.attr${col}_$row select
108 .wiring.context.lockHandles.grid.attr${col}_$row deselect
115 global lockHandleAttributes lockHandleAttr
116 for {set row 1} {$row<=[minsky.canvas.item.lockGroup.handleLockInfo.size]} {incr row} {
117 set info [minsky.canvas.item.lockGroup.handleLockInfo.@elem [expr $row-1]]
119 for {set col 0} {$col<[llength [minsky.canvas.item.lockGroup.ravelNames]]} {incr col} {
120 lappend handleNames [.wiring.context.lockHandles.grid.handle${col}_$row get]
122 $info.handleNames $handleNames
123 foreach attr $lockHandleAttributes {
124 $info.$attr $lockHandleAttr(${attr}_$row)
127 minsky.canvas.item.lockGroup.validateLockHandleInfo msg
130 wm transient .wiring.context.lockHandles
131 wm geometry .wiring.context.lockHandles +[
winfo pointerx .]+[
winfo pointery .]
133 grab set .wiring.context.lockHandles