void Geometryval::slotPositionChanged(int pos, bool seek) { if (seek && KdenliveSettings::transitionfollowcursor()) emit seekToPos(pos); m_ui.spinPos->setValue(pos); m_helper->setValue(pos); Mlt::GeometryItem item; int error = m_geom->fetch(&item, pos); if (error || item.key() == false) { // no keyframe under cursor, adjust buttons m_ui.buttonAdd->setEnabled(true); m_ui.buttonDelete->setEnabled(false); m_ui.widget->setEnabled(false); m_ui.spinTransp->setEnabled(false); m_scaleMenu->setEnabled(false); m_alignMenu->setEnabled(false); } else { m_ui.buttonAdd->setEnabled(false); m_ui.buttonDelete->setEnabled(true); m_ui.widget->setEnabled(true); m_ui.spinTransp->setEnabled(true); m_scaleMenu->setEnabled(true); m_alignMenu->setEnabled(true); } m_paramRect->setPos(item.x(), item.y()); m_paramRect->setRect(0, 0, item.w(), item.h()); m_ui.spinTransp->setValue(item.mix()); m_paramRect->setBrush(QColor(255, 0, 0, item.mix())); }
void KeyframeEdit::slotAdjustKeyframeInfo(bool seek) { QTableWidgetItem *item = keyframe_list->currentItem(); if (!item) return; int min = m_min; int max = m_max; QTableWidgetItem *above = keyframe_list->item(item->row() - 1, item->column()); QTableWidgetItem *below = keyframe_list->item(item->row() + 1, item->column()); if (above) min = getPos(above->row()) + 1; if (below) max = getPos(below->row()) - 1; m_position->blockSignals(true); m_position->setRange(min, max, true); m_position->setPosition(getPos(item->row())); m_position->blockSignals(false); QLocale locale; for (int col = 0; col < keyframe_list->columnCount(); ++col) { DoubleParameterWidget *doubleparam = static_cast <DoubleParameterWidget*>(m_slidersLayout->itemAtPosition(col, 0)->widget()); if (!doubleparam) continue; doubleparam->blockSignals(true); if (keyframe_list->item(item->row(), col)) { doubleparam->setValue(locale.toDouble(keyframe_list->item(item->row(), col)->text())); } else { //qDebug() << "Null pointer exception caught: http://www.kdenlive.org/mantis/view.php?id=1771"; } doubleparam->blockSignals(false); } if (KdenliveSettings::keyframeseek() && seek) emit seekToPos(m_position->getPosition() - m_min); }
void KeyframeEdit::slotAdjustKeyframePos(int value) { QTableWidgetItem *item = keyframe_list->currentItem(); keyframe_list->verticalHeaderItem(item->row())->setText(getPosString(value)); slotGenerateParams(item->row(), -1); if (KdenliveSettings::keyframeseek()) emit seekToPos(value - m_min); }
void Geometryval::slotPositionChanged(int pos, bool seek) { if (pos == -1) { pos = m_timePos.getValue(); } if (seek && KdenliveSettings::transitionfollowcursor()) emit seekToPos(pos + m_startPoint); m_timePos.setValue(pos); //spinPos->setValue(pos); m_helper->blockSignals(true); m_helper->setValue(pos); m_helper->blockSignals(false); Mlt::GeometryItem item; int error = m_geom->fetch(&item, pos); if (error || item.key() == false) { // no keyframe under cursor, adjust buttons buttonAdd->setEnabled(true); buttonDelete->setEnabled(false); widget->setEnabled(false); spinTransp->setEnabled(false); frameOptions->setEnabled(false); m_reset->setEnabled(false); } else { buttonAdd->setEnabled(false); buttonDelete->setEnabled(true); widget->setEnabled(true); spinTransp->setEnabled(true); frameOptions->setEnabled(true); m_reset->setEnabled(true); } m_paramRect->setPos(item.x() * m_dar, item.y()); m_paramRect->setRect(0, 0, item.w() * m_dar, item.h()); spinTransp->setValue(item.mix()); m_paramRect->setBrush(QColor(255, 0, 0, item.mix())); slotUpdateGeometry(); }