void Cell::setStitch(Stitch *s) { if (mStitch != s) { QString old; bool doUpdate = false; if (mStitch) { old = mStitch->name(); doUpdate = (mStitch->isSvg() != s->isSvg()); } mStitch = s; if(s->isSvg()) { setSharedRenderer(s->renderSvg(mColor)); } if(doUpdate) update(); emit stitchChanged(old, s->name()); } setTransformOriginPoint(s->width()/2, s->height()); }
CrochetTab::CrochetTab(Scene::ChartStyle style, int defEditMode, QString defStitch, QColor defFgColor, QColor defBgColor, QWidget* parent) : QWidget(parent), ui(new Ui::OptionsBar), mChartStyle(style) { QVBoxLayout* l = new QVBoxLayout(this); QWidget* top = new QWidget(this); l->addWidget(top); QVBoxLayout* tl = new QVBoxLayout(top); top->setLayout(tl); top->setContentsMargins(0, 0, 0, 0); QPoint centerOn = QPoint(0,0); mView = new ChartView(top); mScene = new Scene(mView); mScene->setSceneRect(-2500,-2500, 5000,5000); centerOn = QPoint(0, 0); mTextView = new TextView(this, mScene); connect(mView, SIGNAL(scrollBarChanged(int,int)), mScene, SLOT(updateRubberBand(int,int))); connect(mScene, SIGNAL(stitchChanged(QString,QString)), SLOT(stitchChanged(QString,QString))); connect(mScene, SIGNAL(colorChanged(QString,QString)), SLOT(colorChanged(QString,QString))); connect(mScene, SIGNAL(rowEdited(bool)), SIGNAL(tabModified(bool))); connect(mScene, SIGNAL(guidelinesUpdated(Guidelines)), SIGNAL(guidelinesUpdated(Guidelines))); mView->setScene(mScene); QPoint pt = mView->mapFromScene(centerOn); mView->centerOn(pt.x(), pt.y()); mScene->setEditMode((Scene::EditMode)defEditMode); mScene->setEditStitch(defStitch); mScene->setEditFgColor(defFgColor); mScene->setEditBgColor(defBgColor); QWidget* w = new QWidget(top); ui->setupUi(w); tl->addWidget(mView); tl->addWidget(w); ui->horizontalLayout->setMargin(0); l->setMargin(0); tl->setMargin(0); w->setContentsMargins(0, 0, 0, 0); setContentsMargins(0, 0, 0, 0); mView->setMinimumSize(width(), height()*2/3); mView->setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate); mRowEditDialog = new RowEditDialog(scene(), mTextView, this); ui->verticalLayout->insertWidget(0, mRowEditDialog); mRowEditDialog->hide(); connect(ui->copyInstructions, SIGNAL(clicked()), SLOT(copyInstructions())); connect(ui->zoom, SIGNAL(valueChanged(int)), SLOT(zoomChanged(int))); connect(mView, SIGNAL(zoomLevelChanged(int)), SLOT(updateZoomLevel(int))); }