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))