]> git.sesse.net Git - kdenlive/blobdiff - src/mainwindow.cpp
copy from cliptranscode to clipstabilize
[kdenlive] / src / mainwindow.cpp
index e073b9d4fa1bf1b1167a99b28f5a5483c66c9efb..db917bcf34f088f954663fa3dc3049cc0add00bd 100644 (file)
@@ -54,6 +54,7 @@
 #include "interfaces.h"
 #include "config-kdenlive.h"
 #include "cliptranscode.h"
+#include "clipstabilize.h"
 #include "ui_templateclip_ui.h"
 #include "colorscopes/vectorscope.h"
 #include "colorscopes/waveform.h"
@@ -475,15 +476,19 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, const QString &
 
     loadPlugins();
     loadTranscoders();
+    loadStabilize();
 
     m_projectMonitor->setupMenu(static_cast<QMenu*>(factory()->container("monitor_go", this)), m_playZone, m_loopZone, NULL, m_loopClip);
     m_clipMonitor->setupMenu(static_cast<QMenu*>(factory()->container("monitor_go", this)), m_playZone, m_loopZone, static_cast<QMenu*>(factory()->container("marker_menu", this)));
 
     QMenu *clipInTimeline = static_cast<QMenu*>(factory()->container("clip_in_timeline", this));
     clipInTimeline->setIcon(KIcon("go-jump"));
-    m_projectList->setupGeneratorMenu(static_cast<QMenu*>(factory()->container("generators", this)),
-                                      static_cast<QMenu*>(factory()->container("transcoders", this)),
-                                      clipInTimeline);
+       QHash<QString,QMenu*> menus;
+       menus.insert("addMenu",static_cast<QMenu*>(factory()->container("generators", this)));
+       menus.insert("transcodeMenu",static_cast<QMenu*>(factory()->container("transcoders", this)));
+       menus.insert("stabilizeMenu",static_cast<QMenu*>(factory()->container("stabilize", this)));
+       menus.insert("inTimelineMenu",clipInTimeline);
+    m_projectList->setupGeneratorMenu(menus);
 
     // build themes menus
     QMenu *themesMenu = static_cast<QMenu*>(factory()->container("themes_menu", this));
@@ -2351,7 +2356,9 @@ void MainWindow::slotRenderProject()
 {
     if (!m_renderWidget) {
         QString projectfolder = m_activeDocument ? m_activeDocument->projectFolder().path(KUrl::AddTrailingSlash) : KdenliveSettings::defaultprojectfolder();
-        m_renderWidget = new RenderWidget(projectfolder, m_projectList->useProxy(), this);
+        MltVideoProfile profile;
+        if (m_activeDocument) profile = m_activeDocument->mltProfile();
+        m_renderWidget = new RenderWidget(projectfolder, m_projectList->useProxy(), profile, this);
         connect(m_renderWidget, SIGNAL(shutdown()), this, SLOT(slotShutdown()));
         connect(m_renderWidget, SIGNAL(selectedRenderProfile(QMap <QString, QString>)), this, SLOT(slotSetDocumentRenderProfile(QMap <QString, QString>)));
         connect(m_renderWidget, SIGNAL(prepareRenderingData(bool, bool, const QString&)), this, SLOT(slotPrepareRendering(bool, bool, const QString&)));
@@ -2679,6 +2686,7 @@ void MainWindow::updateConfiguration()
 
     // Update list of transcoding profiles
     loadTranscoders();
+       loadStabilize();
 #ifdef USE_JOGSHUTTLE
     activateShuttleDevice();
 #endif
@@ -3773,6 +3781,25 @@ void MainWindow::slotMaximizeCurrent(bool)
     kDebug() << "CURRENT WIDGET: " << par->objectName();
 }
 
+void MainWindow::loadStabilize()
+{
+       QMenu* stabMenu= static_cast<QMenu*>(factory()->container("stabilize", this));
+       stabMenu->clear();
+       Mlt::Profile profile;
+       if (Mlt::Factory::filter(profile,(char*)"videostab")){
+               QAction *action=stabMenu->addAction("Videostab (vstab)");
+               action->setData("videostab");
+               connect(action,SIGNAL(triggered()), this, SLOT(slotStabilize()));
+       }
+       if (Mlt::Factory::filter(profile,(char*)"videostab2")){
+               QAction *action=stabMenu->addAction("Videostab (transcode)");
+               action->setData("videostab2");
+               connect(action,SIGNAL(triggered()), this, SLOT(slotStabilize()));
+       }
+
+
+}
+
 void MainWindow::loadTranscoders()
 {
     QMenu *transMenu = static_cast<QMenu*>(factory()->container("transcoders", this));
@@ -3794,6 +3821,27 @@ void MainWindow::loadTranscoders()
     }
 }
 
+void MainWindow::slotStabilize(KUrl::List urls)
+{
+       QString condition,filtername;
+
+       if (urls.isEmpty()) {
+        QAction *action = qobject_cast<QAction *>(sender());
+               if (action){
+                       filtername=action->data().toString();
+                       urls = m_projectList->getConditionalUrls(condition);
+               }
+    }
+    if (urls.isEmpty()) {
+        m_messageLabel->setMessage(i18n("No clip to transcode"), ErrorMessage);
+        return;
+    }
+       ClipStabilize *d=new ClipStabilize(urls,filtername);
+       connect(d, SIGNAL(addClip(KUrl)), this, SLOT(slotAddProjectClip(KUrl)));
+       d->show();
+
+}
+
 void MainWindow::slotTranscode(KUrl::List urls)
 {
     QString params;