]> git.sesse.net Git - kdenlive/commitdiff
some progress on slideshow clips
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 20 Jul 2008 18:26:30 +0000 (18:26 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 20 Jul 2008 18:26:30 +0000 (18:26 +0000)
svn path=/branches/KDE4/; revision=2331

15 files changed:
src/clipmanager.cpp
src/clipmanager.h
src/clipproperties.cpp
src/docclipbase.cpp
src/docclipbase.h
src/effectstackview.cpp
src/kdenlivedoc.cpp
src/kdenlivedoc.h
src/monitor.cpp
src/projectlist.cpp
src/renderer.cpp
src/slideshowclip.cpp
src/slideshowclip.h
src/widgets/clipproperties_ui.ui
src/widgets/slideshowclip_ui.ui

index 67691ff2fbfd6a24d3e3848137c5d44de7043b44..40a6485cc526fd6551779ad94839aecbcad760ef 100644 (file)
@@ -131,7 +131,7 @@ void ClipManager::slotAddColorClipFile(const QString name, const QString color,
     m_doc->commandStack()->push(command);
 }
 
-void ClipManager::slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, QString group, const int groupId) {
+void ClipManager::slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, QString group, const int groupId) {
     QDomDocument doc;
     QDomElement prod = doc.createElement("producer");
     prod.setAttribute("resource", path);
@@ -141,8 +141,11 @@ void ClipManager::slotAddSlideshowClipFile(const QString name, const QString pat
     prod.setAttribute("in", "0");
     prod.setAttribute("out", m_doc->getFramePos(duration) * count);
     prod.setAttribute("ttl", m_doc->getFramePos(duration));
+    prod.setAttribute("luma_duration", m_doc->getFramePos(luma_duration));
     prod.setAttribute("name", name);
     prod.setAttribute("loop", loop);
+    prod.setAttribute("fade", fade);
+    prod.setAttribute("luma_file", luma_file);
     if (!group.isEmpty()) {
         prod.setAttribute("groupname", group);
         prod.setAttribute("groupid", groupId);
index 48b7c545621e87c2fa2a2ed2569239e1fbaf6b1e..9c9b54c1b88726b56870642324adbad4471d9b70 100644 (file)
@@ -51,7 +51,7 @@ Q_OBJECT public:
     void slotAddClipFile(const KUrl url, const QString group, const int groupId);
     void slotAddTextClipFile(const QString path, const QString xml, const QString group, const int groupId);
     void slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const int groupId);
-    void slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, bool loop, const QString group, const int groupId);
+    void slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const QString group, const int groupId);
     DocClipBase *getClipById(int clipId);
     void slotDeleteClip(uint clipId);
     void setThumbsProgress(const QString &message, int progress);
index 8e9436aec9aca2941898badb0516dcfe517a457b..5383988fb13923316ddf23c073f193d6e155efdf 100644 (file)
@@ -71,12 +71,38 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg
         types << "JPG" << "PNG" << "BMP" << "GIF";
         m_view.image_type->addItems(types);
         m_view.slide_loop->setChecked(props.value("loop").toInt());
+        m_view.slide_fade->setChecked(props.value("fade").toInt());
         QString path = props.value("resource");
         if (path.endsWith("png")) m_view.image_type->setCurrentIndex(TYPE_PNG);
         else if (path.endsWith("bmp")) m_view.image_type->setCurrentIndex(TYPE_BMP);
         else if (path.endsWith("gif")) m_view.image_type->setCurrentIndex(TYPE_GIF);
         m_view.slide_duration->setText(tc.getTimecodeFromFrames(props.value("ttl").toInt()));
         parseFolder();
+
+        m_view.luma_duration->setText(tc.getTimecodeFromFrames(props.value("luma_duration").toInt()));
+        QString lumaFile = props.value("luma_file");
+        QString profilePath = KdenliveSettings::mltpath();
+        profilePath = profilePath.section('/', 0, -3);
+        profilePath += "/lumas/PAL/";
+
+        QDir dir(profilePath);
+        QStringList result = dir.entryList(QDir::Files);
+        QStringList imagefiles;
+        QStringList imagenamelist;
+        int current;
+        foreach(QString file, result) {
+            if (file.endsWith(".pgm")) {
+                m_view.luma_file->addItem(KIcon(profilePath + file), file, profilePath + file);
+                if (!lumaFile.isEmpty() && lumaFile == QString(profilePath + file))
+                    current = m_view.luma_file->count() - 1;
+            }
+        }
+
+        if (!lumaFile.isEmpty()) {
+            m_view.slide_luma->setChecked(true);
+            m_view.luma_file->setCurrentIndex(current);
+        }
+
         connect(m_view.image_type, SIGNAL(currentIndexChanged(int)), this, SLOT(parseFolder()));
     } else if (t != AUDIO) {
         m_view.tabWidget->removeTab(SLIDETAB);
@@ -182,8 +208,12 @@ QMap <QString, QString> ClipProperties::properties() {
             props["colour"] = "0x" + new_color.right(6) + "ff";
         }
     } else if (t == SLIDESHOW) {
-        props["loop"] = QString::number((int) m_view.slide_loop->isChecked());
         QMap <QString, QString> old_props = m_clip->properties();
+        QString value = QString::number((int) m_view.slide_loop->isChecked());
+        if (old_props.value("loop") != value) props["loop"] = value;
+        value = QString::number((int) m_view.slide_fade->isChecked());
+        if (old_props.value("fade") != value) props["fade"] = value;
+
         QString extension;
         switch (m_view.image_type->currentIndex()) {
         case TYPE_PNG:
@@ -215,6 +245,24 @@ QMap <QString, QString> ClipProperties::properties() {
             m_clipNeedsRefresh = true;
             props["out"] = QString::number(duration * m_count);
         }
+        if (m_view.slide_fade->isChecked()) {
+            int luma_duration = m_tc.getFrameCount(m_view.luma_duration->text(), m_fps);
+            if (luma_duration != old_props.value("luma_duration").toInt()) {
+                m_clipNeedsRefresh = true;
+                props["luma_duration"] = QString::number(luma_duration);
+            }
+            QString lumaFile;
+            if (m_view.slide_luma->isChecked())
+                lumaFile = m_view.luma_file->itemData(m_view.luma_file->currentIndex()).toString();
+            if (lumaFile != old_props.value("luma_file")) {
+                m_clipNeedsRefresh = true;
+                props["luma_file"] = lumaFile;
+            }
+        } else {
+            if (old_props.value("luma_file") != QString()) {
+                props["luma_file"] = QString();
+            }
+        }
 
     }
     return props;
index 3bb9dab3e365a3f34bf4a0bcd0a2200c8354dcd4..4abf90fb613b2b98acc6e0bf5f6ab478949038c9 100644 (file)
@@ -365,16 +365,80 @@ Mlt::Producer *DocClipBase::producer() {
     return m_clipProducer;
 }
 
+void DocClipBase::slotRefreshProducer() {
+    if (m_clipProducer == NULL) return;
+    kDebug() << "////////////   REFRESH CLIP !!!!!!!!!!!!!!!!";
+    if (m_clipType == SLIDESHOW) {
+        /*char *tmp = (char *) qstrdup(getProperty("resource").toUtf8().data());
+               Mlt::Producer producer(*(m_clipProducer->profile()), tmp);
+               delete[] tmp;
+        delete m_clipProducer;
+        m_clipProducer = new Mlt::Producer(producer.get_producer());
+        if (!getProperty("out").isEmpty()) m_clipProducer->set_in_and_out(getProperty("in").toInt(), getProperty("out").toInt());*/
+        m_clipProducer->set("ttl", getProperty("ttl").toInt());
+        //m_clipProducer->set("id", getProperty("id"));
+        if (getProperty("fade") == "1") {
+            // we want a fade filter effect
+            kDebug() << "////////////   FADE WANTED";
+            Mlt::Service clipService(m_clipProducer->get_service());
+            int ct = 0;
+            Mlt::Filter *filter = clipService.filter(ct);
+            while (filter) {
+                if (filter->get("mlt_service") == "luma") {
+                    break;
+                }
+                ct++;
+                filter = clipService.filter(ct);
+            }
+
+            if (filter && filter->get("mlt_service") == "luma") {
+                filter->set("period", getProperty("ttl").toInt() - 1);
+                filter->set("luma.out", getProperty("luma_duration").toInt());
+                QString resource = getProperty("luma_file");
+                char *tmp = (char *) qstrdup(resource.toUtf8().data());
+                filter->set("luma.resource", tmp);
+                delete[] tmp;
+            } else {
+                // filter does not exist, create it...
+                Mlt::Filter *filter = new Mlt::Filter(*(m_clipProducer->profile()), "luma");
+                filter->set("period", getProperty("ttl").toInt() - 1);
+                filter->set("luma.out", getProperty("luma_duration").toInt());
+                QString resource = getProperty("luma_file");
+                char *tmp = (char *) qstrdup(resource.toUtf8().data());
+                filter->set("luma.resource", tmp);
+                delete[] tmp;
+                clipService.attach(*filter);
+            }
+        } else {
+            kDebug() << "////////////   FADE NOT WANTED!!!";
+            Mlt::Service clipService(m_clipProducer->get_service());
+            int ct = 0;
+            Mlt::Filter *filter = clipService.filter(0);
+            while (filter) {
+                if (filter->get("mlt_service") == "luma") {
+                    clipService.detach(*filter);
+                } else ct++;
+                filter = clipService.filter(ct);
+            }
+        }
+    }
+}
+
 void DocClipBase::setProperties(QMap <QString, QString> properties) {
     // changing clip type is not allowed
     properties.remove("type");
     QMapIterator<QString, QString> i(properties);
+    bool refreshProducer = false;
+    QStringList keys;
+    keys << "luma_duration" << "luma_file" << "fade" << "ttl";
     while (i.hasNext()) {
         i.next();
         m_properties.insert(i.key(), i.value());
         if (i.key() == "resource") m_thumbProd->updateClipUrl(KUrl(i.value()));
         else if (i.key() == "out") setDuration(GenTime(i.value().toInt(), KdenliveSettings::project_fps()));
+        else if (m_clipType == SLIDESHOW && keys.contains(i.key())) refreshProducer = true;
     }
+    if (refreshProducer) slotRefreshProducer();
 }
 
 void DocClipBase::setProperty(QString key, QString value) {
index 51ecdd039e6a103512972c5f60e12e889f7d7d32..cd77e06d3537822f519963d2702f5a2c57feb0b9 100644 (file)
@@ -215,6 +215,7 @@ private:   // Private attributes
     QMap <QString, QString> m_properties;
     /** Create connections for audio thumbnails */
     void slotCreateAudioTimer();
+    void slotRefreshProducer();
 
 public slots:
     void updateAudioThumbnail(QMap<int, QMap<int, QByteArray> > data);
index 4c0b68891c0ca7ff2f7b498281cd6b3c5e09b07b..09c92f5f363ebc0a69971935cddcc05c5bf6260a 100644 (file)
@@ -162,7 +162,7 @@ void EffectStackView::setupListView(int ix) {
         ui.buttonDown->setEnabled(false);
     } else {
         if (ix < 0) ix = 0;
-       if (ix > ui.effectlist->count() - 1) ix = ui.effectlist->count() - 1;
+        if (ix > ui.effectlist->count() - 1) ix = ui.effectlist->count() - 1;
         ui.effectlist->setCurrentRow(ix);
         ui.buttonDel->setEnabled(true);
         ui.buttonSave->setEnabled(true);
index 1fb0f1b5abb1b8c370fc0a00c6840f290d5877ad..0c1c6aa3182e6ea92215ee9dd2e4f783cf0e7a4e 100644 (file)
@@ -646,8 +646,8 @@ void KdenliveDoc::slotAddColorClipFile(const QString name, const QString color,
     setModified(true);
 }
 
-void KdenliveDoc::slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, bool loop, const QString group, const int groupId) {
-    m_clipManager->slotAddSlideshowClipFile(name, path, count, duration, loop, group, groupId);
+void KdenliveDoc::slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const QString group, const int groupId) {
+    m_clipManager->slotAddSlideshowClipFile(name, path, count, duration, loop, fade, luma_duration, luma_file, group, groupId);
     setModified(true);
 }
 
index 76f123b7ee7318591f44479e0008014ab77e009a..897475084f0bbf01724ac33582bb303153673f73 100644 (file)
@@ -73,7 +73,7 @@ Q_OBJECT public:
     void slotDeleteFolder(const QString folderName, const int id);
     void slotEditFolder(const QString folderName, const QString oldfolderName, int clipId);
     void slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const int groupId = -1);
-    void slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, bool loop, const QString group, const int groupId = -1);
+    void slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const QString group, const int groupId = -1);
     void deleteClip(const uint clipId);
     int getFramePos(QString duration);
     DocClipBase *getBaseClip(int clipId);
index ac44012a87e68815e9b45cd3865a0e64230bb6ba..03cc00dbe148c6e3d1ada2866835149dbc4cc4e5 100644 (file)
@@ -303,6 +303,7 @@ void Monitor::slotSetXml(DocClipBase *clip, const int position) {
         m_currentClip = clip;
         render->setProducer(clip->producer(), 0);
         m_ruler->slotNewValue(0);
+        //adjustRulerSize(clip->producer()->get_playtime());
         m_timePos->setText("00:00:00:00");
         m_position = 0;
     }
index b9191ced82acdc305cbaaf63b3645f76b8595f38..c93a703166fc4552a3149f648705aa4d843cdd7b 100644 (file)
@@ -386,7 +386,7 @@ void ProjectList::slotAddSlideshowClip() {
             groupId = item->clipId();
         }
 
-        m_doc->slotAddSlideshowClipFile(dia->clipName(), dia->selectedPath(), dia->imageCount(), dia->clipDuration(), dia->loop(), group, groupId);
+        m_doc->slotAddSlideshowClipFile(dia->clipName(), dia->selectedPath(), dia->imageCount(), dia->clipDuration(), dia->loop(), dia->fade(), dia->lumaDuration(), dia->lumaFile(), group, groupId);
     }
     delete dia;
 }
index 1ba4b8b4f7e00d9f9288d339342b32e041f0e5b0..7166e75321c49b0abc72f79eaab6b3f2c1d79f88 100644 (file)
@@ -392,7 +392,6 @@ void Render::getFileProperties(const QDomElement &xml, int clipId) {
     if (xml.attribute("type").toInt() == COLOR) {
         char *tmp = decodedString("colour:" + xml.attribute("colour"));
         producer = new Mlt::Producer(*m_mltProfile, "fezzik", tmp);
-        producer->set_in_and_out(xml.attribute("in").toInt(), xml.attribute("out").toInt());
         delete[] tmp;
     } else if (url.isEmpty()) {
         QDomDocument doc;
@@ -408,10 +407,10 @@ void Render::getFileProperties(const QDomElement &xml, int clipId) {
     } else {
         char *tmp = decodedString(url.path());
         producer = new Mlt::Producer(*m_mltProfile, tmp);
-        if (!xml.attribute("out").isEmpty()) producer->set_in_and_out(xml.attribute("in").toInt(), xml.attribute("out").toInt());
-       if (!xml.attribute("ttl").isEmpty()) producer->set("ttl", xml.attribute("ttl").toInt());
         delete[] tmp;
     }
+    if (xml.hasAttribute("out")) producer->set_in_and_out(xml.attribute("in").toInt(), xml.attribute("out").toInt());
+
     if (producer->is_blank()) {
         kDebug() << " / / / / / / / /ERRROR / / / / // CANNOT LOAD PRODUCER: ";
         return;
@@ -426,6 +425,25 @@ void Render::getFileProperties(const QDomElement &xml, int clipId) {
     //kDebug() << "///////  PRODUCER: " << url.path() << " IS: " << producer.get_playtime();
 
     Mlt::Frame * frame = producer->get_frame();
+
+    if (xml.attribute("type").toInt() == SLIDESHOW) {
+        if (xml.hasAttribute("ttl")) producer->set("ttl", xml.attribute("ttl").toInt());
+        if (xml.attribute("fade") == "1") {
+            // user wants a fade effect to slideshow
+            Mlt::Filter *filter = new Mlt::Filter(*m_mltProfile, "luma");
+            if (xml.hasAttribute("ttl")) filter->set("period", xml.attribute("ttl").toInt() - 1);
+            if (xml.hasAttribute("luma_duration") && !xml.attribute("luma_duration").isEmpty()) filter->set("luma.out", xml.attribute("luma_duration").toInt());
+            if (xml.hasAttribute("luma_file") && !xml.attribute("luma_file").isEmpty()) {
+                char *tmp = decodedString(xml.attribute("luma_file"));
+                filter->set("luma.resource", tmp);
+                delete[] tmp;
+            }
+            Mlt::Service clipService(producer->get_service());
+            clipService.attach(*filter);
+        }
+    }
+
+
     filePropertyMap["fps"] = producer->get("source_fps");
 
     if (frame && frame->is_valid()) {
@@ -857,7 +875,7 @@ void Render::switchPlay() {
     if (!m_mltProducer)
         return;
     if (m_mltProducer->get_speed() == 0.0) {
-        m_isBlocked = false;
+        //m_isBlocked = false;
         m_mltProducer->set_speed(1.0);
         m_mltConsumer->set("refresh", 1);
         kDebug() << " *********  RENDER PLAY: " << m_mltProducer->get_speed();
@@ -865,7 +883,7 @@ void Render::switchPlay() {
         //m_isBlocked = true;
         m_mltConsumer->set("refresh", 0);
         m_mltProducer->set_speed(0.0);
-        m_isBlocked = true;
+        //m_isBlocked = true;
         m_mltProducer->seek((int) m_framePosition);
         //kDebug()<<" *********  RENDER PAUSE: "<<m_mltProducer->get_speed();
         //m_mltConsumer->set("refresh", 0);
@@ -934,7 +952,6 @@ void Render::seekToFrame(int pos) {
     //kDebug()<<" *********  RENDER SEEK TO POS";
     if (!m_mltProducer)
         return;
-    //kDebug()<<"//////////  KDENLIVE SEEK: "<<(int) (time.frames(m_fps));
     m_mltProducer->seek(pos);
     refresh();
 }
index 79ce97f0bb8cf2e5a26a569202a268ca9e214e67..6fba36736f9e0ec17cb598015bbfed4f766f785b 100644 (file)
@@ -40,15 +40,51 @@ SlideshowClip::SlideshowClip(QWidget * parent): QDialog(parent), m_count(0) {
     m_view.icon_list->setIconSize(QSize(50, 50));
     connect(m_view.folder_url, SIGNAL(textChanged(const QString &)), this, SLOT(parseFolder()));
     connect(m_view.image_type, SIGNAL(currentIndexChanged(int)), this, SLOT(parseFolder()));
+
+    connect(m_view.slide_fade, SIGNAL(stateChanged(int)), this, SLOT(slotEnableLuma(int)));
+    connect(m_view.luma_fade, SIGNAL(stateChanged(int)), this, SLOT(slotEnableLumaFile(int)));
+
     m_view.image_type->addItem("JPG");
     m_view.image_type->addItem("PNG");
     m_view.image_type->addItem("BMP");
     m_view.image_type->addItem("GIF");
-    m_view.clip_duration->setText("00:00:03:00");
+    m_view.clip_duration->setText(KdenliveSettings::image_duration());
+    m_view.luma_duration->setText("00:00:00:24");
     m_view.folder_url->setUrl(QDir::homePath());
+
+
+    QString profilePath = KdenliveSettings::mltpath();
+    profilePath = profilePath.section('/', 0, -3);
+    profilePath += "/lumas/PAL/";
+
+    QDir dir(profilePath);
+    QStringList result = dir.entryList(QDir::Files);
+    QStringList imagefiles;
+    QStringList imagenamelist;
+    foreach(QString file, result) {
+        if (file.endsWith(".pgm")) {
+            m_view.luma_file->addItem(KIcon(profilePath + file), file, profilePath + file);
+        }
+    }
+
     adjustSize();
 }
 
+void SlideshowClip::slotEnableLuma(int state) {
+    bool enable = false;
+    if (state == Qt::Checked) enable = true;
+    m_view.luma_duration->setEnabled(enable);
+    m_view.luma_fade->setEnabled(enable);
+    if (enable) m_view.luma_file->setEnabled(m_view.luma_fade->isChecked());
+    else m_view.luma_file->setEnabled(false);
+}
+
+void SlideshowClip::slotEnableLumaFile(int state) {
+    bool enable = false;
+    if (state == Qt::Checked) enable = true;
+    m_view.luma_file->setEnabled(enable);
+}
+
 void SlideshowClip::parseFolder() {
     m_view.icon_list->clear();
     QDir dir(m_view.folder_url->url().path());
@@ -117,6 +153,20 @@ int SlideshowClip::imageCount() const {
 bool SlideshowClip::loop() const {
     return m_view.slide_loop->isChecked();
 }
+
+bool SlideshowClip::fade() const {
+    return m_view.slide_fade->isChecked();
+}
+
+QString SlideshowClip::lumaDuration() const {
+    return m_view.luma_duration->text();
+}
+
+QString SlideshowClip::lumaFile() const {
+    if (!m_view.luma_fade->isChecked() || !m_view.luma_file->isEnabled()) return QString();
+    return m_view.luma_file->itemData(m_view.luma_file->currentIndex()).toString();
+}
+
 #include "slideshowclip.moc"
 
 
index eae190bb19ee1ed6401a61147c0b7b0445631713..024d008fad65344367d61dab4b277713711e1045 100644 (file)
@@ -37,11 +37,16 @@ public:
     QString selectedPath() const;
     QString clipName() const;
     QString clipDuration() const;
+    QString lumaDuration() const;
     int imageCount() const;
     bool loop() const;
+    bool fade() const;
+    QString lumaFile() const;
 
 private slots:
     void parseFolder();
+    void slotEnableLuma(int state);
+    void slotEnableLumaFile(int state);
 
 private:
     Ui::SlideshowClip_UI m_view;
index e71b9a796dfc2d9aad65ae09873885f3ebf361ab..4f23f5fbdd547a8abf417e8d960e204bfeb3a2a3 100644 (file)
@@ -5,8 +5,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>304</width>
-    <height>456</height>
+    <width>315</width>
+    <height>440</height>
    </rect>
   </property>
   <property name="windowTitle" >
      </property>
     </widget>
    </item>
+   <item row="7" column="1" colspan="2" >
+    <spacer name="verticalSpacer_4" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>20</width>
+       <height>17</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="8" column="0" colspan="4" >
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
    <item row="6" column="0" colspan="4" >
     <widget class="QTabWidget" name="tabWidget" >
      <property name="currentIndex" >
-      <number>0</number>
+      <number>3</number>
      </property>
      <widget class="QWidget" name="tab_video" >
       <property name="geometry" >
        <rect>
         <x>0</x>
         <y>0</y>
-        <width>284</width>
-        <height>204</height>
+        <width>288</width>
+        <height>210</height>
        </rect>
       </property>
       <attribute name="title" >
        <rect>
         <x>0</x>
         <y>0</y>
-        <width>284</width>
-        <height>204</height>
+        <width>288</width>
+        <height>210</height>
        </rect>
       </property>
       <attribute name="title" >
        <rect>
         <x>0</x>
         <y>0</y>
-        <width>284</width>
-        <height>204</height>
+        <width>288</width>
+        <height>210</height>
        </rect>
       </property>
       <attribute name="title" >
        <rect>
         <x>0</x>
         <y>0</y>
-        <width>284</width>
-        <height>204</height>
+        <width>299</width>
+        <height>194</height>
        </rect>
       </property>
       <attribute name="title" >
         </widget>
        </item>
        <item row="2" column="0" >
+        <widget class="QCheckBox" name="slide_loop" >
+         <property name="text" >
+          <string>Loop</string>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="0" >
         <widget class="QCheckBox" name="slide_fade" >
          <property name="text" >
           <string>Crossfade</string>
          </property>
         </widget>
        </item>
-       <item row="3" column="0" >
+       <item row="3" column="1" >
+        <widget class="KRestrictedLine" name="luma_duration" >
+         <property name="inputMask" >
+          <string>99:99:99:99; </string>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="0" >
         <widget class="QCheckBox" name="slide_luma" >
          <property name="text" >
           <string>Luma file</string>
          </property>
         </widget>
        </item>
-       <item row="3" column="1" >
+       <item row="4" column="1" >
         <widget class="KComboBox" name="luma_file" />
        </item>
-       <item row="5" column="1" >
+       <item row="5" column="0" colspan="2" >
+        <widget class="QLabel" name="slide_info" >
+         <property name="text" >
+          <string>No image found</string>
+         </property>
+        </widget>
+       </item>
+       <item row="6" column="1" >
         <spacer name="verticalSpacer_6" >
          <property name="orientation" >
           <enum>Qt::Vertical</enum>
          </property>
         </spacer>
        </item>
-       <item row="2" column="1" >
-        <widget class="QCheckBox" name="slide_loop" >
-         <property name="text" >
-          <string>Loop</string>
-         </property>
-        </widget>
-       </item>
-       <item row="4" column="0" colspan="2" >
-        <widget class="QLabel" name="slide_info" >
-         <property name="text" >
-          <string>No image found</string>
-         </property>
-        </widget>
-       </item>
       </layout>
      </widget>
      <widget class="QWidget" name="tab_3" >
        <rect>
         <x>0</x>
         <y>0</y>
-        <width>284</width>
-        <height>204</height>
+        <width>288</width>
+        <height>210</height>
        </rect>
       </property>
       <attribute name="title" >
        <rect>
         <x>0</x>
         <y>0</y>
-        <width>284</width>
-        <height>204</height>
+        <width>288</width>
+        <height>210</height>
        </rect>
       </property>
       <attribute name="title" >
      </widget>
     </widget>
    </item>
-   <item row="7" column="1" colspan="2" >
-    <spacer name="verticalSpacer_4" >
-     <property name="orientation" >
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" stdset="0" >
-      <size>
-       <width>20</width>
-       <height>17</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="8" column="0" colspan="4" >
-    <widget class="QDialogButtonBox" name="buttonBox" >
-     <property name="orientation" >
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons" >
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
-     </property>
-    </widget>
-   </item>
   </layout>
+  <zorder>clip_thumb</zorder>
+  <zorder>label_5</zorder>
+  <zorder>clip_path</zorder>
+  <zorder>label_3</zorder>
+  <zorder>clip_description</zorder>
+  <zorder>clip_filesize_2</zorder>
+  <zorder>clip_duration</zorder>
+  <zorder>clip_filesize_3</zorder>
+  <zorder>clip_filesize</zorder>
+  <zorder>buttonBox</zorder>
+  <zorder>tabWidget</zorder>
  </widget>
  <customwidgets>
   <customwidget>
index 48ba57725a0e563decf3eec487866839b0abdb19..c818c54713c729b37d0a36bff1435529e8da718e 100644 (file)
@@ -5,14 +5,14 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>319</width>
-    <height>332</height>
+    <width>251</width>
+    <height>392</height>
    </rect>
   </property>
   <property name="windowTitle" >
    <string>Slideshow Clip</string>
   </property>
-  <layout class="QGridLayout" >
+  <layout class="QGridLayout" name="gridLayout" >
    <item row="0" column="0" >
     <widget class="QLabel" name="label_3" >
      <property name="text" >
      </property>
     </widget>
    </item>
-   <item row="0" column="1" colspan="2" >
+   <item row="0" column="1" >
     <widget class="KLineEdit" name="clip_name" />
    </item>
-   <item row="3" column="0" >
+   <item row="1" column="0" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Folder</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" >
+    <widget class="KUrlRequester" name="folder_url" />
+   </item>
+   <item row="2" column="0" >
     <widget class="QLabel" name="label_2" >
      <property name="text" >
       <string>Frame Duration</string>
      </property>
     </widget>
    </item>
-   <item row="3" column="1" colspan="2" >
+   <item row="2" column="1" >
     <widget class="KRestrictedLine" name="clip_duration" >
      <property name="inputMask" >
       <string>99:99:99:99; </string>
      </property>
     </widget>
    </item>
-   <item row="9" column="0" colspan="3" >
-    <widget class="QDialogButtonBox" name="buttonBox" >
-     <property name="orientation" >
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons" >
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="1" colspan="2" >
-    <widget class="KUrlRequester" name="folder_url" />
-   </item>
-   <item row="1" column="0" >
-    <widget class="QLabel" name="label" >
-     <property name="text" >
-      <string>Folder</string>
-     </property>
-    </widget>
-   </item>
-   <item row="4" column="1" colspan="2" >
-    <widget class="KComboBox" name="image_type" />
-   </item>
-   <item row="4" column="0" >
+   <item row="3" column="0" >
     <widget class="QLabel" name="label_4" >
      <property name="text" >
       <string>Image Type</string>
      </property>
     </widget>
    </item>
-   <item row="7" column="0" colspan="3" >
-    <widget class="KListWidget" name="icon_list" />
+   <item row="3" column="1" >
+    <widget class="KComboBox" name="image_type" />
    </item>
-   <item row="8" column="0" >
-    <widget class="QLabel" name="label_info" >
+   <item row="4" column="0" >
+    <widget class="QCheckBox" name="slide_loop" >
      <property name="text" >
-      <string>No image found</string>
+      <string>Loop</string>
      </property>
     </widget>
    </item>
      </property>
     </widget>
    </item>
-   <item row="6" column="0" >
+   <item row="7" column="0" >
     <widget class="QCheckBox" name="luma_fade" >
+     <property name="enabled" >
+      <bool>false</bool>
+     </property>
      <property name="text" >
       <string>Luma File</string>
      </property>
     </widget>
    </item>
-   <item row="6" column="1" colspan="2" >
-    <widget class="KComboBox" name="luma_file" />
+   <item row="7" column="1" >
+    <widget class="KComboBox" name="luma_file" >
+     <property name="enabled" >
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="8" column="0" colspan="2" >
+    <widget class="KListWidget" name="icon_list" />
    </item>
-   <item row="5" column="1" >
-    <widget class="QCheckBox" name="slide_loop" >
+   <item row="9" column="0" >
+    <widget class="QLabel" name="label_info" >
      <property name="text" >
-      <string>Loop</string>
+      <string>No image found</string>
+     </property>
+    </widget>
+   </item>
+   <item row="10" column="0" colspan="2" >
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="1" >
+    <widget class="KRestrictedLine" name="luma_duration" >
+     <property name="enabled" >
+      <bool>false</bool>
+     </property>
+     <property name="inputMask" >
+      <string>99:99:99:99; </string>
      </property>
     </widget>
    </item>