return effectParams;
}
+QMap <QString, QString> ClipItem::getEffectArgs(QDomElement effect)
+{
+ QMap <QString, QString> effectParams;
+ effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix");
+ effectParams["tag"] = effect.attribute("tag");
+ QDomNodeList params = effect.elementsByTagName("parameter");
+ for (int i = 0; i < params.count(); i++) {
+ QDomElement e = params.item(i).toElement();
+ if (!e.isNull())
+ effectParams[e.attribute("name")] = e.attribute("value");
+ }
+ return effectParams;
+}
+
void ClipItem::deleteEffect(QString tag)
{
for (int i = 0; i < m_effectList.size(); ++i) {
void setFadeIn(int pos, double scale);
QStringList effectNames();
QMap <QString, QString> addEffect(QDomElement effect);
+ QMap <QString, QString> getEffectArgs(QDomElement effect);
void deleteEffect(QString tag);
int effectsCount();
QDomElement effectAt(int ix);
m_commandStack->push(command);
}
+
+void CustomTrackView::slotUpdateClipEffect(ClipItem *clip, QDomElement effect)
+{
+ QMap <QString, QString> effectParams = clip->getEffectArgs(effect);
+ m_document->renderer()->mltEditEffect(m_tracksCount - clip->track(), GenTime(clip->startPos(), m_document->fps()), effectParams);
+}
+
+
void CustomTrackView::addItem(DocClipBase *clip, QPoint pos)
{
int in =0;
public slots:
void setCursorPos(int pos, bool seek = true);
+ void slotDeleteEffect(ClipItem *clip, QDomElement effect);
+ void slotUpdateClipEffect(ClipItem *clip, QDomElement effect);
protected:
virtual void drawBackground ( QPainter * painter, const QRectF & rect );
void updateSnapPoints(ClipItem *selected);
double getSnapPointForPos(double pos);
ClipItem *getClipItemAt(int pos, int track);
- void slotDeleteEffect(ClipItem *clip, QDomElement effect);
+
signals:
void cursorMoved(int);
}
-void Render::mltEditEffect(int track, GenTime position, int index, QString id, QString tag, QMap <QString, QString> args)
+void Render::mltEditEffect(int track, GenTime position, QMap <QString, QString> args)
{
+ QString index = args.value("kdenlive_ix");
+ QString tag = args.value("tag");
QMap<QString, QString>::Iterator it = args.begin();
if (it.key().startsWith("#") || tag.startsWith("ladspa") || tag == "sox" || tag == "autotrack_rectangle") {
// This is a keyframe effect, to edit it, we remove it and re-add it.
- //mltRemoveEffect(track, position, tag, -1);
- //mltAddEffect(track, position, tag, args);
+ mltRemoveEffect(track, position,index);
+ mltAddEffect(track, position, args);
return;
}
m_isBlocked = true;
return;
}
Mlt::Service clipService(clip->get_service());
- Mlt::Filter *filter = clipService.filter( index );
+ Mlt::Filter *filter = clipService.filter( index.toInt() );
-
- if (!filter || filter->get("mlt_service") != tag) {
- kDebug()<<"WARINIG, FILTER NOT FOUND!!!!!";
- int index = 0;
- filter = clipService.filter( index );
- while (filter) {
- if (filter->get("mlt_service") == tag && filter->get("kdenlive_id") == id) break;
- index++;
- filter = clipService.filter( index );
- }
- }
if (!filter) {
- kDebug()<<"WARINIG, FILTER "<<id<<" NOT FOUND!!!!!";
+ kDebug()<<"WARINIG, FILTER NOT FOUND!!!!!";
m_isBlocked = false;
return;
}
for ( it = args.begin(); it != args.end(); ++it ) {
- kDebug()<<" / / INSERTING EFFECT ARGS: "<<it.key()<<": "<<it.value();
+ kDebug()<<" / / EDITING EFFECT ARGS: "<<it.key()<<": "<<it.value();
char *name = decodedString(it.key());
char *value = decodedString(it.value());
filter->set(name, value);
void mltRemoveClip(int track, GenTime position);
void mltRemoveEffect(int track, GenTime position, QString index);
void mltAddEffect(int track, GenTime position, QMap <QString, QString> args);
- void mltEditEffect(int track, GenTime position, int index, QString id, QString tag, QMap <QString, QString> args);
+ void mltEditEffect(int track, GenTime position, QMap <QString, QString> args);
void mltChangeTrackState(int track, bool mute, bool blind);
void mltMoveTransition(QString type, int startTrack, int trackOffset, GenTime oldIn, GenTime oldOut, GenTime newIn, GenTime newOut);
void mltAddTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap <QString, QString> args);