From a5cce9acfcdc2bf7640ed7d8186694f596823dfc Mon Sep 17 00:00:00 2001 From: Kiooeht Date: Tue, 29 Mar 2011 00:02:05 -0700 Subject: [PATCH] Chum groups! --- TODO | 1 - dataobjs.py | 11 +- generic.py | 7 + logviewer.py | 6 +- menus.py | 13 ++ parsetools.py | 6 +- pesterchum.py | 387 +++++++++++++++++++++++++++++++++---- themes/enamel/style.js | 186 +++++++++--------- themes/gold/style.js | 206 ++++++++++---------- themes/pesterchum/style.js | 160 +++++++-------- themes/trollian/style.js | 69 ++++--- themes/typewriter/style.js | 78 ++++---- 12 files changed, 748 insertions(+), 382 deletions(-) diff --git a/TODO b/TODO index 37f539e..6561c8f 100644 --- a/TODO +++ b/TODO @@ -15,7 +15,6 @@ SS: and the arrows next to the time thing overlap the CLOSE button Features: * copy quirks between profiles? * help button on quirks menu? -* chum list groups * More complex quirks: by-sound * Theme checking * Spy mode diff --git a/dataobjs.py b/dataobjs.py index c154228..d6e215d 100644 --- a/dataobjs.py +++ b/dataobjs.py @@ -174,7 +174,7 @@ class pesterQuirks(object): yield q class PesterProfile(object): - def __init__(self, handle, color=None, mood=Mood("offline"), chumdb=None): + def __init__(self, handle, color=None, mood=Mood("offline"), group=None, chumdb=None): self.handle = handle if color is None: if chumdb: @@ -183,6 +183,12 @@ class PesterProfile(object): color = QtGui.QColor("black") self.color = color 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): handle = self.handle caps = [l for l in handle if l.isupper()] @@ -212,7 +218,8 @@ class PesterProfile(object): def plaindict(self): return (self.handle, {"handle": self.handle, "mood": self.mood.name(), - "color": unicode(self.color.name())}) + "color": unicode(self.color.name()), + "group": unicode(self.group)}) def blocked(self, config): return self.handle in config.getBlocklist() diff --git a/generic.py b/generic.py index fd77ad6..2c0f265 100644 --- a/generic.py +++ b/generic.py @@ -37,6 +37,13 @@ class RightClickList(QtGui.QListWidget): self.setCurrentItem(listing) self.optionsMenu.popup(event.globalPos()) +class RightClickTree(QtGui.QTreeWidget): + 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): def __init__(self, title, parent, *queries): QtGui.QDialog.__init__(self, parent) diff --git a/logviewer.py b/logviewer.py index b1c9474..b543731 100644 --- a/logviewer.py +++ b/logviewer.py @@ -3,7 +3,7 @@ import codecs import re from time import strftime, strptime from PyQt4 import QtGui, QtCore -from generic import RightClickList +from generic import RightClickList, RightClickTree from parsetools import convertTags from convo import PesterText @@ -138,7 +138,8 @@ class PesterLogViewer(QtGui.QDialog): self.logList.sort() self.logList.reverse() - self.tree = QtGui.QTreeWidget() + self.tree = RightClickTree() + self.tree.optionsMenu = QtGui.QMenu(self) self.tree.setFixedSize(260, 300) self.tree.header().hide() if theme.has_key("convo/scrollbar"): @@ -148,6 +149,7 @@ class PesterLogViewer(QtGui.QDialog): self.connect(self.tree, QtCore.SIGNAL('itemSelectionChanged()'), self, QtCore.SLOT('loadSelectedLog()')) self.tree.setSortingEnabled(False) + child_1 = None last = ["",""] for (i,l) in enumerate(self.logList): diff --git a/menus.py b/menus.py index e97c06a..514af57 100644 --- a/menus.py +++ b/menus.py @@ -507,6 +507,10 @@ class PesterOptions(QtGui.QDialog): self.theme = theme 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) if self.config.tabs(): self.tabcheck.setChecked(True) @@ -533,6 +537,12 @@ class PesterOptions(QtGui.QDialog): if self.config.showSeconds(): 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.ok = QtGui.QPushButton("OK", self) self.ok.setDefault(True) self.connect(self.ok, QtCore.SIGNAL('clicked()'), @@ -548,6 +558,9 @@ class PesterOptions(QtGui.QDialog): layout_0.addWidget(self.tabcheck) layout_0.addWidget(self.soundcheck) layout_0.addWidget(self.hideOffline) + #layout_0.addWidget(self.groupscheck) + layout_0.addWidget(self.showemptycheck) + layout_0.addWidget(hr) layout_0.addWidget(self.timestampcheck) layout_0.addWidget(self.timestampBox) layout_0.addWidget(self.secondscheck) diff --git a/parsetools.py b/parsetools.py index c70beb7..67f79da 100644 --- a/parsetools.py +++ b/parsetools.py @@ -216,7 +216,7 @@ def timeDifference(td): elif atd < timedelta(0,3600): if minutes == 1: timetext = "%d MINUTE %s" % (minutes, when) - else: + else: timetext = "%d MINUTES %s" % (minutes, when) elif atd < timedelta(0,3600*100): if hours == 1 and leftoverminutes == 0: @@ -235,7 +235,7 @@ def img2smiley(string): return string smiledict = { - ":rancorous:": "pc_rancorous.gif", + ":rancorous:": "pc_rancorous.gif", ":apple:": "apple.gif", ":bathearst:": "bathearst.gif", ":cathearst:": "cathearst.png", @@ -245,7 +245,7 @@ smiledict = { ":blueghost:": "blueslimer.gif", ":slimer:": "slimer.gif", ":candycorn:": "candycorn.gif", - ":cheer:": "cheer.gif", + ":cheer:": "cheer.gif", ":duhjohn:": "confusedjohn.gif", ":datrump:": "datrump.gif", ":facepalm:": "facepalm.gif", diff --git a/pesterchum.py b/pesterchum.py index ae172a9..2e7b2e4 100644 --- a/pesterchum.py +++ b/pesterchum.py @@ -18,7 +18,7 @@ from menus import PesterChooseQuirks, PesterChooseTheme, \ PesterChooseProfile, PesterOptions, PesterUserlist, PesterMemoList, \ LoadingScreen, AboutPesterchum from dataobjs import PesterProfile, Mood, pesterQuirk, pesterQuirks -from generic import PesterIcon, RightClickList, MultiTextDialog, PesterList +from generic import PesterIcon, RightClickList, RightClickTree, MultiTextDialog, PesterList from convo import PesterTabWindow, PesterText, PesterInput, PesterConvo from parsetools import convertTags, addTimeInitial from memos import PesterMemo, MemoTabWindow, TimeTracker @@ -131,7 +131,14 @@ class PesterProfileDB(dict): json.dump(chumdict, fp) fp.close() - converted = dict([(handle, PesterProfile(handle, color=QtGui.QColor(c['color']), mood=Mood(c['mood']))) for (handle, c) in chumdict.iteritems()]) + u = [] + 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) def save(self): @@ -152,6 +159,17 @@ class PesterProfileDB(dict): self[handle].color = color else: 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): dict.__setitem__(self, key, val) self.save() @@ -264,6 +282,18 @@ class userConfig(object): if not self.config.has_key('showSeconds'): self.set("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 addChum(self, chum): if chum.handle not in self.chums(): fp = open(self.filename) # what if we have two clients open?? @@ -291,6 +321,25 @@ class userConfig(object): l = self.getBlocklist() l.pop(l.index(handle)) 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): return self.config.get('server', 'irc.mindfang.org') def port(self): @@ -404,9 +453,9 @@ class WMButton(QtGui.QPushButton): self.setStyleSheet("QPushButton { padding: 0px; }") self.setAutoDefault(False) -class chumListing(QtGui.QListWidgetItem): +class chumListing(QtGui.QTreeWidgetItem): def __init__(self, chum, window): - QtGui.QListWidgetItem.__init__(self, chum.handle) + QtGui.QTreeWidgetItem.__init__(self, [chum.handle]) self.mainwindow = window self.chum = chum self.handle = chum.handle @@ -420,32 +469,44 @@ class chumListing(QtGui.QListWidgetItem): mood = self.chum.mood self.mood = mood icon = self.mood.icon(self.mainwindow.theme) - self.setIcon(icon) + self.setIcon(0, icon) try: - self.setTextColor(QtGui.QColor(self.mainwindow.theme["main/chums/moods"][self.mood.name()]["color"])) + self.setTextColor(0, QtGui.QColor(self.mainwindow.theme["main/chums/moods"][self.mood.name()]["color"])) except KeyError: - self.setTextColor(QtGui.QColor(self.mainwindow.theme["main/chums/moods/chummy/color"])) + self.setTextColor(0, QtGui.QColor(self.mainwindow.theme["main/chums/moods/chummy/color"])) def changeTheme(self, theme): icon = self.mood.icon(theme) - self.setIcon(icon) + self.setIcon(0, icon) try: - self.setTextColor(QtGui.QColor(self.mainwindow.theme["main/chums/moods"][self.mood.name()]["color"])) + self.setTextColor(0, QtGui.QColor(self.mainwindow.theme["main/chums/moods"][self.mood.name()]["color"])) except KeyError: - self.setTextColor(QtGui.QColor(self.mainwindow.theme["main/chums/moods/chummy/color"])) + self.setTextColor(0, QtGui.QColor(self.mainwindow.theme["main/chums/moods/chummy/color"])) def __lt__(self, cl): h1 = self.handle.lower() h2 = cl.handle.lower() return (h1 < h2) -class chumArea(RightClickList): +class chumArea(RightClickTree): def __init__(self, chums, parent=None): - QtGui.QListWidget.__init__(self, parent) + QtGui.QTreeWidget.__init__(self, parent) self.mainwindow = parent theme = self.mainwindow.theme 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(): self.showAllChums() - self.optionsMenu = QtGui.QMenu(self) + if not self.mainwindow.config.showEmptyGroups(): + self.hideEmptyGroups() + 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.connect(self.pester, QtCore.SIGNAL('triggered()'), self, QtCore.SLOT('activateChum()')) @@ -458,13 +519,83 @@ class chumArea(RightClickList): self.logchum = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/viewlog"], self) self.connect(self.logchum, QtCore.SIGNAL('triggered()'), self, QtCore.SLOT('openChumLogs()')) - self.optionsMenu.addAction(self.pester) - self.optionsMenu.addAction(self.logchum) - self.optionsMenu.addAction(self.blockchum) - self.optionsMenu.addAction(self.removechum) + + self.removegroup = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/removegroup"], self) + self.connect(self.removegroup, QtCore.SIGNAL('triggered()'), + self, QtCore.SLOT('removeGroup()')) + self.renamegroup = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/renamegroup"], self) + self.connect(self.renamegroup, QtCore.SIGNAL('triggered()'), + 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.initTheme(theme) - self.sortItems() + #self.sortItems() + #self.sortItems(1, QtCore.Qt.AscendingOrder) + self.setSortingEnabled(False) + self.header().hide() + self.setDropIndicatorShown(False) + self.setIndentation(0) + self.setDragEnabled(True) + 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: + if item.text(0) == "Chums" or item.text(0) in self.groups: + group = item.text(0) + else: + group = item.parent().text(0) + chumLabel = event.source().currentItem() + chumLabel.chum.group = group + self.mainwindow.chumdb.setGroup(chumLabel.chum.handle, group) + self.takeItem(chumLabel) + self.addItem(chumLabel) + + def chumoptionsmenu(self): + self.optionsMenu = self.chumoptions + def groupoptionsmenu(self): + self.optionsMenu = self.groupoptions + def moveGroupMenu(self): + currentGroup = self.currentItem() + if currentGroup: + currentGroup = currentGroup.parent().text(0) + 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) + if self.currentItem().text(0) == "Chums" or \ + self.currentItem().text(0) in self.groups: + self.groupoptionsmenu() + else: + self.chumoptionsmenu() + self.moveGroupMenu() + self.optionsMenu.popup(event.globalPos()) + def addChum(self, chum): if len([c for c in self.chums if c.handle == chum.handle]) != 0: return @@ -473,29 +604,95 @@ class chumArea(RightClickList): chum.mood.name() == "offline"): chumLabel = chumListing(chum, self.mainwindow) self.addItem(chumLabel) - self.sortItems() + #self.topLevelItem(0).addChild(chumLabel) + #self.topLevelItem(0).sortChildren(0, QtCore.Qt.AscendingOrder) def getChums(self, handle): - chums = self.findItems(handle, QtCore.Qt.MatchFlags(0)) + chums = self.findItems(handle, QtCore.Qt.MatchContains | QtCore.Qt.MatchRecursive) return chums def showAllChums(self): for c in self.chums: chandle = c.handle - if not self.findItems(chandle, QtCore.Qt.MatchFlags(0)): + if not len(self.findItems(chandle, QtCore.Qt.MatchContains | QtCore.Qt.MatchRecursive)): chumLabel = chumListing(c, self.mainwindow) self.addItem(chumLabel) - self.sortItems() + #self.sortItems() 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()): + curgroups.append(self.topLevelItem(i).text(0)) + 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 hideEmptyGroups(self): i = 0 - listing = self.item(i) + listing = self.topLevelItem(i) while listing is not None: - if listing.chum.mood.name() == "offline": - self.takeItem(i) + if listing.childCount() == 0: + self.takeTopLevelItem(i) else: i += 1 - listing = self.item(i) - self.sortItems() + listing = self.topLevelItem(i) + @QtCore.pyqtSlot() + def expandGroup(self): + item = self.currentItem() + if item.text(0) in self.groups: + self.mainwindow.config.delGroup(str(item.text(0))) + expand = item.isExpanded() + self.mainwindow.config.addGroup(str(item.text(0)), not expand) + elif item.text(0) == "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: + 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.MatchFlags(0)): + 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()): + if self.topLevelItem(i).text(0) == 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): hideoff = self.mainwindow.config.hideOfflineChums() chums = self.getChums(handle) @@ -506,7 +703,7 @@ class chumArea(RightClickList): handle in [p.handle for p in self.chums]: newLabel = chumListing([p for p in self.chums if p.handle == handle][0], self.mainwindow) self.addItem(newLabel) - self.sortItems() + #self.sortItems() chums = [newLabel] elif mood.name() == "offline" and \ len(chums) > 0: @@ -532,14 +729,27 @@ class chumArea(RightClickList): self.removechum.setText(theme["main/menus/rclickchumlist/removechum"]) self.blockchum.setText(theme["main/menus/rclickchumlist/blockchum"]) 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): self.initTheme(theme) - chumlistings = [self.item(i) for i in range(0, self.count())] + chumlistings = [] + 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: c.changeTheme(theme) + + def count(self): + c = 0 + for i in range(self.topLevelItemCount()): + c = c + self.topLevelItem(i).childCount() + return c @QtCore.pyqtSlot() def activateChum(self): - self.itemActivated.emit(self.currentItem()) + self.itemActivated.emit(self.currentItem(), 0) @QtCore.pyqtSlot() def removeChum(self, handle = None): if handle: @@ -551,7 +761,7 @@ class chumArea(RightClickList): currentChum = self.currentItem().chum self.chums = [c for c in self.chums if c.handle != currentChum.handle] self.removeChumSignal.emit(self.currentItem().chum.handle) - oldlist = self.takeItem(self.currentRow()) + oldlist = self.takeItem(self.currentItem()) del oldlist @QtCore.pyqtSlot() def blockChum(self): @@ -561,7 +771,7 @@ class chumArea(RightClickList): self.blockChumSignal.emit(self.currentItem().chum.handle) @QtCore.pyqtSlot() def openChumLogs(self): - currentChum = self.currentItem().text() + currentChum = self.currentItem().text(0) if not currentChum: return self.pesterlogviewer = PesterLogViewer(currentChum, self.mainwindow.config, self.mainwindow.theme, self.mainwindow) @@ -574,6 +784,61 @@ class chumArea(RightClickList): def closeActiveLog(self): self.pesterlogviewer.close() self.pesterlogviewer = None + @QtCore.pyqtSlot() + def renameGroup(self): + if not hasattr(self, 'renamegroupdialog'): + self.renamegroupdialog = None + if not self.renamegroupdialog: + (gname, ok) = QtGui.QInputDialog.getText(self, "Rename Group", "Enter a new name for the group:") + if ok: + gname = unicode(gname) + currentGroup = self.currentItem() + if not currentGroup: + return + index = self.indexOfTopLevelItem(currentGroup) + if index != -1: + expanded = currentGroup.isExpanded() + self.mainwindow.config.delGroup(str(currentGroup.text(0))) + 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) + self.renamegroupdialog = None + @QtCore.pyqtSlot() + def removeGroup(self): + currentGroup = self.currentItem() + if not currentGroup: + return + self.mainwindow.config.delGroup(currentGroup.text(0)) + 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).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) + def moveToGroup(self, item): + if not item: + return + 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) blockChumSignal = QtCore.pyqtSignal(QtCore.QString) @@ -585,19 +850,34 @@ class trollSlum(chumArea): theme = self.mainwindow.theme self.setStyleSheet(theme["main/trollslum/chumroll/style"]) self.chums = trolls + child_1 = QtGui.QTreeWidgetItem([""]) + self.addTopLevelItem(child_1) + child_1.setExpanded(True) for c in self.chums: chandle = c.handle if not self.findItems(chandle, QtCore.Qt.MatchFlags(0)): chumLabel = chumListing(c, self.mainwindow) self.addItem(chumLabel) + self.setSortingEnabled(False) + self.header().hide() + self.setDropIndicatorShown(False) + self.setIndentation(0) + self.optionsMenu = QtGui.QMenu(self) self.unblockchum = QtGui.QAction(self.mainwindow.theme["main/menus/rclickchumlist/unblockchum"], self) self.connect(self.unblockchum, QtCore.SIGNAL('triggered()'), self, QtCore.SIGNAL('unblockChumSignal()')) 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): self.setStyleSheet(theme["main/trollslum/chumroll/style"]) self.removechum.setText(theme["main/menus/rclickchumlist/removechum"]) @@ -815,6 +1095,10 @@ class PesterWindow(MovingWindow): self.logv = logv self.connect(logv, QtCore.SIGNAL('triggered()'), 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) self.opts = opts self.connect(opts, QtCore.SIGNAL('triggered()'), @@ -851,6 +1135,7 @@ class PesterWindow(MovingWindow): filemenu.addAction(logv) filemenu.addAction(userlistaction) filemenu.addAction(self.idleaction) + filemenu.addAction(grps) filemenu.addAction(self.importaction) filemenu.addAction(self.reconnectAction) filemenu.addAction(exitaction) @@ -911,7 +1196,7 @@ class PesterWindow(MovingWindow): 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 *)'), + QtCore.SIGNAL('itemActivated(QTreeWidgetItem *, int)'), self, QtCore.SLOT('pesterSelectedChum()')) self.connect(self.chumList, @@ -1147,6 +1432,7 @@ class PesterWindow(MovingWindow): # menus self.menu.move(*theme["main/menu/loc"]) 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.exitaction.setText(theme["main/menus/client/exit"]) self.userlistaction.setText(theme["main/menus/client/userlist"]) @@ -1301,7 +1587,9 @@ class PesterWindow(MovingWindow): def pesterSelectedChum(self): curChum = self.chumList.currentItem() if curChum: - self.newConversationWindow(curChum) + if curChum.text(0) not in self.chumList.groups and \ + curChum.text(0) != "Chums": + self.newConversationWindow(curChum) @QtCore.pyqtSlot(QtGui.QListWidgetItem) def newConversationWindow(self, chumlisting): # check chumdb @@ -1642,6 +1930,25 @@ class PesterWindow(MovingWindow): def closeLogUsers(self): self.logusermenu.close() 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() def openOpts(self): if not hasattr(self, 'optionmenu'): @@ -1723,6 +2030,16 @@ class PesterWindow(MovingWindow): self.config.set("time12Format", False) secondssetting = self.optionmenu.secondscheck.isChecked() 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) self.optionmenu = None @QtCore.pyqtSlot() diff --git a/themes/enamel/style.js b/themes/enamel/style.js index 07f8b06..6536989 100644 --- a/themes/enamel/style.js +++ b/themes/enamel/style.js @@ -20,9 +20,10 @@ "memos": "Memos", "logviewer": "Pesterlogs", "userlist": "Userlist", + "addgroup": "Add Group", "import": "Import", "reconnect": "Reconnect", - "idle": "Idle", + "idle": "Idle", "exit": "Exit"}, "profile": {"_name": "Profile", "switch": "Switch", @@ -38,6 +39,9 @@ "addchum": "Add Chum", "viewlog": "View Pesterlog", "unblockchum": "Unblock", + "removegroup": "Remove Group", + "renamegroup": "Rename Group", + "movechum": "Move To", "banuser": "Ban User", "opuser": "Make OP", "quirksoff": "Quirks Off" @@ -54,7 +58,7 @@ "loc": [440, 211], "size": [289, 275], "userlistcolor": "black", - "moods": { + "moods": { "chummy": { "icon": "$path/chummy.gif", "color": "black" }, @@ -62,7 +66,7 @@ "offline": { "icon": "$path/offline.gif", "color": "#9d9d9d"}, - + "pleasant": { "icon": "$path/pleasant.gif", "color": "black" }, "distraught": { "icon": "$path/distraught.gif", "color": "black" }, @@ -90,7 +94,7 @@ "devious": { "icon": "$path/devious.gif", "color": "red" }, "sleek": { "icon": "$path/sleek.gif", "color": "red" }, - + "detestful": { "icon": "$path/detestful.gif", "color": "red" }, "mirthful": { "icon": "$path/mirthful.gif", "color": "red" }, @@ -109,7 +113,7 @@ } }, - "trollslum": { + "trollslum": { "style": "background: #fdb302; border:2px solid yellow; font-family: 'Century Gothic'", "size": [195, 200], "label": { "text": "TROLLSLUM", @@ -127,7 +131,7 @@ "text": "" }, "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%);", "loc": [443,144], @@ -147,82 +151,82 @@ }, "defaultmood": 0, "moodlabel": { "style": "", - "loc": [20, 430], - "text": "" - }, + "loc": [20, 430], + "text": "" + }, "moods": [ - { "style": "background-image:url($path/mood1.png); border:0px;", - "selected": "background-image:url($path/mood1c.png); border:0px;", - "loc": [0, 258], - "size": [100,110], - "text": "", - "icon": "", - "mood": 0 - }, - { "style": "background-image:url($path/mood2.png); border:0px;", - "selected": "background-image:url($path/mood2c.png); border:0px;", - "loc": [106, 258], - "size": [100, 110], - "text": "", - "icon": "", - "mood": 19 - }, - { "style": "background-image:url($path/mood3.png); border:0px;", - "selected": "background-image:url($path/mood3c.png); border:0px;", - "loc": [212, 258], - "size": [100, 110], - "text": "", - "icon": "", - "mood": 22 - }, - { "style": "background-image:url($path/mood4.png); border:0px;", - "selected": "background-image:url($path/mood4c.png); border:0px;", - "loc": [318, 258], - "size": [100, 110], - "text": "", - "icon": "", - "mood": 4 - }, - { "style": "background-image:url($path/mood5.png); border:0px;", - "selected": "background-image:url($path/mood5c.png); border:0px;", - "loc": [0, 382], - "size": [100, 110], - "text": "", - "icon": "", - "mood": 3 - }, - { "style": "background-image:url($path/mood6.png); border:0px;", - "selected": "background-image:url($path/mood6c.png); border:0px;", - "loc": [106, 382], - "size": [100, 110], - "text": "", - "icon": "", - "mood": 20 - }, - { "style": "background-image:url($path/mood7.png); border:0px;", - "selected": "background-image:url($path/mood7c.png); border:0px;", - "loc": [212, 382], - "size": [100, 110], - "text": "", - "icon": "", - "mood": 5 - }, - { "style": "background-image:url($path/mood8.png); border:0px;", - "selected": "background-image:url($path/mood8c.png); border:0px;", - "loc": [318, 382], - "size": [100, 110], - "text": "", - "icon": "", - "mood": 1 - }, - { "style": "border:0px;", - "selected": "border:0px;", - "loc": [0, 0], - "size": [100, 100], - "text": "", - "icon": "", - "mood": 2 - } + { "style": "background-image:url($path/mood1.png); border:0px;", + "selected": "background-image:url($path/mood1c.png); border:0px;", + "loc": [0, 258], + "size": [100,110], + "text": "", + "icon": "", + "mood": 0 + }, + { "style": "background-image:url($path/mood2.png); border:0px;", + "selected": "background-image:url($path/mood2c.png); border:0px;", + "loc": [106, 258], + "size": [100, 110], + "text": "", + "icon": "", + "mood": 19 + }, + { "style": "background-image:url($path/mood3.png); border:0px;", + "selected": "background-image:url($path/mood3c.png); border:0px;", + "loc": [212, 258], + "size": [100, 110], + "text": "", + "icon": "", + "mood": 22 + }, + { "style": "background-image:url($path/mood4.png); border:0px;", + "selected": "background-image:url($path/mood4c.png); border:0px;", + "loc": [318, 258], + "size": [100, 110], + "text": "", + "icon": "", + "mood": 4 + }, + { "style": "background-image:url($path/mood5.png); border:0px;", + "selected": "background-image:url($path/mood5c.png); border:0px;", + "loc": [0, 382], + "size": [100, 110], + "text": "", + "icon": "", + "mood": 3 + }, + { "style": "background-image:url($path/mood6.png); border:0px;", + "selected": "background-image:url($path/mood6c.png); border:0px;", + "loc": [106, 382], + "size": [100, 110], + "text": "", + "icon": "", + "mood": 20 + }, + { "style": "background-image:url($path/mood7.png); border:0px;", + "selected": "background-image:url($path/mood7c.png); border:0px;", + "loc": [212, 382], + "size": [100, 110], + "text": "", + "icon": "", + "mood": 5 + }, + { "style": "background-image:url($path/mood8.png); border:0px;", + "selected": "background-image:url($path/mood8c.png); border:0px;", + "loc": [318, 382], + "size": [100, 110], + "text": "", + "icon": "", + "mood": 1 + }, + { "style": "border:0px;", + "selected": "border:0px;", + "loc": [0, 0], + "size": [100, 100], + "text": "", + "icon": "", + "mood": 2 + } ] }, "convo": @@ -230,7 +234,7 @@ "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;", "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);", "uparrow": "height:17px;border:0px solid #c48a00;", "uarrowstyle": "image:url($path/uparrow.png);" @@ -258,12 +262,12 @@ "ceasepester": "ceased pestering", "blocked": "blocked", "unblocked": "unblocked", - "blockedmsg": "did not receive message from", + "blockedmsg": "did not receive message from", "openmemo": "opened memo on board", "joinmemo": "responded to memo", "closememo": "ceased responding to memo", "kickedmemo": "You have been banned from this memo!", - "idle": "is now an idle chum!" + "idle": "is now an idle chum!" }, "systemMsgColor": "#646464" }, @@ -278,7 +282,7 @@ }, "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;", - "downarrow": "height:17px;border:0px;", + "downarrow": "height:17px;border:0px;", "darrowstyle": "image:url();", "uparrow": "height:17px;border:0px;", "uarrowstyle": "image:url();" @@ -295,20 +299,20 @@ "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;" }, - "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;" + "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;" }, "slider": { "style": "border: 0px;", "groove": "", "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;" }, - "arrows": { "left": "$path/leftarrow.png", + "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", "right": "$path/rightarrow.png", - "style": " border:0px; margin-top: 5px; margin-right:10px;" + "style": " border:0px; margin-top: 5px; margin-right:10px;" } }, "systemMsgColor": "#646464", "op": { "icon": "$path/smooth.png" } } -} \ No newline at end of file +} diff --git a/themes/gold/style.js b/themes/gold/style.js index c7fb706..d5cefa4 100644 --- a/themes/gold/style.js +++ b/themes/gold/style.js @@ -16,15 +16,16 @@ "loc": [150,22] }, "sounds": { "alertsound": "$path/alarm.wav", - "ceasesound": "$path/cease.wav" }, + "ceasesound": "$path/cease.wav" }, "menus": {"client": {"_name": "Client", "options": "Options", "memos": "Memos", "logviewer": "Pesterlogs", "userlist": "Userlist", + "addgroup": "Add Group", "import": "Import", - "reconnect": "Reconnect", - "idle": "Idle", + "reconnect": "Reconnect", + "idle": "Idle", "exit": "Exit"}, "profile": {"_name": "Profile", "switch": "Switch", @@ -40,6 +41,9 @@ "addchum": "Add Chum", "viewlog": "View Pesterlog", "unblockchum": "Unblock", + "removegroup": "Remove Group", + "renamegroup": "Rename Group", + "movechum": "Move To", "banuser": "Ban User", "opuser": "Make OP", "quirksoff": "Quirks Off" @@ -49,7 +53,7 @@ "loc": [123, 88], "size": [190, 65], "userlistcolor": "white", - "moods": { + "moods": { "chummy": { "icon": "$path/chummy.png", "color": "white" }, @@ -57,7 +61,7 @@ "offline": { "icon": "$path/offline.png", "color": "#bebebe"}, - + "pleasant": { "icon": "$path/pleasant.png", "color": "white" }, "distraught": { "icon": "$path/distraught.png", "color": "white" }, @@ -85,7 +89,7 @@ "devious": { "icon": "$path/devious.png", "color": "red" }, "sleek": { "icon": "$path/sleek.png", "color": "red" }, - + "detestful": { "icon": "$path/detestful.png", "color": "red" }, "mirthful": { "icon": "$path/mirthful.png", "color": "red" }, @@ -104,7 +108,7 @@ } }, - "trollslum": { + "trollslum": { "style": "background: #fdb302; border:2px solid yellow; font-family: 'Arial'", "size": [195, 200], "label": { "text": "TROLLSLUM", @@ -122,7 +126,7 @@ "text": "" }, "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%);", "loc": [25,0], @@ -142,90 +146,90 @@ }, "defaultmood": 0, "moodlabel": { "style": "", - "loc": [20, 430], - "text": "MOODS" - }, + "loc": [20, 430], + "text": "MOODS" + }, "moods": [ - { "style": "border:0px;", - "selected": "background-image:url($path/moodcheck1.png); border:0px;", - "loc": [13, 204], - "size": [101, 27], - "text": "", - "icon": "", - "mood": 0 - }, - { "style": "border:0px;", - "selected": "background-image:url($path/moodcheck2.png); border:0px;", - "loc": [13, 231], - "size": [101, 27], - "text": "", - "icon": "", - "mood": 19 - }, - { "style": "border:0px;", - "selected": "background-image:url($path/moodcheck3.png); border:0px;", - "loc": [13, 258], - "size": [101, 27], - "text": "", - "icon": "", - "mood": 20 - }, - { "style": "border:0px;", - "selected": "background-image:url($path/moodcheck4.png); border:0px;", - "loc": [116, 204], - "size": [101, 27], - "text": "", - "icon": "", - "mood": 21 - }, - { "style": "border:0px;", - "selected": "background-image:url($path/moodcheck5.png); border:0px;", - "loc": [116, 231], - "size": [101, 27], - "text": "", - "icon": "", - "mood": 22 - }, - { "style": "border:0px;", - "selected": "background-image:url($path/moodcheck6.png); border:0px;", - "loc": [116, 258], - "size": [101, 27], - "text": "", - "icon": "", - "mood": 5 - }, - { "style": "border:0px;", - "selected": "background-image:url($path/moodcheck7.png); border:0px;", - "loc": [219, 204], - "size": [101, 27], - "text": "", - "icon": "", - "mood": 6 - }, - { "style": "border:0px;", - "selected": "background-image:url($path/moodcheck8.png); border:0px;", - "loc": [219, 231], - "size": [101, 27], - "text": "", - "icon": "", - "mood": 3 - }, - { "style": "border:0px;", - "selected": "background-image:url($path/moodcheck9.png); border:0px;", - "loc": [219, 258], - "size": [101, 27], - "text": "", - "icon": "", - "mood": 1 - }, - { "style": "border:0px;", - "selected": "border:0px;", - "loc": [13, 175], - "size": [101, 27], - "text": "", - "icon": "", - "mood": 2 - } + { "style": "border:0px;", + "selected": "background-image:url($path/moodcheck1.png); border:0px;", + "loc": [13, 204], + "size": [101, 27], + "text": "", + "icon": "", + "mood": 0 + }, + { "style": "border:0px;", + "selected": "background-image:url($path/moodcheck2.png); border:0px;", + "loc": [13, 231], + "size": [101, 27], + "text": "", + "icon": "", + "mood": 19 + }, + { "style": "border:0px;", + "selected": "background-image:url($path/moodcheck3.png); border:0px;", + "loc": [13, 258], + "size": [101, 27], + "text": "", + "icon": "", + "mood": 20 + }, + { "style": "border:0px;", + "selected": "background-image:url($path/moodcheck4.png); border:0px;", + "loc": [116, 204], + "size": [101, 27], + "text": "", + "icon": "", + "mood": 21 + }, + { "style": "border:0px;", + "selected": "background-image:url($path/moodcheck5.png); border:0px;", + "loc": [116, 231], + "size": [101, 27], + "text": "", + "icon": "", + "mood": 22 + }, + { "style": "border:0px;", + "selected": "background-image:url($path/moodcheck6.png); border:0px;", + "loc": [116, 258], + "size": [101, 27], + "text": "", + "icon": "", + "mood": 5 + }, + { "style": "border:0px;", + "selected": "background-image:url($path/moodcheck7.png); border:0px;", + "loc": [219, 204], + "size": [101, 27], + "text": "", + "icon": "", + "mood": 6 + }, + { "style": "border:0px;", + "selected": "background-image:url($path/moodcheck8.png); border:0px;", + "loc": [219, 231], + "size": [101, 27], + "text": "", + "icon": "", + "mood": 3 + }, + { "style": "border:0px;", + "selected": "background-image:url($path/moodcheck9.png); border:0px;", + "loc": [219, 258], + "size": [101, 27], + "text": "", + "icon": "", + "mood": 1 + }, + { "style": "border:0px;", + "selected": "border:0px;", + "loc": [13, 175], + "size": [101, 27], + "text": "", + "icon": "", + "mood": 2 + } ] }, "convo": @@ -233,7 +237,7 @@ "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;", "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);", "uparrow": "height:17px;border:0px solid #c48a00;", "uarrowstyle": "image:url($path/uparrow.png);" @@ -263,12 +267,12 @@ "ceasepester": "ceased pestering", "blocked": "blocked", "unblocked": "unblocked", - "blockedmsg": "did not receive message from", + "blockedmsg": "did not receive message from", "openmemo": "opened memo on board", "joinmemo": "responded to memo", "closememo": "ceased responding to memo", "kickedmemo": "You have been banned from this memo!", - "idle": "is now an idle chum!" + "idle": "is now an idle chum!" }, "systemMsgColor": "#646464" }, @@ -284,7 +288,7 @@ }, "scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: rgba(255, 255, 0, 0%); border:0px;", "handle": "background-color:#c48a00;min-height:20px;", - "downarrow": "height:17px;border:0px solid #c48a00;", + "downarrow": "height:17px;border:0px solid #c48a00;", "darrowstyle": "image:url($path/downarrow.png);", "uparrow": "height:17px;border:0px solid #c48a00;", "uarrowstyle": "image:url($path/uparrow.png);" @@ -301,20 +305,20 @@ "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;" }, - "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;" + "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;" }, "slider": { "style": "border: 0px;", "groove": "", "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;" }, - "arrows": { "left": "$path/leftarrow.png", + "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", "right": "$path/rightarrow.png", - "style": " border:0px; margin-top: 5px; margin-right:10px;" + "style": " border:0px; margin-top: 5px; margin-right:10px;" } }, "systemMsgColor": "#646464", "op": { "icon": "$path/smooth.png" } } -} \ No newline at end of file +} diff --git a/themes/pesterchum/style.js b/themes/pesterchum/style.js index eb6e9db..e000af4 100644 --- a/themes/pesterchum/style.js +++ b/themes/pesterchum/style.js @@ -16,15 +16,16 @@ "loc": [10,0] }, "sounds": { "alertsound": "$path/alarm.wav", - "ceasesound": "$path/cease.wav" }, + "ceasesound": "$path/cease.wav" }, "menus": {"client": {"_name": "CLIENT", "options": "OPTIONS", "memos": "MEMOS", "logviewer": "PESTERLOGS", "userlist": "USERLIST", + "addgroup": "ADD GROUP", "import": "IMPORT", "reconnect": "RECONNECT", - "idle": "IDLE", + "idle": "IDLE", "exit": "EXIT"}, "profile": {"_name": "PROFILE", "switch": "SWITCH", @@ -40,6 +41,9 @@ "addchum": "ADD CHUM", "viewlog": "VIEW PESTERLOG", "unblockchum": "UNBLOCK", + "removegroup": "REMOVE GROUP", + "renamegroup": "RENAME GROUP", + "movechum": "MOVE TO", "banuser": "BAN USER", "opuser": "MAKE OP", "quirksoff": "QUIRKS OFF" @@ -49,7 +53,7 @@ "loc": [12, 117], "size": [209, 82], "userlistcolor": "white", - "moods": { + "moods": { "chummy": { "icon": "$path/chummy.png", "color": "white" }, @@ -57,7 +61,7 @@ "offline": { "icon": "$path/offline.png", "color": "#646464"}, - + "pleasant": { "icon": "$path/pleasant.png", "color": "white" }, "distraught": { "icon": "$path/distraught.png", "color": "white" }, @@ -85,7 +89,7 @@ "devious": { "icon": "$path/devious.png", "color": "red" }, "sleek": { "icon": "$path/sleek.png", "color": "red" }, - + "detestful": { "icon": "$path/detestful.png", "color": "red" }, "mirthful": { "icon": "$path/mirthful.png", "color": "red" }, @@ -104,7 +108,7 @@ } }, - "trollslum": { + "trollslum": { "style": "background: #fdb302; border:2px solid yellow; font-family: 'Courier'", "size": [195, 200], "label": { "text": "TROLLSLUM", @@ -122,7 +126,7 @@ "text": "" }, "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';", "pressed" : "background: rgb(255, 255, 255, 30%);", @@ -136,7 +140,7 @@ "size": [71, 22], "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%);", "loc": [81,202], "size": [71, 22], @@ -144,73 +148,73 @@ }, "defaultmood": 0, "moodlabel": { "style": "", - "loc": [20, 430], - "text": "MOODS" - }, + "loc": [20, 430], + "text": "MOODS" + }, "moods": [ - { "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';", - "loc": [12, 288], - "size": [104, 22], - "text": "CHUMMY", - "icon": "$path/chummy.png", - "mood": 0 - }, - { "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';", - "loc": [12, 308], - "size": [104, 22], - "text": "PALSY", - "icon": "$path/chummy.png", - "mood": 3 - }, - { "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';", - "loc": [12, 328], - "size": [104, 22], - "text": "CHIPPER", - "icon": "$path/chummy.png", - "mood": 4 - }, - { "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';", - "loc": [117, 288], - "size": [104, 22], - "text": "BULLY", - "icon": "$path/chummy.png", - "mood": 5 - }, - { "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';", - "loc": [117, 308], - "size": [104, 22], - "text": "PEPPY", - "icon": "$path/chummy.png", - "mood": 6 - }, - { "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';", - "loc": [117, 328], - "size": [104, 22], - "text": "RANCOROUS", - "icon": "$path/rancorous.png", - "mood": 1 - }, - { "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';", - "loc": [12, 348], - "size": [209, 22], - "text": "ABSCOND", - "icon": "", - "mood": 2 - } + { "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';", + "loc": [12, 288], + "size": [104, 22], + "text": "CHUMMY", + "icon": "$path/chummy.png", + "mood": 0 + }, + { "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';", + "loc": [12, 308], + "size": [104, 22], + "text": "PALSY", + "icon": "$path/chummy.png", + "mood": 3 + }, + { "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';", + "loc": [12, 328], + "size": [104, 22], + "text": "CHIPPER", + "icon": "$path/chummy.png", + "mood": 4 + }, + { "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';", + "loc": [117, 288], + "size": [104, 22], + "text": "BULLY", + "icon": "$path/chummy.png", + "mood": 5 + }, + { "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';", + "loc": [117, 308], + "size": [104, 22], + "text": "PEPPY", + "icon": "$path/chummy.png", + "mood": 6 + }, + { "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';", + "loc": [117, 328], + "size": [104, 22], + "text": "RANCOROUS", + "icon": "$path/rancorous.png", + "mood": 1 + }, + { "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';", + "loc": [12, 348], + "size": [209, 22], + "text": "ABSCOND", + "icon": "", + "mood": 2 + } ] }, "convo": {"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;", "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);", "uparrow": "height:17px;border:0px solid #c48a00;", "uarrowstyle": "image:url($path/uparrow.png);" @@ -230,7 +234,7 @@ "style": "background: white; border:2px solid #c48a00;margin-top:5px; margin-right:10px; margin-left:10px; font-size: 12px;font-family: 'Courier'" }, "tabwindow" : { - "style": "background-color:#fdb302;border:0px" + "style": "background-color:#fdb302;border:0px" }, "tabs": { "style": "background-color: #7f7f7f; font-family: 'Courier';font:bold;font-size:12px;min-height:25px;", @@ -243,12 +247,12 @@ "ceasepester": "ceased pestering", "blocked": "blocked", "unblocked": "unblocked", - "blockedmsg": "did not receive message from", + "blockedmsg": "did not receive message from", "openmemo": "opened memo on board", "joinmemo": "responded to memo", "closememo": "ceased responding to memo", "kickedmemo": "You have been banned from this memo!", - "idle": "is now an idle chum!" + "idle": "is now an idle chum!" }, "systemMsgColor": "#646464" }, @@ -264,7 +268,7 @@ }, "scrollbar": { "style" : "padding-top:17px; padding-bottom:17px;width: 18px; background: rgba(255, 255, 0, 0%); border:0px;", "handle": "background-color:#c48a00;min-height:20px;", - "downarrow": "height:17px;border:0px solid #c48a00;", + "downarrow": "height:17px;border:0px solid #c48a00;", "darrowstyle": "image:url($path/downarrow.png);", "uparrow": "height:17px;border:0px solid #c48a00;", "uarrowstyle": "image:url($path/uparrow.png);" @@ -281,20 +285,20 @@ "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;" }, - "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;" + "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;" }, "slider": { "style": "border: 0px;", "groove": "", "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;" }, - "arrows": { "left": "$path/leftarrow.png", + "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", "right": "$path/rightarrow.png", - "style": " border:0px; margin-top: 5px; margin-right:10px;" + "style": " border:0px; margin-top: 5px; margin-right:10px;" } }, "systemMsgColor": "#646464", "op": { "icon": "$path/op.png" } } -} \ No newline at end of file +} diff --git a/themes/trollian/style.js b/themes/trollian/style.js index 0ec8137..86f4902 100644 --- a/themes/trollian/style.js +++ b/themes/trollian/style.js @@ -21,8 +21,10 @@ "memos": "Memos", "logviewer": "Pesterlogs", "userlist": "Fresh Targets", + "addgroup": "Add Group", "import": "import U2;", - "idle": "Idle", + "reconnect": "Reconnect", + "idle": "Idle", "exit": "Abscond"}, "profile": {"_name": "View", "switch": "Trolltag", @@ -38,6 +40,9 @@ "addchum": "Add Chump", "viewlog": "View Pesterlog", "unblockchum": "Mercy", + "removegroup": "Remove Group", + "renamegroup": "Rename Group", + "movechum": "Move To", "banuser": "Ban", "opuser": "Promote", "quirksoff": "Quirks Off" } @@ -54,50 +59,50 @@ "size": [171, 357], "userlistcolor": "black", "moods": { - + "chummy": { "icon": "$path/chummy.png", "color": "#63ea00" }, - + "rancorous": { "icon": "$path/rancorous.png", "color": "#7f7f7f" }, - + "offline": { "icon": "$path/offline.png", "color": "black"}, - - + + "pleasant": { "icon": "$path/pleasant.png", "color": "#d69df8" }, - + "distraught": { "icon": "$path/distraught.png", "color": "#706eba" }, - + "pranky": { "icon": "$path/pranky.png", "color": "blue" }, - - + + "smooth": { "icon": "$path/smooth.png", "color": "red" }, - - + + "ecstatic": { "icon": "$path/ecstatic.png", "color": "#99004d" }, - + "relaxed": { "icon": "$path/relaxed.png", "color": "#078446" }, - + "discontent": { "icon": "$path/discontent.png", "color": "#a75403" }, - + "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" }, - + "blocked": { "icon": "$path/blocked.png", "color": "black" } - + } }, "trollslum": { @@ -236,7 +241,7 @@ "icon": "", "mood": 7 }, - + { "style": "border:0px;color: rgba(0, 0, 0, 0%);", "selected": "border:0px; color: rgba(0, 0, 0, 0%);", "loc": [12, 117], @@ -266,7 +271,7 @@ "style": "background: white;margin-top:5px; border:1px solid #c2c2c2; margin-right: 54px; font-size: 12px; height: 19px;" }, "tabwindow" : { - "style": "background: rgb(190, 19, 4); font-family: 'Arial'" + "style": "background: rgb(190, 19, 4); font-family: 'Arial'" }, "tabs": { "style": "", @@ -312,15 +317,15 @@ "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);" }, - "time": { "text": { "width": 75, - "style": "color: black; font:bold; border:1px solid #c2c2c2; background: white; height: 19px;" + "time": { "text": { "width": 75, + "style": "color: black; font:bold; border:1px solid #c2c2c2; background: white; height: 19px;" }, "slider": { "style": " border:1px solid #c2c2c2;", "groove": "border-image:url($path/timeslider.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;" }, - "arrows": { "left": "$path/leftarrow.png", + "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", "right": "$path/rightarrow.png", "style": "width: 19px; height: 19px; border:0px; margin-left: 2px;" } @@ -328,4 +333,4 @@ "systemMsgColor": "#646464", "op": { "icon": "$path/op.png" } } -} \ No newline at end of file +} diff --git a/themes/typewriter/style.js b/themes/typewriter/style.js index d141d74..996c106 100644 --- a/themes/typewriter/style.js +++ b/themes/typewriter/style.js @@ -16,15 +16,16 @@ "loc": [43,220] }, "sounds": { "alertsound": "$path/alarm.wav", - "ceasesound": "$path/cease.wav" }, + "ceasesound": "$path/cease.wav" }, "menus": {"client": {"_name": "Typewriter", "options": "Preferences", "memos": "Bulletin Boards", "logviewer": "Pesterlogs", "userlist": "Userlist", + "addgroup": "Add Group", "import": "Import", - "idle": "Idle", - "reconnect": "Reconnect", + "idle": "Idle", + "reconnect": "Reconnect", "exit": "Cease"}, "profile": {"_name": "Ink", "switch": "Alias", @@ -40,6 +41,9 @@ "addchum": "Add User", "viewlog": "View Pesterlog", "unblockchum": "Forgive", + "removegroup": "Remove Group", + "renamegroup": "Rename Group", + "movechum": "Move To", "banuser": "Expel User", "opuser": "Promote", "quirksoff": "Quirks Off" @@ -49,7 +53,7 @@ "loc": [70, 20], "size": [175,100], "userlistcolor": "black", - "moods": { + "moods": { "chummy": { "icon": "$path/chummy.png", "color": "black" }, @@ -57,7 +61,7 @@ "offline": { "icon": "$path/offline.png", "color": "#646464"}, - + "pleasant": { "icon": "$path/pleasant.png", "color": "black" }, "distraught": { "icon": "$path/distraught.png", "color": "black" }, @@ -85,7 +89,7 @@ "devious": { "icon": "$path/devious.png", "color": "red" }, "sleek": { "icon": "$path/sleek.png", "color": "red" }, - + "detestful": { "icon": "$path/detestful.png", "color": "red" }, "mirthful": { "icon": "$path/mirthful.png", "color": "red" }, @@ -104,7 +108,7 @@ } }, - "trollslum": { + "trollslum": { "style": "background: #bebebe; border:2px solid black; font-family: 'Courier'", "size": [195, 200], "label": { "text": "Ruffians", @@ -122,7 +126,7 @@ "text": "" }, "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';", "pressed" : "background: rgb(255, 255, 255, 30%);", @@ -136,7 +140,7 @@ "size": [70, 15], "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%);", "loc": [0,0], "size": [0, 0], @@ -144,26 +148,26 @@ }, "defaultmood": 18, "moodlabel": { "style": "", - "loc": [20, 430], - "text": "MOODS" - }, + "loc": [20, 430], + "text": "MOODS" + }, "moods": [ - { "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';", - "loc": [95, 323], - "size": [62, 9], - "text": "", - "icon": "", - "mood": 18 - }, - { "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';", - "loc": [165, 323], - "size": [70, 9], - "text": "", - "icon": "", - "mood": 2 - } + { "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';", + "loc": [95, 323], + "size": [62, 9], + "text": "", + "icon": "", + "mood": 18 + }, + { "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';", + "loc": [165, 323], + "size": [70, 9], + "text": "", + "icon": "", + "mood": 2 + } ] }, "convo": @@ -194,12 +198,12 @@ "ceasepester": "ceased pestering", "blocked": "blocked", "unblocked": "unblocked", - "blockedmsg": "did not receive message from", + "blockedmsg": "did not receive message from", "openmemo": "opened memo on board", "joinmemo": "responded to memo", "closememo": "ceased responding to memo", "kickedmemo": "You have been banned from this memo!", - "idle": "is now an idle chum!" + "idle": "is now an idle chum!" }, "systemMsgColor": "#646464" }, @@ -215,7 +219,7 @@ }, "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;", - "downarrow": "height:17px;border:0px;", + "downarrow": "height:17px;border:0px;", "darrowstyle": "image:url($path/downarrow.png);", "uparrow": "height:17px;border:0px;", "uarrowstyle": "image:url($path/uparrow.png);" @@ -232,20 +236,20 @@ "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;" }, - "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;" + "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;" }, "slider": { "style": "border: 0px;", "groove": "", "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;" }, - "arrows": { "left": "$path/leftarrow.png", + "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", "right": "$path/rightarrow.png", - "style": " border:0px; margin-top: 5px; margin-right:10px;" + "style": " border:0px; margin-top: 5px; margin-right:10px;" } }, "systemMsgColor": "#646464", "op": { "icon": "$path/protective.png" } } -} \ No newline at end of file +}