QString type = pa.attributes().namedItem("type").nodeValue();
QString paramName = i18n(na.toElement().text().toUtf8().data());
- if (type == "geometry") {
+ if (type == "geometry" && !KdenliveSettings::on_monitor_effects()) {
Geometryval *geom = ((Geometryval*)m_valueItems[paramName+"geometry"]);
geom->setFrameSize(m_frameSize);
break;
m_params.setAttribute(name, value);
}
-void EffectStackEdit::transferParamDesc(const QDomElement d, int pos, int in, int out)
+void EffectStackEdit::transferParamDesc(const QDomElement d, int pos, int in, int out, bool isEffect)
{
clearAllItems();
if (m_keyframeEditor) delete m_keyframeEditor;
connect(pl, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters()));
} else if (type == "geometry") {
if (KdenliveSettings::on_monitor_effects()) {
- GeometryWidget *geometry = new GeometryWidget(m_monitor, pos, this);
+ GeometryWidget *geometry = new GeometryWidget(m_monitor, pos, isEffect, this);
if (minFrame == maxFrame)
geometry->setupParam(pa, m_in, m_out);
else
m_vbox->addWidget(geometry);
m_valueItems[paramName+"geometry"] = geometry;
connect(geometry, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters()));
+ connect(geometry, SIGNAL(checkMonitorPosition(int)), this, SIGNAL(checkMonitorPosition(int)));
} else {
Geometryval *geo = new Geometryval(m_profile, m_timecode, m_frameSize, pos);
if (minFrame == maxFrame)
public slots:
/** \brief Called when an effect is selected, builds the UIĀ for this effect */
- void transferParamDesc(const QDomElement, int, int , int);
+ void transferParamDesc(const QDomElement d, int pos, int in, int out, bool isEffect = true);
void slotSliderMoved(int);
/** \brief Called whenever(?) some parameter is changed in the gui.
*
void parameterChanged(const QDomElement, const QDomElement);
void seekTimeline(int);
void displayMessage(const QString&, int);
+ void checkMonitorPosition(int);
};
#endif
#include "docclipbase.h"
#include "projectlist.h"
#include "kthumb.h"
+#include "monitorscene.h"
#include "kdenlivesettings.h"
#include <KDebug>
EffectStackView::EffectStackView(Monitor *monitor, QWidget *parent) :
- QWidget(parent)
+ QWidget(parent),
+ m_monitor(monitor)
{
m_ui.setupUi(this);
QVBoxLayout *vbox1 = new QVBoxLayout(m_ui.frame);
connect(m_effectedit, SIGNAL(parameterChanged(const QDomElement, const QDomElement)), this , SLOT(slotUpdateEffectParams(const QDomElement, const QDomElement)));
connect(m_effectedit, SIGNAL(seekTimeline(int)), this , SLOT(slotSeekTimeline(int)));
connect(m_effectedit, SIGNAL(displayMessage(const QString&, int)), this, SIGNAL(displayMessage(const QString&, int)));
+ connect(m_effectedit, SIGNAL(checkMonitorPosition(int)), this, SLOT(slotCheckMonitorPosition(int)));
m_effectLists["audio"] = &MainWindow::audioEffects;
m_effectLists["video"] = &MainWindow::videoEffects;
m_effectLists["custom"] = &MainWindow::customEffects;
emit updateClipRegion(m_clipref, m_ui.effectlist->currentRow(), m_ui.region_url->text());
}
+void EffectStackView::slotCheckMonitorPosition(int renderPos)
+{
+ if (renderPos >= m_clipref->startPos().frames(KdenliveSettings::project_fps()) && renderPos <= m_clipref->endPos().frames(KdenliveSettings::project_fps())) {
+ if (!m_monitor->getEffectScene()->views().at(0)->isVisible())
+ m_monitor->slotEffectScene(true);
+ } else {
+ m_monitor->slotEffectScene(false);
+ }
+}
+
#include "effectstackview.moc"
ClipItem* m_clipref;
QMap<QString, EffectsList*> m_effectLists;
EffectStackEdit* m_effectedit;
+ Monitor *m_monitor;
/** @brief Sets the list of effects according to the clip's effect list.
* @param ix Number of the effect to preselect */
/** @brief Define the region filter for current effect. */
void slotRegionChanged();
+ void slotCheckMonitorPosition(int renderPos);
+
signals:
void removeEffect(ClipItem*, QDomElement);
/** Parameters for an effect changed, update the filter in playlist */
#include <QGraphicsView>
#include <QGraphicsRectItem>
-GeometryWidget::GeometryWidget(Monitor* monitor, int clipPos, QWidget* parent ):
+GeometryWidget::GeometryWidget(Monitor* monitor, int clipPos, bool isEffect, QWidget* parent ):
QWidget(parent),
m_monitor(monitor),
m_clipPos(clipPos),
m_inPoint(0),
m_outPoint(1),
+ m_isEffect(isEffect),
m_rect(NULL),
m_geometry(NULL)
{
void GeometryWidget::slotCheckPosition(int renderPos)
{
- qDebug() << m_clipPos << m_inPoint << m_outPoint;
- if (renderPos >= m_clipPos && renderPos <= m_clipPos + m_outPoint - m_inPoint) {
- if (!m_scene->views().at(0)->isVisible())
- m_monitor->slotEffectScene(true);
+ /*
+ We do only get the position in timeline if this geometry belongs to a transition,
+ therefore we need to ways here.
+ */
+ if (m_isEffect) {
+ emit checkMonitorPosition(renderPos);
} else {
- m_monitor->slotEffectScene(false);
+ if (renderPos >= m_clipPos && renderPos <= m_clipPos + m_outPoint - m_inPoint) {
+ if (!m_scene->views().at(0)->isVisible())
+ m_monitor->slotEffectScene(true);
+ } else {
+ m_monitor->slotEffectScene(false);
+ }
}
}
* @param monitor Project monitor
* @param clipPos Position of the clip in timeline
* @param parent (optional) Parent widget */
- GeometryWidget(Monitor *monitor, int clipPos, QWidget* parent = 0);
+ GeometryWidget(Monitor *monitor, int clipPos, bool isEffect, QWidget* parent = 0);
virtual ~GeometryWidget();
/** @brief Gets the geometry as a serialized string. */
QString getValue() const;
int m_inPoint;
/** Out point of the clip (crop from end). */
int m_outPoint;
+ bool m_isEffect;
MonitorScene *m_scene;
QGraphicsRectItem *m_rect;
Mlt::Geometry *m_geometry;
signals:
void parameterChanged();
+ void checkMonitorPosition(int);
};
#endif
// Reset the transition parameters to the default one
QDomElement newTransition = MainWindow::transitions.getEffectByName(transitionList->currentText()).cloneNode().toElement();
slotUpdateEffectParams(e, newTransition);
- m_effectEdit->transferParamDesc(newTransition, start, start, end);
+ m_effectEdit->transferParamDesc(newTransition, start, start, end, false);
} else if (!updateCurrent) {
// Transition changed, update parameters dialog
//slotUpdateEffectParams(e, e);
- m_effectEdit->transferParamDesc(e, start, start, end);
+ m_effectEdit->transferParamDesc(e, start, start, end, 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(), start, start, end);
+ if (m_usedTransition->hasGeometry()) m_effectEdit->transferParamDesc(m_usedTransition->toXML(), start, start, end, false);
}
}
} else {
// null transition selected
m_usedTransition = NULL;
- m_effectEdit->transferParamDesc(QDomElement(), 0, 0, 0);
+ m_effectEdit->transferParamDesc(QDomElement(), 0, 0, 0, false);
}
}