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)
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)
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)