void ColMsgTable::refresh(ColMsgList & m) { ColMsg * msg; Q3PtrListIterator<ColMsg> it(m); for ( ; (msg = it.current()) != 0; ++it) { QString def = msg->def(FALSE, TRUE, UmlView, DefaultShowContextMode); CodObjCanvas * from; CodObjCanvas * to; int r = numRows(); msg->in->get_from_to(from, to, msg->is_forward); setNumRows(r + 1); setItem(r, ABS_RANK_COL, new MsgTableItem(this, msg->absolute_rank)); setItem(r, HI_RANK_COL, new MsgTableItem(this, msg->hierarchical_rank)); setItem(r, FROM_COL, new MsgTableItem(this, from->get_full_name())); setItem(r, MSG_COL, new MsgTableItem(this, def.mid(def.find(' ') + 1))); setItem(r, TO_COL, new MsgTableItem(this, to->get_full_name())); setItem(r, CMD_COL, new MsgTableItem(this, TR("do"), Qt::AlignHCenter)); flat_msg_list.append(msg); if (rec) refresh(msg->msgs); } }
void ColMsg::send(ToolCom * com, const ColMsgList & l) { ColMsgList lm; get_all(l, lm); lm.sort(); com->write_unsigned(lm.count()); ColMsg * msg; for (msg = lm.first(); msg != 0; msg = lm.next()) { if (msg->operation == 0) { com->write_id(0); com->write_string(msg->explicit_operation); } else if (msg->operation->deletedp()) { com->write_id(0); com->write_string(msg->operation->get_browser_node()->get_name()); } else msg->operation->get_browser_node()->write_id(com); CodObjCanvas * from; CodObjCanvas * to; msg->in->get_from_to(from, to, msg->is_forward); com->write_unsigned((unsigned) from->get_ident()); com->write_unsigned((unsigned) to->get_ident()); com->write_unsigned(msg->absolute_rank); com->write_string((const char *) msg->hierarchical_rank); } }
bool CodDirsCanvas::copyable() const { CodObjCanvas * from; CodObjCanvas * to; link->get_start_end(from, to); return link->isSelected() && from->copyable() && to->copyable(); }
foreach (ColMsg *msg, m) { QString def = msg->def(FALSE, TRUE, UmlView, DefaultShowContextMode); CodObjCanvas * from; CodObjCanvas * to; int r = rowCount(); msg->in->get_from_to(from, to, msg->is_forward); setRowCount(r + 1); setItem(r, ABS_RANK_COL, new MsgTableItem(msg->absolute_rank)); setItem(r, HI_RANK_COL, new MsgTableItem(msg->hierarchical_rank)); setItem(r, FROM_COL, new MsgTableItem(from->get_full_name())); setItem(r, MSG_COL, new MsgTableItem(def.mid(def.indexOf(" ") + 1))); setItem(r, TO_COL, new MsgTableItem(to->get_full_name())); setItem(r, CMD_COL, new MsgTableItem(tr("do"), Qt::AlignHCenter)); flat_msg_list.append(msg); if (rec) refresh(msg->msgs); }
void CodLinkCanvas::menu(const QPoint&) { bool new_dirs; CodDirsCanvas * d = find_dirs(); CodObjCanvas * from; CodObjCanvas * to; get_start_end(from, to); if (d == 0) { new_dirs = TRUE; (d = dirs = new CodDirsCanvas(the_canvas(), this, 0))->show(); } else new_dirs = FALSE; Q3PopupMenu m; Q3PopupMenu geo; m.insertItem(new MenuTitle(TR("Link"), m.font()), -1); m.insertSeparator(); m.insertItem(TR("add messages to ") + from->get_full_name(), 1); m.insertItem(TR("add messages to ") + to->get_full_name(), 2); m.insertSeparator(); m.insertItem(TR("Edit its messages"), 3); m.insertItem(TR("Edit all the messages"), 4); m.insertSeparator(); m.insertItem(TR("Select linked items"), 7); m.insertSeparator(); if (!new_dirs) { m.insertItem(TR("Edit drawing settings"), 5); m.insertSeparator(); } if (get_start() != get_end()) { init_geometry_menu(geo, 10); m.insertItem(TR("Geometry (Ctrl+l)"), &geo); m.insertSeparator(); } m.insertItem(TR("Remove from diagram"), 6); int rank = m.exec(QCursor::pos()); switch (rank) { case 1: { CodAddMsgDialog dialog(to, from, d, (ColDiagramView *) the_canvas()->get_view(), FALSE); dialog.raise(); if (dialog.exec() != QDialog::Accepted) return; } break; case 2: { CodAddMsgDialog dialog(from, to, d, (ColDiagramView *) the_canvas()->get_view(), TRUE); dialog.raise(); if (dialog.exec() != QDialog::Accepted) return; } break; case 3: CodEditMsgDialog::exec((ColDiagramView *) the_canvas()->get_view(), d->get_msgs()); return; case 4: CodEditMsgDialog::exec((ColDiagramView *) the_canvas()->get_view(), ((ColDiagramView *) the_canvas()->get_view())->get_msgs()); return; case 5: if (d->edit_drawing_settings()) modified(); return; case 6: delete_it(); ((ColDiagramView *) the_canvas()->get_view())->update_msgs(); break; case 7: select_associated(); return; default: if (rank >= 10) { rank -= 10; if (rank == RecenterBegin) set_decenter(-1.0, decenter_end); else if (rank == RecenterEnd) set_decenter(decenter_begin, -1.0); else if (rank != (int) geometry) set_geometry((LineGeometry) rank, TRUE); else return; } else return; } package_modified(); if (new_dirs && (dirs != 0)) { if (dirs->get_msgs().count() == 0) { dirs->delete_it(); dirs = 0; } else dirs->update_pos(beginp, endp); } }
CodChangeMsgDialog::CodChangeMsgDialog(QWidget * parent, ColMsg * m) : QDialog(parent/*, "Communication message dialog", TRUE*/), msg(m) { setWindowTitle(tr("Communicationg message dialog")); QVBoxLayout * vbox = new QVBoxLayout(this); QHBoxLayout * hbox; vbox->setMargin(5); hbox = new QHBoxLayout(); vbox->addLayout(hbox); hbox->setMargin(5); SmallPushButton * b = new SmallPushButton(tr("message :"), this); hbox->addWidget(b); connect(b, SIGNAL(clicked()), this, SLOT(menu_op())); edoper = new QComboBox(this); edoper->setEditable(true); edoper->setAutoCompletion(completion()); if (msg->operation == 0) edoper->addItem(msg->explicit_operation); else edoper->addItem(msg->operation->definition(TRUE, FALSE)); CodObjCanvas * from; CodObjCanvas * to; msg->in->get_from_to(from, to, msg->is_forward); // gets operations cl = to->get_class(); if (cl != 0) { cl->get_opers(opers, list); edoper->addItems(list); if (!cl->is_writable()) cl = 0; } edoper->setCurrentIndex(0); QSizePolicy sp = edoper->sizePolicy(); sp.setHorizontalPolicy(QSizePolicy::Expanding); edoper->setSizePolicy(sp); hbox->addWidget(edoper); // ok & cancel hbox = new QHBoxLayout(); vbox->addLayout(hbox); hbox->setMargin(5); QPushButton * ok = new QPushButton(tr("&OK"), this); QPushButton * cancel = new QPushButton(tr("&Cancel"), this); QSize bs(cancel->sizeHint()); ok->setDefault(TRUE); ok->setFixedSize(bs); cancel->setFixedSize(bs); hbox->addWidget(ok); hbox->addWidget(cancel); connect(ok, SIGNAL(clicked()), this, SLOT(accept())); connect(cancel, SIGNAL(clicked()), this, SLOT(reject())); }