]> git.sesse.net Git - kdenlive/commitdiff
Add transition through context menu
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 3 Jun 2008 19:28:08 +0000 (19:28 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 3 Jun 2008 19:28:08 +0000 (19:28 +0000)
svn path=/branches/KDE4/; revision=2228

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

index 6e2ded962a0fb4ac3f3dc6ea8e43c4662c0558d8..92a186f02bcf0f9e9e7ad2af507127fb837ee4f2 100644 (file)
@@ -619,6 +619,22 @@ void CustomTrackView::cutClip(ItemInfo info, GenTime cutTime, bool cut) {
     }
 }
 
+
+void CustomTrackView::slotAddTransitionToSelectedClips(QDomElement transition) {
+    QList<QGraphicsItem *> itemList = scene()->selectedItems();
+    for (int i = 0; i < itemList.count(); i++) {
+        if (itemList.at(i)->type() == AVWIDGET) {
+            ClipItem *item = (ClipItem *) itemList.at(i);
+            ItemInfo info;
+            info.startPos = item->startPos();
+            info.endPos = info.startPos + GenTime(2.5);
+            info.track = item->track();
+            int transitiontrack = getPreviousVideoTrack(info.track);
+            slotAddTransition(item, info, transitiontrack, transition);
+        }
+    }
+}
+
 void CustomTrackView::slotAddTransition(ClipItem* clip, ItemInfo transitionInfo, int endTrack, QDomElement transition) {
     AddTransitionCommand* command = new AddTransitionCommand(this, transitionInfo, endTrack, transition, false, true);
     m_commandStack->push(command);
index 52066bc8275fca0d70c9f2c9f345a6f65ab86d0a..9e58725117e39fe51d14e02cf9a6f8de1866d196 100644 (file)
@@ -91,6 +91,7 @@ public slots:
     void slotRefreshEffects(ClipItem *clip);
     void setDuration(int duration);
     void slotAddTransition(ClipItem* clip, ItemInfo transitionInfo, int endTrack, QDomElement transition = QDomElement());
+    void slotAddTransitionToSelectedClips(QDomElement transition);
     void slotTransitionUpdated(Transition *, QDomElement);
     void slotSwitchTrackAudio(int ix);
     void slotSwitchTrackVideo(int ix);
index 1f7a327ca8b154c601159de00142194488511dc0..d9a62246e6e49d22c65a6e6fcc783028e837f598 100644 (file)
@@ -216,16 +216,27 @@ MainWindow::MainWindow(QWidget *parent)
     m_timelineContextClipMenu = new QMenu(this);
     m_timelineContextTransitionMenu = new QMenu(this);
 
+
+    QMenu *transitionsMenu = new QMenu(i18n("Add Transition"), this);
+    effects = transitions.effectNames();
+    foreach(const QString &name, effects) {
+        action = new QAction(name, this);
+        action->setData(name);
+        transitionsMenu->addAction(action);
+    }
+    connect(transitionsMenu, SIGNAL(triggered(QAction *)), this, SLOT(slotAddTransition(QAction *)));
+
     m_timelineContextClipMenu->addAction(actionCollection()->action("delete_timeline_clip"));
     m_timelineContextClipMenu->addAction(actionCollection()->action("cut_timeline_clip"));
 
     QMenu *markersMenu = (QMenu*)(factory()->container("marker_menu", this));
     m_timelineContextClipMenu->addMenu(markersMenu);
+    m_timelineContextClipMenu->addMenu(transitionsMenu);
     m_timelineContextClipMenu->addMenu(videoEffectsMenu);
     m_timelineContextClipMenu->addMenu(audioEffectsMenu);
     m_timelineContextClipMenu->addMenu(customEffectsMenu);
 
-    m_timelineContextTransitionMenu->addAction(action);
+    m_timelineContextTransitionMenu->addAction(actionCollection()->action("delete_timeline_clip"));
 
     connect(projectMonitorDock, SIGNAL(visibilityChanged(bool)), m_projectMonitor, SLOT(refreshMonitor(bool)));
     connect(clipMonitorDock, SIGNAL(visibilityChanged(bool)), m_clipMonitor, SLOT(refreshMonitor(bool)));
@@ -980,6 +991,15 @@ void MainWindow::slotAddProjectClip(KUrl url) {
         m_activeDocument->slotAddClipFile(url, QString());
 }
 
+void MainWindow::slotAddTransition(QAction *result) {
+    if (!result) return;
+    QDomElement effect = transitions.getEffectByName(result->data().toString());
+    TrackView *currentTab = (TrackView *) m_timelineArea->currentWidget();
+    if (currentTab) {
+        currentTab->projectView()->slotAddTransitionToSelectedClips(effect);
+    }
+}
+
 void MainWindow::slotAddVideoEffect(QAction *result) {
     if (!result) return;
     QDomElement effect = videoEffects.getEffectByName(result->data().toString());
index 1e0af42f28b0bce6dd68a0c3e7c7d712eee4e1a4..0ce55128967251d78bc7a5425291fb071e94694a 100644 (file)
@@ -177,6 +177,7 @@ private slots:
     void slotAddVideoEffect(QAction *result);
     void slotAddAudioEffect(QAction *result);
     void slotAddCustomEffect(QAction *result);
+    void slotAddTransition(QAction *result);
     void slotAddProjectClip(KUrl url);
     void slotShuttleButton(int code);
     void slotShowClipProperties(DocClipBase *clip);