void PseudoStateDialog::menu_reference() { Q3PopupMenu m(0); m.insertItem(TR("Choose"), -1); m.insertSeparator(); int index = reflist.findIndex(edreference->currentText()); if (index != -1) m.insertItem(TR("Select in browser"), 0); BrowserNode * bn = 0; if (! visit) { bn = BrowserView::selected_item(); if ((bn != 0) && !bn->deletedp() && ((BrowserPseudoState *) pst->browser_node)->can_reference(bn)) m.insertItem(TR("Choose pseudo state selected in browser"), 1); else bn = 0; } if ((index != -1) || (bn != 0)) { switch (m.exec(QCursor::pos())) { case 0: pseudostates.at(index)->select_in_browser(); break; case 1: { QString s = bn->full_name(TRUE); if ((index = reflist.findIndex(s)) == -1) { // new state, may be created through an other dialog index = 0; QStringList::Iterator iter = reflist.begin(); QStringList::Iterator iter_end = reflist.end(); while ((iter != iter_end) && (*iter < s)) { ++iter; index += 1; } pseudostates.insert((unsigned) index, bn); reflist.insert(iter, s); edreference->insertItem(s, index + 1); } } edreference->setCurrentItem(index + 1); break; default: break; } } }
void ActivityDialog::menu_specification() { Q3PopupMenu m(0); m.insertItem(TR("Choose"), -1); m.insertSeparator(); int index = list.findIndex(edspecification->currentText().stripWhiteSpace()); if (index != -1) m.insertItem(TR("Select in browser"), 0); BrowserNode * bn = 0; if (! visit) { bn = BrowserView::selected_item(); if ((bn != 0) && (bn->get_type() == UmlOperation) && !bn->deletedp()) m.insertItem(TR("Choose operation selected in browser"), 1); else bn = 0; } if ((index != -1) || (bn != 0)) { switch (m.exec(QCursor::pos())) { case 0: opers.at(index)->select_in_browser(); break; case 1: { QString s = bn->full_name(TRUE); if ((index = list.findIndex(s)) == -1) { // new operation, may be created through an other dialog index = 0; QStringList::Iterator iter = list.begin(); QStringList::Iterator iter_end = list.end(); while ((iter != iter_end) && (*iter < s)) { ++iter; index += 1; } opers.insert((unsigned) index, bn); list.insert(iter, s); edspecification->insertItem(s, index + 1); } } edspecification->setCurrentItem(index + 1); break; default: break; } } }
ConstraintTable::ConstraintTable(QWidget * parent, ConstraintCanvas * c) : Q3Table(c->elements.count(), 4, parent) { setSorting(true); setSelectionMode(NoSelection); setRowMovingEnabled(FALSE); horizontalHeader()->setLabel(0, TR("visible")); horizontalHeader()->setLabel(1, " "); horizontalHeader()->setLabel(2, TR("element")); horizontalHeader()->setLabel(3, TR("constraint")); setColumnStretchable(0, FALSE); setColumnStretchable(1, FALSE); int row; bool v = c->indicate_visible; Q3ValueList<BrowserNode *> & hv = c->hidden_visible; BrowserNodeList & elts = c->elements; BrowserNode * bn; QString yes = TR(" yes"); QString empty; elts.sort(); for (bn = elts.first(), row = 0; bn != 0; bn = elts.next(), row += 1) { if ((v) ? hv.findIndex(bn) != -1 : hv.findIndex(bn) == -1) setText(row, 0, yes); setPixmap(row, 1, *(bn->pixmap(0))); TableItem * ti; ti = new TableItem(this, Q3TableItem::Never, bn->full_name(TRUE)); ti->setReplaceable(FALSE); setItem(row, 2, ti); QString s = toUnicode(bn->constraint()); int n = s.count('\n'); ti = new TableItem(this, Q3TableItem::Never, s); ti->setReplaceable(FALSE); setItem(row, 3, ti); if (n != 0) { // note : adjustRow(row) does nothing setRowHeight(row, rowHeight(row) * (n + 1)); } } adjustColumn(0); adjustColumn(1); setColumnStretchable(2, TRUE); setColumnStretchable(3, TRUE); connect(this, SIGNAL(pressed(int, int, int, const QPoint &)), this, SLOT(button_pressed(int, int, int, const QPoint &))); }
FragmentDialog::FragmentDialog(const QStringList & defaults, QString & s, QString & fo, BrowserNode *& d) : QDialog(0, "Fragment dialog", TRUE), name(s), form(fo), refer(d) { setCaption(TR("Fragment dialog")); Q3VBoxLayout * vbox = new Q3VBoxLayout(this); Q3HBoxLayout * hbox; QLabel * lbl1; QLabel * lbl2; SmallPushButton * refer_bt; BrowserNode * bn; vbox->setMargin(5); hbox = new Q3HBoxLayout(vbox); hbox->setMargin(5); hbox->addWidget(lbl1 = new QLabel(TR("name : "), this)); name_cb = new Q3ComboBox(TRUE, this); name_cb->insertItem(name); name_cb->setCurrentItem(0); name_cb->insertStringList(defaults); name_cb->setAutoCompletion(completion()); hbox->addWidget(name_cb); QSizePolicy sp = name_cb->sizePolicy(); sp.setHorData(QSizePolicy::Expanding); name_cb->setSizePolicy(sp); hbox = new Q3HBoxLayout(vbox); hbox->setMargin(5); hbox->addWidget(refer_bt = new SmallPushButton(TR("refer to : "), this)); connect(refer_bt, SIGNAL(clicked()), this, SLOT(menu_refer())); diag_cb = new Q3ComboBox(FALSE, this); BrowserDiagram::instances(nodes, TRUE); diag_cb->insertItem(""); for (bn = nodes.first(); bn != 0; bn = nodes.next()) diag_cb->insertItem(*(bn->pixmap(0)), bn->full_name(TRUE)); diag_cb->setCurrentItem((refer == 0) ? 0 : nodes.findRef(refer) + 1); diag_cb->setSizePolicy(sp); hbox->addWidget(diag_cb); hbox = new Q3HBoxLayout(vbox); hbox->setMargin(5); hbox->addWidget(lbl2 = new QLabel(TR("arguments \n/ value : "), this)); hbox->addWidget(ed_form = new LineEdit(this)); ed_form->setText(form); same_width(lbl1, lbl2, refer_bt); hbox = new Q3HBoxLayout(vbox); hbox->setMargin(5); QPushButton * accept = new QPushButton(TR("&OK"), this); QPushButton * cancel = new QPushButton(TR("&Cancel"), this); QSize bs(cancel->sizeHint()); accept->setDefault(TRUE); accept->setFixedSize(bs); cancel->setFixedSize(bs); hbox->addWidget(accept); hbox->addWidget(cancel); connect(accept, SIGNAL(clicked()), this, SLOT(accept())); connect(cancel, SIGNAL(clicked()), this, SLOT(reject())); }
void ParameterDialog::menu_type() { QMenu m(0); MenuFactory::addItem(m, tr("Choose"), -1); m.addSeparator(); int index = list.indexOf(edtype->currentText().trimmed()); if (index != -1) MenuFactory::addItem(m, tr("Select in browser"), 0); BrowserNode * bn = 0; if (! visit) { bn = BrowserView::selected_item(); if ((bn != 0) && (bn->get_type() == UmlClass) && !bn->deletedp()) MenuFactory::addItem(m, tr("Choose class selected in browser"), 1); else bn = 0; MenuFactory::addItem(m, tr("Create class and choose it"), 2); } if (!visit || (index != -1) || (bn != 0)) { QAction* retAction = m.exec(QCursor::pos()); if(retAction) { switch (retAction->data().toInt()) { case 0: nodes.at(index)->select_in_browser(); break; case 2: bn = BrowserClass::add_class(FALSE, view); if (bn == 0) return; bn->select_in_browser(); // no break case 1: { QString s = bn->full_name(TRUE); if ((index = list.indexOf(s)) == -1) { // new class, may be created through an other dialog index = 0; QStringList::Iterator iter = list.begin(); QStringList::Iterator iter_end = list.end(); while ((iter != iter_end) && (*iter < s)) { ++iter; index += 1; } nodes.insert((unsigned) index, bn); list.insert(iter, s); edtype->insertItem(index + offset,s); } } edtype->setCurrentIndex(index + offset); break; default: break; } } } }
PseudoStateDialog::PseudoStateDialog(PseudoStateData * ps) : Q3TabDialog(0, 0, FALSE, Qt::WDestructiveClose), pst(ps) { BrowserPseudoState * bn = (BrowserPseudoState *) pst->browser_node; BrowserState * refst; switch (bn->get_type()) { case EntryPointPS: case ExitPointPS: if (((BrowserNode *) bn->parent())->get_type() == UmlState) { refst = ((StateData *)((BrowserNode *) bn->parent())->get_data())->get_reference(); break; } // no break default: refst = 0; } bn->edit_start(); if (bn->is_writable()) { setOkButton(TR("OK")); setCancelButton(TR("Cancel")); } else { setOkButton(QString()); setCancelButton(TR("Close")); } QString s = stringify(bn->get_type()); int index = s.find("_"); if (index != -1) s.replace(index, 1, " "); setCaption(TR(s + " dialog")); visit = !hasOkButton(); // general tab Q3Grid * grid = new Q3Grid(2, this); grid->setMargin(5); grid->setSpacing(5); new QLabel(TR("name : "), grid); edname = new LineEdit(bn->get_name(), grid); edname->setReadOnly(visit); new QLabel(TR("stereotype : "), grid); edstereotype = new Q3ComboBox(!visit, grid); edstereotype->insertItem(toUnicode(pst->get_stereotype())); if (! visit) { edstereotype->insertStringList(BrowserPseudoState::default_stereotypes()); edstereotype->insertStringList(ProfiledStereotypes::defaults(bn->get_type())); edstereotype->setAutoCompletion(completion()); } edstereotype->setCurrentItem(0); QSizePolicy sp = edstereotype->sizePolicy(); sp.setHorData(QSizePolicy::Expanding); edstereotype->setSizePolicy(sp); if (refst != 0) { connect(new SmallPushButton(TR("reference :"), grid), SIGNAL(clicked()), this, SLOT(menu_reference())); edreference = new Q3ComboBox(FALSE, grid); edreference->setSizePolicy(sp); BrowserNode * ref = ((pst->get_reference() == 0) || !bn->can_reference(pst->get_reference())) ? 0 : pst->get_reference(); if (visit) { if (ref == 0) edreference->insertItem(""); else edreference->insertItem(ref->full_name(TRUE)); } else { edreference->insertItem(""); edreference->setAutoCompletion(completion()); Q3ListViewItem * child; UmlCode k = bn->get_type(); for (child = refst->firstChild(); child != 0; child = child->nextSibling()) { if (!((BrowserNode *) child)->deletedp()) { UmlCode kk = ((BrowserNode *) child)->get_type(); if (kk == k) pseudostates.append((BrowserNode *) child); else if (kk == UmlRegion) { for (Q3ListViewItem * schild = child->firstChild(); schild != 0; schild = schild->nextSibling()) { if (!((BrowserNode *) schild)->deletedp() && (((BrowserNode *) schild)->get_type() == k)) pseudostates.append((BrowserNode *) schild); } } } } pseudostates.sort(); pseudostates.full_names(reflist); edreference->insertStringList(reflist); edreference->setCurrentItem((ref == 0) ? 0 : pseudostates.indexOf(ref) + 1); } } else edreference = 0; Q3VBox * vtab = new Q3VBox(grid); new QLabel(TR("description :"), vtab); if (! visit) connect(new SmallPushButton(TR("Editor"), vtab), SIGNAL(clicked()), this, SLOT(edit_description())); comment = new MultiLineEdit(grid); comment->setReadOnly(visit); comment->setText(bn->get_comment()); QFont font = comment->font(); if (! hasCodec()) font.setFamily("Courier"); font.setFixedPitch(TRUE); comment->setFont(font); addTab(grid, "Uml"); // USER : list key - value grid = new Q3Grid(2, this); grid->setMargin(5); grid->setSpacing(5); kvtable = new KeyValuesTable(bn, grid, visit); addTab(grid, TR("Properties")); open_dialog(this); }
bool BrowserNode::delete_internal(QString & warning) { if (deletedp()) return TRUE; if (!is_writable() && !root_permission() && !is_from_lib()) { warning += "\n " + TR("%1 is read-only", full_name()); return FALSE; } static Q3PtrList<BrowserNode> targetof; static bool made = FALSE; bool made_here; if (!made) { made = TRUE; made_here = TRUE; referenced_by(targetof, TRUE); } else made_here = FALSE; bool ro = FALSE; if (!root_permission()) { Q3PtrListIterator<BrowserNode> it(targetof); BrowserNode * r; while ((r = it.current()) != 0) { if (!r->is_writable() && !r->is_from_lib()) { ro = TRUE; warning += "\n "; switch (r->get_type()) { case UmlComponent: warning += TR("%1 referenced by the read-only component %2", full_name(), r->full_name()); break; case UmlArtifact: warning += TR("%1 referenced by the read-only artifact %2", full_name(), r->full_name()); break; default: warning += TR("%1 is the target of the read-only relation %2", full_name(), r->full_name()); break; } } ++it; } } if (made_here) { made = FALSE; targetof.clear(); } if (ro) return FALSE; // sub elts Q3ListViewItem * child; bool ok = TRUE; for (child = firstChild(); child != 0; child = child->nextSibling()) ok &= ((BrowserNode *) child)->delete_internal(warning); if (ok) { is_deleted = TRUE; if (is_marked) { marked_list.removeRef(this); is_marked = FALSE; } get_data()->delete_it(); repaint(); package_modified(); } return ok; }
void ActivityObjectDialog::menu_type() { Q3PopupMenu m(0); m.insertItem(TR("Choose"), -1); m.insertSeparator(); int index = list.findIndex(edtype->currentText().stripWhiteSpace()); if (index != -1) m.insertItem(TR("Select in browser"), 0); BrowserNode * bn = 0; if (! visit) { bn = BrowserView::selected_item(); if ((bn != 0) && (bn->get_type() == UmlClass) && !bn->deletedp()) m.insertItem(TR("Choose class selected in browser"), 1); else bn = 0; m.insertItem(TR("Create class and choose it"), 2); } if (!visit || (index != -1) || (bn != 0)) { switch (m.exec(QCursor::pos())) { case 0: nodes.at(index)->select_in_browser(); break; case 2: bn = BrowserClass::add_class(FALSE, view); if (bn == 0) return; bn->select_in_browser(); // no break case 1: { QString s = bn->full_name(TRUE); if ((index = list.findIndex(s)) == -1) { // new class, may be created through an other dialog QStringList::Iterator iter = list.begin(); QStringList::Iterator iter_end = list.end(); index = 0; while ((iter != iter_end) && (*iter < s)) { ++iter; index += 1; } nodes.insert((unsigned) index, bn); list.insert(iter, s); edtype->insertItem(s, index + offset); } } edtype->setCurrentItem(index + offset); break; default: break; } } }