m_effectList.append(effect);
effectParams["tag"] = effect.attribute("tag");
effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix");
+ QString state = effect.attribute("disabled");
+ if (!state.isEmpty()) effectParams["disabled"] = state;
QDomNodeList params = effect.elementsByTagName("parameter");
for (int i = 0; i < params.count(); i++) {
QDomElement e = params.item(i).toElement();
QMap <QString, QString> effectParams;
effectParams["tag"] = effect.attribute("tag");
effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix");
+ QString state = effect.attribute("disabled");
+ if (!state.isEmpty()) effectParams["disabled"] = state;
QDomNodeList params = effect.elementsByTagName("parameter");
for (int i = 0; i < params.count(); i++) {
QDomElement e = params.item(i).toElement();
ClipItem *clip = getClipItemAt(pos.frames(m_document->fps()) + 1, m_tracksCount - track);
if (clip){
QMap <QString, QString> effectParams = clip->getEffectArgs(effect);
- m_document->renderer()->mltEditEffect(m_tracksCount - clip->track(), GenTime(clip->startPos(), m_document->fps()), effectParams);
+ if (effectParams["disabled"] == "1") {
+ QString index = effectParams["kdenlive_ix"];
+ m_document->renderer()->mltRemoveEffect(track, pos, index);
+ }
+ else m_document->renderer()->mltEditEffect(m_tracksCount - clip->track(), GenTime(clip->startPos(), m_document->fps()), effectParams);
}
}
+void CustomTrackView::slotChangeEffectState(ClipItem *clip, QDomElement effect, bool disable)
+{
+ QDomElement oldEffect = effect.cloneNode().toElement();
+ effect.setAttribute("disabled", disable);
+ EditEffectCommand *command = new EditEffectCommand(this, m_tracksCount - clip->track(), GenTime(clip->startPos(), m_document->fps()), oldEffect, effect, true);
+ m_commandStack->push(command);
+}
void CustomTrackView::slotUpdateClipEffect(ClipItem *clip, QDomElement oldeffect, QDomElement effect)
{
public slots:
void setCursorPos(int pos, bool seek = true);
void slotDeleteEffect(ClipItem *clip, QDomElement effect);
+ void slotChangeEffectState(ClipItem *clip, QDomElement effect, bool disable);
void slotUpdateClipEffect(ClipItem *clip, QDomElement oldeffect, QDomElement effect);
void slotRefreshEffects(ClipItem *clip);
void setDuration(int duration);
ui.effectlist->setDragDropMode(QAbstractItemView::NoDragDrop);//use internal if drop is recognised right
connect (ui.effectlist, SIGNAL ( itemSelectionChanged()), this , SLOT( slotItemSelectionChanged() ));
+ connect (ui.effectlist, SIGNAL(itemChanged ( QListWidgetItem *)), this , SLOT( slotItemChanged(QListWidgetItem *) ));
connect (ui.buttonNew, SIGNAL (clicked()), this, SLOT (slotNewEffect()) );
connect (ui.buttonUp, SIGNAL (clicked()), this, SLOT (slotItemUp()) );
connect (ui.buttonDown, SIGNAL (clicked()), this, SLOT (slotItemDown()) );
}
+void EffectStackView::slotItemChanged(QListWidgetItem *item)
+{
+ bool disable = true;
+ if (item->checkState() == Qt::Checked) disable = false;
+ int activeRow = ui.effectlist->currentRow();
+ if ( activeRow>=0 ){
+ emit changeEffectState(clipref, clipref->effectAt(activeRow), disable);
+ }
+ kDebug()<<"--- EFFECT CHANGED!!!!!!!!!!!!!!!!!";
+}
+
+
void EffectStackView::setupListView(){
ui.effectlist->clear();
if (!namenode.isNull()) {
QListWidgetItem* item = new QListWidgetItem(namenode.toElement().text(), ui.effectlist);
item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsDragEnabled|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled);
- item->setCheckState(Qt::Checked);
+ if (d.attribute("disabled") == "1") item->setCheckState(Qt::Unchecked);
+ else item->setCheckState(Qt::Checked);
}
}
if (clipref->effectsCount() == 0)
public slots:
void slotClipItemSelected(ClipItem*);
+ void slotUpdateEffectParams(const QDomElement&, const QDomElement&);
+
+private slots:
void slotItemSelectionChanged();
void slotItemUp();
void slotItemDown();
void slotNewEffect();
void slotResetEffect();
void itemSelectionChanged();
- void slotUpdateEffectParams(const QDomElement&, const QDomElement&);
+ void slotItemChanged(QListWidgetItem *item);
signals:
void transferParamDesc(const QDomElement&,int ,int);
/** An effect in stack was moved, we need to regenerate
all effects for this clip in the playlist */
void refreshEffectStack(ClipItem *);
+ /** Enable or disable an effect */
+ void changeEffectState(ClipItem*, QDomElement, bool);
};
connect(trackView, SIGNAL(clipItemSelected(ClipItem*)), effectStack, SLOT(slotClipItemSelected(ClipItem*)));
connect(effectStack, SIGNAL(updateClipEffect(ClipItem*, QDomElement, QDomElement)), trackView->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, QDomElement, QDomElement)));
connect(effectStack, SIGNAL(removeEffect(ClipItem*, QDomElement)), trackView->projectView(), SLOT(slotDeleteEffect(ClipItem*, QDomElement)));
+ connect(effectStack, SIGNAL(changeEffectState(ClipItem*, QDomElement, bool)), trackView->projectView(), SLOT(slotChangeEffectState(ClipItem*, QDomElement, bool)));
connect(effectStack, SIGNAL(refreshEffectStack(ClipItem*)), trackView->projectView(), SLOT(slotRefreshEffects(ClipItem*)));
m_projectList->setDocument(doc);
if (!filter) {
- kDebug()<<"WARINIG, FILTER NOT FOUND!!!!!";
+ kDebug()<<"WARINIG, FILTER FOR EDITING NOT FOUND, ADDING IT!!!!!";
+ mltAddEffect(track, position, args);
m_isBlocked = false;
return;
}