]> git.sesse.net Git - kdenlive/commitdiff
Select / unselect clips in timeline with shortcuts (using +, -, and ALT / SHIFT to...
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 19 Oct 2009 09:11:23 +0000 (09:11 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 19 Oct 2009 09:11:23 +0000 (09:11 +0000)
svn path=/trunk/kdenlive/; revision=4048

src/customtrackview.cpp
src/customtrackview.h
src/kdenliveui.rc
src/mainwindow.cpp
src/mainwindow.h

index e986565ec7a9d35b8ef4714ef3a41b495b716097..dedadb36ab961d52cd679b821c63d47ead08621e 100644 (file)
@@ -5257,3 +5257,32 @@ void CustomTrackView::slotSelectTrack(int ix)
     viewport()->update();
 }
 
+void CustomTrackView::selectClip(bool add, bool group)
+{
+    QRectF rect(m_cursorPos, m_selectedTrack * m_tracksHeight + m_tracksHeight / 2, 1, 1);
+    QList<QGraphicsItem *> selection = m_scene->items(rect);
+    resetSelectionGroup(group);
+    if (!group) m_scene->clearSelection();
+    for (int i = 0; i < selection.count(); i++) {
+        if (selection.at(i)->type() == AVWIDGET) {
+            selection.at(i)->setSelected(add);
+            break;
+        }
+    }
+    if (group) groupSelectedItems();
+}
+
+void CustomTrackView::selectTransition(bool add, bool group)
+{
+    QRectF rect(m_cursorPos, m_selectedTrack * m_tracksHeight + m_tracksHeight, 1, 1);
+    QList<QGraphicsItem *> selection = m_scene->items(rect);
+    resetSelectionGroup(group);
+    if (!group) m_scene->clearSelection();
+    for (int i = 0; i < selection.count(); i++) {
+        if (selection.at(i)->type() == TRANSITIONWIDGET) {
+            selection.at(i)->setSelected(add);
+            break;
+        }
+    }
+    if (group) groupSelectedItems();
+}
\ No newline at end of file
index 2e568fbe83e1d5e80cde16b13f6f7a44bb844837..d2e85b61606a9bfe961184ca0a0d3695514fa5c8 100644 (file)
@@ -125,6 +125,8 @@ public:
     void updateProjectFps();
     double fps() const;
     int selectedTrack() const;
+    void selectClip(bool add, bool group = false);
+    void selectTransition(bool add, bool group = false);
 
 public slots:
     void setCursorPos(int pos, bool seek = true);
index 8701f0bb9dd5bc11056103fdbc237445777b6d75..66556f8450769ced487311462ada964442cdb183 100644 (file)
 </Menu>
 
     <Menu name="timeline" ><text>Timeline</text>
+      <Action name="select_timeline_clip" />
+      <Action name="select_add_timeline_clip" />
+      <Action name="deselect_timeline_clip" />
+      <Action name="select_timeline_transition" />
+      <Action name="select_add_timeline_transition" />
+      <Action name="deselect_timeline_transition" />
       <Action name="cut_timeline_clip" />
       <Action name="delete_timeline_clip" />
       <Menu name="guide_menu" ><text>Guides</text>
index 0b1ec98d0e28806432053e91c5ecfaf8385fc692..91bb142572a8e9582ee6726723ede0560e71fe12 100644 (file)
@@ -1044,6 +1044,36 @@ void MainWindow::setupActions()
     ungroupClip->setData("ungroup_clip");
     connect(ungroupClip, SIGNAL(triggered(bool)), this, SLOT(slotUnGroupClips()));
 
+    KAction* selectTimelineClip = new KAction(KIcon("edit-select"), i18n("Select Clip"), this);
+    selectTimelineClip->setShortcut(Qt::Key_Plus);
+    collection->addAction("select_timeline_clip", selectTimelineClip);
+    connect(selectTimelineClip, SIGNAL(triggered(bool)), this, SLOT(slotSelectTimelineClip()));
+
+    KAction* deselectTimelineClip = new KAction(KIcon("edit-select"), i18n("Deselect Clip"), this);
+    deselectTimelineClip->setShortcut(Qt::Key_Minus);
+    collection->addAction("deselect_timeline_clip", deselectTimelineClip);
+    connect(deselectTimelineClip, SIGNAL(triggered(bool)), this, SLOT(slotDeselectTimelineClip()));
+
+    KAction* selectAddTimelineClip = new KAction(KIcon("edit-select"), i18n("Add Clip To Selection"), this);
+    selectAddTimelineClip->setShortcut(Qt::ALT + Qt::Key_Plus);
+    collection->addAction("select_add_timeline_clip", selectAddTimelineClip);
+    connect(selectAddTimelineClip, SIGNAL(triggered(bool)), this, SLOT(slotSelectAddTimelineClip()));
+
+    KAction* selectTimelineTransition = new KAction(KIcon("edit-select"), i18n("Select Transition"), this);
+    selectTimelineTransition->setShortcut(Qt::SHIFT + Qt::Key_Plus);
+    collection->addAction("select_timeline_transition", selectTimelineTransition);
+    connect(selectTimelineTransition, SIGNAL(triggered(bool)), this, SLOT(slotSelectTimelineTransition()));
+
+    KAction* deselectTimelineTransition = new KAction(KIcon("edit-select"), i18n("Deselect Transition"), this);
+    deselectTimelineTransition->setShortcut(Qt::SHIFT + Qt::Key_Minus);
+    collection->addAction("deselect_timeline_transition", deselectTimelineTransition);
+    connect(deselectTimelineTransition, SIGNAL(triggered(bool)), this, SLOT(slotDeselectTimelineTransition()));
+
+    KAction* selectAddTimelineTransition = new KAction(KIcon("edit-select"), i18n("Add Transition To Selection"), this);
+    selectAddTimelineTransition->setShortcut(Qt::ALT + Qt::SHIFT + Qt::Key_Plus);
+    collection->addAction("select_add_timeline_transition", selectAddTimelineTransition);
+    connect(selectAddTimelineTransition, SIGNAL(triggered(bool)), this, SLOT(slotSelectAddTimelineTransition()));
+
     KAction* cutTimelineClip = new KAction(KIcon("edit-cut"), i18n("Cut Clip"), this);
     cutTimelineClip->setShortcut(Qt::SHIFT + Qt::Key_R);
     collection->addAction("cut_timeline_clip", cutTimelineClip);
@@ -2246,6 +2276,48 @@ void MainWindow::slotCutTimelineClip()
     }
 }
 
+void MainWindow::slotSelectTimelineClip()
+{
+    if (m_activeTimeline) {
+        m_activeTimeline->projectView()->selectClip(true);
+    }
+}
+
+void MainWindow::slotSelectTimelineTransition()
+{
+    if (m_activeTimeline) {
+        m_activeTimeline->projectView()->selectTransition(true);
+    }
+}
+
+void MainWindow::slotDeselectTimelineClip()
+{
+    if (m_activeTimeline) {
+        m_activeTimeline->projectView()->selectClip(false, true);
+    }
+}
+
+void MainWindow::slotDeselectTimelineTransition()
+{
+    if (m_activeTimeline) {
+        m_activeTimeline->projectView()->selectTransition(false, true);
+    }
+}
+
+void MainWindow::slotSelectAddTimelineClip()
+{
+    if (m_activeTimeline) {
+        m_activeTimeline->projectView()->selectClip(true, true);
+    }
+}
+
+void MainWindow::slotSelectAddTimelineTransition()
+{
+    if (m_activeTimeline) {
+        m_activeTimeline->projectView()->selectTransition(true, true);
+    }
+}
+
 void MainWindow::slotGroupClips()
 {
     if (m_activeTimeline) {
index e259a491a8d80c5fa0013661db16196b98c81a6f..ac56b7547d80b6da1a1d499c1e81b6b74a815c94 100644 (file)
@@ -248,6 +248,12 @@ private slots:
     void slotDeleteAllClipMarkers();
     void slotEditClipMarker();
     void slotCutTimelineClip();
+    void slotSelectTimelineClip();
+    void slotSelectTimelineTransition();
+    void slotDeselectTimelineClip();
+    void slotDeselectTimelineTransition();
+    void slotSelectAddTimelineClip();
+    void slotSelectAddTimelineTransition();
     void slotAddVideoEffect(QAction *result);
     void slotAddAudioEffect(QAction *result);
     void slotAddCustomEffect(QAction *result);