X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmainwindow.cpp;h=3c811ab6839bd94ad7c3592af736ae3ed19a0879;hb=5bac38471d4c90a8a520d6ec32b90913b6f0dbcb;hp=6b09986d743a1e63f6d45b5d48b769b10d89ab23;hpb=5cce47dd2e237bd77f1c9d0c00d775d230e25d24;p=kdenlive diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 6b09986d..3c811ab6 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -120,15 +120,15 @@ EffectsList MainWindow::audioEffects; EffectsList MainWindow::customEffects; EffectsList MainWindow::transitions; -MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent) : - KXmlGuiWindow(parent), - m_activeDocument(NULL), - m_activeTimeline(NULL), - m_renderWidget(NULL), +MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, const QString & clipsToLoad, QWidget *parent) : + KXmlGuiWindow(parent), + m_activeDocument(NULL), + m_activeTimeline(NULL), + m_renderWidget(NULL), #ifndef NO_JOGSHUTTLE - m_jogProcess(NULL), + m_jogProcess(NULL), #endif /* NO_JOGSHUTTLE */ - m_findActivated(false) + m_findActivated(false) { // Create DBus interface @@ -137,7 +137,7 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent dbus.registerObject("/MainWindow", this); setlocale(LC_NUMERIC, "POSIX"); - if (!KdenliveSettings::colortheme().isEmpty()) slotChangePalette(NULL, KdenliveSettings::colortheme()); + if(!KdenliveSettings::colortheme().isEmpty()) slotChangePalette(NULL, KdenliveSettings::colortheme()); setFont(KGlobalSettings::toolBarFont()); parseProfiles(MltPath); m_commandStack = new QUndoGroup; @@ -301,13 +301,23 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent m_fileRevert = KStandardAction::revert(this, SLOT(slotRevert()), actionCollection()); m_fileRevert->setEnabled(false); + // Prepare layout actions + KActionCategory *layoutActions = new KActionCategory(i18n("Layouts"), actionCollection()); + for(int i = 1; i < 5; i++) { + KAction *load = new KAction(KIcon(), i18n("Load Layout %1").arg(i), this); + load->setData("_" + QString::number(i)); + layoutActions->addAction("load_layout" + QString::number(i), load); + KAction *save = new KAction(KIcon(), i18n("Save As Layout %1").arg(i), this); + save->setData("_" + QString::number(i)); + layoutActions->addAction("save_layout" + QString::number(i), save); + } setupGUI(); // Find QDockWidget tab bars and show / hide widget title bars on right click QList tabs = findChildren(); - for (int i = 0; i < tabs.count(); i++) { + for(int i = 0; i < tabs.count(); i++) { tabs.at(i)->setContextMenuPolicy(Qt::CustomContextMenu); connect(tabs.at(i), SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(slotSwitchTitles())); } @@ -315,6 +325,18 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent /*ScriptingPart* sp = new ScriptingPart(this, QStringList()); guiFactory()->addClient(sp);*/ + + QMenu *loadLayout = (QMenu*)(factory()->container("layout_load", this)); + if(loadLayout) + connect(loadLayout, SIGNAL(triggered(QAction*)), this, SLOT(slotLoadLayout(QAction*))); + QMenu *saveLayout = (QMenu*)(factory()->container("layout_save_as", this)); + if(saveLayout) + connect(saveLayout, SIGNAL(triggered(QAction*)), this, SLOT(slotSaveLayout(QAction*))); + + + // Load layout names from config file + loadLayouts(); + loadPlugins(); loadTranscoders(); //kDebug() << factory() << " " << factory()->container("video_effects_menu", this); @@ -336,11 +358,11 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent action = new KAction(i18n("Default"), this); action->setCheckable(true); themegroup->addAction(action); - if (KdenliveSettings::colortheme().isEmpty()) action->setChecked(true); + if(KdenliveSettings::colortheme().isEmpty()) action->setChecked(true); const QStringList schemeFiles = KGlobal::dirs()->findAllResources("data", "color-schemes/*.colors", KStandardDirs::NoDuplicates); - for (int i = 0; i < schemeFiles.size(); ++i) { + for(int i = 0; i < schemeFiles.size(); ++i) { // get the file name const QString filename = schemeFiles.at(i); const QFileInfo info(filename); @@ -355,7 +377,7 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent action->setIcon(icon); action->setCheckable(true); themegroup->addAction(action); - if (KdenliveSettings::colortheme() == filename) action->setChecked(true); + if(KdenliveSettings::colortheme() == filename) action->setChecked(true); } /*KGlobal::dirs()->addResourceDir("themes", KStandardDirs::installPath("data") + QString("kdenlive/themes")); @@ -374,20 +396,20 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent // Setup and fill effects and transitions menus. m_videoEffectsMenu = static_cast(factory()->container("video_effects_menu", this)); - for (int i = 0; i < videoEffects.count(); ++i) + for(int i = 0; i < videoEffects.count(); ++i) m_videoEffectsMenu->addAction(m_videoEffects[i]); m_audioEffectsMenu = static_cast(factory()->container("audio_effects_menu", this)); - for (int i = 0; i < audioEffects.count(); ++i) + for(int i = 0; i < audioEffects.count(); ++i) m_audioEffectsMenu->addAction(m_audioEffects[i]); m_customEffectsMenu = static_cast(factory()->container("custom_effects_menu", this)); - if (customEffects.isEmpty()) + if(customEffects.isEmpty()) m_customEffectsMenu->setEnabled(false); else m_customEffectsMenu->setEnabled(true); - for (int i = 0; i < customEffects.count(); ++i) + for(int i = 0; i < customEffects.count(); ++i) m_customEffectsMenu->addAction(m_customEffects[i]); m_transitionsMenu = new QMenu(i18n("Add Transition"), this); - for (int i = 0; i < transitions.count(); ++i) + for(int i = 0; i < transitions.count(); ++i) m_transitionsMenu->addAction(m_transitions[i]); connect(m_videoEffectsMenu, SIGNAL(triggered(QAction *)), this, SLOT(slotAddVideoEffect(QAction *))); @@ -433,7 +455,6 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent m_timelineContextClipMenu->addMenu(m_transitionsMenu); m_timelineContextClipMenu->addMenu(m_videoEffectsMenu); m_timelineContextClipMenu->addMenu(m_audioEffectsMenu); - //TODO: re-enable custom effects menu when it is implemented m_timelineContextClipMenu->addMenu(m_customEffectsMenu); m_timelineContextTransitionMenu->addAction(actionCollection()->action("edit_item_duration")); @@ -459,16 +480,26 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent // Open or create a file. Command line argument passed in Url has // precedence, then "openlastproject", then just a plain empty file. // If opening Url fails, openlastproject will _not_ be used. - if (!Url.isEmpty()) { + if(!Url.isEmpty()) { // delay loading so that the window shows up m_startUrl = Url; QTimer::singleShot(500, this, SLOT(openFile())); - } else if (KdenliveSettings::openlastproject()) { + } else if(KdenliveSettings::openlastproject()) { QTimer::singleShot(500, this, SLOT(openLastFile())); } else { //if (m_timelineArea->count() == 0) { newFile(false); } + if(!clipsToLoad.isEmpty() && m_activeDocument) { + QStringList list = clipsToLoad.split(','); + QList urls; + foreach(QString path, list) { + kDebug() << QDir::current().absoluteFilePath(path); + urls << QUrl::fromLocalFile(QDir::current().absoluteFilePath(path)); + } + m_projectList->slotAddClip(urls); + } + #ifndef NO_JOGSHUTTLE activateShuttleDevice(); #endif /* NO_JOGSHUTTLE */ @@ -480,8 +511,8 @@ MainWindow::~MainWindow() m_effectStack->slotClipItemSelected(NULL, 0); m_transitionConfig->slotTransitionItemSelected(NULL, 0, QPoint(), false); - if (m_projectMonitor) m_projectMonitor->stop(); - if (m_clipMonitor) m_clipMonitor->stop(); + if(m_projectMonitor) m_projectMonitor->stop(); + if(m_clipMonitor) m_clipMonitor->stop(); delete m_activeTimeline; delete m_effectStack; @@ -495,7 +526,7 @@ MainWindow::~MainWindow() void MainWindow::queryQuit() { - if (queryClose()) { + if(queryClose()) { kapp->quit(); } } @@ -503,13 +534,13 @@ void MainWindow::queryQuit() //virtual bool MainWindow::queryClose() { - if (m_renderWidget) { + if(m_renderWidget) { int waitingJobs = m_renderWidget->waitingJobsCount(); - if (waitingJobs > 0) { - switch (KMessageBox::warningYesNoCancel(this, i18np("You have 1 rendering job waiting in the queue.\nWhat do you want to do with this job?", "You have %1 rendering jobs waiting in the queue.\nWhat do you want to do with these jobs?", waitingJobs), QString(), KGuiItem(i18n("Start them now")), KGuiItem(i18n("Delete them")))) { + if(waitingJobs > 0) { + switch(KMessageBox::warningYesNoCancel(this, i18np("You have 1 rendering job waiting in the queue.\nWhat do you want to do with this job?", "You have %1 rendering jobs waiting in the queue.\nWhat do you want to do with these jobs?", waitingJobs), QString(), KGuiItem(i18n("Start them now")), KGuiItem(i18n("Delete them")))) { case KMessageBox::Yes : // create script with waiting jobs and start it - if (m_renderWidget->startWaitingRenderJobs() == false) return false; + if(m_renderWidget->startWaitingRenderJobs() == false) return false; break; case KMessageBox::No : // Don't do anything, jobs will be deleted @@ -520,19 +551,19 @@ bool MainWindow::queryClose() } } saveOptions(); - if (m_monitorManager) m_monitorManager->stopActiveMonitor(); + if(m_monitorManager) m_monitorManager->stopActiveMonitor(); // warn the user to save if document is modified and we have clips in our project list - if (m_activeDocument && m_activeDocument->isModified() && + if(m_activeDocument && m_activeDocument->isModified() && ((m_projectList->documentClipList().isEmpty() && !m_activeDocument->url().isEmpty()) || !m_projectList->documentClipList().isEmpty())) { raise(); activateWindow(); QString message; - if (m_activeDocument->url().fileName().isEmpty()) + if(m_activeDocument->url().fileName().isEmpty()) message = i18n("Save changes to document?"); else message = i18n("The project \"%1\" has been changed.\nDo you want to save your changes?").arg(m_activeDocument->url().fileName()); - switch (KMessageBox::warningYesNoCancel(this, message)) { + switch(KMessageBox::warningYesNoCancel(this, message)) { case KMessageBox::Yes : // save document here. If saving fails, return false; return saveFile(); @@ -549,27 +580,27 @@ bool MainWindow::queryClose() void MainWindow::loadPlugins() { - foreach(QObject *plugin, QPluginLoader::staticInstances()) { + foreach(QObject * plugin, QPluginLoader::staticInstances()) { populateMenus(plugin); } QStringList directories = KGlobal::dirs()->findDirs("module", QString()); QStringList filters; filters << "libkdenlive*"; - foreach(const QString &folder, directories) { + foreach(const QString & folder, directories) { kDebug() << "Parsing plugin folder: " << folder; QDir pluginsDir(folder); - foreach(const QString &fileName, + foreach(const QString & fileName, pluginsDir.entryList(filters, QDir::Files)) { /* * Avoid loading the same plugin twice when there is more than one * installation. */ - if (!m_pluginFileNames.contains(fileName)) { + if(!m_pluginFileNames.contains(fileName)) { kDebug() << "Found plugin: " << fileName; QPluginLoader loader(pluginsDir.absoluteFilePath(fileName)); QObject *plugin = loader.instance(); - if (plugin) { + if(plugin) { populateMenus(plugin); m_pluginFileNames += fileName; } else @@ -583,7 +614,7 @@ void MainWindow::populateMenus(QObject *plugin) { QMenu *addMenu = static_cast(factory()->container("generators", this)); ClipGenerator *iGenerator = qobject_cast(plugin); - if (iGenerator) + if(iGenerator) addToMenu(plugin, iGenerator->generators(KdenliveSettings::producerslist()), addMenu, SLOT(generateClip()), NULL); } @@ -593,13 +624,13 @@ void MainWindow::addToMenu(QObject *plugin, const QStringList &texts, QActionGroup *actionGroup) { kDebug() << "// ADD to MENU" << texts; - foreach(const QString &text, texts) { + foreach(const QString & text, texts) { QAction *action = new QAction(text, plugin); action->setData(text); connect(action, SIGNAL(triggered()), this, member); menu->addAction(action); - if (actionGroup) { + if(actionGroup) { action->setCheckable(true); actionGroup->addAction(action); } @@ -620,7 +651,7 @@ void MainWindow::generateClip() KUrl clipUrl = iGenerator->generatedClip(action->data().toString(), m_activeDocument->projectFolder(), QStringList(), QStringList(), m_activeDocument->fps(), m_activeDocument->width(), m_activeDocument->height()); - if (!clipUrl.isEmpty()) { + if(!clipUrl.isEmpty()) { m_projectList->slotAddClip(QList () << clipUrl); } } @@ -648,16 +679,16 @@ void MainWindow::slotReloadEffects() QAction *action; QStringList effectInfo; QMap effectsList; - for (int ix = 0; ix < customEffects.count(); ix++) { + for(int ix = 0; ix < customEffects.count(); ix++) { effectInfo = customEffects.effectIdInfo(ix); effectsList.insert(effectInfo.at(0).toLower(), effectInfo); } - if (effectsList.isEmpty()) + if(effectsList.isEmpty()) m_customEffectsMenu->setEnabled(false); else m_customEffectsMenu->setEnabled(true); - foreach(const QStringList &value, effectsList) { + foreach(const QStringList & value, effectsList) { action = new QAction(value.at(0), this); action->setData(value); m_customEffectsMenu->addAction(action); @@ -670,7 +701,7 @@ void MainWindow::activateShuttleDevice() { delete m_jogProcess; m_jogProcess = NULL; - if (KdenliveSettings::enableshuttle() == false) return; + if(KdenliveSettings::enableshuttle() == false) return; m_jogProcess = new JogShuttle(KdenliveSettings::shuttledevice()); connect(m_jogProcess, SIGNAL(rewind1()), m_monitorManager, SLOT(slotRewindOneFrame())); connect(m_jogProcess, SIGNAL(forward1()), m_monitorManager, SLOT(slotForwardOneFrame())); @@ -682,7 +713,7 @@ void MainWindow::activateShuttleDevice() void MainWindow::slotShuttleButton(int code) { - switch (code) { + switch(code) { case 5: slotShuttleAction(KdenliveSettings::shuttle1()); break; @@ -703,7 +734,7 @@ void MainWindow::slotShuttleButton(int code) void MainWindow::slotShuttleAction(int code) { - switch (code) { + switch(code) { case 0: return; case 1: @@ -726,26 +757,29 @@ void MainWindow::slotFullScreen() KToggleFullScreenAction::setFullScreen(this, actionCollection()->action("fullscreen")->isChecked()); } -void MainWindow::slotAddEffect(const QDomElement effect, GenTime pos, int track) +void MainWindow::slotAddEffect(const QDomElement effect) { - if (!m_activeDocument) return; - if (effect.isNull()) { + if(!m_activeDocument) return; + if(effect.isNull()) { kDebug() << "--- ERROR, TRYING TO APPEND NULL EFFECT"; return; } QDomElement effectToAdd = effect.cloneNode().toElement(); - m_activeTimeline->projectView()->slotAddEffect(effectToAdd, pos, track); + bool ok; + int ix = m_effectStack->isTrackMode(&ok); + if(ok) m_activeTimeline->projectView()->slotAddTrackEffect(effectToAdd, m_activeDocument->tracksCount() - ix); + else m_activeTimeline->projectView()->slotAddEffect(effectToAdd, GenTime(), -1); } void MainWindow::slotRaiseMonitor(bool clipMonitor) { - if (clipMonitor) m_clipMonitorDock->raise(); + if(clipMonitor) m_clipMonitorDock->raise(); else m_projectMonitorDock->raise(); } void MainWindow::slotUpdateClip(const QString &id) { - if (!m_activeDocument) return; + if(!m_activeDocument) return; m_activeTimeline->projectView()->slotUpdateClip(id); } @@ -794,7 +828,7 @@ void MainWindow::setupActions() m_timecodeFormat = new KComboBox(this); m_timecodeFormat->addItem(i18n("hh:mm:ss::ff")); m_timecodeFormat->addItem(i18n("Frames")); - if (KdenliveSettings::frametimecode()) m_timecodeFormat->setCurrentIndex(1); + if(KdenliveSettings::frametimecode()) m_timecodeFormat->setCurrentIndex(1); connect(m_timecodeFormat, SIGNAL(activated(int)), this, SLOT(slotUpdateTimecodeFormat(int))); m_statusProgressBar = new QProgressBar(this); @@ -805,8 +839,12 @@ void MainWindow::setupActions() KToolBar *toolbar = new KToolBar("statusToolBar", this, Qt::BottomToolBarArea); toolbar->setMovable(false); + KColorScheme scheme(palette().currentColorGroup(), KColorScheme::Window, KSharedConfig::openConfig(KdenliveSettings::colortheme())); + QColor buttonBg = scheme.background(KColorScheme::LinkBackground).color(); + QColor buttonBord = scheme.foreground(KColorScheme::LinkText).color(); + QColor buttonBord2 = scheme.shade(KColorScheme::LightShade); statusBar()->setStyleSheet(QString("QStatusBar QLabel {font-size:%1pt;} QStatusBar::item { border: 0px; font-size:%1pt;padding:0px; }").arg(statusBar()->font().pointSize())); - QString style1 = "QToolBar { border: 0px } QToolButton { border-style: inset; border:1px solid #999999;border-radius: 3px;margin: 0px 3px;padding: 0px;} QToolButton:checked { background-color: rgba(224, 224, 0, 100); border-style: inset; border:1px solid #cc6666;border-radius: 3px;}"; + QString style1 = QString("QToolBar { border: 0px } QToolButton { border-style: inset; border:1px solid transparent;border-radius: 3px;margin: 0px 3px;padding: 0px;} QToolButton:hover { background: rgb(%7, %8, %9);border-style: inset; border:1px solid rgb(%7, %8, %9);border-radius: 3px;} QToolButton:checked { background-color: rgb(%1, %2, %3); border-style: inset; border:1px solid rgb(%4, %5, %6);border-radius: 3px;}").arg(buttonBg.red()).arg(buttonBg.green()).arg(buttonBg.blue()).arg(buttonBord.red()).arg(buttonBord.green()).arg(buttonBord.blue()).arg(buttonBord2.red()).arg(buttonBord2.green()).arg(buttonBord2.blue()); QString styleBorderless = "QToolButton { border-width: 0px;margin: 1px 3px 0px;padding: 0px;}"; //create edit mode buttons @@ -1361,6 +1399,9 @@ void MainWindow::setupActions() showTitleBar->setChecked(KdenliveSettings::showtitlebars()); slotShowTitleBars(KdenliveSettings::showtitlebars()); + + //const QByteArray state = layoutGroup.readEntry("layout1", QByteArray()); + /*QAction *maxCurrent = new KAction(i18n("Maximize Current Widget"), this); collection->addAction("maximize_current", maxCurrent); maxCurrent->setCheckable(true); @@ -1462,7 +1503,7 @@ void MainWindow::setupActions() //KActionCategory *videoEffectActions = new KActionCategory(i18n("Video Effects"), m_effectsActionCollection); KActionCategory *videoEffectActions = new KActionCategory(i18n("Video Effects"), collection); m_videoEffects = new KAction*[videoEffects.count()]; - for (int i = 0; i < videoEffects.count(); ++i) { + for(int i = 0; i < videoEffects.count(); ++i) { QStringList effectInfo = videoEffects.effectIdInfo(i); m_videoEffects[i] = new KAction(KIcon("kdenlive-show-video"), effectInfo.at(0), this); m_videoEffects[i]->setData(effectInfo); @@ -1472,7 +1513,7 @@ void MainWindow::setupActions() //KActionCategory *audioEffectActions = new KActionCategory(i18n("Audio Effects"), m_effectsActionCollection); KActionCategory *audioEffectActions = new KActionCategory(i18n("Audio Effects"), collection); m_audioEffects = new KAction*[audioEffects.count()]; - for (int i = 0; i < audioEffects.count(); ++i) { + for(int i = 0; i < audioEffects.count(); ++i) { QStringList effectInfo = audioEffects.effectIdInfo(i); m_audioEffects[i] = new KAction(KIcon("kdenlive-show-audio"), effectInfo.at(0), this); m_audioEffects[i]->setData(effectInfo); @@ -1482,7 +1523,7 @@ void MainWindow::setupActions() //KActionCategory *customEffectActions = new KActionCategory(i18n("Custom Effects"), m_effectsActionCollection); KActionCategory *customEffectActions = new KActionCategory(i18n("Custom Effects"), collection); m_customEffects = new KAction*[customEffects.count()]; - for (int i = 0; i < customEffects.count(); ++i) { + for(int i = 0; i < customEffects.count(); ++i) { QStringList effectInfo = customEffects.effectIdInfo(i); m_customEffects[i] = new KAction(KIcon("kdenlive-custom-effect"), effectInfo.at(0), this); m_customEffects[i]->setData(effectInfo); @@ -1492,7 +1533,7 @@ void MainWindow::setupActions() //KActionCategory *transitionActions = new KActionCategory(i18n("Transitions"), m_effectsActionCollection); KActionCategory *transitionActions = new KActionCategory(i18n("Transitions"), collection); m_transitions = new KAction*[transitions.count()]; - for (int i = 0; i < transitions.count(); i++) { + for(int i = 0; i < transitions.count(); i++) { QStringList effectInfo = transitions.effectIdInfo(i); m_transitions[i] = new KAction(effectInfo.at(0), this); m_transitions[i]->setData(effectInfo); @@ -1510,6 +1551,71 @@ void MainWindow::slotDisplayActionMessage(QAction *a) statusBar()->showMessage(a->data().toString(), 3000); } +void MainWindow::loadLayouts() +{ + QMenu *saveLayout = (QMenu*)(factory()->container("layout_save_as", this)); + QMenu *loadLayout = (QMenu*)(factory()->container("layout_load", this)); + if(loadLayout == NULL || saveLayout == NULL) return; + KSharedConfigPtr config = KGlobal::config(); + KConfigGroup layoutGroup(config, "Layouts"); + QStringList entries = layoutGroup.keyList(); + QList loadActions = loadLayout->actions(); + QList saveActions = saveLayout->actions(); + for(int i = 1; i < 5; i++) { + // Rename the layouts actions + foreach(const QString & key, entries) { + if(key.endsWith(QString("_%1").arg(i))) { + // Found previously saved layout + QString layoutName = key.section("_", 0, -2); + for(int j = 0; j < loadActions.count(); j++) { + if(loadActions.at(j)->data().toString().endsWith("_" + QString::number(i))) { + loadActions[j]->setText(layoutName); + loadActions[j]->setData(key); + break; + } + } + for(int j = 0; j < saveActions.count(); j++) { + if(saveActions.at(j)->data().toString().endsWith("_" + QString::number(i))) { + saveActions[j]->setText(layoutName); + saveActions[j]->setData(key); + break; + } + } + } + } + } +} + +void MainWindow::slotLoadLayout(QAction *action) +{ + if(!action) return; + QString layoutId = action->data().toString(); + if(layoutId.isEmpty()) return; + KSharedConfigPtr config = KGlobal::config(); + KConfigGroup layouts(config, "Layouts"); + //QByteArray geom = QByteArray::fromBase64(layouts.readEntry(layoutId).toAscii()); + QByteArray state = QByteArray::fromBase64(layouts.readEntry(layoutId).toAscii()); + //restoreGeometry(geom); + restoreState(state); +} + +void MainWindow::slotSaveLayout(QAction *action) +{ + QString originallayoutName = action->data().toString(); + int layoutId = originallayoutName.section('_', -1).toInt(); + + QString layoutName = QInputDialog::getText(this, i18n("Save Layout"), i18n("Layout name:"), QLineEdit::Normal, originallayoutName.section('_', 0, -2)); + if(layoutName.isEmpty()) return; + KSharedConfigPtr config = KGlobal::config(); + KConfigGroup layouts(config, "Layouts"); + layouts.deleteEntry(originallayoutName); + + QByteArray st = saveState(); + layoutName.append("_" + QString::number(layoutId)); + layouts.writeEntry(layoutName, st.toBase64()); + loadLayouts(); +} + void MainWindow::saveOptions() { KdenliveSettings::self()->writeConfig(); @@ -1526,16 +1632,16 @@ void MainWindow::readOptions() m_fileOpenRecent->loadEntries(KConfigGroup(config, "Recent Files")); KConfigGroup initialGroup(config, "version"); bool upgrade = false; - if (initialGroup.exists()) { - if (initialGroup.readEntry("version", QString()).section(' ', 0, 0) != QString(version).section(' ', 0, 0)) { + if(initialGroup.exists()) { + if(initialGroup.readEntry("version", QString()).section(' ', 0, 0) != QString(version).section(' ', 0, 0)) { upgrade = true; } - if (initialGroup.readEntry("version") == "0.7") { + if(initialGroup.readEntry("version") == "0.7") { //Add new settings from 0.7.1 - if (KdenliveSettings::defaultprojectfolder().isEmpty()) { + if(KdenliveSettings::defaultprojectfolder().isEmpty()) { QString path = QDir::homePath() + "/kdenlive"; - if (KStandardDirs::makeDir(path) == false) { + if(KStandardDirs::makeDir(path) == false) { kDebug() << "/// ERROR CREATING PROJECT FOLDER: " << path; } else KdenliveSettings::setDefaultprojectfolder(path); } @@ -1543,10 +1649,10 @@ void MainWindow::readOptions() } - if (!initialGroup.exists() || upgrade) { + if(!initialGroup.exists() || upgrade) { // this is our first run, show Wizard Wizard *w = new Wizard(upgrade, this); - if (w->exec() == QDialog::Accepted && w->isOk()) { + if(w->exec() == QDialog::Accepted && w->isOk()) { w->adjustSettings(); initialGroup.writeEntry("version", version); delete w; @@ -1556,14 +1662,14 @@ void MainWindow::readOptions() } KConfigGroup treecolumns(config, "Project Tree"); const QByteArray state = treecolumns.readEntry("columns", QByteArray()); - if (!state.isEmpty()) + if(!state.isEmpty()) m_projectList->setHeaderInfo(state); } void MainWindow::slotRunWizard() { Wizard *w = new Wizard(false, this); - if (w->exec() == QDialog::Accepted && w->isOk()) { + if(w->exec() == QDialog::Accepted && w->isOk()) { w->adjustSettings(); } delete w; @@ -1571,21 +1677,27 @@ void MainWindow::slotRunWizard() void MainWindow::newFile(bool showProjectSettings, bool force) { - if (!m_timelineArea->isEnabled() && !force) return; + if(!m_timelineArea->isEnabled() && !force) + return; m_fileRevert->setEnabled(false); - QString profileName; - KUrl projectFolder; + QString profileName = KdenliveSettings::default_profile(); + KUrl projectFolder = KdenliveSettings::defaultprojectfolder(); QPoint projectTracks(KdenliveSettings::videotracks(), KdenliveSettings::audiotracks()); - if (!showProjectSettings) { - if (!KdenliveSettings::activatetabs()) if (!closeCurrentDocument()) return; - profileName = KdenliveSettings::default_profile(); - projectFolder = KdenliveSettings::defaultprojectfolder(); + if(!showProjectSettings) { + if(!KdenliveSettings::activatetabs()) + if(!closeCurrentDocument()) + return; } else { ProjectSettings *w = new ProjectSettings(NULL, QStringList(), projectTracks.x(), projectTracks.y(), KdenliveSettings::defaultprojectfolder(), false, true, this); - if (w->exec() != QDialog::Accepted) return; - if (!KdenliveSettings::activatetabs()) if (!closeCurrentDocument()) return; - if (KdenliveSettings::videothumbnails() != w->enableVideoThumbs()) slotSwitchVideoThumbs(); - if (KdenliveSettings::audiothumbnails() != w->enableAudioThumbs()) slotSwitchAudioThumbs(); + if(w->exec() != QDialog::Accepted) + return; + if(!KdenliveSettings::activatetabs()) + if(!closeCurrentDocument()) + return; + if(KdenliveSettings::videothumbnails() != w->enableVideoThumbs()) + slotSwitchVideoThumbs(); + if(KdenliveSettings::audiothumbnails() != w->enableAudioThumbs()) + slotSwitchAudioThumbs(); profileName = w->selectedProfile(); projectFolder = w->selectedFolder(); projectTracks = w->tracks(); @@ -1598,24 +1710,25 @@ void MainWindow::newFile(bool showProjectSettings, bool force) bool ok; TrackView *trackView = new TrackView(doc, &ok, this); m_timelineArea->addTab(trackView, KIcon("kdenlive"), doc->description()); - if (!ok) { + if(!ok) { // MLT is broken //m_timelineArea->setEnabled(false); //m_projectList->setEnabled(false); slotPreferences(6); return; } - if (m_timelineArea->count() == 1) { + if(m_timelineArea->count() == 1) { connectDocumentInfo(doc); connectDocument(trackView, doc); - } else m_timelineArea->setTabBarHidden(false); + } else + m_timelineArea->setTabBarHidden(false); m_monitorManager->activateMonitor("clip"); m_closeAction->setEnabled(m_timelineArea->count() > 1); } void MainWindow::activateDocument() { - if (m_timelineArea->currentWidget() == NULL || !m_timelineArea->isEnabled()) return; + if(m_timelineArea->currentWidget() == NULL || !m_timelineArea->isEnabled()) return; TrackView *currentTab = (TrackView *) m_timelineArea->currentWidget(); KdenliveDoc *currentDoc = currentTab->document(); connectDocumentInfo(currentDoc); @@ -1625,23 +1738,23 @@ void MainWindow::activateDocument() bool MainWindow::closeCurrentDocument(bool saveChanges) { QWidget *w = m_timelineArea->currentWidget(); - if (!w) return true; + if(!w) return true; // closing current document int ix = m_timelineArea->currentIndex() + 1; - if (ix == m_timelineArea->count()) ix = 0; + if(ix == m_timelineArea->count()) ix = 0; m_timelineArea->setCurrentIndex(ix); TrackView *tabToClose = (TrackView *) w; KdenliveDoc *docToClose = tabToClose->document(); - if (docToClose && docToClose->isModified() && saveChanges) { + if(docToClose && docToClose->isModified() && saveChanges) { QString message; - if (m_activeDocument->url().fileName().isEmpty()) + if(m_activeDocument->url().fileName().isEmpty()) message = i18n("Save changes to document?"); else message = i18n("The project \"%1\" has been changed.\nDo you want to save your changes?").arg(m_activeDocument->url().fileName()); - switch (KMessageBox::warningYesNoCancel(this, message)) { + switch(KMessageBox::warningYesNoCancel(this, message)) { case KMessageBox::Yes : // save document here. If saving fails, return false; - if (saveFile() == false) return false; + if(saveFile() == false) return false; break; case KMessageBox::Cancel : return false; @@ -1652,11 +1765,11 @@ bool MainWindow::closeCurrentDocument(bool saveChanges) } m_clipMonitor->slotSetXml(NULL); m_timelineArea->removeTab(m_timelineArea->indexOf(w)); - if (m_timelineArea->count() == 1) { + if(m_timelineArea->count() == 1) { m_timelineArea->setTabBarHidden(true); m_closeAction->setEnabled(false); } - if (docToClose == m_activeDocument) { + if(docToClose == m_activeDocument) { delete m_activeDocument; m_activeDocument = NULL; m_effectStack->clear(); @@ -1664,7 +1777,7 @@ bool MainWindow::closeCurrentDocument(bool saveChanges) } else { delete docToClose; } - if (w == m_activeTimeline) { + if(w == m_activeTimeline) { delete m_activeTimeline; m_activeTimeline = NULL; } else { @@ -1677,7 +1790,7 @@ bool MainWindow::saveFileAs(const QString &outputFileName) { QString currentSceneList; m_monitorManager->stopActiveMonitor(); - if (KdenliveSettings::dropbframes()) { + if(KdenliveSettings::dropbframes()) { KdenliveSettings::setDropbframes(false); m_activeDocument->clipManager()->updatePreviewSettings(); currentSceneList = m_projectMonitor->sceneList(); @@ -1685,13 +1798,13 @@ bool MainWindow::saveFileAs(const QString &outputFileName) m_activeDocument->clipManager()->updatePreviewSettings(); } else currentSceneList = m_projectMonitor->sceneList(); - if (m_activeDocument->saveSceneList(outputFileName, currentSceneList) == false) + if(m_activeDocument->saveSceneList(outputFileName, currentSceneList) == false) return false; // Save timeline thumbnails m_activeTimeline->projectView()->saveThumbnails(); m_activeDocument->setUrl(KUrl(outputFileName)); - if (m_activeDocument->m_autosave == NULL) { + if(m_activeDocument->m_autosave == NULL) { m_activeDocument->m_autosave = new KAutoSaveFile(KUrl(outputFileName), this); } else m_activeDocument->m_autosave->setManagedFile(KUrl(outputFileName)); setCaption(m_activeDocument->description()); @@ -1706,12 +1819,12 @@ bool MainWindow::saveFileAs(const QString &outputFileName) bool MainWindow::saveFileAs() { QString outputFile = KFileDialog::getSaveFileName(m_activeDocument->projectFolder(), getMimeType()); - if (outputFile.isEmpty()) { + if(outputFile.isEmpty()) { return false; } - if (QFile::exists(outputFile)) { + if(QFile::exists(outputFile)) { // Show the file dialog again if the user does not want to overwrite the file - if (KMessageBox::questionYesNo(this, i18n("File %1 already exists.\nDo you want to overwrite it?", outputFile)) == KMessageBox::No) + if(KMessageBox::questionYesNo(this, i18n("File %1 already exists.\nDo you want to overwrite it?", outputFile)) == KMessageBox::No) return saveFileAs(); } return saveFileAs(outputFile); @@ -1719,8 +1832,8 @@ bool MainWindow::saveFileAs() bool MainWindow::saveFile() { - if (!m_activeDocument) return true; - if (m_activeDocument->url().isEmpty()) { + if(!m_activeDocument) return true; + if(m_activeDocument->url().isEmpty()) { return saveFileAs(); } else { bool result = saveFileAs(m_activeDocument->url().path()); @@ -1731,13 +1844,13 @@ bool MainWindow::saveFile() void MainWindow::openFile() { - if (!m_startUrl.isEmpty()) { + if(!m_startUrl.isEmpty()) { openFile(m_startUrl); m_startUrl = KUrl(); return; } KUrl url = KFileDialog::getOpenUrl(KUrl("kfiledialog:///projectfolder"), getMimeType()); - if (url.isEmpty()) return; + if(url.isEmpty()) return; m_fileOpenRecent->addUrl(url); openFile(url); } @@ -1747,7 +1860,7 @@ void MainWindow::openLastFile() KSharedConfigPtr config = KGlobal::config(); KUrl::List urls = m_fileOpenRecent->urls(); //WARNING: this is buggy, we get a random url, not the last one. Bug in KRecentFileAction? - if (urls.isEmpty()) newFile(false); + if(urls.isEmpty()) newFile(false); else openFile(urls.last()); } @@ -1757,33 +1870,33 @@ void MainWindow::openFile(const KUrl &url) const int ct = m_timelineArea->count(); bool isOpened = false; int i; - for (i = 0; i < ct; i++) { + for(i = 0; i < ct; i++) { TrackView *tab = (TrackView *) m_timelineArea->widget(i); KdenliveDoc *doc = tab->document(); - if (doc->url() == url) { + if(doc->url() == url) { isOpened = true; break; } } - if (isOpened) { + if(isOpened) { m_timelineArea->setCurrentIndex(i); return; } - if (!KdenliveSettings::activatetabs()) if (!closeCurrentDocument()) return; + if(!KdenliveSettings::activatetabs()) if(!closeCurrentDocument()) return; // Check for backup file QList staleFiles = KAutoSaveFile::staleFiles(url); - if (!staleFiles.isEmpty()) { - if (KMessageBox::questionYesNo(this, - i18n("Auto-saved files exist. Do you want to recover them now?"), - i18n("File Recovery"), - KGuiItem(i18n("Recover")), KGuiItem(i18n("Don't recover"))) == KMessageBox::Yes) { + if(!staleFiles.isEmpty()) { + if(KMessageBox::questionYesNo(this, + i18n("Auto-saved files exist. Do you want to recover them now?"), + i18n("File Recovery"), + KGuiItem(i18n("Recover")), KGuiItem(i18n("Don't recover"))) == KMessageBox::Yes) { recoverFiles(staleFiles); return; } else { // remove the stale files - foreach(KAutoSaveFile *stale, staleFiles) { + foreach(KAutoSaveFile * stale, staleFiles) { stale->open(QIODevice::ReadWrite); delete stale; } @@ -1796,10 +1909,10 @@ void MainWindow::openFile(const KUrl &url) void MainWindow::doOpenFile(const KUrl &url, KAutoSaveFile *stale) { - if (!m_timelineArea->isEnabled()) return; + if(!m_timelineArea->isEnabled()) return; m_fileRevert->setEnabled(true); KdenliveDoc *doc = new KdenliveDoc(url, KdenliveSettings::defaultprojectfolder(), m_commandStack, KdenliveSettings::default_profile(), QPoint(KdenliveSettings::videotracks(), KdenliveSettings::audiotracks()), m_projectMonitor->render, this); - if (stale == NULL) { + if(stale == NULL) { stale = new KAutoSaveFile(url, doc); doc->m_autosave = stale; } else { @@ -1812,7 +1925,7 @@ void MainWindow::doOpenFile(const KUrl &url, KAutoSaveFile *stale) bool ok; TrackView *trackView = new TrackView(doc, &ok, this); m_timelineArea->setCurrentIndex(m_timelineArea->addTab(trackView, KIcon("kdenlive"), doc->description())); - if (!ok) { + if(!ok) { m_timelineArea->setEnabled(false); m_projectList->setEnabled(false); KMessageBox::sorry(this, i18n("Cannot open file %1.\nProject is corrupted.", url.path())); @@ -1824,7 +1937,7 @@ void MainWindow::doOpenFile(const KUrl &url, KAutoSaveFile *stale) trackView->setDuration(trackView->duration()); trackView->projectView()->initCursorPos(m_projectMonitor->render->seekPosition().frames(doc->fps())); - if (m_timelineArea->count() > 1) m_timelineArea->setTabBarHidden(false); + if(m_timelineArea->count() > 1) m_timelineArea->setTabBarHidden(false); slotGotProgressInfo(QString(), -1); m_projectMonitor->adjustRulerSize(trackView->duration()); m_projectMonitor->slotZoneMoved(trackView->inPoint(), trackView->outPoint()); @@ -1833,7 +1946,7 @@ void MainWindow::doOpenFile(const KUrl &url, KAutoSaveFile *stale) void MainWindow::recoverFiles(QList staleFiles) { - foreach(KAutoSaveFile *stale, staleFiles) { + foreach(KAutoSaveFile * stale, staleFiles) { /*if (!stale->open(QIODevice::QIODevice::ReadOnly)) { // show an error message; we could not steal the lockfile // maybe another application got to the file before us? @@ -1842,7 +1955,7 @@ void MainWindow::recoverFiles(QList staleFiles) }*/ kDebug() << "// OPENING RECOVERY: " << stale->fileName() << "\nMANAGED: " << stale->managedFile().path(); // the stalefiles also contain ".lock" files so we must ignore them... bug in KAutoSaveFile? - if (!stale->fileName().endsWith(".lock")) doOpenFile(KUrl(stale->fileName()), stale); + if(!stale->fileName().endsWith(".lock")) doOpenFile(KUrl(stale->fileName()), stale); else KIO::NetAccess::del(KUrl(stale->fileName()), this); } } @@ -1850,54 +1963,54 @@ void MainWindow::recoverFiles(QList staleFiles) void MainWindow::parseProfiles(const QString &mltPath) { //KdenliveSettings::setDefaulttmpfolder(); - if (!mltPath.isEmpty()) { + if(!mltPath.isEmpty()) { KdenliveSettings::setMltpath(mltPath + "/share/mlt/profiles/"); KdenliveSettings::setRendererpath(mltPath + "/bin/melt"); } - if (KdenliveSettings::mltpath().isEmpty()) + if(KdenliveSettings::mltpath().isEmpty()) KdenliveSettings::setMltpath(QString(MLT_PREFIX) + QString("/share/mlt/profiles/")); - if (KdenliveSettings::rendererpath().isEmpty() || KdenliveSettings::rendererpath().endsWith("inigo")) { + if(KdenliveSettings::rendererpath().isEmpty() || KdenliveSettings::rendererpath().endsWith("inigo")) { QString meltPath = QString(MLT_PREFIX) + QString("/bin/melt"); - if (!QFile::exists(meltPath)) + if(!QFile::exists(meltPath)) meltPath = KStandardDirs::findExe("melt"); KdenliveSettings::setRendererpath(meltPath); } - if (KdenliveSettings::rendererpath().isEmpty()) { + if(KdenliveSettings::rendererpath().isEmpty()) { // Cannot find the MLT melt renderer, ask for location KUrlRequesterDialog *getUrl = new KUrlRequesterDialog(QString(), i18n("Cannot find the melt program required for rendering (part of MLT)"), this); - if (getUrl->exec() == QDialog::Rejected) { + if(getUrl->exec() == QDialog::Rejected) { ::exit(0); } KUrl rendererPath = getUrl->selectedUrl(); delete getUrl; - if (rendererPath.isEmpty()) ::exit(0); + if(rendererPath.isEmpty()) ::exit(0); KdenliveSettings::setRendererpath(rendererPath.path()); } QStringList profilesFilter; profilesFilter << "*"; QStringList profilesList = QDir(KdenliveSettings::mltpath()).entryList(profilesFilter, QDir::Files); - if (profilesList.isEmpty()) { + if(profilesList.isEmpty()) { // Cannot find MLT path, try finding melt QString profilePath = KdenliveSettings::rendererpath(); - if (!profilePath.isEmpty()) { + if(!profilePath.isEmpty()) { profilePath = profilePath.section('/', 0, -3); KdenliveSettings::setMltpath(profilePath + "/share/mlt/profiles/"); profilesList = QDir(KdenliveSettings::mltpath()).entryList(profilesFilter, QDir::Files); } - if (profilesList.isEmpty()) { + if(profilesList.isEmpty()) { // Cannot find the MLT profiles, ask for location KUrlRequesterDialog *getUrl = new KUrlRequesterDialog(KdenliveSettings::mltpath(), i18n("Cannot find your MLT profiles, please give the path"), this); getUrl->fileDialog()->setMode(KFile::Directory); - if (getUrl->exec() == QDialog::Rejected) { + if(getUrl->exec() == QDialog::Rejected) { ::exit(0); } KUrl mltPath = getUrl->selectedUrl(); delete getUrl; - if (mltPath.isEmpty()) ::exit(0); + if(mltPath.isEmpty()) ::exit(0); KdenliveSettings::setMltpath(mltPath.path(KUrl::AddTrailingSlash)); profilesList = QDir(KdenliveSettings::mltpath()).entryList(profilesFilter, QDir::Files); } @@ -1906,16 +2019,16 @@ void MainWindow::parseProfiles(const QString &mltPath) kDebug() << "RESULTING MLT PATH: " << KdenliveSettings::mltpath(); // Parse again MLT profiles to build a list of available video formats - if (profilesList.isEmpty()) parseProfiles(); + if(profilesList.isEmpty()) parseProfiles(); } void MainWindow::slotEditProfiles() { ProfilesDialog *w = new ProfilesDialog; - if (w->exec() == QDialog::Accepted) { + if(w->exec() == QDialog::Accepted) { KdenliveSettingsDialog* d = static_cast (KConfigDialog::exists("settings")); - if (d) d->checkProfile(); + if(d) d->checkProfile(); } delete w; } @@ -1926,11 +2039,11 @@ void MainWindow::slotDetectAudioDriver() leading to no audio output, see bug #934 */ //decide which audio driver is really best, in some cases SDL is wrong - if (KdenliveSettings::audiodrivername().isEmpty()) { + if(KdenliveSettings::audiodrivername().isEmpty()) { QString driver; KProcess readProcess; //PulseAudio needs to be selected if it exists, the ALSA pulse pcm device is not fast enough. - if (!KStandardDirs::findExe("pactl").isEmpty()) { + if(!KStandardDirs::findExe("pactl").isEmpty()) { readProcess.setOutputChannelMode(KProcess::OnlyStdoutChannel); readProcess.setProgram("pactl", QStringList() << "stat"); readProcess.execute(2000); // Kill it after 2 seconds @@ -1938,7 +2051,7 @@ void MainWindow::slotDetectAudioDriver() QString result = QString(readProcess.readAllStandardOutput()); kDebug() << "// / / / / / READING PACTL: "; kDebug() << result; - if (!result.isEmpty()) { + if(!result.isEmpty()) { driver = "pulse"; kDebug() << "// / / / / PULSEAUDIO DETECTED"; } @@ -1953,51 +2066,52 @@ void MainWindow::slotEditProjectSettings() QPoint p = m_activeDocument->getTracksCount(); ProjectSettings *w = new ProjectSettings(m_projectList, m_activeTimeline->projectView()->extractTransitionsLumas(), p.x(), p.y(), m_activeDocument->projectFolder().path(), true, !m_activeDocument->isModified(), this); - if (w->exec() == QDialog::Accepted) { + if(w->exec() == QDialog::Accepted) { QString profile = w->selectedProfile(); m_activeDocument->setProjectFolder(w->selectedFolder()); - if (m_renderWidget) m_renderWidget->setDocumentPath(w->selectedFolder().path(KUrl::AddTrailingSlash)); - if (KdenliveSettings::videothumbnails() != w->enableVideoThumbs()) slotSwitchVideoThumbs(); - if (KdenliveSettings::audiothumbnails() != w->enableAudioThumbs()) slotSwitchAudioThumbs(); - if (m_activeDocument->profilePath() != profile) { - // Profile was changed - double dar = m_activeDocument->dar(); - - // Deselect current effect / transition - m_effectStack->slotClipItemSelected(NULL, 0); - m_transitionConfig->slotTransitionItemSelected(NULL, 0, QPoint(), false); - m_clipMonitor->slotSetXml(NULL); - bool updateFps = m_activeDocument->setProfilePath(profile); - KdenliveSettings::setCurrent_profile(profile); - KdenliveSettings::setProject_fps(m_activeDocument->fps()); - setCaption(m_activeDocument->description(), m_activeDocument->isModified()); - - m_activeDocument->clipManager()->clearUnusedProducers(); - m_monitorManager->resetProfiles(m_activeDocument->timecode()); - - m_transitionConfig->updateProjectFormat(m_activeDocument->mltProfile(), m_activeDocument->timecode(), m_activeDocument->tracksList()); - m_effectStack->updateProjectFormat(m_activeDocument->mltProfile(), m_activeDocument->timecode()); - m_projectList->updateProjectFormat(m_activeDocument->timecode()); - if (m_renderWidget) m_renderWidget->setProfile(m_activeDocument->mltProfile()); - m_timelineArea->setTabText(m_timelineArea->currentIndex(), m_activeDocument->description()); - //m_activeDocument->clipManager()->resetProducersList(m_projectMonitor->render->producersList()); - if (dar != m_activeDocument->dar()) m_projectList->reloadClipThumbnails(); - if (updateFps) m_activeTimeline->updateProjectFps(); - m_activeDocument->setModified(true); - m_commandStack->activeStack()->clear(); - //Update the mouse position display so it will display in DF/NDF format by default based on the project setting. - slotUpdateMousePosition(0); - // We need to desactivate & reactivate monitors to get a refresh - //m_monitorManager->switchMonitors(); - } + if(m_renderWidget) m_renderWidget->setDocumentPath(w->selectedFolder().path(KUrl::AddTrailingSlash)); + if(KdenliveSettings::videothumbnails() != w->enableVideoThumbs()) slotSwitchVideoThumbs(); + if(KdenliveSettings::audiothumbnails() != w->enableAudioThumbs()) slotSwitchAudioThumbs(); + if(m_activeDocument->profilePath() != profile) slotUpdateProjectProfile(profile); } delete w; } +void MainWindow::slotUpdateProjectProfile(const QString &profile) +{ + double dar = m_activeDocument->dar(); + + // Deselect current effect / transition + m_effectStack->slotClipItemSelected(NULL, 0); + m_transitionConfig->slotTransitionItemSelected(NULL, 0, QPoint(), false); + m_clipMonitor->slotSetXml(NULL); + bool updateFps = m_activeDocument->setProfilePath(profile); + KdenliveSettings::setCurrent_profile(profile); + KdenliveSettings::setProject_fps(m_activeDocument->fps()); + setCaption(m_activeDocument->description(), m_activeDocument->isModified()); + + m_activeDocument->clipManager()->clearUnusedProducers(); + m_monitorManager->resetProfiles(m_activeDocument->timecode()); + m_transitionConfig->updateProjectFormat(m_activeDocument->mltProfile(), m_activeDocument->timecode(), m_activeDocument->tracksList()); + m_effectStack->updateProjectFormat(m_activeDocument->mltProfile(), m_activeDocument->timecode()); + m_projectList->updateProjectFormat(m_activeDocument->timecode()); + if(m_renderWidget) m_renderWidget->setProfile(m_activeDocument->mltProfile()); + m_timelineArea->setTabText(m_timelineArea->currentIndex(), m_activeDocument->description()); + //m_activeDocument->clipManager()->resetProducersList(m_projectMonitor->render->producersList()); + if(dar != m_activeDocument->dar()) m_projectList->reloadClipThumbnails(); + if(updateFps) m_activeTimeline->updateProjectFps(); + m_activeDocument->setModified(true); + m_commandStack->activeStack()->clear(); + //Update the mouse position display so it will display in DF/NDF format by default based on the project setting. + slotUpdateMousePosition(0); + // We need to desactivate & reactivate monitors to get a refresh + //m_monitorManager->switchMonitors(); +} + void MainWindow::slotRenderProject() { - if (!m_renderWidget) { + if(!m_renderWidget) { QString projectfolder = m_activeDocument ? m_activeDocument->projectFolder().path(KUrl::AddTrailingSlash) : KdenliveSettings::defaultprojectfolder(); m_renderWidget = new RenderWidget(projectfolder, this); connect(m_renderWidget, SIGNAL(shutdown()), this, SLOT(slotShutdown())); @@ -2005,7 +2119,7 @@ void MainWindow::slotRenderProject() connect(m_renderWidget, SIGNAL(prepareRenderingData(bool, bool, const QString&)), this, SLOT(slotPrepareRendering(bool, bool, const QString&))); connect(m_renderWidget, SIGNAL(abortProcess(const QString &)), this, SIGNAL(abortRenderJob(const QString &))); connect(m_renderWidget, SIGNAL(openDvdWizard(const QString &, const QString &)), this, SLOT(slotDvdWizard(const QString &, const QString &))); - if (m_activeDocument) { + if(m_activeDocument) { m_renderWidget->setProfile(m_activeDocument->mltProfile()); m_renderWidget->setGuides(m_activeDocument->guidesXml(), m_activeDocument->projectDuration()); m_renderWidget->setDocumentPath(m_activeDocument->projectFolder().path(KUrl::AddTrailingSlash)); @@ -2025,32 +2139,32 @@ void MainWindow::slotRenderProject() void MainWindow::slotCheckRenderStatus() { // Make sure there are no missing clips - if (m_renderWidget) + if(m_renderWidget) m_renderWidget->missingClips(m_projectList->hasMissingClips()); } void MainWindow::setRenderingProgress(const QString &url, int progress) { - if (m_renderWidget) + if(m_renderWidget) m_renderWidget->setRenderJob(url, progress); } void MainWindow::setRenderingFinished(const QString &url, int status, const QString &error) { - if (m_renderWidget) + if(m_renderWidget) m_renderWidget->setRenderStatus(url, status, error); } void MainWindow::slotCleanProject() { - if (KMessageBox::warningContinueCancel(this, i18n("This will remove all unused clips from your project."), i18n("Clean up project")) == KMessageBox::Cancel) return; + if(KMessageBox::warningContinueCancel(this, i18n("This will remove all unused clips from your project."), i18n("Clean up project")) == KMessageBox::Cancel) return; m_projectList->cleanup(); } void MainWindow::slotUpdateMousePosition(int pos) { - if (m_activeDocument) - switch (m_timecodeFormat->currentIndex()) { + if(m_activeDocument) + switch(m_timecodeFormat->currentIndex()) { case 0: statusBar()->changeItem(m_activeDocument->timecode().getTimecodeFromFrames(pos), ID_TIMELINE_POS); break; @@ -2061,10 +2175,10 @@ void MainWindow::slotUpdateMousePosition(int pos) void MainWindow::slotUpdateDocumentState(bool modified) { - if (!m_activeDocument) return; + if(!m_activeDocument) return; setCaption(m_activeDocument->description(), modified); m_saveAction->setEnabled(modified); - if (modified) { + if(modified) { m_timelineArea->setTabTextColor(m_timelineArea->currentIndex(), palette().color(QPalette::Link)); m_timelineArea->setTabIcon(m_timelineArea->currentIndex(), KIcon("document-save")); } else { @@ -2075,8 +2189,8 @@ void MainWindow::slotUpdateDocumentState(bool modified) void MainWindow::connectDocumentInfo(KdenliveDoc *doc) { - if (m_activeDocument) { - if (m_activeDocument == doc) return; + if(m_activeDocument) { + if(m_activeDocument == doc) return; disconnect(m_activeDocument, SIGNAL(progressInfo(const QString &, int)), this, SLOT(slotGotProgressInfo(const QString &, int))); } connect(doc, SIGNAL(progressInfo(const QString &, int)), this, SLOT(slotGotProgressInfo(const QString &, int))); @@ -2087,15 +2201,17 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) //cha //m_projectMonitor->stop(); m_closeAction->setEnabled(m_timelineArea->count() > 1); kDebug() << "/////////////////// CONNECTING DOC TO PROJECT VIEW ////////////////"; - if (m_activeDocument) { - if (m_activeDocument == doc) return; - if (m_activeTimeline) { + if(m_activeDocument) { + if(m_activeDocument == doc) return; + if(m_activeTimeline) { disconnect(m_projectMonitor, SIGNAL(renderPosition(int)), m_activeTimeline, SLOT(moveCursorPos(int))); disconnect(m_projectMonitor, SIGNAL(zoneUpdated(QPoint)), m_activeTimeline, SLOT(slotSetZone(QPoint))); disconnect(m_projectMonitor, SIGNAL(durationChanged(int)), m_activeTimeline, SLOT(setDuration(int))); disconnect(m_projectMonitor, SIGNAL(zoneUpdated(QPoint)), m_activeDocument, SLOT(setModified())); disconnect(m_clipMonitor, SIGNAL(zoneUpdated(QPoint)), m_activeDocument, SLOT(setModified())); disconnect(m_projectList, SIGNAL(projectModified()), m_activeDocument, SLOT(setModified())); + disconnect(m_projectList, SIGNAL(updateProfile(const QString &)), this, SLOT(slotUpdateProjectProfile(const QString &))); + disconnect(m_projectMonitor->render, SIGNAL(refreshDocumentProducers()), m_activeDocument, SLOT(checkProjectClips())); disconnect(m_activeDocument, SIGNAL(guidesUpdated()), this, SLOT(slotGuidesUpdated())); @@ -2150,6 +2266,7 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) //cha connect(m_projectList, SIGNAL(clipNeedsReload(const QString&, bool)), trackView->projectView(), SLOT(slotUpdateClip(const QString &, bool))); connect(m_projectList, SIGNAL(projectModified()), doc, SLOT(setModified())); + connect(m_projectList, SIGNAL(updateProfile(const QString &)), this, SLOT(slotUpdateProjectProfile(const QString &))); connect(m_projectList, SIGNAL(clipNameChanged(const QString, const QString)), trackView->projectView(), SLOT(clipNameChanged(const QString, const QString))); connect(m_projectList, SIGNAL(findInTimeline(const QString&)), this, SLOT(slotClipInTimeline(const QString&))); @@ -2220,7 +2337,7 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) //cha trackView->projectView()->setContextMenu(m_timelineContextMenu, m_timelineContextClipMenu, m_timelineContextTransitionMenu, m_clipTypeGroup, (QMenu*)(factory()->container("marker_menu", this))); m_activeTimeline = trackView; - if (m_renderWidget) { + if(m_renderWidget) { slotCheckRenderStatus(); m_renderWidget->setProfile(doc->mltProfile()); m_renderWidget->setGuides(doc->guidesXml(), doc->projectDuration()); @@ -2242,7 +2359,7 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) //cha m_activeDocument = doc; m_activeTimeline->updateProjectFps(); m_activeDocument->checkProjectClips(); - if (KdenliveSettings::dropbframes()) slotUpdatePreviewSettings(); + if(KdenliveSettings::dropbframes()) slotUpdatePreviewSettings(); //Update the mouse position display so it will display in DF/NDF format by default based on the project setting. slotUpdateMousePosition(0); // set tool to select tool @@ -2257,7 +2374,7 @@ void MainWindow::slotZoneMoved(int start, int end) void MainWindow::slotGuidesUpdated() { - if (m_renderWidget) + if(m_renderWidget) m_renderWidget->setGuides(m_activeDocument->guidesXml(), m_activeDocument->projectDuration()); } @@ -2274,9 +2391,9 @@ void MainWindow::slotPreferences(int page, int option) //An instance of your dialog could be already created and could be // cached, in which case you want to display the cached dialog // instead of creating another one - if (KConfigDialog::showDialog("settings")) { + if(KConfigDialog::showDialog("settings")) { KdenliveSettingsDialog* d = static_cast (KConfigDialog::exists("settings")); - if (page != -1) d->showPage(page, option); + if(page != -1) d->showPage(page, option); return; } @@ -2292,12 +2409,12 @@ void MainWindow::slotPreferences(int page, int option) #endif //connect(dialog, SIGNAL(updatePreviewSettings()), this, SLOT(slotUpdatePreviewSettings())); dialog->show(); - if (page != -1) dialog->showPage(page, option); + if(page != -1) dialog->showPage(page, option); } void MainWindow::slotUpdatePreviewSettings() { - if (m_activeDocument) { + if(m_activeDocument) { m_clipMonitor->slotSetXml(NULL); m_activeDocument->updatePreviewSettings(); } @@ -2306,11 +2423,11 @@ void MainWindow::slotUpdatePreviewSettings() void MainWindow::updateConfiguration() { //TODO: we should apply settings to all projects, not only the current one - if (m_activeTimeline) { + if(m_activeTimeline) { m_activeTimeline->refresh(); m_activeTimeline->projectView()->checkAutoScroll(); m_activeTimeline->projectView()->checkTrackHeight(); - if (m_activeDocument) + if(m_activeDocument) m_activeDocument->clipManager()->checkAudioThumbs(); } m_buttonAudioThumbs->setChecked(KdenliveSettings::audiothumbnails()); @@ -2335,7 +2452,7 @@ void MainWindow::slotSwitchSplitAudio() void MainWindow::slotSwitchVideoThumbs() { KdenliveSettings::setVideothumbnails(!KdenliveSettings::videothumbnails()); - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->slotUpdateAllThumbs(); m_buttonVideoThumbs->setChecked(KdenliveSettings::videothumbnails()); } @@ -2343,10 +2460,10 @@ void MainWindow::slotSwitchVideoThumbs() void MainWindow::slotSwitchAudioThumbs() { KdenliveSettings::setAudiothumbnails(!KdenliveSettings::audiothumbnails()); - if (m_activeTimeline) { + if(m_activeTimeline) { m_activeTimeline->refresh(); m_activeTimeline->projectView()->checkAutoScroll(); - if (m_activeDocument) + if(m_activeDocument) m_activeDocument->clipManager()->checkAudioThumbs(); } m_buttonAudioThumbs->setChecked(KdenliveSettings::audiothumbnails()); @@ -2355,7 +2472,7 @@ void MainWindow::slotSwitchAudioThumbs() void MainWindow::slotSwitchMarkersComments() { KdenliveSettings::setShowmarkers(!KdenliveSettings::showmarkers()); - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->refresh(); m_buttonShowMarkers->setChecked(KdenliveSettings::showmarkers()); } @@ -2369,7 +2486,7 @@ void MainWindow::slotSwitchSnap() void MainWindow::slotDeleteItem() { - if (QApplication::focusWidget() && + if(QApplication::focusWidget() && QApplication::focusWidget()->parentWidget() && QApplication::focusWidget()->parentWidget()->parentWidget() && QApplication::focusWidget()->parentWidget()->parentWidget() == m_projectListDock) { @@ -2377,8 +2494,8 @@ void MainWindow::slotDeleteItem() } else { QWidget *widget = QApplication::focusWidget(); - while (widget) { - if (widget == m_effectStackDock) { + while(widget) { + if(widget == m_effectStackDock) { m_effectStack->slotItemDel(); return; } @@ -2386,14 +2503,14 @@ void MainWindow::slotDeleteItem() } // effect stack has no focus - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->deleteSelectedClips(); } } void MainWindow::slotUpdateClipMarkers(DocClipBase *clip) { - if (m_clipMonitor->isActive()) + if(m_clipMonitor->isActive()) m_clipMonitor->checkOverlay(); m_clipMonitor->updateMarkers(clip); } @@ -2402,10 +2519,10 @@ void MainWindow::slotAddClipMarker() { DocClipBase *clip = NULL; GenTime pos; - if (m_projectMonitor->isActive()) { - if (m_activeTimeline) { + if(m_projectMonitor->isActive()) { + if(m_activeTimeline) { ClipItem *item = m_activeTimeline->projectView()->getActiveClipUnderCursor(); - if (item) { + if(item) { pos = GenTime((int)((m_projectMonitor->position() - item->startPos() + item->cropStart()).frames(m_activeDocument->fps()) * item->speed() + 0.5), m_activeDocument->fps()); clip = item->baseClip(); } @@ -2414,14 +2531,14 @@ void MainWindow::slotAddClipMarker() clip = m_clipMonitor->activeClip(); pos = m_clipMonitor->position(); } - if (!clip) { + if(!clip) { m_messageLabel->setMessage(i18n("Cannot find clip to add marker"), ErrorMessage); return; } QString id = clip->getId(); CommentedTime marker(pos, i18n("Marker")); MarkerDialog d(clip, marker, m_activeDocument->timecode(), i18n("Add Marker"), this); - if (d.exec() == QDialog::Accepted) + if(d.exec() == QDialog::Accepted) m_activeTimeline->projectView()->slotAddClipMarker(id, d.newMarker().time(), d.newMarker().comment()); } @@ -2429,10 +2546,10 @@ void MainWindow::slotDeleteClipMarker() { DocClipBase *clip = NULL; GenTime pos; - if (m_projectMonitor->isActive()) { - if (m_activeTimeline) { + if(m_projectMonitor->isActive()) { + if(m_activeTimeline) { ClipItem *item = m_activeTimeline->projectView()->getActiveClipUnderCursor(); - if (item) { + if(item) { pos = (m_projectMonitor->position() - item->startPos() + item->cropStart()) / item->speed(); clip = item->baseClip(); } @@ -2441,14 +2558,14 @@ void MainWindow::slotDeleteClipMarker() clip = m_clipMonitor->activeClip(); pos = m_clipMonitor->position(); } - if (!clip) { + if(!clip) { m_messageLabel->setMessage(i18n("Cannot find clip to remove marker"), ErrorMessage); return; } QString id = clip->getId(); QString comment = clip->markerComment(pos); - if (comment.isEmpty()) { + if(comment.isEmpty()) { m_messageLabel->setMessage(i18n("No marker found at cursor time"), ErrorMessage); return; } @@ -2458,17 +2575,17 @@ void MainWindow::slotDeleteClipMarker() void MainWindow::slotDeleteAllClipMarkers() { DocClipBase *clip = NULL; - if (m_projectMonitor->isActive()) { - if (m_activeTimeline) { + if(m_projectMonitor->isActive()) { + if(m_activeTimeline) { ClipItem *item = m_activeTimeline->projectView()->getActiveClipUnderCursor(); - if (item) { + if(item) { clip = item->baseClip(); } } } else { clip = m_clipMonitor->activeClip(); } - if (!clip) { + if(!clip) { m_messageLabel->setMessage(i18n("Cannot find clip to remove marker"), ErrorMessage); return; } @@ -2479,10 +2596,10 @@ void MainWindow::slotEditClipMarker() { DocClipBase *clip = NULL; GenTime pos; - if (m_projectMonitor->isActive()) { - if (m_activeTimeline) { + if(m_projectMonitor->isActive()) { + if(m_activeTimeline) { ClipItem *item = m_activeTimeline->projectView()->getActiveClipUnderCursor(); - if (item) { + if(item) { pos = (m_projectMonitor->position() - item->startPos() + item->cropStart()) / item->speed(); clip = item->baseClip(); } @@ -2491,23 +2608,23 @@ void MainWindow::slotEditClipMarker() clip = m_clipMonitor->activeClip(); pos = m_clipMonitor->position(); } - if (!clip) { + if(!clip) { m_messageLabel->setMessage(i18n("Cannot find clip to remove marker"), ErrorMessage); return; } QString id = clip->getId(); QString oldcomment = clip->markerComment(pos); - if (oldcomment.isEmpty()) { + if(oldcomment.isEmpty()) { m_messageLabel->setMessage(i18n("No marker found at cursor time"), ErrorMessage); return; } CommentedTime marker(pos, oldcomment); MarkerDialog d(clip, marker, m_activeDocument->timecode(), i18n("Edit Marker"), this); - if (d.exec() == QDialog::Accepted) { + if(d.exec() == QDialog::Accepted) { m_activeTimeline->projectView()->slotAddClipMarker(id, d.newMarker().time(), d.newMarker().comment()); - if (d.newMarker().time() != pos) { + if(d.newMarker().time() != pos) { // remove old marker m_activeTimeline->projectView()->slotAddClipMarker(id, pos, QString()); } @@ -2516,76 +2633,76 @@ void MainWindow::slotEditClipMarker() void MainWindow::slotAddGuide() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->slotAddGuide(); } void MainWindow::slotInsertSpace() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->slotInsertSpace(); } void MainWindow::slotRemoveSpace() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->slotRemoveSpace(); } void MainWindow::slotInsertTrack(int ix) { m_projectMonitor->activateMonitor(); - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->slotInsertTrack(ix); - if (m_activeDocument) + if(m_activeDocument) m_transitionConfig->updateProjectFormat(m_activeDocument->mltProfile(), m_activeDocument->timecode(), m_activeDocument->tracksList()); } void MainWindow::slotDeleteTrack(int ix) { m_projectMonitor->activateMonitor(); - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->slotDeleteTrack(ix); - if (m_activeDocument) + if(m_activeDocument) m_transitionConfig->updateProjectFormat(m_activeDocument->mltProfile(), m_activeDocument->timecode(), m_activeDocument->tracksList()); } void MainWindow::slotConfigTrack(int ix) { m_projectMonitor->activateMonitor(); - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->slotConfigTracks(ix); - if (m_activeDocument) + if(m_activeDocument) m_transitionConfig->updateProjectFormat(m_activeDocument->mltProfile(), m_activeDocument->timecode(), m_activeDocument->tracksList()); } void MainWindow::slotEditGuide() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->slotEditGuide(); } void MainWindow::slotDeleteGuide() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->slotDeleteGuide(); } void MainWindow::slotDeleteAllGuides() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->slotDeleteAllGuides(); } void MainWindow::slotCutTimelineClip() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->cutSelectedClips(); } void MainWindow::slotInsertClipOverwrite() { - if (m_activeTimeline) { + if(m_activeTimeline) { QStringList data = m_clipMonitor->getZoneInfo(); m_activeTimeline->projectView()->insertZoneOverwrite(data, m_activeTimeline->inPoint()); } @@ -2593,98 +2710,98 @@ void MainWindow::slotInsertClipOverwrite() void MainWindow::slotSelectTimelineClip() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->selectClip(true); } void MainWindow::slotSelectTimelineTransition() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->selectTransition(true); } void MainWindow::slotDeselectTimelineClip() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->selectClip(false, true); } void MainWindow::slotDeselectTimelineTransition() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->selectTransition(false, true); } void MainWindow::slotSelectAddTimelineClip() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->selectClip(true, true); } void MainWindow::slotSelectAddTimelineTransition() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->selectTransition(true, true); } void MainWindow::slotGroupClips() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->groupClips(); } void MainWindow::slotUnGroupClips() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->groupClips(false); } void MainWindow::slotEditItemDuration() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->editItemDuration(); } void MainWindow::slotAddProjectClip(KUrl url) { - if (m_activeDocument) + if(m_activeDocument) m_activeDocument->slotAddClipFile(url, QString()); } void MainWindow::slotAddTransition(QAction *result) { - if (!result) return; + if(!result) return; QStringList info = result->data().toStringList(); - if (info.isEmpty()) return; + if(info.isEmpty()) return; QDomElement transition = transitions.getEffectByTag(info.at(1), info.at(2)); - if (m_activeTimeline && !transition.isNull()) { + if(m_activeTimeline && !transition.isNull()) { m_activeTimeline->projectView()->slotAddTransitionToSelectedClips(transition.cloneNode().toElement()); } } void MainWindow::slotAddVideoEffect(QAction *result) { - if (!result) return; + if(!result) return; QStringList info = result->data().toStringList(); - if (info.isEmpty()) return; + if(info.isEmpty()) return; QDomElement effect = videoEffects.getEffectByTag(info.at(1), info.at(2)); slotAddEffect(effect); } void MainWindow::slotAddAudioEffect(QAction *result) { - if (!result) return; + if(!result) return; QStringList info = result->data().toStringList(); - if (info.isEmpty()) return; + if(info.isEmpty()) return; QDomElement effect = audioEffects.getEffectByTag(info.at(1), info.at(2)); slotAddEffect(effect); } void MainWindow::slotAddCustomEffect(QAction *result) { - if (!result) return; + if(!result) return; QStringList info = result->data().toStringList(); - if (info.isEmpty()) return; + if(info.isEmpty()) return; QDomElement effect = customEffects.getEffectByTag(info.at(1), info.at(2)); slotAddEffect(effect); } @@ -2703,7 +2820,7 @@ void MainWindow::slotZoomOut() void MainWindow::slotFitZoom() { - if (m_activeTimeline) + if(m_activeTimeline) m_zoomSlider->setValue(m_activeTimeline->fitZoom()); } @@ -2712,7 +2829,7 @@ void MainWindow::slotSetZoom(int value) value = qMax(m_zoomSlider->minimum(), value); value = qMin(m_zoomSlider->maximum(), value); - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->slotChangeZoom(value); m_zoomOut->setEnabled(value < m_zoomSlider->maximum()); @@ -2726,7 +2843,7 @@ void MainWindow::slotSetZoom(int value) void MainWindow::slotShowZoomSliderToolTip(int zoomlevel) { - if (zoomlevel != -1) + if(zoomlevel != -1) slotUpdateZoomSliderToolTip(zoomlevel); QPoint global = m_zoomSlider->rect().topLeft(); @@ -2743,12 +2860,12 @@ void MainWindow::slotUpdateZoomSliderToolTip(int zoomlevel) void MainWindow::slotGotProgressInfo(const QString &message, int progress) { m_statusProgressBar->setValue(progress); - if (progress >= 0) { - if (!message.isEmpty()) + if(progress >= 0) { + if(!message.isEmpty()) m_messageLabel->setMessage(message, InformationMessage);//statusLabel->setText(message); m_statusProgressBar->setVisible(true); - } else if (progress == -2) { - if (!message.isEmpty()) + } else if(progress == -2) { + if(!message.isEmpty()) m_messageLabel->setMessage(message, ErrorMessage); m_statusProgressBar->setVisible(false); } else { @@ -2759,9 +2876,9 @@ void MainWindow::slotGotProgressInfo(const QString &message, int progress) void MainWindow::slotShowClipProperties(DocClipBase *clip) { - if (clip->clipType() == TEXT) { + if(clip->clipType() == TEXT) { QString titlepath = m_activeDocument->projectFolder().path(KUrl::AddTrailingSlash) + "titles/"; - if (!clip->getProperty("resource").isEmpty() && clip->getProperty("xmldata").isEmpty()) { + if(!clip->getProperty("resource").isEmpty() && clip->getProperty("xmldata").isEmpty()) { // template text clip // Get the list of existing templates @@ -2774,41 +2891,41 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip) dia_ui.setupUi(dia); int ix = -1; const QString templatePath = clip->getProperty("resource"); - for (int i = 0; i < templateFiles.size(); ++i) { + for(int i = 0; i < templateFiles.size(); ++i) { dia_ui.template_list->comboBox()->addItem(templateFiles.at(i), titlepath + templateFiles.at(i)); - if (templatePath == KUrl(titlepath + templateFiles.at(i)).path()) ix = i; + if(templatePath == KUrl(titlepath + templateFiles.at(i)).path()) ix = i; } - if (ix != -1) dia_ui.template_list->comboBox()->setCurrentIndex(ix); + if(ix != -1) dia_ui.template_list->comboBox()->setCurrentIndex(ix); else dia_ui.template_list->comboBox()->insertItem(0, templatePath); dia_ui.template_list->fileDialog()->setFilter("*.kdenlivetitle"); //warning: setting base directory doesn't work?? KUrl startDir(titlepath); dia_ui.template_list->fileDialog()->setUrl(startDir); dia_ui.description->setText(clip->getProperty("description")); - if (dia->exec() == QDialog::Accepted) { + if(dia->exec() == QDialog::Accepted) { QString textTemplate = dia_ui.template_list->comboBox()->itemData(dia_ui.template_list->comboBox()->currentIndex()).toString(); - if (textTemplate.isEmpty()) textTemplate = dia_ui.template_list->comboBox()->currentText(); + if(textTemplate.isEmpty()) textTemplate = dia_ui.template_list->comboBox()->currentText(); QMap newprops; - if (KUrl(textTemplate).path() != templatePath) { + if(KUrl(textTemplate).path() != templatePath) { // The template was changed newprops.insert("resource", textTemplate); } - if (dia_ui.description->toPlainText() != clip->getProperty("description")) { + if(dia_ui.description->toPlainText() != clip->getProperty("description")) { newprops.insert("description", dia_ui.description->toPlainText()); } QString newtemplate = newprops.value("xmltemplate"); - if (newtemplate.isEmpty()) newtemplate = templatePath; + if(newtemplate.isEmpty()) newtemplate = templatePath; // template modified we need to update xmldata QString description = newprops.value("description"); - if (description.isEmpty()) description = clip->getProperty("description"); + if(description.isEmpty()) description = clip->getProperty("description"); else newprops.insert("templatetext", description); //newprops.insert("xmldata", m_projectList->generateTemplateXml(newtemplate, description).toString()); - if (!newprops.isEmpty()) { + if(!newprops.isEmpty()) { EditClipCommand *command = new EditClipCommand(m_projectList, clip->getId(), clip->properties(), newprops, true); m_activeDocument->commandStack()->push(command); } @@ -2821,10 +2938,10 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip) QDomDocument doc; doc.setContent(clip->getProperty("xmldata")); dia_ui->setXml(doc); - if (dia_ui->exec() == QDialog::Accepted) { + if(dia_ui->exec() == QDialog::Accepted) { QMap newprops; newprops.insert("xmldata", dia_ui->xml().toString()); - if (dia_ui->outPoint() != clip->duration().frames(m_activeDocument->fps()) - 1) { + if(dia_ui->outPoint() != clip->duration().frames(m_activeDocument->fps()) - 1) { // duration changed, we need to update duration newprops.insert("out", QString::number(dia_ui->outPoint())); } @@ -2838,15 +2955,18 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip) //m_activeDocument->editTextClip(clip->getProperty("xml"), clip->getId()); return; } + + // any type of clip but a title ClipProperties dia(clip, m_activeDocument->timecode(), m_activeDocument->fps(), this); connect(&dia, SIGNAL(addMarker(const QString &, GenTime, QString)), m_activeTimeline->projectView(), SLOT(slotAddClipMarker(const QString &, GenTime, QString))); - if (dia.exec() == QDialog::Accepted) { + if(dia.exec() == QDialog::Accepted) { QMap newprops = dia.properties(); - if (newprops.isEmpty()) return; + if(newprops.isEmpty()) return; EditClipCommand *command = new EditClipCommand(m_projectList, clip->getId(), clip->properties(), newprops, true); m_activeDocument->commandStack()->push(command); + m_activeDocument->setModified(); - if (dia.needsTimelineRefresh()) { + if(dia.needsTimelineRefresh()) { // update clip occurences in timeline m_activeTimeline->projectView()->slotUpdateClip(clip->getId(), dia.needsTimelineReload()); } @@ -2857,22 +2977,22 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip) void MainWindow::slotShowClipProperties(QList cliplist, QMap commonproperties) { ClipProperties dia(cliplist, m_activeDocument->timecode(), commonproperties, this); - if (dia.exec() == QDialog::Accepted) { + if(dia.exec() == QDialog::Accepted) { QUndoCommand *command = new QUndoCommand(); command->setText(i18n("Edit clips")); - for (int i = 0; i < cliplist.count(); i++) { + for(int i = 0; i < cliplist.count(); i++) { DocClipBase *clip = cliplist.at(i); new EditClipCommand(m_projectList, clip->getId(), clip->properties(), dia.properties(), true, command); } m_activeDocument->commandStack()->push(command); - for (int i = 0; i < cliplist.count(); i++) + for(int i = 0; i < cliplist.count(); i++) m_activeTimeline->projectView()->slotUpdateClip(cliplist.at(i)->getId(), dia.needsTimelineReload()); } } void MainWindow::customEvent(QEvent* e) { - if (e->type() == QEvent::User) + if(e->type() == QEvent::User) m_messageLabel->setMessage(static_cast (e)->message(), MltError); } void MainWindow::slotActivateEffectStackView() @@ -2882,14 +3002,14 @@ void MainWindow::slotActivateEffectStackView() void MainWindow::slotActivateTransitionView(Transition *t) { - if (t) + if(t) m_transitionConfig->raiseWindow(m_transitionConfigDock); } void MainWindow::slotSnapRewind() { - if (m_projectMonitor->isActive()) { - if (m_activeTimeline) + if(m_projectMonitor->isActive()) { + if(m_activeTimeline) m_activeTimeline->projectView()->slotSeekToPreviousSnap(); } else { m_clipMonitor->slotSeekToPreviousSnap(); @@ -2898,8 +3018,8 @@ void MainWindow::slotSnapRewind() void MainWindow::slotSnapForward() { - if (m_projectMonitor->isActive()) { - if (m_activeTimeline) + if(m_projectMonitor->isActive()) { + if(m_activeTimeline) m_activeTimeline->projectView()->slotSeekToNextSnap(); } else { m_clipMonitor->slotSeekToNextSnap(); @@ -2908,23 +3028,23 @@ void MainWindow::slotSnapForward() void MainWindow::slotClipStart() { - if (m_projectMonitor->isActive()) { - if (m_activeTimeline) + if(m_projectMonitor->isActive()) { + if(m_activeTimeline) m_activeTimeline->projectView()->clipStart(); } } void MainWindow::slotClipEnd() { - if (m_projectMonitor->isActive()) { - if (m_activeTimeline) + if(m_projectMonitor->isActive()) { + if(m_activeTimeline) m_activeTimeline->projectView()->clipEnd(); } } void MainWindow::slotZoneStart() { - if (m_projectMonitor->isActive()) + if(m_projectMonitor->isActive()) m_projectMonitor->slotZoneStart(); else m_clipMonitor->slotZoneStart(); @@ -2932,7 +3052,7 @@ void MainWindow::slotZoneStart() void MainWindow::slotZoneEnd() { - if (m_projectMonitor->isActive()) + if(m_projectMonitor->isActive()) m_projectMonitor->slotZoneEnd(); else m_clipMonitor->slotZoneEnd(); @@ -2940,22 +3060,22 @@ void MainWindow::slotZoneEnd() void MainWindow::slotChangeTool(QAction * action) { - if (action == m_buttonSelectTool) + if(action == m_buttonSelectTool) slotSetTool(SELECTTOOL); - else if (action == m_buttonRazorTool) + else if(action == m_buttonRazorTool) slotSetTool(RAZORTOOL); - else if (action == m_buttonSpacerTool) + else if(action == m_buttonSpacerTool) slotSetTool(SPACERTOOL); } void MainWindow::slotChangeEdit(QAction * action) { - if (!m_activeTimeline) + if(!m_activeTimeline) return; - if (action == m_overwriteEditTool) + if(action == m_overwriteEditTool) m_activeTimeline->projectView()->setEditMode(OVERWRITEEDIT); - else if (action == m_insertEditTool) + else if(action == m_insertEditTool) m_activeTimeline->projectView()->setEditMode(INSERTEDIT); else m_activeTimeline->projectView()->setEditMode(NORMALEDIT); @@ -2963,10 +3083,10 @@ void MainWindow::slotChangeEdit(QAction * action) void MainWindow::slotSetTool(PROJECTTOOL tool) { - if (m_activeDocument && m_activeTimeline) { + if(m_activeDocument && m_activeTimeline) { //m_activeDocument->setTool(tool); QString message; - switch (tool) { + switch(tool) { case SPACERTOOL: message = i18n("Ctrl + click to use spacer on current track only"); break; @@ -2984,25 +3104,25 @@ void MainWindow::slotSetTool(PROJECTTOOL tool) void MainWindow::slotCopy() { - if (m_activeDocument && m_activeTimeline) + if(m_activeDocument && m_activeTimeline) m_activeTimeline->projectView()->copyClip(); } void MainWindow::slotPaste() { - if (m_activeDocument && m_activeTimeline) + if(m_activeDocument && m_activeTimeline) m_activeTimeline->projectView()->pasteClip(); } void MainWindow::slotPasteEffects() { - if (m_activeDocument && m_activeTimeline) + if(m_activeDocument && m_activeTimeline) m_activeTimeline->projectView()->pasteClipEffects(); } void MainWindow::slotFind() { - if (!m_activeDocument || !m_activeTimeline) return; + if(!m_activeDocument || !m_activeTimeline) return; m_projectSearch->setEnabled(false); m_findActivated = true; m_findString.clear(); @@ -3014,7 +3134,7 @@ void MainWindow::slotFind() void MainWindow::slotFindNext() { - if (m_activeTimeline && m_activeTimeline->projectView()->findNextString(m_findString)) + if(m_activeTimeline && m_activeTimeline->projectView()->findNextString(m_findString)) statusBar()->showMessage(i18n("Found: %1", m_findString)); else statusBar()->showMessage(i18n("Reached end of project")); @@ -3023,7 +3143,7 @@ void MainWindow::slotFindNext() void MainWindow::findAhead() { - if (m_activeTimeline && m_activeTimeline->projectView()->findString(m_findString)) { + if(m_activeTimeline && m_activeTimeline->projectView()->findString(m_findString)) { m_projectSearchNext->setEnabled(true); statusBar()->showMessage(i18n("Found: %1", m_findString)); } else { @@ -3038,14 +3158,14 @@ void MainWindow::findTimeout() m_findActivated = false; m_findString.clear(); statusBar()->showMessage(i18n("Find stopped"), 3000); - if (m_activeTimeline) m_activeTimeline->projectView()->clearSearchStrings(); + if(m_activeTimeline) m_activeTimeline->projectView()->clearSearchStrings(); m_projectSearch->setEnabled(true); removeEventFilter(this); } void MainWindow::slotClipInTimeline(const QString &clipId) { - if (m_activeTimeline && m_activeDocument) { + if(m_activeTimeline && m_activeDocument) { QList matching = m_activeTimeline->projectView()->findId(clipId); QMenu *inTimelineMenu = static_cast(factory()->container("clip_in_timeline", this)); @@ -3053,22 +3173,22 @@ void MainWindow::slotClipInTimeline(const QString &clipId) QList actionList; - for (int i = 0; i < matching.count(); ++i) { + for(int i = 0; i < matching.count(); ++i) { QString track = QString::number(matching.at(i).track); QString start = m_activeDocument->timecode().getTimecode(matching.at(i).startPos); int j = 0; QAction *a = new QAction(track + ": " + start, this); a->setData(QStringList() << track << start); connect(a, SIGNAL(triggered()), this, SLOT(slotSelectClipInTimeline())); - while (j < actionList.count()) { - if (actionList.at(j)->text() > a->text()) break; + while(j < actionList.count()) { + if(actionList.at(j)->text() > a->text()) break; j++; } actionList.insert(j, a); } inTimelineMenu->addActions(actionList); - if (matching.empty()) + if(matching.empty()) inTimelineMenu->setEnabled(false); else inTimelineMenu->setEnabled(true); @@ -3077,14 +3197,14 @@ void MainWindow::slotClipInTimeline(const QString &clipId) void MainWindow::slotClipInProjectTree() { - if (m_activeTimeline) { + if(m_activeTimeline) { const QStringList &clipIds = m_activeTimeline->projectView()->selectedClips(); - if (clipIds.isEmpty()) + if(clipIds.isEmpty()) return; m_projectListDock->raise(); - for (int i = 0; i < clipIds.count(); i++) + for(int i = 0; i < clipIds.count(); i++) m_projectList->selectItemById(clipIds.at(i)); - if (m_projectMonitor->isActive()) + if(m_projectMonitor->isActive()) slotSwitchMonitors(); } } @@ -3103,7 +3223,7 @@ void MainWindow::slotClipInProjectTree() void MainWindow::slotSelectClipInTimeline() { - if (m_activeTimeline) { + if(m_activeTimeline) { QAction *action = qobject_cast(sender()); QStringList data = action->data().toStringList(); m_activeTimeline->projectView()->selectFound(data.at(0), data.at(1)); @@ -3112,11 +3232,11 @@ void MainWindow::slotSelectClipInTimeline() void MainWindow::keyPressEvent(QKeyEvent *ke) { - if (m_findActivated) { - if (ke->key() == Qt::Key_Backspace) { + if(m_findActivated) { + if(ke->key() == Qt::Key_Backspace) { m_findString = m_findString.left(m_findString.length() - 1); - if (!m_findString.isEmpty()) + if(!m_findString.isEmpty()) findAhead(); else findTimeout(); @@ -3124,11 +3244,11 @@ void MainWindow::keyPressEvent(QKeyEvent *ke) m_findTimer.start(4000); ke->accept(); return; - } else if (ke->key() == Qt::Key_Escape) { + } else if(ke->key() == Qt::Key_Escape) { findTimeout(); ke->accept(); return; - } else if (ke->key() == Qt::Key_Space || !ke->text().trimmed().isEmpty()) { + } else if(ke->key() == Qt::Key_Space || !ke->text().trimmed().isEmpty()) { m_findString += ke->text(); findAhead(); @@ -3146,16 +3266,16 @@ void MainWindow::keyPressEvent(QKeyEvent *ke) /** Gets called when the window gets hidden */ void MainWindow::hideEvent(QHideEvent */*event*/) { - if (isMinimized() && m_monitorManager) + if(isMinimized() && m_monitorManager) m_monitorManager->stopActiveMonitor(); } bool MainWindow::eventFilter(QObject *obj, QEvent *event) { - if (m_findActivated) { - if (event->type() == QEvent::ShortcutOverride) { + if(m_findActivated) { + if(event->type() == QEvent::ShortcutOverride) { QKeyEvent* ke = (QKeyEvent*) event; - if (ke->text().trimmed().isEmpty()) return false; + if(ke->text().trimmed().isEmpty()) return false; ke->accept(); return true; } else { @@ -3190,14 +3310,14 @@ void MainWindow::slotSaveZone(Render *render, QPoint zone) vbox->addWidget(url); vbox->addWidget(label2); vbox->addWidget(edit); - if (dialog->exec() == QDialog::Accepted) + if(dialog->exec() == QDialog::Accepted) render->saveZone(url->url(), edit->text(), zone); } void MainWindow::slotSetInPoint() { - if (m_clipMonitor->isActive()) + if(m_clipMonitor->isActive()) m_clipMonitor->slotSetZoneStart(); else m_projectMonitor->slotSetZoneStart(); @@ -3206,7 +3326,7 @@ void MainWindow::slotSetInPoint() void MainWindow::slotSetOutPoint() { - if (m_clipMonitor->isActive()) + if(m_clipMonitor->isActive()) m_clipMonitor->slotSetZoneEnd(); else m_projectMonitor->slotSetZoneEnd(); @@ -3215,13 +3335,13 @@ void MainWindow::slotSetOutPoint() void MainWindow::slotResizeItemStart() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->setInPoint(); } void MainWindow::slotResizeItemEnd() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->setOutPoint(); } @@ -3232,16 +3352,16 @@ int MainWindow::getNewStuff(const QString &configFile) KNS3::DownloadDialog dialog(configFile); dialog.exec(); entries = dialog.changedEntries(); - foreach(const KNS3::Entry &entry, entries) { - if (entry.status() == KNS3::Entry::Installed) + foreach(const KNS3::Entry & entry, entries) { + if(entry.status() == KNS3::Entry::Installed) kDebug() << "// Installed files: " << entry.installedFiles(); } #else KNS::Engine engine(0); - if (engine.init(configFile)) + if(engine.init(configFile)) entries = engine.downloadDialogModal(this); - foreach(KNS::Entry *entry, entries) { - if (entry->status() == KNS::Entry::Installed) + foreach(KNS::Entry * entry, entries) { + if(entry->status() == KNS::Entry::Installed) kDebug() << "// Installed files: " << entry->installedFiles(); } #endif /* KDE_IS_VERSION(4,3,80) */ @@ -3250,13 +3370,13 @@ int MainWindow::getNewStuff(const QString &configFile) void MainWindow::slotGetNewTitleStuff() { - if (getNewStuff("kdenlive_titles.knsrc") > 0) + if(getNewStuff("kdenlive_titles.knsrc") > 0) TitleWidget::refreshTitleTemplates(); } void MainWindow::slotGetNewLumaStuff() { - if (getNewStuff("kdenlive_wipes.knsrc") > 0) { + if(getNewStuff("kdenlive_wipes.knsrc") > 0) { initEffects::refreshLumas(); m_activeTimeline->projectView()->reloadTransitionLumas(); } @@ -3264,38 +3384,38 @@ void MainWindow::slotGetNewLumaStuff() void MainWindow::slotGetNewRenderStuff() { - if (getNewStuff("kdenlive_renderprofiles.knsrc") > 0) - if (m_renderWidget) + if(getNewStuff("kdenlive_renderprofiles.knsrc") > 0) + if(m_renderWidget) m_renderWidget->reloadProfiles(); } void MainWindow::slotGetNewMltProfileStuff() { - if (getNewStuff("kdenlive_projectprofiles.knsrc") > 0) { + if(getNewStuff("kdenlive_projectprofiles.knsrc") > 0) { // update the list of profiles in settings dialog KdenliveSettingsDialog* d = static_cast (KConfigDialog::exists("settings")); - if (d) + if(d) d->checkProfile(); } } void MainWindow::slotAutoTransition() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->autoTransition(); } void MainWindow::slotSplitAudio() { - if (m_activeTimeline) + if(m_activeTimeline) m_activeTimeline->projectView()->splitAudio(); } void MainWindow::slotUpdateClipType(QAction *action) { - if (m_activeTimeline) { - if (action->data().toString() == "clip_audio_only") m_activeTimeline->projectView()->setAudioOnly(); - else if (action->data().toString() == "clip_video_only") m_activeTimeline->projectView()->setVideoOnly(); + if(m_activeTimeline) { + if(action->data().toString() == "clip_audio_only") m_activeTimeline->projectView()->setAudioOnly(); + else if(action->data().toString() == "clip_video_only") m_activeTimeline->projectView()->setVideoOnly(); else m_activeTimeline->projectView()->setAudioAndVideo(); } } @@ -3312,7 +3432,7 @@ void MainWindow::slotDvdWizard(const QString &url, const QString &profile) void MainWindow::slotShowTimeline(bool show) { - if (show == false) { + if(show == false) { m_timelineState = saveState(); centralWidget()->setHidden(true); } else { @@ -3328,7 +3448,7 @@ void MainWindow::slotMaximizeCurrent(bool /*show*/) { m_timelineState = saveState(); QWidget *par = focusWidget()->parentWidget(); - while (par->parentWidget() && par->parentWidget() != this) + while(par->parentWidget() && par->parentWidget() != this) par = par->parentWidget(); kDebug() << "CURRENT WIDGET: " << par->objectName(); } @@ -3348,12 +3468,12 @@ void MainWindow::loadTranscoders() // read the entries QMap< QString, QString > profiles = transConfig.entryMap(); QMapIterator i(profiles); - while (i.hasNext()) { + while(i.hasNext()) { i.next(); QStringList data = i.value().split(";", QString::SkipEmptyParts); QAction *a = transMenu->addAction(i.key()); a->setData(data); - if (data.count() > 1) + if(data.count() > 1) a->setToolTip(data.at(1)); connect(a, SIGNAL(triggered()), this, SLOT(slotTranscode())); } @@ -3364,16 +3484,16 @@ void MainWindow::slotTranscode(KUrl::List urls) QString params; QString desc; QString condition; - if (urls.isEmpty()) { + if(urls.isEmpty()) { QAction *action = qobject_cast(sender()); QStringList data = action->data().toStringList(); params = data.at(0); - if (data.count() > 1) desc = data.at(1); - if (data.count() > 2) condition = data.at(2); + if(data.count() > 1) desc = data.at(1); + if(data.count() > 2) condition = data.at(2); urls << m_projectList->getConditionalUrls(condition); urls.removeAll(KUrl()); } - if (urls.isEmpty()) { + if(urls.isEmpty()) { m_messageLabel->setMessage(i18n("No clip to transcode"), ErrorMessage); return; } @@ -3386,15 +3506,15 @@ void MainWindow::slotTranscode(KUrl::List urls) void MainWindow::slotTranscodeClip() { KUrl::List urls = KFileDialog::getOpenUrls(KUrl("kfiledialog:///projectfolder")); - if (urls.isEmpty()) return; + if(urls.isEmpty()) return; slotTranscode(urls); } void MainWindow::slotSetDocumentRenderProfile(QMap props) { - if (m_activeDocument == NULL) return; + if(m_activeDocument == NULL) return; QMapIterator i(props); - while (i.hasNext()) { + while(i.hasNext()) { i.next(); m_activeDocument->setDocumentProperty(i.key(), i.value()); } @@ -3404,19 +3524,19 @@ void MainWindow::slotSetDocumentRenderProfile(QMap props) void MainWindow::slotPrepareRendering(bool scriptExport, bool zoneOnly, const QString &chapterFile) { - if (m_activeDocument == NULL || m_renderWidget == NULL) return; + if(m_activeDocument == NULL || m_renderWidget == NULL) return; QString scriptPath; QString playlistPath; - if (scriptExport) { + if(scriptExport) { bool ok; QString scriptsFolder = m_activeDocument->projectFolder().path() + "/scripts/"; QString path = m_renderWidget->getFreeScriptName(); scriptPath = QInputDialog::getText(this, i18n("Create Render Script"), i18n("Script name (will be saved in: %1)", scriptsFolder), QLineEdit::Normal, KUrl(path).fileName(), &ok); - if (!ok || scriptPath.isEmpty()) return; + if(!ok || scriptPath.isEmpty()) return; scriptPath.prepend(scriptsFolder); QFile f(scriptPath); - if (f.exists()) { - if (KMessageBox::warningYesNo(this, i18n("Script file already exists. Do you want to overwrite it?")) != KMessageBox::Yes) + if(f.exists()) { + if(KMessageBox::warningYesNo(this, i18n("Script file already exists. Do you want to overwrite it?")) != KMessageBox::Yes) return; } playlistPath = scriptPath + ".mlt"; @@ -3430,10 +3550,10 @@ void MainWindow::slotPrepareRendering(bool scriptExport, bool zoneOnly, const QS m_projectMonitor->saveSceneList(playlistPath); } - if (!chapterFile.isEmpty()) { + if(!chapterFile.isEmpty()) { int in = 0; int out; - if (!zoneOnly) out = (int) GenTime(m_activeDocument->projectDuration()).frames(m_activeDocument->fps()); + if(!zoneOnly) out = (int) GenTime(m_activeDocument->projectDuration()).frames(m_activeDocument->fps()); else { in = m_activeTimeline->inPoint(); out = m_activeTimeline->outPoint(); @@ -3445,13 +3565,13 @@ void MainWindow::slotPrepareRendering(bool scriptExport, bool zoneOnly, const QS QDomElement guidesxml = m_activeDocument->guidesXml(); QDomNodeList nodes = guidesxml.elementsByTagName("guide"); - for (int i = 0; i < nodes.count(); i++) { + for(int i = 0; i < nodes.count(); i++) { QDomElement e = nodes.item(i).toElement(); - if (!e.isNull()) { + if(!e.isNull()) { QString comment = e.attribute("comment"); int time = (int) GenTime(e.attribute("time").toDouble()).frames(m_activeDocument->fps()); - if (time >= in && time < out) { - if (zoneOnly) time = time - in; + if(time >= in && time < out) { + if(zoneOnly) time = time - in; QDomElement chapter = doc.createElement("chapter"); chapters.appendChild(chapter); chapter.setAttribute("title", comment); @@ -3459,8 +3579,8 @@ void MainWindow::slotPrepareRendering(bool scriptExport, bool zoneOnly, const QS } } } - if (chapters.childNodes().count() > 0) { - if (m_activeTimeline->projectView()->hasGuide(out, 0) == -1) { + if(chapters.childNodes().count() > 0) { + if(m_activeTimeline->projectView()->hasGuide(out, 0) == -1) { // Always insert a guide in pos 0 QDomElement chapter = doc.createElement("chapter"); chapters.insertBefore(chapter, QDomNode()); @@ -3469,11 +3589,11 @@ void MainWindow::slotPrepareRendering(bool scriptExport, bool zoneOnly, const QS } // save chapters file QFile file(chapterFile); - if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) { kWarning() << "////// ERROR writing DVD CHAPTER file: " << chapterFile; } else { file.write(doc.toString().toUtf8()); - if (file.error() != QFile::NoError) { + if(file.error() != QFile::NoError) { kWarning() << "////// ERROR writing DVD CHAPTER file: " << chapterFile; } file.close(); @@ -3481,7 +3601,7 @@ void MainWindow::slotPrepareRendering(bool scriptExport, bool zoneOnly, const QS } } bool exportAudio; - if (m_renderWidget->automaticAudioExport()) { + if(m_renderWidget->automaticAudioExport()) { exportAudio = m_activeTimeline->checkProjectAudio(); } else exportAudio = m_renderWidget->selectedAudioExport(); m_renderWidget->slotExport(scriptExport, m_activeTimeline->inPoint(), m_activeTimeline->outPoint(), playlistPath, scriptPath, exportAudio); @@ -3506,22 +3626,22 @@ void MainWindow::slotRemoveFocus() void MainWindow::slotRevert() { - if (KMessageBox::warningContinueCancel(this, i18n("This will delete all changes made since you last saved your project. Are you sure you want to continue?"), i18n("Revert to last saved version")) == KMessageBox::Cancel) return; + if(KMessageBox::warningContinueCancel(this, i18n("This will delete all changes made since you last saved your project. Are you sure you want to continue?"), i18n("Revert to last saved version")) == KMessageBox::Cancel) return; KUrl url = m_activeDocument->url(); - if (closeCurrentDocument(false)) + if(closeCurrentDocument(false)) doOpenFile(url, NULL); } void MainWindow::slotShutdown() { - if (m_activeDocument) m_activeDocument->setModified(false); + if(m_activeDocument) m_activeDocument->setModified(false); // Call shutdown QDBusConnectionInterface* interface = QDBusConnection::sessionBus().interface(); - if (interface && interface->isServiceRegistered("org.kde.ksmserver")) { + if(interface && interface->isServiceRegistered("org.kde.ksmserver")) { QDBusInterface smserver("org.kde.ksmserver", "/KSMServer", "org.kde.KSMServerInterface"); smserver.call("logout", 1, 2, 2); - } else if (interface && interface->isServiceRegistered("org.gnome.SessionManager")) { + } else if(interface && interface->isServiceRegistered("org.gnome.SessionManager")) { QDBusInterface smserver("org.gnome.SessionManager", "/org/gnome/SessionManager", "org.gnome.SessionManager"); smserver.call("Shutdown"); } @@ -3529,7 +3649,7 @@ void MainWindow::slotShutdown() void MainWindow::slotUpdateTrackInfo() { - if (m_activeDocument) + if(m_activeDocument) m_transitionConfig->updateProjectFormat(m_activeDocument->mltProfile(), m_activeDocument->timecode(), m_activeDocument->tracksList()); } @@ -3537,12 +3657,12 @@ void MainWindow::slotChangePalette(QAction *action, const QString &themename) { // Load the theme file QString theme; - if (action == NULL) theme = themename; + if(action == NULL) theme = themename; else theme = action->data().toString(); KdenliveSettings::setColortheme(theme); // Make palette for all widgets. QPalette plt; - if (theme.isEmpty()) + if(theme.isEmpty()) plt = QApplication::desktop()->palette(); else { KSharedConfigPtr config = KSharedConfig::openConfig(theme); @@ -3552,17 +3672,18 @@ void MainWindow::slotChangePalette(QAction *action, const QString &themename) kapp->setPalette(plt); const QObjectList children = statusBar()->children(); - foreach(QObject *child, children) { - if (child->isWidgetType()) + foreach(QObject * child, children) { + if(child->isWidgetType()) ((QWidget*)child)->setPalette(plt); const QObjectList subchildren = child->children(); - foreach(QObject *subchild, subchildren) { - if (subchild->isWidgetType()) + foreach(QObject * subchild, subchildren) { + if(subchild->isWidgetType()) ((QWidget*)subchild)->setPalette(plt); } } - if (m_activeTimeline) + if(m_activeTimeline) { m_activeTimeline->projectView()->updatePalette(); + } } @@ -3609,20 +3730,20 @@ QPixmap MainWindow::createSchemePreviewIcon(const KSharedConfigPtr &config) void MainWindow::slotSwitchMonitors() { m_monitorManager->slotSwitchMonitors(!m_clipMonitor->isActive()); - if (m_projectMonitor->isActive()) m_activeTimeline->projectView()->setFocus(); + if(m_projectMonitor->isActive()) m_activeTimeline->projectView()->setFocus(); else m_projectList->focusTree(); } void MainWindow::slotInsertZoneToTree() { - if (!m_clipMonitor->isActive() || m_clipMonitor->activeClip() == NULL) return; + if(!m_clipMonitor->isActive() || m_clipMonitor->activeClip() == NULL) return; QStringList info = m_clipMonitor->getZoneInfo(); m_projectList->slotAddClipCut(info.at(0), info.at(1).toInt(), info.at(2).toInt()); } void MainWindow::slotInsertZoneToTimeline() { - if (m_activeTimeline == NULL || m_clipMonitor->activeClip() == NULL) return; + if(m_activeTimeline == NULL || m_clipMonitor->activeClip() == NULL) return; QStringList info = m_clipMonitor->getZoneInfo(); m_activeTimeline->projectView()->insertClipCut(m_clipMonitor->activeClip(), info.at(1).toInt(), info.at(2).toInt()); } @@ -3630,21 +3751,21 @@ void MainWindow::slotInsertZoneToTimeline() void MainWindow::slotDeleteProjectClips(QStringList ids, QMap folderids) { - if (m_activeDocument && m_activeTimeline) { - if (!ids.isEmpty()) { - for (int i = 0; i < ids.size(); ++i) { + if(m_activeDocument && m_activeTimeline) { + if(!ids.isEmpty()) { + for(int i = 0; i < ids.size(); ++i) { m_activeTimeline->slotDeleteClip(ids.at(i)); } m_activeDocument->clipManager()->slotDeleteClips(ids); } - if (!folderids.isEmpty()) m_projectList->deleteProjectFolder(folderids); + if(!folderids.isEmpty()) m_projectList->deleteProjectFolder(folderids); m_activeDocument->setModified(true); } } void MainWindow::slotShowTitleBars(bool show) { - if (show) { + if(show) { m_effectStackDock->setTitleBarWidget(0); m_clipMonitorDock->setTitleBarWidget(0); m_projectMonitorDock->setTitleBarWidget(0); @@ -3660,42 +3781,42 @@ void MainWindow::slotShowTitleBars(bool show) m_RGBParadeDock->setTitleBarWidget(0); m_histogramDock->setTitleBarWidget(0); } else { - if (!m_effectStackDock->isFloating()) { + if(!m_effectStackDock->isFloating()) { m_effectStackDock->setTitleBarWidget(new QWidget); } - if (!m_clipMonitorDock->isFloating()) { + if(!m_clipMonitorDock->isFloating()) { m_clipMonitorDock->setTitleBarWidget(new QWidget); } - if (!m_projectMonitorDock->isFloating()) { + if(!m_projectMonitorDock->isFloating()) { m_projectMonitorDock->setTitleBarWidget(new QWidget); } #ifndef Q_WS_MAC - if (!m_recMonitorDock->isFloating()) { + if(!m_recMonitorDock->isFloating()) { m_recMonitorDock->setTitleBarWidget(new QWidget); } #endif - if (!m_effectListDock->isFloating()) { + if(!m_effectListDock->isFloating()) { m_effectListDock->setTitleBarWidget(new QWidget); } - if (!m_transitionConfigDock->isFloating()) { + if(!m_transitionConfigDock->isFloating()) { m_transitionConfigDock->setTitleBarWidget(new QWidget); } - if (!m_projectListDock->isFloating()) { + if(!m_projectListDock->isFloating()) { m_projectListDock->setTitleBarWidget(new QWidget); } - if (!m_undoViewDock->isFloating()) { + if(!m_undoViewDock->isFloating()) { m_undoViewDock->setTitleBarWidget(new QWidget); } - if (!m_vectorscopeDock->isFloating()) { + if(!m_vectorscopeDock->isFloating()) { m_vectorscopeDock->setTitleBarWidget(new QWidget); } - if (!m_waveformDock->isFloating()) { + if(!m_waveformDock->isFloating()) { m_waveformDock->setTitleBarWidget(new QWidget); } - if (!m_RGBParadeDock->isFloating()) { + if(!m_RGBParadeDock->isFloating()) { m_RGBParadeDock->setTitleBarWidget(new QWidget(this)); } - if (!m_histogramDock->isFloating()) { + if(!m_histogramDock->isFloating()) { m_histogramDock->setTitleBarWidget(new QWidget(this)); } } @@ -3711,24 +3832,24 @@ QString MainWindow::getMimeType() { QString mimetype = "application/x-kdenlive"; KMimeType::Ptr mime = KMimeType::mimeType(mimetype); - if (!mime) mimetype = "*.kdenlive"; + if(!mime) mimetype = "*.kdenlive"; return mimetype; } void MainWindow::slotMonitorRequestRenderFrame(bool request) { - if (request) { + if(request) { m_projectMonitor->render->sendFrameForAnalysis = true; return; } else { - for (int i = 0; i < m_scopesList.count(); i++) { - if (m_scopesList.at(i)->isVisible() && tabifiedDockWidgets(m_scopesList.at(i)).isEmpty() && static_cast(m_scopesList.at(i)->widget())->autoRefreshEnabled()) { + for(int i = 0; i < m_scopesList.count(); i++) { + if(m_scopesList.at(i)->isVisible() && tabifiedDockWidgets(m_scopesList.at(i)).isEmpty() && static_cast(m_scopesList.at(i)->widget())->autoRefreshEnabled()) { request = true; break; } } } - if (!request) { + if(!request) { m_projectMonitor->render->sendFrameForAnalysis = false; } } @@ -3743,15 +3864,15 @@ void MainWindow::slotDoUpdateScopeFrameRequest() { // Check scopes bool request = false; - for (int i = 0; i < m_scopesList.count(); i++) { - if (!m_scopesList.at(i)->widget()->visibleRegion().isEmpty() && static_cast(m_scopesList.at(i)->widget())->autoRefreshEnabled()) { + for(int i = 0; i < m_scopesList.count(); i++) { + if(!m_scopesList.at(i)->widget()->visibleRegion().isEmpty() && static_cast(m_scopesList.at(i)->widget())->autoRefreshEnabled()) { kDebug() << "SCOPE VISIBLE: " << static_cast(m_scopesList.at(i)->widget())->widgetName(); request = true; break; } } - if (!request) { - if (!m_projectMonitor->effectSceneDisplayed()) + if(!request) { + if(!m_projectMonitor->effectSceneDisplayed()) m_projectMonitor->render->sendFrameForAnalysis = false; m_clipMonitor->render->sendFrameForAnalysis = false; } else { @@ -3763,13 +3884,13 @@ void MainWindow::slotDoUpdateScopeFrameRequest() void MainWindow::slotUpdateColorScopes() { bool request = false; - for (int i = 0; i < m_scopesList.count(); i++) { + for(int i = 0; i < m_scopesList.count(); i++) { // Check if we need the renderer to send a new frame for update - if (!m_scopesList.at(i)->widget()->visibleRegion().isEmpty() && !(static_cast(m_scopesList.at(i)->widget())->autoRefreshEnabled())) request = true; + if(!m_scopesList.at(i)->widget()->visibleRegion().isEmpty() && !(static_cast(m_scopesList.at(i)->widget())->autoRefreshEnabled())) request = true; static_cast(m_scopesList.at(i)->widget())->slotActiveMonitorChanged(m_clipMonitor->isActive()); } - if (request) { - if (m_clipMonitor->isActive()) m_clipMonitor->render->sendFrameUpdate(); + if(request) { + if(m_clipMonitor->isActive()) m_clipMonitor->render->sendFrameUpdate(); else m_projectMonitor->render->sendFrameUpdate(); } }