+const QString Monitor::sceneList()
+{
+ if (render == NULL) return QString();
+ return render->sceneList();
+}
+
+void Monitor::setClipZone(QPoint pos)
+{
+ if (m_currentClip == NULL) return;
+ m_currentClip->setZone(pos);
+}
+
+void Monitor::slotSwitchDropFrames(bool show)
+{
+ render->setDropFrames(show);
+}
+
+void Monitor::slotSwitchMonitorInfo(bool show)
+{
+ KdenliveSettings::setDisplayMonitorInfo(show);
+ if (show) {
+ if (m_overlay) return;
+ if (m_monitorRefresh == NULL) {
+ // Using OpenGL display
+#if defined(Q_WS_MAC) || defined(USE_OPEN_GL)
+ if (m_glWidget->layout()) delete m_glWidget->layout();
+ m_overlay = new Overlay();
+ connect(m_overlay, SIGNAL(editMarker()), this, SLOT(slotEditMarker()));
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->addStretch(10);
+ layout->addWidget(m_overlay);
+ m_glWidget->setLayout(layout);
+#endif
+ } else {
+ if (m_monitorRefresh->layout()) delete m_monitorRefresh->layout();
+ m_overlay = new Overlay();
+ connect(m_overlay, SIGNAL(editMarker()), this, SLOT(slotEditMarker()));
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->addStretch(10);
+ layout->addWidget(m_overlay);
+ m_monitorRefresh->setLayout(layout);
+ m_overlay->raise();
+ m_overlay->setHidden(true);
+ }
+ checkOverlay();
+ } else {
+ delete m_overlay;
+ m_overlay = NULL;
+ }
+}
+
+void Monitor::slotEditMarker()
+{
+ if (m_editMarker) m_editMarker->trigger();
+}
+
+void Monitor::updateTimecodeFormat()
+{
+ m_timePos->slotUpdateTimeCodeFormat();
+}
+
+QStringList Monitor::getZoneInfo() const
+{
+ QStringList result;
+ if (m_currentClip == NULL) return result;
+ result << m_currentClip->getId();
+ QPoint zone = m_ruler->zone();
+ result << QString::number(zone.x()) << QString::number(zone.y());
+ return result;
+}
+
+void Monitor::slotSetSelectedClip(AbstractClipItem* item)
+{
+ if (item) {
+ m_loopClipAction->setEnabled(true);
+ m_selectedClip = item;
+ } else {
+ m_loopClipAction->setEnabled(false);
+ }
+}
+
+void Monitor::slotSetSelectedClip(ClipItem* item)
+{
+ if (item || (!item && !m_loopClipTransition)) {
+ m_loopClipTransition = false;
+ slotSetSelectedClip((AbstractClipItem*)item);
+ }
+}
+
+void Monitor::slotSetSelectedClip(Transition* item)
+{
+ if (item || (!item && m_loopClipTransition)) {
+ m_loopClipTransition = true;
+ slotSetSelectedClip((AbstractClipItem*)item);
+ }
+}
+
+
+void Monitor::slotEffectScene(bool show)
+{
+ if (m_name == "project") {
+ if (m_monitorRefresh) {
+ m_monitorRefresh->setVisible(!show);
+ } else {
+#if defined(Q_WS_MAC) || defined(USE_OPEN_GL)
+ m_glWidget->setVisible(!show);
+#endif
+ }
+ m_effectWidget->setVisible(show);
+ m_effectWidget->getVisibilityAction()->setChecked(show);
+ emit requestFrameForAnalysis(show);
+ if (show) {
+ m_effectWidget->getScene()->slotZoomFit();
+ render->doRefresh();
+ }
+ }
+}
+
+MonitorEditWidget* Monitor::getEffectEdit()
+{
+ return m_effectWidget;
+}
+
+bool Monitor::effectSceneDisplayed()
+{
+ return m_effectWidget->isVisible();
+}
+
+void Monitor::slotSetVolume(int volume)
+{
+ KdenliveSettings::setVolume(volume);
+ KIcon icon;
+ if (volume == 0) icon = KIcon("audio-volume-muted");
+ else icon = KIcon("audio-volume-medium");
+ static_cast <QToolButton *>(m_volumeWidget)->setIcon(icon);
+ render->slotSetVolume(volume);
+}
+
+void Monitor::slotShowVolume()
+{
+ m_volumePopup->move(mapToGlobal(m_toolbar->geometry().topLeft()) + QPoint(mapToParent(m_volumeWidget->geometry().bottomLeft()).x(), -m_volumePopup->height()));
+ int vol = render->volume();
+ // Disable widget if we cannot get the volume
+ m_volumePopup->setEnabled(vol != -1);
+ m_audioSlider->blockSignals(true);
+ m_audioSlider->setValue(vol);
+ m_audioSlider->blockSignals(false);
+ m_volumePopup->show();
+}
+
+AbstractRender *Monitor::abstractRender()
+{
+ return render;
+}
+
+MonitorRefresh::MonitorRefresh(QWidget* parent) :
+ QWidget(parent)
+ , m_renderer(NULL)
+{
+ // MonitorRefresh is used as container for the SDL display (it's window id is passed to SDL)