From 990e792dc91c835ef992ade25f760c3dc9b5534f Mon Sep 17 00:00:00 2001 From: "Simon A. Eugster" Date: Fri, 28 May 2010 15:39:45 +0000 Subject: [PATCH] r6465@lapL: simon | 2010-05-28 17:28:09 +0200 http://www.kdenlive.org/mantis/view.php?id=1610 * Changing text properties of multiple text objects works. * Some comments added. svn path=/trunk/kdenlive/; revision=4485 --- src/titlewidget.cpp | 80 +++++++++++++++++++++++++++------------------ 1 file changed, 48 insertions(+), 32 deletions(-) diff --git a/src/titlewidget.cpp b/src/titlewidget.cpp index 85e230e2..10da04ce 100644 --- a/src/titlewidget.cpp +++ b/src/titlewidget.cpp @@ -47,6 +47,8 @@ #include #endif +#include + static QList titletemplates; int settingUp = false; @@ -859,6 +861,8 @@ void TitleWidget::selectionChanged() { if(m_scene->tool() != TITLE_SELECT) return; + std::cout << "Number of selected items: " << graphicsView->scene()->selectedItems().length() << "\n"; + QList l; // mbt 1607: One text item might have grabbed the keyboard. @@ -1101,6 +1105,9 @@ void TitleWidget::selectionChanged() itemrotatex->blockSignals(false); itemrotatey->blockSignals(false); itemrotatez->blockSignals(false); + } else { + // More than one item selected + //TODO } // Tools working on more than one element. if(l.size() > 0) @@ -1531,39 +1538,48 @@ void TitleWidget::slotUpdateText() QColor outlineColor = textOutlineColor->color(); outlineColor.setAlpha(textOutlineAlpha->value()); double outlineWidth = textOutline->value() / 10.0; - QGraphicsTextItem* item = NULL; - QList l = graphicsView->scene()->selectedItems(); - if(l.size() == 1 && l.at(0)->type() == TEXTITEM) { - item = static_cast (l.at(0)); - } - if(!item) return; - //if (item->textCursor().selection ().isEmpty()) - QTextCursor cur(item->document()); - cur.select(QTextCursor::Document); - 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); + + int i; + for (i = 0; i < graphicsView->scene()->selectedItems().length(); i++) { + QGraphicsTextItem* item = NULL; + QList l = graphicsView->scene()->selectedItems(); + if(l.at(i)->type() == TEXTITEM) { + item = static_cast (l.at(i)); + } + if(!item) { + // No text item, try next one. + continue; + } + + // Set alignment of all text in the text item + QTextCursor cur(item->document()); + cur.select(QTextCursor::Document); + 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); + } + + // Set font properties + item->setFont(font); + QTextCharFormat cformat = cur.charFormat(); + + item->setData(101, outlineWidth); + item->setData(102, outlineColor); + if(outlineWidth > 0.0) cformat.setTextOutline(QPen(outlineColor, outlineWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + + cformat.setForeground(QBrush(color)); + cur.setCharFormat(cformat); + cur.setBlockFormat(format); +// item->setTextCursor(cur); + cur.clearSelection(); + item->setTextCursor(cur); } - - item->setFont(font); - QTextCharFormat cformat = cur.charFormat(); - - item->setData(101, outlineWidth); - item->setData(102, outlineColor); - if(outlineWidth > 0.0) cformat.setTextOutline(QPen(outlineColor, outlineWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); - - cformat.setForeground(QBrush(color)); - cur.setCharFormat(cformat); - cur.setBlockFormat(format); - item->setTextCursor(cur); - cur.clearSelection(); - item->setTextCursor(cur); } void TitleWidget::rectChanged() -- 2.39.2