From: Jean-Baptiste Mardelle Date: Fri, 27 Jun 2008 17:55:14 +0000 (+0000) Subject: start informing user when there is an error in MLT operation, add option to reopen... X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=fda2af44cbca63e8a087faa3e268f91d40dd69ff;p=kdenlive start informing user when there is an error in MLT operation, add option to reopen last project svn path=/branches/KDE4/; revision=2281 --- diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 96f90487..354a732f 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -631,10 +631,15 @@ void CustomTrackView::dragEnterEvent(QDragEnterEvent * event) { void CustomTrackView::slotRefreshEffects(ClipItem *clip) { int track = m_tracksList.count() - clip->track(); GenTime pos = clip->startPos(); - m_document->renderer()->mltRemoveEffect(track, pos, "-1", false); + if (!m_document->renderer()->mltRemoveEffect(track, pos, "-1", false)) { + emit displayMessage(i18n("Problem deleting effect"), ErrorMessage); + return; + } + bool success = true; for (int i = 0; i < clip->effectsCount(); i++) { - m_document->renderer()->mltAddEffect(track, pos, clip->getEffectArgs(clip->effectAt(i)), false); + if (!m_document->renderer()->mltAddEffect(track, pos, clip->getEffectArgs(clip->effectAt(i)), false)) success = false; } + if (!success) emit displayMessage(i18n("Problem adding effect to clip"), ErrorMessage); m_document->renderer()->doRefresh(); } @@ -642,14 +647,19 @@ void CustomTrackView::addEffect(int track, GenTime pos, QDomElement effect) { ClipItem *clip = getClipItemAt((int)pos.frames(m_document->fps()) + 1, m_tracksList.count() - track); if (clip) { QMap effectParams = clip->addEffect(effect); - m_document->renderer()->mltAddEffect(track, pos, effectParams); + if (!m_document->renderer()->mltAddEffect(track, pos, effectParams)) + emit displayMessage(i18n("Problem adding effect to clip"), ErrorMessage); emit clipItemSelected(clip); } + else emit displayMessage(i18n("Cannot find clip to add effect"), ErrorMessage); } void CustomTrackView::deleteEffect(int track, GenTime pos, QDomElement effect) { QString index = effect.attribute("kdenlive_ix"); - m_document->renderer()->mltRemoveEffect(track, pos, index); + if (!m_document->renderer()->mltRemoveEffect(track, pos, index)) { + emit displayMessage(i18n("Problem deleting effect"), ErrorMessage); + return; + } ClipItem *clip = getClipItemAt((int)pos.frames(m_document->fps()) + 1, m_tracksList.count() - track); if (clip) { clip->deleteEffect(index); @@ -689,8 +699,10 @@ void CustomTrackView::updateEffect(int track, GenTime pos, QDomElement effect) { QMap effectParams = clip->getEffectArgs(effect); if (effectParams.value("disabled") == "1") { QString index = effectParams.value("kdenlive_ix"); - m_document->renderer()->mltRemoveEffect(track, pos, index); - } else m_document->renderer()->mltEditEffect(m_tracksList.count() - clip->track(), clip->startPos(), effectParams); + if (!m_document->renderer()->mltRemoveEffect(track, pos, index)) + emit displayMessage(i18n("Problem deleting effect"), ErrorMessage); + } else if (!m_document->renderer()->mltEditEffect(m_tracksList.count() - clip->track(), clip->startPos(), effectParams)) + emit displayMessage(i18n("Problem editing effect"), ErrorMessage); } m_document->setModified(true); } @@ -1291,7 +1303,8 @@ void CustomTrackView::updateClipFade(ClipItem * item, bool updateFadeOut) { EffectsList::setParameter(oldeffect, "in", QString::number(start)); EffectsList::setParameter(oldeffect, "out", QString::number(end)); QMap effectParams = item->getEffectArgs(oldeffect); - m_document->renderer()->mltEditEffect(m_tracksList.count() - item->track(), item->startPos(), effectParams); + if (!m_document->renderer()->mltEditEffect(m_tracksList.count() - item->track(), item->startPos(), effectParams)) + emit displayMessage(i18n("Problem editing effect"), ErrorMessage); } } else { int start = item->fadeOut(); @@ -1304,7 +1317,8 @@ void CustomTrackView::updateClipFade(ClipItem * item, bool updateFadeOut) { EffectsList::setParameter(oldeffect, "in", QString::number(start)); EffectsList::setParameter(oldeffect, "out", QString::number(end)); QMap effectParams = item->getEffectArgs(oldeffect); - m_document->renderer()->mltEditEffect(m_tracksList.count() - item->track(), item->startPos(), effectParams); + if (m_document->renderer()->mltEditEffect(m_tracksList.count() - item->track(), item->startPos(), effectParams)) + emit displayMessage(i18n("Problem editing effect"), ErrorMessage); } } } diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg index 4f562eca..7772aa4c 100644 --- a/src/kdenlivesettings.kcfg +++ b/src/kdenlivesettings.kcfg @@ -4,6 +4,11 @@ + + + false + + 00:00:05:00 diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 445c1a48..7f6f1715 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -248,7 +248,13 @@ MainWindow::MainWindow(QWidget *parent) slotConnectMonitors(); setAutoSaveSettings(); - newFile(); + + if (KdenliveSettings::openlastproject()) { + KSharedConfigPtr config = KGlobal::config(); + QString Lastproject = config->group("Recent Files").readPathEntry("File1", QString()); + openFile(KUrl(Lastproject)); + + } else newFile(); activateShuttleDevice(); } diff --git a/src/renderer.cpp b/src/renderer.cpp index 58749d37..f084b5f6 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -1096,10 +1096,10 @@ void Render::mltRemoveClip(int track, GenTime position) { m_isBlocked = false; } -void Render::mltRemoveEffect(int track, GenTime position, QString index, bool doRefresh) { +bool Render::mltRemoveEffect(int track, GenTime position, QString index, bool doRefresh) { Mlt::Service service(m_mltProducer->parent().get_service()); - + bool success = false; Mlt::Tractor tractor(service); Mlt::Producer trackProducer(tractor.track(track)); Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service()); @@ -1107,7 +1107,7 @@ void Render::mltRemoveEffect(int track, GenTime position, QString index, bool do Mlt::Producer *clip = trackPlaylist.get_clip_at((int) position.frames(m_fps)); if (!clip) { kDebug() << " / / / CANNOT FIND CLIP TO REMOVE EFFECT"; - return; + return success; } Mlt::Service clipService(clip->get_service()); // if (tag.startsWith("ladspa")) tag = "ladspa"; @@ -1116,17 +1116,18 @@ void Render::mltRemoveEffect(int track, GenTime position, QString index, bool do Mlt::Filter *filter = clipService.filter(ct); while (filter) { if (index == "-1" || filter->get("kdenlive_ix") == index) {// && filter->get("kdenlive_id") == id) { - clipService.detach(*filter); + if (clipService.detach(*filter) == 0) success = true; kDebug() << " / / / DLEETED EFFECT: " << ct; } else ct++; filter = clipService.filter(ct); } m_isBlocked = false; if (doRefresh) refresh(); + return success; } -void Render::mltAddEffect(int track, GenTime position, QMap args, bool doRefresh) { +bool Render::mltAddEffect(int track, GenTime position, QMap args, bool doRefresh) { Mlt::Service service(m_mltProducer->parent().get_service()); @@ -1136,8 +1137,7 @@ void Render::mltAddEffect(int track, GenTime position, QMap a Mlt::Producer *clip = trackPlaylist.get_clip_at((int) position.frames(m_fps)); if (!clip) { - kDebug() << "********** CANNOT FIND CLIP TO APPLY EFFECT-----------"; - return; + return false; } Mlt::Service clipService(clip->get_service()); m_isBlocked = true; @@ -1200,7 +1200,7 @@ void Render::mltAddEffect(int track, GenTime position, QMap a else { kDebug() << "filter is NULL"; m_isBlocked = false; - return; + return false; } for (it = args.begin(); it != args.end(); ++it) { @@ -1217,17 +1217,18 @@ void Render::mltAddEffect(int track, GenTime position, QMap a delete[] filterTag; m_isBlocked = false; if (doRefresh) refresh(); + return true; } -void Render::mltEditEffect(int track, GenTime position, QMap args) { +bool Render::mltEditEffect(int track, GenTime position, QMap args) { QString index = args.value("kdenlive_ix"); QString tag = args.value("tag"); QMap::Iterator it = args.begin(); if (!args.value("keyframes").isEmpty() || /*it.key().startsWith("#") || */tag.startsWith("ladspa") || tag == "sox" || tag == "autotrack_rectangle") { // This is a keyframe effect, to edit it, we remove it and re-add it. - mltRemoveEffect(track, position, index); - mltAddEffect(track, position, args); - return; + bool success = mltRemoveEffect(track, position, index); + if (success) success = mltAddEffect(track, position, args); + return success; } // create filter @@ -1240,7 +1241,7 @@ void Render::mltEditEffect(int track, GenTime position, QMap Mlt::Producer *clip = trackPlaylist.get_clip_at((int) position.frames(m_fps)); if (!clip) { kDebug() << "WARINIG, CANNOT FIND CLIP ON track: " << track << ", AT POS: " << position.frames(m_fps); - return; + return false; } Mlt::Service clipService(clip->get_service()); m_isBlocked = true; @@ -1254,7 +1255,6 @@ void Render::mltEditEffect(int track, GenTime position, QMap filter = clipService.filter(ct); } - if (!filter) { kDebug() << "WARINIG, FILTER FOR EDITING NOT FOUND, ADDING IT!!!!!"; // filter was not found, it was probably a disabled filter, so add it to the correct place... @@ -1268,14 +1268,14 @@ void Render::mltEditEffect(int track, GenTime position, QMap } else ct++; filter = clipService.filter(ct); } - mltAddEffect(track, position, args); + bool success = mltAddEffect(track, position, args); for (int i = 0; i < filtersList.count(); i++) { clipService.attach(*(filtersList.at(i))); } m_isBlocked = false; - return; + return success; } for (it = args.begin(); it != args.end(); ++it) { @@ -1288,6 +1288,7 @@ void Render::mltEditEffect(int track, GenTime position, QMap } m_isBlocked = false; refresh(); + return true; } void Render::mltMoveEffect(int track, GenTime position, int oldPos, int newPos) { diff --git a/src/renderer.h b/src/renderer.h index 54510f12..b60981ed 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -157,9 +157,9 @@ Q_OBJECT public: bool mltMoveClip(int startTrack, int endTrack, GenTime pos, GenTime moveStart); bool mltMoveClip(int startTrack, int endTrack, int pos, int moveStart); void mltRemoveClip(int track, GenTime position); - void mltRemoveEffect(int track, GenTime position, QString index, bool doRefresh = true); - void mltAddEffect(int track, GenTime position, QMap args, bool doRefresh = true); - void mltEditEffect(int track, GenTime position, QMap args); + bool mltRemoveEffect(int track, GenTime position, QString index, bool doRefresh = true); + bool mltAddEffect(int track, GenTime position, QMap args, bool doRefresh = true); + bool mltEditEffect(int track, GenTime position, QMap args); void mltMoveEffect(int track, GenTime position, int oldPos, int newPos); void mltChangeTrackState(int track, bool mute, bool blind); void mltMoveTransition(QString type, int startTrack, int newTrack, int newTransitionTrack, GenTime oldIn, GenTime oldOut, GenTime newIn, GenTime newOut); diff --git a/src/widgets/configmisc_ui.ui b/src/widgets/configmisc_ui.ui index da07e976..f9bc4725 100644 --- a/src/widgets/configmisc_ui.ui +++ b/src/widgets/configmisc_ui.ui @@ -6,11 +6,11 @@ 0 0 369 - 245 + 258 - + Default Durations @@ -50,7 +50,7 @@ - + Default Profile @@ -136,7 +136,7 @@ - + Qt::Vertical @@ -149,6 +149,13 @@ + + + + Open last project on startup + + +