m_ruler = new CustomRuler(doc->timecode(), m_trackview);
connect(m_ruler, SIGNAL(zoneMoved(int, int)), this, SIGNAL(zoneMoved(int, int)));
connect(m_ruler, SIGNAL(adjustZoom(int)), this, SIGNAL(setZoom(int)));
+ connect(m_ruler, SIGNAL(mousePosition(int)), this, SIGNAL(mousePosition(int)));
QHBoxLayout *layout = new QHBoxLayout;
layout->setContentsMargins(m_trackview->frameWidth(), 0, 0, 0);
layout->setSpacing(0);
if (m_doc->setSceneList() == -1) *ok = false;
else *ok = true;
connect(m_trackview, SIGNAL(cursorMoved(int, int)), m_ruler, SLOT(slotCursorMoved(int, int)));
+ connect(m_trackview, SIGNAL(updateRuler()), m_ruler, SLOT(updateRuler()));
+
connect(m_trackview->horizontalScrollBar(), SIGNAL(valueChanged(int)), m_ruler, SLOT(slotMoveRuler(int)));
connect(m_trackview->horizontalScrollBar(), SIGNAL(rangeChanged(int, int)), this, SLOT(slotUpdateVerticalScroll(int, int)));
connect(m_trackview, SIGNAL(mousePosition(int)), this, SIGNAL(mousePosition(int)));
QDomElement tractor = mlt.firstChildElement("tractor");
QDomNodeList tracks = tractor.elementsByTagName("track");
QDomNodeList playlists = doc.elementsByTagName("playlist");
- int duration = 300;
+ int duration = 1;
m_projectTracks = tracks.count();
int trackduration = 0;
QDomElement e;
}
QDomElement infoXml = mlt.firstChildElement("kdenlivedoc");
+ QDomElement propsXml = infoXml.firstChildElement("documentproperties");
+
+ int currentPos = propsXml.attribute("position").toInt();
+ if (currentPos > 0) m_trackview->initCursorPos(currentPos);
+
+
// Add guides
QDomNodeList guides = infoXml.elementsByTagName("guide");
for (int i = 0; i < guides.count(); i++) {
void TrackView::moveCursorPos(int pos)
{
- m_trackview->setCursorPos(pos, false);
+ m_trackview->setCursorPos(pos);
}
void TrackView::slotChangeZoom(int horizontal, int vertical)
QString prodId = clip->getId();
if (clip->clipType() == PLAYLIST || clip->clipType() == AV || clip->clipType() == AUDIO) {
// We need producer for the track
- prodId.append("_" + QString::number(ix));
+ prodId.append('_' + QString::number(ix));
}
elem.setAttribute("producer", prodId);
producerReplacementIds.insert(idString, prodId);
for (int i = 0; i < producers.count(); i++) {
QDomElement prod = producers.at(i).toElement();
QString mltProdId = prod.attribute("id");
- if (mltProdId == prodId || mltProdId.startsWith(prodId + "_")) {
+ if (mltProdId == prodId || mltProdId.startsWith(prodId + '_')) {
// Found parent producer, clone it
QDomElement clone = prod.cloneNode().toElement();
clone.setAttribute("id", prodId);
} else {
// Check if effect has in/out points
if (effect.hasAttribute("in")) {
- EffectsList::setParameter(currenteffect, "in", effect.attribute("in"));
+ EffectsList::setParameter(currenteffect, "in", effect.attribute("in"));
+ currenteffect.setAttribute("in", effect.attribute("in"));
+ currenteffect.setAttribute("_sync_in_out", "1");
}
if (effect.hasAttribute("out")) {
- EffectsList::setParameter(currenteffect, "out", effect.attribute("out"));
+ EffectsList::setParameter(currenteffect, "out", effect.attribute("out"));
+ currenteffect.setAttribute("out", effect.attribute("out"));
}
}
QString fr = kfrs.at(l).section('=', 0, 0);
double val = locale.toDouble(kfrs.at(l).section('=', 1, 1));
//kfrs[l] = fr + ":" + locale.toString((int)(val * fact));
- kfrs[l] = fr + ":" + QString::number((int) (offset + val * fact));
+ kfrs[l] = fr + ':' + QString::number((int) (offset + val * fact));
}
e.setAttribute("keyframes", kfrs.join(";"));
} else if (type == "double" || type == "constant") {