buncha new stuff

This commit is contained in:
Stephen Dranger 2011-02-01 05:14:56 -06:00
parent b830b3a76c
commit a1a7a8dbdd
16 changed files with 311 additions and 227 deletions

10
TODO
View file

@ -1,18 +1,11 @@
Features:
* chumdb not working great
* tab recombining gives wrong window icon
* switch focus to lineedit
* colors from ppl msging you not on your buddy list dont work - check chumdb
* scaling icons
* menubar should pass on mouse move
* tab background
* softcode conversation handle
* top box layout
* mood change image -- can't it be done already?
* chat scrolls when switch theme
* softcode menu names and protocol messages, menu location
* eliminate "SWITCH" in profile menu
* remove highlighted text area if focus in textinput
* new sound on CEASE and BEGIN?
* windows text goes gray when out of focus
* Logging
* Block list
@ -23,6 +16,7 @@ Features:
* color tags
* /me ghostDunk's [GD'S]
* Transparent background
* tab recombining gives wrong window icon
-- release alpha
* shared buddy lists - changes to the buddy list should refresh it?
multiple clients share buddy list???

View file

@ -1 +1 @@
{"gamblingGenocider": {"color": "#00ff00", "handle": "gamblingGenocider", "mood": "offline"}, "aquaMarinist": {"color": "#00caca", "handle": "aquaMarinist", "mood": "offline"}, "unknownTraveler": {"color": "#006666", "handle": "unknownTraveler", "mood": "offline"}, "captainCaveman": {"color": "#7c414e", "handle": "captainCaveman", "mood": "offline"}}
{"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"}}

View file

@ -1 +1 @@
{"tabs": true, "chums": ["aquaMarinist", "gardenGnostic", "gamblingGenocider", "schlagzeugGator", "mechanicalSpectacle", "marineAquist"], "defaultprofile": "ghostDunk"}
{"tabs": true, "chums": ["aquaMarinist", "gardenGnostic", "gamblingGenocider", "schlagzeugGator", "mechanicalSpectacle", "marineAquist", "unknownTraveler"], "defaultprofile": "testProfile"}

View file

@ -6,6 +6,7 @@ import logging
import os, sys
import os.path
from datetime import *
from string import Template
import random
import json
import re
@ -85,11 +86,9 @@ class PesterProfileDB(dict):
fp.close()
def getColor(self, handle, default=None):
if not self.has_key(handle):
print "no color found for %s" % (handle)
return default
else:
print "pulled %s from db" % (handle)
return self[handle]["color"]
return self[handle].color
def setColor(self, handle, color):
if self.has_key(handle):
self[handle].color = color
@ -125,10 +124,10 @@ class PesterProfile(object):
"mood": self.mood.name(),
"color": unicode(self.color.name())})
def beganpestermsg(self, otherchum):
return "<span style='color:black;'>-- %s <span style='color:%s'>[%s]</span> began pestering %s <span style='color:%s'>[%s]</span> at %s --</span>" % (self.handle, self.colorhtml(), self.initials(), otherchum.handle, otherchum.colorhtml(), otherchum.initials(), datetime.now().strftime("%H:%M"))
def ceasedpestermsg(self, otherchum):
return "<span style='color:black;'>-- %s <span style='color:%s'>[%s]</span> ceased pestering %s <span style='color:%s'>[%s]</span> at %s --</span>" % (self.handle, self.colorhtml(), self.initials(), otherchum.handle, otherchum.colorhtml(), otherchum.initials(), datetime.now().strftime("%H:%M"))
def beganpestermsg(self, otherchum, 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"))
def ceasedpestermsg(self, otherchum, 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"))
@staticmethod
def checkLength(handle):
@ -157,11 +156,10 @@ class pesterTheme(dict):
v = v[k]
return v
def pathHook(self, d):
from string import Template
for (k, v) in d.iteritems():
if type(v) is unicode:
s = Template(v)
d[k] = s.substitute(path=self.path)
d[k] = s.safe_substitute(path=self.path)
return d
class pesterQuirk(object):
@ -690,14 +688,14 @@ class chumArea(QtGui.QListWidget):
self.addItem(chumLabel)
self.optionsMenu = QtGui.QMenu(self)
pester = QtGui.QAction("PESTER", self)
self.connect(pester, QtCore.SIGNAL('triggered()'),
self.pester = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/pester"], self)
self.connect(self.pester, QtCore.SIGNAL('triggered()'),
self, QtCore.SLOT('activateChum()'))
removechum = QtGui.QAction("REMOVE CHUM", self)
self.connect(removechum, QtCore.SIGNAL('triggered()'),
self.removechum = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/removechum"], self)
self.connect(self.removechum, QtCore.SIGNAL('triggered()'),
self, QtCore.SLOT('removeChum()'))
self.optionsMenu.addAction(pester)
self.optionsMenu.addAction(removechum)
self.optionsMenu.addAction(self.pester)
self.optionsMenu.addAction(self.removechum)
self.sortItems()
def addChum(self, chum):
@ -719,6 +717,9 @@ class chumArea(QtGui.QListWidget):
def changeTheme(self, theme):
self.setGeometry(*(theme["main/chums/loc"]+theme["main/chums/size"]))
self.setStyleSheet(theme["main/chums/style"])
self.pester.setText(theme["main/menus/rclickchumlist/pester"])
self.removechum.setText(theme["main/menus/rclickchumlist/removechum"])
chumlistings = [self.item(i) for i in range(0, self.count())]
for c in chumlistings:
c.changeTheme(theme)
@ -992,19 +993,19 @@ class PesterText(QtGui.QTextEdit):
parent.setChumOpen(True)
window = parent.mainwindow
me = window.profile()
msg = chum.beganpestermsg(me)
msg = chum.beganpestermsg(me, window.theme["convo/text/beganpester"])
self.append(msg)
elif msg == "PESTERCHUM:CEASE":
parent = self.parent()
parent.setChumOpen(False)
window = parent.mainwindow
me = window.profile()
msg = chum.ceasedpestermsg(me)
msg = chum.ceasedpestermsg(me, window.theme["convo/text/ceasepester"])
self.append(msg)
else:
if not self.parent().chumopen and chum is not self.parent().mainwindow.profile():
me = self.parent().mainwindow.profile()
beginmsg = chum.beganpestermsg(me)
beginmsg = chum.beganpestermsg(me, self.parent().mainwindow.theme["convo/text/beganpester"])
self.parent().setChumOpen(True)
self.append(beginmsg)
@ -1016,6 +1017,7 @@ class PesterText(QtGui.QTextEdit):
def focusInEvent(self, event):
self.parent().clearNewMessage()
QtGui.QTextEdit.focusInEvent(self, event)
self.parent().textInput.setFocus()
class PesterInput(QtGui.QLineEdit):
def __init__(self, theme, parent=None):
@ -1039,7 +1041,9 @@ class PesterConvo(QtGui.QFrame):
self.setWindowIcon(chum.mood.icon(self.mainwindow.theme))
self.setWindowTitle(chum.handle)
self.chumLabel = QtGui.QLabel(chum.handle, self)
t = Template(self.mainwindow.theme["convo/chumlabel/text"])
self.chumLabel = QtGui.QLabel(t.safe_substitute(handle=chum.handle), self)
self.chumLabel.setStyleSheet(self.mainwindow.theme["convo/chumlabel/style"])
self.textArea = PesterText(self.mainwindow.theme, self)
self.textInput = PesterInput(self.mainwindow.theme, self)
@ -1060,13 +1064,13 @@ class PesterConvo(QtGui.QFrame):
if parent:
parent.addChat(self)
if initiated:
msg = self.mainwindow.profile().beganpestermsg(self.chum)
msg = self.mainwindow.profile().beganpestermsg(self.chum, self.mainwindow.theme["convo/text/beganpester"])
self.textArea.append(msg)
self.newmessage = False
def updateMood(self, mood):
if mood.name() == "offline":
msg = self.mainwindow.profile().ceasedpestermsg(self.chum)
if mood.name() == "offline" and self.chumopen == True:
msg = self.chum.ceasedpestermsg(self.mainwindow.profile(), self.mainwindow.theme["convo/text/ceasepester"])
self.textArea.append(msg)
self.chumopen = False
if self.parent():
@ -1129,6 +1133,8 @@ class PesterConvo(QtGui.QFrame):
self.resize(*theme["convo/size"])
self.setStyleSheet(theme["convo/style"])
self.setWindowIcon(self.chum.mood.icon(theme))
t = Template(self.mainwindow.theme["convo/chumlabel/text"])
self.chumLabel.setText(t.safe_substitute(handle=self.chum.handle))
self.chumLabel.setStyleSheet(theme["convo/chumlabel/style"])
self.textArea.changeTheme(theme)
self.textInput.changeTheme(theme)
@ -1170,29 +1176,37 @@ class PesterWindow(MovingWindow):
self.move(100, 100)
opts = QtGui.QAction("OPTIONS", self)
opts = QtGui.QAction(self.theme["main/menus/client/options"], self)
self.opts = opts
self.connect(opts, QtCore.SIGNAL('triggered()'),
self, QtCore.SLOT('openOpts()'))
exitaction = QtGui.QAction("EXIT", self)
exitaction = QtGui.QAction(self.theme["main/menus/client/exit"], self)
self.exitaction = exitaction
self.connect(exitaction, QtCore.SIGNAL('triggered()'),
self, QtCore.SLOT('close()'))
self.menu = QtGui.QMenuBar(self)
filemenu = self.menu.addMenu("FILE")
filemenu = self.menu.addMenu(self.theme["main/menus/client/_name"])
self.filemenu = filemenu
filemenu.addAction(opts)
filemenu.addAction(exitaction)
switch = QtGui.QAction("SWITCH", self)
self.connect(switch, QtCore.SIGNAL('triggered()'),
self, QtCore.SLOT('switchProfile()'))
changetheme = QtGui.QAction("THEME", self)
changetheme = QtGui.QAction(self.theme["main/menus/profile/theme"], self)
self.changetheme = changetheme
self.connect(changetheme, QtCore.SIGNAL('triggered()'),
self, QtCore.SLOT('pickTheme()'))
changequirks = QtGui.QAction("QUIRKS", self)
changequirks = QtGui.QAction(self.theme["main/menus/profile/quirks"], self)
self.changequirks = changequirks
self.connect(changequirks, QtCore.SIGNAL('triggered()'),
self, QtCore.SLOT('openQuirks()'))
profilemenu = self.menu.addMenu("PROFILE")
switch = QtGui.QAction(self.theme["main/menus/profile/switch"], self)
self.switch = switch
self.connect(switch, QtCore.SIGNAL('triggered()'),
self, QtCore.SLOT('switchProfile()'))
profilemenu = self.menu.addMenu(self.theme["main/menus/profile/_name"])
self.profilemenu = profilemenu
profilemenu.addAction(changetheme)
profilemenu.addAction(changequirks)
profilemenu.addAction(switch)
@ -1206,7 +1220,7 @@ class PesterWindow(MovingWindow):
self.chumdb = PesterProfileDB()
chums = [PesterProfile(c) 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.connect(self.chumList,
QtCore.SIGNAL('itemActivated(QListWidgetItem *)'),
@ -1265,7 +1279,7 @@ class PesterWindow(MovingWindow):
mood = matchingChums[0].mood
else:
mood = Mood(0)
chum = PesterProfile(handle, mood=mood)
chum = PesterProfile(handle, mood=mood, chumdb=self.chumdb)
self.newConversation(chum, False)
if len(matchingChums) == 0:
self.moodRequest.emit(chum)
@ -1327,11 +1341,21 @@ class PesterWindow(MovingWindow):
self.setWindowIcon(QtGui.QIcon(theme["main/icon"]))
self.setWindowTitle(theme["main/windowtitle"])
self.setStyleSheet("QFrame#main { "+theme["main/style"]+" }")
self.menu.setStyleSheet("QMenuBar { background: transparent; %s } QMenuBar::item { background: transparent; } " % (theme["main/menubar/style"]) + "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"]))
self.closeButton.move(*theme["main/close/loc"])
self.miniButton.setIcon(QtGui.QIcon(theme["main/minimize/image"]))
self.miniButton.move(*theme["main/minimize/loc"])
# menus
self.menu.move(*theme["main/menu/loc"])
self.opts.setText(theme["main/menus/client/options"])
self.exitaction.setText(theme["main/menus/client/exit"])
self.filemenu.setTitle(theme["main/menus/client/_name"])
self.changetheme.setText(theme["main/menus/profile/theme"])
self.changequirks.setText(theme["main/menus/profile/quirks"])
self.switch.setText(theme["main/menus/profile/switch"])
self.profilemenu.setTitle(theme["main/menus/profile/_name"])
# moods
self.moodsLabel.setText(theme["main/moodlabel/text"])
self.moodsLabel.move(*theme["main/moodlabel/loc"])
@ -1411,7 +1435,11 @@ class PesterWindow(MovingWindow):
self.newConversationWindow(curChum)
@QtCore.pyqtSlot(QtGui.QListWidgetItem)
def newConversationWindow(self, chumlisting):
# check chumdb
chum = chumlisting.chum
color = self.chumdb.getColor(chum)
if color:
chum.color = color
self.newConversation(chum)
@QtCore.pyqtSlot(QtCore.QString)
def closeConvo(self, handle):
@ -1456,7 +1484,7 @@ class PesterWindow(MovingWindow):
errormsg.showMessage("THIS IS NOT A VALID CHUMTAG!")
self.addchumdialog = None
return
chum = PesterProfile(handle)
chum = PesterProfile(handle, chumdb=self.chumdb)
self.chumList.addChum(chum)
self.config.addChum(chum)
self.moodRequest.emit(chum)
@ -1539,8 +1567,10 @@ class PesterWindow(MovingWindow):
try:
self.changeTheme(pesterTheme(themename))
except ValueError, e:
themeWarning = QtGui.QMessageBox()
closeWarning.setText("Theme Error: %s", e)
themeWarning = QtGui.QMessageBox(self)
themeWarning.setText("Theme Error: %s" % (e))
themeWarning.exec_()
self.choosetheme = None
return
# update profile
self.userprofile.setTheme(self.theme)
@ -1554,12 +1584,14 @@ class PesterWindow(MovingWindow):
self.chooseprofile.profileBox.currentIndex() > 0:
handle = unicode(self.chooseprofile.profileBox.currentText())
if handle == self.profile().handle:
self.chooseprofile = None
return
self.userprofile = userProfile(handle)
self.changeTheme(self.userprofile.getTheme())
else:
handle = unicode(self.chooseprofile.chumHandle.text())
if handle == self.profile().handle:
self.chooseprofile = None
return
profile = PesterProfile(handle,
self.chooseprofile.chumcolor)
@ -1571,9 +1603,9 @@ class PesterWindow(MovingWindow):
self.config.set("defaultprofile", self.userprofile.chat.handle)
# this may have to be fixed
self.closeConversations()
self.chooseprofile = None
self.profileChanged.emit()
self.chooseprofile = None
@QtCore.pyqtSlot()
def changeMyColor(self):
if not hasattr(self, 'colorDialog'):
@ -1602,8 +1634,11 @@ class PesterWindow(MovingWindow):
return
self.changeProfile()
@QtCore.pyqtSlot(QtCore.QString)
def nickCollision(self, handle):
@QtCore.pyqtSlot(QtCore.QString, QtCore.QString)
def nickCollision(self, handle, tmphandle):
self.mychumhandle.setText(tmphandle)
if not hasattr(self, 'chooseprofile'):
self.chooseprofile = None
if not self.chooseprofile:
h = unicode(handle)
self.changeProfile(collision=h)
@ -1679,7 +1714,7 @@ class PesterIRC(QtCore.QObject):
moodUpdated = QtCore.pyqtSignal(QtCore.QString, Mood)
colorUpdated = QtCore.pyqtSignal(QtCore.QString, QtGui.QColor)
messageReceived = QtCore.pyqtSignal(QtCore.QString, QtCore.QString)
nickCollision = QtCore.pyqtSignal(QtCore.QString)
nickCollision = QtCore.pyqtSignal(QtCore.QString, QtCore.QString)
class PesterHandler(DefaultCommandHandler):
def privmsg(self, nick, chan, msg):
@ -1688,6 +1723,7 @@ class PesterHandler(DefaultCommandHandler):
if msg[0] == '\x01':
return
handle = nick[0:nick.find("!")]
logging.info("---> recv \"PRIVMSG %s :%s\"" % (handle, msg))
if chan == "#pesterchum":
# follow instructions
if msg[0:6] == "MOOD >":
@ -1730,8 +1766,9 @@ class PesterHandler(DefaultCommandHandler):
self.getMood(*chums)
def nicknameinuse(self, server, cmd, nick, msg):
helpers.nick(self.client, "pesterClient%d" % (random.randint(100,999)))
self.parent.nickCollision.emit(nick)
newnick = "pesterClient%d" % (random.randint(100,999))
helpers.nick(self.client, newnick)
self.parent.nickCollision.emit(nick, newnick)
def quit(self, nick, reason):
handle = nick[0:nick.find("!")]
self.parent.moodUpdated.emit(handle, Mood("offline"))
@ -1745,7 +1782,7 @@ class PesterHandler(DefaultCommandHandler):
self.parent.moodUpdated.emit(handle, Mood("chummy"))
def nick(self, oldnick, newnick):
oldhandle = oldnick[0:oldnick.find("!")]
newchum = PesterProfile(newnick)
newchum = PesterProfile(newnick, chumdb=self.mainwindow.chumdb)
self.parent.moodUpdated.emit(oldhandle, Mood("offline"))
if newnick in self.mainwindow.chumList.chums:
self.getMood(newchum)
@ -1848,9 +1885,9 @@ def main():
widget,
QtCore.SLOT('deliverMessage(QString, QString)'))
irc.connect(irc,
QtCore.SIGNAL('nickCollision(QString)'),
QtCore.SIGNAL('nickCollision(QString, QString)'),
widget,
QtCore.SLOT('nickCollision(QString)'))
QtCore.SLOT('nickCollision(QString, QString)'))
ircapp = IRCThread(irc)
ircapp.start()

View file

@ -1 +1 @@
{"color": "#aa00ff", "theme": "pesterchum", "quirks": [], "handle": "testProfile"}
{"color": "#aa00ff", "theme": "trollian", "quirks": [], "handle": "testProfile"}

View file

@ -10,9 +10,21 @@
"loc": [255, 0]},
"menubar": { "style": "font-family: 'Courier New'; font-weight: bold; font-size: 12px;" },
"menu" : { "style": "font-family: 'Courier New'; font-weight: bold; font-size: 12px; background-color: #fdb302;border:2px solid #ffff00",
"selected": "background-color: #ffff00"
"selected": "background-color: #ffff00",
"menuitem": "margin-right:10px;",
"loc": [7,3]
},
"sounds": { "alertsound": "$path/alarm.wav" },
"menus": {"client": {"_name": "CLIENT",
"options": "OPTIONS",
"exit": "EXIT"},
"profile": {"_name": "PROFILE",
"switch": "SWITCH",
"theme": "THEME",
"quirks": "QUIRKS"},
"rclickchumlist": {"pester": "PESTER",
"removechum": "REMOVE CHUM"}
},
"chums": { "style": "background-color: black;color: white;font: bold;font-family: 'Courier New';selection-background-color:#919191; ",
"loc": [20, 65],
"size": [266, 270],
@ -66,7 +78,7 @@
"size": [100, 40],
"text": "PESTER!"
},
"defaultmood": "chummy",
"defaultmood": 0,
"moodlabel": { "style": "",
"loc": [20, 430],
"text": "MOODS"
@ -78,7 +90,7 @@
"size": [133, 30],
"text": "CHUMMY",
"icon": "$path/chummy.gif",
"mood": "chummy"
"mood": 0
},
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color: #919191",
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
@ -86,7 +98,7 @@
"size": [133, 30],
"text": "PLEASANT",
"icon": "$path/pleasant.gif",
"mood": "pleasant"
"mood": 3
},
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color:#919191;",
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
@ -94,7 +106,7 @@
"size": [133, 30],
"text": "DISTRAUGHT",
"icon": "$path/distraught.gif",
"mood": "distraught"
"mood": 4
},
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color:#919191;",
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
@ -102,7 +114,7 @@
"size": [133, 30],
"text": "UNRULY",
"icon": "$path/unruly.gif",
"mood": "unruly"
"mood": 5
},
{ "style": "text-align:left; background: white; border:3px solid black; padding: 5px;color:#919191;",
"selected": "text-align:left; background: white; border:3px solid black; padding: 5px;font: bold;",
@ -110,7 +122,7 @@
"size": [133, 30],
"text": "SMOOTH",
"icon": "$path/smooth.gif",
"mood": "smooth"
"mood": 6
},
{ "style": "text-align:left; background: red; border:3px solid black; padding: 5px;",
"selected": "text-align:left; background: red; border:3px solid black; padding: 5px;font: bold;",
@ -118,7 +130,7 @@
"size": [133, 30],
"text": "RANCOROUS",
"icon": "$path/rancorous.gif",
"mood": "rancorous"
"mood": 1
},
{ "style": "text-align:center; background: #919191; border:3px solid black; padding: 5px;",
"selected": "text-align:center; background: #919191; border:3px solid black; padding: 5px;font: bold;",
@ -126,14 +138,16 @@
"size": [263, 30],
"text": "ABSCOND",
"icon": "$path/offline.gif",
"mood": "offline"
"mood": 2
}
]
},
"convo":
{"style": "background: #fdb302; font-family: 'Courier New'",
"size": [600, 500],
"chumlabel": { "style": "background: rgba(255, 255, 255, 25%);" },
"chumlabel": { "style": "background: rgba(255, 255, 255, 25%);",
"text" : ":: $handle ::"
},
"textarea": {
"style": "background: white;font:bold;"
},
@ -144,6 +158,10 @@
"style": "",
"newmsgcolor": "#fdb302",
"tabstyle": 0
},
"text": {
"beganpester": "began pestering",
"ceasepester": "ceased pestering"
}
}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 9 KiB

View file

@ -1,8 +1,8 @@
{"main":
{"style": "background-image:url($path/pcbg.png);",
"size": [232, 380],
"icon": "$path/trayicon.gif",
"newmsgicon": "$path/trayicon2.gif",
"icon": "$path/trayicon.png",
"newmsgicon": "$path/trayicon2.png",
"windowtitle": "PESTERCHUM",
"close": { "image": "$path/x.gif",
"loc": [210, 2]},
@ -10,9 +10,21 @@
"loc": [190, 2]},
"menubar": { "style": "font-family: 'Courier'; font:bold; font-size: 12px;" },
"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;",
"selected": "background-color: #ffff00",
"loc": [10,0]
},
"sounds": { "alertsound": "$path/alarm.wav" },
"menus": {"client": {"_name": "CLIENT",
"options": "OPTIONS",
"exit": "EXIT"},
"profile": {"_name": "PROFILE",
"switch": "SWITCH",
"theme": "THEME",
"quirks": "QUIRKS"},
"rclickchumlist": {"pester": "PESTER",
"removechum": "REMOVE CHUM"}
},
"chums": { "style": "border:2px solid yellow; background-color: black;color: white;font: bold;font-family: 'Courier';selection-background-color:#646464; ",
"loc": [12, 117],
"size": [209, 82],
@ -46,8 +58,8 @@
},
"mychumhandle": { "label": { "text": "CHUMHANDLE:",
"loc": [19,232],
"style": "color: rgba(255, 255, 0, 0%) ; font-family: 'Courier';" },
"handle": { "style": "background: black; padding: 3px; color:white; font-family:'Courier'; font:bold; text-align:left;",
"style": "color: rgba(255, 255, 0, 0%) ;font:bold; font-family: 'Courier';" },
"handle": { "style": "background: black; padding: 3px; color:white; font-family:'Courier'; font:bold; text-align:left;",
"loc": [14,246],
"size": [190, 21] },
"colorswatch": { "loc": [196,246],
@ -66,66 +78,66 @@
"size": [71, 22],
"text": "PESTER!"
},
"defaultmood": "chummy",
"defaultmood": 0,
"moodlabel": { "style": "",
"loc": [20, 4300],
"loc": [20, 430],
"text": "MOODS"
},
"moods": [
{ "style": "text-align:left; background: yellow; border:2px solid #c48a00; padding: 5px;color:#000000; font-family:'Courier'",
"selected": "text-align:left; background: yellow; border:2px solid #c48a00; padding: 5px;color:#000000; font-family:'Courier'; font:bold; font-size:9pt;",
{ "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.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
"loc": [12, 288],
"size": [104, 22],
"text": "CHUMMY",
"icon": "$path/chummy.gif",
"mood": "chummy"
"mood": 0
},
{ "style": "text-align:left; background: yellow; border:2px solid #c48a00; padding: 5px;color:#000000; font-family:'Courier'",
"selected": "text-align:left; background: yellow; border:2px solid #c48a00; padding: 5px;color:#000000; font-family:'Courier'; font: bold; font-size:9pt;",
{ "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.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
"loc": [12, 308],
"size": [104, 22],
"text": "PALSY",
"icon": "$path/chummy.gif",
"mood": "pleasant.gif"
"mood": 3
},
{ "style": "text-align:left; background: yellow; border:2px solid #c48a00; padding: 5px;color:#000000; font-family:'Courier'",
"selected": "text-align:left; background: yellow; border:2px solid #c48a00; padding: 5px;color:#000000; font-family:'Courier';font: bold; font-size:9pt;",
{ "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.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
"loc": [12, 328],
"size": [104, 22],
"text": "CHIPPER",
"icon": "$path/chummy.gif",
"mood": "distraught"
"mood": 4
},
{ "style": "text-align:left; background: yellow; border:2px solid #c48a00; padding: 5px;color:#000000; font-family:'Courier'",
"selected": "text-align:left; background: yellow; border:2px solid #c48a00; padding: 5px;color:#000000; font-family:'Courier'; font-size:9pt; font: bold;",
{ "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.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
"loc": [117, 288],
"size": [104, 22],
"text": "BULLY",
"icon": "$path/chummy.gif",
"mood": "unruly"
"mood": 5
},
{ "style": "text-align:left; background: yellow; border:2px solid #c48a00; padding: 5px;color:#000000; font-family:'Courier'",
"selected": "text-align:left; background: yellow; border:2px solid #c48a00; padding: 5px;color:#000000; font-family:'Courier';font: bold; font-size:9pt;",
{ "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.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
"loc": [117, 308],
"size": [104, 22],
"text": "PEPPY",
"icon": "$path/chummy.gif",
"mood": "smooth"
"mood": 6
},
{ "style": "text-align:left; background: red; border:2px solid #c48a00; padding: 5px;color:#FFFFFF; font-family:'Courier'",
"selected": "text-align:left; background: red; border:2px solid #c48a00; padding: 5px;color:#FFFFFF; font-family:'Courier';font: bold; font-size:9pt;",
{ "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.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
"loc": [117, 328],
"size": [104, 22],
"text": "RANCOROUS",
"icon": "$path/rancorous.gif",
"mood": 1
},
{ "style": "text-align:center; background: black; border:2px solid #c48a00; padding: 5px;color:#646464; font-family:'Courier'",
"selected": "text-align:center; background: black; border:2px solid #c48a00; padding: 5px;color:#646464; font-family:'Courier';font: bold; font-size:9pt;",
{ "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.gif); border:2px solid #c48a00; padding: 5px;color: rgba(0, 0, 0, 0%); font-family:'Courier';",
"loc": [12, 348],
"size": [209, 22],
"text": "ABSCOND",
"icon": "$path/offline.gif",
"icon": "$path/x.gif",
"mood": 2
}
]
@ -133,9 +145,10 @@
"convo":
{"style": "background: #fdb302; border:2px solid yellow; font-family: 'Courier'",
"size": [295, 191],
"chumlabel": { "style": "background: rgb(196, 138, 0);" },
"chumlabel": { "style": "background: rgb(196, 138, 0); color: white; text-align:center;",
"text" : ":: $handle ::" },
"textarea": {
"style": "background: white; font:bold; border:2px solid #c48a00;"
"style": "background: white; font:bold; border:2px solid #c48a00;text-align:center;"
},
"input": {
"style": "background: white; border:2px solid #c48a00;"
@ -144,6 +157,10 @@
"style": "",
"newmsgcolor": "#fdb302",
"tabstyle": 0
},
"text": {
"beganpester": "began pestering",
"ceasepester": "ceased pestering"
}
}

View file

@ -10,9 +10,21 @@
"loc": [255, 0]},
"menubar": { "style": "font-family: 'Courier New'; font-weight: bold; font-size: 12px;" },
"menu" : { "style": "font-family: 'Courier New'; font-weight: bold; font-size: 12px; background-color: #e5000f; border:2px solid #ff0000",
"selected": "background-color: #ff0000"
"selected": "background-color: #ff0000",
"menuitem": "margin-right:10px;",
"loc": [10,0]
},
"sounds": { "alertsound": "$path/alarm.wav" },
"menus": {"client": {"_name": "GRUBBER",
"options": "OPTIONS",
"exit": "ABSCOND"},
"profile": {"_name": "HEMOSPECTRUM",
"switch": "SWITCH",
"theme": "THEME",
"quirks": "ANNOYING"},
"rclickchumlist": {"pester": "TROLL",
"removechum": "REMOVE LOSER"}
},
"chums": { "style": "background-color: black;color: white;font: bold;font-family: 'Courier New';selection-background-color:#ffb6b6; ",
"loc": [20, 65],
"size": [266, 270],
@ -66,7 +78,7 @@
"size": [100, 40],
"text": "TROLL"
},
"defaultmood": "ecstatic",
"defaultmood": 7,
"moodlabel": { "style": "",
"loc": [20, 430],
"text": "MOODS"
@ -78,7 +90,7 @@
"size": [133, 30],
"text": "ECSTATIC",
"icon": "$path/estatic.gif",
"mood": "ecstatic"
"mood": 7
},
{ "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;",
@ -86,7 +98,7 @@
"size": [133, 30],
"text": "RELAXED",
"icon": "$path/relaxed.gif",
"mood": "relaxed"
"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;",
@ -94,7 +106,7 @@
"size": [133, 30],
"text": "DISCONTENT",
"icon": "$path/discontent.gif",
"mood": "discontent"
"mood": 9
},
{ "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;",
@ -102,7 +114,7 @@
"size": [133, 30],
"text": "DEVIOUS",
"icon": "$path/devious.gif",
"mood": "devious"
"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;",
@ -110,7 +122,7 @@
"size": [133, 30],
"text": "SLEEK",
"icon": "$path/sleek.gif",
"mood": "sleek"
"mood": 11
},
{ "style": "text-align:left; background: red; border:3px solid black; padding: 5px;",
"selected": "text-align:left; background: red; border:3px solid black; padding: 5px;font: bold;",
@ -118,7 +130,7 @@
"size": [133, 30],
"text": "DETESTFUL",
"icon": "$path/detestful.gif",
"mood": "detestful"
"mood": 12
},
{ "style": "text-align:center; background: #919191; border:3px solid black; padding: 5px;",
"selected": "text-align:center; background: #919191; border:3px solid black; padding: 5px;font: bold;",
@ -126,14 +138,16 @@
"size": [263, 30],
"text": "ABSCOND",
"icon": "$path/offline.gif",
"mood": "offline"
"mood": 2
}
]
},
"convo":
{"style": "background: #e5000f; font-family: 'Courier New'",
"size": [600, 500],
"chumlabel": { "style": "background: rgba(255, 255, 255, 25%);" },
"chumlabel": { "style": "background: rgba(255, 255, 255, 25%);",
"text" : "trolling $handle"
},
"textarea": {
"style": "background: white;font:bold;"
},
@ -144,6 +158,10 @@
"style": "",
"newmsgcolor": "red",
"tabstyle": 0
},
"text": {
"beganpester": "began trolling",
"ceasepester": "gave up trolling"
}
}