if (id == Kdenlive::projectMonitor) {
m_effectWidget = new MonitorEditWidget(render, videoBox);
+ connect(m_effectWidget, SIGNAL(showEdit(bool, bool)), this, SLOT(slotShowEffectScene(bool, bool)));
m_toolbar->addAction(m_effectWidget->getVisibilityAction());
videoBox->layout()->addWidget(m_effectWidget);
m_effectWidget->hide();
frame = render->extractFrame(render->seekFramePosition(), m_currentClip->fileURL().path());
}
else frame = render->extractFrame(render->seekFramePosition());
- KFileDialog *fs = new KFileDialog(KUrl(), "image/png", this);
+ QPointer<KFileDialog> fs = new KFileDialog(KUrl(), "image/png", this);
fs->setOperationMode(KFileDialog::Saving);
fs->setMode(KFile::File);
fs->setConfirmOverwrite(true);
fs->setKeepLocation(true);
fs->exec();
- QString path = fs->selectedFile();
+ QString path;
+ if (fs) path = fs->selectedFile();
delete fs;
if (!path.isEmpty()) {
frame.save(path);
}
-void Monitor::slotShowEffectScene(bool show)
+void Monitor::slotShowEffectScene(bool show, bool manuallyTriggered)
{
if (m_id == Kdenlive::projectMonitor) {
- kDebug()<<"// SHOWING SCENE: "<<show<<", IS DISPLAYD: "<<m_effectWidget->isVisible();
- if (m_effectWidget->isVisible() == show) return;
- if (videoSurface) {
- videoSurface->setVisible(!show);
- } else {
+ if (!m_effectWidget->getVisibilityAction()->isChecked())
+ show = false;
+ if (m_effectWidget->isVisible() == show)
+ return;
+ setUpdatesEnabled(false);
+ if (show) {
+ if (videoSurface) {
+ videoSurface->setVisible(false);
+ // Preview is handeled internally through the Render::showFrame method
+ render->disablePreview(true);
#ifdef USE_OPENGL
- m_glWidget->setVisible(!show);
+ } else {
+ m_glWidget->setVisible(false);
#endif
- }
- m_effectWidget->setVisible(show);
- m_effectWidget->getVisibilityAction()->setChecked(show);
- emit requestFrameForAnalysis(show);
- if (show) {
+ }
+ m_effectWidget->setVisible(true);
m_effectWidget->getScene()->slotZoomFit();
+ emit requestFrameForAnalysis(true);
+ } else {
+ m_effectWidget->setVisible(false);
+ emit requestFrameForAnalysis(false);
+ if (videoSurface) {
+ videoSurface->setVisible(true);
+ // Preview is handeled internally through the Render::showFrame method
+ render->disablePreview(false);
+
+#ifdef USE_OPENGL
+ } else {
+ m_glWidget->setVisible(true);
+#endif
+ }
}
+ if (!manuallyTriggered)
+ m_effectWidget->showVisibilityButton(show);
+ setUpdatesEnabled(true);
videoBox->setEnabled(show);
- render->doRefresh();
+ //render->doRefresh();
}
}