]> git.sesse.net Git - kdenlive/commitdiff
home / end to go to start / end of clip, Ctrl+home/end to go to project start / end
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 7 Jul 2008 21:39:37 +0000 (21:39 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 7 Jul 2008 21:39:37 +0000 (21:39 +0000)
svn path=/branches/KDE4/; revision=2295

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

index e343dfc93d3287211c4728cdad1c1136408c2ada..9ab1c167562776a43c25969e920352884ae92f3e 100644 (file)
@@ -1460,6 +1460,7 @@ void CustomTrackView::slotSeekToPreviousSnap() {
         }
     }
     setCursorPos((int) res.frames(m_document->fps()));
+    checkScrolling();
 }
 
 void CustomTrackView::slotSeekToNextSnap() {
@@ -1473,6 +1474,31 @@ void CustomTrackView::slotSeekToNextSnap() {
         }
     }
     setCursorPos((int) res.frames(m_document->fps()));
+    checkScrolling();
+}
+
+void CustomTrackView::clipStart() {
+    QList<QGraphicsItem *> itemList = scene()->selectedItems();
+    for (int i = 0; i < itemList.count(); i++) {
+        if (itemList.at(i)->type() == AVWIDGET) {
+            ClipItem *item = (ClipItem *) itemList.at(i);
+            setCursorPos((int) item->startPos().frames(m_document->fps()));
+            checkScrolling();
+            break;
+        }
+    }
+}
+
+void CustomTrackView::clipEnd() {
+    QList<QGraphicsItem *> itemList = scene()->selectedItems();
+    for (int i = 0; i < itemList.count(); i++) {
+        if (itemList.at(i)->type() == AVWIDGET) {
+            ClipItem *item = (ClipItem *) itemList.at(i);
+            setCursorPos((int) item->endPos().frames(m_document->fps()));
+            checkScrolling();
+            break;
+        }
+    }
 }
 
 void CustomTrackView::slotAddClipMarker() {
index 50da76f68b40782b6a93000a0246b455546c6c38..cc26e6eebe5b0bf687a4b71840301b4e9da3ff88 100644 (file)
@@ -89,6 +89,8 @@ public:
     bool findNextString(const QString &text);
     void initSearchStrings();
     void clearSearchStrings();
+    void clipStart();
+    void clipEnd();
 
 public slots:
     void setCursorPos(int pos, bool seek = true);
index 0aecf89420832dce54016c44a761bfa6ba33fb08..1e4af504d1b40f7c39af4476ed2caec7cd9cb230 100644 (file)
     </Menu>
     <Menu name="monitor" ><text>Monitor</text>
       <Action name="monitor_play" />
-    </Menu>
+      <Separator />      
+      <Action name="seek_start" />
+      <Action name="monitor_seek_snap_backward" />
+      <Action name="seek_clip_start" />     
+      <Action name="monitor_seek_backward" />
+      <Action name="monitor_seek_backward-one-frame" />
+      <Action name="monitor_seek_forward-one-frame" />
+      <Action name="monitor_seek_forward" />
+      <Action name="seek_clip_end" />
+      <Action name="monitor_seek_snap_forward" />
+      <Action name="seek_end" />
+</Menu>
 
     <Menu name="settings" >
       <Action name="manage_profiles" />
index 91e8b1f4097718794de527bc34dbeb945c193fab..5d0aa757622c4969ec83f10f1a7ea712422ed824 100644 (file)
@@ -548,6 +548,26 @@ void MainWindow::setupActions() {
     actionCollection()->addAction("monitor_seek_forward", monitorSeekForward);
     connect(monitorSeekForward, SIGNAL(triggered(bool)), m_monitorManager, SLOT(slotForward()));
 
+    KAction* clipStart = new KAction(KIcon("media-seek-backward"), i18n("Go to Clip Start"), this);
+    clipStart->setShortcut(Qt::Key_Home);
+    actionCollection()->addAction("seek_clip_start", clipStart);
+    connect(clipStart, SIGNAL(triggered(bool)), this, SLOT(slotClipStart()));
+
+    KAction* clipEnd = new KAction(KIcon("media-seek-forward"), i18n("Go to Clip End"), this);
+    clipEnd->setShortcut(Qt::Key_End);
+    actionCollection()->addAction("seek_clip_end", clipEnd);
+    connect(clipEnd, SIGNAL(triggered(bool)), this, SLOT(slotClipEnd()));
+
+    KAction* projectStart = new KAction(KIcon("media-seek-backward"), i18n("Go to Project Start"), this);
+    projectStart->setShortcut(Qt::CTRL + Qt::Key_Home);
+    actionCollection()->addAction("seek_start", projectStart);
+    connect(projectStart, SIGNAL(triggered(bool)), m_monitorManager, SLOT(slotStart()));
+
+    KAction* projectEnd = new KAction(KIcon("media-seek-forward"), i18n("Go to Project End"), this);
+    projectEnd->setShortcut(Qt::CTRL + Qt::Key_End);
+    actionCollection()->addAction("seek_end", projectEnd);
+    connect(projectEnd, SIGNAL(triggered(bool)), m_monitorManager, SLOT(slotEnd()));
+
     KAction* monitorSeekForwardOneFrame = new KAction(KIcon("media-skip-forward"), i18n("Forward 1 Frame"), this);
     monitorSeekForwardOneFrame->setShortcut(Qt::Key_Right);
     actionCollection()->addAction("monitor_seek_forward-one-frame", monitorSeekForwardOneFrame);
@@ -1174,6 +1194,20 @@ void MainWindow::slotSnapForward() {
     }
 }
 
+void MainWindow::slotClipStart() {
+    if (m_monitorManager->projectMonitorFocused()) {
+        TrackView *currentTab = (TrackView *) m_timelineArea->currentWidget();
+        currentTab->projectView()->clipStart();
+    }
+}
+
+void MainWindow::slotClipEnd() {
+    if (m_monitorManager->projectMonitorFocused()) {
+        TrackView *currentTab = (TrackView *) m_timelineArea->currentWidget();
+        currentTab->projectView()->clipEnd();
+    }
+}
+
 void MainWindow::slotChangeTool(QAction * action) {
     if (action == m_buttonSelectTool) slotSetTool(SELECTTOOL);
     else if (action == m_buttonRazorTool) slotSetTool(RAZORTOOL);
index 7ef6bca9cbf6bd412be82309917dfd38eb1dc782..79d8e7798a5dc71ac556d0ed6de704f071ff0cad 100644 (file)
@@ -200,6 +200,8 @@ private slots:
     void slotSetTool(PROJECTTOOL tool);
     void slotSnapForward();
     void slotSnapRewind();
+    void slotClipStart();
+    void slotClipEnd();
     void slotFind();
     void findTimeout();
     void slotFindNext();
index 519e9c00071f623d3edd3be332617900d9821c1b..a0ee51410535431c54e27416e3034c8a2aab9417 100644 (file)
@@ -168,6 +168,24 @@ void Monitor::slotSeek(int pos) {
     m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position));
 }
 
+void Monitor::slotStart() {
+    if (!m_isActive) m_monitorManager->activateMonitor(m_name);
+    render->play(0);
+    m_position = 0;
+    render->seekToFrame(m_position);
+    emit renderPosition(m_position);
+    m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position));
+}
+
+void Monitor::slotEnd() {
+    if (!m_isActive) m_monitorManager->activateMonitor(m_name);
+    render->play(0);
+    m_position = render->getLength();
+    render->seekToFrame(m_position);
+    emit renderPosition(m_position);
+    m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position));
+}
+
 void Monitor::slotRewind(double speed) {
     if (!m_isActive) m_monitorManager->activateMonitor(m_name);
     if (speed == 0) {
index 5f86a8169f9524e701f57d9bf45152544b7d0d52..8c8a75d5427577ff43e671d33d8476a007fa795a 100644 (file)
@@ -98,6 +98,8 @@ public slots:
     void slotRewindOneFrame();
     void slotForwardOneFrame();
     void saveSceneList(QString path, QDomElement info = QDomElement());
+    void slotStart();
+    void slotEnd();
 
 signals:
     void renderPosition(int);
index f771fabc918cb8df1232f8e9dd9bd9985b09edb1..35c48917c9ac81ba77a94b2f9b889441f1695b9c 100644 (file)
@@ -101,6 +101,16 @@ void MonitorManager::slotForwardOneFrame() {
     else m_projectMonitor->slotForwardOneFrame();
 }
 
+void MonitorManager::slotStart() {
+    if (m_activeMonitor == "clip") m_clipMonitor->slotStart();
+    else m_projectMonitor->slotStart();
+}
+
+void MonitorManager::slotEnd() {
+    if (m_activeMonitor == "clip") m_clipMonitor->slotEnd();
+    else m_projectMonitor->slotEnd();
+}
+
 void MonitorManager::resetProfiles(QString prof) {
     m_clipMonitor->resetProfile(prof);
     m_projectMonitor->resetProfile(prof);
index 173fbc18b7f8ecfa96ffd33cd24112a1100b4bc2..972dfdb9eaaf4843960d9b1550f792c190728c1e 100644 (file)
@@ -45,6 +45,8 @@ public slots:
     void slotForward(double speed = 0);
     void slotRewindOneFrame();
     void slotForwardOneFrame();
+    void slotStart();
+    void slotEnd();
 
 private:
     Monitor *m_clipMonitor;