}
void CustomTrackView::slotTransitionUpdated(Transition *tr, QDomElement old) {
- EditTransitionCommand *command = new EditTransitionCommand(this, tr->track(), tr->startPos(), old, tr->toXML() , true);
+ EditTransitionCommand *command = new EditTransitionCommand(this, tr->track(), tr->startPos(), old, tr->toXML(), true);
m_commandStack->push(command);
m_document->setModified(true);
}
-void CustomTrackView::updateTransition(int track, GenTime pos, QDomElement oldTransition, QDomElement transition) {
+void CustomTrackView::slotTransitionTrackUpdated(Transition *tr, int track) {
+ QDomElement old = tr->toXML().cloneNode().toElement();
+ if (track == 0) {
+ track = getPreviousVideoTrack(tr->track());
+ tr->setForcedTrack(false, track);
+ } else {
+ tr->setForcedTrack(true, m_scene->m_tracksList.count() + 1 - track);
+ }
+ EditTransitionCommand *command = new EditTransitionCommand(this, tr->track(), tr->startPos(), old, tr->toXML(), true);
+ m_commandStack->push(command);
+ m_document->setModified(true);
+}
+
+void CustomTrackView::updateTransition(int track, GenTime pos, QDomElement oldTransition, QDomElement transition, bool updateTransitionWidget) {
Transition *item = getTransitionItemAt((int)pos.frames(m_document->fps()), track);
if (!item) {
kWarning() << "Unable to find transition at pos :" << pos.frames(m_document->fps()) << ", ON track: " << track;
}
m_document->renderer()->mltUpdateTransition(oldTransition.attribute("tag"), transition.attribute("tag"), transition.attribute("transition_btrack").toInt(), m_scene->m_tracksList.count() - transition.attribute("transition_atrack").toInt(), item->startPos(), item->endPos(), transition);
item->setTransitionParameters(transition);
+ if (updateTransitionWidget) emit transitionItemSelected(item, true);
m_document->setModified(true);
}
void moveEffect(int track, GenTime pos, int oldPos, int newPos);
void addTransition(ItemInfo transitionInfo, int endTrack, QDomElement params);
void deleteTransition(ItemInfo transitionInfo, int endTrack, QDomElement params);
- void updateTransition(int track, GenTime pos, QDomElement oldTransition, QDomElement transition);
+ void updateTransition(int track, GenTime pos, QDomElement oldTransition, QDomElement transition, bool updateTransitionWidget);
void moveTransition(GenTime oldpos, GenTime newpos);
void activateMonitor();
int duration() const;
void slotAddTransition(ClipItem* clip, ItemInfo transitionInfo, int endTrack, QDomElement transition = QDomElement());
void slotAddTransitionToSelectedClips(QDomElement transition);
void slotTransitionUpdated(Transition *, QDomElement);
+ void slotTransitionTrackUpdated(Transition *tr, int track);
void slotSwitchTrackAudio(int ix);
void slotSwitchTrackVideo(int ix);
void slotUpdateClip(const QString &clipId);
void zoomOut();
void mousePosition(int);
void clipItemSelected(ClipItem*, int ix = -1);
- void transitionItemSelected(Transition*);
+ void transitionItemSelected(Transition*, bool update = false);
void activateDocumentMonitor();
void trackHeightChanged();
void displayMessage(const QString, MessageType);
#include "customtrackview.h"
EditTransitionCommand::EditTransitionCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, bool doIt)
- : m_view(view), m_track(track), m_pos(pos), m_oldeffect(oldeffect), m_doIt(doIt) {
+ : m_view(view), m_track(track), m_pos(pos), m_oldeffect(oldeffect), m_doIt(false) {
m_effect = effect.cloneNode().toElement();
QString effectName;
QDomNode namenode = effect.elementsByTagName("name").item(0);
// virtual
int EditTransitionCommand::id() const {
- return 1;
+ return 2;
}
// virtual
// virtual
void EditTransitionCommand::undo() {
- m_view->updateTransition(m_track, m_pos, m_effect, m_oldeffect);
+ m_view->updateTransition(m_track, m_pos, m_effect, m_oldeffect, m_doIt);
}
// virtual
void EditTransitionCommand::redo() {
- m_view->updateTransition(m_track, m_pos, m_oldeffect, m_effect);
+ m_view->updateTransition(m_track, m_pos, m_oldeffect, m_effect, m_doIt);
+ m_doIt = true;
}
if (m_timelineArea->count() == 0) {
m_activeDocument = NULL;
effectStack->clear();
- transitionConfig->slotTransitionItemSelected(NULL);
+ transitionConfig->slotTransitionItemSelected(NULL, false);
}
}
disconnect(m_activeDocument, SIGNAL(deleteTimelineClip(const QString &)), m_activeTimeline, SLOT(slotDeleteClip(const QString &)));
disconnect(m_activeTimeline->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), effectStack, SLOT(slotClipItemSelected(ClipItem*, int)));
disconnect(m_activeTimeline->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), this, SLOT(slotActivateEffectStackView()));
- disconnect(m_activeTimeline, SIGNAL(transitionItemSelected(Transition*)), transitionConfig, SLOT(slotTransitionItemSelected(Transition*)));
- disconnect(m_activeTimeline, SIGNAL(transitionItemSelected(Transition*)), this, SLOT(slotActivateTransitionView()));
+ disconnect(m_activeTimeline, SIGNAL(transitionItemSelected(Transition*, bool)), transitionConfig, SLOT(slotTransitionItemSelected(Transition*, bool)));
+ disconnect(m_activeTimeline, SIGNAL(transitionItemSelected(Transition*, bool)), this, SLOT(slotActivateTransitionView()));
disconnect(m_zoomSlider, SIGNAL(valueChanged(int)), m_activeTimeline, SLOT(slotChangeZoom(int)));
disconnect(m_activeTimeline->projectView(), SIGNAL(displayMessage(const QString&, MessageType)), m_messageLabel, SLOT(setMessage(const QString&, MessageType)));
disconnect(m_activeTimeline->projectView(), SIGNAL(showClipFrame(DocClipBase *, const int)), m_clipMonitor, SLOT(slotSetXml(DocClipBase *, const int)));
disconnect(effectStack, SIGNAL(refreshEffectStack(ClipItem*)), m_activeTimeline->projectView(), SLOT(slotRefreshEffects(ClipItem*)));
disconnect(effectStack, SIGNAL(reloadEffects()), this, SLOT(slotReloadEffects()));
disconnect(transitionConfig, SIGNAL(transitionUpdated(Transition *, QDomElement)), m_activeTimeline->projectView() , SLOT(slotTransitionUpdated(Transition *, QDomElement)));
+ disconnect(transitionConfig, SIGNAL(transitionTrackUpdated(Transition *, int)), m_activeTimeline->projectView() , SLOT(slotTransitionTrackUpdated(Transition *, int)));
disconnect(transitionConfig, SIGNAL(seekTimeline(int)), m_activeTimeline->projectView() , SLOT(setCursorPos(int)));
disconnect(m_activeTimeline->projectView(), SIGNAL(activateDocumentMonitor()), m_projectMonitor, SLOT(activateMonitor()));
disconnect(m_activeTimeline, SIGNAL(zoneMoved(int, int)), m_projectMonitor, SLOT(slotZoneMoved(int, int)));
KdenliveSettings::setProject_fps(doc->fps());
m_monitorManager->resetProfiles(doc->timecode());
m_projectList->setDocument(doc);
- transitionConfig->updateProjectFormat(doc->mltProfile(), doc->timecode());
+ transitionConfig->updateProjectFormat(doc->mltProfile(), doc->timecode(), trackView->tracksNumber());
effectStack->updateProjectFormat(doc->mltProfile(), doc->timecode());
connect(m_projectList, SIGNAL(clipSelected(DocClipBase *)), m_clipMonitor, SLOT(slotSetXml(DocClipBase *)));
connect(m_projectList, SIGNAL(projectModified()), doc, SLOT(setModified()));
connect(trackView->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), effectStack, SLOT(slotClipItemSelected(ClipItem*, int)));
connect(trackView->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), this, SLOT(slotActivateEffectStackView()));
- connect(trackView, SIGNAL(transitionItemSelected(Transition*)), transitionConfig, SLOT(slotTransitionItemSelected(Transition*)));
- connect(trackView, SIGNAL(transitionItemSelected(Transition*)), this, SLOT(slotActivateTransitionView()));
+ connect(trackView, SIGNAL(transitionItemSelected(Transition*, bool)), transitionConfig, SLOT(slotTransitionItemSelected(Transition*, bool)));
+ connect(trackView, SIGNAL(transitionItemSelected(Transition*, bool)), this, SLOT(slotActivateTransitionView()));
m_zoomSlider->setValue(doc->zoom());
connect(m_zoomSlider, SIGNAL(valueChanged(int)), trackView, SLOT(slotChangeZoom(int)));
connect(trackView->projectView(), SIGNAL(zoomIn()), this, SLOT(slotZoomIn()));
connect(effectStack, SIGNAL(changeEffectPosition(ClipItem*, int, int)), trackView->projectView(), SLOT(slotChangeEffectPosition(ClipItem*, int, int)));
connect(effectStack, SIGNAL(refreshEffectStack(ClipItem*)), trackView->projectView(), SLOT(slotRefreshEffects(ClipItem*)));
connect(transitionConfig, SIGNAL(transitionUpdated(Transition *, QDomElement)), trackView->projectView() , SLOT(slotTransitionUpdated(Transition *, QDomElement)));
+ connect(transitionConfig, SIGNAL(transitionTrackUpdated(Transition *, int)), trackView->projectView() , SLOT(slotTransitionTrackUpdated(Transition *, int)));
connect(transitionConfig, SIGNAL(seekTimeline(int)), trackView->projectView() , SLOT(setCursorPos(int)));
connect(effectStack, SIGNAL(reloadEffects()), this, SLOT(slotReloadEffects()));
void Render::mltUpdateTransitionParams(QString type, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml) {
m_isBlocked = true;
-
Mlt::Service service(m_mltProducer->parent().get_service());
Mlt::Tractor tractor(service);
Mlt::Field *field = tractor.field();
while (mlt_type == "transition") {
mlt_transition tr = (mlt_transition) nextservice;
int currentTrack = mlt_transition_get_b_track(tr);
+ int currentBTrack = mlt_transition_get_a_track(tr);
int currentIn = (int) mlt_transition_get_in(tr);
int currentOut = (int) mlt_transition_get_out(tr);
QMap<QString, QString>::Iterator it;
QString key;
mlt_properties transproperties = MLT_TRANSITION_PROPERTIES(tr);
-
+ mlt_properties_set_int(transproperties, "force_track", xml.attribute("force_track").toInt());
+ if (currentBTrack != a_track) {
+ mlt_properties_set_int(properties, "a_track", a_track);
+ }
for (it = map.begin(); it != map.end(); ++it) {
key = it.key();
char *name = decodedString(key);
connect(m_trackview, SIGNAL(cursorMoved(int, int)), m_ruler, SLOT(slotCursorMoved(int, int)));
connect(m_trackview->horizontalScrollBar(), SIGNAL(valueChanged(int)), m_ruler, SLOT(slotMoveRuler(int)));
connect(m_trackview, SIGNAL(mousePosition(int)), this, SIGNAL(mousePosition(int)));
- connect(m_trackview, SIGNAL(transitionItemSelected(Transition*)), this, SLOT(slotTransitionItemSelected(Transition*)));
+ connect(m_trackview, SIGNAL(transitionItemSelected(Transition*, bool)), this, SLOT(slotTransitionItemSelected(Transition*, bool)));
slotChangeZoom(m_doc->zoom());
}
}
int TrackView::tracksNumber() const {
- return m_projectTracks;
+ return m_projectTracks - 1;
}
int TrackView::inPoint() const {
m_ruler->setZone(p);
}
-void TrackView::slotTransitionItemSelected(Transition *t) {
- emit transitionItemSelected(t);
+void TrackView::slotTransitionItemSelected(Transition *t, bool update) {
+ emit transitionItemSelected(t, update);
}
void TrackView::setDuration(int dur) {
int a_track = 0;
int b_track = 0;
bool isAutomatic = false;
+ bool forceTrack = false;
QString mlt_geometry;
QString mlt_service;
for (int k = 0; k < transitionparams.count(); k++) {
//kDebug() << "// TRANSITRION " << i << " IS NOT VALID (INTERN ADDED)";
//break;
} else if (paramName == "a_track") a_track = p.text().toInt();
- else if (paramName == "b_track") b_track = m_projectTracks - 1 - p.text().toInt();
+ else if (paramName == "b_track") b_track = p.text().toInt();
else if (paramName == "mlt_service") mlt_service = p.text();
else if (paramName == "geometry") mlt_geometry = p.text();
- else if (paramName == "automatic" && p.text() == "1") isAutomatic = true;;
+ else if (paramName == "automatic" && p.text() == "1") isAutomatic = true;
+ else if (paramName == "force_track" && p.text() == "1") forceTrack = true;
}
}
if (transitionAdd || mlt_service != "mix") {
transitionInfo.startPos = GenTime(e.attribute("in").toInt(), m_doc->fps());
transitionInfo.endPos = GenTime(e.attribute("out").toInt() + 1, m_doc->fps());
- transitionInfo.track = b_track;
+ transitionInfo.track = m_projectTracks - 1 - b_track;
//kDebug() << "/////////////// +++++++++++ ADDING TRANSITION ON TRACK: " << b_track << ", TOTAL TRKA: " << m_projectTracks;
Transition *tr = new Transition(transitionInfo, a_track, m_doc->fps(), base, isAutomatic);
+ if (forceTrack) tr->setForcedTrack(true, a_track);
m_scene->addItem(tr);
}
}
private slots:
void setCursorPos(int pos);
void moveCursorPos(int pos);
- void slotTransitionItemSelected(Transition*);
+ void slotTransitionItemSelected(Transition*, bool update);
void slotRebuildTrackHeaders();
signals:
void mousePosition(int);
void cursorMoved();
- void transitionItemSelected(Transition*);
+ void transitionItemSelected(Transition*, bool);
void zoneMoved(int, int);
};
#include "customtrackscene.h"
#include "mainwindow.h"
-Transition::Transition(const ItemInfo info, int transitiontrack, double fps, QDomElement params, bool automaticTransition) : AbstractClipItem(info, QRectF(), fps), m_gradient(QLinearGradient(0, 0, 0, 0)), m_automaticTransition(automaticTransition) {
+Transition::Transition(const ItemInfo info, int transitiontrack, double fps, QDomElement params, bool automaticTransition) : AbstractClipItem(info, QRectF(), fps), m_gradient(QLinearGradient(0, 0, 0, 0)), m_automaticTransition(automaticTransition), m_forceTransitionTrack(false) {
setRect(0, 0, (qreal)(info.endPos - info.startPos).frames(fps) - 0.02, (qreal)(KdenliveSettings::trackheight() / 3 * 2 - 1));
setPos((qreal) info.startPos.frames(fps), (qreal)(info.track * KdenliveSettings::trackheight() + KdenliveSettings::trackheight() / 3 * 2));
}
if (m_automaticTransition) m_parameters.setAttribute("automatic", 1);
else if (m_parameters.attribute("automatic") == "1") m_automaticTransition = true;
+ if (m_parameters.attribute("force_track") == "1") m_forceTransitionTrack = true;
m_name = m_parameters.elementsByTagName("name").item(0).toElement().text();
m_secondClip = 0;
setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
void Transition::setTransitionParameters(const QDomElement params) {
m_parameters = params;
+ if (m_parameters.attribute("force_track") == "1") setForcedTrack(true, m_parameters.attribute("transition_btrack").toInt());
+ else if (m_parameters.attribute("force_track") == "0") setForcedTrack(false, m_parameters.attribute("transition_btrack").toInt());
m_name = m_parameters.elementsByTagName("name").item(0).toElement().text();
update();
}
}
void Transition::updateTransitionEndTrack(int newtrack) {
- m_transitionTrack = newtrack;
+ if (!m_forceTransitionTrack) m_transitionTrack = newtrack;
+}
+
+void Transition::setForcedTrack(bool force, int track) {
+ m_forceTransitionTrack = force;
+ m_transitionTrack = track;
+}
+
+bool Transition::forcedTrack() const {
+ return m_forceTransitionTrack;
}
void Transition::paint(QPainter *painter,
QRectF exposed = option->exposedRect;
painter->setClipRect(exposed);
QRectF br = rect();
+ QRectF mapped = painter->matrix().mapRect(br);
m_gradient.setStart(0, br.y());
m_gradient.setFinalStop(0, br.bottom());
painter->fillRect(br, m_gradient);
int top = (int)(br.y() + br.height() / 2 - 7);
QPointF p1(br.x(), br.y() + br.height() / 2 - 7);
painter->setMatrixEnabled(false);
- painter->drawPixmap(painter->matrix().map(p1) + QPointF(5, 0), transitionPixmap());
- painter->setPen(QColor(0, 0, 0, 180));
- top += painter->fontInfo().pixelSize();
- QPointF p2(br.x(), top);
- painter->drawText(painter->matrix().map(p2) + QPointF(26, 1), transitionName());
- painter->setPen(QColor(255, 255, 255, 180));
- QPointF p3(br.x(), top);
- painter->drawText(painter->matrix().map(p3) + QPointF(25, 0), transitionName());
+ //painter->drawPixmap(painter->matrix().map(p1) + QPointF(5, 0), transitionPixmap());
+ QString text = transitionName();
+ if (forcedTrack()) text.append("|>");
+ QRectF txtBounding = painter->boundingRect(mapped, Qt::AlignHCenter | Qt::AlignVCenter, " " + text + " ");
+ painter->fillRect(txtBounding, QBrush(QColor(50, 50, 0, 150)));
+ txtBounding.translate(QPointF(1, 1));
+ painter->setPen(QColor(255, 255, 255, 255));
+ painter->drawText(txtBounding, Qt::AlignCenter, text);
+
+ /* painter->setPen(QColor(0, 0, 0, 180));
+ top += painter->fontInfo().pixelSize();
+ QPointF p2(br.x(), top);
+ painter->drawText(painter->matrix().map(p2) + QPointF(26, 1), transitionName());
+ painter->setPen(QColor(255, 255, 255, 180));
+ QPointF p3(br.x(), top);
+ painter->drawText(painter->matrix().map(p3) + QPointF(25, 0), transitionName());*/
painter->setMatrixEnabled(true);
QPen pen = painter->pen();
if (isSelected()) {
m_parameters.setAttribute("transition_btrack", m_transitionTrack);
m_parameters.setAttribute("start", startPos().frames(m_fps));
m_parameters.setAttribute("end", endPos().frames(m_fps));
+ m_parameters.setAttribute("force_track", m_forceTransitionTrack);
if (m_secondClip) {
m_parameters.setAttribute("clipb_starttime", m_secondClip->startPos().frames(m_referenceClip->fps()));
bool isValid() const;
/** Transition should be linked to another track */
void updateTransitionEndTrack(int newtrack);
+ void setForcedTrack(bool force, int track);
+ bool forcedTrack() const;
const ClipItem *referencedClip() const;
Transition *clone();
bool isAutomatic() const;
bool m_singleClip;
QLinearGradient m_gradient;
QString m_name;
+ bool m_forceTransitionTrack;
/** true if the transition was added automatically and should be moved with its clip */
bool m_automaticTransition;
#include "kdenlivesettings.h"
#include "mainwindow.h"
-TransitionSettings::TransitionSettings(QWidget* parent): QWidget(parent) {
+TransitionSettings::TransitionSettings(QWidget* parent): QWidget(parent), m_tracksCount(0) {
ui.setupUi(this);
effectEdit = new EffectStackEdit(ui.frame);
connect(effectEdit, SIGNAL(seekTimeline(int)), this, SIGNAL(seekTimeline(int)));
//kDebug() << MainWindow::transitions.effectNames().size();
//ui.listWidget->setCurrentRow(0);
connect(ui.transitionList, SIGNAL(activated(int)), this, SLOT(slotTransitionChanged()));
+ connect(ui.transitionTrack, SIGNAL(activated(int)), this, SLOT(slotTransitionTrackChanged()));
+
connect(this, SIGNAL(transferParamDesc(const QDomElement&, int , int)), effectEdit , SLOT(transferParamDesc(const QDomElement&, int , int)));
connect(effectEdit, SIGNAL(parameterChanged(const QDomElement&, const QDomElement&)), this , SLOT(slotUpdateEffectParams(const QDomElement&, const QDomElement&)));
- ui.splitter->setStretchFactor(0, 1);
- ui.splitter->setStretchFactor(1, 10);
}
-void TransitionSettings::updateProjectFormat(MltVideoProfile profile, Timecode t) {
+void TransitionSettings::updateProjectFormat(MltVideoProfile profile, Timecode t, const uint tracksCount) {
+ m_tracksCount = tracksCount;
effectEdit->updateProjectFormat(profile, t);
+ QStringList tracksList;
+ tracksList << i18n("Auto");
+ for (uint i = 0; i < tracksCount; i++) {
+ tracksList << QString::number(i);
+ }
+ tracksList << i18n("Black");
+ ui.transitionTrack->blockSignals(true);
+ ui.transitionTrack->clear();
+ ui.transitionTrack->addItems(tracksList);
+ ui.transitionTrack->blockSignals(false);
}
emit transferParamDesc(newTransition, m_usedTransition->startPos().frames(KdenliveSettings::project_fps()), m_usedTransition->endPos().frames(KdenliveSettings::project_fps()));
} else {
//slotUpdateEffectParams(e, e);
- emit transferParamDesc(e, m_usedTransition->startPos().frames(KdenliveSettings::project_fps()), m_usedTransition->endPos().frames(KdenliveSettings::project_fps()));
+ effectEdit->transferParamDesc(e, m_usedTransition->startPos().frames(KdenliveSettings::project_fps()), m_usedTransition->endPos().frames(KdenliveSettings::project_fps()));
}
}
-void TransitionSettings::slotTransitionItemSelected(Transition* t) {
+void TransitionSettings::slotTransitionTrackChanged() {
+ emit transitionTrackUpdated(m_usedTransition, ui.transitionTrack->currentIndex());
+}
+
+void TransitionSettings::slotTransitionItemSelected(Transition* t, bool update) {
setEnabled(t != NULL);
if (t == m_usedTransition) {
- if (t && (t->duration() != m_transitionDuration || t->startPos() != m_transitionStart)) {
+ if (t == NULL) return;
+ if (update) {
+ ui.transitionTrack->blockSignals(true);
+ if (t->forcedTrack()) ui.transitionTrack->setCurrentIndex(m_tracksCount + 1 - t->transitionEndTrack());
+ else ui.transitionTrack->setCurrentIndex(0);
+ ui.transitionTrack->blockSignals(false);
+ }
+ if (update || t->duration() != m_transitionDuration || t->startPos() != m_transitionStart) {
m_transitionDuration = t->duration();
m_transitionStart = t->startPos();
slotTransitionChanged(false);
}
return;
- }
+ } else if (update) return;
m_usedTransition = t;
if (m_usedTransition) {
m_transitionDuration = t->duration();
m_transitionStart = t->startPos();
+ ui.transitionTrack->blockSignals(true);
+ if (!t->forcedTrack()) ui.transitionTrack->setCurrentIndex(0);
+ else ui.transitionTrack->setCurrentIndex(m_tracksCount + 1 - t->transitionEndTrack());
+ ui.transitionTrack->blockSignals(false);
int ix = ui.transitionList->findText(m_usedTransition->transitionName(), Qt::MatchExactly);
if (ix != -1) {
ui.transitionList->blockSignals(true);
class TransitionSettings : public QWidget {
Q_OBJECT
+
public:
TransitionSettings(QWidget* parent = 0);
void raiseWindow(QWidget*);
- void updateProjectFormat(MltVideoProfile profile, Timecode t);
+ void updateProjectFormat(MltVideoProfile profile, Timecode t, const uint tracksCount);
private:
Ui::TransitionSettings_UI ui;
Transition* m_usedTransition;
GenTime m_transitionDuration;
GenTime m_transitionStart;
+ int m_tracksCount;
public slots:
- void slotTransitionItemSelected(Transition*);
+ void slotTransitionItemSelected(Transition*, bool);
void slotTransitionChanged(bool reinit = true);
void slotUpdateEffectParams(const QDomElement&, const QDomElement&);
+private slots:
+ void slotTransitionTrackChanged();
+
signals:
void transitionUpdated(Transition *, QDomElement);
+ void transitionTrackUpdated(Transition *, int);
void transferParamDesc(const QDomElement&, int , int);
void seekTimeline(int);
};
<rect>
<x>0</x>
<y>0</y>
- <width>291</width>
+ <width>335</width>
<height>189</height>
</rect>
</property>
<item row="0" column="0" >
<widget class="QLabel" name="label" >
<property name="text" >
- <string>Transition type</string>
+ <string>Type</string>
</property>
</widget>
</item>
- <item row="1" column="0" colspan="2" >
- <widget class="QSplitter" name="splitter" >
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
+ <item row="0" column="1" >
+ <widget class="KComboBox" name="transitionList" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
- <widget class="QFrame" name="frame" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape" >
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="frameShadow" >
- <enum>QFrame::Plain</enum>
- </property>
- </widget>
</widget>
</item>
- <item row="0" column="1" >
- <widget class="KComboBox" name="transitionList" />
+ <item row="0" column="2" >
+ <widget class="QLabel" name="label_2" >
+ <property name="text" >
+ <string>with track</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3" >
+ <widget class="KComboBox" name="transitionTrack" />
+ </item>
+ <item row="1" column="0" colspan="4" >
+ <widget class="QFrame" name="frame" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape" >
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow" >
+ <enum>QFrame::Plain</enum>
+ </property>
+ </widget>
</item>
</layout>
- <zorder>splitter</zorder>
- <zorder>label</zorder>
- <zorder>transitionList</zorder>
</widget>
<customwidgets>
<customwidget>