From 3570a3291206c6bdaf2c18232221aab6d7783782 Mon Sep 17 00:00:00 2001 From: Kiooeht Date: Thu, 15 Sep 2011 00:09:56 -0700 Subject: [PATCH] Code refactoring. Move Mood-type classes into own file --- convo.py | 3 +- dataobjs.py | 31 +------------- irc.py | 3 +- memos.py | 3 +- mood.py | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++ pesterchum.py | 82 +------------------------------------ profile.py | 3 +- 7 files changed, 121 insertions(+), 114 deletions(-) create mode 100644 mood.py diff --git a/convo.py b/convo.py index 96c786a..58cb8cd 100644 --- a/convo.py +++ b/convo.py @@ -7,7 +7,8 @@ from copy import copy from datetime import datetime, timedelta from PyQt4 import QtGui, QtCore -from dataobjs import PesterProfile, Mood, PesterHistory +from mood import Mood +from dataobjs import PesterProfile, PesterHistory from generic import PesterIcon from parsetools import convertTags, lexMessage, splitMessage, mecmd, colorBegin, colorEnd, img2smiley, smiledict diff --git a/dataobjs.py b/dataobjs.py index 411d268..c3fa550 100644 --- a/dataobjs.py +++ b/dataobjs.py @@ -3,6 +3,7 @@ from datetime import * import re import random +from mood import Mood from generic import PesterIcon from parsetools import timeDifference, convertTags, lexMessage, parseRegexpFunctions from mispeller import mispeller @@ -13,36 +14,6 @@ _lowerre = re.compile(r"lower\(([\w<>\\]+)\)") _scramblere = re.compile(r"scramble\(([\w<>\\]+)\)") _reversere = re.compile(r"reverse\(([\w<>\\]+)\)") -class Mood(object): - moods = ["chummy", "rancorous", "offline", "pleasant", "distraught", - "pranky", "smooth", "ecstatic", "relaxed", "discontent", - "devious", "sleek", "detestful", "mirthful", "manipulative", - "vigorous", "perky", "acceptant", "protective", "mystified", - "amazed", "insolent", "bemused" ] - moodcats = ["chums", "trolls", "other"] - revmoodcats = {'discontent': 'trolls', 'insolent': 'chums', 'rancorous': 'chums', 'sleek': 'trolls', 'bemused': 'chums', 'mystified': 'chums', 'pranky': 'chums', 'distraught': 'chums', 'offline': 'chums', 'chummy': 'chums', 'protective': 'other', 'vigorous': 'trolls', 'ecstatic': 'trolls', 'relaxed': 'trolls', 'pleasant': 'chums', 'manipulative': 'trolls', 'detestful': 'trolls', 'smooth': 'chums', 'mirthful': 'trolls', 'acceptant': 'trolls', 'perky': 'trolls', 'devious': 'trolls', 'amazed': 'chums'} - - def __init__(self, mood): - if type(mood) is int: - self.mood = mood - else: - self.mood = self.moods.index(mood) - def value(self): - return self.mood - def name(self): - try: - name = self.moods[self.mood] - except IndexError: - name = "chummy" - return name - def icon(self, theme): - try: - f = theme["main/chums/moods"][self.name()]["icon"] - except KeyError: - return PesterIcon(theme["main/chums/moods/chummy/icon"]) - return PesterIcon(f) - - class pesterQuirk(object): def __init__(self, quirk): if type(quirk) != dict: diff --git a/irc.py b/irc.py index 273af2c..1a896a3 100644 --- a/irc.py +++ b/irc.py @@ -7,7 +7,8 @@ import random import socket from time import time -from dataobjs import Mood, PesterProfile +from mood import Mood +from dataobjs import PesterProfile from generic import PesterList from version import _pcVersion diff --git a/memos.py b/memos.py index 9cc0e20..bf0961e 100644 --- a/memos.py +++ b/memos.py @@ -4,7 +4,8 @@ from copy import copy from PyQt4 import QtGui, QtCore from datetime import time, timedelta, datetime -from dataobjs import PesterProfile, Mood, PesterHistory +from mood import Mood +from dataobjs import PesterProfile, PesterHistory from generic import PesterIcon, RightClickList, mysteryTime from convo import PesterConvo, PesterInput, PesterText, PesterTabWindow from parsetools import convertTags, addTimeInitial, timeProtocol, \ diff --git a/mood.py b/mood.py new file mode 100644 index 0000000..8c71f6d --- /dev/null +++ b/mood.py @@ -0,0 +1,110 @@ +from PyQt4 import QtCore, QtGui + +from generic import PesterIcon + +class Mood(object): + moods = ["chummy", "rancorous", "offline", "pleasant", "distraught", + "pranky", "smooth", "ecstatic", "relaxed", "discontent", + "devious", "sleek", "detestful", "mirthful", "manipulative", + "vigorous", "perky", "acceptant", "protective", "mystified", + "amazed", "insolent", "bemused" ] + moodcats = ["chums", "trolls", "other"] + revmoodcats = {'discontent': 'trolls', 'insolent': 'chums', 'rancorous': 'chums', 'sleek': 'trolls', 'bemused': 'chums', 'mystified': 'chums', 'pranky': 'chums', 'distraught': 'chums', 'offline': 'chums', 'chummy': 'chums', 'protective': 'other', 'vigorous': 'trolls', 'ecstatic': 'trolls', 'relaxed': 'trolls', 'pleasant': 'chums', 'manipulative': 'trolls', 'detestful': 'trolls', 'smooth': 'chums', 'mirthful': 'trolls', 'acceptant': 'trolls', 'perky': 'trolls', 'devious': 'trolls', 'amazed': 'chums'} + + def __init__(self, mood): + if type(mood) is int: + self.mood = mood + else: + self.mood = self.moods.index(mood) + def value(self): + return self.mood + def name(self): + try: + name = self.moods[self.mood] + except IndexError: + name = "chummy" + return name + def icon(self, theme): + try: + f = theme["main/chums/moods"][self.name()]["icon"] + except KeyError: + return PesterIcon(theme["main/chums/moods/chummy/icon"]) + return PesterIcon(f) + +class PesterMoodAction(QtCore.QObject): + def __init__(self, m, func): + QtCore.QObject.__init__(self) + self.mood = m + self.func = func + @QtCore.pyqtSlot() + def updateMood(self): + self.func(self.mood) + +class PesterMoodHandler(QtCore.QObject): + def __init__(self, parent, *buttons): + QtCore.QObject.__init__(self) + self.buttons = {} + self.mainwindow = parent + for b in buttons: + self.buttons[b.mood.value()] = b + if b.mood.value() == self.mainwindow.profile().mood.value(): + b.setSelected(True) + self.connect(b, QtCore.SIGNAL('clicked()'), + b, QtCore.SLOT('updateMood()')) + self.connect(b, QtCore.SIGNAL('moodUpdated(int)'), + self, QtCore.SLOT('updateMood(int)')) + def removeButtons(self): + for b in self.buttons.values(): + b.close() + def showButtons(self): + for b in self.buttons.values(): + b.show() + b.raise_() + @QtCore.pyqtSlot(int) + def updateMood(self, m): + # update MY mood + oldmood = self.mainwindow.profile().mood + try: + oldbutton = self.buttons[oldmood.value()] + oldbutton.setSelected(False) + except KeyError: + pass + try: + newbutton = self.buttons[m] + newbutton.setSelected(True) + except KeyError: + pass + newmood = Mood(m) + self.mainwindow.userprofile.chat.mood = newmood + self.mainwindow.userprofile.setLastMood(newmood) + if self.mainwindow.currentMoodIcon: + moodicon = newmood.icon(self.mainwindow.theme) + self.mainwindow.currentMoodIcon.setPixmap(moodicon.pixmap(moodicon.realsize())) + if oldmood.name() != newmood.name(): + for c in self.mainwindow.convos.values(): + c.myUpdateMood(newmood) + self.mainwindow.moodUpdated.emit() + +class PesterMoodButton(QtGui.QPushButton): + def __init__(self, parent, **options): + icon = PesterIcon(options["icon"]) + QtGui.QPushButton.__init__(self, icon, options["text"], parent) + self.setIconSize(icon.realsize()) + self.setFlat(True) + self.resize(*options["size"]) + self.move(*options["loc"]) + self.unselectedSheet = options["style"] + self.selectedSheet = options["selected"] + self.setStyleSheet(self.unselectedSheet) + self.mainwindow = parent + self.mood = Mood(options["mood"]) + def setSelected(self, selected): + if selected: + self.setStyleSheet(self.selectedSheet) + else: + self.setStyleSheet(self.unselectedSheet) + @QtCore.pyqtSlot() + def updateMood(self): + # updates OUR mood + self.moodUpdated.emit(self.mood.value()) + moodUpdated = QtCore.pyqtSignal(int) diff --git a/pesterchum.py b/pesterchum.py index 0c50a3a..b5fdb56 100644 --- a/pesterchum.py +++ b/pesterchum.py @@ -59,7 +59,8 @@ if not os.path.exists(_datadir+"logs"): from menus import PesterChooseQuirks, PesterChooseTheme, \ PesterChooseProfile, PesterOptions, PesterUserlist, PesterMemoList, \ LoadingScreen, AboutPesterchum, UpdatePesterchum -from dataobjs import PesterProfile, Mood, pesterQuirk, pesterQuirks +from mood import Mood, PesterMoodAction, PesterMoodHandler, PesterMoodButton +from dataobjs import PesterProfile, pesterQuirk, pesterQuirks from generic import PesterIcon, RightClickList, RightClickTree, \ MultiTextDialog, PesterList, CaseInsensitiveDict, MovingWindow, \ NoneSound, WMButton @@ -887,85 +888,6 @@ class TrollSlumWindow(QtGui.QFrame): blockChumSignal = QtCore.pyqtSignal(QtCore.QString) unblockChumSignal = QtCore.pyqtSignal(QtCore.QString) -class PesterMoodAction(QtCore.QObject): - def __init__(self, m, func): - QtCore.QObject.__init__(self) - self.mood = m - self.func = func - @QtCore.pyqtSlot() - def updateMood(self): - self.func(self.mood) - -class PesterMoodHandler(QtCore.QObject): - def __init__(self, parent, *buttons): - QtCore.QObject.__init__(self) - self.buttons = {} - self.mainwindow = parent - for b in buttons: - self.buttons[b.mood.value()] = b - if b.mood.value() == self.mainwindow.profile().mood.value(): - b.setSelected(True) - self.connect(b, QtCore.SIGNAL('clicked()'), - b, QtCore.SLOT('updateMood()')) - self.connect(b, QtCore.SIGNAL('moodUpdated(int)'), - self, QtCore.SLOT('updateMood(int)')) - def removeButtons(self): - for b in self.buttons.values(): - b.close() - def showButtons(self): - for b in self.buttons.values(): - b.show() - b.raise_() - @QtCore.pyqtSlot(int) - def updateMood(self, m): - # update MY mood - oldmood = self.mainwindow.profile().mood - try: - oldbutton = self.buttons[oldmood.value()] - oldbutton.setSelected(False) - except KeyError: - pass - try: - newbutton = self.buttons[m] - newbutton.setSelected(True) - except KeyError: - pass - newmood = Mood(m) - self.mainwindow.userprofile.chat.mood = newmood - self.mainwindow.userprofile.setLastMood(newmood) - if self.mainwindow.currentMoodIcon: - moodicon = newmood.icon(self.mainwindow.theme) - self.mainwindow.currentMoodIcon.setPixmap(moodicon.pixmap(moodicon.realsize())) - if oldmood.name() != newmood.name(): - for c in self.mainwindow.convos.values(): - c.myUpdateMood(newmood) - self.mainwindow.moodUpdated.emit() - -class PesterMoodButton(QtGui.QPushButton): - def __init__(self, parent, **options): - icon = PesterIcon(options["icon"]) - QtGui.QPushButton.__init__(self, icon, options["text"], parent) - self.setIconSize(icon.realsize()) - self.setFlat(True) - self.resize(*options["size"]) - self.move(*options["loc"]) - self.unselectedSheet = options["style"] - self.selectedSheet = options["selected"] - self.setStyleSheet(self.unselectedSheet) - self.mainwindow = parent - self.mood = Mood(options["mood"]) - def setSelected(self, selected): - if selected: - self.setStyleSheet(self.selectedSheet) - else: - self.setStyleSheet(self.unselectedSheet) - @QtCore.pyqtSlot() - def updateMood(self): - # updates OUR mood - self.moodUpdated.emit(self.mood.value()) - moodUpdated = QtCore.pyqtSignal(int) - - class PesterWindow(MovingWindow): def __init__(self, options, parent=None): MovingWindow.__init__(self, parent, diff --git a/profile.py b/profile.py index 14504cf..8fc7452 100644 --- a/profile.py +++ b/profile.py @@ -10,7 +10,8 @@ from time import strftime, time from PyQt4 import QtGui, QtCore import ostools -from dataobjs import PesterProfile, Mood, pesterQuirk, pesterQuirks +from mood import Mood +from dataobjs import PesterProfile, pesterQuirk, pesterQuirks from parsetools import convertTags, addTimeInitial, themeChecker, ThemeException _datadir = ostools.getDataDir()