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);
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();
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());
}
{
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());
}
return NULL;
}
-DocClipBase *ClipManager::getClipByResource(QString resource)
+const QList <DocClipBase *> ClipManager::getClipByResource(QString resource)
{
+ QList <DocClipBase *> 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()
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()) {
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);
}
void ClipManager::slotClipModified(const QString &path)
{
//kDebug()<<"// CLIP: "<<path<<" WAS MODIFIED";
- DocClipBase *clip = getClipByResource(path);
- if (clip == NULL) return;
- emit reloadClip(clip->getId());
-}
\ No newline at end of file
+ const QList <DocClipBase *> list = getClipByResource(path);
+ for (int i = 0; i < list.count(); i++) {
+ DocClipBase *clip = list.at(i);
+ if (clip != NULL) emit reloadClip(clip->getId());
+ }
+}
+
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 <DocClipBase *> getClipByResource(QString resource);
void slotDeleteClip(const QString & clipId);
void setThumbsProgress(const QString &message, int progress);
void checkAudioThumbs();
else newrect.setWidth(m_selectedItem->data(0).toInt() * vRatio);
}
- gi->setRect(newrect);
+ gi->setRect(newrect);
}
/*else {
qreal s;
}
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();
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();
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()));
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()));
}
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;
void MainWindow::slotReloadEffects()
{
- kDebug()<<"START RELOAD; COUNR: "<<m_customEffectsMenu->actions().count();
+ kDebug() << "START RELOAD; COUNR: " << m_customEffectsMenu->actions().count();
m_customEffectsMenu->clear();
- kDebug()<<"START RELOAD; CLR: "<<m_customEffectsMenu->actions().count();
+ kDebug() << "START RELOAD; CLR: " << m_customEffectsMenu->actions().count();
initEffects::parseCustomEffectsFile();
const QStringList effects = customEffects.effectNames();
- kDebug()<<"NEW EFFS: "<<effects;
+ kDebug() << "NEW EFFS: " << effects;
QAction *action;
if (effects.isEmpty()) m_customEffectsMenu->setEnabled(false);
else m_customEffectsMenu->setEnabled(true);
{
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
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;
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();
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")) {
// 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);
}
doc.setContent(clip->getProperty("xmldata"));
dia_ui->setXml(doc);
if (dia_ui->exec() == QDialog::Accepted) {
- QRect rect = dia_ui->renderedRect();
QMap <QString, QString> 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());
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()));
int frames;
if (m_frametimecode) frames = m_timePos->text().toInt();
else frames = m_monitorManager->timecode().getFrameCount(m_timePos->text());
- kDebug()<<"// / / SEEK TO: "<<frames;
+ //kDebug() << "// / / SEEK TO: " << frames;
slotSeek(frames);
}
tip.append(i18n("Image clip") + "</b><br />" + clipUrl().path());
break;
case TEXT:
- tip.append(i18n("Text clip") + "</b><br />" + clipUrl().path());
+ if (!clipUrl().isEmpty() && m_clip->getProperty("xmldata").isEmpty()) tip.append(i18n("Template text clip") + "</b><br />" + clipUrl().path());
+ else tip.append(i18n("Text clip") + "</b><br />" + clipUrl().path());
break;
case SLIDESHOW:
tip.append(i18n("Slideshow clip") + "</b><br />" + clipUrl().directory());
{
if (!clip) return;
if (!clip->isGroup()) clip->setProperties(properties);
- //if (properties.contains("xmldata")) regenerateTemplateImage(clip);
if (properties.contains("name")) {
m_listView->blockSignals(true);
clip->setText(1, properties.value("name"));
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());*/
item = static_cast <ProjectItem *>(*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());
//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;
}
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;
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();
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);
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);
}
{
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;
}
else title_duration->setText(m_tc.getTimecode(GenTime(5000)));*/
QDomElement e = doc.documentElement();
- cropImage->setChecked(e.hasAttribute("crop"));
m_transformations.clear();
QList <QGraphicsItem *> items = graphicsView->scene()->items();
const double PI = 4.0 * atan(1.0);
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()
{
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();
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()
* 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;
void itemRotate(int);
void saveTitle(KUrl url = KUrl());
void loadTitle(KUrl url = KUrl());
- QImage renderedPixmap();
private slots:
void slotAdjustSelectedItem();
// 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 <DocClipBase *> list = m_doc->clipManager()->getClipByResource(resource);
+ if (!list.isEmpty()) missingClip = list.at(0);
+ }
return missingClip;
}
<rect>
<x>0</x>
<y>0</y>
- <width>363</width>
- <height>161</height>
+ <width>372</width>
+ <height>178</height>
</rect>
</property>
- <layout class="QGridLayout" name="gridLayout">
+ <layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
</property>
</widget>
</item>
- <item row="0" column="1" colspan="4">
- <widget class="KUrlComboRequester" name="template_list"/>
- </item>
- <item row="1" column="0" colspan="2">
- <widget class="QRadioButton" name="normal_clip">
- <property name="text">
- <string>Normal title clip</string>
- </property>
- <property name="checked">
- <bool>true</bool>
+ <item row="0" column="1" colspan="2">
+ <widget class="KUrlComboRequester" name="template_list">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
</widget>
</item>
- <item row="1" column="2" colspan="2">
- <widget class="QRadioButton" name="clone_clip">
- <property name="text">
- <string>Clone title clip</string>
+ <item row="1" column="0" colspan="3">
+ <widget class="QGroupBox" name="text_box">
+ <property name="title">
+ <string>Text</string>
</property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="KTextEdit" name="description"/>
+ </item>
+ </layout>
+ <zorder>description</zorder>
+ <zorder>description</zorder>
</widget>
</item>
- <item row="1" column="4">
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>109</width>
- <height>15</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="2" column="0" colspan="5">
- <widget class="KTextEdit" name="description"/>
- </item>
- <item row="3" column="4">
+ <item row="2" column="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</spacer>
</item>
- <item row="4" column="3" colspan="2">
+ <item row="3" column="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<x>0</x>
<y>0</y>
<width>736</width>
- <height>536</height>
+ <height>566</height>
</rect>
</property>
<property name="sizePolicy">
</property>
</widget>
</item>
- <item row="0" column="4" colspan="4">
+ <item row="0" column="4" colspan="3">
<widget class="QFrame" name="frame_properties">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
</layout>
</widget>
</item>
- <item row="1" column="0" colspan="8">
+ <item row="1" column="0" colspan="7">
<widget class="QFrame" name="no_properties">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</layout>
</widget>
</item>
- <item row="2" column="0" colspan="8">
+ <item row="2" column="0" colspan="7">
<widget class="QFrame" name="rect_properties">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</layout>
</widget>
</item>
- <item row="3" column="0" colspan="8">
+ <item row="3" column="0" colspan="7">
<widget class="QFrame" name="text_properties">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</layout>
</widget>
</item>
- <item row="4" column="0" colspan="8">
+ <item row="4" column="0" colspan="7">
<widget class="QFrame" name="image_properties">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</layout>
</widget>
</item>
- <item row="5" column="0" colspan="8">
+ <item row="5" column="0" colspan="7">
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</sizepolicy>
</property>
</widget>
- <widget class="QWidget" name="">
+ <widget class="QWidget" name="layoutWidget">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label_3">
</widget>
</item>
<item row="6" column="5">
- <widget class="QCheckBox" name="cropImage">
- <property name="text">
- <string>Crop to frame size</string>
- </property>
- </widget>
- </item>
- <item row="6" column="6">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</spacer>
</item>
- <item row="6" column="7">
+ <item row="6" column="6">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>