]> git.sesse.net Git - kdenlive/commitdiff
- Add "clip in project tree" (timeline clip context menu)
authorTill Theato <root@ttill.de>
Sat, 24 Apr 2010 16:55:59 +0000 (16:55 +0000)
committerTill Theato <root@ttill.de>
Sat, 24 Apr 2010 16:55:59 +0000 (16:55 +0000)
- Fix "switch monitor" not working

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

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

index cfdd5562635a7817ef32bf32b62909efec2b3a15..3b09518bc5db6951f0404f83e0c4fbe7631a7b4e 100644 (file)
@@ -5812,6 +5812,19 @@ int CustomTrackView::selectedTrack() const
     return m_selectedTrack;
 }
 
+QStringList CustomTrackView::selectedClips() const
+{
+    QStringList clipIds;
+    QList<QGraphicsItem *> selection = m_scene->selectedItems();
+    for (int i = 0; i < selection.count(); i++) {
+        if (selection.at(i)->type() == AVWIDGET) {
+            ClipItem *item = (ClipItem *)selection.at(i);
+            clipIds << item->clipProducer();
+        }
+    }
+    return clipIds;
+}
+
 void CustomTrackView::slotSelectTrack(int ix)
 {
     m_selectedTrack = qMax(0, ix);
index 2cc1052b1849c40dd6bbaff48dd6d8e86bcb0a74..7a9aa320eabdd31d7c3a697cb0aa07ee4402f563 100644 (file)
@@ -127,6 +127,7 @@ public:
     void updateProjectFps();
     double fps() const;
     int selectedTrack() const;
+    QStringList selectedClips() const;
     void selectClip(bool add, bool group = false);
     void selectTransition(bool add, bool group = false);
     QStringList extractTransitionsLumas();
index 070d36f6e816ac5f5dcd296e5fcac45fb50d2759..dfced3adf2ab72b1c3a4ca2ef0c55839c083d3a0 100644 (file)
@@ -403,6 +403,7 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent
     m_timelineContextMenu->addAction(actionCollection()->action("delete_space"));
     m_timelineContextMenu->addAction(actionCollection()->action(KStandardAction::name(KStandardAction::Paste)));
 
+    m_timelineContextClipMenu->addAction(actionCollection()->action("clip_in_project_tree"));
     m_timelineContextClipMenu->addAction(actionCollection()->action("edit_item_duration"));
     m_timelineContextClipMenu->addAction(actionCollection()->action("delete_timeline_clip"));
     m_timelineContextClipMenu->addAction(actionCollection()->action("group_clip"));
@@ -1146,6 +1147,10 @@ void MainWindow::setupActions()
     KAction* editItemDuration = new KAction(KIcon("measure"), i18n("Edit Duration"), this);
     collection->addAction("edit_item_duration", editItemDuration);
     connect(editItemDuration, SIGNAL(triggered(bool)), this, SLOT(slotEditItemDuration()));
+    
+    KAction* clipInProjectTree = new KAction(KIcon("go-jump-definition"), i18n("Clip in Project Tree"), this);
+    collection->addAction("clip_in_project_tree", clipInProjectTree);
+    connect(clipInProjectTree, SIGNAL(triggered(bool)), this, SLOT(slotClipInProjectTree()));
 
     KAction* insertOvertwrite = new KAction(KIcon(), i18n("Insert Clip Zone in Timeline (Overwrite)"), this);
     insertOvertwrite->setShortcut(Qt::Key_V);
@@ -2858,7 +2863,7 @@ void MainWindow::slotClipInTimeline(const QString &clipId)
 
         QList <QAction *> actionList;
 
-        for (int i = 0; i < matching.size(); ++i) {
+        for (int i = 0; i < matching.count(); ++i) {
             QString track = QString::number(matching.at(i).track);
             QString start = m_activeDocument->timecode().getTimecode(matching.at(i).startPos);
             int j = 0;
@@ -2881,6 +2886,20 @@ void MainWindow::slotClipInTimeline(const QString &clipId)
     }
 }
 
+void MainWindow::slotClipInProjectTree()
+{
+    if (m_activeTimeline) {
+        const QStringList &clipIds = m_activeTimeline->projectView()->selectedClips();
+        if (clipIds.isEmpty()) return;
+        m_projectListDock->raise();
+        for (int i = 0; i < clipIds.count(); i++) {
+            m_projectList->selectItemById(clipIds.at(i));
+        }
+        if (m_projectMonitor->isActive())
+            slotSwitchMonitors();
+    }
+}
+
 void MainWindow::slotSelectClipInTimeline()
 {
     if (m_activeTimeline) {
@@ -3377,7 +3396,7 @@ QPixmap MainWindow::createSchemePreviewIcon(const KSharedConfigPtr &config)
 
 void MainWindow::slotSwitchMonitors()
 {
-    m_monitorManager->slotSwitchMonitors(m_clipMonitor->isActive());
+    m_monitorManager->slotSwitchMonitors(!m_clipMonitor->isActive());
     if (m_projectMonitor->isActive()) m_activeTimeline->projectView()->setFocus();
     else m_projectList->focusTree();
 }
index 1d41e2802301e838471c401ed677613cd6ff15e2..285147c38f88a7ff9bd03ad516105c2fae4ca056 100644 (file)
@@ -323,6 +323,7 @@ private slots:
     void slotGroupClips();
     void slotUnGroupClips();
     void slotEditItemDuration();
+    void slotClipInProjectTree();
     void slotSplitAudio();
     void slotUpdateClipType(QAction *action);
     void slotShowTimeline(bool show);
index ced79c768c84871df102b1e81193c7c3d95257b7..3407a907863dfdb3546d54e8035123fa3d397bfb 100644 (file)
@@ -157,6 +157,7 @@ public:
     void doUpdateClipCut(const QString &id, const QPoint oldzone, const QPoint zone, const QString &comment);
     bool hasMissingClips();
     void deleteProjectFolder(QMap <QString, QString> map);
+    void selectItemById(const QString &clipId);
 
 public slots:
     void setDocument(KdenliveDoc *doc);
@@ -191,7 +192,6 @@ private:
     QTimer m_queueTimer;
     QMenu *m_menu;
     QUndoStack *m_commandStack;
-    void selectItemById(const QString &clipId);
     ProjectItem *getItemById(const QString &id);
     QTreeWidgetItem *getAnyItemById(const QString &id);
     FolderProjectItem *getFolderItemById(const QString &id);