From: Jean-Baptiste Mardelle Date: Fri, 30 Mar 2012 18:43:11 +0000 (+0200) Subject: Implement effect group save X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;ds=sidebyside;h=cedd1c24a42f33f1b4e9a528f314066c271b38c4;p=kdenlive Implement effect group save --- diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index b292a1ff..b2b87926 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -2039,9 +2039,9 @@ void CustomTrackView::slotChangeEffectState(ClipItem *clip, int track, int effec if (clip == NULL) { // editing track effect - command = new EditEffectCommand(this, m_document->tracksCount() - track, GenTime(-1), oldEffect, effect, effectPos, true, true); + command = new EditEffectCommand(this, m_document->tracksCount() - track, GenTime(-1), oldEffect, effect, effectPos, false, true); } else { - command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), oldEffect, effect, effectPos, true, true); + command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), oldEffect, effect, effectPos, false, true); } m_commandStack->push(command); setDocumentModified();; diff --git a/src/effectstack/collapsibleeffect.cpp b/src/effectstack/collapsibleeffect.cpp index d731715a..82c99ab9 100644 --- a/src/effectstack/collapsibleeffect.cpp +++ b/src/effectstack/collapsibleeffect.cpp @@ -149,8 +149,8 @@ CollapsibleEffect::CollapsibleEffect(QDomElement effect, QDomElement original_ef //buttonShowComments->setIcon(KIcon("help-about")); //buttonShowComments->setToolTip(i18n("Show additional information for the parameters")); m_menu = new QMenu; - m_menu->addAction(KIcon("view-refresh"), i18n("Reset effect"), this, SLOT(slotResetEffect())); - m_menu->addAction(KIcon("document-save"), i18n("Save effect"), this, SLOT(slotSaveEffect())); + m_menu->addAction(KIcon("view-refresh"), i18n("Reset Effect"), this, SLOT(slotResetEffect())); + m_menu->addAction(KIcon("document-save"), i18n("Save Effect"), this, SLOT(slotSaveEffect())); QDomElement namenode = m_effect.firstChildElement("name"); if (namenode.isNull()) return; diff --git a/src/effectstack/collapsibleeffect.h b/src/effectstack/collapsibleeffect.h index 536adc93..8d391f52 100644 --- a/src/effectstack/collapsibleeffect.h +++ b/src/effectstack/collapsibleeffect.h @@ -149,6 +149,7 @@ public: public slots: void slotSyncEffectsPos(int pos); void slotEnable(bool enable); + void slotResetEffect(); private slots: void slotSwitch(); @@ -157,7 +158,6 @@ private slots: void slotEffectUp(); void slotEffectDown(); void slotSaveEffect(); - void slotResetEffect(); void slotCreateGroup(); void slotUnGroup(); diff --git a/src/effectstack/collapsiblegroup.cpp b/src/effectstack/collapsiblegroup.cpp index 7e0773be..4e7afd84 100644 --- a/src/effectstack/collapsiblegroup.cpp +++ b/src/effectstack/collapsiblegroup.cpp @@ -75,8 +75,8 @@ CollapsibleGroup::CollapsibleGroup(int ix, bool firstGroup, bool lastGroup, QStr if (firstGroup) buttonUp->setVisible(false); if (lastGroup) buttonDown->setVisible(false); m_menu = new QMenu; - m_menu->addAction(KIcon("view-refresh"), i18n("Reset effect"), this, SLOT(slotResetEffect())); - m_menu->addAction(KIcon("document-save"), i18n("Save effect"), this, SLOT(slotSaveEffect())); + m_menu->addAction(KIcon("view-refresh"), i18n("Reset Group"), this, SLOT(slotResetGroup())); + m_menu->addAction(KIcon("document-save"), i18n("Save Group"), this, SLOT(slotSaveGroup())); effecticon->setPixmap(KIcon("folder").pixmap(16,16)); m_menu->addAction(KIcon("list-remove"), i18n("Ungroup"), this, SLOT(slotUnGroup())); @@ -151,31 +151,22 @@ void CollapsibleGroup::slotEffectDown() emit changeGroupPosition(groupIndex(), false); } -void CollapsibleGroup::slotSaveEffect() +void CollapsibleGroup::slotSaveGroup() { - QString name = QInputDialog::getText(this, i18n("Save Effect"), i18n("Name for saved effect: ")); + QString name = QInputDialog::getText(this, i18n("Save Group"), i18n("Name for saved group: "), QLineEdit::Normal, m_title->text()); if (name.isEmpty()) return; QString path = KStandardDirs::locateLocal("appdata", "effects/", true); path = path + name + ".xml"; if (QFile::exists(path)) if (KMessageBox::questionYesNo(this, i18n("File %1 already exists.\nDo you want to overwrite it?", path)) == KMessageBox::No) return; - /*TODO - QDomDocument doc; - QDomElement effect = m_effect.cloneNode().toElement(); - doc.appendChild(doc.importNode(effect, true)); - effect = doc.firstChild().toElement(); - effect.removeAttribute("kdenlive_ix"); - effect.setAttribute("id", name); - effect.setAttribute("type", "custom"); - QDomElement effectname = effect.firstChildElement("name"); - effect.removeChild(effectname); - effectname = doc.createElement("name"); - QDomText nametext = doc.createTextNode(name); - effectname.appendChild(nametext); - effect.insertBefore(effectname, QDomNode()); - QDomElement effectprops = effect.firstChildElement("properties"); - effectprops.setAttribute("id", name); - effectprops.setAttribute("type", "custom"); + QDomDocument doc = effectsData(); + QDomElement base = doc.documentElement(); + QDomNodeList effects = base.elementsByTagName("effect"); + for (int i = 0; i < effects.count(); i++) + effects.at(i).toElement().removeAttribute("kdenlive_ix"); + + base.setAttribute("id", name); + base.setAttribute("type", "custom"); QFile file(path); if (file.open(QFile::WriteOnly | QFile::Truncate)) { @@ -183,12 +174,14 @@ void CollapsibleGroup::slotSaveEffect() out << doc.toString(); } file.close(); - emit reloadEffects();*/ + emit reloadEffects(); } -void CollapsibleGroup::slotResetEffect() +void CollapsibleGroup::slotResetGroup() { - //TODO: emit resetEffect(effectIndex()); + QMutexLocker lock(&m_mutex); + for (int i = 0; i < m_subWidgets.count(); i++) + m_subWidgets.at(i)->slotResetEffect(); } void CollapsibleGroup::slotSwitch() @@ -246,7 +239,6 @@ void CollapsibleGroup::removeGroup(int ix, QVBoxLayout *layout) vbox->removeWidget(m_subWidgets.at(i)); layout->insertWidget(ix, m_subWidgets.at(i)); m_subWidgets.at(i)->removeFromGroup(); - kDebug()<<"// Removing effect at: "<setReadOnly(true); if (m_title->text().isEmpty()) m_title->setText(i18n("Effect Group")); for (int j = 0; j < m_subWidgets.count(); j++) { diff --git a/src/effectstack/collapsiblegroup.h b/src/effectstack/collapsiblegroup.h index bf33330a..c85a145b 100644 --- a/src/effectstack/collapsiblegroup.h +++ b/src/effectstack/collapsiblegroup.h @@ -85,8 +85,8 @@ private slots: void slotDeleteEffect(); void slotEffectUp(); void slotEffectDown(); - void slotSaveEffect(); - void slotResetEffect(); + void slotSaveGroup(); + void slotResetGroup(); void slotUnGroup(); void slotRenameGroup(); @@ -114,6 +114,7 @@ signals: void addEffect(QDomElement e); void unGroup(CollapsibleGroup *); void groupRenamed(CollapsibleGroup *); + void reloadEffects(); }; diff --git a/src/effectstack/effectstackview2.cpp b/src/effectstack/effectstackview2.cpp index 18cd73fe..687bac49 100644 --- a/src/effectstack/effectstackview2.cpp +++ b/src/effectstack/effectstackview2.cpp @@ -186,6 +186,7 @@ void EffectStackView2::setupListView(int ix) connect(group, SIGNAL(moveEffect(int,int,int,QString)), this, SLOT(slotMoveEffect(int,int,int,QString))); connect(group, SIGNAL(unGroup(CollapsibleGroup*)), this , SLOT(slotUnGroup(CollapsibleGroup*))); connect(group, SIGNAL(groupRenamed(CollapsibleGroup *)), this, SLOT(slotRenameGroup(CollapsibleGroup*))); + connect(group, SIGNAL(reloadEffects()), this , SIGNAL(reloadEffects())); vbox1->addWidget(group); group->installEventFilter( this ); } @@ -633,6 +634,7 @@ void EffectStackView2::slotCreateGroup(int ix) connect(group, SIGNAL(moveEffect(int,int,int,QString)), this , SLOT(slotMoveEffect(int,int,int,QString))); connect(group, SIGNAL(unGroup(CollapsibleGroup*)), this , SLOT(slotUnGroup(CollapsibleGroup*))); connect(group, SIGNAL(groupRenamed(CollapsibleGroup *)), this , SLOT(slotRenameGroup(CollapsibleGroup*))); + connect(group, SIGNAL(reloadEffects()), this , SIGNAL(reloadEffects())); l->insertWidget(groupPos, group); group->installEventFilter( this ); group->addGroupEffect(effectToMove);