]> git.sesse.net Git - kdenlive/commitdiff
Do not load corrupted coduments: 1st part of
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 2 Jan 2010 19:16:34 +0000 (19:16 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 2 Jan 2010 19:16:34 +0000 (19:16 +0000)
http://www.kdenlive.org/mantis/view.php?id=1360

svn path=/trunk/kdenlive/; revision=4191

src/customtrackview.cpp
src/mainwindow.cpp
src/mainwindow.h
src/renderer.cpp
src/trackview.cpp

index 959104bc3dd2b805597c664699b3d231f3cbb24e..5b27c2f1ae5cb1cfde58d2687729efdfa5981d21 100644 (file)
@@ -4908,6 +4908,7 @@ void CustomTrackView::setOutPoint()
 
 void CustomTrackView::slotUpdateAllThumbs()
 {
+    if (!isEnabled()) return;
     QList<QGraphicsItem *> itemList = items();
     //if (itemList.isEmpty()) return;
     ClipItem *item;
index f52755cbe105dd465204307d03a4e8b79ddf13a9..192b417e9da665de41d623d4667947abfca452da 100644 (file)
@@ -1419,14 +1419,14 @@ void MainWindow::slotRunWizard()
     delete w;
 }
 
-void MainWindow::newFile(bool showProjectSettings)
+void MainWindow::newFile(bool showProjectSettings, bool force)
 {
-    if (!m_timelineArea->isEnabled()) return;
+    if (!m_timelineArea->isEnabled() && !force) return;
     m_fileRevert->setEnabled(false);
     QString profileName;
     KUrl projectFolder;
     QPoint projectTracks(KdenliveSettings::videotracks(), KdenliveSettings::audiotracks());
-    if (!showProjectSettings && m_timelineArea->count() == 0) {
+    if (!showProjectSettings) {
         if (!KdenliveSettings::activatetabs()) closeCurrentDocument();
         profileName = KdenliveSettings::default_profile();
         projectFolder = KdenliveSettings::defaultprojectfolder();
@@ -1441,6 +1441,8 @@ void MainWindow::newFile(bool showProjectSettings)
         projectTracks = w->tracks();
         delete w;
     }
+    m_timelineArea->setEnabled(true);
+    m_projectList->setEnabled(true);
     KdenliveDoc *doc = new KdenliveDoc(KUrl(), projectFolder, m_commandStack, profileName, projectTracks, m_projectMonitor->render, this);
     doc->m_autosave = new KAutoSaveFile(KUrl(), doc);
     bool ok;
@@ -1656,8 +1658,9 @@ void MainWindow::doOpenFile(const KUrl &url, KAutoSaveFile *stale)
     if (!ok) {
         m_timelineArea->setEnabled(false);
         m_projectList->setEnabled(false);
-        m_monitorManager->slotBlockMonitors();
-        slotPreferences(6);
+        KMessageBox::sorry(this, i18n("Cannot open file %1.\nProject is corrupted.", url.path()));
+        slotGotProgressInfo(QString(), -1);
+        newFile(false, true);
         return;
     }
     m_timelineArea->setTabToolTip(m_timelineArea->currentIndex(), doc->url().path());
index 7c8deb4723f787768f070862d954dba00f369ab8..86ca504ccf637047b1101c51ed69f75db27fb448 100644 (file)
@@ -213,7 +213,7 @@ public slots:
     Q_SCRIPTABLE void setRenderingFinished(const QString &url, int status, const QString &error);
 
 private slots:
-    void newFile(bool showProjectSettings = true);
+    void newFile(bool showProjectSettings = true, bool force = false);
     void queryQuit();
     void activateDocument();
     void connectDocument(TrackView*, KdenliveDoc*);
index e023a804affdd47dbf923a81d8947fb898a4e975..496d709e869dc6ad3b199acb871d1f88a7000d98 100644 (file)
@@ -923,7 +923,7 @@ int Render::setSceneList(QString playlist, int position)
 {
     if (m_winid == -1) return -1;
     m_isBlocked = true;
-    int error;
+    int error = 0;
 
     kDebug() << "//////  RENDER, SET SCENE LIST: " << playlist;
 
@@ -991,6 +991,7 @@ int Render::setSceneList(QString playlist, int position)
     if (!m_mltProducer || !m_mltProducer->is_valid()) {
         kDebug() << " WARNING - - - - -INVALID PLAYLIST: " << tmp;
         m_mltProducer = m_blackClip->cut(0, 50);
+        error = -1;
     }
     delete[] tmp;
 
@@ -1026,7 +1027,8 @@ int Render::setSceneList(QString playlist, int position)
     }
 
     kDebug() << "// NEW SCENE LIST DURATION SET TO: " << m_mltProducer->get_playtime();
-    error = connectPlaylist();
+    if (error == 0) error = connectPlaylist();
+    else connectPlaylist();
     fillSlowMotionProducers();
 
     m_isBlocked = false;
index b6009c1a9dd4564baa1225c3981bad80f9121616..01f12a6779dfdfe8d5b8d149895371e1f367be8a 100644 (file)
@@ -106,8 +106,7 @@ TrackView::TrackView(KdenliveDoc *doc, bool *ok, QWidget *parent) :
     connect(m_trackview, SIGNAL(updateTrackHeaders()), this, SLOT(slotRepaintTracks()));
 
     parseDocument(m_doc->toXml());
-    int error = m_doc->setSceneList();
-    if (error == -1) *ok = false;
+    if (m_doc->setSceneList() == -1) *ok = false;
     else *ok = true;
     connect(m_trackview, SIGNAL(cursorMoved(int, int)), m_ruler, SLOT(slotCursorMoved(int, int)));
     connect(m_trackview->horizontalScrollBar(), SIGNAL(valueChanged(int)), m_ruler, SLOT(slotMoveRuler(int)));