Merge branch 'master' of github.com:kiooeht/pesterchum

Conflicts:
	version.py
This commit is contained in:
Kiooeht 2011-12-20 19:02:59 -08:00
commit e1284e9439
841 changed files with 5340 additions and 159 deletions

View file

@ -13,7 +13,13 @@ Visit http://nova.xzibition.com/~illuminatedwax/help.html for tutorial.
CHANGELOG CHANGELOG
--------- ---------
### 3.41.2 ## 3.41.4
* Makefile for Linux installing - Kiooeht [evacipatedBox]
* Bug fixes
* Don't require pygame (it's kind of optional, you just don't get sound) - Kiooeht [evacipatedBox]
* Allow add chum dialog to opne after adding an existing chum - Kiooeht [evacipatedBox]
### 3.41.3
* Add group option when adding chum - ghostDunk * Add group option when adding chum - ghostDunk
* OOC Mode - ghostDunk * OOC Mode - ghostDunk
* Improve animated gifs - ghostDunk * Improve animated gifs - ghostDunk
@ -39,7 +45,9 @@ CHANGELOG
* New smilies - Kiooeht [evacipatedBox] * New smilies - Kiooeht [evacipatedBox]
* Refresh theme in options - Kiooeht [evacipatedBox] * Refresh theme in options - Kiooeht [evacipatedBox]
* Separate tabbed/untabbed windows for conversaions and memos - Kiooeht [evacipatedBox] * Separate tabbed/untabbed windows for conversaions and memos - Kiooeht [evacipatedBox]
* Manually rearrange chumroll - Kiooeht [evacipatedBox] (Idea: [turntableAbbess (aka. TA or SGRILL)]) * Manually rearrange chumroll - Kiooeht [evacipatedBox] (Idea: [turntableAbbess (aka. TA of SGRILL)])
* Using user data directory for all OSs - Kiooeht [evacipatedBox]
* Lots more user created themes - ghostDunk
* Bug fixes * Bug fixes
* Don't delete random chum when blocking someone not on chumroll - Kiooeht [evacipatedBox] * Don't delete random chum when blocking someone not on chumroll - Kiooeht [evacipatedBox]
* Openning global userlist doesn't reset OP status of memo users - Kiooeht [evacipatedBox] * Openning global userlist doesn't reset OP status of memo users - Kiooeht [evacipatedBox]

36
Makefile Normal file
View file

@ -0,0 +1,36 @@
PYTHON2_CMD ?= /usr/bin/python
PREFIX ?= /usr/local
LIBINSTALLDIR ?= /lib
XDGCONFDIR ?= /etc/xdg
PESTERCHUMBINDIR = ${DESTDIR}${PREFIX}/bin
PESTERCHUMLIBDIR = $(DESTDIR)$(PREFIX)$(LIBINSTALLDIR)/pesterchum
all:
@echo "Ready to install..."
make-install-dirs:
mkdir -p ${PESTERCHUMBINDIR}
mkdir -p ${PESTERCHUMLIBDIR}
mkdir -p ${PESTERCHUMLIBDIR}/libs
mkdir -p ${PESTERCHUMLIBDIR}/oyoyo
mkdir -p ${PESTERCHUMLIBDIR}/quirks
mkdir -p ${PESTERCHUMLIBDIR}/smilies
mkdir -p ${PESTERCHUMLIBDIR}/themes
uninstall:
rm -f ${PESTERCHUMBINDIR}/pesterchum
rm -rf ${PESTERCHUMLIBDIR}
install: make-install-dirs
cp *.py ${PESTERCHUMLIBDIR}
cp libs/*.py ${PESTERCHUMLIBDIR}/libs
cp oyoyo/*.py ${PESTERCHUMLIBDIR}/oyoyo
cp quirks/*.py ${PESTERCHUMLIBDIR}/quirks
cp smilies/* ${PESTERCHUMLIBDIR}/smilies
cp -r themes/* ${PESTERCHUMLIBDIR}/themes
@echo '#!/bin/sh' > ${PESTERCHUMBINDIR}/pesterchum
@echo 'cd ${PREFIX}$(LIBINSTALLDIR)/pesterchum' >> ${PESTERCHUMBINDIR}/pesterchum
@echo 'python2 pesterchum.py' >> ${PESTERCHUMBINDIR}/pesterchum
chmod +x ${PESTERCHUMBINDIR}/pesterchum

View file

@ -1,29 +1,19 @@
Welcome to Pesterchum 3.14.1! Welcome to Pesterchum 3.41!
============================= =============================
WHAT'S NEW? WHAT'S NEW?
----------- -----------
* Quirks now have a lower(), scramble(), and reverse() function! * Check out the CHANGELOG file to see what's changed!
* Timestamps - check your Config!
* Logviewer - View logs right in Pesterchum! What do I do now?
* Quirk ordering - order your quirks so they work right! -----------------
* # of users in a memo - You can now see how many users are in a memo.
* @links to users - typing @ before user's name creates a link Most questions can be answered by visiting the forums! Go to HELP->HELP
that will pester them! and you'll be transported to the proper thread!
* Support for REPORT and ALT to calSprite built in -
If someone is bothering you, or a canon handle is idle, or
for whatever reason, right click their name and go to "Report"
to report them to a moderator.
If you want to talk to an alt canon handle, just right click
the username!
if you have an alt handle, register it with calSprite!
Here's some tips to help you get started: Here's some tips to help you get started:
----------------------------------------- -----------------------------------------
- You can import your old Pesterchum contacts by going to
CLIENT->IMPORT and opening your pesterchum.cfg file. This is usually
in the 2.5 base directory or in Tinychum's data folder.
- Some themes can be confusing if you haven't used the program - Some themes can be confusing if you haven't used the program
already! Some hints: already! Some hints:
* Trollian: Moods are set by clicking the timelines, and you * Trollian: Moods are set by clicking the timelines, and you
@ -44,8 +34,6 @@ online userlist, or the list of memo browsers.
Cool features: Cool features:
-------------- --------------
- Importing from old PC. It can already do your chumlist, soon it will
import your quirks from 2.5 and TC as well!
- Profile switching. Instantly switch profiles, loading your color and - Profile switching. Instantly switch profiles, loading your color and
quirks with it. quirks with it.
- Theme switching and creation. So far this comes with a few official - Theme switching and creation. So far this comes with a few official
@ -782,3 +770,4 @@ Here's a list of smilies:
* :olliesouty: * :olliesouty:
* :billiards: * :billiards:
* :billiardslarge: * :billiardslarge:
* :whatdidyoudo:

View file

@ -26,6 +26,7 @@ Features
* Make toast notifications only on certain chums * Make toast notifications only on certain chums
* Local alisas for chums * Local alisas for chums
* Italics/uderline - needed for canon * Italics/uderline - needed for canon
* Don't make new windows be all in your face and shit
Bugs Bugs
---- ----
@ -36,6 +37,8 @@ Bugs
* Closing a timeclone doesn't actually cease for everyone else * Closing a timeclone doesn't actually cease for everyone else
* Kill Zalgo * Kill Zalgo
* Random invisible, tiny links to last link at end of every message * Random invisible, tiny links to last link at end of every message
* if you change the capitals on a memo name when entering. Userlist goes blank.
* Clicking link to invite-only memo crashes
Windows Bugs Windows Bugs
------------ ------------

View file

@ -125,10 +125,7 @@ class PesterLogUserSelect(QtGui.QDialog):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def openDir(self): def openDir(self):
if ostools.isOSX(): QtGui.QDesktopServices.openUrl(QtCore.QUrl("file:///" + os.path.join(_datadir, "logs"), QtCore.QUrl.TolerantMode))
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))
class PesterLogViewer(QtGui.QDialog): class PesterLogViewer(QtGui.QDialog):
def __init__(self, chum, config, theme, parent): def __init__(self, chum, config, theme, parent):

View file

@ -7,6 +7,8 @@ from dataobjs import pesterQuirk, PesterProfile
from memos import TimeSlider, TimeInput from memos import TimeSlider, TimeInput
from version import _pcVersion from version import _pcVersion
_datadir = ostools.getDataDir()
class PesterQuirkItem(QtGui.QTreeWidgetItem): class PesterQuirkItem(QtGui.QTreeWidgetItem):
def __init__(self, quirk): def __init__(self, quirk):
parent = None parent = None
@ -890,7 +892,7 @@ class PesterChooseProfile(QtGui.QDialog):
ret = msgbox.exec_() ret = msgbox.exec_()
if ret == QtGui.QMessageBox.Ok: if ret == QtGui.QMessageBox.Ok:
try: try:
remove("profiles/%s.js" % (handle)) remove(_datadir+"profiles/%s.js" % (handle))
except OSError: except OSError:
problem = QtGui.QMessageBox() problem = QtGui.QMessageBox()
problem.setStyleSheet(self.theme["main/defaultwindow/style"]) problem.setStyleSheet(self.theme["main/defaultwindow/style"])

View file

@ -28,6 +28,8 @@ def osVer():
def getDataDir(): def getDataDir():
if isOSX(): if isOSX():
return os.path.join(str(QDesktopServices.storageLocation(QDesktopServices.DataLocation)), "Pesterchum/") return os.path.join(str(QDesktopServices.storageLocation(QDesktopServices.DataLocation).toLatin1()), "Pesterchum/")
elif isLinux():
return os.path.join(str(QDesktopServices.storageLocation(QDesktopServices.HomeLocation).toLatin1()), ".pesterchum/")
else: else:
return '' return os.path.join(str(QDesktopServices.storageLocation(QDesktopServices.DataLocation).toLatin1()), "pesterchum/")

View file

@ -428,6 +428,7 @@ smiledict = {
":olliesouty:": "olliesouty.gif", ":olliesouty:": "olliesouty.gif",
":billiards:": "poolballS.gif", ":billiards:": "poolballS.gif",
":billiardslarge:": "poolballL.gif", ":billiardslarge:": "poolballL.gif",
":whatdidyoudo:": "whatdidyoudo.gif",
} }
if ostools.isOSXBundle(): if ostools.isOSXBundle():

View file

@ -0,0 +1,104 @@
; The name of the installer
Name "PESTERCHUM3.14 to 3.41"
; The file to write
OutFile "pesterchum3.14to3.41.exe"
RequestExecutionLevel admin
Page components
Page instfiles
UninstPage uninstConfirm
UninstPage instfiles
; The stuff to install
Section "Pesterchum"
SectionIn RO
ReadRegStr $INSTDIR HKLM "SOFTWARE\Pesterchum" "Install_Dir"
StrCmp $INSTDIR "" error
; Set output path to the installation directory.
SetOutPath $INSTDIR
; Check and see if this is really 3.14
IfFileExists library.zip 0 error
ClearErrors
CreateDirectory $TEMP\pesterchum_backup
IfErrors backuperror 0
CopyFiles $INSTDIR\pesterchum.js $TEMP\pesterchum_backup
CopyFiles $INSTDIR\profiles $TEMP\pesterchum_backup
CopyFiles $INSTDIR\logs $TEMP\pesterchum_backup
IfErrors cantcopy 0
Delete $INSTDIR\uninstall.exe
; Remove shortcuts, if any
Delete "$SMPROGRAMS\Pesterchum\*.*"
; Remove directories used
RMDir "$SMPROGRAMS\Pesterchum"
RMDir /r "$INSTDIR"
; Put file there
File /r *.*
Rename $INSTDIR\README.mkdn $INSTDIR\readme.txt
Rename $INSTDIR\CHANGELOG.mkdn $INSTDIR\changelog.txt
; Copy backup files
ClearErrors
CopyFiles $TEMP\pesterchum_backup\*.* $INSTDIR
IfErrors brokeinstall 0
RMDIR /r "$TEMP\pesterchum_backup"
WriteUninstaller "uninstall.exe"
CreateDirectory "$SMPROGRAMS\Pesterchum"
CreateShortcut "$SMPROGRAMS\Pesterchum\Pesterchum.lnk" "$INSTDIR\pesterchum.exe"
CreateShortcut "$DESKTOP\Pesterchum.lnk" "$INSTDIR\pesterchum.exe"
CreateShortcut "$SMPROGRAMS\Pesterchum\Readme.lnk" "$INSTDIR\readme.txt"
CreateShortcut "$SMPROGRAMS\Pesterchum\Uninstall.lnk" "$INSTDIR\uninstall.exe"
CreateShortcut "$SMPROGRAMS\Pesterchum\Logs.lnk" "$LOCALAPPDATA\pesterchum\logs"
Goto done
error:
MessageBox MB_OK "Pesterchum 3.14 (or 3.41 beta) not found on this machine!"
Goto done
backuperror:
IfFileExists $TEMP\pesterchum_backup brokeinstall cantmaketmp
cantmaketmp:
MessageBox MB_OK "Error! Can't make temporary directory (to save your files) for some raisin. Check your privileges?? i dunno tbqh, soryr *sorry"
Goto done
brokeinstall:
MessageBox MB_OK "Broken install detected. Please copy the files in $TEMP\pesterchum_backup to some place safe and then delete that folder."
Goto done
cantcopy:
MessageBox MB_OK "Can't seem to copy Pesterchum backup files to temp directory."
Goto done
done:
SectionEnd
Section "Uninstall"
; Remove registry keys
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pesterchum"
DeleteRegKey HKLM SOFTWARE\Pesterchum
; Remove files and uninstaller
Delete $INSTDIR\uninstall.exe
; Remove shortcuts, if any
Delete "$SMPROGRAMS\Pesterchum\*.*"
; Remove directories used
RMDir "$SMPROGRAMS\Pesterchum"
RMDir /r "$INSTDIR"
SectionEnd

View file

@ -1,9 +1,9 @@
; The name of the installer ; The name of the installer
Name "PESTERCHUM3.418" Name "PESTERCHUM3.41"
; The file to write ; The file to write
OutFile "pesterchum3.418.update.exe" OutFile "pesterchum3.41.update.exe"
RequestExecutionLevel admin RequestExecutionLevel admin
@ -25,13 +25,19 @@ Section "Pesterchum"
; Put file there ; Put file there
File /r themes File /r themes
File /r smilies File /r smilies
File library.zip File /r quirks
File README.mkdn
File CHANGELOG.mkdn
File version.py
File pesterchum.exe File pesterchum.exe
File pesterchum.exe.manifest
Rename $INSTDIR\README.mkdn $INSTDIR\readme.txt
Rename $INSTDIR\CHANGELOG.mkdn $INSTDIR\changelog.txt
Delete "$SMPROGRAMS\Pesterchum\Pesterchum.lnk" Delete "$SMPROGRAMS\Pesterchum\Pesterchum.lnk"
Delete "$SMPROGRAMS\Pesterchum\PesterChumDebug.lnk"
CreateShortcut "$SMPROGRAMS\Pesterchum\Pesterchum.lnk" "$INSTDIR\pesterchum.exe" CreateShortcut "$SMPROGRAMS\Pesterchum\Pesterchum.lnk" "$INSTDIR\pesterchum.exe"
CreateShortcut "$SMPROGRAMS\Pesterchum\PesterchumDebug.lnk" "$INSTDIR\pesterchum_debug.exe"
Goto done Goto done
error: error:

View file

@ -1,9 +1,9 @@
; The name of the installer ; The name of the installer
Name "PESTERCHUM3.418" Name "PESTERCHUM3.41"
; The file to write ; The file to write
OutFile "pesterchum3.418.exe" OutFile "pesterchum3.41.exe"
InstallDir C:\Pesterchum InstallDir C:\Pesterchum
@ -28,7 +28,9 @@ Section "Pesterchum"
; Put file there ; Put file there
File /r *.* File /r *.*
Rename $INSTDIR\README.mkdn $INSTDIR\readme.txt
Rename $INSTDIR\CHANGELOG.mkdn $INSTDIR\changelog.txt
; Write the installation path into the registry ; Write the installation path into the registry
WriteRegStr HKLM SOFTWARE\Pesterchum "Install_Dir" "$INSTDIR" WriteRegStr HKLM SOFTWARE\Pesterchum "Install_Dir" "$INSTDIR"
@ -41,16 +43,13 @@ Section "Pesterchum"
CreateDirectory "$SMPROGRAMS\Pesterchum" CreateDirectory "$SMPROGRAMS\Pesterchum"
CreateShortcut "$SMPROGRAMS\Pesterchum\Pesterchum.lnk" "$INSTDIR\pesterchum.exe" CreateShortcut "$SMPROGRAMS\Pesterchum\Pesterchum.lnk" "$INSTDIR\pesterchum.exe"
CreateShortcut "$SMPROGRAMS\Pesterchum\PesterchumDebug.lnk" "$INSTDIR\pesterchum_debug.exe"
CreateShortcut "$DESKTOP\Pesterchum.lnk" "$INSTDIR\pesterchum.exe" CreateShortcut "$DESKTOP\Pesterchum.lnk" "$INSTDIR\pesterchum.exe"
CreateShortcut "$SMPROGRAMS\Pesterchum\Readme.lnk" "$INSTDIR\readme.txt" CreateShortcut "$SMPROGRAMS\Pesterchum\Readme.lnk" "$INSTDIR\readme.txt"
CreateShortcut "$SMPROGRAMS\Pesterchum\Uninstall.lnk" "$INSTDIR\uninstall.exe" CreateShortcut "$SMPROGRAMS\Pesterchum\Uninstall.lnk" "$INSTDIR\uninstall.exe"
CreateShortcut "$SMPROGRAMS\Pesterchum\Logs.lnk" "$INSTDIR\logs"
CreateShortcut "$SMPROGRAMS\Pesterchum\Logs.lnk" "$LOCALAPPDATA\pesterchum\logs"
SectionEnd SectionEnd
Section "Uninstall" Section "Uninstall"
; Remove registry keys ; Remove registry keys

View file

@ -1,5 +1,5 @@
# pesterchum # pesterchum
import os, sys, getopt import os, shutil, sys, getopt
if os.path.dirname(sys.argv[0]): if os.path.dirname(sys.argv[0]):
os.chdir(os.path.dirname(sys.argv[0])) os.chdir(os.path.dirname(sys.argv[0]))
import version import version
@ -8,26 +8,29 @@ import logging
from datetime import * from datetime import *
import random import random
import re import re
import ostools
from time import time from time import time
import threading, Queue import threading, Queue
missing = [] reqmissing = []
optmissing = []
try: try:
from PyQt4 import QtGui, QtCore from PyQt4 import QtGui, QtCore
except ImportError, e: except ImportError, e:
module = str(e) module = str(e)
if module[:16] == "No module named ": missing.append(module[16:]) if module.startswith("No module named ") or \
module.startswith("cannot import name "):
reqmissing.append(module[module.rfind(" ")+1:])
else: print e else: print e
try: try:
import pygame import pygame
except ImportError, e: except ImportError, e:
pygame = None
module = str(e) module = str(e)
if module[:16] == "No module named ": missing.append(module[16:]) if module[:16] == "No module named ": optmissing.append(module[16:])
else: print e else: print e
if missing: if reqmissing:
print "ERROR: The following modules are required for Pesterchum to run and are missing on your system:" print "ERROR: The following modules are required for Pesterchum to run and are missing on your system:"
for m in missing: print "* "+m for m in reqmissing: print "* "+m
exit() exit()
vnum = QtCore.qVersion() vnum = QtCore.qVersion()
major = int(vnum[:vnum.find(".")]) major = int(vnum[:vnum.find(".")])
@ -40,6 +43,7 @@ if not ((major > 4) or (major == 4 and minor >= 6)):
print "You currently have version " + vnum + ". Please ungrade Qt" print "You currently have version " + vnum + ". Please ungrade Qt"
exit() exit()
import ostools
# Placed here before importing the rest of pesterchum, since bits of it need # 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 # OSX's data directory and it doesn't hurt to have everything set up before
# plowing on. :o) # plowing on. :o)
@ -47,8 +51,21 @@ if not ((major > 4) or (major == 4 and minor >= 6)):
_datadir = ostools.getDataDir() _datadir = ostools.getDataDir()
# See, what I've done here is that _datadir is '' if we're not on OSX, so the # 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. # concatination is the same as if it wasn't there.
if _datadir and not os.path.exists(_datadir): # UPDATE 2011-11-28 <Kiooeht>:
os.mkdir(_datadir) # Now using data directory as defined by QDesktopServices on all platforms
# (on Linux, same as using xdg). To stay safe with older versions, copy any
# data (profiles, logs, etc) from old location to new data directory.
if _datadir:
if not os.path.exists(_datadir):
os.makedirs(_datadir)
if not os.path.exists(_datadir+"profiles/") and os.path.exists("profiles/"):
shutil.move("profiles/", _datadir+"profiles/")
if not os.path.exists(_datadir+"pesterchum.js") and os.path.exists("pesterchum.js"):
shutil.move("pesterchum.js", _datadir+"pesterchum.js")
if not os.path.exists(_datadir+"logs/") and os.path.exists("logs/"):
shutil.move("logs/", _datadir+"logs/")
if not os.path.exists(_datadir+"profiles"): if not os.path.exists(_datadir+"profiles"):
os.mkdir(_datadir+"profiles") os.mkdir(_datadir+"profiles")
if not os.path.exists(_datadir+"pesterchum.js"): if not os.path.exists(_datadir+"pesterchum.js"):
@ -1575,7 +1592,7 @@ class PesterWindow(MovingWindow):
self.mychumcolor.setText("") self.mychumcolor.setText("")
# sounds # sounds
if not pygame.mixer: if not pygame or not pygame.mixer:
self.alarm = NoneSound() self.alarm = NoneSound()
self.memosound = NoneSound() self.memosound = NoneSound()
self.namesound = NoneSound() self.namesound = NoneSound()
@ -1854,6 +1871,7 @@ class PesterWindow(MovingWindow):
if ok: if ok:
handle = unicode(handle) handle = unicode(handle)
if handle in [h.handle for h in self.chumList.chums]: if handle in [h.handle for h in self.chumList.chums]:
self.addchumdialog = None
return return
if not (PesterProfile.checkLength(handle) and if not (PesterProfile.checkLength(handle) and
PesterProfile.checkValid(handle)[0]): PesterProfile.checkValid(handle)[0]):
@ -2628,7 +2646,7 @@ class MainProgram(QtCore.QObject):
options = self.oppts(sys.argv[1:]) options = self.oppts(sys.argv[1:])
if pygame.mixer: if pygame and pygame.mixer:
# we could set the frequency higher but i love how cheesy it sounds # we could set the frequency higher but i love how cheesy it sounds
try: try:
pygame.mixer.init() pygame.mixer.init()

View file

@ -54,7 +54,14 @@ class PesterLog(object):
for (format, t) in modes.iteritems(): for (format, t) in modes.iteritems():
if not os.path.exists("%s/%s/%s/%s" % (self.logpath, self.handle, handle, format)): if not os.path.exists("%s/%s/%s/%s" % (self.logpath, self.handle, handle, format)):
os.makedirs("%s/%s/%s/%s" % (self.logpath, self.handle, handle, format)) os.makedirs("%s/%s/%s/%s" % (self.logpath, self.handle, handle, format))
fp = codecs.open("%s/%s/%s/%s/%s.%s.txt" % (self.logpath, self.handle, handle, format, handle, time), encoding='utf-8', mode='a') try:
fp = codecs.open("%s/%s/%s/%s/%s.%s.txt" % (self.logpath, self.handle, handle, format, handle, time), encoding='utf-8', mode='a')
except IOError:
errmsg = QtGui.QMessageBox(self)
errmsg.setText("Warning: Pesterchum could not open the log file for %s!" % (handle))
errmsg.setInformativeText("Your log for %s will not be saved because something went wrong. We suggest restarting Pesterchum. Sorry :(" % (handle))
errmsg.show()
continue
self.convos[handle][format] = fp self.convos[handle][format] = fp
for (format, t) in modes.iteritems(): for (format, t) in modes.iteritems():
f = self.convos[handle][format] f = self.convos[handle][format]
@ -321,8 +328,8 @@ class userConfig(object):
for dirname, dirnames, filenames in os.walk(_datadir+'themes'): for dirname, dirnames, filenames in os.walk(_datadir+'themes'):
for d in dirnames: for d in dirnames:
themes.append(d) themes.append(d)
# For OSX, also load embedded themes. # Also load embedded themes.
if ostools.isOSX(): if _datadir:
for dirname, dirnames, filenames in os.walk('themes'): for dirname, dirnames, filenames in os.walk('themes'):
for d in dirnames: for d in dirnames:
if d not in themes: if d not in themes:
@ -440,7 +447,7 @@ class userProfile(object):
fp.close() fp.close()
@staticmethod @staticmethod
def newUserProfile(chatprofile): def newUserProfile(chatprofile):
if os.path.exists("profiles/%s.js" % (chatprofile.handle)): if os.path.exists("%s/%s.js" % (_datadir+"profiles", chatprofile.handle)):
newprofile = userProfile(chatprofile.handle) newprofile = userProfile(chatprofile.handle)
else: else:
newprofile = userProfile(chatprofile) newprofile = userProfile(chatprofile)
@ -529,11 +536,15 @@ class PesterProfileDB(dict):
class pesterTheme(dict): class pesterTheme(dict):
def __init__(self, name, default=False): def __init__(self, name, default=False):
self.path = _datadir+"themes/%s" % (name) possiblepaths = (_datadir+"themes/%s" % (name),
if not os.path.exists(self.path): "themes/%s" % (name),
self.path = "themes/%s" % (name) _datadir+"themes/pesterchum",
if not os.path.exists(self.path): "themes/pesterchum")
self.path = "themes/pesterchum" self.path = "themes/pesterchum"
for p in possiblepaths:
if os.path.exists(p):
self.path = p
break
self.name = name self.name = name
try: try:

View file

@ -18,7 +18,7 @@ class PythonQuirks(object):
for fn in os.listdir(os.path.join(self.home, 'quirks')): for fn in os.listdir(os.path.join(self.home, 'quirks')):
if fn.endswith('.py') and not fn.startswith('_'): if fn.endswith('.py') and not fn.startswith('_'):
filenames.append(os.path.join(self.home, 'quirks', fn)) filenames.append(os.path.join(self.home, 'quirks', fn))
if ostools.isOSX(): if self._datadir:
if not os.path.exists(os.path.join(self._datadir, 'quirks')): if not os.path.exists(os.path.join(self._datadir, 'quirks')):
os.mkdir(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')): for fn in os.listdir(os.path.join(self._datadir, 'quirks')):
@ -66,7 +66,7 @@ class PythonQuirks(object):
def funcre(self): def funcre(self):
if not self.quirks: if not self.quirks:
return r"" return r"\\[0-9]+"
f = r"(" f = r"("
for q in self.quirks: for q in self.quirks:
f = f + q[:-1]+r"\(|" f = f + q[:-1]+r"\(|"

BIN
smilies/whatdidyoudo.gif Normal file

Binary file not shown.

After

(image error) Size: 30 KiB

Binary file not shown.

After

(image error) Size: 3.1 KiB

Binary file not shown.

Binary file not shown.

After

(image error) Size: 3 KiB

BIN
themes/BettyBother/bbbg.png Normal file

Binary file not shown.

After

(image error) Size: 276 KiB

BIN
themes/BettyBother/bbbg.psd Normal file

Binary file not shown.

Binary file not shown.

After

(image error) Size: 21 KiB

Binary file not shown.

After

(image error) Size: 3 KiB

Binary file not shown.

After

(image error) Size: 3.1 KiB

Binary file not shown.

After

(image error) Size: 3.1 KiB

Binary file not shown.

After

(image error) Size: 5.2 KiB

Binary file not shown.

After

(image error) Size: 3 KiB

Binary file not shown.

After

(image error) Size: 91 KiB

Binary file not shown.

After

(image error) Size: 4.7 KiB

Binary file not shown.

After

(image error) Size: 650 B

Binary file not shown.

After

(image error) Size: 3 KiB

Binary file not shown.

After

(image error) Size: 8.9 KiB

Binary file not shown.

After

(image error) Size: 3 KiB

Binary file not shown.

After

(image error) Size: 3.2 KiB

Binary file not shown.

After

(image error) Size: 3.1 KiB

Binary file not shown.

After

(image error) Size: 3.1 KiB

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

After

(image error) Size: 50 KiB

Binary file not shown.

After

(image error) Size: 4.7 KiB

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

After

(image error) Size: 3.1 KiB

Binary file not shown.

After

(image error) Size: 116 KiB

BIN
themes/BettyBother/gbg.psd Normal file

Binary file not shown.

Binary file not shown.

After

(image error) Size: 48 KiB

Binary file not shown.

After

(image error) Size: 4.1 KiB

Binary file not shown.

BIN
themes/BettyBother/herp.png Normal file

Binary file not shown.

After

(image error) Size: 4.3 KiB

Binary file not shown.

After

(image error) Size: 3 KiB

Binary file not shown.

After

(image error) Size: 2.8 KiB

Binary file not shown.

After

(image error) Size: 3.2 KiB

Binary file not shown.

After

(image error) Size: 3.1 KiB

Binary file not shown.

After

(image error) Size: 3.5 KiB

Binary file not shown.

After

(image error) Size: 3 KiB

Binary file not shown.

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

After

(image error) Size: 3.1 KiB

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

After

(image error) Size: 3.1 KiB

Binary file not shown.

After

(image error) Size: 3 KiB

Binary file not shown.

After

(image error) Size: 3.1 KiB

Binary file not shown.

After

(image error) Size: 2.8 KiB

Binary file not shown.

After

(image error) Size: 3.1 KiB

Binary file not shown.

After

(image error) Size: 3 KiB

451
themes/BettyBother/style.js Normal file
View file

@ -0,0 +1,451 @@
{"main":
{"style": "background-repeat: no-repeat;",
"background-image": "$path/bbbg2.png",
"size": [665, 506],
"icon": "$path/bettybother.png",
"newmsgicon": "$path/tbettybother2.png",
"windowtitle": "BettyBother",
"close": { "image": "$path/x.png",
"loc": [214, 100]},
"minimize": { "image": "$path/m.png",
"loc": [198, 100]},
"menubar": { "style": "font-family: 'Arial'; font:bold; font-size: 12px; color: white;" },
"menu" : { "style": "font-family: 'Arial'; font: bold; font-size: 12px; color: white; background-color: #f21515;border:2px solid #bb0019",
"menuitem": "margin-right:20px;",
"selected": "background-color: #bb0019",
"loc": [346,100]
},
"sounds": { "alertsound": "$path/harlarm.wav",
"memosound": "$path/alarm.wav",
"ceasesound": "$path/nannacease.wav" },
"menus": {"client": {"_name": "CLIENT",
"options": "OPTIONS",
"memos": "MEMOS",
"logviewer": "PESTERLOGS",
"randen": "RANDOM ENCOUNTER",
"userlist": "USERLIST",
"addgroup": "ADD GROUP",
"import": "IMPORT",
"reconnect": "RECONNECT",
"idle": "IDLE",
"exit": "EXIT"},
"profile": {"_name": "PROFILE",
"switch": "SWITCH",
"color": "COLOR",
"theme": "THEME",
"block": "TROLLSLUM",
"quirks": "QUIRKS"},
"help": { "_name": "HELP",
"about": "ABOUT",
"help": "HELP",
"calsprite": "CALSPRITE",
"nickserv": "NICKSERV" },
"rclickchumlist": {"pester": "PESTER",
"removechum": "REMOVE CHUM",
"report": "REPORT",
"blockchum": "BLOCK",
"addchum": "ADD CHUM",
"viewlog": "VIEW PESTERLOG",
"unblockchum": "UNBLOCK",
"removegroup": "REMOVE GROUP",
"renamegroup": "RENAME GROUP",
"movechum": "MOVE TO",
"banuser": "BAN USER",
"opuser": "MAKE OP",
"voiceuser": "GIVE VOICE",
"quirksoff": "QUIRKS OFF",
"invitechum": "INVITE CHUM"
}
},
"chums": { "style": "border:0px; background-image:url($path/chumbg.png); background-color: rgb(102,102,102); background-repeat: no-repeat; color: white;font: bold;font-family: 'Arial';selection-background-color:#646464; ",
"loc": [367, 270],
"size": [261, 90],
"userlistcolor": "white",
"moods": {
"chummy": { "icon": "$path/chummy.png", "color": "white" },
"rancorous": { "icon": "$path/rancorous.png", "color": "red" },
"offline": { "icon": "$path/offline.png", "color": "#bebebe"},
"pleasant": { "icon": "$path/pleasant.png", "color": "white" },
"distraught": { "icon": "$path/distraught.png", "color": "white" },
"pranky": { "icon": "$path/pranky.png", "color": "white" },
"smooth": { "icon": "$path/smooth.png", "color": "white" },
"mystified": { "icon": "$path/mystified.png", "color": "white" },
"amazed": { "icon": "$path/amazed.png", "color": "white" },
"insolent": { "icon": "$path/insolent.png", "color": "white" },
"bemused": { "icon": "$path/bemused.png", "color": "white" },
"ecstatic": { "icon": "$path/ecstatic.png", "color": "red" },
"relaxed": { "icon": "$path/relaxed.png", "color": "red" },
"discontent": { "icon": "$path/discontent.png", "color": "red" },
"devious": { "icon": "$path/devious.png", "color": "red" },
"sleek": { "icon": "$path/sleek.png", "color": "red" },
"detestful": { "icon": "$path/detestful.png", "color": "red" },
"mirthful": { "icon": "$path/mirthful.png", "color": "red" },
"manipulative": { "icon": "$path/manipulative.png", "color": "red" },
"vigorous": { "icon": "$path/vigorous.png", "color": "red" },
"perky": { "icon": "$path/perky.png", "color": "red" },
"acceptant": { "icon": "$path/acceptant.png", "color": "red" },
"protective": { "icon": "$path/protective.png", "color": "#00ff00" },
"destructive": { "icon": "$path/destructive.png", "color": "#009900" },
"blocked": { "icon": "$path/blocked.png", "color": "black" }
}
},
"trollslum": {
"style": "background: #f21515; border:2px solid #bb0019; font-family: 'Arial'",
"size": [195, 200],
"label": { "text": "TROLLSLUM",
"style": "color: rgba(0, 0, 0, 100%) ;font:bold; font-family: 'Arial';border:0px;" },
"chumroll": {"style": "border:0px; background-image:url($path/chumbg.png); background-color: rgb(102,102,102); background-repeat: no-repeat; color: white;font: bold;font-family: 'Arial';selection-background-color:#646464; " }
},
"mychumhandle": { "label": { "text": "",
"loc": [0,0],
"style": "color: rgba(0,0,0,0);font:bold; font-family: 'Arial';" },
"handle": { "style": "background: rgba(0,0,0,0); padding: 3px; color:rgba(0,0,0,0); font-family:'Arial'; font:bold; text-align:center;",
"loc": [239,0],
"size": [426, 94] },
"colorswatch": { "loc": [0,0],
"size": [0,0],
"text": "" },
"currentMood": [1000, 0]
},
"defaultwindow": { "style": "background: #f21515; font-family:'Arial';font:bold;selection-background-color:#919191; "
},
"addchum": { "style": "background-image:url($path/gushers1.png); border:0px;",
"pressed" : "background-image:url($path/gushers2.png);",
"loc": [358,182],
"size": [278, 70],
"text": ""
},
"pester": { "style": "background-image:url($path/first1.png); border:0px;",
"pressed" : "background-image:url($path/first2.png);",
"loc": [0,97],
"size": [328,189],
"text": ""
},
"block": { "style": "background-image:url($path/douche1.png); border:0px;",
"pressed" : "background-image:url($path/douche2.png);",
"loc": [156,289],
"size": [171, 169],
"text": ""
},
"defaultmood": 20,
"moodlabel": { "style": "",
"loc": [0,0],
"text": ""
},
"moods": [
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [361, 381],
"size": [35, 33],
"text": "",
"icon": "$path/chummy.png",
"mood": 0
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [395, 381],
"size": [35, 33],
"text": "",
"icon": "$path/pleasant.png",
"mood": 3
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [429, 381],
"size": [35, 33],
"text": "",
"icon": "$path/distraught.png",
"mood": 4
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [463, 381],
"size": [35, 33],
"text": "",
"icon": "$path/pranky.png",
"mood": 5
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [497, 381],
"size": [35, 33],
"text": "",
"icon": "$path/smooth.png",
"mood": 6
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [531, 381],
"size": [35, 33],
"text": "",
"icon": "$path/amazed.png",
"mood": 20
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [565, 381],
"size": [35, 33],
"text": "",
"icon": "$path/mystified.png",
"mood": 19
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [599, 381],
"size": [35, 33],
"text": "",
"icon": "$path/insolent.png",
"mood": 21
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [361, 413],
"size": [35, 33],
"text": "",
"icon": "$path/bemused.png",
"mood": 22
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [395, 413],
"size": [35, 33],
"text": "",
"icon": "$path/rancorous.png",
"mood": 1
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [429, 413],
"size": [35, 33],
"text": "",
"icon": "$path/acceptant.png",
"mood": 17
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [463, 413],
"size": [35, 33],
"text": "",
"icon": "$path/discontent.png",
"mood": 9
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [497, 413],
"size": [35, 33],
"text": "",
"icon": "$path/sleek.png",
"mood": 11
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [531, 413],
"size": [35, 33],
"text": "",
"icon": "$path/perky.png",
"mood": 16
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [565, 413],
"size": [35, 33],
"text": "",
"icon": "$path/relaxed.png",
"mood": 8
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [599, 413],
"size": [35, 33],
"text": "",
"icon": "$path/devious.png",
"mood": 10
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [361, 447],
"size": [35, 33],
"text": "",
"icon": "$path/manipulative.png",
"mood": 14
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [395, 447],
"size": [35, 33],
"text": "",
"icon": "$path/vigorous.png",
"mood": 15
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [429, 447],
"size": [35, 33],
"text": "",
"icon": "$path/mirthful.png",
"mood": 13
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [463, 447],
"size": [35, 33],
"text": "",
"icon": "$path/detestful.png",
"mood": 12
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [497, 447],
"size": [35, 33],
"text": "",
"icon": "$path/ecstatic.png",
"mood": 7
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [531, 447],
"size": [35, 33],
"text": "",
"icon": "$path/protective.png",
"mood": 18
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [565, 447],
"size": [35, 33],
"text": "",
"icon": "$path/destructive.png",
"mood": 23
},
{ "style": "background: rgba(0,0,0,0%); border:0px; color: rgba(0,0,0,0%);",
"selected": "background-image:url($path/moodcheck.png); border:0px; color: rgba(0,0,0,0%);",
"loc": [599, 447],
"size": [35, 33],
"text": "",
"icon": "$path/offline.png",
"mood": 2
}
]
},
"convo":
{"style": "background-color: rgba(0,0,0,0);border-width: 5px; border-image:url($path/convobg.png) 5px; font-family: 'Arial'",
"tabstyle": "background-color: #f21515; font-family: 'Arial'",
"scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: rgba(0,0,0,0); border:0px;",
"handle": "background-color:#bb0019;min-height:20px;",
"downarrow": "height:17px;border:0px solid #bb0019;",
"darrowstyle": "image:url($path/downarrow.png);",
"uparrow": "height:17px;border:0px solid #bb0019;",
"uarrowstyle": "image:url($path/uparrow.png);"
},
"margins": {"top": 0, "bottom": 6, "left": 0, "right": 0 },
"size": [500, 325],
"chumlabel": { "style": "margin-bottom: 7px; margin-top: 10px; background: rgba(0,0,0,0); color: white; border:0px; font-size: 16px;",
"align": { "h": "center", "v": "center" },
"minheight": 47,
"maxheight": 47,
"text" : ":: $handle ::"
},
"textarea": {
"style": "background: white; font-size: 14px; border:2px solid #bb0019;text-align:center; margin-right:10px; margin-left:10px; margin-bottom:5px;"
},
"input": {
"style": "background: white; border:2px solid #bb0019; margin-right:10px; margin-left:10px; font-size: 14px;"
},
"tabs": {
"style": "background-color: #ff7e7e; font-family: 'Arial';font:bold;font-size:12px;min-height:25px;",
"selectedstyle": "border:0px;background-color:#f21515;border-top:2px solid #bb0019; border-left:2px solid #bb0019;border-right:2px solid #bb0019; border-top-left-radius: 4px; border-top-right-radius: 4px;",
"newmsgcolor": "white",
"tabstyle": 0
},
"text": {
"beganpester": "began bothering",
"ceasepester": "ceased bothering",
"blocked": "blocked",
"unblocked": "unblocked",
"blockedmsg": "did not receive message from",
"openmemo": "opened memo on board",
"joinmemo": "responded to memo",
"closememo": "ceased responding to memo",
"kickedmemo": "You have been banned from this memo!",
"idle": "is now an idle chum!"
},
"systemMsgColor": "#646464"
},
"memos":
{"memoicon": "$path/memo.png",
"style": "background-color: rgba(0,0,0,0); background-image:url($path/convobg.png); background-repeat: no-repeat; border:0px; font-family: 'Arial'; selection-background-color:#919191; ",
"size": [500,325],
"tabs": {
"style": "background-color: #ff7e7e; font-family: 'Arial';font:bold;font-size:12px;min-height:25px;",
"selectedstyle": "border:0px;background-color:#f21515;border-top:2px solid #bb0019; border-left:2px solid #bb0019;border-right:2px solid #bb0019; border-top-left-radius: 4px; border-top-right-radius: 4px;",
"newmsgcolor": "white",
"tabstyle": 0
},
"scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: rgba(255, 255, 0, 0%); border:0px;",
"handle": "background-color:#c48a00;min-height:20px;",
"downarrow": "height:17px;border:0px solid #c48a00;",
"darrowstyle": "image:url($path/downarrow.png);",
"uparrow": "height:17px;border:0px solid #c48a00;",
"uarrowstyle": "image:url($path/uparrow.png);"
},
"label": { "text": "Bulletin Board: $channel",
"style": "margin-bottom: 7px; margin-top: 10px; background: rgba(255, 255, 0, 0%); color: white; border:0px; font-size: 16px;",
"align": { "h": "center", "v": "center" },
"minheight": 47,
"maxheight": 47
},
"input": { "style": "background: white; border:2px solid #bb0019;margin-top:5px; margin-right:10px; margin-left:10px; font-size: 14px;" },
"textarea": { "style": "background: white; font-size: 14px; border:2px solid #bb0019;text-align:center; margin-right:10px; margin-left:10px;" },
"margins": {"top": 0, "bottom": 6, "left": 0, "right": 0 },
"userlist": { "width": 150,
"style": "border:2px solid #bb0019; background: white; font-family: 'Arial';selection-background-color:#646464; font-size: 14px; margin-left:0px; margin-right:10px;"
},
"time": { "text": { "width": 75,
"style": " border: 2px solid #bb0019; background: white; font-size: 12px; margin-top: 5px; margin-right: 5px; margin-left: 5px; font-family:'Arial';font:bold;"
},
"slider": { "style": "border: 0px;",
"groove": "",
"handle": ""
},
"buttons": { "style": "color: black; font: bold; border: 2px solid #bb0019; font-size: 12px; background: #ff7e7e; margin-top: 5px; margin-right: 5px; margin-left: 5px; padding: 2px; width: 50px;" },
"arrows": { "left": "$path/leftarrow.png",
"right": "$path/rightarrow.png",
"style": " border:0px; margin-top: 5px; margin-right:10px;"
}
},
"systemMsgColor": "#646464",
"op": { "icon": "$path/smooth.png" },
"voice": { "icon": "$path/voice.png" }
}
}

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

After

(image error) Size: 3.1 KiB

BIN
themes/Cdasl/abouticon.png Normal file

Binary file not shown.

After

(image error) Size: 3.7 KiB

BIN
themes/Cdasl/acceptant.gif Normal file

Binary file not shown.

After

(image error) Size: 126 B

BIN
themes/Cdasl/alarm.wav Normal file

Binary file not shown.

BIN
themes/Cdasl/amazed.gif Normal file

Binary file not shown.

After

(image error) Size: 97 B

BIN
themes/Cdasl/bemused.gif Normal file

Binary file not shown.

After

(image error) Size: 93 B

BIN
themes/Cdasl/blocked.gif Normal file

Binary file not shown.

After

(image error) Size: 97 B

BIN
themes/Cdasl/cease.wav Normal file

Binary file not shown.

BIN
themes/Cdasl/chummy.gif Normal file

Binary file not shown.

After

(image error) Size: 106 B

BIN
themes/Cdasl/cool.jpg Normal file

Binary file not shown.

After

(image error) Size: 16 KiB

BIN
themes/Cdasl/coolcheck.jpg Normal file

Binary file not shown.

After

(image error) Size: 16 KiB

BIN
themes/Cdasl/detestful.gif Normal file

Binary file not shown.

After

(image error) Size: 165 B

BIN
themes/Cdasl/devious.gif Normal file

Binary file not shown.

After

(image error) Size: 127 B

BIN
themes/Cdasl/discontent.gif Normal file

Binary file not shown.

After

(image error) Size: 127 B

BIN
themes/Cdasl/distraught.gif Normal file

Binary file not shown.

After

(image error) Size: 93 B

BIN
themes/Cdasl/ecstatic.gif Normal file

Binary file not shown.

After

(image error) Size: 137 B

BIN
themes/Cdasl/estatic.gif Normal file

Binary file not shown.

After

(image error) Size: 137 B

BIN
themes/Cdasl/h.gif Normal file

Binary file not shown.

After

(image error) Size: 101 B

BIN
themes/Cdasl/insolent.gif Normal file

Binary file not shown.

After

(image error) Size: 97 B

BIN
themes/Cdasl/m.gif Normal file

Binary file not shown.

After

(image error) Size: 44 B

Binary file not shown.

After

(image error) Size: 168 B

BIN
themes/Cdasl/mellow.jpg Normal file

Binary file not shown.

After

(image error) Size: 14 KiB

Binary file not shown.

After

(image error) Size: 14 KiB

BIN
themes/Cdasl/mirthful.gif Normal file

Binary file not shown.

After

(image error) Size: 125 B

BIN
themes/Cdasl/mystified.gif Normal file

Binary file not shown.

After

(image error) Size: 95 B

BIN
themes/Cdasl/offline.gif Normal file

Binary file not shown.

After

(image error) Size: 71 B

BIN
themes/Cdasl/op.gif Normal file

Binary file not shown.

After

(image error) Size: 131 B

BIN
themes/Cdasl/pcbg.png Normal file

Binary file not shown.

After

(image error) Size: 316 KiB

BIN
themes/Cdasl/pccool.gif Normal file

Binary file not shown.

After

(image error) Size: 131 B

BIN
themes/Cdasl/perky.gif Normal file

Binary file not shown.

After

(image error) Size: 127 B

BIN
themes/Cdasl/pleasant.gif Normal file

Binary file not shown.

After

(image error) Size: 94 B

BIN
themes/Cdasl/pranky.gif Normal file

Binary file not shown.

After

(image error) Size: 92 B

BIN
themes/Cdasl/rancorous.gif Normal file

Binary file not shown.

After

(image error) Size: 138 B

BIN
themes/Cdasl/relaxed.gif Normal file

Binary file not shown.

After

(image error) Size: 125 B

BIN
themes/Cdasl/shades.jpg Normal file

Binary file not shown.

After

(image error) Size: 8.3 KiB

Some files were not shown because too many files have changed in this diff Show more