X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Feffectstackedit.cpp;h=b10ed93e54be2829ad9943ddd8efa0ed2ca2f4f0;hb=6f8f092f36ef2a23f4d4cf44f75a48f219fcecc6;hp=980c364fa24bd2687effd3428f18a2f79825d202;hpb=cd1c0bca84b4ef6063f43f540c820a4f9ba97d6b;p=kdenlive diff --git a/src/effectstackedit.cpp b/src/effectstackedit.cpp index 980c364f..b10ed93e 100644 --- a/src/effectstackedit.cpp +++ b/src/effectstackedit.cpp @@ -41,23 +41,23 @@ #include -class Boolval: public EffectStackEdit::UiItem, public Ui::Boolval_UI +class Boolval: public QWidget, public Ui::Boolval_UI { }; -class Colorval: public EffectStackEdit::UiItem, public Ui::Colorval_UI +class Colorval: public QWidget, public Ui::Colorval_UI { }; -class Constval: public EffectStackEdit::UiItem, public Ui::Constval_UI +class Constval: public QWidget, public Ui::Constval_UI { }; -class Listval: public EffectStackEdit::UiItem, public Ui::Listval_UI +class Listval: public QWidget, public Ui::Listval_UI { }; -class Wipeval: public EffectStackEdit::UiItem, public Ui::Wipeval_UI +class Wipeval: public QWidget, public Ui::Wipeval_UI { }; @@ -65,32 +65,23 @@ class Wipeval: public EffectStackEdit::UiItem, public Ui::Wipeval_UI QMap EffectStackEdit::iconCache; EffectStackEdit::EffectStackEdit(QWidget *parent) : - QWidget(parent), + QScrollArea(parent), m_in(0), m_out(0), m_frameSize(QPoint()) { - setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding)); - QVBoxLayout *vbox1 = new QVBoxLayout(parent); - vbox1->setContentsMargins(0, 0, 0, 0); - vbox1->setSpacing(0); - - QScrollArea *area = new QScrollArea; - QWidget *wid = new QWidget(parent); - area->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - area->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - area->setFrameStyle(QFrame::NoFrame); - wid->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum)); - area->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::MinimumExpanding)); - - vbox1->addWidget(area); - area->setWidget(wid); - area->setWidgetResizable(true); - m_vbox = new QVBoxLayout(wid); + m_baseWidget = new QWidget(this); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); + setFrameStyle(QFrame::NoFrame); + setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::MinimumExpanding)); + + setWidget(m_baseWidget); + setWidgetResizable(true); + m_vbox = new QVBoxLayout(m_baseWidget); m_vbox->setContentsMargins(0, 0, 0, 0); m_vbox->setSpacing(0); - wid->show(); - + //wid->show(); } EffectStackEdit::~EffectStackEdit() @@ -130,12 +121,12 @@ void EffectStackEdit::updateParameter(const QString &name, const QString &value) void EffectStackEdit::transferParamDesc(const QDomElement d, int in, int out) { - kDebug() << " + + + +DELETING EFFECT STACK"; clearAllItems(); m_params = d; m_in = in; m_out = out; if (m_params.isNull()) { + kDebug() << "// EMPTY EFFECT STACK"; return; } @@ -150,12 +141,11 @@ void EffectStackEdit::transferParamDesc(const QDomElement d, int in, int out) for (int i = 0; i < namenode.count() ; i++) { - kDebug() << "in form"; QDomElement pa = namenode.item(i).toElement(); QDomNode na = pa.firstChildElement("name"); QString type = pa.attribute("type"); QString paramName = i18n(na.toElement().text().toUtf8().data()); - QWidget * toFillin = new QWidget; + QWidget * toFillin = new QWidget(m_baseWidget); QString value = pa.attribute("value").isNull() ? pa.attribute("default") : pa.attribute("value"); @@ -234,7 +224,6 @@ void EffectStackEdit::transferParamDesc(const QDomElement d, int in, int out) m_vbox->addWidget(pl); m_valueItems[paramName+"complex"] = pl; connect(pl, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters())); - m_items.append(pl); } else if (type == "geometry") { Geometryval *geo = new Geometryval(m_profile, m_frameSize); geo->setupParam(pa, minFrame, maxFrame); @@ -242,18 +231,16 @@ void EffectStackEdit::transferParamDesc(const QDomElement d, int in, int out) m_valueItems[paramName+"geometry"] = geo; connect(geo, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters())); connect(geo, SIGNAL(seekToPos(int)), this, SLOT(slotSeekToPos(int))); - m_items.append(geo); } else if (type == "keyframe") { // keyframe editor widget kDebug() << "min: " << m_in << ", MAX: " << m_out; - KeyframeEdit *geo = new KeyframeEdit(pa, m_out - m_in, pa.attribute("min").toInt(), pa.attribute("max").toInt(), m_timecode); + KeyframeEdit *geo = new KeyframeEdit(pa, m_out - m_in - 1, pa.attribute("min").toInt(), pa.attribute("max").toInt(), m_timecode); //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())); - m_items.append(geo); } else if (type == "color") { Colorval *cval = new Colorval; cval->setupUi(toFillin); @@ -277,7 +264,6 @@ void EffectStackEdit::transferParamDesc(const QDomElement d, int in, int out) m_vbox->addWidget(posedit); m_valueItems[paramName+"position"] = posedit; connect(posedit, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters())); - m_items.append(posedit); } else if (type == "wipe") { Wipeval *wpval = new Wipeval; wpval->setupUi(toFillin); @@ -339,7 +325,6 @@ void EffectStackEdit::transferParamDesc(const QDomElement d, int in, int out) } if (toFillin) { - m_items.append(toFillin); m_vbox->addWidget(toFillin); } } @@ -421,8 +406,7 @@ QString EffectStackEdit::getWipeString(wipeInfo info) void EffectStackEdit::collectAllParameters() { - if (m_valueItems.isEmpty()) return; - + if (m_valueItems.isEmpty() || m_params.isNull()) return; const QDomElement oldparam = m_params.cloneNode().toElement(); QDomElement newparam = oldparam.cloneNode().toElement(); QDomNodeList namenode = newparam.elementsByTagName("parameter"); @@ -459,7 +443,7 @@ void EffectStackEdit::collectAllParameters() namenode.item(i) = complex->getParamDesc(); } else if (type == "geometry") { Geometryval *geom = ((Geometryval*)m_valueItems.value(paramName)); - namenode.item(i) = geom->getParamDesc(); + namenode.item(i).toElement().setAttribute("value", geom->getValue()); } else if (type == "position") { PositionEdit *pedit = ((PositionEdit*)m_valueItems.value(paramName)); int pos = pedit->getPosition(); @@ -512,7 +496,7 @@ void EffectStackEdit::collectAllParameters() void EffectStackEdit::createSliderItem(const QString& name, int val , int min, int max, const QString suffix) { - QWidget* toFillin = new QWidget; + QWidget* toFillin = new QWidget(m_baseWidget); Constval *ctval = new Constval; ctval->setupUi(toFillin); ctval->horizontalSlider->setMinimum(min); @@ -526,7 +510,6 @@ void EffectStackEdit::createSliderItem(const QString& name, int val , int min, i m_valueItems[name] = ctval; m_uiItems.append(ctval); connect(ctval->horizontalSlider, SIGNAL(valueChanged(int)) , this, SLOT(collectAllParameters())); - m_items.append(toFillin); m_vbox->addWidget(toFillin); } @@ -539,21 +522,18 @@ void EffectStackEdit::clearAllItems() { blockSignals(true); m_valueItems.clear(); - - while (!m_items.isEmpty()) { - QWidget * die = m_items.takeFirst(); + m_uiItems.clear(); + /*while (!m_items.isEmpty()) { + QWidget *die = m_items.takeFirst(); die->disconnect(); delete die; - } - - qDeleteAll(m_uiItems); - m_uiItems.clear(); - m_items.clear(); - QLayoutItem *item = m_vbox->itemAt(0); - while (item) { - m_vbox->removeItem(item); - delete item; - item = m_vbox->itemAt(0); + }*/ + //qDeleteAll(m_uiItems); + QLayoutItem *child; + while ((child = m_vbox->takeAt(0)) != 0) { + QWidget *wid = child->widget(); + delete child; + if (wid) delete wid; } blockSignals(false); }