def test_getting_stereotypes(self):
        """Test getting possible stereotypes
        """
        cls = self.factory.create(uml2.Class)
        cls.name = 'Class'
        st1 = self.factory.create(uml2.Stereotype)
        st1.name = 'st1'
        st2 = self.factory.create(uml2.Stereotype)
        st2.name = 'st2'

        # first extend with st2, to check sorting
        modelfactory.extend_with_stereotype(self.factory, cls, st2)
        modelfactory.extend_with_stereotype(self.factory, cls, st1)

        c1 = self.factory.create(uml2.Class)
        result = tuple(st.name for st in modelfactory.get_stereotypes(self.factory, c1))
        self.assertEquals(('st1', 'st2'), result)
示例#2
0
    def construct(self):
        page = gtk.VBox()
        subject = self.item.subject
        if subject is None:
            return None

        stereotypes = modelfactory.get_stereotypes(self.element_factory,
                                                   subject)
        if not stereotypes:
            return None

        #applied = set(modelfactory.get_applied_stereotypes(subject))
        #for i, stereotype in enumerate(stereotypes):
        #    if (i % 3) == 0:
        #        hbox = gtk.HBox(spacing=20)
        #        page.pack_start(hbox, expand=False)
        #    button = gtk.CheckButton(label=stereotype.name)
        #    button.set_active(stereotype in applied)
        #    button.connect('toggled', self._on_stereotype_selected, stereotype)
        #    hbox.pack_start(button, expand=False)

        # show stereotypes attributes toggle
        if isinstance(self.item, StereotypeSupport):
            hbox = gtk.HBox()
            label = gtk.Label('')
            hbox.pack_start(label, expand=False)
            button = gtk.CheckButton(_('Show stereotypes attributes'))
            button.set_active(self.item.show_stereotypes_attrs)
            button.connect('toggled', self._on_show_stereotypes_attrs_change)
            hbox.pack_start(button)
            page.pack_start(hbox, expand=False)

        # stereotype attributes
        self.model = StereotypeAttributes(self.item.subject)
        tree_view = create_stereotype_tree_view(self.model)
        page.pack_start(tree_view)

        page.show_all()
        return page
    def test_getting_stereotypes_unique(self):
        """Test if possible stereotypes are unique
        """
        cls1 = self.factory.create(uml2.Class)
        cls1.name = 'Class'
        cls2 = self.factory.create(uml2.Class)
        cls2.name = 'Component'
        st1 = self.factory.create(uml2.Stereotype)
        st1.name = 'st1'
        st2 = self.factory.create(uml2.Stereotype)
        st2.name = 'st2'

        # first extend with st2, to check sorting
        modelfactory.extend_with_stereotype(self.factory, cls1, st2)
        modelfactory.extend_with_stereotype(self.factory, cls1, st1)

        modelfactory.extend_with_stereotype(self.factory, cls2, st1)
        modelfactory.extend_with_stereotype(self.factory, cls2, st2)

        c1 = self.factory.create(uml2.Component)
        result = tuple(st.name for st in modelfactory.get_stereotypes(self.factory, c1))
        self.assertEquals(('st1', 'st2'), result)
示例#4
0
    def refresh(self):
        self.clear()
        subject = self.subject
        stereotypes = modelfactory.get_stereotypes(self.element_factory,
                                                   subject)
        instances = self.subject.appliedStereotype

        # shortcut map stereotype -> slot (InstanceSpecification)
        slots = {}
        for obj in instances:
            for slot in obj.slot:
                slots[slot.definingFeature] = slot

        for st in stereotypes:
            for obj in instances:
                if st in obj.classifier:
                    break
            else:
                obj = None

            parent = self.append(None,
                                 (st.name, '', bool(obj), st, None, None))

            if obj:
                for attr in st.ownedAttribute:
                    if not attr.association:
                        slot = slots.get(attr)
                        value = slot.value if slot else ''
                        data = (attr.name, value, True, attr, obj, slot)
                        #print 'data', data
                        self.append(parent, data)
            else:
                for attr in st.ownedAttribute:
                    if not attr.association:
                        data = (attr.name, '', False, attr, None, None)
                        #print 'no data', data
                        self.append(parent, data)