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
         )
Esempio n. 2
0
 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 )  
Esempio n. 3
0
    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)
Esempio n. 4
0
 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 )