+}
+
+
+void Render::mltDeleteTrack(int ix)
+{
+ QDomDocument doc;
+ doc.setContent(sceneList(), false);
+ int tracksCount = doc.elementsByTagName("track").count() - 1;
+ QDomNode track = doc.elementsByTagName("track").at(ix);
+ QDomNode tractor = doc.elementsByTagName("tractor").at(0);
+ QDomNodeList transitions = doc.elementsByTagName("transition");
+ for (int i = 0; i < transitions.count(); i++) {
+ QDomElement e = transitions.at(i).toElement();
+ QDomNodeList props = e.elementsByTagName("property");
+ QMap <QString, QString> mappedProps;
+ for (int j = 0; j < props.count(); j++) {
+ QDomElement f = props.at(j).toElement();
+ mappedProps.insert(f.attribute("name"), f.firstChild().nodeValue());
+ }
+ if (mappedProps.value("mlt_service") == "mix" && mappedProps.value("b_track").toInt() == tracksCount) {
+ tractor.removeChild(transitions.at(i));
+ i--;
+ } else if (mappedProps.value("mlt_service") != "mix" && (mappedProps.value("b_track").toInt() >= ix || mappedProps.value("a_track").toInt() >= ix)) {
+ // Transition needs to be moved
+ int a_track = mappedProps.value("a_track").toInt();
+ int b_track = mappedProps.value("b_track").toInt();
+ if (a_track > 0 && a_track >= ix) a_track --;
+ if (b_track > 0 && b_track >= ix) b_track --;
+ for (int j = 0; j < props.count(); j++) {
+ QDomElement f = props.at(j).toElement();
+ if (f.attribute("name") == "a_track") f.firstChild().setNodeValue(QString::number(a_track));
+ else if (f.attribute("name") == "b_track") f.firstChild().setNodeValue(QString::number(b_track));
+ }
+
+ }
+ }
+ tractor.removeChild(track);
+ //kDebug() << "/////////// RESULT SCENE: \n" << doc.toString();
+ setSceneList(doc.toString(), m_framePosition);
+ mltCheckLength();
+}
+
+
+void Render::updatePreviewSettings()
+{
+ kDebug() << "////// RESTARTING CONSUMER";
+ if (!m_mltConsumer || !m_mltProducer) return;
+ if (m_mltProducer->get_playtime() == 0) return;
+ Mlt::Service service(m_mltProducer->parent().get_service());
+ if (service.type() != tractor_type) return;
+
+ //m_mltConsumer->set("refresh", 0);
+ if (!m_mltConsumer->is_stopped()) m_mltConsumer->stop();
+ m_mltConsumer->purge();
+ QString scene = sceneList();
+ int pos = 0;
+ if (m_mltProducer) {
+ pos = m_mltProducer->position();
+ delete m_mltProducer;
+ }
+ m_mltProducer = NULL;
+ setSceneList(scene, pos);