#include "ui_boolval_ui.h"
#include "ui_colorval_ui.h"
#include "ui_wipeval_ui.h"
-#include "ui_keyframeeditor_ui.h"
#include "complexparameter.h"
#include "geometryval.h"
-#include "keyframeedit.h"
#include "positionedit.h"
#include "effectslist.h"
#include "kdenlivesettings.h"
QScrollArea(parent),
m_in(0),
m_out(0),
- m_frameSize(QPoint())
+ m_frameSize(QPoint()),
+ m_keyframeEditor(NULL)
{
m_baseWidget = new QWidget(this);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
void EffectStackEdit::transferParamDesc(const QDomElement d, int in, int out)
{
clearAllItems();
+ m_keyframeEditor = NULL;
m_params = d;
m_in = in;
m_out = out;
} else if (type == "keyframe" || type == "simplekeyframe") {
// keyframe editor widget
kDebug() << "min: " << m_in << ", MAX: " << m_out;
- KeyframeEdit *geo = new KeyframeEdit(pa, m_out - m_in - 1, pa.attribute("min").toInt(), pa.attribute("max").toInt(), m_timecode, paramName);
- //geo->setupParam(100, pa.attribute("min").toInt(), pa.attribute("max").toInt(), pa.attribute("keyframes"));
- //connect(geo, SIGNAL(seekToPos(int)), this, SLOT(slotSeekToPos(int)));
- //geo->setupParam(pa, minFrame, maxFrame);
- m_vbox->addWidget(geo);
- m_valueItems[paramName+"keyframe"] = geo;
- connect(geo, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters()));
+ if (m_keyframeEditor == NULL) {
+ KeyframeEdit *geo = new KeyframeEdit(pa, m_out - m_in - 1, pa.attribute("min").toInt(), pa.attribute("max").toInt(), m_timecode, paramName);
+ m_vbox->addWidget(geo);
+ m_valueItems[paramName+"keyframe"] = geo;
+ m_keyframeEditor = geo;
+ connect(geo, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters()));
+ }
+ else {
+ // we already have a keyframe editor, so just add another column for the new param
+ m_keyframeEditor->addParameter(pa);
+ }
} else if (type == "color") {
Colorval *cval = new Colorval;
cval->setupUi(toFillin);
delete m_delegate;
}
+void KeyframeEdit::addParameter(QDomElement e) {
+ QDomNode na = e.firstChildElement("name");
+ kDebug() << "- - - -ADD PARAM:" <<na.toElement().text();
+ QString paramName = i18n(na.toElement().text().toUtf8().data());
+ keyframe_list->setColumnCount(3);
+ keyframe_list->headerItem()->setText(2, paramName);
+
+ QStringList frames = e.attribute("keyframes").split(";", QString::SkipEmptyParts);
+ for (int i = 0; i < frames.count(); i++) {
+ QString framePos = m_timecode.getTimecodeFromFrames(frames.at(i).section(':', 0, 0).toInt());
+ QList<QTreeWidgetItem *> list = keyframe_list->findItems(framePos, Qt::MatchExactly, 0);
+ QTreeWidgetItem *item;
+ if (!list.isEmpty()) {
+ item = list.at(0);
+ item->setText(2, frames.at(i).section(':', 1, 1));
+ }
+ else {
+ item = new QTreeWidgetItem(QStringList() << framePos << QString() << frames.at(i).section(':', 1, 1));
+ item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled);
+ keyframe_list->addTopLevelItem(item);
+ }
+ }
+}
+
void KeyframeEdit::setupParam(QDomElement e)
{
if (!e.isNull()) m_param = e;