From 8f240cad50d7652c698d73ed3c14ba77db04209b Mon Sep 17 00:00:00 2001 From: Marco Gittler Date: Sun, 30 Mar 2008 20:17:35 +0000 Subject: [PATCH] made effectLists static svn path=/branches/KDE4/; revision=2147 --- src/abstractclipitem.cpp | 2 +- src/effectslistview.cpp | 4 ++-- src/effectslistview.h | 2 +- src/effectslistwidget.cpp | 23 ++++++++++++----------- src/effectslistwidget.h | 5 +---- src/effectstackview.cpp | 9 +++++---- src/effectstackview.h | 2 +- src/initeffects.cpp | 9 +++++---- src/initeffects.h | 2 +- src/mainwindow.cpp | 25 +++++++++++++++---------- src/mainwindow.h | 9 ++++----- src/renderer.cpp | 15 ++++++++++----- src/transition.cpp | 7 ++----- src/transitionsettings.cpp | 10 +++++----- src/transitionsettings.h | 3 +-- 15 files changed, 66 insertions(+), 61 deletions(-) diff --git a/src/abstractclipitem.cpp b/src/abstractclipitem.cpp index 5488861c..110200d9 100644 --- a/src/abstractclipitem.cpp +++ b/src/abstractclipitem.cpp @@ -4,7 +4,7 @@ #include #include -AbstractClipItem::AbstractClipItem(const ItemInfo info, const QRectF& rect): QGraphicsRectItem(rect), m_startFade(0), m_endFade(0) { +AbstractClipItem::AbstractClipItem(const ItemInfo info, const QRectF& rect): QGraphicsRectItem(rect), m_startFade(0), m_endFade(0), m_track(0) { setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); setTrack(info.track); m_startPos = info.startPos; diff --git a/src/effectslistview.cpp b/src/effectslistview.cpp index df10a61e..716b387a 100644 --- a/src/effectslistview.cpp +++ b/src/effectslistview.cpp @@ -25,9 +25,9 @@ #include "effectslistwidget.h" #include "effectslist.h" -EffectsListView::EffectsListView(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *customEffectList, QWidget *parent) +EffectsListView::EffectsListView(QWidget *parent) : QWidget(parent) { - m_effectsList = new EffectsListWidget(audioEffectList, videoEffectList, customEffectList); + m_effectsList = new EffectsListWidget(); ui.setupUi(this); QVBoxLayout *lyr = new QVBoxLayout(ui.effectlistframe); diff --git a/src/effectslistview.h b/src/effectslistview.h index 599a0ae5..cc6fc3f0 100644 --- a/src/effectslistview.h +++ b/src/effectslistview.h @@ -35,7 +35,7 @@ class EffectsListView : public QWidget { Q_OBJECT public: - EffectsListView(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *customEffectList, QWidget *parent = 0); + EffectsListView(QWidget *parent = 0); KListWidget *listView(); //void slotAddEffect(GenTime pos, int track, QString name); diff --git a/src/effectslistwidget.cpp b/src/effectslistwidget.cpp index 7eb9f4f8..7286b7c0 100644 --- a/src/effectslistwidget.cpp +++ b/src/effectslistwidget.cpp @@ -24,13 +24,14 @@ #include "effectslistwidget.h" #include "effectslist.h" +#include "mainwindow.h" #define EFFECT_VIDEO 1 #define EFFECT_AUDIO 2 #define EFFECT_CUSTOM 3 -EffectsListWidget::EffectsListWidget(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *customEffectList, QWidget *parent) - : KListWidget(parent), m_audioList(audioEffectList), m_videoList(videoEffectList), m_customList(customEffectList) { +EffectsListWidget::EffectsListWidget(QWidget *parent) + : KListWidget(parent) { //setSelectionMode(QAbstractItemView::ExtendedSelection); //setDragDropMode(QAbstractItemView::DragDrop); setDropIndicatorShown(true); @@ -46,20 +47,20 @@ EffectsListWidget::~EffectsListWidget() { void EffectsListWidget::initList() { clear(); - QStringList names = m_videoList->effectNames(); + QStringList names = MainWindow::videoEffects.effectNames(); QListWidgetItem *item; foreach(QString str, names) { item = new QListWidgetItem(str, this); item->setData(Qt::UserRole, QString::number((int) EFFECT_VIDEO)); } - names = m_audioList->effectNames(); + names = MainWindow::audioEffects.effectNames(); foreach(QString str, names) { item = new QListWidgetItem(str, this); item->setData(Qt::UserRole, QString::number((int) EFFECT_AUDIO)); } - names = m_customList->effectNames(); + names = MainWindow::customEffects.effectNames(); foreach(QString str, names) { item = new QListWidgetItem(str, this); item->setData(Qt::UserRole, QString::number((int) EFFECT_CUSTOM)); @@ -75,13 +76,13 @@ QDomElement EffectsListWidget::itemEffect(QListWidgetItem *item) { if (!item) return effect; switch (item->data(Qt::UserRole).toInt()) { case 1: - effect = m_videoList->getEffectByName(item->text()); + effect = MainWindow::videoEffects.getEffectByName(item->text()); break; case 2: - effect = m_audioList->getEffectByName(item->text()); + effect = MainWindow::audioEffects.getEffectByName(item->text()); break; default: - effect = m_customList->getEffectByName(item->text()); + effect = MainWindow::customEffects.getEffectByName(item->text()); break; } return effect; @@ -94,13 +95,13 @@ QString EffectsListWidget::currentInfo() { QString info; switch (item->data(Qt::UserRole).toInt()) { case 1: - info = m_videoList->getInfo(item->text()); + info = MainWindow::videoEffects.getInfo(item->text()); break; case 2: - info = m_audioList->getInfo(item->text()); + info = MainWindow::audioEffects.getInfo(item->text()); break; default: - info = m_customList->getInfo(item->text()); + info = MainWindow::customEffects.getInfo(item->text()); break; } return info; diff --git a/src/effectslistwidget.h b/src/effectslistwidget.h index 0635075e..92dc1454 100644 --- a/src/effectslistwidget.h +++ b/src/effectslistwidget.h @@ -30,7 +30,7 @@ class EffectsListWidget : public KListWidget { Q_OBJECT public: - EffectsListWidget(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *customEffectList, QWidget *parent = 0); + EffectsListWidget(QWidget *parent = 0); virtual ~EffectsListWidget(); QDomElement currentEffect(); QString currentInfo(); @@ -44,9 +44,6 @@ protected: private: bool m_dragStarted; QPoint m_DragStartPosition; - EffectsList *m_audioList; - EffectsList *m_videoList; - EffectsList *m_customList; void initList(); }; diff --git a/src/effectstackview.cpp b/src/effectstackview.cpp index 939733b3..a25022fd 100644 --- a/src/effectstackview.cpp +++ b/src/effectstackview.cpp @@ -21,10 +21,11 @@ #include "effectstackview.h" #include "effectslist.h" #include "clipitem.h" +#include "mainwindow.h" #include #include -EffectStackView::EffectStackView(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *customEffectList, QWidget *parent) +EffectStackView::EffectStackView(QWidget *parent) : QWidget(parent) { ui.setupUi(this); effectedit = new EffectStackEdit(ui.frame, this); @@ -55,9 +56,9 @@ EffectStackView::EffectStackView(EffectsList *audioEffectList, EffectsList *vide connect(ui.buttonReset, SIGNAL(clicked()), this, SLOT(slotResetEffect())); connect(this, SIGNAL(transferParamDesc(const QDomElement&, int , int)), effectedit , SLOT(transferParamDesc(const QDomElement&, int , int))); connect(effectedit, SIGNAL(parameterChanged(const QDomElement&, const QDomElement&)), this , SLOT(slotUpdateEffectParams(const QDomElement&, const QDomElement&))); - effectLists["audio"] = audioEffectList; - effectLists["video"] = videoEffectList; - effectLists["custom"] = customEffectList; + effectLists["audio"] = &MainWindow::audioEffects; + effectLists["video"] = &MainWindow::videoEffects; + effectLists["custom"] = &MainWindow::customEffects; ui.infoBox->hide(); setEnabled(false); diff --git a/src/effectstackview.h b/src/effectstackview.h index dc14ace5..9ee6fbb2 100644 --- a/src/effectstackview.h +++ b/src/effectstackview.h @@ -27,7 +27,7 @@ class EffectStackView : public QWidget { Q_OBJECT public: - EffectStackView(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *customEffectList, QWidget *parent = 0); + EffectStackView(QWidget *parent = 0); private: Ui::EffectStack_UI ui; diff --git a/src/initeffects.cpp b/src/initeffects.cpp index 3decbf20..beb81c1e 100644 --- a/src/initeffects.cpp +++ b/src/initeffects.cpp @@ -31,6 +31,7 @@ #include "kdenlivesettings.h" #include "effectslist.h" #include "effectstackedit.h" +#include "mainwindow.h" initEffectsThumbnailer::initEffectsThumbnailer() { @@ -66,7 +67,7 @@ initEffects::~initEffects() { } //static -Mlt::Repository *initEffects::parseEffectFiles(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList* transitionsList) { +Mlt::Repository *initEffects::parseEffectFiles() { QStringList::Iterator more; QStringList::Iterator it; QStringList fileList; @@ -102,7 +103,7 @@ Mlt::Repository *initEffects::parseEffectFiles(EffectsList *audioEffectList, Eff transitionsItemList << transitions->get_name(i); } delete transitions; - fillTransitionsList(repository, transitionsList, transitionsItemList); + fillTransitionsList(repository, &MainWindow::transitions, transitionsItemList); KGlobal::dirs()->addResourceType("ladspa_plugin", 0, "lib/ladspa"); KGlobal::dirs()->addResourceDir("ladspa_plugin", "/usr/lib/ladspa"); @@ -120,14 +121,14 @@ Mlt::Repository *initEffects::parseEffectFiles(EffectsList *audioEffectList, Eff fileList = directory.entryList(QDir::Files); for (it = fileList.begin() ; it != fileList.end() ; ++it) { itemName = KUrl(*more + *it).path(); - parseEffectFile(audioEffectList, videoEffectList, itemName, filtersList, producersList); + parseEffectFile(&MainWindow::audioEffects, &MainWindow::videoEffects, itemName, filtersList, producersList); // kDebug()<<"// FOUND EFFECT FILE: "<append(doc.documentElement()); + MainWindow::videoEffects.append(doc.documentElement()); } return repository; } diff --git a/src/initeffects.h b/src/initeffects.h index d63cc2c8..7bd45ca5 100644 --- a/src/initeffects.h +++ b/src/initeffects.h @@ -47,7 +47,7 @@ public: initEffects(); ~initEffects(); - static Mlt::Repository *parseEffectFiles(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *transitions); + static Mlt::Repository *parseEffectFiles(); static QDomDocument createDescriptionFromMlt(Mlt::Repository* repository, const QString& type, const QString& name); static void fillTransitionsList(Mlt::Repository *, EffectsList* transitions, QStringList names); static QDomElement quickParameterFill(QDomDocument & doc, QString name, QString tag, QString type, QString def = QString(), QString min = QString(), QString max = QString(), QString list = QString(), QString factor = QString(), QString namedesc = QString(), QString format = QString()); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 268c9a29..a0167f76 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -81,6 +81,11 @@ #define ID_TIMELINE_POS 6 #define ID_TIMELINE_FORMAT 7 +EffectsList MainWindow::videoEffects; +EffectsList MainWindow::audioEffects; +EffectsList MainWindow::customEffects; +EffectsList MainWindow::transitions; + MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent), m_activeDocument(NULL), m_activeTimeline(NULL), m_renderWidget(NULL), m_jogProcess(NULL) { @@ -100,7 +105,7 @@ MainWindow::MainWindow(QWidget *parent) m_timelineArea->setCornerWidget(closeTabButton); connect(m_timelineArea, SIGNAL(currentChanged(int)), this, SLOT(activateDocument())); - initEffects::parseEffectFiles(&m_audioEffects, &m_videoEffects, &m_transitions); + initEffects::parseEffectFiles(); m_monitorManager = new MonitorManager(); projectListDock = new QDockWidget(i18n("Project Tree"), this); @@ -111,7 +116,7 @@ MainWindow::MainWindow(QWidget *parent) effectListDock = new QDockWidget(i18n("Effect List"), this); effectListDock->setObjectName("effect_list"); - m_effectList = new EffectsListView(&m_audioEffects, &m_videoEffects, &m_customEffects); + m_effectList = new EffectsListView(); //m_effectList = new KListWidget(this); effectListDock->setWidget(m_effectList); @@ -119,13 +124,13 @@ MainWindow::MainWindow(QWidget *parent) effectStackDock = new QDockWidget(i18n("Effect Stack"), this); effectStackDock->setObjectName("effect_stack"); - effectStack = new EffectStackView(&m_audioEffects, &m_videoEffects, &m_customEffects, this); + effectStack = new EffectStackView(this); effectStackDock->setWidget(effectStack); addDockWidget(Qt::TopDockWidgetArea, effectStackDock); transitionConfigDock = new QDockWidget(i18n("Transition"), this); transitionConfigDock->setObjectName("transition"); - transitionConfig = new TransitionSettings(&m_transitions, this); + transitionConfig = new TransitionSettings(this); transitionConfigDock->setWidget(transitionConfig); addDockWidget(Qt::TopDockWidgetArea, transitionConfigDock); @@ -215,21 +220,21 @@ MainWindow::MainWindow(QWidget *parent) // build effects menus QAction *action; QMenu *videoEffectsMenu = (QMenu*)(factory()->container("video_effects_menu", this)); - QStringList effects = m_videoEffects.effectNames(); + QStringList effects = videoEffects.effectNames(); foreach(QString name, effects) { action = new QAction(name, this); action->setData(name); videoEffectsMenu->addAction(action); } QMenu *audioEffectsMenu = (QMenu*)(factory()->container("audio_effects_menu", this)); - effects = m_audioEffects.effectNames(); + effects = audioEffects.effectNames(); foreach(QString name, effects) { action = new QAction(name, this); action->setData(name); audioEffectsMenu->addAction(action); } QMenu *customEffectsMenu = (QMenu*)(factory()->container("custom_effects_menu", this)); - effects = m_customEffects.effectNames(); + effects = customEffects.effectNames(); foreach(QString name, effects) { action = new QAction(name, this); action->setData(name); @@ -852,19 +857,19 @@ void MainWindow::slotAddProjectClip(KUrl url) { void MainWindow::slotAddVideoEffect(QAction *result) { if (!result) return; - QDomElement effect = m_videoEffects.getEffectByName(result->data().toString()); + QDomElement effect = videoEffects.getEffectByName(result->data().toString()); slotAddEffect(effect); } void MainWindow::slotAddAudioEffect(QAction *result) { if (!result) return; - QDomElement effect = m_audioEffects.getEffectByName(result->data().toString()); + QDomElement effect = audioEffects.getEffectByName(result->data().toString()); slotAddEffect(effect); } void MainWindow::slotAddCustomEffect(QAction *result) { if (!result) return; - QDomElement effect = m_customEffects.getEffectByName(result->data().toString()); + QDomElement effect = customEffects.getEffectByName(result->data().toString()); slotAddEffect(effect); } diff --git a/src/mainwindow.h b/src/mainwindow.h index 7ac31bcb..dc57e66f 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -59,6 +59,10 @@ public: MainWindow(QWidget *parent = 0); void parseProfiles(); + static EffectsList videoEffects; + static EffectsList audioEffects; + static EffectsList customEffects; + static EffectsList transitions; protected: virtual bool queryClose(); virtual void customEvent(QEvent * e); @@ -103,11 +107,6 @@ private: QDockWidget *overviewDock; CustomTrackView *m_overView; - EffectsList m_videoEffects; - EffectsList m_audioEffects; - EffectsList m_customEffects; - EffectsList m_transitions; - QMenu *m_timelineContextMenu; QMenu *m_timelineContextClipMenu; QMenu *m_timelineContextTransitionMenu; diff --git a/src/renderer.cpp b/src/renderer.cpp index 1cdbce32..64282417 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -25,7 +25,7 @@ // ffmpeg Header files extern "C" { -//#include +#include } #include #include @@ -41,7 +41,7 @@ extern "C" { #include "renderer.h" #include "kdenlivesettings.h" #include "kthumb.h" -#include +//#include #include static void consumer_frame_show(mlt_consumer, Render * self, mlt_frame frame_ptr) { @@ -590,6 +590,7 @@ QString Render::sceneList() { } void Render::saveSceneList(QString path, QDomElement addedXml) { + char *tmppath = decodedString("westley:" + path); Mlt::Consumer westleyConsumer(*m_mltProfile , tmppath); delete[] tmppath; @@ -601,8 +602,8 @@ void Render::saveSceneList(QString path, QDomElement addedXml) { // add Kdenlive specific tags QFile file(path); QDomDocument doc; - doc.setContent(&file, false); - doc.documentElement().appendChild(doc.importNode(addedXml, true)); + //doc.setContent(&file, false); + doc.appendChild(doc.importNode(addedXml, true)); file.close(); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { kWarning() << "////// ERROR writing to file: " << path; @@ -1404,6 +1405,7 @@ void Render::mltMoveTransition(QString type, int startTrack, int trackOffset, Ge m_isBlocked = false; delete tractor; } + mltSavePlaylist(); m_mltConsumer->set("refresh", 1); } @@ -1550,10 +1552,13 @@ QMap Render::mltGetTransitionParamsFromXml(QDomElement xml) { QTextStream txtNeu(&neu); if (values.size() > 0) txtNeu << (int)values[0].toDouble(); - for (int i = 0;i < separators.size() && i + 1 < values.size();i++) { + int i = 0; + for (i = 0;i < separators.size() && i + 1 < values.size();i++) { txtNeu << separators[i]; txtNeu << (int)(values[i+1].toDouble()); } + if (i < separators.size()) + txtNeu << separators[i]; map[e.attribute("name")] = neu; } diff --git a/src/transition.cpp b/src/transition.cpp index 8f000e7c..3fedee13 100644 --- a/src/transition.cpp +++ b/src/transition.cpp @@ -30,7 +30,7 @@ #include "transition.h" #include "clipitem.h" #include "kdenlivesettings.h" - +#include "mainwindow.h" Transition::Transition(const ItemInfo info, int transitiontrack, double scale, double fps, QDomElement params) : AbstractClipItem(info, QRectF(info.startPos.frames(fps) *scale , info.track * KdenliveSettings::trackheight() + KdenliveSettings::trackheight() / 2, (info.endPos - info.startPos).frames(fps) * scale , KdenliveSettings::trackheight() - 1)) { m_singleClip = true; @@ -41,10 +41,7 @@ Transition::Transition(const ItemInfo info, int transitiontrack, double scale, d m_maxDuration = GenTime(10000, fps); //m_referenceClip = clipa; if (params.isNull()) { - //FIXME we need to setup here the right luma xml file !!! - QDomDocument doc; - doc.setContent(QString("LumaLuma TransitionsReverse")); - m_parameters = doc.documentElement(); + m_parameters = MainWindow::transitions.getEffectByName("Luma"); } else { m_parameters = params; } diff --git a/src/transitionsettings.cpp b/src/transitionsettings.cpp index 41a1e65c..b20025ee 100644 --- a/src/transitionsettings.cpp +++ b/src/transitionsettings.cpp @@ -22,14 +22,14 @@ #include "transition.h" #include "effectslist.h" #include "effectstackedit.h" +#include "mainwindow.h" -TransitionSettings::TransitionSettings(EffectsList *transitions, QWidget* parent): QWidget(parent) { +TransitionSettings::TransitionSettings(QWidget* parent): QWidget(parent) { ui.setupUi(this); effectEdit = new EffectStackEdit(ui.frame, this); setEnabled(false); - m_transitions = transitions; - ui.listWidget->addItems(transitions->effectNames()); - kDebug() << transitions->effectNames().size() << " -" << transitions->size(); + ui.listWidget->addItems(MainWindow::transitions.effectNames()); + kDebug() << MainWindow::transitions.effectNames().size(); ui.listWidget->setCurrentRow(0); connect(ui.listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(slotTransitionChanged())); connect(this, SIGNAL(transferParamDesc(const QDomElement&, int , int)), effectEdit , SLOT(transferParamDesc(const QDomElement&, int , int))); @@ -51,7 +51,7 @@ void TransitionSettings::slotTransitionChanged() { if (m_usedTransition && m_usedTransition->transitionName() == ui.listWidget->currentItem()->text() && !e.attribute("tag").isNull()) { slotUpdateEffectParams(e, e); } else - slotUpdateEffectParams(e, m_transitions->getEffectByName(ui.listWidget->currentItem()->text())); + slotUpdateEffectParams(e, MainWindow::transitions.getEffectByName(ui.listWidget->currentItem()->text())); emit transferParamDesc(m_usedTransition->toXML(), 0, 0); } diff --git a/src/transitionsettings.h b/src/transitionsettings.h index 7d2c96db..0e062925 100644 --- a/src/transitionsettings.h +++ b/src/transitionsettings.h @@ -26,10 +26,9 @@ class EffectStackEdit; class TransitionSettings : public QWidget { Q_OBJECT public: - TransitionSettings(EffectsList *, QWidget* parent = 0); + TransitionSettings(QWidget* parent = 0); private: Ui::TransitionSettings_UI ui; - EffectsList *m_transitions; EffectStackEdit *effectEdit; Transition* m_usedTransition; public slots: -- 2.39.2