49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import pygtk | ||
|  | pygtk.require('2.0') | ||
|  | import gtk | ||
|  | 
 | ||
|  | from sugar.chat.sketchpad.SketchPad import SketchPad | ||
|  | import richtext | ||
|  | 
 | ||
|  | class ChatEditor(gtk.Notebook): | ||
|  | 	def __init__(self): | ||
|  | 		gtk.Notebook.__init__(self) | ||
|  | 	 | ||
|  | 		self.set_show_tabs(False) | ||
|  | 		self.set_show_border(False) | ||
|  | 		self.set_size_request(-1, 70) | ||
|  | 	 | ||
|  | 		chat_view_sw = gtk.ScrolledWindow() | ||
|  | 		chat_view_sw.set_shadow_type(gtk.SHADOW_IN) | ||
|  | 		chat_view_sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) | ||
|  | 		self._text_view = richtext.RichTextView() | ||
|  | 		self._text_view.connect("key-press-event", self.__key_press_event_cb) | ||
|  | 		chat_view_sw.add(self._text_view) | ||
|  | 		self._text_view.show() | ||
|  | 		 | ||
|  | 		self.append_page(chat_view_sw) | ||
|  | 		chat_view_sw.show() | ||
|  | 		 | ||
|  | 		self._sketchpad = SketchPad() | ||
|  | 		self.append_page(self._sketchpad) | ||
|  | 		self._sketchpad.show() | ||
|  | 		 | ||
|  | 		self.set_current_page(0) | ||
|  | 
 | ||
|  | 	def get_buffer(self): | ||
|  | 		return self._text_view.get_buffer() | ||
|  | 
 | ||
|  | 	def __key_press_event_cb(self, text_view, event): | ||
|  | 		if event.keyval == gtk.keysyms.Return: | ||
|  | 			buf = text_view.get_buffer() | ||
|  | 			text = buf.get_text(buf.get_start_iter(), buf.get_end_iter()) | ||
|  | 			if len(text.strip()) > 0: | ||
|  | 				serializer = richtext.RichTextSerializer() | ||
|  | 				text = serializer.serialize(buf) | ||
|  | 				self.send_text_message(text) | ||
|  | 
 | ||
|  | 			buf.set_text("") | ||
|  | 			buf.place_cursor(buf.get_start_iter()) | ||
|  | 
 | ||
|  | 			return True |