register xmpp:// gajim-remote handler in GNOME; various cleanup
This commit is contained in:
parent
3f71cbb6c5
commit
914749b740
|
@ -147,6 +147,7 @@ class Config:
|
||||||
'avatar_width': [opt_int, 52],
|
'avatar_width': [opt_int, 52],
|
||||||
'avatar_height': [opt_int, 52],
|
'avatar_height': [opt_int, 52],
|
||||||
'quit_on_roster_x_button': [opt_bool, False, _('If True, quits Gajim when X button of Window Manager is clicked. This option make sense only if trayicon is used.')],
|
'quit_on_roster_x_button': [opt_bool, False, _('If True, quits Gajim when X button of Window Manager is clicked. This option make sense only if trayicon is used.')],
|
||||||
|
'set_xmpp://_handler_everytime': [opt_bool, False, _('If True, Gajim registers for xmpp:// on each startup.')],
|
||||||
}
|
}
|
||||||
|
|
||||||
__options_per_key = {
|
__options_per_key = {
|
||||||
|
|
|
@ -112,7 +112,7 @@ have "sync with global status" option set'), False)
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
'open_chat': [
|
'open_chat': [
|
||||||
_('Show the chat dialog so that you can send message to a \
|
_('Show the chat dialog so that you can send messages to a \
|
||||||
contact'),
|
contact'),
|
||||||
[
|
[
|
||||||
('jid', _('JID of the contact that you want to chat \
|
('jid', _('JID of the contact that you want to chat \
|
||||||
|
@ -189,7 +189,7 @@ using this account'), False)
|
||||||
if self.command == 'send_message':
|
if self.command == 'send_message':
|
||||||
self.argv_len -= 2
|
self.argv_len -= 2
|
||||||
|
|
||||||
if res == False:
|
if res is False:
|
||||||
if self.argv_len < 4:
|
if self.argv_len < 4:
|
||||||
send_error(_('\'%s\' is not in your roster.\n\
|
send_error(_('\'%s\' is not in your roster.\n\
|
||||||
Please specify account for sending the message.') % sys.argv[2])
|
Please specify account for sending the message.') % sys.argv[2])
|
||||||
|
|
61
src/gajim.py
61
src/gajim.py
|
@ -59,7 +59,7 @@ from common import optparser
|
||||||
|
|
||||||
profile = ''
|
profile = ''
|
||||||
try:
|
try:
|
||||||
opts, args = getopt.getopt(sys.argv[2:], 'hvp:', ['help', 'verbose',
|
opts, args = getopt.getopt(sys.argv[1:], 'hvp:', ['help', 'verbose',
|
||||||
'profile=', 'sm-config-prefix=', 'sm-client-id='])
|
'profile=', 'sm-config-prefix=', 'sm-client-id='])
|
||||||
except getopt.error, msg:
|
except getopt.error, msg:
|
||||||
print msg
|
print msg
|
||||||
|
@ -1211,41 +1211,38 @@ if __name__ == '__main__':
|
||||||
cli = gnome.ui.master_client()
|
cli = gnome.ui.master_client()
|
||||||
cli.connect('die', die_cb)
|
cli.connect('die', die_cb)
|
||||||
|
|
||||||
if os.path.isdir('.svn'): # we are svn user
|
path_to_gajim_script = gtkgui_helpers.get_abspath_for_script('gajim')
|
||||||
cwd = os.getcwd()
|
|
||||||
svn_src = False
|
|
||||||
svn_trunk = False
|
|
||||||
|
|
||||||
script = '#!/bin/sh\n'
|
|
||||||
if cwd.endswith('trunk'): # we run with ./launch.sh
|
|
||||||
script += 'cd %s/src' % cwd
|
|
||||||
svn_trunk = True
|
|
||||||
elif cwd.endswith('src'): # we run with ./gajim.py in src/
|
|
||||||
script += 'cd %s' % cwd
|
|
||||||
svn_src = True
|
|
||||||
|
|
||||||
if svn_src or svn_trunk:
|
|
||||||
if svn_trunk:
|
|
||||||
path_to_gajim_script = cwd + '/scripts/gajim_sm_script'
|
|
||||||
elif svn_src:
|
|
||||||
path_to_gajim_script = cwd + '/../scripts/gajim_sm_script'
|
|
||||||
|
|
||||||
if os.path.exists(path_to_gajim_script):
|
|
||||||
os.remove(path_to_gajim_script)
|
|
||||||
f = open(path_to_gajim_script, 'w')
|
|
||||||
script += '\nexec python -OOt gajim.py $0 $@\n'
|
|
||||||
f.write(script)
|
|
||||||
f.close()
|
|
||||||
os.chmod(path_to_gajim_script, 0700)
|
|
||||||
|
|
||||||
else: # normal user (not svn user)
|
|
||||||
# always make it like '/usr/local/bin/gajim'
|
|
||||||
path_to_gajim_script = helpers.is_in_path('gajim', True)
|
|
||||||
|
|
||||||
|
|
||||||
if path_to_gajim_script:
|
if path_to_gajim_script:
|
||||||
argv = [path_to_gajim_script]
|
argv = [path_to_gajim_script]
|
||||||
cli.set_restart_command(len(argv), argv)
|
cli.set_restart_command(len(argv), argv)
|
||||||
|
|
||||||
|
try:
|
||||||
|
import gconf
|
||||||
|
# in try because daemon may not be there
|
||||||
|
client = gconf.client_get_default()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
we_set = False
|
||||||
|
print client.get_string('/desktop/gnome/url-handlers/xmpp/command')
|
||||||
|
if client.get_string('/desktop/gnome/url-handlers/xmpp/command') is None:
|
||||||
|
we_set = True
|
||||||
|
elif gajim.config.get('set_xmpp://_handler_everytime'):
|
||||||
|
we_set = True
|
||||||
|
|
||||||
|
print we_set
|
||||||
|
if we_set:
|
||||||
|
path_to_gajim_script, type = gtkgui_helpers.get_abspath_for_script(
|
||||||
|
'gajim-remote', True)
|
||||||
|
print path_to_gajim_script
|
||||||
|
if path_to_gajim_script:
|
||||||
|
if type == 'svn':
|
||||||
|
command = path_to_gajim_script + 'open_chat %s'
|
||||||
|
print command
|
||||||
|
else: # 'installed'
|
||||||
|
command = 'gajim-remote open_chat %s'
|
||||||
|
client.set_string('/desktop/gnome/url-handlers/xmpp/command', command)
|
||||||
|
|
||||||
Interface()
|
Interface()
|
||||||
gtk.main()
|
gtk.main()
|
||||||
|
|
|
@ -190,3 +190,37 @@ def set_unset_urgency_hint(window, unread_messages_no):
|
||||||
window.props.urgency_hint = True
|
window.props.urgency_hint = True
|
||||||
else:
|
else:
|
||||||
window.props.urgency_hint = False
|
window.props.urgency_hint = False
|
||||||
|
|
||||||
|
def get_abspath_for_script(scriptname, want_type = False):
|
||||||
|
'''checks if we are svn or normal user and returns abspath to asked script
|
||||||
|
if want_type is True we return 'svn' or 'install' '''
|
||||||
|
if os.path.isdir('.svn'): # we are svn user
|
||||||
|
type = 'svn'
|
||||||
|
cwd = os.getcwd() # it's always ending with src
|
||||||
|
|
||||||
|
if scriptname == 'gajim-remote':
|
||||||
|
path_to_script = cwd + '/gajim-remote.py'
|
||||||
|
|
||||||
|
elif scriptname == 'gajim':
|
||||||
|
script = '#!/bin/sh\n' # the script we may create
|
||||||
|
script += 'cd %s' % cwd
|
||||||
|
path_to_script = cwd + '/../scripts/gajim_sm_script'
|
||||||
|
|
||||||
|
if os.path.exists(path_to_script):
|
||||||
|
os.remove(path_to_script)
|
||||||
|
f = open(path_to_script, 'w')
|
||||||
|
script += '\nexec python -OOt gajim.py $0 $@\n'
|
||||||
|
f.write(script)
|
||||||
|
f.close()
|
||||||
|
os.chmod(path_to_script, 0700)
|
||||||
|
|
||||||
|
else: # normal user (not svn user)
|
||||||
|
type = 'install'
|
||||||
|
# always make it like '/usr/local/bin/gajim'
|
||||||
|
path_to_script = helpers.is_in_path(scriptname, True)
|
||||||
|
|
||||||
|
|
||||||
|
if want_type:
|
||||||
|
return path_to_script, type
|
||||||
|
else:
|
||||||
|
return path_to_script
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
## roster_window.py
|
## remote_control.py
|
||||||
##
|
##
|
||||||
## Gajim Team:
|
## Gajim Team:
|
||||||
## - Yann Le Boulanger <asterix@lagaule.org>
|
## - Yann Le Boulanger <asterix@lagaule.org>
|
||||||
## - Vincent Hanquez <tab@snarc.org>
|
## - Vincent Hanquez <tab@snarc.org>
|
||||||
## - Nikos Kouremenos <kourem@gmail.com>
|
## - Nikos Kouremenos <kourem@gmail.com>
|
||||||
|
## - Dimitur Kirov <dkirov@gmail.com>
|
||||||
##
|
##
|
||||||
## Copyright (C) 2003-2005 Gajim Team
|
## Copyright (C) 2003-2005 Gajim Team
|
||||||
##
|
##
|
||||||
|
@ -188,13 +189,17 @@ class SignalObject(DbusPrototype):
|
||||||
|
|
||||||
def open_chat(self, *args):
|
def open_chat(self, *args):
|
||||||
''' start_chat(jid, account=None) -> shows the tabbed window for new
|
''' start_chat(jid, account=None) -> shows the tabbed window for new
|
||||||
message to 'jid', using account(optional) 'account ' '''
|
message to 'jid', using account(optional) 'account' '''
|
||||||
if self.disabled:
|
if self.disabled:
|
||||||
return
|
return
|
||||||
jid, account = self._get_real_arguments(args, 2)
|
jid, account = self._get_real_arguments(args, 2)
|
||||||
if not jid:
|
if not jid:
|
||||||
# FIXME: raise exception for missing argument (dbus0.35+ - released last week)
|
# FIXME: raise exception for missing argument (dbus0.35+)
|
||||||
return None
|
return None
|
||||||
|
if jid.startswith('xmpp://'):
|
||||||
|
jid = jid[7:] # len('xmpp://') = 7
|
||||||
|
#FIXME: does not work :(((
|
||||||
|
|
||||||
if account:
|
if account:
|
||||||
accounts = [account]
|
accounts = [account]
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue