destroy dialogs on delete event

don't send streamhosts if they have been
already sent
This commit is contained in:
Dimitur Kirov 2006-04-13 18:00:04 +00:00
parent 6319e59e8b
commit 927b6d09bc
3 changed files with 23 additions and 11 deletions

View File

@ -246,6 +246,8 @@ class ConnectionBytestream:
def send_file_request(self, file_props):
''' send iq for new FT request '''
if not self.connection or self.connected < 2:
return
our_jid = gajim.get_jid_from_account(self.name)
resource = self.server_resource
frm = our_jid + '/' + resource
@ -396,7 +398,7 @@ class ConnectionBytestream:
file_props = self.files_props[id]
if file_props['streamhost-used']:
for host in file_props['proxyhosts']:
if host['initiator'] == frm:
if host['initiator'] == frm and host.has_key('idx'):
gajim.socks5queue.activate_proxy(host['idx'])
raise common.xmpp.NodeProcessed
@ -478,6 +480,9 @@ class ConnectionBytestream:
if file_props is None:
# file properties for jid is none
return
if file_props.has_key('request-id'):
# we have already sent streamhosts info
return
file_props['receiver'] = helpers.get_full_jid_from_iq(iq_obj)
si = iq_obj.getTag('si')
file_tag = si.getTag('file')

View File

@ -740,6 +740,8 @@ class Socks5Sender(Socks5, IdleObject):
def send_file(self):
''' start sending the file over verified connection '''
if self.file_props['started']:
return
self.file_props['error'] = 0
self.file_props['disconnect_cb'] = self.disconnect
self.file_props['started'] = True

View File

@ -312,12 +312,13 @@ _('Connection with peer cannot be established.'))
if file_props.has_key('desc'):
sec_text += '\n\t' + _('Description: %s') % file_props['desc']
prim_text = _('%s wants to send you a file:') % contact.jid
dialog, dialog2 = None, None
def on_response_ok(widget, account, contact, file_props):
self.dialog.destroy()
dialog.destroy()
def on_ok(widget, account, contact, file_props):
file_path = self.dialog2.get_filename()
file_path = dialog2.get_filename()
file_path = gtkgui_helpers.decode_filechooser_file_paths(
(file_path,))[0]
if os.path.exists(file_path):
@ -329,18 +330,18 @@ _('Connection with peer cannot be established.'))
_('This file already exists'), _('What do you want to do?'),
not dl_finished)
response = dialog.get_response()
if response == gtk.RESPONSE_CANCEL:
if response < 0:
return
elif response == 100:
file_props['offset'] = dl_size
self.dialog2.destroy()
dialog2.destroy()
self._start_receive(file_path, account, contact, file_props)
def on_cancel(widget, account, contact, file_props):
self.dialog2.destroy()
dialog2.destroy()
gajim.connections[account].send_file_rejection(file_props)
self.dialog2 = dialogs.FileChooserDialog(
dialog2 = dialogs.FileChooserDialog(
title_text = _('Save File as...'),
action = gtk.FILE_CHOOSER_ACTION_SAVE,
buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
@ -350,16 +351,20 @@ _('Connection with peer cannot be established.'))
on_response_ok = (on_ok, account, contact, file_props),
on_response_cancel = (on_cancel, account, contact, file_props))
self.dialog2.set_current_name(file_props['name'])
dialog2.set_current_name(file_props['name'])
dialog2.connect('delete-event', lambda widget, event:
on_cancel(widget, account, contact, file_props))
def on_response_cancel(widget, account, file_props):
self.dialog.destroy()
dialog.destroy()
gajim.connections[account].send_file_rejection(file_props)
self.dialog = dialogs.NonModalConfirmationDialog(prim_text, sec_text,
dialog = dialogs.NonModalConfirmationDialog(prim_text, sec_text,
on_response_ok = (on_response_ok, account, contact, file_props),
on_response_cancel = (on_response_cancel, account, file_props))
self.dialog.popup()
dialog.connect('delete-event', lambda widget, event:
on_response_cancel(widget, account, file_props))
dialog.popup()
def set_images(self):
''' create pixbufs for status images in transfer rows'''