From d50b149fb37acc966fe55c81c6b504ffb8011783 Mon Sep 17 00:00:00 2001 From: Till Theato Date: Sat, 22 May 2010 20:20:28 +0000 Subject: [PATCH] - Make sure clip is not selected invisible when track is locked (1) - Make sure selected clip is properly unselected when locking track - Abort render perparations if selected directory could not be created (render dialog) (1): http://kdenlive.org/mantis/view.php?id=1316 svn path=/trunk/kdenlive/; revision=4473 --- src/customtrackscene.h | 7 +++++-- src/customtrackview.cpp | 13 ++++++++++--- src/customtrackview.h | 5 +++++ src/renderwidget.cpp | 5 ++++- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/customtrackscene.h b/src/customtrackscene.h index d0f37060..ac402618 100644 --- a/src/customtrackscene.h +++ b/src/customtrackscene.h @@ -17,6 +17,11 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ +/** + * @class CustomTrackScene + * @author Jean-Baptiste Mardelle + * @brief Holds all scene properties that need to be used by clip items. + */ #ifndef CUSTOMTRACKSCENE_H #define CUSTOMTRACKSCENE_H @@ -30,8 +35,6 @@ class KdenliveDoc; class MltVideoProfile; -/** This class holds all scene properties that need to be used by clip items */ - enum EDITMODE { NORMALEDIT = 0 , OVERWRITEEDIT = 1 , INSERTEDIT = 2 }; class CustomTrackScene : public QGraphicsScene diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 30a681c6..3ce7d0d8 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -832,9 +832,12 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) while (!m_dragGuide && ct < collisionList.count()) { if (collisionList.at(ct)->type() == AVWIDGET || collisionList.at(ct)->type() == TRANSITIONWIDGET) { collisionClip = static_cast (collisionList.at(ct)); - if (collisionClip == m_dragItem) { + if (collisionClip->isItemLocked()) + break; + if (collisionClip == m_dragItem) collisionClip = NULL; - } else m_dragItem = collisionClip; + else + m_dragItem = collisionClip; found = true; m_dragItemInfo = m_dragItem->info(); if (m_dragItem->parentItem() && m_dragItem->parentItem()->type() == GROUPWIDGET && m_dragItem->parentItem() != m_selectionGroup) { @@ -2640,6 +2643,7 @@ void CustomTrackView::lockTrack(int ix, bool lock) int tracknumber = m_document->tracksCount() - ix - 1; m_document->switchTrackLock(tracknumber, lock); emit doTrackLock(ix, lock); + AbstractClipItem *clip = NULL; QList selection = m_scene->items(0, ix * m_tracksHeight + m_tracksHeight / 2, sceneRect().width(), m_tracksHeight / 2 - 2); for (int i = 0; i < selection.count(); i++) { @@ -2648,7 +2652,10 @@ void CustomTrackView::lockTrack(int ix, bool lock) if (selection.at(i)->type() == AVWIDGET) emit clipItemSelected(NULL); else emit transitionItemSelected(NULL); } - static_cast (selection.at(i))->setItemLocked(lock); + clip = static_cast (selection.at(i)); + clip->setItemLocked(lock); + if (clip == m_dragItem) + m_dragItem = NULL; } kDebug() << "NEXT TRK STATE: " << m_document->trackInfoAt(tracknumber).isLocked; viewport()->update(); diff --git a/src/customtrackview.h b/src/customtrackview.h index 85668d02..a68ec85e 100644 --- a/src/customtrackview.h +++ b/src/customtrackview.h @@ -114,6 +114,11 @@ public: void autoTransition(); QStringList getLadspaParams(QDomElement effect) const; void initCursorPos(int pos); + /** @brief Locks or unlocks a track. + * @param ix number of track + * @param lock whether to lock or unlock + * + * Makes sure no clip on track to lock is selected. */ void lockTrack(int ix, bool lock); void groupClips(bool group = true); void doGroupClips(QList clipInfos, QList transitionInfos, bool group); diff --git a/src/renderwidget.cpp b/src/renderwidget.cpp index e1a835b1..0c5e1db9 100644 --- a/src/renderwidget.cpp +++ b/src/renderwidget.cpp @@ -665,7 +665,10 @@ void RenderWidget::slotPrepareExport(bool scriptExport) if (m_view.create_chapter->isChecked()) chapterFile = m_view.out_file->url().path() + ".dvdchapter"; // mantisbt 1051 - KStandardDirs::makeDir(m_view.out_file->url().directory()); + if (!KStandardDirs::makeDir(m_view.out_file->url().directory())) { + KMessageBox::sorry(this, i18n("The directory %1, could not be created.\nPlease make sure you have the required permissions.", m_view.out_file->url().directory())); + return; + } emit prepareRenderingData(scriptExport, m_view.render_zone->isChecked(), chapterFile); } -- 2.39.2