From 7facb0252ef70a21cb71370bf7998eafc403f02f Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Tue, 5 May 2009 01:25:06 +0000 Subject: [PATCH] Add text alignment options to titler svn path=/trunk/kdenlive/; revision=3362 --- src/titledocument.cpp | 16 +++++++++++++++ src/titlewidget.cpp | 46 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/src/titledocument.cpp b/src/titledocument.cpp index 4b6ab4e4..9ed00394 100644 --- a/src/titledocument.cpp +++ b/src/titledocument.cpp @@ -29,6 +29,7 @@ #include #include #include +#include TitleDocument::TitleDocument() @@ -84,6 +85,9 @@ QDomDocument TitleDocument::xml(QGraphicsPolygonItem* startv, QGraphicsPolygonIt content.setAttribute("font-italic", font.italic()); content.setAttribute("font-underline", font.underline()); content.setAttribute("font-color", colorToString(t->defaultTextColor())); + if (t->textWidth() != -1) { + content.setAttribute("alignment", t->textCursor().blockFormat().alignment()); + } break; default: continue; @@ -218,6 +222,18 @@ int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsPolygonItem* /*startv* QGraphicsTextItem *txt = m_scene->addText(items.item(i).namedItem("content").firstChild().nodeValue(), font); txt->setDefaultTextColor(col); txt->setTextInteractionFlags(Qt::NoTextInteraction); + if (txtProperties.namedItem("alignment").isNull() == false) { + txt->setTextWidth(txt->boundingRect().width()); + QTextCursor cur = txt->textCursor(); + QTextBlockFormat format = cur.blockFormat(); + format.setAlignment((Qt::Alignment) txtProperties.namedItem("alignment").nodeValue().toInt()); + cur.select(QTextCursor::Document); + cur.setBlockFormat(format); + txt->setTextCursor(cur); + cur.clearSelection(); + txt->setTextCursor(cur); + } + gitem = txt; } else if (items.item(i).attributes().namedItem("type").nodeValue() == "QGraphicsRectItem") { QString rect = items.item(i).namedItem("content").attributes().namedItem("rect").nodeValue(); diff --git a/src/titlewidget.cpp b/src/titlewidget.cpp index d8876bae..b338bd59 100644 --- a/src/titlewidget.cpp +++ b/src/titlewidget.cpp @@ -30,6 +30,8 @@ #include #include #include +#include +#include int settingUp = false; @@ -99,6 +101,10 @@ TitleWidget::TitleWidget(KUrl url, QString projectPath, Render *render, QWidget connect(buttonBold, SIGNAL(clicked()), this, SLOT(slotUpdateText())); connect(buttonItalic, SIGNAL(clicked()), this, SLOT(slotUpdateText())); connect(buttonUnder, SIGNAL(clicked()), this, SLOT(slotUpdateText())); + connect(buttonAlignLeft, SIGNAL(clicked()), this, SLOT(slotUpdateText())); + connect(buttonAlignRight, SIGNAL(clicked()), this, SLOT(slotUpdateText())); + connect(buttonAlignCenter, SIGNAL(clicked()), this, SLOT(slotUpdateText())); + connect(buttonAlignNone, SIGNAL(clicked()), this, SLOT(slotUpdateText())); connect(displayBg, SIGNAL(stateChanged(int)), this, SLOT(displayBackgroundFrame())); // mbd @@ -109,6 +115,13 @@ TitleWidget::TitleWidget(KUrl url, QString projectPath, Render *render, QWidget buttonBold->setIcon(KIcon("format-text-bold")); buttonItalic->setIcon(KIcon("format-text-italic")); buttonUnder->setIcon(KIcon("format-text-underline")); + buttonAlignCenter->setIcon(KIcon("format-justify-center")); + buttonAlignLeft->setIcon(KIcon("format-justify-left")); + buttonAlignRight->setIcon(KIcon("format-justify-right")); + buttonAlignNone->setToolTip(i18n("No alignment")); + buttonAlignRight->setToolTip(i18n("Align right")); + buttonAlignLeft->setToolTip(i18n("Align left")); + buttonAlignCenter->setToolTip(i18n("Align center")); itemhcenter->setIcon(KIcon("kdenlive-align-hor")); itemhcenter->setToolTip(i18n("Align item horizontally")); @@ -458,6 +471,10 @@ void TitleWidget::selectionChanged() buttonUnder->blockSignals(true); fontColorButton->blockSignals(true); textAlpha->blockSignals(true); + buttonAlignLeft->blockSignals(true); + buttonAlignRight->blockSignals(true); + buttonAlignNone->blockSignals(true); + buttonAlignCenter->blockSignals(true); QFont font = i->font(); font_family->setCurrentFont(font); @@ -470,6 +487,13 @@ void TitleWidget::selectionChanged() fontColorButton->setColor(color); textAlpha->setValue(color.alpha()); + QTextCursor cur = i->textCursor(); + QTextBlockFormat format = cur.blockFormat(); + if (i->textWidth() == -1) buttonAlignNone->setChecked(true); + else if (format.alignment() == Qt::AlignHCenter) buttonAlignCenter->setChecked(true); + else if (format.alignment() == Qt::AlignRight) buttonAlignRight->setChecked(true); + else if (format.alignment() == Qt::AlignLeft) buttonAlignLeft->setChecked(true); + font_size->blockSignals(false); font_family->blockSignals(false); buttonBold->blockSignals(false); @@ -477,6 +501,10 @@ void TitleWidget::selectionChanged() buttonUnder->blockSignals(false); fontColorButton->blockSignals(false); textAlpha->blockSignals(false); + buttonAlignLeft->blockSignals(false); + buttonAlignRight->blockSignals(false); + buttonAlignNone->blockSignals(false); + buttonAlignCenter->blockSignals(false); value_x->setValue((int) i->pos().x()); value_y->setValue((int) i->pos().y()); @@ -576,9 +604,27 @@ void TitleWidget::slotUpdateText() } if (!item) return; //if (item->textCursor().selection ().isEmpty()) + QTextCursor cur = item->textCursor(); + QTextBlockFormat format = cur.blockFormat(); + if (buttonAlignLeft->isChecked() || buttonAlignCenter->isChecked() || buttonAlignRight->isChecked()) { + item->setTextWidth(item->boundingRect().width()); + if (buttonAlignCenter->isChecked()) format.setAlignment(Qt::AlignHCenter); + else if (buttonAlignRight->isChecked()) format.setAlignment(Qt::AlignRight); + else if (buttonAlignLeft->isChecked()) format.setAlignment(Qt::AlignLeft); + } else { + format.setAlignment(Qt::AlignLeft); + item->setTextWidth(-1); + } + { item->setFont(font); item->setDefaultTextColor(color); + cur.select(QTextCursor::Document); + cur.setBlockFormat(format); + item->setTextCursor(cur); + cur.clearSelection(); + item->setTextCursor(cur); + } /*else { QTextDocumentFragment selec = item->textCursor().selection (); -- 2.39.2