void ClipProperties::slotApplyProperties()
{
- if (m_clip != NULL)
- emit applyNewClipProperties(m_clip->getId(), m_clip->properties(), properties(), needsTimelineRefresh(), needsTimelineReload());
+ if (m_clip != NULL) {
+ QMap <QString, QString> props = properties();
+ emit applyNewClipProperties(m_clip->getId(), m_clip->currentProperties(props), props, needsTimelineRefresh(), needsTimelineReload());
+ }
m_view.buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
}
return m_properties;
}
+QMap <QString, QString> DocClipBase::currentProperties(QMap <QString, QString> props)
+{
+ QMap <QString, QString> currentProps;
+ QMap<QString, QString>::const_iterator i = props.constBegin();
+ while (i != props.constEnd()) {
+ currentProps.insert(i.key(), m_properties.value(i.key()));
+ ++i;
+ }
+ return currentProps;
+}
+
bool DocClipBase::getAudioThumbs()
{
if (m_thumbProd == NULL || isPlaceHolder() || !KdenliveSettings::audiothumbnails()) return false;
uint getClipThumbFrame() const;
void setProperties(QMap <QString, QString> properties);
void setMetadata(QMap <QString, QString> properties);
+ /** Returns all current properties for this clip */
QMap <QString, QString> properties() const;
+ /** Return the current values for a set of properties */
+ QMap <QString, QString> currentProperties(QMap <QString, QString> props);
QMap <QString, QString> metadata() const;
void slotExtractImage(QList <int> frames);
connect(m_projectList, SIGNAL(updateRenderStatus()), this, SLOT(slotCheckRenderStatus()));
connect(m_projectList, SIGNAL(clipNeedsReload(const QString&)),this, SLOT(slotUpdateClip(const QString &)));
connect(m_projectList, SIGNAL(updateProfile(const QString &)), this, SLOT(slotUpdateProjectProfile(const QString &)));
- connect(m_projectList, SIGNAL(refreshClip(const QString &, bool)), m_monitorManager, SLOT(slotRefreshCurrentMonitor()));
+ connect(m_projectList, SIGNAL(refreshClip(const QString &, bool)), m_monitorManager, SLOT(slotRefreshCurrentMonitor(const QString &)));
connect(m_projectList, SIGNAL(findInTimeline(const QString&)), this, SLOT(slotClipInTimeline(const QString&)));
connect(m_clipMonitor, SIGNAL(zoneUpdated(QPoint)), m_projectList, SLOT(slotUpdateClipCut(QPoint)));
else newprops.insert("templatetext", description);
//newprops.insert("xmldata", m_projectList->generateTemplateXml(newtemplate, description).toString());
if (!newprops.isEmpty()) {
- EditClipCommand *command = new EditClipCommand(m_projectList, clip->getId(), clip->properties(), newprops, true);
+ EditClipCommand *command = new EditClipCommand(m_projectList, clip->getId(), clip->currentProperties(newprops), newprops, true);
m_activeDocument->commandStack()->push(command);
}
}
dia_ui->saveTitle(path);
} else newprops.insert("resource", QString());
}
- EditClipCommand *command = new EditClipCommand(m_projectList, clip->getId(), clip->properties(), newprops, true);
+ EditClipCommand *command = new EditClipCommand(m_projectList, clip->getId(), clip->currentProperties(newprops), newprops, true);
m_activeDocument->commandStack()->push(command);
//m_activeTimeline->projectView()->slotUpdateClip(clip->getId());
m_activeDocument->setModified(true);
for (int i = 0; i < cliplist.count(); i++) {
DocClipBase *clip = cliplist.at(i);
if (clip->clipType() == IMAGE)
- new EditClipCommand(m_projectList, clip->getId(), clip->properties(), newImageProps, true, command);
+ new EditClipCommand(m_projectList, clip->getId(), clip->currentProperties(newImageProps), newImageProps, true, command);
else
- new EditClipCommand(m_projectList, clip->getId(), clip->properties(), newProps, true, command);
+ new EditClipCommand(m_projectList, clip->getId(), clip->currentProperties(newProps), newProps, true, command);
}
m_activeDocument->commandStack()->push(command);
for (int i = 0; i < cliplist.count(); i++)
return render;
}
+void Monitor::reloadProducer(const QString &id)
+{
+ if (!m_currentClip) return;
+ if (m_currentClip->getId() == id)
+ slotSetClipProducer(m_currentClip, m_currentClip->zone(), true);
+}
+
MonitorRefresh::MonitorRefresh(QWidget* parent) :
QWidget(parent)
, m_renderer(NULL)
void updateMarkers(DocClipBase *source);
MonitorEditWidget *getEffectEdit();
QWidget *container();
+ void reloadProducer(const QString &id);
QFrame *m_volumePopup;
protected:
#include <QTimer>
#include <KDebug>
+
MonitorManager::MonitorManager(QWidget *parent) :
QObject(parent),
m_clipMonitor(NULL),
emit checkColorScopes();
}
-void MonitorManager::slotRefreshCurrentMonitor()
+void MonitorManager::slotRefreshCurrentMonitor(const QString &id)
{
+ // Clip producer was modified, check if clip is currently displayed in clip monitor
+ m_clipMonitor->reloadProducer(id);
if (m_activeMonitor == m_clipMonitor) m_clipMonitor->refreshMonitor();
else m_projectMonitor->refreshMonitor();
}
void slotUpdateAudioMonitoring();
private slots:
- void slotRefreshCurrentMonitor();
+ void slotRefreshCurrentMonitor(const QString &id);
private:
Monitor *m_clipMonitor;
if (item) {
slotUpdateClipProperties(item, properties);
if (properties.contains("out") || properties.contains("force_fps") || properties.contains("resource")) {
+ kDebug()<<"/// ARGH FORCE RELOAD";
slotReloadClip(id);
} else if (properties.contains("colour") ||
properties.contains("xmldata") ||
properties.contains("templatetext")) {
slotRefreshClipThumbnail(item);
emit refreshClip(id, true);
- emit clipSelected(item->referencedClip(), item->referencedClip()->zone(), true);
} else if (properties.contains("full_luma") || properties.contains("force_colorspace") || properties.contains("loop")) {
emit refreshClip(id, false);
}
newProps.insert("replace", "1");
// insert required duration for proxy
newProps.insert("proxy_out", item->referencedClip()->producerProperty("out"));
- new EditClipCommand(this, item->clipId(), item->referencedClip()->properties(), newProps, true, command);
+ new EditClipCommand(this, item->clipId(), item->referencedClip()->currentProperties(newProps), newProps, true, command);
}
}
else if (t == IMAGE && item->referencedClip() != NULL) {
if (item->referencedClip()->getProperty("proxy") == proxyPath) {
QMap <QString, QString> props;
props.insert("proxy", QString());
- new EditClipCommand(this, item->clipId(), item->referencedClip()->properties(), props, true, proxyCommand);
+ new EditClipCommand(this, item->clipId(), item->referencedClip()->currentProperties(props), props, true, proxyCommand);
}
}