From: Jean-Baptiste Mardelle Date: Mon, 9 Mar 2009 12:25:10 +0000 (+0000) Subject: Display "in" and "out" point in overlay on monitor when playing, configurable through... X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=fd8e8d7b0339661cf6c96f678e88fa0bcf8b1ced;p=kdenlive Display "in" and "out" point in overlay on monitor when playing, configurable through monitor drop down menu: http://www.kdenlive.org:80/mantis/view.php?id=586 svn path=/trunk/kdenlive/; revision=3125 --- diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg index 3a7661cb..98bd4b11 100644 --- a/src/kdenlivesettings.kcfg +++ b/src/kdenlivesettings.kcfg @@ -401,6 +401,7 @@ true + false @@ -426,6 +427,11 @@ false + + + true + + diff --git a/src/monitor.cpp b/src/monitor.cpp index ce83725a..cd2713d8 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -23,6 +23,7 @@ #include "monitormanager.h" #include "smallruler.h" #include "docclipbase.h" +#include "kdenlivesettings.h" #include #include @@ -40,7 +41,7 @@ Monitor::Monitor(QString name, MonitorManager *manager, QWidget *parent) - : QWidget(parent), render(NULL), m_monitorManager(manager), m_name(name), m_isActive(false), m_currentClip(NULL), m_dragStarted(false) { + : QWidget(parent), render(NULL), m_monitorManager(manager), m_name(name), m_isActive(false), m_currentClip(NULL), m_dragStarted(false), m_overlay(NULL) { ui.setupUi(this); m_scale = 1; m_ruler = new SmallRuler(); @@ -109,11 +110,6 @@ Monitor::Monitor(QString name, MonitorManager *manager, QWidget *parent) render = new Render(m_name, (int) m_monitorRefresh->winId(), -1, this); m_monitorRefresh->setRenderer(render); - m_overlay = new Overlay(m_monitorRefresh); - m_overlay->raise(); - m_overlay->setHidden(true); - - connect(m_ruler, SIGNAL(seekRenderer(int)), this, SLOT(slotSeek(int))); connect(render, SIGNAL(durationChanged(int)), this, SLOT(adjustRulerSize(int))); connect(render, SIGNAL(rendererPosition(int)), this, SLOT(seekCursor(int))); @@ -139,7 +135,7 @@ Monitor::Monitor(QString name, MonitorManager *manager, QWidget *parent) Monitor::~Monitor() { delete m_ruler; delete m_timePos; - delete m_overlay; + if (m_overlay) delete m_overlay; delete m_monitorRefresh; } @@ -163,7 +159,7 @@ void Monitor::setupMenu(QMenu *goMenu, QAction *playZone, QAction *loopZone, QMe m_contextMenu->addAction(extractFrame); if (m_name != "clip") { - QAction *splitView = m_contextMenu->addAction(KIcon("document-new"), i18n("Split view"), render, SLOT(slotSplitView(bool))); + QAction *splitView = m_contextMenu->addAction(KIcon("view-split-left-right"), i18n("Split view"), render, SLOT(slotSplitView(bool))); splitView->setCheckable(true); m_configMenu->addAction(splitView); } else { @@ -171,6 +167,11 @@ void Monitor::setupMenu(QMenu *goMenu, QAction *playZone, QAction *loopZone, QMe m_configMenu->addAction(setThumbFrame); } + QAction *showTips = m_contextMenu->addAction(KIcon("help-hint"), i18n("Monitor overlay infos"), this, SLOT(slotSwitchMonitorInfo(bool))); + showTips->setCheckable(true); + slotSwitchMonitorInfo(KdenliveSettings::displayMonitorInfo()); + m_configMenu->addAction(showTips); + } void Monitor::slotSetSizeOneToOne() { @@ -419,6 +420,7 @@ void Monitor::slotSeek(int pos) { } void Monitor::checkOverlay() { + if (m_overlay == NULL) return; QPoint zone = m_ruler->zone(); if (m_position == zone.x()) m_overlay->setOverlayText(i18n("In Point")); else if (m_position == zone.y()) m_overlay->setOverlayText(i18n("Out Point")); @@ -515,6 +517,7 @@ void Monitor::slotForwardOneFrame(int diff) { void Monitor::seekCursor(int pos) { activateMonitor(); + checkOverlay(); m_position = pos; m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(pos)); m_ruler->slotNewValue(pos); @@ -524,7 +527,7 @@ void Monitor::rendererStopped(int pos) { //int rulerPos = (int)(pos * m_scale); m_ruler->slotNewValue(pos); m_position = pos; - checkOverlay(); + //checkOverlay(); m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(pos)); m_playAction->setChecked(false); m_playAction->setIcon(m_playIcon); @@ -666,6 +669,19 @@ void Monitor::setClipZone(QPoint pos) { m_currentClip->setZone(pos); } +void Monitor::slotSwitchMonitorInfo(bool show) { + KdenliveSettings::setDisplayMonitorInfo(show); + if (show) { + if (m_overlay) return; + m_overlay = new Overlay(m_monitorRefresh); + m_overlay->raise(); + m_overlay->setHidden(true); + } else { + delete m_overlay; + m_overlay = NULL; + } +} + MonitorRefresh::MonitorRefresh(QWidget* parent): QWidget(parent), m_renderer(NULL) { setAttribute(Qt::WA_PaintOnScreen); setAttribute(Qt::WA_OpaquePaintEvent); //setAttribute(Qt::WA_NoSystemBackground); @@ -707,6 +723,4 @@ void Overlay::setOverlayText(const QString &text, bool isZone) { update(); } - - #include "monitor.moc" diff --git a/src/monitor.h b/src/monitor.h index b141e7cc..d9fea535 100644 --- a/src/monitor.h +++ b/src/monitor.h @@ -121,6 +121,7 @@ private slots: void slotSaveZone(); void slotSeek(); void setClipZone(QPoint pos); + void slotSwitchMonitorInfo(bool show); public slots: void slotOpenFile(const QString &);