setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum);
MonitorEditWidget *edit = monitor->getEffectEdit();
edit->removeCustomControls();
+ edit->addCustomButton(KIcon("draw-path"), i18n("Show path"), this, SLOT(slotShowPath(bool)), true, KdenliveSettings::onmonitoreffects_geometryshowpath());
edit->addCustomButton(KIcon("transform-crop"), i18n("Show previous keyframe"), this, SLOT(slotShowPreviousKeyFrame(bool)), true, KdenliveSettings::onmonitoreffects_geometryshowprevious());
m_scene = edit->getScene();
m_scene->cleanup();
slotPositionChanged(-1, false);
}
+void GeometryWidget::slotShowPath(bool show)
+{
+ KdenliveSettings::setOnmonitoreffects_geometryshowpath(show);
+ if (m_geomPath) {
+ if (show) m_scene->addItem(m_geomPath);
+ else m_scene->removeItem(m_geomPath);
+ }
+ slotPositionChanged(-1, false);
+}
+
void GeometryWidget::updateTimecodeFormat()
{
m_timePos->slotUpdateTimeCodeFormat();
connect(m_geomPath, SIGNAL(changed()), this, SLOT(slotUpdatePath()));
m_geomPath->setPen(QPen(Qt::red));
m_geomPath->setPoints(m_geometry);
- m_scene->addItem(m_geomPath);
+ if (KdenliveSettings::onmonitoreffects_geometryshowpath())
+ m_scene->addItem(m_geomPath);
m_scene->centerView();
slotPositionChanged(0, false);
}
}
m_timeline->update();
- if (m_geomPath) {
+ if (m_geomPath && KdenliveSettings::onmonitoreffects_geometryshowpath()) {
m_scene->removeItem(m_geomPath);
m_geomPath->setPoints(m_geometry);
m_scene->addItem(m_geomPath);
geom->insert(item2);
}
}
- if (m_geomPath) {
+ if (m_geomPath && KdenliveSettings::onmonitoreffects_geometryshowpath()) {
m_scene->removeItem(m_geomPath);
m_geomPath->setPoints(m_geometry);
m_scene->addItem(m_geomPath);
item.mix(100);
m_geometry->insert(item);
m_timeline->setKeyGeometry(m_geometry, m_outPoint - m_inPoint);
- if (m_geomPath) {
+ if (m_geomPath && KdenliveSettings::onmonitoreffects_geometryshowpath()) {
m_scene->removeItem(m_geomPath);
m_geomPath->setPoints(m_geometry);
m_scene->addItem(m_geomPath);
m_geometry->insert(item);
}
m_timeline->setKeyGeometry(m_geometry, m_outPoint - m_inPoint);
- if (m_geomPath) {
+ if (m_geomPath && KdenliveSettings::onmonitoreffects_geometryshowpath()) {
m_scene->removeItem(m_geomPath);
m_geomPath->setPoints(m_geometry);
m_scene->addItem(m_geomPath);
m_geometry->insert(item);
}
m_timeline->setKeyGeometry(m_geometry, m_outPoint - m_inPoint);
- if (m_geomPath) {
+ if (m_geomPath && KdenliveSettings::onmonitoreffects_geometryshowpath()) {
m_scene->removeItem(m_geomPath);
m_geomPath->setPoints(m_geometry);
m_scene->addItem(m_geomPath);
m_geometry->insert(item);
}
m_timeline->setKeyGeometry(m_geometry, m_outPoint - m_inPoint);
- if (m_geomPath) {
+ if (m_geomPath && KdenliveSettings::onmonitoreffects_geometryshowpath()) {
m_scene->removeItem(m_geomPath);
m_geomPath->setPoints(m_geometry);
m_scene->addItem(m_geomPath);
m_effectEdit->transferParamDesc(e, m_usedTransition->info(), false);
} else {
// Same transition, we just want to update the parameters value
- slotUpdateEffectParams(e, e);
- if (m_usedTransition->hasGeometry())
- m_effectEdit->transferParamDesc(m_usedTransition->toXML(), m_usedTransition->info(), false);
+ int ix = transitionList->findData(m_usedTransition->transitionInfo(), Qt::UserRole, Qt::MatchExactly);
+ if (ix != transitionList->currentIndex()) {
+ // Transition type changed, reload params
+ transitionList->blockSignals(true);
+ transitionList->setCurrentIndex(ix);
+ transitionList->blockSignals(false);
+ m_effectEdit->transferParamDesc(e, m_usedTransition->info(), false);
+ }
+ else {
+ slotUpdateEffectParams(e, e);
+ if (m_usedTransition->hasGeometry())
+ m_effectEdit->transferParamDesc(m_usedTransition->toXML(), m_usedTransition->info(), false);
+ }
+ if (m_effectEdit->needsMonitorEffectScene())
+ connect(m_effectEdit->monitor(), SIGNAL(renderPosition(int)), this, SLOT(slotRenderPos(int)));
}
slotCheckMonitorPosition(m_effectEdit->monitor()->render->seekFramePosition());
}
m_effectEdit->setFrameSize(p);
m_autoTrackTransition = nextTrack;
disconnect(m_effectEdit->monitor(), SIGNAL(renderPosition(int)), this, SLOT(slotRenderPos(int)));
- if (t == m_usedTransition) {
+ if (t == m_usedTransition) {
if (t == NULL) return;
if (update) {
transitionTrack->blockSignals(true);