mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-11-01 01:07:54 +00:00
60 lines
2 KiB
Python
60 lines
2 KiB
Python
"""Undocumented Module"""
|
|
|
|
__all__ = ['BulletinBoard']
|
|
|
|
from direct.directnotify import DirectNotifyGlobal
|
|
|
|
class BulletinBoard:
|
|
"""This class implements a global location for key/value pairs to be
|
|
stored. Intended to prevent coders from putting global variables directly
|
|
on showbase, so that potential name collisions can be more easily
|
|
detected."""
|
|
notify = DirectNotifyGlobal.directNotify.newCategory('BulletinBoard')
|
|
|
|
def __init__(self):
|
|
self._dict = {}
|
|
|
|
def get(self, postName, default=None):
|
|
return self._dict.get(postName, default)
|
|
|
|
def has(self, postName):
|
|
return postName in self._dict
|
|
|
|
def getEvent(self, postName):
|
|
return 'bboard-%s' % postName
|
|
|
|
def getRemoveEvent(self, postName):
|
|
return 'bboard-remove-%s' % postName
|
|
|
|
def post(self, postName, value=None):
|
|
if postName in self._dict:
|
|
BulletinBoard.notify.warning('changing %s from %s to %s' % (
|
|
postName, self._dict[postName], value))
|
|
self.update(postName, value)
|
|
|
|
def update(self, postName, value):
|
|
"""can use this to set value the first time"""
|
|
if postName in self._dict:
|
|
BulletinBoard.notify.info('update: posting %s' % (postName))
|
|
self._dict[postName] = value
|
|
messenger.send(self.getEvent(postName))
|
|
|
|
def remove(self, postName):
|
|
if postName in self._dict:
|
|
del self._dict[postName]
|
|
messenger.send(self.getRemoveEvent(postName))
|
|
|
|
def removeIfEqual(self, postName, value):
|
|
# only remove the post if its value is a particular value
|
|
if self.has(postName):
|
|
if self.get(postName) == value:
|
|
self.remove(postName)
|
|
|
|
def __repr__(self):
|
|
str = 'Bulletin Board Contents\n'
|
|
str += '======================='
|
|
keys = self._dict.keys()
|
|
keys.sort()
|
|
for postName in keys:
|
|
str += '\n%s: %s' % (postName, self._dict[postName])
|
|
return str
|