]> git.sesse.net Git - kdenlive/commitdiff
Fix template title clips & some other title issues
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 2 Sep 2009 12:35:13 +0000 (12:35 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 2 Sep 2009 12:35:13 +0000 (12:35 +0000)
svn path=/trunk/kdenlive/; revision=3872

18 files changed:
src/clipitem.cpp
src/clipmanager.cpp
src/clipmanager.h
src/graphicsscenerectmove.cpp
src/kdenlivedoc.cpp
src/kdenlivesettingsdialog.cpp
src/mainwindow.cpp
src/monitor.cpp
src/projectitem.cpp
src/projectlist.cpp
src/projectlist.h
src/renderer.cpp
src/renderwidget.cpp
src/titlewidget.cpp
src/titlewidget.h
src/trackview.cpp
src/widgets/templateclip_ui.ui
src/widgets/titlewidget_ui.ui

index 279a73766342c0c2203172df4bfb79d1d6acfbe2..d16f1ad8b81fd730f22f05e40505050cc16f5013 100644 (file)
@@ -1272,8 +1272,7 @@ EffectsParameterList ClipItem::addEffect(const QDomElement effect, bool animate)
     int ix;
     if (!effect.hasAttribute("kdenlive_ix")) {
         ix = effectsCounter();
-    }
-    else ix = effect.attribute("kdenlive_ix").toInt();
+    } else ix = effect.attribute("kdenlive_ix").toInt();
     if (!m_effectList.isEmpty() && ix <= m_effectList.count()) {
         needRepaint = true;
         m_effectList.insert(ix - 1, effect);
@@ -1367,8 +1366,7 @@ EffectsParameterList ClipItem::addEffect(const QDomElement effect, bool animate)
 
     if (m_selectedEffect == -1) {
         setSelectedEffect(0);
-    }
-    else if (m_selectedEffect == ix - 1) setSelectedEffect(m_selectedEffect);
+    } else if (m_selectedEffect == ix - 1) setSelectedEffect(m_selectedEffect);
     if (needRepaint) update(boundingRect());
     /*if (animate) {
         flashClip();
index baafa500eb769f2f8a59f81da54b753ec2c264c6..32602a7d12745da9ff839668e2d8e4034efcd662 100644 (file)
@@ -138,7 +138,7 @@ QMap <QString, QString> ClipManager::documentFolderList() const
 void ClipManager::addClip(DocClipBase *clip)
 {
     m_clipList.append(clip);
-    if (clip->clipType() == IMAGE || clip->clipType() == AUDIO) {
+    if (clip->clipType() == IMAGE || clip->clipType() == AUDIO || (clip->clipType() == TEXT && !clip->fileURL().isEmpty())) {
         // listen for file change
         m_fileWatcher.addFile(clip->fileURL().path());
     }
@@ -161,7 +161,7 @@ void ClipManager::deleteClip(const QString &clipId)
 {
     for (int i = 0; i < m_clipList.count(); i++) {
         if (m_clipList.at(i)->getId() == clipId) {
-            if (m_clipList.at(i)->clipType() == IMAGE || m_clipList.at(i)->clipType() == AUDIO) {
+            if (m_clipList.at(i)->clipType() == IMAGE || m_clipList.at(i)->clipType() == AUDIO || (m_clipList.at(i)->clipType() == TEXT && !m_clipList.at(i)->fileURL().isEmpty())) {
                 // listen for file change
                 m_fileWatcher.removeFile(m_clipList.at(i)->fileURL().path());
             }
@@ -189,17 +189,18 @@ DocClipBase *ClipManager::getClipById(QString clipId)
     return NULL;
 }
 
-DocClipBase *ClipManager::getClipByResource(QString resource)
+const QList <DocClipBase *> ClipManager::getClipByResource(QString resource)
 {
+    QList <DocClipBase *> list;
     QString clipResource;
     for (int i = 0; i < m_clipList.count(); i++) {
         clipResource = m_clipList.at(i)->getProperty("resource");
         if (clipResource.isEmpty()) clipResource = m_clipList.at(i)->getProperty("colour");
         if (clipResource == resource) {
-            return m_clipList.at(i);
+            list.append(m_clipList.at(i));
         }
     }
-    return NULL;
+    return list;
 }
 
 void ClipManager::updatePreviewSettings()
@@ -398,14 +399,13 @@ void ClipManager::slotAddTextClipFile(const QString titleName, int out, const QS
     m_doc->commandStack()->push(command);
 }
 
-void ClipManager::slotAddTextTemplateClip(QString titleName, const QString imagePath, const KUrl path, const QString group, const QString &groupId)
+void ClipManager::slotAddTextTemplateClip(QString titleName, const KUrl path, const QString group, const QString &groupId)
 {
     QDomDocument doc;
     QDomElement prod = doc.createElement("producer");
     doc.appendChild(prod);
-    prod.setAttribute("resource", imagePath);
     prod.setAttribute("name", titleName);
-    prod.setAttribute("xmltemplate", path.path());
+    prod.setAttribute("resource", path.path());
     uint id = m_clipIdCounter++;
     prod.setAttribute("id", QString::number(id));
     if (!group.isEmpty()) {
@@ -415,7 +415,18 @@ void ClipManager::slotAddTextTemplateClip(QString titleName, const QString image
     prod.setAttribute("type", (int) TEXT);
     prod.setAttribute("transparency", "1");
     prod.setAttribute("in", "0");
-    prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1);
+
+    int out = 0;
+    QDomDocument titledoc;
+    QFile txtfile(path.path());
+    if (txtfile.open(QIODevice::ReadOnly) && titledoc.setContent(&txtfile)) {
+        txtfile.close();
+        out = titledoc.documentElement().attribute("out").toInt();
+    } else txtfile.close();
+
+    if (out == 0) out = m_doc->getFramePos(KdenliveSettings::image_duration()) - 1;
+    prod.setAttribute("out", out);
+
     AddClipCommand *command = new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true);
     m_doc->commandStack()->push(command);
 }
@@ -496,7 +507,10 @@ QDomElement ClipManager::groupsXml() const
 void ClipManager::slotClipModified(const QString &path)
 {
     //kDebug()<<"// CLIP: "<<path<<" WAS MODIFIED";
-    DocClipBase *clip = getClipByResource(path);
-    if (clip == NULL) return;
-    emit reloadClip(clip->getId());
-}
\ No newline at end of file
+    const QList <DocClipBase *> list = getClipByResource(path);
+    for (int i = 0; i < list.count(); i++) {
+        DocClipBase *clip = list.at(i);
+        if (clip != NULL) emit reloadClip(clip->getId());
+    }
+}
+
index 6f316eaeeca267c934a81630db842d1e69d3c893..d5e2bbb34d4f7c6a69076902a0cc930d4aba366c 100644 (file)
@@ -58,11 +58,11 @@ Q_OBJECT public:
     void slotAddClipFile(const KUrl url, const QString group, const QString &groupId);
     void slotAddClipList(const KUrl::List urls, const QString group, const QString &groupId);
     void slotAddTextClipFile(const QString titleName, int out, const QString xml, const QString group, const QString &groupId);
-    void slotAddTextTemplateClip(QString titleName, const QString imagePath, const KUrl path, const QString group, const QString &groupId);
+    void slotAddTextTemplateClip(QString titleName, const KUrl path, const QString group, const QString &groupId);
     void slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const QString &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 int softness, const QString group, const QString &groupId);
     DocClipBase *getClipById(QString clipId);
-    DocClipBase *getClipByResource(QString resource);
+    const QList <DocClipBase *> getClipByResource(QString resource);
     void slotDeleteClip(const QString & clipId);
     void setThumbsProgress(const QString &message, int progress);
     void checkAudioThumbs();
index bccae632279c301b1f86080f2a1adda795ae0bea..14eabe0d4e11b091b2fd85ae7f4580f916dffe7e 100644 (file)
@@ -415,7 +415,7 @@ void GraphicsSceneRectMove::mouseMoveEvent(QGraphicsSceneMouseEvent* e)
                     else newrect.setWidth(m_selectedItem->data(0).toInt() * vRatio);
                 }
 
-                gi->setRect(newrect);                
+                gi->setRect(newrect);
             }
             /*else {
             qreal s;
@@ -488,7 +488,7 @@ void GraphicsSceneRectMove::mouseMoveEvent(QGraphicsSceneMouseEvent* e)
         }
         QGraphicsScene::mouseMoveEvent(e);
     } else if (m_tool == TITLE_RECTANGLE && e->buttons() & Qt::LeftButton) {
-        if (m_selectedItem == NULL) {   
+        if (m_selectedItem == NULL) {
             // create new rect item
             QRectF r(0, 0, e->scenePos().x() - m_sceneClickPoint.x(), e->scenePos().y() - m_sceneClickPoint.y());
             r = r.normalized();
index 4d4a451d363a0c6ea8c1594120a738b955643e47..6e065ea589eddff505440fbdbe0acd9591403173 100644 (file)
@@ -865,30 +865,7 @@ void KdenliveDoc::addClip(QDomElement elem, QString clipId, bool createClipItem)
         if (elem.attribute("type").toInt() == SLIDESHOW) {
             extension = KUrl(path).fileName();
             path = KUrl(path).directory();
-        } /*else if (elem.attribute("type").toInt() == TEXT && QFile::exists(path) == false) {
-            kDebug() << "// TITLE: " << elem.attribute("name") << " Preview file: " << elem.attribute("resource") << " DOES NOT EXIST";
-            QString titlename = elem.attribute("name");
-            QString titleresource;
-            if (titlename.isEmpty()) {
-                QStringList titleInfo = TitleWidget::getFreeTitleInfo(projectFolder());
-                titlename = titleInfo.at(0);
-                titleresource = titleInfo.at(1);
-                elem.setAttribute("name", titlename);
-                kDebug() << "// New title set to: " << titlename;
-            } else {
-                titleresource = TitleWidget::getFreeTitleInfo(projectFolder()).at(1);
-                //titleresource = TitleWidget::getTitleResourceFromName(projectFolder(), titlename);
-            }
-            TitleWidget *dia_ui = new TitleWidget(KUrl(), KUrl(titleresource).directory(), m_render, kapp->activeWindow());
-            QDomDocument doc;
-            doc.setContent(elem.attribute("xmldata"));
-            dia_ui->setXml(doc);
-            QImage pix = dia_ui->renderedPixmap();
-            pix.save(titleresource);
-            elem.setAttribute("resource", titleresource);
-            setNewClipResource(clipId, titleresource);
-            delete dia_ui;
-        }*/
+        }
 
         if (path.isEmpty() == false && QFile::exists(path) == false && elem.attribute("type").toInt() != TEXT && !elem.hasAttribute("placeholder")) {
             kDebug() << "// FOUND MISSING CLIP: " << path << ", TYPE: " << elem.attribute("type").toInt();
@@ -1101,10 +1078,6 @@ void KdenliveDoc::slotCreateTextClip(QString group, const QString &groupId, cons
     KStandardDirs::makeDir(titlesFolder);
     TitleWidget *dia_ui = new TitleWidget(templatePath, m_timecode, titlesFolder, m_render, kapp->activeWindow());
     if (dia_ui->exec() == QDialog::Accepted) {
-        /*QStringList titleInfo = TitleWidget::getFreeTitleInfo(projectFolder());
-        QImage pix = dia_ui->renderedPixmap();
-        pix.save(titleInfo.at(1));*/
-        //dia_ui->saveTitle(path + ".kdenlivetitle");
         m_clipManager->slotAddTextClipFile(i18n("Title clip"), dia_ui->duration(), dia_ui->xml().toString(), group, groupId);
         setModified(true);
         emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
@@ -1121,15 +1094,9 @@ void KdenliveDoc::slotCreateTextTemplateClip(QString group, const QString &group
 
     if (path.isEmpty()) return;
 
-    QStringList titleInfo = TitleWidget::getFreeTitleInfo(projectFolder(), true);
-
     //TODO: rewrite with new title system (just set resource)
-    /*TitleWidget *dia_ui = new TitleWidget(path, titlesFolder, m_render, kapp->activeWindow());
-    QImage pix = dia_ui->renderedPixmap();
-    pix.save(titleInfo.at(1));
-    delete dia_ui;
-    m_clipManager->slotAddTextTemplateClip(titleInfo.at(0), titleInfo.at(1), path, group, groupId);
-    setModified(true);*/
+    m_clipManager->slotAddTextTemplateClip(i18n("Template title clip"), path, group, groupId);
+    setModified(true);
     emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
 }
 
index a9afce187af047e20c8017e7c0fac719a5f403d4..ef8cad1dbc1aeb4dced1d66d98bf51316eef5fb6 100644 (file)
@@ -76,9 +76,9 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(QWidget * parent) :
     m_page4 = addPage(p4, i18n("Capture"), "media-record");
     m_configCapture.tabWidget->setCurrentIndex(KdenliveSettings::defaultcapture());
 #ifdef Q_WS_MAC
-       m_configCapture.tabWidget->setEnabled(false);
-       m_configCapture.kcfg_defaultcapture->setEnabled(false);
-       m_configCapture.label->setText(i18n("Capture is not yet available on OS X."));
+    m_configCapture.tabWidget->setEnabled(false);
+    m_configCapture.kcfg_defaultcapture->setEnabled(false);
+    m_configCapture.label->setText(i18n("Capture is not yet available on OS X."));
 #endif
 
     QWidget *p5 = new QWidget;
index c5ea6537f18a10029a9bbf894da180d82973d82e..e4e2bf04a91c89ac2c457239002ddbb3afbd99b3 100644 (file)
@@ -526,12 +526,12 @@ void MainWindow::readProperties(const KConfigGroup &config)
 
 void MainWindow::slotReloadEffects()
 {
-    kDebug()<<"START RELOAD; COUNR: "<<m_customEffectsMenu->actions().count();
+    kDebug() << "START RELOAD; COUNR: " << m_customEffectsMenu->actions().count();
     m_customEffectsMenu->clear();
-    kDebug()<<"START RELOAD; CLR: "<<m_customEffectsMenu->actions().count();
+    kDebug() << "START RELOAD; CLR: " << m_customEffectsMenu->actions().count();
     initEffects::parseCustomEffectsFile();
     const QStringList effects = customEffects.effectNames();
-    kDebug()<<"NEW EFFS: "<<effects;
+    kDebug() << "NEW EFFS: " << effects;
     QAction *action;
     if (effects.isEmpty()) m_customEffectsMenu->setEnabled(false);
     else m_customEffectsMenu->setEnabled(true);
@@ -2261,7 +2261,7 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip)
 {
     if (clip->clipType() == TEXT) {
         QString titlepath = m_activeDocument->projectFolder().path(KUrl::AddTrailingSlash) + "titles/";
-        if (!clip->getProperty("xmltemplate").isEmpty()) {
+        if (!clip->getProperty("resource").isEmpty() && clip->getProperty("xmldata").isEmpty()) {
             // template text clip
 
             // Get the list of existing templates
@@ -2273,7 +2273,7 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip)
             Ui::TemplateClip_UI dia_ui;
             dia_ui.setupUi(dia);
             int ix = -1;
-            const QString templatePath = clip->getProperty("xmltemplate");
+            const QString templatePath = clip->getProperty("resource");
             for (int i = 0; i < templateFiles.size(); ++i) {
                 dia_ui.template_list->comboBox()->addItem(templateFiles.at(i), titlepath + templateFiles.at(i));
                 if (templatePath == KUrl(titlepath + templateFiles.at(i)).path()) ix = i;
@@ -2285,7 +2285,6 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip)
             KUrl startDir(titlepath);
             dia_ui.template_list->fileDialog()->setUrl(startDir);
             dia_ui.description->setText(clip->getProperty("description"));
-            dia_ui.clone_clip->setChecked(true);
             if (dia->exec() == QDialog::Accepted) {
                 QString textTemplate = dia_ui.template_list->comboBox()->itemData(dia_ui.template_list->comboBox()->currentIndex()).toString();
                 if (textTemplate.isEmpty()) textTemplate = dia_ui.template_list->comboBox()->currentText();
@@ -2294,7 +2293,7 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip)
 
                 if (KUrl(textTemplate).path() != templatePath) {
                     // The template was changed
-                    newprops.insert("xmltemplate", textTemplate);
+                    newprops.insert("resource", textTemplate);
                 }
 
                 if (dia_ui.description->toPlainText() != clip->getProperty("description")) {
@@ -2307,11 +2306,9 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip)
                 // template modified we need to update xmldata
                 QString description = newprops.value("description");
                 if (description.isEmpty()) description = clip->getProperty("description");
-                newprops.insert("xmldata", m_projectList->generateTemplateXml(newtemplate, description).toString());
-                if (dia_ui.normal_clip->isChecked()) {
-                    // Switch clip to normal clip
-                    newprops.insert("xmltemplate", QString());
-                }
+                else newprops.insert("templatetext", description);
+                //newprops.insert("xmldata", m_projectList->generateTemplateXml(newtemplate, description).toString());
+
                 EditClipCommand *command = new EditClipCommand(m_projectList, clip->getId(), clip->properties(), newprops, true);
                 m_activeDocument->commandStack()->push(command);
             }
@@ -2323,11 +2320,9 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip)
         doc.setContent(clip->getProperty("xmldata"));
         dia_ui->setXml(doc);
         if (dia_ui->exec() == QDialog::Accepted) {
-            QRect rect = dia_ui->renderedRect();
             QMap <QString, QString> newprops;
             newprops.insert("xmldata", dia_ui->xml().toString());
             newprops.insert("out", QString::number(dia_ui->duration()));
-            newprops.insert("frame_size", QString::number(rect.width()) + 'x' + QString::number(rect.height()));
             EditClipCommand *command = new EditClipCommand(m_projectList, clip->getId(), clip->properties(), newprops, true);
             m_activeDocument->commandStack()->push(command);
             m_activeTimeline->projectView()->slotUpdateClip(clip->getId());
index 3f667c581eefb6c3213e2f93c290be614fa0ec7b..c875092f89fba02534e745b909d86fd58c0e1eed 100644 (file)
@@ -110,8 +110,7 @@ Monitor::Monitor(QString name, MonitorManager *manager, QWidget *parent) :
     if (m_frametimecode) {
         m_timePos->setInputMask(QString());
         m_timePos->setValidator(new QIntValidator(this));
-    }
-    else m_timePos->setInputMask("99:99:99:99");
+    } else m_timePos->setInputMask("99:99:99:99");
     toolbar->addWidget(m_timePos);
 
     connect(m_timePos, SIGNAL(editingFinished()), this, SLOT(slotSeek()));
@@ -482,7 +481,7 @@ void Monitor::slotSeek()
     int frames;
     if (m_frametimecode) frames = m_timePos->text().toInt();
     else frames = m_monitorManager->timecode().getFrameCount(m_timePos->text());
-    kDebug()<<"// / / SEEK TO: "<<frames;
+    //kDebug() << "// / / SEEK TO: " << frames;
     slotSeek(frames);
 }
 
index 7b3a335efde2394c2617a415c3ef522ee136cc9e..d9238ad9d4ad39a0c7e7abc290cfd550fa3eadbd 100644 (file)
@@ -200,7 +200,8 @@ void ProjectItem::slotSetToolTip()
         tip.append(i18n("Image clip") + "</b><br />" + clipUrl().path());
         break;
     case TEXT:
-        tip.append(i18n("Text clip") + "</b><br />" + clipUrl().path());
+        if (!clipUrl().isEmpty() && m_clip->getProperty("xmldata").isEmpty()) tip.append(i18n("Template text clip") + "</b><br />" + clipUrl().path());
+        else tip.append(i18n("Text clip") + "</b><br />" + clipUrl().path());
         break;
     case SLIDESHOW:
         tip.append(i18n("Slideshow clip") + "</b><br />" + clipUrl().directory());
index 52e4287113b88ce571d6eeb87d17693543c68600..d70479b47ac0f51e53f580a5ce2e949010f8cfc2 100644 (file)
@@ -290,7 +290,6 @@ void ProjectList::slotUpdateClipProperties(ProjectItem *clip, QMap <QString, QSt
 {
     if (!clip) return;
     if (!clip->isGroup()) clip->setProperties(properties);
-    //if (properties.contains("xmldata")) regenerateTemplateImage(clip);
     if (properties.contains("name")) {
         m_listView->blockSignals(true);
         clip->setText(1, properties.value("name"));
@@ -321,7 +320,7 @@ void ProjectList::slotItemEdited(QTreeWidgetItem *item, int column)
             oldprops["description"] = clip->referencedClip()->getProperty("description");
             newprops["description"] = item->text(2);
 
-            if (clip->clipType() == TEXT && !clip->referencedClip()->getProperty("xmldata").isEmpty()) {
+            if (clip->clipType() == TEXT) {
                 // This is a text template clip, update the image
                 /*oldprops.insert("xmldata", clip->referencedClip()->getProperty("xmldata"));
                 newprops.insert("xmldata", generateTemplateXml(clip->referencedClip()->getProperty("xmltemplate"), item->text(2)).toString());*/
@@ -594,16 +593,6 @@ void ProjectList::updateAllClips()
         item = static_cast <ProjectItem *>(*it);
         if (!item->isGroup()) {
             clip = item->referencedClip();
-            /*if (clip->clipType() == TEXT && !QFile::exists(clip->fileURL().path())) {
-                // regenerate text clip image if required
-                TitleWidget *dia_ui = new TitleWidget(KUrl(), QString(), m_render, this);
-                QDomDocument doc;
-                doc.setContent(clip->getProperty("xmldata"));
-                dia_ui->setXml(doc);
-                QImage pix = dia_ui->renderedPixmap();
-                pix.save(clip->fileURL().path());
-                delete dia_ui;
-            }*/
             if (item->referencedClip()->producer() == NULL) {
                 if (clip->isPlaceHolder() == false) {
                     requestClipInfo(clip->toXML(), clip->getId());
@@ -741,17 +730,12 @@ void ProjectList::slotAddTitleTemplateClip()
     //warning: setting base directory doesn't work??
     KUrl startDir(path);
     dia_ui.template_list->fileDialog()->setUrl(startDir);
-    dia_ui.description->setHidden(true);
+    dia_ui.text_box->setHidden(true);
     if (dia->exec() == QDialog::Accepted) {
         QString textTemplate = dia_ui.template_list->comboBox()->itemData(dia_ui.template_list->comboBox()->currentIndex()).toString();
         if (textTemplate.isEmpty()) textTemplate = dia_ui.template_list->comboBox()->currentText();
-        if (dia_ui.normal_clip->isChecked()) {
-            // Create a normal title clip
-            m_doc->slotCreateTextClip(groupInfo.at(0), groupInfo.at(1), textTemplate);
-        } else {
-            // Create a cloned template clip
-            m_doc->slotCreateTextTemplateClip(groupInfo.at(0), groupInfo.at(1), KUrl(textTemplate));
-        }
+        // Create a cloned template clip
+        m_doc->slotCreateTextTemplateClip(groupInfo.at(0), groupInfo.at(1), KUrl(textTemplate));
     }
     delete dia;
 }
@@ -992,31 +976,9 @@ void ProjectList::regenerateTemplate(const QString &id)
 void ProjectList::regenerateTemplate(ProjectItem *clip)
 {
     //TODO: remove this unused method, only force_reload is necessary
-    // Generate image for template clip
-    /*const QString comment = clip->referencedClip()->getProperty("description");
-    const QString path = clip->referencedClip()->getProperty("resource");
-    QDomDocument doc = generateTemplateXml(path, comment);
-    TitleWidget *dia_ui = new TitleWidget(KUrl(), QString(), m_render, this);
-    dia_ui->setXml(doc);
-    QImage pix = dia_ui->renderedPixmap();
-    pix.save(clip->clipUrl().path());
-    delete dia_ui;*/
     clip->referencedClip()->producer()->set("force_reload", 1);
 }
 
-void ProjectList::regenerateTemplateImage(ProjectItem *clip)
-{
-    //TODO: remove this unused method
-    // Generate image for template clip
-    /*TitleWidget *dia_ui = new TitleWidget(KUrl(), QString(), m_render, this);
-    QDomDocument doc;
-    doc.setContent(clip->referencedClip()->getProperty("xmldata"));
-    dia_ui->setXml(doc);
-    QImage pix = dia_ui->renderedPixmap();
-    pix.save(clip->clipUrl().path());
-    delete dia_ui;*/
-}
-
 QDomDocument ProjectList::generateTemplateXml(QString path, const QString &replaceString)
 {
     QDomDocument doc;
index 9618d352be77abb2e26dd1c7ba618cdb3a294f06..5d19d328010510e1f5f7863e8155690c2f30880b 100644 (file)
@@ -184,7 +184,6 @@ private:
     void editFolder(const QString folderName, const QString oldfolderName, const QString &clipId);
     QStringList getGroup() const;
     void regenerateTemplate(ProjectItem *clip);
-    void regenerateTemplateImage(ProjectItem *clip);
 
 private slots:
     void slotClipSelected();
index 32d40d227a001b3d38f15bc94feb8050fafcc613..db9823275092bd1411dab8c2a58c796b6b440919 100644 (file)
@@ -635,6 +635,12 @@ void Render::getFileProperties(const QDomElement xml, const QString &clipId, boo
     producer->set("id", tmp);
     delete[] tmp;
 
+    if (xml.hasAttribute("templatetext")) {
+        char *tmp = decodedString(xml.attribute("templatetext"));
+        producer->set("templatetext", tmp);
+        delete[] tmp;
+    }
+
     if (!replaceProducer && xml.hasAttribute("file_hash")) {
         // Clip  already has all properties
         emit replyGetFileProperties(clipId, producer, QMap < QString, QString >(), QMap < QString, QString >(), replaceProducer);
index 416d83ca3a3f405d98d5ded0589ece81b3592f0e..1b2d53f98f2c577a1166e7dc523bfa38c568cf63 100644 (file)
@@ -1659,7 +1659,7 @@ QString RenderWidget::getFreeScriptName(const QString &prefix)
 void RenderWidget::slotPlayRendering(QTreeWidgetItem *item, int)
 {
     if (KdenliveSettings::defaultplayerapp().isEmpty() || item->data(1, Qt::UserRole + 2).toInt() != FINISHEDJOB) return;
-    const QByteArray startId = KStartupInfo::createNewStartupId ();
+    const QByteArray startId = KStartupInfo::createNewStartupId();
     const QString command = KdenliveSettings::defaultplayerapp() + ' ' + item->text(1);
     KRun::runCommand(command, KdenliveSettings::defaultplayerapp(), KdenliveSettings::defaultplayerapp(), this, startId);
 }
index c37aad27420fec1cd701c99aedc10ad39e535223..17c7fb222fbb7534b893b1f7f0983b79c2941cc5 100644 (file)
@@ -1455,9 +1455,6 @@ QDomDocument TitleWidget::xml()
 {
     QDomDocument doc = m_titledocument.xml(m_startViewport, m_endViewport);
     doc.documentElement().setAttribute("out", m_tc.getFrameCount(title_duration->text()));
-    if (cropImage->isChecked()) {
-        doc.documentElement().setAttribute("crop", 1);
-    }
     return doc;
 }
 
@@ -1479,7 +1476,6 @@ void TitleWidget::setXml(QDomDocument doc)
     else title_duration->setText(m_tc.getTimecode(GenTime(5000)));*/
 
     QDomElement e = doc.documentElement();
-    cropImage->setChecked(e.hasAttribute("crop"));
     m_transformations.clear();
     QList <QGraphicsItem *> items = graphicsView->scene()->items();
     const double PI = 4.0 * atan(1.0);
@@ -1512,54 +1508,6 @@ void TitleWidget::setXml(QDomDocument doc)
     slotSelectTool();
 }
 
-const QRect TitleWidget::renderedRect()
-{
-    int minX = 0;
-    int minY = 0;
-    int maxX = m_frameWidth;
-    int maxY = m_frameHeight;
-    if (!cropImage->isChecked()) {
-        m_scene->removeItem(m_startViewport);
-        m_scene->removeItem(m_endViewport);
-        QRect boundingRect = m_scene->itemsBoundingRect().toRect();
-        if (boundingRect.left() < 0) minX = boundingRect.left();
-        if (boundingRect.top() < 0) minY = boundingRect.top();
-        if (boundingRect.right() > maxX) maxX = boundingRect.right();
-        if (boundingRect.bottom() > maxY) maxY = boundingRect.bottom();
-        if (minX < 0) {
-            maxX = maxX - minX;
-        }
-        if (minY < 0) {
-            maxY = maxY - minY;
-        }
-    }
-    QRect rect(minX, minY, maxX, maxY);
-    return rect;
-}
-
-QImage TitleWidget::renderedPixmap()
-{
-    QRect rect = renderedRect();
-    QImage pix(rect.width(), rect.height(), QImage::Format_ARGB32);
-    pix.fill(Qt::transparent);
-    QPainter painter(&pix);
-    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::HighQualityAntialiasing);
-    m_scene->clearTextSelection();
-    QPen framepen = m_frameBorder->pen();
-    m_frameBorder->setPen(Qt::NoPen);
-    m_startViewport->setVisible(false);
-    m_endViewport->setVisible(false);
-    m_frameImage->setVisible(false);
-
-    m_scene->render(&painter, QRectF(), rect); //QRectF(minX, minY, maxX - minX, maxY - minY));
-    painter.end();
-    m_frameBorder->setPen(framepen);
-    m_startViewport->setVisible(true);
-    m_endViewport->setVisible(true);
-    m_frameImage->setVisible(true);
-    return pix;
-}
-
 /** \brief Connected to the accepted signal - calls writeChoices */
 void TitleWidget::slotAccepted()
 {
@@ -1593,8 +1541,6 @@ void TitleWidget::writeChoices()
     titleConfig.writeEntry("background_color", kcolorbutton->color());
     titleConfig.writeEntry("background_alpha", horizontalSlider->value());
 
-    titleConfig.writeEntry("crop_image", cropImage->isChecked());
-
     //! \todo Not sure if I should sync - it is probably safe to do it
     config->sync();
 
@@ -1626,8 +1572,6 @@ void TitleWidget::readChoices()
 
     kcolorbutton->setColor(titleConfig.readEntry("background_color", kcolorbutton->color()));
     horizontalSlider->setValue(titleConfig.readEntry("background_alpha", horizontalSlider->value()));
-
-    cropImage->setChecked(titleConfig.readEntry("crop_image", cropImage->isChecked()));
 }
 
 void TitleWidget::adjustFrameSize()
index 0e9239ea793d7cb6fdfb44f6c67a1afce609f32a..d09c8c2e539777dc7e295e6aff59f859638314a4 100644 (file)
@@ -71,11 +71,6 @@ public:
      * returned. */
     static QString getTitleResourceFromName(const KUrl &projectUrl, const QString &titleName);
 
-    /** \brief returns the size of the rendered pixmap
-    *
-    */
-    const QRect renderedRect();
-
     /** \brief Get clip duration. */
     int duration() const;
 
@@ -158,7 +153,6 @@ public slots:
     void itemRotate(int);
     void saveTitle(KUrl url = KUrl());
     void loadTitle(KUrl url = KUrl());
-    QImage renderedPixmap();
 
 private slots:
     void slotAdjustSelectedItem();
index 7f886d6bf9de8c4aa5c796567cf19556fbf1c138..444552b2b5d5eea01183f5519d0545a711a7f7b8 100644 (file)
@@ -789,8 +789,10 @@ DocClipBase *TrackView::getMissingProducer(const QString id) const
     // prepend MLT XML document root if no path in clip resource and not a color clip
     if (!resource.startsWith('/') && !resource.startsWith("0x")) resource.prepend(docRoot);
     DocClipBase *missingClip = NULL;
-    if (!resource.isEmpty())
-        missingClip = m_doc->clipManager()->getClipByResource(resource);
+    if (!resource.isEmpty()) {
+        QList <DocClipBase *> list = m_doc->clipManager()->getClipByResource(resource);
+        if (!list.isEmpty()) missingClip = list.at(0);
+    }
     return missingClip;
 }
 
index 7c3880271067795f68e9ed793f4f7c738ec58836..0131a564f1a5d9550ed4e24ff454840139e20b49 100644 (file)
@@ -6,11 +6,11 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>363</width>
-    <height>161</height>
+    <width>372</width>
+    <height>178</height>
    </rect>
   </property>
-  <layout class="QGridLayout" name="gridLayout">
+  <layout class="QGridLayout" name="gridLayout_2">
    <item row="0" column="0">
     <widget class="QLabel" name="label">
      <property name="text">
      </property>
     </widget>
    </item>
-   <item row="0" column="1" colspan="4">
-    <widget class="KUrlComboRequester" name="template_list"/>
-   </item>
-   <item row="1" column="0" colspan="2">
-    <widget class="QRadioButton" name="normal_clip">
-     <property name="text">
-      <string>Normal title clip</string>
-     </property>
-     <property name="checked">
-      <bool>true</bool>
+   <item row="0" column="1" colspan="2">
+    <widget class="KUrlComboRequester" name="template_list">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
      </property>
     </widget>
    </item>
-   <item row="1" column="2" colspan="2">
-    <widget class="QRadioButton" name="clone_clip">
-     <property name="text">
-      <string>Clone title clip</string>
+   <item row="1" column="0" colspan="3">
+    <widget class="QGroupBox" name="text_box">
+     <property name="title">
+      <string>Text</string>
      </property>
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="0">
+       <widget class="KTextEdit" name="description"/>
+      </item>
+     </layout>
+     <zorder>description</zorder>
+     <zorder>description</zorder>
     </widget>
    </item>
-   <item row="1" column="4">
-    <spacer name="horizontalSpacer">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>109</width>
-       <height>15</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="2" column="0" colspan="5">
-    <widget class="KTextEdit" name="description"/>
-   </item>
-   <item row="3" column="4">
+   <item row="2" column="2">
     <spacer name="verticalSpacer">
      <property name="orientation">
       <enum>Qt::Vertical</enum>
@@ -67,7 +55,7 @@
      </property>
     </spacer>
    </item>
-   <item row="4" column="3" colspan="2">
+   <item row="3" column="2">
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
index b1e6514df2ff4eafbf13b7d26758440825ba5211..8737c056b90597973ba1ed4ea1ee1cc286e6f9f2 100644 (file)
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>736</width>
-    <height>536</height>
+    <height>566</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -36,7 +36,7 @@
      </property>
     </widget>
    </item>
-   <item row="0" column="4" colspan="4">
+   <item row="0" column="4" colspan="3">
     <widget class="QFrame" name="frame_properties">
      <property name="sizePolicy">
       <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
      </layout>
     </widget>
    </item>
-   <item row="1" column="0" colspan="8">
+   <item row="1" column="0" colspan="7">
     <widget class="QFrame" name="no_properties">
      <property name="frameShape">
       <enum>QFrame::StyledPanel</enum>
      </layout>
     </widget>
    </item>
-   <item row="2" column="0" colspan="8">
+   <item row="2" column="0" colspan="7">
     <widget class="QFrame" name="rect_properties">
      <property name="frameShape">
       <enum>QFrame::StyledPanel</enum>
      </layout>
     </widget>
    </item>
-   <item row="3" column="0" colspan="8">
+   <item row="3" column="0" colspan="7">
     <widget class="QFrame" name="text_properties">
      <property name="frameShape">
       <enum>QFrame::StyledPanel</enum>
      </layout>
     </widget>
    </item>
-   <item row="4" column="0" colspan="8">
+   <item row="4" column="0" colspan="7">
     <widget class="QFrame" name="image_properties">
      <property name="frameShape">
       <enum>QFrame::StyledPanel</enum>
      </layout>
     </widget>
    </item>
-   <item row="5" column="0" colspan="8">
+   <item row="5" column="0" colspan="7">
     <widget class="QSplitter" name="splitter">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
        </sizepolicy>
       </property>
      </widget>
-     <widget class="QWidget" name="">
+     <widget class="QWidget" name="layoutWidget">
       <layout class="QGridLayout" name="gridLayout_2">
        <item row="0" column="0">
         <widget class="QLabel" name="label_3">
     </widget>
    </item>
    <item row="6" column="5">
-    <widget class="QCheckBox" name="cropImage">
-     <property name="text">
-      <string>Crop to frame size</string>
-     </property>
-    </widget>
-   </item>
-   <item row="6" column="6">
     <spacer name="horizontalSpacer_3">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
     </spacer>
    </item>
-   <item row="6" column="7">
+   <item row="6" column="6">
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>