From 4458db5d2cfc5bf2d472925b6633e7d7b27f9ab5 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Thu, 30 Apr 2009 13:36:29 +0000 Subject: [PATCH] [Yrogirg & I] add a first quote ability. see #2943 --- src/chat_control.py | 7 +++++++ src/conversation_textview.py | 22 +++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/chat_control.py b/src/chat_control.py index e18acd1ea..1adab2f55 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -200,6 +200,8 @@ class ChatControlBase(MessageControl): # Create textviews and connect signals self.conv_textview = ConversationTextview(self.account) + id_ = self.conv_textview.connect('quote', self.on_quote) + self.handlers[id_] = self.conv_textview.tv id_ = self.conv_textview.tv.connect('key_press_event', self._conv_textview_key_press_event) self.handlers[id_] = self.conv_textview.tv @@ -370,6 +372,11 @@ class ChatControlBase(MessageControl): menu.show_all() + def on_quote(self, widget, text): + text = '>' + text.replace('\n', '\n>') + '\n' + message_buffer = self.msg_textview.get_buffer() + message_buffer.insert_at_cursor(text) + # moved from ChatControl def _on_banner_eventbox_button_press_event(self, widget, event): '''If right-clicked, show popup''' diff --git a/src/conversation_textview.py b/src/conversation_textview.py index 86b1f2565..6c27f4a84 100644 --- a/src/conversation_textview.py +++ b/src/conversation_textview.py @@ -154,9 +154,15 @@ class TextViewImage(gtk.Image): return False -class ConversationTextview: +class ConversationTextview(gobject.GObject): '''Class for the conversation textview (where user reads already said messages) for chat/groupchat windows''' + __gsignals__ = dict( + quote = (gobject.SIGNAL_RUN_LAST | gobject.SIGNAL_ACTION, + None, # return value + (str, ) # arguments + ) + ) FOCUS_OUT_LINE_PIXBUF = gtk.gdk.pixbuf_new_from_file(os.path.join( gajim.DATA_DIR, 'pixmaps', 'muc_separator.png')) @@ -170,6 +176,7 @@ class ConversationTextview: def __init__(self, account, used_in_history_window = False): '''if used_in_history_window is True, then we do not show Clear menuitem in context menu''' + gobject.GObject.__init__(self) self.used_in_history_window = used_in_history_window # no need to inherit TextView, use it as atrribute is safer @@ -688,9 +695,15 @@ class ConversationTextview: item = gtk.SeparatorMenuItem() menu.prepend(item) - self.selected_phrase = helpers.reduce_chars_newlines( + if not self.used_in_history_window: + item = gtk.MenuItem(_('_Quote')) + id_ = item.connect('activate', self.on_quote) + self.handlers[id_] = item + menu.prepend(item) + + _selected_phrase = helpers.reduce_chars_newlines( self.selected_phrase, 25, 2) - item = gtk.MenuItem(_('_Actions for "%s"') % self.selected_phrase) + item = gtk.MenuItem(_('_Actions for "%s"') % _selected_phrase) menu.prepend(item) submenu = gtk.Menu() item.set_submenu(submenu) @@ -753,6 +766,9 @@ class ConversationTextview: menu.show_all() + def on_quote(self, widget): + self.emit('quote', self.selected_phrase) + def on_textview_button_press_event(self, widget, event): # If we clicked on a taged text do NOT open the standard popup menu # if normal text check if we have sth selected