#FILE(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.svg*")
kde4_install_icons( ${DATA_INSTALL_DIR}/kdenlive/icons)
-#install( FILES ${files} DESTINATION ${ICON_INSTALL_DIR} )
\ No newline at end of file
+#install( FILES ${files} DESTINATION ${ICON_INSTALL_DIR} )
#include <KDebug>
#include <KLocale>
+#include <KGlobalSettings>
#include <QPainter>
#include <QToolTip>
m_keyframeFactor(1),
m_keyframeOffset(0),
m_fps(fps)
-#if QT_VERSION >= 0x040600
- , m_closeAnimation(NULL)
-#endif
{
setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
#if QT_VERSION >= 0x040600
AbstractClipItem::~AbstractClipItem()
{
-#if QT_VERSION >= 0x040600
- if (m_closeAnimation) delete m_closeAnimation;
-#endif
}
void AbstractClipItem::closeAnimation()
{
#if QT_VERSION >= 0x040600
- if (m_closeAnimation) return;
+ if (!isEnabled()) return;
setEnabled(false);
- m_closeAnimation = new QPropertyAnimation(this, "rect");
- connect(m_closeAnimation, SIGNAL(finished()), this, SLOT(deleteLater()));
- m_closeAnimation->setDuration(200);
+ if (!(KGlobalSettings::graphicEffectsLevel() & KGlobalSettings::SimpleAnimationEffects)) {
+ // animation disabled
+ deleteLater();
+ return;
+ }
+ QPropertyAnimation *closeAnimation = new QPropertyAnimation(this, "rect");
+ connect(closeAnimation, SIGNAL(finished()), this, SLOT(deleteLater()));
+ closeAnimation->setDuration(200);
QRectF r = rect();
QRectF r2 = r;
r2.setLeft(r.left() + r.width() / 2);
r2.setTop(r.top() + r.height() / 2);
r2.setWidth(1);
r2.setHeight(1);
- m_closeAnimation->setStartValue(r);
- m_closeAnimation->setEndValue(r2);
- m_closeAnimation->setEasingCurve(QEasingCurve::InQuad);
- m_closeAnimation->start();
+ closeAnimation->setStartValue(r);
+ closeAnimation->setEndValue(r2);
+ closeAnimation->setEasingCurve(QEasingCurve::InQuad);
+ closeAnimation->start(QAbstractAnimation::DeleteWhenStopped);
#endif
}
class AbstractClipItem : public QObject, public QGraphicsRectItem
{
Q_OBJECT
-#if QT_VERSION >= 0x040600
Q_PROPERTY(QRectF rect READ rect WRITE setRect)
-#endif
public:
AbstractClipItem(const ItemInfo &info, const QRectF& rect, double fps);
int mouseOverKeyFrames(QPointF pos, double maxOffset);
virtual void mousePressEvent(QGraphicsSceneMouseEvent * event);
-private:
-#if QT_VERSION >= 0x040600
- QPropertyAnimation *m_closeAnimation;
-#endif
};
#endif
[Desktop Entry]
Name=Kdenlive
Name[cs]=Kdenlive
+Name[da]=Kdenlive
Name[de]=Kdenlive
Name[nds]=Kdenlive
Name[nl]=Kdenlive
Name[x-test]=xxKdenlivexx
GenericName=Video Editor
GenericName[cs]=Editor videí
+GenericName[da]=Videoredigering
GenericName[de]=Video-Editor
GenericName[nl]=Video-bewerker
GenericName[pt]=Editor de Vídeo
GenericName[uk]=Відеоредактор
GenericName[x-test]=xxVideo Editorxx
Comment=Nonlinear video editor for KDE
+Comment[da]=Ikke-lineær videoredigering til KDE
Comment[de]=Nichtlinearer Video-Editor für KDE
Comment[nl]=Niet-lineaire video-bewerker voor KDE
Comment[pt]=Editor de vídeo não-linear para o KDE
IconName=kdenlive
Comment=Kdenlive
Comment[cs]=Kdenlive
+Comment[da]=Kdenlive
Comment[de]=Kdenlive
Comment[nds]=Kdenlive
Comment[nl]=Kdenlive
[Event/RenderFinished]
Name=Rendering finished
Name[cs]=Renderování bylo dokončeno
+Name[da]=Rendering gennemført
Name[nl]=Weergave uitwerken beëindigd
Name[pt]=A geração terminou
Name[sv]=Framställning klar
Name[x-test]=xxRendering finishedxx
Comment=Rendering is over
Comment[cs]=Renderování je hotové
+Comment[da]=Renderingen er slut
Comment[nl]=Weergave uitwerken is gereed
Comment[pt]=A geração terminou
Comment[sv]=Framställning är gjord
[Event/RenderStarted]
Name=Rendering started
Name[cs]=Renderování začalo
+Name[da]=Rendering påbegyndt
Name[nl]=Weergave uitwerken begonnen
Name[pt]=A geração foi iniciada
Name[sv]=Framställning startad
Name[x-test]=xxRendering startedxx
Comment=Rendering was started
Comment[cs]=Renderování bylo začato
+Comment[da]=Renderingen blev startet
Comment[nl]=Weergave uitwerken is begonnen
Comment[pt]=A geração foi iniciada
Comment[sv]=Framställning har startats
[Event/FrameCaptured]
Name=Frame captured
+Name[da]=Billed indfanget
Name[nl]=Frame opgenomen
Name[pt]=Imagem capturada
Name[sv]=Ram lagrad
Name[uk]=Захоплено кадр
Name[x-test]=xxFrame capturedxx
Comment=A frame was captured to disk
+Comment[da]=Et billed blev indfanget til disken
Comment[nl]=Een frame is op schijf opgenomen
Comment[pt]=Foi capturada uma imagem para o disco
Comment[sv]=En ram har lagrats på disk
[Event/ReadyToCapture]
Name=Ready to capture
+Name[da]=Klar til at indfange
Name[nl]=Gereed om op te nemen
Name[pt]=Pronto para capturar
Name[sv]=Klar att lagra
[Event/ErrorMessage]
Name=Error
Name[cs]=Chyba
+Name[da]=Fejl
Name[de]=Fehler
Name[nds]=Fehler
Name[nl]=Fout
Name[uk]=Помилка
Name[x-test]=xxErrorxx
Comment=An error occurred in Kdenlive
+Comment[da]=En fejl opstod i Kdenlive
Comment[nl]=Er is een fout opgetreden in Kdenlive
Comment[pt]=Ocorreu um erro no Kdenlive
Comment[sv]=Ett fel uppstod i Kdenlive
<default>1</default>
</entry>
+ <entry name="proxythreads" type="Int">
+ <label>Proxy creation processing thread count.</label>
+ <default>2</default>
+ </entry>
+
<entry name="encodethreads" type="Int">
<label>FFmpeg encoding thread count.</label>
<default>1</default>
find_package(SharedMimeInfo REQUIRED)
install(FILES kdenlive.xml westley.xml DESTINATION ${XDG_MIME_INSTALL_DIR})
-update_xdg_mimetypes(${XDG_MIME_INSTALL_DIR})
\ No newline at end of file
+update_xdg_mimetypes(${XDG_MIME_INSTALL_DIR})
info.type = item->clipType();
info.exif = QString(item->referencedClip()->producerProperty("_exif_orientation")).toInt();
m_proxyList.append(info);
- m_proxyThreads.addFuture(QtConcurrent::run(this, &ProjectList::slotGenerateProxy));
+ if (m_proxyThreads.futures().isEmpty() || m_proxyThreads.futures().count() < KdenliveSettings::proxythreads()) m_proxyThreads.addFuture(QtConcurrent::run(this, &ProjectList::slotGenerateProxy));
}
void ProjectList::slotAbortProxy(const QString id, const QString path)
void ProjectList::slotGenerateProxy()
{
- if (m_proxyList.isEmpty() || m_abortAllProxies) return;
- emit projectModified();
- PROXYINFO info = m_proxyList.takeFirst();
- if (m_abortProxy.contains(info.dest)) {
- m_abortProxy.removeAll(info.dest);
- return;
- }
+ while (!m_proxyList.isEmpty() && !m_abortAllProxies) {
+ emit projectModified();
+ PROXYINFO info = m_proxyList.takeFirst();
+ if (m_abortProxy.contains(info.dest)) {
+ m_abortProxy.removeAll(info.dest);
+ return;
+ }
- // Make sure proxy path is writable
- QFile file(info.dest);
- if (!file.open(QIODevice::WriteOnly)) {
- setProxyStatus(info.dest, PROXYCRASHED);
- m_processingProxy.removeAll(info.dest);
- return;
- }
- file.close();
- QFile::remove(info.dest);
+ // Make sure proxy path is writable
+ QFile file(info.dest);
+ if (!file.open(QIODevice::WriteOnly)) {
+ setProxyStatus(info.dest, PROXYCRASHED);
+ m_processingProxy.removeAll(info.dest);
+ return;
+ }
+ file.close();
+ QFile::remove(info.dest);
- setProxyStatus(info.dest, CREATINGPROXY);
+ setProxyStatus(info.dest, CREATINGPROXY);
- // Get the list of clips that will need to get progress info
- QTreeWidgetItemIterator it(m_listView);
- QList <ProjectItem *> processingItems;
- while (*it && !m_abortAllProxies) {
- if ((*it)->type() == PROJECTCLIPTYPE) {
- ProjectItem *item = static_cast <ProjectItem *>(*it);
- if (item->referencedClip()->getProperty("proxy") == info.dest) {
- processingItems.append(item);
+ // Get the list of clips that will need to get progress info
+ QTreeWidgetItemIterator it(m_listView);
+ QList <ProjectItem *> processingItems;
+ while (*it && !m_abortAllProxies) {
+ if ((*it)->type() == PROJECTCLIPTYPE) {
+ ProjectItem *item = static_cast <ProjectItem *>(*it);
+ if (item->referencedClip()->getProperty("proxy") == info.dest) {
+ processingItems.append(item);
+ }
}
+ ++it;
}
- ++it;
- }
- // Special case: playlist clips (.mlt or .kdenlive project files)
- if (info.type == PLAYLIST) {
- // change FFmpeg params to MLT format
- QStringList parameters;
- parameters << info.src;
- parameters << "-consumer" << "avformat:" + info.dest;
- QStringList params = m_doc->getDocumentProperty("proxyparams").simplified().split('-', QString::SkipEmptyParts);
+ // Special case: playlist clips (.mlt or .kdenlive project files)
+ if (info.type == PLAYLIST) {
+ // change FFmpeg params to MLT format
+ QStringList parameters;
+ parameters << info.src;
+ parameters << "-consumer" << "avformat:" + info.dest;
+ QStringList params = m_doc->getDocumentProperty("proxyparams").simplified().split('-', QString::SkipEmptyParts);
- foreach(QString s, params) {
- s = s.simplified();
- if (s.count(' ') == 0) {
- s.append("=1");
+ foreach(QString s, params) {
+ s = s.simplified();
+ if (s.count(' ') == 0) {
+ s.append("=1");
+ }
+ else s.replace(' ', '=');
+ parameters << s;
}
- else s.replace(' ', '=');
- parameters << s;
- }
- parameters.append(QString("real_time=-%1").arg(KdenliveSettings::mltthreads()));
-
- //TODO: currently, when rendering an xml file through melt, the display ration is lost, so we enforce it manualy
- double display_ratio = KdenliveDoc::getDisplayRatio(info.src);
- parameters << "aspect=" + QString::number(display_ratio);
+ parameters.append(QString("real_time=-%1").arg(KdenliveSettings::mltthreads()));
+
+ //TODO: currently, when rendering an xml file through melt, the display ration is lost, so we enforce it manualy
+ double display_ratio = KdenliveDoc::getDisplayRatio(info.src);
+ parameters << "aspect=" + QString::number(display_ratio);
+
+ //kDebug()<<"TRANSCOD: "<<parameters;
+ QProcess myProcess;
+ myProcess.setProcessChannelMode(QProcess::MergedChannels);
+ myProcess.start(KdenliveSettings::rendererpath(), parameters);
+ myProcess.waitForStarted();
+ int result = -1;
+ int duration = 0;
+ while (myProcess.state() != QProcess::NotRunning) {
+ // building proxy file
+ if (m_abortProxy.contains(info.dest) || m_abortAllProxies) {
+ myProcess.close();
+ myProcess.waitForFinished();
+ QFile::remove(info.dest);
+ m_abortProxy.removeAll(info.dest);
+ m_processingProxy.removeAll(info.dest);
+ setProxyStatus(info.dest, NOPROXY);
+ result = -2;
+ }
+ else {
+ QString log = QString(myProcess.readAll());
+ processLogInfo(processingItems, &duration, log);
+ }
+ myProcess.waitForFinished(500);
+ }
+ myProcess.waitForFinished();
+ m_processingProxy.removeAll(info.dest);
+ if (result == -1) result = myProcess.exitStatus();
+ if (result == 0) {
+ // proxy successfully created
+ setProxyStatus(info.dest, PROXYDONE);
+ slotGotProxy(info.dest);
+ }
+ else if (result == 1) {
+ // Proxy process crashed
+ QFile::remove(info.dest);
+ setProxyStatus(info.dest, PROXYCRASHED);
+ }
+ continue;
+ }
+
+ if (info.type == IMAGE) {
+ // Image proxy
+ QImage i(info.src);
+ if (i.isNull()) {
+ // Cannot load image
+ setProxyStatus(info.dest, PROXYCRASHED);
+ continue;
+ }
+ QImage proxy;
+ // Images are scaled to profile size.
+ //TODO: Make it be configurable?
+ if (i.width() > i.height()) proxy = i.scaledToWidth(m_render->frameRenderWidth());
+ else proxy = i.scaledToHeight(m_render->renderHeight());
+ if (info.exif > 1) {
+ // Rotate image according to exif data
+ QImage processed;
+ QMatrix matrix;
+
+ switch ( info.exif ) {
+ case 2:
+ matrix.scale( -1, 1 );
+ break;
+ case 3:
+ matrix.rotate( 180 );
+ break;
+ case 4:
+ matrix.scale( 1, -1 );
+ break;
+ case 5:
+ matrix.rotate( 270 );
+ matrix.scale( -1, 1 );
+ break;
+ case 6:
+ matrix.rotate( 90 );
+ break;
+ case 7:
+ matrix.rotate( 90 );
+ matrix.scale( -1, 1 );
+ break;
+ case 8:
+ matrix.rotate( 270 );
+ break;
+ }
+ processed = proxy.transformed( matrix );
+ processed.save(info.dest);
+ }
+ else proxy.save(info.dest);
+ setProxyStatus(info.dest, PROXYDONE);
+ slotGotProxy(info.dest);
+ m_abortProxy.removeAll(info.dest);
+ m_processingProxy.removeAll(info.dest);
+ continue;
+ }
- //kDebug()<<"TRANSCOD: "<<parameters;
+ QStringList parameters;
+ parameters << "-i" << info.src;
+ QString params = m_doc->getDocumentProperty("proxyparams").simplified();
+ foreach(QString s, params.split(' '))
+ parameters << s;
+
+ // Make sure we don't block when proxy file already exists
+ parameters << "-y";
+ parameters << info.dest;
QProcess myProcess;
myProcess.setProcessChannelMode(QProcess::MergedChannels);
- myProcess.start(KdenliveSettings::rendererpath(), parameters);
+ myProcess.start("ffmpeg", parameters);
myProcess.waitForStarted();
int result = -1;
int duration = 0;
+
while (myProcess.state() != QProcess::NotRunning) {
// building proxy file
if (m_abortProxy.contains(info.dest) || m_abortAllProxies) {
myProcess.close();
myProcess.waitForFinished();
- QFile::remove(info.dest);
m_abortProxy.removeAll(info.dest);
m_processingProxy.removeAll(info.dest);
- setProxyStatus(info.dest, NOPROXY);
+ QFile::remove(info.dest);
+ if (!m_abortAllProxies) setProxyStatus(info.dest, NOPROXY);
result = -2;
+
}
else {
QString log = QString(myProcess.readAll());
myProcess.waitForFinished(500);
}
myProcess.waitForFinished();
+ m_abortProxy.removeAll(info.dest);
m_processingProxy.removeAll(info.dest);
if (result == -1) result = myProcess.exitStatus();
if (result == 0) {
QFile::remove(info.dest);
setProxyStatus(info.dest, PROXYCRASHED);
}
- return;
- }
-
- if (info.type == IMAGE) {
- // Image proxy
- QImage i(info.src);
- if (i.isNull()) {
- // Cannot load image
- setProxyStatus(info.dest, PROXYCRASHED);
- return;
- }
- QImage proxy;
- // Images are scaled to profile size.
- //TODO: Make it be configurable?
- if (i.width() > i.height()) proxy = i.scaledToWidth(m_render->frameRenderWidth());
- else proxy = i.scaledToHeight(m_render->renderHeight());
- if (info.exif > 1) {
- // Rotate image according to exif data
- QImage processed;
- QMatrix matrix;
-
- switch ( info.exif ) {
- case 2:
- matrix.scale( -1, 1 );
- break;
- case 3:
- matrix.rotate( 180 );
- break;
- case 4:
- matrix.scale( 1, -1 );
- break;
- case 5:
- matrix.rotate( 270 );
- matrix.scale( -1, 1 );
- break;
- case 6:
- matrix.rotate( 90 );
- break;
- case 7:
- matrix.rotate( 90 );
- matrix.scale( -1, 1 );
- break;
- case 8:
- matrix.rotate( 270 );
- break;
- }
- processed = proxy.transformed( matrix );
- processed.save(info.dest);
- }
- else proxy.save(info.dest);
- setProxyStatus(info.dest, PROXYDONE);
- slotGotProxy(info.dest);
- m_abortProxy.removeAll(info.dest);
- m_processingProxy.removeAll(info.dest);
- return;
- }
-
- QStringList parameters;
- parameters << "-i" << info.src;
- QString params = m_doc->getDocumentProperty("proxyparams").simplified();
- foreach(QString s, params.split(' '))
- parameters << s;
-
- // Make sure we don't block when proxy file already exists
- parameters << "-y";
- parameters << info.dest;
- QProcess myProcess;
- myProcess.setProcessChannelMode(QProcess::MergedChannels);
- myProcess.start("ffmpeg", parameters);
- myProcess.waitForStarted();
- int result = -1;
- int duration = 0;
-
- while (myProcess.state() != QProcess::NotRunning) {
- // building proxy file
- if (m_abortProxy.contains(info.dest) || m_abortAllProxies) {
- myProcess.close();
- myProcess.waitForFinished();
- m_abortProxy.removeAll(info.dest);
- m_processingProxy.removeAll(info.dest);
- QFile::remove(info.dest);
- if (!m_abortAllProxies) setProxyStatus(info.dest, NOPROXY);
- result = -2;
-
- }
- else {
- QString log = QString(myProcess.readAll());
- processLogInfo(processingItems, &duration, log);
- }
- myProcess.waitForFinished(500);
- }
- myProcess.waitForFinished();
- m_abortProxy.removeAll(info.dest);
- m_processingProxy.removeAll(info.dest);
- if (result == -1) result = myProcess.exitStatus();
- if (result == 0) {
- // proxy successfully created
- setProxyStatus(info.dest, PROXYDONE);
- slotGotProxy(info.dest);
- }
- else if (result == 1) {
- // Proxy process crashed
- QFile::remove(info.dest);
- setProxyStatus(info.dest, PROXYCRASHED);
}
}
#include <QDomElement>
#include <QPainter>
#include <QStyleOptionGraphicsItem>
-
+#if QT_VERSION >= 0x040600
+#include <QPropertyAnimation>
+#endif
Transition::Transition(const ItemInfo &info, int transitiontrack, double fps, QDomElement params, bool automaticTransition) :
AbstractClipItem(info, QRectF(), fps),
setPos(info.startPos.frames(fps), (int)(info.track * KdenliveSettings::trackheight() + itemOffset() + 1));
#if QT_VERSION >= 0x040600
- m_startAnimation = new QPropertyAnimation(this, "rect");
- m_startAnimation->setDuration(200);
- QRectF r(0, 0, m_info.cropDuration.frames(fps) - 0.02, (qreal) itemHeight() / 2);
- QRectF r2(0, 0, m_info.cropDuration.frames(fps) - 0.02, (qreal)itemHeight());
- m_startAnimation->setStartValue(r);
- m_startAnimation->setEndValue(r2);
- m_startAnimation->setEasingCurve(QEasingCurve::OutQuad);
- m_startAnimation->start();
+ if (!(KGlobalSettings::graphicEffectsLevel() & KGlobalSettings::SimpleAnimationEffects)) {
+ // animation disabled
+ setRect(0, 0, m_info.cropDuration.frames(fps) - 0.02, (qreal) itemHeight());
+ }
+ else {
+ QPropertyAnimation *startAnimation = new QPropertyAnimation(this, "rect");
+ startAnimation->setDuration(200);
+ const QRectF r(0, 0, m_info.cropDuration.frames(fps) - 0.02, (qreal) itemHeight() / 2);
+ const QRectF r2(0, 0, m_info.cropDuration.frames(fps) - 0.02, (qreal)itemHeight());
+ startAnimation->setStartValue(r);
+ startAnimation->setEndValue(r2);
+ startAnimation->setEasingCurve(QEasingCurve::OutQuad);
+ startAnimation->start(QAbstractAnimation::DeleteWhenStopped);
+ }
#else
setRect(0, 0, m_info.cropDuration.frames(fps) - 0.02, (qreal) itemHeight());
#endif
Transition::~Transition()
{
blockSignals(true);
-#if QT_VERSION >= 0x040600
- delete m_startAnimation;
-#endif
if (scene()) scene()->removeItem(this);
}
/** @brief Returns the transition type for a given name. */
TRANSITIONTYPE getTransitionForName(const QString & type);
-
-#if QT_VERSION >= 0x040600
- QPropertyAnimation *m_startAnimation;
-#endif
};
#endif
<rect>
<x>0</x>
<y>0</y>
- <width>384</width>
- <height>203</height>
+ <width>297</width>
+ <height>215</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
</property>
</widget>
</item>
- <item row="1" column="0">
+ <item row="2" column="0">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
<attribute name="title">
<string>MLT environment</string>
</attribute>
- <layout class="QGridLayout" name="gridLayout_4">
+ <layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
</property>
</widget>
</item>
- <item row="0" column="1" colspan="2">
+ <item row="0" column="1" colspan="3">
<widget class="KUrlRequester" name="mltpathurl"/>
</item>
<item row="1" column="0">
</property>
</widget>
</item>
- <item row="1" column="1" colspan="2">
+ <item row="1" column="1" colspan="3">
<widget class="KUrlRequester" name="rendererpathurl"/>
</item>
- <item row="3" column="1">
- <spacer name="verticalSpacer_2">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
<item row="2" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
</property>
</widget>
</item>
- <item row="2" column="1">
+ <item row="2" column="1" colspan="2">
<widget class="QSpinBox" name="kcfg_mltthreads">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
</property>
</widget>
</item>
- <item row="2" column="2">
+ <item row="2" column="3">
<widget class="QLabel" name="label_7">
<property name="text">
<string>(>1 is experimental)</string>
</widget>
</widget>
</item>
+ <item row="3" column="0">
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="0">
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>Proxy clips</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_4">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string>Processing threads</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="kcfg_proxythreads">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
</layout>
</widget>
<customwidgets>
<customwidget>
- <class>KUrlRequester</class>
- <extends>QFrame</extends>
- <header>kurlrequester.h</header>
- <container>1</container>
+ <class>KLineEdit</class>
+ <extends>QLineEdit</extends>
+ <header>klineedit.h</header>
</customwidget>
<customwidget>
<class>KPushButton</class>
<header>kpushbutton.h</header>
</customwidget>
<customwidget>
- <class>KLineEdit</class>
- <extends>QLineEdit</extends>
- <header>klineedit.h</header>
+ <class>KUrlRequester</class>
+ <extends>QFrame</extends>
+ <header>kurlrequester.h</header>
+ <container>1</container>
</customwidget>
</customwidgets>
<resources/>
Type=Service
Name=MLT Playlist
Name[cs]=Seznam skladeb MLT
+Name[da]=MLT-spilleliste
Name[de]=MLT-Wiedergabeliste
Name[nl]=MLT-afspeellijst
Name[pt]=Lista de Reprodução MLT