if (m_dropItem) {
AddTimelineClipCommand *command = new AddTimelineClipCommand(this, m_dropItem->xml(), m_dropItem->track(), m_dropItem->startPos(), m_dropItem->rect(), m_dropItem->duration(), false);
m_commandStack->push(command);
- m_document->renderer()->mltInsertClip(m_dropItem->track(), GenTime(m_dropItem->startPos(), 25), m_dropItem->xml());
+ m_document->renderer()->mltInsertClip(m_tracksCount - m_dropItem->track() + 1, GenTime(m_dropItem->startPos(), 25), m_dropItem->xml());
}
m_dropItem = NULL;
}
m_cursorLine->setLine(m_cursorLine->line().x1(), 0, m_cursorLine->line().x1(), 50 * m_tracksCount);
}
-void CustomTrackView::setCursorPos(int pos)
+void CustomTrackView::setCursorPos(int pos, bool seek)
{
m_cursorPos = pos;
m_cursorLine->setPos(pos, 0);
int frame = mapToScene(QPoint(pos, 0)).x() / m_scale;
- m_document->renderer()->seek(GenTime(frame, 25));
+ if (seek) m_document->renderer()->seek(GenTime(frame, 25));
}
int CustomTrackView::cursorPos()
void setScale(double scaleFactor);
public slots:
- void setCursorPos(int pos);
+ void setCursorPos(int pos, bool seek = true);
protected:
virtual void drawBackground ( QPainter * painter, const QRectF & rect );
QDomElement tractor = m_document.createElement("tractor");
QDomElement multitrack = m_document.createElement("multitrack");
-
+ QDomElement playlist = m_document.createElement("playlist");
+ multitrack.appendChild(playlist);
QDomElement playlist1 = m_document.createElement("playlist");
playlist1.setAttribute("id", "playlist1");
multitrack.appendChild(playlist1);
m_activeDocument->setProducers(m_projectList->producersList());
m_activeDocument->setRenderer(NULL);
}
+ connect(trackView, SIGNAL(cursorMoved(int)), m_projectMonitor, SLOT(slotSeek(int)));
connect(trackView, SIGNAL(mousePosition(int)), this, SLOT(slotUpdateMousePosition(int)));
+ connect(m_projectMonitor, SIGNAL(renderPosition(int)), trackView, SLOT(moveCursorPos(int)));
m_projectList->setDocument(doc);
m_monitorManager->setTimecode(doc->timecode());
doc->setRenderer(m_projectMonitor->render);
connect(render, SIGNAL(playListDuration(int)), this, SLOT(adjustRulerSize(int)));
connect(render, SIGNAL(rendererPosition(int)), this, SLOT(seekCursor(int)));
connect(render, SIGNAL(rendererStopped(int)), this, SLOT(rendererStopped(int)));
+ if (name != "clip") connect(render, SIGNAL(rendererPosition(int)), this, SIGNAL(renderPosition(int)));
//render->createVideoXWindow(ui.video_frame->winId(), -1);
int width = m_ruler->width();
m_ruler->setLength(width);
void adjustRulerSize(int length);
void seekCursor(int pos);
void rendererStopped(int pos);
- void slotSeek(int pos);
void slotRewindOneFrame();
void slotForwardOneFrame();
void slotForward();
void slotSetXml(const QDomElement &e);
void initMonitor();
void refreshMonitor(bool visible);
+ void slotSeek(int pos);
void stop();
void start();
+
+ signals:
+ void renderPosition(int);
};
#endif
public:
MonitorManager(QWidget *parent=0);
-
void initMonitors(Monitor *clipMonitor, Monitor *projectMonitor);
- void activateMonitor(QString name);
Timecode timecode();
void setTimecode(Timecode tc);
+ public slots:
+ void activateMonitor(QString name = QString::null);
+
private:
Monitor *m_clipMonitor;
Monitor *m_projectMonitor;
Mlt::Playlist trackPlaylist(( mlt_playlist ) trackProducer.get_service());
duration = Mlt::Producer(trackPlaylist.get_producer()).get_playtime() - 1;
m_mltProducer->set("out", duration);
- emit durationChanged();
+ emit playListDuration(duration);
return;
}
while (trackNb > 1) {
mltInsertClip(0, GenTime(), black);
m_mltProducer->set("out", duration);
- emit durationChanged();
+ emit playListDuration(duration);
}
}
QDomDocument doc;
doc.appendChild(doc.importNode(element, true));
QString resource = doc.toString();
- kDebug()<<"/////// ADDING CLIP TMLNE: "<<resource;
+ kDebug()<<"/////// ADDING CLIP TMLNE: "<<resource<<" ON TRACK: "<<track;
Mlt::Producer trackProducer(tractor.track(track));
Mlt::Playlist trackPlaylist(( mlt_playlist ) trackProducer.get_service());
char *tmp = decodedString(resource);
tractor.refresh();
if (track != 0) mltCheckLength();
double duration = Mlt::Producer(trackPlaylist.get_producer()).get_playtime();
- kDebug()<<"// + +INSERTING CLIP: "<<resource<<" AT: "<<position.frames(m_fps)<<" on track: "<<track<<", DURATION: "<<duration;
+ //kDebug()<<"// + +INSERTING CLIP: "<<resource<<" AT: "<<position.frames(m_fps)<<" on track: "<<track<<", DURATION: "<<duration;
}
// void positionChanged(const GenTime &);
/** Emitted when an error occurs within this renderer. */
void error(const QString &, const QString &);
- void durationChanged();
void playListDuration(int);
void rendererPosition(int);
void rendererStopped(int);
void TrackView::setCursorPos(int pos)
{
+ emit cursorMoved(pos);
m_trackview->setCursorPos(pos * m_scale);
}
+void TrackView::moveCursorPos(int pos)
+{
+ m_trackview->setCursorPos(pos * m_scale, false);
+}
+
void TrackView::slotCursorMoved(int pos, bool emitSignal)
{
- kDebug()<<"///// CURSOR: "<<pos;
m_ruler->slotNewValue(pos * FRAME_SIZE / m_scale, emitSignal); //(int) m_trackview->mapToScene(QPoint(pos, 0)).x());
//m_trackview->setCursorPos(pos);
//m_trackview->invalidateScene(QRectF(), QGraphicsScene::ForegroundLayer);
void slotZoomIn();
void slotZoomOut();
void setCursorPos(int pos);
+ void moveCursorPos(int pos);
signals:
void mousePosition(int);
+ void cursorMoved(int);
};
#endif