]> git.sesse.net Git - kdenlive/blobdiff - src/customtrackview.cpp
text changes in other editor too
[kdenlive] / src / customtrackview.cpp
index cc3878ba3328a7b7c3a258a5b99ffbc0bfeb0735..86cf16b610918b44c9b4709bd38905b0d20063a5 100644 (file)
@@ -266,10 +266,16 @@ void CustomTrackView::mousePressEvent ( QMouseEvent * event )
 {
   kDebug()<<"-- TIMELINE MSE PRESSED";
   int pos = event->x();
-  if (event->modifiers() == Qt::ControlModifier) 
+  if (event->modifiers() == Qt::ControlModifier) {
     setDragMode(QGraphicsView::ScrollHandDrag);
-  else if (event->modifiers() == Qt::ShiftModifier) 
+    QGraphicsView::mousePressEvent(event);
+    return;
+  }
+  else if (event->modifiers() == Qt::ShiftModifier) {
     setDragMode(QGraphicsView::RubberBandDrag);
+    QGraphicsView::mousePressEvent(event);
+    return;
+  }
   else {
     bool collision = false;
     QList<QGraphicsItem *> collisionList = items(event->pos());
@@ -329,6 +335,17 @@ void CustomTrackView::dragEnterEvent ( QDragEnterEvent * event )
   }
 }
 
+void CustomTrackView::slotRefreshEffects(ClipItem *clip)
+{
+  int track = m_tracksCount - clip->track();
+  GenTime pos = GenTime(clip->startPos(), m_document->fps());
+  m_document->renderer()->mltRemoveEffect(track, pos, "-1", false);
+  for (int i = 0; i < clip->effectsCount(); i++) {
+    m_document->renderer()->mltAddEffect(track, pos, clip->getEffectArgs(clip->effectAt(i)), false);
+  }
+  m_document->renderer()->doRefresh();
+}
+
 void CustomTrackView::addEffect(int track, GenTime pos, QDomElement effect)
 {
   ClipItem *clip = getClipItemAt(pos.frames(m_document->fps()) + 1, m_tracksCount - track);
@@ -356,14 +373,29 @@ void CustomTrackView::slotAddEffect(QDomElement effect)
   for (int i = 0; i < itemList.count(); i++) {
     if (itemList.at(i)->type() == 70000 && itemList.at(i)->isSelected()) {
       ClipItem *item = (ClipItem *)itemList.at(i);
-      // the kdenlive_ix int is used to identify an effect in the stack and in mlt's playlist
-      effect.setAttribute("kdenlive_ix", QString::number(item->effectsCount()));
+      // the kdenlive_ix int is used to identify an effect in mlt's playlist, should
+      // not be changed
+      effect.setAttribute("kdenlive_ix", QString::number(item->effectsCounter()));
       AddEffectCommand *command = new AddEffectCommand(this, m_tracksCount - item->track(),GenTime(item->startPos(), m_document->fps()), effect, true);
       m_commandStack->push(command);    
     }
   }
 }
 
+void CustomTrackView::slotDeleteEffect(ClipItem *clip, QDomElement effect)
+{
+  AddEffectCommand *command = new AddEffectCommand(this, m_tracksCount - clip->track(), GenTime(clip->startPos(), m_document->fps()), effect, false);
+  m_commandStack->push(command);
+}
+
+
+void CustomTrackView::slotUpdateClipEffect(ClipItem *clip, QDomElement effect)
+{
+    QMap <QString, QString> effectParams = clip->getEffectArgs(effect);
+    m_document->renderer()->mltEditEffect(m_tracksCount - clip->track(), GenTime(clip->startPos(), m_document->fps()), effectParams);
+}
+
+
 void CustomTrackView::addItem(DocClipBase *clip, QPoint pos)
 {
   int in =0;
@@ -428,7 +460,7 @@ void CustomTrackView::setDuration(int duration)
 {
   kDebug()<<"/////////////  PRO DUR: "<<duration<<", height: "<<50 * m_tracksCount;
   m_projectDuration = duration;
-  scene()->setSceneRect(0, 0, m_projectDuration + 500, scene()->sceneRect().height()); //50 * m_tracksCount);
+  scene()->setSceneRect(0, 0, (m_projectDuration + 500) * m_scale, scene()->sceneRect().height()); //50 * m_tracksCount);
 }
 
 
@@ -623,6 +655,7 @@ void CustomTrackView::setScale(double scaleFactor)
   m_scale = scaleFactor;
   kDebug()<<" HHHHHHHH  SCALING: "<<m_scale;
   QList<QGraphicsItem *> itemList = items();
+  scene()->setSceneRect(0, 0, (m_projectDuration + 500) * m_scale, scene()->sceneRect().height()); //50 *
 
   for (int i = 0; i < itemList.count(); i++) {
       if (itemList.at(i)->type() == 70000) {
@@ -645,10 +678,11 @@ void CustomTrackView::drawBackground ( QPainter * painter, const QRectF & rect )
   QColor base = palette().button().color();
   //painter->setPen(base);
   painter->setClipRect(rect);
-  painter->drawLine(0, 0, rect.width(), 0);
+  int width = scene()->sceneRect().width();
+  painter->drawLine(0, 0, width, 0);
     for (uint i = 0; i < m_tracksCount;i++)
     {
-      painter->drawLine(0, 50 * (i+1), width(), 50 * (i+1));
+      painter->drawLine(0, 50 * (i+1), width, 50 * (i+1));
       painter->drawText(QRectF(10, 50 * i, 100, 50 * i + 49), Qt::AlignLeft, i18n(" Track ") + QString::number(i + 1));
     }
   int lowerLimit = 50 * m_tracksCount;