mood buttons!
This commit is contained in:
parent
c07bb7b17f
commit
99175a9f6d
11 changed files with 294 additions and 46 deletions
8
TODO
8
TODO
|
@ -1,9 +1,4 @@
|
||||||
Features:
|
Features:
|
||||||
* Handle user signoffs/signons
|
|
||||||
* Handle nick changes
|
|
||||||
* theme elements define, implement
|
|
||||||
* default user
|
|
||||||
* Moods
|
|
||||||
* Add chum
|
* Add chum
|
||||||
* REMOVE chum
|
* REMOVE chum
|
||||||
* Sounds
|
* Sounds
|
||||||
|
@ -12,10 +7,13 @@ Features:
|
||||||
* menubar should pass on mouse move
|
* menubar should pass on mouse move
|
||||||
* Quirks
|
* Quirks
|
||||||
-- package
|
-- package
|
||||||
|
* theme elements define, implement
|
||||||
|
* User signon?
|
||||||
* Logging
|
* Logging
|
||||||
* Block list
|
* Block list
|
||||||
* User list/add from list
|
* User list/add from list
|
||||||
* User commands/stop user from sending commands accidentally
|
* User commands/stop user from sending commands accidentally
|
||||||
|
-- release alpha
|
||||||
* System tray stuff
|
* System tray stuff
|
||||||
* Chat rooms
|
* Chat rooms
|
||||||
-- release beta
|
-- release beta
|
||||||
|
|
Binary file not shown.
BIN
oyoyo/client.pyc
BIN
oyoyo/client.pyc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
oyoyo/parse.pyc
BIN
oyoyo/parse.pyc
Binary file not shown.
150
pesterchum.py
150
pesterchum.py
|
@ -13,7 +13,9 @@ from PyQt4 import QtGui, QtCore
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
|
||||||
class Mood(object):
|
class Mood(object):
|
||||||
moods = ["chummy", "rancorous", "offline"]
|
moods = ["chummy", "rancorous", "offline", "pleasant", "distraught",
|
||||||
|
"unruly", "smooth", "ecstatic", "relaxed", "discontent",
|
||||||
|
"devious", "sleek", "detestful"]
|
||||||
def __init__(self, mood):
|
def __init__(self, mood):
|
||||||
if type(mood) is int:
|
if type(mood) is int:
|
||||||
self.mood = mood
|
self.mood = mood
|
||||||
|
@ -124,16 +126,19 @@ class userProfile(object):
|
||||||
"quirks": [],
|
"quirks": [],
|
||||||
"theme": "pesterchum"}
|
"theme": "pesterchum"}
|
||||||
self.theme = pesterTheme("pesterchum")
|
self.theme = pesterTheme("pesterchum")
|
||||||
|
self.chat.mood = Mood(self.theme["main/defaultmood"])
|
||||||
self.quirks = pesterQuirks([])
|
self.quirks = pesterQuirks([])
|
||||||
else:
|
else:
|
||||||
fp = open("profiles/%s.js" % (user))
|
fp = open("profiles/%s.js" % (user))
|
||||||
self.userprofile = json.load(fp)
|
self.userprofile = json.load(fp)
|
||||||
fp.close()
|
fp.close()
|
||||||
|
self.theme = pesterTheme(self.userprofile["theme"])
|
||||||
self.chat = PesterProfile(self.userprofile["handle"],
|
self.chat = PesterProfile(self.userprofile["handle"],
|
||||||
QtGui.QColor(self.userprofile["color"]),
|
QtGui.QColor(self.userprofile["color"]),
|
||||||
Mood(0))
|
Mood(self.theme["main/defaultmood"]))
|
||||||
self.theme = pesterTheme(self.userprofile["theme"])
|
|
||||||
self.quirks = pesterQuirks(self.userprofile["quirks"])
|
self.quirks = pesterQuirks(self.userprofile["quirks"])
|
||||||
|
def setMood(self, mood):
|
||||||
|
self.chat.mood = mood
|
||||||
def setTheme(self, theme):
|
def setTheme(self, theme):
|
||||||
self.theme = theme
|
self.theme = theme
|
||||||
self.userprofile["theme"] = theme.name
|
self.userprofile["theme"] = theme.name
|
||||||
|
@ -240,6 +245,12 @@ class PesterChooseProfile(QtGui.QDialog):
|
||||||
else:
|
else:
|
||||||
self.profileBox = None
|
self.profileBox = None
|
||||||
|
|
||||||
|
self.defaultcheck = QtGui.QCheckBox(self)
|
||||||
|
self.defaultlabel = QtGui.QLabel("Set This Profile As Default", self)
|
||||||
|
layout_2 = QtGui.QHBoxLayout()
|
||||||
|
layout_2.addWidget(self.defaultlabel)
|
||||||
|
layout_2.addWidget(self.defaultcheck)
|
||||||
|
|
||||||
self.ok = QtGui.QPushButton("OK", self)
|
self.ok = QtGui.QPushButton("OK", self)
|
||||||
self.ok.setDefault(True)
|
self.ok.setDefault(True)
|
||||||
self.connect(self.ok, QtCore.SIGNAL('clicked()'),
|
self.connect(self.ok, QtCore.SIGNAL('clicked()'),
|
||||||
|
@ -261,6 +272,7 @@ class PesterChooseProfile(QtGui.QDialog):
|
||||||
layout_0.addWidget(profileLabel)
|
layout_0.addWidget(profileLabel)
|
||||||
layout_0.addWidget(self.profileBox)
|
layout_0.addWidget(self.profileBox)
|
||||||
layout_0.addLayout(layout_ok)
|
layout_0.addLayout(layout_ok)
|
||||||
|
layout_0.addLayout(layout_2)
|
||||||
self.errorMsg = QtGui.QLabel(self)
|
self.errorMsg = QtGui.QLabel(self)
|
||||||
self.errorMsg.setStyleSheet("color:red;")
|
self.errorMsg.setStyleSheet("color:red;")
|
||||||
layout_0.addWidget(self.errorMsg)
|
layout_0.addWidget(self.errorMsg)
|
||||||
|
@ -387,6 +399,59 @@ class chumArea(QtGui.QListWidget):
|
||||||
for c in chums:
|
for c in chums:
|
||||||
c.changeTheme(theme)
|
c.changeTheme(theme)
|
||||||
|
|
||||||
|
class PesterMoodHandler(QtCore.QObject):
|
||||||
|
def __init__(self, parent, *buttons):
|
||||||
|
QtCore.QObject.__init__(self)
|
||||||
|
self.buttons = {}
|
||||||
|
self.mainwindow = parent
|
||||||
|
for b in buttons:
|
||||||
|
self.buttons[b.mood.value()] = b
|
||||||
|
if b.mood.value() == self.mainwindow.profile().mood.value():
|
||||||
|
b.setSelected(True)
|
||||||
|
self.connect(b, QtCore.SIGNAL('clicked()'),
|
||||||
|
b, QtCore.SLOT('updateMood()'))
|
||||||
|
self.connect(b, QtCore.SIGNAL('moodUpdated(int)'),
|
||||||
|
self, QtCore.SLOT('updateMood(int)'))
|
||||||
|
def removeButtons(self):
|
||||||
|
for b in self.buttons.values():
|
||||||
|
b.close()
|
||||||
|
def showButtons(self):
|
||||||
|
for b in self.buttons.values():
|
||||||
|
b.show()
|
||||||
|
b.raise_()
|
||||||
|
@QtCore.pyqtSlot(int)
|
||||||
|
def updateMood(self, m):
|
||||||
|
oldmood = self.mainwindow.profile().mood
|
||||||
|
oldbutton = self.buttons[oldmood.value()]
|
||||||
|
newbutton = self.buttons[m]
|
||||||
|
oldbutton.setSelected(False)
|
||||||
|
newbutton.setSelected(True)
|
||||||
|
newmood = Mood(m)
|
||||||
|
self.mainwindow.userprofile.chat.mood = newmood
|
||||||
|
self.mainwindow.moodUpdated.emit()
|
||||||
|
|
||||||
|
class PesterMoodButton(QtGui.QPushButton):
|
||||||
|
def __init__(self, parent, **options):
|
||||||
|
icon = QtGui.QIcon(options["icon"])
|
||||||
|
QtGui.QPushButton.__init__(self, icon, options["text"], parent)
|
||||||
|
self.setFlat(True)
|
||||||
|
self.resize(*options["size"])
|
||||||
|
self.move(*options["loc"])
|
||||||
|
self.unselectedSheet = options["style"]
|
||||||
|
self.selectedSheet = options["selected"]
|
||||||
|
self.setStyleSheet(self.unselectedSheet)
|
||||||
|
self.mainwindow = parent
|
||||||
|
self.mood = Mood(options["mood"])
|
||||||
|
def setSelected(self, selected):
|
||||||
|
if selected:
|
||||||
|
self.setStyleSheet(self.selectedSheet)
|
||||||
|
else:
|
||||||
|
self.setStyleSheet(self.unselectedSheet)
|
||||||
|
@QtCore.pyqtSlot()
|
||||||
|
def updateMood(self):
|
||||||
|
self.moodUpdated.emit(self.mood.value())
|
||||||
|
moodUpdated = QtCore.pyqtSignal(int)
|
||||||
|
|
||||||
class MovingWindow(QtGui.QFrame):
|
class MovingWindow(QtGui.QFrame):
|
||||||
def __init__(self, *x, **y):
|
def __init__(self, *x, **y):
|
||||||
QtGui.QFrame.__init__(self, *x, **y)
|
QtGui.QFrame.__init__(self, *x, **y)
|
||||||
|
@ -528,19 +593,19 @@ class PesterText(QtGui.QTextEdit):
|
||||||
parent = self.parent()
|
parent = self.parent()
|
||||||
parent.setChumOpen(True)
|
parent.setChumOpen(True)
|
||||||
window = parent.mainwindow
|
window = parent.mainwindow
|
||||||
me = window.profile
|
me = window.profile()
|
||||||
msg = chum.beganpestermsg(me)
|
msg = chum.beganpestermsg(me)
|
||||||
self.append(msg)
|
self.append(msg)
|
||||||
elif msg == "PESTERCHUM:CEASE":
|
elif msg == "PESTERCHUM:CEASE":
|
||||||
parent = self.parent()
|
parent = self.parent()
|
||||||
parent.setChumOpen(False)
|
parent.setChumOpen(False)
|
||||||
window = parent.mainwindow
|
window = parent.mainwindow
|
||||||
me = window.profile
|
me = window.profile()
|
||||||
msg = chum.ceasedpestermsg(me)
|
msg = chum.ceasedpestermsg(me)
|
||||||
self.append(msg)
|
self.append(msg)
|
||||||
else:
|
else:
|
||||||
if not self.parent().chumopen and chum is not self.parent().mainwindow.profile:
|
if not self.parent().chumopen and chum is not self.parent().mainwindow.profile():
|
||||||
me = self.parent().mainwindow.profile
|
me = self.parent().mainwindow.profile()
|
||||||
beginmsg = chum.beganpestermsg(me)
|
beginmsg = chum.beganpestermsg(me)
|
||||||
self.parent().setChumOpen(True)
|
self.parent().setChumOpen(True)
|
||||||
self.append(beginmsg)
|
self.append(beginmsg)
|
||||||
|
@ -591,10 +656,14 @@ class PesterConvo(QtGui.QFrame):
|
||||||
if parent:
|
if parent:
|
||||||
parent.addChat(self)
|
parent.addChat(self)
|
||||||
if initiated:
|
if initiated:
|
||||||
msg = self.mainwindow.profile.beganpestermsg(self.chum)
|
msg = self.mainwindow.profile().beganpestermsg(self.chum)
|
||||||
self.textArea.append(msg)
|
self.textArea.append(msg)
|
||||||
|
|
||||||
def updateMood(self, mood):
|
def updateMood(self, mood):
|
||||||
|
if mood.name() == "offline":
|
||||||
|
msg = self.mainwindow.profile().ceasepestermsg(self.chum)
|
||||||
|
self.textArea.append(msg)
|
||||||
|
self.chumopen = False
|
||||||
if self.parent():
|
if self.parent():
|
||||||
self.parent().updateMood(self.chum.handle, mood)
|
self.parent().updateMood(self.chum.handle, mood)
|
||||||
else:
|
else:
|
||||||
|
@ -604,7 +673,7 @@ class PesterConvo(QtGui.QFrame):
|
||||||
self.chum.color = color
|
self.chum.color = color
|
||||||
def addMessage(self, text, me=True):
|
def addMessage(self, text, me=True):
|
||||||
if me:
|
if me:
|
||||||
chum = self.mainwindow.profile
|
chum = self.mainwindow.profile()
|
||||||
else:
|
else:
|
||||||
chum = self.chum
|
chum = self.chum
|
||||||
self.textArea.addMessage(text, chum)
|
self.textArea.addMessage(text, chum)
|
||||||
|
@ -652,11 +721,9 @@ class PesterWindow(MovingWindow):
|
||||||
self.config = userConfig()
|
self.config = userConfig()
|
||||||
if self.config.defaultprofile():
|
if self.config.defaultprofile():
|
||||||
self.userprofile = userProfile(self.config.defaultprofile())
|
self.userprofile = userProfile(self.config.defaultprofile())
|
||||||
self.profile = self.userprofile.chat
|
|
||||||
self.theme = self.userprofile.getTheme()
|
self.theme = self.userprofile.getTheme()
|
||||||
else:
|
else:
|
||||||
self.userprofile = userProfile(PesterProfile("pesterClient%d" % (random.randint(100,999)), QtGui.QColor("black"), Mood(0)))
|
self.userprofile = userProfile(PesterProfile("pesterClient%d" % (random.randint(100,999)), QtGui.QColor("black"), Mood(0)))
|
||||||
self.profile = self.userprofile.chat
|
|
||||||
self.theme = self.userprofile.getTheme()
|
self.theme = self.userprofile.getTheme()
|
||||||
self.changeProfile()
|
self.changeProfile()
|
||||||
|
|
||||||
|
@ -705,9 +772,13 @@ class PesterWindow(MovingWindow):
|
||||||
self.connect(self.chumList, QtCore.SIGNAL('itemDoubleClicked(QListWidgetItem *)'),
|
self.connect(self.chumList, QtCore.SIGNAL('itemDoubleClicked(QListWidgetItem *)'),
|
||||||
self, QtCore.SLOT('newConversationWindow(QListWidgetItem *)'))
|
self, QtCore.SLOT('newConversationWindow(QListWidgetItem *)'))
|
||||||
|
|
||||||
|
self.moods = PesterMoodHandler(self, *[PesterMoodButton(self, **d) for d in self.theme["main/moods"]])
|
||||||
|
|
||||||
self.convos = {}
|
self.convos = {}
|
||||||
self.tabconvo = None
|
self.tabconvo = None
|
||||||
self.optionmenu = None
|
self.optionmenu = None
|
||||||
|
def profile(self):
|
||||||
|
return self.userprofile.chat
|
||||||
def mainSS(self):
|
def mainSS(self):
|
||||||
self.setStyleSheet("QFrame#main { "+self.theme["main/style"]+" }")
|
self.setStyleSheet("QFrame#main { "+self.theme["main/style"]+" }")
|
||||||
def menuBarSS(self):
|
def menuBarSS(self):
|
||||||
|
@ -792,6 +863,10 @@ class PesterWindow(MovingWindow):
|
||||||
self.miniButton.move(*self.theme["main/minimize/loc"])
|
self.miniButton.move(*self.theme["main/minimize/loc"])
|
||||||
# chum area
|
# chum area
|
||||||
self.chumList.changeTheme(theme)
|
self.chumList.changeTheme(theme)
|
||||||
|
# moods
|
||||||
|
self.moods.removeButtons()
|
||||||
|
self.moods = PesterMoodHandler(self, *[PesterMoodButton(self, **d) for d in self.theme["main/moods"]])
|
||||||
|
self.moods.showButtons()
|
||||||
# do open windows
|
# do open windows
|
||||||
if self.tabconvo:
|
if self.tabconvo:
|
||||||
self.tabconvo.changeTheme(theme)
|
self.tabconvo.changeTheme(theme)
|
||||||
|
@ -811,7 +886,7 @@ class PesterWindow(MovingWindow):
|
||||||
def tabsClosed(self):
|
def tabsClosed(self):
|
||||||
del self.tabconvo
|
del self.tabconvo
|
||||||
self.tabconvo = None
|
self.tabconvo = None
|
||||||
|
|
||||||
@QtCore.pyqtSlot(QtCore.QString, Mood)
|
@QtCore.pyqtSlot(QtCore.QString, Mood)
|
||||||
def updateMoodSlot(self, handle, mood):
|
def updateMoodSlot(self, handle, mood):
|
||||||
h = str(handle)
|
h = str(handle)
|
||||||
|
@ -889,16 +964,21 @@ class PesterWindow(MovingWindow):
|
||||||
if self.chooseprofile.profileBox and \
|
if self.chooseprofile.profileBox and \
|
||||||
self.chooseprofile.profileBox.currentIndex() > 0:
|
self.chooseprofile.profileBox.currentIndex() > 0:
|
||||||
handle = unicode(self.chooseprofile.profileBox.currentText())
|
handle = unicode(self.chooseprofile.profileBox.currentText())
|
||||||
|
if handle == self.profile().handle:
|
||||||
|
return
|
||||||
self.userprofile = userProfile(handle)
|
self.userprofile = userProfile(handle)
|
||||||
self.profile = self.userprofile.chat
|
|
||||||
self.changeTheme(self.userprofile.getTheme())
|
self.changeTheme(self.userprofile.getTheme())
|
||||||
else:
|
else:
|
||||||
profile = PesterProfile(unicode(self.chooseprofile.chumHandle.text()),
|
handle = unicode(self.chooseprofile.chumHandle.text())
|
||||||
self.chooseprofile.chumcolor,
|
if handle == self.profile().handle:
|
||||||
Mood(0))
|
return
|
||||||
|
profile = PesterProfile(handle,
|
||||||
|
self.chooseprofile.chumcolor)
|
||||||
self.userprofile = userProfile.newUserProfile(profile)
|
self.userprofile = userProfile.newUserProfile(profile)
|
||||||
self.profile = self.userprofile.chat
|
|
||||||
|
|
||||||
|
# is default?
|
||||||
|
if self.chooseprofile.defaultcheck.isChecked():
|
||||||
|
self.config.set("defaultprofile", self.userprofile.chat.handle)
|
||||||
# this may have to be fixed
|
# this may have to be fixed
|
||||||
self.closeConversations()
|
self.closeConversations()
|
||||||
self.profileChanged.emit()
|
self.profileChanged.emit()
|
||||||
|
@ -935,13 +1015,14 @@ class PesterWindow(MovingWindow):
|
||||||
convoClosed = QtCore.pyqtSignal(QtCore.QString)
|
convoClosed = QtCore.pyqtSignal(QtCore.QString)
|
||||||
profileChanged = QtCore.pyqtSignal()
|
profileChanged = QtCore.pyqtSignal()
|
||||||
moodRequest = QtCore.pyqtSignal(PesterProfile)
|
moodRequest = QtCore.pyqtSignal(PesterProfile)
|
||||||
|
moodUpdated = QtCore.pyqtSignal()
|
||||||
|
|
||||||
class PesterIRC(QtCore.QObject):
|
class PesterIRC(QtCore.QObject):
|
||||||
def __init__(self, window):
|
def __init__(self, window):
|
||||||
QtCore.QObject.__init__(self)
|
QtCore.QObject.__init__(self)
|
||||||
self.mainwindow = window
|
self.mainwindow = window
|
||||||
def IRCConnect(self):
|
def IRCConnect(self):
|
||||||
self.cli = IRCClient(PesterHandler, host="irc.tymoon.eu", port=6667, nick=self.mainwindow.profile.handle, blocking=True)
|
self.cli = IRCClient(PesterHandler, host="irc.tymoon.eu", port=6667, nick=self.mainwindow.profile().handle, blocking=True)
|
||||||
self.cli.command_handler.parent = self
|
self.cli.command_handler.parent = self
|
||||||
self.cli.command_handler.mainwindow = self.mainwindow
|
self.cli.command_handler.mainwindow = self.mainwindow
|
||||||
self.conn = self.cli.connect()
|
self.conn = self.cli.connect()
|
||||||
|
@ -960,16 +1041,20 @@ class PesterIRC(QtCore.QObject):
|
||||||
h = str(handle)
|
h = str(handle)
|
||||||
if initiated:
|
if initiated:
|
||||||
helpers.msg(self.cli, h, "PESTERCHUM:BEGIN")
|
helpers.msg(self.cli, h, "PESTERCHUM:BEGIN")
|
||||||
helpers.msg(self.cli, h, "COLOR >%s" % (self.mainwindow.profile.colorcmd()))
|
helpers.msg(self.cli, h, "COLOR >%s" % (self.mainwindow.profile().colorcmd()))
|
||||||
@QtCore.pyqtSlot(QtCore.QString)
|
@QtCore.pyqtSlot(QtCore.QString)
|
||||||
def endConvo(self, handle):
|
def endConvo(self, handle):
|
||||||
h = str(handle)
|
h = str(handle)
|
||||||
helpers.msg(self.cli, h, "PESTERCHUM:CEASE")
|
helpers.msg(self.cli, h, "PESTERCHUM:CEASE")
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def updateProfile(self):
|
def updateProfile(self):
|
||||||
me = self.mainwindow.profile
|
me = self.mainwindow.profile()
|
||||||
handle = me.handle
|
handle = me.handle
|
||||||
helpers.nick(self.cli, handle)
|
helpers.nick(self.cli, handle)
|
||||||
|
self.updateMood()
|
||||||
|
@QtCore.pyqtSlot()
|
||||||
|
def updateMood(self):
|
||||||
|
me = self.mainwindow.profile()
|
||||||
helpers.msg(self.cli, "#pesterchum", "MOOD >%d" % (me.mood.value()))
|
helpers.msg(self.cli, "#pesterchum", "MOOD >%d" % (me.mood.value()))
|
||||||
def updateIRC(self):
|
def updateIRC(self):
|
||||||
self.conn.next()
|
self.conn.next()
|
||||||
|
@ -995,8 +1080,8 @@ class PesterHandler(DefaultCommandHandler):
|
||||||
mood = Mood(0)
|
mood = Mood(0)
|
||||||
self.parent.moodUpdated.emit(handle, mood)
|
self.parent.moodUpdated.emit(handle, mood)
|
||||||
elif msg[0:7] == "GETMOOD":
|
elif msg[0:7] == "GETMOOD":
|
||||||
mychumhandle = self.mainwindow.profile.handle
|
mychumhandle = self.mainwindow.profile().handle
|
||||||
mymood = self.mainwindow.profile.mood.value()
|
mymood = self.mainwindow.profile().mood.value()
|
||||||
if msg.find(mychumhandle, 8) != -1:
|
if msg.find(mychumhandle, 8) != -1:
|
||||||
helpers.msg(self.client, "#pesterchum",
|
helpers.msg(self.client, "#pesterchum",
|
||||||
"MOOD >%d" % (mymood))
|
"MOOD >%d" % (mymood))
|
||||||
|
@ -1004,7 +1089,7 @@ class PesterHandler(DefaultCommandHandler):
|
||||||
else:
|
else:
|
||||||
# private message
|
# private message
|
||||||
# silently ignore messages to yourself.
|
# silently ignore messages to yourself.
|
||||||
if handle == self.mainwindow.profile.handle:
|
if handle == self.mainwindow.profile().handle:
|
||||||
return
|
return
|
||||||
if msg[0:7] == "COLOR >":
|
if msg[0:7] == "COLOR >":
|
||||||
colors = msg[7:].split(",")
|
colors = msg[7:].split(",")
|
||||||
|
@ -1020,8 +1105,8 @@ class PesterHandler(DefaultCommandHandler):
|
||||||
|
|
||||||
def welcome(self, server, nick, msg):
|
def welcome(self, server, nick, msg):
|
||||||
helpers.join(self.client, "#pesterchum")
|
helpers.join(self.client, "#pesterchum")
|
||||||
mychumhandle = self.mainwindow.profile.handle
|
mychumhandle = self.mainwindow.profile().handle
|
||||||
mymood = self.mainwindow.profile.mood.value()
|
mymood = self.mainwindow.profile().mood.value()
|
||||||
helpers.msg(self.client, "#pesterchum", "MOOD >%d" % (mymood))
|
helpers.msg(self.client, "#pesterchum", "MOOD >%d" % (mymood))
|
||||||
|
|
||||||
chums = self.mainwindow.chumList.chums
|
chums = self.mainwindow.chumList.chums
|
||||||
|
@ -1030,11 +1115,20 @@ class PesterHandler(DefaultCommandHandler):
|
||||||
def nicknameinuse(self, server, cmd, nick, msg):
|
def nicknameinuse(self, server, cmd, nick, msg):
|
||||||
helpers.nick(self.client, "pesterClient%d" % (random.randint(100,999)))
|
helpers.nick(self.client, "pesterClient%d" % (random.randint(100,999)))
|
||||||
self.parent.nickCollision.emit(nick)
|
self.parent.nickCollision.emit(nick)
|
||||||
|
def quit(self, nick, reason):
|
||||||
|
handle = nick[0:nick.find("!")]
|
||||||
|
self.parent.moodUpdated.emit(handle, Mood("offline"))
|
||||||
|
def nick(self, oldnick, newnick):
|
||||||
|
oldhandle = oldnick[0:oldnick.find("!")]
|
||||||
|
newchum = PesterProfile(newnick)
|
||||||
|
self.parent.moodUpdated.emit(oldhandle, Mood("offline"))
|
||||||
|
self.getMood(newchum)
|
||||||
|
|
||||||
def getMood(self, *chums):
|
def getMood(self, *chums):
|
||||||
chumglub = "GETMOOD "
|
chumglub = "GETMOOD "
|
||||||
for c in chums:
|
for c in chums:
|
||||||
chandle = c.handle
|
chandle = c.handle
|
||||||
if len(chumglub+chandle) >= 510:
|
if len(chumglub+chandle) >= 350:
|
||||||
helpers.msg(self.client, "#pesterchum", chumglub)
|
helpers.msg(self.client, "#pesterchum", chumglub)
|
||||||
chumglub = "GETMOOD "
|
chumglub = "GETMOOD "
|
||||||
chumglub += chandle
|
chumglub += chandle
|
||||||
|
@ -1079,6 +1173,10 @@ def main():
|
||||||
QtCore.SIGNAL('moodRequest(PyQt_PyObject)'),
|
QtCore.SIGNAL('moodRequest(PyQt_PyObject)'),
|
||||||
irc,
|
irc,
|
||||||
QtCore.SLOT('getMood(PyQt_PyObject)'))
|
QtCore.SLOT('getMood(PyQt_PyObject)'))
|
||||||
|
irc.connect(widget,
|
||||||
|
QtCore.SIGNAL('moodUpdated()'),
|
||||||
|
irc,
|
||||||
|
QtCore.SLOT('updateMood()'))
|
||||||
irc.connect(irc,
|
irc.connect(irc,
|
||||||
QtCore.SIGNAL('moodUpdated(QString, PyQt_PyObject)'),
|
QtCore.SIGNAL('moodUpdated(QString, PyQt_PyObject)'),
|
||||||
widget,
|
widget,
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"color": "#00aaff", "theme": "trollian", "quirks": [], "handle": "superGhost"}
|
{"color": "#00aaff", "theme": "pesterchum", "quirks": [], "handle": "superGhost"}
|
|
@ -12,20 +12,96 @@
|
||||||
},
|
},
|
||||||
"chums": { "style": "background-color: black;color: white;font: bold;font-family: 'Courier New';selection-background-color:#919191; ",
|
"chums": { "style": "background-color: black;color: white;font: bold;font-family: 'Courier New';selection-background-color:#919191; ",
|
||||||
"loc": [20, 65],
|
"loc": [20, 65],
|
||||||
"size": [265, 400],
|
"size": [265, 350],
|
||||||
"moods": { "chummy": { "icon": "$path/chummy.gif",
|
"moods": { "chummy": { "icon": "$path/chummy.gif",
|
||||||
"color": "white" },
|
"color": "white" },
|
||||||
"offline": { "icon": "$path/offline.gif",
|
"offline": { "icon": "$path/offline.gif",
|
||||||
"color": "#919191"},
|
"color": "#919191"},
|
||||||
"rancorous": { "icon": "$path/rancorous.gif",
|
"rancorous": { "icon": "$path/rancorous.gif",
|
||||||
"color": "red" }
|
"color": "red" },
|
||||||
|
"detestful": { "icon": "$path/detestful.gif",
|
||||||
|
"color": "red" },
|
||||||
|
"devious": { "icon": "$path/devious.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"discontent": { "icon": "$path/discontent.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"distraught": { "icon": "$path/distraught.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"ecstatic": { "icon": "$path/estatic.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"pleasant": { "icon": "$path/pleasant.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"relaxed": { "icon": "$path/relaxed.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"sleek": { "icon": "$path/sleek.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"smooth": { "icon": "$path/smooth.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"unruly": { "icon": "$path/unruly.gif",
|
||||||
|
"color": "white" }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"defaultwindow": { "style": "background: #fdb302; font-family:'Courier New';font:bold;selection-background-color:#919191; "
|
"defaultwindow": { "style": "background: #fdb302; font-family:'Courier New';font:bold;selection-background-color:#919191; "
|
||||||
},
|
},
|
||||||
"labels": { "mychumhandle": "MYCHUMHANDLE" },
|
"labels": { "mychumhandle": "MYCHUMHANDLE" },
|
||||||
"elements": [
|
"defaultmood": 0,
|
||||||
{ "style": "" }
|
"moods": [
|
||||||
|
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color:#919191;",
|
||||||
|
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [20, 470],
|
||||||
|
"size": [133, 30],
|
||||||
|
"text": "CHUMMY",
|
||||||
|
"icon": "$path/chummy.gif",
|
||||||
|
"mood": 0
|
||||||
|
},
|
||||||
|
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color: #919191",
|
||||||
|
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [20, 497],
|
||||||
|
"size": [133, 30],
|
||||||
|
"text": "PLEASANT",
|
||||||
|
"icon": "$path/pleasant.gif",
|
||||||
|
"mood": 3
|
||||||
|
},
|
||||||
|
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color:#919191;",
|
||||||
|
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [20, 524],
|
||||||
|
"size": [133, 30],
|
||||||
|
"text": "DISTRAUGHT",
|
||||||
|
"icon": "$path/distraught.gif",
|
||||||
|
"mood": 4
|
||||||
|
},
|
||||||
|
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color:#919191;",
|
||||||
|
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [150, 470],
|
||||||
|
"size": [133, 30],
|
||||||
|
"text": "UNRULY",
|
||||||
|
"icon": "$path/unruly.gif",
|
||||||
|
"mood": 5
|
||||||
|
},
|
||||||
|
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color:#919191;",
|
||||||
|
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [150, 497],
|
||||||
|
"size": [133, 30],
|
||||||
|
"text": "SMOOTH",
|
||||||
|
"icon": "$path/smooth.gif",
|
||||||
|
"mood": 6
|
||||||
|
},
|
||||||
|
{ "style": "text-align:left; background: red; border:3px solid black; padding: 5px;",
|
||||||
|
"selected": "text-align:left; background: red; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [150, 524],
|
||||||
|
"size": [133, 30],
|
||||||
|
"text": "RANCOROUS",
|
||||||
|
"icon": "$path/rancorous.gif",
|
||||||
|
"mood": 1
|
||||||
|
},
|
||||||
|
{ "style": "text-align:center; background: #919191; border:3px solid black; padding: 5px;",
|
||||||
|
"selected": "text-align:center; background: #919191; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [20, 551],
|
||||||
|
"size": [263, 30],
|
||||||
|
"text": "ABSCOND",
|
||||||
|
"icon": "$path/offline.gif",
|
||||||
|
"mood": 2
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"convo":
|
"convo":
|
||||||
|
|
|
@ -1,31 +1,107 @@
|
||||||
{"main":
|
{"main":
|
||||||
{"style": "background-image:url($path/tnbg2.png);",
|
{"style": "background-image:url($path/tnbg2.png);",
|
||||||
"size": [300, 620],
|
"size": [300, 620],
|
||||||
"icon": "$path/trayicon3.gif",
|
"icon": "$path/trayicon3.png",
|
||||||
"close": { "image": "$path/x.gif",
|
"close": { "image": "$path/x.gif",
|
||||||
"loc": [255, 0]},
|
"loc": [275, 0]},
|
||||||
"minimize": { "image": "$path/m.gif",
|
"minimize": { "image": "$path/m.gif",
|
||||||
"loc": [225, 0]},
|
"loc": [255, 0]},
|
||||||
"menubar": { "style": "font-family: 'Courier New'; font-weight: bold; font-size: 12px;" },
|
"menubar": { "style": "font-family: 'Courier New'; font-weight: bold; font-size: 12px;" },
|
||||||
"menu" : { "style": "font-family: 'Courier New'; font-weight: bold; font-size: 12px; background-color: #e5000f; border:2px solid #ff0000",
|
"menu" : { "style": "font-family: 'Courier New'; font-weight: bold; font-size: 12px; background-color: #e5000f; border:2px solid #ff0000",
|
||||||
"selected": "background-color: #ff0000"
|
"selected": "background-color: #ff0000"
|
||||||
},
|
},
|
||||||
"chums": { "style": "background-color: white;color: black;font: bold;font-family: 'Courier New';selection-background-color:#ffb6b6; ",
|
"chums": { "style": "background-color: black;color: white;font: bold;font-family: 'Courier New';selection-background-color:#ffb6b6; ",
|
||||||
"loc": [20, 65],
|
"loc": [20, 65],
|
||||||
"size": [265, 450],
|
"size": [266, 350],
|
||||||
"moods": { "chummy": { "icon": "$path/chummy.gif",
|
"moods": { "chummy": { "icon": "$path/chummy.gif",
|
||||||
"color": "black" },
|
"color": "white" },
|
||||||
"offline": { "icon": "$path/offline.gif",
|
"offline": { "icon": "$path/offline.gif",
|
||||||
"color": "#dbdbdb"},
|
"color": "#919191"},
|
||||||
"rancorous": { "icon": "$path/rancorous.gif",
|
"rancorous": { "icon": "$path/rancorous.gif",
|
||||||
"color": "red" }
|
"color": "red" },
|
||||||
|
"detestful": { "icon": "$path/detestful.gif",
|
||||||
|
"color": "red" },
|
||||||
|
"devious": { "icon": "$path/devious.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"discontent": { "icon": "$path/discontent.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"distraught": { "icon": "$path/distraught.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"ecstatic": { "icon": "$path/estatic.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"pleasant": { "icon": "$path/pleasant.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"relaxed": { "icon": "$path/relaxed.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"sleek": { "icon": "$path/sleek.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"smooth": { "icon": "$path/smooth.gif",
|
||||||
|
"color": "white" },
|
||||||
|
"unruly": { "icon": "$path/unruly.gif",
|
||||||
|
"color": "white" }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"defaultwindow": { "style": "background: #e5000f; font-family:'Courier New';font:bold;selection-background-color:#ffb6b6; "
|
"defaultwindow": { "style": "background: #e5000f; font-family:'Courier New';font:bold;selection-background-color:#ffb6b6; "
|
||||||
},
|
},
|
||||||
"labels": { "mychumhandle": "MYTROLLTAG" },
|
"labels": { "mychumhandle": "MYTROLLTAG" },
|
||||||
"elements": [
|
"defaultmood": 7,
|
||||||
{ "style": "" }
|
"moods": [
|
||||||
|
{ "style": "text-align:left; background: black; border:3px solid black; padding: 5px;color:#dbdbdb;",
|
||||||
|
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [20, 470],
|
||||||
|
"size": [133, 30],
|
||||||
|
"text": "ECSTATIC",
|
||||||
|
"icon": "$path/estatic.gif",
|
||||||
|
"mood": 7
|
||||||
|
},
|
||||||
|
{ "style": "text-align:left; background: black; border:3px solid black; padding: 5px;color: #dbdbdb",
|
||||||
|
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [20, 497],
|
||||||
|
"size": [133, 30],
|
||||||
|
"text": "RELAXED",
|
||||||
|
"icon": "$path/relaxed.gif",
|
||||||
|
"mood": 8
|
||||||
|
},
|
||||||
|
{ "style": "text-align:left; background: black; border:3px solid black; padding: 5px;color:#dbdbdb;",
|
||||||
|
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [20, 524],
|
||||||
|
"size": [133, 30],
|
||||||
|
"text": "DISCONTENT",
|
||||||
|
"icon": "$path/discontent.gif",
|
||||||
|
"mood": 9
|
||||||
|
},
|
||||||
|
{ "style": "text-align:left; background: black; border:3px solid black; padding: 5px;color:#dbdbdb;",
|
||||||
|
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [150, 470],
|
||||||
|
"size": [133, 30],
|
||||||
|
"text": "DEVIOUS",
|
||||||
|
"icon": "$path/devious.gif",
|
||||||
|
"mood": 10
|
||||||
|
},
|
||||||
|
{ "style": "text-align:left; background: black; border:3px solid black; padding: 5px;color:#dbdbdb;",
|
||||||
|
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [150, 497],
|
||||||
|
"size": [133, 30],
|
||||||
|
"text": "SLEEK",
|
||||||
|
"icon": "$path/sleek.gif",
|
||||||
|
"mood": 11
|
||||||
|
},
|
||||||
|
{ "style": "text-align:left; background: red; border:3px solid black; padding: 5px;",
|
||||||
|
"selected": "text-align:left; background: red; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [150, 524],
|
||||||
|
"size": [133, 30],
|
||||||
|
"text": "DETESTFUL",
|
||||||
|
"icon": "$path/detestful.gif",
|
||||||
|
"mood": 12
|
||||||
|
},
|
||||||
|
{ "style": "text-align:center; background: #919191; border:3px solid black; padding: 5px;",
|
||||||
|
"selected": "text-align:center; background: #919191; border:3px solid black; padding: 5px;font: bold;",
|
||||||
|
"loc": [20, 551],
|
||||||
|
"size": [263, 30],
|
||||||
|
"text": "ABSCOND",
|
||||||
|
"icon": "$path/offline.gif",
|
||||||
|
"mood": 2
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"convo":
|
"convo":
|
||||||
|
|
Loading…
Reference in a new issue