1 # cap-switchable --
2 #
3 # Implementation of the switchable GUI.
4 #
5 # Copyright (c) 1996-2002 The Regents of the University of California.
6 # All rights reserved.
7 #
8 # Redistribution and use in source and binary forms, with or without
9 # modification, are permitted provided that the following conditions are met:
10 #
11 # A. Redistributions of source code must retain the above copyright notice,
12 # this list of conditions and the following disclaimer.
13 # B. Redistributions in binary form must reproduce the above copyright notice,
14 # this list of conditions and the following disclaimer in the documentation
15 # and/or other materials provided with the distribution.
16 # C. Neither the names of the copyright holders nor the names of its
17 # contributors may be used to endorse or promote products derived from this
18 # software without specific prior written permission.
19 #
20 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
21 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
24 # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 #
31 # @(#) $Header: /usr/mash/src/repository/mash/mash-1/tcl/indiva/lib/cap-switchable.tcl,v 1.1 2002/07/11 19:20:15 weitsang Exp $
32
33 import Capability
34 Class Capability/Switchable -superclass Capability
35
36 Capability/Switchable proc gui { from to w action } {
37 # We can create gui for either the whole switch, or just a
38 # segment in a flow.
39 if {[$from is_instance_of MobPort] && $from != $to} {
40 return [$self segment_gui $from $to $w $action]
41 } elseif {[$from is_instance_of MobRoutingSwitcher] ||
42 ([$from is_instance_of MobPort] && $from == $to)} {
43 return [$self device_gui $from $w $action]
44 } else {
45 return ""
46 }
47 }
48
49 Capability/Switchable proc segment_gui { from to w action } {
50 set items {}
51 set device [$from device]
52
53 foreach in [$device get_switchable_inputs] {
54 lappend in_items([$in get_attribute type]) "[$in get_attribute portid] [$in get_attribute friendlyname]"
55 }
56
57 set toport [$to get_attribute portid]
58
59 set layout ""
60 set commands ""
61 set count 0
62 foreach type [array names in_items] {
63 if {$type != [$to get_attribute type]} {
64 continue
65 }
66 set list [lsort -integer -index 0 $in_items($type)]
67 set f $w.f$count
68 set v in${w}${count}
69 set curr "[$from get_attribute portid] [$from get_attribute friendlyname]"
70 append layout "
71 global $v
72 frame $f
73 label $f.l -text [rstr Input ($type)] -anchor e
74 tk_optionMenu $f.in $v $list
75 set $v [reval join [rstr $curr]]
76 pack $f.l $f.in -side left -expand 1 -fill both
77 pack $f -fill x -expand 1
78 "
79 lappend commands variable $v \
80 "$action $type [reval lindex [rvar $v] 0] $toport"
81 incr count
82 }
83 return [list $layout $commands]
84 }
85
86 Capability/Switchable proc device_gui { from to w action } {
87 MashLog info "DEVICE GUI called"
88 }
89
90 proc reval { args } {
91 return \[[join $args]\]
92 }
93
94 proc rvar { var } {
95 return \$\{$var\}
96 }
97
98 proc rstr { args } {
99 return \"$args\"
100 }
101
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.