From 87d521fd1374155331c31f082f0f3b91303021d2 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sat, 4 Oct 2008 00:45:22 +0000 Subject: [PATCH] Many improvements to title clips (recreate when missing, fix text selection visible in clip, improve zoom, ...) svn path=/branches/KDE4/; revision=2429 --- src/clipmanager.cpp | 7 ++--- src/clipmanager.h | 2 +- src/graphicsscenerectmove.cpp | 43 ++++++++++++++++++++------- src/graphicsscenerectmove.h | 4 ++- src/kdenlivedoc.cpp | 51 ++++++++++++++++++------------- src/kthumb.cpp | 5 ++++ src/mainwindow.cpp | 11 +++---- src/projectlist.cpp | 19 ++++++++++-- src/renderer.cpp | 16 ++++++++-- src/titlewidget.cpp | 56 ++++++++++++++++++++++++++--------- src/titlewidget.h | 3 ++ src/widgets/titlewidget_ui.ui | 42 +++++++++++++++++++++----- 12 files changed, 189 insertions(+), 70 deletions(-) diff --git a/src/clipmanager.cpp b/src/clipmanager.cpp index 87990b61..10575c99 100644 --- a/src/clipmanager.cpp +++ b/src/clipmanager.cpp @@ -185,12 +185,11 @@ void ClipManager::slotAddSlideshowClipFile(const QString name, const QString pat -void ClipManager::slotAddTextClipFile(const QString path, const QString xml, const QString group, const QString &groupId) { - kDebug() << "///// CLIP MANAGER, ADDING CLIP: " << path; +void ClipManager::slotAddTextClipFile(const QString titleName, const QString imagePath, const QString xml, const QString group, const QString &groupId) { QDomDocument doc; QDomElement prod = doc.createElement("producer"); - prod.setAttribute("resource", path + ".png"); - prod.setAttribute("xml", path); + prod.setAttribute("resource", imagePath); + prod.setAttribute("titlename", titleName); prod.setAttribute("xmldata", xml); uint id = m_clipIdCounter++; prod.setAttribute("id", QString::number(id)); diff --git a/src/clipmanager.h b/src/clipmanager.h index 95a8ccea..575f0e83 100644 --- a/src/clipmanager.h +++ b/src/clipmanager.h @@ -50,7 +50,7 @@ Q_OBJECT public: void deleteClip(const QString &clipId); 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 path, const QString xml, const QString group, const QString &groupId); + void slotAddTextClipFile(const QString titleName, const QString imagePath, const QString xml, 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(const QString &clipId); diff --git a/src/graphicsscenerectmove.cpp b/src/graphicsscenerectmove.cpp index d972c9cf..710d1d50 100644 --- a/src/graphicsscenerectmove.cpp +++ b/src/graphicsscenerectmove.cpp @@ -5,9 +5,11 @@ #include #include #include +#include #include #include #include +#include #include "graphicsscenerectmove.h" @@ -96,6 +98,7 @@ void GraphicsSceneRectMove::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* e) { if (g) { if (g->type() == 8) { QGraphicsTextItem *t = static_cast(g); + m_selectedItem = g; t->setTextInteractionFlags(Qt::TextEditorInteraction); } } @@ -109,6 +112,7 @@ void GraphicsSceneRectMove::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) { } void GraphicsSceneRectMove::mousePressEvent(QGraphicsSceneMouseEvent* e) { + m_clickPoint = e->screenPos(); QPointF p = e->scenePos(); p += QPoint(-2, -2); resizeMode = NoResize; @@ -130,6 +134,9 @@ void GraphicsSceneRectMove::mousePressEvent(QGraphicsSceneMouseEvent* e) { if (m_selectedItem && m_selectedItem->type() == 8) { // disable text editing QGraphicsTextItem *t = static_cast(m_selectedItem); + t->textCursor().setPosition(0); + QTextBlock cur = t->textCursor().block(); + t->setTextCursor(QTextCursor(cur)); t->setTextInteractionFlags(Qt::NoTextInteraction); } m_selectedItem = NULL; @@ -141,7 +148,7 @@ void GraphicsSceneRectMove::mousePressEvent(QGraphicsSceneMouseEvent* e) { } } if (item != NULL) { - m_clickPoint = e->scenePos(); + m_sceneClickPoint = e->scenePos(); m_selectedItem = item; kDebug() << "///////// ITEM TYPE: " << item->type(); if (item->type() == 8) { @@ -180,7 +187,7 @@ void GraphicsSceneRectMove::mousePressEvent(QGraphicsSceneMouseEvent* e) { } QGraphicsScene::mousePressEvent(e); } else if (m_tool == TITLE_RECTANGLE) { - m_clickPoint = e->scenePos(); + m_sceneClickPoint = e->scenePos(); m_selectedItem = NULL; } else if (m_tool == TITLE_TEXT) { m_selectedItem = addText(QString()); @@ -195,10 +202,25 @@ void GraphicsSceneRectMove::mousePressEvent(QGraphicsSceneMouseEvent* e) { } +void GraphicsSceneRectMove::clearTextSelection() { + if (m_selectedItem && m_selectedItem->type() == 8) { + // disable text editing + QGraphicsTextItem *t = static_cast(m_selectedItem); + t->textCursor().setPosition(0); + QTextBlock cur = t->textCursor().block(); + t->setTextCursor(QTextCursor(cur)); + t->setTextInteractionFlags(Qt::NoTextInteraction); + } + m_selectedItem = NULL; + clearSelection(); +} //virtual void GraphicsSceneRectMove::mouseMoveEvent(QGraphicsSceneMouseEvent* e) { - + if ((e->screenPos() - m_clickPoint).manhattanLength() < QApplication::startDragDistance()) { + e->accept(); + return; + } if (m_selectedItem && e->buttons() & Qt::LeftButton) { if (m_selectedItem->type() == 3 || m_selectedItem->type() == 13 || m_selectedItem->type() == 7) { QRectF newrect; @@ -239,8 +261,8 @@ void GraphicsSceneRectMove::mouseMoveEvent(QGraphicsSceneMouseEvent* e) { newrect.setBottom(newpoint.y() - m_selectedItem->pos().y()); break; default: - QPointF diff = e->scenePos() - m_clickPoint; - m_clickPoint = e->scenePos(); + QPointF diff = e->scenePos() - m_sceneClickPoint; + m_sceneClickPoint = e->scenePos(); m_selectedItem->moveBy(diff.x(), diff.y()); break; } @@ -266,13 +288,12 @@ void GraphicsSceneRectMove::mouseMoveEvent(QGraphicsSceneMouseEvent* e) { QGraphicsScene::mouseMoveEvent(e); return; } - QPointF diff = e->scenePos() - m_clickPoint; - m_clickPoint = e->scenePos(); + QPointF diff = e->scenePos() - m_sceneClickPoint; + m_sceneClickPoint = e->scenePos(); m_selectedItem->moveBy(diff.x(), diff.y()); } emit itemMoved(); } else if (m_tool == TITLE_SELECT) { - QPointF p = e->scenePos(); p += QPoint(-2, -2); resizeMode = NoResize; @@ -309,12 +330,12 @@ void GraphicsSceneRectMove::mouseMoveEvent(QGraphicsSceneMouseEvent* e) { } QGraphicsScene::mouseMoveEvent(e); } else if (m_tool == TITLE_RECTANGLE && e->buttons() & Qt::LeftButton) { - if (m_selectedItem == NULL && (m_clickPoint.toPoint() - e->scenePos().toPoint()).manhattanLength() >= QApplication::startDragDistance()) { + if (m_selectedItem == NULL && (m_clickPoint - e->screenPos()).manhattanLength() >= QApplication::startDragDistance()) { // create new rect item - m_selectedItem = addRect(0, 0, e->scenePos().x() - m_clickPoint.x(), e->scenePos().y() - m_clickPoint.y()); + m_selectedItem = addRect(0, 0, e->scenePos().x() - m_sceneClickPoint.x(), e->scenePos().y() - m_sceneClickPoint.y()); emit newRect((QGraphicsRectItem *) m_selectedItem); m_selectedItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); - m_selectedItem->setPos(m_clickPoint); + m_selectedItem->setPos(m_sceneClickPoint); resizeMode = BottomRight; QGraphicsScene::mouseMoveEvent(e); } diff --git a/src/graphicsscenerectmove.h b/src/graphicsscenerectmove.h index 09170243..45bd5f7d 100644 --- a/src/graphicsscenerectmove.h +++ b/src/graphicsscenerectmove.h @@ -16,6 +16,7 @@ public: void setZoom(double s); void setTool(TITLETOOL tool); TITLETOOL tool(); + void clearTextSelection(); protected: virtual void keyPressEvent(QKeyEvent * keyEvent); @@ -30,8 +31,9 @@ private: double zoom; QGraphicsItem* m_selectedItem; resizeModes resizeMode; - QPointF m_clickPoint; + QPointF m_sceneClickPoint; TITLETOOL m_tool; + QPoint m_clickPoint; signals: void itemMoved(); diff --git a/src/kdenlivedoc.cpp b/src/kdenlivedoc.cpp index 043953d8..e24df389 100644 --- a/src/kdenlivedoc.cpp +++ b/src/kdenlivedoc.cpp @@ -488,17 +488,9 @@ void KdenliveDoc::convertDocument(double version) { } } prod.setAttribute("xmldata", tdoc.toString()); - QString titlesFolder = projectFolder().path() + "/titles/"; - KStandardDirs::makeDir(titlesFolder); - QString titleName = "title"; - int counter = 0; - QString path = titlesFolder + titleName + QString::number(counter).rightJustified(3, '0', false); - while (QFile::exists(path + ".png")) { - counter++; - path = titlesFolder + titleName + QString::number(counter).rightJustified(3, '0', false); - } - prod.setAttribute("xml", path); - prod.setAttribute("resource", path + ".png"); + QStringList titleInfo = TitleWidget::getFreeTitleInfo(projectFolder()); + prod.setAttribute("titlename", titleInfo.at(0)); + prod.setAttribute("resource", titleInfo.at(1)); //kDebug()<<"TITLE DATA:\n"<producer() == NULL) { clip->setProducer(prods.at(i)); } + if (clip->clipType() == TEXT && !QFile::exists(clip->fileURL().path())) { + // regenerate text clip image if required + kDebug() << "// TITLE: " << clip->getProperty("titlename") << " Preview file: " << clip->getProperty("resource") << " DOES NOT EXIST"; + QString titlename = clip->getProperty("titlename"); + QString titleresource; + if (titlename.isEmpty()) { + QStringList titleInfo = TitleWidget::getFreeTitleInfo(projectFolder()); + titlename = titleInfo.at(0); + titleresource = titleInfo.at(1); + clip->setProperty("titlename", titlename); + kDebug() << "// New title set to: " << titlename; + } else { + titleresource = TitleWidget::getTitleResourceFromName(projectFolder(), titlename); + } + QString titlepath = projectFolder().path() + "/titles/"; + TitleWidget *dia_ui = new TitleWidget(KUrl(), titlepath, m_render, kapp->activeWindow()); + QDomDocument doc; + doc.setContent(clip->getProperty("xmldata")); + dia_ui->setXml(doc); + QPixmap pix = dia_ui->renderedPixmap(); + pix.save(titleresource); + clip->setProperty("resource", titleresource); + delete dia_ui; + clip->producer()->set("force_reload", 1); + } } } @@ -862,17 +879,11 @@ void KdenliveDoc::slotCreateTextClip(QString group, const QString &groupId) { KStandardDirs::makeDir(titlesFolder); TitleWidget *dia_ui = new TitleWidget(KUrl(), titlesFolder, m_render, kapp->activeWindow()); if (dia_ui->exec() == QDialog::Accepted) { - QString titleName = "title"; - int counter = 0; - QString path = titlesFolder + titleName + QString::number(counter).rightJustified(3, '0', false); - while (QFile::exists(path + ".png")) { - counter++; - path = titlesFolder + titleName + QString::number(counter).rightJustified(3, '0', false); - } + QStringList titleInfo = TitleWidget::getFreeTitleInfo(projectFolder()); QPixmap pix = dia_ui->renderedPixmap(); - pix.save(path + ".png"); + pix.save(titleInfo.at(1)); //dia_ui->saveTitle(path + ".kdenlivetitle"); - m_clipManager->slotAddTextClipFile(path, dia_ui->xml().toString(), QString(), QString()); + m_clipManager->slotAddTextClipFile(titleInfo.at(0), titleInfo.at(1), dia_ui->xml().toString(), QString(), QString()); setModified(true); } delete dia_ui; diff --git a/src/kthumb.cpp b/src/kthumb.cpp index 57aaf4a8..10f8aced 100644 --- a/src/kthumb.cpp +++ b/src/kthumb.cpp @@ -230,6 +230,11 @@ void KThumb::setProducer(Mlt::Producer *producer) { void KThumb::updateClipUrl(KUrl url) { m_url = url; + if (m_producer) { + char *tmp = Render::decodedString(url.path()); + m_producer->set("resource", tmp); + delete[] tmp; + } } //static diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b050f603..4b578d77 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1422,22 +1422,23 @@ void MainWindow::slotGotProgressInfo(const QString &message, int progress) { void MainWindow::slotShowClipProperties(DocClipBase *clip) { if (clip->clipType() == TEXT) { - QString path = clip->getProperty("xml"); - TitleWidget *dia_ui = new TitleWidget(KUrl()/*path + ".kdenlivetitle")*/, path, m_projectMonitor->render, this); + QString titlepath = m_activeDocument->projectFolder().path() + "/titles/"; + QString path = clip->getProperty("resource"); + TitleWidget *dia_ui = new TitleWidget(KUrl(), titlepath, m_projectMonitor->render, this); QDomDocument doc; doc.setContent(clip->getProperty("xmldata")); dia_ui->setXml(doc); if (dia_ui->exec() == QDialog::Accepted) { - kDebug() << "// UPDATUING CLIP TITLE: " << path; QPixmap pix = dia_ui->renderedPixmap(); - pix.save(path + ".png"); + pix.save(path); //slotAddClipFile(KUrl("/tmp/kdenlivetitle.png"), QString(), -1); //m_clipManager->slotEditTextClipFile(id, dia_ui->xml().toString()); QMap newprops; newprops.insert("xmldata", dia_ui->xml().toString()); EditClipCommand *command = new EditClipCommand(m_projectList, clip->getId(), clip->properties(), newprops, true); m_activeDocument->commandStack()->push(command); - //setModified(true); + m_clipMonitor->refreshMonitor(true); + m_activeDocument->setModified(true); } delete dia_ui; diff --git a/src/projectlist.cpp b/src/projectlist.cpp index 217e0b1b..21c28ffe 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -41,6 +41,7 @@ #include "kdenlivesettings.h" #include "slideshowclip.h" #include "ui_colorclip_ui.h" +#include "titlewidget.h" #include "definitions.h" @@ -315,8 +316,20 @@ void ProjectList::updateAllClips() { while (*it) { ProjectItem *item = static_cast (*it); if (!item->isGroup()) { - if (item->referencedClip()->producer() == NULL) emit getFileProperties(item->referencedClip()->toXML(), item->referencedClip()->getId()); - else { + if (item->referencedClip()->producer() == NULL) { + DocClipBase *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); + QPixmap pix = dia_ui->renderedPixmap(); + pix.save(clip->fileURL().path()); + delete dia_ui; + } + emit getFileProperties(clip->toXML(), clip->getId()); + } else { slotRefreshClipThumbnail(item, false); item->changeDuration(item->referencedClip()->producer()->get_playtime()); } @@ -331,7 +344,7 @@ void ProjectList::slotAddClip(QUrl givenUrl, QString group) { if (!m_commandStack) kDebug() << "!!!!!!!!!!!!!!!!  NO CMD STK"; KUrl::List list; if (givenUrl.isEmpty()) { - list = KFileDialog::getOpenUrls(KUrl("kfiledialog:///clipfolder"), "application/vnd.kde.kdenlive application/vnd.westley.scenelist application/flv application/vnd.rn-realmedia video/x-dv video/dv video/x-msvideo video/mpeg video/x-ms-wmv audio/mpeg audio/x-mp3 audio/x-wav application/ogg video/mp4 video/quicktime image/gif image/jpeg image/png image/x-bmp image/svg+xml image/tiff image/x-xcf-gimp image/x-vnd.adobe.photoshop image/x-pcx image/x-exr video/mlt-playlist", this); + list = KFileDialog::getOpenUrls(KUrl("kfiledialog:///clipfolder"), "application/x-kdenlive application/x-flash-video application/vnd.rn-realmedia video/x-dv video/dv video/x-msvideo video/mpeg video/x-ms-wmv audio/mpeg audio/x-mp3 audio/x-wav application/ogg video/mp4 video/quicktime image/gif image/jpeg image/png image/x-bmp image/svg+xml image/tiff image/x-xcf-gimp image/x-vnd.adobe.photoshop image/x-pcx image/x-exr video/mlt-playlist", this); } else list.append(givenUrl); if (list.isEmpty()) return; diff --git a/src/renderer.cpp b/src/renderer.cpp index ce690ac9..74b6ceb2 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -469,6 +469,9 @@ void Render::getFileProperties(const QDomElement &xml, const QString &clipId) { KUrl url = KUrl(xml.attribute("resource", QString::null)); Mlt::Producer *producer; + if (xml.attribute("type").toInt() == TEXT && !QFile::exists(url.path())) { + return; + } if (xml.attribute("type").toInt() == COLOR) { char *tmp = decodedString("colour:" + xml.attribute("colour")); producer = new Mlt::Producer(*m_mltProfile, "fezzik", tmp); @@ -480,14 +483,22 @@ void Render::getFileProperties(const QDomElement &xml, const QString &clipId) { doc.appendChild(westley); westley.appendChild(play); play.appendChild(doc.importNode(xml, true)); - kDebug() << "/ / / / /CLIP XML: " << doc.toString(); char *tmp = decodedString(doc.toString()); producer = new Mlt::Producer(*m_mltProfile, "westley-xml", tmp); delete[] tmp; } else { - char *tmp = decodedString(url.path()); + QString urlpath = url.path(); + /*if (urlpath.contains(':')) { + if (!urlpath.startsWith("file:")) urlpath.prepend("file:"); + char *tmp = decodedString(urlpath); + producer = new Mlt::Producer(*m_mltProfile, "avformat", tmp); + delete[] tmp; + } + else {*/ + char *tmp = decodedString(urlpath); producer = new Mlt::Producer(*m_mltProfile, tmp); delete[] tmp; + //} } if (xml.hasAttribute("out")) producer->set_in_and_out(xml.attribute("in").toInt(), xml.attribute("out").toInt()); @@ -503,7 +514,6 @@ void Render::getFileProperties(const QDomElement &xml, const QString &clipId) { if (frameNumber != 0) producer->seek(frameNumber); mlt_properties properties = MLT_PRODUCER_PROPERTIES(producer->get_producer()); - filePropertyMap["filename"] = url.path(); filePropertyMap["duration"] = QString::number(producer->get_playtime()); //kDebug() << "/////// PRODUCER: " << url.path() << " IS: " << producer.get_playtime(); diff --git a/src/titlewidget.cpp b/src/titlewidget.cpp index 19cc14c9..b2fd5257 100644 --- a/src/titlewidget.cpp +++ b/src/titlewidget.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include "titlewidget.h" #include "kdenlivesettings.h" @@ -37,10 +38,11 @@ int settingUp = false; TitleWidget::TitleWidget(KUrl url, QString projectPath, Render *render, QWidget *parent): QDialog(parent), m_render(render), m_count(0), m_projectPath(projectPath) { setupUi(this); - //frame_properties-> setFont(KGlobalSettings::toolBarFont()); //toolBox->setFont(KGlobalSettings::toolBarFont()); frame_properties->setEnabled(false); + rect_properties->setFixedHeight(frame_properties->height() + 4); + text_properties->setFixedHeight(frame_properties->height() + 4); m_frameWidth = render->renderWidth(); m_frameHeight = render->renderHeight(); //connect(newTextButton, SIGNAL(clicked()), this, SLOT(slotNewText())); @@ -101,7 +103,7 @@ TitleWidget::TitleWidget(KUrl url, QString projectPath, Render *render, QWidget QHBoxLayout *layout = new QHBoxLayout; frame_toolbar->setLayout(layout); - + layout->setContentsMargins(2, 2, 2, 2); QToolBar *m_toolbar = new QToolBar("titleToolBar", this); m_buttonRect = m_toolbar->addAction(KIcon("kdenlive-insert-rect"), i18n("Add Rectangle")); @@ -170,20 +172,44 @@ TitleWidget::TitleWidget(KUrl url, QString projectPath, Render *render, QWidget graphicsView->scene()->addItem(m_frameBorder); initViewports(); - + QTimer::singleShot(500, this, SLOT(slotAdjustZoom())); graphicsView->show(); //graphicsView->setRenderHint(QPainter::Antialiasing); graphicsView->setInteractive(true); - QTimer::singleShot(500, this, SLOT(slotAdjustZoom())); //graphicsView->resize(400, 300); kDebug() << "// TITLE WIDGWT: " << graphicsView->viewport()->width() << "x" << graphicsView->viewport()->height(); toolBox->setItemEnabled(2, false); if (!url.isEmpty()) { m_count = m_titledocument.loadDocument(url, startViewport, endViewport) + 1; slotSelectTool(); - } else slotRectTool(); + } else { + slotRectTool(); + } } +//static +QStringList TitleWidget::getFreeTitleInfo(const KUrl &projectUrl) { + QStringList result; + QString titlePath = projectUrl.path() + "/titles/"; + KStandardDirs::makeDir(titlePath); + QString titleName = "title"; + int counter = 0; + QString path = titlePath + titleName + QString::number(counter).rightJustified(3, '0', false); + while (QFile::exists(path + ".png")) { + counter++; + path = titlePath + titleName + QString::number(counter).rightJustified(3, '0', false); + } + result.append(titleName + QString::number(counter).rightJustified(3, '0', false)); + result.append(path + ".png"); + return result; +} + +QString TitleWidget::getTitleResourceFromName(const KUrl &projectUrl, const QString &titleName) { + QStringList result; + QString titlePath = projectUrl.path() + "/titles/"; + KStandardDirs::makeDir(titlePath); + return titlePath + titleName + ".png"; +} //virtual void TitleWidget::resizeEvent(QResizeEvent * event) { @@ -286,8 +312,8 @@ void TitleWidget::initViewports() { } void TitleWidget::slotUpdateZoom(int pos) { - m_scene->setZoom((double) pos / 7); - zoom_label->setText("x" + QString::number((double) pos / 7, 'g', 2)); + m_scene->setZoom((double) pos / 100); + zoom_label->setText(QString::number(pos) + "%"); } void TitleWidget::slotZoom(bool up) { @@ -298,16 +324,18 @@ void TitleWidget::slotZoom(bool up) { } void TitleWidget::slotAdjustZoom() { - double scalex = graphicsView->width() / (double)(m_frameWidth * 1.2); + /*double scalex = graphicsView->width() / (double)(m_frameWidth * 1.2); double scaley = graphicsView->height() / (double)(m_frameHeight * 1.2); if (scalex > scaley) scalex = scaley; - int zoompos = (int)(scalex * 7 + 0.5); + int zoompos = (int)(scalex * 7 + 0.5);*/ + graphicsView->fitInView(m_frameBorder, Qt::KeepAspectRatio); + int zoompos = graphicsView->matrix().m11() * 100; zoom_slider->setValue(zoompos); graphicsView->centerOn(m_frameBorder); } void TitleWidget::slotZoomOneToOne() { - zoom_slider->setValue(7); + zoom_slider->setValue(100); graphicsView->centerOn(m_frameBorder); } @@ -356,7 +384,7 @@ void TitleWidget::selectionChanged() { value_y->blockSignals(true); value_w->blockSignals(true); value_h->blockSignals(true); - kDebug() << "//////// SELECTION CHANGED; ITEMS: " << l.size(); + //kDebug() << "//////// SELECTION CHANGED; ITEMS: " << l.size(); if (l.size() == 1) { if ((l[0])->type() == 8) { rect_properties->setHidden(true); @@ -409,7 +437,7 @@ void TitleWidget::selectionChanged() { //toolBox->setItemEnabled(3, true); rectFAlpha->setValue(rec->pen().color().alpha()); rectBAlpha->setValue(rec->brush().color().alpha()); - kDebug() << rec->brush().color().alpha(); + //kDebug() << rec->brush().color().alpha(); QColor fcol = rec->pen().color(); QColor bcol = rec->brush().color(); //fcol.setAlpha(255); @@ -622,7 +650,7 @@ QDomDocument TitleWidget::xml() { } void TitleWidget::setXml(QDomDocument doc) { - m_titledocument.loadFromXml(doc, startViewport, endViewport); + m_count = m_titledocument.loadFromXml(doc, startViewport, endViewport); slotSelectTool(); } @@ -631,7 +659,7 @@ QPixmap TitleWidget::renderedPixmap() { pix.fill(Qt::transparent); QPainter painter(&pix); painter.setRenderHint(QPainter::Antialiasing); - m_scene->clearSelection(); + m_scene->clearTextSelection(); QPen framepen = m_frameBorder->pen(); m_frameBorder->setPen(Qt::NoPen); startViewport->setVisible(false); diff --git a/src/titlewidget.h b/src/titlewidget.h index 9bd79ed5..866d737d 100644 --- a/src/titlewidget.h +++ b/src/titlewidget.h @@ -43,10 +43,13 @@ public: class TitleWidget : public QDialog , public Ui::TitleWidget_UI { Q_OBJECT + public: TitleWidget(KUrl url, QString projectPath, Render *render, QWidget *parent = 0); QDomDocument xml(); void setXml(QDomDocument doc); + static QStringList getFreeTitleInfo(const KUrl &projectUrl); + static QString getTitleResourceFromName(const KUrl &projectUrl, const QString &titleName); protected: virtual void resizeEvent(QResizeEvent * event); diff --git a/src/widgets/titlewidget_ui.ui b/src/widgets/titlewidget_ui.ui index 84f9ae78..b1993538 100644 --- a/src/widgets/titlewidget_ui.ui +++ b/src/widgets/titlewidget_ui.ui @@ -28,6 +28,9 @@ QFrame::Sunken + + 2 + @@ -120,6 +123,15 @@ QFrame::Sunken + + 2 + + + 2 + + + 2 + @@ -240,8 +252,8 @@ 0 0 - 283 - 154 + 355 + 168 @@ -359,8 +371,8 @@ 0 0 - 283 - 154 + 355 + 158 @@ -407,8 +419,8 @@ 0 0 - 264 - 212 + 336 + 210 @@ -609,10 +621,10 @@ 1 - 10 + 150 - 2 + 30 Qt::Horizontal @@ -671,6 +683,9 @@ QFrame::Raised + + 2 + @@ -780,6 +795,17 @@ + rect_properties + text_properties + splitter + buttonFitZoom + buttonRealSize + zoom_slider + zoom_label + displayBg + buttonBox + frame_properties + frame_toolbar -- 2.39.2