From 2815633d2fa3eaeb2b7026dcdbbae2586f153806 Mon Sep 17 00:00:00 2001 From: Till Theato Date: Fri, 22 Oct 2010 21:31:18 +0000 Subject: [PATCH] Monitorscene control widget: - Allow adding custom widgets Corners widget: - Make the lines connecting the corners on the monitor optional (disabled by default). They make it harder to think of the effect working in 3D space, which can be very helpful. svn path=/trunk/kdenlive/; revision=5031 --- src/cornerswidget.cpp | 15 +++++++++++++++ src/cornerswidget.h | 3 +++ src/kdenlivesettings.kcfg | 8 +++++++- src/monitorscene.h | 1 + src/monitorscenecontrolwidget.cpp | 7 +++++++ src/monitorscenecontrolwidget.h | 3 +++ src/onmonitoritems/onmonitorcornersitem.cpp | 3 ++- 7 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/cornerswidget.cpp b/src/cornerswidget.cpp index 44b876a8..14c43353 100644 --- a/src/cornerswidget.cpp +++ b/src/cornerswidget.cpp @@ -23,6 +23,7 @@ #include "monitorscenecontrolwidget.h" #include "onmonitoritems/onmonitorcornersitem.h" #include "renderer.h" +#include "kdenlivesettings.h" #include #include @@ -54,6 +55,14 @@ CornersWidget::CornersWidget(Monitor* monitor, int clipPos, bool isEffect, int f layout2->setContentsMargins(0, 0, 0, 0); layout2->addWidget(m_config->getShowHideButton()); + QToolButton *buttonShowLines = new QToolButton(m_config); + // TODO: Better Icon + buttonShowLines->setIcon(KIcon("insert-horizontal-rule")); + buttonShowLines->setToolTip(i18n("Show/Hide the lines connecting the corners")); + buttonShowLines->setCheckable(true); + connect(buttonShowLines, SIGNAL(toggled(bool)), this, SLOT(slotShowLines(bool))); + m_config->addWidget(buttonShowLines, 0, 2); + int width = m_monitor->render->frameRenderWidth(); int height = m_monitor->render->renderHeight(); @@ -203,6 +212,12 @@ void CornersWidget::slotShowScene(bool show) slotCheckMonitorPosition(m_monitor->render->seekFramePosition()); } +void CornersWidget::slotShowLines(bool show) +{ + KdenliveSettings::setOnmonitoreffects_cornersshowlines(show); + m_item->update(); +} + void CornersWidget::slotResetCorner1() { blockSignals(true); diff --git a/src/cornerswidget.h b/src/cornerswidget.h index 6185ed7e..de322943 100644 --- a/src/cornerswidget.h +++ b/src/cornerswidget.h @@ -86,6 +86,9 @@ private slots: * @param changed (default = true) Whether to emit parameterChanged */ void slotUpdateProperties(bool changed = true); + /** @brief Shows/Hides the lines connecting the corners in the on-monitor item according to @param show. */ + void slotShowLines(bool show = true); + /* * These functions reset the positions of the corners. * The default values in the effect XML file are not considered, but diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg index 4dee0378..f7ac5bc1 100644 --- a/src/kdenlivesettings.kcfg +++ b/src/kdenlivesettings.kcfg @@ -647,7 +647,13 @@ 0 - + + + + + false + + diff --git a/src/monitorscene.h b/src/monitorscene.h index cf04b624..f96e3f38 100644 --- a/src/monitorscene.h +++ b/src/monitorscene.h @@ -52,6 +52,7 @@ protected: virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); /** @brief Adds a keyframe if scene is disabled. */ virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + /** @brief Reimplemented to allow zooming using ctrl + mouse wheel. */ virtual void wheelEvent(QGraphicsSceneWheelEvent *event); public slots: diff --git a/src/monitorscenecontrolwidget.cpp b/src/monitorscenecontrolwidget.cpp index 0ba4d5af..06c4e4d3 100644 --- a/src/monitorscenecontrolwidget.cpp +++ b/src/monitorscenecontrolwidget.cpp @@ -21,6 +21,8 @@ #include "monitorscene.h" #include "kdenlivesettings.h" +#include + MonitorSceneControlWidget::MonitorSceneControlWidget(MonitorScene* scene, QWidget* parent) : QWidget(parent), @@ -74,6 +76,11 @@ QToolButton *MonitorSceneControlWidget::getShowHideButton() return m_buttonConfig; } +void MonitorSceneControlWidget::addWidget(QWidget* widget, int row, int column) +{ + ((QGridLayout*)m_ui.groupBox->layout())->addWidget(widget, row, column); +} + void MonitorSceneControlWidget::slotSetDirectUpdate(bool directUpdate) { KdenliveSettings::setMonitorscene_directupdate(directUpdate); diff --git a/src/monitorscenecontrolwidget.h b/src/monitorscenecontrolwidget.h index b35cc9dd..53ee2096 100644 --- a/src/monitorscenecontrolwidget.h +++ b/src/monitorscenecontrolwidget.h @@ -40,6 +40,9 @@ public: /** @brief Returns a button for showing and hiding the monitor scene controls (this widget). */ QToolButton *getShowHideButton(); + /** @brief Adds a custom widget to the controls. */ + void addWidget(QWidget *widget, int row, int column); + private slots: /** @brief Sets the KdenliveSetting directupdate with true = update parameters (rerender frame) during mouse move (before mouse button is released) */ void slotSetDirectUpdate(bool directUpdate); diff --git a/src/onmonitoritems/onmonitorcornersitem.cpp b/src/onmonitoritems/onmonitorcornersitem.cpp index b650abd3..7c0ee552 100644 --- a/src/onmonitoritems/onmonitorcornersitem.cpp +++ b/src/onmonitoritems/onmonitorcornersitem.cpp @@ -120,7 +120,8 @@ void OnMonitorCornersItem::slotMouseMoved(QGraphicsSceneMouseEvent* event) void OnMonitorCornersItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) { - QGraphicsPolygonItem::paint(painter, option, widget); + if (KdenliveSettings::onmonitoreffects_cornersshowlines()) + QGraphicsPolygonItem::paint(painter, option, widget); painter->setRenderHint(QPainter::Antialiasing); painter->setBrush(QBrush(Qt::yellow)); -- 2.39.2