Exemplo n.º 1
0
void SdMsgBaseCanvas::update_st(QString st) {
  if (st.isEmpty()) {
    if (stereotype != 0) {
      // removes it
      the_canvas()->del(stereotype);
      stereotype = 0;
    }
  }
  else {
    if (stereotype == 0) {
      // adds stereotype
      stereotype = new LabelCanvas(st, the_canvas(), 0, 0);
      default_stereotype_position();	    
      stereotype->show();
    }
    else if ((stereotype != 0) &&
	     (stereotype->get_name() != st)) {
      // update st
      stereotype->set_name(st);
      default_stereotype_position();
    }
  }
}
Exemplo n.º 2
0
void AssocContainCanvas::menu(const QPoint&) {
  Q3PopupMenu m(0);
  Q3PopupMenu geo(0);
  ArrowCanvas * aplabel;
  ArrowCanvas * apstereotype;
    
  search_supports(aplabel, apstereotype);
  
  AssocContainCanvas * plabel = (AssocContainCanvas *) aplabel;
  AssocContainCanvas * pstereotype = (AssocContainCanvas *) apstereotype;
  
  MenuFactory::createTitle(m, TR("Association"));
  m.insertSeparator();
  m.insertItem(TR("Edit"),1);
  
  if (pstereotype || plabel) {
    m.insertSeparator();
    m.insertItem(TR("Select stereotype and label"), 2);
    m.insertItem(TR("Default stereotype and label position"), 3);
    if (plabel && (label == 0))
      m.insertItem(TR("Attach label to this segment"), 4);
    if (pstereotype && (stereotype == 0))
      m.insertItem(TR("Attach stereotype to this segment"), 5);
  }
  
  if (get_start() != get_end()) {
    m.insertSeparator();
    init_geometry_menu(geo, 10);
    m.insertItem(TR("Geometry (Ctrl+l)"), &geo);
  }
  
  m.insertSeparator();
  m.insertItem(TR("Remove from diagram"), 6);
  m.insertItem(TR("Delete from model"), 7);

  int rank = m.exec(QCursor::pos());
  
  switch (rank) {
  case 1:
    open();
    return;
  case 2:
    the_canvas()->unselect_all();
    if (plabel) 
      the_canvas()->select(plabel->label);
    if (pstereotype)
      the_canvas()->select(pstereotype->stereotype);
    return;
  case 3:
    if (plabel) 
      plabel->default_label_position();
    if (pstereotype)
      pstereotype->default_stereotype_position();
    break;
  case 4:
    label = plabel->label;
    plabel->label = 0;
    default_label_position();
    break;
  case 5:
    stereotype = pstereotype->stereotype;
    pstereotype->stereotype = 0;
    default_stereotype_position();
    break;
  case 6:
    // not removed from the model : just hide it
    remove(FALSE);
    break;
  case 7:
    get_start()->unassociate(get_end());	// line will be deleted
    break;
  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();
}
Exemplo n.º 3
0
void SimpleRelationCanvas::stereotype_default_position() const
{
    default_stereotype_position();
    package_modified();
}
Exemplo n.º 4
0
void FlowCanvas::stereotype_default_position() const {
  default_stereotype_position();
  package_modified();
}
Exemplo n.º 5
0
void SdSelfMsgCanvas::menu(const QPoint&) {
    Q3PopupMenu m(0);

    m.insertItem(new MenuTitle(TR("Message"), m.font()), -1);
    m.insertSeparator();
    m.insertItem(TR("Upper"), 0);
    m.insertItem(TR("Lower"), 1);
    m.insertItem(TR("Go up"), 13);
    m.insertItem(TR("Go down"), 14);
    m.insertSeparator();
    m.insertItem(TR("Edit"), 2);
    m.insertItem(TR("Edit drawing settings"), 3);
    m.insertSeparator();
    if (msg != 0)
        m.insertItem(TR("Select operation in browser"), 8);
    m.insertItem(TR("Select linked items"), 4);
    if (label || stereotype) {
        m.insertSeparator();
        m.insertItem(TR("Select stereotype and label"), 5);
        m.insertItem(TR("Default stereotype and label position"), 6);
    }
    if (((BrowserSeqDiagram *) the_canvas()->browser_diagram())
            ->is_overlapping_bars()) {
        m.insertSeparator();
        m.insertItem(TR("Go to new overlapping bar"), 9);
        if (dest->isOverlappingDuration())
            m.insertItem(TR("Go to parent bar"), 10);
    }
    m.insertSeparator();
    m.insertItem(TR("Remove from diagram"), 7);

    switch (m.exec(QCursor::pos())) {
    case 0:
        upper();
        // force son reaffichage
        hide();
        show();
        break;
    case 1:
        lower();
        // force son reaffichage
        hide();
        show();
        break;
    case 13:
        z_up();
        // force son reaffichage
        hide();
        show();
        break;
    case 14:
        z_down();
        // force son reaffichage
        hide();
        show();
        break;
    case 2:
        open();
        break;
    case 3:
        edit_drawing_settings();
        return;
    case 4:
        select_associated();
        break;
    case 5:
        the_canvas()->unselect_all();
        if (label)
            the_canvas()->select(label);
        if (stereotype)
            the_canvas()->select(stereotype);
        break;
    case 6:
        if (label)
            default_label_position();
        if (stereotype)
            default_stereotype_position();
        break;
    case 7:
        delete_it();
        return;
    case 8:
        msg->get_browser_node()->select_in_browser();
        return;
    case 9:
        ((SdDurationCanvas *) dest)->go_up(this, TRUE);
        break;
    case 10:
        ((SdDurationCanvas *) dest)->go_down(this);
    default:
        return;
    }

    package_modified();
    canvas()->update();
}