From: Jean-Baptiste Mardelle Date: Thu, 27 Nov 2008 12:54:50 +0000 (+0000) Subject: Fix bug on insert space in all tracks, add context menu to remove space from track. X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=f7b21faa59b7666b689c7c7b32f037da2f30a0fd;p=kdenlive Fix bug on insert space in all tracks, add context menu to remove space from track. svn path=/branches/KDE4/; revision=2738 --- diff --git a/src/customtrackview.h b/src/customtrackview.h index 6b98865a..838b9d09 100644 --- a/src/customtrackview.h +++ b/src/customtrackview.h @@ -99,6 +99,7 @@ public: void setInPoint(); void setOutPoint(); void slotInsertSpace(); + void slotRemoveSpace(); void insertSpace(const GenTime &pos, int track, const GenTime duration, bool add); public slots: diff --git a/src/kdenliveui.rc b/src/kdenliveui.rc index 52dcb3e2..56f8ed1b 100644 --- a/src/kdenliveui.rc +++ b/src/kdenliveui.rc @@ -41,6 +41,7 @@ + Add Video Effect diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index fb254432..eb3a8c37 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -299,6 +299,7 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent connect(transitionsMenu, SIGNAL(triggered(QAction *)), this, SLOT(slotAddTransition(QAction *))); m_timelineContextMenu->addAction(actionCollection()->action("insert_space")); + m_timelineContextMenu->addAction(actionCollection()->action("delete_space")); m_timelineContextMenu->addAction(actionCollection()->action(KStandardAction::name(KStandardAction::Paste))); m_timelineContextClipMenu->addAction(actionCollection()->action("delete_timeline_clip")); @@ -798,6 +799,10 @@ void MainWindow::setupActions() { collection->addAction("insert_space", insertSpace); connect(insertSpace, SIGNAL(triggered()), this, SLOT(slotInsertSpace())); + KAction *removeSpace = new KAction(KIcon(), i18n("Remove Space"), this); + collection->addAction("delete_space", removeSpace); + connect(removeSpace, SIGNAL(triggered()), this, SLOT(slotRemoveSpace())); + KAction *addGuide = new KAction(KIcon("document-new"), i18n("Add Guide"), this); collection->addAction("add_guide", addGuide); connect(addGuide, SIGNAL(triggered()), this, SLOT(slotAddGuide())); @@ -1503,6 +1508,11 @@ void MainWindow::slotInsertSpace() { m_activeTimeline->projectView()->slotInsertSpace(); } +void MainWindow::slotRemoveSpace() { + if (m_activeTimeline) + m_activeTimeline->projectView()->slotRemoveSpace(); +} + void MainWindow::slotEditGuide() { if (m_activeTimeline) m_activeTimeline->projectView()->slotEditGuide(); diff --git a/src/mainwindow.h b/src/mainwindow.h index f3410dcf..1190a548 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -246,6 +246,7 @@ private slots: void slotFindNext(); void slotInsertSpace(); + void slotRemoveSpace(); void slotAddGuide(); void slotEditGuide(); void slotDeleteGuide(); diff --git a/src/renderer.cpp b/src/renderer.cpp index d220f3ec..13b13725 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -1445,6 +1445,29 @@ bool Render::mltRemoveClip(int track, GenTime position) { return true; } +int Render::mltGetSpaceLength(const GenTime pos, int track) { + if (!m_mltProducer) { + kDebug() << "PLAYLIST NOT INITIALISED //////"; + return -1; + } + Mlt::Producer parentProd(m_mltProducer->parent()); + if (parentProd.get_producer() == NULL) { + kDebug() << "PLAYLIST BROKEN, CANNOT INSERT CLIP //////"; + return -1; + } + + Mlt::Service service(parentProd.get_service()); + Mlt::Tractor tractor(service); + int insertPos = pos.frames(m_fps); + + Mlt::Producer trackProducer(tractor.track(track)); + Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service()); + int clipIndex = trackPlaylist.get_clip_index_at(insertPos); + if (!trackPlaylist.is_blank_at(clipIndex)) return -1; + return trackPlaylist.clip_length(clipIndex); +} + + void Render::mltInsertSpace(const GenTime pos, int track, const GenTime duration) { if (!m_mltProducer) { kDebug() << "PLAYLIST NOT INITIALISED //////"; diff --git a/src/renderer.h b/src/renderer.h index b0f019da..20800cbe 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -151,6 +151,7 @@ Q_OBJECT public: void mltUpdateClip(ItemInfo info, QDomElement element, Mlt::Producer *prod); void mltCutClip(int track, GenTime position); void mltInsertSpace(const GenTime pos, int track, const GenTime duration); + int mltGetSpaceLength(const GenTime pos, int track); bool mltResizeClipEnd(ItemInfo info, GenTime clipDuration); bool mltResizeClipStart(ItemInfo info, GenTime diff); bool mltMoveClip(int startTrack, int endTrack, GenTime pos, GenTime moveStart, Mlt::Producer *prod);