Auto-join memos
This commit is contained in:
parent
f63d224c66
commit
1a2ddcf553
5 changed files with 64 additions and 0 deletions
|
@ -25,6 +25,7 @@ CHANGELOG
|
||||||
* Lua quirks
|
* Lua quirks
|
||||||
* Multi-select memo chooser - [alGore]
|
* Multi-select memo chooser - [alGore]
|
||||||
* Auto-identify with NickServ - Kiooeht [evacipatedBox]
|
* Auto-identify with NickServ - Kiooeht [evacipatedBox]
|
||||||
|
* Auto-join memos - Kiooeht [evacipatedBox]
|
||||||
* Bug fixes
|
* Bug fixes
|
||||||
* Don't require pygame (it's kind of optional, you just don't get sound) - Kiooeht [evacipatedBox]
|
* Don't require pygame (it's kind of optional, you just don't get sound) - Kiooeht [evacipatedBox]
|
||||||
* Allow add chum dialog to open after adding an existing chum - Kiooeht [evacipatedBox]
|
* Allow add chum dialog to open after adding an existing chum - Kiooeht [evacipatedBox]
|
||||||
|
|
2
irc.py
2
irc.py
|
@ -177,6 +177,8 @@ class PesterIRC(QtCore.QThread):
|
||||||
self.setConnectionBroken()
|
self.setConnectionBroken()
|
||||||
self.mainwindow.closeConversations(True)
|
self.mainwindow.closeConversations(True)
|
||||||
self.mainwindow.doAutoIdentify()
|
self.mainwindow.doAutoIdentify()
|
||||||
|
self.mainwindow.autoJoinDone = False
|
||||||
|
self.mainwindow.doAutoJoins()
|
||||||
self.updateMood()
|
self.updateMood()
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def updateMood(self):
|
def updateMood(self):
|
||||||
|
|
37
menus.py
37
menus.py
|
@ -1029,6 +1029,15 @@ class PesterOptions(QtGui.QDialog):
|
||||||
self.nickservpass.setEchoMode(QtGui.QLineEdit.PasswordEchoOnEdit)
|
self.nickservpass.setEchoMode(QtGui.QLineEdit.PasswordEchoOnEdit)
|
||||||
self.nickservpass.setText(parent.userprofile.getNickServPass())
|
self.nickservpass.setText(parent.userprofile.getNickServPass())
|
||||||
|
|
||||||
|
self.autojoinlist = QtGui.QListWidget(self)
|
||||||
|
self.autojoinlist.addItems(parent.userprofile.getAutoJoins())
|
||||||
|
self.addAutoJoinBtn = QtGui.QPushButton("Add", self)
|
||||||
|
self.connect(self.addAutoJoinBtn, QtCore.SIGNAL('clicked()'),
|
||||||
|
self, QtCore.SLOT('addAutoJoin()'))
|
||||||
|
self.delAutoJoinBtn = QtGui.QPushButton("Remove", self)
|
||||||
|
self.connect(self.delAutoJoinBtn, QtCore.SIGNAL('clicked()'),
|
||||||
|
self, QtCore.SLOT('delAutoJoin()'))
|
||||||
|
|
||||||
self.tabcheck = QtGui.QCheckBox("Tabbed Conversations", self)
|
self.tabcheck = QtGui.QCheckBox("Tabbed Conversations", self)
|
||||||
if self.config.tabs():
|
if self.config.tabs():
|
||||||
self.tabcheck.setChecked(True)
|
self.tabcheck.setChecked(True)
|
||||||
|
@ -1383,6 +1392,12 @@ class PesterOptions(QtGui.QDialog):
|
||||||
layout_indent.addWidget(self.nickservpass)
|
layout_indent.addWidget(self.nickservpass)
|
||||||
layout_indent.setContentsMargins(22,0,0,0)
|
layout_indent.setContentsMargins(22,0,0,0)
|
||||||
layout_connect.addLayout(layout_indent)
|
layout_connect.addLayout(layout_indent)
|
||||||
|
layout_connect.addWidget(QtGui.QLabel("Auto-Join Memos:"))
|
||||||
|
layout_connect.addWidget(self.autojoinlist)
|
||||||
|
layout_8 = QtGui.QHBoxLayout()
|
||||||
|
layout_8.addWidget(self.addAutoJoinBtn)
|
||||||
|
layout_8.addWidget(self.delAutoJoinBtn)
|
||||||
|
layout_connect.addLayout(layout_8)
|
||||||
self.pages.addWidget(widget)
|
self.pages.addWidget(widget)
|
||||||
|
|
||||||
# Advanced
|
# Advanced
|
||||||
|
@ -1435,6 +1450,28 @@ class PesterOptions(QtGui.QDialog):
|
||||||
def autoNickServChange(self, state):
|
def autoNickServChange(self, state):
|
||||||
self.nickservpass.setEnabled(state != 0)
|
self.nickservpass.setEnabled(state != 0)
|
||||||
|
|
||||||
|
@QtCore.pyqtSlot()
|
||||||
|
def addAutoJoin(self, mitem=None):
|
||||||
|
d = {"label": "Memo:", "inputname": "value" }
|
||||||
|
if mitem is not None:
|
||||||
|
d["value"] = str(mitem.text())
|
||||||
|
pdict = MultiTextDialog("ENTER MEMO", self, d).getText()
|
||||||
|
if pdict is None:
|
||||||
|
return
|
||||||
|
pdict["value"] = "#" + pdict["value"]
|
||||||
|
if mitem is None:
|
||||||
|
items = self.autojoinlist.findItems(pdict["value"], QtCore.Qt.MatchFixedString)
|
||||||
|
if len(items) == 0:
|
||||||
|
self.autojoinlist.addItem(pdict["value"])
|
||||||
|
else:
|
||||||
|
mitem.setText(pdict["value"])
|
||||||
|
|
||||||
|
@QtCore.pyqtSlot()
|
||||||
|
def delAutoJoin(self):
|
||||||
|
i = self.autojoinlist.currentRow()
|
||||||
|
if i >= 0:
|
||||||
|
self.autojoinlist.takeItem(i)
|
||||||
|
|
||||||
@QtCore.pyqtSlot(int)
|
@QtCore.pyqtSlot(int)
|
||||||
def soundChange(self, state):
|
def soundChange(self, state):
|
||||||
if state == 0:
|
if state == 0:
|
||||||
|
|
|
@ -990,6 +990,7 @@ class PesterWindow(MovingWindow):
|
||||||
MovingWindow.__init__(self, parent,
|
MovingWindow.__init__(self, parent,
|
||||||
(QtCore.Qt.CustomizeWindowHint |
|
(QtCore.Qt.CustomizeWindowHint |
|
||||||
QtCore.Qt.FramelessWindowHint))
|
QtCore.Qt.FramelessWindowHint))
|
||||||
|
self.autoJoinDone = False
|
||||||
self.app = app
|
self.app = app
|
||||||
self.convos = CaseInsensitiveDict()
|
self.convos = CaseInsensitiveDict()
|
||||||
self.memos = CaseInsensitiveDict()
|
self.memos = CaseInsensitiveDict()
|
||||||
|
@ -1714,6 +1715,12 @@ class PesterWindow(MovingWindow):
|
||||||
if self.userprofile.getAutoIdentify():
|
if self.userprofile.getAutoIdentify():
|
||||||
self.sendMessage.emit("identify " + self.userprofile.getNickServPass(), "NickServ")
|
self.sendMessage.emit("identify " + self.userprofile.getNickServPass(), "NickServ")
|
||||||
|
|
||||||
|
def doAutoJoins(self):
|
||||||
|
if not self.autoJoinDone:
|
||||||
|
self.autoJoinDone = True
|
||||||
|
for memo in self.userprofile.getAutoJoins():
|
||||||
|
self.newMemo(memo, "i")
|
||||||
|
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def connected(self):
|
def connected(self):
|
||||||
if self.loadingscreen:
|
if self.loadingscreen:
|
||||||
|
@ -1721,6 +1728,7 @@ class PesterWindow(MovingWindow):
|
||||||
self.loadingscreen = None
|
self.loadingscreen = None
|
||||||
|
|
||||||
self.doAutoIdentify()
|
self.doAutoIdentify()
|
||||||
|
self.doAutoJoins()
|
||||||
|
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def blockSelectedChum(self):
|
def blockSelectedChum(self):
|
||||||
|
@ -2467,6 +2475,11 @@ class PesterWindow(MovingWindow):
|
||||||
nickservpass = self.optionmenu.nickservpass.text()
|
nickservpass = self.optionmenu.nickservpass.text()
|
||||||
self.userprofile.setAutoIdentify(autoidentify)
|
self.userprofile.setAutoIdentify(autoidentify)
|
||||||
self.userprofile.setNickServPass(str(nickservpass))
|
self.userprofile.setNickServPass(str(nickservpass))
|
||||||
|
# auto join memos
|
||||||
|
autojoins = []
|
||||||
|
for i in range(self.optionmenu.autojoinlist.count()):
|
||||||
|
autojoins.append(str(self.optionmenu.autojoinlist.item(i).text()))
|
||||||
|
self.userprofile.setAutoJoins(autojoins)
|
||||||
# advanced
|
# advanced
|
||||||
## user mode
|
## user mode
|
||||||
if self.advanced:
|
if self.advanced:
|
||||||
|
@ -2643,6 +2656,7 @@ class PesterWindow(MovingWindow):
|
||||||
def myHandleChanged(self, handle):
|
def myHandleChanged(self, handle):
|
||||||
if self.profile().handle == handle:
|
if self.profile().handle == handle:
|
||||||
self.doAutoIdentify()
|
self.doAutoIdentify()
|
||||||
|
self.doAutoJoins()
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
self.nickCollision(self.profile().handle, handle)
|
self.nickCollision(self.profile().handle, handle)
|
||||||
|
|
10
profile.py
10
profile.py
|
@ -370,6 +370,7 @@ class userProfile(object):
|
||||||
self.mentions = [r"\b(%s)\b" % ("|".join(initials))]
|
self.mentions = [r"\b(%s)\b" % ("|".join(initials))]
|
||||||
else:
|
else:
|
||||||
self.mentions = []
|
self.mentions = []
|
||||||
|
self.autojoins = []
|
||||||
else:
|
else:
|
||||||
fp = open("%s/%s.js" % (self.profiledir, user))
|
fp = open("%s/%s.js" % (self.profiledir, user))
|
||||||
self.userprofile = json.load(fp)
|
self.userprofile = json.load(fp)
|
||||||
|
@ -394,6 +395,9 @@ class userProfile(object):
|
||||||
else:
|
else:
|
||||||
self.userprofile["mentions"] = []
|
self.userprofile["mentions"] = []
|
||||||
self.mentions = self.userprofile["mentions"]
|
self.mentions = self.userprofile["mentions"]
|
||||||
|
if "autojoins" not in self.userprofile:
|
||||||
|
self.userprofile["autojoins"] = []
|
||||||
|
self.autojoins = self.userprofile["autojoins"]
|
||||||
|
|
||||||
with open(_datadir+"passwd.js") as fp:
|
with open(_datadir+"passwd.js") as fp:
|
||||||
try:
|
try:
|
||||||
|
@ -462,6 +466,12 @@ class userProfile(object):
|
||||||
self.passwd[self.chat.handle] = {}
|
self.passwd[self.chat.handle] = {}
|
||||||
self.passwd[self.chat.handle]["pw"] = pw
|
self.passwd[self.chat.handle]["pw"] = pw
|
||||||
self.saveNickServPass()
|
self.saveNickServPass()
|
||||||
|
def getAutoJoins(self):
|
||||||
|
return self.autojoins
|
||||||
|
def setAutoJoins(self, autojoins):
|
||||||
|
self.autojoins = autojoins
|
||||||
|
self.userprofile["autojoins"] = self.autojoins
|
||||||
|
self.save()
|
||||||
def save(self):
|
def save(self):
|
||||||
handle = self.chat.handle
|
handle = self.chat.handle
|
||||||
if handle[0:12] == "pesterClient":
|
if handle[0:12] == "pesterClient":
|
||||||
|
|
Loading…
Reference in a new issue