示例#1
0
class MsgWindow(gtk.Window):
    def __init__(self,client,uid,name):
        gtk.Window.__init__(self)

	self.client=client
	self.uid=uid
	self.current_name='牛敏国'
	self.set_size_request(545,512)
	self.set_decorated(False)
	self.connect('key-press-event',self.sendMsg)
	
        self.vbox=gtk.VBox()
        self.add(self.vbox)
        
        self.titleBar=LayOut(self)
        self.vbox.pack_start(self.titleBar,False,False)
        
	vpaned=gtk.VPaned()
	self.vbox.pack_start(vpaned,False,False)

	scrolledwindow=gtk.ScrolledWindow()
	scrolledwindow.set_shadow_type(gtk.SHADOW_ETCHED_IN)
	scrolledwindow.set_policy(gtk.POLICY_NEVER,gtk.POLICY_AUTOMATIC)
	vpaned.add1(scrolledwindow)

	self.msgView=gtk.TextView()
	self.msgView.set_size_request(-1,300)
	self.msgView.set_editable(False)
	scrolledwindow.add(self.msgView)

	self.sendView=gtk.TextView()
	self.sendView.set_size_request(-1,300)
	vpaned.add2(self.sendView)

	self.bottomBar=LayOut(self)
	self.bottomBar.setHeight(40)
	self.vbox.pack_end(self.bottomBar,False,False)
	

    def run(self):
        self.show_all()

    def insertHead(self,color):
	   self.msgView.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse(color))
	   view_buffer=self.msgView.get_buffer()
	   end=view_buffer.get_end_iter()
	   localtime=time.localtime()
	   current_time='{}:{}:{}'.format(localtime[3],localtime[4],localtime[5])
	   view_buffer.insert(end,self.current_name + ' ' + current_time + '\n') 
    def insertContent(self,text):
	   self.msgView.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse('black'))
	   view_buffer=self.msgView.get_buffer()
	   end=view_buffer.get_end_iter()
	   view_buffer.insert(end,'\t ' + text + '\n') 
	   self.msgView.scroll_to_mark(view_buffer.get_insert(),0)
    def _sendMsg(self,text):
	   Type='CHAT'
	   Body=text
	   Created=int(time.time())
	   SendGuid=self.client.uid
	   RecvGuid=self.uid
	   msg=self.client.msg.packMsg(Type,Body,Created,SendGuid,RecvGuid)
	   self.client.transport.write(msg)


    def sendMsg(self,widget,event):
    	if event.keyval == 65293 :
	   _buffer=self.sendView.get_buffer()
	   text=_buffer.get_text(_buffer.get_start_iter(),_buffer.get_end_iter(),include_hidden_chars=False)
	   _buffer.delete(_buffer.get_start_iter(),_buffer.get_end_iter())
           self.insertHead('blue')
           self.insertContent(text)
           self._sendMsg(text)
	   return True
	return False
    def recvMsg(self,sender,msg,sendtime):
        if sender == 'custom-00001':
            sender="胡咺晖"
        elif sender == 'custom-00003':
            sender="黄艳英"
        elif sender == 'custom-00002':
            sender="聂桂莹"
        self.insertHead('blue') 
        self.insertContent(msg)