prealpha-0.0.4
22
TODO
|
@ -1,22 +1,17 @@
|
||||||
Features:
|
Features:
|
||||||
* scaling icons
|
|
||||||
* tab background
|
|
||||||
* top box layout
|
|
||||||
* chat scrolls when switch theme
|
* chat scrolls when switch theme
|
||||||
* eliminate "SWITCH" in profile menu
|
|
||||||
* remove highlighted text area if focus in textinput
|
* remove highlighted text area if focus in textinput
|
||||||
* new sound on CEASE and BEGIN?
|
* windows text goes gray when out of focus?
|
||||||
* windows text goes gray when out of focus
|
|
||||||
* Logging
|
|
||||||
* Block list
|
* Block list
|
||||||
* User list/add from list
|
* User list/add from list
|
||||||
* Turn quirks off
|
* Turn quirks off
|
||||||
* User commands/stop user from sending commands accidentally
|
* User commands/stop user from sending commands accidentally
|
||||||
* Hyperlinks
|
* Hyperlinks
|
||||||
* color tags
|
|
||||||
* /me ghostDunk's [GD'S]
|
* /me ghostDunk's [GD'S]
|
||||||
* Transparent background
|
* Transparent background
|
||||||
* tab recombining gives wrong window icon
|
* tab recombining gives wrong window icon
|
||||||
|
* help menu -- about and forum
|
||||||
|
* new sound on CEASE and BEGIN?
|
||||||
-- release alpha
|
-- release alpha
|
||||||
* shared buddy lists - changes to the buddy list should refresh it?
|
* shared buddy lists - changes to the buddy list should refresh it?
|
||||||
multiple clients share buddy list???
|
multiple clients share buddy list???
|
||||||
|
@ -26,11 +21,13 @@ Features:
|
||||||
* page up/down scrolling
|
* page up/down scrolling
|
||||||
* ctrl-tab should prefer new convos
|
* ctrl-tab should prefer new convos
|
||||||
* Chat rooms/browser
|
* Chat rooms/browser
|
||||||
* More complex quirks
|
* More complex quirks: random, spelling, by-sound
|
||||||
* Implement TC options
|
* Implement TC options
|
||||||
* spell check?
|
* spell check?
|
||||||
* Help menu
|
* Help menu
|
||||||
|
* more robust IRC error handling
|
||||||
-- release beta
|
-- release beta
|
||||||
|
* log viewer
|
||||||
* pick your own icon
|
* pick your own icon
|
||||||
* time codes
|
* time codes
|
||||||
* theme elements define, implement
|
* theme elements define, implement
|
||||||
|
@ -41,3 +38,10 @@ Features:
|
||||||
* put code into separate files
|
* put code into separate files
|
||||||
* hide offline chums
|
* hide offline chums
|
||||||
* chum list groups
|
* chum list groups
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- MEMOS:
|
||||||
|
list has "CREATE" CACNCEL JOIN buttons
|
||||||
|
no "--" for sys mesg
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"aquaMarinist": {"color": "#00caca", "handle": "aquaMarinist", "mood": "offline"}, "superGhost": {"color": "#800564", "handle": "superGhost", "mood": "offline"}, "captainCaveman": {"color": "#7c414e", "handle": "captainCaveman", "mood": "offline"}, "gamblingGenocider": {"color": "#00ff00", "handle": "gamblingGenocider", "mood": "offline"}, "unknownTraveler": {"color": "#006666", "handle": "unknownTraveler", "mood": "offline"}, "marineAquist": {"color": "#00caca", "handle": "marineAquist", "mood": "offline"}}
|
{"aquaMarinist": {"color": "#00caca", "handle": "aquaMarinist", "mood": "offline"}, "nitroZealist": {"color": "#ff3737", "handle": "nitroZealist", "mood": "offline"}, "superGhost": {"color": "#800564", "handle": "superGhost", "mood": "offline"}, "tentacleTherapist": {"color": "#cc66ff", "handle": "tentacleTherapist", "mood": "offline"}, "captainCaveman": {"color": "#7c414e", "handle": "captainCaveman", "mood": "offline"}, "gamblingGenocider": {"color": "#00ff00", "handle": "gamblingGenocider", "mood": "offline"}, "schlagzeugGator": {"color": "#61821f", "handle": "schlagzeugGator", "mood": "offline"}, "unknownTraveler": {"color": "#006666", "handle": "unknownTraveler", "mood": "offline"}, "marineAquist": {"color": "#00caca", "handle": "marineAquist", "mood": "offline"}}
|
|
@ -1 +1 @@
|
||||||
{"tabs": true, "chums": ["aquaMarinist", "gardenGnostic", "gamblingGenocider", "schlagzeugGator", "mechanicalSpectacle", "marineAquist", "unknownTraveler"], "defaultprofile": "testProfile"}
|
{"tabs": true, "chums": ["aquaMarinist", "gardenGnostic", "gamblingGenocider", "schlagzeugGator", "mechanicalSpectacle", "marineAquist", "unknownTraveler", "tentacleTherapist"], "defaultprofile": "testProfile"}
|
222
pesterchum.py
|
@ -18,7 +18,8 @@ logging.basicConfig(level=logging.INFO)
|
||||||
class Mood(object):
|
class Mood(object):
|
||||||
moods = ["chummy", "rancorous", "offline", "pleasant", "distraught",
|
moods = ["chummy", "rancorous", "offline", "pleasant", "distraught",
|
||||||
"unruly", "smooth", "ecstatic", "relaxed", "discontent",
|
"unruly", "smooth", "ecstatic", "relaxed", "discontent",
|
||||||
"devious", "sleek", "detestful"]
|
"devious", "sleek", "detestful", "mirthful", "manipulative",
|
||||||
|
"vigorous", "perky", "acceptant", "protective"]
|
||||||
def __init__(self, mood):
|
def __init__(self, mood):
|
||||||
if type(mood) is int:
|
if type(mood) is int:
|
||||||
self.mood = mood
|
self.mood = mood
|
||||||
|
@ -34,7 +35,83 @@ class Mood(object):
|
||||||
return name
|
return name
|
||||||
def icon(self, theme):
|
def icon(self, theme):
|
||||||
f = theme["main/chums/moods"][self.name()]["icon"]
|
f = theme["main/chums/moods"][self.name()]["icon"]
|
||||||
return QtGui.QIcon(f)
|
return PesterIcon(f)
|
||||||
|
|
||||||
|
_ctag_begin = re.compile(r'<c=(.*?)>')
|
||||||
|
_ctag_rgb = re.compile(r'\d+,\d+,\d+')
|
||||||
|
|
||||||
|
def convertColorTags(string, format="html"):
|
||||||
|
if format not in ["html", "bbcode", "ctag"]:
|
||||||
|
raise ValueError("Color format not recognized")
|
||||||
|
def repfunc(matchobj):
|
||||||
|
color = matchobj.group(1)
|
||||||
|
if _ctag_rgb.match(color) is not None:
|
||||||
|
if format=='ctag':
|
||||||
|
return "<c=%s,%s,%s>"
|
||||||
|
qc = QtGui.QColor(*color.split(","))
|
||||||
|
else:
|
||||||
|
qc = QtGui.QColor(color)
|
||||||
|
if not qc.isValid():
|
||||||
|
qc = QtGui.QColor("black")
|
||||||
|
if format == "html":
|
||||||
|
return '<span style="color:%s">' % (qc.name())
|
||||||
|
elif format == "bbcode":
|
||||||
|
return '[color=%s]' % (qc.name())
|
||||||
|
elif format == "ctag":
|
||||||
|
(r,g,b,a) = qc.getRgb()
|
||||||
|
return '<c=%s,%s,%s>' % (r,g,b)
|
||||||
|
string = _ctag_begin.sub(repfunc, string)
|
||||||
|
endtag = {"html": "</span>", "bbcode": "[/color]", "ctag": "</c>"}
|
||||||
|
string = string.replace("</c>", endtag[format])
|
||||||
|
return string
|
||||||
|
|
||||||
|
def escapeBrackets(string):
|
||||||
|
class beginTag(object):
|
||||||
|
def __init__(self, tag):
|
||||||
|
self.tag = tag
|
||||||
|
class endTag(object):
|
||||||
|
pass
|
||||||
|
newlist = []
|
||||||
|
begintagpos = [(m.start(), m.end()) for m in _ctag_begin.finditer(string)]
|
||||||
|
lasti = 0
|
||||||
|
for (s, e) in begintagpos:
|
||||||
|
newlist.append(string[lasti:s])
|
||||||
|
newlist.append(beginTag(string[s:e]))
|
||||||
|
lasti = e
|
||||||
|
if lasti < len(string):
|
||||||
|
newlist.append(string[lasti:])
|
||||||
|
tmp = []
|
||||||
|
for o in newlist:
|
||||||
|
if type(o) is not beginTag:
|
||||||
|
l = o.split("</c>")
|
||||||
|
tmp.append(l[0])
|
||||||
|
l = l[1:]
|
||||||
|
for item in l:
|
||||||
|
tmp.append(endTag())
|
||||||
|
tmp.append(item)
|
||||||
|
else:
|
||||||
|
tmp.append(o)
|
||||||
|
btlen = 0
|
||||||
|
etlen = 0
|
||||||
|
retval = ""
|
||||||
|
newlist = tmp
|
||||||
|
for o in newlist:
|
||||||
|
if type(o) is beginTag:
|
||||||
|
retval += o.tag.replace("&", "&")
|
||||||
|
btlen +=1
|
||||||
|
elif type(o) is endTag:
|
||||||
|
if etlen >= btlen:
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
retval += "</c>"
|
||||||
|
etlen += 1
|
||||||
|
else:
|
||||||
|
retval += o.replace("&", "&").replace("<", "<").replace(">", ">")
|
||||||
|
if btlen > etlen:
|
||||||
|
for i in range(0, btlen-etlen):
|
||||||
|
retval += "</c>"
|
||||||
|
return retval
|
||||||
|
|
||||||
|
|
||||||
class waitingMessageHolder(object):
|
class waitingMessageHolder(object):
|
||||||
def __init__(self, mainwindow, **msgfuncs):
|
def __init__(self, mainwindow, **msgfuncs):
|
||||||
|
@ -65,6 +142,30 @@ class waitingMessageHolder(object):
|
||||||
class NoneSound(object):
|
class NoneSound(object):
|
||||||
def play(self): pass
|
def play(self): pass
|
||||||
|
|
||||||
|
class PesterLog(object):
|
||||||
|
def __init__(self, handle):
|
||||||
|
self.handle = handle
|
||||||
|
if not os.path.exists("logs/%s" % (handle)):
|
||||||
|
os.mkdir("logs/%s" % (handle))
|
||||||
|
self.convos = {}
|
||||||
|
def log(self, handle, msg):
|
||||||
|
if not self.convos.has_key(handle):
|
||||||
|
time = datetime.now().strftime("%Y-%m-%d.%H:%M")
|
||||||
|
if not os.path.exists("logs/%s/%s" % (self.handle, handle)):
|
||||||
|
os.mkdir("logs/%s/%s" % (self.handle, handle))
|
||||||
|
fp = open("logs/%s/%s/%s.%s" % (self.handle, handle, handle, time), 'a')
|
||||||
|
self.convos[handle] = fp
|
||||||
|
self.convos[handle].write(msg+"\n")
|
||||||
|
self.convos[handle].flush()
|
||||||
|
def finish(self, handle):
|
||||||
|
if not self.convos.has_key(handle):
|
||||||
|
return
|
||||||
|
self.convos[handle].close()
|
||||||
|
del self.convos[handle]
|
||||||
|
def close(self):
|
||||||
|
for h in self.convos.keys():
|
||||||
|
self.close(h)
|
||||||
|
|
||||||
class PesterProfileDB(dict):
|
class PesterProfileDB(dict):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
try:
|
try:
|
||||||
|
@ -124,10 +225,10 @@ class PesterProfile(object):
|
||||||
"mood": self.mood.name(),
|
"mood": self.mood.name(),
|
||||||
"color": unicode(self.color.name())})
|
"color": unicode(self.color.name())})
|
||||||
|
|
||||||
def beganpestermsg(self, otherchum, verb="began pestering"):
|
def beganpestermsg(self, otherchum, syscolor, verb="began pestering"):
|
||||||
return "<span style='color:black;'>-- %s <span style='color:%s'>[%s]</span> %s %s <span style='color:%s'>[%s]</span> at %s --</span>" % (self.handle, self.colorhtml(), self.initials(), verb, otherchum.handle, otherchum.colorhtml(), otherchum.initials(), datetime.now().strftime("%H:%M"))
|
return "<c=%s>-- %s <c=%s>[%s]</c> %s %s <c=%s>[%s]</c> at %s --</c>" % (syscolor.name(), self.handle, self.colorhtml(), self.initials(), verb, otherchum.handle, otherchum.colorhtml(), otherchum.initials(), datetime.now().strftime("%H:%M"))
|
||||||
def ceasedpestermsg(self, otherchum, verb="ceased pestering"):
|
def ceasedpestermsg(self, otherchum, syscolor, verb="ceased pestering"):
|
||||||
return "<span style='color:black;'>-- %s <span style='color:%s'>[%s]</span> %s %s <span style='color:%s'>[%s]</span> at %s --</span>" % (self.handle, self.colorhtml(), self.initials(), verb, otherchum.handle, otherchum.colorhtml(), otherchum.initials(), datetime.now().strftime("%H:%M"))
|
return "<c=%s>-- %s <c=%s>[%s]</c> %s %s <c=%s>[%s]</c> at %s --</c>" % (syscolor.name(), self.handle, self.colorhtml(), self.initials(), verb, otherchum.handle, otherchum.colorhtml(), otherchum.initials(), datetime.now().strftime("%H:%M"))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def checkLength(handle):
|
def checkLength(handle):
|
||||||
|
@ -643,6 +744,7 @@ class PesterOptions(QtGui.QDialog):
|
||||||
class WMButton(QtGui.QPushButton):
|
class WMButton(QtGui.QPushButton):
|
||||||
def __init__(self, icon, parent=None):
|
def __init__(self, icon, parent=None):
|
||||||
QtGui.QPushButton.__init__(self, icon, "", parent)
|
QtGui.QPushButton.__init__(self, icon, "", parent)
|
||||||
|
self.setIconSize(icon.realsize())
|
||||||
self.setFlat(True)
|
self.setFlat(True)
|
||||||
self.setStyleSheet("QPushButton { padding: 0px; }")
|
self.setStyleSheet("QPushButton { padding: 0px; }")
|
||||||
self.setAutoDefault(False)
|
self.setAutoDefault(False)
|
||||||
|
@ -775,8 +877,9 @@ class PesterMoodHandler(QtCore.QObject):
|
||||||
|
|
||||||
class PesterMoodButton(QtGui.QPushButton):
|
class PesterMoodButton(QtGui.QPushButton):
|
||||||
def __init__(self, parent, **options):
|
def __init__(self, parent, **options):
|
||||||
icon = QtGui.QIcon(options["icon"])
|
icon = PesterIcon(options["icon"])
|
||||||
QtGui.QPushButton.__init__(self, icon, options["text"], parent)
|
QtGui.QPushButton.__init__(self, icon, options["text"], parent)
|
||||||
|
self.setIconSize(icon.realsize())
|
||||||
self.setFlat(True)
|
self.setFlat(True)
|
||||||
self.resize(*options["size"])
|
self.resize(*options["size"])
|
||||||
self.move(*options["loc"])
|
self.move(*options["loc"])
|
||||||
|
@ -795,6 +898,22 @@ class PesterMoodButton(QtGui.QPushButton):
|
||||||
self.moodUpdated.emit(self.mood.value())
|
self.moodUpdated.emit(self.mood.value())
|
||||||
moodUpdated = QtCore.pyqtSignal(int)
|
moodUpdated = QtCore.pyqtSignal(int)
|
||||||
|
|
||||||
|
class PesterIcon(QtGui.QIcon):
|
||||||
|
def __init__(self, *x, **y):
|
||||||
|
QtGui.QIcon.__init__(self, *x, **y)
|
||||||
|
if type(x[0]) in [str, unicode]:
|
||||||
|
self.icon_pixmap = QtGui.QPixmap(x[0])
|
||||||
|
else:
|
||||||
|
self.icon_pixmap = None
|
||||||
|
def realsize(self):
|
||||||
|
if self.icon_pixmap:
|
||||||
|
return self.icon_pixmap.size()
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
return self.availableSizes()[0]
|
||||||
|
except IndexError:
|
||||||
|
return None
|
||||||
|
|
||||||
class MovingWindow(QtGui.QFrame):
|
class MovingWindow(QtGui.QFrame):
|
||||||
def __init__(self, *x, **y):
|
def __init__(self, *x, **y):
|
||||||
QtGui.QFrame.__init__(self, *x, **y)
|
QtGui.QFrame.__init__(self, *x, **y)
|
||||||
|
@ -831,7 +950,7 @@ class PesterTabWindow(QtGui.QFrame):
|
||||||
self.connect(self.tabs, QtCore.SIGNAL('tabCloseRequested(int)'),
|
self.connect(self.tabs, QtCore.SIGNAL('tabCloseRequested(int)'),
|
||||||
self, QtCore.SLOT('tabClose(int)'))
|
self, QtCore.SLOT('tabClose(int)'))
|
||||||
self.tabs.setShape(self.mainwindow.theme["convo/tabs/tabstyle"])
|
self.tabs.setShape(self.mainwindow.theme["convo/tabs/tabstyle"])
|
||||||
self.tabs.setStyleSheet("QTabBar::tabs{ %s }" % (self.mainwindow.theme["convo/tabs/style"]))
|
self.tabs.setStyleSheet("QTabBar::tab{ %s } QTabBar::tab:selected { %s }" % (self.mainwindow.theme["convo/tabs/style"], self.mainwindow.theme["convo/tabs/selectedstyle"]))
|
||||||
|
|
||||||
self.layout = QtGui.QVBoxLayout()
|
self.layout = QtGui.QVBoxLayout()
|
||||||
self.layout.setContentsMargins(0,0,0,0)
|
self.layout.setContentsMargins(0,0,0,0)
|
||||||
|
@ -986,6 +1105,7 @@ class PesterText(QtGui.QTextEdit):
|
||||||
self.setReadOnly(True)
|
self.setReadOnly(True)
|
||||||
def addMessage(self, text, chum):
|
def addMessage(self, text, chum):
|
||||||
color = chum.colorhtml()
|
color = chum.colorhtml()
|
||||||
|
systemColor = QtGui.QColor(self.parent().mainwindow.theme["convo/systemMsgColor"])
|
||||||
initials = chum.initials()
|
initials = chum.initials()
|
||||||
msg = unicode(text)
|
msg = unicode(text)
|
||||||
if msg == "PESTERCHUM:BEGIN":
|
if msg == "PESTERCHUM:BEGIN":
|
||||||
|
@ -993,31 +1113,37 @@ class PesterText(QtGui.QTextEdit):
|
||||||
parent.setChumOpen(True)
|
parent.setChumOpen(True)
|
||||||
window = parent.mainwindow
|
window = parent.mainwindow
|
||||||
me = window.profile()
|
me = window.profile()
|
||||||
msg = chum.beganpestermsg(me, window.theme["convo/text/beganpester"])
|
msg = chum.beganpestermsg(me, systemColor, window.theme["convo/text/beganpester"])
|
||||||
self.append(msg)
|
window.chatlog.log(chum.handle, convertColorTags(msg, "bbcode"))
|
||||||
|
self.append(convertColorTags(msg))
|
||||||
elif msg == "PESTERCHUM:CEASE":
|
elif msg == "PESTERCHUM:CEASE":
|
||||||
parent = self.parent()
|
parent = self.parent()
|
||||||
parent.setChumOpen(False)
|
parent.setChumOpen(False)
|
||||||
window = parent.mainwindow
|
window = parent.mainwindow
|
||||||
me = window.profile()
|
me = window.profile()
|
||||||
msg = chum.ceasedpestermsg(me, window.theme["convo/text/ceasepester"])
|
msg = chum.ceasedpestermsg(me, systemColor, window.theme["convo/text/ceasepester"])
|
||||||
self.append(msg)
|
window.chatlog.log(chum.handle, convertColorTags(msg, "bbcode"))
|
||||||
|
self.append(convertColorTags(msg))
|
||||||
else:
|
else:
|
||||||
if not self.parent().chumopen and chum is not self.parent().mainwindow.profile():
|
if not self.parent().chumopen and chum is not self.parent().mainwindow.profile():
|
||||||
me = self.parent().mainwindow.profile()
|
me = self.parent().mainwindow.profile()
|
||||||
beginmsg = chum.beganpestermsg(me, self.parent().mainwindow.theme["convo/text/beganpester"])
|
beginmsg = chum.beganpestermsg(me, systemColor, self.parent().mainwindow.theme["convo/text/beganpester"])
|
||||||
self.parent().setChumOpen(True)
|
self.parent().setChumOpen(True)
|
||||||
self.append(beginmsg)
|
self.parent().mainwindow.chatlog.log(chum.handle, convertColorTags(beginmsg, "bbcode"))
|
||||||
|
self.append(convertColorTags(beginmsg))
|
||||||
|
|
||||||
msg = msg.replace("&", "&").replace("<", "<").replace(">", ">")
|
msg = "<c=%s>%s: %s</c>" % (color, initials, msg)
|
||||||
self.append("<span style='color:%s'>%s: %s</span>" % \
|
msg = escapeBrackets(msg)
|
||||||
(color, initials, msg))
|
self.append(convertColorTags(msg))
|
||||||
|
if chum.handle == self.parent().mainwindow.profile().handle:
|
||||||
|
self.parent().mainwindow.chatlog.log(self.parent().chum.handle, convertColorTags(msg, "bbcode"))
|
||||||
|
else:
|
||||||
|
self.parent().mainwindow.chatlog.log(chum.handle, convertColorTags(msg, "bbcode"))
|
||||||
def changeTheme(self, theme):
|
def changeTheme(self, theme):
|
||||||
self.setStyleSheet(theme["convo/textarea/style"])
|
self.setStyleSheet(theme["convo/textarea/style"])
|
||||||
def focusInEvent(self, event):
|
def focusInEvent(self, event):
|
||||||
self.parent().clearNewMessage()
|
self.parent().clearNewMessage()
|
||||||
QtGui.QTextEdit.focusInEvent(self, event)
|
QtGui.QTextEdit.focusInEvent(self, event)
|
||||||
self.parent().textInput.setFocus()
|
|
||||||
|
|
||||||
class PesterInput(QtGui.QLineEdit):
|
class PesterInput(QtGui.QLineEdit):
|
||||||
def __init__(self, theme, parent=None):
|
def __init__(self, theme, parent=None):
|
||||||
|
@ -1045,6 +1171,10 @@ class PesterConvo(QtGui.QFrame):
|
||||||
|
|
||||||
self.chumLabel = QtGui.QLabel(t.safe_substitute(handle=chum.handle), self)
|
self.chumLabel = QtGui.QLabel(t.safe_substitute(handle=chum.handle), self)
|
||||||
self.chumLabel.setStyleSheet(self.mainwindow.theme["convo/chumlabel/style"])
|
self.chumLabel.setStyleSheet(self.mainwindow.theme["convo/chumlabel/style"])
|
||||||
|
self.chumLabel.setAlignment(self.aligndict["h"][self.mainwindow.theme["convo/chumlabel/align/h"]] | self.aligndict["v"][self.mainwindow.theme["convo/chumlabel/align/v"]])
|
||||||
|
self.chumLabel.setMaximumHeight(self.mainwindow.theme["convo/chumlabel/maxheight"])
|
||||||
|
self.chumLabel.setMinimumHeight(self.mainwindow.theme["convo/chumlabel/minheight"])
|
||||||
|
self.chumLabel.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Expanding))
|
||||||
self.textArea = PesterText(self.mainwindow.theme, self)
|
self.textArea = PesterText(self.mainwindow.theme, self)
|
||||||
self.textInput = PesterInput(self.mainwindow.theme, self)
|
self.textInput = PesterInput(self.mainwindow.theme, self)
|
||||||
self.textInput.setFocus()
|
self.textInput.setFocus()
|
||||||
|
@ -1056,6 +1186,7 @@ class PesterConvo(QtGui.QFrame):
|
||||||
self.layout.addWidget(self.chumLabel)
|
self.layout.addWidget(self.chumLabel)
|
||||||
self.layout.addWidget(self.textArea)
|
self.layout.addWidget(self.textArea)
|
||||||
self.layout.addWidget(self.textInput)
|
self.layout.addWidget(self.textInput)
|
||||||
|
self.layout.setSpacing(0)
|
||||||
|
|
||||||
self.setLayout(self.layout)
|
self.setLayout(self.layout)
|
||||||
|
|
||||||
|
@ -1064,14 +1195,16 @@ class PesterConvo(QtGui.QFrame):
|
||||||
if parent:
|
if parent:
|
||||||
parent.addChat(self)
|
parent.addChat(self)
|
||||||
if initiated:
|
if initiated:
|
||||||
msg = self.mainwindow.profile().beganpestermsg(self.chum, self.mainwindow.theme["convo/text/beganpester"])
|
msg = self.mainwindow.profile().beganpestermsg(self.chum, QtGui.QColor(self.mainwindow.theme["convo/systemMsgColor"]), self.mainwindow.theme["convo/text/beganpester"])
|
||||||
self.textArea.append(msg)
|
self.textArea.append(convertColorTags(msg))
|
||||||
|
self.mainwindow.chatlog.log(self.chum.handle, convertColorTags(msg, "bbcode"))
|
||||||
self.newmessage = False
|
self.newmessage = False
|
||||||
|
|
||||||
def updateMood(self, mood):
|
def updateMood(self, mood):
|
||||||
if mood.name() == "offline" and self.chumopen == True:
|
if mood.name() == "offline" and self.chumopen == True:
|
||||||
msg = self.chum.ceasedpestermsg(self.mainwindow.profile(), self.mainwindow.theme["convo/text/ceasepester"])
|
msg = self.chum.ceasedpestermsg(self.mainwindow.profile(), QtGui.QColor(self.mainwindow.theme["convo/systemMsgColor"]), self.mainwindow.theme["convo/text/ceasepester"])
|
||||||
self.textArea.append(msg)
|
self.textArea.append(convertColorTags(msg))
|
||||||
|
self.mainwindow.chatlog.log(self.chum.handle, convertColorTags(msg, "bbcode"))
|
||||||
self.chumopen = False
|
self.chumopen = False
|
||||||
if self.parent():
|
if self.parent():
|
||||||
self.parent().updateMood(self.chum.handle, mood)
|
self.parent().updateMood(self.chum.handle, mood)
|
||||||
|
@ -1114,6 +1247,7 @@ class PesterConvo(QtGui.QFrame):
|
||||||
# reset system tray
|
# reset system tray
|
||||||
def focusInEvent(self, event):
|
def focusInEvent(self, event):
|
||||||
self.clearNewMessage()
|
self.clearNewMessage()
|
||||||
|
self.textInput.setFocus()
|
||||||
def raiseChat(self):
|
def raiseChat(self):
|
||||||
self.activateWindow()
|
self.activateWindow()
|
||||||
self.raise_()
|
self.raise_()
|
||||||
|
@ -1136,6 +1270,10 @@ class PesterConvo(QtGui.QFrame):
|
||||||
t = Template(self.mainwindow.theme["convo/chumlabel/text"])
|
t = Template(self.mainwindow.theme["convo/chumlabel/text"])
|
||||||
self.chumLabel.setText(t.safe_substitute(handle=self.chum.handle))
|
self.chumLabel.setText(t.safe_substitute(handle=self.chum.handle))
|
||||||
self.chumLabel.setStyleSheet(theme["convo/chumlabel/style"])
|
self.chumLabel.setStyleSheet(theme["convo/chumlabel/style"])
|
||||||
|
self.chumLabel.setAlignment(self.aligndict["h"][self.mainwindow.theme["convo/chumlabel/align/h"]] | self.aligndict["v"][self.mainwindow.theme["convo/chumlabel/align/v"]])
|
||||||
|
self.chumLabel.setMaximumHeight(self.mainwindow.theme["convo/chumlabel/maxheight"])
|
||||||
|
self.chumLabel.setMinimumHeight(self.mainwindow.theme["convo/chumlabel/minheight"])
|
||||||
|
self.chumLabel.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Expanding))
|
||||||
self.textArea.changeTheme(theme)
|
self.textArea.changeTheme(theme)
|
||||||
self.textInput.changeTheme(theme)
|
self.textInput.changeTheme(theme)
|
||||||
|
|
||||||
|
@ -1157,10 +1295,18 @@ class PesterConvo(QtGui.QFrame):
|
||||||
messageSent = QtCore.pyqtSignal(QtCore.QString, PesterProfile)
|
messageSent = QtCore.pyqtSignal(QtCore.QString, PesterProfile)
|
||||||
windowClosed = QtCore.pyqtSignal(QtCore.QString)
|
windowClosed = QtCore.pyqtSignal(QtCore.QString)
|
||||||
|
|
||||||
|
aligndict = {"h": {"center": QtCore.Qt.AlignHCenter,
|
||||||
|
"left": QtCore.Qt.AlignLeft,
|
||||||
|
"right": QtCore.Qt.AlignRight },
|
||||||
|
"v": {"center": QtCore.Qt.AlignVCenter,
|
||||||
|
"top": QtCore.Qt.AlignTop,
|
||||||
|
"bottom": QtCore.Qt.AlignBottom } }
|
||||||
|
|
||||||
class PesterWindow(MovingWindow):
|
class PesterWindow(MovingWindow):
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
MovingWindow.__init__(self, parent,
|
MovingWindow.__init__(self, parent,
|
||||||
flags=QtCore.Qt.CustomizeWindowHint)
|
flags=(QtCore.Qt.CustomizeWindowHint |
|
||||||
|
QtCore.Qt.FramelessWindowHint))
|
||||||
|
|
||||||
self.convos = {}
|
self.convos = {}
|
||||||
self.tabconvo = None
|
self.tabconvo = None
|
||||||
|
@ -1174,6 +1320,8 @@ class PesterWindow(MovingWindow):
|
||||||
self.userprofile = userProfile(PesterProfile("pesterClient%d" % (random.randint(100,999)), QtGui.QColor("black"), Mood(0)))
|
self.userprofile = userProfile(PesterProfile("pesterClient%d" % (random.randint(100,999)), QtGui.QColor("black"), Mood(0)))
|
||||||
self.theme = self.userprofile.getTheme()
|
self.theme = self.userprofile.getTheme()
|
||||||
|
|
||||||
|
self.chatlog = PesterLog(self.profile().handle)
|
||||||
|
|
||||||
self.move(100, 100)
|
self.move(100, 100)
|
||||||
|
|
||||||
opts = QtGui.QAction(self.theme["main/menus/client/options"], self)
|
opts = QtGui.QAction(self.theme["main/menus/client/options"], self)
|
||||||
|
@ -1211,10 +1359,10 @@ class PesterWindow(MovingWindow):
|
||||||
profilemenu.addAction(changequirks)
|
profilemenu.addAction(changequirks)
|
||||||
profilemenu.addAction(switch)
|
profilemenu.addAction(switch)
|
||||||
|
|
||||||
self.closeButton = WMButton(QtGui.QIcon(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('close()'))
|
self, QtCore.SLOT('close()'))
|
||||||
self.miniButton = WMButton(QtGui.QIcon(self.theme["main/minimize/image"]), self)
|
self.miniButton = WMButton(PesterIcon(self.theme["main/minimize/image"]), self)
|
||||||
self.connect(self.miniButton, QtCore.SIGNAL('clicked()'),
|
self.connect(self.miniButton, QtCore.SIGNAL('clicked()'),
|
||||||
self, QtCore.SLOT('showMinimized()'))
|
self, QtCore.SLOT('showMinimized()'))
|
||||||
|
|
||||||
|
@ -1338,13 +1486,17 @@ class PesterWindow(MovingWindow):
|
||||||
self.choosetheme.exec_()
|
self.choosetheme.exec_()
|
||||||
def initTheme(self, theme):
|
def initTheme(self, theme):
|
||||||
self.resize(*theme["main/size"])
|
self.resize(*theme["main/size"])
|
||||||
self.setWindowIcon(QtGui.QIcon(theme["main/icon"]))
|
self.setWindowIcon(PesterIcon(theme["main/icon"]))
|
||||||
self.setWindowTitle(theme["main/windowtitle"])
|
self.setWindowTitle(theme["main/windowtitle"])
|
||||||
self.setStyleSheet("QFrame#main { "+theme["main/style"]+" }")
|
self.setStyleSheet("QFrame#main { "+theme["main/style"]+" }")
|
||||||
self.menu.setStyleSheet("QMenuBar { background: transparent; %s } QMenuBar::item { background: transparent; %s } " % (theme["main/menubar/style"], theme["main/menu/menuitem"]) + "QMenu { background: transparent; %s } QMenu::item::selected { %s }" % (theme["main/menu/style"], theme["main/menu/selected"]))
|
self.menu.setStyleSheet("QMenuBar { background: transparent; %s } QMenuBar::item { background: transparent; %s } " % (theme["main/menubar/style"], theme["main/menu/menuitem"]) + "QMenu { background: transparent; %s } QMenu::item::selected { %s }" % (theme["main/menu/style"], theme["main/menu/selected"]))
|
||||||
self.closeButton.setIcon(QtGui.QIcon(theme["main/close/image"]))
|
newcloseicon = PesterIcon(theme["main/close/image"])
|
||||||
|
self.closeButton.setIcon(newcloseicon)
|
||||||
|
self.closeButton.setIconSize(newcloseicon.realsize())
|
||||||
self.closeButton.move(*theme["main/close/loc"])
|
self.closeButton.move(*theme["main/close/loc"])
|
||||||
self.miniButton.setIcon(QtGui.QIcon(theme["main/minimize/image"]))
|
newminiicon = PesterIcon(theme["main/minimize/image"])
|
||||||
|
self.miniButton.setIcon(newminiicon)
|
||||||
|
self.miniButton.setIconSize(newminiicon.realsize())
|
||||||
self.miniButton.move(*theme["main/minimize/loc"])
|
self.miniButton.move(*theme["main/minimize/loc"])
|
||||||
# menus
|
# menus
|
||||||
self.menu.move(*theme["main/menu/loc"])
|
self.menu.move(*theme["main/menu/loc"])
|
||||||
|
@ -1444,10 +1596,13 @@ class PesterWindow(MovingWindow):
|
||||||
@QtCore.pyqtSlot(QtCore.QString)
|
@QtCore.pyqtSlot(QtCore.QString)
|
||||||
def closeConvo(self, handle):
|
def closeConvo(self, handle):
|
||||||
h = unicode(handle)
|
h = unicode(handle)
|
||||||
|
chum = self.convos[h].chum
|
||||||
chumopen = self.convos[h].chumopen
|
chumopen = self.convos[h].chumopen
|
||||||
del self.convos[h]
|
|
||||||
if chumopen:
|
if chumopen:
|
||||||
|
self.chatlog.log(chum.handle, convertColorTags(self.profile().ceasedpestermsg(chum, QtGui.QColor(self.theme["convo/systemMsgColor"]), self.theme["convo/text/ceasepester"]), "bbcode"))
|
||||||
|
self.chatlog.finish(h)
|
||||||
self.convoClosed.emit(handle)
|
self.convoClosed.emit(handle)
|
||||||
|
del self.convos[h]
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def tabsClosed(self):
|
def tabsClosed(self):
|
||||||
del self.tabconvo
|
del self.tabconvo
|
||||||
|
@ -1598,6 +1753,9 @@ class PesterWindow(MovingWindow):
|
||||||
self.userprofile = userProfile.newUserProfile(profile)
|
self.userprofile = userProfile.newUserProfile(profile)
|
||||||
self.changeTheme(self.userprofile.getTheme())
|
self.changeTheme(self.userprofile.getTheme())
|
||||||
|
|
||||||
|
self.chatlog.close()
|
||||||
|
self.chatlog = PesterLog(handle)
|
||||||
|
|
||||||
# is default?
|
# is default?
|
||||||
if self.chooseprofile.defaultcheck.isChecked():
|
if self.chooseprofile.defaultcheck.isChecked():
|
||||||
self.config.set("defaultprofile", self.userprofile.chat.handle)
|
self.config.set("defaultprofile", self.userprofile.chat.handle)
|
||||||
|
@ -1818,9 +1976,9 @@ class PesterTray(QtGui.QSystemTrayIcon):
|
||||||
@QtCore.pyqtSlot(int)
|
@QtCore.pyqtSlot(int)
|
||||||
def changeTrayIcon(self, i):
|
def changeTrayIcon(self, i):
|
||||||
if i == 0:
|
if i == 0:
|
||||||
self.setIcon(QtGui.QIcon(self.mainwindow.theme["main/icon"]))
|
self.setIcon(PesterIcon(self.mainwindow.theme["main/icon"]))
|
||||||
else:
|
else:
|
||||||
self.setIcon(QtGui.QIcon(self.mainwindow.theme["main/newmsgicon"]))
|
self.setIcon(PesterIcon(self.mainwindow.theme["main/newmsgicon"]))
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
|
@ -1833,7 +1991,7 @@ def main():
|
||||||
widget = PesterWindow()
|
widget = PesterWindow()
|
||||||
widget.show()
|
widget.show()
|
||||||
|
|
||||||
trayicon = PesterTray(QtGui.QIcon(widget.theme["main/icon"]), widget, app)
|
trayicon = PesterTray(PesterIcon(widget.theme["main/icon"]), widget, app)
|
||||||
trayicon.show()
|
trayicon.show()
|
||||||
|
|
||||||
trayicon.connect(trayicon,
|
trayicon.connect(trayicon,
|
||||||
|
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 9 KiB |
|
@ -1,18 +1,18 @@
|
||||||
{"main":
|
{"main":
|
||||||
{"style": "background-image:url($path/pcbg.png);",
|
{"style": "background-image:url($path/pcbg.png);",
|
||||||
"size": [300, 620],
|
"size": [232, 380],
|
||||||
"icon": "$path/trayicon.gif",
|
"icon": "$path/trayicon.png",
|
||||||
"newmsgicon": "$path/trayicon2.png",
|
"newmsgicon": "$path/trayicon2.png",
|
||||||
"windowtitle": "P3ST3RCHUM",
|
"windowtitle": "PESTERCHUM",
|
||||||
"close": { "image": "$path/x.gif",
|
"close": { "image": "$path/x.gif",
|
||||||
"loc": [275, 0]},
|
"loc": [210, 2]},
|
||||||
"minimize": { "image": "$path/m.gif",
|
"minimize": { "image": "$path/m.gif",
|
||||||
"loc": [255, 0]},
|
"loc": [190, 2]},
|
||||||
"menubar": { "style": "font-family: 'Courier New'; font-weight: bold; font-size: 12px;" },
|
"menubar": { "style": "font-family: 'Courier'; font:bold; font-size: 12px;" },
|
||||||
"menu" : { "style": "font-family: 'Courier New'; font-weight: bold; font-size: 12px; background-color: #fdb302;border:2px solid #ffff00",
|
"menu" : { "style": "font-family: 'Courier'; font: bold; font-size: 12px; background-color: #fdb302;border:2px solid #ffff00",
|
||||||
"selected": "background-color: #ffff00",
|
|
||||||
"menuitem": "margin-right:10px;",
|
"menuitem": "margin-right:10px;",
|
||||||
"loc": [7,3]
|
"selected": "background-color: #ffff00",
|
||||||
|
"loc": [10,0]
|
||||||
},
|
},
|
||||||
"sounds": { "alertsound": "$path/alarm.wav" },
|
"sounds": { "alertsound": "$path/alarm.wav" },
|
||||||
"menus": {"client": {"_name": "CLIENT",
|
"menus": {"client": {"_name": "CLIENT",
|
||||||
|
@ -25,13 +25,13 @@
|
||||||
"rclickchumlist": {"pester": "PESTER",
|
"rclickchumlist": {"pester": "PESTER",
|
||||||
"removechum": "REMOVE CHUM"}
|
"removechum": "REMOVE CHUM"}
|
||||||
},
|
},
|
||||||
"chums": { "style": "background-color: black;color: white;font: bold;font-family: 'Courier New';selection-background-color:#919191; ",
|
"chums": { "style": "border:2px solid yellow; background-color: black;color: white;font: bold;font-family: 'Courier';selection-background-color:#646464; ",
|
||||||
"loc": [20, 65],
|
"loc": [12, 117],
|
||||||
"size": [266, 270],
|
"size": [209, 82],
|
||||||
"moods": { "chummy": { "icon": "$path/chummy.gif",
|
"moods": { "chummy": { "icon": "$path/chummy.gif",
|
||||||
"color": "white" },
|
"color": "white" },
|
||||||
"offline": { "icon": "$path/offline.gif",
|
"offline": { "icon": "$path/offline.gif",
|
||||||
"color": "#919191"},
|
"color": "#646464"},
|
||||||
"rancorous": { "icon": "$path/rancorous.gif",
|
"rancorous": { "icon": "$path/rancorous.gif",
|
||||||
"color": "red" },
|
"color": "red" },
|
||||||
"detestful": { "icon": "$path/detestful.gif",
|
"detestful": { "icon": "$path/detestful.gif",
|
||||||
|
@ -56,26 +56,26 @@
|
||||||
"color": "white" }
|
"color": "white" }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mychumhandle": { "label": { "text": "MYCHUMHANDLE",
|
"mychumhandle": { "label": { "text": "CHUMHANDLE:",
|
||||||
"loc": [70,380],
|
"loc": [19,232],
|
||||||
"style": "color:black;font:bold;" },
|
"style": "color: rgba(255, 255, 0, 0%) ;font:bold; font-family: 'Courier';" },
|
||||||
"handle": { "style": "border:3px solid yellow; background: black; color:white;",
|
"handle": { "style": "background: black; padding: 3px; color:white; font-family:'Courier'; font:bold; text-align:left;",
|
||||||
"loc": [20,400],
|
"loc": [14,246],
|
||||||
"size": [220,30] },
|
"size": [190, 21] },
|
||||||
"colorswatch": { "loc": [243,400],
|
"colorswatch": { "loc": [196,246],
|
||||||
"size": [40,30],
|
"size": [23,21],
|
||||||
"text": "" }
|
"text": "" }
|
||||||
},
|
},
|
||||||
"defaultwindow": { "style": "background: #fdb302; font-family:'Courier New';font:bold;selection-background-color:#919191; "
|
"defaultwindow": { "style": "background: #fdb302; font-family:'Courier';font:bold;selection-background-color:#919191; "
|
||||||
},
|
},
|
||||||
"addchum": { "style": "background: #fdb302; border:5px solid yellow; font: bold;",
|
"addchum": { "style": "background: rgba(255, 255, 0, 0%); border:2px solid #c48a00; font: bold; color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [20,340],
|
"loc": [12,202],
|
||||||
"size": [100, 40],
|
"size": [71, 22],
|
||||||
"text": "ADD CHUM"
|
"text": "ADD CHUM"
|
||||||
},
|
},
|
||||||
"pester": { "style": "background: #fdb302; border:5px solid yellow; font: bold;",
|
"pester": { "style": "background: rgba(255, 255, 0, 0%); border:2px solid #c48a00; font: bold; color: rgba(255, 255, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [130,340],
|
"loc": [150,202],
|
||||||
"size": [100, 40],
|
"size": [71, 22],
|
||||||
"text": "PESTER!"
|
"text": "PESTER!"
|
||||||
},
|
},
|
||||||
"defaultmood": 0,
|
"defaultmood": 0,
|
||||||
|
@ -84,85 +84,90 @@
|
||||||
"text": "MOODS"
|
"text": "MOODS"
|
||||||
},
|
},
|
||||||
"moods": [
|
"moods": [
|
||||||
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color:#919191;",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
"selected": "text-align:left; background-image:url($path/moodcheck1.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [20, 470],
|
"loc": [12, 288],
|
||||||
"size": [133, 30],
|
"size": [104, 22],
|
||||||
"text": "CHUMMY",
|
"text": "CHUMMY",
|
||||||
"icon": "$path/chummy.gif",
|
"icon": "$path/chummy.gif",
|
||||||
"mood": 0
|
"mood": 0
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color: #919191",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
"selected": "text-align:left; background-image:url($path/moodcheck2.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [20, 497],
|
"loc": [12, 308],
|
||||||
"size": [133, 30],
|
"size": [104, 22],
|
||||||
"text": "PLEASANT",
|
"text": "PALSY",
|
||||||
"icon": "$path/pleasant.gif",
|
"icon": "$path/chummy.gif",
|
||||||
"mood": 3
|
"mood": 3
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color:#919191;",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
"selected": "text-align:left; background-image:url($path/moodcheck3.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [20, 524],
|
"loc": [12, 328],
|
||||||
"size": [133, 30],
|
"size": [104, 22],
|
||||||
"text": "DISTRAUGHT",
|
"text": "CHIPPER",
|
||||||
"icon": "$path/distraught.gif",
|
"icon": "$path/chummy.gif",
|
||||||
"mood": 4
|
"mood": 4
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color:#919191;",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
"selected": "text-align:left; background-image:url($path/moodcheck2.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [150, 470],
|
"loc": [117, 288],
|
||||||
"size": [133, 30],
|
"size": [104, 22],
|
||||||
"text": "UNRULY",
|
"text": "BULLY",
|
||||||
"icon": "$path/unruly.gif",
|
"icon": "$path/chummy.gif",
|
||||||
"mood": 5
|
"mood": 5
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color:#919191;",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
"selected": "text-align:left; background-image:url($path/moodcheck2.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [150, 497],
|
"loc": [117, 308],
|
||||||
"size": [133, 30],
|
"size": [104, 22],
|
||||||
"text": "SMOOTH",
|
"text": "PEPPY",
|
||||||
"icon": "$path/smooth.gif",
|
"icon": "$path/chummy.gif",
|
||||||
"mood": 6
|
"mood": 6
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; background: red; border:3px solid black; padding: 5px;",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:left; background: red; border:3px solid black; padding: 5px;font: bold;",
|
"selected": "text-align:left; background-image:url($path/moodcheck4.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [150, 524],
|
"loc": [117, 328],
|
||||||
"size": [133, 30],
|
"size": [104, 22],
|
||||||
"text": "RANCOROUS",
|
"text": "RANCOROUS",
|
||||||
"icon": "$path/rancorous.gif",
|
"icon": "$path/rancorous.gif",
|
||||||
"mood": 1
|
"mood": 1
|
||||||
},
|
},
|
||||||
{ "style": "text-align:center; background: #919191; border:3px solid black; padding: 5px;",
|
{ "style": "text-align:left; border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier'",
|
||||||
"selected": "text-align:center; background: #919191; border:3px solid black; padding: 5px;font: bold;",
|
"selected": "text-align:left; background-image:url($path/moodcheck5.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
|
||||||
"loc": [20, 551],
|
"loc": [12, 348],
|
||||||
"size": [263, 30],
|
"size": [209, 22],
|
||||||
"text": "ABSCOND",
|
"text": "ABSCOND",
|
||||||
"icon": "$path/offline.gif",
|
"icon": "$path/x.gif",
|
||||||
"mood": 2
|
"mood": 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"convo":
|
"convo":
|
||||||
{"style": "background: #fdb302; font-family: 'Courier New'",
|
{"style": "background: #fdb302; border:2px solid yellow; font-family: 'Courier'",
|
||||||
"size": [600, 500],
|
"size": [295, 191],
|
||||||
"chumlabel": { "style": "background: rgba(255, 255, 255, 25%);",
|
"chumlabel": { "style": "background: rgb(196, 138, 0); color: white; border:0px;",
|
||||||
|
"align": { "h": "center", "v": "center" },
|
||||||
|
"minheight": 30,
|
||||||
|
"maxheight": 50,
|
||||||
"text" : ":: $handle ::"
|
"text" : ":: $handle ::"
|
||||||
},
|
},
|
||||||
"textarea": {
|
"textarea": {
|
||||||
"style": "background: white;font:bold;"
|
"style": "background: white; font:bold; border:2px solid #c48a00;text-align:center;"
|
||||||
},
|
},
|
||||||
"input": {
|
"input": {
|
||||||
"style": "background: white;"
|
"style": "background: white; border:2px solid #c48a00;margin-top:5px;"
|
||||||
},
|
},
|
||||||
"tabs": {
|
"tabs": {
|
||||||
"style": "",
|
"style": "",
|
||||||
|
"selectedstyle": "",
|
||||||
"newmsgcolor": "#fdb302",
|
"newmsgcolor": "#fdb302",
|
||||||
"tabstyle": 0
|
"tabstyle": 0
|
||||||
},
|
},
|
||||||
"text": {
|
"text": {
|
||||||
"beganpester": "began pestering",
|
"beganpester": "began pestering",
|
||||||
"ceasepester": "ceased pestering"
|
"ceasepester": "ceased pestering"
|
||||||
}
|
},
|
||||||
|
"systemMsgColor": "#646464"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Before Width: | Height: | Size: 116 B |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 61 B After Width: | Height: | Size: 55 B |
|
@ -145,23 +145,29 @@
|
||||||
"convo":
|
"convo":
|
||||||
{"style": "background: #fdb302; border:2px solid yellow; font-family: 'Courier'",
|
{"style": "background: #fdb302; border:2px solid yellow; font-family: 'Courier'",
|
||||||
"size": [295, 191],
|
"size": [295, 191],
|
||||||
"chumlabel": { "style": "background: rgb(196, 138, 0); color: white; text-align:center;",
|
"chumlabel": { "style": "background: rgb(196, 138, 0); color: white; border:0px;",
|
||||||
"text" : ":: $handle ::" },
|
"align": { "h": "center", "v": "center" },
|
||||||
|
"minheight": 30,
|
||||||
|
"maxheight": 50,
|
||||||
|
"text" : ":: $handle ::"
|
||||||
|
},
|
||||||
"textarea": {
|
"textarea": {
|
||||||
"style": "background: white; font:bold; border:2px solid #c48a00;text-align:center;"
|
"style": "background: white; font:bold; border:2px solid #c48a00;text-align:center;"
|
||||||
},
|
},
|
||||||
"input": {
|
"input": {
|
||||||
"style": "background: white; border:2px solid #c48a00;"
|
"style": "background: white; border:2px solid #c48a00;margin-top:5px;"
|
||||||
},
|
},
|
||||||
"tabs": {
|
"tabs": {
|
||||||
"style": "",
|
"style": "",
|
||||||
|
"selectedstyle": "",
|
||||||
"newmsgcolor": "#fdb302",
|
"newmsgcolor": "#fdb302",
|
||||||
"tabstyle": 0
|
"tabstyle": 0
|
||||||
},
|
},
|
||||||
"text": {
|
"text": {
|
||||||
"beganpester": "began pestering",
|
"beganpester": "began pestering",
|
||||||
"ceasepester": "ceased pestering"
|
"ceasepester": "ceased pestering"
|
||||||
}
|
},
|
||||||
|
"systemMsgColor": "#646464"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Before Width: | Height: | Size: 117 B |
Before Width: | Height: | Size: 164 B |
Before Width: | Height: | Size: 127 B |
Before Width: | Height: | Size: 127 B |
Before Width: | Height: | Size: 106 B |
Before Width: | Height: | Size: 137 B |
Before Width: | Height: | Size: 79 B After Width: | Height: | Size: 50 B |
Before Width: | Height: | Size: 76 B |
Before Width: | Height: | Size: 106 B |
Before Width: | Height: | Size: 145 B |
Before Width: | Height: | Size: 125 B |
Before Width: | Height: | Size: 134 B |
Before Width: | Height: | Size: 93 B |
|
@ -1,168 +1,247 @@
|
||||||
{"main":
|
{"main":
|
||||||
{"style": "background-image:url($path/tnbg2.png);background-color:rgba(255,255,255,0);",
|
{"style": "background-image:url($path/tnbg.png);background-color:rgba(255,255,255,0);",
|
||||||
"size": [300, 620],
|
"size": [650, 450],
|
||||||
"icon": "$path/trayicon3.png",
|
"icon": "$path/trayicon2.png",
|
||||||
"newmsgicon": "$path/trayicon.gif",
|
"newmsgicon": "$path/trayicon3.png",
|
||||||
"windowtitle": "TROLLIAN",
|
"windowtitle": "TROLLIAN",
|
||||||
"close": { "image": "$path/x.gif",
|
"close": { "image": "$path/x.gif",
|
||||||
"loc": [275, 0]},
|
"loc": [635, 2]},
|
||||||
"minimize": { "image": "$path/m.gif",
|
"minimize": { "image": "$path/m.gif",
|
||||||
"loc": [255, 0]},
|
"loc": [621, 8]},
|
||||||
"menubar": { "style": "font-family: 'Courier New'; font-weight: bold; font-size: 12px;" },
|
"menubar": { "style": "font-family: 'Arial'; font-size: 11px; color: rgba(0,0,0,0);" },
|
||||||
"menu" : { "style": "font-family: 'Courier New'; font-weight: bold; font-size: 12px; background-color: #e5000f; border:2px solid #ff0000",
|
|
||||||
"selected": "background-color: #ff0000",
|
|
||||||
"menuitem": "margin-right:10px;",
|
"menu" : { "style": "font-family: 'Arial'; font-size: 11px; background-color: #c2c2c2; border:1px solid #545454;",
|
||||||
"loc": [10,0]
|
|
||||||
|
|
||||||
|
"selected": "background-color: #545454",
|
||||||
|
|
||||||
|
|
||||||
|
"menuitem": "margin-right:14px;",
|
||||||
|
|
||||||
|
"loc": [14,90]
|
||||||
},
|
},
|
||||||
|
|
||||||
"sounds": { "alertsound": "$path/alarm.wav" },
|
"sounds": { "alertsound": "$path/alarm.wav" },
|
||||||
"menus": {"client": {"_name": "GRUBBER",
|
"menus": {"client": {"_name": "Trollian",
|
||||||
"options": "OPTIONS",
|
"options": "Options",
|
||||||
"exit": "ABSCOND"},
|
"exit": "Abscond"},
|
||||||
"profile": {"_name": "HEMOSPECTRUM",
|
"profile": {"_name": "View",
|
||||||
"switch": "SWITCH",
|
"switch": "Trolltag",
|
||||||
"theme": "THEME",
|
"theme": "Theme",
|
||||||
"quirks": "ANNOYING"},
|
"quirks": "Annoying"},
|
||||||
"rclickchumlist": {"pester": "TROLL",
|
"rclickchumlist": {"pester": "Troll",
|
||||||
"removechum": "REMOVE LOSER"}
|
"removechum": "Trash"}
|
||||||
},
|
},
|
||||||
"chums": { "style": "background-color: black;color: white;font: bold;font-family: 'Courier New';selection-background-color:#ffb6b6; ",
|
"chums": { "style": "border: 0px; background-color: white; padding: 5px; font-family: 'Arial';selection-background-color:rgb(200,200,200); ",
|
||||||
"loc": [20, 65],
|
"loc": [476, 90],
|
||||||
"size": [266, 270],
|
"size": [175, 361],
|
||||||
"moods": { "chummy": { "icon": "$path/chummy.gif",
|
|
||||||
"color": "white" },
|
"moods": {
|
||||||
"offline": { "icon": "$path/offline.gif",
|
|
||||||
"color": "#919191"},
|
"chummy": { "icon": "$path/chummy.png", "color": "#63ea00" },
|
||||||
"rancorous": { "icon": "$path/rancorous.gif",
|
|
||||||
"color": "red" },
|
"rancorous": { "icon": "$path/rancorous.png", "color": "#7f7f7f" },
|
||||||
"detestful": { "icon": "$path/detestful.gif",
|
|
||||||
"color": "red" },
|
"offline": { "icon": "$path/offline.png", "color": "black"},
|
||||||
"devious": { "icon": "$path/devious.gif",
|
|
||||||
"color": "white" },
|
|
||||||
"discontent": { "icon": "$path/discontent.gif",
|
"pleasant": { "icon": "$path/pleasant.png", "color": "#d69df8" },
|
||||||
"color": "white" },
|
|
||||||
"distraught": { "icon": "$path/distraught.gif",
|
"distraught": { "icon": "$path/distraught.png", "color": "#706eba" },
|
||||||
"color": "white" },
|
|
||||||
"ecstatic": { "icon": "$path/estatic.gif",
|
"unruly": { "icon": "$path/unruly.png", "color": "blue" },
|
||||||
"color": "white" },
|
|
||||||
"pleasant": { "icon": "$path/pleasant.gif",
|
"smooth": { "icon": "$path/smooth.png", "color": "red" },
|
||||||
"color": "white" },
|
|
||||||
"relaxed": { "icon": "$path/relaxed.gif",
|
|
||||||
"color": "white" },
|
"ecstatic": { "icon": "$path/ecstatic.png", "color": "#99004d" },
|
||||||
"sleek": { "icon": "$path/sleek.gif",
|
|
||||||
"color": "white" },
|
"relaxed": { "icon": "$path/relaxed.png", "color": "#078446" },
|
||||||
"smooth": { "icon": "$path/smooth.gif",
|
|
||||||
"color": "white" },
|
"discontent": { "icon": "$path/discontent.png", "color": "#a75403" },
|
||||||
"unruly": { "icon": "$path/unruly.gif",
|
|
||||||
"color": "white" }
|
"devious": { "icon": "$path/devious.png", "color": "#008282" },
|
||||||
|
|
||||||
|
"sleek": { "icon": "$path/sleek.png", "color": "#a1a100" },
|
||||||
|
|
||||||
|
"detestful": { "icon": "$path/detestful.png", "color": "#6a006a" },
|
||||||
|
|
||||||
|
"mirthful": { "icon": "$path/mirthful.png", "color": "#450077" },
|
||||||
|
|
||||||
|
"manipulative": { "icon": "$path/manipulative.png", "color": "#004182" },
|
||||||
|
|
||||||
|
"vigorous": { "icon": "$path/vigorous.png", "color": "#0021cb" },
|
||||||
|
|
||||||
|
"perky": { "icon": "$path/perky.png", "color": "#406600" },
|
||||||
|
|
||||||
|
"acceptant": { "icon": "$path/acceptant.png", "color": "#a10000" },
|
||||||
|
|
||||||
|
"protective": { "icon": "$path/protective.png", "color": "white" }
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mychumhandle": { "label": { "text": "MYTROLLTAG",
|
"mychumhandle": { "label": { "text": "",
|
||||||
"loc": [85,410],
|
"loc": [85,410],
|
||||||
"style": "color:black;font:bold;" },
|
"style": "color:rgba(0,0,0,0);" },
|
||||||
"handle": { "style": "border:3px solid #550000; background: black; color:white;",
|
"handle": { "style": "background: rgba(0,0,0,0); color:rgba(0,0,0,0);",
|
||||||
"loc": [20,430],
|
"loc": [0,0],
|
||||||
"size": [220,30] },
|
"size": [0,0] },
|
||||||
"colorswatch": { "loc": [243,430],
|
"colorswatch": { "loc": [0,0],
|
||||||
"size": [40,30],
|
"size": [0,0],
|
||||||
"text": "" }
|
"text": "" }
|
||||||
},
|
},
|
||||||
"defaultwindow": { "style": "background: #e5000f; font-family:'Courier New';font:bold;selection-background-color:#ffb6b6; "
|
"defaultwindow": { "style": "background: #c2c2c2; font-family:'Arial';font:bold;selection-background-color:#545454; "
|
||||||
},
|
},
|
||||||
"addchum": { "style": "background: black; border:5px solid #550000; font: bold;color:white;",
|
"addchum": { "style": "background: rgba(0,0,0,0); border:0px; color: rgba(0,0,0,0);",
|
||||||
"loc": [20,340],
|
"loc": [475, 67],
|
||||||
"size": [100, 40],
|
"size": [175, 18],
|
||||||
"text": "ADD LOSER"
|
"text": ""
|
||||||
},
|
},
|
||||||
"pester": { "style": "background: black; border:5px solid #550000; font: bold;color:white;",
|
"pester": { "style": "background: rgba(0,0,0,0); border:0px; color: rgba(0,0,0,0);",
|
||||||
"loc": [130,340],
|
"loc": [0,0],
|
||||||
"size": [100, 40],
|
"size": [0, 0],
|
||||||
"text": "TROLL"
|
"text": ""
|
||||||
},
|
},
|
||||||
"defaultmood": 7,
|
"defaultmood": 7,
|
||||||
"moodlabel": { "style": "",
|
"moodlabel": { "style": "",
|
||||||
"loc": [20, 430],
|
"loc": [0, 0],
|
||||||
"text": "MOODS"
|
"text": ""
|
||||||
},
|
},
|
||||||
"moods": [
|
"moods": [
|
||||||
{ "style": "text-align:left; background: black; border:3px solid black; padding: 5px;color:#dbdbdb;",
|
{ "style": "border:0px;",
|
||||||
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
"selected": "background-image:url($path/moodcheck1.png); border:0px;",
|
||||||
"loc": [20, 470],
|
"loc": [25, 141],
|
||||||
"size": [133, 30],
|
"size": [20, 270],
|
||||||
"text": "ECSTATIC",
|
"text": "",
|
||||||
"icon": "$path/estatic.gif",
|
"icon": "",
|
||||||
"mood": 7
|
"mood": 17
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; background: black; border:3px solid black; padding: 5px;color: #dbdbdb",
|
{ "style": "border:0px;",
|
||||||
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
"selected": "background-image:url($path/moodcheck2.png); border:0px;",
|
||||||
"loc": [20, 497],
|
"loc": [60, 141],
|
||||||
"size": [133, 30],
|
"size": [20, 270],
|
||||||
"text": "RELAXED",
|
"text": "",
|
||||||
"icon": "$path/relaxed.gif",
|
"icon": "",
|
||||||
"mood": 8
|
|
||||||
},
|
|
||||||
{ "style": "text-align:left; background: black; border:3px solid black; padding: 5px;color:#dbdbdb;",
|
|
||||||
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
|
||||||
"loc": [20, 524],
|
|
||||||
"size": [133, 30],
|
|
||||||
"text": "DISCONTENT",
|
|
||||||
"icon": "$path/discontent.gif",
|
|
||||||
"mood": 9
|
"mood": 9
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; background: black; border:3px solid black; padding: 5px;color:#dbdbdb;",
|
{ "style": "border:0px;",
|
||||||
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
"selected": "background-image:url($path/moodcheck3.png); border:0px;",
|
||||||
"loc": [150, 470],
|
"loc": [95, 141],
|
||||||
"size": [133, 30],
|
"size": [20, 270],
|
||||||
"text": "DEVIOUS",
|
"text": "",
|
||||||
"icon": "$path/devious.gif",
|
"icon": "",
|
||||||
"mood": 10
|
|
||||||
},
|
|
||||||
{ "style": "text-align:left; background: black; border:3px solid black; padding: 5px;color:#dbdbdb;",
|
|
||||||
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
|
|
||||||
"loc": [150, 497],
|
|
||||||
"size": [133, 30],
|
|
||||||
"text": "SLEEK",
|
|
||||||
"icon": "$path/sleek.gif",
|
|
||||||
"mood": 11
|
"mood": 11
|
||||||
},
|
},
|
||||||
{ "style": "text-align:left; background: red; border:3px solid black; padding: 5px;",
|
{ "style": "border:0px;",
|
||||||
"selected": "text-align:left; background: red; border:3px solid black; padding: 5px;font: bold;",
|
"selected": "background-image:url($path/moodcheck4.png); border:0px;",
|
||||||
"loc": [150, 524],
|
"loc": [130, 141],
|
||||||
"size": [133, 30],
|
"size": [20, 270],
|
||||||
"text": "DETESTFUL",
|
"text": "",
|
||||||
"icon": "$path/detestful.gif",
|
"icon": "",
|
||||||
|
"mood": 1
|
||||||
|
},
|
||||||
|
{ "style": "border:0px;",
|
||||||
|
"selected": "background-image:url($path/moodcheck5.png); border:0px;",
|
||||||
|
"loc": [165, 141],
|
||||||
|
"size": [20, 270],
|
||||||
|
"text": "",
|
||||||
|
"icon": "",
|
||||||
|
"mood": 16
|
||||||
|
},
|
||||||
|
{ "style": "border:0px;",
|
||||||
|
"selected": "background-image:url($path/moodcheck6.png); border:0px;",
|
||||||
|
"loc": [200, 141],
|
||||||
|
"size": [20, 270],
|
||||||
|
"text": "",
|
||||||
|
"icon": "",
|
||||||
|
"mood": 8
|
||||||
|
},
|
||||||
|
{ "style": "border:0px;",
|
||||||
|
"selected": "background-image:url($path/moodcheck7.png); border:0px;",
|
||||||
|
"loc": [235, 141],
|
||||||
|
"size": [20, 270],
|
||||||
|
"text": "",
|
||||||
|
"icon": "",
|
||||||
|
"mood": 10
|
||||||
|
},
|
||||||
|
{ "style": "border:0px;",
|
||||||
|
"selected": "background-image:url($path/moodcheck8.png); border:0px;",
|
||||||
|
"loc": [270, 141],
|
||||||
|
"size": [20, 270],
|
||||||
|
"text": "",
|
||||||
|
"icon": "",
|
||||||
|
"mood": 14
|
||||||
|
},
|
||||||
|
{ "style": "border:0px;",
|
||||||
|
"selected": "background-image:url($path/moodcheck9.png); border:0px;",
|
||||||
|
"loc": [305, 141],
|
||||||
|
"size": [20, 270],
|
||||||
|
"text": "",
|
||||||
|
"icon": "",
|
||||||
|
"mood": 15
|
||||||
|
},
|
||||||
|
{ "style": "border:0px;",
|
||||||
|
"selected": "background-image:url($path/moodcheck10.png); border:0px;",
|
||||||
|
"loc": [340, 141],
|
||||||
|
"size": [20, 270],
|
||||||
|
"text": "",
|
||||||
|
"icon": "",
|
||||||
|
"mood": 13
|
||||||
|
},
|
||||||
|
{ "style": "border:0px;",
|
||||||
|
"selected": "background-image:url($path/moodcheck11.png); border:0px;",
|
||||||
|
"loc": [375, 141],
|
||||||
|
"size": [20, 270],
|
||||||
|
"text": "",
|
||||||
|
"icon": "",
|
||||||
"mood": 12
|
"mood": 12
|
||||||
},
|
},
|
||||||
{ "style": "text-align:center; background: #919191; border:3px solid black; padding: 5px;",
|
{ "style": "border:0px;",
|
||||||
"selected": "text-align:center; background: #919191; border:3px solid black; padding: 5px;font: bold;",
|
"selected": "background-image:url($path/moodcheck12.png); border:0px;",
|
||||||
"loc": [20, 551],
|
"loc": [410, 141],
|
||||||
"size": [263, 30],
|
"size": [20, 270],
|
||||||
"text": "ABSCOND",
|
"text": "",
|
||||||
"icon": "$path/offline.gif",
|
"icon": "",
|
||||||
|
"mood": 7
|
||||||
|
},
|
||||||
|
|
||||||
|
{ "style": "border:0px;color: rgba(0, 0, 0, 0%);",
|
||||||
|
"selected": "border:0px; color: rgba(0, 0, 0, 0%);",
|
||||||
|
"loc": [12, 117],
|
||||||
|
"size": [435, 18],
|
||||||
|
"text": "",
|
||||||
|
"icon": "",
|
||||||
"mood": 2
|
"mood": 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"convo":
|
"convo":
|
||||||
{"style": "background: #e5000f; font-family: 'Courier New'",
|
{"style": "background: rgb(190, 19, 4); font-family: 'Arial'",
|
||||||
"size": [600, 500],
|
"size": [308, 194],
|
||||||
"chumlabel": { "style": "background: rgba(255, 255, 255, 25%);",
|
"chumlabel": { "style": "background: rgb(255, 38, 18); color: white;",
|
||||||
"text" : "trolling $handle"
|
"align": { "h": "center", "v": "center" },
|
||||||
|
"minheight": 30,
|
||||||
|
"maxheight": 50,
|
||||||
|
"text" : "trolling: $handle"
|
||||||
},
|
},
|
||||||
"textarea": {
|
"textarea": {
|
||||||
"style": "background: white;font:bold;"
|
"style": "background: white; border:0px;"
|
||||||
},
|
},
|
||||||
"input": {
|
"input": {
|
||||||
"style": "background: white;"
|
"style": "background: white; border:0px solid #c48a00;margin-top:5px;"
|
||||||
},
|
},
|
||||||
"tabs": {
|
"tabs": {
|
||||||
"style": "",
|
"style": "",
|
||||||
|
"selectedstyle": "",
|
||||||
"newmsgcolor": "red",
|
"newmsgcolor": "red",
|
||||||
"tabstyle": 0
|
"tabstyle": 0
|
||||||
},
|
},
|
||||||
"text": {
|
"text": {
|
||||||
"beganpester": "began trolling",
|
"beganpester": "began trolling",
|
||||||
"ceasepester": "gave up trolling"
|
"ceasepester": "gave up trolling"
|
||||||
}
|
},
|
||||||
|
"systemMsgColor": "#646464"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 4 KiB |
Before Width: | Height: | Size: 4 KiB After Width: | Height: | Size: 4 KiB |
Before Width: | Height: | Size: 106 B |
Before Width: | Height: | Size: 109 B After Width: | Height: | Size: 76 B |