def script_unload(): for b, n in nicklist.keys(): weechat.nicklist_remove_nick(*nicklist[b, n]) for server in capab_hooks.keys(): disable_capab(server) return WEECHAT_RC_OK
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
def quit_signal_cb(server_name, signal, signal_data): #debug('signal: %s' %signal) #debug('signal data: %s' %signal_data) nick = signal_data[1:signal_data.find('!')] if nick in ident_nick: del ident_nick[nick] for b, n in nicklist.keys(): if n == nick: weechat.nicklist_remove_nick(*nicklist[b, n]) del nicklist[b, n] return WEECHAT_RC_OK
def part_signal_cb(server_name, signal, signal_data): #debug('signal: %s' %signal) #debug('signal data: %s' %signal_data) signal_data = signal_data.split() host = signal_data[0] channel = signal_data[2] nick = host[1:host.find('!')] buffer = '%s.%s' %(server_name, channel) key = (buffer, nick) if key in nicklist: weechat.nicklist_remove_nick(*nicklist[key]) del nicklist[key] elif nick == weechat.info_get('irc_nick', server_name): for b, n in nicklist.keys(): if b == buffer: weechat.nicklist_remove_nick(*nicklist[b, n]) del nicklist[b, n] return WEECHAT_RC_OK
def part_signal_cb(server_name, signal, signal_data): #debug('signal: %s' %signal) #debug('signal data: %s' %signal_data) signal_data = signal_data.split() host = signal_data[0] channel = signal_data[2] nick = host[1:host.find('!')] buffer = '%s.%s' % (server_name, channel) key = (buffer, nick) if key in nicklist: weechat.nicklist_remove_nick(*nicklist[key]) del nicklist[key] elif nick == weechat.info_get('irc_nick', server_name): for b, n in nicklist.keys(): if b == buffer: weechat.nicklist_remove_nick(*nicklist[b, n]) del nicklist[b, n] return WEECHAT_RC_OK
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)
def remove_from_nicklist(buf, nick, group=""): """Remove nick from the nicklist.""" if group == "": group = friends_nicks_group[buf] nick_ptr = weechat.nicklist_search_nick(buf, group, nick) weechat.nicklist_remove_nick(buf, nick_ptr)
def remove_from_nicklist(buf, nick): """Remove nick from the nicklist.""" nick_ptr = wc.nicklist_search_nick(buf, "", nick) wc.nicklist_remove_nick(buf, nick_ptr)
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
def remove_nick(name, buffer, group): pointer = weechat.nicklist_search_nick(buffer, "", name) if pointer: weechat.nicklist_remove_nick(buffer, pointer) return weechat.WEECHAT_RC_OK
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)