From: Jean-Baptiste Mardelle Date: Thu, 6 May 2010 10:56:58 +0000 (+0000) Subject: Add menu to timeline ruler to easily scroll to a guide X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=bb109649bb39246bc2e7bd6d3b59994afb33b3bc;p=kdenlive Add menu to timeline ruler to easily scroll to a guide svn path=/trunk/kdenlive/; revision=4415 --- diff --git a/src/customruler.cpp b/src/customruler.cpp index 1c7d78e1..b7aaa481 100644 --- a/src/customruler.cpp +++ b/src/customruler.cpp @@ -82,6 +82,8 @@ CustomRuler::CustomRuler(Timecode tc, CustomTrackView *parent) : connect(m_deleteGuide , SIGNAL(triggered()), this, SLOT(slotDeleteGuide())); QAction *delAllGuides = m_contextMenu->addAction(KIcon("edit-delete"), i18n("Delete All Guides")); connect(delAllGuides, SIGNAL(triggered()), m_view, SLOT(slotDeleteAllGuides())); + m_goMenu = m_contextMenu->addMenu(i18n("Go To")); + connect(m_goMenu, SIGNAL(triggered( QAction *)), this, SLOT(slotGoToGuide(QAction *))); setMouseTracking(true); setMinimumHeight(20); } @@ -104,6 +106,11 @@ void CustomRuler::slotDeleteGuide() m_view->slotDeleteGuide(m_clickedGuide); } +void CustomRuler::slotGoToGuide(QAction *act) +{ + m_view->initCursorPos(act->data().toInt()); +} + void CustomRuler::setZone(QPoint p) { m_zoneStart = p.x(); @@ -124,6 +131,7 @@ void CustomRuler::mousePressEvent(QMouseEvent * event) m_clickedGuide = m_view->hasGuide((int)(pos / m_factor), (int)(5 / m_factor + 1)); m_editGuide->setEnabled(m_clickedGuide > 0); m_deleteGuide->setEnabled(m_clickedGuide > 0); + m_view->buildGuidesMenu(m_goMenu); m_contextMenu->exec(event->globalPos()); return; } diff --git a/src/customruler.h b/src/customruler.h index ffd6860e..eb6ec3f4 100644 --- a/src/customruler.h +++ b/src/customruler.h @@ -73,6 +73,7 @@ private: int m_rate; int m_startRate; MOUSE_MOVE m_mouseMove; + QMenu *m_goMenu; public slots: @@ -82,6 +83,7 @@ public slots: private slots: void slotEditGuide(); void slotDeleteGuide(); + void slotGoToGuide(QAction *act); signals: void zoneMoved(int, int); diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 45aae076..b688d530 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -4493,6 +4493,18 @@ int CustomTrackView::hasGuide(int pos, int offset) return -1; } +void CustomTrackView::buildGuidesMenu(QMenu *goMenu) const +{ + QAction *act; + goMenu->clear(); + double fps = m_document->fps(); + for (int i = 0; i < m_guides.count(); i++) { + act = goMenu->addAction(m_guides.at(i)->label() + "/" + Timecode::getStringTimecode(m_guides.at(i)->position().frames(fps), fps)); + act->setData(m_guides.at(i)->position().frames(m_document->fps())); + } + goMenu->setEnabled(!m_guides.isEmpty()); +} + void CustomTrackView::editGuide(const GenTime oldPos, const GenTime pos, const QString &comment) { if (oldPos > GenTime() && pos > GenTime()) { @@ -5825,6 +5837,18 @@ QStringList CustomTrackView::selectedClips() const return clipIds; } +QList CustomTrackView::selectedClipItems() const +{ + QList clips; + QList selection = m_scene->selectedItems(); + for (int i = 0; i < selection.count(); i++) { + if (selection.at(i)->type() == AVWIDGET) { + clips.append((ClipItem *)selection.at(i)); + } + } + return clips; +} + void CustomTrackView::slotSelectTrack(int ix) { m_selectedTrack = qMax(0, ix); diff --git a/src/customtrackview.h b/src/customtrackview.h index 7a9aa320..2c0aaca5 100644 --- a/src/customtrackview.h +++ b/src/customtrackview.h @@ -128,6 +128,7 @@ public: double fps() const; int selectedTrack() const; QStringList selectedClips() const; + QList selectedClipItems() const; void selectClip(bool add, bool group = false); void selectTransition(bool add, bool group = false); QStringList extractTransitionsLumas(); @@ -135,6 +136,7 @@ public: void insertClipCut(DocClipBase *clip, int in, int out); void clearSelection(); void editItemDuration(); + void buildGuidesMenu(QMenu *goMenu) const; public slots: void setCursorPos(int pos, bool seek = true);