void UcClassCanvas::draw_all_depend_gene(UcClassCanvas * end) { Q3ListViewItem * child; Q3CanvasItemList all = canvas()->allItems(); Q3CanvasItemList::Iterator cit; for (child = browser_node->firstChild(); child; child = child->nextSibling()) { if (dependencyOrGeneralization(((BrowserNode *) child)->get_type()) && !((BrowserNode *) child)->deletedp()) { RelationData * def = ((RelationData *) ((BrowserNode *) child)->get_data()); if ((def->get_start_class() == browser_node) && // rel begins by this ((end == 0) || (def->get_end_class() == end->browser_node)) && !has_relation(def)) { // adds it in case the other class is drawn BrowserClass * end_class = ((BrowserClass *) def->get_end_class()); DiagramItem * di; if (end_class == browser_node) di = this; else { di = 0; for (cit = all.begin(); cit != all.end(); ++cit) { DiagramItem * adi = QCanvasItemToDiagramItem(*cit); if ((adi != 0) && // an uml canvas item (adi->type() == UmlClass) && (((UcClassCanvas *) adi)->browser_node == end_class) && ((((UcClassCanvas *) adi) == end) || (*cit)->visible())) { // other class canvas find di = adi; break; } } } if (di != 0) (new RelationCanvas(the_canvas(), this, di, ((BrowserClass *) browser_node), def->get_type(), 0, -1.0, -1.0, def)) ->show(); } } } if ((end == 0) && !DrawingSettings::just_modified() && !on_load_diagram()) { for (cit = all.begin(); cit != all.end(); ++cit) { DiagramItem * di = QCanvasItemToDiagramItem(*cit); if ((di != 0) && // an uml canvas item (di->type() == UmlClass) && (((UcClassCanvas *) di) != this) && !((UcClassCanvas *) di)->browser_node->deletedp() && ((UcClassCanvas *) di)->visible()) ((UcClassCanvas *) di)->draw_all_depend_gene(this); } } }
void OdClassInstCanvas::draw_all_relations(OdClassInstCanvas * end) { QCanvasItemList all = canvas()->allItems(); QCanvasItemList::Iterator cit; ClassInstanceData * d = (ClassInstanceData *) browser_node->get_data(); const QValueList<SlotRel> & rels = d->get_relations(); QValueList<SlotRel>::ConstIterator it_rel; for (it_rel = rels.begin(); it_rel != rels.end(); it_rel++) { const SlotRel & slot_rel = *it_rel; if (!has_relation(slot_rel)) { BrowserClassInstance * end_inst = slot_rel.value; DiagramItem * di; if (end_inst == browser_node) di = this; else { di = 0; for (cit = all.begin(); cit != all.end(); ++cit) { DiagramItem * adi = QCanvasItemToDiagramItem(*cit); if ((adi != 0) && // an uml canvas item (adi->type() == UmlClassInstance) && (((OdClassInstCanvas *) adi)->browser_node == end_inst) && ((((OdClassInstCanvas *) adi) == end) || (*cit)->visible())) { // other class canvas find di = adi; break; } } } if (di != 0) { if (slot_rel.is_a) (new ObjectLinkCanvas(the_canvas(), this, di, slot_rel.rel->get_type(), 0, -1.0, -1.0, slot_rel.rel)) ->show(); else (new ObjectLinkCanvas(the_canvas(), di, this, slot_rel.rel->get_type(), 0, -1.0, -1.0, slot_rel.rel)) ->show(); } } } if ((end == 0) && !DrawingSettings::just_modified() && !on_load_diagram()) { for (cit = all.begin(); cit != all.end(); ++cit) { DiagramItem * di = QCanvasItemToDiagramItem(*cit); if ((di != 0) && // an uml canvas item (di->type() == UmlClassInstance) && (((OdClassInstCanvas *) di) != this) && !((OdClassInstCanvas *) di)->browser_node->deletedp() && ((OdClassInstCanvas *) di)->visible()) ((OdClassInstCanvas *) di)->draw_all_relations(this); } } }