def cmd_reload(main_window, argv): """ /reload Reload the configuration. """ # FIXME config.setup() print_notification("Config reloaded.")
def cmd_python(main_window, argv): """ /python <code> """ print_notification("python: Executing...\n") try: exec(" ".join(argv[1:])) except BaseException, e: print_error("python: %s\n" % (e))
def cmd_add_server(main_window, argv): """ /add_server <name> <address> <port> <nick> <real> """ if no_connection(): return if len(argv) != 6: print_notification("Usage: /add_server <name> <address> "\ "<port> <nick> <real>") return cmd, server_name, address, port, nick, name = argv try: int(port) except ValueError: print_error("Invalid value for 'port' given.") return if server_name in connection.sushi.server_list("", ""): print_error("Server with name '%s' already existing." % (server_name)) return pairs = (("address", address), ("port", port), ("nick", nick), ("name", name)) for key, value in pairs: connection.sushi.server_set(server_name, "server", key, value) print_notification("Server '%s' successfully added." % (server_name))
def cmd_add_server(main_window, argv): """ /add_server <name> <address> <port> <nick> <real> """ if no_connection(): return if len(argv) != 6: print_notification("Usage: /add_server <name> <address> " "<port> <nick> <real>") return cmd, server_name, address, port, nick, name = argv try: int(port) except ValueError: print_error("Invalid value for 'port' given.") return if server_name in connection.sushi.server_list("", ""): print_error("Server with name '%s' already existing." % (server_name)) return pairs = (("address", address), ("port", port), ("nick", nick), ("name", name)) for key, value in pairs: connection.sushi.server_set(server_name, "server", key, value) print_notification("Server '%s' successfully added." % (server_name))
def cmd_unignore(main_window, argv): if len(argv) != 2: return print_notification("Usage: /unignore <pattern>") server = tabs.get_server(main_window.current_tab).name connection.sushi.unignore(server, argv[1]) print_notification("Unignored user %(user)s." % {"user": argv[1]})
def cmd_unload(main_window, argv): if len(argv) != 2: print_notification("Usage: /unload <filename>") return name = argv[1] if not plugin_control.is_loaded(name): print_error("Plugin '%s' is not loaded." % (name)) return if not plugin_control.unload(name): print_error("Failed to unload plugin '%s'." % (name)) else: print_notification("Plugin '%s' successfully unloaded." % (name))
def cmd_connect(main_window, argv): """ /connect <server> """ if no_connection(): return if len(argv) != 2: print_notification("Usage: /connect <server>") return if argv[1] not in connection.sushi.server_list("", ""): print_error("connect: The server '%(server)s' is not known." % {"server": argv[1]}) return connection.sushi.connect(argv[1])
def cmd_away(main_window, argv): """ /away <message> """ # TODO default away message if len(argv) < 2: return print_notification("/away <message>") server = tabs.get_server(main_window.current_tab) connection.sushi.away(server.name, " ".join(argv[1:]))
def cmd_remove_server(main_window, argv): """ /remove_server <name> """ if no_connection(): return if len(argv) != 2: print_notification("Usage: /remove_server <name>") return name = argv[1] if not name in connection.sushi.server_list("", ""): print_error("Server '%s' not known to maki." % (name)) return connection.sushi.server_remove(name, "", "") print_notification("Server '%s' successfully removed." % (name))
def cmd_notice(main_window, argv): """ /notice <user> <message> Send a notice to a user. """ if len(argv) < 3: return print_notification("Usage: /notice <user> <message>") server = tabs.get_server(main_window.current_tab) connection.sushi.notice(server.name, argv[1], " ".join(argv[2]))
def cmd_me(main_window, argv): """ /me <text> Action in third person. """ ct = main_window.current_tab if not type(ct) in (tabs.Channel, tabs.Query): return print_notification("You have to be on a channel or query.") connection.sushi.action(ct.parent.name, ct.name, " ".join(argv[1:]))
def cmd_join(main_window, argv): """ /join <channel> [<key>] """ key = "" if len(argv) == 3: cmd, channel, key = argv elif len(argv) == 2: cmd, channel = argv elif len(argv) == 1 and type(main_window.current_tab) == tabs.Channel: channel = main_window.current_tab.name else: print_notification("Usage: /join [<channel> [<key>]]") return server_tab = tabs.get_server(main_window.current_tab) connection.sushi.join(server_tab.name, channel, key) print_notification("Joining channel '%s'." % (channel))
def cmd_nick(main_window, argv): """ /nick <new nick> Changes the current nick to a new one. """ if len(argv) != 2: return print_notification("Usage: /nick <new nick>") server = tabs.get_server(main_window.current_tab) connection.sushi.nick(server.name, argv[1])
def cmd_kick(main_window, argv): """ /kick <user> [<reason>] Kick a user from the current channel with an optional reason. """ if len(argv) < 2: return print_notification("Usage: /kick <user> [<reason>]") ct = main_window.current_tab if type(ct) != tabs.Channel: return print_error("You have to be on a channel to do so.") connection.sushi.kick(ct.parent.name, ct.name, argv[1], " ".join(argv[2:]))
def cmd_mode(main_window, argv): """ /mode <target> [[+|-]<mode> [<param>]] Set (+|-) or query a mode on a target with an optional parameter. If wether mode nor param are given, this command queries the current modes set. """ if len(argv) < 2: return print_notification("Usage: /mode <target> [[+|-]<mode> [<param>]]") server = tabs.get_server(main_window.current_tab).name connection.sushi.mode(server, argv[1], " ".join(argv[2:]))
def cmd_mode(main_window, argv): """ /mode <target> [[+|-]<mode> [<param>]] Set (+|-) or query a mode on a target with an optional parameter. If wether mode nor param are given, this command queries the current modes set. """ if len(argv) < 2: return print_notification( "Usage: /mode <target> [[+|-]<mode> [<param>]]") server = tabs.get_server(main_window.current_tab).name connection.sushi.mode(server, argv[1], " ".join(argv[2:]))
def cmd_load(main_window, argv): if len(argv) != 2: print_notification("Usage: /load <filename>") return name = argv[1] if plugin_control.is_loaded(name): print_notification("Plugin '%s' already loaded." % (name)) return if plugin_control.load(name): print_notification("Plugin '%s' successfully loaded." % (name)) else: print_notification("Error while loading plugin '%s'." % (name))
def cmd_maki(main_window, argv): """ /maki [connect|shutdown] """ def usage(): print_notification("Usage: /maki [connect|disconnect|shutdown]") if len(argv) != 2: usage() return cmd = argv[1] if cmd == "connect": print_notification("Connection to maki...") if connection.connect(): print_notification("Connection to maki etablished.") else: print_notification("Connection to maki failed.") main_window.update_divider() elif cmd == "disconnect": if no_connection(): return connection.disconnect() print_notification("Disconnected from maki.") main_window.update_divider() elif cmd == "shutdown": if no_connection(): return connection.sushi.shutdown(config.get("chatting", "quit_message")) main_window.update_divider() else: usage() return
def usage(): print_notification("Usage: /maki [connect|disconnect|shutdown]")
def cmd_dcc(main_window, argv): """ /dcc chat <target> /dcc send <target> <path> /dcc list <type> /dcc remove <type> <id> """ if no_connection(): return if len(argv) < 2: print_notification("Usage: /dcc accept|chat|send|list|remove") return server_tab = tabs.get_server(main_window.current_tab) if argv[1] == "send": if len(argv) < 4: print_notification("Usage: /dcc send <target> <path>") return connection.sushi.dcc_send(server_tab.name, argv[2], argv[3]) elif argv[1] == "accept": def accepted_cb(time, id, *x): if id == int(argv[2]): print_notification( _("DCC action with id %(id)d accepted.") % {"id": id}) signals.disconnect_signal("dcc_send", accepted_cb) if len(argv) < 3: print_notification("Usage: /dcc accept <id>") return signals.connect_signal("dcc_send", accepted_cb) connection.sushi.dcc_send_accept(int(argv[2])) elif argv[1] == "chat": pass elif argv[1] == "list": if len(argv) < 3: print_notification("Usage: /dcc list chat|send") return if argv[2] == "send": ids, servers, froms, filenames, sizes, progresses, speeds, statuses = connection.sushi.dcc_sends( ) for i in range(len(ids)): print_normal( "#%(id)d: %(filename)s from/to %(from)s [%(server)s]: %(progress)d/%(size)d @ %(speed)d" % { "id": ids[i], "filename": filenames[i], "from": froms[i], "server": servers[i], "progress": progresses[i], "size": sizes[i], "speed": speeds[i] }) elif argv[2] == "chat": pass elif argv[1] == "remove": if len(argv) < 4: print_notification("Usage: /dcc remove <type> <id>") return if argv[2] == "send": connection.sushi.dcc_send_remove(int(argv[3])) elif argv[2] == "chat": pass
def accepted_cb(time, id, *x): if id == int(argv[2]): print_notification( _("DCC action with id %(id)d accepted.") % {"id": id}) signals.disconnect_signal("dcc_send", accepted_cb)
def cmd_dcc(main_window, argv): """ /dcc chat <target> /dcc send <target> <path> /dcc list <type> /dcc remove <type> <id> """ if no_connection(): return if len(argv) < 2: print_notification("Usage: /dcc accept|chat|send|list|remove") return server_tab = tabs.get_server(main_window.current_tab) if argv[1] == "send": if len(argv) < 4: print_notification("Usage: /dcc send <target> <path>") return connection.sushi.dcc_send(server_tab.name, argv[2], argv[3]) elif argv[1] == "accept": def accepted_cb(time, id, *x): if id == int(argv[2]): print_notification(_("DCC action with id %(id)d accepted.") % {"id": id}) signals.disconnect_signal("dcc_send", accepted_cb) if len(argv) < 3: print_notification("Usage: /dcc accept <id>") return signals.connect_signal("dcc_send", accepted_cb) connection.sushi.dcc_send_accept(int(argv[2])) elif argv[1] == "chat": pass elif argv[1] == "list": if len(argv) < 3: print_notification("Usage: /dcc list chat|send") return if argv[2] == "send": ids, servers, froms, filenames, sizes, progresses, speeds, statuses = connection.sushi.dcc_sends() for i in range(len(ids)): print_normal( "#%(id)d: %(filename)s from/to %(from)s [%(server)s]: %(progress)d/%(size)d @ %(speed)d" % { "id": ids[i], "filename": filenames[i], "from": froms[i], "server": servers[i], "progress": progresses[i], "size": sizes[i], "speed": speeds[i], } ) elif argv[2] == "chat": pass elif argv[1] == "remove": if len(argv) < 4: print_notification("Usage: /dcc remove <type> <id>") return if argv[2] == "send": connection.sushi.dcc_send_remove(int(argv[3])) elif argv[2] == "chat": pass
def accepted_cb(time, id, *x): if id == int(argv[2]): print_notification(_("DCC action with id %(id)d accepted.") % {"id": id}) signals.disconnect_signal("dcc_send", accepted_cb)