From 5e7bb342e66e88480effbbb90ad6c2f185f9c589 Mon Sep 17 00:00:00 2001 From: "louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13" Date: Sat, 12 Jun 2010 17:28:51 +0000 Subject: [PATCH] (Link mauve) /ignore and /unignore. Fixed #1109 --- README | 3 ++- src/gui.py | 30 +++++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/README b/README index 3a88c315..a51a0f8b 100644 --- a/README +++ b/README @@ -43,7 +43,7 @@ Please DO report any bug you encounter and ask for any feature you want. If you are testing poezio, and get a crash but no error, please -take a look in the src/errors file. +take a look at the src/errors file. ======================= Authors @@ -73,6 +73,7 @@ the Creative Commons BY license (http://creativecommons.org/licenses/by/2.0/) Thanks ======================= = People = + Link Mauve - Code Erwan Briand - Handler and MultiUserChat classes Gaëtan Ribémont (http://www.bonbref.com) - Logo design Ovart - Testing diff --git a/src/gui.py b/src/gui.py index 17625503..8b5b74ea 100644 --- a/src/gui.py +++ b/src/gui.py @@ -56,6 +56,7 @@ class Gui(object): # self.window.new_room(self.current_room()) # self.window.refresh(self.rooms) self.rooms = [Room('Info', '', self.window)] + self.ignores = {} self.muc = muc @@ -343,6 +344,8 @@ Avail: Sets your availability to available and (optional) sets your status return # ignore all messages not comming from a MUC nick_from = stanza.getFrom().getResource() room_from = stanza.getFrom().getStripped() + if (self.ignores.has_key(room_from)) and (nick_from in self.ignores[room_from]): + return room = self.get_room_by_name(room_from) if not room: self.information(_("message received for a non-existing room: %s") % (room_from)) @@ -728,10 +731,20 @@ Avail: Sets your availability to available and (optional) sets your status """ /ignore """ - # TODO if len(args) != 1: - self.command_help([ignore]) + self.command_help(['ignore']) return + if self.current_room().name == 'Info' or not self.current_room().joined: + return + roomname = self.current_room().name + nick = args[0] + if not self.ignores.has_key(roomname): + self.ignores[roomname] = set() # no need for any order + if nick not in self.ignores[roomname]: + self.ignores[roomname].add(nick) + self.add_message_to_room(self.current_room(), _("%s is now ignored") % nick) + else: + self.add_message_to_room(self.current_room(), _("%s is already ignored") % nick) def command_unignore(self, args): """ @@ -739,8 +752,19 @@ Avail: Sets your availability to available and (optional) sets your status """ # TODO if len(args) != 1: - self.command_help([ignore]) + self.command_help(['unignore']) return + if self.current_room().name == 'Info' or not self.current_room().joined: + return + roomname = self.current_room().name + nick = args[0] + if not self.ignores.has_key(roomname) or (nick not in self.ignores[roomname]): + self.add_message_to_room(self.current_room(), _("%s was not ignored") % nick) + return + self.ignores[roomname].remove(nick) + if self.ignores[roomname] == set(): + del self.ignores[roomname] + self.add_message_to_room(self.current_room(), _("%s is now unignored") % nick) def command_away(self, args): """