+ # ==========================================================================
+ # Function for the notification interface between an EficasWrapper an an
+ # EficasObserver.
+
+ # Association de l'objet editor avec le callbackId
+ def setCallbackId(self, callbackId):
+ index = self.viewmanager.myQtab.currentIndex()
+ self.__myCallbackId[self.viewmanager.dict_editors[index]] = callbackId
+
+ def removeCallbackId(self, callbackId):
+ key_to_remove = None
+ print callbackId
+ for k, v in self.__myCallbackId.iteritems():
+ print k, v
+ if v[0] == callbackId[0] and v[1].GetID() == callbackId[1].GetID():
+ key_to_remove = k
+ if key_to_remove is not None:
+ del self.__myCallbackId[key_to_remove]
+ else:
+ print "Oups - cannot find callbackId"
+
+ def getCallbackId(self):
+ if self.__close_editor is None:
+ index = self.viewmanager.myQtab.currentIndex()
+ return self.__myCallbackId[self.viewmanager.dict_editors[index]]
+ else:
+ return self.__myCallbackId[self.__close_editor]
+
+ def addObserver(self, observer):
+ """
+ In fact, only one observer may be defined for the moment.
+ """
+ try:
+ observer.processEficasEvent
+ except:
+ raise DevelException("the argument should implement the function processEficasEvent")
+ self.__observer = observer
+
+ def notifyObserver(self, eventType, callbackId=None):
+ if eventType != EficasEvent.EVENT_TYPES.NEW and eventType != EficasEvent.EVENT_TYPES.OPEN:
+ if callbackId is None :
+ eficasEvent = EficasEvent(eventType, self.getCallbackId())
+ else:
+ eficasEvent = EficasEvent(eventType, callbackId)
+ else:
+ eficasEvent = EficasEvent(eventType)
+ self.__observer.processEficasEvent(self, eficasEvent)
+