Example #1
0
def setup_buffer(buffer):
    # set title
    weechat.buffer_set(buffer, "title", "Twitter buffer, type ':help' for options.")

    # disable logging, by setting local variable "no_log" to "1"
    weechat.buffer_set(buffer, "localvar_set_no_log", "1")

    #create main nicklist
    friends_nicks_group[buffer] = weechat.nicklist_add_group(buffer, "", "Friends",
                "weechat.color.nicklist_group", 1)

    tweet_nicks_group[buffer] = weechat.nicklist_add_group(buffer, "", "Tweet_parse",
                "weechat.color.nicklist_group", 1)
    autocomp_group = weechat.nicklist_add_group(buffer, "", "Autocomp",
                "weechat.color.nicklist_group", 1)
    #newline autocomplete
    weechat.nicklist_add_nick(buffer, autocomp_group, "
", 'bar_fg', '', '', 1)

    #show nicklist
    weechat.buffer_set(buffer, "nicklist", "1")

    user_nick = script_options['screen_name']

    weechat.buffer_set(buffer, "localvar_set_nick", user_nick)

    add_to_nicklist(buffer, user_nick)
    # Highlight user nick
    weechat.buffer_set(buffer, "highlight_words", user_nick)
Example #2
0
def add_nick(name, buffer, group):
    group = get_nick_group(buffer, 'bot2human')

    if not w.nicklist_search_nick(buffer, group, name):
        w.nicklist_add_nick(buffer, group, name,
                            "weechat.color.nicklist_group", "~", "lightgreen",
                            1)
    return w.WEECHAT_RC_OK
Example #3
0
def add_nick(name, buffer, group):
    # You may uncomment the following line if you want want these nicks grouped.
    # However, Glowing Bear will error and won't show you added nicks, if
    # the group is empty at the moment you open the channel buffer.
    group = get_nick_group(buffer, 'bot2human')

    if not w.nicklist_search_nick(buffer, group, name):
        w.nicklist_add_nick(buffer, group, name, "weechat.color.nicklist_group", "~", "lightgreen", 1)
    return w.WEECHAT_RC_OK
Example #4
0
 def update_nicklist(self):
     w.buffer_set(self.channel_buffer, "nicklist", "1")
     w.nicklist_remove_all(self.channel_buffer)
     for user in self.members:
         user = self.server.users.find(user)
         if user.presence == 'away':
             w.nicklist_add_nick(self.channel_buffer, "", user.name, user.color(), " ", "", 1)
         else:
             w.nicklist_add_nick(self.channel_buffer, "", user.name, user.color(), "+", "", 1)
Example #5
0
 def __init__(self, server, name, identifier, presence="away"):
     super(User, self).__init__(name, identifier)
     self.channel_buffer = w.info_get("irc_buffer", "%s.%s" % (domain, self.name))
     self.presence = presence
     self.server = server
     if self.presence == 'away':
         self.nicklist_pointer = w.nicklist_add_nick(server.buffer, "", self.name, self.color(), " ", "", 0)
     else:
         self.nicklist_pointer = w.nicklist_add_nick(server.buffer, "", self.name, self.color(), "+", "", 1)
Example #6
0
def add_nick(name, buffer, group):
    # You may uncomment the following line if you want want these nicks grouped.
    # However, Glowing Bear will error and won't show you added nicks, if
    # the group is empty at the moment you open the channel buffer.
    group = get_nick_group(buffer, 'bot2human')

    if not w.nicklist_search_nick(buffer, group, name):
        w.nicklist_add_nick(buffer, group, name,
                            "weechat.color.nicklist_group", "~", "lightgreen",
                            1)
    return w.WEECHAT_RC_OK
Example #7
0
 def update_nicklist(self):
     w.buffer_set(self.channel_buffer, "nicklist", "1")
     w.nicklist_remove_all(self.channel_buffer)
     for user in self.members:
         user = self.server.users.find(user)
         if user.presence == 'away':
             w.nicklist_add_nick(self.channel_buffer, "", user.name,
                                 user.color(), " ", "", 1)
         else:
             w.nicklist_add_nick(self.channel_buffer, "", user.name,
                                 user.color(), "+", "", 1)
Example #8
0
def nicklist_init():
    csv_file = weechat.info_get('weechat_dir', '') + '/python/weesms.csv'
    try:
        contacts_csv = csv.reader(open(csv_file, 'r'))
        for c in contacts_csv:
            weechat.nicklist_add_nick(smsbuffer, contacts, c[0], '', '@', '',
                                      1)
            contacts_dict[c[0]] = c[1]
    except IOError:
        weechat.prnt(
            '', "%sIOError: Unable to access %s file" %
            (csv_file, weechat.prefix("error")))
Example #9
0
 def __init__(self, server, name, identifier, presence="away"):
     super(User, self).__init__(name, identifier)
     self.channel_buffer = w.info_get("irc_buffer",
                                      "%s.%s" % (domain, self.name))
     self.presence = presence
     self.server = server
     if self.presence == 'away':
         self.nicklist_pointer = w.nicklist_add_nick(
             server.buffer, "", self.name, self.color(), " ", "", 0)
     else:
         self.nicklist_pointer = w.nicklist_add_nick(
             server.buffer, "", self.name, self.color(), "+", "", 1)
Example #10
0
def setup_group_buffer(groupId):
    global groups
    group = groups[groupId]
    buffer = get_buffer(groupId, True)
    set_buffer_name(buffer, group['name'])
    weechat.buffer_set(buffer, "nicklist", "1")
    weechat.buffer_set(buffer, "nicklist_display_groups", "0")
    for member in group['members']:
        member_name = contact_name(member['number'])
        entry = weechat.nicklist_search_nick(buffer, "", member_name)
        if len(entry) == 0:
            logger.debug("Adding %s to group %s", member_name, groupId)
            weechat.nicklist_add_nick(buffer, "", member_name, "", "", "", 1)
Example #11
0
def nicklist_timer(data, remaining_calls):
    for server in xd:
        users_r = requests.get(urljoin(server, "api/user-list"))
        users = users_r.json()["users"]
        for channel in xd[server]["channels"].itervalues():
            weechat.nicklist_remove_all(channel["buffer"])
            group = weechat.nicklist_add_group(channel["buffer"], "", "Users",
                                               "weechat.color.nicklist_group",
                                               1)
            for u in users:
                weechat.nicklist_add_nick(
                    channel["buffer"], group, u["username"],
                    "default" if u["online"] else "lightgrey", "",
                    "lightgreen", 1)
    return weechat.WEECHAT_RC_OK
Example #12
0
def reload_contacts_cb(data, buffer, args):
    global contacts
    csv_file = weechat.info_get('weechat_dir', '') + '/python/weesms.csv'
    try:
        contacts_csv = csv.reader(open(csv_file, 'r'))
        weechat.nicklist_remove_group(smsbuffer, contacts)
        contacts = weechat.nicklist_add_group(smsbuffer, '', 'contacts', '', 1)
        for c in contacts_csv:
            weechat.nicklist_add_nick(smsbuffer, contacts, c[0], '', '@', '',
                                      1)
            contacts_dict[c[0]] = c[1]
        weechat.prnt('', "Contacts reload: done")
    except IOError:
        weechat.prnt(
            '', "%sIOError: Unable to access %s file" %
            (csv_file, weechat.prefix("error")))
        return weechat.WEECHAT_RC_ERROR
    return weechat.WEECHAT_RC_OK
Example #13
0
 def updateNicklist(self, user, remove = False) :
     group = weechat.nicklist_search_group(self.buffer, '', user.login)
     if group is not None and user.login in self.contacts :
         if user.fd in self.contacts[user.login] :
             weechat.nicklist_remove_nick(self.buffer, self.contacts[user.login][user.fd].nick)
             del self.contacts[user.login][user.fd]
         if remove is False :
             user.nick = weechat.nicklist_add_nick(self.buffer, group, ' :%s%s@%s%s' % (user.fd, weechat.color('separator'), weechat.color('default'), user.location), '', '', '', 1)
             self.contacts[user.login][user.fd] = user
Example #14
0
def get_buffer(identifier, isGroup):
    identifier = identifier.encode("utf-8")
    if identifier not in buffers:
        cb = "buffer_input_group" if isGroup else "buffer_input"
        name = identifier
        logger.debug("Creating buffer for identifier %s (%s)", identifier,
                     "group" if isGroup else "contact")
        nicklist = []
        signal = getSignal()
        if signal is not None:
            try:
                if isGroup:
                    group = [
                        dbus.Byte(x) for x in base64.b64decode(identifier)
                    ].encode("utf-8")
                    name = signal.getGroupName(group).encode("utf-8")
                    for number in signal.getGroupMembers(group):
                        contact_name = signal.getContactName(number).encode(
                            "utf-8")
                        if len(contact_name) == 0:
                            contact_name = number
                        nicklist.append(contact_name)
                else:
                    name = signal.getContactName(identifier).encode("utf-8")
                    if len(name) == 0:
                        name = identifier
                logger.debug("%s %s is known as %s",
                             "group" if isGroup else "contact", identifier,
                             name)
            except dbus.exceptions.DBusException:
                pass
            buffers[identifier] = weechat.buffer_new(name, cb, identifier, "",
                                                     "")
            weechat.buffer_set(buffers[identifier], "title", name)
            if len(nicklist) > 0:
                weechat.buffer_set(buffers[identifier], "nicklist", "1")
                weechat.buffer_set(buffers[identifier],
                                   "nicklist_display_groups", "0")
                for nick in nicklist:
                    logger.debug("Adding %s to group %s", nick, identifier)
                    weechat.nicklist_add_nick(buffers[identifier], "", nick,
                                              "", "", "", 1)
    return buffers[identifier]
Example #15
0
def update_nicklist(buffer_name):
    buffer_pointer = weechat.buffer_search('irc', buffer_name)
    if not buffer_pointer:
        return

    group_pointers = {}

    infolist = weechat.infolist_get('nicklist', buffer_pointer, '')
    infolist_string = weechat.infolist_string
    infolist_next = weechat.infolist_next
    while infolist_next(infolist):
        if not infolist_string(infolist, 'type') == 'nick':
            continue

        nick = infolist_string(infolist, 'name')
        if nick not in ident_nick:
            continue

        group = infolist_string(infolist, 'group_name')
        color = infolist_string(infolist, 'color')
        prefix = infolist_string(infolist, 'prefix')
        prefix_color = infolist_string(infolist, 'prefix_color')

        if ident_nick[nick]:
            prefix_new = ' '
            group_new = '080|ident'
            color_new = 'green'
        else:
            prefix_new = '~'
            group_new = '081|unident'
            color_new = 'brown'
            prefix_color = 'cyan'

        if prefix[0] != prefix_new[0]:
            if prefix == ' ':
                prefix = prefix_new
                prefix_new = ''
            elif prefix_new != ' ':
                prefix = prefix_new + prefix
                prefix_new = ''

        if color == 'bar_fg':
            color = color_new
            color_new = ''

        if group[:2] == '08':
            group = group_new
            group_new = ''
            try:
                group_pointer = group_pointers[group]
            except KeyError:
                group_pointer = weechat.nicklist_search_group(
                    buffer_pointer, '', group)
                if not group_pointer:
                    group_pointer = weechat.nicklist_add_group(
                        buffer_pointer, '', group,
                        'weechat.color.nicklist_group', 1)
                group_pointers[group] = group_pointer
        else:
            group_pointer = weechat.nicklist_search_group(
                buffer_pointer, '', group)

        if prefix_new and group_new and color_new:
            # nothing to change
            continue

        #debug('adding nick: %s%s to %s' %(prefix, nick, group))
        nick_pointer = weechat.nicklist_search_nick(buffer_pointer, '', nick)
        if nick_pointer:
            weechat.nicklist_remove_nick(buffer_pointer, nick_pointer)
        nick_pointer = weechat.nicklist_add_nick(buffer_pointer, group_pointer,
                                                 nick, color, prefix,
                                                 prefix_color, 1)
        nicklist[buffer_name, nick] = (buffer_pointer, nick_pointer)
    weechat.infolist_free(infolist)
Example #16
0
def add_nick(name, buffer, group):
    group = get_nick_group(buffer, 'bot2human')

    if not w.nicklist_search_nick(buffer, group, name):
        w.nicklist_add_nick(buffer, group, name, "weechat.color.nicklist_group", "~", "lightgreen", 1)
    return w.WEECHAT_RC_OK
Example #17
0
    def create_new_buffer(self, msg, conv_id):
        channel = msg['channel']
        name = channel['name']

        if channel['members_type'] == 'impteamnative':
            ## We don't want to replicate our username
            name_splitted = name.split(',')
            ## We can send message to ourself
            if len(name_splitted) == 1:
                buff_name = name
            else:
                buff_name = ",".join(name_splitted[1:])
            ty = "private"
        elif channel['members_type'] == 'team':
            buff_name = channel['name'] + "#" + channel['topic_name']
            ty = "channel"
        else:
            buff_name = "un::" + channel['member_type']
            ty = "private"
        buff = weechat.buffer_new(buff_name, "private_input_cb", conv_id,
                                  "private_close_cb", conv_id)
        weechat.prnt("", "buffer!" + str(buff))
        weechat.buffer_set(buff, "localvar_set_type", ty)
        weechat.buffer_set(buff, "localvar_set_server", self.status_name)
        weechat.buffer_set(buff, "localvar_set_no_log", "1")
        weechat.buffer_set(buff, "localvar_set_conversation_id", conv_id)
        weechat.buffer_set(buff, "localvar_set_first_message", "")
        weechat.buffer_set(buff, "localvar_set_last_message", "")
        weechat.buffer_set(buff, "unread", "")
        weechat.buffer_set(buff, "notify", "2")
        weechat.buffer_set(buff, "nicklist", "1")
        # Get channel member
        api = {
            "method": "listmembers",
            "params": {
                "options": {
                    "conversation_id": conv_id
                }
            }
        }
        r = self.execute_api(api)
        nicklist = [
            "0|Owners", "1|Admins", "2|Writers", "3|Readers", "4|Bot",
            "5|Restricted Bot"
        ]
        group = [None] * 6
        j = 0
        for i in nicklist:
            group[int(j)] = weechat.nicklist_add_group(
                buff, "", i, "weechat.color.nicklist_group", 1)
            j += 1
        result = r
        for i in result['owners']:
            weechat.nicklist_add_nick(buff, group[0], i['username'], "red",
                                      "@", "lightgreen", 1)
        for i in result['admins']:
            weechat.nicklist_add_nick(buff, group[1], i['username'], "red",
                                      "@", "lightgreen", 1)
        for i in result['writers']:
            weechat.nicklist_add_nick(buff, group[2], i['username'], "red",
                                      "@", "lightgreen", 1)
        for i in result['readers']:
            weechat.nicklist_add_nick(buff, group[3], i['username'], "red",
                                      "@", "lightgreen", 1)
        for i in result['bots']:
            weechat.nicklist_add_nick(buff, group[4], i['username'], "red",
                                      "@", "lightgreen", 1)
        for i in result['restrictedBots']:
            weechat.nicklist_add_nick(buff, group[5], i['username'], "red",
                                      "@", "lightgreen", 1)
        return buff
def add_nick(name, buffer, group):
    if not weechat.nicklist_search_nick(buffer, "", name):
        weechat.nicklist_add_nick(buffer, group, name, "weechat.color.nicklist_group", " ", "lightgreen", 1)
    return weechat.WEECHAT_RC_OK
Example #19
0
def update_nicklist(buffer_name):
    buffer_pointer = weechat.buffer_search('irc', buffer_name)
    if not buffer_pointer:
        return

    group_pointers = {}

    infolist = weechat.infolist_get('nicklist', buffer_pointer, '')
    infolist_string = weechat.infolist_string
    infolist_next = weechat.infolist_next
    while infolist_next(infolist):
        if not infolist_string(infolist, 'type') == 'nick':
            continue

        nick = infolist_string(infolist, 'name')
        if nick not in ident_nick:
            continue
        
        group = infolist_string(infolist, 'group_name')
        color = infolist_string(infolist, 'color')
        prefix = infolist_string(infolist, 'prefix')
        prefix_color = infolist_string(infolist, 'prefix_color')

        if ident_nick[nick]:
            prefix_new = ' '
            group_new = '080|ident'
            color_new = 'green'
        else:
            prefix_new = '~'
            group_new = '081|unident'
            color_new = 'brown'
            prefix_color = 'cyan'

        if prefix[0] != prefix_new[0]:
            if prefix == ' ':
                prefix = prefix_new
                prefix_new = ''
            elif prefix_new != ' ':
                prefix = prefix_new + prefix
                prefix_new = ''

        if color == 'bar_fg':
            color = color_new
            color_new = ''

        if group[:2] == '08':
            group = group_new
            group_new = ''
            try:
                group_pointer = group_pointers[group]
            except KeyError:
                group_pointer = weechat.nicklist_search_group(buffer_pointer, '', group)
                if not group_pointer:
                    group_pointer = weechat.nicklist_add_group(buffer_pointer, '', group,
                            'weechat.color.nicklist_group', 1)
                group_pointers[group] = group_pointer
        else:
            group_pointer = weechat.nicklist_search_group(buffer_pointer, '', group)

        if prefix_new and group_new and color_new:
            # nothing to change
            continue

        #debug('adding nick: %s%s to %s' %(prefix, nick, group))
        nick_pointer = weechat.nicklist_search_nick(buffer_pointer, '', nick)
        if nick_pointer:
            weechat.nicklist_remove_nick(buffer_pointer, nick_pointer)
        nick_pointer = weechat.nicklist_add_nick(buffer_pointer, group_pointer, nick, color,
                prefix, prefix_color, 1)
        nicklist[buffer_name, nick] = (buffer_pointer, nick_pointer)
    weechat.infolist_free(infolist)
Example #20
0
def connect(url, data):
    global xd
    # ping the server, to see if it's online
    ping = requests.get(urljoin(url, "api"))
    if ping.status_code == requests.codes.teapot and "decent" in ping.json():
        weechat.prnt(
            "", "weecent\tSuccessfully connected to Decent server %s." % url)
    elif ping.status_code in (requests.codes.ok, requests.codes.not_found):
        weechat.prnt(
            "", "weecent\t%s is not a valid Decent server, skipping." % url)
        del xd[url]
        return
    else:
        weechat.prnt("", "weecent\tCould not connect to %s, skipping." % url)
        del xd[url]
        return

    # login
    login_r = requests.post(urljoin(url, "api/login"), json=data)
    login_data = login_r.json()

    server_name = url.split("//")[1]
    if login_data["success"]:
        session_id = login_data["sessionID"]
        xd[url]["session_id"] = session_id

        channels_r = requests.get(urljoin(url, "api/channel-list"),
                                  {'sessionID': session_id})
        if channels_r.json()['success']:
            channels = channels_r.json()['channels']

            # create server buffer
            buffer_ = weechat.buffer_new(server_name, "server_input_cb", "",
                                         "server_close_cb", "")
            weechat.buffer_set(buffer_, "title", "Weecent testing!")
            weechat.buffer_set(buffer_, "localvar_set_no_log", "1")
            weechat.buffer_set(buffer_, "localvar_set_type", "server")
            weechat.buffer_set(buffer_, "localvar_set_url", url)
            weechat.buffer_set(buffer_, "localvar_set_server", server_name)
            xd[url]["buffer"] = buffer_

            # create channel buffers
            xd[url]["channels"] = {}
            for channel in channels:
                xd[url]["channels"][channel["id"]] = {"name": channel["name"]}

                # set up buffer
                buffer_ = weechat.buffer_new(channel["name"], "send_message",
                                             "", "channel_close_cb", "")
                weechat.buffer_set(buffer_, "title", "Weecent testing!")
                weechat.buffer_set(buffer_, "nicklist", "1")
                weechat.buffer_set(buffer_, "nicklist_display_groups", "0")
                weechat.buffer_set(buffer_, "localvar_set_no_log", "1")
                weechat.buffer_set(buffer_, "localvar_set_type", "channel")
                weechat.buffer_set(buffer_, "localvar_set_channel",
                                   json.dumps(channel))
                weechat.buffer_set(buffer_, "localvar_set_url", url)
                weechat.buffer_set(buffer_, "localvar_set_server", server_name)
                xd[url]["channels"][channel["id"]]["buffer"] = buffer_

                # get scrollback
                scrollback_r = requests.get(
                    urljoin(url,
                            "api/channel/%s/latest-messages" % channel["id"]))
                messages = scrollback_r.json()["messages"]
                for m in messages:
                    display_msg(buffer_, m, xd[url])

                # get users
                users_r = requests.get(urljoin(url, "api/user-list"))
                users = users_r.json()["users"]

                group = weechat.nicklist_add_group(
                    buffer_, "", "Users", "weechat.color.nicklist_group", 1)

                for u in users:
                    weechat.nicklist_add_nick(
                        buffer_, group, u["username"],
                        "default" if u["online"] else "lightgrey", "",
                        "lightgreen", 1)
        else:
            weechat.prnt("", "ono a bad happened")

        # create websocket
        if not "socket" in xd[url]:
            # wss or ws?
            use_secure = requests.get(urljoin(url,
                                              "api/should-use-secure")).json()
            protocol = "wss://" if use_secure["useSecure"] else "ws://"

            xd[url]['socket'] = websocket.create_connection(
                protocol + server_name, sslopt=sslopt_ca_certs)

            weechat.hook_fd(xd[url]['socket'].sock._sock.fileno(), 1, 0, 0,
                            "recv_cb", "")
            xd[url]['socket'].sock.setblocking(0)
    else:
        weechat.prnt("", "ono a bad happened")
Example #21
0
def add_to_nicklist(buf, nick, group=""):
    """Add nick to the nicklist."""
    if group == "":
        group = friends_nicks_group[buf]
    weechat.nicklist_add_nick(buf, group, nick, 'bar_fg', '', '', 1)
Example #22
0
def add_to_nicklist(buf, nick):
    """Add nick to the nicklist."""
    wc.nicklist_add_nick(buf, "", nick, wc.info_get('irc_nick_color_name',
                                                    nick), '', '', 1)
def add_nick(name, buffer, group):
    if not weechat.nicklist_search_nick(buffer, "", name):
        weechat.nicklist_add_nick(buffer, group, name,
                                  "weechat.color.nicklist_group", " ",
                                  "lightgreen", 1)
    return weechat.WEECHAT_RC_OK
Example #24
0
def buf_get(ctx, known):
	global _tmp_room_queue_hash, _tmp_room_initial

	haveBzz = False
	# \todo integrity check of input data
	bufname = ctx.to_buffer_name()

	wOut(
		PSS_BUFPFX_DEBUG,
		[],
		"!!!",
		"generated bufname " + bufname
	)

	buf = weechat.buffer_search("python", bufname)

	if ctx.is_room() and ctx.get_bzz() == None:
		raise RuntimeError("gateway needed for multiuser chats over swarm")

	
	if buf == "":

		# for debug only
		pss_publickey_hex = pss.rpchex(ctx.get_pss().get_public_key())
		pss_overlay_hex = pss.rpchex(ctx.get_pss().get_overlay())

		# chat is DM between two parties
		if ctx.is_chat():
		
			shortname = "pss:" + ctx.get_name()
			# set up the buffer
			ctx.set_buffer(weechat.buffer_new(bufname, "buf_in", ctx.get_node(), "buf_close", ctx.get_node()), bufname)
			weechat.buffer_set(ctx.get_buffer(), "short_name", shortname)
			weechat.buffer_set(ctx.get_buffer(), "title", ctx.get_name() + " @ PSS '" + ctx.get_node() + "' | node: " + weechat.config_get_plugin(ctx.get_pss().get_host() + "_url") + ":" + weechat.config_get_plugin(ctx.get_pss().get_port() + "_port") + " | key  " + pss.label(pss_publickey_hex) + " | address " + pss.label(pss_overlay_hex))
			weechat.buffer_set(ctx.get_buffer(), "hotlist", weechat.WEECHAT_HOTLIST_PRIVATE)
			weechat.buffer_set(ctx.get_buffer(), "display", "1")
			plugin = weechat.buffer_get_pointer(ctx.get_buffer(), "plugin")

			bufs[bufname] = buf


		# room is multiuser conversation
		elif ctx.is_room():
	
			shortname = "pss#" + ctx.get_name()

			buf = weechat.buffer_new(bufname, "buf_in", ctx.get_node(), "buf_close", ctx.get_node())
			weechat.buffer_set(buf, "short_name", shortname)
			weechat.buffer_set(buf, "title", "#" + ctx.get_node() + " @ PSS '" + ctx.get_node() + "' | node: " + weechat.config_get_plugin(ctx.get_pss().get_host() + "_url") + ":" + weechat.config_get_plugin(ctx.get_pss().get_port() + "_port") + " | key  " + pss.label(ctx.get_pss().get_public_key().encode("hex")) + " | address " + pss.label(ctx.get_pss().get_overlay().encode("hex")))
			weechat.buffer_set(buf, "hotlist", weechat.WEECHAT_HOTLIST_PRIVATE)
			weechat.buffer_set(buf, "nicklist", "1")
			weechat.buffer_set(buf, "display", "1")
			weechat.nicklist_add_group(buf, "", "me", "weechat.color.nicklist_group", 1)
			weechat.nicklist_add_nick(buf, "me", ctx.get_node(), "bar_fg", "", "bar_fg", 1)
	
			plugin = weechat.buffer_get_pointer(buf, "plugin")
			bufs[bufname] = buf
			
			if cache.get_room_count() == 0:
				hookTimers.append(weechat.hook_timer(PSS_ROOM_PERIOD, 0, 0, "roomRead", ctx.get_node()))

			# create new room
			(room, loaded) = cache.add_room(ctx.get_name(), ctx.get_node())
			_tmp_room_initial[ctx.get_name()] = False
			if loaded:
				_tmp_room_queue_hash[ctx.get_name()] = room.feedcollection.senderfeed.lasthsh
				try:
					cache.have_room_initial(ctx.get_name())
					_tmp_room_initial[ctx.get_name()] = True
				except Exception as e:
					sys.stderr.write("no initial update, not pulling: " + repr(e) + "\n")

			wOut(
				PSS_BUFPFX_DEBUG,
				[],
				"",
				"loaded room " + repr(cache.get_room(ctx.get_name()))
			)

			for p in room.get_participants():
				pubkey = p.get_public_key()
				if pubkey == ctx.get_pss().get_public_key():
					continue
				nick = ""
				try:
					c = cache.get_contact_by_public_key(pubkey)
					nick = c.get_nick()
					buf_room_add(buf, c.get_nick())
				except:
					nick = p.get_nick()
				buf_room_add(buf, nick)

		else:
			raise RuntimeError("invalid buffer type")

	else:
		ctx.set_buffer(buf, bufname)

	return ctx.get_buffer()
Example #25
0
def buf_room_add(buf, nick, groupname=""):
	if weechat.nicklist_search_group(buf, "", "members") == "":
		weechat.nicklist_add_group(buf, "", "members", "weechat.color.nicklist_group", 1)
	nickbufp = weechat.nicklist_add_nick(buf, groupname, nick, "bar_fg", "", "bar_fg", 1)
	weechat.nicklist_nick_set(buf, nickbufp, "color", "white")
Example #26
0
def add_to_nicklist(buf, nick):
    """Add nick to the nicklist."""
    wc.nicklist_add_nick(buf, "", nick, 'bar_fg', '', '', 1)
Example #27
0
def add_to_nicklist(buf, nick):
    """Add nick to the nicklist."""
    wc.nicklist_add_nick(buf, "", nick, wc.info_get('irc_nick_color_name', nick), '', '', 1)
Example #28
0
def set_colors( users_logged_in ):
	global rbon_messages								# Variable to hold contents of rbon bar item
	global first_run									# Script needs one run to populate online and offline dictionaries

	global online_dict
	global offline_dict
	global outgoing_list
	global incoming_list

	nicks = weechat.infolist_get( 'irc_nick', '', 'redbrick,#lobby' )
	buff_ptr = weechat.buffer_search( "irc","redbrick.#lobby" )
	if( nicks == "" and buff_ptr == "" ):
		nicks = weechat.infolist_get( 'irc_nick', '', 'irc.redbrick.dcu.ie,#lobby' )
		buff_ptr = weechat.buffer_search( "irc","irc.redbrick.dcu.ie.#lobby" )

	group_normal_ptr = weechat.nicklist_search_group( buff_ptr, "", "..." )
	group_op_ptr = weechat.nicklist_search_group( buff_ptr, "", "o" )
	color_nick_online = weechat.config_get_plugin( "color_nick_online" )
	if( nicks != None ):
		if( nicks == {} ):
			weechat.prnt( "No nicks" )
		else:
			while weechat.infolist_next( nicks ):										# Stepping through each nick in #lobby
				name = weechat.infolist_string(nicks, 'name')
				host = weechat.infolist_string(nicks, 'host')
				flag = weechat.infolist_integer(nicks, 'flags')
				timeout = int(weechat.config_get_plugin("interim_period"))
				if( "@Redbrick.dcu.ie" in host ):
					rnick = re.sub('@Redbrick.dcu.ie', '', host)						# Strip real nick from host
					nick_ptr = weechat.nicklist_search_nick(buff_ptr, "", name)         # Find nick pointer

					#
					# - Incoming/Outgoing lists won't be populated if at least one iteration of the list hasn't happened.
					#		first_run set false at the end of first iteration
					# - Set outgoing if - user is offline, user WAS online on the last iteration, user is not currently outgoing
					# - Set incoming if - user is online, user was NOT online on the last iteration, user is not currently incoming 
					#

					#
					# - Script uses stacks
					#		When user moves into a state they are pushed onto the stack
					#		After a set time hook_timer's callback pops the user off the stack and they are moved into either offline or online dictionary
					#

					# If NOT already logged in NOT first run WAS online on last loop NOT in outgoing list 

					if( not rnick in users_logged_in and not first_run and rnick in online_dict and rnick not in outgoing_list ):
						# weechat.prnt("", "OUTgoing user - %s" % rnick)
						outgoing_list.insert(0, rnick)
						weechat.hook_timer(timeout * 1000, 0, 1, "pop_outgoing", "")				# TODO - This hook executes pop_outgoing immediately instead of waiting 10 seconds
						color = weechat.config_get_plugin( "outgoing_color" )
						# TODO - Add OUTGOING nick to rbon_messages here to be displayed in the rbon bar item
						rbon_nick_color = weechat.color( color )
						string = "%s%s" % ( rbon_nick_color,name )

						rbon_messages.append( string )
						weechat.bar_item_update( "rbon" )

						if( rnick in online_dict ):
							del online_dict[ rnick ]

					# If IS logged in NOT first run IN nicklist WAS offline on last loop NOT in incoming list

					elif( rnick in users_logged_in and not first_run and rnick in offline_dict and rnick not in incoming_list ):
						# weechat.prnt("", "INcoming user - %s" % rnick)
						incoming_list.insert(0, rnick)
						weechat.hook_timer(timeout * 1000, 0, 1, "pop_incoming", "")				# TODO - This hook executes pop_incoming immediately instead of waiting 10 seconds
						color = weechat.config_get_plugin("incoming_color")												# Color incoming users red
						# TODO - Add INCOMING nick to rbon_messages here to be displayed in the rbon bar item
						rb_nick_color = weechat.color( color )	
						string = "%s%s" % ( rb_nick_color, name )
						
						rbon_messages.append( string )
						weechat.bar_item_update( "rbon" )

						if( rnick in offline_dict ):
							del offline_dict[rnick]

					elif( rnick in incoming_list ): color = weechat.config_get_plugin( "incoming_color" )

					elif( rnick in outgoing_list ): color = weechat.config_get_plugin( "outgoing_color" )

					# Check to see if that user is logged
					elif( rnick in users_logged_in ):
						if( rnick in offline_dict ):
							del offline_dict[rnick]
						online_dict[rnick] = ""
						color = weechat.config_get_plugin( "online_color" )												# Color online user user nicks

					else:
						offline_dict[rnick] = ""
						if( rnick in online_dict ):
							del online_dict[rnick]
						color = weechat.config_get_plugin( "offline_color" )											# Colour offline user nicks

					# Adding nicks with relevant colours back into the nicklist

					if( buff_ptr and nick_ptr ):
						# TODO - Decide whether or not this REMOVE should be moved...
						weechat.nicklist_remove_nick(buff_ptr, nick_ptr)
					if( buff_ptr ):															# The nick may already have been removed from the buffer....
						if( flag == 0 ):													# Check if normal user
							weechat.nicklist_add_nick(buff_ptr, group_normal_ptr, name, weechat.color(color), " ", color, 1)
						elif( flag == 8 ):													# Check if ops (include @ prefix) 
							weechat.nicklist_add_nick(buff_ptr, group_op_ptr, name, weechat.color(color), "@", color, 1)
	first_run = 0
	users_rb_dict.clear()
	weechat.infolist_free( nicks )
	return weechat.WEECHAT_RC_OK
Example #29
0
def add_to_nicklist(buf, nick):
    """Add nick to the nicklist."""
    wc.nicklist_add_nick(buf, "", nick, 'bar_fg', '', '', 1)
Example #30
0
def buf_room_add(buf, nick, groupname=""):
    #if weechat.nicklist_search_group(buf, "", "members") == "":
    #	weechat.nicklist_add_group(buf, "", "members", "weechat.color.nicklist_group", 1)
    weechat.nicklist_add_nick(buf, groupname, nick, "bar_fg", "", "bar_fg", 1)