1# (C) Copyright 2007-2019 Enthought, Inc., Austin, TX 2# All rights reserved. 3# 4# This software is provided without warranty under the terms of the BSD 5# license included in LICENSE.txt and may be redistributed only 6# under the conditions described in the aforementioned license. The license 7# is also available online at http://www.enthought.com/licenses/BSD.txt 8# Thanks for using Enthought open source! 9""" A mutable, manually populated extension registry used for testing. """ 10 11 12# Enthought library imports. 13from envisage.api import ExtensionRegistry, UnknownExtension 14 15 16class MutableExtensionRegistry(ExtensionRegistry): 17 """ A mutable, manually populated extension registry used for testing. """ 18 19 ########################################################################### 20 # 'MutableExtensionRegistry' interface. 21 ########################################################################### 22 23 def add_extension(self, extension_point_id, extension): 24 """ Contribute an extension to an extension point. """ 25 26 self.add_extensions(extension_point_id, [extension]) 27 28 return 29 30 def add_extensions(self, extension_point_id, extensions): 31 """ Contribute a list of extensions to an extension point. """ 32 33 self._check_extension_point(extension_point_id) 34 35 old = self._get_extensions(extension_point_id) 36 index = len(old) 37 old.extend(extensions) 38 39 # Let any listeners know that the extensions have been added. 40 refs = self._get_listener_refs(extension_point_id) 41 self._call_listeners(refs, extension_point_id, extensions, [], index) 42 43 return 44 45 def remove_extension(self, extension_point_id, extension): 46 """ Remove a contribution from an extension point. """ 47 48 self.remove_extensions(extension_point_id, [extension]) 49 50 return 51 52 def remove_extensions(self, extension_point_id, extensions): 53 """ Remove a list of contributions from an extension point. """ 54 55 for extension in extensions: 56 try: 57 self._get_extensions(extension_point_id).remove(extension) 58 59 except ValueError: 60 raise UnknownExtension(extension_point_id, extension) 61 62 # Let any listeners know that the extensions have been removed. 63 refs = self._get_listener_refs(extension_point_id) 64 self._call_listeners(refs, extension_point_id, [], extensions, None) 65 66 return 67 68#### EOF ###################################################################### 69