Package teamwork :: Package widgets :: Package PsychGUI :: Package AgentWindow :: Module BeliefPane
[hide private]
[frames] | no frames]

Source Code for Module teamwork.widgets.PsychGUI.AgentWindow.BeliefPane

 1  from Tkinter import * 
 2  import Pmw 
 3  from teamwork.widgets.TreeWidget import * 
 4   
5 -class BeliefFrame(Pmw.PanedWidget):
6 """Frame for viewing recursive beliefs 7 """ 8
9 - def __init__(self,parent,entity,**kw):
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), # Class used for individual agent windows 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 # sb=Scrollbar(browser.master) 31 # sb.pack(side='right', fill='y') 32 # browser.configure(yscrollcommand=sb.set) 33 # sb.configure(command=browser.yview) 34 35 browser.inhibitDraw = True 36 top = browser.easyRoot 37 # Populate entity selector tree 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
59 - def beliefentitywin(self, h, entity, path=''):
60 # Hide the previous belief window 61 if self.activeBelief and entity.ancestry() != self.activeBelief.ancestry(): 62 self.beliefs[self.activeBelief.ancestry()].pack_forget() 63 # Create a new belief window 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 # Show the new belief window 77 pane.component('notebook').pack(fill='both',expand='yes', 78 padx=10,pady=10) 79 self.activeBelief = entity 80 self.setExpert(entity)
81
82 - def setExpert(self,entity=None):
83 for component in self.components(): 84 if self.componentgroup(component) == 'agent': 85 self.component(component).configure(expert=self['expert'])
86