diff options
-rw-r--r-- | src/core/commands.py | 167 |
1 files changed, 118 insertions, 49 deletions
diff --git a/src/core/commands.py b/src/core/commands.py index dcbd762f..8b753b18 100644 --- a/src/core/commands.py +++ b/src/core/commands.py @@ -6,7 +6,6 @@ import logging log = logging.getLogger(__name__) -import os import sys from datetime import datetime from gettext import gettext as _ @@ -21,7 +20,6 @@ import common import fixes import pep import tabs -import theming from common import safeJID from config import config, options as config_opts import multiuserchat as muc @@ -42,7 +40,10 @@ def command_help(self, arg): buff = ['Global commands:'] for command in self.commands: if isinstance(self.commands[command], Command): - acc.append(' \x19%s}%s\x19o - %s' % (color, command, self.commands[command].short)) + acc.append(' \x19%s}%s\x19o - %s' % ( + color, + command, + self.commands[command].short)) else: acc.append(' \x19%s}%s\x19o' % (color, command)) acc = sorted(acc) @@ -52,7 +53,10 @@ def command_help(self, arg): commands = self.current_tab().commands for command in commands: if isinstance(commands[command], Command): - acc.append(' \x19%s}%s\x19o - %s' % (color, command, commands[command].short)) + acc.append(' \x19%s}%s\x19o - %s' % ( + color, + command, + commands[command].short)) else: acc.append(' \x19%s}%s\x19o' % (color, command)) acc = sorted(acc) @@ -82,6 +86,7 @@ def command_runkey(self, arg): /runkey <key> """ def replace_line_breaks(key): + "replace ^J with \n" if key == '^J': return '\n' return key @@ -116,7 +121,8 @@ def command_status(self, arg): self.events.trigger('send_normal_presence', pres) pres.send() current = self.current_tab() - if isinstance(current, tabs.MucTab) and current.joined and show in ('away', 'xa'): + is_muctab = isinstance(current, tabs.MucTab) + if is_muctab and current.joined and show in ('away', 'xa'): current.send_chat_state('inactive') for tab in self.tabs: if isinstance(tab, tabs.MucTab) and tab.joined: @@ -124,7 +130,7 @@ def command_status(self, arg): if hasattr(tab, 'directed_presence'): del tab.directed_presence self.set_status(show, msg) - if isinstance(current, tabs.MucTab) and current.joined and show not in ('away', 'xa'): + if is_muctab and current.joined and show not in ('away', 'xa'): current.send_chat_state('active') def command_presence(self, arg): @@ -225,6 +231,7 @@ def command_move_tab(self, arg): args[1] = current_tab.nb def get_nb_from_value(value): + "parse the cmdline to guess the tab the users wants" ref = None try: ref = int(value) @@ -265,19 +272,26 @@ def command_list(self, arg): server = safeJID(self.current_tab().get_name()).server list_tab = tabs.MucListTab(server) self.add_tab(list_tab, True) - self.xmpp.plugin['xep_0030'].get_items(jid=server, block=False, callback=list_tab.on_muc_list_item_received) + cb = list_tab.on_muc_list_item_received + self.xmpp.plugin['xep_0030'].get_items(jid=server, + block=False, + callback=cb) def command_version(self, arg): """ /version <jid> """ def callback(res): + "Callback for /version" if not res: - return self.information('Could not get the software version from %s' % (jid,), 'Warning') - version = '%s is running %s version %s on %s' % (jid, - res.get('name') or _('an unknown software'), - res.get('version') or _('unknown'), - res.get('os') or _('an unknown platform')) + return self.information(_('Could not get the software' + ' version from %s') % jid, + _('Warning')) + version = _('%s is running %s version %s on %s') % ( + jid, + res.get('name') or _('an unknown software'), + res.get('version') or _('unknown'), + res.get('os') or _('an unknown platform')) self.information(version, 'Info') args = common.shell_split(arg) @@ -300,7 +314,7 @@ def command_join(self, arg, histo_length=None): password = None if len(args) == 0: tab = self.current_tab() - if not isinstance(tab, tabs.MucTab) and not isinstance(tab, tabs.PrivateTab): + if not isinstance(tab, (tabs.MucTab, tabs.PrivateTab)): return room = safeJID(tab.get_name()).bare nick = tab.own_nick @@ -314,10 +328,7 @@ def command_join(self, arg, histo_length=None): if info == '' and len(args[0]) > 1 and args[0][0] == '/': nick = args[0][1:] elif info.resource == '': - default = os.environ.get('USER') if os.environ.get('USER') else 'poezio' - nick = config.get('default_nick', '') - if nick == '': - nick = default + nick = self.own_nick else: nick = info.resource if info.bare == '': # happens with /join /nickname, which is OK @@ -329,12 +340,14 @@ def command_join(self, arg, histo_length=None): nick = tab.own_nick else: room = info.bare - if room.find('@') == -1 and not server_root: # no server is provided, like "/join hello" - # use the server of the current room if available - # check if the current room's name has a server + # no server is provided, like "/join hello": + # use the server of the current room if available + # check if the current room's name has a server + if room.find('@') == -1 and not server_root: if isinstance(self.current_tab(), tabs.MucTab) and\ self.current_tab().get_name().find('@') != -1: - room += '@%s' % safeJID(self.current_tab().get_name()).domain + domain = safeJID(self.current_tab().get_name()).domain + room += '@%s' % domain else: room = args[0] room = room.lower() @@ -362,20 +375,31 @@ def command_join(self, arg, histo_length=None): if histo_length is not None: histo_length = str(histo_length) if password is None: # try to use a saved password - password = config.get_by_tabname('password', None, room, fallback=False) + password = config.get_by_tabname('password', + None, + room, + fallback=False) if tab and not tab.joined: if tab.last_connection: - delta = datetime.now() - tab.last_connection - seconds = delta.seconds + delta.days * 24 * 3600 if tab.last_connection is not None else 0 + if tab.last_connection is not None: + delta = datetime.now() - tab.last_connection + seconds = delta.seconds + delta.days * 24 * 3600 + else: + seconds = 0 seconds = int(seconds) else: seconds = 0 muc.join_groupchat(self, room, nick, password, - histo_length, current_status.message, current_status.show, seconds=seconds) + histo_length, + current_status.message, + current_status.show, + seconds=seconds) if not tab: self.open_new_room(room, nick) muc.join_groupchat(self, room, nick, password, - histo_length, current_status.message, current_status.show) + histo_length, + current_status.message, + current_status.show) else: tab.own_nick = nick tab.users = [] @@ -405,7 +429,9 @@ def command_bookmark_local(self, arg=''): for tab in self.get_tabs(tabs.MucTab): b = bookmark.get_by_jid(tab.get_name()) if not b: - b = bookmark.Bookmark(tab.get_name(), autojoin=True, method="local") + b = bookmark.Bookmark(tab.get_name(), + autojoin=True, + method="local") new_bookmarks.append(b) else: b.method = "local" @@ -518,15 +544,27 @@ def command_bookmark(self, arg=''): bm.autojoin = autojoin if bookmark.save_remote(self.xmpp): self.information('Bookmark added.', 'Info') - self.information(_('Your remote bookmarks are now: %s') % - [b for b in bookmark.bookmarks if b.method in ('pep', 'privatexml')], 'Info') + remote = [] + for each in bookmark.bookmarks: + if each.method in ('pep', 'privatexml'): + remote.append(each) + self.information(_('Your remote bookmarks are now: %s') % remote, + _('Info')) def command_bookmarks(self, arg=''): """/bookmarks""" - self.information(_('Your remote bookmarks are: %s') % - [b for b in bookmark.bookmarks if b.method in ('pep', 'privatexml')], 'Info') - self.information(_('Your local bookmarks are: %s') % - [b for b in bookmark.bookmarks if b.method is 'local'], 'Info') + local = [] + remote = [] + for each in bookmark.bookmarks: + if each.method in ('pep', 'privatexml'): + remote.append(each) + elif each.method == 'local': + local.append(each) + + self.information(_('Your remote bookmarks are: %s') % remote, + _('Info')) + self.information(_('Your local bookmarks are: %s') % local, + _('Info')) def command_remove_bookmark(self, arg=''): """/remove_bookmark [jid]""" @@ -584,7 +622,8 @@ def command_set(self, arg): def command_server_cycle(self, arg=''): """ - Do a /cycle on each room of the given server. If none, do it on the current tab + Do a /cycle on each room of the given server. + If none, do it on the current tab """ args = common.shell_split(arg) tab = self.current_tab() @@ -602,7 +641,10 @@ def command_server_cycle(self, arg=''): for tab in self.get_tabs(tabs.MucTab): if tab.get_name().endswith(domain): if tab.joined: - muc.leave_groupchat(tab.core.xmpp, tab.get_name(), tab.own_nick, message) + muc.leave_groupchat(tab.core.xmpp, + tab.get_name(), + tab.own_nick, + message) tab.joined = False if tab.get_name() == domain: self.command_join('"@%s/%s"' %(tab.get_name(), tab.own_nick)) @@ -614,11 +656,14 @@ def command_last_activity(self, arg): /last_activity <jid> """ def callback(iq): + "Callback for the last activity" if iq['type'] != 'result': if iq['error']['type'] == 'auth': - self.information('You are not allowed to see the activity of this contact.', 'Error') + self.information(_('You are not allowed to see the ' + 'activity of this contact.'), + _('Error')) else: - self.information('Error retrieving the activity', 'Error') + self.information(_('Error retrieving the activity'), 'Error') return seconds = iq['last_activity']['seconds'] status = iq['last_activity']['status'] @@ -631,12 +676,14 @@ def command_last_activity(self, arg): msg = 'The last activity of %s was %s ago%s' % ( from_, common.parse_secs_to_str(seconds), - (' and his/her last status was %s' % status) if status else '',) + (' and his/her last status was %s' % status) if status else '') self.information(msg, 'Info') jid = safeJID(arg) if jid == '': return self.command_help('last_activity') - self.xmpp.plugin['xep_0012'].get_last_activity(jid, block=False, callback=callback) + self.xmpp.plugin['xep_0012'].get_last_activity(jid, + block=False, + callback=callback) def command_mood(self, arg): """ @@ -647,12 +694,17 @@ def command_mood(self, arg): return self.xmpp.plugin['xep_0107'].stop(block=False) mood = args[0] if mood not in pep.MOODS: - return self.information('%s is not a correct value for a mood.' % mood, 'Error') + return self.information(_('%s is not a correct value for a mood.') + % mood, + _('Error')) if len(args) > 1: text = args[1] else: text = None - self.xmpp.plugin['xep_0107'].publish_mood(mood, text, callback=dumb_callback, block=False) + self.xmpp.plugin['xep_0107'].publish_mood(mood, + text, + callback=dumb_callback, + block=False) def command_activity(self, arg): """ @@ -664,7 +716,9 @@ def command_activity(self, arg): return self.xmpp.plugin['xep_0108'].stop(block=False) general = args[0] if general not in pep.ACTIVITIES: - return self.information('%s is not a correct value for an activity' % general, 'Error') + return self.information(_('%s is not a correct value for an activity') + % general, + _('Error')) specific = None text = None if length == 2: @@ -676,8 +730,14 @@ def command_activity(self, arg): specific = args[1] text = args[2] if specific and specific not in pep.ACTIVITIES[general]: - return self.information('%s is not a correct value for an activity' % specific, 'Error') - self.xmpp.plugin['xep_0108'].publish_activity(general, specific, text, callback=dumb_callback, block=False) + return self.information(_('%s is not a correct value ' + 'for an activity') % specific, + _('Error')) + self.xmpp.plugin['xep_0108'].publish_activity(general, + specific, + text, + callback=dumb_callback, + block=False) def command_gaming(self, arg): """ @@ -691,7 +751,10 @@ def command_gaming(self, arg): address = args[1] else: address = None - return self.xmpp.plugin['xep_0196'].publish_gaming(name=name, server_address=address, callback=dumb_callback, block=False) + return self.xmpp.plugin['xep_0196'].publish_gaming(name=name, + server_address=address, + callback=dumb_callback, + block=False) def command_invite(self, arg): """/invite <to> <room> [reason]""" @@ -713,7 +776,9 @@ def command_decline(self, arg): return reason = args[1] if len(args) > 1 else '' del self.pending_invites[jid.bare] - self.xmpp.plugin['xep_0045'].decline_invite(jid.bare, self.pending_invites[jid.bare], reason) + self.xmpp.plugin['xep_0045'].decline_invite(jid.bare, + self.pending_invites[jid.bare], + reason) ### Commands without a completion in this class ### @@ -721,7 +786,8 @@ def command_invitations(self, arg=''): """/invitations""" build = "" for invite in self.pending_invites: - build += "%s by %s" % (invite, safeJID(self.pending_invites[invite]).bare) + build += "%s by %s" % (invite, + safeJID(self.pending_invites[invite]).bare) if self.pending_invites: build = "You are invited to the following rooms:\n" + build else: @@ -781,6 +847,7 @@ def command_rawxml(self, arg): iq_id = stanza.xml.attrib.get('id') def iqfunc(iq): + "handler for an iq reply" self.information('%s' % iq, 'Iq') self.xmpp.remove_handler('Iq %s' % iq_id) @@ -821,7 +888,9 @@ def command_plugins(self, arg=''): """ /plugins """ - self.information("Plugins currently in use: %s" % repr(list(self.plugin_manager.plugins.keys())), 'Info') + self.information(_("Plugins currently in use: %s") % + repr(list(self.plugin_manager.plugins.keys())), + _('Info')) def command_message(self, arg): """ @@ -868,4 +937,4 @@ def command_self(self, arg=None): self.information(info, 'Info') def dumb_callback(*args, **kwargs): - pass + "mock callback" |