From e39590d60b944a2624bb0a25289378b5293ff63e Mon Sep 17 00:00:00 2001 From: Stephen Dranger Date: Mon, 7 Feb 2011 12:40:05 -0600 Subject: [PATCH] fsdd --- TODO | 6 +-- convo.py | 4 +- convo.pyc | Bin 22492 -> 22491 bytes irc.py | 96 ++++++++++++++++++++++++++++--------- irc.pyc | Bin 11776 -> 13005 bytes logs/chums.js | 2 +- memos.py | 56 ++++++++++++---------- memos.pyc | Bin 28999 -> 29390 bytes parsetools.py | 2 - parsetools.pyc | Bin 5479 -> 5465 bytes pesterchum.js | 2 +- pesterchum.py | 2 + profiles/ghostDunk.js | 2 +- profiles/testProfile.js | 2 +- themes/pesterchum/style.js | 1 + themes/trollian/style.js | 1 + 16 files changed, 119 insertions(+), 57 deletions(-) diff --git a/TODO b/TODO index 82c0394..f3e1ae1 100644 --- a/TODO +++ b/TODO @@ -1,14 +1,14 @@ Features: +* dropped messages when chatting * X closes to tray * color text is not being translated to server? * convo backgrounds -- make them more like http://www.mspaintadventures.com/storyfiles/hs2/02546_2.gif -* PESTERLOG: in convo window * make other ppl ops +* turn off sound option!! * help button on quirks menu? -* tab recombining gives wrong window icon * help menu -- about and forum -- release alpha -* scroll bar style +* scroll bar style? * User commands/stop user from sending commands accidentally * shared buddy lists - changes to the buddy list should refresh it? multiple clients share buddy list??? diff --git a/convo.py b/convo.py index 6fb530f..aa541a7 100644 --- a/convo.py +++ b/convo.py @@ -127,12 +127,12 @@ class PesterTabWindow(QtGui.QFrame): self.mainwindow.waitingMessages.messageAnswered(handle) def initTheme(self, convo): self.resize(*convo["size"]) - self.setStyleSheet(convo["style"]) + self.setStyleSheet(convo["tabs"]["style"]) self.tabs.setShape(convo["tabs"]["tabstyle"]) self.tabs.setStyleSheet("QTabBar::tab{ %s } QTabBar::tab:selected { %s }" % (convo["tabs"]["style"], convo["tabs"]["selectedstyle"])) def changeTheme(self, theme): - self.initTheme(theme["memos"]) + self.initTheme(theme["convo"]) for c in self.convos.values(): tabi = self.tabIndices[c.title()] self.tabs.setTabIcon(tabi, c.icon()) diff --git a/convo.pyc b/convo.pyc index c86928642de224249e59c9599b0a502161b19ee9..f1930fca3c00408c16dd388553de0db59b86063f 100644 GIT binary patch delta 1099 zcmZvaT}YE*6vyAQ&1q_BrOb&Rn8N1QPzp+$=G3&()ZV6bm1vt~2*!L3H6x`DGb^Tt zD56g0$;wKFQj0Rd$e^^62&9N8yQ(hgInP3hy7_V5bNf1D+u$YKs00)*tMneN@i1haXC$<>=pwjr zsVNtl{l3&#oNgjT{y0=aA{DQCEn`(?JE?;RPJ+l9NR}u9WQihrvPKF2REo0X zdulM3r4)ii9^^`+isZ2bMDR;NYt|8yNGl|E3W$ufVWVb2+(FhEf|ELD8QJGRD}-Y> zyFOg|ltT4Pof8gz!j2XWjL+@Xj*cyrX)6)Qi5e21jTgh31|3dt1t>k5A?v<4F{>D}ma>bf2gvH@C@>ny^!&EC zqu2m1@My6iXO_I%3E~eEBZ!k8Am2yAC&FhA(QA2ib(K6%u7iX*!Uz0Xya$HFpU?0@ W$!Kshxtj=mgkA#U@ie@?&G-vJfES$r delta 1098 zcmZvbTS$~q5XZk+x6MkeytJ+1t&LnwMd_u?OJ2%KQ~T2FB}{Wm!&qoH@luh7QJR4} zVi843q;!=$(Tz;d%qTK7^ue--B8rG^FF_EU|1lz{mmmLcX3or+ne#pCqUT*?8u{uy zvnKtjDZxyooMsO5JxChu)wD8$R_3AYC9TARtIdI49-5`ZpjoC2ZRW7qu4$U4IbBud zcHLJh9yU+XT)r~@%}nLlW#8p+isP0>Bkd8^;5Z^D=Z9FSMpT7(c~UbU3J<2k;#~L- zc-kY%sZRJrb`jO_-6bV-o~=<6QvZxH(^;MuE$AXYj1G#BH`DZeKp5Z!lmJek5I7H9 z~<3D6S;w3#QF#RFUiz-b*fur#-&cD3U^MhxU}p&Q9ZZDN69Pq z$1kL6ej7jJS1W6{JOO*9D`mI6Nblys6=US)(+QSEM{t8ipcrTXjsZBK9|f9tA|Xho z{GPCsTDd)TIolIE<+pc|o0>&i(hP&KUdC};s+EUV`lPyX$RB71RPs4csun@1S{A7L zz&`~;Q?jN?iH?*)3Q&1kWTef2@CcxVY1VT0Mk5!b)yAmID#{L@N{Uh2jDO-8>IBe? z9z=5bNiwOxL4LU^$n+GhYGGI%M6;B(Dg#GmTs93tKH$lW3%{jkT62czk%(SbNpg@K znQN&*e9r7N1l&OAP2d)ATf*tjBg_1_H#Vs6H>W8`q3;<7n$G{Mv8c^>6cl@heHQaH8jG5{%Fb%^6k_htd*r^O^U^TyzKwRZ{0w&Ft*24$$*YJ|U8{yG zP(byM*7fTW*)|*G)Jx_q`QbFd_4(neU%|Q=P_IsPq4v8UwvWIk;ERO1Zn48ru788+ k0Pqg@z+dxsQm^_MuJNf&0|9j~*8&3Q2ChkeB8vjsFJloKf&c&j diff --git a/irc.py b/irc.py index 82def57..70b7b6d 100644 --- a/irc.py +++ b/irc.py @@ -4,6 +4,7 @@ from oyoyo.cmdhandler import DefaultCommandHandler from oyoyo import helpers import logging import random +import socket from dataobjs import Mood, PesterProfile from generic import PesterList @@ -19,72 +20,111 @@ class PesterIRC(QtCore.QObject): self.cli.command_handler.parent = self self.cli.command_handler.mainwindow = self.mainwindow self.conn = self.cli.connect() - + self.brokenConnection = False + def setConnectionBroken(self): + self.brokenConnection = True @QtCore.pyqtSlot(PesterProfile) def getMood(self, *chums): self.cli.command_handler.getMood(*chums) @QtCore.pyqtSlot(PesterList) def getMoods(self, chums): - self.cli.command_handler.getMood(*chums) - + self.cli.command_handler.getMood(*chums) @QtCore.pyqtSlot(QtCore.QString, QtCore.QString) def sendMessage(self, text, handle): h = unicode(handle) - helpers.msg(self.cli, h, text) - + try: + helpers.msg(self.cli, h, text) + except socket.error: + self.setConnectionBroken() @QtCore.pyqtSlot(QtCore.QString, bool) def startConvo(self, handle, initiated): h = unicode(handle) - if initiated: - helpers.msg(self.cli, h, "PESTERCHUM:BEGIN") - helpers.msg(self.cli, h, "COLOR >%s" % (self.mainwindow.profile().colorcmd())) + try: + if initiated: + helpers.msg(self.cli, h, "PESTERCHUM:BEGIN") + helpers.msg(self.cli, h, "COLOR >%s" % (self.mainwindow.profile().colorcmd())) + except socket.error: + self.setConnectionBroken() @QtCore.pyqtSlot(QtCore.QString) def endConvo(self, handle): h = unicode(handle) - helpers.msg(self.cli, h, "PESTERCHUM:CEASE") + try: + helpers.msg(self.cli, h, "PESTERCHUM:CEASE") + except socket.error: + self.setConnectionBroken() @QtCore.pyqtSlot() def updateProfile(self): me = self.mainwindow.profile() handle = me.handle - helpers.nick(self.cli, handle) + try: + helpers.nick(self.cli, handle) + except socket.error: + self.setConnectionBroken() self.updateMood() @QtCore.pyqtSlot() def updateMood(self): me = self.mainwindow.profile() - helpers.msg(self.cli, "#pesterchum", "MOOD >%d" % (me.mood.value())) + try: + helpers.msg(self.cli, "#pesterchum", "MOOD >%d" % (me.mood.value())) + except socket.error: + self.setConnectionBroken() @QtCore.pyqtSlot() def updateColor(self): me = self.mainwindow.profile() for h in self.mainwindow.convos.keys(): - helpers.msg(self.cli, h, "COLOR >%s" % (self.mainwindow.profile().colorcmd())) + try: + helpers.msg(self.cli, h, "COLOR >%s" % (self.mainwindow.profile().colorcmd())) + except socket.error: + self.setConnectionBroken() @QtCore.pyqtSlot(QtCore.QString) def blockedChum(self, handle): h = unicode(handle) - helpers.msg(self.cli, h, "PESTERCHUM:BLOCK") + try: + helpers.msg(self.cli, h, "PESTERCHUM:BLOCK") + except socket.error: + self.setConnectionBroken() @QtCore.pyqtSlot(QtCore.QString) def unblockedChum(self, handle): h = unicode(handle) - helpers.msg(self.cli, h, "PESTERCHUM:UNBLOCK") + try: + helpers.msg(self.cli, h, "PESTERCHUM:UNBLOCK") + except socket.error: + self.setConnectionBroken() @QtCore.pyqtSlot(QtCore.QString) def requestNames(self, channel): c = unicode(channel) - helpers.names(self.cli, c) + try: + helpers.names(self.cli, c) + except socket.error: + self.setConnectionBroken() @QtCore.pyqtSlot() def requestChannelList(self): - helpers.channel_list(self.cli) + try: + helpers.channel_list(self.cli) + except socket.error: + self.setConnectionBroken() @QtCore.pyqtSlot(QtCore.QString) def joinChannel(self, channel): c = unicode(channel) - helpers.join(self.cli, c) + try: + helpers.join(self.cli, c) + except socket.error: + self.setConnectionBroken() @QtCore.pyqtSlot(QtCore.QString) def leftChannel(self, channel): c = unicode(channel) - helpers.part(self.cli, c) + try: + helpers.part(self.cli, c) + except socket.error: + self.setConnectionBroken() @QtCore.pyqtSlot(QtCore.QString, QtCore.QString) def kickUser(self, handle, channel): c = unicode(channel) h = unicode(handle) - helpers.kick(self.cli, h, c) + try: + helpers.kick(self.cli, h, c) + except socket.error: + self.setConnectionBroken() @QtCore.pyqtSlot(QtCore.QString, QtCore.QString, QtCore.QString) def setChannelMode(self, channel, mode, command): c = unicode(channel) @@ -92,7 +132,10 @@ class PesterIRC(QtCore.QObject): cmd = unicode(command) if cmd == "": cmd = None - helpers.mode(self.cli, c, m, cmd) + try: + helpers.mode(self.cli, c, m, cmd) + except socket.error: + self.setConnectionBroken() def updateIRC(self): self.conn.next() @@ -112,6 +155,8 @@ class PesterIRC(QtCore.QObject): class PesterHandler(DefaultCommandHandler): def privmsg(self, nick, chan, msg): # display msg, do other stuff + if len(msg) == 0: + return # silently ignore CTCP if msg[0] == '\x01': return @@ -223,8 +268,15 @@ class PesterHandler(DefaultCommandHandler): for c in chums: chandle = c.handle if len(chumglub+chandle) >= 350: - helpers.msg(self.client, "#pesterchum", chumglub) + try: + helpers.msg(self.client, "#pesterchum", chumglub) + except socket.error: + self.parent.setConnectionBroken() chumglub = "GETMOOD " chumglub += chandle if chumglub != "GETMOOD ": - helpers.msg(self.client, "#pesterchum", chumglub) + try: + helpers.msg(self.client, "#pesterchum", chumglub) + except socket.error: + self.parent.setConnectionBroken() + diff --git a/irc.pyc b/irc.pyc index 29bc2ffc67dab75e65293555d64da49fe232e1dc..3bc3deb17ed30e0260f628ec3fbbd0039838d012 100644 GIT binary patch literal 13005 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 V|4BGe{_$FEJcp;;Om6-M{|gL$yWRi* literal 11776 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 G_J0F@!wFje diff --git a/logs/chums.js b/logs/chums.js index 5a50b36..4c68cba 100644 --- a/logs/chums.js +++ b/logs/chums.js @@ -1 +1 @@ -{"macruralAlchemist": {"color": "#700000", "handle": "macruralAlchemist", "mood": "offline"}, "fireSwallow": {"color": "#80bb9a", "handle": "fireSwallow", "mood": "offline"}, "aquaMarinist": {"color": "#00caca", "handle": "aquaMarinist", "mood": "offline"}, "nitroZealist": {"color": "#ff3737", "handle": "nitroZealist", "mood": "offline"}, "mechanicalSpectacle": {"color": "#000000", "handle": "mechanicalSpectacle", "mood": "offline"}, "caffeinatedAnalyst": {"color": "#aa0000", "handle": "caffeinatedAnalyst", "mood": "offline"}, "iw": {"color": "#ff0000", "handle": "iw", "mood": "offline"}, "pesterClient394": {"color": "#ff3737", "handle": "pesterClient394", "mood": "offline"}, "absoluteTranquility": {"color": "#000033", "handle": "absoluteTranquility", "mood": "offline"}, "centaursTesticle": {"color": "#000056", "handle": "centaursTesticle", "mood": "offline"}, "agogPorphyry": {"color": "#522d80", "handle": "agogPorphyry", "mood": "offline"}, "radicalApologist": {"color": "#ffaa00", "handle": "radicalApologist", "mood": "offline"}, "arachnidsGrip": {"color": "#005682", "handle": "arachnidsGrip", "mood": "offline"}, "illuminatedWax": {"color": "#ffff00", "handle": "illuminatedWax", "mood": "offline"}, "gamblingGenocider": {"color": "#00ff00", "handle": "gamblingGenocider", "mood": "offline"}, "elegantDiversion": {"color": "#12b40d", "handle": "elegantDiversion", "mood": "offline"}, "madLurker": {"color": "#000000", "handle": "madLurker", "mood": "offline"}, "testOut": {"color": "#c760cc", "handle": "testOut", "mood": "offline"}, "DocScratch": {"color": "#ffffff", "handle": "DocScratch", "mood": "offline"}, "recalcitrantDisaster": {"color": "#8b0068", "handle": "recalcitrantDisaster", "mood": "offline"}, "superGhost": {"color": "#800564", "handle": "superGhost", "mood": "offline"}, "tentacleTherapist": {"color": "#cc66ff", "handle": "tentacleTherapist", "mood": "offline"}, "aquaticMarinist": {"color": "#00caca", "handle": "aquaticMarinist", "mood": "offline"}, "captainCaveman": {"color": "#7c414e", "handle": "captainCaveman", "mood": "offline"}, "cuttlefishCuller": {"color": "#77003c", "handle": "cuttlefishCuller", "mood": "offline"}, "masterG": {"color": "#77003c", "handle": "masterG", "mood": "offline"}, "plasmaModerator": {"color": "#5685cc", "handle": "plasmaModerator", "mood": "offline"}, "remoteBloodbath": {"color": "#c70000", "handle": "remoteBloodbath", "mood": "offline"}, "rageInducer": {"color": "#00ffff", "handle": "rageInducer", "mood": "offline"}, "gallowsCalibrator": {"color": "#008282", "handle": "gallowsCalibrator", "mood": "offline"}, "greenZephyr": {"color": "#00ca40", "handle": "greenZephyr", "mood": "offline"}, "lawdEngrish": {"color": "#00ff00", "handle": "lawdEngrish", "mood": "offline"}, "adiosToreador": {"color": "#aa5500", "handle": "adiosToreador", "mood": "offline"}, "schlagzeugGator": {"color": "#61821f", "handle": "schlagzeugGator", "mood": "offline"}, "metaliAggressive": {"color": "#9289d5", "handle": "metaliAggressive", "mood": "offline"}, "magmaExploiter": {"color": "#d90000", "handle": "magmaExploiter", "mood": "offline"}, "gardenGnostic": {"color": "#00ff00", "handle": "gardenGnostic", "mood": "offline"}, "unknownTraveler": {"color": "#006666", "handle": "unknownTraveler", "mood": "offline"}, "utilitarianTurnabout": {"color": "#dd0000", "handle": "utilitarianTurnabout", "mood": "offline"}, "marineAquist": {"color": "#00caca", "handle": "marineAquist", "mood": "offline"}} \ No newline at end of file +{"macruralAlchemist": {"color": "#700000", "handle": "macruralAlchemist", "mood": "offline"}, "lyricalKeraunoscopic": {"color": "#00c000", "handle": "lyricalKeraunoscopic", "mood": "offline"}, "fireSwallow": {"color": "#80bb9a", "handle": "fireSwallow", "mood": "offline"}, "aquaMarinist": {"color": "#00caca", "handle": "aquaMarinist", "mood": "offline"}, "nitroZealist": {"color": "#ff3737", "handle": "nitroZealist", "mood": "offline"}, "mechanicalSpectacle": {"color": "#000000", "handle": "mechanicalSpectacle", "mood": "offline"}, "greyscalePacifist": {"color": "#7f7f7f", "handle": "greyscalePacifist", "mood": "offline"}, "caffeinatedAnalyst": {"color": "#aa0000", "handle": "caffeinatedAnalyst", "mood": "offline"}, "iw": {"color": "#ff0000", "handle": "iw", "mood": "offline"}, "insipidTranscient": {"color": "#104e68", "handle": "insipidTranscient", "mood": "offline"}, "pesterClient394": {"color": "#ff3737", "handle": "pesterClient394", "mood": "offline"}, "absoluteTranquility": {"color": "#000033", "handle": "absoluteTranquility", "mood": "offline"}, "centaursTesticle": {"color": "#000056", "handle": "centaursTesticle", "mood": "offline"}, "agogPorphyry": {"color": "#522d80", "handle": "agogPorphyry", "mood": "offline"}, "DocScratch": {"color": "#ffffff", "handle": "DocScratch", "mood": "offline"}, "apocalypseArisen": {"color": "#a10000", "handle": "apocalypseArisen", "mood": "offline"}, "radicalApologist": {"color": "#ffaa00", "handle": "radicalApologist", "mood": "offline"}, "microMachines": {"color": "#aa00ff", "handle": "microMachines", "mood": "offline"}, "arachnidsGrip": {"color": "#005682", "handle": "arachnidsGrip", "mood": "offline"}, "illuminatedWax": {"color": "#ffff00", "handle": "illuminatedWax", "mood": "offline"}, "tentacleTherapist": {"color": "#cc66ff", "handle": "tentacleTherapist", "mood": "offline"}, "gamblingGenocider": {"color": "#00ff00", "handle": "gamblingGenocider", "mood": "offline"}, "elegantDiversion": {"color": "#14b40a", "handle": "elegantDiversion", "mood": "offline"}, "madLurker": {"color": "#000000", "handle": "madLurker", "mood": "offline"}, "testOut": {"color": "#c760cc", "handle": "testOut", "mood": "offline"}, "androidTechnician": {"color": "#0000ff", "handle": "androidTechnician", "mood": "offline"}, "recalcitrantDisaster": {"color": "#8b0068", "handle": "recalcitrantDisaster", "mood": "offline"}, "superGhost": {"color": "#800564", "handle": "superGhost", "mood": "offline"}, "arsenicCatnip": {"color": "#006400", "handle": "arsenicCatnip", "mood": "offline"}, "aquaticMarinist": {"color": "#00caca", "handle": "aquaticMarinist", "mood": "offline"}, "captainCaveman": {"color": "#7c414e", "handle": "captainCaveman", "mood": "offline"}, "cuttlefishCuller": {"color": "#77003c", "handle": "cuttlefishCuller", "mood": "offline"}, "carcinoGeneticist": {"color": "#999999", "handle": "carcinoGeneticist", "mood": "offline"}, "masterG": {"color": "#77003c", "handle": "masterG", "mood": "offline"}, "plasmaModerator": {"color": "#5685cc", "handle": "plasmaModerator", "mood": "offline"}, "carcinoGenetecist": {"color": "#7f7f7f", "handle": "carcinoGenetecist", "mood": "offline"}, "remoteBloodbath": {"color": "#c70000", "handle": "remoteBloodbath", "mood": "offline"}, "moirailBunp": {"color": "#6a3d0f", "handle": "moirailBunp", "mood": "offline"}, "rageInducer": {"color": "#00ffff", "handle": "rageInducer", "mood": "offline"}, "gallowsCalibrator": {"color": "#008282", "handle": "gallowsCalibrator", "mood": "offline"}, "greenZephyr": {"color": "#00ca40", "handle": "greenZephyr", "mood": "offline"}, "lawdEngrish": {"color": "#00ff00", "handle": "lawdEngrish", "mood": "offline"}, "adiosToreador": {"color": "#aa5500", "handle": "adiosToreador", "mood": "offline"}, "maxiumumFatness": {"color": "#3366ff", "handle": "maxiumumFatness", "mood": "offline"}, "schlagzeugGator": {"color": "#61821f", "handle": "schlagzeugGator", "mood": "offline"}, "metaliAggressive": {"color": "#9289d5", "handle": "metaliAggressive", "mood": "offline"}, "midnightSparrow": {"color": "#ff55ff", "handle": "midnightSparrow", "mood": "offline"}, "magmaExploiter": {"color": "#d90000", "handle": "magmaExploiter", "mood": "offline"}, "zealousScarecrow": {"color": "#00c882", "handle": "zealousScarecrow", "mood": "offline"}, "gardenGnostic": {"color": "#00ff00", "handle": "gardenGnostic", "mood": "offline"}, "unknownTraveler": {"color": "#006666", "handle": "unknownTraveler", "mood": "offline"}, "utilitarianTurnabout": {"color": "#dd0000", "handle": "utilitarianTurnabout", "mood": "offline"}, "marineAquist": {"color": "#00caca", "handle": "marineAquist", "mood": "offline"}} \ No newline at end of file diff --git a/memos.py b/memos.py index 2de5da2..e417e77 100644 --- a/memos.py +++ b/memos.py @@ -76,10 +76,12 @@ class TimeGrammar(object): class TimeTracker(list): def __init__(self, time=None): self.timerecord = {"P": [], "F": []} + self.open = {} if time is not None: self.append(time) self.current=0 self.addRecord(time) + self.open[time] = False else: self.current=-1 def addTime(self, timed): @@ -90,6 +92,7 @@ class TimeTracker(list): except ValueError: self.current = len(self) self.append(timed) + self.open[timed] = False self.addRecord(timed) return False def prevTime(self): @@ -121,9 +124,19 @@ class TimeTracker(list): try: self.pop(self.index(timed)) self.current = len(self)-1 + del self.open[timed] return True except ValueError: return None + def openTime(self, time): + if self.open.has_key(time): + self.open[time] = True + def openCurrentTime(self): + timed = self.getTime() + self.openTime(timed) + def isFirstTime(self): + timed = self.getTime() + return not self.open[timed] def getTime(self): if self.current >= 0: return self[self.current] @@ -235,22 +248,25 @@ class MemoText(PesterText): newtime = timedelta(0) time = TimeTracker(newtime) parent.times[chum.handle] = time - timeGrammar = time.getGrammar() - msg = chum.memojoinmsg(systemColor, time.getTime(), timeGrammar, window.theme["convo/text/joinmemo"]) - self.append(convertTags(msg)) - window.chatlog.log(parent.channel, convertTags(msg, "bbcode")) else: time = parent.time + if time.isFirstTime(): + grammar = time.getGrammar() + joinmsg = chum.memojoinmsg(systemColor, time.getTime(), grammar, window.theme["convo/text/joinmemo"]) + self.append(convertTags(joinmsg)) + parent.mainwindow.chatlog.log(parent.channel, convertTags(msg, "bbcode")) + time.openCurrentTime() + if msg[0:3] == "/me" or msg[0:13] == "PESTERCHUM:ME": if msg[0:3] == "/me": start = 3 else: start = 13 space = msg.find(" ") - msg = chum.memsg(systemColor, msg[start:space], msg[space:], time=time.getGrammar()) + memsg = chum.memsg(systemColor, msg[start:space], msg[space:], time=time.getGrammar()) window.chatlog.log(parent.channel, convertTags(msg, "bbcode")) - self.append(convertTags(msg)) + self.append(convertTags(memsg)) else: if chum is not me: msg = addTimeInitial(msg, parent.times[chum.handle].getGrammar()) @@ -359,6 +375,7 @@ class PesterMemo(PesterConvo): timeGrammar = self.time.getGrammar() systemColor = QtGui.QColor(self.mainwindow.theme["memos/systemMsgColor"]) msg = p.memoopenmsg(systemColor, self.time.getTime(), timeGrammar, self.mainwindow.theme["convo/text/openmemo"], self.channel) + self.time.openCurrentTime() self.textArea.append(convertTags(msg)) self.mainwindow.chatlog.log(self.channel, convertTags(msg, "bbcode")) @@ -455,8 +472,6 @@ class PesterMemo(PesterConvo): color = chumdb.getColor(handle, defaultcolor) item.setTextColor(color) self.userlist.addItem(item) - self.userlist - def timeUpdate(self, handle, cmd): window = self.mainwindow @@ -491,19 +506,11 @@ class PesterMemo(PesterConvo): self.mainwindow.chatlog.log(self.channel, convertTags(msg, "bbcode")) elif timed not in self.times[handle]: self.times[handle].addTime(timed) - grammar = self.times[handle].getGrammar() - msg = chum.memojoinmsg(systemColor, timed, grammar, window.theme["convo/text/joinmemo"]) - self.textArea.append(convertTags(msg)) - self.mainwindow.chatlog.log(self.channel, convertTags(msg, "bbcode")) else: self.times[handle].setCurrent(timed) else: if timed is not None: ttracker = TimeTracker(timed) - grammar = ttracker.getGrammar() - msg = chum.memojoinmsg(systemColor, timed, grammar, window.theme["convo/text/joinmemo"]) - self.textArea.append(convertTags(msg)) - self.mainwindow.chatlog.log(self.channel, convertTags(msg, "bbcode")) self.times[handle] = ttracker @QtCore.pyqtSlot() @@ -511,6 +518,8 @@ class PesterMemo(PesterConvo): text = self.textInput.text() if text == "": return + if self.time.getTime() == None: + self.sendtime() grammar = self.time.getGrammar() # deal with quirks here qtext = self.mainwindow.userprofile.quirks.apply(unicode(text)) @@ -573,7 +582,6 @@ class PesterMemo(PesterConvo): if update == "nick": self.addUser(newnick) elif update == "kick": - print "KICKING" if len(chums) == 0: return c = chums[0] @@ -613,6 +621,7 @@ class PesterMemo(PesterConvo): self.resetSlider(curtime) self.mainwindow.joinChannel.emit(self.channel) me = self.mainwindow.profile() + self.time.openCurrentTime() msg = me.memoopenmsg(systemColor, self.time.getTime(), self.time.getGrammar(), self.mainwindow.theme["convo/text/openmemo"], self.channel) self.textArea.append(convertTags(msg)) self.mainwindow.chatlog.log(self.channel, convertTags(msg, "bbcode")) @@ -643,10 +652,11 @@ class PesterMemo(PesterConvo): return currentHandle = unicode(self.userlist.currentItem().text()) self.mainwindow.kickUser.emit(currentHandle, self.channel) - def resetSlider(self, time): + def resetSlider(self, time, send=True): self.timeinput.setText(delta2txt(time)) self.timeinput.setSlider() - self.sendtime() + if send: + self.sendtime() @QtCore.pyqtSlot() def sendtime(self): @@ -654,10 +664,6 @@ class PesterMemo(PesterConvo): systemColor = QtGui.QColor(self.mainwindow.theme["memos/systemMsgColor"]) time = txt2delta(self.timeinput.text()) present = self.time.addTime(time) - if not present: - msg = me.memojoinmsg(systemColor, time, self.time.getGrammar(), self.mainwindow.theme["convo/text/joinmemo"]) - self.textArea.append(convertTags(msg)) - self.mainwindow.chatlog.log(self.channel, convertTags(msg, "bbcode")) serverText = "PESTERCHUM:TIME>"+delta2txt(time, "server") self.messageSent.emit(serverText, self.title()) @@ -676,7 +682,9 @@ class PesterMemo(PesterConvo): newtime = self.time.getTime() if newtime is None: newtime = timedelta(0) - self.resetSlider(newtime) + self.resetSlider(newtime, send=False) + else: + self.resetSlider(newtime) @QtCore.pyqtSlot() def prevtime(self): time = self.time.prevTime() diff --git a/memos.pyc b/memos.pyc index 577a5f0c162fe05ccc8878c0230e74bd558b5ff9..0ba617b3dd5a159825d061657742721b02a433fb 100644 GIT binary patch delta 6323 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 diff --git a/parsetools.py b/parsetools.py index da7231e..b52f567 100644 --- a/parsetools.py +++ b/parsetools.py @@ -42,9 +42,7 @@ def convertTags(string, format="html"): return matchobj.group(1) string = _urlre.sub(urlrep, string) if format == "html": - print string string = _memore.sub(r" \1", string) - print string return string def escapeBrackets(string): diff --git a/parsetools.pyc b/parsetools.pyc index d52cb82b926f1c9f0a56fee7769b8e5e1feadf0b..a872cfce57b0db78ff44865e57b80be93d59a0f8 100644 GIT binary patch delta 133 zcmaE^byJJ&;wN6Nqd6PdJQ*3cPYz(5D=NmoSi;JX$;6Pt#Zbe*(9Fb8%fPUihv_M+ zq!}s6)oa~&u05&ThXaE2J delta 146 zcmcbq^<0bX;wN4%C5Me{o{WqKCkHUjl~-V3tYKhq_b6dy$Yf$j;bH*tnwc1C89)qo zkIhU>Pg!N97=VD0mr;O`Uqpyeno*3ApIr#ZXJr&(?rui2 u&G|et7#WQ=bMS3tWK7(=kN+?uW5(tt!JABsrITYszOid?>T|Ml@&W)i{UCM# diff --git a/pesterchum.js b/pesterchum.js index 233397c..3f6e37c 100644 --- a/pesterchum.js +++ b/pesterchum.js @@ -1 +1 @@ -{"tabs": false, "chums": ["marineAquist", "unknownTraveler", "tentacleTherapist", "macruralAlchemist", "vaginalEngineer", "mechanicalSpectacle", "carcinoGeneticist", "schlagzeugGator", "gamblingGenocider", "gardenGnostic", "superGhost", "centaursTesticle", "arachnidsGrip", "grimAuxiliatrix", "remoteBloodbath", "nitroZealist", "greenZephyr", "arsenicCatnip", "adiosToreador", "cuttlefishCuller", "rageInducer", "gallowsCalibrator", "caligulasAquarium", "terminallyCapricious", "illuminatedWax", "testOut", "aquaMarinist"], "defaultprofile": "testProfile", "block": []} \ No newline at end of file +{"tabs": false, "chums": ["marineAquist", "unknownTraveler", "tentacleTherapist", "macruralAlchemist", "vaginalEngineer", "mechanicalSpectacle", "carcinoGeneticist", "schlagzeugGator", "gamblingGenocider", "gardenGnostic", "superGhost", "centaursTesticle", "arachnidsGrip", "grimAuxiliatrix", "remoteBloodbath", "nitroZealist", "greenZephyr", "arsenicCatnip", "adiosToreador", "cuttlefishCuller", "rageInducer", "gallowsCalibrator", "caligulasAquarium", "terminallyCapricious", "illuminatedWax", "aquaMarinist", "maxiumumFatness", "elegantDiversion", "moirailBunp", "uroborosUnbound", "androidTechnician", "midnightSparrow", "apocalypseArisen"], "defaultprofile": "testProfile", "block": []} \ No newline at end of file diff --git a/pesterchum.py b/pesterchum.py index 78f2715..4b236a1 100644 --- a/pesterchum.py +++ b/pesterchum.py @@ -1495,6 +1495,8 @@ class IRCThread(QtCore.QThread): irc = self.irc irc.IRCConnect() while 1: + if irc.brokenConnection: + self.exit(1) try: irc.updateIRC() except socket.error: diff --git a/profiles/ghostDunk.js b/profiles/ghostDunk.js index 7c7adc1..338c689 100644 --- a/profiles/ghostDunk.js +++ b/profiles/ghostDunk.js @@ -1 +1 @@ -{"color": "#ff00ff", "theme": "pesterchum7", "quirks": [], "handle": "ghostDunk"} \ No newline at end of file +{"color": "#ff00ff", "theme": "pesterchum", "quirks": [], "handle": "ghostDunk"} \ No newline at end of file diff --git a/profiles/testProfile.js b/profiles/testProfile.js index 223100d..e63a331 100644 --- a/profiles/testProfile.js +++ b/profiles/testProfile.js @@ -1 +1 @@ -{"color": "#aa00ff", "theme": "trollian", "quirks": [], "handle": "testProfile"} \ No newline at end of file +{"color": "#aa00ff", "theme": "pesterchum", "quirks": [], "handle": "testProfile"} \ No newline at end of file diff --git a/themes/pesterchum/style.js b/themes/pesterchum/style.js index aea785d..171bd6c 100644 --- a/themes/pesterchum/style.js +++ b/themes/pesterchum/style.js @@ -190,6 +190,7 @@ }, "convo": {"style": "background-color: #fdb302; background-image:url($path/convobg.png); background-repeat: no-repeat; border:2px solid yellow; font-family: 'Courier'", + "tabstyle": "background-color: #fdb302; font-family: 'Courier'", "scrollbar": { "style" : "", "handle": "" }, "margins": {"top": 0, "bottom": 6, "left": 0, "right": 0 }, "size": [520, 325], diff --git a/themes/trollian/style.js b/themes/trollian/style.js index 3074757..6315787 100644 --- a/themes/trollian/style.js +++ b/themes/trollian/style.js @@ -236,6 +236,7 @@ }, "convo": {"style": "background: rgb(190, 19, 4); font-family: 'Arial';", + "tabstyle": "background: rgb(190, 19, 4); font-family: 'Arial'", "scrollbar": { "style" : "", "handle": "" }, "margins": {"top": 22, "bottom": 9, "left": 10, "right": 4 }, "size": [400, 250],