1 from Tkinter import *
2 import Pmw
3 from teamwork.widgets.TreeWidget import *
4
6 """Frame for viewing recursive beliefs
7 """
8
10 self.entity = entity
11 self.activeBelief = None
12 optiondefs = (
13 ('balloon',None,Pmw.INITOPT),
14 ('generic',False,Pmw.INITOPT),
15 ('expert', False,None),
16 ('orient','horizontal',Pmw.INITOPT),
17 ('society',{},None),
18 ('window',Frame,None),
19 )
20 self.defineoptions(kw, optiondefs)
21 Pmw.PanedWidget.__init__(self,parent)
22 self.add('browser', size=200)
23 self.add('display', min=.1)
24 browser = self.createcomponent('tree',(),None,EasyTree,
25 (self.component('browser'),),
26 font=('Helvetica', 12),
27 root_label='%s believes:' % \
28 entity.name,
29 action=None)
30
31
32
33
34
35 browser.inhibitDraw = True
36 top = browser.easyRoot
37
38 nameList = entity.getEntities()
39 nameList.sort()
40 for name in nameList:
41 internal = entity.getEntity(name)
42 br = top.addChild(browser,internal.name)
43 br['action'] = lambda h, ev, s=self,e=internal: \
44 s.beliefentitywin(h,e,0)
45 nameList = internal.getEntities()
46 nameList.sort()
47 for name in nameList:
48 internal2 = internal.getEntity(name)
49 node = br.addChild(browser,internal2.name,isLeaf=True)
50 cmd = lambda h,ev, s=self, e=internal2:\
51 s.beliefentitywin(h,e,0)
52 node['action'] = cmd
53
54 browser.pack(side='top',expand='yes',fill='both')
55 browser.inhibitDraw = False
56 browser.root.expand()
57 self.initialiseoptions()
58
60
61 if self.activeBelief and entity.ancestry() != self.activeBelief.ancestry():
62 self.beliefs[self.activeBelief.ancestry()].pack_forget()
63
64 try:
65 pane = self.component(entity.ancestry())
66 except KeyError:
67 pane = self.createcomponent(entity.ancestry(),(),None,self['window'],
68 (self.component('display'),),
69 entity=entity,society=self['society'],
70 window=False,
71 expert=self['expert'],
72 balloon=self['balloon'],
73 abstract=self['generic'],
74 )
75 entity.attributes['window'] = pane
76
77 pane.component('notebook').pack(fill='both',expand='yes',
78 padx=10,pady=10)
79 self.activeBelief = entity
80 self.setExpert(entity)
81
83 for component in self.components():
84 if self.componentgroup(component) == 'agent':
85 self.component(component).configure(expert=self['expert'])
86