def destroy(self):
        # clean everything!
        for obs in self.filter_output_observers:
            self.remove_filter_output_observer(obs)

        for obs in self.original_image_observer:
            self.remove_image_observer(obs, keys.get_filter_original_name())

        for filter_name, lst_obs in self.image_observers.items():
            for obs in lst_obs:
                self.remove_image_observer(obs, filter_name)

        for o_filter in self.filters:
            o_filter.destroy()
    def destroy(self):
        # clean everything!
        for obs in self.filter_output_observers:
            self.remove_filter_output_observer(obs)

        for obs in self.original_image_observer:
            self.remove_image_observer(obs, keys.get_filter_original_name())

        for filter_name, lst_obs in self.image_observers.items():
            for obs in lst_obs:
                self.remove_image_observer(obs, filter_name)

        for o_filter in self.filters:
            o_filter.destroy_param()
            o_filter.destroy()
    def remove_image_observer(self, observer, filter_name):
        b_original = False
        if keys.get_filter_original_name() == filter_name:
            b_original = True
            lstObserver = self.original_image_observer
        else:
            lstObserver = self.image_observers.get(filter_name, [])
        if lstObserver:
            if observer in lstObserver:
                lstObserver.remove(observer)
                if not lstObserver and not b_original:
                    del self.image_observers[filter_name]
                return True

        log.print_function(logger.warning, "This observer is not in observation list for filter %s" % filter_name)
        return False
 def add_image_observer(self, observer, filter_name):
     # Exception for original image
     b_original = False
     if keys.get_filter_original_name() == filter_name:
         b_original = True
         lstObserver = self.original_image_observer
     else:
         lstObserver = self.image_observers.get(filter_name, [])
     if lstObserver:
         if observer in lstObserver:
             log.print_function(logger.warning, "This observer already observer the filter %s" % filter_name)
             return False
         else:
             lstObserver.append(observer)
     elif not b_original:
         self.image_observers[filter_name] = [observer]
     else:
         lstObserver.append(observer)
     return True
    def remove_image_observer(self, observer, filter_name):
        b_original = False
        if keys.get_filter_original_name() == filter_name:
            b_original = True
            lst_observer = self.original_image_observer
        else:
            lst_observer = self.image_observers.get(filter_name, [])
        if lst_observer:
            if observer in lst_observer:
                lst_observer.remove(observer)
                if not lst_observer and not b_original:
                    del self.image_observers[filter_name]
                return True

        log.print_function(
            logger.warning,
            "This observer is not in observation list for filter %s" %
            filter_name)
        return False
 def add_image_observer(self, observer, filter_name):
     # Exception for original image
     b_original = False
     if keys.get_filter_original_name() == filter_name:
         b_original = True
         lst_observer = self.original_image_observer
     else:
         lst_observer = self.image_observers.get(filter_name, [])
     if lst_observer:
         if observer in lst_observer:
             log.print_function(
                 logger.warning,
                 "This observer already observer the filter %s" %
                 filter_name)
             return False
         else:
             lst_observer.append(observer)
     elif not b_original:
         self.image_observers[filter_name] = [observer]
     else:
         lst_observer.append(observer)
     return True