void CodClassInstCanvas::same_drawing_settings(QList<DiagramItem> & l) { QListIterator<DiagramItem> it(l); CodClassInstCanvas * x = (CodClassInstCanvas *) it.current(); while (++it, it.current() != 0) { CodClassInstCanvas * o = (CodClassInstCanvas *) it.current(); o->write_horizontally = x->write_horizontally; o->show_context_mode = x->show_context_mode; o->itscolor = x->itscolor; o->modified(); // call package_modified() } }
void CodClassInstCanvas::send(ToolCom * com, QCanvasItemList & all) { QList<CodClassInstCanvas> l; QCanvasItemList::Iterator cit; for (cit = all.begin(); cit != all.end(); ++cit) { DiagramItem *di = QCanvasItemToDiagramItem(*cit); if ((di != 0) && (*cit)->visible()) { switch (di->type()) { case UmlClass: case UmlClassInstance: l.append((CodClassInstCanvas *) di); break; default: break; } } } com->write_unsigned(l.count()); QListIterator<CodClassInstCanvas> it(l); for (; it.current(); ++it) { CodClassInstCanvas * i = it.current(); com->write_unsigned((unsigned) i->get_ident()); if (i->browser_node->get_type() == UmlClass) { com->write_id(0); QCString s = fromUnicode(i->iname); com->write_string((const char *) s); } i->browser_node->write_id(com); } }
CodClassInstCanvas * CodClassInstCanvas::read(char * & st, UmlCanvas * canvas, char * k) { if (!strcmp(k, "classinstance_ref")) return ((CodClassInstCanvas *) dict_get(read_id(st), "classinstance", canvas)); else if (!strcmp(k, "classinstance")) { // old release and graphic instance int id = read_id(st); BrowserClass * cl = BrowserClass::read_ref(st); CodClassInstCanvas * result = new CodClassInstCanvas(cl, canvas, 0, 0, id); result->ClassInstCanvas::read(st, k); if (read_file_format() < 74) result->show_context_mode = noContext; if (!strcmp(k, "xyz")) { read_double(st); read_double(st); read_double(st); k = read_keyword(st); } if (strcmp(k, "name")) wrong_keyword(k, "name"); result->iname = read_string(st); read_keyword(st, "xyz"); read_xyz(st, result); result->compute_size(); result->set_center100(); result->show(); return result; } else if (!strcmp(k, "classinstancecanvas")) { int id = read_id(st); BrowserClassInstance * icl = BrowserClassInstance::read_ref(st); read_keyword(st, "xyz"); int x = (int) read_double(st); CodClassInstCanvas * result = new CodClassInstCanvas(icl, canvas, x, (int) read_double(st), id); result->setZ(read_double(st)); result->ClassInstCanvas::read(st, k); // update k if (read_file_format() < 74) result->show_context_mode = noContext; result->read_stereotype_property(st, k); // updates k if (strcmp(k, "end")) wrong_keyword(k, "end"); if (result->get_type() != 0) { // not a deleted instance result->compute_size(); result->set_center100(); result->show(); result->check_stereotypeproperties(); } return result; } else return 0; }
void ColDiagramView::dropEvent(QDropEvent * e) { BrowserNode * bn; QPoint p = viewportToContents(e->pos()); if ((bn = UmlDrag::decode(e, UmlClassInstance)) != 0) { history_save(); CodClassInstCanvas * i = new CodClassInstCanvas((BrowserClassInstance *) bn, the_canvas(), p.x(), p.y(), 0); history_protected = TRUE; i->show(); i->upper(); canvas()->update(); history_protected = FALSE; window()->package_modified(); } else if ((bn = UmlDrag::decode(e, UmlClass)) != 0) { history_save(); CodClassInstCanvas * cli = new CodClassInstCanvas(bn, the_canvas(), p.x(), p.y(), 0); history_protected = TRUE; cli->show(); cli->upper(); canvas()->update(); history_protected = FALSE; window()->package_modified(); } else if ((bn = UmlDrag::decode(e, UmlPackage)) != 0) { history_save(); PackageCanvas * pk = new PackageCanvas(bn, the_canvas(), p.x(), p.y(), 0); history_protected = TRUE; pk->show(); pk->upper(); canvas()->update(); window()->package_modified(); } else if (((bn = UmlDrag::decode(e, UmlClassDiagram)) != 0) || ((bn = UmlDrag::decode(e, UmlUseCaseDiagram)) != 0) || ((bn = UmlDrag::decode(e, UmlSeqDiagram)) != 0) || ((bn = UmlDrag::decode(e, UmlColDiagram)) != 0) || ((bn = UmlDrag::decode(e, UmlObjectDiagram)) != 0) || ((bn = UmlDrag::decode(e, UmlComponentDiagram)) != 0) || ((bn = UmlDrag::decode(e, UmlDeploymentDiagram)) != 0) || ((bn = UmlDrag::decode(e, UmlStateDiagram, TRUE)) != 0) || ((bn = UmlDrag::decode(e, UmlActivityDiagram, TRUE)) != 0)) { history_save(); IconCanvas * ic = new IconCanvas(bn, the_canvas(), p.x(), p.y(), 0); history_protected = TRUE; ic->show(); ic->upper(); canvas()->update(); history_protected = FALSE; window()->package_modified(); } }
void ColDiagramView::contentsMousePressEvent(QMouseEvent * e) { if (!window()->frozen()) { if (e->button() == ::Qt::RightButton) DiagramView::contentsMousePressEvent(e); else { UmlCode c = window()->buttonOn(); switch (c) { case UmlClass: { history_protected = FALSE; unselect_all(); window()->selectOn(); history_save(); BrowserNode * parent = ((BrowserNode *) window()->browser_diagram()->parent()); BrowserClass * b = BrowserClass::get_class(parent); if (b != 0) { CodClassInstCanvas * cl = new CodClassInstCanvas(b, the_canvas(), e->x(), e->y(), 0); cl->show(); cl->upper(); window()->package_modified(); } } canvas()->update(); break; case UmlClassInstance: { history_protected = TRUE; unselect_all(); window()->selectOn(); history_save(); BrowserNode * parent = ((BrowserNode *) window()->browser_diagram()->parent()); BrowserClassInstance * b = BrowserClassInstance::get_classinstance(parent); if (b != 0) { CodClassInstCanvas * cl = new CodClassInstCanvas(b, the_canvas(), e->x(), e->y(), 0); cl->show(); cl->upper(); window()->package_modified(); } } canvas()->update(); history_protected = FALSE; break; case UmlSelfLink: { history_protected = TRUE; window()->selectOn(); history_save(); Q3CanvasItem * ci = the_canvas()->collision(e->pos()); if (ci != 0) { DiagramItem * i = QCanvasItemToDiagramItem(ci); if (i != 0) { QString err = i->may_start(c); if (!err.isEmpty()) msg_critical("Douml", err); else { i->connexion(c, i, e->pos(), e->pos()); window()->package_modified(); } } } } canvas()->update(); history_protected = FALSE; break; default: DiagramView::contentsMousePressEvent(e); break; } } } else DiagramView::contentsMousePressEvent(e); }