Пример #1
0
    def execute(self, server, room, buff, tags):
        short_name = shorten_sender(self.sender)

        if self.sender in room.users:
            user = room.users[self.sender]
            if self.display_name:
                user.display_name = self.display_name
        else:
            user = MatrixUser(short_name, self.display_name)

        if not user.nick_color:
            if self.sender == server.user_id:
                highlight_words = [self.sender, user.name]

                if self.display_name:
                    highlight_words.append(self.display_name)

                user.nick_color = "weechat.color.chat_nick_self"
                W.buffer_set(buff, "highlight_words",
                             ",".join(highlight_words))
            else:
                user.nick_color = W.info_get("nick_color_name", user.name)

        room.users[self.sender] = user

        nick_pointer = W.nicklist_search_nick(buff, "", self.sender)

        if not nick_pointer:
            add_user_to_nicklist(buff, self.sender, user)

        # calculate room display name and set it as the buffer list name
        room_name = room.display_name(server.user_id)
        W.buffer_set(buff, "short_name", room_name)
Пример #2
0
    def execute(self, server, room, buff, tags):
        topic = self.topic

        W.buffer_set(buff, "title", topic)

        room.topic = topic
        room.topic_author = self.sender
        room.topic_date = datetime.fromtimestamp(
            server_ts_to_weechat(self.timestamp))
Пример #3
0
def server_buffer_set_title(server):
    # type: (MatrixServer) -> None
    if server.numeric_address:
        ip_string = " ({address})".format(address=server.numeric_address)
    else:
        ip_string = ""

    title = ("Matrix: {address}:{port}{ip}").format(
        address=server.address, port=server.port, ip=ip_string)

    W.buffer_set(server.server_buffer, "title", title)
Пример #4
0
    def execute(self, server, room, buff, tags):
        if not self.canonical_alias:
            return

        # TODO: What should we do with this?
        # W.buffer_set(buff, "name", self.name)
        # W.buffer_set(buff, "localvar_set_channel", self.name)

        # calculate room display name and set it as the buffer list name
        room.canonical_alias = self.canonical_alias
        room_name = room.display_name(server.user_id)
        W.buffer_set(buff, "short_name", room_name)
Пример #5
0
    def execute(self, server, room, buff, tags):
        if self.leaving_user in room.users:
            nick_pointer = W.nicklist_search_nick(buff, "", self.leaving_user)

            if nick_pointer:
                W.nicklist_remove_nick(buff, nick_pointer)

            del room.users[self.leaving_user]

            # calculate room display name and set it as the buffer list name
            room_name = room.display_name(server.user_id)
            W.buffer_set(buff, "short_name", room_name)
Пример #6
0
def buffer_command_cb(data, _, command):
    """Override the buffer command to allow switching buffers by short name."""
    command = command[7:].strip()

    buffer_subcommands = [
        "list", "add", "clear", "move", "swap", "cycle", "merge", "unmerge",
        "hide", "unhide", "renumber", "close", "notify", "localvar", "set",
        "get"
    ]

    if not command:
        return W.WEECHAT_RC_OK

    command_words = command.split()

    if len(command_words) >= 1:
        if command_words[0] in buffer_subcommands:
            return W.WEECHAT_RC_OK

        elif command_words[0].startswith("*"):
            return W.WEECHAT_RC_OK

        try:
            int(command_words[0])
            return W.WEECHAT_RC_OK
        except ValueError:
            pass

    room_buffers = []

    for server in SERVERS.values():
        room_buffers.extend(server.room_buffers.values())

    sorted_buffers = sorted(room_buffers,
                            key=lambda b: b.weechat_buffer.number)

    for room_buffer in sorted_buffers:
        buffer = room_buffer.weechat_buffer

        if command in buffer.short_name:
            displayed = W.current_buffer() == buffer._ptr

            if displayed:
                continue

            W.buffer_set(buffer._ptr, 'display', '1')
            return W.WEECHAT_RC_OK_EAT

    return W.WEECHAT_RC_OK
Пример #7
0
def create_server_buffer(server):
    # type: (MatrixServer) -> None
    server.server_buffer = W.buffer_new(server.name, "server_buffer_cb",
                                        server.name, "", "")

    server_buffer_set_title(server)
    W.buffer_set(server.server_buffer, "localvar_set_type", 'server')
    W.buffer_set(server.server_buffer, "localvar_set_nick", server.user)
    W.buffer_set(server.server_buffer, "localvar_set_server", server.name)
    W.buffer_set(server.server_buffer, "localvar_set_channel", server.name)

    server_buffer_merge(server.server_buffer)
Пример #8
0
    def execute(self, server, room, buff, tags):
        if not self.name:
            return

        room.name = self.name
        W.buffer_set(buff, "name", self.name)
        W.buffer_set(buff, "localvar_set_channel", self.name)

        # calculate room display name and set it as the buffer list name
        room_name = room.display_name(server.user_id)
        W.buffer_set(buff, "short_name", room_name)
Пример #9
0
def matrix_create_room_buffer(server, room_id):
    # type: (MatrixServer, str) -> None
    buf = W.buffer_new(room_id, "room_input_cb", server.name, "room_close_cb",
                       server.name)

    W.buffer_set(buf, "localvar_set_type", 'channel')
    W.buffer_set(buf, "type", 'formatted')

    W.buffer_set(buf, "localvar_set_channel", room_id)

    W.buffer_set(buf, "localvar_set_nick", server.user)

    W.buffer_set(buf, "localvar_set_server", server.name)

    short_name = strip_matrix_server(room_id)
    W.buffer_set(buf, "short_name", short_name)

    W.nicklist_add_group(buf, '', "000|o", "weechat.color.nicklist_group", 1)
    W.nicklist_add_group(buf, '', "001|h", "weechat.color.nicklist_group", 1)
    W.nicklist_add_group(buf, '', "002|v", "weechat.color.nicklist_group", 1)
    W.nicklist_add_group(buf, '', "999|...", "weechat.color.nicklist_group", 1)

    W.buffer_set(buf, "nicklist", "1")
    W.buffer_set(buf, "nicklist_display_groups", "0")

    # TODO make this configurable
    W.buffer_set(buf, "highlight_tags_restrict", "matrix_message")

    server.buffers[room_id] = buf
    server.rooms[room_id] = MatrixRoom(room_id)