def sushi_part(time, server, sender, channel, message): """ message can be empty """ tab = main_window.find_tab (server, channel) nick = parse_from(sender)[0] if not tab: # ignore this cause it could be this tab was # closed recently return if tab.parent.get_nick() == nick: # we parted tab.set_joined(False) main_window.update_divider() else: tab.nicklist.remove_nick(nick) msg = format_message("actions", "part", {"nick": nick, "channel": channel, "reason": message}, own = (tab.parent.get_nick() == nick), highlight = False) msg.markup_cb = color_nick_markup_cb print_tab(tab, msg)
def sushi_topic(time, server, sender, channel, topic): """ sender can be empty """ tab = main_window.find_tab(server, channel) if not tab: print_error("No tab '%s' on '%s' for topic setting." % (channel, server)) return tab.set_topic(topic) nick = parse_from(sender)[0] if sender == "": template = "topic_anonymous" else: template = "topic" msg = format_message("actions", template, { "nick": nick, "channel": channel, "topic": topic }, own=(tab.parent.get_nick() == nick), highlight=False) if nick: msg.markup_cb = color_nick_markup_cb print_tab(tab, msg) if tab == main_window.current_tab: # update topic bar main_window.header.set_text(tab.get_topic())
def sushi_part(time, server, sender, channel, message): """ message can be empty """ tab = main_window.find_tab(server, channel) nick = parse_from(sender)[0] if not tab: # ignore this cause it could be this tab was # closed recently return if tab.parent.get_nick() == nick: # we parted tab.set_joined(False) main_window.update_divider() else: tab.nicklist.remove_nick(nick) msg = format_message("actions", "part", { "nick": nick, "channel": channel, "reason": message }, own=(tab.parent.get_nick() == nick), highlight=False) msg.markup_cb = color_nick_markup_cb print_tab(tab, msg)
def sushi_quit(time, server, sender, message): """ message can be empty """ server_tab = main_window.find_server(server) if not server_tab: print_error("No server tab for server '%s'." % (server)) return nick = parse_from(sender)[0] msg = format_message("actions", "quit", {"nick": nick, "reason": message}, own = (nick == server_tab.get_nick()), highlight = False) msg.markup_cb = color_nick_markup_cb if nick == server_tab.get_nick(): # we quit server_tab.set_connected(False) for child in server_tab.children: print_tab(child, msg) else: for tab in server_tab.children: if type(tab) == tabs.Channel and tab.nicklist.has_nick(nick): tab.nicklist.remove_nick(nick) print_tab(tab, msg) elif (type(tab) == tabs.Query and tab.name.lower() == nick.lower()): print_tab(tab, msg)
def sushi_join(time, server, sender, channel): server_tab = main_window.find_server(server) if not server_tab: print_error("Missing server tab for '%s'." % (server)) return tab = main_window.find_tab(server, channel) nick = parse_from(sender)[0] if nick == server_tab.get_nick(): # we join if not tab: tab = tabs.Channel(name=channel, parent=server_tab) tab.set_joined(True) main_window.update_divider() else: # somebody joined tab.nicklist.add_nick(nick) msg = format_message("actions", "join", { "nick": nick, "host": sender, "channel": channel }, own=(nick == server_tab.get_nick()), highlight=False) msg.markup_cb = color_nick_markup_cb print_tab(tab, msg)
def sushi_kick(time, server, sender, channel, who, message): """ message can be empty """ stab = main_window.find_server(server) if not stab: print_error("missing stab '%s'" % (server)) return nick = parse_from(sender)[0] tab = main_window.find_tab(server, channel) if who == stab.get_nick(): # we got kicked pass else: tab.nicklist.remove_nick(who) msg = format_message("actions", "kick", { "who": who, "channel": channel, "nick": nick, "reason": message }, own=(who == stab.get_nick()), highlight=(nick == tab.parent.get_nick())) msg.markup_cb = color_nick_markup_cb print_tab(tab, msg)
def sushi_quit(time, server, sender, message): """ message can be empty """ server_tab = main_window.find_server(server) if not server_tab: print_error("No server tab for server '%s'." % (server)) return nick = parse_from(sender)[0] msg = format_message("actions", "quit", { "nick": nick, "reason": message }, own=(nick == server_tab.get_nick()), highlight=False) msg.markup_cb = color_nick_markup_cb if nick == server_tab.get_nick(): # we quit server_tab.set_connected(False) for child in server_tab.children: print_tab(child, msg) else: for tab in server_tab.children: if type(tab) == tabs.Channel and tab.nicklist.has_nick(nick): tab.nicklist.remove_nick(nick) print_tab(tab, msg) elif (type(tab) == tabs.Query and tab.name.lower() == nick.lower()): print_tab(tab, msg)
def sushi_kick(time, server, sender, channel, who, message): """ message can be empty """ stab = main_window.find_server(server) if not stab: print_error("missing stab '%s'" % (server)) return nick = parse_from(sender)[0] tab = main_window.find_tab(server, channel) if who == stab.get_nick(): # we got kicked pass else: tab.nicklist.remove_nick(who) msg = format_message("actions", "kick", {"who": who, "channel": channel, "nick": nick, "reason": message}, own = (who == stab.get_nick()), highlight = (nick == tab.parent.get_nick())) msg.markup_cb = color_nick_markup_cb print_tab(tab, msg)
def sushi_mode(time, server, sender, target, mode, param): """ sender can be empty, param can be empty """ if sender == "": # mode listing msg = format_message( "actions", "mode_list", { "target": target, "mode": mode }, own=(target == main_window.find_server(server).get_nick()), highlight=False) current_server_tab_print(server, msg) else: nick = parse_from(sender)[0] msg = format_message( "actions", "mode", { "nick": nick, "mode": mode, "param": param and " " + param or "", "target": target }, own=(nick == main_window.find_server(server).get_nick()), highlight=(target == main_window.find_server(server).get_nick())) msg.markup_cb = color_nick_markup_cb tab = main_window.find_tab(server, target) print_tab(tab, msg)
def sushi_join(time, server, sender, channel): server_tab = main_window.find_server(server) if not server_tab: print_error("Missing server tab for '%s'." % (server)) return tab = main_window.find_tab(server, channel) nick = parse_from(sender)[0] if nick == server_tab.get_nick(): # we join if not tab: tab = tabs.Channel(name = channel, parent = server_tab) tab.set_joined(True) main_window.update_divider() else: # somebody joined tab.nicklist.add_nick(nick) msg = format_message("actions", "join", {"nick": nick, "host": sender, "channel": channel}, own = (nick == server_tab.get_nick()), highlight = False) msg.markup_cb = color_nick_markup_cb print_tab(tab, msg)
def sushi_topic(time, server, sender, channel, topic): """ sender can be empty """ tab = main_window.find_tab(server, channel) if not tab: print_error("No tab '%s' on '%s' for topic setting." % ( channel, server)) return tab.set_topic(topic) nick = parse_from(sender)[0] if sender == "": template = "topic_anonymous" else: template = "topic" msg = format_message("actions", template, {"nick": nick, "channel": channel, "topic": topic}, own = (tab.parent.get_nick() == nick), highlight = False) if nick: msg.markup_cb = color_nick_markup_cb print_tab(tab, msg) if tab == main_window.current_tab: # update topic bar main_window.header.set_text(tab.get_topic())
def sushi_nick(time, server, old, new): """ old == "" => new == current nick """ stab = main_window.find_server(server) if not stab: print_error("missing stab '%s'" % server) return if not old or old == stab.get_nick(): stab.set_nick(new) if main_window.current_tab in tabs.tree_to_list([stab]): main_window.update_divider() msg = format_message("actions", "nick", { "nick": old, "new_nick": new }, own=True, highlight=False) current_server_tab_print(server, msg) else: # print status message in channel tab old = connection.parse_from(old)[0] new = connection.parse_from(new)[0] msg = format_message("actions", "nick", { "nick": old, "new_nick": new }, own=False, highlight=False) msg.markup_cb = color_nick_markup_cb msg.markup_cb_kwargs = {"values": ["nick", "new_nick"]} for tab in stab.children: if type(tab) == tabs.Channel and tab.nicklist.has_nick(old): tab.nicklist.rename_nick(old, new) print_tab(tab, msg)
def sushi_nick(time, server, old, new): """ old == "" => new == current nick """ stab = main_window.find_server(server) if not stab: print_error("missing stab '%s'" % server) return if not old or old == stab.get_nick(): stab.set_nick(new) if main_window.current_tab in tabs.tree_to_list([stab]): main_window.update_divider() msg = format_message("actions", "nick", {"nick": old, "new_nick": new}, own = True, highlight = False) current_server_tab_print(server, msg) else: # print status message in channel tab old = connection.parse_from(old)[0] new = connection.parse_from(new)[0] msg = format_message("actions", "nick", {"nick": old, "new_nick": new}, own = False, highlight = False) msg.markup_cb = color_nick_markup_cb msg.markup_cb_kwargs = {"values":["nick","new_nick"]} for tab in stab.children: if type(tab) == tabs.Channel and tab.nicklist.has_nick(old): tab.nicklist.rename_nick(old,new) print_tab(tab, msg)
def sushi_invite(time, server, sender, channel, who): """ sender can be empty """ sender_name = parse_from(sender)[0] msg = format_message("actions", "invite", {"nick": sender_name, "who": who, "channel": channel}, own = (sender_name == main_window.find_server(server).get_nick()), highlight = (who == sender_name)) msg.markup_cb = color_nick_markup_cb current_server_tab_print(server, msg)
def sushi_action(time, server, sender, target, message): nick = parse_from(sender)[0] tab = find_target_tab(server, target, nick) if not tab: return msg = format_message("messages", "action", {"nick": nick, "message": message}, own = (tab.parent.get_nick() == nick), highlight = (nick != tab.parent.get_nick()) and is_highlighted(server, message)) print_tab(tab, msg)
def _message_cb(self, timestamp, server, sender, target, message): if not target: locationFormat = server else: locationFormat = server+":"+target format = "[%(timestamp)s] (%(location)s) <%(nick)s> %(message)s" % { "timestamp": time.strftime("%H:%M", time.localtime(timestamp)), "location": locationFormat, "nick": connection.parse_from(sender)[0], "message": message} self.text_walker.append(urwid.Text(format)) self.scroll_to_bottom()
def _message_cb(self, timestamp, server, sender, target, message): if not target: locationFormat = server else: locationFormat = server + ":" + target format = "[%(timestamp)s] (%(location)s) <%(nick)s> %(message)s" % { "timestamp": time.strftime("%H:%M", time.localtime(timestamp)), "location": locationFormat, "nick": connection.parse_from(sender)[0], "message": message } self.text_walker.append(urwid.Text(format)) self.scroll_to_bottom()
def sushi_invite(time, server, sender, channel, who): """ sender can be empty """ sender_name = parse_from(sender)[0] msg = format_message( "actions", "invite", { "nick": sender_name, "who": who, "channel": channel }, own=(sender_name == main_window.find_server(server).get_nick()), highlight=(who == sender_name)) msg.markup_cb = color_nick_markup_cb current_server_tab_print(server, msg)
def sushi_action(time, server, sender, target, message): nick = parse_from(sender)[0] tab = find_target_tab(server, target, nick) if not tab: return msg = format_message("messages", "action", { "nick": nick, "message": message }, own=(tab.parent.get_nick() == nick), highlight=(nick != tab.parent.get_nick()) and is_highlighted(server, message)) print_tab(tab, msg)
def sushi_message(time, server, sender, target, message): nick = parse_from(sender)[0] tab = find_target_tab(server, target, nick) if not tab: return msg = format_message("messages", "message", {"message": message, "nick": nick, "prefix": sushi.user_channel_prefix(server, target, nick)}, own = (nick == tab.parent.get_nick()), highlight = (nick != tab.parent.get_nick()) and is_highlighted(server, message)) msg.markup_cb = color_nick_markup_cb print_tab(tab, msg)
def sushi_notice(time, server, sender, target, message): own_nick = main_window.find_server(server).get_nick() nick = parse_from(sender)[0] msg = format_message("messages", "notice", {"nick": nick, "target": target, "message": message}, own = (nick == own_nick), highlight = is_highlighted(server, message)) msg.markup_cb = color_nick_markup_cb if target[0] in sushi.support_chantypes(server): tab = find_target_tab(server, target) if not tab: current_server_tab_print(server, msg) else: current_server_tab_print(server, msg)
def sushi_notice(time, server, sender, target, message): own_nick = main_window.find_server(server).get_nick() nick = parse_from(sender)[0] msg = format_message("messages", "notice", { "nick": nick, "target": target, "message": message }, own=(nick == own_nick), highlight=is_highlighted(server, message)) msg.markup_cb = color_nick_markup_cb if target[0] in sushi.support_chantypes(server): tab = find_target_tab(server, target) if not tab: current_server_tab_print(server, msg) else: current_server_tab_print(server, msg)
def sushi_message(time, server, sender, target, message): nick = parse_from(sender)[0] tab = find_target_tab(server, target, nick) if not tab: return msg = format_message( "messages", "message", { "message": message, "nick": nick, "prefix": sushi.user_channel_prefix(server, target, nick) }, own=(nick == tab.parent.get_nick()), highlight=(nick != tab.parent.get_nick()) and is_highlighted(server, message)) msg.markup_cb = color_nick_markup_cb print_tab(tab, msg)
def sushi_mode(time, server, sender, target, mode, param): """ sender can be empty, param can be empty """ if sender == "": # mode listing msg = format_message("actions", "mode_list", {"target": target, "mode": mode}, own = (target == main_window.find_server(server).get_nick()), highlight = False) current_server_tab_print(server, msg) else: nick = parse_from(sender)[0] msg = format_message("actions", "mode", {"nick": nick, "mode": mode, "param": param and " "+param or "", "target": target}, own = (nick == main_window.find_server(server).get_nick()), highlight = (target == main_window.find_server(server).get_nick())) msg.markup_cb = color_nick_markup_cb tab = main_window.find_tab(server, target) print_tab(tab, msg)
def parse_from(self, host): return connection.parse_from(host)
def add_nick(self, host): (nick,ident,host) = connection.parse_from(host) self[unicode(nick)] = (ident,host)
def add_nick(self, host): (nick, ident, host) = connection.parse_from(host) self[unicode(nick)] = (ident, host)