]> git.sesse.net Git - kdenlive/blobdiff - src/geometrywidget.cpp
on-monitor editing:
[kdenlive] / src / geometrywidget.cpp
index 93c4f470c1e8242225ba6aa93195a7a237591dd7..e92e8281442e9dcb38c22eb326da8b0f9c54c1ae 100644 (file)
 #include "keyframehelper.h"
 #include "timecodedisplay.h"
 #include "monitorscene.h"
+#include "monitoreditwidget.h"
 #include "onmonitoritems/onmonitorrectitem.h"
 #include "kdenlivesettings.h"
 
 #include <QtCore>
 #include <QGraphicsView>
-#include <QGraphicsRectItem>
 #include <QVBoxLayout>
 #include <QGridLayout>
 
 
 
 GeometryWidget::GeometryWidget(Monitor* monitor, Timecode timecode, int clipPos, bool isEffect, QWidget* parent):
-        QWidget(parent),
-        m_monitor(monitor),
-        m_timePos(new TimecodeDisplay(timecode)),
-        m_clipPos(clipPos),
-        m_inPoint(0),
-        m_outPoint(1),
-        m_isEffect(isEffect),
-        m_rect(NULL),
-        m_geometry(NULL),
-        m_showScene(true)
+    QWidget(parent),
+    m_monitor(monitor),
+    m_timePos(new TimecodeDisplay(timecode)),
+    m_clipPos(clipPos),
+    m_inPoint(0),
+    m_outPoint(1),
+    m_isEffect(isEffect),
+    m_rect(NULL),
+    m_geometry(NULL),
+    m_showScene(true)
 {
     m_ui.setupUi(this);
-    m_scene = monitor->getEffectScene();
+
+    MonitorEditWidget *edit = monitor->getEffectEdit();
+    edit->showVisibilityButton(true);
+    m_scene = edit->getScene();
 
 
     /*
@@ -123,40 +126,8 @@ GeometryWidget::GeometryWidget(Monitor* monitor, Timecode timecode, int clipPos,
         Setup of configuration controls
     */
 
-    m_ui.buttonConfig->setIcon(KIcon("system-run"));
-    m_ui.buttonConfig->setToolTip(i18n("Show/Hide settings"));
-    m_ui.groupSettings->setHidden(true);
-
-    m_ui.buttonShowScene->setIcon(KIcon("video-display"));
-    m_ui.buttonShowScene->setToolTip(i18n("Show monitor scene"));
-    m_ui.buttonDirectUpdate->setIcon(KIcon("transform-scale"));
-    m_ui.buttonDirectUpdate->setToolTip(i18n("Update parameters while monitor scene changes"));
-    m_ui.buttonDirectUpdate->setChecked(KdenliveSettings::monitorscene_directupdate());
-
-    m_ui.buttonZoomFit->setIcon(KIcon("zoom-fit-best"));
-    m_ui.buttonZoomFit->setToolTip(i18n("Fit zoom to monitor size"));
-    m_ui.buttonZoomOriginal->setIcon(KIcon("zoom-original"));
-    m_ui.buttonZoomOriginal->setToolTip(i18n("Original size"));
-    m_ui.buttonZoomIn->setIcon(KIcon("zoom-in"));
-    m_ui.buttonZoomIn->setToolTip(i18n("Zoom in"));
-    m_ui.buttonZoomOut->setIcon(KIcon("zoom-out"));
-    m_ui.buttonZoomOut->setToolTip(i18n("Zoom out"));
-
-    connect(m_ui.buttonConfig, SIGNAL(toggled(bool)), m_ui.groupSettings, SLOT(setVisible(bool)));
+    connect(edit, SIGNAL(showEdit(bool)), this, SLOT(slotShowScene(bool)));
 
-    connect(m_ui.sliderZoom, SIGNAL(valueChanged(int)), m_scene, SLOT(slotZoom(int)));
-    connect(m_scene, SIGNAL(zoomChanged(int)), m_ui.sliderZoom, SLOT(setValue(int)));
-    connect(m_ui.buttonZoomFit,      SIGNAL(clicked()), m_scene, SLOT(slotZoomFit()));
-    connect(m_ui.buttonZoomOriginal, SIGNAL(clicked()), m_scene, SLOT(slotZoomOriginal()));
-    connect(m_ui.buttonZoomIn,       SIGNAL(clicked()), m_scene, SLOT(slotZoomIn()));
-    connect(m_ui.buttonZoomOut,      SIGNAL(clicked()), m_scene, SLOT(slotZoomOut()));
-    m_scene->slotZoomFit();
-
-    connect(m_ui.buttonShowScene, SIGNAL(toggled(bool)), this, SLOT(slotShowScene(bool)));
-    connect(m_ui.buttonDirectUpdate, SIGNAL(toggled(bool)), m_scene, SLOT(slotSetDirectUpdate(bool)));
-
-
-    connect(m_scene, SIGNAL(actionFinished()), this, SLOT(slotUpdateGeometry()));
     connect(m_scene, SIGNAL(addKeyframe()),    this, SLOT(slotAddKeyframe()));
     connect(m_monitor, SIGNAL(renderPosition(int)), this, SLOT(slotCheckMonitorPosition(int)));
     connect(this, SIGNAL(parameterChanged()), this, SLOT(slotUpdateProperties()));
@@ -164,12 +135,15 @@ GeometryWidget::GeometryWidget(Monitor* monitor, Timecode timecode, int clipPos,
 
 GeometryWidget::~GeometryWidget()
 {
+    m_scene->setEnabled(true);
     delete m_timePos;
     delete m_timeline;
     m_scene->removeItem(m_rect);
     delete m_geometry;
-    if (m_monitor)
+    if (m_monitor) {
+        m_monitor->getEffectEdit()->showVisibilityButton(false);
         m_monitor->slotEffectScene(false);
+    }
 }
 
 void GeometryWidget::updateTimecodeFormat()
@@ -210,10 +184,11 @@ void GeometryWidget::setupParam(const QDomElement elem, int minframe, int maxfra
 
     m_geometry->fetch(&item, 0);
     delete m_rect;
-    m_rect = new OnMonitorRectItem(QRectF(0, 0, item.w(), item.h()));
+    m_rect = new OnMonitorRectItem(QRectF(0, 0, item.w(), item.h()), m_monitor->render->dar());
     m_rect->setPos(item.x(), item.y());
     m_rect->setZValue(0);
     m_scene->addItem(m_rect);
+    connect(m_rect, SIGNAL(changed()), this, SLOT(slotUpdateGeometry()));
 
     slotPositionChanged(0, false);
     slotCheckMonitorPosition(m_monitor->render->seekFramePosition());