diff --git a/CHANGELOG.mkdn b/CHANGELOG.mkdn index b4f6823..029e12b 100644 --- a/CHANGELOG.mkdn +++ b/CHANGELOG.mkdn @@ -51,9 +51,11 @@ CHANGELOG * Ping server if no ping from server to test connection - Kiooeht [evacipatedBox] (Idea: Lexi [lexicalNuance]) * MSPA comic update notifier - Kiooeht [evacipatedBox] * Volume control - Kiooeht [evacipatedBox] +* Debug mode - illuminatedwax [ghostDunk] * Set IRC away on idle - Kiooeht [evacipatedBox] * Remote quirk shutoff in memos - Kiooeht [evacipatedBox] * Compress exit dumps into one line - Kiooeht [evacipatedBox] (Idea: Lexi [lexicalNuance]) +* Display channel mode change message - Kiooeht [evacipatedBox] * Bug fixes * Logviewer updates - Kiooeht [evacipatedBox] * Memo scrollbar thing - Kiooeht [evacipatedBox] diff --git a/dataobjs.py b/dataobjs.py index 434bb45..76cc39b 100644 --- a/dataobjs.py +++ b/dataobjs.py @@ -274,6 +274,12 @@ class PesterProfile(object): opinit = opgrammar.pcf+opchum.initials()+opgrammar.number return "%s took away %s's voice." % \ (opchum.colorhtml(), opinit, self.colorhtml(), self.initials()) + def memomodemsg(self, opchum, opgrammar, syscolor, modeverb, modeon): + opinit = opgrammar.pcf+opchum.initials()+opgrammar.number + if modeon: modeon = "now" + else: modeon = "no longer" + return "Memo is %s %s by %s" % \ + (syscolor.name(), modeon, modeverb, opchum.colorhtml(), opinit) @staticmethod def checkLength(handle): diff --git a/memos.py b/memos.py index f942202..3e26596 100644 --- a/memos.py +++ b/memos.py @@ -621,27 +621,67 @@ class PesterMemo(PesterConvo): for u in users: self.userlist.addItem(u) - def updateChanModes(self, modes): + def updateChanModes(self, modes, op): if not hasattr(self, 'modes'): self.modes = "" chanmodes = list(str(self.modes)) if chanmodes and chanmodes[0] == "+": chanmodes = chanmodes[1:] modes = str(modes) + if op: + systemColor = QtGui.QColor(self.mainwindow.theme["memos/systemMsgColor"]) + chum = self.mainwindow.profile() + opchum = PesterProfile(op) + if self.times.has_key(op): + opgrammar = self.times[op].getGrammar() + elif op == self.mainwindow.profile().handle: + opgrammar = self.time.getGrammar() + else: + opgrammar = TimeGrammar("CURRENT", "C", "RIGHT NOW") if modes[0] == "+": for m in modes[1:]: if m not in chanmodes: chanmodes.extend(m) - if modes.find("s") >= 0: self.chanHide.setChecked(True) - if modes.find("i") >= 0: self.chanInvite.setChecked(True) - if modes.find("m") >= 0: self.chanMod.setChecked(True) + if modes.find("s") >= 0: + self.chanHide.setChecked(True) + if op: + msg = chum.memomodemsg(opchum, opgrammar, systemColor, "Secret", True) + self.textArea.append(convertTags(msg)) + self.mainwindow.chatlog.log(self.channel, msg) + if modes.find("i") >= 0: + self.chanInvite.setChecked(True) + if op: + msg = chum.memomodemsg(opchum, opgrammar, systemColor, "Invite-Only", True) + self.textArea.append(convertTags(msg)) + self.mainwindow.chatlog.log(self.channel, msg) + if modes.find("m") >= 0: + self.chanMod.setChecked(True) + if op: + msg = chum.memomodemsg(opchum, opgrammar, systemColor, "Mute", True) + self.textArea.append(convertTags(msg)) + self.mainwindow.chatlog.log(self.channel, msg) elif modes[0] == "-": for i in modes[1:]: try: chanmodes.remove(i) except ValueError: pass - if modes.find("s") >= 0: self.chanHide.setChecked(False) - if modes.find("i") >= 0: self.chanInvite.setChecked(False) - if modes.find("m") >= 0: self.chanMod.setChecked(False) + if modes.find("s") >= 0: + self.chanHide.setChecked(False) + if op: + msg = chum.memomodemsg(opchum, opgrammar, systemColor, "Secret", False) + self.textArea.append(convertTags(msg)) + self.mainwindow.chatlog.log(self.channel, msg) + if modes.find("i") >= 0: + self.chanInvite.setChecked(False) + if op: + msg = chum.memomodemsg(opchum, opgrammar, systemColor, "Invite-Only", False) + self.textArea.append(convertTags(msg)) + self.mainwindow.chatlog.log(self.channel, msg) + if modes.find("m") >= 0: + self.chanMod.setChecked(False) + if op: + msg = chum.memomodemsg(opchum, opgrammar, systemColor, "Mute", False) + self.textArea.append(convertTags(msg)) + self.mainwindow.chatlog.log(self.channel, msg) chanmodes.sort() self.modes = "+" + "".join(chanmodes) if self.mainwindow.advanced: @@ -732,7 +772,7 @@ class PesterMemo(PesterConvo): def modesUpdated(self, channel, modes): c = unicode(channel) if c == self.channel: - self.updateChanModes(modes) + self.updateChanModes(modes, None) @QtCore.pyqtSlot(QtCore.QString) def closeInviteOnly(self, channel): @@ -999,7 +1039,7 @@ class PesterMemo(PesterConvo): c.setIcon(icon) self.sortUsers() elif c == self.channel and h == "" and update[0] in ["+","-"]: - self.updateChanModes(update) + self.updateChanModes(update, op) @QtCore.pyqtSlot() def addChumSlot(self): diff --git a/pesterchum.py b/pesterchum.py index 5750410..fac8c09 100644 --- a/pesterchum.py +++ b/pesterchum.py @@ -2203,6 +2203,9 @@ class PesterWindow(MovingWindow): @QtCore.pyqtSlot(QtCore.QString, QtCore.QString) def cannotSendToChan(self, channel, msg): self.deliverMemo(channel, "ChanServ", msg) + @QtCore.pyqtSlot(QtCore.QString, QtCore.QString) + def modesUpdated(self, channel, modes): + self.modesUpdated.emit(channel, modes) @QtCore.pyqtSlot(QtCore.QString, QtCore.QString, QtCore.QString) def timeCommand(self, chan, handle, command): (c, h, cmd) = (unicode(chan), unicode(handle), unicode(command))