if (version <= 0.83) {
// Replace point size with pixel size in text titles
+ KMessageBox::ButtonCode convert;
if (m_doc.toString().contains("font-size")) {
QDomNodeList kproducerNodes = m_doc.elementsByTagName("kdenlive_producer");
- for (int i = 0; i < kproducerNodes.count(); ++i) {
+ for (int i = 0; i < kproducerNodes.count() && convert != KMessageBox::No; ++i) {
QDomElement kproducer = kproducerNodes.at(i).toElement();
if (kproducer.attribute("type").toInt() == TEXT) {
QDomDocument data;
data.setContent(kproducer.attribute("xmldata"));
QDomNodeList items = data.firstChild().childNodes();
- for (int j = 0; j < items.count(); ++j) {
+ for (int j = 0; j < items.count() && convert != KMessageBox::No; ++j) {
if (items.at(j).attributes().namedItem("type").nodeValue() == "QGraphicsTextItem") {
QDomNamedNodeMap textProperties = items.at(j).namedItem("content").attributes();
- if (textProperties.namedItem("font-pixel-size").isNull()) {
- QFont font;
- font.setPointSize(textProperties.namedItem("font-size").nodeValue().toInt());
- QDomElement content = items.at(j).namedItem("content").toElement();
- content.setAttribute("font-pixel-size", QFontInfo(font).pixelSize());
- content.removeAttribute("font-size");
- kproducer.setAttribute("xmldata", data.toString());
- /*
- * You may be tempted to delete the preview file
- * to force its recreation: bad idea (see
- * http://www.kdenlive.org/mantis/view.php?id=749)
- */
+ if (textProperties.namedItem("font-pixel-size").isNull() && !textProperties.namedItem("font-size").isNull()) {
+ // Ask the user if he wants to convert
+ if (convert != KMessageBox::Yes && convert != KMessageBox::No)
+ convert = (KMessageBox::ButtonCode)KMessageBox::warningYesNo(kapp->activeWindow(), i18n("Some of your text clips were saved with size in points, which means different sizes on different displays. Do you want to convert them to pixel size, making them portable? It is recommended you do this on the computer they were first created on, or you could have to adjust their size."), i18n("Update Text Clips"));
+ if (convert == KMessageBox::Yes) {
+ QFont font;
+ font.setPointSize(textProperties.namedItem("font-size").nodeValue().toInt());
+ QDomElement content = items.at(j).namedItem("content").toElement();
+ content.setAttribute("font-pixel-size", QFontInfo(font).pixelSize());
+ content.removeAttribute("font-size");
+ kproducer.setAttribute("xmldata", data.toString());
+ /*
+ * You may be tempted to delete the preview file
+ * to force its recreation: bad idea (see
+ * http://www.kdenlive.org/mantis/view.php?id=749)
+ */
+ }
}
}
}
#include <KDebug>
#include <KTemporaryFile>
#include <kio/netaccess.h>
+#include <KApplication>
+#include <KLocale>
+#include <KMessageBox>
#include <QGraphicsScene>
#include <QDomElement>
font.setUnderline(txtProperties.namedItem("font-underline").nodeValue().toInt());
// Older Kdenlive version did not store pixel size but point size
if (txtProperties.namedItem("font-pixel-size").isNull()) {
+ KMessageBox::information(kapp->activeWindow(), i18n("Some of your text clips were saved with size in points, which means different sizes on different displays. They will be converted to pixel size, making them portable, but you could have to adjust their size."), i18n("Text Clips Updated"));
QFont f2;
f2.setPointSize(txtProperties.namedItem("font-size").nodeValue().toInt());
font.setPixelSize(QFontInfo(f2).pixelSize());
- } else font.setPixelSize(txtProperties.namedItem("font-pixel-size").nodeValue().toInt());
+ } else
+ font.setPixelSize(txtProperties.namedItem("font-pixel-size").nodeValue().toInt());
QColor col(stringToColor(txtProperties.namedItem("font-color").nodeValue()));
QGraphicsTextItem *txt = m_scene->addText(items.item(i).namedItem("content").firstChild().nodeValue(), font);
txt->setDefaultTextColor(col);