History for ModelCode
??changed:
-
<hr>
<pre>
import ModelDeleted
class MissingViewException(Exception):
pass
class MissingControllerException(Exception):
pass
class Model:
"""The database."""
def __init__(self):
"""Construct the instance and initialize the defaults."""
self.__dict = {}
self.__dict['views'] = {}
self.__dict['controllers'] = {}
self.__modelDeleted = ModelDeleted.ModelDeleted()
return
def __del__(self):
"""Inform all the views and controllers that the model is
being deleted. Finally, destroy the instance."""
## print "Model.__del__"
self.finished()
return
def finished(self):
"""Manually break loops."""
## print "Model.finished"
self.notifyViews(self.__modelDeleted)
self.notifyControllers(self.__modelDeleted)
self.__dict = {}
self.__dict['views'] = {}
self.__dict['controllers'] = {}
return
def __remove(self, aType, which):
del self.__dict[aType][which]
return
def __addEvent(self, aType, which, anEvent):
if not self.__dict[aType].has_key(which):
self.__dict[aType][which] = []
self.__dict[aType][which].append([anEvent, anEvent.getReason()])
return
def __removeEvent(self, aType, which, anEvent):
self.__dict[aType][which].remove([anEvent, anEvent.getReason()])
return
def __notify(self, aType, aReason):
for anItem in self.__dict[aType].keys():
for event, reason in self.__dict[aType][anItem]:
if reason == aReason:
event.execute(aReason)
return
def __eventList(self, aType, anItem):
return self.__dict[aType][anItem]
def removeView(self, aView):
"""Removes all the events for a single view"""
try:
self.__remove('views', aView)
except KeyError:
raise MissingViewException, aView
return
def getViewEventList(self, aView):
"""Returns a list of all views."""
result = []
try:
result = self.__eventList('views', aView)
except KeyError:
raise MissingViewException, aView
return result
def addViewEvent(self, aView, anEvent):
"""Adds an event for a single view"""
self.__addEvent('views', aView, anEvent)
return
def removeViewEvent(self, aView, anEvent):
"""Removes an event for a single view"""
try:
self.__removeEvent('views', aView, anEvent)
except ValueError:
raise MissingViewException, aView
return
def notifyViews(self, aReason):
"""Only notify the views that are interested"""
self.__notify('views', aReason)
return
def getControllerEventList(self, aController):
"""Returns a list of controllers."""
result = []
try:
result = self.__eventList('controllers', aController)
except KeyError:
raise MissingControlelrException, aController
return result
def removeController(self, aController):
"""Removes all the events for a single controller"""
try:
self.__remove('controllers', aController)
except KeyError:
raise MissingControllerException, aController
return
def addControllerEvent(self, aController, anEvent):
"""Adds an event for a single controller"""
self.__addEvent('controllers', aController, anEvent)
return
def removeControllerEvent(self, aController, anEvent):
"""Removes an event for a single controller"""
try:
self.__removeEvent('controllers', aController, anEvent)
except ValueError:
raise MissingControllerException, view
return
def notifyControllers(self, aReason):
"""Only notify the controllers that are interested"""
self.__notify('controllers', aReason)
return
</pre>
<hr>