QMap<QString, QImage> EffectStackEdit::iconCache;
EffectStackEdit::EffectStackEdit(Monitor *monitor, QWidget *parent) :
- QScrollArea(parent),
- m_in(0),
- m_out(0),
- m_frameSize(QPoint()),
- m_keyframeEditor(NULL),
- m_monitor(monitor)
+ QScrollArea(parent),
+ m_in(0),
+ m_out(0),
+ m_frameSize(QPoint()),
+ m_keyframeEditor(NULL),
+ m_monitor(monitor)
{
m_baseWidget = new QWidget(this);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
void EffectStackEdit::updateParameter(const QString &name, const QString &value)
{
m_params.setAttribute(name, value);
+
+ if (name == "disable") {
+ // if effect is disabled, disable parameters widget
+ setEnabled(value.toInt() == 0 || !KdenliveSettings::disable_effect_parameters());
+ if (KdenliveSettings::on_monitor_effects()) {
+ // effect disabled, hide monitor scene if any
+ QDomNodeList namenode = m_params.elementsByTagName("parameter");
+ for (int i = 0; i < namenode.count() ; i++) {
+ QDomNode pa = namenode.item(i);
+ QDomNode na = pa.firstChildElement("name");
+ QString type = pa.attributes().namedItem("type").nodeValue();
+ if (type == "geometry") {
+ QString paramName = i18n(na.toElement().text().toUtf8().data());
+ paramName.append("geometry");
+ GeometryWidget *geometry = ((GeometryWidget*)m_valueItems.value(paramName));
+ geometry->slotShowScene(value.toInt() == 0 || !KdenliveSettings::disable_effect_parameters());
+ }
+ }
+ }
+ }
}
void EffectStackEdit::transferParamDesc(const QDomElement d, int pos, int in, int out, bool isEffect)
const int minFrame = e.attribute("start").toInt();
const int maxFrame = e.attribute("end").toInt();
+ bool disable = d.attribute("disable") == "1" && KdenliveSettings::disable_effect_parameters();
+ setEnabled(!disable);
+
for (int i = 0; i < namenode.count() ; i++) {
QDomElement pa = namenode.item(i).toElement();
lsval->setupUi(toFillin);
QStringList listitems = pa.attribute("paramlist").split(',');
QStringList listitemsdisplay = pa.attribute("paramlistdisplay").split(',');
- if (listitemsdisplay.count() != listitems.count()) listitemsdisplay = listitems;
- //lsval->list->addItems(listitems);
+ if (listitemsdisplay.count() != listitems.count())
+ listitemsdisplay = listitems;
lsval->list->setIconSize(QSize(30, 30));
for (int i = 0; i < listitems.count(); i++) {
lsval->list->addItem(listitemsdisplay.at(i), listitems.at(i));
}
}
if (!value.isEmpty()) lsval->list->setCurrentIndex(listitems.indexOf(value));
- lsval->title->setTitle(paramName);
+ lsval->name->setText(paramName);
m_valueItems[paramName] = lsval;
connect(lsval->list, SIGNAL(currentIndexChanged(int)) , this, SLOT(collectAllParameters()));
m_uiItems.append(lsval);
Boolval *bval = new Boolval;
bval->setupUi(toFillin);
bval->checkBox->setCheckState(value == "0" ? Qt::Unchecked : Qt::Checked);
- bval->checkBox->setText(paramName);
+ bval->name->setText(paramName);
m_valueItems[paramName] = bval;
connect(bval->checkBox, SIGNAL(stateChanged(int)) , this, SLOT(collectAllParameters()));
m_uiItems.append(bval);
connect(pl, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters()));
} else if (type == "geometry") {
if (KdenliveSettings::on_monitor_effects()) {
- GeometryWidget *geometry = new GeometryWidget(m_monitor, m_timecode, pos, isEffect, this);
+ GeometryWidget *geometry = new GeometryWidget(m_monitor, m_timecode, pos, isEffect, disable, this);
// connect this before setupParam to make sure the monitor scene shows up at startup
connect(geometry, SIGNAL(checkMonitorPosition(int)), this, SIGNAL(checkMonitorPosition(int)));
connect(geometry, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters()));
// keyframe editor widget
kDebug() << "min: " << m_in << ", MAX: " << m_out;
if (m_keyframeEditor == NULL) {
- KeyframeEdit *geo = new KeyframeEdit(pa, m_in, m_in + m_out, pa.attribute("min").toInt(), pa.attribute("max").toInt(), m_timecode, e.attribute("active_keyframe", "-1").toInt());
+ KeyframeEdit *geo = new KeyframeEdit(pa, m_in, m_in + m_out, m_timecode, e.attribute("active_keyframe", "-1").toInt());
m_vbox->addWidget(geo);
m_valueItems[paramName+"keyframe"] = geo;
m_keyframeEditor = geo;
m_vbox->addWidget(toFillin);
}
m_vbox->addStretch();
+
+ if (m_keyframeEditor)
+ m_keyframeEditor->checkVisibleParam();
}
wipeInfo EffectStackEdit::getWipeInfo(QString value)
setValue = getWipeString(info);
} else if ((type == "simplekeyframe" || type == "keyframe") && m_keyframeEditor) {
+ QDomElement elem = pa.toElement();
QString realName = i18n(na.toElement().text().toUtf8().data());
QString val = m_keyframeEditor->getValue(realName);
- //kDebug() << "SET VALUE: " << val;
- namenode.item(i).toElement().setAttribute("keyframes", val);
+ elem.setAttribute("keyframes", val);
+
+ if (m_keyframeEditor->isVisibleParam(realName))
+ elem.setAttribute("intimeline", "1");
+ else if (elem.hasAttribute("intimeline"))
+ elem.removeAttribute("intimeline");
} else if (type == "url") {
KUrlRequester *req = ((Urlval*)m_valueItems.value(paramName))->urlwidget;
setValue = req->url().path();