]> git.sesse.net Git - kdenlive/blobdiff - src/mainwindow.cpp
Update a few strings for better user info
[kdenlive] / src / mainwindow.cpp
index e01b5e259611a91ee4d51f05a861fc7ca7617b71..bc41e23287bd27871919e5a4f58fb2305c95a161 100644 (file)
 #include <QBitmap>
 
 #include <stdlib.h>
+#include <locale.h>
 
 // Uncomment for deeper debugging
 //#define DEBUG_MAINW
@@ -156,6 +157,15 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, const QString &
 
     // Init locale
     QLocale systemLocale = QLocale();
+    setlocale(LC_NUMERIC, NULL);
+    char *separator = localeconv()->decimal_point;
+    if (separator != systemLocale.decimalPoint()) {
+        kDebug()<<"------\n!!! system locale is not similar to Qt's locale... be prepared for bugs!!!\n------";
+        // HACK: There is a locale conflict, so set locale to at least have correct decimal point
+        if (strncmp(separator, ".", 1) == 0) systemLocale = QLocale::c();
+        else if (strncmp(separator, ",", 1) == 0) systemLocale = QLocale("fr_FR.UTF-8");
+    }
+    
     systemLocale.setNumberOptions(QLocale::OmitGroupSeparator);
     QLocale::setDefault(systemLocale);
 
@@ -475,15 +485,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));
@@ -2681,6 +2695,7 @@ void MainWindow::updateConfiguration()
 
     // Update list of transcoding profiles
     loadTranscoders();
+       loadStabilize();
 #ifdef USE_JOGSHUTTLE
     activateShuttleDevice();
 #endif
@@ -3775,6 +3790,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));
@@ -3796,6 +3830,18 @@ void MainWindow::loadTranscoders()
     }
 }
 
+void MainWindow::slotStabilize(KUrl::List urls)
+{
+       QString condition;
+       if (urls.isEmpty()) {
+        QAction *action = qobject_cast<QAction *>(sender());
+               if (action){
+                       QString filtername=action->data().toString();
+                       urls = m_projectList->getConditionalUrls(condition);
+               }
+    }
+}
+
 void MainWindow::slotTranscode(KUrl::List urls)
 {
     QString params;