X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmonitor.cpp;h=dbe677190b43f481894b1b220723194d90836a8a;hb=f6cbca73b639b4250db86bd32a3e1ef27c5ecd75;hp=f84c1b0b84285d05cdfa4052db57ddc0f52e30cf;hpb=90ac7a4f3471c7b1cfed83c2a023b6d961db83d5;p=kdenlive diff --git a/src/monitor.cpp b/src/monitor.cpp index f84c1b0b..dbe67719 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -23,8 +23,9 @@ #include "monitormanager.h" #include "smallruler.h" #include "docclipbase.h" -#include "monitorscene.h" #include "abstractclipitem.h" +#include "monitorscene.h" +#include "monitoreditwidget.h" #include "kdenlivesettings.h" #include @@ -42,7 +43,6 @@ #include #include #include -#include Monitor::Monitor(QString name, MonitorManager *manager, QString profile, QWidget *parent) : @@ -58,8 +58,7 @@ Monitor::Monitor(QString name, MonitorManager *manager, QString profile, QWidget m_length(0), m_dragStarted(false), m_monitorRefresh(NULL), - m_effectScene(NULL), - m_effectView(NULL), + m_effectWidget(NULL), m_selectedClip(NULL), m_loopClipTransition(true) @@ -148,15 +147,6 @@ Monitor::Monitor(QString name, MonitorManager *manager, QString profile, QWidget m_volumePopup->show(); m_volumePopup->hide(); - QWidget *spacer = new QWidget(this); - spacer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); - m_toolbar->addWidget(spacer); - m_timePos = new TimecodeDisplay(m_monitorManager->timecode(), this); - m_toolbar->addWidget(m_timePos); - connect(m_timePos, SIGNAL(editingFinished()), this, SLOT(slotSeek())); - m_toolbar->setMaximumHeight(s * 1.5); - layout->addWidget(m_toolbar); - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); setLayout(layout); setMinimumHeight(200); @@ -181,10 +171,13 @@ Monitor::Monitor(QString name, MonitorManager *manager, QString profile, QWidget m_videoBox->setLayout(lay); render = new Render(m_name, (int) m_monitorRefresh->winId(), profile, this); m_monitorRefresh->setRenderer(render); - }else if (m_glWidget) { + } +#if defined (USE_OPEN_GL) + else if (m_glWidget) { lay->addWidget(m_glWidget); m_videoBox->setLayout(lay); } +#endif connect(m_audioSlider, SIGNAL(valueChanged(int)), this, SLOT(slotSetVolume(int))); connect(m_ruler, SIGNAL(seekRenderer(int)), this, SLOT(slotSeek(int))); @@ -204,15 +197,20 @@ Monitor::Monitor(QString name, MonitorManager *manager, QString profile, QWidget if (m_monitorRefresh) m_monitorRefresh->show(); if (name == "project") { - m_effectScene = new MonitorScene(render); - m_effectView = new QGraphicsView(m_effectScene, m_videoBox); - lay->addWidget(m_effectView); - m_effectView->setRenderHints(QFlags()); - m_effectView->scale(((double) render->renderWidth()) / render->frameRenderWidth(), 1.0); - m_effectView->setMouseTracking(true); - m_effectScene->setUp(); - m_effectView->hide(); + m_effectWidget = new MonitorEditWidget(render, m_videoBox); + m_toolbar->addAction(m_effectWidget->getVisibilityAction()); + lay->addWidget(m_effectWidget); + m_effectWidget->hide(); } + + QWidget *spacer = new QWidget(this); + spacer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); + m_toolbar->addWidget(spacer); + m_timePos = new TimecodeDisplay(m_monitorManager->timecode(), this); + m_toolbar->addWidget(m_timePos); + connect(m_timePos, SIGNAL(editingFinished()), this, SLOT(slotSeek())); + m_toolbar->setMaximumHeight(s * 1.5); + layout->addWidget(m_toolbar); } Monitor::~Monitor() @@ -220,10 +218,8 @@ Monitor::~Monitor() delete m_ruler; delete m_timePos; delete m_overlay; - if (m_name == "project") { - delete m_effectView; - delete m_effectScene; - } + if (m_effectWidget) + delete m_effectWidget; delete m_monitorRefresh; delete render; } @@ -463,7 +459,7 @@ void Monitor::slotSwitchFullScreen() void Monitor::mouseReleaseEvent(QMouseEvent * event) { if (m_dragStarted) { - if (m_videoBox->underMouse() && (!m_effectView || !m_effectView->isVisible())) { + if (m_videoBox->underMouse() && (!m_effectWidget || !m_effectWidget->isVisible())) { if (isActive()) slotPlay(); else activateMonitor(); } else QWidget::mouseReleaseEvent(event); @@ -821,10 +817,10 @@ void Monitor::slotSetXml(DocClipBase *clip, QPoint zone, const int position) // MLT CONSUMER is broken kDebug(QtWarningMsg) << "ERROR, Cannot start monitor"; } - } else if (position != -1) render->seek(GenTime(position, m_monitorManager->timecode().fps())); + } else if (position != -1) render->seek(position); if (!zone.isNull()) { m_ruler->setZone(zone.x(), zone.y()); - render->seek(GenTime(zone.x(), m_monitorManager->timecode().fps())); + render->seek(zone.x()); } } @@ -855,10 +851,8 @@ void Monitor::resetProfile(const QString profile) m_timePos->updateTimeCode(m_monitorManager->timecode()); if (render == NULL) return; render->resetProfile(profile); - if (m_effectScene) { - m_effectView->scale(((double) render->renderWidth()) / render->frameRenderWidth(), 1.0); - m_effectScene->resetProfile(); - } + if (m_effectWidget) + m_effectWidget->resetProfile(render); } void Monitor::saveSceneList(QString path, QDomElement info) @@ -957,23 +951,24 @@ void Monitor::slotEffectScene(bool show) m_glWidget->setVisible(!show); #endif } - m_effectView->setVisible(show); + m_effectWidget->setVisible(show); + m_effectWidget->getVisibilityAction()->setChecked(show); emit requestFrameForAnalysis(show); if (show) { + m_effectWidget->getScene()->slotZoomFit(); render->doRefresh(); - m_effectScene->slotZoomFit(); } } } -MonitorScene * Monitor::getEffectScene() +MonitorEditWidget* Monitor::getEffectEdit() { - return m_effectScene; + return m_effectWidget; } bool Monitor::effectSceneDisplayed() { - return m_effectView->isVisible(); + return m_effectWidget->isVisible(); } void Monitor::slotSetVolume(int volume)