Ticket #2225: message_forms.patch
| File message_forms.patch, 7.6 kB (added by asac@…, 2 years ago) |
|---|
-
roster_window.py
2231 2231 2232 2232 def on_message(self, jid, msg, tim, account, encrypted = False, 2233 2233 msg_type = '', subject = None, resource = '', msg_id = None, 2234 user_nick = '' ):2234 user_nick = '', form_node = None): 2235 2235 '''when we receive a message''' 2236 2236 contact = None 2237 2237 # if chat window will be for specific resource … … 2292 2292 if msg_type == 'normal' and popup: # it's single message to be autopopuped 2293 2293 dialogs.SingleMessageWindow(account, contact.jid, 2294 2294 action = 'receive', from_whom = jid, subject = subject, 2295 message = msg, resource = resource )2295 message = msg, resource = resource, form_node = form_node) 2296 2296 return 2297 2297 2298 2298 # We print if window is opened and it's not a single message … … 2313 2313 if msg_type == 'normal': 2314 2314 kind = 'normal' 2315 2315 qs[fjid].append((kind, (msg, subject, msg_type, tim, encrypted, 2316 resource, msg_id )))2316 resource, msg_id, form_node))) 2317 2317 self.nb_unread += 1 2318 2318 if popup: 2319 2319 if not ctrl: … … 2562 2562 if typ == 'normal': 2563 2563 dialogs.SingleMessageWindow(account, jid, 2564 2564 action = 'receive', from_whom = jid, subject = data[1], 2565 message = data[0], resource = data[5] )2565 message = data[0], resource = data[5], form_node = data[7]) 2566 2566 gajim.interface.remove_first_event(account, jid, typ) 2567 2567 return True 2568 2568 elif typ == 'file-request': -
dialogs.py
41 41 42 42 from common import gajim 43 43 from common import helpers 44 import dataforms 44 45 45 46 class EditGroupsDialog: 46 47 '''Class for the edit group dialog window''' … … 1243 1244 or 'receive'. 1244 1245 ''' 1245 1246 def __init__(self, account, to = '', action = '', from_whom = '', 1246 subject = '', message = '', resource = ''):1247 subject = '', message = '', resource = '', form_node = None): 1247 1248 self.account = account 1248 1249 self.action = action 1249 1250 1250 self.subject = subject 1251 1251 self.message = message 1252 1252 self.to = to 1253 1253 self.from_whom = from_whom 1254 1254 self.resource = resource 1255 1255 self.form_node = form_node 1256 1256 1257 self.xml = gtkgui_helpers.get_glade('single_message_window.glade') 1257 1258 self.window = self.xml.get_widget('single_message_window') 1258 1259 self.count_chars_label = self.xml.get_widget('count_chars_label') … … 1273 1274 self.conversation_tv_buffer = self.conversation_textview.tv.get_buffer() 1274 1275 self.xml.get_widget('conversation_scrolledwindow').add( 1275 1276 self.conversation_textview.tv) 1277 1278 parent_box = self.xml.get_widget('conversation_scrolledwindow').get_parent() 1279 if self.form_node: 1280 self.form_widget = dataforms.DataFormWidget(self.form_node) 1281 parent_box.add(self.form_widget) 1282 parent_box.child_set_property(self.form_widget, 'position', 1283 parent_box.child_get_property(self.xml.get_widget('conversation_scrolledwindow'), 'position')) 1284 self.action = 'form' 1285 1276 1286 self.send_button = self.xml.get_widget('send_button') 1277 1287 self.reply_button = self.xml.get_widget('reply_button') 1278 1288 self.send_and_close_button = self.xml.get_widget('send_and_close_button') … … 1406 1416 self.reply_button.grab_focus() 1407 1417 self.cancel_button.hide() 1408 1418 self.close_button.show() 1409 1419 1420 elif action == 'form': # prepare UI for Receiving 1421 title = _('Form %s') % title 1422 self.send_button.show() 1423 self.send_and_close_button.show() 1424 self.to_label.show() 1425 self.to_entry.show() 1426 self.reply_button.hide() 1427 self.from_label.hide() 1428 self.from_entry.hide() 1429 self.conversation_scrolledwindow.show() 1430 self.message_scrolledwindow.hide() 1431 1410 1432 self.window.set_title(title) 1411 1433 1412 1434 def on_cancel_button_clicked(self, widget): … … 1441 1463 1442 1464 # FIXME: allow GPG message some day 1443 1465 gajim.connections[self.account].send_message(to_whom_jid, message, 1444 keyID = None, type = 'normal', subject=subject)1466 keyID = None, type = 'normal', subject=subject, form_node = self.form_node) 1445 1467 1446 1468 self.subject_entry.set_text('') # we sent ok, clear the subject 1447 1469 self.message_tv_buffer.set_text('') # we sent ok, clear the textview -
gajim.py
1 1 #!/bin/sh 2 2 ''':' 3 exec python -OOt "$0" ${1+"$@"}3 exec python2.4 -OOt "$0" ${1+"$@"} 4 4 ' ''' 5 5 ## gajim.py 6 6 ## … … 487 487 488 488 def handle_event_msg(self, account, array): 489 489 # 'MSG' (account, (jid, msg, time, encrypted, msg_type, subject, 490 # chatstate, msg_id, composing_jep, user_nick )) user_nick is JEP-0172490 # chatstate, msg_id, composing_jep, user_nick, form_node)) user_nick is JEP-0172 491 491 492 492 full_jid_with_resource = array[0] 493 493 jid = gajim.get_jid_without_resource(full_jid_with_resource) … … 574 574 else: 575 575 # array: (jid, msg, time, encrypted, msg_type, subject) 576 576 self.roster.on_message(jid, message, array[2], account, array[3], 577 msg_type, array[5], resource, msg_id, array[9] )577 msg_type, array[5], resource, msg_id, array[9], array[10]) 578 578 nickname = gajim.get_name_from_jid(account, jid) 579 579 # Check and do wanted notifications 580 580 notify.notify('new_message', jid, account, [msg_type, first, nickname, -
common/connection.py
679 679 680 680 def send_message(self, jid, msg, keyID, type = 'chat', subject='', 681 681 chatstate = None, msg_id = None, composing_jep = None, resource = None, 682 user_nick = None ):682 user_nick = None, form_node = None): 683 683 if not self.connection: 684 684 return 685 if not msg and chatstate is None :685 if not msg and chatstate is None and form_node is None: 686 686 return 687 687 fjid = jid 688 688 if resource: … … 710 710 if msgenc: 711 711 msg_iq.setTag(common.xmpp.NS_ENCRYPTED + ' x').setData(msgenc) 712 712 713 if form_node: 714 msg_iq.addChild(node=form_node) 715 713 716 # JEP-0172: user_nickname 714 717 if user_nick: 715 718 df = self.build_user_nick(user_nick) -
common/connection_handlers.py
36 36 from common import atom 37 37 from common.commands import ConnectionCommands 38 38 39 import dataforms 40 39 41 STATUS_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd', 40 42 'invisible'] 41 43 # kind of events we can wait for an answer … … 1283 1285 msgtxt = msg.getBody() 1284 1286 mtype = msg.getType() 1285 1287 subject = msg.getSubject() # if not there, it's None 1288 form_node = dataforms.DataForm(node=msg.getTag("x", {}, "jabber:x:data")) 1286 1289 tim = msg.getTimestamp() 1287 1290 tim = time.strptime(tim, '%Y%m%dT%H:%M:%S') 1288 1291 tim = time.localtime(timegm(tim)) … … 1382 1385 msg_id = gajim.logger.write('chat_msg_recv', frm, msgtxt, tim = tim, 1383 1386 subject = subject) 1384 1387 self.dispatch('MSG', (frm, msgtxt, tim, encrypted, mtype, subject, 1385 chatstate, msg_id, composing_jep, user_nick ))1388 chatstate, msg_id, composing_jep, user_nick, form_node)) 1386 1389 else: # it's single message 1387 1390 if self.name not in no_log_for and jid not in no_log_for and msgtxt: 1388 1391 gajim.logger.write('single_msg_recv', frm, msgtxt, tim = tim, … … 1396 1399 self.dispatch('GC_INVITATION',(frm, jid_from, reason, password)) 1397 1400 else: 1398 1401 self.dispatch('MSG', (frm, msgtxt, tim, encrypted, 'normal', 1399 subject, chatstate, msg_id, composing_jep, user_nick ))1402 subject, chatstate, msg_id, composing_jep, user_nick, form_node)) 1400 1403 # END messageCB 1401 1404 1402 1405 def _pubsubEventCB(self, con, msg):
