def _removeObserverForAttribute(self, attribute): for eventType in self._getSortEventTypes(attribute): if eventType.startswith('pubsub'): pub.unsubscribe(self.onAttributeChanged, eventType) else: patterns.Publisher().removeObserver(self.onAttributeChanged_Deprecated, eventType=eventType)
def _removeObserverForAttribute(self, attribute): for eventType in self._getSortEventTypes(attribute): if eventType.startswith('pubsub'): pub.unsubscribe(self.onAttributeChanged, eventType) else: patterns.Publisher().removeObserver( self.onAttributeChanged_Deprecated, eventType=eventType)
def __stopObserving(self, eventTypes): # Collect the event types that the currently visible columns are # interested in and make sure we don't stop observing those event types. eventTypesOfVisibleColumns = [] for column in self.visibleColumns(): eventTypesOfVisibleColumns.extend(column.eventTypes()) for eventType in eventTypes: if eventType not in eventTypesOfVisibleColumns: if eventType.startswith('pubsub'): pub.unsubscribe(self.onAttributeChanged, eventType) else: self.removeObserver(self.onAttributeChanged_Deprecated, eventType=eventType)
def detach(self): ''' Should be called by viewer.container before closing the viewer ''' observers = [self, self.presentation()] observable = self.presentation() while True: try: observable = observable.observable() except AttributeError: break else: observers.append(observable) for observer in observers: try: observer.removeInstance() except AttributeError: pass # Ignore observables that are not an observer themselves for popupMenu in self._popupMenus: try: popupMenu.clearMenu() popupMenu.Destroy() except wx.PyDeadObjectError: pass pub.unsubscribe(self.onBeginIO, 'taskfile.aboutToRead') pub.unsubscribe(self.onBeginIO, 'taskfile.aboutToClear') pub.unsubscribe(self.onEndIO, 'taskfile.justRead') pub.unsubscribe(self.onEndIO, 'taskfile.justCleared') self.presentation().detach() self.toolbar.detach()
def unmonitorClass(self, klass): if klass in self._classes: for name in klass.monitoredAttributes(): eventType = getattr(klass, '%sChangedEventType' % name)() if eventType.startswith('pubsub'): pub.unsubscribe(self.onAttributeChanged, eventType) else: self.removeObserver(self.onAttributeChanged_Deprecated, eventType) if issubclass(klass, ObservableComposite): self.removeObserver(self.onChildAdded, klass.addChildEventType()) self.removeObserver(self.onChildRemoved, klass.removeChildEventType()) if issubclass(klass, CategorizableCompositeObject): self.removeObserver(self.onCategoryAdded, klass.categoryAddedEventType()) self.removeObserver(self.onCategoryRemoved, klass.categoryRemovedEventType()) if issubclass(klass, Task): pub.unsubscribe(self.onEffortAddedOrRemoved, Task.effortsChangedEventType()) pub.unsubscribe(self.onPrerequisitesChanged, Task.prerequisitesChangedEventType()) if issubclass(klass, NoteOwner): self.removeObserver(self.onOtherObjectAdded, klass.noteAddedEventType()) self.removeObserver(self.onOtherObjectRemoved, klass.noteRemovedEventType()) if issubclass(klass, AttachmentOwner): self.removeObserver(self.onOtherObjectAdded, klass.attachmentAddedEventType()) self.removeObserver(self.onOtherObjectRemoved, klass.attachmentRemovedEventType()) if issubclass(klass, Effort): pub.unsubscribe(self.onEffortTaskChanged, Effort.taskChangedEventType()) self._classes.remove(klass)
def __stop_observing_attribute(self): try: pub.unsubscribe(self.onAttributeChanged, self.__changedEventType) except pub.UndefinedTopic: pass patterns.Publisher().removeObserver(self.onAttributeChanged_Deprecated)
def detach(self): super(SortableViewerMixin, self).detach() pub.unsubscribe(self.onSortOrderChanged, self.presentation().sortEventType())