]> git.sesse.net Git - kdenlive/commitdiff
made effectLists static
authorMarco Gittler <marco@gitma.de>
Sun, 30 Mar 2008 20:17:35 +0000 (20:17 +0000)
committerMarco Gittler <marco@gitma.de>
Sun, 30 Mar 2008 20:17:35 +0000 (20:17 +0000)
svn path=/branches/KDE4/; revision=2147

15 files changed:
src/abstractclipitem.cpp
src/effectslistview.cpp
src/effectslistview.h
src/effectslistwidget.cpp
src/effectslistwidget.h
src/effectstackview.cpp
src/effectstackview.h
src/initeffects.cpp
src/initeffects.h
src/mainwindow.cpp
src/mainwindow.h
src/renderer.cpp
src/transition.cpp
src/transitionsettings.cpp
src/transitionsettings.h

index 5488861c25afb44dda0fbccbda111f38a3752250..110200d90fc4b890edc178dc8facb3ca23a27ad6 100644 (file)
@@ -4,7 +4,7 @@
 #include <QGraphicsView>
 #include <QScrollBar>
 
-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;
index df10a61eaca2023f4cb0f720d48c26a5d8e0a658..716b387a064e414d9379d6dfd0d4c6689b83e966 100644 (file)
@@ -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);
index 599a0ae54de1f592caab04602939cb9a9dc08e82..cc6fc3f03310cfd5d3a62d6ea672b96961e01385 100644 (file)
@@ -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);
 
index 7eb9f4f8805b6422d3605395cefbe81b5fe8bebd..7286b7c028d353227de850bad0797d39c8c52614 100644 (file)
 
 #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;
index 0635075e059af3b97a801c58be2d52dbef19a598..92dc14548577bbe599085f7700a38ce5cc98a7e1 100644 (file)
@@ -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();
 
 };
index 939733b3f97510e6f03dc0bf50bb5dff2006331a..a25022fd0da10e02f6c1a919db8df650ca9e1c60 100644 (file)
 #include "effectstackview.h"
 #include "effectslist.h"
 #include "clipitem.h"
+#include "mainwindow.h"
 #include <QHeaderView>
 #include <QMenu>
 
-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);
index dc14ace586210b3d4c68437d4fb6d3a75b39f058..9ee6fbb2c7cb60e2834fdf235fb435e37fc22d8c 100644 (file)
@@ -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;
index 3decbf202dacaf5d33d97e3d5d7843db74ca9447..beb81c1e5d694c2a611fff6856846b774850b1f5 100644 (file)
@@ -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: "<<itemName<<endl;
         }
     }
     foreach(QString filtername, filtersList) {
         QDomDocument doc = createDescriptionFromMlt(repository, "filters", filtername);
         if (!doc.isNull())
-            videoEffectList->append(doc.documentElement());
+            MainWindow::videoEffects.append(doc.documentElement());
     }
     return repository;
 }
index d63cc2c8c9f8901cc31d91fad2e86869e111b2c5..7bd45ca5a25a0d28ccc6025963c9493952ed4dfa 100644 (file)
@@ -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());
index 268c9a29acc024437327f0e2a2b2d20ec3feaa32..a0167f76165d580ee05be5ac114f1a36046f25f5 100644 (file)
 #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);
 }
 
index 7ac31bcb35fc182055c9ceda64d7be1974350b5a..dc57e66fda6c545d008d45f75dd9b21b50c9314f 100644 (file)
@@ -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;
index 1cdbce320afc76f9052431dd433940ef2577fb6a..64282417fdcda0472ba4ff23459ebf52e305478a 100644 (file)
@@ -25,7 +25,7 @@
 // ffmpeg Header files
 
 extern "C" {
-//#include <libavformat/avformat.h>
+#include <libavformat/avformat.h>
 }
 #include <QTimer>
 #include <QDir>
@@ -41,7 +41,7 @@ extern "C" {
 #include "renderer.h"
 #include "kdenlivesettings.h"
 #include "kthumb.h"
-#include <ffmpeg/avformat.h>
+//#include <ffmpeg/avformat.h>
 #include <mlt++/Mlt.h>
 
 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<QString, QString> 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;
         }
 
index 8f000e7cf359116f277f1b872d33e5c968a50920..3fedee13283e2f4fff3541fb5a329b39faabefba 100644 (file)
@@ -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("<ktransition tag=\"luma\"><name>Luma</name><description>Luma Transitions</description><properties id=\"luma\" tag=\"luma\" /><parameter type=\"bool\" name=\"reverse\" max=\"1\" min=\"0\" default=\"1\" factor=\"1\"><name>Reverse</name></parameter></ktransition>"));
-        m_parameters = doc.documentElement();
+        m_parameters = MainWindow::transitions.getEffectByName("Luma");
     } else {
         m_parameters = params;
     }
index 41a1e65c3fa36446ebc7cd0c1880c89f55a6951c..b20025eea80b82c38a78c458249049a83cea9af2 100644 (file)
 #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);
 }
 
index 7d2c96db149026229913029cf93fef589d384059..0e0629253cbfe4f7c1f929d5236cfe53b6a5fc3b 100644 (file)
@@ -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: