mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-06 03:44:00 -04:00
168 lines
5.1 KiB
Python
168 lines
5.1 KiB
Python
"""Notifier module: contains methods for handling information output
|
|
for the programmer/user"""
|
|
|
|
from LoggerGlobal import *
|
|
import time
|
|
|
|
class Notifier:
|
|
|
|
def __init__(self, name, logger=None):
|
|
"""__init__(self, string, Logger=None)
|
|
Create a new instance of the Notifier class with a given name
|
|
and an optional Logger class for piping output to. If no logger
|
|
specified, use the global default"""
|
|
self.__name = name
|
|
|
|
if (logger==None):
|
|
self.__logger = defaultLogger
|
|
else:
|
|
self.__logger = logger
|
|
|
|
# Global default levels are initialized here
|
|
self.__info = 1
|
|
self.__warning = 1
|
|
self.__debug = 0
|
|
self.__logging = 0
|
|
|
|
def getTime(self):
|
|
"""
|
|
Return the time as a string suitable for printing at the
|
|
head of any notify message
|
|
"""
|
|
|
|
# for some strange reason, time.time() updates only once/minute if
|
|
# the task is out of focus on win32. time.clock doesnt have this prob
|
|
return time.strftime(":%m-%d-%Y %H:%M:%S ", time.localtime(time.time()))
|
|
|
|
def __str__(self):
|
|
"""__str__(self)
|
|
Print handling routine"""
|
|
return "%s: info = %d, warning = %d, debug = %d, logging = %d" % \
|
|
(self.__name, self.__info, self.__warning, self.__debug, self.__logging)
|
|
|
|
# Severity funcs
|
|
def setSeverity(self, severity):
|
|
import NotifySeverity
|
|
if severity >= NotifySeverity.NSError:
|
|
self.setWarning(0)
|
|
self.setInfo(0)
|
|
self.setDebug(0)
|
|
elif severity == NotifySeverity.NSWarning:
|
|
self.setWarning(1)
|
|
self.setInfo(0)
|
|
self.setDebug(0)
|
|
elif severity == NotifySeverity.NSInfo:
|
|
self.setWarning(1)
|
|
self.setInfo(1)
|
|
self.setDebug(0)
|
|
elif severity <= NotifySeverity.NSDebug:
|
|
self.setWarning(1)
|
|
self.setInfo(1)
|
|
self.setDebug(1)
|
|
|
|
def getSeverity(self):
|
|
import NotifySeverity
|
|
if self.getDebug():
|
|
return NotifySeverity.NSDebug
|
|
elif self.getInfo():
|
|
return NotifySeverity.NSInfo
|
|
elif self.getWarning():
|
|
return NotifySeverity.NSWarning
|
|
else:
|
|
return NotifySeverity.NSError
|
|
|
|
# error funcs
|
|
def error(self, errorString, exception=StandardError):
|
|
"""error(self, string, Exception=StandardError)
|
|
Raise an exception with given string and optional type:
|
|
Exception: error"""
|
|
string = (self.getTime() + str(exception) + ": " + self.__name + ": " + errorString)
|
|
self.__log(string)
|
|
raise exception(errorString)
|
|
|
|
# warning funcs
|
|
def warning(self, warningString):
|
|
"""warning(self, string)
|
|
Issue the warning message if warn flag is on"""
|
|
if (self.__warning):
|
|
string = (self.getTime() + self.__name + '(warning): ' + warningString)
|
|
self.__log(string)
|
|
print(string)
|
|
return 1 # to allow assert(myNotify.warning("blah"))
|
|
|
|
def setWarning(self, bool):
|
|
"""setWarning(self, int)
|
|
Enable/Disable the printing of warning messages"""
|
|
self.__warning = bool
|
|
|
|
def getWarning(self):
|
|
"""getWarning(self)
|
|
Return whether the printing of warning messages is on or off"""
|
|
return(self.__warning)
|
|
|
|
# debug funcs
|
|
def debug(self, debugString):
|
|
"""debug(self, string)
|
|
Issue the debug message if debug flag is on"""
|
|
if (self.__debug):
|
|
string = (self.getTime() + self.__name + '(debug): ' + debugString)
|
|
self.__log(string)
|
|
print(string)
|
|
return 1 # to allow assert(myNotify.debug("blah"))
|
|
|
|
def setDebug(self, bool):
|
|
"""setDebug(self, int)
|
|
Enable/Disable the printing of debug messages"""
|
|
self.__debug = bool
|
|
|
|
def getDebug(self):
|
|
"""getDebug(self)
|
|
Return whether the printing of debug messages is on or off"""
|
|
return(self.__debug)
|
|
|
|
# info funcs
|
|
def info(self, infoString):
|
|
"""info(self, string)
|
|
Print the given informational string, if info flag is on"""
|
|
if (self.__info):
|
|
string = (self.getTime() + self.__name + '(info): ' + infoString)
|
|
self.__log(string)
|
|
print(string)
|
|
return 1 # to allow assert(myNotify.info("blah"))
|
|
|
|
def getInfo(self):
|
|
"""getInfo(self)
|
|
Return whether the printing of info messages is on or off"""
|
|
return(self.__info)
|
|
|
|
def setInfo(self, bool):
|
|
"""setInfo(self, int)
|
|
Enable/Disable informational message printing"""
|
|
self.__info = bool
|
|
|
|
# log funcs
|
|
def __log(self, logEntry):
|
|
"""__log(self, string)
|
|
Determine whether to send informational message to the logger"""
|
|
if (self.__logging):
|
|
self.__logger.log(logEntry)
|
|
|
|
def getLogging(self):
|
|
"""getLogging(self)
|
|
Return 1 if logging enabled, 0 otherwise"""
|
|
return (self.__logging)
|
|
|
|
def setLogging(self, bool):
|
|
"""setLogging(self, int)
|
|
Set the logging flag to int (1=on, 0=off)"""
|
|
self.__logging = bool
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|