m_scene->addItem(m_item);
// TODO: Better Icons
+ edit->removeCustomControls();
edit->addCustomButton(KIcon("transform-move"), i18n("Show additional controls"), this, SLOT(slotShowControls(bool)),
true, KdenliveSettings::onmonitoreffects_cornersshowcontrols());
edit->addCustomButton(KIcon("insert-horizontal-rule"), i18n("Show/Hide the lines connecting the corners"), this, SLOT(slotShowLines(bool)),
m_outPoint(1),
m_isEffect(isEffect),
m_rect(NULL),
+ m_previous(NULL),
m_geometry(NULL),
m_showScene(true)
{
m_ui.setupUi(this);
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum);
MonitorEditWidget *edit = monitor->getEffectEdit();
+ edit->removeCustomControls();
+ edit->addCustomButton(KIcon("transform-crop"), i18n("Show previous keyframe"), this, SLOT(slotShowPreviousKeyFrame(bool)), true, KdenliveSettings::onmonitoreffects_geometryshowprevious());
edit->showVisibilityButton(true);
m_scene = edit->getScene();
delete m_spinHeight;
delete m_opacity;
m_scene->removeItem(m_rect);
+ if (m_rect) delete m_rect;
+ if (m_previous) delete m_previous;
delete m_geometry;
if (m_monitor) {
m_monitor->getEffectEdit()->showVisibilityButton(false);
}
}
+void GeometryWidget::slotShowPreviousKeyFrame(bool show)
+{
+ KdenliveSettings::setOnmonitoreffects_geometryshowprevious(show);
+ slotPositionChanged(-1, false);
+}
+
void GeometryWidget::updateTimecodeFormat()
{
m_timePos->slotUpdateTimeCodeFormat();
m_timeline->blockSignals(false);
Mlt::GeometryItem item;
+ Mlt::GeometryItem previousItem;
if (m_geometry->fetch(&item, pos) || item.key() == false) {
// no keyframe
m_rect->setEnabled(false);
m_ui.buttonAddDelete->setIcon(KIcon("edit-delete"));
m_ui.buttonAddDelete->setToolTip(i18n("Delete keyframe"));
}
+
+ if (KdenliveSettings::onmonitoreffects_geometryshowprevious() == false || m_geometry->prev_key(&previousItem, pos - 1) || previousItem.frame() == item.frame()) {
+ if (m_previous) {
+ m_scene->removeItem(m_previous);
+ }
+ }
+ else {
+ if (m_previous == NULL) {
+ m_previous = new QGraphicsRectItem(0, 0, previousItem.w(), previousItem.h());
+ m_previous->setBrush(QColor(200, 200, 0, 20));
+ m_previous->setPen(QPen(Qt::white, 0, Qt::DotLine));
+
+ m_previous->setPos(previousItem.x(), previousItem.y());
+ m_previous->setZValue(-1);
+ m_previous->setEnabled(false);
+ }
+ else {
+ m_previous->setPos(previousItem.x(), previousItem.y());
+ m_previous->setRect(0, 0, previousItem.w(), previousItem.h());
+ }
+ m_scene->addItem(m_previous);
+ }
m_rect->setPos(item.x(), item.y());
m_rect->setRect(0, 0, item.w(), item.h());
class KeyframeHelper;
class TimecodeDisplay;
class OnMonitorRectItem;
+class QGraphicsRectItem;
class DragValue;
class GeometryWidget : public QWidget
bool m_isEffect;
MonitorScene *m_scene;
OnMonitorRectItem *m_rect;
+ QGraphicsRectItem *m_previous;
KeyframeHelper *m_timeline;
/** Stores the different settings in the MLT geometry format. */
Mlt::Geometry *m_geometry;
void slotAdjustToFrameSize();
void slotFitToWidth();
void slotFitToHeight();
+ /** @brief Show / hide previous keyframe in monitor scene. */
+ void slotShowPreviousKeyFrame(bool show);
signals:
void parameterChanged();