95 lines
3.4 KiB
Python
95 lines
3.4 KiB
Python
|
|
"""DirectNotify module: this module contains the DirectNotify class"""
|
|
|
|
import Notifier
|
|
import Logger
|
|
|
|
class DirectNotify:
|
|
"""DirectNotify class: this class contains methods for creating
|
|
mulitple notify categories via a dictionary of Notifiers."""
|
|
|
|
def __init__(self):
|
|
"""__init__(self)
|
|
DirectNotify class keeps a dictionary of Notfiers"""
|
|
self.__categories = { }
|
|
# create a default log file
|
|
self.logger = Logger.Logger()
|
|
|
|
def __str__(self):
|
|
"""__str__(self)
|
|
Print handling routine"""
|
|
return "DirectNotify categories: %s" % (self.__categories)
|
|
|
|
#getters and setters
|
|
def getCategories(self):
|
|
"""getCategories(self)
|
|
Return list of category dictionary keys"""
|
|
return (self.__categories.keys())
|
|
|
|
def getCategory(self, categoryName):
|
|
"""getCategory(self, string)
|
|
Return the category with given name if present, None otherwise"""
|
|
return (self.__categories.get(categoryName, None))
|
|
|
|
def newCategory(self, categoryName, logger=None):
|
|
"""newCategory(self, string)
|
|
Make a new notify category named categoryName. Return new category
|
|
if no such category exists, else return existing category"""
|
|
if (not self.__categories.has_key(categoryName)):
|
|
self.__categories[categoryName] = Notifier.Notifier(categoryName, logger)
|
|
self.setDconfigLevel(categoryName)
|
|
else:
|
|
print "Warning: DirectNotify: category '%s' already exists" % \
|
|
(categoryName)
|
|
return (self.getCategory(categoryName))
|
|
|
|
def setDconfigLevel(self, categoryName):
|
|
"""
|
|
Check to see if this category has a dconfig variable
|
|
to set the notify severity and then set that level. You cannot
|
|
set these until config is set.
|
|
"""
|
|
|
|
# We cannot check dconfig variables until config has been
|
|
# set. Once config is set in ShowBase.py, it tries to set
|
|
# all the levels again in case some were created before config
|
|
# was created.
|
|
try:
|
|
config
|
|
except:
|
|
return 0
|
|
|
|
dconfigParam = ("notify-level-" + categoryName)
|
|
level = config.GetString(dconfigParam, "")
|
|
if level:
|
|
print ("Setting DirectNotify category: " + dconfigParam +
|
|
" to severity: " + level)
|
|
category = self.getCategory(categoryName)
|
|
if level == "error":
|
|
category.setWarning(0)
|
|
category.setInfo(0)
|
|
category.setDebug(0)
|
|
elif level == "warning":
|
|
category.setWarning(1)
|
|
category.setInfo(0)
|
|
category.setDebug(0)
|
|
elif level == "info":
|
|
category.setWarning(1)
|
|
category.setInfo(1)
|
|
category.setDebug(0)
|
|
elif level == "debug":
|
|
category.setWarning(1)
|
|
category.setInfo(1)
|
|
category.setDebug(1)
|
|
else:
|
|
print ("DirectNotify: unknown notify level: " + str(level)
|
|
+ " for category: " + str(categoryName))
|
|
|
|
def setDconfigLevels(self):
|
|
for categoryName in self.getCategories():
|
|
self.setDconfigLevel(categoryName)
|
|
|
|
def popupControls(self, tl = None):
|
|
import NotifyPanel
|
|
NotifyPanel.NotifyPanel(self, tl)
|