diff --git a/sugar/chat/Chat.py b/sugar/chat/Chat.py index 5d34e44e..fa8c0123 100644 --- a/sugar/chat/Chat.py +++ b/sugar/chat/Chat.py @@ -131,7 +131,7 @@ class Chat(gtk.VBox): self._message_inserted() - def _insert_sketch(self, nick, svgdata): + def _insert_sketch(self, buddy, svgdata): """Insert a sketch object into the chat buffer.""" pbl = gtk.gdk.PixbufLoader("svg") pbl.write(svgdata) @@ -140,7 +140,7 @@ class Chat(gtk.VBox): buf = self._chat_view.get_buffer() - self._insert_buddy(buf, nick) + self._insert_buddy(buf, buddy) rise = int(pbuf.get_height() / 3) * -1 sha_hash = sha.new() @@ -218,7 +218,7 @@ class Chat(gtk.VBox): return self._stream_writer.write(self.serialize_message(svgdata)) owner = PresenceService.get_instance().get_owner() - self._insert_sketch(owner.get_nick_name(), svgdata) + self._insert_sketch(owner, svgdata) def send_text_message(self, text): """Send a chat message and insert it into the local buffer.""" diff --git a/sugar/chat/ChatEditor.py b/sugar/chat/ChatEditor.py index 111970af..84e64947 100644 --- a/sugar/chat/ChatEditor.py +++ b/sugar/chat/ChatEditor.py @@ -5,18 +5,19 @@ import gtk from sugar.chat.sketchpad.SketchPad import SketchPad import richtext -class ChatEditor(gtk.Notebook): +class ChatEditor(gtk.HBox): TEXT_MODE = 0 SKETCH_MODE = 1 def __init__(self, chat, mode): - gtk.Notebook.__init__(self) + gtk.HBox.__init__(self, False, 6) self._chat = chat - self.set_show_tabs(False) - self.set_show_border(False) - self.set_size_request(-1, 70) + self._notebook = gtk.Notebook() + self._notebook.set_show_tabs(False) + self._notebook.set_show_border(False) + self._notebook.set_size_request(-1, 70) chat_view_sw = gtk.ScrolledWindow() chat_view_sw.set_shadow_type(gtk.SHADOW_IN) @@ -26,35 +27,59 @@ class ChatEditor(gtk.Notebook): chat_view_sw.add(self._text_view) self._text_view.show() - self.append_page(chat_view_sw) + self._notebook.append_page(chat_view_sw) chat_view_sw.show() self._sketchpad = SketchPad() - self.append_page(self._sketchpad) + self._notebook.append_page(self._sketchpad) self._sketchpad.show() + self.pack_start(self._notebook) + self._notebook.show() + + send_button = gtk.Button("Send") + send_button.set_border_width(6) + send_button.connect('clicked', self.__send_button_clicked_cb) + self.pack_start(send_button, False, True) + send_button.show() + self.set_mode(mode) + def get_buffer(self): + return self._text_view.get_buffer() + def set_mode(self, mode): self._mode = mode if self._mode == ChatEditor.SKETCH_MODE: - self.set_current_page(1) + self._notebook.set_current_page(1) elif self._mode == ChatEditor.TEXT_MODE: - self.set_current_page(0) - - def get_buffer(self): - return self._text_view.get_buffer() + self._notebook.set_current_page(0) + def __send_button_clicked_cb(self, button): + self._send() + + def _send(self): + if self._mode == ChatEditor.SKETCH_MODE: + self._send_sketch() + elif self._mode == ChatEditor.TEXT_MODE: + self._send_text() + + def _send_sketch(self): + self._chat.send_sketch(self._sketchpad.to_svg()) + self._sketchpad.clear() + + def _send_text(self): + buf = self._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._chat.send_text_message(text) + + buf.set_text("") + buf.place_cursor(buf.get_start_iter()) + 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._chat.send_text_message(text) - - buf.set_text("") - buf.place_cursor(buf.get_start_iter()) - + self._send() return True