Merge remote branch 'upstream/master'
Conflicts: TODO menus.py pesterchum.py
This commit is contained in:
commit
1b6a4ba58c
21 changed files with 698 additions and 912 deletions
|
@ -7,12 +7,25 @@ Visit https://github.com/illuminatedwax/pesterchum for git access and source cod
|
||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
---------
|
---------
|
||||||
### 3.14b (idk on version number scheme)
|
### 3.14.1
|
||||||
* Pesterchum 3.14 - illuminatedwax [ghostDunk]
|
* Pesterchum 3.14 - illuminatedwax [ghostDunk]
|
||||||
* Art - Grimlive [aquaMarinist]
|
* Art - Grimlive [aquaMarinist]
|
||||||
* Quirks lower() function - Kiooeht [evacipatedBox]
|
* Quirks lower() function - Kiooeht [evacipatedBox]
|
||||||
* Quirks scrabble() function - Kiooeht [evacipatedBox]
|
* Quirks scrabble() function - Kiooeht [evacipatedBox]
|
||||||
|
* Quirks reverse() function - illuminatedwax [ghostDunk]
|
||||||
* Timestamps - Kiooeht [evacipatedBox]
|
* Timestamps - Kiooeht [evacipatedBox]
|
||||||
* Logviewer - Kiooeht [evacipatedBox]
|
* Logviewer - Kiooeht [evacipatedBox]
|
||||||
* Chum list groups - Kiooeht [evacipatedBox]
|
* Quirk ordering - alGore
|
||||||
* Chum list bug fixes - Kiooeht [evacipatedBox]
|
* # of users in a memo - alGore
|
||||||
|
* @links to users - illuminatedwax [ghostDunk]
|
||||||
|
* Support for REPORT and ALT to calSprite built in
|
||||||
|
|
||||||
|
BUG FIXES:
|
||||||
|
* mixer bug fixed
|
||||||
|
* "flags" bug fixed
|
||||||
|
* incorrect characters in memos no longer break log file names
|
||||||
|
* memos now do not break on case-sensitivity
|
||||||
|
* fixed QDB address
|
||||||
|
* now lines too long to send in a single message are split up correctly
|
||||||
|
* quirk replace bug fixed
|
||||||
|
* pesterClientXXX profiles no longer saved
|
30
TODO
30
TODO
|
@ -1,14 +1,21 @@
|
||||||
o Bugs:
|
Bugs:
|
||||||
* some nicks can override others. ex: ectoBiologist and ectoBio. ectoBio's mood will be seen, not ectoBiologist's
|
* weird memo time bug
|
||||||
* REGEXP: \b(\S)(\S*)(\S)\b REPLACE WITH: upper(\1)\2upper(\3) <--
|
|
||||||
this regexp, when used as a quirk and then typed in breaks
|
|
||||||
* import modified.tar
|
|
||||||
* channels aren't case sensitive! get the real name of a channel
|
|
||||||
* Windows doesn't show style sheet sometimes?? Maybe related to themes.
|
* Windows doesn't show style sheet sometimes?? Maybe related to themes.
|
||||||
* Issues with connecting? Client not closing connection right? People keep getting "nick taken" messages
|
* Issues with connecting? Client not closing connection right? People keep getting "nick taken" messages
|
||||||
* Windows XP SP2: sometimes mouse clicks dont register? must be some kinda crash
|
* Windows XP SP2: sometimes mouse clicks dont register? must be some kinda crash
|
||||||
* don't save pesterClientXXX names
|
* enamel doesnt have time arrows
|
||||||
* need to make it so "/" in a memo doesn't mess up the logs
|
|
||||||
|
Features:
|
||||||
|
* different sound for memos/pesters
|
||||||
|
* OOC
|
||||||
|
* log viewer needs to have BBCode/HTML/Text copy modes
|
||||||
|
* random pesters
|
||||||
|
* copy quirks between profiles?
|
||||||
|
* chum list groups
|
||||||
|
* More complex quirks: by-sound
|
||||||
|
* Theme checking
|
||||||
|
* Spy mode
|
||||||
|
* Animated
|
||||||
|
|
||||||
Mac Bugs:
|
Mac Bugs:
|
||||||
* Mac doesn't show tabs right, display gifs, highlighting thing?
|
* Mac doesn't show tabs right, display gifs, highlighting thing?
|
||||||
|
@ -17,10 +24,3 @@ SS: in the one-on-one pester it resizes with the window
|
||||||
SS: but the memo one doesn't resize
|
SS: but the memo one doesn't resize
|
||||||
SS: and the arrows next to the time thing overlap the CLOSE button
|
SS: and the arrows next to the time thing overlap the CLOSE button
|
||||||
|
|
||||||
Features:
|
|
||||||
* copy quirks between profiles?
|
|
||||||
* help button on quirks menu?
|
|
||||||
* More complex quirks: by-sound
|
|
||||||
* Theme checking
|
|
||||||
* Spy mode
|
|
||||||
* Animated
|
|
||||||
|
|
34
convo.py
34
convo.py
|
@ -8,8 +8,8 @@ from datetime import datetime, timedelta
|
||||||
from PyQt4 import QtGui, QtCore
|
from PyQt4 import QtGui, QtCore
|
||||||
|
|
||||||
from dataobjs import PesterProfile, Mood, PesterHistory
|
from dataobjs import PesterProfile, Mood, PesterHistory
|
||||||
from generic import PesterIcon, RightClickList
|
from generic import PesterIcon
|
||||||
from parsetools import convertTags, lexMessage, mecmd, colorBegin, colorEnd, img2smiley
|
from parsetools import convertTags, lexMessage, splitMessage, mecmd, colorBegin, colorEnd, img2smiley
|
||||||
|
|
||||||
class PesterTabWindow(QtGui.QFrame):
|
class PesterTabWindow(QtGui.QFrame):
|
||||||
def __init__(self, mainwindow, parent=None, convo="convo"):
|
def __init__(self, mainwindow, parent=None, convo="convo"):
|
||||||
|
@ -304,6 +304,9 @@ class PesterText(QtGui.QTextEdit):
|
||||||
if url != "":
|
if url != "":
|
||||||
if url[0] == "#" and url != "#pesterchum":
|
if url[0] == "#" and url != "#pesterchum":
|
||||||
self.parent().mainwindow.showMemos(url[1:])
|
self.parent().mainwindow.showMemos(url[1:])
|
||||||
|
elif url[0] == "@":
|
||||||
|
handle = unicode(url[1:])
|
||||||
|
self.parent().mainwindow.newConversation(handle)
|
||||||
else:
|
else:
|
||||||
QtGui.QDesktopServices.openUrl(QtCore.QUrl(url, QtCore.QUrl.TolerantMode))
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl(url, QtCore.QUrl.TolerantMode))
|
||||||
QtGui.QTextEdit.mousePressEvent(self, event)
|
QtGui.QTextEdit.mousePressEvent(self, event)
|
||||||
|
@ -350,7 +353,7 @@ class PesterText(QtGui.QTextEdit):
|
||||||
"Accept": "text/plain"}
|
"Accept": "text/plain"}
|
||||||
try:
|
try:
|
||||||
pass
|
pass
|
||||||
hconn = httplib.HTTPConnection('luke.violentlemon.com', 80,
|
hconn = httplib.HTTPConnection('qdb.pesterchum.net', 80,
|
||||||
timeout=15)
|
timeout=15)
|
||||||
hconn.request("POST", "/index.php", params, headers)
|
hconn.request("POST", "/index.php", params, headers)
|
||||||
response = hconn.getresponse()
|
response = hconn.getresponse()
|
||||||
|
@ -443,10 +446,14 @@ class PesterConvo(QtGui.QFrame):
|
||||||
self.unblockchum = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/unblockchum"], self)
|
self.unblockchum = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/unblockchum"], self)
|
||||||
self.connect(self.unblockchum, QtCore.SIGNAL('triggered()'),
|
self.connect(self.unblockchum, QtCore.SIGNAL('triggered()'),
|
||||||
self, QtCore.SLOT('unblockChumSlot()'))
|
self, QtCore.SLOT('unblockChumSlot()'))
|
||||||
|
self.reportchum = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/report"], self)
|
||||||
|
self.connect(self.reportchum, QtCore.SIGNAL('triggered()'),
|
||||||
|
self, QtCore.SLOT('reportThisChum()'))
|
||||||
|
|
||||||
self.optionsMenu.addAction(self.quirksOff)
|
self.optionsMenu.addAction(self.quirksOff)
|
||||||
self.optionsMenu.addAction(self.addChumAction)
|
self.optionsMenu.addAction(self.addChumAction)
|
||||||
self.optionsMenu.addAction(self.blockAction)
|
self.optionsMenu.addAction(self.blockAction)
|
||||||
|
self.optionsMenu.addAction(self.reportchum)
|
||||||
|
|
||||||
self.chumopen = False
|
self.chumopen = False
|
||||||
self.applyquirks = True
|
self.applyquirks = True
|
||||||
|
@ -599,13 +606,17 @@ class PesterConvo(QtGui.QFrame):
|
||||||
lexmsg = lexMessage(text)
|
lexmsg = lexMessage(text)
|
||||||
if type(lexmsg[0]) is not mecmd and self.applyquirks:
|
if type(lexmsg[0]) is not mecmd and self.applyquirks:
|
||||||
lexmsg = quirks.apply(lexmsg)
|
lexmsg = quirks.apply(lexmsg)
|
||||||
serverMsg = copy(lexmsg)
|
lexmsgs = splitMessage(lexmsg)
|
||||||
self.addMessage(lexmsg, True)
|
|
||||||
# if ceased, rebegin
|
for lm in lexmsgs:
|
||||||
if hasattr(self, 'chumopen') and not self.chumopen:
|
serverMsg = copy(lm)
|
||||||
self.mainwindow.newConvoStarted.emit(QtCore.QString(self.title()), True)
|
self.addMessage(lm, True)
|
||||||
text = convertTags(serverMsg, "ctag")
|
# if ceased, rebegin
|
||||||
self.messageSent.emit(text, self.title())
|
if hasattr(self, 'chumopen') and not self.chumopen:
|
||||||
|
self.mainwindow.newConvoStarted.emit(QtCore.QString(self.title()), True)
|
||||||
|
self.setChumOpen(True)
|
||||||
|
text = convertTags(serverMsg, "ctag")
|
||||||
|
self.messageSent.emit(text, self.title())
|
||||||
self.textInput.setText("")
|
self.textInput.setText("")
|
||||||
|
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
|
@ -615,6 +626,9 @@ class PesterConvo(QtGui.QFrame):
|
||||||
def blockThisChum(self):
|
def blockThisChum(self):
|
||||||
self.mainwindow.blockChum(self.chum.handle)
|
self.mainwindow.blockChum(self.chum.handle)
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
|
def reportThisChum(self):
|
||||||
|
self.mainwindow.reportChum(self.chum.handle)
|
||||||
|
@QtCore.pyqtSlot()
|
||||||
def unblockChumSlot(self):
|
def unblockChumSlot(self):
|
||||||
self.mainwindow.unblockChum(self.chum.handle)
|
self.mainwindow.unblockChum(self.chum.handle)
|
||||||
@QtCore.pyqtSlot(bool)
|
@QtCore.pyqtSlot(bool)
|
||||||
|
|
23
dataobjs.py
23
dataobjs.py
|
@ -7,9 +7,11 @@ from generic import PesterIcon
|
||||||
from parsetools import timeDifference, convertTags, lexMessage
|
from parsetools import timeDifference, convertTags, lexMessage
|
||||||
from mispeller import mispeller
|
from mispeller import mispeller
|
||||||
|
|
||||||
_upperre = re.compile(r"upper\(([\w\\]+)\)")
|
_groupre = re.compile(r"\\([0-9]+)")
|
||||||
_lowerre = re.compile(r"lower\(([\w\\]+)\)")
|
_upperre = re.compile(r"upper\(([\w<>\\]+)\)")
|
||||||
_scramblere = re.compile(r"scramble\(([\w\\]+)\)")
|
_lowerre = re.compile(r"lower\(([\w<>\\]+)\)")
|
||||||
|
_scramblere = re.compile(r"scramble\(([\w<>\\]+)\)")
|
||||||
|
_reversere = re.compile(r"reverse\(([\w<>\\]+)\)")
|
||||||
|
|
||||||
class Mood(object):
|
class Mood(object):
|
||||||
moods = ["chummy", "rancorous", "offline", "pleasant", "distraught",
|
moods = ["chummy", "rancorous", "offline", "pleasant", "distraught",
|
||||||
|
@ -62,15 +64,19 @@ class pesterQuirk(object):
|
||||||
return string
|
return string
|
||||||
def regexprep(mo):
|
def regexprep(mo):
|
||||||
to = self.quirk["to"]
|
to = self.quirk["to"]
|
||||||
|
to = _groupre.sub(r"\\g<\1>", to)
|
||||||
def upperrep(m):
|
def upperrep(m):
|
||||||
return mo.expand(m.group(1)).upper()
|
return mo.expand(m.group(1)).upper()
|
||||||
def lowerrep(m):
|
def lowerrep(m):
|
||||||
return mo.expand(m.group(1)).lower()
|
return mo.expand(m.group(1)).lower()
|
||||||
def scramblerep(m):
|
def scramblerep(m):
|
||||||
return "".join(random.sample(mo.expand(m.group(1)), len(mo.expand(m.group(1)))))
|
return "".join(random.sample(mo.expand(m.group(1)), len(mo.expand(m.group(1)))))
|
||||||
|
def reverserep(m):
|
||||||
|
return mo.expand(m.group(1))[::-1]
|
||||||
to = _upperre.sub(upperrep, to)
|
to = _upperre.sub(upperrep, to)
|
||||||
to = _lowerre.sub(lowerrep, to)
|
to = _lowerre.sub(lowerrep, to)
|
||||||
to = _scramblere.sub(scramblerep, to)
|
to = _scramblere.sub(scramblerep, to)
|
||||||
|
to = _reversere.sub(reverserep, to)
|
||||||
return mo.expand(to)
|
return mo.expand(to)
|
||||||
return re.sub(fr, regexprep, string)
|
return re.sub(fr, regexprep, string)
|
||||||
elif self.type == "random":
|
elif self.type == "random":
|
||||||
|
@ -181,7 +187,7 @@ class pesterQuirks(object):
|
||||||
yield q
|
yield q
|
||||||
|
|
||||||
class PesterProfile(object):
|
class PesterProfile(object):
|
||||||
def __init__(self, handle, color=None, mood=Mood("offline"), group=None, chumdb=None):
|
def __init__(self, handle, color=None, mood=Mood("offline"), chumdb=None):
|
||||||
self.handle = handle
|
self.handle = handle
|
||||||
if color is None:
|
if color is None:
|
||||||
if chumdb:
|
if chumdb:
|
||||||
|
@ -190,12 +196,6 @@ class PesterProfile(object):
|
||||||
color = QtGui.QColor("black")
|
color = QtGui.QColor("black")
|
||||||
self.color = color
|
self.color = color
|
||||||
self.mood = mood
|
self.mood = mood
|
||||||
if group is None:
|
|
||||||
if chumdb:
|
|
||||||
group = chumdb.getGroup(handle, "Chums")
|
|
||||||
else:
|
|
||||||
group = "Chums"
|
|
||||||
self.group = group
|
|
||||||
def initials(self, time=None):
|
def initials(self, time=None):
|
||||||
handle = self.handle
|
handle = self.handle
|
||||||
caps = [l for l in handle if l.isupper()]
|
caps = [l for l in handle if l.isupper()]
|
||||||
|
@ -225,8 +225,7 @@ class PesterProfile(object):
|
||||||
def plaindict(self):
|
def plaindict(self):
|
||||||
return (self.handle, {"handle": self.handle,
|
return (self.handle, {"handle": self.handle,
|
||||||
"mood": self.mood.name(),
|
"mood": self.mood.name(),
|
||||||
"color": unicode(self.color.name()),
|
"color": unicode(self.color.name())})
|
||||||
"group": unicode(self.group)})
|
|
||||||
def blocked(self, config):
|
def blocked(self, config):
|
||||||
return self.handle in config.getBlocklist()
|
return self.handle in config.getBlocklist()
|
||||||
|
|
||||||
|
|
11
generic.py
11
generic.py
|
@ -35,14 +35,9 @@ class RightClickList(QtGui.QListWidget):
|
||||||
if event.reason() == QtGui.QContextMenuEvent.Mouse:
|
if event.reason() == QtGui.QContextMenuEvent.Mouse:
|
||||||
listing = self.itemAt(event.pos())
|
listing = self.itemAt(event.pos())
|
||||||
self.setCurrentItem(listing)
|
self.setCurrentItem(listing)
|
||||||
self.optionsMenu.popup(event.globalPos())
|
self.getOptionsMenu().popup(event.globalPos())
|
||||||
|
def getOptionsMenu(self):
|
||||||
class RightClickTree(QtGui.QTreeWidget):
|
return self.optionsMenu
|
||||||
def contextMenuEvent(self, event):
|
|
||||||
if event.reason() == QtGui.QContextMenuEvent.Mouse:
|
|
||||||
listing = self.itemAt(event.pos())
|
|
||||||
self.setCurrentItem(listing)
|
|
||||||
self.optionsMenu.popup(event.globalPos())
|
|
||||||
|
|
||||||
class MultiTextDialog(QtGui.QDialog):
|
class MultiTextDialog(QtGui.QDialog):
|
||||||
def __init__(self, title, parent, *queries):
|
def __init__(self, title, parent, *queries):
|
||||||
|
|
4
irc.py
4
irc.py
|
@ -97,8 +97,8 @@ class PesterIRC(QtCore.QThread):
|
||||||
space = l[0].rfind(" ", 0,400)
|
space = l[0].rfind(" ", 0,400)
|
||||||
if space == -1:
|
if space == -1:
|
||||||
space = 400
|
space = 400
|
||||||
a = l[0][0:space]
|
a = l[0][0:space+1]
|
||||||
b = l[0][space:]
|
b = l[0][space+1:]
|
||||||
if len(b) > 0:
|
if len(b) > 0:
|
||||||
return [a] + splittext([b])
|
return [a] + splittext([b])
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -3,7 +3,7 @@ import codecs
|
||||||
import re
|
import re
|
||||||
from time import strftime, strptime
|
from time import strftime, strptime
|
||||||
from PyQt4 import QtGui, QtCore
|
from PyQt4 import QtGui, QtCore
|
||||||
from generic import RightClickList, RightClickTree
|
from generic import RightClickList
|
||||||
from parsetools import convertTags
|
from parsetools import convertTags
|
||||||
from convo import PesterText
|
from convo import PesterText
|
||||||
|
|
||||||
|
@ -138,8 +138,7 @@ class PesterLogViewer(QtGui.QDialog):
|
||||||
self.logList.sort()
|
self.logList.sort()
|
||||||
self.logList.reverse()
|
self.logList.reverse()
|
||||||
|
|
||||||
self.tree = RightClickTree()
|
self.tree = QtGui.QTreeWidget()
|
||||||
self.tree.optionsMenu = QtGui.QMenu(self)
|
|
||||||
self.tree.setFixedSize(260, 300)
|
self.tree.setFixedSize(260, 300)
|
||||||
self.tree.header().hide()
|
self.tree.header().hide()
|
||||||
if theme.has_key("convo/scrollbar"):
|
if theme.has_key("convo/scrollbar"):
|
||||||
|
@ -149,7 +148,6 @@ class PesterLogViewer(QtGui.QDialog):
|
||||||
self.connect(self.tree, QtCore.SIGNAL('itemSelectionChanged()'),
|
self.connect(self.tree, QtCore.SIGNAL('itemSelectionChanged()'),
|
||||||
self, QtCore.SLOT('loadSelectedLog()'))
|
self, QtCore.SLOT('loadSelectedLog()'))
|
||||||
self.tree.setSortingEnabled(False)
|
self.tree.setSortingEnabled(False)
|
||||||
|
|
||||||
child_1 = None
|
child_1 = None
|
||||||
last = ["",""]
|
last = ["",""]
|
||||||
for (i,l) in enumerate(self.logList):
|
for (i,l) in enumerate(self.logList):
|
||||||
|
|
30
memos.py
30
memos.py
|
@ -218,10 +218,10 @@ class MemoTabWindow(PesterTabWindow):
|
||||||
def __init__(self, mainwindow, parent=None):
|
def __init__(self, mainwindow, parent=None):
|
||||||
PesterTabWindow.__init__(self, mainwindow, parent, "memos")
|
PesterTabWindow.__init__(self, mainwindow, parent, "memos")
|
||||||
def addChat(self, convo):
|
def addChat(self, convo):
|
||||||
self.convos[convo.channel] = convo
|
self.convos[convo.channel.upper()] = convo
|
||||||
# either addTab or setCurrentIndex will trigger changed()
|
# either addTab or setCurrentIndex will trigger changed()
|
||||||
newindex = self.tabs.addTab(convo.channel)
|
newindex = self.tabs.addTab(convo.channel.upper())
|
||||||
self.tabIndices[convo.channel] = newindex
|
self.tabIndices[convo.channel.upper()] = newindex
|
||||||
self.tabs.setCurrentIndex(newindex)
|
self.tabs.setCurrentIndex(newindex)
|
||||||
self.tabs.setTabIcon(newindex, PesterIcon(self.mainwindow.theme["memos/memoicon"]))
|
self.tabs.setTabIcon(newindex, PesterIcon(self.mainwindow.theme["memos/memoicon"]))
|
||||||
def updateBlocked(self):
|
def updateBlocked(self):
|
||||||
|
@ -291,16 +291,16 @@ class MemoText(PesterText):
|
||||||
grammar = time.getGrammar()
|
grammar = time.getGrammar()
|
||||||
joinmsg = chum.memojoinmsg(systemColor, time.getTime(), grammar, window.theme["convo/text/joinmemo"])
|
joinmsg = chum.memojoinmsg(systemColor, time.getTime(), grammar, window.theme["convo/text/joinmemo"])
|
||||||
self.append(convertTags(joinmsg))
|
self.append(convertTags(joinmsg))
|
||||||
parent.mainwindow.chatlog.log(parent.channel, joinmsg)
|
parent.mainwindow.chatlog.log(parent.channel.upper(), joinmsg)
|
||||||
time.openCurrentTime()
|
time.openCurrentTime()
|
||||||
|
|
||||||
if type(lexmsg[0]) is mecmd:
|
if type(lexmsg[0]) is mecmd:
|
||||||
memsg = chum.memsg(systemColor, lexmsg, time=time.getGrammar())
|
memsg = chum.memsg(systemColor, lexmsg, time=time.getGrammar())
|
||||||
window.chatlog.log(parent.channel, memsg)
|
window.chatlog.log(parent.channel.upper(), memsg)
|
||||||
self.append(convertTags(memsg))
|
self.append(convertTags(memsg))
|
||||||
else:
|
else:
|
||||||
self.append(convertTags(lexmsg))
|
self.append(convertTags(lexmsg))
|
||||||
window.chatlog.log(parent.channel, lexmsg)
|
window.chatlog.log(parent.channel.upper(), lexmsg)
|
||||||
|
|
||||||
def changeTheme(self, theme):
|
def changeTheme(self, theme):
|
||||||
self.initTheme(theme)
|
self.initTheme(theme)
|
||||||
|
@ -417,7 +417,7 @@ class PesterMemo(PesterConvo):
|
||||||
msg = p.memoopenmsg(systemColor, self.time.getTime(), timeGrammar, self.mainwindow.theme["convo/text/openmemo"], self.channel)
|
msg = p.memoopenmsg(systemColor, self.time.getTime(), timeGrammar, self.mainwindow.theme["convo/text/openmemo"], self.channel)
|
||||||
self.time.openCurrentTime()
|
self.time.openCurrentTime()
|
||||||
self.textArea.append(convertTags(msg))
|
self.textArea.append(convertTags(msg))
|
||||||
self.mainwindow.chatlog.log(self.channel, msg)
|
self.mainwindow.chatlog.log(self.channel.upper(), msg)
|
||||||
|
|
||||||
self.op = False
|
self.op = False
|
||||||
self.newmessage = False
|
self.newmessage = False
|
||||||
|
@ -425,7 +425,7 @@ class PesterMemo(PesterConvo):
|
||||||
self.applyquirks = True
|
self.applyquirks = True
|
||||||
|
|
||||||
def title(self):
|
def title(self):
|
||||||
return self.channel
|
return self.channel.upper()
|
||||||
def icon(self):
|
def icon(self):
|
||||||
return PesterIcon(self.mainwindow.theme["memos/memoicon"])
|
return PesterIcon(self.mainwindow.theme["memos/memoicon"])
|
||||||
|
|
||||||
|
@ -555,7 +555,7 @@ class PesterMemo(PesterConvo):
|
||||||
self.times[handle].removeTime(close)
|
self.times[handle].removeTime(close)
|
||||||
msg = chum.memoclosemsg(systemColor, grammar, window.theme["convo/text/closememo"])
|
msg = chum.memoclosemsg(systemColor, grammar, window.theme["convo/text/closememo"])
|
||||||
self.textArea.append(convertTags(msg))
|
self.textArea.append(convertTags(msg))
|
||||||
self.mainwindow.chatlog.log(self.channel, msg)
|
self.mainwindow.chatlog.log(self.channel.upper(), msg)
|
||||||
elif timed not in self.times[handle]:
|
elif timed not in self.times[handle]:
|
||||||
self.times[handle].addTime(timed)
|
self.times[handle].addTime(timed)
|
||||||
else:
|
else:
|
||||||
|
@ -601,7 +601,7 @@ class PesterMemo(PesterConvo):
|
||||||
namesdb = self.mainwindow.namesdb
|
namesdb = self.mainwindow.namesdb
|
||||||
# reload names
|
# reload names
|
||||||
self.userlist.clear()
|
self.userlist.clear()
|
||||||
for n in self.mainwindow.namesdb[self.channel]:
|
for n in self.mainwindow.namesdb[self.channel.upper()]:
|
||||||
self.addUser(n)
|
self.addUser(n)
|
||||||
|
|
||||||
@QtCore.pyqtSlot(QtCore.QString, QtCore.QString, QtCore.QString)
|
@QtCore.pyqtSlot(QtCore.QString, QtCore.QString, QtCore.QString)
|
||||||
|
@ -635,7 +635,7 @@ class PesterMemo(PesterConvo):
|
||||||
grammar = t.getGrammar()
|
grammar = t.getGrammar()
|
||||||
msg = chum.memoclosemsg(systemColor, grammar, self.mainwindow.theme["convo/text/closememo"])
|
msg = chum.memoclosemsg(systemColor, grammar, self.mainwindow.theme["convo/text/closememo"])
|
||||||
self.textArea.append(convertTags(msg))
|
self.textArea.append(convertTags(msg))
|
||||||
self.mainwindow.chatlog.log(self.channel, msg)
|
self.mainwindow.chatlog.log(self.channel.upper(), msg)
|
||||||
self.times[h].removeTime(t.getTime())
|
self.times[h].removeTime(t.getTime())
|
||||||
if update == "nick":
|
if update == "nick":
|
||||||
self.addUser(newnick)
|
self.addUser(newnick)
|
||||||
|
@ -663,7 +663,7 @@ class PesterMemo(PesterConvo):
|
||||||
opgrammar = TimeGrammar("CURRENT", "C", "RIGHT NOW")
|
opgrammar = TimeGrammar("CURRENT", "C", "RIGHT NOW")
|
||||||
msg = chum.memobanmsg(opchum, opgrammar, systemColor, grammar)
|
msg = chum.memobanmsg(opchum, opgrammar, systemColor, grammar)
|
||||||
self.textArea.append(convertTags(msg))
|
self.textArea.append(convertTags(msg))
|
||||||
self.mainwindow.chatlog.log(self.channel, msg)
|
self.mainwindow.chatlog.log(self.channel.upper(), msg)
|
||||||
ttracker.removeTime(ttracker.getTime())
|
ttracker.removeTime(ttracker.getTime())
|
||||||
|
|
||||||
if chum is self.mainwindow.profile():
|
if chum is self.mainwindow.profile():
|
||||||
|
@ -682,10 +682,10 @@ class PesterMemo(PesterConvo):
|
||||||
self.time.openCurrentTime()
|
self.time.openCurrentTime()
|
||||||
msg = me.memoopenmsg(systemColor, self.time.getTime(), self.time.getGrammar(), self.mainwindow.theme["convo/text/openmemo"], self.channel)
|
msg = me.memoopenmsg(systemColor, self.time.getTime(), self.time.getGrammar(), self.mainwindow.theme["convo/text/openmemo"], self.channel)
|
||||||
self.textArea.append(convertTags(msg))
|
self.textArea.append(convertTags(msg))
|
||||||
self.mainwindow.chatlog.log(self.channel, msg)
|
self.mainwindow.chatlog.log(self.channel.upper(), msg)
|
||||||
elif ret == QtGui.QMessageBox.Cancel:
|
elif ret == QtGui.QMessageBox.Cancel:
|
||||||
if self.parent():
|
if self.parent():
|
||||||
i = self.parent().tabIndices[self.channel]
|
i = self.parent().tabIndices[self.channel.upper()]
|
||||||
self.parent().tabClose(i)
|
self.parent().tabClose(i)
|
||||||
else:
|
else:
|
||||||
self.close()
|
self.close()
|
||||||
|
@ -749,7 +749,7 @@ class PesterMemo(PesterConvo):
|
||||||
systemColor = QtGui.QColor(self.mainwindow.theme["memos/systemMsgColor"])
|
systemColor = QtGui.QColor(self.mainwindow.theme["memos/systemMsgColor"])
|
||||||
msg = me.memoclosemsg(systemColor, grammar, self.mainwindow.theme["convo/text/closememo"])
|
msg = me.memoclosemsg(systemColor, grammar, self.mainwindow.theme["convo/text/closememo"])
|
||||||
self.textArea.append(convertTags(msg))
|
self.textArea.append(convertTags(msg))
|
||||||
self.mainwindow.chatlog.log(self.channel, msg)
|
self.mainwindow.chatlog.log(self.channel.upper(), msg)
|
||||||
|
|
||||||
newtime = self.time.getTime()
|
newtime = self.time.getTime()
|
||||||
if newtime is None:
|
if newtime is None:
|
||||||
|
|
33
menus.py
33
menus.py
|
@ -546,10 +546,6 @@ class PesterOptions(QtGui.QDialog):
|
||||||
self.theme = theme
|
self.theme = theme
|
||||||
self.setStyleSheet(self.theme["main/defaultwindow/style"])
|
self.setStyleSheet(self.theme["main/defaultwindow/style"])
|
||||||
|
|
||||||
hr = QtGui.QFrame()
|
|
||||||
hr.setFrameShape(QtGui.QFrame.HLine)
|
|
||||||
hr.setFrameShadow(QtGui.QFrame.Sunken)
|
|
||||||
|
|
||||||
self.tabcheck = QtGui.QCheckBox("Tabbed Conversations", self)
|
self.tabcheck = QtGui.QCheckBox("Tabbed Conversations", self)
|
||||||
if self.config.tabs():
|
if self.config.tabs():
|
||||||
self.tabcheck.setChecked(True)
|
self.tabcheck.setChecked(True)
|
||||||
|
@ -576,14 +572,6 @@ class PesterOptions(QtGui.QDialog):
|
||||||
if self.config.showSeconds():
|
if self.config.showSeconds():
|
||||||
self.secondscheck.setChecked(True)
|
self.secondscheck.setChecked(True)
|
||||||
|
|
||||||
# Will add ability to turn off groups later
|
|
||||||
#self.groupscheck = QtGui.QCheckBox("Use Groups", self)
|
|
||||||
#self.groupscheck.setChecked(self.config.useGroups())
|
|
||||||
self.showemptycheck = QtGui.QCheckBox("Show Empty Groups", self)
|
|
||||||
self.showemptycheck.setChecked(self.config.showEmptyGroups())
|
|
||||||
self.showonlinenumbers = QtGui.QCheckBox("Show Number of Online Chums", self)
|
|
||||||
self.showonlinenumbers.setChecked(self.config.showOnlineNumbers())
|
|
||||||
|
|
||||||
self.ok = QtGui.QPushButton("OK", self)
|
self.ok = QtGui.QPushButton("OK", self)
|
||||||
self.ok.setDefault(True)
|
self.ok.setDefault(True)
|
||||||
self.connect(self.ok, QtCore.SIGNAL('clicked()'),
|
self.connect(self.ok, QtCore.SIGNAL('clicked()'),
|
||||||
|
@ -599,10 +587,6 @@ class PesterOptions(QtGui.QDialog):
|
||||||
layout_0.addWidget(self.tabcheck)
|
layout_0.addWidget(self.tabcheck)
|
||||||
layout_0.addWidget(self.soundcheck)
|
layout_0.addWidget(self.soundcheck)
|
||||||
layout_0.addWidget(self.hideOffline)
|
layout_0.addWidget(self.hideOffline)
|
||||||
#layout_0.addWidget(self.groupscheck)
|
|
||||||
layout_0.addWidget(self.showemptycheck)
|
|
||||||
layout_0.addWidget(self.showonlinenumbers)
|
|
||||||
layout_0.addWidget(hr)
|
|
||||||
layout_0.addWidget(self.timestampcheck)
|
layout_0.addWidget(self.timestampcheck)
|
||||||
layout_0.addWidget(self.timestampBox)
|
layout_0.addWidget(self.timestampBox)
|
||||||
layout_0.addWidget(self.secondscheck)
|
layout_0.addWidget(self.secondscheck)
|
||||||
|
@ -628,7 +612,11 @@ class PesterUserlist(QtGui.QDialog):
|
||||||
self.addChumAction = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/addchum"], self)
|
self.addChumAction = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/addchum"], self)
|
||||||
self.connect(self.addChumAction, QtCore.SIGNAL('triggered()'),
|
self.connect(self.addChumAction, QtCore.SIGNAL('triggered()'),
|
||||||
self, QtCore.SLOT('addChumSlot()'))
|
self, QtCore.SLOT('addChumSlot()'))
|
||||||
|
self.pesterChumAction = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/pester"], self)
|
||||||
|
self.connect(self.pesterChumAction, QtCore.SIGNAL('triggered()'),
|
||||||
|
self, QtCore.SLOT('pesterChumSlot()'))
|
||||||
self.userarea.optionsMenu.addAction(self.addChumAction)
|
self.userarea.optionsMenu.addAction(self.addChumAction)
|
||||||
|
self.userarea.optionsMenu.addAction(self.pesterChumAction)
|
||||||
|
|
||||||
self.ok = QtGui.QPushButton("OK", self)
|
self.ok = QtGui.QPushButton("OK", self)
|
||||||
self.ok.setDefault(True)
|
self.ok.setDefault(True)
|
||||||
|
@ -652,7 +640,7 @@ class PesterUserlist(QtGui.QDialog):
|
||||||
self.updateUsers()
|
self.updateUsers()
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def updateUsers(self):
|
def updateUsers(self):
|
||||||
names = self.mainwindow.namesdb["#pesterchum"]
|
names = self.mainwindow.namesdb["#PESTERCHUM"]
|
||||||
self.userarea.clear()
|
self.userarea.clear()
|
||||||
for n in names:
|
for n in names:
|
||||||
item = QtGui.QListWidgetItem(n)
|
item = QtGui.QListWidgetItem(n)
|
||||||
|
@ -693,8 +681,15 @@ class PesterUserlist(QtGui.QDialog):
|
||||||
if not cur:
|
if not cur:
|
||||||
return
|
return
|
||||||
self.addChum.emit(cur.text())
|
self.addChum.emit(cur.text())
|
||||||
|
@QtCore.pyqtSlot()
|
||||||
|
def pesterChumSlot(self):
|
||||||
|
cur = self.userarea.currentItem()
|
||||||
|
if not cur:
|
||||||
|
return
|
||||||
|
self.pesterChum.emit(cur.text())
|
||||||
|
|
||||||
addChum = QtCore.pyqtSignal(QtCore.QString)
|
addChum = QtCore.pyqtSignal(QtCore.QString)
|
||||||
|
pesterChum = QtCore.pyqtSignal(QtCore.QString)
|
||||||
|
|
||||||
|
|
||||||
class MemoListItem(QtGui.QListWidgetItem):
|
class MemoListItem(QtGui.QListWidgetItem):
|
||||||
|
@ -816,6 +811,6 @@ class LoadingScreen(QtGui.QDialog):
|
||||||
class AboutPesterchum(QtGui.QMessageBox):
|
class AboutPesterchum(QtGui.QMessageBox):
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
QtGui.QMessageBox.__init__(self, parent)
|
QtGui.QMessageBox.__init__(self, parent)
|
||||||
self.setText("P3ST3RCHUM V. 3.14")
|
self.setText("P3ST3RCHUM V. 3.14.1")
|
||||||
self.setInformativeText("Programming by illuminatedwax (ghostDunk), art by Grimlive (aquaMarinist). Special thanks to ABT and gamblingGenocider.")
|
self.setInformativeText("Programming by illuminatedwax (ghostDunk), Kiooeht (evacipatedBox), alGore, art by Grimlive (aquaMarinist). Special thanks to ABT and gamblingGenocider.")
|
||||||
self.mainwindow = parent
|
self.mainwindow = parent
|
||||||
|
|
|
@ -11,6 +11,7 @@ _ctag_end = re.compile(r'(?i)</c>')
|
||||||
_ctag_rgb = re.compile(r'\d+,\d+,\d+')
|
_ctag_rgb = re.compile(r'\d+,\d+,\d+')
|
||||||
_urlre = re.compile(r"(?i)https?://[^\s]+")
|
_urlre = re.compile(r"(?i)https?://[^\s]+")
|
||||||
_memore = re.compile(r"(\s|^)(#[A-Za-z0-9_]+)")
|
_memore = re.compile(r"(\s|^)(#[A-Za-z0-9_]+)")
|
||||||
|
_handlere = re.compile(r"(\s|^)(@[A-Za-z0-9_]+)")
|
||||||
_imgre = re.compile(r"""(?i)<img src=['"](\S+)['"]\s*/>""")
|
_imgre = re.compile(r"""(?i)<img src=['"](\S+)['"]\s*/>""")
|
||||||
_mecmdre = re.compile(r"^(/me|PESTERCHUM:ME)(\S*)")
|
_mecmdre = re.compile(r"^(/me|PESTERCHUM:ME)(\S*)")
|
||||||
|
|
||||||
|
@ -109,6 +110,16 @@ class memolex(object):
|
||||||
return "%s<a href='%s'>%s</a>" % (self.space, self.channel, self.channel)
|
return "%s<a href='%s'>%s</a>" % (self.space, self.channel, self.channel)
|
||||||
else:
|
else:
|
||||||
return self.string
|
return self.string
|
||||||
|
class chumhandlelex(object):
|
||||||
|
def __init__(self, string, space, handle):
|
||||||
|
self.string = string
|
||||||
|
self.space = space
|
||||||
|
self.handle = handle
|
||||||
|
def convert(self, format):
|
||||||
|
if format == "html":
|
||||||
|
return "%s<a href='%s'>%s</a>" % (self.space, self.handle, self.handle)
|
||||||
|
else:
|
||||||
|
return self.string
|
||||||
class smiley(object):
|
class smiley(object):
|
||||||
def __init__(self, string):
|
def __init__(self, string):
|
||||||
self.string = string
|
self.string = string
|
||||||
|
@ -129,8 +140,11 @@ def lexMessage(string):
|
||||||
(colorBegin, _ctag_begin), (colorBegin, _gtag_begin),
|
(colorBegin, _ctag_begin), (colorBegin, _gtag_begin),
|
||||||
(colorEnd, _ctag_end), (imagelink, _imgre),
|
(colorEnd, _ctag_end), (imagelink, _imgre),
|
||||||
(hyperlink, _urlre), (memolex, _memore),
|
(hyperlink, _urlre), (memolex, _memore),
|
||||||
|
(chumhandlelex, _handlere),
|
||||||
(smiley, _smilere)]
|
(smiley, _smilere)]
|
||||||
|
|
||||||
|
string = unicode(string)
|
||||||
|
string = string.replace("\n", " ").replace("\r", " ")
|
||||||
lexed = lexer(unicode(string), lexlist)
|
lexed = lexer(unicode(string), lexlist)
|
||||||
|
|
||||||
balanced = []
|
balanced = []
|
||||||
|
@ -176,6 +190,50 @@ def convertTags(lexed, format="html"):
|
||||||
|
|
||||||
return escaped
|
return escaped
|
||||||
|
|
||||||
|
def splitMessage(msg, format="ctag"):
|
||||||
|
"""Splits message if it is too long."""
|
||||||
|
# split long text lines
|
||||||
|
buf = []
|
||||||
|
for o in msg:
|
||||||
|
if type(o) in [str, unicode] and len(o) > 200:
|
||||||
|
for i in range(0, len(o), 200):
|
||||||
|
buf.append(o[i:i+200])
|
||||||
|
else:
|
||||||
|
buf.append(o)
|
||||||
|
msg = buf
|
||||||
|
okmsg = []
|
||||||
|
cbegintags = []
|
||||||
|
output = []
|
||||||
|
for o in msg:
|
||||||
|
okmsg.append(o)
|
||||||
|
if type(o) is colorBegin:
|
||||||
|
cbegintags.append(o)
|
||||||
|
elif type(o) is colorEnd:
|
||||||
|
cbegintags.pop()
|
||||||
|
# yeah normally i'd do binary search but im lazy
|
||||||
|
msglen = len(convertTags(okmsg, format)) + 4*(len(cbegintags))
|
||||||
|
if msglen > 400:
|
||||||
|
okmsg.pop()
|
||||||
|
if len(okmsg) == 0:
|
||||||
|
output.append([o])
|
||||||
|
else:
|
||||||
|
tmp = []
|
||||||
|
for color in cbegintags:
|
||||||
|
okmsg.append(colorEnd("</c>"))
|
||||||
|
tmp.append(color)
|
||||||
|
output.append(okmsg)
|
||||||
|
if type(o) is colorBegin:
|
||||||
|
cbegintags.append(o)
|
||||||
|
elif type(o) is colorEnd:
|
||||||
|
cbegintags.pop()
|
||||||
|
tmp.append(o)
|
||||||
|
okmsg = tmp
|
||||||
|
|
||||||
|
if len(okmsg) > 0:
|
||||||
|
output.append(okmsg)
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def addTimeInitial(string, grammar):
|
def addTimeInitial(string, grammar):
|
||||||
endofi = string.find(":")
|
endofi = string.find(":")
|
||||||
|
@ -216,7 +274,7 @@ def timeDifference(td):
|
||||||
elif atd < timedelta(0,3600):
|
elif atd < timedelta(0,3600):
|
||||||
if minutes == 1:
|
if minutes == 1:
|
||||||
timetext = "%d MINUTE %s" % (minutes, when)
|
timetext = "%d MINUTE %s" % (minutes, when)
|
||||||
else:
|
else:
|
||||||
timetext = "%d MINUTES %s" % (minutes, when)
|
timetext = "%d MINUTES %s" % (minutes, when)
|
||||||
elif atd < timedelta(0,3600*100):
|
elif atd < timedelta(0,3600*100):
|
||||||
if hours == 1 and leftoverminutes == 0:
|
if hours == 1 and leftoverminutes == 0:
|
||||||
|
@ -235,7 +293,7 @@ def img2smiley(string):
|
||||||
return string
|
return string
|
||||||
|
|
||||||
smiledict = {
|
smiledict = {
|
||||||
":rancorous:": "pc_rancorous.gif",
|
":rancorous:": "pc_rancorous.gif",
|
||||||
":apple:": "apple.gif",
|
":apple:": "apple.gif",
|
||||||
":bathearst:": "bathearst.gif",
|
":bathearst:": "bathearst.gif",
|
||||||
":cathearst:": "cathearst.png",
|
":cathearst:": "cathearst.png",
|
||||||
|
@ -245,7 +303,7 @@ smiledict = {
|
||||||
":blueghost:": "blueslimer.gif",
|
":blueghost:": "blueslimer.gif",
|
||||||
":slimer:": "slimer.gif",
|
":slimer:": "slimer.gif",
|
||||||
":candycorn:": "candycorn.gif",
|
":candycorn:": "candycorn.gif",
|
||||||
":cheer:": "cheer.gif",
|
":cheer:": "cheer.gif",
|
||||||
":duhjohn:": "confusedjohn.gif",
|
":duhjohn:": "confusedjohn.gif",
|
||||||
":datrump:": "datrump.gif",
|
":datrump:": "datrump.gif",
|
||||||
":facepalm:": "facepalm.gif",
|
":facepalm:": "facepalm.gif",
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"hideOfflineChums": true, "tabs": true, "soundon": true, "server": "irc.mindfang.org", "chums": ["unknownTraveler", "tentacleTherapist", "vaginalEngineer", "mechanicalSpectacle", "carcinoGeneticist", "schlagzeugGator", "gamblingGenocider", "gardenGnostic", "centaursTesticle", "arachnidsGrip", "grimAuxiliatrix", "remoteBloodbath", "nitroZealist", "greenZephyr", "arsenicCatnip", "cuttlefishCuller", "rageInducer", "gallowsCalibrator", "caligulasAquarium", "terminallyCapricious", "illuminatedWax", "aquaMarinist", "elegantDiversion", "moirailBunp", "uroborosUnbound", "androidTechnician", "midnightSparrow", "apocalypseArisen", "anguillaNuntia", "oilslickOrchid", "pretentiousFantasia", "aquaticMarinist", "lyricalKeraunoscopic", "counterRealist", "ectoBiologist", "percipientPedestrian", "asceticClinician", "doctectiveMiracles", "noSense", "ircMonster", "twinArmageddons", "cannabisHero", "jetRocket", "adiosToreador", "turntechGodhead", "magmaExploiter", "hannaSongstress", "endlessVoid", "grayscaleVisionary", "corruptedInsanity", "stupidlyBrilliant", "artsyGyarados", "obliviousCrafter", "sporadicAgent", "subtleChaotician", "nareSolee", "apostateCourier", "nocturnalTherapist", "herpaDerp", "clockworkUtopia", "digitalSamurai", "astronomicalMaster", "slipshodBrisant", "genialDustbuster", "hyperdriveTyphoon", "magnificentMiser", "gentleRuffian", "riskRepeats", "globalsoftPrika", "globalsoftPirka", "devonianCritter", "lethargicSerpent", "bluntInstrument", "sunilaSeed", "ghostBinoculars", "cosmicSailor", "alGore", "nickServ", "nakNak"], "defaultprofile": "ghostDunk", "block": []}
|
{"hideOfflineChums": true, "time12Format": true, "tabs": true, "soundon": true, "server": "irc.mindfang.org", "showSeconds": false, "showTimeStamps": false, "chums": ["unknownTraveler", "tentacleTherapist", "vaginalEngineer", "mechanicalSpectacle", "carcinoGeneticist", "schlagzeugGator", "gamblingGenocider", "gardenGnostic", "centaursTesticle", "arachnidsGrip", "grimAuxiliatrix", "remoteBloodbath", "nitroZealist", "greenZephyr", "arsenicCatnip", "cuttlefishCuller", "rageInducer", "gallowsCalibrator", "caligulasAquarium", "terminallyCapricious", "illuminatedWax", "aquaMarinist", "elegantDiversion", "moirailBunp", "uroborosUnbound", "androidTechnician", "midnightSparrow", "apocalypseArisen", "anguillaNuntia", "oilslickOrchid", "pretentiousFantasia", "aquaticMarinist", "lyricalKeraunoscopic", "counterRealist", "ectoBiologist", "percipientPedestrian", "asceticClinician", "doctectiveMiracles", "noSense", "ircMonster", "twinArmageddons", "cannabisHero", "jetRocket", "adiosToreador", "turntechGodhead", "magmaExploiter", "hannaSongstress", "endlessVoid", "grayscaleVisionary", "corruptedInsanity", "stupidlyBrilliant", "artsyGyarados", "obliviousCrafter", "sporadicAgent", "subtleChaotician", "nareSolee", "apostateCourier", "nocturnalTherapist", "herpaDerp", "clockworkUtopia", "digitalSamurai", "astronomicalMaster", "slipshodBrisant", "genialDustbuster", "hyperdriveTyphoon", "magnificentMiser", "gentleRuffian", "riskRepeats", "globalsoftPrika", "globalsoftPirka", "devonianCritter", "lethargicSerpent", "laughingShisa", "bluntInstrument", "sunilaSeed", "bluntInstrument", "nickServ", "ghostBinoculars", "alGore", "evacipatedBox", "acrylicEmulator", "prettyGemmaiden", "calSprite", "fairytalePorn", "brooklynRage"], "defaultprofile": "testProfile", "block": []}
|
585
pesterchum.py
585
pesterchum.py
|
@ -18,7 +18,7 @@ from menus import PesterChooseQuirks, PesterChooseTheme, \
|
||||||
PesterChooseProfile, PesterOptions, PesterUserlist, PesterMemoList, \
|
PesterChooseProfile, PesterOptions, PesterUserlist, PesterMemoList, \
|
||||||
LoadingScreen, AboutPesterchum
|
LoadingScreen, AboutPesterchum
|
||||||
from dataobjs import PesterProfile, Mood, pesterQuirk, pesterQuirks
|
from dataobjs import PesterProfile, Mood, pesterQuirk, pesterQuirks
|
||||||
from generic import PesterIcon, RightClickList, RightClickTree, MultiTextDialog, PesterList
|
from generic import PesterIcon, RightClickList, MultiTextDialog, PesterList
|
||||||
from convo import PesterTabWindow, PesterText, PesterInput, PesterConvo
|
from convo import PesterTabWindow, PesterText, PesterInput, PesterConvo
|
||||||
from parsetools import convertTags, addTimeInitial
|
from parsetools import convertTags, addTimeInitial
|
||||||
from memos import PesterMemo, MemoTabWindow, TimeTracker
|
from memos import PesterMemo, MemoTabWindow, TimeTracker
|
||||||
|
@ -26,6 +26,7 @@ from irc import PesterIRC
|
||||||
from logviewer import PesterLogUserSelect, PesterLogViewer
|
from logviewer import PesterLogUserSelect, PesterLogViewer
|
||||||
|
|
||||||
_datadir = QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.DataLocation)+"Pesterchum/"
|
_datadir = 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 sys.platform == "darwin":
|
||||||
if not os.path.exists(_datadir):
|
if not os.path.exists(_datadir):
|
||||||
|
@ -78,10 +79,13 @@ class PesterLog(object):
|
||||||
self.logpath = _datadir+"logs"
|
self.logpath = _datadir+"logs"
|
||||||
|
|
||||||
def log(self, handle, msg):
|
def log(self, handle, msg):
|
||||||
time = strftime("[%H:%M:%S] ")
|
#watch out for illegal characters
|
||||||
bbcodemsg = time + convertTags(msg, "bbcode")
|
handle = re.sub(r'[<>:"/\\|?*]', "_", handle)
|
||||||
html = time + convertTags(msg, "html")+"<br />"
|
#time = strftime("[%H:%M:%S] ")
|
||||||
msg = time + convertTags(msg, "text")
|
# no time codes in logs
|
||||||
|
bbcodemsg = convertTags(msg, "bbcode")
|
||||||
|
html = convertTags(msg, "html")+"<br />"
|
||||||
|
msg = convertTags(msg, "text")
|
||||||
modes = {"bbcode": bbcodemsg, "html": html, "text": msg}
|
modes = {"bbcode": bbcodemsg, "html": html, "text": msg}
|
||||||
if not self.convos.has_key(handle):
|
if not self.convos.has_key(handle):
|
||||||
time = datetime.now().strftime("%Y-%m-%d.%H.%M")
|
time = datetime.now().strftime("%Y-%m-%d.%H.%M")
|
||||||
|
@ -131,14 +135,7 @@ class PesterProfileDB(dict):
|
||||||
json.dump(chumdict, fp)
|
json.dump(chumdict, fp)
|
||||||
fp.close()
|
fp.close()
|
||||||
|
|
||||||
u = []
|
converted = dict([(handle, PesterProfile(handle, color=QtGui.QColor(c['color']), mood=Mood(c['mood']))) for (handle, c) in chumdict.iteritems()])
|
||||||
for (handle, c) in chumdict.iteritems():
|
|
||||||
try:
|
|
||||||
g = c['group']
|
|
||||||
u.append((handle, PesterProfile(handle, color=QtGui.QColor(c['color']), mood=Mood(c['mood']), group=g)))
|
|
||||||
except KeyError:
|
|
||||||
u.append((handle, PesterProfile(handle, color=QtGui.QColor(c['color']), mood=Mood(c['mood']))))
|
|
||||||
converted = dict(u)
|
|
||||||
self.update(converted)
|
self.update(converted)
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
|
@ -159,17 +156,6 @@ class PesterProfileDB(dict):
|
||||||
self[handle].color = color
|
self[handle].color = color
|
||||||
else:
|
else:
|
||||||
self[handle] = PesterProfile(handle, color)
|
self[handle] = PesterProfile(handle, color)
|
||||||
def getGroup(self, handle, default="Chums"):
|
|
||||||
if not self.has_key(handle):
|
|
||||||
return default
|
|
||||||
else:
|
|
||||||
return self[handle].group
|
|
||||||
def setGroup(self, handle, theGroup):
|
|
||||||
if self.has_key(handle):
|
|
||||||
self[handle].group = theGroup
|
|
||||||
else:
|
|
||||||
self[handle] = PesterProfile(handle, group=theGroup)
|
|
||||||
self.save()
|
|
||||||
def __setitem__(self, key, val):
|
def __setitem__(self, key, val):
|
||||||
dict.__setitem__(self, key, val)
|
dict.__setitem__(self, key, val)
|
||||||
self.save()
|
self.save()
|
||||||
|
@ -282,22 +268,6 @@ class userConfig(object):
|
||||||
if not self.config.has_key('showSeconds'):
|
if not self.config.has_key('showSeconds'):
|
||||||
self.set("showSeconds", False)
|
self.set("showSeconds", False)
|
||||||
return self.config.get('showSeconds', False)
|
return self.config.get('showSeconds', False)
|
||||||
def useGroups(self):
|
|
||||||
if not self.config.has_key('useGroups'):
|
|
||||||
self.set("useGroups", False)
|
|
||||||
return self.config.get('useGroups', False)
|
|
||||||
def openDefaultGroup(self):
|
|
||||||
if not self.config.has_key('openDefaultGroup'):
|
|
||||||
self.set("openDefaultGroup", True)
|
|
||||||
return self.config.get('openDefaultGroup', True)
|
|
||||||
def showEmptyGroups(self):
|
|
||||||
if not self.config.has_key('emptyGroups'):
|
|
||||||
self.set("emptyGroups", False)
|
|
||||||
return self.config.get('emptyGroups', False)
|
|
||||||
def showOnlineNumbers(self):
|
|
||||||
if not self.config.has_key('onlineNumbers'):
|
|
||||||
self.set("onlineNumbers", False)
|
|
||||||
return self.config.get('onlineNumbers', False)
|
|
||||||
def addChum(self, chum):
|
def addChum(self, chum):
|
||||||
if chum.handle not in self.chums():
|
if chum.handle not in self.chums():
|
||||||
fp = open(self.filename) # what if we have two clients open??
|
fp = open(self.filename) # what if we have two clients open??
|
||||||
|
@ -325,25 +295,6 @@ class userConfig(object):
|
||||||
l = self.getBlocklist()
|
l = self.getBlocklist()
|
||||||
l.pop(l.index(handle))
|
l.pop(l.index(handle))
|
||||||
self.set('block', l)
|
self.set('block', l)
|
||||||
def getGroups(self):
|
|
||||||
if not self.config.has_key('groups'):
|
|
||||||
self.set('groups', [])
|
|
||||||
return self.config.get('groups', [])
|
|
||||||
def addGroup(self, group, open=False):
|
|
||||||
l = self.getGroups()
|
|
||||||
if group not in l:
|
|
||||||
l.append([group,open])
|
|
||||||
l.sort()
|
|
||||||
self.set('groups', l)
|
|
||||||
def delGroup(self, group):
|
|
||||||
l = self.getGroups()
|
|
||||||
i = 0
|
|
||||||
for g in l:
|
|
||||||
if g[0] == group: break
|
|
||||||
i = i+1
|
|
||||||
l.pop(i)
|
|
||||||
l.sort()
|
|
||||||
self.set('groups', l)
|
|
||||||
def server(self):
|
def server(self):
|
||||||
return self.config.get('server', 'irc.mindfang.org')
|
return self.config.get('server', 'irc.mindfang.org')
|
||||||
def port(self):
|
def port(self):
|
||||||
|
@ -432,6 +383,9 @@ class userProfile(object):
|
||||||
return self.theme
|
return self.theme
|
||||||
def save(self):
|
def save(self):
|
||||||
handle = self.chat.handle
|
handle = self.chat.handle
|
||||||
|
if handle[0:12] == "pesterClient":
|
||||||
|
# dont save temp profiles
|
||||||
|
return
|
||||||
try:
|
try:
|
||||||
jsonoutput = json.dumps(self.userprofile)
|
jsonoutput = json.dumps(self.userprofile)
|
||||||
except ValueError, e:
|
except ValueError, e:
|
||||||
|
@ -457,9 +411,9 @@ class WMButton(QtGui.QPushButton):
|
||||||
self.setStyleSheet("QPushButton { padding: 0px; }")
|
self.setStyleSheet("QPushButton { padding: 0px; }")
|
||||||
self.setAutoDefault(False)
|
self.setAutoDefault(False)
|
||||||
|
|
||||||
class chumListing(QtGui.QTreeWidgetItem):
|
class chumListing(QtGui.QListWidgetItem):
|
||||||
def __init__(self, chum, window):
|
def __init__(self, chum, window):
|
||||||
QtGui.QTreeWidgetItem.__init__(self, [chum.handle])
|
QtGui.QListWidgetItem.__init__(self, chum.handle)
|
||||||
self.mainwindow = window
|
self.mainwindow = window
|
||||||
self.chum = chum
|
self.chum = chum
|
||||||
self.handle = chum.handle
|
self.handle = chum.handle
|
||||||
|
@ -473,46 +427,33 @@ class chumListing(QtGui.QTreeWidgetItem):
|
||||||
mood = self.chum.mood
|
mood = self.chum.mood
|
||||||
self.mood = mood
|
self.mood = mood
|
||||||
icon = self.mood.icon(self.mainwindow.theme)
|
icon = self.mood.icon(self.mainwindow.theme)
|
||||||
self.setIcon(0, icon)
|
self.setIcon(icon)
|
||||||
try:
|
try:
|
||||||
self.setTextColor(0, QtGui.QColor(self.mainwindow.theme["main/chums/moods"][self.mood.name()]["color"]))
|
self.setTextColor(QtGui.QColor(self.mainwindow.theme["main/chums/moods"][self.mood.name()]["color"]))
|
||||||
except KeyError:
|
except KeyError:
|
||||||
self.setTextColor(0, QtGui.QColor(self.mainwindow.theme["main/chums/moods/chummy/color"]))
|
self.setTextColor(QtGui.QColor(self.mainwindow.theme["main/chums/moods/chummy/color"]))
|
||||||
def changeTheme(self, theme):
|
def changeTheme(self, theme):
|
||||||
icon = self.mood.icon(theme)
|
icon = self.mood.icon(theme)
|
||||||
self.setIcon(0, icon)
|
self.setIcon(icon)
|
||||||
try:
|
try:
|
||||||
self.setTextColor(0, QtGui.QColor(self.mainwindow.theme["main/chums/moods"][self.mood.name()]["color"]))
|
self.setTextColor(QtGui.QColor(self.mainwindow.theme["main/chums/moods"][self.mood.name()]["color"]))
|
||||||
except KeyError:
|
except KeyError:
|
||||||
self.setTextColor(0, QtGui.QColor(self.mainwindow.theme["main/chums/moods/chummy/color"]))
|
self.setTextColor(QtGui.QColor(self.mainwindow.theme["main/chums/moods/chummy/color"]))
|
||||||
def __lt__(self, cl):
|
def __lt__(self, cl):
|
||||||
h1 = self.handle.lower()
|
h1 = self.handle.lower()
|
||||||
h2 = cl.handle.lower()
|
h2 = cl.handle.lower()
|
||||||
return (h1 < h2)
|
return (h1 < h2)
|
||||||
|
|
||||||
class chumArea(RightClickTree):
|
class chumArea(RightClickList):
|
||||||
def __init__(self, chums, parent=None):
|
def __init__(self, chums, parent=None):
|
||||||
QtGui.QTreeWidget.__init__(self, parent)
|
QtGui.QListWidget.__init__(self, parent)
|
||||||
self.mainwindow = parent
|
self.mainwindow = parent
|
||||||
theme = self.mainwindow.theme
|
theme = self.mainwindow.theme
|
||||||
self.chums = chums
|
self.chums = chums
|
||||||
gTemp = self.mainwindow.config.getGroups()
|
|
||||||
self.groups = [g[0] for g in gTemp]
|
|
||||||
self.openGroups = [g[1] for g in gTemp]
|
|
||||||
# quick hack to sort saved groups
|
|
||||||
self.mainwindow.config.addGroup("f3rskv9dssag[%3ffvsla09iv34G#$v")
|
|
||||||
self.mainwindow.config.delGroup("f3rskv9dssag[%3ffvsla09iv34G#$v")
|
|
||||||
# end quick hack
|
|
||||||
self.showAllGroups()
|
|
||||||
if not self.mainwindow.config.hideOfflineChums():
|
if not self.mainwindow.config.hideOfflineChums():
|
||||||
self.showAllChums()
|
self.showAllChums()
|
||||||
if not self.mainwindow.config.showEmptyGroups():
|
self.optionsMenu = QtGui.QMenu(self)
|
||||||
self.hideEmptyGroups()
|
self.canonMenu = QtGui.QMenu(self)
|
||||||
if self.mainwindow.config.showOnlineNumbers():
|
|
||||||
self.showOnlineNumbers()
|
|
||||||
self.chumoptions = QtGui.QMenu(self)
|
|
||||||
self.groupoptions = QtGui.QMenu(self)
|
|
||||||
self.optionsMenu = self.chumoptions
|
|
||||||
self.pester = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/pester"], self)
|
self.pester = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/pester"], self)
|
||||||
self.connect(self.pester, QtCore.SIGNAL('triggered()'),
|
self.connect(self.pester, QtCore.SIGNAL('triggered()'),
|
||||||
self, QtCore.SLOT('activateChum()'))
|
self, QtCore.SLOT('activateChum()'))
|
||||||
|
@ -525,98 +466,35 @@ class chumArea(RightClickTree):
|
||||||
self.logchum = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/viewlog"], self)
|
self.logchum = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/viewlog"], self)
|
||||||
self.connect(self.logchum, QtCore.SIGNAL('triggered()'),
|
self.connect(self.logchum, QtCore.SIGNAL('triggered()'),
|
||||||
self, QtCore.SLOT('openChumLogs()'))
|
self, QtCore.SLOT('openChumLogs()'))
|
||||||
|
self.reportchum = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/report"], self)
|
||||||
|
self.connect(self.reportchum, QtCore.SIGNAL('triggered()'),
|
||||||
|
self, QtCore.SLOT('reportChum()'))
|
||||||
|
self.findalts = QtGui.QAction("Find Alts", self)
|
||||||
|
self.connect(self.findalts, QtCore.SIGNAL('triggered()'),
|
||||||
|
self, QtCore.SLOT('findAlts()'))
|
||||||
|
|
||||||
self.removegroup = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/removegroup"], self)
|
self.optionsMenu.addAction(self.pester)
|
||||||
self.connect(self.removegroup, QtCore.SIGNAL('triggered()'),
|
self.optionsMenu.addAction(self.logchum)
|
||||||
self, QtCore.SLOT('removeGroup()'))
|
self.optionsMenu.addAction(self.blockchum)
|
||||||
self.renamegroup = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/renamegroup"], self)
|
self.optionsMenu.addAction(self.removechum)
|
||||||
self.connect(self.renamegroup, QtCore.SIGNAL('triggered()'),
|
self.optionsMenu.addAction(self.reportchum)
|
||||||
self, QtCore.SLOT('renameGroup()'))
|
|
||||||
self.chumoptions.addAction(self.pester)
|
|
||||||
self.chumoptions.addAction(self.logchum)
|
|
||||||
self.chumoptions.addAction(self.blockchum)
|
|
||||||
self.chumoptions.addAction(self.removechum)
|
|
||||||
self.moveMenu = QtGui.QMenu(self.mainwindow.theme["main/menus/rclickchumlist/movechum"], self)
|
|
||||||
self.chumoptions.addMenu(self.moveMenu)
|
|
||||||
self.moveGroupMenu()
|
|
||||||
|
|
||||||
self.groupoptions.addAction(self.renamegroup)
|
|
||||||
self.groupoptions.addAction(self.removegroup)
|
self.canonMenu.addAction(self.pester)
|
||||||
|
self.canonMenu.addAction(self.logchum)
|
||||||
|
self.canonMenu.addAction(self.blockchum)
|
||||||
|
self.canonMenu.addAction(self.removechum)
|
||||||
|
self.canonMenu.addAction(self.reportchum)
|
||||||
|
self.canonMenu.addAction(self.findalts)
|
||||||
|
|
||||||
self.initTheme(theme)
|
self.initTheme(theme)
|
||||||
#self.sortItems()
|
self.sortItems()
|
||||||
#self.sortItems(1, QtCore.Qt.AscendingOrder)
|
def getOptionsMenu(self):
|
||||||
self.setSortingEnabled(False)
|
currenthandle = self.currentItem().chum.handle
|
||||||
self.header().hide()
|
if currenthandle in canon_handles:
|
||||||
self.setDropIndicatorShown(False)
|
return self.canonMenu
|
||||||
self.setIndentation(0)
|
else:
|
||||||
self.setDragEnabled(True)
|
return self.optionsMenu
|
||||||
self.setDragDropMode(QtGui.QAbstractItemView.InternalMove)
|
|
||||||
|
|
||||||
self.connect(self, QtCore.SIGNAL('itemDoubleClicked(QTreeWidgetItem *, int)'),
|
|
||||||
self, QtCore.SLOT('expandGroup()'))
|
|
||||||
|
|
||||||
def dropEvent(self, event):
|
|
||||||
item = self.itemAt(event.pos())
|
|
||||||
if item:
|
|
||||||
text = str(item.text(0))
|
|
||||||
if text.rfind(" ") != -1:
|
|
||||||
text = text[0:text.rfind(" ")]
|
|
||||||
if text == "Chums" or text in self.groups:
|
|
||||||
group = text
|
|
||||||
else:
|
|
||||||
ptext = str(item.parent().text(0))
|
|
||||||
if ptext.rfind(" ") != -1:
|
|
||||||
ptext = ptext[0:ptext.rfind(" ")]
|
|
||||||
group = ptext
|
|
||||||
chumLabel = event.source().currentItem()
|
|
||||||
chumLabel.chum.group = group
|
|
||||||
self.mainwindow.chumdb.setGroup(chumLabel.chum.handle, group)
|
|
||||||
self.takeItem(chumLabel)
|
|
||||||
self.addItem(chumLabel)
|
|
||||||
if self.mainwindow.config.showOnlineNumbers():
|
|
||||||
self.showOnlineNumbers()
|
|
||||||
|
|
||||||
def chumoptionsmenu(self):
|
|
||||||
self.optionsMenu = self.chumoptions
|
|
||||||
def groupoptionsmenu(self):
|
|
||||||
self.optionsMenu = self.groupoptions
|
|
||||||
def moveGroupMenu(self):
|
|
||||||
currentGroup = self.currentItem()
|
|
||||||
if currentGroup:
|
|
||||||
text = str(currentGroup.parent().text(0))
|
|
||||||
if text.rfind(" ") != -1:
|
|
||||||
text = text[0:text.rfind(" ")]
|
|
||||||
currentGroup = text
|
|
||||||
self.moveMenu.clear()
|
|
||||||
actGroup = QtGui.QActionGroup(self)
|
|
||||||
|
|
||||||
groups = self.groups[:]
|
|
||||||
groups.insert(0, "Chums")
|
|
||||||
for gtext in groups:
|
|
||||||
if gtext == currentGroup:
|
|
||||||
continue
|
|
||||||
movegroup = self.moveMenu.addAction(gtext)
|
|
||||||
actGroup.addAction(movegroup)
|
|
||||||
self.connect(actGroup, QtCore.SIGNAL('triggered(QAction *)'),
|
|
||||||
self, QtCore.SLOT('moveToGroup(QAction *)'))
|
|
||||||
def contextMenuEvent(self, event):
|
|
||||||
#fuckin Qt
|
|
||||||
if event.reason() == QtGui.QContextMenuEvent.Mouse:
|
|
||||||
listing = self.itemAt(event.pos())
|
|
||||||
self.setCurrentItem(listing)
|
|
||||||
text = str(self.currentItem().text(0))
|
|
||||||
if text.rfind(" ") != -1:
|
|
||||||
text = text[0:text.rfind(" ")]
|
|
||||||
if text == "Chums":
|
|
||||||
return
|
|
||||||
elif text in self.groups:
|
|
||||||
self.groupoptionsmenu()
|
|
||||||
else:
|
|
||||||
self.chumoptionsmenu()
|
|
||||||
self.moveGroupMenu()
|
|
||||||
self.optionsMenu.popup(event.globalPos())
|
|
||||||
|
|
||||||
def addChum(self, chum):
|
def addChum(self, chum):
|
||||||
if len([c for c in self.chums if c.handle == chum.handle]) != 0:
|
if len([c for c in self.chums if c.handle == chum.handle]) != 0:
|
||||||
return
|
return
|
||||||
|
@ -625,152 +503,29 @@ class chumArea(RightClickTree):
|
||||||
chum.mood.name() == "offline"):
|
chum.mood.name() == "offline"):
|
||||||
chumLabel = chumListing(chum, self.mainwindow)
|
chumLabel = chumListing(chum, self.mainwindow)
|
||||||
self.addItem(chumLabel)
|
self.addItem(chumLabel)
|
||||||
#self.topLevelItem(0).addChild(chumLabel)
|
self.sortItems()
|
||||||
#self.topLevelItem(0).sortChildren(0, QtCore.Qt.AscendingOrder)
|
|
||||||
|
|
||||||
def getChums(self, handle):
|
def getChums(self, handle):
|
||||||
chums = self.findItems(handle, QtCore.Qt.MatchContains | QtCore.Qt.MatchRecursive)
|
chums = self.findItems(handle, QtCore.Qt.MatchFlags(0))
|
||||||
return chums
|
return chums
|
||||||
|
|
||||||
def showAllChums(self):
|
def showAllChums(self):
|
||||||
for c in self.chums:
|
for c in self.chums:
|
||||||
chandle = c.handle
|
chandle = c.handle
|
||||||
if not len(self.findItems(chandle, QtCore.Qt.MatchContains | QtCore.Qt.MatchRecursive)):
|
if not self.findItems(chandle, QtCore.Qt.MatchFlags(0)):
|
||||||
chumLabel = chumListing(c, self.mainwindow)
|
chumLabel = chumListing(c, self.mainwindow)
|
||||||
self.addItem(chumLabel)
|
self.addItem(chumLabel)
|
||||||
#self.sortItems()
|
self.sortItems()
|
||||||
def hideOfflineChums(self):
|
def hideOfflineChums(self):
|
||||||
for j in range(self.topLevelItemCount()):
|
|
||||||
i = 0
|
|
||||||
listing = self.topLevelItem(j).child(i)
|
|
||||||
while listing is not None:
|
|
||||||
if listing.chum.mood.name() == "offline":
|
|
||||||
self.topLevelItem(j).takeChild(i)
|
|
||||||
else:
|
|
||||||
i += 1
|
|
||||||
listing = self.topLevelItem(j).child(i)
|
|
||||||
self.topLevelItem(j).sortChildren(0, QtCore.Qt.AscendingOrder)
|
|
||||||
def showAllGroups(self):
|
|
||||||
curgroups = []
|
|
||||||
for i in range(self.topLevelItemCount()):
|
|
||||||
text = str(self.topLevelItem(i).text(0))
|
|
||||||
if text.rfind(" ") != -1:
|
|
||||||
text = text[0:text.rfind(" ")]
|
|
||||||
curgroups.append(text)
|
|
||||||
if "Chums" not in curgroups:
|
|
||||||
child_1 = QtGui.QTreeWidgetItem(["Chums"])
|
|
||||||
self.addTopLevelItem(child_1)
|
|
||||||
if self.mainwindow.config.openDefaultGroup():
|
|
||||||
child_1.setExpanded(True)
|
|
||||||
for i,g in enumerate(self.groups):
|
|
||||||
if g not in curgroups:
|
|
||||||
child_1 = QtGui.QTreeWidgetItem(["%s" % (g)])
|
|
||||||
self.addTopLevelItem(child_1)
|
|
||||||
if self.openGroups[i]:
|
|
||||||
child_1.setExpanded(True)
|
|
||||||
def showOnlineNumbers(self):
|
|
||||||
if hasattr(self, 'groups'):
|
|
||||||
self.hideOnlineNumbers()
|
|
||||||
totals = {'Chums': 0}
|
|
||||||
online = {'Chums': 0}
|
|
||||||
for g in self.groups:
|
|
||||||
totals[str(g)] = 0
|
|
||||||
online[str(g)] = 0
|
|
||||||
for c in self.chums:
|
|
||||||
yes = c.mood.name() != "offline"
|
|
||||||
if c.group == "Chums":
|
|
||||||
totals[str(c.group)] = totals[str(c.group)]+1
|
|
||||||
if yes:
|
|
||||||
online[str(c.group)] = online[str(c.group)]+1
|
|
||||||
elif c.group in totals:
|
|
||||||
totals[str(c.group)] = totals[str(c.group)]+1
|
|
||||||
if yes:
|
|
||||||
online[str(c.group)] = online[str(c.group)]+1
|
|
||||||
else:
|
|
||||||
totals["Chums"] = totals["Chums"]+1
|
|
||||||
if yes:
|
|
||||||
online["Chums"] = online["Chums"]+1
|
|
||||||
for i in range(self.topLevelItemCount()):
|
|
||||||
text = str(self.topLevelItem(i).text(0))
|
|
||||||
if text.rfind(" ") != -1:
|
|
||||||
text = text[0:text.rfind(" ")]
|
|
||||||
self.topLevelItem(i).setText(0, "%s (%i/%i)" % (text, online[text], totals[text]))
|
|
||||||
def hideOnlineNumbers(self):
|
|
||||||
for i in range(self.topLevelItemCount()):
|
|
||||||
text = str(self.topLevelItem(i).text(0))
|
|
||||||
if text.rfind(" ") != -1:
|
|
||||||
text = text[0:text.rfind(" ")]
|
|
||||||
self.topLevelItem(i).setText(0, "%s" % (text))
|
|
||||||
def hideEmptyGroups(self):
|
|
||||||
i = 0
|
i = 0
|
||||||
listing = self.topLevelItem(i)
|
listing = self.item(i)
|
||||||
while listing is not None:
|
while listing is not None:
|
||||||
if listing.childCount() == 0:
|
if listing.chum.mood.name() == "offline":
|
||||||
self.takeTopLevelItem(i)
|
self.takeItem(i)
|
||||||
else:
|
else:
|
||||||
i += 1
|
i += 1
|
||||||
listing = self.topLevelItem(i)
|
listing = self.item(i)
|
||||||
@QtCore.pyqtSlot()
|
self.sortItems()
|
||||||
def expandGroup(self):
|
|
||||||
item = self.currentItem()
|
|
||||||
text = str(item.text(0))
|
|
||||||
if text.find(" ") != -1:
|
|
||||||
text = text[0:text.rfind(" ")]
|
|
||||||
|
|
||||||
if text in self.groups:
|
|
||||||
self.mainwindow.config.delGroup(text)
|
|
||||||
expand = item.isExpanded()
|
|
||||||
self.mainwindow.config.addGroup(text, not expand)
|
|
||||||
elif text == "Chums":
|
|
||||||
self.mainwindow.config.set("openDefaultGroup", not item.isExpanded())
|
|
||||||
def addItem(self, chumLabel):
|
|
||||||
if hasattr(self, 'groups'):
|
|
||||||
if chumLabel.chum.group not in self.groups:
|
|
||||||
if self.topLevelItemCount() == 0:
|
|
||||||
child_1 = QtGui.QTreeWidgetItem(["Chums"])
|
|
||||||
self.addTopLevelItem(child_1)
|
|
||||||
if self.mainwindow.config.openDefaultGroup():
|
|
||||||
child_1.setExpanded(True)
|
|
||||||
else:
|
|
||||||
text = str(self.topLevelItem(0).text(0))
|
|
||||||
if text.find(" ") != -1:
|
|
||||||
text = text[0:text.rfind(" ")]
|
|
||||||
if text != "Chums":
|
|
||||||
child_1 = QtGui.QTreeWidgetItem(["Chums"])
|
|
||||||
self.insertTopLevelItems(0, [child_1])
|
|
||||||
if self.mainwindow.config.openDefaultGroup():
|
|
||||||
child_1.setExpanded(True)
|
|
||||||
self.topLevelItem(0).addChild(chumLabel)
|
|
||||||
self.topLevelItem(0).sortChildren(0, QtCore.Qt.AscendingOrder)
|
|
||||||
else:
|
|
||||||
if not self.findItems(chumLabel.handle, QtCore.Qt.MatchContains | QtCore.Qt.MatchRecursive):
|
|
||||||
if not self.findItems(chumLabel.chum.group, QtCore.Qt.MatchContains):
|
|
||||||
child_1 = QtGui.QTreeWidgetItem(["%s" % (chumLabel.chum.group)])
|
|
||||||
self.addTopLevelItem(child_1)
|
|
||||||
if self.openGroups[self.groups.index("%s" % (chumLabel.chum.group))]:
|
|
||||||
child_1.setExpanded(True)
|
|
||||||
for i in range(self.topLevelItemCount()):
|
|
||||||
text = str(self.topLevelItem(i).text(0))
|
|
||||||
if text.rfind(" ") != -1:
|
|
||||||
text = text[0:text.rfind(" ")]
|
|
||||||
if text == chumLabel.chum.group:
|
|
||||||
break
|
|
||||||
self.topLevelItem(i).addChild(chumLabel)
|
|
||||||
self.topLevelItem(i).sortChildren(0, QtCore.Qt.AscendingOrder)
|
|
||||||
else: # usually means this is now the trollslum
|
|
||||||
if not self.findItems(chumLabel.handle, QtCore.Qt.MatchContains | QtCore.Qt.MatchRecursive):
|
|
||||||
self.topLevelItem(0).addChild(chumLabel)
|
|
||||||
self.topLevelItem(0).sortChildren(0, QtCore.Qt.AscendingOrder)
|
|
||||||
def takeItem(self, chumLabel):
|
|
||||||
r = None
|
|
||||||
for i in range(self.topLevelItemCount()):
|
|
||||||
for j in range(self.topLevelItem(i).childCount()):
|
|
||||||
if self.topLevelItem(i).child(j).text(0) == chumLabel.chum.handle:
|
|
||||||
r = self.topLevelItem(i).takeChild(j)
|
|
||||||
break
|
|
||||||
if not self.mainwindow.config.showEmptyGroups():
|
|
||||||
self.hideEmptyGroups()
|
|
||||||
return r
|
|
||||||
def updateMood(self, handle, mood):
|
def updateMood(self, handle, mood):
|
||||||
hideoff = self.mainwindow.config.hideOfflineChums()
|
hideoff = self.mainwindow.config.hideOfflineChums()
|
||||||
chums = self.getChums(handle)
|
chums = self.getChums(handle)
|
||||||
|
@ -781,7 +536,7 @@ class chumArea(RightClickTree):
|
||||||
handle in [p.handle for p in self.chums]:
|
handle in [p.handle for p in self.chums]:
|
||||||
newLabel = chumListing([p for p in self.chums if p.handle == handle][0], self.mainwindow)
|
newLabel = chumListing([p for p in self.chums if p.handle == handle][0], self.mainwindow)
|
||||||
self.addItem(newLabel)
|
self.addItem(newLabel)
|
||||||
#self.sortItems()
|
self.sortItems()
|
||||||
chums = [newLabel]
|
chums = [newLabel]
|
||||||
elif mood.name() == "offline" and \
|
elif mood.name() == "offline" and \
|
||||||
len(chums) > 0:
|
len(chums) > 0:
|
||||||
|
@ -791,8 +546,6 @@ class chumArea(RightClickTree):
|
||||||
for c in chums:
|
for c in chums:
|
||||||
oldmood = c.mood
|
oldmood = c.mood
|
||||||
c.setMood(mood)
|
c.setMood(mood)
|
||||||
if self.mainwindow.config.showOnlineNumbers():
|
|
||||||
self.showOnlineNumbers()
|
|
||||||
return oldmood
|
return oldmood
|
||||||
def updateColor(self, handle, color):
|
def updateColor(self, handle, color):
|
||||||
chums = self.findItems(handle, QtCore.Qt.MatchFlags(0))
|
chums = self.findItems(handle, QtCore.Qt.MatchFlags(0))
|
||||||
|
@ -809,27 +562,14 @@ class chumArea(RightClickTree):
|
||||||
self.removechum.setText(theme["main/menus/rclickchumlist/removechum"])
|
self.removechum.setText(theme["main/menus/rclickchumlist/removechum"])
|
||||||
self.blockchum.setText(theme["main/menus/rclickchumlist/blockchum"])
|
self.blockchum.setText(theme["main/menus/rclickchumlist/blockchum"])
|
||||||
self.logchum.setText(theme["main/menus/rclickchumlist/viewlog"])
|
self.logchum.setText(theme["main/menus/rclickchumlist/viewlog"])
|
||||||
self.removegroup.setText(theme["main/menus/rclickchumlist/removegroup"])
|
|
||||||
self.renamegroup.setText(theme["main/menus/rclickchumlist/renamegroup"])
|
|
||||||
self.moveMenu.setTitle(theme["main/menus/rclickchumlist/movechum"])
|
|
||||||
def changeTheme(self, theme):
|
def changeTheme(self, theme):
|
||||||
self.initTheme(theme)
|
self.initTheme(theme)
|
||||||
chumlistings = []
|
chumlistings = [self.item(i) for i in range(0, self.count())]
|
||||||
for i in range(self.topLevelItemCount()):
|
|
||||||
for j in range(self.topLevelItem(i).childCount()):
|
|
||||||
chumlistings.append(self.topLevelItem(i).child(j))
|
|
||||||
#chumlistings = [self.item(i) for i in range(0, self.count())]
|
|
||||||
for c in chumlistings:
|
for c in chumlistings:
|
||||||
c.changeTheme(theme)
|
c.changeTheme(theme)
|
||||||
|
|
||||||
def count(self):
|
|
||||||
c = 0
|
|
||||||
for i in range(self.topLevelItemCount()):
|
|
||||||
c = c + self.topLevelItem(i).childCount()
|
|
||||||
return c
|
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def activateChum(self):
|
def activateChum(self):
|
||||||
self.itemActivated.emit(self.currentItem(), 0)
|
self.itemActivated.emit(self.currentItem())
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def removeChum(self, handle = None):
|
def removeChum(self, handle = None):
|
||||||
if handle:
|
if handle:
|
||||||
|
@ -841,7 +581,7 @@ class chumArea(RightClickTree):
|
||||||
currentChum = self.currentItem().chum
|
currentChum = self.currentItem().chum
|
||||||
self.chums = [c for c in self.chums if c.handle != currentChum.handle]
|
self.chums = [c for c in self.chums if c.handle != currentChum.handle]
|
||||||
self.removeChumSignal.emit(self.currentItem().chum.handle)
|
self.removeChumSignal.emit(self.currentItem().chum.handle)
|
||||||
oldlist = self.takeItem(self.currentItem())
|
oldlist = self.takeItem(self.currentRow())
|
||||||
del oldlist
|
del oldlist
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def blockChum(self):
|
def blockChum(self):
|
||||||
|
@ -850,8 +590,20 @@ class chumArea(RightClickTree):
|
||||||
return
|
return
|
||||||
self.blockChumSignal.emit(self.currentItem().chum.handle)
|
self.blockChumSignal.emit(self.currentItem().chum.handle)
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
|
def reportChum(self):
|
||||||
|
currentChum = self.currentItem()
|
||||||
|
if not currentChum:
|
||||||
|
return
|
||||||
|
self.mainwindow.reportChum(self.currentItem().chum.handle)
|
||||||
|
@QtCore.pyqtSlot()
|
||||||
|
def findAlts(self):
|
||||||
|
currentChum = self.currentItem()
|
||||||
|
if not currentChum:
|
||||||
|
return
|
||||||
|
self.mainwindow.sendMessage.emit("ALT %s" % (currentChum.chum.handle) , "calSprite")
|
||||||
|
@QtCore.pyqtSlot()
|
||||||
def openChumLogs(self):
|
def openChumLogs(self):
|
||||||
currentChum = self.currentItem().text(0)
|
currentChum = self.currentItem().text()
|
||||||
if not currentChum:
|
if not currentChum:
|
||||||
return
|
return
|
||||||
self.pesterlogviewer = PesterLogViewer(currentChum, self.mainwindow.config, self.mainwindow.theme, self.mainwindow)
|
self.pesterlogviewer = PesterLogViewer(currentChum, self.mainwindow.config, self.mainwindow.theme, self.mainwindow)
|
||||||
|
@ -866,67 +618,20 @@ class chumArea(RightClickTree):
|
||||||
self.pesterlogviewer = None
|
self.pesterlogviewer = None
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def renameGroup(self):
|
def renameGroup(self):
|
||||||
if not hasattr(self, 'renamegroupdialog'):
|
(gname, ok) = QtGui.QInputDialog.getText(self, "Rename Group", "Enter a new name for the group:")
|
||||||
self.renamegroupdialog = None
|
if ok:
|
||||||
if not self.renamegroupdialog:
|
pass
|
||||||
(gname, ok) = QtGui.QInputDialog.getText(self, "Rename Group", "Enter a new name for the group:")
|
#rename group
|
||||||
if ok:
|
|
||||||
gname = unicode(gname)
|
|
||||||
currentGroup = self.currentItem()
|
|
||||||
if not currentGroup:
|
|
||||||
return
|
|
||||||
index = self.indexOfTopLevelItem(currentGroup)
|
|
||||||
if index != -1:
|
|
||||||
expanded = currentGroup.isExpanded()
|
|
||||||
text = str(currentGroup.text(0))
|
|
||||||
if text.rfind(" ") != -1:
|
|
||||||
text = text[0:text.rfind(" ")]
|
|
||||||
self.mainwindow.config.delGroup(text)
|
|
||||||
self.mainwindow.config.addGroup(gname, expanded)
|
|
||||||
gTemp = self.mainwindow.config.getGroups()
|
|
||||||
self.groups = [g[0] for g in gTemp]
|
|
||||||
self.openGroups = [g[1] for g in gTemp]
|
|
||||||
for i in range(currentGroup.childCount()):
|
|
||||||
currentGroup.child(i).chum.group = gname
|
|
||||||
self.mainwindow.chumdb.setGroup(currentGroup.child(i).chum.handle, gname)
|
|
||||||
currentGroup.setText(0, gname)
|
|
||||||
if self.mainwindow.config.showOnlineNumbers():
|
|
||||||
self.showOnlineNumbers()
|
|
||||||
self.renamegroupdialog = None
|
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def removeGroup(self):
|
def removeGroup(self):
|
||||||
currentGroup = self.currentItem()
|
pass
|
||||||
if not currentGroup:
|
#remove group
|
||||||
return
|
|
||||||
text = str(currentGroup.text(0))
|
|
||||||
if text.rfind(" ") != -1:
|
|
||||||
text = text[0:text.rfind(" ")]
|
|
||||||
self.mainwindow.config.delGroup(text)
|
|
||||||
gTemp = self.mainwindow.config.getGroups()
|
|
||||||
self.groups = [g[0] for g in gTemp]
|
|
||||||
self.openGroups = [g[1] for g in gTemp]
|
|
||||||
for i in range(self.topLevelItemCount()):
|
|
||||||
if self.topLevelItem(i).text(0) == currentGroup.text(0):
|
|
||||||
break
|
|
||||||
while self.topLevelItem(i) and self.topLevelItem(i).child(0):
|
|
||||||
chumLabel = self.topLevelItem(i).child(0)
|
|
||||||
chumLabel.chum.group = "Chums"
|
|
||||||
self.mainwindow.chumdb.setGroup(chumLabel.chum.handle, "Chums")
|
|
||||||
self.takeItem(chumLabel)
|
|
||||||
self.addItem(chumLabel)
|
|
||||||
self.takeTopLevelItem(i)
|
|
||||||
@QtCore.pyqtSlot(QtGui.QAction)
|
@QtCore.pyqtSlot(QtGui.QAction)
|
||||||
def moveToGroup(self, item):
|
def moveToGroup(self, item):
|
||||||
if not item:
|
pass
|
||||||
return
|
#move to group
|
||||||
group = str(item.text())
|
|
||||||
chumLabel = self.currentItem()
|
|
||||||
if not chumLabel:
|
|
||||||
return
|
|
||||||
chumLabel.chum.group = group
|
|
||||||
self.mainwindow.chumdb.setGroup(chumLabel.chum.handle, group)
|
|
||||||
self.takeItem(chumLabel)
|
|
||||||
self.addItem(chumLabel)
|
|
||||||
|
|
||||||
removeChumSignal = QtCore.pyqtSignal(QtCore.QString)
|
removeChumSignal = QtCore.pyqtSignal(QtCore.QString)
|
||||||
blockChumSignal = QtCore.pyqtSignal(QtCore.QString)
|
blockChumSignal = QtCore.pyqtSignal(QtCore.QString)
|
||||||
|
@ -938,34 +643,19 @@ class trollSlum(chumArea):
|
||||||
theme = self.mainwindow.theme
|
theme = self.mainwindow.theme
|
||||||
self.setStyleSheet(theme["main/trollslum/chumroll/style"])
|
self.setStyleSheet(theme["main/trollslum/chumroll/style"])
|
||||||
self.chums = trolls
|
self.chums = trolls
|
||||||
child_1 = QtGui.QTreeWidgetItem([""])
|
|
||||||
self.addTopLevelItem(child_1)
|
|
||||||
child_1.setExpanded(True)
|
|
||||||
for c in self.chums:
|
for c in self.chums:
|
||||||
chandle = c.handle
|
chandle = c.handle
|
||||||
if not self.findItems(chandle, QtCore.Qt.MatchFlags(0)):
|
if not self.findItems(chandle, QtCore.Qt.MatchFlags(0)):
|
||||||
chumLabel = chumListing(c, self.mainwindow)
|
chumLabel = chumListing(c, self.mainwindow)
|
||||||
self.addItem(chumLabel)
|
self.addItem(chumLabel)
|
||||||
|
|
||||||
self.setSortingEnabled(False)
|
|
||||||
self.header().hide()
|
|
||||||
self.setDropIndicatorShown(False)
|
|
||||||
self.setIndentation(0)
|
|
||||||
|
|
||||||
self.optionsMenu = QtGui.QMenu(self)
|
self.optionsMenu = QtGui.QMenu(self)
|
||||||
self.unblockchum = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/unblockchum"], self)
|
self.unblockchum = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/unblockchum"], self)
|
||||||
self.connect(self.unblockchum, QtCore.SIGNAL('triggered()'),
|
self.connect(self.unblockchum, QtCore.SIGNAL('triggered()'),
|
||||||
self, QtCore.SIGNAL('unblockChumSignal()'))
|
self, QtCore.SIGNAL('unblockChumSignal()'))
|
||||||
self.optionsMenu.addAction(self.unblockchum)
|
self.optionsMenu.addAction(self.unblockchum)
|
||||||
|
|
||||||
#self.sortItems()
|
self.sortItems()
|
||||||
def contextMenuEvent(self, event):
|
|
||||||
#fuckin Qt
|
|
||||||
if event.reason() == QtGui.QContextMenuEvent.Mouse:
|
|
||||||
listing = self.itemAt(event.pos())
|
|
||||||
self.setCurrentItem(listing)
|
|
||||||
if self.currentItem().text(0) != "":
|
|
||||||
self.optionsMenu.popup(event.globalPos())
|
|
||||||
def changeTheme(self, theme):
|
def changeTheme(self, theme):
|
||||||
self.setStyleSheet(theme["main/trollslum/chumroll/style"])
|
self.setStyleSheet(theme["main/trollslum/chumroll/style"])
|
||||||
self.removechum.setText(theme["main/menus/rclickchumlist/removechum"])
|
self.removechum.setText(theme["main/menus/rclickchumlist/removechum"])
|
||||||
|
@ -1182,10 +872,6 @@ class PesterWindow(MovingWindow):
|
||||||
self.logv = logv
|
self.logv = logv
|
||||||
self.connect(logv, QtCore.SIGNAL('triggered()'),
|
self.connect(logv, QtCore.SIGNAL('triggered()'),
|
||||||
self, QtCore.SLOT('openLogv()'))
|
self, QtCore.SLOT('openLogv()'))
|
||||||
grps = QtGui.QAction(self.theme["main/menus/client/addgroup"], self)
|
|
||||||
self.grps = grps
|
|
||||||
self.connect(grps, QtCore.SIGNAL('triggered()'),
|
|
||||||
self, QtCore.SLOT('addGroupWindow()'))
|
|
||||||
opts = QtGui.QAction(self.theme["main/menus/client/options"], self)
|
opts = QtGui.QAction(self.theme["main/menus/client/options"], self)
|
||||||
self.opts = opts
|
self.opts = opts
|
||||||
self.connect(opts, QtCore.SIGNAL('triggered()'),
|
self.connect(opts, QtCore.SIGNAL('triggered()'),
|
||||||
|
@ -1222,7 +908,6 @@ class PesterWindow(MovingWindow):
|
||||||
filemenu.addAction(logv)
|
filemenu.addAction(logv)
|
||||||
filemenu.addAction(userlistaction)
|
filemenu.addAction(userlistaction)
|
||||||
filemenu.addAction(self.idleaction)
|
filemenu.addAction(self.idleaction)
|
||||||
filemenu.addAction(grps)
|
|
||||||
filemenu.addAction(self.importaction)
|
filemenu.addAction(self.importaction)
|
||||||
filemenu.addAction(self.reconnectAction)
|
filemenu.addAction(self.reconnectAction)
|
||||||
filemenu.addAction(exitaction)
|
filemenu.addAction(exitaction)
|
||||||
|
@ -1261,15 +946,18 @@ class PesterWindow(MovingWindow):
|
||||||
self.aboutAction = QtGui.QAction(self.theme["main/menus/help/about"], self)
|
self.aboutAction = QtGui.QAction(self.theme["main/menus/help/about"], self)
|
||||||
self.connect(self.aboutAction, QtCore.SIGNAL('triggered()'),
|
self.connect(self.aboutAction, QtCore.SIGNAL('triggered()'),
|
||||||
self, QtCore.SLOT('aboutPesterchum()'))
|
self, QtCore.SLOT('aboutPesterchum()'))
|
||||||
|
self.botAction = QtGui.QAction("CALSPRITE", self)
|
||||||
|
self.connect(self.botAction, QtCore.SIGNAL('triggered()'),
|
||||||
|
self, QtCore.SLOT('loadCalsprite()'))
|
||||||
self.helpAction = QtGui.QAction("HELP", self)
|
self.helpAction = QtGui.QAction("HELP", self)
|
||||||
self.connect(self.helpAction, QtCore.SIGNAL('triggered()'),
|
self.connect(self.helpAction, QtCore.SIGNAL('triggered()'),
|
||||||
self, QtCore.SLOT('launchHelp()'))
|
self, QtCore.SLOT('launchHelp()'))
|
||||||
helpmenu = self.menu.addMenu(self.theme["main/menus/help/_name"])
|
helpmenu = self.menu.addMenu(self.theme["main/menus/help/_name"])
|
||||||
self.helpmenu = helpmenu
|
self.helpmenu = helpmenu
|
||||||
self.helpmenu.addAction(self.helpAction)
|
self.helpmenu.addAction(self.helpAction)
|
||||||
|
self.helpmenu.addAction(self.botAction)
|
||||||
self.helpmenu.addAction(self.aboutAction)
|
self.helpmenu.addAction(self.aboutAction)
|
||||||
|
|
||||||
|
|
||||||
self.closeButton = WMButton(PesterIcon(self.theme["main/close/image"]), self)
|
self.closeButton = WMButton(PesterIcon(self.theme["main/close/image"]), self)
|
||||||
self.connect(self.closeButton, QtCore.SIGNAL('clicked()'),
|
self.connect(self.closeButton, QtCore.SIGNAL('clicked()'),
|
||||||
self, QtCore.SLOT('closeToTray()'))
|
self, QtCore.SLOT('closeToTray()'))
|
||||||
|
@ -1283,7 +971,7 @@ class PesterWindow(MovingWindow):
|
||||||
chums = [PesterProfile(c, chumdb=self.chumdb) for c in set(self.config.chums())]
|
chums = [PesterProfile(c, chumdb=self.chumdb) for c in set(self.config.chums())]
|
||||||
self.chumList = chumArea(chums, self)
|
self.chumList = chumArea(chums, self)
|
||||||
self.connect(self.chumList,
|
self.connect(self.chumList,
|
||||||
QtCore.SIGNAL('itemActivated(QTreeWidgetItem *, int)'),
|
QtCore.SIGNAL('itemActivated(QListWidgetItem *)'),
|
||||||
self,
|
self,
|
||||||
QtCore.SLOT('pesterSelectedChum()'))
|
QtCore.SLOT('pesterSelectedChum()'))
|
||||||
self.connect(self.chumList,
|
self.connect(self.chumList,
|
||||||
|
@ -1389,10 +1077,10 @@ class PesterWindow(MovingWindow):
|
||||||
else:
|
else:
|
||||||
self.alarm.play()
|
self.alarm.play()
|
||||||
def newMemoMsg(self, chan, handle, msg):
|
def newMemoMsg(self, chan, handle, msg):
|
||||||
if not self.memos.has_key(chan):
|
if not self.memos.has_key(chan.upper()):
|
||||||
# silently ignore in case we forgot to /part
|
# silently ignore in case we forgot to /part
|
||||||
return
|
return
|
||||||
memo = self.memos[chan]
|
memo = self.memos[chan.upper()]
|
||||||
msg = unicode(msg)
|
msg = unicode(msg)
|
||||||
if not memo.times.has_key(handle):
|
if not memo.times.has_key(handle):
|
||||||
# new chum! time current
|
# new chum! time current
|
||||||
|
@ -1420,6 +1108,16 @@ class PesterWindow(MovingWindow):
|
||||||
if hasattr(self, 'trollslum') and self.trollslum:
|
if hasattr(self, 'trollslum') and self.trollslum:
|
||||||
self.trollslum.updateMood(handle, mood)
|
self.trollslum.updateMood(handle, mood)
|
||||||
def newConversation(self, chum, initiated=True):
|
def newConversation(self, chum, initiated=True):
|
||||||
|
if type(chum) in [str, unicode]:
|
||||||
|
matchingChums = [c for c in self.chumList.chums if c.handle == chum]
|
||||||
|
if len(matchingChums) > 0:
|
||||||
|
mood = matchingChums[0].mood
|
||||||
|
else:
|
||||||
|
mood = Mood(2)
|
||||||
|
chum = PesterProfile(chum, mood=mood, chumdb=self.chumdb)
|
||||||
|
if len(matchingChums) == 0:
|
||||||
|
self.moodRequest.emit(chum)
|
||||||
|
|
||||||
if self.convos.has_key(chum.handle):
|
if self.convos.has_key(chum.handle):
|
||||||
self.convos[chum.handle].showChat()
|
self.convos[chum.handle].showChat()
|
||||||
return
|
return
|
||||||
|
@ -1450,8 +1148,8 @@ class PesterWindow(MovingWindow):
|
||||||
def newMemo(self, channel, timestr, secret=False):
|
def newMemo(self, channel, timestr, secret=False):
|
||||||
if channel == "#pesterchum":
|
if channel == "#pesterchum":
|
||||||
return
|
return
|
||||||
if self.memos.has_key(channel):
|
if self.memos.has_key(channel.upper()):
|
||||||
self.memos[channel].showChat()
|
self.memos[channel.upper()].showChat()
|
||||||
return
|
return
|
||||||
# do slider dialog then set
|
# do slider dialog then set
|
||||||
if self.config.tabs():
|
if self.config.tabs():
|
||||||
|
@ -1472,7 +1170,7 @@ class PesterWindow(MovingWindow):
|
||||||
QtCore.SIGNAL('userPresentSignal(QString, QString, QString)'),
|
QtCore.SIGNAL('userPresentSignal(QString, QString, QString)'),
|
||||||
memoWindow, QtCore.SLOT('userPresentChange(QString, QString, QString)'))
|
memoWindow, QtCore.SLOT('userPresentChange(QString, QString, QString)'))
|
||||||
# chat client send memo open
|
# chat client send memo open
|
||||||
self.memos[channel] = memoWindow
|
self.memos[channel.upper()] = memoWindow
|
||||||
self.joinChannel.emit(channel) # race condition?
|
self.joinChannel.emit(channel) # race condition?
|
||||||
self.secret = secret
|
self.secret = secret
|
||||||
if self.secret:
|
if self.secret:
|
||||||
|
@ -1519,7 +1217,6 @@ class PesterWindow(MovingWindow):
|
||||||
# menus
|
# menus
|
||||||
self.menu.move(*theme["main/menu/loc"])
|
self.menu.move(*theme["main/menu/loc"])
|
||||||
self.logv.setText(theme["main/menus/client/logviewer"])
|
self.logv.setText(theme["main/menus/client/logviewer"])
|
||||||
self.grps.setText(theme["main/menus/client/addgroup"])
|
|
||||||
self.opts.setText(theme["main/menus/client/options"])
|
self.opts.setText(theme["main/menus/client/options"])
|
||||||
self.exitaction.setText(theme["main/menus/client/exit"])
|
self.exitaction.setText(theme["main/menus/client/exit"])
|
||||||
self.userlistaction.setText(theme["main/menus/client/userlist"])
|
self.userlistaction.setText(theme["main/menus/client/userlist"])
|
||||||
|
@ -1674,12 +1371,7 @@ class PesterWindow(MovingWindow):
|
||||||
def pesterSelectedChum(self):
|
def pesterSelectedChum(self):
|
||||||
curChum = self.chumList.currentItem()
|
curChum = self.chumList.currentItem()
|
||||||
if curChum:
|
if curChum:
|
||||||
text = str(curChum.text(0))
|
self.newConversationWindow(curChum)
|
||||||
if text.find(" ") != -1:
|
|
||||||
text = text[0:text.rfind(" ")]
|
|
||||||
if text not in self.chumList.groups and \
|
|
||||||
text != "Chums":
|
|
||||||
self.newConversationWindow(curChum)
|
|
||||||
@QtCore.pyqtSlot(QtGui.QListWidgetItem)
|
@QtCore.pyqtSlot(QtGui.QListWidgetItem)
|
||||||
def newConversationWindow(self, chumlisting):
|
def newConversationWindow(self, chumlisting):
|
||||||
# check chumdb
|
# check chumdb
|
||||||
|
@ -1703,7 +1395,7 @@ class PesterWindow(MovingWindow):
|
||||||
c = unicode(channel)
|
c = unicode(channel)
|
||||||
self.chatlog.finish(c)
|
self.chatlog.finish(c)
|
||||||
self.leftChannel.emit(channel)
|
self.leftChannel.emit(channel)
|
||||||
del self.memos[c]
|
del self.memos[c.upper()]
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def tabsClosed(self):
|
def tabsClosed(self):
|
||||||
del self.tabconvo
|
del self.tabconvo
|
||||||
|
@ -1735,19 +1427,19 @@ class PesterWindow(MovingWindow):
|
||||||
@QtCore.pyqtSlot(QtCore.QString, QtCore.QString, QtCore.QString)
|
@QtCore.pyqtSlot(QtCore.QString, QtCore.QString, QtCore.QString)
|
||||||
def timeCommand(self, chan, handle, command):
|
def timeCommand(self, chan, handle, command):
|
||||||
(c, h, cmd) = (unicode(chan), unicode(handle), unicode(command))
|
(c, h, cmd) = (unicode(chan), unicode(handle), unicode(command))
|
||||||
if self.memos[c]:
|
if self.memos[c.upper()]:
|
||||||
self.memos[c].timeUpdate(h, cmd)
|
self.memos[c.upper()].timeUpdate(h, cmd)
|
||||||
|
|
||||||
@QtCore.pyqtSlot(QtCore.QString, PesterList)
|
@QtCore.pyqtSlot(QtCore.QString, PesterList)
|
||||||
def updateNames(self, channel, names):
|
def updateNames(self, channel, names):
|
||||||
c = unicode(channel)
|
c = unicode(channel).upper()
|
||||||
# update name DB
|
# update name DB
|
||||||
self.namesdb[c] = names
|
self.namesdb[c] = names
|
||||||
# warn interested party of names
|
# warn interested party of names
|
||||||
self.namesUpdated.emit()
|
self.namesUpdated.emit()
|
||||||
@QtCore.pyqtSlot(QtCore.QString, QtCore.QString, QtCore.QString)
|
@QtCore.pyqtSlot(QtCore.QString, QtCore.QString, QtCore.QString)
|
||||||
def userPresentUpdate(self, handle, channel, update):
|
def userPresentUpdate(self, handle, channel, update):
|
||||||
c = unicode(channel)
|
c = unicode(channel).upper()
|
||||||
n = unicode(handle)
|
n = unicode(handle)
|
||||||
if update == "nick":
|
if update == "nick":
|
||||||
l = n.split(":")
|
l = n.split(":")
|
||||||
|
@ -1811,6 +1503,11 @@ class PesterWindow(MovingWindow):
|
||||||
@QtCore.pyqtSlot(QtCore.QString)
|
@QtCore.pyqtSlot(QtCore.QString)
|
||||||
def removeChum(self, chumlisting):
|
def removeChum(self, chumlisting):
|
||||||
self.config.removeChum(chumlisting)
|
self.config.removeChum(chumlisting)
|
||||||
|
def reportChum(self, handle):
|
||||||
|
(reason, ok) = QtGui.QInputDialog.getText(self, "Report User", "Enter the reason you are reporting this user (optional):")
|
||||||
|
if ok:
|
||||||
|
self.sendMessage.emit("REPORT %s %s" % (handle, reason) , "calSprite")
|
||||||
|
|
||||||
@QtCore.pyqtSlot(QtCore.QString)
|
@QtCore.pyqtSlot(QtCore.QString)
|
||||||
def blockChum(self, handle):
|
def blockChum(self, handle):
|
||||||
h = unicode(handle)
|
h = unicode(handle)
|
||||||
|
@ -1970,6 +1667,8 @@ class PesterWindow(MovingWindow):
|
||||||
self, QtCore.SLOT('userListClose()'))
|
self, QtCore.SLOT('userListClose()'))
|
||||||
self.connect(self.allusers, QtCore.SIGNAL('addChum(QString)'),
|
self.connect(self.allusers, QtCore.SIGNAL('addChum(QString)'),
|
||||||
self, QtCore.SLOT('userListAdd(QString)'))
|
self, QtCore.SLOT('userListAdd(QString)'))
|
||||||
|
self.connect(self.allusers, QtCore.SIGNAL('pesterChum(QString)'),
|
||||||
|
self, QtCore.SLOT('userListPester(QString)'))
|
||||||
self.requestNames.emit("#pesterchum")
|
self.requestNames.emit("#pesterchum")
|
||||||
self.allusers.show()
|
self.allusers.show()
|
||||||
|
|
||||||
|
@ -1978,6 +1677,10 @@ class PesterWindow(MovingWindow):
|
||||||
h = unicode(handle)
|
h = unicode(handle)
|
||||||
chum = PesterProfile(h, chumdb=self.chumdb)
|
chum = PesterProfile(h, chumdb=self.chumdb)
|
||||||
self.addChum(chum)
|
self.addChum(chum)
|
||||||
|
@QtCore.pyqtSlot(QtCore.QString)
|
||||||
|
def userListPester(self, handle):
|
||||||
|
h = unicode(handle)
|
||||||
|
self.newConversation(h)
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def userListClose(self):
|
def userListClose(self):
|
||||||
self.allusers = None
|
self.allusers = None
|
||||||
|
@ -2020,25 +1723,6 @@ class PesterWindow(MovingWindow):
|
||||||
def closeLogUsers(self):
|
def closeLogUsers(self):
|
||||||
self.logusermenu.close()
|
self.logusermenu.close()
|
||||||
self.logusermenu = None
|
self.logusermenu = None
|
||||||
|
|
||||||
@QtCore.pyqtSlot()
|
|
||||||
def addGroupWindow(self):
|
|
||||||
if not hasattr(self, 'addgroupdialog'):
|
|
||||||
self.addgroupdialog = None
|
|
||||||
if not self.addgroupdialog:
|
|
||||||
(gname, ok) = QtGui.QInputDialog.getText(self, "Add Group", "Enter a name for the new group:")
|
|
||||||
if ok:
|
|
||||||
gname = unicode(gname)
|
|
||||||
self.config.addGroup(gname)
|
|
||||||
gTemp = self.config.getGroups()
|
|
||||||
self.chumList.groups = [g[0] for g in gTemp]
|
|
||||||
self.chumList.openGroups = [g[1] for g in gTemp]
|
|
||||||
self.chumList.showAllGroups()
|
|
||||||
if not self.config.showEmptyGroups():
|
|
||||||
self.chumList.hideEmptyGroups()
|
|
||||||
|
|
||||||
self.addgroupdialog = None
|
|
||||||
|
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def openOpts(self):
|
def openOpts(self):
|
||||||
if not hasattr(self, 'optionmenu'):
|
if not hasattr(self, 'optionmenu'):
|
||||||
|
@ -2120,24 +1804,6 @@ class PesterWindow(MovingWindow):
|
||||||
self.config.set("time12Format", False)
|
self.config.set("time12Format", False)
|
||||||
secondssetting = self.optionmenu.secondscheck.isChecked()
|
secondssetting = self.optionmenu.secondscheck.isChecked()
|
||||||
self.config.set("showSeconds", secondssetting)
|
self.config.set("showSeconds", secondssetting)
|
||||||
# groups
|
|
||||||
#groupssetting = self.optionmenu.groupscheck.isChecked()
|
|
||||||
#self.config.set("useGroups", groupssetting)
|
|
||||||
emptygroupssetting = self.optionmenu.showemptycheck.isChecked()
|
|
||||||
curemptygroup = self.config.showEmptyGroups()
|
|
||||||
if curemptygroup and not emptygroupssetting:
|
|
||||||
self.chumList.hideEmptyGroups()
|
|
||||||
elif emptygroupssetting and not curemptygroup:
|
|
||||||
self.chumList.showAllGroups()
|
|
||||||
self.config.set("emptyGroups", emptygroupssetting)
|
|
||||||
# online numbers
|
|
||||||
onlinenumsetting = self.optionmenu.showonlinenumbers.isChecked()
|
|
||||||
curonlinenum = self.config.showOnlineNumbers()
|
|
||||||
if onlinenumsetting and not curonlinenum:
|
|
||||||
self.chumList.showOnlineNumbers()
|
|
||||||
elif curonlinenum and not onlinenumsetting:
|
|
||||||
self.chumList.hideOnlineNumbers()
|
|
||||||
self.config.set("onlineNumbers", onlinenumsetting)
|
|
||||||
self.optionmenu = None
|
self.optionmenu = None
|
||||||
|
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
|
@ -2245,6 +1911,9 @@ class PesterWindow(MovingWindow):
|
||||||
self.aboutwindow.exec_()
|
self.aboutwindow.exec_()
|
||||||
self.aboutwindow = None
|
self.aboutwindow = None
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
|
def loadCalsprite(self):
|
||||||
|
self.newConversation("calSprite")
|
||||||
|
@QtCore.pyqtSlot()
|
||||||
def launchHelp(self):
|
def launchHelp(self):
|
||||||
QtGui.QDesktopServices.openUrl(QtCore.QUrl("http://nova.xzibition.com/~illuminatedwax/help.html", QtCore.QUrl.TolerantMode))
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl("http://nova.xzibition.com/~illuminatedwax/help.html", QtCore.QUrl.TolerantMode))
|
||||||
|
|
||||||
|
|
63
readme.txt
63
readme.txt
|
@ -1,4 +1,21 @@
|
||||||
Welcome to Pesterchum 3.14!
|
Welcome to Pesterchum 3.14.1!
|
||||||
|
|
||||||
|
WHAT'S NEW?
|
||||||
|
-----------
|
||||||
|
* Quirks now have a lower(), scramble(), and reverse() function!
|
||||||
|
* Timestamps - check your Config!
|
||||||
|
* Logviewer - View logs right in Pesterchum!
|
||||||
|
* 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
|
||||||
|
that will pester them!
|
||||||
|
* 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:
|
||||||
|
|
||||||
|
@ -59,6 +76,44 @@ list later on in this readme.
|
||||||
|
|
||||||
FA%
|
FA%
|
||||||
---
|
---
|
||||||
|
Q: Norton says it has a virus and then deletes it!
|
||||||
|
A: Read this helpful Norton FAQ:
|
||||||
|
|
||||||
|
Alright, here's a guide to by-passing Norton:
|
||||||
|
First, to download Pesterchum:
|
||||||
|
1: Make sure you're on a Moderator account. Moreso for the Norton steps than these ones.
|
||||||
|
2: Download the .zip file, not the .exe file.
|
||||||
|
3: Unzip the .zip file onto memory. Pesterchum should now be installed.
|
||||||
|
|
||||||
|
Now, to by-pass Norton:
|
||||||
|
1: Make sure you're still on a moderator account.
|
||||||
|
2: Open up Norton.
|
||||||
|
3: Click on 'Settings' up in the upperright hand corner.
|
||||||
|
4: Click on 'Anitivirus', off to the upper left. It has a small image of a needle or something similar off to it's side.
|
||||||
|
5: There's a word that reads 'SONAR protection' halfway to the bottomleft. Off to it's right, there's a bar that's half green. Click on the bar.
|
||||||
|
6: It will warn you about turning off SONAR. Have it set to turn back on when the system restarts.
|
||||||
|
7: If done properly, the background for the main page of Norton(what you saw on steps 2-3) has turned an apocaliptic red. Feel free to close Norton now. Keep in mind to stay off suspicious online sites now.
|
||||||
|
8: Open up Pesterchum, and let the chummy convos begin.
|
||||||
|
|
||||||
|
When finished:
|
||||||
|
First, Log off of Pesterchum. LOG OFF, NOT CLOSE IT.
|
||||||
|
Then, you can either shut off your comp, and Norton will re-enable SONAR, or you can repeat steps 1-5, except turning the red bar green. If done right, Norton will be it's happy color again.
|
||||||
|
Keep in mind that you must repeat all of this(other than the download) every time you want to get on Pesterchum.
|
||||||
|
|
||||||
|
Hope this is helpful!
|
||||||
|
|
||||||
|
(This guide brought to you by the slightly combined efforts of empireomega and Xanaomin)
|
||||||
|
|
||||||
|
Q: I can't connect because my school/university/network/stolen wifi is blocking my connection! OR I can't seem to connect to the server at all and I'm not running any firewalls!
|
||||||
|
A: Edit your pesterchum.js file. Open it up in notepad or something, and then edit the beginning so it looks like this:
|
||||||
|
|
||||||
|
{"port": "1413", ....
|
||||||
|
|
||||||
|
where the .... is the rest of the gobbledygook there.
|
||||||
|
|
||||||
|
Q: The mood buttons on Pesterchum 6.0 don't match up to what it sets your mood to! What gives?
|
||||||
|
A: The mood names are just there to look canon. It is intentional.
|
||||||
|
|
||||||
Q: I'm appearing as offline to 2.5 users/other users appear the wrong
|
Q: I'm appearing as offline to 2.5 users/other users appear the wrong
|
||||||
mood? What's happeninggggg
|
mood? What's happeninggggg
|
||||||
A: The 2.5 people decided to change the mood protocol. When I made
|
A: The 2.5 people decided to change the mood protocol. When I made
|
||||||
|
@ -274,6 +329,12 @@ PC will save your color, quirks, and theme for that profile. Chumrolls
|
||||||
and block lists are the same for all profiles. Feel free to have
|
and block lists are the same for all profiles. Feel free to have
|
||||||
multiple instances of PC running on two or more handles!
|
multiple instances of PC running on two or more handles!
|
||||||
|
|
||||||
|
CALSPRITE
|
||||||
|
---------
|
||||||
|
calSprite is the bot that helps moderate canon handle usage! Simply pester
|
||||||
|
calSprite with the world "HELP" (turn your quirks off!) and you
|
||||||
|
will get instructions on how to use calSprite!
|
||||||
|
|
||||||
QUIRKS
|
QUIRKS
|
||||||
------
|
------
|
||||||
There are six kinds of quirks! I'll teach you how to use them all!
|
There are six kinds of quirks! I'll teach you how to use them all!
|
||||||
|
|
BIN
smilies/discontent.png
Normal file
BIN
smilies/discontent.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 359 B |
Binary file not shown.
Before Width: | Height: | Size: 360 B After Width: | Height: | Size: 360 B |
|
@ -20,10 +20,9 @@
|
||||||
"memos": "Memos",
|
"memos": "Memos",
|
||||||
"logviewer": "Pesterlogs",
|
"logviewer": "Pesterlogs",
|
||||||
"userlist": "Userlist",
|
"userlist": "Userlist",
|
||||||
"addgroup": "Add Group",
|
|
||||||
"import": "Import",
|
"import": "Import",
|
||||||
"reconnect": "Reconnect",
|
"reconnect": "Reconnect",
|
||||||
"idle": "Idle",
|
"idle": "Idle",
|
||||||
"exit": "Exit"},
|
"exit": "Exit"},
|
||||||
"profile": {"_name": "Profile",
|
"profile": {"_name": "Profile",
|
||||||
"switch": "Switch",
|
"switch": "Switch",
|
||||||
|
@ -36,12 +35,10 @@
|
||||||
"rclickchumlist": {"pester": "Pester",
|
"rclickchumlist": {"pester": "Pester",
|
||||||
"removechum": "Remove Chum",
|
"removechum": "Remove Chum",
|
||||||
"blockchum": "Block",
|
"blockchum": "Block",
|
||||||
|
"report": "Report",
|
||||||
"addchum": "Add Chum",
|
"addchum": "Add Chum",
|
||||||
"viewlog": "View Pesterlog",
|
"viewlog": "View Pesterlog",
|
||||||
"unblockchum": "Unblock",
|
"unblockchum": "Unblock",
|
||||||
"removegroup": "Remove Group",
|
|
||||||
"renamegroup": "Rename Group",
|
|
||||||
"movechum": "Move To",
|
|
||||||
"banuser": "Ban User",
|
"banuser": "Ban User",
|
||||||
"opuser": "Make OP",
|
"opuser": "Make OP",
|
||||||
"quirksoff": "Quirks Off"
|
"quirksoff": "Quirks Off"
|
||||||
|
@ -58,7 +55,7 @@
|
||||||
"loc": [440, 211],
|
"loc": [440, 211],
|
||||||
"size": [289, 275],
|
"size": [289, 275],
|
||||||
"userlistcolor": "black",
|
"userlistcolor": "black",
|
||||||
"moods": {
|
"moods": {
|
||||||
|
|
||||||
"chummy": { "icon": "$path/chummy.gif", "color": "black" },
|
"chummy": { "icon": "$path/chummy.gif", "color": "black" },
|
||||||
|
|
||||||
|
@ -66,7 +63,7 @@
|
||||||
|
|
||||||
"offline": { "icon": "$path/offline.gif", "color": "#9d9d9d"},
|
"offline": { "icon": "$path/offline.gif", "color": "#9d9d9d"},
|
||||||
|
|
||||||
|
|
||||||
"pleasant": { "icon": "$path/pleasant.gif", "color": "black" },
|
"pleasant": { "icon": "$path/pleasant.gif", "color": "black" },
|
||||||
|
|
||||||
"distraught": { "icon": "$path/distraught.gif", "color": "black" },
|
"distraught": { "icon": "$path/distraught.gif", "color": "black" },
|
||||||
|
@ -94,7 +91,7 @@
|
||||||
"devious": { "icon": "$path/devious.gif", "color": "red" },
|
"devious": { "icon": "$path/devious.gif", "color": "red" },
|
||||||
|
|
||||||
"sleek": { "icon": "$path/sleek.gif", "color": "red" },
|
"sleek": { "icon": "$path/sleek.gif", "color": "red" },
|
||||||
|
|
||||||
"detestful": { "icon": "$path/detestful.gif", "color": "red" },
|
"detestful": { "icon": "$path/detestful.gif", "color": "red" },
|
||||||
|
|
||||||
"mirthful": { "icon": "$path/mirthful.gif", "color": "red" },
|
"mirthful": { "icon": "$path/mirthful.gif", "color": "red" },
|
||||||
|
@ -113,7 +110,7 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"trollslum": {
|
"trollslum": {
|
||||||
"style": "background: #fdb302; border:2px solid yellow; font-family: 'Century Gothic'",
|
"style": "background: #fdb302; border:2px solid yellow; font-family: 'Century Gothic'",
|
||||||
"size": [195, 200],
|
"size": [195, 200],
|
||||||
"label": { "text": "TROLLSLUM",
|
"label": { "text": "TROLLSLUM",
|
||||||
|
@ -131,7 +128,7 @@
|
||||||
"text": "" },
|
"text": "" },
|
||||||
"currentMood": [1500, 1500]
|
"currentMood": [1500, 1500]
|
||||||
},
|
},
|
||||||
"defaultwindow": { "style": "background: #fdb302; font-family:'Century Gothic';font:bold;selection-background-color:#919191; "
|
"defaultwindow": { "style": "background: #fdb302; font-family:'Century Gothic';font:bold;selection-background-color:#919191; "
|
||||||
},
|
},
|
||||||
"addchum": { "style": "background: rgba(255, 255, 0, 0%); border:0px; color: rgba(0, 0, 0, 0%);",
|
"addchum": { "style": "background: rgba(255, 255, 0, 0%); border:0px; color: rgba(0, 0, 0, 0%);",
|
||||||
"loc": [443,144],
|
"loc": [443,144],
|
||||||
|
@ -151,82 +148,82 @@
|
||||||
},
|
},
|
||||||
"defaultmood": 0,
|
"defaultmood": 0,
|
||||||
"moodlabel": { "style": "",
|
"moodlabel": { "style": "",
|
||||||
"loc": [20, 430],
|
"loc": [20, 430],
|
||||||
"text": ""
|
"text": ""
|
||||||
},
|
},
|
||||||
"moods": [
|
"moods": [
|
||||||
{ "style": "background-image:url($path/mood1.png); border:0px;",
|
{ "style": "background-image:url($path/mood1.png); border:0px;",
|
||||||
"selected": "background-image:url($path/mood1c.png); border:0px;",
|
"selected": "background-image:url($path/mood1c.png); border:0px;",
|
||||||
"loc": [0, 258],
|
"loc": [0, 258],
|
||||||
"size": [100,110],
|
"size": [100,110],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 0
|
"mood": 0
|
||||||
},
|
},
|
||||||
{ "style": "background-image:url($path/mood2.png); border:0px;",
|
{ "style": "background-image:url($path/mood2.png); border:0px;",
|
||||||
"selected": "background-image:url($path/mood2c.png); border:0px;",
|
"selected": "background-image:url($path/mood2c.png); border:0px;",
|
||||||
"loc": [106, 258],
|
"loc": [106, 258],
|
||||||
"size": [100, 110],
|
"size": [100, 110],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 19
|
"mood": 19
|
||||||
},
|
},
|
||||||
{ "style": "background-image:url($path/mood3.png); border:0px;",
|
{ "style": "background-image:url($path/mood3.png); border:0px;",
|
||||||
"selected": "background-image:url($path/mood3c.png); border:0px;",
|
"selected": "background-image:url($path/mood3c.png); border:0px;",
|
||||||
"loc": [212, 258],
|
"loc": [212, 258],
|
||||||
"size": [100, 110],
|
"size": [100, 110],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 22
|
"mood": 22
|
||||||
},
|
},
|
||||||
{ "style": "background-image:url($path/mood4.png); border:0px;",
|
{ "style": "background-image:url($path/mood4.png); border:0px;",
|
||||||
"selected": "background-image:url($path/mood4c.png); border:0px;",
|
"selected": "background-image:url($path/mood4c.png); border:0px;",
|
||||||
"loc": [318, 258],
|
"loc": [318, 258],
|
||||||
"size": [100, 110],
|
"size": [100, 110],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 4
|
"mood": 4
|
||||||
},
|
},
|
||||||
{ "style": "background-image:url($path/mood5.png); border:0px;",
|
{ "style": "background-image:url($path/mood5.png); border:0px;",
|
||||||
"selected": "background-image:url($path/mood5c.png); border:0px;",
|
"selected": "background-image:url($path/mood5c.png); border:0px;",
|
||||||
"loc": [0, 382],
|
"loc": [0, 382],
|
||||||
"size": [100, 110],
|
"size": [100, 110],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 3
|
"mood": 3
|
||||||
},
|
},
|
||||||
{ "style": "background-image:url($path/mood6.png); border:0px;",
|
{ "style": "background-image:url($path/mood6.png); border:0px;",
|
||||||
"selected": "background-image:url($path/mood6c.png); border:0px;",
|
"selected": "background-image:url($path/mood6c.png); border:0px;",
|
||||||
"loc": [106, 382],
|
"loc": [106, 382],
|
||||||
"size": [100, 110],
|
"size": [100, 110],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 20
|
"mood": 20
|
||||||
},
|
},
|
||||||
{ "style": "background-image:url($path/mood7.png); border:0px;",
|
{ "style": "background-image:url($path/mood7.png); border:0px;",
|
||||||
"selected": "background-image:url($path/mood7c.png); border:0px;",
|
"selected": "background-image:url($path/mood7c.png); border:0px;",
|
||||||
"loc": [212, 382],
|
"loc": [212, 382],
|
||||||
"size": [100, 110],
|
"size": [100, 110],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 5
|
"mood": 5
|
||||||
},
|
},
|
||||||
{ "style": "background-image:url($path/mood8.png); border:0px;",
|
{ "style": "background-image:url($path/mood8.png); border:0px;",
|
||||||
"selected": "background-image:url($path/mood8c.png); border:0px;",
|
"selected": "background-image:url($path/mood8c.png); border:0px;",
|
||||||
"loc": [318, 382],
|
"loc": [318, 382],
|
||||||
"size": [100, 110],
|
"size": [100, 110],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 1
|
"mood": 1
|
||||||
},
|
},
|
||||||
{ "style": "border:0px;",
|
{ "style": "border:0px;",
|
||||||
"selected": "border:0px;",
|
"selected": "border:0px;",
|
||||||
"loc": [0, 0],
|
"loc": [0, 0],
|
||||||
"size": [100, 100],
|
"size": [100, 100],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 2
|
"mood": 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"convo":
|
"convo":
|
||||||
|
@ -234,7 +231,7 @@
|
||||||
"tabstyle": "background-color: #fdb302; font-family: 'Century Gothic'",
|
"tabstyle": "background-color: #fdb302; font-family: 'Century Gothic'",
|
||||||
"scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: rgba(255, 255, 0, 0%); border:0px;",
|
"scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: rgba(255, 255, 0, 0%); border:0px;",
|
||||||
"handle": "border-width: 5px; border-image:url($path/scrollbg.png) 5px; min-height:60px;",
|
"handle": "border-width: 5px; border-image:url($path/scrollbg.png) 5px; min-height:60px;",
|
||||||
"downarrow": "height:17px;border:0px solid #c48a00;",
|
"downarrow": "height:17px;border:0px solid #c48a00;",
|
||||||
"darrowstyle": "image:url($path/downarrow.png);",
|
"darrowstyle": "image:url($path/downarrow.png);",
|
||||||
"uparrow": "height:17px;border:0px solid #c48a00;",
|
"uparrow": "height:17px;border:0px solid #c48a00;",
|
||||||
"uarrowstyle": "image:url($path/uparrow.png);"
|
"uarrowstyle": "image:url($path/uparrow.png);"
|
||||||
|
@ -262,12 +259,12 @@
|
||||||
"ceasepester": "ceased pestering",
|
"ceasepester": "ceased pestering",
|
||||||
"blocked": "blocked",
|
"blocked": "blocked",
|
||||||
"unblocked": "unblocked",
|
"unblocked": "unblocked",
|
||||||
"blockedmsg": "did not receive message from",
|
"blockedmsg": "did not receive message from",
|
||||||
"openmemo": "opened memo on board",
|
"openmemo": "opened memo on board",
|
||||||
"joinmemo": "responded to memo",
|
"joinmemo": "responded to memo",
|
||||||
"closememo": "ceased responding to memo",
|
"closememo": "ceased responding to memo",
|
||||||
"kickedmemo": "You have been banned from this memo!",
|
"kickedmemo": "You have been banned from this memo!",
|
||||||
"idle": "is now an idle chum!"
|
"idle": "is now an idle chum!"
|
||||||
},
|
},
|
||||||
"systemMsgColor": "#646464"
|
"systemMsgColor": "#646464"
|
||||||
},
|
},
|
||||||
|
@ -282,7 +279,7 @@
|
||||||
},
|
},
|
||||||
"scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: rgba(255, 255, 0, 0%); border:0px;",
|
"scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: rgba(255, 255, 0, 0%); border:0px;",
|
||||||
"handle": "border-width: 5px; border-image:url($path/scrollbg.png) 5px; min-height:60px;",
|
"handle": "border-width: 5px; border-image:url($path/scrollbg.png) 5px; min-height:60px;",
|
||||||
"downarrow": "height:17px;border:0px;",
|
"downarrow": "height:17px;border:0px;",
|
||||||
"darrowstyle": "image:url();",
|
"darrowstyle": "image:url();",
|
||||||
"uparrow": "height:17px;border:0px;",
|
"uparrow": "height:17px;border:0px;",
|
||||||
"uarrowstyle": "image:url();"
|
"uarrowstyle": "image:url();"
|
||||||
|
@ -299,20 +296,20 @@
|
||||||
"userlist": { "width": 150,
|
"userlist": { "width": 150,
|
||||||
"style": "border:2px solid #c48a00; background: white; font-family: 'Century Gothic';selection-background-color:#646464; font-size: 14px; margin-left:0px; margin-right:10px;"
|
"style": "border:2px solid #c48a00; background: white; font-family: 'Century Gothic';selection-background-color:#646464; font-size: 14px; margin-left:0px; margin-right:10px;"
|
||||||
},
|
},
|
||||||
"time": { "text": { "width": 75,
|
"time": { "text": { "width": 75,
|
||||||
"style": " border: 2px solid yellow; background: white; font-size: 12px; margin-top: 5px; margin-right: 5px; margin-left: 5px; font-family:'Century Gothic';font:bold;"
|
"style": " border: 2px solid yellow; background: white; font-size: 12px; margin-top: 5px; margin-right: 5px; margin-left: 5px; font-family:'Century Gothic';font:bold;"
|
||||||
},
|
},
|
||||||
"slider": { "style": "border: 0px;",
|
"slider": { "style": "border: 0px;",
|
||||||
"groove": "",
|
"groove": "",
|
||||||
"handle": ""
|
"handle": ""
|
||||||
},
|
},
|
||||||
"buttons": { "style": "color: black; font: bold; border: 2px solid #c48a00; font-size: 12px; background: yellow; margin-top: 5px; margin-right: 5px; margin-left: 5px; padding: 2px; width: 50px;" },
|
"buttons": { "style": "color: black; font: bold; border: 2px solid #c48a00; font-size: 12px; background: yellow; margin-top: 5px; margin-right: 5px; margin-left: 5px; padding: 2px; width: 50px;" },
|
||||||
"arrows": { "left": "$path/leftarrow.png",
|
"arrows": { "left": "$path/leftarrow.png",
|
||||||
"right": "$path/rightarrow.png",
|
"right": "$path/rightarrow.png",
|
||||||
"style": " border:0px; margin-top: 5px; margin-right:10px;"
|
"style": " border:0px; margin-top: 5px; margin-right:10px;"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systemMsgColor": "#646464",
|
"systemMsgColor": "#646464",
|
||||||
"op": { "icon": "$path/smooth.png" }
|
"op": { "icon": "$path/smooth.png" }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -16,16 +16,15 @@
|
||||||
"loc": [150,22]
|
"loc": [150,22]
|
||||||
},
|
},
|
||||||
"sounds": { "alertsound": "$path/alarm.wav",
|
"sounds": { "alertsound": "$path/alarm.wav",
|
||||||
"ceasesound": "$path/cease.wav" },
|
"ceasesound": "$path/cease.wav" },
|
||||||
"menus": {"client": {"_name": "Client",
|
"menus": {"client": {"_name": "Client",
|
||||||
"options": "Options",
|
"options": "Options",
|
||||||
"memos": "Memos",
|
"memos": "Memos",
|
||||||
"logviewer": "Pesterlogs",
|
"logviewer": "Pesterlogs",
|
||||||
"userlist": "Userlist",
|
"userlist": "Userlist",
|
||||||
"addgroup": "Add Group",
|
|
||||||
"import": "Import",
|
"import": "Import",
|
||||||
"reconnect": "Reconnect",
|
"reconnect": "Reconnect",
|
||||||
"idle": "Idle",
|
"idle": "Idle",
|
||||||
"exit": "Exit"},
|
"exit": "Exit"},
|
||||||
"profile": {"_name": "Profile",
|
"profile": {"_name": "Profile",
|
||||||
"switch": "Switch",
|
"switch": "Switch",
|
||||||
|
@ -37,13 +36,11 @@
|
||||||
"about": "About" },
|
"about": "About" },
|
||||||
"rclickchumlist": {"pester": "Pester",
|
"rclickchumlist": {"pester": "Pester",
|
||||||
"removechum": "Remove Chum",
|
"removechum": "Remove Chum",
|
||||||
|
"report": "Report",
|
||||||
"blockchum": "Block",
|
"blockchum": "Block",
|
||||||
"addchum": "Add Chum",
|
"addchum": "Add Chum",
|
||||||
"viewlog": "View Pesterlog",
|
"viewlog": "View Pesterlog",
|
||||||
"unblockchum": "Unblock",
|
"unblockchum": "Unblock",
|
||||||
"removegroup": "Remove Group",
|
|
||||||
"renamegroup": "Rename Group",
|
|
||||||
"movechum": "Move To",
|
|
||||||
"banuser": "Ban User",
|
"banuser": "Ban User",
|
||||||
"opuser": "Make OP",
|
"opuser": "Make OP",
|
||||||
"quirksoff": "Quirks Off"
|
"quirksoff": "Quirks Off"
|
||||||
|
@ -53,7 +50,7 @@
|
||||||
"loc": [123, 88],
|
"loc": [123, 88],
|
||||||
"size": [190, 65],
|
"size": [190, 65],
|
||||||
"userlistcolor": "white",
|
"userlistcolor": "white",
|
||||||
"moods": {
|
"moods": {
|
||||||
|
|
||||||
"chummy": { "icon": "$path/chummy.png", "color": "white" },
|
"chummy": { "icon": "$path/chummy.png", "color": "white" },
|
||||||
|
|
||||||
|
@ -61,7 +58,7 @@
|
||||||
|
|
||||||
"offline": { "icon": "$path/offline.png", "color": "#bebebe"},
|
"offline": { "icon": "$path/offline.png", "color": "#bebebe"},
|
||||||
|
|
||||||
|
|
||||||
"pleasant": { "icon": "$path/pleasant.png", "color": "white" },
|
"pleasant": { "icon": "$path/pleasant.png", "color": "white" },
|
||||||
|
|
||||||
"distraught": { "icon": "$path/distraught.png", "color": "white" },
|
"distraught": { "icon": "$path/distraught.png", "color": "white" },
|
||||||
|
@ -89,7 +86,7 @@
|
||||||
"devious": { "icon": "$path/devious.png", "color": "red" },
|
"devious": { "icon": "$path/devious.png", "color": "red" },
|
||||||
|
|
||||||
"sleek": { "icon": "$path/sleek.png", "color": "red" },
|
"sleek": { "icon": "$path/sleek.png", "color": "red" },
|
||||||
|
|
||||||
"detestful": { "icon": "$path/detestful.png", "color": "red" },
|
"detestful": { "icon": "$path/detestful.png", "color": "red" },
|
||||||
|
|
||||||
"mirthful": { "icon": "$path/mirthful.png", "color": "red" },
|
"mirthful": { "icon": "$path/mirthful.png", "color": "red" },
|
||||||
|
@ -108,7 +105,7 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"trollslum": {
|
"trollslum": {
|
||||||
"style": "background: #fdb302; border:2px solid yellow; font-family: 'Arial'",
|
"style": "background: #fdb302; border:2px solid yellow; font-family: 'Arial'",
|
||||||
"size": [195, 200],
|
"size": [195, 200],
|
||||||
"label": { "text": "TROLLSLUM",
|
"label": { "text": "TROLLSLUM",
|
||||||
|
@ -126,7 +123,7 @@
|
||||||
"text": "" },
|
"text": "" },
|
||||||
"currentMood": [129, 176]
|
"currentMood": [129, 176]
|
||||||
},
|
},
|
||||||
"defaultwindow": { "style": "background: #fdb302; font-family:'Arial';font:bold;selection-background-color:#919191; "
|
"defaultwindow": { "style": "background: #fdb302; font-family:'Arial';font:bold;selection-background-color:#919191; "
|
||||||
},
|
},
|
||||||
"addchum": { "style": "background: rgba(255, 255, 0, 0%); border:0px; color: rgba(0, 0, 0, 0%);",
|
"addchum": { "style": "background: rgba(255, 255, 0, 0%); border:0px; color: rgba(0, 0, 0, 0%);",
|
||||||
"loc": [25,0],
|
"loc": [25,0],
|
||||||
|
@ -146,90 +143,90 @@
|
||||||
},
|
},
|
||||||
"defaultmood": 0,
|
"defaultmood": 0,
|
||||||
"moodlabel": { "style": "",
|
"moodlabel": { "style": "",
|
||||||
"loc": [20, 430],
|
"loc": [20, 430],
|
||||||
"text": "MOODS"
|
"text": "MOODS"
|
||||||
},
|
},
|
||||||
"moods": [
|
"moods": [
|
||||||
{ "style": "border:0px;",
|
{ "style": "border:0px;",
|
||||||
"selected": "background-image:url($path/moodcheck1.png); border:0px;",
|
"selected": "background-image:url($path/moodcheck1.png); border:0px;",
|
||||||
"loc": [13, 204],
|
"loc": [13, 204],
|
||||||
"size": [101, 27],
|
"size": [101, 27],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 0
|
"mood": 0
|
||||||
},
|
},
|
||||||
{ "style": "border:0px;",
|
{ "style": "border:0px;",
|
||||||
"selected": "background-image:url($path/moodcheck2.png); border:0px;",
|
"selected": "background-image:url($path/moodcheck2.png); border:0px;",
|
||||||
"loc": [13, 231],
|
"loc": [13, 231],
|
||||||
"size": [101, 27],
|
"size": [101, 27],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 19
|
"mood": 19
|
||||||
},
|
},
|
||||||
{ "style": "border:0px;",
|
{ "style": "border:0px;",
|
||||||
"selected": "background-image:url($path/moodcheck3.png); border:0px;",
|
"selected": "background-image:url($path/moodcheck3.png); border:0px;",
|
||||||
"loc": [13, 258],
|
"loc": [13, 258],
|
||||||
"size": [101, 27],
|
"size": [101, 27],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 20
|
"mood": 20
|
||||||
},
|
},
|
||||||
{ "style": "border:0px;",
|
{ "style": "border:0px;",
|
||||||
"selected": "background-image:url($path/moodcheck4.png); border:0px;",
|
"selected": "background-image:url($path/moodcheck4.png); border:0px;",
|
||||||
"loc": [116, 204],
|
"loc": [116, 204],
|
||||||
"size": [101, 27],
|
"size": [101, 27],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 21
|
"mood": 21
|
||||||
},
|
},
|
||||||
{ "style": "border:0px;",
|
{ "style": "border:0px;",
|
||||||
"selected": "background-image:url($path/moodcheck5.png); border:0px;",
|
"selected": "background-image:url($path/moodcheck5.png); border:0px;",
|
||||||
"loc": [116, 231],
|
"loc": [116, 231],
|
||||||
"size": [101, 27],
|
"size": [101, 27],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 22
|
"mood": 22
|
||||||
},
|
},
|
||||||
{ "style": "border:0px;",
|
{ "style": "border:0px;",
|
||||||
"selected": "background-image:url($path/moodcheck6.png); border:0px;",
|
"selected": "background-image:url($path/moodcheck6.png); border:0px;",
|
||||||
"loc": [116, 258],
|
"loc": [116, 258],
|
||||||
"size": [101, 27],
|
"size": [101, 27],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 5
|
"mood": 5
|
||||||
},
|
},
|
||||||
{ "style": "border:0px;",
|
{ "style": "border:0px;",
|
||||||
"selected": "background-image:url($path/moodcheck7.png); border:0px;",
|
"selected": "background-image:url($path/moodcheck7.png); border:0px;",
|
||||||
"loc": [219, 204],
|
"loc": [219, 204],
|
||||||
"size": [101, 27],
|
"size": [101, 27],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 6
|
"mood": 6
|
||||||
},
|
},
|
||||||
{ "style": "border:0px;",
|
{ "style": "border:0px;",
|
||||||
"selected": "background-image:url($path/moodcheck8.png); border:0px;",
|
"selected": "background-image:url($path/moodcheck8.png); border:0px;",
|
||||||
"loc": [219, 231],
|
"loc": [219, 231],
|
||||||
"size": [101, 27],
|
"size": [101, 27],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 3
|
"mood": 3
|
||||||
},
|
},
|
||||||
{ "style": "border:0px;",
|
{ "style": "border:0px;",
|
||||||
"selected": "background-image:url($path/moodcheck9.png); border:0px;",
|
"selected": "background-image:url($path/moodcheck9.png); border:0px;",
|
||||||
"loc": [219, 258],
|
"loc": [219, 258],
|
||||||
"size": [101, 27],
|
"size": [101, 27],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 1
|
"mood": 1
|
||||||
},
|
},
|
||||||
{ "style": "border:0px;",
|
{ "style": "border:0px;",
|
||||||
"selected": "border:0px;",
|
"selected": "border:0px;",
|
||||||
"loc": [13, 175],
|
"loc": [13, 175],
|
||||||
"size": [101, 27],
|
"size": [101, 27],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 2
|
"mood": 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"convo":
|
"convo":
|
||||||
|
@ -237,7 +234,7 @@
|
||||||
"tabstyle": "background-color: #fdb302; font-family: 'Arial'",
|
"tabstyle": "background-color: #fdb302; font-family: 'Arial'",
|
||||||
"scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: rgba(255, 255, 0, 0%); border:0px;",
|
"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;",
|
"handle": "background-color:#c48a00;min-height:20px;",
|
||||||
"downarrow": "height:17px;border:0px solid #c48a00;",
|
"downarrow": "height:17px;border:0px solid #c48a00;",
|
||||||
"darrowstyle": "image:url($path/downarrow.png);",
|
"darrowstyle": "image:url($path/downarrow.png);",
|
||||||
"uparrow": "height:17px;border:0px solid #c48a00;",
|
"uparrow": "height:17px;border:0px solid #c48a00;",
|
||||||
"uarrowstyle": "image:url($path/uparrow.png);"
|
"uarrowstyle": "image:url($path/uparrow.png);"
|
||||||
|
@ -267,12 +264,12 @@
|
||||||
"ceasepester": "ceased pestering",
|
"ceasepester": "ceased pestering",
|
||||||
"blocked": "blocked",
|
"blocked": "blocked",
|
||||||
"unblocked": "unblocked",
|
"unblocked": "unblocked",
|
||||||
"blockedmsg": "did not receive message from",
|
"blockedmsg": "did not receive message from",
|
||||||
"openmemo": "opened memo on board",
|
"openmemo": "opened memo on board",
|
||||||
"joinmemo": "responded to memo",
|
"joinmemo": "responded to memo",
|
||||||
"closememo": "ceased responding to memo",
|
"closememo": "ceased responding to memo",
|
||||||
"kickedmemo": "You have been banned from this memo!",
|
"kickedmemo": "You have been banned from this memo!",
|
||||||
"idle": "is now an idle chum!"
|
"idle": "is now an idle chum!"
|
||||||
},
|
},
|
||||||
"systemMsgColor": "#646464"
|
"systemMsgColor": "#646464"
|
||||||
},
|
},
|
||||||
|
@ -288,7 +285,7 @@
|
||||||
},
|
},
|
||||||
"scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: rgba(255, 255, 0, 0%); border:0px;",
|
"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;",
|
"handle": "background-color:#c48a00;min-height:20px;",
|
||||||
"downarrow": "height:17px;border:0px solid #c48a00;",
|
"downarrow": "height:17px;border:0px solid #c48a00;",
|
||||||
"darrowstyle": "image:url($path/downarrow.png);",
|
"darrowstyle": "image:url($path/downarrow.png);",
|
||||||
"uparrow": "height:17px;border:0px solid #c48a00;",
|
"uparrow": "height:17px;border:0px solid #c48a00;",
|
||||||
"uarrowstyle": "image:url($path/uparrow.png);"
|
"uarrowstyle": "image:url($path/uparrow.png);"
|
||||||
|
@ -305,20 +302,20 @@
|
||||||
"userlist": { "width": 150,
|
"userlist": { "width": 150,
|
||||||
"style": "border:2px solid #c48a00; background: white; font-family: 'Arial';selection-background-color:#646464; font-size: 14px; margin-left:0px; margin-right:10px;"
|
"style": "border:2px solid #c48a00; background: white; font-family: 'Arial';selection-background-color:#646464; font-size: 14px; margin-left:0px; margin-right:10px;"
|
||||||
},
|
},
|
||||||
"time": { "text": { "width": 75,
|
"time": { "text": { "width": 75,
|
||||||
"style": " border: 2px solid yellow; background: white; font-size: 12px; margin-top: 5px; margin-right: 5px; margin-left: 5px; font-family:'Arial';font:bold;"
|
"style": " border: 2px solid yellow; background: white; font-size: 12px; margin-top: 5px; margin-right: 5px; margin-left: 5px; font-family:'Arial';font:bold;"
|
||||||
},
|
},
|
||||||
"slider": { "style": "border: 0px;",
|
"slider": { "style": "border: 0px;",
|
||||||
"groove": "",
|
"groove": "",
|
||||||
"handle": ""
|
"handle": ""
|
||||||
},
|
},
|
||||||
"buttons": { "style": "color: black; font: bold; border: 2px solid #c48a00; font-size: 12px; background: yellow; margin-top: 5px; margin-right: 5px; margin-left: 5px; padding: 2px; width: 50px;" },
|
"buttons": { "style": "color: black; font: bold; border: 2px solid #c48a00; font-size: 12px; background: yellow; margin-top: 5px; margin-right: 5px; margin-left: 5px; padding: 2px; width: 50px;" },
|
||||||
"arrows": { "left": "$path/leftarrow.png",
|
"arrows": { "left": "$path/leftarrow.png",
|
||||||
"right": "$path/rightarrow.png",
|
"right": "$path/rightarrow.png",
|
||||||
"style": " border:0px; margin-top: 5px; margin-right:10px;"
|
"style": " border:0px; margin-top: 5px; margin-right:10px;"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systemMsgColor": "#646464",
|
"systemMsgColor": "#646464",
|
||||||
"op": { "icon": "$path/smooth.png" }
|
"op": { "icon": "$path/smooth.png" }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -16,16 +16,15 @@
|
||||||
"loc": [10,0]
|
"loc": [10,0]
|
||||||
},
|
},
|
||||||
"sounds": { "alertsound": "$path/alarm.wav",
|
"sounds": { "alertsound": "$path/alarm.wav",
|
||||||
"ceasesound": "$path/cease.wav" },
|
"ceasesound": "$path/cease.wav" },
|
||||||
"menus": {"client": {"_name": "CLIENT",
|
"menus": {"client": {"_name": "CLIENT",
|
||||||
"options": "OPTIONS",
|
"options": "OPTIONS",
|
||||||
"memos": "MEMOS",
|
"memos": "MEMOS",
|
||||||
"logviewer": "PESTERLOGS",
|
"logviewer": "PESTERLOGS",
|
||||||
"userlist": "USERLIST",
|
"userlist": "USERLIST",
|
||||||
"addgroup": "ADD GROUP",
|
|
||||||
"import": "IMPORT",
|
"import": "IMPORT",
|
||||||
"reconnect": "RECONNECT",
|
"reconnect": "RECONNECT",
|
||||||
"idle": "IDLE",
|
"idle": "IDLE",
|
||||||
"exit": "EXIT"},
|
"exit": "EXIT"},
|
||||||
"profile": {"_name": "PROFILE",
|
"profile": {"_name": "PROFILE",
|
||||||
"switch": "SWITCH",
|
"switch": "SWITCH",
|
||||||
|
@ -37,13 +36,11 @@
|
||||||
"about": "ABOUT" },
|
"about": "ABOUT" },
|
||||||
"rclickchumlist": {"pester": "PESTER",
|
"rclickchumlist": {"pester": "PESTER",
|
||||||
"removechum": "REMOVE CHUM",
|
"removechum": "REMOVE CHUM",
|
||||||
|
"report": "REPORT",
|
||||||
"blockchum": "BLOCK",
|
"blockchum": "BLOCK",
|
||||||
"addchum": "ADD CHUM",
|
"addchum": "ADD CHUM",
|
||||||
"viewlog": "VIEW PESTERLOG",
|
"viewlog": "VIEW PESTERLOG",
|
||||||
"unblockchum": "UNBLOCK",
|
"unblockchum": "UNBLOCK",
|
||||||
"removegroup": "REMOVE GROUP",
|
|
||||||
"renamegroup": "RENAME GROUP",
|
|
||||||
"movechum": "MOVE TO",
|
|
||||||
"banuser": "BAN USER",
|
"banuser": "BAN USER",
|
||||||
"opuser": "MAKE OP",
|
"opuser": "MAKE OP",
|
||||||
"quirksoff": "QUIRKS OFF"
|
"quirksoff": "QUIRKS OFF"
|
||||||
|
@ -53,7 +50,7 @@
|
||||||
"loc": [12, 117],
|
"loc": [12, 117],
|
||||||
"size": [209, 82],
|
"size": [209, 82],
|
||||||
"userlistcolor": "white",
|
"userlistcolor": "white",
|
||||||
"moods": {
|
"moods": {
|
||||||
|
|
||||||
"chummy": { "icon": "$path/chummy.png", "color": "white" },
|
"chummy": { "icon": "$path/chummy.png", "color": "white" },
|
||||||
|
|
||||||
|
@ -61,7 +58,7 @@
|
||||||
|
|
||||||
"offline": { "icon": "$path/offline.png", "color": "#646464"},
|
"offline": { "icon": "$path/offline.png", "color": "#646464"},
|
||||||
|
|
||||||
|
|
||||||
"pleasant": { "icon": "$path/pleasant.png", "color": "white" },
|
"pleasant": { "icon": "$path/pleasant.png", "color": "white" },
|
||||||
|
|
||||||
"distraught": { "icon": "$path/distraught.png", "color": "white" },
|
"distraught": { "icon": "$path/distraught.png", "color": "white" },
|
||||||
|
@ -89,7 +86,7 @@
|
||||||
"devious": { "icon": "$path/devious.png", "color": "red" },
|
"devious": { "icon": "$path/devious.png", "color": "red" },
|
||||||
|
|
||||||
"sleek": { "icon": "$path/sleek.png", "color": "red" },
|
"sleek": { "icon": "$path/sleek.png", "color": "red" },
|
||||||
|
|
||||||
"detestful": { "icon": "$path/detestful.png", "color": "red" },
|
"detestful": { "icon": "$path/detestful.png", "color": "red" },
|
||||||
|
|
||||||
"mirthful": { "icon": "$path/mirthful.png", "color": "red" },
|
"mirthful": { "icon": "$path/mirthful.png", "color": "red" },
|
||||||
|
@ -108,7 +105,7 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"trollslum": {
|
"trollslum": {
|
||||||
"style": "background: #fdb302; border:2px solid yellow; font-family: 'Courier'",
|
"style": "background: #fdb302; border:2px solid yellow; font-family: 'Courier'",
|
||||||
"size": [195, 200],
|
"size": [195, 200],
|
||||||
"label": { "text": "TROLLSLUM",
|
"label": { "text": "TROLLSLUM",
|
||||||
|
@ -126,7 +123,7 @@
|
||||||
"text": "" },
|
"text": "" },
|
||||||
"currentMood": [18, 249]
|
"currentMood": [18, 249]
|
||||||
},
|
},
|
||||||
"defaultwindow": { "style": "background: #fdb302; font-family:'Courier';font:bold;selection-background-color:#919191; "
|
"defaultwindow": { "style": "background: #fdb302; font-family:'Courier';font:bold;selection-background-color:#919191; "
|
||||||
},
|
},
|
||||||
"addchum": { "style": "background: rgba(255, 255, 0, 0%); border:2px solid #c48a00; font: bold; color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
"addchum": { "style": "background: rgba(255, 255, 0, 0%); border:2px solid #c48a00; font: bold; color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"pressed" : "background: rgb(255, 255, 255, 30%);",
|
"pressed" : "background: rgb(255, 255, 255, 30%);",
|
||||||
|
@ -140,7 +137,7 @@
|
||||||
"size": [71, 22],
|
"size": [71, 22],
|
||||||
"text": ""
|
"text": ""
|
||||||
},
|
},
|
||||||
"block": { "style": "background: rgba(255, 255, 0, 0%); border:2px solid #c48a00; font: bold; color: rgba(255, 255, 0, 0%); font-family:'Courier';",
|
"block": { "style": "background: rgba(255, 255, 0, 0%); border:2px solid #c48a00; font: bold; color: rgba(255, 255, 0, 0%); font-family:'Courier';",
|
||||||
"pressed" : "background: rgb(255, 255, 255, 30%);",
|
"pressed" : "background: rgb(255, 255, 255, 30%);",
|
||||||
"loc": [81,202],
|
"loc": [81,202],
|
||||||
"size": [71, 22],
|
"size": [71, 22],
|
||||||
|
@ -148,73 +145,73 @@
|
||||||
},
|
},
|
||||||
"defaultmood": 0,
|
"defaultmood": 0,
|
||||||
"moodlabel": { "style": "",
|
"moodlabel": { "style": "",
|
||||||
"loc": [20, 430],
|
"loc": [20, 430],
|
||||||
"text": "MOODS"
|
"text": "MOODS"
|
||||||
},
|
},
|
||||||
"moods": [
|
"moods": [
|
||||||
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background-image:url($path/moodcheck1.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
"selected": "text-align:left; background-image:url($path/moodcheck1.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [12, 288],
|
"loc": [12, 288],
|
||||||
"size": [104, 22],
|
"size": [104, 22],
|
||||||
"text": "CHUMMY",
|
"text": "CHUMMY",
|
||||||
"icon": "$path/chummy.png",
|
"icon": "$path/chummy.png",
|
||||||
"mood": 0
|
"mood": 0
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background-image:url($path/moodcheck2.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
"selected": "text-align:left; background-image:url($path/moodcheck2.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [12, 308],
|
"loc": [12, 308],
|
||||||
"size": [104, 22],
|
"size": [104, 22],
|
||||||
"text": "PALSY",
|
"text": "PALSY",
|
||||||
"icon": "$path/chummy.png",
|
"icon": "$path/chummy.png",
|
||||||
"mood": 3
|
"mood": 3
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background-image:url($path/moodcheck3.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
"selected": "text-align:left; background-image:url($path/moodcheck3.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [12, 328],
|
"loc": [12, 328],
|
||||||
"size": [104, 22],
|
"size": [104, 22],
|
||||||
"text": "CHIPPER",
|
"text": "CHIPPER",
|
||||||
"icon": "$path/chummy.png",
|
"icon": "$path/chummy.png",
|
||||||
"mood": 4
|
"mood": 4
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background-image:url($path/moodcheck2.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
"selected": "text-align:left; background-image:url($path/moodcheck2.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [117, 288],
|
"loc": [117, 288],
|
||||||
"size": [104, 22],
|
"size": [104, 22],
|
||||||
"text": "BULLY",
|
"text": "BULLY",
|
||||||
"icon": "$path/chummy.png",
|
"icon": "$path/chummy.png",
|
||||||
"mood": 5
|
"mood": 5
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background-image:url($path/moodcheck2.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
"selected": "text-align:left; background-image:url($path/moodcheck2.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [117, 308],
|
"loc": [117, 308],
|
||||||
"size": [104, 22],
|
"size": [104, 22],
|
||||||
"text": "PEPPY",
|
"text": "PEPPY",
|
||||||
"icon": "$path/chummy.png",
|
"icon": "$path/chummy.png",
|
||||||
"mood": 6
|
"mood": 6
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background-image:url($path/moodcheck4.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
"selected": "text-align:left; background-image:url($path/moodcheck4.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [117, 328],
|
"loc": [117, 328],
|
||||||
"size": [104, 22],
|
"size": [104, 22],
|
||||||
"text": "RANCOROUS",
|
"text": "RANCOROUS",
|
||||||
"icon": "$path/rancorous.png",
|
"icon": "$path/rancorous.png",
|
||||||
"mood": 1
|
"mood": 1
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background-image:url($path/moodcheck5.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
"selected": "text-align:left; background-image:url($path/moodcheck5.png); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [12, 348],
|
"loc": [12, 348],
|
||||||
"size": [209, 22],
|
"size": [209, 22],
|
||||||
"text": "ABSCOND",
|
"text": "ABSCOND",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 2
|
"mood": 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"convo":
|
"convo":
|
||||||
{"style": "background-color: #fdb302;background-image:url($path/convobg.png);background-repeat: no-repeat; border:2px solid yellow; font-family: 'Courier'",
|
{"style": "background-color: #fdb302;background-image:url($path/convobg.png);background-repeat: no-repeat; border:2px solid yellow; font-family: 'Courier'",
|
||||||
"scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: white; border:2px solid #c48a00;",
|
"scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: white; border:2px solid #c48a00;",
|
||||||
"handle": "background-color:#c48a00;min-height:20px;",
|
"handle": "background-color:#c48a00;min-height:20px;",
|
||||||
"downarrow": "height:17px;border:0px solid #c48a00;",
|
"downarrow": "height:17px;border:0px solid #c48a00;",
|
||||||
"darrowstyle": "image:url($path/downarrow.png);",
|
"darrowstyle": "image:url($path/downarrow.png);",
|
||||||
"uparrow": "height:17px;border:0px solid #c48a00;",
|
"uparrow": "height:17px;border:0px solid #c48a00;",
|
||||||
"uarrowstyle": "image:url($path/uparrow.png);"
|
"uarrowstyle": "image:url($path/uparrow.png);"
|
||||||
|
@ -234,7 +231,7 @@
|
||||||
"style": "background: white; border:2px solid #c48a00;margin-top:5px; margin-right:10px; margin-left:10px; font-size: 12px;font-family: 'Courier'"
|
"style": "background: white; border:2px solid #c48a00;margin-top:5px; margin-right:10px; margin-left:10px; font-size: 12px;font-family: 'Courier'"
|
||||||
},
|
},
|
||||||
"tabwindow" : {
|
"tabwindow" : {
|
||||||
"style": "background-color:#fdb302;border:0px"
|
"style": "background-color:#fdb302;border:0px"
|
||||||
},
|
},
|
||||||
"tabs": {
|
"tabs": {
|
||||||
"style": "background-color: #7f7f7f; font-family: 'Courier';font:bold;font-size:12px;min-height:25px;",
|
"style": "background-color: #7f7f7f; font-family: 'Courier';font:bold;font-size:12px;min-height:25px;",
|
||||||
|
@ -247,12 +244,12 @@
|
||||||
"ceasepester": "ceased pestering",
|
"ceasepester": "ceased pestering",
|
||||||
"blocked": "blocked",
|
"blocked": "blocked",
|
||||||
"unblocked": "unblocked",
|
"unblocked": "unblocked",
|
||||||
"blockedmsg": "did not receive message from",
|
"blockedmsg": "did not receive message from",
|
||||||
"openmemo": "opened memo on board",
|
"openmemo": "opened memo on board",
|
||||||
"joinmemo": "responded to memo",
|
"joinmemo": "responded to memo",
|
||||||
"closememo": "ceased responding to memo",
|
"closememo": "ceased responding to memo",
|
||||||
"kickedmemo": "You have been banned from this memo!",
|
"kickedmemo": "You have been banned from this memo!",
|
||||||
"idle": "is now an idle chum!"
|
"idle": "is now an idle chum!"
|
||||||
},
|
},
|
||||||
"systemMsgColor": "#646464"
|
"systemMsgColor": "#646464"
|
||||||
},
|
},
|
||||||
|
@ -268,7 +265,7 @@
|
||||||
},
|
},
|
||||||
"scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: rgba(255, 255, 0, 0%); border:0px;",
|
"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;",
|
"handle": "background-color:#c48a00;min-height:20px;",
|
||||||
"downarrow": "height:17px;border:0px solid #c48a00;",
|
"downarrow": "height:17px;border:0px solid #c48a00;",
|
||||||
"darrowstyle": "image:url($path/downarrow.png);",
|
"darrowstyle": "image:url($path/downarrow.png);",
|
||||||
"uparrow": "height:17px;border:0px solid #c48a00;",
|
"uparrow": "height:17px;border:0px solid #c48a00;",
|
||||||
"uarrowstyle": "image:url($path/uparrow.png);"
|
"uarrowstyle": "image:url($path/uparrow.png);"
|
||||||
|
@ -285,20 +282,20 @@
|
||||||
"userlist": { "width": 150,
|
"userlist": { "width": 150,
|
||||||
"style": "border:2px solid #c48a00; background: white;font: bold;font-family: 'Courier';selection-background-color:#646464; font-size: 12px; margin-left:0px; margin-right:10px;"
|
"style": "border:2px solid #c48a00; background: white;font: bold;font-family: 'Courier';selection-background-color:#646464; font-size: 12px; margin-left:0px; margin-right:10px;"
|
||||||
},
|
},
|
||||||
"time": { "text": { "width": 75,
|
"time": { "text": { "width": 75,
|
||||||
"style": " border: 2px solid yellow; background: white; font-size: 12px; margin-top: 5px; margin-right: 5px; margin-left: 5px; font-family:'Courier';font:bold;"
|
"style": " border: 2px solid yellow; background: white; font-size: 12px; margin-top: 5px; margin-right: 5px; margin-left: 5px; font-family:'Courier';font:bold;"
|
||||||
},
|
},
|
||||||
"slider": { "style": "border: 0px;",
|
"slider": { "style": "border: 0px;",
|
||||||
"groove": "",
|
"groove": "",
|
||||||
"handle": ""
|
"handle": ""
|
||||||
},
|
},
|
||||||
"buttons": { "style": "color: black; font: bold; border: 2px solid #c48a00; font: bold; font-size: 12px; background: yellow; margin-top: 5px; margin-right: 5px; margin-left: 5px; padding: 2px; width: 50px;" },
|
"buttons": { "style": "color: black; font: bold; border: 2px solid #c48a00; font: bold; font-size: 12px; background: yellow; margin-top: 5px; margin-right: 5px; margin-left: 5px; padding: 2px; width: 50px;" },
|
||||||
"arrows": { "left": "$path/leftarrow.png",
|
"arrows": { "left": "$path/leftarrow.png",
|
||||||
"right": "$path/rightarrow.png",
|
"right": "$path/rightarrow.png",
|
||||||
"style": " border:0px; margin-top: 5px; margin-right:10px;"
|
"style": " border:0px; margin-top: 5px; margin-right:10px;"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systemMsgColor": "#646464",
|
"systemMsgColor": "#646464",
|
||||||
"op": { "icon": "$path/op.png" }
|
"op": { "icon": "$path/op.png" }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -21,10 +21,8 @@
|
||||||
"memos": "Memos",
|
"memos": "Memos",
|
||||||
"logviewer": "Pesterlogs",
|
"logviewer": "Pesterlogs",
|
||||||
"userlist": "Fresh Targets",
|
"userlist": "Fresh Targets",
|
||||||
"addgroup": "Add Group",
|
|
||||||
"import": "import U2;",
|
"import": "import U2;",
|
||||||
"reconnect": "Reconnect",
|
"idle": "Idle",
|
||||||
"idle": "Idle",
|
|
||||||
"exit": "Abscond"},
|
"exit": "Abscond"},
|
||||||
"profile": {"_name": "View",
|
"profile": {"_name": "View",
|
||||||
"switch": "Trolltag",
|
"switch": "Trolltag",
|
||||||
|
@ -36,13 +34,11 @@
|
||||||
"about": "About" },
|
"about": "About" },
|
||||||
"rclickchumlist": {"pester": "Troll",
|
"rclickchumlist": {"pester": "Troll",
|
||||||
"removechum": "Trash",
|
"removechum": "Trash",
|
||||||
|
"report": "Remove",
|
||||||
"blockchum": "Block",
|
"blockchum": "Block",
|
||||||
"addchum": "Add Chump",
|
"addchum": "Add Chump",
|
||||||
"viewlog": "View Pesterlog",
|
"viewlog": "View Pesterlog",
|
||||||
"unblockchum": "Mercy",
|
"unblockchum": "Mercy",
|
||||||
"removegroup": "Remove Group",
|
|
||||||
"renamegroup": "Rename Group",
|
|
||||||
"movechum": "Move To",
|
|
||||||
"banuser": "Ban",
|
"banuser": "Ban",
|
||||||
"opuser": "Promote",
|
"opuser": "Promote",
|
||||||
"quirksoff": "Quirks Off" }
|
"quirksoff": "Quirks Off" }
|
||||||
|
@ -59,50 +55,50 @@
|
||||||
"size": [171, 357],
|
"size": [171, 357],
|
||||||
"userlistcolor": "black",
|
"userlistcolor": "black",
|
||||||
"moods": {
|
"moods": {
|
||||||
|
|
||||||
"chummy": { "icon": "$path/chummy.png", "color": "#63ea00" },
|
"chummy": { "icon": "$path/chummy.png", "color": "#63ea00" },
|
||||||
|
|
||||||
"rancorous": { "icon": "$path/rancorous.png", "color": "#7f7f7f" },
|
"rancorous": { "icon": "$path/rancorous.png", "color": "#7f7f7f" },
|
||||||
|
|
||||||
"offline": { "icon": "$path/offline.png", "color": "black"},
|
"offline": { "icon": "$path/offline.png", "color": "black"},
|
||||||
|
|
||||||
|
|
||||||
"pleasant": { "icon": "$path/pleasant.png", "color": "#d69df8" },
|
"pleasant": { "icon": "$path/pleasant.png", "color": "#d69df8" },
|
||||||
|
|
||||||
"distraught": { "icon": "$path/distraught.png", "color": "#706eba" },
|
"distraught": { "icon": "$path/distraught.png", "color": "#706eba" },
|
||||||
|
|
||||||
"pranky": { "icon": "$path/pranky.png", "color": "blue" },
|
"pranky": { "icon": "$path/pranky.png", "color": "blue" },
|
||||||
|
|
||||||
|
|
||||||
"smooth": { "icon": "$path/smooth.png", "color": "red" },
|
"smooth": { "icon": "$path/smooth.png", "color": "red" },
|
||||||
|
|
||||||
|
|
||||||
"ecstatic": { "icon": "$path/ecstatic.png", "color": "#99004d" },
|
"ecstatic": { "icon": "$path/ecstatic.png", "color": "#99004d" },
|
||||||
|
|
||||||
"relaxed": { "icon": "$path/relaxed.png", "color": "#078446" },
|
"relaxed": { "icon": "$path/relaxed.png", "color": "#078446" },
|
||||||
|
|
||||||
"discontent": { "icon": "$path/discontent.png", "color": "#a75403" },
|
"discontent": { "icon": "$path/discontent.png", "color": "#a75403" },
|
||||||
|
|
||||||
"devious": { "icon": "$path/devious.png", "color": "#008282" },
|
"devious": { "icon": "$path/devious.png", "color": "#008282" },
|
||||||
|
|
||||||
"sleek": { "icon": "$path/sleek.png", "color": "#a1a100" },
|
"sleek": { "icon": "$path/sleek.png", "color": "#a1a100" },
|
||||||
|
|
||||||
"detestful": { "icon": "$path/detestful.png", "color": "#6a006a" },
|
"detestful": { "icon": "$path/detestful.png", "color": "#6a006a" },
|
||||||
|
|
||||||
"mirthful": { "icon": "$path/mirthful.png", "color": "#450077" },
|
"mirthful": { "icon": "$path/mirthful.png", "color": "#450077" },
|
||||||
|
|
||||||
"manipulative": { "icon": "$path/manipulative.png", "color": "#004182" },
|
"manipulative": { "icon": "$path/manipulative.png", "color": "#004182" },
|
||||||
|
|
||||||
"vigorous": { "icon": "$path/vigorous.png", "color": "#0021cb" },
|
"vigorous": { "icon": "$path/vigorous.png", "color": "#0021cb" },
|
||||||
|
|
||||||
"perky": { "icon": "$path/perky.png", "color": "#406600" },
|
"perky": { "icon": "$path/perky.png", "color": "#406600" },
|
||||||
|
|
||||||
"acceptant": { "icon": "$path/acceptant.png", "color": "#a10000" },
|
"acceptant": { "icon": "$path/acceptant.png", "color": "#a10000" },
|
||||||
|
|
||||||
"protective": { "icon": "$path/protective.png", "color": "white" },
|
"protective": { "icon": "$path/protective.png", "color": "white" },
|
||||||
|
|
||||||
"blocked": { "icon": "$path/blocked.png", "color": "black" }
|
"blocked": { "icon": "$path/blocked.png", "color": "black" }
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"trollslum": {
|
"trollslum": {
|
||||||
|
@ -241,7 +237,7 @@
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 7
|
"mood": 7
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "style": "border:0px;color: rgba(0, 0, 0, 0%);",
|
{ "style": "border:0px;color: rgba(0, 0, 0, 0%);",
|
||||||
"selected": "border:0px; color: rgba(0, 0, 0, 0%);",
|
"selected": "border:0px; color: rgba(0, 0, 0, 0%);",
|
||||||
"loc": [12, 117],
|
"loc": [12, 117],
|
||||||
|
@ -271,7 +267,7 @@
|
||||||
"style": "background: white;margin-top:5px; border:1px solid #c2c2c2; margin-right: 54px; font-size: 12px; height: 19px;"
|
"style": "background: white;margin-top:5px; border:1px solid #c2c2c2; margin-right: 54px; font-size: 12px; height: 19px;"
|
||||||
},
|
},
|
||||||
"tabwindow" : {
|
"tabwindow" : {
|
||||||
"style": "background: rgb(190, 19, 4); font-family: 'Arial'"
|
"style": "background: rgb(190, 19, 4); font-family: 'Arial'"
|
||||||
},
|
},
|
||||||
"tabs": {
|
"tabs": {
|
||||||
"style": "",
|
"style": "",
|
||||||
|
@ -317,15 +313,15 @@
|
||||||
"userlist": { "width": 125,
|
"userlist": { "width": 125,
|
||||||
"style": "font-size: 12px; background: white; margin-left: 5px; margin-bottom: 5px; border:2px solid #c2c2c2; padding: 5px; font-family: 'Arial';selection-background-color:rgb(200,200,200);"
|
"style": "font-size: 12px; background: white; margin-left: 5px; margin-bottom: 5px; border:2px solid #c2c2c2; padding: 5px; font-family: 'Arial';selection-background-color:rgb(200,200,200);"
|
||||||
},
|
},
|
||||||
"time": { "text": { "width": 75,
|
"time": { "text": { "width": 75,
|
||||||
"style": "color: black; font:bold; border:1px solid #c2c2c2; background: white; height: 19px;"
|
"style": "color: black; font:bold; border:1px solid #c2c2c2; background: white; height: 19px;"
|
||||||
},
|
},
|
||||||
"slider": { "style": " border:1px solid #c2c2c2;",
|
"slider": { "style": " border:1px solid #c2c2c2;",
|
||||||
"groove": "border-image:url($path/timeslider.png);",
|
"groove": "border-image:url($path/timeslider.png);",
|
||||||
"handle": "image:url($path/acceptant.png);"
|
"handle": "image:url($path/acceptant.png);"
|
||||||
},
|
},
|
||||||
"buttons": { "style": "border:1px solid #a68168; height: 17px; width: 50px; color: #cd8f9d; font-family: 'Arial'; background: rgb(190, 19, 4); margin-left: 2px;" },
|
"buttons": { "style": "border:1px solid #a68168; height: 17px; width: 50px; color: #cd8f9d; font-family: 'Arial'; background: rgb(190, 19, 4); margin-left: 2px;" },
|
||||||
"arrows": { "left": "$path/leftarrow.png",
|
"arrows": { "left": "$path/leftarrow.png",
|
||||||
"right": "$path/rightarrow.png",
|
"right": "$path/rightarrow.png",
|
||||||
"style": "width: 19px; height: 19px; border:0px; margin-left: 2px;"
|
"style": "width: 19px; height: 19px; border:0px; margin-left: 2px;"
|
||||||
}
|
}
|
||||||
|
@ -333,4 +329,4 @@
|
||||||
"systemMsgColor": "#646464",
|
"systemMsgColor": "#646464",
|
||||||
"op": { "icon": "$path/op.png" }
|
"op": { "icon": "$path/op.png" }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -180,7 +180,7 @@
|
||||||
},
|
},
|
||||||
"buttons": { "style": "color: black; font: bold; border: 2px solid #780000; font: bold; font-size: 12px; background: #e5000f; margin-top: 5px; margin-right: 5px; margin-left: 5px; padding: 2px; width: 50px;" }
|
"buttons": { "style": "color: black; font: bold; border: 2px solid #780000; font: bold; font-size: 12px; background: #e5000f; margin-top: 5px; margin-right: 5px; margin-left: 5px; padding: 2px; width: 50px;" }
|
||||||
},
|
},
|
||||||
|
"tabwindow": { "style": "" },
|
||||||
"tabs": {
|
"tabs": {
|
||||||
"style": "",
|
"style": "",
|
||||||
"selectedstyle": "",
|
"selectedstyle": "",
|
||||||
|
|
|
@ -16,16 +16,15 @@
|
||||||
"loc": [43,220]
|
"loc": [43,220]
|
||||||
},
|
},
|
||||||
"sounds": { "alertsound": "$path/alarm.wav",
|
"sounds": { "alertsound": "$path/alarm.wav",
|
||||||
"ceasesound": "$path/cease.wav" },
|
"ceasesound": "$path/cease.wav" },
|
||||||
"menus": {"client": {"_name": "Typewriter",
|
"menus": {"client": {"_name": "Typewriter",
|
||||||
"options": "Preferences",
|
"options": "Preferences",
|
||||||
"memos": "Bulletin Boards",
|
"memos": "Bulletin Boards",
|
||||||
"logviewer": "Pesterlogs",
|
"logviewer": "Pesterlogs",
|
||||||
"userlist": "Userlist",
|
"userlist": "Userlist",
|
||||||
"addgroup": "Add Group",
|
|
||||||
"import": "Import",
|
"import": "Import",
|
||||||
"idle": "Idle",
|
"idle": "Idle",
|
||||||
"reconnect": "Reconnect",
|
"reconnect": "Reconnect",
|
||||||
"exit": "Cease"},
|
"exit": "Cease"},
|
||||||
"profile": {"_name": "Ink",
|
"profile": {"_name": "Ink",
|
||||||
"switch": "Alias",
|
"switch": "Alias",
|
||||||
|
@ -37,13 +36,11 @@
|
||||||
"about": "About" },
|
"about": "About" },
|
||||||
"rclickchumlist": {"pester": "Converse",
|
"rclickchumlist": {"pester": "Converse",
|
||||||
"removechum": "Erase User",
|
"removechum": "Erase User",
|
||||||
|
"report": "Report User",
|
||||||
"blockchum": "Condemn",
|
"blockchum": "Condemn",
|
||||||
"addchum": "Add User",
|
"addchum": "Add User",
|
||||||
"viewlog": "View Pesterlog",
|
"viewlog": "View Pesterlog",
|
||||||
"unblockchum": "Forgive",
|
"unblockchum": "Forgive",
|
||||||
"removegroup": "Remove Group",
|
|
||||||
"renamegroup": "Rename Group",
|
|
||||||
"movechum": "Move To",
|
|
||||||
"banuser": "Expel User",
|
"banuser": "Expel User",
|
||||||
"opuser": "Promote",
|
"opuser": "Promote",
|
||||||
"quirksoff": "Quirks Off"
|
"quirksoff": "Quirks Off"
|
||||||
|
@ -53,7 +50,7 @@
|
||||||
"loc": [70, 20],
|
"loc": [70, 20],
|
||||||
"size": [175,100],
|
"size": [175,100],
|
||||||
"userlistcolor": "black",
|
"userlistcolor": "black",
|
||||||
"moods": {
|
"moods": {
|
||||||
|
|
||||||
"chummy": { "icon": "$path/chummy.png", "color": "black" },
|
"chummy": { "icon": "$path/chummy.png", "color": "black" },
|
||||||
|
|
||||||
|
@ -61,7 +58,7 @@
|
||||||
|
|
||||||
"offline": { "icon": "$path/offline.png", "color": "#646464"},
|
"offline": { "icon": "$path/offline.png", "color": "#646464"},
|
||||||
|
|
||||||
|
|
||||||
"pleasant": { "icon": "$path/pleasant.png", "color": "black" },
|
"pleasant": { "icon": "$path/pleasant.png", "color": "black" },
|
||||||
|
|
||||||
"distraught": { "icon": "$path/distraught.png", "color": "black" },
|
"distraught": { "icon": "$path/distraught.png", "color": "black" },
|
||||||
|
@ -89,7 +86,7 @@
|
||||||
"devious": { "icon": "$path/devious.png", "color": "red" },
|
"devious": { "icon": "$path/devious.png", "color": "red" },
|
||||||
|
|
||||||
"sleek": { "icon": "$path/sleek.png", "color": "red" },
|
"sleek": { "icon": "$path/sleek.png", "color": "red" },
|
||||||
|
|
||||||
"detestful": { "icon": "$path/detestful.png", "color": "red" },
|
"detestful": { "icon": "$path/detestful.png", "color": "red" },
|
||||||
|
|
||||||
"mirthful": { "icon": "$path/mirthful.png", "color": "red" },
|
"mirthful": { "icon": "$path/mirthful.png", "color": "red" },
|
||||||
|
@ -108,7 +105,7 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"trollslum": {
|
"trollslum": {
|
||||||
"style": "background: #bebebe; border:2px solid black; font-family: 'Courier'",
|
"style": "background: #bebebe; border:2px solid black; font-family: 'Courier'",
|
||||||
"size": [195, 200],
|
"size": [195, 200],
|
||||||
"label": { "text": "Ruffians",
|
"label": { "text": "Ruffians",
|
||||||
|
@ -126,7 +123,7 @@
|
||||||
"text": "" },
|
"text": "" },
|
||||||
"currentMood": [0, 0]
|
"currentMood": [0, 0]
|
||||||
},
|
},
|
||||||
"defaultwindow": { "style": "background: #bebebe; font-family:'Courier';font:bold;selection-background-color: black; "
|
"defaultwindow": { "style": "background: #bebebe; font-family:'Courier';font:bold;selection-background-color: black; "
|
||||||
},
|
},
|
||||||
"addchum": { "style": "background: rgba(255, 255, 0, 0%); border:0px solid #c48a00; font: bold; color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
"addchum": { "style": "background: rgba(255, 255, 0, 0%); border:0px solid #c48a00; font: bold; color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"pressed" : "background: rgb(255, 255, 255, 30%);",
|
"pressed" : "background: rgb(255, 255, 255, 30%);",
|
||||||
|
@ -140,7 +137,7 @@
|
||||||
"size": [70, 15],
|
"size": [70, 15],
|
||||||
"text": ""
|
"text": ""
|
||||||
},
|
},
|
||||||
"block": { "style": "background: rgba(255, 255, 0, 0%); border:2px solid #c48a00; font: bold; color: rgba(255, 255, 0, 0%); font-family:'Courier';",
|
"block": { "style": "background: rgba(255, 255, 0, 0%); border:2px solid #c48a00; font: bold; color: rgba(255, 255, 0, 0%); font-family:'Courier';",
|
||||||
"pressed" : "background: rgb(255, 255, 255, 30%);",
|
"pressed" : "background: rgb(255, 255, 255, 30%);",
|
||||||
"loc": [0,0],
|
"loc": [0,0],
|
||||||
"size": [0, 0],
|
"size": [0, 0],
|
||||||
|
@ -148,26 +145,26 @@
|
||||||
},
|
},
|
||||||
"defaultmood": 18,
|
"defaultmood": 18,
|
||||||
"moodlabel": { "style": "",
|
"moodlabel": { "style": "",
|
||||||
"loc": [20, 430],
|
"loc": [20, 430],
|
||||||
"text": "MOODS"
|
"text": "MOODS"
|
||||||
},
|
},
|
||||||
"moods": [
|
"moods": [
|
||||||
{ "style": "text-align:left; border:0px solid #c48a00; padding: 0px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
{ "style": "text-align:left; border:0px solid #c48a00; padding: 0px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background-image:url($path/moodcheck1.png); border:0px solid #c48a00; padding: 0px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
"selected": "text-align:left; background-image:url($path/moodcheck1.png); border:0px solid #c48a00; padding: 0px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [95, 323],
|
"loc": [95, 323],
|
||||||
"size": [62, 9],
|
"size": [62, 9],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 18
|
"mood": 18
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; border:0px solid #c48a00; padding: 0px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
{ "style": "text-align:left; border:0px solid #c48a00; padding: 0px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background-image:url($path/moodcheck2.png); border:0px solid #c48a00; padding: 0px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
"selected": "text-align:left; background-image:url($path/moodcheck2.png); border:0px solid #c48a00; padding: 0px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [165, 323],
|
"loc": [165, 323],
|
||||||
"size": [70, 9],
|
"size": [70, 9],
|
||||||
"text": "",
|
"text": "",
|
||||||
"icon": "",
|
"icon": "",
|
||||||
"mood": 2
|
"mood": 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"convo":
|
"convo":
|
||||||
|
@ -198,12 +195,12 @@
|
||||||
"ceasepester": "ceased pestering",
|
"ceasepester": "ceased pestering",
|
||||||
"blocked": "blocked",
|
"blocked": "blocked",
|
||||||
"unblocked": "unblocked",
|
"unblocked": "unblocked",
|
||||||
"blockedmsg": "did not receive message from",
|
"blockedmsg": "did not receive message from",
|
||||||
"openmemo": "opened memo on board",
|
"openmemo": "opened memo on board",
|
||||||
"joinmemo": "responded to memo",
|
"joinmemo": "responded to memo",
|
||||||
"closememo": "ceased responding to memo",
|
"closememo": "ceased responding to memo",
|
||||||
"kickedmemo": "You have been banned from this memo!",
|
"kickedmemo": "You have been banned from this memo!",
|
||||||
"idle": "is now an idle chum!"
|
"idle": "is now an idle chum!"
|
||||||
},
|
},
|
||||||
"systemMsgColor": "#646464"
|
"systemMsgColor": "#646464"
|
||||||
},
|
},
|
||||||
|
@ -219,7 +216,7 @@
|
||||||
},
|
},
|
||||||
"scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: rgba(255, 255, 0, 0%); border:0px;",
|
"scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: rgba(255, 255, 0, 0%); border:0px;",
|
||||||
"handle": "background-color:black;min-height:20px;",
|
"handle": "background-color:black;min-height:20px;",
|
||||||
"downarrow": "height:17px;border:0px;",
|
"downarrow": "height:17px;border:0px;",
|
||||||
"darrowstyle": "image:url($path/downarrow.png);",
|
"darrowstyle": "image:url($path/downarrow.png);",
|
||||||
"uparrow": "height:17px;border:0px;",
|
"uparrow": "height:17px;border:0px;",
|
||||||
"uarrowstyle": "image:url($path/uparrow.png);"
|
"uarrowstyle": "image:url($path/uparrow.png);"
|
||||||
|
@ -236,20 +233,20 @@
|
||||||
"userlist": { "width": 150,
|
"userlist": { "width": 150,
|
||||||
"style": "border:2px solid black; background: white;font: bold;font-family: 'Courier';selection-background-color:black; font-size: 12px; margin-left:0px; margin-right:10px;"
|
"style": "border:2px solid black; background: white;font: bold;font-family: 'Courier';selection-background-color:black; font-size: 12px; margin-left:0px; margin-right:10px;"
|
||||||
},
|
},
|
||||||
"time": { "text": { "width": 75,
|
"time": { "text": { "width": 75,
|
||||||
"style": " border: 2px solid black; background: white; font-size: 12px; margin-top: 5px; margin-right: 5px; margin-left: 5px; font-family:'Courier';font:bold;"
|
"style": " border: 2px solid black; background: white; font-size: 12px; margin-top: 5px; margin-right: 5px; margin-left: 5px; font-family:'Courier';font:bold;"
|
||||||
},
|
},
|
||||||
"slider": { "style": "border: 0px;",
|
"slider": { "style": "border: 0px;",
|
||||||
"groove": "",
|
"groove": "",
|
||||||
"handle": ""
|
"handle": ""
|
||||||
},
|
},
|
||||||
"buttons": { "style": "color: black; font: bold; border: 2px solid black; font: bold; font-size: 12px; background: white; margin-top: 5px; margin-right: 5px; margin-left: 5px; padding: 2px; width: 50px;" },
|
"buttons": { "style": "color: black; font: bold; border: 2px solid black; font: bold; font-size: 12px; background: white; margin-top: 5px; margin-right: 5px; margin-left: 5px; padding: 2px; width: 50px;" },
|
||||||
"arrows": { "left": "$path/leftarrow.png",
|
"arrows": { "left": "$path/leftarrow.png",
|
||||||
"right": "$path/rightarrow.png",
|
"right": "$path/rightarrow.png",
|
||||||
"style": " border:0px; margin-top: 5px; margin-right:10px;"
|
"style": " border:0px; margin-top: 5px; margin-right:10px;"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systemMsgColor": "#646464",
|
"systemMsgColor": "#646464",
|
||||||
"op": { "icon": "$path/protective.png" }
|
"op": { "icon": "$path/protective.png" }
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue