예제 #1
0
void LabelCanvas::moveBy(double dx, double dy)
{
    QGraphicsSimpleTextItem::moveBy(dx, dy);

    if (! the_canvas()->do_zoom())
        set_center100();
}
예제 #2
0
void NoteCanvas::read_internal(char *& st)
{
    const char * p = st;
    QTextCodec* codec = QTextCodec::codecForLocale();
    QTextStream stream(p);
    stream.setCodec(codec);
    QByteArray ba;
    stream   >> ba;
    QString temp = QString::fromLocal8Bit(ba);
    char* test = read_string(st);
    Q_UNUSED(test);
    note = temp;


    char * k = read_keyword(st);
    read_color(st, "color", itscolor, k);
    read_font(st, "font", itsfont, k);
    read_color(st, "fg", fg_c, k);

    if (strcmp(k, "xyzwh"))
        wrong_keyword(k, "xyzwh");

    read_xyzwh(st, this);
    width_scale100 = width();
    height_scale100 = height();
    set_center100();
    show();
}
StereotypePropertiesCanvas::StereotypePropertiesCanvas(UmlCanvas * canvas,
        DiagramItem * it,
        QString s)
    : NoteCanvas(canvas, 0, 0, 0), di(it)
{
    connect(DrawingSettings::instance(), SIGNAL(changed()), this, SLOT(update()));

    note = s;	// already unicode

    QFontMetrics fm(the_canvas()->get_font(itsfont));
    QSize sz = fm.size(0, s);
    const int margin = (int)(2 * NOTE_MARGIN * the_canvas()->zoom());
    int w = sz.width() + margin;
    int h = sz.height() + margin;

    if (w < width())
        w = width();

    if (h < height())
        h = height();

    DiagramCanvas::resize(w, h);
    setZ(it->get_z());

    width_scale100 = w;
    height_scale100 = h;
    set_center100();
}
예제 #4
0
SdSelfMsgCanvas::SdSelfMsgCanvas(UmlCanvas * canvas, SdMsgSupport * d,
                                 UmlCode l, int v, int id)
    : SdMsgBaseCanvas(canvas, d, l, v + 1, id) {
    dest->add(this);
    update_hpos();
    setSize(SELF_MSG_WIDTH, SELF_MSG_HEIGHT);
    check_vpos(d->rect());
    set_center100();
    show();
}
예제 #5
0
ImageCanvas::ImageCanvas(UmlCanvas * canvas, int x, int y, QString pa, int id)
    : DiagramCanvas(0, canvas, x, y, 30, 30, id), path(pa) {
    if ((px = get_pixmap(path)) != 0) {
        width_scale100 = px->width();
        height_scale100 = px->height();

        px = get_pixmap(path, canvas->zoom());
        setSize(px->width(), px->height());
        set_center100();
    }
}
예제 #6
0
ImageCanvas::ImageCanvas(UmlCanvas * canvas, int x, int y, QString pa, int id)
    : DiagramCanvas(0, canvas, x, y, 30, 30, id), path(pa)
{
    if ((px = get_pixmap(path.toLatin1().constData())) != 0) {
        width_scale100 = px->width();
        height_scale100 = px->height();

        px = get_pixmap(path.toLatin1().constData(), canvas->zoom());
        setRect(rect().x(), rect().y(), px->width(), px->height());
        set_center100();
    }
}
예제 #7
0
void DiagramCanvas::moveBy(double dx, double dy)
{
    hide_lines();

    QGraphicsRectItem::moveBy(dx, dy);

    if (!((UmlCanvas *) canvas())->do_zoom())
        set_center100();
    if ((label != 0) && !label->isSelected())
        label->moveBy(dx, dy);
    if ((stereotypeproperties != 0) && !stereotypeproperties->selected())
        stereotypeproperties->moveBy(dx, dy);
    update_show_lines();
}
예제 #8
0
SdLifeLineCanvas::SdLifeLineCanvas(UmlCanvas * canvas, SdObjCanvas * o)
    : DiagramCanvas(0, canvas, 0, 0, LIFE_LINE_WIDTH, LIFE_LINE_HEIGHT, -1),
      obj(o), end(LIFE_LINE_HEIGHT) {
  update_pos();
  set_center100();
  setZ(DIAGRAMCANVAS_Z);
  
  if (obj->is_mortal())
    update_instance_dead();	// call show
  else
    show();
  
  if (canvas->paste())
    // must not be selected else the move done after if wrong
    canvas->unselect(this);
}
예제 #9
0
파일: NoteCanvas.cpp 프로젝트: kralf/bouml
void NoteCanvas::read_internal(char * & st) {
  note = toUnicode(read_string(st));
  
  char * k = read_keyword(st);
  read_color(st, "color", itscolor, k);
  read_font(st, "font", itsfont, k);
  read_color(st, "fg", fg_c, k);
  
  if (strcmp(k, "xyzwh"))
    wrong_keyword(k, "xyzwh");
  
  read_xyzwh(st, this);
  width_scale100 = width();
  height_scale100 = height();
  set_center100();
  show();
}
예제 #10
0
InfoCanvas::InfoCanvas(UmlCanvas * canvas, DiagramItem * a, QString s)
    : NoteCanvas(canvas, 0, 0, 0), who(a) {
  note = s;
  
  QFontMetrics fm(the_canvas()->get_font(itsfont));
  QSize sz = fm.size(0, s);
  const int margin = (int) (2 * NOTE_MARGIN * the_canvas()->zoom());
  int w = sz.width() + margin;
  int h = sz.height() + margin;

  if (w < width())
    w = width();
  if (h < height())
    h = height();

  setSize(w, h);
  setZ(a->get_z());

  width_scale100 = w;
  height_scale100 = h;
  set_center100();
}
예제 #11
0
void SdObjCanvas::read(char * & st, const char * k) {
  if (!strcmp(k, "mortal")) {
    mortal = TRUE;
    k = read_keyword(st);
  }
  
  if (!strcmp(k, "xyz")) {
    // new version
    read_xyz(st, this);
    k = read_keyword(st);
    if (!strcmp(k, "life_line_masked")) {
      life_line->set_masked(TRUE);
      k = read_keyword(st);
    }
    if (strcmp(k, "life_line_z"))
      wrong_keyword(k, "life_line_z");
    life_line->setZ(read_double(st));
  }
  else if (!strcmp(k, "xy"))
    read_xy(st, this);
  else
    wrong_keyword(k, "xy/xyz");
  set_center100();
}
예제 #12
0
LabelCanvas::LabelCanvas(const QString & n, UmlCanvas * canvas, int x, int y,
                         bool bold, bool italic, bool underlined, bool mlcentered)
    : QGraphicsSimpleTextItem(n/*, canvas*/), DiagramItem(-1, canvas)
{
    setFlag(QGraphicsItem::ItemIsSelectable, true);
    canvas->addItem(this);
    if (bold)
        setFont((italic) ? ((UmlCanvas *) canvas)->get_font(UmlNormalBoldItalicFont)
                : ((UmlCanvas *) canvas)->get_font(UmlNormalBoldFont));
    else if (italic)
        setFont(((UmlCanvas *) canvas)->get_font(UmlNormalItalicFont));
    else
        setFont((underlined) ? ((UmlCanvas *) canvas)->get_font(UmlNormalUnderlinedFont)
                : ((UmlCanvas *) canvas)->get_font(UmlNormalFont));

    multi_lines_centered = mlcentered;
    setX(x);
    setY(y);
    setZValue(LABEL_Z);
    set_center100();

    if (canvas->paste())
        canvas->select(this);
}