+void MainWindow::slotMonitorRequestRenderFrame(bool request)
+{
+ if (request) {
+ m_projectMonitor->render->sendFrameForAnalysis = true;
+ return;
+ } else {
+ for (int i = 0; i < m_gfxScopesList.count(); i++) {
+ if (m_gfxScopesList.at(i)->isVisible() && tabifiedDockWidgets(m_gfxScopesList.at(i)).isEmpty() && static_cast<AbstractGfxScopeWidget *>(m_gfxScopesList.at(i)->widget())->autoRefreshEnabled()) {
+ request = true;
+ break;
+ }
+ }
+ }
+#ifdef DEBUG_MAINW
+ qDebug() << "Any scope accepting new frames? " << request;
+#endif
+ if (!request) {
+ m_projectMonitor->render->sendFrameForAnalysis = false;
+ }
+}
+
+
+void MainWindow::slotOpenStopmotion()
+{
+ if (m_stopmotion == NULL) {
+ m_stopmotion = new StopmotionWidget(m_monitorManager, m_activeDocument->projectFolder(), m_stopmotion_actions->actions(), this);
+ connect(m_stopmotion, SIGNAL(addOrUpdateSequence(const QString &)), m_projectList, SLOT(slotAddOrUpdateSequence(const QString)));
+ //for (int i = 0; i < m_gfxScopesList.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<AbstractScopeWidget *>(m_scopesList.at(i)->widget())->autoRefreshEnabled())) request = true;*/
+ //connect(m_stopmotion, SIGNAL(gotFrame(QImage)), static_cast<AbstractGfxScopeWidget *>(m_gfxScopesList.at(i)->widget()), SLOT(slotRenderZoneUpdated(QImage)));
+ //static_cast<AbstractScopeWidget *>(m_scopesList.at(i)->widget())->slotMonitorCapture();
+ //}
+ }
+ m_stopmotion->show();
+}
+
+void MainWindow::slotDeleteClip(const QString &id)
+{
+ QList <ClipProperties *> list = findChildren<ClipProperties *>();
+ for (int i = 0; i < list.size(); ++i) {
+ list.at(i)->disableClipId(id);
+ }
+ m_projectList->slotDeleteClip(id);
+}
+
+void MainWindow::slotUpdateProxySettings()
+{
+ if (m_renderWidget) m_renderWidget->updateProxyConfig(m_projectList->useProxy());
+ if (KdenliveSettings::enableproxy())
+ KStandardDirs::makeDir(m_activeDocument->projectFolder().path(KUrl::AddTrailingSlash) + "proxy/");
+ m_projectList->updateProxyConfig();
+}
+
+void MainWindow::slotInsertNotesTimecode()
+{
+ int frames = m_projectMonitor->render->seekPosition().frames(m_activeDocument->fps());
+ QString position = m_activeDocument->timecode().getTimecodeFromFrames(frames);
+ m_notesWidget->insertHtml("<a href=\"" + QString::number(frames) + "\">" + position + "</a> ");
+}
+
+void MainWindow::slotArchiveProject()
+{
+ QList <DocClipBase*> list = m_projectList->documentClipList();
+ QDomDocument doc = m_activeDocument->xmlSceneList(m_projectMonitor->sceneList(), m_projectList->expandedFolders());
+ ArchiveWidget *d = new ArchiveWidget(m_activeDocument->url().fileName(), doc, list, m_activeTimeline->projectView()->extractTransitionsLumas(), this);
+ d->exec();
+}
+
+
+void MainWindow::slotOpenBackupDialog(const KUrl url)
+{
+ KUrl projectFile;
+ KUrl projectFolder;
+ QString projectId;
+ kDebug()<<"// BACKUP URL: "<<url.path();
+ if (!url.isEmpty()) {
+ // we could not open the project file, guess where the backups are
+ projectFolder = KUrl(KdenliveSettings::defaultprojectfolder());
+ projectFile = url;
+ }
+ else {
+ projectFolder = m_activeDocument->projectFolder();
+ projectFile = m_activeDocument->url();
+ projectId = m_activeDocument->getDocumentProperty("documentid");
+ }
+
+ QPointer<BackupWidget> dia = new BackupWidget(projectFile, projectFolder, projectId, this);
+ if (dia->exec() == QDialog::Accepted) {
+ QString requestedBackup = dia->selectedFile();
+ m_activeDocument->backupLastSavedVersion(projectFile.path());
+ closeCurrentDocument(false);
+ doOpenFile(KUrl(requestedBackup), NULL);
+ m_activeDocument->setUrl(projectFile);
+ m_activeDocument->setModified(true);
+ setCaption(m_activeDocument->description());
+ }
+ delete dia;
+}
+
+void MainWindow::slotElapsedTime()
+{
+ kDebug()<<"-----------------------------------------\n"<<"Time elapsed: "<<m_timer.elapsed()<<"\n-------------------------";
+}
+
+
+void MainWindow::slotDownloadResources()
+{
+ QString currentFolder;
+ if (m_activeDocument) currentFolder = m_activeDocument->projectFolder().path();
+ else currentFolder = KdenliveSettings::defaultprojectfolder();
+ ResourceWidget *d = new ResourceWidget(currentFolder);
+ connect(d, SIGNAL(addClip(KUrl,stringMap)), this, SLOT(slotAddProjectClip(KUrl,stringMap)));
+ d->show();
+}
+
+void MainWindow::slotChangePalette()
+{
+ QPalette plt = QApplication::palette();
+ if (m_effectStack) m_effectStack->updatePalette();
+ if (m_projectList) m_projectList->updatePalette();
+ if (m_effectList) m_effectList->updatePalette();
+
+ if (m_clipMonitor) m_clipMonitor->setPalette(plt);
+ if (m_projectMonitor) m_projectMonitor->setPalette(plt);
+
+ setStatusBarStyleSheet(plt);
+ if (m_activeTimeline) {
+ m_activeTimeline->updatePalette();
+ }
+}
+
+void MainWindow::slotSaveTimelineClip()
+{
+ if (m_activeTimeline && m_projectMonitor->render) {
+ ClipItem *clip = m_activeTimeline->projectView()->getActiveClipUnderCursor(true);
+ if (!clip) {
+ m_messageLabel->setMessage(i18n("Select a clip to save"), InformationMessage);
+ return;
+ }
+ KUrl url = KFileDialog::getSaveUrl(m_activeDocument->projectFolder(), "video/mlt-playlist");
+ if (!url.isEmpty()) m_projectMonitor->render->saveClip(m_activeDocument->tracksCount() - clip->track(), clip->startPos(), url);
+ }
+}
+
+void MainWindow::slotProcessImportKeyframes(GRAPHICSRECTITEM type, const QString& data, int maximum)
+{
+ if (type == AVWIDGET) {
+ // This data should be sent to the effect stack
+ }
+ else if (type == TRANSITIONWIDGET) {
+ // This data should be sent to the transition stack
+ m_transitionConfig->setKeyframes(data, maximum);
+ }
+ else {
+ // Error
+ }
+}
+
+void MainWindow::slotAlignPlayheadToMousePos()
+{
+ m_activeTimeline->projectView()->slotAlignPlayheadToMousePos();
+}
+