#include "monitormanager.h"
#include "smallruler.h"
#include "docclipbase.h"
+#include "monitorscene.h"
#include "kdenlivesettings.h"
#include <KDebug>
#include <QDesktopWidget>
#include <QLabel>
#include <QIntValidator>
+#include <QVBoxLayout>
+#include <QGraphicsView>
Monitor::Monitor(QString name, MonitorManager *manager, QString profile, QWidget *parent) :
m_isActive(false),
m_scale(1),
m_length(0),
- m_dragStarted(false)
+ m_dragStarted(false),
+ m_effectScene(NULL),
+ m_effectView(NULL)
{
m_ui.setupUi(this);
QVBoxLayout *layout = new QVBoxLayout;
if (name != "chapter") {
toolbar->addAction(KIcon("kdenlive-zone-start"), i18n("Set zone start"), this, SLOT(slotSetZoneStart()));
toolbar->addAction(KIcon("kdenlive-zone-end"), i18n("Set zone end"), this, SLOT(slotSetZoneEnd()));
- } else m_ruler->setZone(-3, -2);
+ } else {
+ m_ruler->setZone(-3, -2);
+ }
toolbar->addAction(KIcon("media-seek-backward"), i18n("Rewind"), this, SLOT(slotRewind()));
- toolbar->addAction(KIcon("media-skip-backward"), i18n("Rewind 1 frame"), this, SLOT(slotRewindOneFrame()));
+ //toolbar->addAction(KIcon("media-skip-backward"), i18n("Rewind 1 frame"), this, SLOT(slotRewindOneFrame()));
QToolButton *playButton = new QToolButton(toolbar);
m_playMenu = new QMenu(i18n("Play..."), this);
playButton->setPopupMode(QToolButton::MenuButtonPopup);
toolbar->addWidget(playButton);
- toolbar->addAction(KIcon("media-skip-forward"), i18n("Forward 1 frame"), this, SLOT(slotForwardOneFrame()));
+ //toolbar->addAction(KIcon("media-skip-forward"), i18n("Forward 1 frame"), this, SLOT(slotForwardOneFrame()));
toolbar->addAction(KIcon("media-seek-forward"), i18n("Forward"), this, SLOT(slotForward()));
playButton->setDefaultAction(m_playAction);
spacer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
toolbar->addWidget(spacer);
m_timePos = new TimecodeDisplay(m_monitorManager->timecode(), this);
- m_timePos->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::MinimumExpanding);
toolbar->addWidget(m_timePos);
connect(m_timePos, SIGNAL(editingFinished()), this, SLOT(slotSeek()));
#ifndef Q_WS_MAC
m_monitorRefresh->show();
#endif
+
+ if (name == "project") {
+ m_effectScene = new MonitorScene(render);
+ m_effectView = new QGraphicsView(m_effectScene, m_ui.video_frame);
+ rendererBox->addWidget(m_effectView);
+ m_effectView->setMouseTracking(true);
+ m_effectScene->setUp();
+ m_effectView->hide();
+ }
+
kDebug() << "/////// BUILDING MONITOR, ID: " << m_ui.video_frame->winId();
}
delete m_ruler;
delete m_timePos;
delete m_overlay;
+ if (m_name == "project") {
+ delete m_effectView;
+ delete m_effectScene;
+ }
delete m_monitorRefresh;
delete render;
}
void Monitor::slotSeek()
{
- slotSeek(m_timePos->value());
+ slotSeek(m_timePos->getValue());
}
void Monitor::slotSeek(int pos)
activateMonitor();
if (render == NULL) return;
render->seekToFrame(pos);
- emit renderPosition(render->seekFramePosition());
}
void Monitor::checkOverlay()
if (m_overlay == NULL) return;
int pos = render->seekFramePosition();
QPoint zone = m_ruler->zone();
- if (pos == zone.x()) m_overlay->setOverlayText(i18n("In Point"));
- else if (pos == zone.y()) m_overlay->setOverlayText(i18n("Out Point"));
+ if (pos == zone.x())
+ m_overlay->setOverlayText(i18n("In Point"));
+ else if (pos == zone.y())
+ m_overlay->setOverlayText(i18n("Out Point"));
else {
if (m_currentClip) {
QString markerComment = m_currentClip->markerComment(GenTime(pos, m_monitorManager->timecode().fps()));
- if (markerComment.isEmpty()) m_overlay->setHidden(true);
- else m_overlay->setOverlayText(markerComment, false);
+ if (markerComment.isEmpty())
+ m_overlay->setHidden(true);
+ else
+ m_overlay->setOverlayText(markerComment, false);
} else m_overlay->setHidden(true);
}
}
activateMonitor();
render->play(0);
render->seekToFrame(0);
- //emit renderPosition(0);
}
void Monitor::slotEnd()
activateMonitor();
render->play(0);
render->seekToFrame(render->getLength());
- //emit renderPosition(render->seekFramePosition());
}
void Monitor::slotZoneStart()
activateMonitor();
render->play(0);
render->seekToFrame(m_ruler->zone().x());
- emit renderPosition(render->seekFramePosition());
}
void Monitor::slotZoneEnd()
activateMonitor();
render->play(0);
render->seekToFrame(m_ruler->zone().y());
- emit renderPosition(render->seekFramePosition());
}
void Monitor::slotRewind(double speed)
activateMonitor();
render->play(0);
render->seekToFrameDiff(-diff);
- emit renderPosition(render->seekFramePosition());
}
void Monitor::slotForwardOneFrame(int diff)
activateMonitor();
render->play(0);
render->seekToFrameDiff(diff);
- emit renderPosition(render->seekFramePosition());
}
void Monitor::seekCursor(int pos)
void Monitor::resetProfile(const QString profile)
{
+ m_timePos->updateTimeCode(m_monitorManager->timecode());
if (render == NULL) return;
render->resetProfile(profile);
+ if (m_effectScene) {
+ m_effectScene->resetProfile();
+ }
}
void Monitor::saveSceneList(QString path, QDomElement info)
void Monitor::updateTimecodeFormat()
{
- m_timePos->slotPrepareTimeCodeFormat(m_monitorManager->timecode());
+ m_timePos->slotUpdateTimeCodeFormat();
}
QStringList Monitor::getZoneInfo() const
return result;
}
-MonitorRefresh::MonitorRefresh(QWidget* parent) : \
+void Monitor::slotEffectScene(bool show)
+{
+ if (m_name == "project") {
+#ifdef Q_WS_MAC
+ m_glWidget->setVisible(!show);
+#else
+ m_monitorRefresh->setVisible(!show);
+#endif
+ m_effectView->setVisible(show);
+ emit requestFrameForAnalysis(show);
+ if (show) {
+ render->doRefresh();
+ m_effectScene->slotZoomFit();
+ }
+ }
+}
+
+MonitorScene * Monitor::getEffectScene()
+{
+ return m_effectScene;
+}
+
+bool Monitor::effectSceneDisplayed()
+{
+ return m_effectView->isVisible();
+}
+
+MonitorRefresh::MonitorRefresh(QWidget* parent) :
QWidget(parent),
m_renderer(NULL)
{
m_renderer = render;
}
-void MonitorRefresh::paintEvent(QPaintEvent * /*event*/)
+void MonitorRefresh::paintEvent(QPaintEvent *event)
{
+ Q_UNUSED(event);
if (m_renderer) m_renderer->doRefresh();
}