[commit-gajim] r11253 - trunk/src

asterix at gajim.org asterix at gajim.org
Thu Apr 30 15:36:29 CEST 2009


Author: asterix
Date: 2009-04-30 15:36:29 +0200 (Thu, 30 Apr 2009)
New Revision: 11253

Modified:
   trunk/src/chat_control.py
   trunk/src/conversation_textview.py
Log:
[Yrogirg & I] add a first quote ability. see #2943


Modified: trunk/src/chat_control.py
===================================================================
--- trunk/src/chat_control.py	2009-04-30 08:32:32 UTC (rev 11252)
+++ trunk/src/chat_control.py	2009-04-30 13:36:29 UTC (rev 11253)
@@ -200,6 +200,8 @@
 
 		# 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 @@
 
 		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'''

Modified: trunk/src/conversation_textview.py
===================================================================
--- trunk/src/conversation_textview.py	2009-04-30 08:32:32 UTC (rev 11252)
+++ trunk/src/conversation_textview.py	2009-04-30 13:36:29 UTC (rev 11253)
@@ -154,9 +154,15 @@
 		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 @@
 	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 @@
 				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 @@
 
 		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



More information about the Commits mailing list