def add_traits_meta_data( self, bases, class_dict, base_traits, class_traits, instance_traits, prefix_traits, view_elements ): if len(bases) == 2: # Update the class and each of the existing subclasses: bases[1]._add_trait_category(base_traits, class_traits, instance_traits, prefix_traits, view_elements) else: MetaHasTraitsObject.add_traits_meta_data( self, bases, class_dict, base_traits, class_traits, instance_traits, prefix_traits, view_elements )
def add_traits_meta_data ( self, bases, class_dict, base_traits, class_traits, instance_traits, prefix_traits, view_elements ): if len( bases ) == 2: # Update the class and each of the existing subclasses: bases[1]._add_trait_category( base_traits, class_traits, instance_traits, prefix_traits, view_elements ) else: MetaHasTraitsObject.add_traits_meta_data( self, bases, class_dict, base_traits, class_traits, instance_traits, prefix_traits, view_elements )
def add_traits_meta_data(self, bases, class_dict, base_traits, class_traits, prefix_traits, view_elements): if len(bases) == 2: category_class = bases[1] # Update the base class's traits with the new ones: if len(base_traits) > 0: getattr(category_class, BaseTraits).update(base_traits) if len(class_traits) > 0: getattr(category_class, ClassTraits).update(class_traits) if len(prefix_traits) > 0: getattr(category_class, PrefixTraits).update(prefix_traits) # Copy all our view elements into the base class's ViewElements: if view_elements is not None: content = view_elements.content if len(content) > 0: base_ve = getattr(category_class, ViewTraits, None) if base_ve is None: setattr(category_class, ViewTraits, view_elements) else: base_ve.content.update(content) # Update each of the existing subclasses as well: for subclass in category_class.trait_subclasses(True): subclass_traits = getattr(subclass, BaseTraits) for name, value in base_traits.items(): subclass_traits.setdefault(name, value) subclass_traits = getattr(subclass, ClassTraits) for name, value in class_traits.items(): subclass_traits.setdefault(name, value) subclass_traits = getattr(subclass, PrefixTraits) subclass_list = subclass_traits['*'] changed = False for name, value in prefix_traits.items(): if name not in subclass_traits: subclass_traits[name] = value subclass_list.append(name) changed = True # Resort the list from longest to shortest (if necessary): if changed: subclass_list.sort(lambda x, y: len(y) - len(x)) else: MetaHasTraitsObject.add_traits_meta_data(self, bases, class_dict, base_traits, class_traits, prefix_traits, view_elements)
def add_traits_meta_data ( self, bases, class_dict, base_traits, class_traits, prefix_traits, view_elements ): if len( bases ) == 2: category_class = bases[1] # Update the base class's traits with the new ones: if len( base_traits ) > 0: getattr( category_class, BaseTraits ).update( base_traits ) if len( class_traits ) > 0: getattr( category_class, ClassTraits ).update( class_traits ) if len( prefix_traits ) > 0: getattr( category_class, PrefixTraits ).update( prefix_traits ) # Copy all our view elements into the base class's ViewElements: if view_elements is not None: content = view_elements.content if len( content ) > 0: base_ve = getattr( category_class, ViewTraits, None ) if base_ve is None: setattr( category_class, ViewTraits, view_elements ) else: base_ve.content.update( content ) # Update each of the existing subclasses as well: for subclass in category_class.trait_subclasses( True ): subclass_traits = getattr( subclass, BaseTraits ) for name, value in base_traits.items(): subclass_traits.setdefault( name, value ) subclass_traits = getattr( subclass, ClassTraits ) for name, value in class_traits.items(): subclass_traits.setdefault( name, value ) subclass_traits = getattr( subclass, PrefixTraits ) subclass_list = subclass_traits['*'] changed = False for name, value in prefix_traits.items(): if name not in subclass_traits: subclass_traits[ name ] = value subclass_list.append( name ) changed = True # Resort the list from longest to shortest (if necessary): if changed: subclass_list.sort( lambda x, y: len( y ) - len( x ) ) else: MetaHasTraitsObject.add_traits_meta_data( self, bases, class_dict, base_traits, class_traits, prefix_traits, view_elements )