/[fgs]/fgs/client/tkinter/roomwidget.py
ViewVC logotype

Diff of /fgs/client/tkinter/roomwidget.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by tps12, Thu Sep 4 02:18:55 2003 UTC revision 1.4 by tps12, Tue Sep 9 02:33:07 2003 UTC
# Line 1  Line 1 
1  from Tkinter import *  from Tkinter import *
2  from chatwidget import Chat  from chatwidget import Chat
3  from ScrolledText import *  from ScrolledText import *
4    import Pmw
5    
6  class Room(Frame):  class Room(Frame):
7    
# Line 22  class Room(Frame): Line 23  class Room(Frame):
23          frame.rowconfigure(0,weight=1)          frame.rowconfigure(0,weight=1)
24          frame.columnconfigure(0,weight=1)          frame.columnconfigure(0,weight=1)
25    
26          self.occupantlist = ScrolledText(self, state=DISABLED)          self.occupantlist = Pmw.ScrolledListBox(self)
27          self.occupantlist.grid(row=0, column=1, sticky=NE+SW)          self.occupantlist.grid(row=0, column=1, sticky=NE+SW)
28    
29          self.rowconfigure(0,weight=1)          self.rowconfigure(0,weight=1)
# Line 32  class Room(Frame): Line 33  class Room(Frame):
33          self.server.add_handler("204", self.receive_chat, self.number)          self.server.add_handler("204", self.receive_chat, self.number)
34          self.server.add_handler("202", self.receive_newocc, self.number)          self.server.add_handler("202", self.receive_newocc, self.number)
35          self.server.add_handler("203", self.receive_occleave, self.number)          self.server.add_handler("203", self.receive_occleave, self.number)
36            self.server.add_handler("208", self.receive_occlist, self.number)
37    
38          self.server.room_visit(self.number)          self.server.room_visit(self.number)
39            self.server.room_listoccupants(self.number)
40    
41      def __del__(self):      def __del__(self):
42          self.leave()          self.leave()
# Line 42  class Room(Frame): Line 45  class Room(Frame):
45          self.chat.receive(msg[2], msg[3])          self.chat.receive(msg[2], msg[3])
46    
47      def receive_newocc(self, msg):      def receive_newocc(self, msg):
48          print "got new occ", msg          self.occupantlist.insert("end", msg[2])
49          self.occupantlist.config(state=NORMAL)  
         #use the name as a tag as well for easy deletion  
         self.occupantlist.insert(END, msg[2]+"\n", msg[2])  
         self.occupantlist.config(state=DISABLED)  
   
50      def receive_occleave(self, msg):      def receive_occleave(self, msg):
51          print "got occ leave", msg          i = list(self.occupantlist.get(0, "end")).index(msg[2])
52            self.occupantlist.delete(i)
53          self.occupantlist.config(state=NORMAL)  
54          range = self.occupantlist.tag_nextrange(msg[2], 1.0)      def receive_occlist(self, msg):
55          self.occupantlist.delete(range[0], range[1])          l = list(self.occupantlist.get(0, "end"))
56  #        self.occupantlist.insert(END, msg[2]+"\n")          # only insert names not in list
57          self.occupantlist.config(state=DISABLED)          print msg[2:]
58            for name in msg[2:]:
59                try:
60                    l.index(name)
61                except ValueError:
62                    self.occupantlist.insert("end", name)
63    
64      def leave(self):      def leave(self):
65          self.server.remove_handler("204", self.receive_chat, self.number)          self.server.remove_handler("204", self.receive_chat, self.number)
66          self.server.remove_handler("202", self.receive_newocc, self.number)          self.server.remove_handler("202", self.receive_newocc, self.number)
67          self.server.remove_handler("203", self.receive_occleave, self.number)          self.server.remove_handler("203", self.receive_occleave, self.number)
68            self.server.remove_handler("208", self.receive_occlist, self.number)
69          self.server.room_leave(self.number)          self.server.room_leave(self.number)
70    
71  class RoomWindow:  class RoomWindow:
72      def __init__(self, server, number):      def __init__(self, server, number, name):
73          self.top = Toplevel()          self.top = Toplevel()
74            self.top.title(name)
75          self.room = Room(self.top, server, number)          self.room = Room(self.top, server, number)
76          self.room.grid(sticky=N+S+E+W)          self.room.grid(sticky=N+S+E+W)
77          self.top.rowconfigure(0, weight=1)          self.top.rowconfigure(0, weight=1)

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26