+
+void MainWindow::slotDeleteProjectClips(QStringList ids, QMap<QString, QString> folderids)
+{
+ 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);
+ m_activeDocument->setModified(true);
+ }
+}
+
+void MainWindow::slotShowTitleBars(bool show)
+{
+ if (show) {
+ m_effectStackDock->setTitleBarWidget(0);
+ m_clipMonitorDock->setTitleBarWidget(0);
+ m_projectMonitorDock->setTitleBarWidget(0);
+#ifndef Q_WS_MAC
+ m_recMonitorDock->setTitleBarWidget(0);
+#endif
+ m_effectListDock->setTitleBarWidget(0);
+ m_transitionConfigDock->setTitleBarWidget(0);
+ m_projectListDock->setTitleBarWidget(0);
+ m_undoViewDock->setTitleBarWidget(0);
+ m_vectorscopeDock->setTitleBarWidget(0);
+ m_waveformDock->setTitleBarWidget(0);
+ m_RGBParadeDock->setTitleBarWidget(0);
+ m_histogramDock->setTitleBarWidget(0);
+ } else {
+ if (!m_effectStackDock->isFloating()) {
+ m_effectStackDock->setTitleBarWidget(new QWidget);
+ }
+ if (!m_clipMonitorDock->isFloating()) {
+ m_clipMonitorDock->setTitleBarWidget(new QWidget);
+ }
+ if (!m_projectMonitorDock->isFloating()) {
+ m_projectMonitorDock->setTitleBarWidget(new QWidget);
+ }
+#ifndef Q_WS_MAC
+ if (!m_recMonitorDock->isFloating()) {
+ m_recMonitorDock->setTitleBarWidget(new QWidget);
+ }
+#endif
+ if (!m_effectListDock->isFloating()) {
+ m_effectListDock->setTitleBarWidget(new QWidget);
+ }
+ if (!m_transitionConfigDock->isFloating()) {
+ m_transitionConfigDock->setTitleBarWidget(new QWidget);
+ }
+ if (!m_projectListDock->isFloating()) {
+ m_projectListDock->setTitleBarWidget(new QWidget);
+ }
+ if (!m_undoViewDock->isFloating()) {
+ m_undoViewDock->setTitleBarWidget(new QWidget);
+ }
+ if (!m_vectorscopeDock->isFloating()) {
+ m_vectorscopeDock->setTitleBarWidget(new QWidget);
+ }
+ if (!m_waveformDock->isFloating()) {
+ m_waveformDock->setTitleBarWidget(new QWidget);
+ }
+ if (!m_RGBParadeDock->isFloating()) {
+ m_RGBParadeDock->setTitleBarWidget(new QWidget(this));
+ }
+ if (!m_histogramDock->isFloating()) {
+ m_histogramDock->setTitleBarWidget(new QWidget(this));
+ }
+ }
+ KdenliveSettings::setShowtitlebars(show);
+}
+
+void MainWindow::slotSwitchTitles()
+{
+ slotShowTitleBars(!KdenliveSettings::showtitlebars());
+}
+
+QString MainWindow::getMimeType()
+{
+ QString mimetype = "application/x-kdenlive";
+ KMimeType::Ptr mime = KMimeType::mimeType(mimetype);
+ if (!mime) mimetype = "*.kdenlive";
+ return mimetype;
+}
+
+void MainWindow::slotMonitorRequestRenderFrame(bool 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<AbstractScopeWidget *>(m_scopesList.at(i)->widget())->autoRefreshEnabled()) {
+ request = true;
+ break;
+ }
+ }
+ }
+ if (!request) {
+ m_projectMonitor->render->sendFrameForAnalysis = false;
+ }
+}
+
+void MainWindow::slotUpdateScopeFrameRequest()
+{
+ // We need a delay to make sure widgets are hidden after a close event for example
+ QTimer::singleShot(500, this, SLOT(slotDoUpdateScopeFrameRequest()));
+}
+
+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<AbstractScopeWidget *>(m_scopesList.at(i)->widget())->autoRefreshEnabled()) {
+ kDebug() << "SCOPE VISIBLE: " << static_cast<AbstractScopeWidget *>(m_scopesList.at(i)->widget())->widgetName();
+ request = true;
+ break;
+ }
+ }
+ if (!request) {
+ if (!m_projectMonitor->effectSceneDisplayed())
+ m_projectMonitor->render->sendFrameForAnalysis = false;
+ m_clipMonitor->render->sendFrameForAnalysis = false;
+ } else {
+ m_projectMonitor->render->sendFrameForAnalysis = true;
+ m_clipMonitor->render->sendFrameForAnalysis = true;
+ }
+}
+
+void MainWindow::slotUpdateColorScopes()
+{
+ bool request = false;
+ 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<AbstractScopeWidget *>(m_scopesList.at(i)->widget())->autoRefreshEnabled())) request = true;
+ static_cast<AbstractScopeWidget *>(m_scopesList.at(i)->widget())->slotActiveMonitorChanged(m_clipMonitor->isActive());
+ }
+ if (request) {
+ if (m_clipMonitor->isActive()) m_clipMonitor->render->sendFrameUpdate();
+ else m_projectMonitor->render->sendFrameUpdate();
+ }
+}
+