From: Jean-Baptiste Mardelle Date: Mon, 19 Oct 2009 09:11:23 +0000 (+0000) Subject: Select / unselect clips in timeline with shortcuts (using +, -, and ALT / SHIFT to... X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=2e9be1f3c112ff69ec177810aea67daaeb920ed4;p=kdenlive Select / unselect clips in timeline with shortcuts (using +, -, and ALT / SHIFT to group ot select transitions) svn path=/trunk/kdenlive/; revision=4048 --- diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index e986565e..dedadb36 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -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 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 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 diff --git a/src/customtrackview.h b/src/customtrackview.h index 2e568fbe..d2e85b61 100644 --- a/src/customtrackview.h +++ b/src/customtrackview.h @@ -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); diff --git a/src/kdenliveui.rc b/src/kdenliveui.rc index 8701f0bb..66556f84 100644 --- a/src/kdenliveui.rc +++ b/src/kdenliveui.rc @@ -67,6 +67,12 @@ Timeline + + + + + + Guides diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 0b1ec98d..91bb1425 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -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) { diff --git a/src/mainwindow.h b/src/mainwindow.h index e259a491..ac56b754 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -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);