void GradientPreview::updateDisplay() { repaint(); if (!fill_gradient.colorStops().isEmpty()) { QList<VColorStop*> cstops = fill_gradient.colorStops(); emit selectedStop(cstops.at(ActStop)); } }
void GradientPreview::removeStop() { if ((contextStop > 0) && (contextStop != static_cast<int>(StopM.count()-1))) { onlyselect = false; fill_gradient.removeStop(contextStop); ActStop = 0; repaint(); QList<VColorStop*> cstops = fill_gradient.colorStops(); emit selectedStop(cstops.at(ActStop)); } }
void GradientPreview::keyPressEvent(QKeyEvent *e) { if (isEditable) { if(e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace) { if ((ActStop > 0) && (ActStop != static_cast<int>(StopM.count()-1))) { onlyselect = false; fill_gradient.removeStop(ActStop); ActStop = 0; repaint(); QList<VColorStop*> cstops = fill_gradient.colorStops(); emit selectedStop(cstops.at(ActStop)); } } } }
void GradientPreview::mousePressEvent(QMouseEvent *m) { QRect fpo; Mpressed = true; ActStop = -1; if (isEditable) { QList<VColorStop*> cstops = fill_gradient.colorStops(); for (int yg = 0; yg < static_cast<int>(StopM.count()); ++yg) { fpo = QRect(static_cast<int>(StopM[yg])-4, 43, 8, 13); if (fpo.contains(m->pos())) { ActStop = yg; emit selectedStop(cstops.at(ActStop)); repaint(); onlyselect = true; return; } } } }
void GradientPreview::addStop() { QList<VColorStop*> cstops = fill_gradient.colorStops(); double newStop = static_cast<double>((mPos.x() - 10)) / (static_cast<double>(width())-20); QColor stopColor = (cstops.count() > 0) ? cstops.at(0)->color : QColor(255, 255, 255); QString stopName = (cstops.count() > 0) ? cstops.at(0)->name : QString("White"); int stopShade = (cstops.count() > 0) ? cstops.at(0)->shade : 100; fill_gradient.addStop(stopColor, newStop, 0.5, 1.0, stopName, stopShade); repaint(); onlyselect = false; cstops = fill_gradient.colorStops(); for (int yg = 0; yg < static_cast<int>(StopM.count()); ++yg) { QRect fpo = QRect(static_cast<int>(StopM[yg])-4, 43, 8, 13); if (fpo.contains(mPos)) { ActStop = yg; emit selectedStop(cstops.at(ActStop)); repaint(); break; } } }
void GradientPreview::mouseReleaseEvent(QMouseEvent *m) { qApp->restoreOverrideCursor(); QRect insideRect = QRect(10, 43, width()-20, 13); if (isEditable) { QRect fpo; if (m->button() == Qt::LeftButton) { if ((Mpressed) && (ActStop > 0) && (ActStop != static_cast<int>(StopM.count()-1)) && (outside || !insideRect.contains(m->pos()))) { onlyselect = false; fill_gradient.removeStop(ActStop); ActStop = 0; repaint(); QList<VColorStop*> cstops = fill_gradient.colorStops(); emit selectedStop(cstops.at(ActStop)); } if ((m->y() < height()) && (m->y() > 43) && (m->x() > 0) && (m->x() < width()) && (ActStop == -1)) { QList<VColorStop*> cstops = fill_gradient.colorStops(); double newStop = static_cast<double>((m->x() - 10)) / (static_cast<double>(width())-20); QColor stopColor = (cstops.count() > 0) ? cstops.at(0)->color : QColor(255, 255, 255); QString stopName = (cstops.count() > 0) ? cstops.at(0)->name : QString("White"); int stopShade = (cstops.count() > 0) ? cstops.at(0)->shade : 100; fill_gradient.addStop(stopColor, newStop, 0.5, 1.0, stopName, stopShade); repaint(); onlyselect = false; cstops = fill_gradient.colorStops(); for (int yg = 0; yg < static_cast<int>(StopM.count()); ++yg) { fpo = QRect(static_cast<int>(StopM[yg])-4, 43, 8, 13); if (fpo.contains(m->pos())) { ActStop = yg; emit selectedStop(cstops.at(ActStop)); repaint(); break; } } } } else if (m->button() == Qt::RightButton) { Mpressed = false; QList<VColorStop*> cstops = fill_gradient.colorStops(); int stop = -1; for (int yg = 0; yg < static_cast<int>(StopM.count()); ++yg) { fpo = QRect(static_cast<int>(StopM[yg])-4, 43, 8, 13); if (fpo.contains(m->pos())) { stop = yg; break; } } contextStop = stop; mPos = m->pos(); QMenu *pmen = new QMenu(); setCursor(QCursor(Qt::ArrowCursor)); pmen->addAction( tr("Add Stop"), this, SLOT(addStop())); if (stop != -1) pmen->addAction( tr("Remove Stop"), this, SLOT(removeStop())); pmen->exec(QCursor::pos()); delete pmen; } } Mpressed = false; if ((!onlyselect) && (ActStop >= 0)){ emit gradientChanged(); QList<VColorStop*> cstops = fill_gradient.colorStops(); emit currStep(cstops.at(ActStop)->rampPoint); } }