added send_file remote command

This commit is contained in:
Dimitur Kirov 2005-08-23 23:41:23 +00:00
parent a51c320245
commit e4a28f6572
4 changed files with 51 additions and 1 deletions

View File

@ -136,6 +136,15 @@ sent using this account'), False),
[
('jid', _('JID of the contact'), True)
]
],
'send_file': [
_('Send file to a contact'),
[
(_('file'), _('File path'), True),
('jid', _('JID of the contact'), True),
(_('account'), _('if specified, file will be sent \
using this account'), False)
]
]
}
if self.argv_len < 2 or \

View File

@ -253,6 +253,11 @@ _('Connection with peer cannot be established.'))
def send_file(self, account, contact, file_path):
''' start the real transfer(upload) of the file '''
if type(contact) == str:
if contact.find('/') == -1:
return
(jid, resource) = contact.split("/", 1)
contact = gajim.Contact(jid = jid, resource = resource)
(file_dir, file_name) = os.path.split(file_path)
file_props = self.get_send_file_props(account, contact,
file_path, file_name)

View File

@ -339,6 +339,7 @@ class Interface:
self.roster.popup_notification_windows.append(instance)
if self.remote and self.remote.is_enabled():
self.remote.raise_signal('ContactAbsence', (account, array))
# stop non active file transfers
elif self.windows[account]['gc'].has_key(ji):
#it is a groupchat presence

View File

@ -100,7 +100,8 @@ class SignalObject(DbusPrototype):
self.change_status,
self.open_chat,
self.send_message,
self.contact_info
self.contact_info,
self.send_file
])
def raise_signal(self, signal, arg):
@ -121,6 +122,39 @@ class SignalObject(DbusPrototype):
def VcardInfo(self, *vcard):
pass
def send_file(self, *args):
''' send_file(file_path, jid, account=None)
send file, located at 'file_path' to 'jid', using account
(optional) 'account' '''
file_path, jid, account = self._get_real_arguments(args, 3)
accounts = gajim.contacts.keys()
# if there is only one account in roster, take it as default
if not account and len(accounts) == 1:
account = accounts[0]
if account:
if gajim.connections[account].connected > 1: # account is online
connected_account = gajim.connections[account]
else:
for account in accounts:
if gajim.contacts[account].has_key(jid) and \
gajim.connections[account].connected > 1: # account is online
connected_account = gajim.connections[account]
break
if gajim.contacts.has_key(account) and \
gajim.contacts[account].has_key(jid):
contact = gajim.get_highest_prio_contact_from_contacts(
gajim.contacts[account][jid])
else:
contact = jid
if connected_account:
if os.path.isfile(file_path): # is it file?
self.plugin.windows['file_transfers'].send_file(account,
contact, file_path)
return True
return False
def send_message(self, *args):
''' send_message(jid, message, keyID=None, account=None)
send 'message' to 'jid', using account (optional) 'account'.
@ -394,6 +428,7 @@ class SignalObject(DbusPrototype):
open_chat = method(INTERFACE)(open_chat)
contact_info = method(INTERFACE)(contact_info)
send_message = method(INTERFACE)(send_message)
send_file = method(INTERFACE)(send_file)
VcardInfo = signal(INTERFACE)(VcardInfo)
class SessionBusNotPresent(Exception):