]> git.sesse.net Git - kdenlive/commitdiff
New menu entry to insert monitor zone into timeline
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 25 Nov 2009 17:50:49 +0000 (17:50 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 25 Nov 2009 17:50:49 +0000 (17:50 +0000)
svn path=/trunk/kdenlive/; revision=4147

src/customtrackview.cpp
src/customtrackview.h
src/mainwindow.cpp
src/projectlist.cpp

index 5ce3da7975e4cc33303c5191f678f77f069ac240..37a59fdd9b315f6a74d7f4727f821a12729e72a4 100644 (file)
@@ -1298,6 +1298,30 @@ void CustomTrackView::activateMonitor()
     emit activateDocumentMonitor();
 }
 
+void CustomTrackView::insertClipCut(DocClipBase *clip, int in, int out)
+{
+    resetSelectionGroup();
+    ItemInfo info;
+    info.startPos = GenTime();
+    info.cropStart = GenTime(in, m_document->fps());
+    info.endPos = GenTime(out - in, m_document->fps());
+    info.cropDuration = info.endPos - info.startPos;
+    info.track = 0;
+
+    // Check if clip can be inserted at that position
+    ItemInfo pasteInfo = info;
+    pasteInfo.startPos = GenTime(m_cursorPos, m_document->fps());
+    pasteInfo.endPos = pasteInfo.startPos + info.endPos;
+    pasteInfo.track = selectedTrack();
+    if (!canBePastedTo(pasteInfo, AVWIDGET)) {
+        emit displayMessage(i18n("Cannot insert clip in timeline"), ErrorMessage);
+        return;
+    }
+
+    AddTimelineClipCommand *command = new AddTimelineClipCommand(this, clip->toXML(), clip->getId(), pasteInfo, EffectsList(), m_scene->editMode() == OVERWRITEEDIT, m_scene->editMode() == INSERTEDIT, true, false);
+    m_commandStack->push(command);
+}
+
 bool CustomTrackView::insertDropClips(const QMimeData *data, const QPoint pos)
 {
     if (data->hasFormat("kdenlive/clip")) {
index 1e380b2499b3b5863ea873706ed5b3656ca05ece..01505b78a755f0a53a51a59ebedae1b82a48bc05 100644 (file)
@@ -129,7 +129,7 @@ public:
     void selectTransition(bool add, bool group = false);
     QStringList extractTransitionsLumas();
     void setEditMode(EDITMODE mode);
-
+    void insertClipCut(DocClipBase *clip, int in, int out);
 
 public slots:
     void setCursorPos(int pos, bool seek = true);
index 8907308ec20e711057a2f28a8b1dab37914f754b..4a95de14abb492b1f8c532b88713dc00c0210207 100644 (file)
@@ -3240,8 +3240,9 @@ void MainWindow::slotInsertZoneToTree()
 
 void MainWindow::slotInsertZoneToTimeline()
 {
-    if (!m_clipMonitor->isActive() || m_clipMonitor->activeClip() == NULL) return;
-    // TODO
+    if (m_activeTimeline == NULL || m_clipMonitor->activeClip() == NULL) return;
+    QStringList info = m_clipMonitor->getZoneInfo();
+    m_activeTimeline->projectView()->insertClipCut(m_clipMonitor->activeClip(), info.at(1).toInt(), info.at(2).toInt());
 }
 
 #include "mainwindow.moc"
index bc616543eccd772c163d111689344436e2f39827..d6c57002645668a37e856664f68e700f642e1bae 100644 (file)
@@ -335,7 +335,7 @@ void ProjectList::slotClipSelected()
             ProjectItem *clip;
             if (m_listView->currentItem()->type() == PROJECTSUBCLIPTYPE) {
                 // this is a sub item, use base clip
-               m_deleteAction->setEnabled(true);
+                m_deleteAction->setEnabled(true);
                 clip = static_cast <ProjectItem*>(m_listView->currentItem()->parent());
                 if (clip == NULL) kDebug() << "-----------ERROR";
                 SubProjectItem *sub = static_cast <SubProjectItem*>(m_listView->currentItem());
@@ -1284,10 +1284,10 @@ void ProjectList::addClipCut(const QString &id, int in, int out, const QString d
         base->addCutZone(in, out);
         m_listView->blockSignals(true);
         SubProjectItem *sub = new SubProjectItem(clip, in, out, desc);
-       if (newItem && desc.isEmpty() && !m_listView->isColumnHidden(1)) {
-           if (!clip->isExpanded()) clip->setExpanded(true);
-           m_listView->editItem(sub, 1);
-       }
+        if (newItem && desc.isEmpty() && !m_listView->isColumnHidden(1)) {
+            if (!clip->isExpanded()) clip->setExpanded(true);
+            m_listView->editItem(sub, 1);
+        }
         QPixmap p = clip->referencedClip()->thumbProducer()->extractImage(in, (int)(sub->sizeHint(0).height()  * m_render->dar()), sub->sizeHint(0).height() - 2);
         sub->setData(0, Qt::DecorationRole, p);
         m_doc->cachePixmap(clip->getClipHash() + '#' + QString::number(in), p);