]> git.sesse.net Git - kdenlive/commitdiff
Add menu to timeline ruler to easily scroll to a guide
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 6 May 2010 10:56:58 +0000 (10:56 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 6 May 2010 10:56:58 +0000 (10:56 +0000)
svn path=/trunk/kdenlive/; revision=4415

src/customruler.cpp
src/customruler.h
src/customtrackview.cpp
src/customtrackview.h

index 1c7d78e1ba7991cf6d1e82bae2856ff3bc74d8b5..b7aaa48135ee640fd46fd0c6b6c3000efaaf00f6 100644 (file)
@@ -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;
     }
index ffd6860e44b131cf711a051dc4f48634e356d3d2..eb6ec3f4bc463b9385bb5f27f4b5c8bfb79c5323 100644 (file)
@@ -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);
index 45aae076759d0f7a8b3d6da3724e4bb6179df912..b688d530b28f5bc5bc4413680c5581db4cd20a57 100644 (file)
@@ -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<ClipItem *> CustomTrackView::selectedClipItems() const
+{
+    QList<ClipItem *> clips;
+    QList<QGraphicsItem *> 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);
index 7a9aa320eabdd31d7c3a697cb0aa07ee4402f563..2c0aaca5493f9d8f8af02ed7f955ad83653df4fa 100644 (file)
@@ -128,6 +128,7 @@ public:
     double fps() const;
     int selectedTrack() const;
     QStringList selectedClips() const;
+    QList<ClipItem *> 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);