示例#1
0
def cmd_reload(main_window, argv):
    """ /reload
		Reload the configuration.
	"""
    # FIXME
    config.setup()
    print_notification("Config reloaded.")
示例#2
0
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))
示例#3
0
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))
示例#4
0
def cmd_reload(main_window, argv):
    """ /reload
		Reload the configuration.
	"""
    # FIXME
    config.setup()
    print_notification("Config reloaded.")
示例#5
0
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))
示例#6
0
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))
示例#7
0
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]})
示例#8
0
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]})
示例#9
0
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))
示例#10
0
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])
示例#11
0
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))
示例#12
0
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])
示例#13
0
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:]))
示例#14
0
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:]))
示例#15
0
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))
示例#16
0
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]))
示例#17
0
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:]))
示例#18
0
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:]))
示例#19
0
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))
示例#20
0
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]))
示例#21
0
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))
示例#22
0
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))
示例#23
0
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])
示例#24
0
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])
示例#25
0
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:]))
示例#26
0
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:]))
示例#27
0
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:]))
示例#28
0
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:]))
示例#29
0
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))
示例#30
0
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))
示例#31
0
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
示例#32
0
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
示例#33
0
 def usage():
     print_notification("Usage: /maki [connect|disconnect|shutdown]")
示例#34
0
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
示例#35
0
 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)
示例#36
0
 def usage():
     print_notification("Usage: /maki [connect|disconnect|shutdown]")
示例#37
0
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
示例#38
0
 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)