// have marked elements not yet drawn ? static bool marked_not_yet_drawn(Q3PtrDict<DiagramItem> & drawn) { const Q3PtrList<BrowserNode> & l = BrowserNode::marked_nodes(); Q3PtrListIterator<BrowserNode> it(l); BrowserNode * bn; for (; (bn = it.current()) != 0; ++it) { UmlCode k = bn->get_type(); switch (k) { default: if (!IsaSimpleRelation(k)) break; // no break case UmlComponent: case UmlDeploymentNode: case UmlArtifact: case UmlPackage: if (drawn[bn->get_data()] == 0) return TRUE; } } return FALSE; }
void ClassDiagramView::save(QTextStream & st, QString & warning, bool copy) const { DiagramItemList items(canvas()->allItems()); DiagramItem * di; if (!copy) // sort is useless for a copy items.sort(); st << "format " << FILEFORMAT << "\n"; // save first the classes packages fragment notes and icons for (di = items.first(); di != 0; di = items.next()) { switch (di->type()) { case UmlClass: case UmlNote: case UmlText: case UmlImage: case UmlPackage: case UmlFragment: case UmlIcon: if (!copy || di->copyable()) di->save(st, FALSE, warning); // no break default: break; } } // then saves relations for (di = items.first(); di != 0; di = items.next()) { if (!copy || di->copyable()) { UmlCode k = di->type(); if (IsaRelation(k) || IsaSimpleRelation(k) || (k == UmlInner)) di->save(st, FALSE, warning); } } // then saves anchors for (di = items.first(); di != 0; di = items.next()) if ((!copy || di->copyable()) && (di->type() == UmlAnchor)) di->save(st, FALSE, warning); if (!copy && (preferred_zoom != 0)) { nl_indent(st); st << "preferred_whz " << preferred_size.width() << ' ' << preferred_size.height() << ' ' << preferred_zoom; } nl_indent(st); st << "end\n"; }
void UcUseCaseCanvas::connexion(UmlCode action, DiagramItem * dest, const QPoint &, const QPoint &) { ArrowCanvas * a; if (IsaSimpleRelation(action)) a = new SimpleRelationCanvas(the_canvas(), this, dest, 0, action, 0, -1.0, -1.0); else a = new ArrowCanvas(the_canvas(), this, dest, action, 0, FALSE, -1.0, -1.0); a->show(); the_canvas()->select(a); }
void PackageCanvas::connexion(UmlCode action, DiagramItem * dest, const QPoint &, const QPoint &) { ArrowCanvas * r; if (IsaSimpleRelation(action)) r = new SimpleRelationCanvas(the_canvas(), this, dest, 0, action, 0, -1.0, -1.0); else r = new ArrowCanvas(the_canvas(), this, dest, action, 0, FALSE, -1.0, -1.0); r->show(); the_canvas()->select(r); }
foreach (BrowserNode *bn, BrowserNode::marked_nodes()) { UmlCode k = bn->get_type(); switch (k) { default: if (!IsaSimpleRelation(k)) break; // no break case UmlComponent: case UmlPackage: if (drawn[bn->get_data()] == 0) return TRUE; } }
bool DiagramItem::has_relation(BasicData * def) const { // manage only SimpleRelations Q3PtrListIterator<ArrowCanvas> it(lines); while (it.current()) { if (IsaSimpleRelation(it.current()->type()) && (it.current()->get_data() == def)) return TRUE; ++it; } return FALSE; }
static void get_drawn(DiagramItemList & items, Q3PtrDict<DiagramItem> & drawn) { DiagramItem * di; for (di = items.first(); di != 0; di = items.next()) { UmlCode k = di->type(); switch (k) { case UmlComponent: case UmlPackage: drawn.replace(di->get_bn()->get_data(), di); break; default: if (IsaSimpleRelation(k)) drawn.replace(((ArrowCanvas *) di)->get_data(), di); } } }
// have marked elements not yet drawn ? static bool marked_not_yet_drawn(Q3PtrDict<DiagramItem> & drawn) { const QList<BrowserNode *> & l = BrowserNode::marked_nodes(); foreach (BrowserNode *bn, l) { UmlCode k = bn->get_type(); switch (k) { default: if (!IsaRelation(k) && !IsaSimpleRelation(k)) break; // no break case UmlClass: case UmlPackage: case UmlUseCase: if (drawn[bn->get_data()] == 0) return TRUE; } }
void ComponentDiagramView::add_marked_elements(const QPoint& p, Q3PtrDict<DiagramItem> & drawn) { QApplication::setOverrideCursor(Qt::waitCursor); history_save(); history_protected = TRUE; int xmax = canvas()->width() - Diagram_Margin; int ymax = canvas()->height() - Diagram_Margin; int x = p.x(); int y = p.y(); int future_y = y; const Q3PtrList<BrowserNode> & l = BrowserNode::marked_nodes(); Q3PtrListIterator<BrowserNode> it(l); BrowserNode * bn; for (; (bn = it.current()) != 0; ++it) { if (drawn[bn->get_data()] == 0) { DiagramCanvas * dc; switch (bn->get_type()) { case UmlComponent: dc = new ComponentCanvas(bn, the_canvas(), x, y); break; case UmlPackage: dc = new PackageCanvas(bn, the_canvas(), x, y, 0); break; default: continue; } drawn.replace(dc->get_bn()->get_data(), dc); if ((x + dc->width()) > xmax) dc->move(x = Diagram_Margin, y = future_y); if (y + dc->height() > ymax) { dc->move(x = Diagram_Margin, y = Diagram_Margin); future_y = y + dc->height() + Diagram_Margin; } else { int bot = y + dc->height() + Diagram_Margin; if (bot > future_y) future_y = bot; } x = x + dc->width() + Diagram_Margin; dc->show(); dc->upper(); } } UmlCanvas * cnv = (UmlCanvas *) canvas(); if (! cnv->must_draw_all_relations()) { for (it.toFirst(); (bn = it.current()) != 0; ++it) { if ((drawn[bn->get_data()] == 0) && IsaSimpleRelation(bn->get_type())) SimpleRelationCanvas::drop(bn, cnv, drawn); } } canvas()->update(); history_protected = FALSE; window()->package_modified(); QApplication::restoreOverrideCursor(); }
void ArrowPointCanvas::connexion(UmlCode action, DiagramItem * dest, const QPoint &, const QPoint &) { ArrowCanvas * a; switch (the_canvas()->browser_diagram()->get_type()) { case UmlClassDiagram: if (IsaRelation(action)) { a = new RelationCanvas(the_canvas(), this, dest, 0, action, 0, -1.0, -1.0); a->show(); the_canvas()->select(a); return; } break; case UmlColDiagram: if (action == UmlLink) { a = new CodLinkCanvas(the_canvas(), this, dest, 0, -1.0, -1.0); a->show(); the_canvas()->select(a); return; } break; case UmlObjectDiagram: if (action == UmlObjectLink) { a = new ObjectLinkCanvas(the_canvas(), this, dest, UmlObjectLink, 0, -1.0, -1.0); a->show(); the_canvas()->select(a); return; } break; case UmlDeploymentDiagram: case UmlComponentDiagram: if (action == UmlContain) { a = new AssocContainCanvas(the_canvas(), this, dest, 0, -1.0, -1.0); a->show(); the_canvas()->select(a); return; } case UmlStateDiagram: if (action == UmlTransition) { a = new TransitionCanvas(the_canvas(), this, dest, 0, 0, -1.0, -1.0); a->show(); the_canvas()->select(a); return; } case UmlActivityDiagram: if (action == UmlFlow) { a = new FlowCanvas(the_canvas(), this, dest, 0, 0, -1.0, -1.0); a->show(); the_canvas()->select(a); return; } default: // to avoid warning break; } if (IsaSimpleRelation(action)) a = new SimpleRelationCanvas(the_canvas(), this, dest, 0, action, 0, -1.0, -1.0); else a = new ArrowCanvas(the_canvas(), this, dest, action, 0, FALSE, -1.0, -1.0); a->show(); the_canvas()->select(a); }