From 3531b3f562ab776c0f6c20efa36f08b40430c8f8 Mon Sep 17 00:00:00 2001 From: Lexi Date: Sun, 10 Jul 2011 12:54:04 +0100 Subject: [PATCH 01/13] Get the live version from version.py instead of guessing for mac build scripts. --- py2app.sh | 4 ++-- setup-py2app.py | 5 +++-- version.py | 30 +++++++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/py2app.sh b/py2app.sh index fc3faee..bb413a4 100755 --- a/py2app.sh +++ b/py2app.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash ## Cleanup rm -rf build/ dist/ @@ -13,7 +13,7 @@ touch dist/Pesterchum.app/Contents/Resources/qt.conf find dist/Pesterchum.app -iname "*_debug" -exec rm -f '{}' \; ## Create a dmg file to hold everything -VERSION="3.41.2 Beta 5" +VERSION=$(python version.py) #"3.41.2 Beta 5" SIZE=2000 name="Pesterchum" title="${name} ${VERSION}" diff --git a/setup-py2app.py b/setup-py2app.py index 3e75173..e456c66 100644 --- a/setup-py2app.py +++ b/setup-py2app.py @@ -6,13 +6,14 @@ Usage: """ from setuptools import setup +from version import lexVersion APP = ['pesterchum.py'] #DATA_FILES = ['pesterchum.js', 'profiles', 'themes', 'smilies', 'logs'] DATA_FILES = ['quirks', 'themes', 'smilies'] # TODO: Grep this version out of version.py -SHORT_VERSION = '3.41.2B5' -LONG_VERSION = '3.41.2 Beta 5 Bleeding Edge' +SHORT_VERSION = lexVersion(True) #'3.41.2B5' +LONG_VERSION = lexVersion() #'3.41.2 Beta 5 Bleeding Edge' OPTIONS = { 'argv_emulation': False, 'prefer_ppc': True, diff --git a/version.py b/version.py index 07eebdc..d8a6f33 100644 --- a/version.py +++ b/version.py @@ -9,7 +9,7 @@ USER_TYPE = "edge" # edge - new git stuff. bleeding edge, do not try at home (kiooeht version) _pcMajor = "3.41" -_pcMinor = "0" +_pcMinor = "2" _pcStatus = "B" # A = alpha # B = beta # RC = release candidate @@ -24,6 +24,34 @@ def pcVerCalc(): else: _pcVersion = "%s.%s.%s" % (_pcMajor, _pcMinor, _pcRevision) +def lexVersion(short=False): + if not _pcStatus: + return "%s.%s" % (_pcMajor, _pcMinor) + + utype = "" + if USER_TYPE == "edge": + utype = "E" + + if short: + return "%s.%s%s%s%s" % (_pcMajor, _pcMinor, _pcStatus, _pcRevision, utype); + + stype = "" + if _pcStatus == "A": + stype = "Alpha" + elif _pcStatus == "B": + stype = "Beta" + elif _pcStatus == "RC": + stype = "Release Candidate" + + if utype == "E": + utype = " Bleeding Edge" + + return "%s.%s %s %s%s" % (_pcMajor, _pcMinor, stype, _pcRevision, utype); + +# Naughty I know, but it lets me grab it from the bash script. +if __name__ == "__main__": + print lexVersion() + def verStrToNum(ver): w = re.match("(\d+\.?\d+)\.(\d+)-?([A-Za-z]{0,2})\.?(\d*):(\S+)", ver) if not w: From a33c76b8d63ef45098880672d7c42cf0503e4987 Mon Sep 17 00:00:00 2001 From: Lexi Date: Mon, 11 Jul 2011 11:15:56 +0100 Subject: [PATCH 02/13] Create non existent directories before loading the rest of PChum pyquirks was trying to create a subdirectory of a directory that didn't exist :D --- pesterchum.py | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/pesterchum.py b/pesterchum.py index ca50b6d..a03e0f8 100644 --- a/pesterchum.py +++ b/pesterchum.py @@ -42,26 +42,11 @@ if not ((major > 4) or (major == 4 and minor >= 6)): print "You currently have version " + vnum + ". Please ungrade Qt" exit() -from menus import PesterChooseQuirks, PesterChooseTheme, \ - PesterChooseProfile, PesterOptions, PesterUserlist, PesterMemoList, \ - LoadingScreen, AboutPesterchum, UpdatePesterchum -from dataobjs import PesterProfile, Mood, pesterQuirk, pesterQuirks -from generic import PesterIcon, RightClickList, RightClickTree, MultiTextDialog, PesterList, CaseInsensitiveDict -from convo import PesterTabWindow, PesterText, PesterInput, PesterConvo -from parsetools import convertTags, addTimeInitial, themeChecker, ThemeException -from memos import PesterMemo, MemoTabWindow, TimeTracker -from irc import PesterIRC -from logviewer import PesterLogUserSelect, PesterLogViewer -from bugreport import BugReporter -from randomer import RandomHandler -from updatecheck import MSPAChecker - +# Placed here before importing the rest of pesterchum, since bits of it need +# OSX's data directory and it doesn't hurt to have everything set up before +# plowing on. :o) +# ~Lex _datadir = os.path.join(str(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.DataLocation)),"Pesterchum/") -canon_handles = ["apocalypseArisen", "arsenicCatnip", "arachnidsGrip", "adiosToreador", \ - "caligulasAquarium", "cuttlefishCuller", "carcinoGeneticist", "centaursTesticle", \ - "grimAuxiliatrix", "gallowsCalibrator", "gardenGnostic", "ectoBiologist", \ - "twinArmageddons", "terminallyCapricious", "turntechGodhead", "tentacleTherapist"] - if sys.platform == "darwin": if not os.path.exists(_datadir): os.mkdir(_datadir) @@ -81,6 +66,26 @@ else: f.write("{}") f.close() +from menus import PesterChooseQuirks, PesterChooseTheme, \ + PesterChooseProfile, PesterOptions, PesterUserlist, PesterMemoList, \ + LoadingScreen, AboutPesterchum, UpdatePesterchum +from dataobjs import PesterProfile, Mood, pesterQuirk, pesterQuirks +from generic import PesterIcon, RightClickList, RightClickTree, MultiTextDialog, PesterList, CaseInsensitiveDict +from convo import PesterTabWindow, PesterText, PesterInput, PesterConvo +from parsetools import convertTags, addTimeInitial, themeChecker, ThemeException +from memos import PesterMemo, MemoTabWindow, TimeTracker +from irc import PesterIRC +from logviewer import PesterLogUserSelect, PesterLogViewer +from bugreport import BugReporter +from randomer import RandomHandler +from updatecheck import MSPAChecker + +canon_handles = ["apocalypseArisen", "arsenicCatnip", "arachnidsGrip", "adiosToreador", \ + "caligulasAquarium", "cuttlefishCuller", "carcinoGeneticist", "centaursTesticle", \ + "grimAuxiliatrix", "gallowsCalibrator", "gardenGnostic", "ectoBiologist", \ + "twinArmageddons", "terminallyCapricious", "turntechGodhead", "tentacleTherapist"] + + class waitingMessageHolder(object): def __init__(self, mainwindow, **msgfuncs): self.mainwindow = mainwindow From e1f66fba02c306e540429a0d5ec6ce581f657864 Mon Sep 17 00:00:00 2001 From: Lexi Date: Tue, 12 Jul 2011 00:09:43 +0100 Subject: [PATCH 03/13] Made +c disable quirks --- memos.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/memos.py b/memos.py index 3e26596..af322b6 100644 --- a/memos.py +++ b/memos.py @@ -396,6 +396,10 @@ class PesterMemo(PesterConvo): self.optionsMenu.addAction(self.invitechum) self.chanModeMenu = QtGui.QMenu("Memo Settings", self) + self.chanNoquirks = QtGui.QAction("Disable Quirks", self) + self.chanNoquirks.setCheckable(True) + self.connect(self.chanNoquirks, QtCore.SIGNAL('toggled(bool)'), + self, QtCore.SLOT('noquirksChan(bool)')) self.chanHide = QtGui.QAction("Hidden", self) self.chanHide.setCheckable(True) self.connect(self.chanHide, QtCore.SIGNAL('toggled(bool)'), @@ -408,6 +412,7 @@ class PesterMemo(PesterConvo): self.chanMod.setCheckable(True) self.connect(self.chanMod, QtCore.SIGNAL('toggled(bool)'), self, QtCore.SLOT('modChan(bool)')) + self.chanModeMenu.addAction(self.chanNoquirks) self.chanModeMenu.addAction(self.chanHide) self.chanModeMenu.addAction(self.chanInvite) self.chanModeMenu.addAction(self.chanMod) @@ -640,6 +645,15 @@ class PesterMemo(PesterConvo): for m in modes[1:]: if m not in chanmodes: chanmodes.extend(m) + # Make +c (disable ANSI colours) disable quirks. + if modes.find("c") >= 0: + self.chanNoquirks.setChecked(True) + self.quirksOff.setChecked(True) + self.applyquirks = False + if op: + msg = chum.memomodemsg(opchum, opgrammar, systemColor, "A No-Quirk zone", True) + self.textArea.append(convertTags(msg)) + self.mainwindow.chatlog.log(self.channel, msg) if modes.find("s") >= 0: self.chanHide.setChecked(True) if op: @@ -655,7 +669,7 @@ class PesterMemo(PesterConvo): if modes.find("m") >= 0: self.chanMod.setChecked(True) if op: - msg = chum.memomodemsg(opchum, opgrammar, systemColor, "Mute", True) + msg = chum.memomodemsg(opchum, opgrammar, systemColor, "Muted", True) self.textArea.append(convertTags(msg)) self.mainwindow.chatlog.log(self.channel, msg) elif modes[0] == "-": @@ -664,6 +678,12 @@ class PesterMemo(PesterConvo): chanmodes.remove(i) except ValueError: pass + if modes.find("c") >= 0: + self.chanNoquirks.setChecked(False) + if op: + msg = chum.memomodemsg(opchum, opgrammar, systemColor, "A No-Quirk zone", False) + self.textArea.append(convertTags(msg)) + self.mainwindow.chatlog.log(self.channel, msg) if modes.find("s") >= 0: self.chanHide.setChecked(False) if op: @@ -679,7 +699,7 @@ class PesterMemo(PesterConvo): if modes.find("m") >= 0: self.chanMod.setChecked(False) if op: - msg = chum.memomodemsg(opchum, opgrammar, systemColor, "Mute", False) + msg = chum.memomodemsg(opchum, opgrammar, systemColor, "Muted", False) self.textArea.append(convertTags(msg)) self.mainwindow.chatlog.log(self.channel, msg) chanmodes.sort() @@ -799,6 +819,7 @@ class PesterMemo(PesterConvo): if msg == self.mainwindow.profile().handle: self.quirksOff.setChecked(True) self.applyquirks = False + # TODO: Politely notify the client @QtCore.pyqtSlot(QtCore.QString, QtCore.QString, QtCore.QString) def userPresentChange(self, handle, channel, update): @@ -1102,6 +1123,10 @@ class PesterMemo(PesterConvo): self.invitechums = None @QtCore.pyqtSlot(bool) + def noquirksChan(self, on): + x = ["-","+"][on] + self.mainwindow.setChannelMode.emit(self.channel, x+"c", "") + @QtCore.pyqtSlot(bool) def hideChan(self, on): x = ["-","+"][on] self.mainwindow.setChannelMode.emit(self.channel, x+"s", "") From b3df4f848b68da402273568ed8837e10d4975d1f Mon Sep 17 00:00:00 2001 From: Lexi Date: Wed, 13 Jul 2011 08:47:14 +0100 Subject: [PATCH 04/13] Goddamnit. --- memos.py | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/memos.py b/memos.py index 5caed14..1aab273 100644 --- a/memos.py +++ b/memos.py @@ -395,21 +395,12 @@ class PesterMemo(PesterConvo): self.optionsMenu.addAction(self.logchum) self.optionsMenu.addAction(self.invitechum) -<<<<<<< HEAD - self.chanModeMenu = QtGui.QMenu("Memo Settings", self) - self.chanNoquirks = QtGui.QAction("Disable Quirks", self) - self.chanNoquirks.setCheckable(True) - self.connect(self.chanNoquirks, QtCore.SIGNAL('toggled(bool)'), - self, QtCore.SLOT('noquirksChan(bool)')) - self.chanHide = QtGui.QAction("Hidden", self) -======= self.chanModeMenu = QtGui.QMenu(self.mainwindow.theme["main/menus/rclickchumlist/memosetting"], self) self.chanNoquirks = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/memonoquirk"], self) self.chanNoquirks.setCheckable(True) self.connect(self.chanNoquirks, QtCore.SIGNAL('toggled(bool)'), self, QtCore.SLOT('noquirksChan(bool)')) self.chanHide = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/memohidden"], self) ->>>>>>> upstream/master self.chanHide.setCheckable(True) self.connect(self.chanHide, QtCore.SIGNAL('toggled(bool)'), self, QtCore.SLOT('hideChan(bool)')) @@ -845,9 +836,6 @@ class PesterMemo(PesterConvo): if msg == self.mainwindow.profile().handle: self.quirksOff.setChecked(True) self.applyquirks = False -<<<<<<< HEAD - # TODO: Politely notify the client -======= systemColor = QtGui.QColor(self.mainwindow.theme["memos/systemMsgColor"]) chum = self.mainwindow.profile() opchum = PesterProfile(op) @@ -860,7 +848,6 @@ class PesterMemo(PesterConvo): msg = chum.memoquirkkillmsg(opchum, opgrammar, systemColor) self.textArea.append(convertTags(msg)) self.mainwindow.chatlog.log(self.channel, msg) ->>>>>>> upstream/master def chumOPstuff(self, h, op): chum = PesterProfile(h) @@ -1237,3 +1224,4 @@ class PesterMemo(PesterConvo): timelist = ["0:00", "0:01", "0:02", "0:04", "0:06", "0:10", "0:14", "0:22", "0:30", "0:41", "1:00", "1:34", "2:16", "3:14", "4:13", "4:20", "5:25", "6:12", "7:30", "8:44", "10:25", "11:34", "14:13", "16:12", "17:44", "22:22", "25:10", "33:33", "42:00", "43:14", "50:00", "62:12", "75:00", "88:44", "100", "133", "143", "188", "200", "222", "250", "314", "333", "413", "420", "500", "600", "612", "888", "1000", "1025"] timedlist = [timedelta(0), timedelta(0, 60), timedelta(0, 120), timedelta(0, 240), timedelta(0, 360), timedelta(0, 600), timedelta(0, 840), timedelta(0, 1320), timedelta(0, 1800), timedelta(0, 2460), timedelta(0, 3600), timedelta(0, 5640), timedelta(0, 8160), timedelta(0, 11640), timedelta(0, 15180), timedelta(0, 15600), timedelta(0, 19500), timedelta(0, 22320), timedelta(0, 27000), timedelta(0, 31440), timedelta(0, 37500), timedelta(0, 41640), timedelta(0, 51180), timedelta(0, 58320), timedelta(0, 63840), timedelta(0, 80520), timedelta(1, 4200), timedelta(1, 34380), timedelta(1, 64800), timedelta(1, 69240), timedelta(2, 7200), timedelta(2, 51120), timedelta(3, 10800), timedelta(3, 60240), timedelta(4, 14400), timedelta(5, 46800), timedelta(5, 82800), timedelta(7, 72000), timedelta(8, 28800), timedelta(9, 21600), timedelta(10, 36000), timedelta(13, 7200), timedelta(13, 75600), timedelta(17, 18000), timedelta(17, 43200), timedelta(20, 72000), timedelta(25), timedelta(25, 43200), timedelta(37), timedelta(41, 57600), timedelta(42, 61200)] + From 8261d153b2b510faa869b91662e74c2991c79e58 Mon Sep 17 00:00:00 2001 From: Lexi Date: Fri, 15 Jul 2011 09:23:41 +0100 Subject: [PATCH 05/13] TODO update. Mostly from complaints --- TODO.mkdn | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/TODO.mkdn b/TODO.mkdn index e614f03..08af9c1 100644 --- a/TODO.mkdn +++ b/TODO.mkdn @@ -17,6 +17,11 @@ Features * Tab completion of two letter names * Customizable name alerts * When 'banned' make impossible to connect using timestamp banned under +* Explain why a chumhandle is invalid +* Make some kind of notification when the program is 'closed' but is + still running in the system tray, like how MSN does it. ("MSN is still + running in the system tray. Right click it to close it. Click here not + to show this message again.") Bugs ---- @@ -44,3 +49,6 @@ Mac Bugs * SS: in the one-on-one pester it resizes with the window * SS: but the memo one doesn't resize * SS: and the arrows next to the time thing overlap the CLOSE button +* Lex: Emotes show up as errors +* Lex: INFO logging shows up in OSX's error console +* Lex: There seems to be a faint outline around most non-square themes. From 14c0999c71214d1d9d48783acf59ce178a88155d Mon Sep 17 00:00:00 2001 From: Lexi Date: Wed, 10 Aug 2011 13:26:57 +0100 Subject: [PATCH 06/13] Made emotes work in OSX by specifying the absolute path. --- parsetools.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/parsetools.py b/parsetools.py index 388b51e..c11d9b5 100644 --- a/parsetools.py +++ b/parsetools.py @@ -1,5 +1,6 @@ import re import random +from os.path import abspath from copy import copy from datetime import timedelta from PyQt4 import QtGui @@ -21,6 +22,8 @@ quirkloader = PythonQuirks() _functionre = re.compile(r"%s" % quirkloader.funcre()) _groupre = re.compile(r"\\([0-9]+)") +_path = abspath('.') + def reloadQuirkFunctions(): quirkloader.load() global _functionre @@ -136,7 +139,7 @@ class smiley(object): self.string = string def convert(self, format): if format == "html": - return "%s" % (smiledict[self.string], self.string, self.string) + return "%s" % (_path, smiledict[self.string], self.string, self.string) else: return self.string class mecmd(object): @@ -368,7 +371,7 @@ def img2smiley(string): string = unicode(string) def imagerep(mo): return reverse_smiley[mo.group(1)] - string = re.sub(r'', imagerep, string) + string = re.sub(r'', imagerep, string) return string smiledict = { From a22538732b83f1145f1981d4881ee235d49939cc Mon Sep 17 00:00:00 2001 From: Lexi Date: Wed, 10 Aug 2011 13:28:31 +0100 Subject: [PATCH 07/13] Removed quit message printing --- irc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/irc.py b/irc.py index 72f57ca..adebc67 100644 --- a/irc.py +++ b/irc.py @@ -396,7 +396,7 @@ class PesterHandler(DefaultCommandHandler): helpers.nick(self.client, newnick) self.parent.nickCollision.emit(nick, newnick) def quit(self, nick, reason): - print reason + #print reason handle = nick[0:nick.find("!")] server = self.parent.mainwindow.config.server() baseserver = server[server.rfind(".", 0, server.rfind(".")):] From c729c7326c53c797d3f990562647cab34719b1fb Mon Sep 17 00:00:00 2001 From: Lexi Date: Wed, 10 Aug 2011 13:49:23 +0100 Subject: [PATCH 08/13] Made logging default to the WARNING level when in an application bundle. --- irc.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/irc.py b/irc.py index adebc67..16400c5 100644 --- a/irc.py +++ b/irc.py @@ -11,7 +11,11 @@ from dataobjs import Mood, PesterProfile from generic import PesterList from version import _pcVersion -logging.basicConfig(level=logging.INFO) +import sys, os +if sys.platform == "darwin" and os.path.abspath('.').find('.app') != -1: + logging.basicConfig(level=logging.WARNING) +else: + logging.basicConfig(level=logging.INFO) class PesterIRC(QtCore.QThread): def __init__(self, config, window): From 33a57686d0af2040b6deb53b2eabe60f127febaa Mon Sep 17 00:00:00 2001 From: Lexi Date: Wed, 10 Aug 2011 18:42:54 +0100 Subject: [PATCH 09/13] In fact, did not get images working in OSX. Removed extraeous debugging and fix attempts. --- convo.py | 4 ++++ parsetools.py | 7 ++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/convo.py b/convo.py index 0495b17..96c786a 100644 --- a/convo.py +++ b/convo.py @@ -345,6 +345,10 @@ class PesterText(QtGui.QTextEdit): "%s: " % (initials)] lexmsg.append(colorEnd("")) self.append("" + time + convertTags(lexmsg) + "") + #self.append('' + # + '' + # + '' + # + ''); if chum is me: window.chatlog.log(parent.chum.handle, lexmsg) else: diff --git a/parsetools.py b/parsetools.py index c11d9b5..388b51e 100644 --- a/parsetools.py +++ b/parsetools.py @@ -1,6 +1,5 @@ import re import random -from os.path import abspath from copy import copy from datetime import timedelta from PyQt4 import QtGui @@ -22,8 +21,6 @@ quirkloader = PythonQuirks() _functionre = re.compile(r"%s" % quirkloader.funcre()) _groupre = re.compile(r"\\([0-9]+)") -_path = abspath('.') - def reloadQuirkFunctions(): quirkloader.load() global _functionre @@ -139,7 +136,7 @@ class smiley(object): self.string = string def convert(self, format): if format == "html": - return "%s" % (_path, smiledict[self.string], self.string, self.string) + return "%s" % (smiledict[self.string], self.string, self.string) else: return self.string class mecmd(object): @@ -371,7 +368,7 @@ def img2smiley(string): string = unicode(string) def imagerep(mo): return reverse_smiley[mo.group(1)] - string = re.sub(r'', imagerep, string) + string = re.sub(r'', imagerep, string) return string smiledict = { From da7cc697e53b13bb9d3ca92f0c298bb54ab5d1de Mon Sep 17 00:00:00 2001 From: Lexi Date: Thu, 11 Aug 2011 00:06:23 +0100 Subject: [PATCH 10/13] Converted all static GIF smilies to PNG and produced static PNGs for all animated GIFs --- MacBuild/conv3rt.sh | 23 +++++++++++++ parsetools.py | 56 ++++++++++++++++---------------- smilies/acceptant.gif | Bin 357 -> 0 bytes smilies/acceptant.png | Bin 0 -> 320 bytes smilies/apple.gif | Bin 287 -> 0 bytes smilies/apple.png | Bin 0 -> 430 bytes smilies/bathearst.gif | Bin 215 -> 0 bytes smilies/bathearst.png | Bin 0 -> 381 bytes smilies/blacktear.gif | Bin 937 -> 0 bytes smilies/blacktear.png | Bin 0 -> 303 bytes smilies/blueslimer.png | Bin 0 -> 416 bytes smilies/candycorn.gif | Bin 144 -> 0 bytes smilies/candycorn.png | Bin 0 -> 313 bytes smilies/cheer.png | Bin 0 -> 399 bytes smilies/confusedjohn.png | Bin 0 -> 625 bytes smilies/datrump.gif | Bin 279 -> 0 bytes smilies/datrump.png | Bin 0 -> 458 bytes smilies/facepalm.gif | Bin 344 -> 0 bytes smilies/facepalm.png | Bin 0 -> 510 bytes smilies/headbonk.png | Bin 0 -> 594 bytes smilies/jadespritehead.png | Bin 0 -> 542 bytes smilies/mspa_face.gif | Bin 336 -> 0 bytes smilies/mspa_face.png | Bin 0 -> 423 bytes smilies/mspa_reader.png | Bin 0 -> 379 bytes smilies/pc_amazed.gif | Bin 88 -> 0 bytes smilies/pc_amazed.png | Bin 0 -> 279 bytes smilies/pc_amazedfirman.gif | Bin 117 -> 0 bytes smilies/pc_amazedfirman.png | Bin 0 -> 312 bytes smilies/pc_bemused.gif | Bin 116 -> 0 bytes smilies/pc_bemused.png | Bin 0 -> 297 bytes smilies/pc_chummy.gif | Bin 97 -> 0 bytes smilies/pc_chummy.png | Bin 0 -> 288 bytes smilies/pc_distraught.gif | Bin 84 -> 0 bytes smilies/pc_distraught.png | Bin 0 -> 261 bytes smilies/pc_distraughtfirman.gif | Bin 111 -> 0 bytes smilies/pc_distraughtfirman.png | Bin 0 -> 312 bytes smilies/pc_insolent.gif | Bin 89 -> 0 bytes smilies/pc_insolent.png | Bin 0 -> 283 bytes smilies/pc_mystified.gif | Bin 85 -> 0 bytes smilies/pc_mystified.png | Bin 0 -> 261 bytes smilies/pc_pleasant.gif | Bin 83 -> 0 bytes smilies/pc_pleasant.png | Bin 0 -> 261 bytes smilies/pc_pranky.gif | Bin 81 -> 0 bytes smilies/pc_pranky.png | Bin 0 -> 263 bytes smilies/pc_rancorous.gif | Bin 139 -> 0 bytes smilies/pc_rancorous.png | Bin 0 -> 359 bytes smilies/pc_tense.gif | Bin 97 -> 0 bytes smilies/pc_tense.png | Bin 0 -> 272 bytes smilies/pccool.gif | Bin 131 -> 0 bytes smilies/pccool.png | Bin 0 -> 309 bytes smilies/pckitty.gif | Bin 107 -> 0 bytes smilies/pckitty.png | Bin 0 -> 313 bytes smilies/record.png | Bin 0 -> 386 bytes smilies/slimer.png | Bin 0 -> 423 bytes smilies/squiddle.png | Bin 0 -> 333 bytes smilies/tab.png | Bin 0 -> 1332 bytes smilies/theprofessor.gif | Bin 261 -> 0 bytes smilies/theprofessor.png | Bin 0 -> 457 bytes smilies/trollcool.gif | Bin 111 -> 0 bytes smilies/trollcool.png | Bin 0 -> 305 bytes smilies/weasel.png | Bin 0 -> 493 bytes smilies/what.gif | Bin 82 -> 0 bytes smilies/what.png | Bin 0 -> 277 bytes smilies/whatpumpkin.gif | Bin 264 -> 0 bytes smilies/whatpumpkin.png | Bin 0 -> 458 bytes 65 files changed, 51 insertions(+), 28 deletions(-) create mode 100644 MacBuild/conv3rt.sh delete mode 100644 smilies/acceptant.gif create mode 100644 smilies/acceptant.png delete mode 100644 smilies/apple.gif create mode 100644 smilies/apple.png delete mode 100644 smilies/bathearst.gif create mode 100644 smilies/bathearst.png delete mode 100644 smilies/blacktear.gif create mode 100644 smilies/blacktear.png create mode 100644 smilies/blueslimer.png delete mode 100644 smilies/candycorn.gif create mode 100644 smilies/candycorn.png create mode 100644 smilies/cheer.png create mode 100644 smilies/confusedjohn.png delete mode 100644 smilies/datrump.gif create mode 100644 smilies/datrump.png delete mode 100644 smilies/facepalm.gif create mode 100644 smilies/facepalm.png create mode 100644 smilies/headbonk.png create mode 100644 smilies/jadespritehead.png delete mode 100644 smilies/mspa_face.gif create mode 100644 smilies/mspa_face.png create mode 100644 smilies/mspa_reader.png delete mode 100644 smilies/pc_amazed.gif create mode 100644 smilies/pc_amazed.png delete mode 100644 smilies/pc_amazedfirman.gif create mode 100644 smilies/pc_amazedfirman.png delete mode 100644 smilies/pc_bemused.gif create mode 100644 smilies/pc_bemused.png delete mode 100644 smilies/pc_chummy.gif create mode 100644 smilies/pc_chummy.png delete mode 100644 smilies/pc_distraught.gif create mode 100644 smilies/pc_distraught.png delete mode 100644 smilies/pc_distraughtfirman.gif create mode 100644 smilies/pc_distraughtfirman.png delete mode 100644 smilies/pc_insolent.gif create mode 100644 smilies/pc_insolent.png delete mode 100644 smilies/pc_mystified.gif create mode 100644 smilies/pc_mystified.png delete mode 100644 smilies/pc_pleasant.gif create mode 100644 smilies/pc_pleasant.png delete mode 100644 smilies/pc_pranky.gif create mode 100644 smilies/pc_pranky.png delete mode 100644 smilies/pc_rancorous.gif create mode 100644 smilies/pc_rancorous.png delete mode 100644 smilies/pc_tense.gif create mode 100644 smilies/pc_tense.png delete mode 100644 smilies/pccool.gif create mode 100644 smilies/pccool.png delete mode 100644 smilies/pckitty.gif create mode 100644 smilies/pckitty.png create mode 100644 smilies/record.png create mode 100644 smilies/slimer.png create mode 100644 smilies/squiddle.png create mode 100644 smilies/tab.png delete mode 100644 smilies/theprofessor.gif create mode 100644 smilies/theprofessor.png delete mode 100644 smilies/trollcool.gif create mode 100644 smilies/trollcool.png create mode 100644 smilies/weasel.png delete mode 100644 smilies/what.gif create mode 100644 smilies/what.png delete mode 100644 smilies/whatpumpkin.gif create mode 100644 smilies/whatpumpkin.png diff --git a/MacBuild/conv3rt.sh b/MacBuild/conv3rt.sh new file mode 100644 index 0000000..d6656d5 --- /dev/null +++ b/MacBuild/conv3rt.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# Lex's gif->png script + +for file in *.gif +do + convert ${file} ${file:0:$((${#file}-3))}"png" +done + +for file in `ls | grep -G -e "-[1-9]\+.png"` +do + rm $file +done + +for file in `ls | grep -e "-0.png"` +do + newfile=`echo $file | sed -e 's|\(.*\)-0.png|\1.png|'` + mv $file $newfile +done + +# for file in *.gif +# do +# rm ${file:0:$((${#file}-3))}"png" +# done diff --git a/parsetools.py b/parsetools.py index 388b51e..53fc7d7 100644 --- a/parsetools.py +++ b/parsetools.py @@ -372,45 +372,45 @@ def img2smiley(string): return string smiledict = { - ":rancorous:": "pc_rancorous.gif", - ":apple:": "apple.gif", - ":bathearst:": "bathearst.gif", + ":rancorous:": "pc_rancorous.png", + ":apple:": "apple.png", + ":bathearst:": "bathearst.png", ":cathearst:": "cathearst.png", - ":woeful:": "pc_bemused.gif", - ":sorrow:": "blacktear.gif", - ":pleasant:": "pc_pleasant.gif", + ":woeful:": "pc_bemused.png", + ":sorrow:": "blacktear.png", + ":pleasant:": "pc_pleasant.png", ":blueghost:": "blueslimer.gif", ":slimer:": "slimer.gif", - ":candycorn:": "candycorn.gif", + ":candycorn:": "candycorn.png", ":cheer:": "cheer.gif", ":duhjohn:": "confusedjohn.gif", - ":datrump:": "datrump.gif", - ":facepalm:": "facepalm.gif", + ":datrump:": "datrump.png", + ":facepalm:": "facepalm.png", ":bonk:": "headbonk.gif", - ":mspa:": "mspa_face.gif", + ":mspa:": "mspa_face.png", ":gun:": "mspa_reader.gif", ":cal:": "lilcal.png", - ":amazedfirman:": "pc_amazedfirman.gif", - ":amazed:": "pc_amazed.gif", - ":chummy:": "pc_chummy.gif", - ":cool:": "pccool.gif", - ":smooth:": "pccool.gif", - ":distraughtfirman": "pc_distraughtfirman.gif", - ":distraught:": "pc_distraught.gif", - ":insolent:": "pc_insolent.gif", - ":bemused:": "pc_bemused.gif", - ":3:": "pckitty.gif", - ":mystified:": "pc_mystified.gif", - ":pranky:": "pc_pranky.gif", - ":tense:": "pc_tense.gif", + ":amazedfirman:": "pc_amazedfirman.png", + ":amazed:": "pc_amazed.png", + ":chummy:": "pc_chummy.png", + ":cool:": "pccool.png", + ":smooth:": "pccool.png", + ":distraughtfirman": "pc_distraughtfirman.png", + ":distraught:": "pc_distraught.png", + ":insolent:": "pc_insolent.png", + ":bemused:": "pc_bemused.png", + ":3:": "pckitty.png", + ":mystified:": "pc_mystified.png", + ":pranky:": "pc_pranky.png", + ":tense:": "pc_tense.png", ":record:": "record.gif", ":squiddle:": "squiddle.gif", ":tab:": "tab.gif", - ":beetip:": "theprofessor.gif", + ":beetip:": "theprofessor.png", ":flipout:": "weasel.gif", - ":befuddled:": "what.gif", - ":pumpkin:": "whatpumpkin.gif", - ":trollcool:": "trollcool.gif", + ":befuddled:": "what.png", + ":pumpkin:": "whatpumpkin.png", + ":trollcool:": "trollcool.png", ":jadecry:": "jadespritehead.gif", ":ecstatic:": "ecstatic.png", ":relaxed:": "relaxed.png", @@ -422,7 +422,7 @@ smiledict = { ":manipulative:": "manipulative.png", ":vigorous:": "vigorous.png", ":perky:": "perky.png", - ":acceptant:": "acceptant.gif", + ":acceptant:": "acceptant.png", } reverse_smiley = dict((v,k) for k, v in smiledict.iteritems()) diff --git a/smilies/acceptant.gif b/smilies/acceptant.gif deleted file mode 100644 index dfb44ca856ba1db5d7c669910bfa5bd5ebb19585..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU1=9cj|9@Z1kYU7diGd*n z%moUTKmNW9NU@g$`2_nC}Q!>*kp&E>I4J|^946FYWPqVf6pT*cJ=Mbf}>tGmWLK|H++~ji=m#GfA=oom50P7q=0s)mbgZgq$HN4 zS|t~y0x1R~14Bby19M#?;}9bwD^nmc*ETS;GBA+-a4sE1LvDUbW?Cg~4Owf;ZUZ$i Nc)I$ztaD0e0su{dUef>o literal 0 HcmV?d00001 diff --git a/smilies/apple.gif b/smilies/apple.gif deleted file mode 100644 index 5a4960e9047c62b286eb26a4864ad0d275d86c62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmZ?wbhEHblwy!)00PB-S|J{eAqtKG0Y0vJ3Z4qZ<*A89Itm%7>ct8kH&FmIV0)GdMiEkp|>&7I;J!18EO1b~~AE2V~6iba4!kxLkYTHt%5r4%Pr2 zwG8zYmsn-)PGX(ItEATP=C8ZP5x*9tt$$=2&o-}cuL|sN52<2%s-c(374^Kc!RE(I z^%Z&HFQavBPBMr~K3b~Tb=aGCmC=#4uO#(&qh9f!oPWpnrb;?nNl8QRn&Vu{)|xWt z3RkVGeDlFF`?;P~ioW7;zQhYP;VRDZ>tx*o^w5M|Dk^&0g^K= zfn2Iq;u=wsoS&PUnpeW$SWu9Ys*qNcpR3>-9N?&sRH+b_nWEsCmzG+TmtX%vG8m{s z6{I62u_Vlzt{7#Ufa0+G44fuWUwf%J!S=_nd<^HVa@DsgMb TT3dD-sDZ)L)z4*}Q$iB}gaD8{ literal 0 HcmV?d00001 diff --git a/smilies/bathearst.gif b/smilies/bathearst.gif deleted file mode 100644 index 757acb4fb520bc850137f9ab10dea2d40e92af43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmZ?wbhEHblx2`(Sj5V(zwX}5w3%nlocaI%KLY~;gak4af3h$#Ft9S{0ND&6wG7O2 zB6jV$60n!!KUxh4@kUk=4NZ3I^VGU zj)te^%+_U+jLQQap4yUfjiaeCGv`+u`-?46G0t-@t5w|QRX=dExJvf!o2mDTitCwL zvTI!uTHBhMvum34JNqi)Cw6tm2TjlNNU@vN(5Mt1sM4~qUnn9-f9<5nHuF+u&#BZ9 N+t41G!pq5E4FG&`Rp0;s diff --git a/smilies/bathearst.png b/smilies/bathearst.png new file mode 100644 index 0000000000000000000000000000000000000000..e47162f7de0210977cf0969e8868030c397e351d GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^vOp}y!VDypG&v>#DWL$L5ZC|z{{xvb(`N3kyLaZy z86bDF%6*^+17k^$UoeBivm0q3PLj8~3quF1tOt<8S>O>_45UG94+giB*>*t2R8JSj z5Q)pR7aj^85fET~aJ5lgq=C!mHWTZQh5y6ycB**iJu^#tGW&Q$N7~HXN%Fso<_OEB zd&~@eYqU9f&J0WYwk3<-q<%O1|HCF_jpdWwyl-Cn9@Qz8znWpVK<$3?i-VUoEnw|^ z+OR7}y*bG2_@<{0k^Rcz|8IR*DOan0_UxWr`+J@5nX1OW|5F|K^{Rt_v#xCN2j-8* zH67RfD?12uplXS0L`h0wNvc(HQ7VvPFfuSS)HN{IH8Kt{GO{uSB6Dp6Ln{LV=?~}9 eQ8eV{r(~v8;?|J0w(K@g1B0ilpUXO@geCy<0E%4z literal 0 HcmV?d00001 diff --git a/smilies/blacktear.gif b/smilies/blacktear.gif deleted file mode 100644 index b13cb3cc8797a41f9c602c1cef6a4549c6001802..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 937 zcmZ?wbhEHblwc5L_|5tfTWd*gyAEXMp136Ga3#KZY=`VT_T(x6HZLj@D7T(5%|z! zx}5mB5>ADNOSin_s_DC4t;iOZOZ9=Usp{^aA2?o0KYj#A^-pY diff --git a/smilies/blacktear.png b/smilies/blacktear.png new file mode 100644 index 0000000000000000000000000000000000000000..8c91ad820331847f99852d68f91335f88e831adc GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^58;lvu9x)qzglXdiM@0uQ;g(3hAj*^B^6&c z6kOFyQ4m`lEZbEea`8guQp;7!aYyr*mI^*mdnmV#5ooz;iEBhjN@7W>RdP`(kYX@0 zFf`OPFxNFQ4ly#aG6f=YZ39Cq0|V&~=h9I$mdKI;Vst E0C~n=ZvX%Q literal 0 HcmV?d00001 diff --git a/smilies/blueslimer.png b/smilies/blueslimer.png new file mode 100644 index 0000000000000000000000000000000000000000..4db51ec7590f8aba61d1080d9cfc10c0b675cfbe GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^qChOd!3-orr?xQyDYF2d5ZC|z|1+6AP_V3@%&(F^w&nA2NIDvrq%iP={-E|9;vpXIx;@8MZM_oRFK!teOk$T~ gn6OfT&*Sih6OLRRmWv$@@Tji3wx%q*mw~|=0L1SwuK)l5 diff --git a/smilies/candycorn.png b/smilies/candycorn.png new file mode 100644 index 0000000000000000000000000000000000000000..6ca85c506ae57c8d3a66c7f2429cbc2e56c01795 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeX{r~?zkokW}`6U;I{|yfR zUU>ey#|RWWy^-<#LRI)1pkx1h(Xes9DA{ z0;f&8$PuI*$G1@Oh_<3h^And9g*{9>EDQ{8`P_<|_uT=q7*tDKBT7;dOH!?pi&B9U zgOP!up{{|su90zwk&%@t5SeQm7+M(^NPjq&j-nwqKP5A*61Rq|wPm+~8W=oX{an^L HB{Ts5ADds9 literal 0 HcmV?d00001 diff --git a/smilies/cheer.png b/smilies/cheer.png new file mode 100644 index 0000000000000000000000000000000000000000..16d3b8f0b42dc9b776c4d0774e12cab475afe4e7 GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*t3?v(r4=o2$q5(c3uK)l47Zw&)S7Uhh?j4Z* z>JdX!ID;zVxl2F=j3q&S!3+-1Zlr-YN#5=*3>~bp9zYIffk$L9kOr|m7~D=~+W{F% zJY5_^BrZ=qf18t8QGhjIE0cQR-~J;^DVH1Gm@G)JGWa`vLScA%u$-!l?GQO1%WzhDN3XE)M7oFs2|7lsa2Sq~tGv%n*=7)XQI9t>_Lv+aNi zoIG6|Lo81BPVt@8s=(9okd39_TM@HXT!T?@LuAGO)jm>%azBET#a^BMZj~ABo%~PJ zX{YyXA=N82sdiguojX-SelXy?!ub?9SNzEB1|K`QG z)pnelCI9V*$cuS5M0O}G5;okzak%Xt<5TPFN{40!3Ap_{Key?`DUol*?gmVoTnnyF z)atYlk!dPl&mrrwoXyBz>U)z({)YC|HhbhVj6!A0g}mLW8zonnmaDieUljB{tinK` zd*xjz`R8?>f#Ms}rX3DiwQ^NY(44#S46I@om+7XK3v@pXnBTChi!<mHbB+n_-s@uQ#J_~U@3j10&zK}p5NgAI+zJ@17A39`CCT}@xv6<24B;7x zB?_6v3MC*qFEbA)UXY((ppcTEnU`*FZ?E7~sSuW#qTrdAmRgjTuQ&4|uNKe@Rgf7e zi6yC4$wjF^iowXh&`{UFT-V4r#K_3X6o|~V4GgUe45UAtOGnX=o1c=IR*73f*4nb$ PKn)C@u6{1-oD!M<1$pJI literal 0 HcmV?d00001 diff --git a/smilies/datrump.gif b/smilies/datrump.gif deleted file mode 100644 index ed03902a44b539500a223dce479fa5ea732ff5e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmZ?wbhEHbRAbO&Si}GV|NsBbHqdaElLRur0w6;1CkrD30}F!=hyzl~z;Lc#SLf_@R zqEr1=Uz0PFX1KQ@`mrGk)2l-&SJHyB!p@6Nm9BccZsNLKwZ)g}A2y`(=H(P*YB z#O~rtOb%SJe_hd${ql2KPwtw2_QJ(eK9>&!$m{Xx&A)jwMqX diff --git a/smilies/datrump.png b/smilies/datrump.png new file mode 100644 index 0000000000000000000000000000000000000000..af259b4a446062ec6724ddb93a2cdfb4ecf2a5f2 GIT binary patch literal 458 zcmeAS@N?(olHy`uVBq!ia0vp^YCx>X!VDx=ySjM*DgFST5ZC|z{{xvo(pgS2+d!kT z^yWk$pRpv!FPOpM*^M+1C&}C0h4DX=?mZxfv%n*=7)XN*@L+H|nQaGTJoR*O4AD5> zJL$CO5d{v{h0F$*8OkOkbAOA!{NZxom5I}*R(-geeY#s=^1y$b#KX79ZC=C2}qH+@R@#6EeFkC@82i2uc3yrwVex%lWv zl@$9aj_EPMioajZy?W5bob}|UIXXIr9-Vj-EWQ28hAlRa_B5Z-eHB~&W2Jm}_SqSF z-wT4P%2(U%yyD!1M9BI{Cl($rEJ3QSY^olpz8-aZbTW#OJIQcpS=wa0o*NBpo#FA92cptHiA#Yi-$Wpaup{S3j3^ HP60D}Mj{{R300RI5Y%*?7) z%!mMp00000000C3D7xJ7Fos5Jg&^w$ zPS(_A(a!E|&zb31H* zi$REXdQ67_v9k`ktZqaYi-I@7z^8+{Y{kZ|T*o(HcC|u!(JIrQt%S=LIiT7!&fQ67 zSzqFfp4Ya(OoG70?Rq>c*4~hGYz1zJGUP$JtSCT$pPx%%fCQAJjv#@82lL%4Hzb9_ qhXvG8QpkWEPlk&aQ$>;h!Xp5X1^=M&b>a#Wf-oa0Fws&$0suS5ca${% diff --git a/smilies/facepalm.png b/smilies/facepalm.png new file mode 100644 index 0000000000000000000000000000000000000000..e5bc561d21754ba900709d36618d3ab4c9b31b59 GIT binary patch literal 510 zcmeAS@N?(olHy`uVBq!ia0vp^>Oic*!VDyTNZPFcQbGYfA+8Mnfh>mq|NoykbEbo# zV^!!GF`r!*q$VxBIJ zAsXjnCmk$3V!+|@mXF7e`GA?jm4nZ6*~|W~ZDI7Bc=%v@enP^9ZJ}>kZpb;V;jju@ zX8WXKgHC+LCN1@;>n8eWP2LjZ?7U^lqtix0l^UGh%aj63P8Ba>+H`A)QmAa_H{PVE zAlYqiy5fa5?Q+`3`i1eR)fe_BO-sTqB$*v*U`%lm;t^VTqF;W-b!TG?Rf4S}TT>Y}=?X&;}m1>D=L`h0wNvc(H zQ7VvPFfuSS)HN{IH8Kt{GO{uSB6Dp6Ln{LV=?~}9Q8eV{r(~v8;?|J0w(K@g1B0il KpUXO@geCwfK*AOP literal 0 HcmV?d00001 diff --git a/smilies/headbonk.png b/smilies/headbonk.png new file mode 100644 index 0000000000000000000000000000000000000000..ac6771139e328613734bcbea42b0028d2d35e406 GIT binary patch literal 594 zcmeAS@N?(olHy`uVBq!ia0vp^7C@}b!VDyhcU~z4QlbGqA+8Jz|I5=tSFM`aQJw~p zGB*DI|Njnk`At9$V@Z%-FoVOh8z33RByV>Yw#2j@wLlJMfk$L9koEv$x0Bg+Km{(I zE{-7@=Swg9PHI*VU`<%_iNSG?!vSuG*?T+Bz6nyoWA;80t2TXnZ0hSi^;Y=e ztzrLl?nW-sf2t`h=$Id#eR@sEiFBkx+~$GlbOULmZzKY($|*W4xJ(R zjH!73CdYT4wk1}tXVtPz`fjq!=F;hf(Xo?vTP^zN(sN>h?&6(`ZC|O%p5CR=TK9>~ zS&zr{(+cis4{WF1kZX_PJf+a3dGxQ5kW7%I%a@%qBR9(EU$Z(`=XQ18&#YAwv+qO( zyx#rGEkEpyU0lFYo}YEctb>jon_VbpR2MeYpY{LK6OCCbr0&f7;kxj%C{JH{iAaoS z=A7h1B3T}JM~EaloaX$C5 zb>3kE9)zm0Xkxq!^403=MS+%yo^7LyU~9 sOo7N;+rZGuz(D%LxpWi_x%nxXX_dG&WUVc`4b;Hk>FVdQ&MBb@0Af_sQUCw| literal 0 HcmV?d00001 diff --git a/smilies/mspa_face.gif b/smilies/mspa_face.gif deleted file mode 100644 index 1a10b79bf593b1c2c85052330bec008f733e5c8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmZ?wbhEHblwgoxI3mE1k&$uw^y!ToH$Hs$@a4;weSLktzP?|+eEIR?$M4_2-@JJv zBqa3i-MfGP{xLE#8XFt`|NozX6rlK%g^__lfI$bO31lY&>sbYrzLd;)8LQT<$*?%b zbbKv`xbLMW?}gT|vM(sq&=TlnaG1d*C&k5@yh`B(-IFmuaU*%yIa{sxR}Y|44;{CqA!fgBSiFlVzdD0A~L^YOED1X)ky zu<~e|?(D(NV#&m9WXQ+4h;^K(^sa?KYsrDp~zqj01xYDJpcdz diff --git a/smilies/mspa_face.png b/smilies/mspa_face.png new file mode 100644 index 0000000000000000000000000000000000000000..16296788ec0a625a7047c90551c4c37ee43f7060 GIT binary patch literal 423 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rjj7PV21zE6P31tcuC&wE)4(M z`_JqL@;D1TB8!2v2N=7Z%(eqEZhN{ohG?8$JMmy9t09le|1Ar`V%mQfn7&JWT_9R* z!ZE+ZfJ1HL9?x%|?RU0t@TAFYGF^Q9xc=84)+ZVg=7uwbSiO|IG|$m>;mnsQ+8X97 z3|93SZn4gt%>5vRzjm?fKE_S;Cmru>j#<#)od4HGN^gT)(QTK|UWe0`4r1O9lvWwP z3OTRZ&?9_u8J|(f^CwpoQ)Aa&=AXFX{pHm1ExAqY3%;l-y{&xwS>?@KB|~R#i8DVw zZVbw@c6l;cbbE0o_s_uaKI4a)M>t9+ZPD_0|GQ)1tKV$>q5n61zW$44f%gpyrq)~M zf!veuT}25MmNboFyt=akR{0I_bKj{pDw literal 0 HcmV?d00001 diff --git a/smilies/mspa_reader.png b/smilies/mspa_reader.png new file mode 100644 index 0000000000000000000000000000000000000000..86730e26afd10bcb3b352ed4ee9244c4ad7419af GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W3!VDyn{@=U@q=W)|LR|kd{8tiW`2YX^yLa!> z($YdhLv5F^+W}=6OM?7@862M7NCR<_yxm=x(zt6;OkH}&m?E%JaC$mAyCwsa$ zhDcnlop4Z;S&@TvDYHV*fk|AS)+n@#JUI9-nzKpjY~s$dkDGfmD;Wh7XR)qXb^Vdw zubQ*Vti-aJ`H~12r&sy85}Sb4q9e02MQXUH||9 literal 0 HcmV?d00001 diff --git a/smilies/pc_amazed.gif b/smilies/pc_amazed.gif deleted file mode 100644 index 84015773ca5de441c3821acc6d6d1eb6901f03e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmZ?wbhEHb6krfw00PCIEUXL+j0`#;4oIx=|9=J`yt_*9|Ns9?nmx=bEBEqCHN6kW m(wpPJ@uKm*aMrWTs-gnPb!f`!0frB?S zA%TatG$DbPmp4HGNHhv01|MGL)DfW2AQb4`=aCU4-Bp6o zEE$qOS;mqezhDN3XE)M7oFs2|7lsa2Sq~tGv%n*=7)XQI9t>_Lv+aP408bak5RU7~ z2?+u$Ol%4XEQTx+3QP)$Y8=jujh>#KfgYZojgA2~BRo$Y^%OV~Ai`v<5Y!al+mzsz zq0yqaYKch4nS>S(PK7lIEe0$Pco-xuaM$=`EDr{ntyzQpmR}bVo7R>LV0FMhJw4NZvcbh zPZmZ71||j_1|R?#z`(4cp>^S&_C8Lf#l?wh%=R8I2vD;0Te^Im&g^BcW^WDMp0)NY I7bk-?0E#m&n*aa+ diff --git a/smilies/pc_bemused.png b/smilies/pc_bemused.png new file mode 100644 index 0000000000000000000000000000000000000000..68d63e50bdeeadaea9c896d7144c3a52dab16d65 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uKyYS|NqZ$ca`AT&4Qdj zLB^6GzhDN3XE)M7DhfOzi-EKU7`vU!wgWPZJY5_^IIbrraPX!kB=GQ-CM59k@+JrX ziAI6M;KR$DIsz0N)TZgN3I$GFC{ViM76VhU@SCNjx^scLB}-f*N|N()b5rw57@Uhz z6H8K46v{J8G8EiBeFL7acQ_4HqzY1$0+g~!2CHB&GB7mMH89sTG7d2^vN8oCb8Q1d lD+2@R59iWRH00)|WTsW(){wQf>^4vXgQu&X%Q~loCIH0?QYrud literal 0 HcmV?d00001 diff --git a/smilies/pc_chummy.gif b/smilies/pc_chummy.gif deleted file mode 100644 index 1689a7fcb2c516defcc125aea8d0766bcba458fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97 zcmZ?wbhEHb6krfw00PCIEUXL+Obj|84oIx=|9^(Ns|5cu{09OiqbaN_EBEqCHN6kW w(wn2e@}lv+a8}x*rLT6d9OmA?=FzbaJ=Y2)FaA2P`AG=ZL(M~$oLmgn0QQC^A^-pY diff --git a/smilies/pc_chummy.png b/smilies/pc_chummy.png new file mode 100644 index 0000000000000000000000000000000000000000..1f2724f1cf260cf8fb4a04955e7ca505e0f0a400 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-uKyYS|NqZ$ca%`yx@@{Ybn@@Et`MX|#?b@2D9=8~l zBuj}r`|G(2Xp(A)YeY#(Vo9o1a#1RfVlXl=G}JXP*EKQ@F*33;1tN2814AnV1L+Uv f(orUftDnm{r-UW|7@t%l literal 0 HcmV?d00001 diff --git a/smilies/pc_distraught.gif b/smilies/pc_distraught.gif deleted file mode 100644 index 47e0a3946f92c38689b489ba0474431055c501f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84 zcmZ?wbhEHb6krfw00PCIEUXL+j0`#;4oIx=|9=J`yt_&eD8QuJ!@RO`FTYgN`+zLH gISw2z8t)5dJzH7%%41_!x89x1i;*>p9T^#{0g@*hM*si- diff --git a/smilies/pc_distraught.png b/smilies/pc_distraught.png new file mode 100644 index 0000000000000000000000000000000000000000..f9126bc195f0a64acbc3e4a44d8eacea1638fb1b GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uKyYS|NqZ$ca`AT&4Qdj zLB^6GzhDN3XE)M7DhfOzi-EKU7`vU!wgWPZJzX3_IIbrraPX!kB=GQ-CM59k@+JrX ziAI6M;KR$DIsz0Lgd(*Yk6ba(5MRR=D$T%hLijE7&8;_p+Eq(jBT7;dOH!?pi&B9U zgOP!up{{|su90zwk&%@t5SeQm7+M(^NPjq&j-nwqKP5A*61Rq|wPm+~8W=oX{an^L HB{Ts5E8#`* literal 0 HcmV?d00001 diff --git a/smilies/pc_distraughtfirman.gif b/smilies/pc_distraughtfirman.gif deleted file mode 100644 index ac65d35bba503e9d1fcea9322d03db97fffc0f13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111 zcmZ?wbhEHb6krfwSj5T@lk@7WmDSxaCU4-Bp6o zEE$qOS;mqezhDN3XE)M7oFs2|7lsa2Sq~tGv%n*=7)XQI9t>_Lv+aP408bak5RU7~ z2?+u$Ol%4XEQTx+3QP)$Y8=jujh>#KfgYZojgA2~BRo$Y^%OV~Ai`v<5Y!al+oaHz zk&&S=gHgqmb>b2U#VrhnxOQ;#FfuUC;o7k9byp+MY}FFih?11Vl2ohYqEsNoU}Ruu zsB2)ZYh)Z^WMpLuMCRHChE@g!(jU&HqiD#@PsvQH#H}G~ZP{(01_n=8KbLh*2~7Ym Cu2-J` literal 0 HcmV?d00001 diff --git a/smilies/pc_insolent.gif b/smilies/pc_insolent.gif deleted file mode 100644 index 652958ac67dbcfe4e84154bc65d2d395b2a96748..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89 zcmZ?wbhEHb6krfw00PCIEUXL+j0`#;4oIx=|9=J`yt_*9|Ns9?T0P7wEBEqCHN6kW n(wpPJ@uKm*aMrWVW%r`84jJ@tE#LDoX=2forM6NU3=Gx)vSc6o diff --git a/smilies/pc_insolent.png b/smilies/pc_insolent.png new file mode 100644 index 0000000000000000000000000000000000000000..07856707ac026652e17a25396710a0b23d32ec0b GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-uKyYS|NqZ$caFMGa!f`!0frB?S zA%TatG$DbPmp4HGNHhv01|MGL)DfWIptdQDv2(-xg*=NA?VTHLO;gHbW{_AQ>OQ?R z=?Bmd)e_f;l9a@fRIB8oR3OD*WMF8hYhbQxWE^5-WMv9O=Gq2^Rt5&rAI_ztXvob^ Z$xN%nts!e|*=?W(22WQ%mvv4FO#ouXPGSH6 literal 0 HcmV?d00001 diff --git a/smilies/pc_mystified.gif b/smilies/pc_mystified.gif deleted file mode 100644 index f523f3784b0dc2123eb9c24543c94e0e31fa24c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85 zcmZ?wbhEHb6krfw00PCIEUXL+j0`#;4oIx=|9=J`yt_&eD8QuF!@RO`FTYgN`+zLH hISw2z8t)5dJzH7%%41`f_d0{}sM0pKEs`P()&QpH8ruK> diff --git a/smilies/pc_mystified.png b/smilies/pc_mystified.png new file mode 100644 index 0000000000000000000000000000000000000000..af0b859c24c4291d79503a7d07a4d5c62e12f204 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uKyYS|NqZ$ca`AT&4Qdj zLB^6GzhDN3XE)M7DhfOzi-EKU7`vU!wgWPZJzX3_IIbrraPX!kB=GQ-CM59k@+JrX ziAI6M;KR$DIsz0Lgd(*Yk6ba(;9kQQD$T(ASR^cE<+*P_?W!fN5hW>!C8<`)MX5lF z!N|bSP}jg**T^`;$jHhRh|IMO46O_dq(7WXN70a*pOTqYiCaU~+Opd~4Gf;HelF{r G5}E)ZAw}E( literal 0 HcmV?d00001 diff --git a/smilies/pc_pleasant.gif b/smilies/pc_pleasant.gif deleted file mode 100644 index fe7a61edb0108deb50ecfe83a3ff3432a1a6a369..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83 zcmZ?wbhEHb6krfw00PCIEUXL+j0`#;4oIx=|9=J`yt_&eD8QuB!@RO`FTYgN`+zLH fISw2z8t)5dJ*({P)~ZtNIv7|MWzfsU%3uuuV00L~ diff --git a/smilies/pc_pleasant.png b/smilies/pc_pleasant.png new file mode 100644 index 0000000000000000000000000000000000000000..7f414908488d164f01670bb5ad93b99b5b2c976b GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uKyYS|NqZ$ca`AT&4Qdj zLB^6GzhDN3XE)M7DhfOzi-EKU7`vU!wgWPZJzX3_IIbrraPX!kB=GQ-CM59k@+JrX ziAI6M;KR$DIsz0Lgn|z@xLotn5MRR=D$T&cApBOxf7e8ycGVKsh?11Vl2ohYqEsNo zU}RuusB2)ZYh)Z^WMpLuMCRHChE@g!(jU&HqiD#@PsvQH#H}G~ZP{(01_n=8KbLh* G2~7Z?kVLcq literal 0 HcmV?d00001 diff --git a/smilies/pc_pranky.gif b/smilies/pc_pranky.gif deleted file mode 100644 index 8fd795f59903f25924f5b2ddfb65977e16753ee5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmZ?wbhEHb6krfw00PCIEUXL+j0`#;4oIx=|9=J`yt_&eD8QuD!@RO`FTYgN`+zLH eIZ+%h8t1!ByPlzTuWQ-V?5P`PE_GyNum%7-s~NZe diff --git a/smilies/pc_pranky.png b/smilies/pc_pranky.png new file mode 100644 index 0000000000000000000000000000000000000000..bf26cd113671a81a4d1488e6bcccc38a1a08672c GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uKyYS|NqZ$ca`AT&4Qdj zLB^6GzhDN3XE)M7DhfOzi-EKU7`vU!wgWOuJzX3_IIbrraPX!kB=GQ-CM59k@+JrX ziAI5i3loDS4=rQr3{Yqg3U+k4=A|LNhA&i_;ajxuYSUYrUjq$LEpd$~Nl7e8wMs5Z z1yT$~28M>Z2Ijg(#vw*VR;EB?u5DmwWnduv;aob3hTQy=%(P0}8nV`w-3Dr4@O1Ta JS?83{1OU?$M!^68 literal 0 HcmV?d00001 diff --git a/smilies/pc_rancorous.gif b/smilies/pc_rancorous.gif deleted file mode 100644 index afd9f9778ea7e657b88a5d30fa4e615fb7c33cf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139 zcmZ?wbhEHb6krfwIK;;ApMl|j5W|OLhUaq`zFwd4|3AZjFi`v_=v~bp9zYIffk$L9kOr|m7~D=~+W{FN zo-U3d9M_W*5)wp2L=qAhE(=UkkZ@pia4Kk9uxaCh1sf+SG%xVjuwcPT<&K9rIXO&8 z99qk#OEPWc}~JIlNOV39t^Ig%x=5hcm_ zxw)x%B@E6*sfi`2DGKG8B^e6tp1uLk*E^gBDpCb0N&!k)C4*Hk7#SEE>Kd5q8X1Qe u8CjVEk-4^kp_PGw^oMilC>nC}Q!>*kacjt0TXq|$fx*+&&t;ucLK6Ul)^Yy; literal 0 HcmV?d00001 diff --git a/smilies/pc_tense.gif b/smilies/pc_tense.gif deleted file mode 100644 index 1948969cb5b9c5e1a12b3b6a79beca5c8ff94bf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97 zcmZ?wbhEHb6krfw00PCIEUXL+Obj|84oIx=|9^)6?-+o@-Bp52MpIZ`Bjh=kGdoA;jnq$Hoj7BQ6GO0Hv2B;Q#;t diff --git a/smilies/pc_tense.png b/smilies/pc_tense.png new file mode 100644 index 0000000000000000000000000000000000000000..63b34e81c91cd71f044d76f86947da17761148a6 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-uKyYS|NqZ$ca`A(cMSb5 zCw~IP8B2ovf*Bm1-ADs+I14-?i-EKU7`vU!wgWP(JzX3_IIbrraPX!kB=GQ-CM59k z@+JrXiAI6M;KR#|j`;H4J{9oa^q;=b#*)ABZ9k$f#w)%G*viOo|G(6Pthk??+%DG-@!8yH#{7)XCOmyV(#H$NpatrE9} UthHsgff^V*UHx3vIVCg!0P`Dz zKq^5R8vp+XF&P*@6qC*r)|HjL+;^KlUf}k-A^l0WW{%RdXPT2#H>f@RT=}@g^=s-K W@5Sk1?-$?YVFlX64zWp(!5RSLSS%C( diff --git a/smilies/pccool.png b/smilies/pccool.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a15b38e13c1baa66c98add5a960d6340707d05 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^f_UDb4_&5LX6<|Ns93ISlq+&u;)y zj3q&S!3+-1Zlr-!6nI1y18EO1b~~AE2V!`-IEHXsPfpA_qR)q5MtZrDqcAviZbza&Gi+H&z-pp+^|DkZTb)hf9t6-Y4{85kPs8kp-E x8HX4dS(yTnxwe6!m4SiuhjZyD8glbfGSez?Ysgw#b{nXH!PC{xWt~$(696L2R^k8v literal 0 HcmV?d00001 diff --git a/smilies/pckitty.gif b/smilies/pckitty.gif deleted file mode 100644 index f84e97c737bb78eb2873ae1c0a34f0797ef9928e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107 zcmZ?wbhEHb6krfwSjfci|33o|-d!aKM2i0eor_WvOHxx5$}>wc6x=<10~i#4vM@3* zFf-^d00Br71C#n3_LY@;`K6lP2W08Zao~8-cwac{nP>0ZRa!c;r^TI~J8ka5z+667 G25SIYKO`Lh diff --git a/smilies/pckitty.png b/smilies/pckitty.png new file mode 100644 index 0000000000000000000000000000000000000000..6663bbea3c44824c39ef108e6c6e4fe964ca39cc GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|u6I`n{{PPaBsrJORRRh! zmIV0)GdMiEkp|)2>S5Zi;n?PRtckYVcS;uyklJvo7cH#H%F zhqp8#ftQyzK>$cJ3M2*}Ugp#hpwJ+Ym>9g=spG=b$b|x>D{e7}`-yCLEFH5AXn@!$3`PcqhPnpk zx<bP0l+XkKAnjII literal 0 HcmV?d00001 diff --git a/smilies/record.png b/smilies/record.png new file mode 100644 index 0000000000000000000000000000000000000000..d668c3eb85ae70a9a9115a347377d873995e417f GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^(jd&l3?x77k~s#XcmjMvT>t<74`c#KAhm5{j3AK1 zSQ6wH%;50sMjD8djc?PRtckkRSs;uyklJ-2@&FOwmU z>s%$}J7*^gYW#5XoZocDIb)^Y@(SfP$K&NCLcE%PR8D`a7n|6j@{hq{QPlTiMz?lM zVtsql)hX23SIGL-w8=WMtUr~sZ-l2`>^-w$ei!>r`R^yMzx_M?_rv1Xmhb=X{`bu= z{YTv;8~rPXYN}Su+NE)3nSAYY#)n^?+v>#s=(NB5V%4Woprg1;Tq8=7^K)}k^GX=p zO-$a#UXTL{tAd165=&C8l8aJ-6oZk0p`osUxvr6Mh>?+%DG-@!8yH#{7)XCOmyV(# cH$NpatrE9}thHsgff^V*UHx3vIVCg!0G)S=n*aa+ literal 0 HcmV?d00001 diff --git a/smilies/slimer.png b/smilies/slimer.png new file mode 100644 index 0000000000000000000000000000000000000000..aedb2baace95fbb55886a179abb108bd01337839 GIT binary patch literal 423 zcmeAS@N?(olHy`uVBq!ia0vp^qChOd!3-orr?xQyDVqSF5Z8Re84Uc)4E2%>|BV^! zc^Kx)17#TcWf=CWG2GX&x3{maumAu5KZ86QKR^He{ref->oeqwG3awL#0$Spjc*4k zW-JNv3ubV5b|VeMN%D4gVM|QgQ48d77I;J!18EO1b~~AE2V_k3ba4!kxEwn%P^ejf zhm}{qlgV}A-v6=QE{u2i+uqnH2v2+3(({znlHuLbnF%MHg%>Y;|5*Js$7Qx{1+g{T zpBTR2&(d`=VRE~X^G9OiyFBTXO_z3i9HU%hkA zuj=U1GcoJ-wXQqO>Az0%Z=2_0+evc4S2JBwji*10+@>GoTmF^(dl9Q@uSe=NpaWG) zTq8?+%DG-@!8yH#{7)XCOmyV(#H$NpatrE9} UthHsgff^V*UHx3vIVCg!0GkVoT>t<8 literal 0 HcmV?d00001 diff --git a/smilies/squiddle.png b/smilies/squiddle.png new file mode 100644 index 0000000000000000000000000000000000000000..9f16866f046b58f0b4187592378da9ed5f395905 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*v3?%uJ&DntzXMj(L>;M1%fz12$|7#Tkp8#2m zB|(0{3=Yq3q=7g|-tI1p|Cw~}fs_|`L>2>S4={E+nQaGTx>g1|&(zYk4< zMm`(XmlR{JmA_-Hlf>@9mF?pMEaldd)Mo6SDRl zn#UIF0&P|;ag8WRNi0dVN-jzTQVd20hK9NZ=DJ44Ax1`4ra)w_ZD43+U?BbBTsn$| c-29Zxv`X9>veuT}25MmNboFyt=akR{0QEIz=Kufz literal 0 HcmV?d00001 diff --git a/smilies/tab.png b/smilies/tab.png new file mode 100644 index 0000000000000000000000000000000000000000..6f5fa7a2e5b03d2910d3534fb4f53cdfb59f431e GIT binary patch literal 1332 zcmZ{iYgEz)7{*y1&njo@GEZxE*{NljdP2-JGh+!QX-aAx^OkAq%+jVr+3hqc!*bcO zPBv?iW_iqVOG!XLOfCW{iXbZD1x#)_Q_)2V@BV$GQ+BEf+-d>M04xUr*$~1TzQ~m~w)Kr@ zlzl3tQVG#~*v^7r4qTK2-wgNFwnU-)ua*wALLd?K_V&(|4?|cJL^cDS3#N~NFgp*` zI!Kimf8uoCXlST<%jNMPp#_M|aHR|0&qB1w?$5AR=wNRngujFRJP2UHfhM@A0_ixg z3|5|TY{&$RQP|6a!vaWZfpiJPiNN#ir`KA@Zi9I{3|N4ogk&)sZv}iK_%W?@`mtd% z1hJug0`laLDh6C5>|&YKrdfs_%7>tG7$)c7x)L&^))EbnJAr2c!#|*$1ab%L;g0tj zXE}O^5kg5nWVC|(1N_ksIIfj8Xx5o*d0k+c1KI!-s=#WS=o_;LP4H%9j;w$h9rR5> z#gIL!3C68(R5aOan3k9!yB&&pfMWp7G|)$(RBh53ZFl?OXBlW`Afm}qt(#JeL81^& zx4~o0`~`(^#9(_c0Ova4WSixU0nT?qt_+R{>}OSwBZKqunWx&hOKLbKnvWD3wT4gE z<#1U6DN;-E(DXy4{WrA@&o%ez5k~lZARGfMcjlhDZ$NG4_NxaqLoGdaB5&rlYH)Z+ zB9W-2%9#e!^b5Ul(6Fv8#DvuA3sPiw6bd`qllIvphwj6nsE%tw5VPoX$dOz`KmQ@9 zz2eLuq=w50xF4f8%TkiC3kt(pJ-_<)%Kcv-UoE~>TIzDB-dqgWy}H0GKso?cnP zxc2N`U19YjHWht0$8iyUW2(y`U-FqH&Ii00Ij7bn>h1F4+FLJ6%bziJM)x#JqMD>~wMZ55j!;k}+l_i2h~Dha z@7<~JZ`~Rn8HriHeEsV8uHz??maZ_b(3`zn);^&XFI*N8dDAB(oZw3(gsPnDiypLI z`M6_Cm%B%t@1|Za<@bKFfzWr}>&n>JDs*L~zlesTZ>tYGNU2#}#x9eKYb8}IH|F8p z?dXQsChn3l_CRON_7~ke+S4tYq(lLYwX7&#c9c!*5U@yFaMn5_YhYa93#A$5AoAuoTZYcShDxuiGx|* zmt={SI%eKFo!#Nfuh--|p-{N;hs0G``81>^8%g*W((z-Y)PR(nR76l1w70hx+RqE) v6OF+H_#)%yf%XnSqg_9=r~fB#D*JdwTHgN$PP`(kkpPN-568XUlSKI!CB_AB literal 0 HcmV?d00001 diff --git a/smilies/theprofessor.gif b/smilies/theprofessor.gif deleted file mode 100644 index 45c863c846addefc9406fb4dc5027f0b25cf0e79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmV+g0s8(&Nk%w1VI}}10Pz6;00030|Nj6000000A^8LW00062EC2ui044w=0008k zl#i*vpby<^AlSfQ%0g0lU7Xe(O;?5L%1OwWrt7SZrfbNwzEkB*6Jctzj4j8rFht9u z>)F`#ddD0Kbfs>vye?OXvxcHW%x644nb3|dTbWj_h2}GwZU)cum`*zC^U)$!(bRS) z6BzbV7K6nHS;fe;B=~4X;+H3wRkt_+W=K{Chnea3XlYn?ibTp}=hKQ3n&kO23+UN& zE2%+NsM_ZH3k(}PI{{*=mi!WYdGgs>xhsg`{5%9Li<^C^_mq7TEAIWxZ8MGDZ8H7~ L|Gp6KTmS$&^b2=6 diff --git a/smilies/theprofessor.png b/smilies/theprofessor.png new file mode 100644 index 0000000000000000000000000000000000000000..9a7b6ed81c845c2a927d6611364d9ee4113aeccd GIT binary patch literal 457 zcmeAS@N?(olHy`uVBq!ia0vp^YCx>Q!2%@x|1{_UDW)WEcNd2L?fqx=19_YU9+AaB z+5?Q;PG;LNFfej^x;Tb-9A7%+qFA#5hx5<>^V5!R&Qw(Ku&ycGe8FeZL}s+ z(Q)Yy|K1o%Dy~;Jzgt>ubHmz=3toTSog=l>>4)y+s0Xh!icC*QeGyvDvrw?SbS05_UmEzWDSsJ^-@8pu3 zTl#I2x<%TrYOJ=i(6f?a>d6sGi)>zW?@t)_@3L~q?as}ImmI6N?PJ_9lzd z_AJWTZC0kloFdPb*FWQbo4`I97G~MQA&(T_NPK0iHm=_pT*kZ#7(S{ct`Q|Ei6yC4 z$wjF^iowXh&`{UFT-V4r#K_3X6o|~V4GgUe45UAtOGnX=o1c=IR*73f*4nb$Kn)C@ Lu6{1-oD!MgxLcAH;wF#h)yU3=Av`Iv_4cEd#TOhu7tM z+MC>;E-8IzEA~TPv`3k79^cA&3m&Xekv98aaYEB(VgIedIoux>N(h-A>$un$qb0;( F4FHAgBEJ9t diff --git a/smilies/trollcool.png b/smilies/trollcool.png new file mode 100644 index 0000000000000000000000000000000000000000..76dc24788f628242e471449c2b2f2f9f467dcb25 GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^frKf`UX$%*@OfHipC`=&YC_Foo5G zWzk`QG?^0)EZm7kX15>cFl^b$J^R?6@A^PUO_QmvAUQh^kMk%6J1u7SC( yk#UHTk(DVBnQI#uS{WEfe>j(pq9HdwB{QuOw}z~>Ww(JE7(8A5T-G@yGywpKz)!mX literal 0 HcmV?d00001 diff --git a/smilies/weasel.png b/smilies/weasel.png new file mode 100644 index 0000000000000000000000000000000000000000..aec489dbe2f6b9c27f6d72b80a8fc87724cb900c GIT binary patch literal 493 zcmeAS@N?(olHy`uVBq!ia0vp^-au^2#0(^7MAs|@Qk(%kA+E;8|AEZ^|Nrxf>ShC3 zj3q&S!3+-1Zlr-YN#5=*3>~bp9w6lf9+AaB8pQTsa66f82UNi4>Eak-ar*A%jYWqQ zco+f-)635>?Csv)rg&E};N2gb@%MG+weLk_o>j+%OW#1n8i+AOLJLt^VYU&wGVcNXqmk3 zWIldZML>F|_j%PQgS;930W9lgy}fG0;G6c(&V2_`O|L)RvZ-C+{V~I$=ND5AUpzDL&GOTiT^c^;cCY*G zp7%v_jtgbk^O+_6n##Rnw)FSu(vb?o${|gx8l&7%G{`fx4x}=|LJ39e9>QH zor_0~T8Rs9xBt5GD{ttU9{SyeVIYje7?FpHVtd!_K&uzS`bKoe9; zTq8?+%DG-@!8yH#{7)XCOmyV(#H$NpatrE9} UthHsgff^V*UHx3vIVCg!0EhWZ=>Px# literal 0 HcmV?d00001 diff --git a/smilies/whatpumpkin.gif b/smilies/whatpumpkin.gif deleted file mode 100644 index 92f05e00b04a76495d173f216db4c669fe8f6bb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264 zcmV+j0r&n#Nk%w1VH^M$0HOx~P+>w_d_H1L8Qi4-y^IL}009550RR90A^8LW000L7 zEC2ui02}}q000Bcc)DE0Fv?W`cr(Y!9oAbR6hUwigabCjU>KxX5W?VToqxVl54QleMGPDz(+8Z1Fi5brO@$q$6$av5A%@62RQxG z)lgglHEu`)BSvs{eF8j;JZfqVTQ63MP?u0!Hb8cXe2;OETn;;2pp|wmo=~KriFikl zn1_y-Vw9qfLlee}lY`kf(iLsc%QX+V&os@;c5H-%9$3fB%Ge9ksPe)NwA%BKk O?6gqG^c$ diff --git a/smilies/whatpumpkin.png b/smilies/whatpumpkin.png new file mode 100644 index 0000000000000000000000000000000000000000..57d127591593c40f6ebf7cba2bc128627b584e4a GIT binary patch literal 458 zcmeAS@N?(olHy`uVBq!ia0vp^GC(ZB!VDy(H#KYoaRPioT>t<74`c=;Iwko^M%UQw z?cuz$l=1(1hV@_eTmwolmIV0)GdMiEkp|)x2UhF|-8RdyDJErtn!wsDA)c78U5;`q*PPf`>i5>W zx~o)RQvJU=4o>4syX12(Pn!Pa)-toOO;h<_=mob5#v9%N`ct*UHKHUXu_Vlzt{7#Ufa0+G44fuWUwf%J!S=_nd<^HVa@DsgMbT3dD-sDZ)L)z4*} HQ$iB}41TOe literal 0 HcmV?d00001 From 98b681fa56d3295cc1af39709a44775369c1e8af Mon Sep 17 00:00:00 2001 From: Lexi Date: Thu, 11 Aug 2011 09:17:53 +0100 Subject: [PATCH 11/13] Created ostools module to unify OSX integration and made everything use it. --- irc.py | 4 +-- logviewer.py | 15 ++++------ ostools.py | 18 ++++++++++++ pesterchum.py | 78 ++++++++++++++++++--------------------------------- pyquirks.py | 6 ++-- 5 files changed, 55 insertions(+), 66 deletions(-) create mode 100644 ostools.py diff --git a/irc.py b/irc.py index 16400c5..f73b9de 100644 --- a/irc.py +++ b/irc.py @@ -11,8 +11,8 @@ from dataobjs import Mood, PesterProfile from generic import PesterList from version import _pcVersion -import sys, os -if sys.platform == "darwin" and os.path.abspath('.').find('.app') != -1: +import ostools +if ostools.isOSXBundle(): logging.basicConfig(level=logging.WARNING) else: logging.basicConfig(level=logging.INFO) diff --git a/logviewer.py b/logviewer.py index f11df3e..91896d7 100644 --- a/logviewer.py +++ b/logviewer.py @@ -1,6 +1,7 @@ import os, sys import codecs import re +import ostools from time import strftime, strptime from PyQt4 import QtGui, QtCore from generic import RightClickList, RightClickTree @@ -41,10 +42,7 @@ class PesterLogUserSelect(QtGui.QDialog): self.theme = theme self.parent = parent self.handle = parent.profile().handle - if sys.platform != "darwin": - self.logpath = "logs" - else: - self.logpath = _datadir+"logs" + self.logpath = _datadir+"logs" self.setStyleSheet(self.theme["main/defaultwindow/style"]) self.setWindowTitle("Pesterlogs") @@ -125,8 +123,8 @@ class PesterLogUserSelect(QtGui.QDialog): @QtCore.pyqtSlot() def openDir(self): - if sys.platform == "darwin": - _datadir = os.path.join(str(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.DataLocation)),"Pesterchum/") + if ostools.isOSX(): + _datadir = ostools.getDataDir() QtGui.QDesktopServices.openUrl(QtCore.QUrl("file:///" + os.path.join(_datadir, "logs"), QtCore.QUrl.TolerantMode)) else: QtGui.QDesktopServices.openUrl(QtCore.QUrl("file:///" + os.path.join(os.getcwd(), "logs"), QtCore.QUrl.TolerantMode)) @@ -143,10 +141,7 @@ class PesterLogViewer(QtGui.QDialog): self.handle = parent.profile().handle self.chum = chum self.convos = {} - if sys.platform != "darwin": - self.logpath = "logs" - else: - self.logpath = _datadir+"logs" + self.logpath = _datadir+"logs" self.setStyleSheet(self.theme["main/defaultwindow/style"]) self.setWindowTitle("Pesterlogs with " + self.chum) diff --git a/ostools.py b/ostools.py new file mode 100644 index 0000000..68d980e --- /dev/null +++ b/ostools.py @@ -0,0 +1,18 @@ +from os import path +from sys import platform +from PyQt4.QtGui import QDesktopServices + +def isOSX(): + return platform == "darwin" + +def isWin32(): + return platform == "win32" + +def isOSXBundle(): + return isOSX() and path.abspath('.').find(".app") + +def getDataDir(): + if isOSX(): + return path.join(str(QDesktopServices.storageLocation(QDesktopServices.DataLocation)), "Pesterchum/") + else: + return '' diff --git a/pesterchum.py b/pesterchum.py index c73d4ea..ae9a646 100644 --- a/pesterchum.py +++ b/pesterchum.py @@ -12,6 +12,7 @@ import codecs import re import socket import platform +import ostools from time import strftime, time missing = [] @@ -46,25 +47,19 @@ if not ((major > 4) or (major == 4 and minor >= 6)): # OSX's data directory and it doesn't hurt to have everything set up before # plowing on. :o) # ~Lex -_datadir = os.path.join(str(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.DataLocation)),"Pesterchum/") -if sys.platform == "darwin": - if not os.path.exists(_datadir): - os.mkdir(_datadir) - if not os.path.exists(_datadir+"profiles"): - os.mkdir(_datadir+"profiles") - if not os.path.exists(_datadir+"pesterchum.js"): - f = open(_datadir+"pesterchum.js", 'w') - f.write("{}") - f.close() -else: - if not os.path.exists("logs"): - os.mkdir("logs") - if not os.path.exists("profiles"): - os.mkdir("profiles") - if not os.path.exists("pesterchum.js"): - f = open("pesterchum.js", 'w') - f.write("{}") - f.close() +_datadir = ostools.getDataDir() +# See, what I've done here is that _datadir is '' if we're not on OSX, so the +# concatination is the same as if it wasn't there. +if not os.path.exists(_datadir): + os.mkdir(_datadir) +if not os.path.exists(_datadir+"profiles"): + os.mkdir(_datadir+"profiles") +if not os.path.exists(_datadir+"pesterchum.js"): + f = open(_datadir+"pesterchum.js", 'w') + f.write("{}") + f.close() +if not os.path.exists(_datadir+"logs"): + os.mkdir(_datadir+"logs") from menus import PesterChooseQuirks, PesterChooseTheme, \ PesterChooseProfile, PesterOptions, PesterUserlist, PesterMemoList, \ @@ -124,10 +119,7 @@ class PesterLog(object): self.parent = parent self.handle = handle self.convos = {} - if sys.platform != "darwin": - self.logpath = "logs" - else: - self.logpath = _datadir+"logs" + self.logpath = _datadir+"logs" def log(self, handle, msg): if self.parent.config.time12Format(): @@ -181,10 +173,7 @@ class PesterLog(object): class PesterProfileDB(dict): def __init__(self): - if sys.platform != "darwin": - self.logpath = "logs" - else: - self.logpath = _datadir+"logs" + self.logpath = _datadir+"logs" if not os.path.exists(self.logpath): os.makedirs(self.logpath) @@ -248,12 +237,9 @@ class PesterProfileDB(dict): class pesterTheme(dict): def __init__(self, name, default=False): - if sys.platform != "darwin": + self.path = _datadir+"themes/%s" % (name) + if not os.path.exists(self.path): self.path = "themes/%s" % (name) - else: - self.path = _datadir+"themes/%s" % (name) - if not os.path.exists(self.path): - self.path = "themes/%s" % (name) self.name = name fp = open(self.path+"/style.js") @@ -327,10 +313,7 @@ class userConfig(object): # Use for bit flag blink self.PBLINK = 1 self.MBLINK = 2 - if sys.platform != "darwin": - self.filename = "pesterchum.js" - else: - self.filename = _datadir+"pesterchum.js" + self.filename = _datadir+"pesterchum.js" fp = open(self.filename) self.config = json.load(fp) fp.close() @@ -339,10 +322,7 @@ class userConfig(object): else: self.userprofile = None - if sys.platform != "darwin": - self.logpath = "logs" - else: - self.logpath = _datadir+"logs" + self.logpath = _datadir+"logs" if not os.path.exists(self.logpath): os.makedirs(self.logpath) @@ -537,11 +517,13 @@ class userConfig(object): fp.close() def availableThemes(self): themes = [] - for dirname, dirnames, filenames in os.walk('themes'): + # Load user themes. + for dirname, dirnames, filenames in os.walk(_datadir+'themes'): for d in dirnames: themes.append(d) - if sys.platform == "darwin": - for dirname, dirnames, filenames in os.walk(_datadir+'themes'): + # For OSX, also load embedded themes. + if ostools.isOSX(): + for dirname, dirnames, filenames in os.walk('themes'): for d in dirnames: if d not in themes: themes.append(d) @@ -549,10 +531,7 @@ class userConfig(object): return themes def availableProfiles(self): profs = [] - if sys.platform == "darwin": - profileloc = _datadir+'profiles' - else: - profileloc = 'profiles' + profileloc = _datadir+'profiles' for dirname, dirnames, filenames in os.walk(profileloc): for filename in filenames: l = len(filename) @@ -562,10 +541,7 @@ class userConfig(object): return [userProfile(p) for p in profs] class userProfile(object): def __init__(self, user): - if sys.platform != "darwin": - self.profiledir = "profiles" - else: - self.profiledir = _datadir+"profiles" + self.profiledir = _datadir+"profiles" if type(user) is PesterProfile: self.chat = user diff --git a/pyquirks.py b/pyquirks.py index f13df83..57d3d38 100644 --- a/pyquirks.py +++ b/pyquirks.py @@ -1,9 +1,9 @@ -import os, sys, imp, re +import os, sys, imp, re, ostools from PyQt4 import QtGui, QtCore class PythonQuirks(object): def __init__(self): - self._datadir = os.path.join(str(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.DataLocation)),"Pesterchum/") + self._datadir = ostools.getDataDir() self.home = os.getcwd() self.quirks = {} self.last = {} @@ -18,7 +18,7 @@ class PythonQuirks(object): for fn in os.listdir(os.path.join(self.home, 'quirks')): if fn.endswith('.py') and not fn.startswith('_'): filenames.append(os.path.join(self.home, 'quirks', fn)) - if sys.platform == "darwin": + if ostools.isOSX(): if not os.path.exists(os.path.join(self._datadir, 'quirks')): os.mkdir(os.path.join(self._datadir, 'quirks')) for fn in os.listdir(os.path.join(self._datadir, 'quirks')): From c0d590759b8ac833c111ec9b6be86ac5f6a7922e Mon Sep 17 00:00:00 2001 From: Lexi Date: Thu, 11 Aug 2011 09:59:51 +0100 Subject: [PATCH 12/13] Made animated smilies show up as static in OSX bundles so they actually show up --- menus.py | 22 ++++++++++++---------- ostools.py | 2 +- parsetools.py | 11 +++++++++++ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/menus.py b/menus.py index c89e328..49ff88b 100644 --- a/menus.py +++ b/menus.py @@ -1,5 +1,5 @@ from PyQt4 import QtGui, QtCore -import re +import re, ostools from os import remove from generic import RightClickList, RightClickTree, MultiTextDialog @@ -984,13 +984,14 @@ class PesterOptions(QtGui.QDialog): if self.config.opvoiceMessages(): self.memomessagecheck.setChecked(True) - self.animationscheck = QtGui.QCheckBox("Use animated smilies", self) - if self.config.animations(): - self.animationscheck.setChecked(True) - animateLabel = QtGui.QLabel("(Disable if you leave chats open for LOOOONG periods of time)") - font = animateLabel.font() - font.setPointSize(8) - animateLabel.setFont(font) + if not ostools.isOSXBundle(): + self.animationscheck = QtGui.QCheckBox("Use animated smilies", self) + if self.config.animations(): + self.animationscheck.setChecked(True) + animateLabel = QtGui.QLabel("(Disable if you leave chats open for LOOOONG periods of time)") + font = animateLabel.font() + font.setPointSize(8) + animateLabel.setFont(font) self.userlinkscheck = QtGui.QCheckBox("Disable #Memo and @User Links", self) self.userlinkscheck.setChecked(self.config.disableUserLinks()) @@ -1121,8 +1122,9 @@ class PesterOptions(QtGui.QDialog): layout_chat.addWidget(self.timestampBox) layout_chat.addWidget(self.secondscheck) layout_chat.addWidget(self.memomessagecheck) - layout_chat.addWidget(self.animationscheck) - layout_chat.addWidget(animateLabel) + if not ostools.isOSXBundle(): + layout_chat.addWidget(self.animationscheck) + layout_chat.addWidget(animateLabel) if parent.randhandler.running: layout_chat.addWidget(self.randomscheck) # Re-enable these when it's possible to disable User and Memo links diff --git a/ostools.py b/ostools.py index 68d980e..294437f 100644 --- a/ostools.py +++ b/ostools.py @@ -9,7 +9,7 @@ def isWin32(): return platform == "win32" def isOSXBundle(): - return isOSX() and path.abspath('.').find(".app") + return isOSX() and (path.abspath('.').find(".app") != -1) def getDataDir(): if isOSX(): diff --git a/parsetools.py b/parsetools.py index 53fc7d7..19be1bf 100644 --- a/parsetools.py +++ b/parsetools.py @@ -1,5 +1,6 @@ import re import random +import ostools from copy import copy from datetime import timedelta from PyQt4 import QtGui @@ -425,6 +426,16 @@ smiledict = { ":acceptant:": "acceptant.png", } +if ostools.isOSXBundle(): + for emote in smiledict: + graphic = smiledict[emote] + if graphic.find(".gif"): + graphic = graphic.replace(".gif", ".png") + smiledict[emote] = graphic + + + + reverse_smiley = dict((v,k) for k, v in smiledict.iteritems()) _smilere = re.compile("|".join(smiledict.keys())) From 9f9563e3ad0eef8c01077c884f7e7c8448fc56cf Mon Sep 17 00:00:00 2001 From: Lexi Date: Sun, 14 Aug 2011 07:17:50 +0100 Subject: [PATCH 13/13] Fiddled with the MacBuild configure scripts to set the deployment target to 10.5 Still need to include instructions on compiling pygame for 10.5 but CBAAAAAA --- MacBuild/configure_python.sh | 4 ++-- MacBuild/configure_sip.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/MacBuild/configure_python.sh b/MacBuild/configure_python.sh index aa17831..3ecb051 100755 --- a/MacBuild/configure_python.sh +++ b/MacBuild/configure_python.sh @@ -10,7 +10,7 @@ then exit 1 fi cd python -if [! -d python ] +if [ ! -d python ] then echo "Rename your python folder to python." exit 1 @@ -19,5 +19,5 @@ if [ -e makefile ] then make clean fi -./configure --enable-framework --enable-universalsdk=/ --with-universal-archs=intel MACOSX_DEPLOYMENT_TARGET=10.6 +./configure --enable-framework --enable-universalsdk=/ --with-universal-archs=intel MACOSX_DEPLOYMENT_TARGET=10.5 echo "---~ Done ~---" diff --git a/MacBuild/configure_sip.sh b/MacBuild/configure_sip.sh index a7ea1c5..e8b66a1 100755 --- a/MacBuild/configure_sip.sh +++ b/MacBuild/configure_sip.sh @@ -16,6 +16,6 @@ then make clean fi python configure.py --arch=i386 --arch=x86_64 \ - --universal --deployment-target=10.6 \ + --universal --deployment-target=10.5 \ --destdir=/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/ echo "---~ Done ~---"