changeset 931969111a91 in /home/hg/repos/gajim details:http://hg.gajim.org/gajim?cmd=changeset;node=931969111a91 description: merge with default
diffstat: src/command_system/__init__.py | 2 +- src/command_system/dispatching.py | 2 +- src/command_system/errors.py | 8 +- src/command_system/framework.py | 8 +- src/command_system/implementation/__init__.py | 2 +- src/command_system/implementation/custom.py | 6 +- src/command_system/implementation/hosts.py | 2 +- src/command_system/implementation/middleware.py | 31 +++++--- src/command_system/implementation/standard.py | 88 ++++++++++++++---------- src/command_system/mapping.py | 2 +- src/common/multimedia_helpers.py | 4 +- src/common/xmpp/auth_nb.py | 27 +++--- src/dataforms_widget.py | 2 +- src/gajim-remote.py | 2 + 14 files changed, 107 insertions(+), 79 deletions(-) diffs (truncated from 566 to 300 lines): diff -r 18254a32fdd7 -r 931969111a91 src/command_system/__init__.py --- a/src/command_system/__init__.py Fri Mar 19 08:21:57 2010 +0100 +++ b/src/command_system/__init__.py Fri Mar 19 08:23:24 2010 +0100 @@ -1,4 +1,4 @@ -# Copyright (C) 2009 Alexander Cherniuk <[email protected]> +# Copyright (C) 2009-2010 Alexander Cherniuk <[email protected]> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -r 18254a32fdd7 -r 931969111a91 src/command_system/dispatching.py --- a/src/command_system/dispatching.py Fri Mar 19 08:21:57 2010 +0100 +++ b/src/command_system/dispatching.py Fri Mar 19 08:23:24 2010 +0100 @@ -1,4 +1,4 @@ -# Copyright (C) 2009 Alexander Cherniuk <[email protected]> +# Copyright (C) 2009-2010 Alexander Cherniuk <[email protected]> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -r 18254a32fdd7 -r 931969111a91 src/command_system/errors.py --- a/src/command_system/errors.py Fri Mar 19 08:21:57 2010 +0100 +++ b/src/command_system/errors.py Fri Mar 19 08:23:24 2010 +0100 @@ -1,4 +1,4 @@ -# Copyright (C) 2009 Alexander Cherniuk <[email protected]> +# Copyright (C) 2009-2010 Alexander Cherniuk <[email protected]> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -45,3 +45,9 @@ Used to indicate errors occured during command execution. """ pass + +class NoCommandError(BaseError): + """ + Used to indicate an inability to find the specified command. + """ + pass diff -r 18254a32fdd7 -r 931969111a91 src/command_system/framework.py --- a/src/command_system/framework.py Fri Mar 19 08:21:57 2010 +0100 +++ b/src/command_system/framework.py Fri Mar 19 08:23:24 2010 +0100 @@ -1,4 +1,4 @@ -# Copyright (C) 2009 Alexander Cherniuk <[email protected]> +# Copyright (C) 2009-2010 Alexander Cherniuk <[email protected]> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,7 +25,7 @@ from dispatching import Dispatcher, HostDispatcher, ContainerDispatcher from mapping import parse_arguments, adapt_arguments -from errors import DefinitionError, CommandError +from errors import DefinitionError, CommandError, NoCommandError class CommandHost(object): """ @@ -128,7 +128,7 @@ def get_command(self, name): command = Dispatcher.get_command(self.COMMAND_HOST, name) if not command: - raise CommandError("Command does not exist", name=name) + raise NoCommandError("Command does not exist", name=name) return command def list_commands(self): @@ -330,7 +330,7 @@ return decorator -def documentation(text): +def doc(text): """ This decorator is used to bind a documentation (a help) to a command. diff -r 18254a32fdd7 -r 931969111a91 src/command_system/implementation/__init__.py --- a/src/command_system/implementation/__init__.py Fri Mar 19 08:21:57 2010 +0100 +++ b/src/command_system/implementation/__init__.py Fri Mar 19 08:23:24 2010 +0100 @@ -1,4 +1,4 @@ -# Copyright (C) 2009 Alexander Cherniuk <[email protected]> +# Copyright (C) 2009-2010 Alexander Cherniuk <[email protected]> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -r 18254a32fdd7 -r 931969111a91 src/command_system/implementation/custom.py --- a/src/command_system/implementation/custom.py Fri Mar 19 08:21:57 2010 +0100 +++ b/src/command_system/implementation/custom.py Fri Mar 19 08:23:24 2010 +0100 @@ -1,4 +1,4 @@ -# Copyright (C) 2009 Alexander Cherniuk <[email protected]> +# Copyright (C) 2009-2010 Alexander Cherniuk <[email protected]> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -21,7 +21,7 @@ be executed and commands defined here will not be detected. """ -from ..framework import CommandContainer, command, documentation +from ..framework import CommandContainer, command, doc from hosts import ChatCommands, PrivateChatCommands, GroupChatCommands class CustomCommonCommands(CommandContainer): @@ -58,7 +58,7 @@ HOSTS = (ChatCommands,) - @documentation(_("The same as using a doc-string, except it supports translation")) + @doc(_("The same as using a doc-string, except it supports translation")) @command def sing(self): return "Are you phreaking kidding me? Buy yourself a damn stereo..." diff -r 18254a32fdd7 -r 931969111a91 src/command_system/implementation/hosts.py --- a/src/command_system/implementation/hosts.py Fri Mar 19 08:21:57 2010 +0100 +++ b/src/command_system/implementation/hosts.py Fri Mar 19 08:23:24 2010 +0100 @@ -1,4 +1,4 @@ -# Copyright (C) 2009 Alexander Cherniuk <[email protected]> +# Copyright (C) 2009-2010 Alexander Cherniuk <[email protected]> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -r 18254a32fdd7 -r 931969111a91 src/command_system/implementation/middleware.py --- a/src/command_system/implementation/middleware.py Fri Mar 19 08:21:57 2010 +0100 +++ b/src/command_system/implementation/middleware.py Fri Mar 19 08:23:24 2010 +0100 @@ -1,4 +1,4 @@ -# Copyright (C) 2009 Alexander Cherniuk <[email protected]> +# Copyright (C) 2009-2010 Alexander Cherniuk <[email protected]> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ from common import gajim from ..framework import CommandProcessor -from ..errors import CommandError +from ..errors import CommandError, NoCommandError class ChatCommandProcessor(CommandProcessor): """ @@ -44,33 +44,40 @@ def execute_command(self, name, arguments): try: super(ChatCommandProcessor, self).execute_command(name, arguments) + except NoCommandError, error: + details = dict(name=error.name, message=error.message) + message = "%(name)s: %(message)s\n" % details + message += "Try using the //%(name)s or /say /%(name)s " % details + message += "construct if you intended to send it as a text." + self.echo(message, 'error') except CommandError, error: - self.echo("%s: %s" %(error.name, error.message), 'error') + self.echo("%s: %s" % (error.name, error.message), 'error') except Exception: self.echo("An error occured while trying to execute the command", 'error') print_exc() def looks_like_command(self, text, body, name, arguments): - # Command escape stuff ggoes here. If text was prepended by the command - # prefix twice, like //not_a_command (if prefix is set to /) then it - # will be escaped, that is sent just as a regular message with one (only - # one) prefix removed, so message will be /not_a_command. + # Command escape stuff ggoes here. If text was prepended by the + # command prefix twice, like //not_a_command (if prefix is set + # to /) then it will be escaped, that is sent just as a regular + # message with one (only one) prefix removed, so message will be + # /not_a_command. if body.startswith(self.COMMAND_PREFIX): self.send(body) return True def command_preprocessor(self, command, name, arguments, args, kwargs): - # If command argument contain h or help option - forward it to the /help - # command. Dont forget to pass self, as all commands are unbound. And - # also don't forget to print output. + # If command argument contain h or help option - forward it to + # the /help command. Dont forget to pass self, as all commands + # are unbound. And also don't forget to print output. if 'h' in kwargs or 'help' in kwargs: help = self.get_command('help') self.echo(help(self, name)) return True def command_postprocessor(self, command, name, arguments, args, kwargs, value): - # If command returns a string - print it to a user. A convenient and - # sufficient in most simple cases shortcut to a using echo. + # If command returns a string - print it to a user. A convenient + # and sufficient in most simple cases shortcut to a using echo. if value and isinstance(value, StringTypes): self.echo(value) diff -r 18254a32fdd7 -r 931969111a91 src/command_system/implementation/standard.py --- a/src/command_system/implementation/standard.py Fri Mar 19 08:21:57 2010 +0100 +++ b/src/command_system/implementation/standard.py Fri Mar 19 08:23:24 2010 +0100 @@ -1,4 +1,4 @@ -# Copyright (C) 2009 Alexander Cherniuk <[email protected]> +# Copyright (C) 2009-2010 Alexander Cherniuk <[email protected]> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ from common.logger import Constants from ..errors import CommandError -from ..framework import CommandContainer, command, documentation +from ..framework import CommandContainer, command, doc from ..mapping import generate_usage from hosts import ChatCommands, PrivateChatCommands, GroupChatCommands @@ -45,18 +45,18 @@ HOSTS = (ChatCommands, PrivateChatCommands, GroupChatCommands) @command - @documentation(_("Clear the text window")) + @doc(_("Clear the text window")) def clear(self): self.conv_textview.clear() @command - @documentation(_("Hide the chat buttons")) + @doc(_("Hide the chat buttons")) def compact(self): new_status = not self.hide_chat_buttons self.chat_buttons_set_visible(new_status) @command(overlap=True) - @documentation(_("Show help on a given command or a list of available commands if -(-a)ll is given")) + @doc(_("Show help on a given command or a list of available commands if -(-a)ll is given")) def help(self, command=None, all=False): if command: command = self.get_command(command) @@ -83,17 +83,17 @@ self.echo(help(self, 'help')) @command(raw=True) - @documentation(_("Send a message to the contact")) + @doc(_("Send a message to the contact")) def say(self, message): self.send(message) @command(raw=True) - @documentation(_("Send action (in the third person) to the current chat")) + @doc(_("Send action (in the third person) to the current chat")) def me(self, action): self.send("/me %s" % action) @command('lastlog', overlap=True) - @documentation(_("Show logged messages which mention given text")) + @doc(_("Show logged messages which mention given text")) def grep(self, text, limit=None): results = gajim.logger.get_search_results_for_query(self.contact.jid, text, self.account) @@ -129,7 +129,7 @@ self.echo(formatted) @command(raw=True, empty=True) - @documentation(_(""" + @doc(_(""" Set current the status Status can be given as one of the following values: online, away, @@ -142,7 +142,7 @@ connection.change_status(status, message) @command(raw=True, empty=True) - @documentation(_("Set the current status to away")) + @doc(_("Set the current status to away")) def away(self, message): if not message: message = _("Away") @@ -150,36 +150,40 @@ connection.change_status('away', message) @command('back', raw=True, empty=True) - @documentation(_("Set the current status to online")) + @doc(_("Set the current status to online")) def online(self, message): if not message: message = _("Available") for connection in gajim.connections.itervalues(): connection.change_status('online', message) -class StandardChatCommands(CommandContainer): +class StandardCommonChatCommands(CommandContainer): """ - This command container contains standard command which are unique to - a chat. + This command container contans standard commands, which are common + to a chat and a private chat only. """ - HOSTS = (ChatCommands,) + HOSTS = (ChatCommands, PrivateChatCommands) @command - @documentation(_("Send a ping to the contact")) + @doc(_("Toggle the GPG encryption")) + def gpg(self): + self._toggle_gpg() + + @command + @doc(_("Send a ping to the contact")) def ping(self): if self.account == gajim.ZEROCONF_ACC_NAME: _______________________________________________ Commits mailing list [email protected] http://lists.gajim.org/cgi-bin/listinfo/commits
