]> git.sesse.net Git - kdenlive/blobdiff - src/customtrackview.cpp
Check for invalid producers / entries when opening document:
[kdenlive] / src / customtrackview.cpp
index 00cf0ac2d04b45d2cee9a33641f9858849f33ab1..4441372c7e5f8eb68c6fdfdcfebada99f6156e3a 100644 (file)
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
  ***************************************************************************/
 
-#include <QMouseEvent>
-#include <QStylePainter>
-#include <QGraphicsItem>
-#include <QDomDocument>
-#include <QScrollBar>
-#include <QApplication>
-#include <QInputDialog>
-
-#include <KDebug>
-#include <KLocale>
-#include <KUrl>
-#include <KIcon>
-#include <KCursor>
 
 #include "customtrackview.h"
 #include "customtrackscene.h"
@@ -52,8 +39,6 @@
 #include "razorclipcommand.h"
 #include "kdenlivesettings.h"
 #include "transition.h"
-#include "clipitem.h"
-#include "customtrackview.h"
 #include "clipmanager.h"
 #include "renderer.h"
 #include "markerdialog.h"
 #include "initeffects.h"
 #include "locktrackcommand.h"
 
+#include <KDebug>
+#include <KLocale>
+#include <KUrl>
+#include <KIcon>
+#include <KCursor>
+
+#include <QMouseEvent>
+#include <QStylePainter>
+#include <QGraphicsItem>
+#include <QDomDocument>
+#include <QScrollBar>
+#include <QApplication>
+#include <QInputDialog>
+
+
 //TODO:
 // disable animation if user asked it in KDE's global settings
 // http://lists.kde.org/?l=kde-commits&m=120398724717624&w=2
@@ -81,7 +81,7 @@
 CustomTrackView::CustomTrackView(KdenliveDoc *doc, CustomTrackScene* projectscene, QWidget *parent)
         : QGraphicsView(projectscene, parent), m_scene(projectscene), m_cursorPos(0), m_cursorLine(NULL), m_operationMode(NONE), m_dragItem(NULL), m_visualTip(NULL), m_moveOpMode(NONE), m_animation(NULL), m_projectDuration(0), m_clickPoint(QPoint()), m_document(doc), m_autoScroll(KdenliveSettings::autoscroll()), m_tracksHeight(KdenliveSettings::trackheight()), m_tool(SELECTTOOL), m_dragGuide(NULL), m_findIndex(0), m_menuPosition(QPoint()), m_blockRefresh(false), m_selectionGroup(NULL), m_selectedTrack(0), m_copiedItems(QList<AbstractClipItem *> ()), m_scrollOffset(0), m_changeSpeedAction(NULL), m_pasteEffectsAction(NULL) {
     if (doc) m_commandStack = doc->commandStack();
-    else m_commandStack == NULL;
+    else m_commandStack = NULL;
     setMouseTracking(true);
     setAcceptDrops(true);
     m_animationTimer = new QTimeLine(800);
@@ -956,7 +956,7 @@ void CustomTrackView::activateMonitor() {
 void CustomTrackView::dragEnterEvent(QDragEnterEvent * event) {
     if (event->mimeData()->hasFormat("kdenlive/clip")) {
         resetSelectionGroup();
-        QStringList list = QString(event->mimeData()->data("kdenlive/clip")).split(";");
+        QStringList list = QString(event->mimeData()->data("kdenlive/clip")).split(';');
         m_selectionGroup = new AbstractGroupItem(m_document->fps());
         QPoint pos = QPoint();
         DocClipBase *clip = m_document->getBaseClip(list.at(0));
@@ -977,7 +977,7 @@ void CustomTrackView::dragEnterEvent(QDragEnterEvent * event) {
         scene()->addItem(m_selectionGroup);
         event->acceptProposedAction();
     } else if (event->mimeData()->hasFormat("kdenlive/producerslist")) {
-        QStringList ids = QString(event->mimeData()->data("kdenlive/producerslist")).split(";");
+        QStringList ids = QString(event->mimeData()->data("kdenlive/producerslist")).split(';');
         m_scene->clearSelection();
         resetSelectionGroup(false);
 
@@ -1126,7 +1126,7 @@ void CustomTrackView::updateEffect(int track, GenTime pos, QDomElement effect, i
         }
         if (effectParams.paramValue("disabled") == "1") {
             if (m_document->renderer()->mltRemoveEffect(track, pos, effectParams.paramValue("kdenlive_ix"), false)) {
-                kDebug() << "//////  DISABLING EFFECT: " << index << ", CURRENTLA: " << clip->selectedEffectIndex();
+                kDebug() << "//////  DISABLING EFFECT: " << ix << ", CURRENTLA: " << clip->selectedEffectIndex();
             } else emit displayMessage(i18n("Problem deleting effect"), ErrorMessage);
         } else if (!m_document->renderer()->mltEditEffect(m_document->tracksCount() - clip->track(), clip->startPos(), effectParams))
             emit displayMessage(i18n("Problem editing effect"), ErrorMessage);
@@ -1878,8 +1878,6 @@ void CustomTrackView::mouseReleaseEvent(QMouseEvent * event) {
         m_dragItem = NULL;
         return;
     } else if (m_operationMode == SPACER) {
-        int endClick = (int)(mapToScene(event->pos()).x() + 0.5);
-        int mappedClick = (int)(mapToScene(m_clickEvent).x() + 0.5);
         int track = (int)(mapToScene(m_clickEvent).y() / m_tracksHeight);
         if (m_selectionGroup->sceneBoundingRect().height() > m_tracksHeight) {
             // We are moving all tracks
@@ -2401,12 +2399,13 @@ void CustomTrackView::doChangeClipSpeed(ItemInfo info, const double speed, const
     }
     info.track = m_document->tracksCount() - item->track();
     int endPos = m_document->renderer()->mltChangeClipSpeed(info, speed, oldspeed, baseclip->producer());
-    kDebug() << "//CH CLIP SPEED: " << speed << "x" << oldspeed << ", END POS: " << endPos;
-    item->setSpeed(speed);
-    item->updateRectGeometry();
-    if (item->cropDuration().frames(m_document->fps()) > endPos)
-        item->AbstractClipItem::resizeEnd(info.startPos.frames(m_document->fps()) + endPos, speed);
-    m_document->setModified(true);
+    if (endPos >= 0) {
+        item->setSpeed(speed);
+        item->updateRectGeometry();
+        if (item->cropDuration().frames(m_document->fps()) > endPos)
+            item->AbstractClipItem::resizeEnd(info.startPos.frames(m_document->fps()) + endPos, speed);
+        m_document->setModified(true);
+    } else emit displayMessage(i18n("Invalid clip"), ErrorMessage);
 }
 
 void CustomTrackView::cutSelectedClips() {
@@ -3074,7 +3073,7 @@ void CustomTrackView::slotDeleteAllGuides() {
     QUndoCommand *deleteAll = new QUndoCommand();
     deleteAll->setText("Delete all guides");
     for (int i = 0; i < m_guides.count(); i++) {
-        EditGuideCommand *command = new EditGuideCommand(this, m_guides.at(i)->position(), m_guides.at(i)->label(), GenTime(), QString(), true, deleteAll);
+        new EditGuideCommand(this, m_guides.at(i)->position(), m_guides.at(i)->label(), GenTime(), QString(), true, deleteAll);
     }
     m_commandStack->push(deleteAll);
 }
@@ -3395,9 +3394,11 @@ ClipItem *CustomTrackView::getActiveClipUnderCursor(bool allowOutsideCursor) con
         }
         if (clips.count() == 1 && allowOutsideCursor) return static_cast < ClipItem *>(clips.at(0));
         for (int i = 0; i < clips.count(); ++i) {
-            if (clips.at(i)->type() == AVWIDGET)
+            if (clips.at(i)->type() == AVWIDGET) {
                 item = static_cast < ClipItem *>(clips.at(i));
-            if (item->startPos().frames(m_document->fps()) <= m_cursorPos && item->endPos().frames(m_document->fps()) >= m_cursorPos) return item;
+                if (item->startPos().frames(m_document->fps()) <= m_cursorPos && item->endPos().frames(m_document->fps()) >= m_cursorPos)
+                    return item;
+            }
         }
     }
     return NULL;