]> git.sesse.net Git - kdenlive/commitdiff
timeline move fixes
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 17 Feb 2008 22:51:14 +0000 (22:51 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 17 Feb 2008 22:51:14 +0000 (22:51 +0000)
svn path=/branches/KDE4/; revision=1864

src/CMakeLists.txt
src/customtrackview.cpp
src/mainwindow.cpp
src/mainwindow.h
src/renderer.cpp

index 48adea655056f3fc0ca86f5a93856294e4861253..f28fd5480959a4eae9e923b369dedd0294fc3e39 100644 (file)
@@ -62,6 +62,7 @@ set(kdenlive_SRCS
   effectslist.cpp
   initeffects.cpp
   effectslistview.cpp
+  addeffectcommand.cpp
 )
 
 kde4_add_kcfg_files(kdenlive_SRCS GENERATE_MOC kdenlivesettings.kcfgc )
index bab54b1cb04585f87c3a046e96156ecf3b83c226..37ccbfbaa0b3da8c6cdd9877b46ada6220af6c52 100644 (file)
@@ -276,6 +276,14 @@ void CustomTrackView::mousePressEvent ( QMouseEvent * event )
     for (int i = 0; i < collisionList.size(); ++i) {
       QGraphicsItem *item = collisionList.at(i);
       if (item->type() == 70000) {
+       // select item
+       if (!item->isSelected()) {
+         QList<QGraphicsItem *> itemList = items();
+         for (int i = 0; i < itemList.count(); i++)
+           itemList.at(i)->setSelected(false);
+         item->setSelected(true);
+         update();
+       }
        m_dragItem = (ClipItem *) item;
        m_clickPoint = mapToScene(event->pos()).x() - m_dragItem->startPos() * m_scale;
        m_operationMode = m_dragItem->operationMode(item->mapFromScene(mapToScene(event->pos())), m_scale);
@@ -298,7 +306,7 @@ void CustomTrackView::mousePressEvent ( QMouseEvent * event )
   }
   updateSnapPoints(m_dragItem);
   //kDebug()<<pos;
-  QGraphicsView::mousePressEvent(event);
+  //QGraphicsView::mousePressEvent(event);
 }
 
 void CustomTrackView::dragEnterEvent ( QDragEnterEvent * event )
@@ -456,7 +464,7 @@ void CustomTrackView::mouseReleaseEvent ( QMouseEvent * event )
   setDragMode(QGraphicsView::NoDrag);
   if (m_dragItem == NULL) return;
   //kDebug()<<"/// MOVING CLIP: "<<m_startPos<<", END: "<<QPoint(m_dragItem->rect().x(),m_dragItem->rect().y());
-  if (m_operationMode == MOVE) {
+  if (m_operationMode == MOVE && m_startPos.x() != m_dragItem->startPos()) {
     // move clip
     MoveClipCommand *command = new MoveClipCommand(this, m_startPos, QPointF(m_dragItem->startPos(), m_dragItem->track()), false);
     m_commandStack->push(command);
index c74669016b8f99589ed9737c11832bd6859e0a4e..ac3f6f325de011463e9efeb39144b377bc9d8b97 100644 (file)
@@ -138,6 +138,7 @@ MainWindow::MainWindow(QWidget *parent)
   connect(clipMonitorDock, SIGNAL(visibilityChanged (bool)), m_clipMonitor, SLOT(refreshMonitor(bool)));
   connect(m_monitorManager, SIGNAL(connectMonitors ()), this, SLOT(slotConnectMonitors()));
   connect(m_monitorManager, SIGNAL(raiseClipMonitor (bool)), this, SLOT(slotRaiseMonitor(bool)));
+  connect(m_effectList, SIGNAL(addEffect(int, const QString&)), this, SLOT(slotAddEffect(int, const QString &)));
   m_monitorManager->initMonitors(m_clipMonitor, m_projectMonitor);
 
   setAutoSaveSettings();
@@ -159,6 +160,20 @@ bool MainWindow::queryClose()
   }
 }
 
+void MainWindow::slotAddEffect(int effectType, const QString &effectName)
+{
+  if (!m_activeDocument) return;
+  QMap <QString, QString> filter;
+  if (effectType == 0)
+    filter = m_videoEffects.effect(effectName);
+  else if (effectType == 1)
+    filter = m_audioEffects.effect(effectName);
+  else 
+    filter = m_customEffects.effect(effectName);
+  TrackView *currentTimeLine = (TrackView *) m_timelineArea->currentWidget();
+  currentTimeLine->projectView()->slotAddEffect(filter);
+}
+
 void MainWindow::slotRaiseMonitor(bool clipMonitor)
 {
   if (clipMonitor) clipMonitorDock->raise();
index ebd5f0798cc41084a8c3651ef68df9ae0ec673a9..cdd8869044c045876ac4b0d80f7e2cb9f242d2b0 100644 (file)
@@ -114,6 +114,7 @@ class MainWindow : public KXmlGuiWindow
     void slotRaiseMonitor(bool clipMonitor);
     void slotSetClipDuration(int id, int duration);
     void slotUpdateMousePosition(int pos);
+    void slotAddEffect(int effectType, const QString &effectName);
 };
  
 #endif
index 721a3b1d8f7e9180f204acaa64431497d8f68b81..d18e0b211c2ee6d3fc8491a50b2e5a19436aeab9 100644 (file)
@@ -1118,6 +1118,11 @@ void Render::mltEditEffect(int track, GenTime position, int index, QString id, Q
     Mlt::Playlist trackPlaylist(( mlt_playlist ) trackProducer.get_service());
     //int clipIndex = trackPlaylist.get_clip_index_at(position.frames(m_fps));
     Mlt::Producer *clip = trackPlaylist.get_clip_at(position.frames(m_fps));
+    if (!clip) {
+      kDebug()<<"WARINIG, CANNOT FIND CLIP ON track: "<<track<<", AT POS: "<<position.frames(m_fps);
+      m_isBlocked = false;
+      return;
+    }
     Mlt::Service clipService(clip->get_service());
     Mlt::Filter *filter = clipService.filter( index );
 
@@ -1258,10 +1263,7 @@ void Render::mltMoveClip(int startTrack, int endTrack, int moveStart, int moveEn
     Mlt::Producer trackProducer(tractor.track(startTrack));
     Mlt::Playlist trackPlaylist(( mlt_playlist ) trackProducer.get_service());
     int clipIndex = trackPlaylist.get_clip_index_at(moveStart + 1);
-
-
     mlt_field field = mlt_tractor_field(tractor.get_tractor());
-
     mlt_multitrack multitrack = mlt_field_multitrack(field); //mlt_tractor_multitrack(tractor.get_tractor());
     kDebug()<<" --  CURRENT MULTIOTRACK HAS: "<<mlt_multitrack_count(multitrack)<<" tracks";;
     mlt_service multiprod = mlt_multitrack_service( multitrack );