diff --git a/direct/src/directnotify/Notifier.py b/direct/src/directnotify/Notifier.py index d8907deb22..3c8b843173 100644 --- a/direct/src/directnotify/Notifier.py +++ b/direct/src/directnotify/Notifier.py @@ -9,10 +9,14 @@ class Notifier: serverDelta = 0 def __init__(self, name, logger=None): - """__init__(self, string, Logger=None) + """ + name is a string + logger is a Logger + 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""" + specified, use the global default + """ self.__name = name if (logger==None): @@ -47,14 +51,21 @@ class Notifier: 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 + # the task is out of focus on win32. time.clock doesn't have this problem. return time.strftime(":%m-%d-%Y %H:%M:%S ", time.localtime(time.time() + self.serverDelta)) + def getOnlyTime(self): + """ + Return the time as a string. + The Only in the name is referring to not showing the date. + """ + return time.strftime("%H:%M:%S", time.localtime(time.time() + self.serverDelta)) + def __str__(self): - """__str__(self) - Print handling routine""" + """ + Print handling routine + """ return "%s: info = %d, warning = %d, debug = %d, logging = %d" % \ (self.__name, self.__info, self.__warning, self.__debug, self.__logging) @@ -149,13 +160,14 @@ class Notifier: 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""" + """ + Enable/Disable informational message printing + """ self.__info = bool # log funcs @@ -166,19 +178,55 @@ class Notifier: 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 def __print(self, string): - """__print(self, string) + """ Prints the string to standard output followed by a newline. If we ever need to do something else than Python print, you could put it here. """ print string + + def debugStateCall(self, obj=None): + """ + If this notify is in debug mode, print the time of the + call followed by the [fsm state] notifier category and + the function call (with parameters). + """ + if (self.__debug): + state = '' + if obj is not None: + if hasattr(obj, 'fsm'): + #state = "%s=%s"%(obj.fsm.getName(), obj.fsm.getCurrentState().getName()) + state = obj.fsm.getCurrentState().getName() + string = ":%s [%-7s] %s.%s"%( + self.getOnlyTime(), + state, + self.__name, + PythonUtil.traceParentCall()) + self.__log(string) + self.__print(string) + return 1 # to allow assert(myNotify.debug("blah")) + + def debugCall(self, debugString=''): + """ + + """ + if (self.__debug): + string = ":%s %s %s.%s %s"%( + self.getOnlyTime(), + debugString, + self.__name, + PythonUtil.traceParentCall()) + self.__log(string) + self.__print(string) + return 1 # to allow assert(myNotify.debug("blah")) +