From 7ac1f7b70439ce38c29fb6ff02439f24cb040ccc Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Wed, 2 Sep 2009 12:35:13 +0000 Subject: [PATCH] Fix template title clips & some other title issues svn path=/trunk/kdenlive/; revision=3872 --- src/clipitem.cpp | 6 ++-- src/clipmanager.cpp | 40 +++++++++++++++-------- src/clipmanager.h | 4 +-- src/graphicsscenerectmove.cpp | 4 +-- src/kdenlivedoc.cpp | 39 ++--------------------- src/kdenlivesettingsdialog.cpp | 6 ++-- src/mainwindow.cpp | 23 ++++++-------- src/monitor.cpp | 5 ++- src/projectitem.cpp | 3 +- src/projectlist.cpp | 46 +++------------------------ src/projectlist.h | 1 - src/renderer.cpp | 6 ++++ src/renderwidget.cpp | 2 +- src/titlewidget.cpp | 56 -------------------------------- src/titlewidget.h | 6 ---- src/trackview.cpp | 6 ++-- src/widgets/templateclip_ui.ui | 58 ++++++++++++++-------------------- src/widgets/titlewidget_ui.ui | 25 ++++++--------- 18 files changed, 99 insertions(+), 237 deletions(-) diff --git a/src/clipitem.cpp b/src/clipitem.cpp index 279a7376..d16f1ad8 100644 --- a/src/clipitem.cpp +++ b/src/clipitem.cpp @@ -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(); diff --git a/src/clipmanager.cpp b/src/clipmanager.cpp index baafa500..32602a7d 100644 --- a/src/clipmanager.cpp +++ b/src/clipmanager.cpp @@ -138,7 +138,7 @@ QMap 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 ClipManager::getClipByResource(QString resource) { + QList 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: "<getId()); -} \ No newline at end of file + const QList list = getClipByResource(path); + for (int i = 0; i < list.count(); i++) { + DocClipBase *clip = list.at(i); + if (clip != NULL) emit reloadClip(clip->getId()); + } +} + diff --git a/src/clipmanager.h b/src/clipmanager.h index 6f316eae..d5e2bbb3 100644 --- a/src/clipmanager.h +++ b/src/clipmanager.h @@ -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 getClipByResource(QString resource); void slotDeleteClip(const QString & clipId); void setThumbsProgress(const QString &message, int progress); void checkAudioThumbs(); diff --git a/src/graphicsscenerectmove.cpp b/src/graphicsscenerectmove.cpp index bccae632..14eabe0d 100644 --- a/src/graphicsscenerectmove.cpp +++ b/src/graphicsscenerectmove.cpp @@ -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(); diff --git a/src/kdenlivedoc.cpp b/src/kdenlivedoc.cpp index 4d4a451d..6e065ea5 100644 --- a/src/kdenlivedoc.cpp +++ b/src/kdenlivedoc.cpp @@ -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())); } diff --git a/src/kdenlivesettingsdialog.cpp b/src/kdenlivesettingsdialog.cpp index a9afce18..ef8cad1d 100644 --- a/src/kdenlivesettingsdialog.cpp +++ b/src/kdenlivesettingsdialog.cpp @@ -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; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index c5ea6537..e4e2bf04 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -526,12 +526,12 @@ void MainWindow::readProperties(const KConfigGroup &config) void MainWindow::slotReloadEffects() { - kDebug()<<"START RELOAD; COUNR: "<actions().count(); + kDebug() << "START RELOAD; COUNR: " << m_customEffectsMenu->actions().count(); m_customEffectsMenu->clear(); - kDebug()<<"START RELOAD; CLR: "<actions().count(); + kDebug() << "START RELOAD; CLR: " << m_customEffectsMenu->actions().count(); initEffects::parseCustomEffectsFile(); const QStringList effects = customEffects.effectNames(); - kDebug()<<"NEW EFFS: "<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 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()); diff --git a/src/monitor.cpp b/src/monitor.cpp index 3f667c58..c875092f 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -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: "<
" + clipUrl().path()); break; case TEXT: - tip.append(i18n("Text clip") + "
" + clipUrl().path()); + if (!clipUrl().isEmpty() && m_clip->getProperty("xmldata").isEmpty()) tip.append(i18n("Template text clip") + "
" + clipUrl().path()); + else tip.append(i18n("Text clip") + "
" + clipUrl().path()); break; case SLIDESHOW: tip.append(i18n("Slideshow clip") + "
" + clipUrl().directory()); diff --git a/src/projectlist.cpp b/src/projectlist.cpp index 52e42871..d70479b4 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -290,7 +290,6 @@ void ProjectList::slotUpdateClipProperties(ProjectItem *clip, QMap 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 (*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; diff --git a/src/projectlist.h b/src/projectlist.h index 9618d352..5d19d328 100644 --- a/src/projectlist.h +++ b/src/projectlist.h @@ -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(); diff --git a/src/renderer.cpp b/src/renderer.cpp index 32d40d22..db982327 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -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); diff --git a/src/renderwidget.cpp b/src/renderwidget.cpp index 416d83ca..1b2d53f9 100644 --- a/src/renderwidget.cpp +++ b/src/renderwidget.cpp @@ -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); } diff --git a/src/titlewidget.cpp b/src/titlewidget.cpp index c37aad27..17c7fb22 100644 --- a/src/titlewidget.cpp +++ b/src/titlewidget.cpp @@ -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 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() diff --git a/src/titlewidget.h b/src/titlewidget.h index 0e9239ea..d09c8c2e 100644 --- a/src/titlewidget.h +++ b/src/titlewidget.h @@ -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(); diff --git a/src/trackview.cpp b/src/trackview.cpp index 7f886d6b..444552b2 100644 --- a/src/trackview.cpp +++ b/src/trackview.cpp @@ -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 list = m_doc->clipManager()->getClipByResource(resource); + if (!list.isEmpty()) missingClip = list.at(0); + } return missingClip; } diff --git a/src/widgets/templateclip_ui.ui b/src/widgets/templateclip_ui.ui index 7c388027..0131a564 100644 --- a/src/widgets/templateclip_ui.ui +++ b/src/widgets/templateclip_ui.ui @@ -6,11 +6,11 @@ 0 0 - 363 - 161 + 372 + 178 - + @@ -18,43 +18,31 @@ - - - - - - - Normal title clip - - - true + + + + + 0 + 0 + - - - - Clone title clip + + + + Text + + + + + + description + description - - - - Qt::Horizontal - - - - 109 - 15 - - - - - - - - + Qt::Vertical @@ -67,7 +55,7 @@ - + Qt::Horizontal diff --git a/src/widgets/titlewidget_ui.ui b/src/widgets/titlewidget_ui.ui index b1e6514d..8737c056 100644 --- a/src/widgets/titlewidget_ui.ui +++ b/src/widgets/titlewidget_ui.ui @@ -7,7 +7,7 @@ 0 0 736 - 536 + 566 @@ -36,7 +36,7 @@ - + @@ -158,7 +158,7 @@ - + QFrame::StyledPanel @@ -211,7 +211,7 @@ - + QFrame::StyledPanel @@ -315,7 +315,7 @@ - + QFrame::StyledPanel @@ -497,7 +497,7 @@ - + QFrame::StyledPanel @@ -547,7 +547,7 @@ - + Qt::Horizontal @@ -560,7 +560,7 @@ - + @@ -882,13 +882,6 @@ - - - Crop to frame size - - - - Qt::Horizontal @@ -901,7 +894,7 @@ - + Qt::Horizontal -- 2.39.2