summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
5456223)
Titler widget: vertical lines added to keep different elements separated
Comments inserted
Warning message adjusted
svn path=/trunk/kdenlive/; revision=4479
const double DOCUMENTVERSION = 0.85;
KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, QString profileName, const QPoint tracks, Render *render, MainWindow *parent) :
const double DOCUMENTVERSION = 0.85;
KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, QString profileName, const QPoint tracks, Render *render, MainWindow *parent) :
- QObject(parent),
- m_autosave(NULL),
- m_url(url),
- m_render(render),
- m_commandStack(new QUndoStack(undoGroup)),
- m_modified(false),
- m_projectFolder(projectFolder),
- m_abortLoading(false)
+ QObject(parent),
+ m_autosave(NULL),
+ m_url(url),
+ m_render(render),
+ m_commandStack(new QUndoStack(undoGroup)),
+ m_modified(false),
+ m_projectFolder(projectFolder),
+ m_abortLoading(false)
{
m_clipManager = new ClipManager(this);
m_autoSaveTimer = new QTimer(this);
{
m_clipManager = new ClipManager(this);
m_autoSaveTimer = new QTimer(this);
m_documentProperties["zonein"] = "0";
m_documentProperties["zoneout"] = "100";
m_documentProperties["zonein"] = "0";
m_documentProperties["zoneout"] = "100";
QString tmpFile;
success = KIO::NetAccess::download(url.path(), tmpFile, parent);
QString tmpFile;
success = KIO::NetAccess::download(url.path(), tmpFile, parent);
- if (!success) // The file cannot be opened
+ if(!success) // The file cannot be opened
KMessageBox::error(parent, KIO::NetAccess::lastErrorString());
else {
QFile file(tmpFile);
KMessageBox::error(parent, KIO::NetAccess::lastErrorString());
else {
QFile file(tmpFile);
file.close();
KIO::NetAccess::removeTempFile(tmpFile);
file.close();
KIO::NetAccess::removeTempFile(tmpFile);
- if (!success) // It is corrupted
+ if(!success) // It is corrupted
KMessageBox::error(parent, errorMsg);
else {
parent->slotGotProgressInfo(i18n("Validating"), 0);
DocumentValidator validator(m_document);
success = validator.isProject();
KMessageBox::error(parent, errorMsg);
else {
parent->slotGotProgressInfo(i18n("Validating"), 0);
DocumentValidator validator(m_document);
success = validator.isProject();
// It is not a project file
parent->slotGotProgressInfo(i18n("File %1 is not a Kdenlive project file", m_url.path()), 0);
} else {
// It is not a project file
parent->slotGotProgressInfo(i18n("File %1 is not a Kdenlive project file", m_url.path()), 0);
} else {
*/
// TODO: backup the document or alert the user?
success = validator.validate(DOCUMENTVERSION);
*/
// TODO: backup the document or alert the user?
success = validator.validate(DOCUMENTVERSION);
- if (success) { // Let the validator handle error messages
+ if(success) { // Let the validator handle error messages
parent->slotGotProgressInfo(i18n("Loading"), 0);
QDomElement mlt = m_document.firstChildElement("mlt");
QDomElement infoXml = mlt.firstChildElement("kdenlivedoc");
parent->slotGotProgressInfo(i18n("Loading"), 0);
QDomElement mlt = m_document.firstChildElement("mlt");
QDomElement infoXml = mlt.firstChildElement("kdenlivedoc");
m_projectFolder = KUrl(infoXml.attribute("projectfolder"));
QDomElement docproperties = infoXml.firstChildElement("documentproperties");
QDomNamedNodeMap props = docproperties.attributes();
m_projectFolder = KUrl(infoXml.attribute("projectfolder"));
QDomElement docproperties = infoXml.firstChildElement("documentproperties");
QDomNamedNodeMap props = docproperties.attributes();
- for (int i = 0; i < props.count(); i++) {
+ for(int i = 0; i < props.count(); i++) {
m_documentProperties.insert(props.item(i).nodeName(), props.item(i).nodeValue());
}
// Build tracks
QDomElement e;
QDomElement tracksinfo = infoXml.firstChildElement("tracksinfo");
TrackInfo projectTrack;
m_documentProperties.insert(props.item(i).nodeName(), props.item(i).nodeValue());
}
// Build tracks
QDomElement e;
QDomElement tracksinfo = infoXml.firstChildElement("tracksinfo");
TrackInfo projectTrack;
- if (!tracksinfo.isNull()) {
+ if(!tracksinfo.isNull()) {
QDomNodeList trackslist = tracksinfo.childNodes();
int maxchild = trackslist.count();
QDomNodeList trackslist = tracksinfo.childNodes();
int maxchild = trackslist.count();
- for (int k = 0; k < maxchild; k++) {
+ for(int k = 0; k < maxchild; k++) {
e = trackslist.at(k).toElement();
e = trackslist.at(k).toElement();
- if (e.tagName() == "trackinfo") {
- if (e.attribute("type") == "audio") projectTrack.type = AUDIOTRACK;
+ if(e.tagName() == "trackinfo") {
+ if(e.attribute("type") == "audio") projectTrack.type = AUDIOTRACK;
else projectTrack.type = VIDEOTRACK;
projectTrack.isMute = e.attribute("mute").toInt();
projectTrack.isBlind = e.attribute("blind").toInt();
else projectTrack.type = VIDEOTRACK;
projectTrack.isMute = e.attribute("mute").toInt();
projectTrack.isBlind = e.attribute("blind").toInt();
QDomNodeList producers = m_document.elementsByTagName("producer");
QDomNodeList infoproducers = m_document.elementsByTagName("kdenlive_producer");
parent->slotGotProgressInfo(i18n("Check missing clips"), 0);
QDomNodeList producers = m_document.elementsByTagName("producer");
QDomNodeList infoproducers = m_document.elementsByTagName("kdenlive_producer");
parent->slotGotProgressInfo(i18n("Check missing clips"), 0);
- if (checkDocumentClips(infoproducers) == false) m_abortLoading = true;
+ if(checkDocumentClips(infoproducers) == false) m_abortLoading = true;
const int max = producers.count();
const int infomax = infoproducers.count();
QDomNodeList folders = m_document.elementsByTagName("folder");
const int max = producers.count();
const int infomax = infoproducers.count();
QDomNodeList folders = m_document.elementsByTagName("folder");
- for (int i = 0; i < folders.count(); i++) {
+ for(int i = 0; i < folders.count(); i++) {
e = folders.item(i).cloneNode().toElement();
m_clipManager->addFolder(e.attribute("id"), e.attribute("name"));
}
e = folders.item(i).cloneNode().toElement();
m_clipManager->addFolder(e.attribute("id"), e.attribute("name"));
}
- for (int i = 0; i < infomax && !m_abortLoading; i++) {
+ for(int i = 0; i < infomax && !m_abortLoading; i++) {
e = infoproducers.item(i).cloneNode().toElement();
QString prodId = e.attribute("id");
e = infoproducers.item(i).cloneNode().toElement();
QString prodId = e.attribute("id");
- if (!e.isNull() && prodId != "black" && !prodId.startsWith("slowmotion") && !m_abortLoading) {
+ if(!e.isNull() && prodId != "black" && !prodId.startsWith("slowmotion") && !m_abortLoading) {
e.setTagName("producer");
// Get MLT's original producer properties
QDomElement orig;
e.setTagName("producer");
// Get MLT's original producer properties
QDomElement orig;
- for (int j = 0; j < max; j++) {
+ for(int j = 0; j < max; j++) {
QDomElement o = producers.item(j).cloneNode().toElement();
QString origId = o.attribute("id").section('_', 0, 0);
QDomElement o = producers.item(j).cloneNode().toElement();
QString origId = o.attribute("id").section('_', 0, 0);
- if (origId == prodId) {
addClipInfo(e, orig, prodId);
}
}
addClipInfo(e, orig, prodId);
}
}
//parent->slotGotProgressInfo(i18n("File %1 is not a Kdenlive project file."), 100);
emit resetProjectList();
m_documentProperties.remove("position");
//parent->slotGotProgressInfo(i18n("File %1 is not a Kdenlive project file."), 100);
emit resetProjectList();
m_documentProperties.remove("position");
m_clipManager->clear();
} else {
QDomElement markers = infoXml.firstChildElement("markers");
m_clipManager->clear();
} else {
QDomElement markers = infoXml.firstChildElement("markers");
- if (!markers.isNull()) {
+ if(!markers.isNull()) {
QDomNodeList markerslist = markers.childNodes();
int maxchild = markerslist.count();
QDomNodeList markerslist = markers.childNodes();
int maxchild = markerslist.count();
- for (int k = 0; k < maxchild; k++) {
+ for(int k = 0; k < maxchild; k++) {
e = markerslist.at(k).toElement();
e = markerslist.at(k).toElement();
- if (e.tagName() == "marker") {
+ if(e.tagName() == "marker") {
m_clipManager->getClipById(e.attribute("id"))->addSnapMarker(GenTime(e.attribute("time").toDouble()), e.attribute("comment"));
}
}
m_clipManager->getClipById(e.attribute("id"))->addSnapMarker(GenTime(e.attribute("time").toDouble()), e.attribute("comment"));
}
}
}
// Something went wrong, or a new file was requested: create a new project
}
// Something went wrong, or a new file was requested: create a new project
setProfilePath(profileName);
m_url = KUrl();
m_document = createEmptyDocument(tracks.x(), tracks.y());
setProfilePath(profileName);
m_url = KUrl();
m_document = createEmptyDocument(tracks.x(), tracks.y());
// Set the video profile (empty == default)
// Make sure the project folder is usable
// Set the video profile (empty == default)
// Make sure the project folder is usable
- if (m_projectFolder.isEmpty() || !KIO::NetAccess::exists(m_projectFolder.path(), KIO::NetAccess::DestinationSide, parent)) {
+ if(m_projectFolder.isEmpty() || !KIO::NetAccess::exists(m_projectFolder.path(), KIO::NetAccess::DestinationSide, parent)) {
KMessageBox::information(parent, i18n("Document project folder is invalid, setting it to the default one: %1", KdenliveSettings::defaultprojectfolder()));
m_projectFolder = KUrl(KdenliveSettings::defaultprojectfolder());
}
KMessageBox::information(parent, i18n("Document project folder is invalid, setting it to the default one: %1", KdenliveSettings::defaultprojectfolder()));
m_projectFolder = KUrl(KdenliveSettings::defaultprojectfolder());
}
KStandardDirs::makeDir(m_projectFolder.path(KUrl::AddTrailingSlash) + "ladspa/");
kDebug() << "Kdenlive document, init timecode: " << m_fps;
KStandardDirs::makeDir(m_projectFolder.path(KUrl::AddTrailingSlash) + "ladspa/");
kDebug() << "Kdenlive document, init timecode: " << m_fps;
- if (m_fps == 30000.0 / 1001.0) m_timecode.setFormat(m_fps, true);
+ if(m_fps == 30000.0 / 1001.0) m_timecode.setFormat(m_fps, true);
else m_timecode.setFormat(m_fps);
//kDebug() << "// SETTING SCENE LIST:\n\n" << m_document.toString();
else m_timecode.setFormat(m_fps);
//kDebug() << "// SETTING SCENE LIST:\n\n" << m_document.toString();
delete m_clipManager;
kDebug() << "// DEL CLP MAN done";
delete m_autoSaveTimer;
delete m_clipManager;
kDebug() << "// DEL CLP MAN done";
delete m_autoSaveTimer;
- if (m_autosave) {
- if (!m_autosave->fileName().isEmpty()) m_autosave->remove();
+ if(m_autosave) {
+ if(!m_autosave->fileName().isEmpty()) m_autosave->remove();
int KdenliveDoc::setSceneList()
{
m_render->resetProfile(KdenliveSettings::current_profile());
int KdenliveDoc::setSceneList()
{
m_render->resetProfile(KdenliveSettings::current_profile());
- if (m_render->setSceneList(m_document.toString(), m_documentProperties.value("position").toInt()) == -1) {
+ if(m_render->setSceneList(m_document.toString(), m_documentProperties.value("position").toInt()) == -1) {
// INVALID MLT Consumer, something is wrong
return -1;
}
// INVALID MLT Consumer, something is wrong
return -1;
}
- for (int i = 0; i < audiotracks; i++) {
+ // Tracks are added «backwards», so we need to reverse the track numbering
+ // mbt 331: http://www.kdenlive.org/mantis/view.php?id=331
+ // Better default names for tracks: Audio 1 etc. instead of blank numbers
+ for(int i = 0; i < audiotracks; i++) {
+ audioTrack.trackName = QString("Audio ") + QString::number(audiotracks - i);
m_tracksList.append(audioTrack);
m_tracksList.append(audioTrack);
- for (int i = 0; i < videotracks; i++) {
+ for(int i = 0; i < videotracks; i++) {
+ videoTrack.trackName = QString("Video ") + QString::number(videotracks - i);
m_tracksList.append(videoTrack);
}
return createEmptyDocument(m_tracksList);
m_tracksList.append(videoTrack);
}
return createEmptyDocument(m_tracksList);
// create playlists
int total = tracks.count() + 1;
// create playlists
int total = tracks.count() + 1;
- for (int i = 1; i < total; i++) {
+ for(int i = 1; i < total; i++) {
QDomElement playlist = doc.createElement("playlist");
playlist.setAttribute("id", "playlist" + QString::number(i));
mlt.appendChild(playlist);
QDomElement playlist = doc.createElement("playlist");
playlist.setAttribute("id", "playlist" + QString::number(i));
mlt.appendChild(playlist);
track0.setAttribute("producer", "black_track");
tractor.appendChild(track0);
track0.setAttribute("producer", "black_track");
tractor.appendChild(track0);
- // create audio tracks
- for (int i = 1; i < total; i++) {
+ // create audio and video tracks
+ for(int i = 1; i < total; i++) {
QDomElement track = doc.createElement("track");
track.setAttribute("producer", "playlist" + QString::number(i));
QDomElement track = doc.createElement("track");
track.setAttribute("producer", "playlist" + QString::number(i));
- if (tracks.at(i - 1).type == AUDIOTRACK)
+ if(tracks.at(i - 1).type == AUDIOTRACK) {
track.setAttribute("hide", "video");
track.setAttribute("hide", "video");
- else if (tracks.at(i - 1).isBlind)
+ } else if(tracks.at(i - 1).isBlind)
track.setAttribute("hide", "video");
track.setAttribute("hide", "video");
- if (tracks.at(i - 1).isMute)
+ if(tracks.at(i - 1).isMute)
track.setAttribute("hide", "audio");
tractor.appendChild(track);
}
track.setAttribute("hide", "audio");
tractor.appendChild(track);
}
- for (int i = 2; i < total ; i++) {
+ for(int i = 2; i < total ; i++) {
QDomElement transition = doc.createElement("transition");
transition.setAttribute("always_active", "1");
QDomElement transition = doc.createElement("transition");
transition.setAttribute("always_active", "1");
m_guidesXml.appendChild(guideNode);
QDomElement e;
m_guidesXml.appendChild(guideNode);
QDomElement e;
- for (int i = 0; i < guides.count(); i++) {
+ for(int i = 0; i < guides.count(); i++) {
e = m_guidesXml.createElement("guide");
e.setAttribute("time", guides.at(i)->position().ms() / 1000);
e.setAttribute("comment", guides.at(i)->label());
e = m_guidesXml.createElement("guide");
e.setAttribute("time", guides.at(i)->position().ms() / 1000);
e.setAttribute("comment", guides.at(i)->label());
void KdenliveDoc::slotAutoSave()
{
void KdenliveDoc::slotAutoSave()
{
- if (m_render && m_autosave) {
- if (!m_autosave->isOpen() && !m_autosave->open(QIODevice::ReadWrite)) {
+ if(m_render && m_autosave) {
+ if(!m_autosave->isOpen() && !m_autosave->open(QIODevice::ReadWrite)) {
// show error: could not open the autosave file
kDebug() << "ERROR; CANNOT CREATE AUTOSAVE FILE";
}
kDebug() << "// AUTOSAVE FILE: " << m_autosave->fileName();
QString doc;
// show error: could not open the autosave file
kDebug() << "ERROR; CANNOT CREATE AUTOSAVE FILE";
}
kDebug() << "// AUTOSAVE FILE: " << m_autosave->fileName();
QString doc;
- if (KdenliveSettings::dropbframes()) {
+ if(KdenliveSettings::dropbframes()) {
KdenliveSettings::setDropbframes(false);
m_clipManager->updatePreviewSettings();
doc = m_render->sceneList();
KdenliveSettings::setDropbframes(false);
m_clipManager->updatePreviewSettings();
doc = m_render->sceneList();
QDomDocument sceneList;
sceneList.setContent(scene, true);
QDomElement mlt = sceneList.firstChildElement("mlt");
QDomDocument sceneList;
sceneList.setContent(scene, true);
QDomElement mlt = sceneList.firstChildElement("mlt");
- if (mlt.isNull() || !mlt.hasChildNodes()) {
+ if(mlt.isNull() || !mlt.hasChildNodes()) {
//Make sure we don't save if scenelist is corrupted
KMessageBox::error(kapp->activeWindow(), i18n("Cannot write to file %1", path));
return false;
//Make sure we don't save if scenelist is corrupted
KMessageBox::error(kapp->activeWindow(), i18n("Cannot write to file %1", path));
return false;
QDomElement docproperties = sceneList.createElement("documentproperties");
QMapIterator<QString, QString> i(m_documentProperties);
QDomElement docproperties = sceneList.createElement("documentproperties");
QMapIterator<QString, QString> i(m_documentProperties);
i.next();
docproperties.setAttribute(i.key(), i.value());
}
i.next();
docproperties.setAttribute(i.key(), i.value());
}
// tracks info
QDomElement tracksinfo = sceneList.createElement("tracksinfo");
// tracks info
QDomElement tracksinfo = sceneList.createElement("tracksinfo");
- foreach(const TrackInfo &info, m_tracksList) {
+ foreach(const TrackInfo & info, m_tracksList) {
QDomElement trackinfo = sceneList.createElement("trackinfo");
QDomElement trackinfo = sceneList.createElement("trackinfo");
- if (info.type == AUDIOTRACK) trackinfo.setAttribute("type", "audio");
+ if(info.type == AUDIOTRACK) trackinfo.setAttribute("type", "audio");
trackinfo.setAttribute("mute", info.isMute);
trackinfo.setAttribute("blind", info.isBlind);
trackinfo.setAttribute("locked", info.isLocked);
trackinfo.setAttribute("mute", info.isMute);
trackinfo.setAttribute("blind", info.isBlind);
trackinfo.setAttribute("locked", info.isLocked);
QMap <QString, QString> folderlist = m_clipManager->documentFolderList();
QMapIterator<QString, QString> f(folderlist);
QMap <QString, QString> folderlist = m_clipManager->documentFolderList();
QMapIterator<QString, QString> f(folderlist);
f.next();
QDomElement folder = sceneList.createElement("folder");
folder.setAttribute("id", f.key());
f.next();
QDomElement folder = sceneList.createElement("folder");
folder.setAttribute("id", f.key());
// Save project clips
QDomElement e;
QList <DocClipBase*> list = m_clipManager->documentClipList();
// Save project clips
QDomElement e;
QList <DocClipBase*> list = m_clipManager->documentClipList();
- for (int i = 0; i < list.count(); i++) {
+ for(int i = 0; i < list.count(); i++) {
e = list.at(i)->toXML();
e.setTagName("kdenlive_producer");
addedXml.appendChild(sceneList.importNode(e, true));
QList < CommentedTime > marks = list.at(i)->commentedSnapMarkers();
e = list.at(i)->toXML();
e.setTagName("kdenlive_producer");
addedXml.appendChild(sceneList.importNode(e, true));
QList < CommentedTime > marks = list.at(i)->commentedSnapMarkers();
- for (int j = 0; j < marks.count(); j++) {
+ for(int j = 0; j < marks.count(); j++) {
QDomElement marker = sceneList.createElement("marker");
marker.setAttribute("time", marks.at(j).time().ms() / 1000);
marker.setAttribute("comment", marks.at(j).comment());
QDomElement marker = sceneList.createElement("marker");
marker.setAttribute("time", marks.at(j).time().ms() / 1000);
marker.setAttribute("comment", marks.at(j).comment());
addedXml.appendChild(markers);
// Add guides
addedXml.appendChild(markers);
// Add guides
- if (!m_guidesXml.isNull()) addedXml.appendChild(sceneList.importNode(m_guidesXml.documentElement(), true));
+ if(!m_guidesXml.isNull()) addedXml.appendChild(sceneList.importNode(m_guidesXml.documentElement(), true));
// Add clip groups
addedXml.appendChild(sceneList.importNode(m_clipManager->groupsXml(), true));
// Add clip groups
addedXml.appendChild(sceneList.importNode(m_clipManager->groupsXml(), true));
//wes.appendChild(doc.importNode(kdenliveData, true));
QFile file(path);
//wes.appendChild(doc.importNode(kdenliveData, true));
QFile file(path);
- if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
+ if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
kWarning() << "////// ERROR writing to file: " << path;
KMessageBox::error(kapp->activeWindow(), i18n("Cannot write to file %1", path));
return false;
}
file.write(sceneList.toString().toUtf8());
kWarning() << "////// ERROR writing to file: " << path;
KMessageBox::error(kapp->activeWindow(), i18n("Cannot write to file %1", path));
return false;
}
file.write(sceneList.toString().toUtf8());
- if (file.error() != QFile::NoError) {
+ if(file.error() != QFile::NoError) {
KMessageBox::error(kapp->activeWindow(), i18n("Cannot write to file %1", path));
file.close();
return false;
KMessageBox::error(kapp->activeWindow(), i18n("Cannot write to file %1", path));
file.close();
return false;
void KdenliveDoc::setProjectFolder(KUrl url)
{
void KdenliveDoc::setProjectFolder(KUrl url)
{
- if (url == m_projectFolder) return;
+ if(url == m_projectFolder) return;
setModified(true);
KStandardDirs::makeDir(url.path());
KStandardDirs::makeDir(url.path(KUrl::AddTrailingSlash) + "titles/");
KStandardDirs::makeDir(url.path(KUrl::AddTrailingSlash) + "thumbs/");
setModified(true);
KStandardDirs::makeDir(url.path());
KStandardDirs::makeDir(url.path(KUrl::AddTrailingSlash) + "titles/");
KStandardDirs::makeDir(url.path(KUrl::AddTrailingSlash) + "thumbs/");
- if (KMessageBox::questionYesNo(kapp->activeWindow(), i18n("You have changed the project folder. Do you want to copy the cached data from %1 to the new folder %2?").arg(m_projectFolder.path(), url.path())) == KMessageBox::Yes) moveProjectData(url);
+ if(KMessageBox::questionYesNo(kapp->activeWindow(), i18n("You have changed the project folder. Do you want to copy the cached data from %1 to the new folder %2?").arg(m_projectFolder.path(), url.path())) == KMessageBox::Yes) moveProjectData(url);
{
QList <DocClipBase*> list = m_clipManager->documentClipList();
//TODO: Also move ladspa effects files
{
QList <DocClipBase*> list = m_clipManager->documentClipList();
//TODO: Also move ladspa effects files
- for (int i = 0; i < list.count(); i++) {
+ for(int i = 0; i < list.count(); i++) {
DocClipBase *clip = list.at(i);
DocClipBase *clip = list.at(i);
- if (clip->clipType() == TEXT) {
+ if(clip->clipType() == TEXT) {
// the image for title clip must be moved
KUrl oldUrl = clip->fileURL();
KUrl newUrl = KUrl(url.path(KUrl::AddTrailingSlash) + "titles/" + oldUrl.fileName());
KIO::Job *job = KIO::copy(oldUrl, newUrl);
// the image for title clip must be moved
KUrl oldUrl = clip->fileURL();
KUrl newUrl = KUrl(url.path(KUrl::AddTrailingSlash) + "titles/" + oldUrl.fileName());
KIO::Job *job = KIO::copy(oldUrl, newUrl);
- if (KIO::NetAccess::synchronousRun(job, 0)) clip->setProperty("resource", newUrl.path());
+ if(KIO::NetAccess::synchronousRun(job, 0)) clip->setProperty("resource", newUrl.path());
}
QString hash = clip->getClipHash();
KUrl oldVideoThumbUrl = KUrl(m_projectFolder.path(KUrl::AddTrailingSlash) + "thumbs/" + hash + ".png");
KUrl oldAudioThumbUrl = KUrl(m_projectFolder.path(KUrl::AddTrailingSlash) + "thumbs/" + hash + ".thumb");
}
QString hash = clip->getClipHash();
KUrl oldVideoThumbUrl = KUrl(m_projectFolder.path(KUrl::AddTrailingSlash) + "thumbs/" + hash + ".png");
KUrl oldAudioThumbUrl = KUrl(m_projectFolder.path(KUrl::AddTrailingSlash) + "thumbs/" + hash + ".thumb");
- if (KIO::NetAccess::exists(oldVideoThumbUrl, KIO::NetAccess::SourceSide, 0)) {
+ if(KIO::NetAccess::exists(oldVideoThumbUrl, KIO::NetAccess::SourceSide, 0)) {
KUrl newUrl = KUrl(url.path(KUrl::AddTrailingSlash) + "thumbs/" + hash + ".png");
KIO::Job *job = KIO::copy(oldVideoThumbUrl, newUrl);
KIO::NetAccess::synchronousRun(job, 0);
}
KUrl newUrl = KUrl(url.path(KUrl::AddTrailingSlash) + "thumbs/" + hash + ".png");
KIO::Job *job = KIO::copy(oldVideoThumbUrl, newUrl);
KIO::NetAccess::synchronousRun(job, 0);
}
- if (KIO::NetAccess::exists(oldAudioThumbUrl, KIO::NetAccess::SourceSide, 0)) {
+ if(KIO::NetAccess::exists(oldAudioThumbUrl, KIO::NetAccess::SourceSide, 0)) {
KUrl newUrl = KUrl(url.path(KUrl::AddTrailingSlash) + "thumbs/" + hash + ".thumb");
KIO::Job *job = KIO::copy(oldAudioThumbUrl, newUrl);
KUrl newUrl = KUrl(url.path(KUrl::AddTrailingSlash) + "thumbs/" + hash + ".thumb");
KIO::Job *job = KIO::copy(oldAudioThumbUrl, newUrl);
- if (KIO::NetAccess::synchronousRun(job, 0)) clip->refreshThumbUrl();
+ if(KIO::NetAccess::synchronousRun(job, 0)) clip->refreshThumbUrl();
bool KdenliveDoc::setProfilePath(QString path)
{
bool KdenliveDoc::setProfilePath(QString path)
{
- if (path.isEmpty()) path = KdenliveSettings::default_profile();
- if (path.isEmpty()) path = "dv_pal";
+ if(path.isEmpty()) path = KdenliveSettings::default_profile();
+ if(path.isEmpty()) path = "dv_pal";
m_profile = ProfilesDialog::getVideoProfile(path);
bool current_fps = m_fps;
m_profile = ProfilesDialog::getVideoProfile(path);
bool current_fps = m_fps;
- if (m_profile.path.isEmpty()) {
+ if(m_profile.path.isEmpty()) {
// Profile not found, use embedded profile
QDomElement profileInfo = m_document.elementsByTagName("profileinfo").at(0).toElement();
// Profile not found, use embedded profile
QDomElement profileInfo = m_document.elementsByTagName("profileinfo").at(0).toElement();
- if (profileInfo.isNull()) {
+ if(profileInfo.isNull()) {
KMessageBox::information(kapp->activeWindow(), i18n("Project profile was not found, using default profile."), i18n("Missing Profile"));
m_profile = ProfilesDialog::getVideoProfile(KdenliveSettings::default_profile());
} else {
KMessageBox::information(kapp->activeWindow(), i18n("Project profile was not found, using default profile."), i18n("Missing Profile"));
m_profile = ProfilesDialog::getVideoProfile(KdenliveSettings::default_profile());
} else {
m_profile.display_aspect_num = profileInfo.attribute("display_aspect_num").toInt();
m_profile.display_aspect_den = profileInfo.attribute("display_aspect_den").toInt();
QString existing = ProfilesDialog::existingProfile(m_profile);
m_profile.display_aspect_num = profileInfo.attribute("display_aspect_num").toInt();
m_profile.display_aspect_den = profileInfo.attribute("display_aspect_den").toInt();
QString existing = ProfilesDialog::existingProfile(m_profile);
- if (!existing.isEmpty()) {
+ if(!existing.isEmpty()) {
m_profile = ProfilesDialog::getVideoProfile(existing);
KMessageBox::information(kapp->activeWindow(), i18n("Project profile not found, replacing with existing one: %1", m_profile.description), i18n("Missing Profile"));
} else {
QString newDesc = m_profile.description;
bool ok = true;
m_profile = ProfilesDialog::getVideoProfile(existing);
KMessageBox::information(kapp->activeWindow(), i18n("Project profile not found, replacing with existing one: %1", m_profile.description), i18n("Missing Profile"));
} else {
QString newDesc = m_profile.description;
bool ok = true;
- while (ok && (newDesc.isEmpty() || ProfilesDialog::existingProfileDescription(newDesc))) {
+ while(ok && (newDesc.isEmpty() || ProfilesDialog::existingProfileDescription(newDesc))) {
newDesc = QInputDialog::getText(kapp->activeWindow(), i18n("Existing Profile"), i18n("Your project uses an unknown profile.\nIt uses an existing profile name: %1.\nPlease choose a new name to save it", newDesc), QLineEdit::Normal, newDesc, &ok);
}
newDesc = QInputDialog::getText(kapp->activeWindow(), i18n("Existing Profile"), i18n("Your project uses an unknown profile.\nIt uses an existing profile name: %1.\nPlease choose a new name to save it", newDesc), QLineEdit::Normal, newDesc, &ok);
}
// User canceled, use default profile
m_profile = ProfilesDialog::getVideoProfile(KdenliveSettings::default_profile());
} else {
// User canceled, use default profile
m_profile = ProfilesDialog::getVideoProfile(KdenliveSettings::default_profile());
} else {
- if (newDesc != m_profile.description) {
+ if(newDesc != m_profile.description) {
// Profile description existed, was replaced by new one
m_profile.description = newDesc;
} else {
// Profile description existed, was replaced by new one
m_profile.description = newDesc;
} else {
m_width = m_profile.width;
m_height = m_profile.height;
kDebug() << "Kdenlive document, init timecode from path: " << path << ", " << m_fps;
m_width = m_profile.width;
m_height = m_profile.height;
kDebug() << "Kdenlive document, init timecode from path: " << path << ", " << m_fps;
- if (m_fps == 30000.0 / 1001.0) m_timecode.setFormat(m_fps, true);
+ if(m_fps == 30000.0 / 1001.0) m_timecode.setFormat(m_fps, true);
else m_timecode.setFormat(m_fps);
return (current_fps != m_fps);
}
else m_timecode.setFormat(m_fps);
return (current_fps != m_fps);
}
void KdenliveDoc::checkProjectClips()
{
void KdenliveDoc::checkProjectClips()
{
- if (m_render == NULL) return;
+ if(m_render == NULL) return;
m_clipManager->resetProducersList(m_render->producersList());
}
m_clipManager->resetProducersList(m_render->producersList());
}
QString result = "unnamed";
QDomNodeList prods = producersList();
int ct = prods.count();
QString result = "unnamed";
QDomNodeList prods = producersList();
int ct = prods.count();
- for (int i = 0; i < ct ; i++) {
+ for(int i = 0; i < ct ; i++) {
QDomElement e = prods.item(i).toElement();
QDomElement e = prods.item(i).toElement();
- if (e.attribute("id") != "black" && e.attribute("id") == id) {
+ if(e.attribute("id") != "black" && e.attribute("id") == id) {
result = e.attribute("name");
result = e.attribute("name");
- if (result.isEmpty()) result = KUrl(e.attribute("resource")).fileName();
+ if(result.isEmpty()) result = KUrl(e.attribute("resource")).fileName();
double KdenliveDoc::projectDuration() const
{
double KdenliveDoc::projectDuration() const
{
return GenTime(m_render->getLength(), m_fps).ms() / 1000;
else
return 0;
return GenTime(m_render->getLength(), m_fps).ms() / 1000;
else
return 0;
void KdenliveDoc::setModified(bool mod)
{
void KdenliveDoc::setModified(bool mod)
{
- if (!m_url.isEmpty() && mod && KdenliveSettings::crashrecovery()) {
+ if(!m_url.isEmpty() && mod && KdenliveSettings::crashrecovery()) {
m_autoSaveTimer->start(3000);
}
m_autoSaveTimer->start(3000);
}
- if (mod == m_modified) return;
+ if(mod == m_modified) return;
m_modified = mod;
emit docModified(m_modified);
}
m_modified = mod;
emit docModified(m_modified);
}
const QString KdenliveDoc::description() const
{
const QString KdenliveDoc::description() const
{
return i18n("Untitled") + " / " + m_profile.description;
else
return m_url.fileName() + " / " + m_profile.description;
return i18n("Untitled") + " / " + m_profile.description;
else
return m_url.fileName() + " / " + m_profile.description;
const QString producerId = clipId.section('_', 0, 0);
DocClipBase *clip = m_clipManager->getClipById(producerId);
const QString producerId = clipId.section('_', 0, 0);
DocClipBase *clip = m_clipManager->getClipById(producerId);
elem.setAttribute("id", producerId);
QString path = elem.attribute("resource");
QString extension;
elem.setAttribute("id", producerId);
QString path = elem.attribute("resource");
QString extension;
- if (elem.attribute("type").toInt() == SLIDESHOW) {
+ if(elem.attribute("type").toInt() == SLIDESHOW) {
extension = KUrl(path).fileName();
path = KUrl(path).directory();
}
extension = KUrl(path).fileName();
path = KUrl(path).directory();
}
- if (path.isEmpty() == false && QFile::exists(path) == false && elem.attribute("type").toInt() != TEXT && !elem.hasAttribute("placeholder")) {
+ 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();
const QString size = elem.attribute("file_size");
const QString hash = elem.attribute("file_hash");
QString newpath;
int action = KMessageBox::No;
kDebug() << "// FOUND MISSING CLIP: " << path << ", TYPE: " << elem.attribute("type").toInt();
const QString size = elem.attribute("file_size");
const QString hash = elem.attribute("file_hash");
QString newpath;
int action = KMessageBox::No;
- if (!size.isEmpty() && !hash.isEmpty()) {
- if (!m_searchFolder.isEmpty()) newpath = searchFileRecursively(m_searchFolder, size, hash);
+ if(!size.isEmpty() && !hash.isEmpty()) {
+ if(!m_searchFolder.isEmpty()) newpath = searchFileRecursively(m_searchFolder, size, hash);
else action = (KMessageBox::ButtonCode) KMessageBox::questionYesNoCancel(kapp->activeWindow(), i18n("Clip <b>%1</b><br />is invalid, what do you want to do?", path), i18n("File not found"), KGuiItem(i18n("Search automatically")), KGuiItem(i18n("Keep as placeholder")));
} else {
else action = (KMessageBox::ButtonCode) KMessageBox::questionYesNoCancel(kapp->activeWindow(), i18n("Clip <b>%1</b><br />is invalid, what do you want to do?", path), i18n("File not found"), KGuiItem(i18n("Search automatically")), KGuiItem(i18n("Keep as placeholder")));
} else {
- if (elem.attribute("type").toInt() == SLIDESHOW) {
+ if(elem.attribute("type").toInt() == SLIDESHOW) {
int res = KMessageBox::questionYesNoCancel(kapp->activeWindow(), i18n("Clip <b>%1</b><br />is invalid or missing, what do you want to do?", path), i18n("File not found"), KGuiItem(i18n("Search manually")), KGuiItem(i18n("Keep as placeholder")));
int res = KMessageBox::questionYesNoCancel(kapp->activeWindow(), i18n("Clip <b>%1</b><br />is invalid or missing, what do you want to do?", path), i18n("File not found"), KGuiItem(i18n("Search manually")), KGuiItem(i18n("Keep as placeholder")));
- if (res == KMessageBox::Yes)
+ if(res == KMessageBox::Yes)
newpath = KFileDialog::getExistingDirectory(KUrl("kfiledialog:///clipfolder"), kapp->activeWindow(), i18n("Looking for %1", path));
else {
// Abort project loading
newpath = KFileDialog::getExistingDirectory(KUrl("kfiledialog:///clipfolder"), kapp->activeWindow(), i18n("Looking for %1", path));
else {
// Abort project loading
}
} else {
int res = KMessageBox::questionYesNoCancel(kapp->activeWindow(), i18n("Clip <b>%1</b><br />is invalid or missing, what do you want to do?", path), i18n("File not found"), KGuiItem(i18n("Search manually")), KGuiItem(i18n("Keep as placeholder")));
}
} else {
int res = KMessageBox::questionYesNoCancel(kapp->activeWindow(), i18n("Clip <b>%1</b><br />is invalid or missing, what do you want to do?", path), i18n("File not found"), KGuiItem(i18n("Search manually")), KGuiItem(i18n("Keep as placeholder")));
- if (res == KMessageBox::Yes)
+ if(res == KMessageBox::Yes)
newpath = KFileDialog::getOpenFileName(KUrl("kfiledialog:///clipfolder"), QString(), kapp->activeWindow(), i18n("Looking for %1", path));
else {
// Abort project loading
newpath = KFileDialog::getOpenFileName(KUrl("kfiledialog:///clipfolder"), QString(), kapp->activeWindow(), i18n("Looking for %1", path));
else {
// Abort project loading
- if (action == KMessageBox::Yes) {
+ if(action == KMessageBox::Yes) {
kDebug() << "// ASKED FOR SRCH CLIP: " << clipId;
m_searchFolder = KFileDialog::getExistingDirectory(KUrl("kfiledialog:///clipfolder"), kapp->activeWindow());
kDebug() << "// ASKED FOR SRCH CLIP: " << clipId;
m_searchFolder = KFileDialog::getExistingDirectory(KUrl("kfiledialog:///clipfolder"), kapp->activeWindow());
- if (!m_searchFolder.isEmpty()) {
+ if(!m_searchFolder.isEmpty()) {
newpath = searchFileRecursively(QDir(m_searchFolder), size, hash);
}
newpath = searchFileRecursively(QDir(m_searchFolder), size, hash);
}
- } else if (action == KMessageBox::Cancel) {
+ } else if(action == KMessageBox::Cancel) {
m_abortLoading = true;
return;
m_abortLoading = true;
return;
- } else if (action == KMessageBox::No) {
+ } else if(action == KMessageBox::No) {
// Keep clip as placeHolder
elem.setAttribute("placeholder", '1');
}
// Keep clip as placeHolder
elem.setAttribute("placeholder", '1');
}
- if (!newpath.isEmpty()) {
- if (elem.attribute("type").toInt() == SLIDESHOW) newpath.append('/' + extension);
+ if(!newpath.isEmpty()) {
+ if(elem.attribute("type").toInt() == SLIDESHOW) newpath.append('/' + extension);
elem.setAttribute("resource", newpath);
setNewClipResource(clipId, newpath);
setModified(true);
elem.setAttribute("resource", newpath);
setNewClipResource(clipId, newpath);
setModified(true);
m_clipManager->addClip(clip);
}
m_clipManager->addClip(clip);
}
emit addProjectClip(clip);
//qApp->processEvents();
}
emit addProjectClip(clip);
//qApp->processEvents();
}
{
QDomNodeList prods = m_document.elementsByTagName("producer");
int maxprod = prods.count();
{
QDomNodeList prods = m_document.elementsByTagName("producer");
int maxprod = prods.count();
- for (int i = 0; i < maxprod; i++) {
+ for(int i = 0; i < maxprod; i++) {
QDomNode m = prods.at(i);
QString prodId = m.toElement().attribute("id");
QDomNode m = prods.at(i);
QString prodId = m.toElement().attribute("id");
- if (prodId == id || prodId.startsWith(id + '_')) {
+ if(prodId == id || prodId.startsWith(id + '_')) {
QDomNodeList params = m.childNodes();
QDomNodeList params = m.childNodes();
- for (int j = 0; j < params.count(); j++) {
+ for(int j = 0; j < params.count(); j++) {
QDomElement e = params.item(j).toElement();
QDomElement e = params.item(j).toElement();
- if (e.attribute("name") == "resource") {
+ if(e.attribute("name") == "resource") {
e.firstChild().setNodeValue(path);
break;
}
e.firstChild().setNodeValue(path);
break;
}
QByteArray fileData;
QByteArray fileHash;
QStringList filesAndDirs = dir.entryList(QDir::Files | QDir::Readable);
QByteArray fileData;
QByteArray fileHash;
QStringList filesAndDirs = dir.entryList(QDir::Files | QDir::Readable);
- for (int i = 0; i < filesAndDirs.size() && foundFileName.isEmpty(); i++) {
+ for(int i = 0; i < filesAndDirs.size() && foundFileName.isEmpty(); i++) {
QFile file(dir.absoluteFilePath(filesAndDirs.at(i)));
QFile file(dir.absoluteFilePath(filesAndDirs.at(i)));
- if (file.open(QIODevice::ReadOnly)) {
- if (QString::number(file.size()) == matchSize) {
+ if(file.open(QIODevice::ReadOnly)) {
+ if(QString::number(file.size()) == matchSize) {
/*
* 1 MB = 1 second per 450 files (or faster)
* 10 MB = 9 seconds per 450 files (or faster)
*/
/*
* 1 MB = 1 second per 450 files (or faster)
* 10 MB = 9 seconds per 450 files (or faster)
*/
- if (file.size() > 1000000*2) {
+ if(file.size() > 1000000 * 2) {
fileData = file.read(1000000);
fileData = file.read(1000000);
- if (file.seek(file.size() - 1000000))
+ if(file.seek(file.size() - 1000000))
fileData.append(file.readAll());
} else
fileData = file.readAll();
file.close();
fileHash = QCryptographicHash::hash(fileData, QCryptographicHash::Md5);
fileData.append(file.readAll());
} else
fileData = file.readAll();
file.close();
fileHash = QCryptographicHash::hash(fileData, QCryptographicHash::Md5);
- if (QString(fileHash.toHex()) == matchHash)
+ if(QString(fileHash.toHex()) == matchHash)
return file.fileName();
}
}
kDebug() << filesAndDirs.at(i) << file.size() << fileHash.toHex();
}
filesAndDirs = dir.entryList(QDir::Dirs | QDir::Readable | QDir::Executable | QDir::NoDotAndDotDot);
return file.fileName();
}
}
kDebug() << filesAndDirs.at(i) << file.size() << fileHash.toHex();
}
filesAndDirs = dir.entryList(QDir::Dirs | QDir::Readable | QDir::Executable | QDir::NoDotAndDotDot);
- for (int i = 0; i < filesAndDirs.size() && foundFileName.isEmpty(); i++) {
+ for(int i = 0; i < filesAndDirs.size() && foundFileName.isEmpty(); i++) {
foundFileName = searchFileRecursively(dir.absoluteFilePath(filesAndDirs.at(i)), matchSize, matchHash);
foundFileName = searchFileRecursively(dir.absoluteFilePath(filesAndDirs.at(i)), matchSize, matchHash);
- if (!foundFileName.isEmpty())
+ if(!foundFileName.isEmpty())
break;
}
return foundFileName;
break;
}
return foundFileName;
void KdenliveDoc::addClipInfo(QDomElement elem, QDomElement orig, QString clipId)
{
DocClipBase *clip = m_clipManager->getClipById(clipId);
void KdenliveDoc::addClipInfo(QDomElement elem, QDomElement orig, QString clipId)
{
DocClipBase *clip = m_clipManager->getClipById(clipId);
addClip(elem, clipId, false);
} else {
QMap <QString, QString> properties;
QDomNamedNodeMap attributes = elem.attributes();
QString attrname;
addClip(elem, clipId, false);
} else {
QMap <QString, QString> properties;
QDomNamedNodeMap attributes = elem.attributes();
QString attrname;
- for (int i = 0; i < attributes.count(); i++) {
+ for(int i = 0; i < attributes.count(); i++) {
attrname = attributes.item(i).nodeName();
attrname = attributes.item(i).nodeName();
- if (attrname != "resource")
+ if(attrname != "resource")
properties.insert(attrname, attributes.item(i).nodeValue());
kDebug() << attrname << " = " << attributes.item(i).nodeValue();
}
clip->setProperties(properties);
emit addProjectClip(clip, false);
}
properties.insert(attrname, attributes.item(i).nodeValue());
kDebug() << attrname << " = " << attributes.item(i).nodeValue();
}
clip->setProperties(properties);
emit addProjectClip(clip, false);
}
- if (orig != QDomElement()) {
+ if(orig != QDomElement()) {
QMap<QString, QString> meta;
QDomNode m = orig.firstChild();
QMap<QString, QString> meta;
QDomNode m = orig.firstChild();
QString name = m.toElement().attribute("name");
QString name = m.toElement().attribute("name");
- if (name.startsWith("meta.attr")) {
+ if(name.startsWith("meta.attr")) {
meta.insert(name.section('.', 2, 3), m.firstChild().nodeValue());
}
m = m.nextSibling();
}
meta.insert(name.section('.', 2, 3), m.firstChild().nodeValue());
}
m = m.nextSibling();
}
- if (!meta.isEmpty()) {
- if (clip == NULL) clip = m_clipManager->getClipById(clipId);
- if (clip) clip->setMetadata(meta);
+ if(!meta.isEmpty()) {
+ if(clip == NULL) clip = m_clipManager->getClipById(clipId);
+ if(clip) clip->setMetadata(meta);
QString titlesFolder = projectFolder().path(KUrl::AddTrailingSlash) + "titles/";
KStandardDirs::makeDir(titlesFolder);
TitleWidget *dia_ui = new TitleWidget(templatePath, m_timecode, titlesFolder, m_render, kapp->activeWindow());
QString titlesFolder = projectFolder().path(KUrl::AddTrailingSlash) + "titles/";
KStandardDirs::makeDir(titlesFolder);
TitleWidget *dia_ui = new TitleWidget(templatePath, m_timecode, titlesFolder, m_render, kapp->activeWindow());
- if (dia_ui->exec() == QDialog::Accepted) {
+ if(dia_ui->exec() == QDialog::Accepted) {
m_clipManager->slotAddTextClipFile(i18n("Title clip"), dia_ui->outPoint(), dia_ui->xml().toString(), group, groupId);
setModified(true);
emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
m_clipManager->slotAddTextClipFile(i18n("Title clip"), dia_ui->outPoint(), dia_ui->xml().toString(), group, groupId);
setModified(true);
emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
void KdenliveDoc::slotCreateTextTemplateClip(QString group, const QString &groupId, KUrl path)
{
QString titlesFolder = projectFolder().path(KUrl::AddTrailingSlash) + "titles/";
void KdenliveDoc::slotCreateTextTemplateClip(QString group, const QString &groupId, KUrl path)
{
QString titlesFolder = projectFolder().path(KUrl::AddTrailingSlash) + "titles/";
path = KFileDialog::getOpenUrl(KUrl(titlesFolder), "*.kdenlivetitle", kapp->activeWindow(), i18n("Enter Template Path"));
}
path = KFileDialog::getOpenUrl(KUrl(titlesFolder), "*.kdenlivetitle", kapp->activeWindow(), i18n("Enter Template Path"));
}
- if (path.isEmpty()) return;
+ if(path.isEmpty()) return;
//TODO: rewrite with new title system (just set resource)
m_clipManager->slotAddTextTemplateClip(i18n("Template title clip"), path, group, groupId);
//TODO: rewrite with new title system (just set resource)
m_clipManager->slotAddTextTemplateClip(i18n("Template title clip"), path, group, groupId);
void KdenliveDoc::insertTrack(int ix, TrackInfo type)
{
void KdenliveDoc::insertTrack(int ix, TrackInfo type)
{
- if (ix == -1) m_tracksList << type;
+ if(ix == -1) m_tracksList << type;
else m_tracksList.insert(ix, type);
}
else m_tracksList.insert(ix, type);
}
{
int audio = 0;
int video = 0;
{
int audio = 0;
int video = 0;
- foreach(const TrackInfo &info, m_tracksList) {
- if (info.type == VIDEOTRACK) video++;
+ foreach(const TrackInfo & info, m_tracksList) {
+ if(info.type == VIDEOTRACK) video++;
else audio++;
}
return QPoint(video, audio);
else audio++;
}
return QPoint(video, audio);
{
int ct = 0;
QString counter = QString::number(ct).rightJustified(5, '0', false);
{
int ct = 0;
QString counter = QString::number(ct).rightJustified(5, '0', false);
- while (QFile::exists(m_projectFolder.path(KUrl::AddTrailingSlash) + "ladspa/" + counter + ".ladspa")) {
+ while(QFile::exists(m_projectFolder.path(KUrl::AddTrailingSlash) + "ladspa/" + counter + ".ladspa")) {
ct++;
counter = QString::number(ct).rightJustified(5, '0', false);
}
ct++;
counter = QString::number(ct).rightJustified(5, '0', false);
}
QString searchFileRecursively(const QDir &dir, const QString &matchSize, const QString &matchHash) const;
void moveProjectData(KUrl url);
bool checkDocumentClips(QDomNodeList infoproducers);
QString searchFileRecursively(const QDir &dir, const QString &matchSize, const QString &matchHash) const;
void moveProjectData(KUrl url);
bool checkDocumentClips(QDomNodeList infoproducers);
+ /** Creates a new project */
QDomDocument createEmptyDocument(int videotracks, int audiotracks);
QDomDocument createEmptyDocument(QList <TrackInfo> tracks);
QDomDocument createEmptyDocument(int videotracks, int audiotracks);
QDomDocument createEmptyDocument(QList <TrackInfo> tracks);
const int TYPEWRITEREFFECT = 3;
TitleWidget::TitleWidget(KUrl url, Timecode tc, QString projectTitlePath, Render *render, QWidget *parent) :
const int TYPEWRITEREFFECT = 3;
TitleWidget::TitleWidget(KUrl url, Timecode tc, QString projectTitlePath, Render *render, QWidget *parent) :
- QDialog(parent),
- Ui::TitleWidget_UI(),
- m_startViewport(NULL),
- m_endViewport(NULL),
- m_render(render),
- m_count(0),
- m_unicodeDialog(new UnicodeDialog(UnicodeDialog::InputHex)),
- m_projectTitlePath(projectTitlePath),
- m_tc(tc)
+ QDialog(parent),
+ Ui::TitleWidget_UI(),
+ m_startViewport(NULL),
+ m_endViewport(NULL),
+ m_render(render),
+ m_count(0),
+ m_unicodeDialog(new UnicodeDialog(UnicodeDialog::InputHex)),
+ m_projectTitlePath(projectTitlePath),
+ m_tc(tc)
{
setupUi(this);
setFont(KGlobalSettings::toolBarFont());
{
setupUi(this);
setFont(KGlobalSettings::toolBarFont());
m_endViewport->setData(0, m_frameWidth);
m_endViewport->setData(1, m_frameHeight);
m_endViewport->setData(0, m_frameWidth);
m_endViewport->setData(1, m_frameHeight);
- if (!url.isEmpty()) loadTitle(url);
+ if(!url.isEmpty()) loadTitle(url);
else {
slotTextTool();
QTimer::singleShot(200, this, SLOT(slotAdjustZoom()));
else {
slotTextTool();
QTimer::singleShot(200, this, SLOT(slotAdjustZoom()));
titlePath.append((isClone == false) ? "title" : "clone");
int counter = 0;
QString path;
titlePath.append((isClone == false) ? "title" : "clone");
int counter = 0;
QString path;
- while (path.isEmpty() || QFile::exists(path)) {
+ while(path.isEmpty() || QFile::exists(path)) {
counter++;
path = titlePath + QString::number(counter).rightJustified(3, '0', false) + ".png";
}
counter++;
path = titlePath + QString::number(counter).rightJustified(3, '0', false) + ".png";
}
QStringList TitleWidget::extractImageList(QString xml)
{
QStringList result;
QStringList TitleWidget::extractImageList(QString xml)
{
QStringList result;
- if (xml.isEmpty()) return result;
+ if(xml.isEmpty()) return result;
QDomDocument doc;
doc.setContent(xml);
QDomNodeList images = doc.elementsByTagName("content");
QDomDocument doc;
doc.setContent(xml);
QDomNodeList images = doc.elementsByTagName("content");
- for (int i = 0; i < images.count(); i++) {
- if (images.at(i).toElement().hasAttribute("url"))
+ for(int i = 0; i < images.count(); i++) {
+ if(images.at(i).toElement().hasAttribute("url"))
result.append(images.at(i).toElement().attribute("url"));
}
return result;
result.append(images.at(i).toElement().attribute("url"));
}
return result;
QStringList TitleWidget::extractFontList(QString xml)
{
QStringList result;
QStringList TitleWidget::extractFontList(QString xml)
{
QStringList result;
- if (xml.isEmpty()) return result;
+ if(xml.isEmpty()) return result;
QDomDocument doc;
doc.setContent(xml);
QDomNodeList images = doc.elementsByTagName("content");
QDomDocument doc;
doc.setContent(xml);
QDomNodeList images = doc.elementsByTagName("content");
- for (int i = 0; i < images.count(); i++) {
- if (images.at(i).toElement().hasAttribute("font"))
+ for(int i = 0; i < images.count(); i++) {
+ if(images.at(i).toElement().hasAttribute("font"))
result.append(images.at(i).toElement().attribute("font"));
}
return result;
result.append(images.at(i).toElement().attribute("font"));
}
return result;
filters << "*.kdenlivetitle" ;
titletemplates.clear();
QStringList titleTemplates = KGlobal::dirs()->findDirs("appdata", "titles");
filters << "*.kdenlivetitle" ;
titletemplates.clear();
QStringList titleTemplates = KGlobal::dirs()->findDirs("appdata", "titles");
- foreach(const QString &folder, titleTemplates) {
+ foreach(const QString & folder, titleTemplates) {
QStringList filesnames = QDir(folder).entryList(filters, QDir::Files);
QStringList filesnames = QDir(folder).entryList(filters, QDir::Files);
- foreach(const QString &fname, filesnames) {
+ foreach(const QString & fname, filesnames) {
//titlenamelist.append(fname);
//titlefiles.append(KUrl(folder).path(KUrl::AddTrailingSlash) + fname);
TitleTemplate t;
//titlenamelist.append(fname);
//titlefiles.append(KUrl(folder).path(KUrl::AddTrailingSlash) + fname);
TitleTemplate t;
void TitleWidget::templateIndexChanged(int index)
{
QString item = templateBox->itemData(index).toString();
void TitleWidget::templateIndexChanged(int index)
{
QString item = templateBox->itemData(index).toString();
- if (item != "") {
- if (lastDocumentHash != QCryptographicHash::hash(xml().toString().toAscii(), QCryptographicHash::Md5).toHex()) {
- if (KMessageBox::questionYesNo(this, i18n("Title was changed !\nDo you really want to load a new template?\nAll changes in this document are lost !!")) == KMessageBox::No) return;
+ if(item != "") {
+ if(lastDocumentHash != QCryptographicHash::hash(xml().toString().toAscii(), QCryptographicHash::Md5).toHex()) {
+ if(KMessageBox::questionYesNo(this, i18n("Do you really want to load a new template? Changes in this title will be lost!")) == KMessageBox::No) return;
}
loadTitle(item);
lastDocumentHash = QCryptographicHash::hash(xml().toString().toAscii(), QCryptographicHash::Md5).toHex();
}
loadTitle(item);
lastDocumentHash = QCryptographicHash::hash(xml().toString().toAscii(), QCryptographicHash::Md5).toHex();
// Find out which toolbars need to be shown, depending on selected item
TITLETOOL t = TITLE_SELECT;
QList<QGraphicsItem *> l = graphicsView->scene()->selectedItems();
// Find out which toolbars need to be shown, depending on selected item
TITLETOOL t = TITLE_SELECT;
QList<QGraphicsItem *> l = graphicsView->scene()->selectedItems();
- if (l.size() > 0) {
- switch (l.at(0)->type()) {
+ if(l.size() > 0) {
+ switch(l.at(0)->type()) {
case TEXTITEM:
t = TITLE_TEXT;
break;
case TEXTITEM:
t = TITLE_TEXT;
break;
- if (t == TITLE_RECTANGLE && (l.at(0) == m_endViewport || l.at(0) == m_startViewport)) {
+ if(t == TITLE_RECTANGLE && (l.at(0) == m_endViewport || l.at(0) == m_startViewport)) {
//graphicsView->centerOn(l.at(0));
t = TITLE_SELECT;
}
showToolbars(t);
//graphicsView->centerOn(l.at(0));
t = TITLE_SELECT;
}
showToolbars(t);
updateCoordinates(l.at(0));
updateDimension(l.at(0));
updateRotZoom(l.at(0));
updateCoordinates(l.at(0));
updateDimension(l.at(0));
updateRotZoom(l.at(0));
// TODO: find a way to get a list of all supported image types...
QString allExtensions = "image/gif image/jpeg image/png image/x-tga image/x-bmp image/svg+xml image/tiff image/x-xcf-gimp image/x-vnd.adobe.photoshop image/x-pcx image/x-exr";
KUrl url = KFileDialog::getOpenUrl(KUrl(), allExtensions, this, i18n("Load Image")); //"*.svg *.png *.jpg *.jpeg *.gif *.raw"
// TODO: find a way to get a list of all supported image types...
QString allExtensions = "image/gif image/jpeg image/png image/x-tga image/x-bmp image/svg+xml image/tiff image/x-xcf-gimp image/x-vnd.adobe.photoshop image/x-pcx image/x-exr";
KUrl url = KFileDialog::getOpenUrl(KUrl(), allExtensions, this, i18n("Load Image")); //"*.svg *.png *.jpg *.jpeg *.gif *.raw"
- if (!url.isEmpty()) {
- if (url.path().endsWith(".svg")) {
+ if(!url.isEmpty()) {
+ if(url.path().endsWith(".svg")) {
QGraphicsSvgItem *svg = new QGraphicsSvgItem(url.toLocalFile());
svg->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
svg->setZValue(m_count++);
QGraphicsSvgItem *svg = new QGraphicsSvgItem(url.toLocalFile());
svg->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
svg->setZValue(m_count++);
{
// TITLETOOL is defined in graphicsscenerectmove.h
bool enable = false;
{
// TITLETOOL is defined in graphicsscenerectmove.h
bool enable = false;
- if (toolType == TITLE_RECTANGLE || toolType == TITLE_IMAGE) enable = true;
+ if(toolType == TITLE_RECTANGLE || toolType == TITLE_IMAGE) enable = true;
value_w->setEnabled(enable);
value_h->setEnabled(enable);
}
value_w->setEnabled(enable);
value_h->setEnabled(enable);
}
bool bRect = false;
bool bImage = false;
bool bRect = false;
bool bImage = false;
case TITLE_SELECT:
bSelect = true;
break;
case TITLE_SELECT:
bSelect = true;
break;
void TitleWidget::displayBackgroundFrame()
{
void TitleWidget::displayBackgroundFrame()
{
- if (!displayBg->isChecked()) {
+ if(!displayBg->isChecked()) {
QPixmap bg(m_frameWidth / 2, m_frameHeight / 2);
QPixmap pattern(20, 20);
pattern.fill();
QPixmap bg(m_frameWidth / 2, m_frameHeight / 2);
QPixmap pattern(20, 20);
pattern.fill();
void TitleWidget::slotZoom(bool up)
{
int pos = zoom_slider->value();
void TitleWidget::slotZoom(bool up)
{
int pos = zoom_slider->value();
else pos--;
zoom_slider->setValue(pos);
}
else pos--;
zoom_slider->setValue(pos);
}
tt->setData(101, outlineWidth);
tt->setData(102, outlineColor);
tt->setData(101, outlineWidth);
tt->setData(102, outlineColor);
- if (outlineWidth > 0.0) cformat.setTextOutline(QPen(outlineColor, outlineWidth));
+ if(outlineWidth > 0.0) cformat.setTextOutline(QPen(outlineColor, outlineWidth));
cformat.setForeground(QBrush(color));
cur.setCharFormat(cformat);
cformat.setForeground(QBrush(color));
cur.setCharFormat(cformat);
void TitleWidget::setFontBoxWeight(int weight)
{
int index = font_weight_box->findData(weight);
void TitleWidget::setFontBoxWeight(int weight)
{
int index = font_weight_box->findData(weight);
index = font_weight_box->findData(QFont::Normal);
}
font_weight_box->setCurrentIndex(index);
index = font_weight_box->findData(QFont::Normal);
}
font_weight_box->setCurrentIndex(index);
void TitleWidget::zIndexChanged(int v)
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::zIndexChanged(int v)
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
l[0]->setZValue(v);
}
}
void TitleWidget::selectionChanged()
{
l[0]->setZValue(v);
}
}
void TitleWidget::selectionChanged()
{
- if (m_scene->tool() != TITLE_SELECT) return;
+ if(m_scene->tool() != TITLE_SELECT) return;
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
//toolBox->setItemEnabled(2, false);
//toolBox->setItemEnabled(3, false);
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
//toolBox->setItemEnabled(2, false);
//toolBox->setItemEnabled(3, false);
itemrotatex->blockSignals(true);
itemrotatey->blockSignals(true);
itemrotatez->blockSignals(true);
itemrotatex->blockSignals(true);
itemrotatey->blockSignals(true);
itemrotatez->blockSignals(true);
effect_stack->setHidden(true);
effect_frame->setEnabled(false);
effect_list->setCurrentIndex(0);
bool blockX = !origin_x_left->signalsBlocked();
bool blockY = !origin_y_top->signalsBlocked();
effect_stack->setHidden(true);
effect_frame->setEnabled(false);
effect_list->setCurrentIndex(0);
bool blockX = !origin_x_left->signalsBlocked();
bool blockY = !origin_y_top->signalsBlocked();
- if (blockX) origin_x_left->blockSignals(true);
- if (blockY) origin_y_top->blockSignals(true);
+ if(blockX) origin_x_left->blockSignals(true);
+ if(blockY) origin_y_top->blockSignals(true);
origin_x_left->setChecked(false);
origin_y_top->setChecked(false);
updateTextOriginX();
updateTextOriginY();
enableToolbars(TITLE_SELECT);
origin_x_left->setChecked(false);
origin_y_top->setChecked(false);
updateTextOriginX();
updateTextOriginY();
enableToolbars(TITLE_SELECT);
- if (blockX) origin_x_left->blockSignals(false);
- if (blockY) origin_y_top->blockSignals(false);
+ if(blockX) origin_x_left->blockSignals(false);
+ if(blockY) origin_y_top->blockSignals(false);
itemzoom->setEnabled(false);
itemrotatex->setEnabled(false);
itemrotatey->setEnabled(false);
itemrotatez->setEnabled(false);
frame_properties->setEnabled(false);
itemzoom->setEnabled(false);
itemrotatex->setEnabled(false);
itemrotatey->setEnabled(false);
itemrotatez->setEnabled(false);
frame_properties->setEnabled(false);
- } else if (l.size() == 1) {
+ } else if(l.size() == 1) {
effect_frame->setEnabled(true);
frame_properties->setEnabled(true);
effect_frame->setEnabled(true);
frame_properties->setEnabled(true);
- if (l.at(0) != m_startViewport && l.at(0) != m_endViewport) {
+ if(l.at(0) != m_startViewport && l.at(0) != m_endViewport) {
itemzoom->setEnabled(true);
itemrotatex->setEnabled(true);
itemrotatey->setEnabled(true);
itemzoom->setEnabled(true);
itemrotatex->setEnabled(true);
itemrotatey->setEnabled(true);
itemrotatez->setEnabled(false);
updateInfoText();
}
itemrotatez->setEnabled(false);
updateInfoText();
}
- if (l.at(0)->type() == TEXTITEM) {
+ if(l.at(0)->type() == TEXTITEM) {
showToolbars(TITLE_TEXT);
QGraphicsTextItem* i = static_cast <QGraphicsTextItem *>(l.at(0));
showToolbars(TITLE_TEXT);
QGraphicsTextItem* i = static_cast <QGraphicsTextItem *>(l.at(0));
- if (!i->data(100).isNull()) {
+ if(!i->data(100).isNull()) {
// Item has an effect
QStringList effdata = i->data(100).toStringList();
QString effectName = effdata.takeFirst();
// Item has an effect
QStringList effdata = i->data(100).toStringList();
QString effectName = effdata.takeFirst();
- if (effectName == "typewriter") {
+ if(effectName == "typewriter") {
QStringList params = effdata.at(0).split(';');
typewriter_delay->setValue(params.at(0).toInt());
typewriter_start->setValue(params.at(1).toInt());
QStringList params = effdata.at(0).split(';');
typewriter_delay->setValue(params.at(0).toInt());
typewriter_start->setValue(params.at(1).toInt());
}
} else {
#if QT_VERSION >= 0x040600
}
} else {
#if QT_VERSION >= 0x040600
- if (i->graphicsEffect()) {
+ if(i->graphicsEffect()) {
QGraphicsBlurEffect *blur = static_cast <QGraphicsBlurEffect *>(i->graphicsEffect());
QGraphicsBlurEffect *blur = static_cast <QGraphicsBlurEffect *>(i->graphicsEffect());
effect_list->setCurrentIndex(effect_list->findData((int) BLUREFFECT));
int rad = (int) blur->blurRadius();
blur_radius->setValue(rad);
effect_stack->setHidden(false);
} else {
QGraphicsDropShadowEffect *shad = static_cast <QGraphicsDropShadowEffect *>(i->graphicsEffect());
effect_list->setCurrentIndex(effect_list->findData((int) BLUREFFECT));
int rad = (int) blur->blurRadius();
blur_radius->setValue(rad);
effect_stack->setHidden(false);
} else {
QGraphicsDropShadowEffect *shad = static_cast <QGraphicsDropShadowEffect *>(i->graphicsEffect());
effect_list->setCurrentIndex(effect_list->findData((int) SHADOWEFFECT));
shadow_radius->setValue(shad->blurRadius());
shadow_x->setValue(shad->xOffset());
effect_list->setCurrentIndex(effect_list->findData((int) SHADOWEFFECT));
shadow_radius->setValue(shad->blurRadius());
shadow_x->setValue(shad->xOffset());
color.setAlpha(255);
fontColorButton->setColor(color);
color.setAlpha(255);
fontColorButton->setColor(color);
- if (!i->data(101).isNull()) {
+ if(!i->data(101).isNull()) {
textOutline->blockSignals(true);
textOutline->blockSignals(true);
- textOutline->setValue(i->data(101).toDouble()*10);
+ textOutline->setValue(i->data(101).toDouble() * 10);
textOutline->blockSignals(false);
}
textOutline->blockSignals(false);
}
- if (!i->data(102).isNull()) {
+ if(!i->data(102).isNull()) {
textOutlineColor->blockSignals(true);
textOutlineAlpha->blockSignals(true);
color = QColor(i->data(102).toString());
textOutlineColor->blockSignals(true);
textOutlineAlpha->blockSignals(true);
color = QColor(i->data(102).toString());
}
QTextCursor cur = i->textCursor();
QTextBlockFormat format = cur.blockFormat();
}
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);
+ 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);
font_size->blockSignals(false);
font_family->blockSignals(false);
buttonAlignNone->blockSignals(false);
buttonAlignCenter->blockSignals(false);
buttonAlignNone->blockSignals(false);
buttonAlignCenter->blockSignals(false);
+ // Later
+// cur.select(QTextCursor::Document);
+// i->setTextCursor(cur);
+
updateAxisButtons(i);
updateCoordinates(i);
updateDimension(i);
enableToolbars(TITLE_TEXT);
updateAxisButtons(i);
updateCoordinates(i);
updateDimension(i);
enableToolbars(TITLE_TEXT);
- } else if ((l.at(0))->type() == RECTITEM) {
+ } else if((l.at(0))->type() == RECTITEM) {
showToolbars(TITLE_RECTANGLE);
settingUp = true;
QGraphicsRectItem *rec = static_cast <QGraphicsRectItem *>(l.at(0));
showToolbars(TITLE_RECTANGLE);
settingUp = true;
QGraphicsRectItem *rec = static_cast <QGraphicsRectItem *>(l.at(0));
- if (rec == m_startViewport || rec == m_endViewport) {
+ if(rec == m_startViewport || rec == m_endViewport) {
/*toolBox->setCurrentIndex(3);
toolBox->widget(0)->setEnabled(false);
toolBox->widget(1)->setEnabled(false);*/
/*toolBox->setCurrentIndex(3);
toolBox->widget(0)->setEnabled(false);
toolBox->widget(1)->setEnabled(false);*/
updateCoordinates(rec);
updateDimension(rec);
updateCoordinates(rec);
updateDimension(rec);
- } else if (l.at(0)->type() == IMAGEITEM) {
+ } else if(l.at(0)->type() == IMAGEITEM) {
showToolbars(TITLE_IMAGE);
updateCoordinates(l.at(0));
showToolbars(TITLE_IMAGE);
updateCoordinates(l.at(0));
frame_properties->setEnabled(false);
}
zValue->setValue((int)l.at(0)->zValue());
frame_properties->setEnabled(false);
}
zValue->setValue((int)l.at(0)->zValue());
- if (!l.at(0)->data(ZOOMFACTOR).isNull()) itemzoom->setValue(l.at(0)->data(ZOOMFACTOR).toInt());
+ if(!l.at(0)->data(ZOOMFACTOR).isNull()) itemzoom->setValue(l.at(0)->data(ZOOMFACTOR).toInt());
else itemzoom->setValue((int)(m_transformations.value(l.at(0)).scalex * 100.0 + 0.5));
itemrotatex->setValue((int)(m_transformations.value(l.at(0)).rotatex));
itemrotatey->setValue((int)(m_transformations.value(l.at(0)).rotatey));
else itemzoom->setValue((int)(m_transformations.value(l.at(0)).scalex * 100.0 + 0.5));
itemrotatex->setValue((int)(m_transformations.value(l.at(0)).rotatex));
itemrotatey->setValue((int)(m_transformations.value(l.at(0)).rotatey));
itemrotatez->blockSignals(false);
}
// Tools working on more than one element.
itemrotatez->blockSignals(false);
}
// Tools working on more than one element.
effect_list->blockSignals(false);
}
void TitleWidget::slotValueChanged(int type)
{
QList<QGraphicsItem *> l = graphicsView->scene()->selectedItems();
effect_list->blockSignals(false);
}
void TitleWidget::slotValueChanged(int type)
{
QList<QGraphicsItem *> l = graphicsView->scene()->selectedItems();
- if (l.size() > 0 && l.at(0)->type() == IMAGEITEM) {
+ if(l.size() > 0 && l.at(0)->type() == IMAGEITEM) {
case ValueWidth:
val = value_w->value();
break;
case ValueWidth:
val = value_w->value();
break;
// Scaling factor
double scale = 1;
// Scaling factor
double scale = 1;
case ValueWidth:
// Add 0.5 because otherwise incrementing by 1 might have no effect
length = val / (cos(alpha) + 1 / phi * sin(alpha)) + 0.5;
case ValueWidth:
// Add 0.5 because otherwise incrementing by 1 might have no effect
length = val / (cos(alpha) + 1 / phi * sin(alpha)) + 0.5;
void TitleWidget::slotAdjustSelectedItem()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::slotAdjustSelectedItem()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
- if (l.size() >= 1) {
- if (l.at(0)->type() == RECTITEM) {
+ if(l.size() >= 1) {
+ if(l.at(0)->type() == RECTITEM) {
//rect item
QGraphicsRectItem *rec = static_cast <QGraphicsRectItem *>(l.at(0));
updatePosition(rec);
rec->setRect(QRect(0, 0, value_w->value(), value_h->value()));
//rect item
QGraphicsRectItem *rec = static_cast <QGraphicsRectItem *>(l.at(0));
updatePosition(rec);
rec->setRect(QRect(0, 0, value_w->value(), value_h->value()));
- } else if (l.at(0)->type() == TEXTITEM) {
+ } else if(l.at(0)->type() == TEXTITEM) {
//text item
updatePosition(l.at(0));
//text item
updatePosition(l.at(0));
- } else if (l.at(0)->type() == IMAGEITEM) {
+ } else if(l.at(0)->type() == IMAGEITEM) {
//image item
updatePosition(l.at(0));
}
//image item
updatePosition(l.at(0));
}
zValue->blockSignals(true);
zValue->setValue((int) i->zValue());
zValue->blockSignals(true);
zValue->setValue((int) i->zValue());
- if (i->type() == IMAGEITEM) {
+ if(i->type() == IMAGEITEM) {
// Get multipliers for rotation/scaling
/*Transform t = m_transformations.value(i);
// Get multipliers for rotation/scaling
/*Transform t = m_transformations.value(i);
value_w->setValue(i->sceneBoundingRect().width());
value_h->setValue(i->sceneBoundingRect().height());
value_w->setValue(i->sceneBoundingRect().width());
value_h->setValue(i->sceneBoundingRect().height());
- } else if (i->type() == RECTITEM) {
+ } else if(i->type() == RECTITEM) {
QGraphicsRectItem *r = static_cast <QGraphicsRectItem *>(i);
value_w->setValue((int) r->rect().width());
value_h->setValue((int) r->rect().height());
QGraphicsRectItem *r = static_cast <QGraphicsRectItem *>(i);
value_w->setValue((int) r->rect().width());
value_h->setValue((int) r->rect().height());
- } else if (i->type() == TEXTITEM) {
+ } else if(i->type() == TEXTITEM) {
QGraphicsTextItem *t = static_cast <QGraphicsTextItem *>(i);
value_w->setValue((int) t->boundingRect().width());
value_h->setValue((int) t->boundingRect().height());
QGraphicsTextItem *t = static_cast <QGraphicsTextItem *>(i);
value_w->setValue((int) t->boundingRect().width());
value_h->setValue((int) t->boundingRect().height());
value_x->blockSignals(true);
value_y->blockSignals(true);
value_x->blockSignals(true);
value_y->blockSignals(true);
- if (i->type() == TEXTITEM) {
+ if(i->type() == TEXTITEM) {
QGraphicsTextItem *rec = static_cast <QGraphicsTextItem *>(i);
// Set the correct x coordinate value
QGraphicsTextItem *rec = static_cast <QGraphicsTextItem *>(i);
// Set the correct x coordinate value
- if (origin_x_left->isChecked()) {
+ if(origin_x_left->isChecked()) {
// Origin (0 point) is at m_frameWidth, coordinate axis is inverted
value_x->setValue((int)(m_frameWidth - rec->pos().x() - rec->boundingRect().width()));
} else {
// Origin (0 point) is at m_frameWidth, coordinate axis is inverted
value_x->setValue((int)(m_frameWidth - rec->pos().x() - rec->boundingRect().width()));
} else {
- if (origin_y_top->isChecked()) {
+ if(origin_y_top->isChecked()) {
value_y->setValue((int)(m_frameHeight - rec->pos().y() - rec->boundingRect().height()));
} else {
value_y->setValue((int) rec->pos().y());
}
value_y->setValue((int)(m_frameHeight - rec->pos().y() - rec->boundingRect().height()));
} else {
value_y->setValue((int) rec->pos().y());
}
- } else if (i->type() == RECTITEM) {
+ } else if(i->type() == RECTITEM) {
QGraphicsRectItem *rec = static_cast <QGraphicsRectItem *>(i);
QGraphicsRectItem *rec = static_cast <QGraphicsRectItem *>(i);
- if (origin_x_left->isChecked()) {
+ if(origin_x_left->isChecked()) {
// Origin (0 point) is at m_frameWidth
value_x->setValue((int)(m_frameWidth - rec->pos().x() - rec->rect().width()));
} else {
// Origin (0 point) is at m_frameWidth
value_x->setValue((int)(m_frameWidth - rec->pos().x() - rec->rect().width()));
} else {
value_x->setValue((int) rec->pos().x());
}
value_x->setValue((int) rec->pos().x());
}
- if (origin_y_top->isChecked()) {
+ if(origin_y_top->isChecked()) {
value_y->setValue((int)(m_frameHeight - rec->pos().y() - rec->rect().height()));
} else {
value_y->setValue((int) rec->pos().y());
}
value_y->setValue((int)(m_frameHeight - rec->pos().y() - rec->rect().height()));
} else {
value_y->setValue((int) rec->pos().y());
}
- } else if (i->type() == IMAGEITEM) {
+ } else if(i->type() == IMAGEITEM) {
- if (origin_x_left->isChecked()) {
+ if(origin_x_left->isChecked()) {
value_x->setValue((int)(m_frameWidth - i->pos().x() - i->sceneBoundingRect().width()));
} else {
value_x->setValue((int) i->pos().x());
}
value_x->setValue((int)(m_frameWidth - i->pos().x() - i->sceneBoundingRect().width()));
} else {
value_x->setValue((int) i->pos().x());
}
- if (origin_y_top->isChecked()) {
+ if(origin_y_top->isChecked()) {
value_y->setValue((int)(m_frameHeight - i->pos().y() - i->sceneBoundingRect().height()));
} else {
value_y->setValue((int) i->pos().y());
value_y->setValue((int)(m_frameHeight - i->pos().y() - i->sceneBoundingRect().height()));
} else {
value_y->setValue((int) i->pos().y());
Transform t = m_transformations.value(i);
Transform t = m_transformations.value(i);
- if (!i->data(ZOOMFACTOR).isNull()) itemzoom->setValue(i->data(ZOOMFACTOR).toInt());
+ if(!i->data(ZOOMFACTOR).isNull()) itemzoom->setValue(i->data(ZOOMFACTOR).toInt());
else itemzoom->setValue((int)(t.scalex * 100.0 + 0.5));
itemrotatex->setValue((int)(t.rotatex));
else itemzoom->setValue((int)(t.scalex * 100.0 + 0.5));
itemrotatex->setValue((int)(t.rotatex));
void TitleWidget::updatePosition(QGraphicsItem *i)
{
void TitleWidget::updatePosition(QGraphicsItem *i)
{
- if (i->type() == TEXTITEM) {
+ if(i->type() == TEXTITEM) {
QGraphicsTextItem *rec = static_cast <QGraphicsTextItem *>(i);
int posX;
QGraphicsTextItem *rec = static_cast <QGraphicsTextItem *>(i);
int posX;
- if (origin_x_left->isChecked()) {
+ if(origin_x_left->isChecked()) {
/*
* Origin of the X axis is at m_frameWidth, and distance from right
* border of the item to the right border of the frame is taken. See
/*
* Origin of the X axis is at m_frameWidth, and distance from right
* border of the item to the right border of the frame is taken. See
- if (origin_y_top->isChecked()) {
+ if(origin_y_top->isChecked()) {
/* Same for y axis */
posY = m_frameHeight - value_y->value() - rec->boundingRect().height();
} else {
/* Same for y axis */
posY = m_frameHeight - value_y->value() - rec->boundingRect().height();
} else {
- } else if (i->type() == RECTITEM) {
+ } else if(i->type() == RECTITEM) {
QGraphicsRectItem *rec = static_cast <QGraphicsRectItem *>(i);
int posX;
QGraphicsRectItem *rec = static_cast <QGraphicsRectItem *>(i);
int posX;
- if (origin_x_left->isChecked()) {
+ if(origin_x_left->isChecked()) {
posX = m_frameWidth - value_x->value() - rec->rect().width();
} else {
posX = value_x->value();
}
int posY;
posX = m_frameWidth - value_x->value() - rec->rect().width();
} else {
posX = value_x->value();
}
int posY;
- if (origin_y_top->isChecked()) {
+ if(origin_y_top->isChecked()) {
posY = m_frameHeight - value_y->value() - rec->rect().height();
} else {
posY = value_y->value();
posY = m_frameHeight - value_y->value() - rec->rect().height();
} else {
posY = value_y->value();
- } else if (i->type() == IMAGEITEM) {
+ } else if(i->type() == IMAGEITEM) {
- if (origin_x_left->isChecked()) {
+ if(origin_x_left->isChecked()) {
// Use the sceneBoundingRect because this also regards transformations like zoom
posX = m_frameWidth - value_x->value() - i->sceneBoundingRect().width();
} else {
// Use the sceneBoundingRect because this also regards transformations like zoom
posX = m_frameWidth - value_x->value() - i->sceneBoundingRect().width();
} else {
- if (origin_y_top->isChecked()) {
+ if(origin_y_top->isChecked()) {
posY = m_frameHeight - value_y->value() - i->sceneBoundingRect().height();
} else {
posY = value_y->value();
posY = m_frameHeight - value_y->value() - i->sceneBoundingRect().height();
} else {
posY = value_y->value();
void TitleWidget::updateTextOriginX()
{
void TitleWidget::updateTextOriginX()
{
- if (origin_x_left->isChecked()) {
+ if(origin_x_left->isChecked()) {
origin_x_left->setText(i18n("\u2212X"));
} else {
origin_x_left->setText(i18n("+X"));
origin_x_left->setText(i18n("\u2212X"));
} else {
origin_x_left->setText(i18n("+X"));
updateTextOriginX();
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
updateTextOriginX();
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
updateCoordinates(l.at(0));
// Remember x axis setting
updateCoordinates(l.at(0));
// Remember x axis setting
void TitleWidget::updateTextOriginY()
{
void TitleWidget::updateTextOriginY()
{
- if (origin_y_top->isChecked()) {
+ if(origin_y_top->isChecked()) {
origin_y_top->setText(i18n("\u2212Y"));
} else {
origin_y_top->setText(i18n("+Y"));
origin_y_top->setText(i18n("\u2212Y"));
} else {
origin_y_top->setText(i18n("+Y"));
updateTextOriginY();
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
updateTextOriginY();
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
updateCoordinates(l.at(0));
l.at(0)->setData(TitleDocument::OriginYTop, origin_y_top->isChecked() ?
updateCoordinates(l.at(0));
l.at(0)->setData(TitleDocument::OriginYTop, origin_y_top->isChecked() ?
origin_x_left->blockSignals(true);
origin_y_top->blockSignals(true);
origin_x_left->blockSignals(true);
origin_y_top->blockSignals(true);
- if (xAxis == TitleDocument::AxisInverted) {
+ if(xAxis == TitleDocument::AxisInverted) {
origin_x_left->setChecked(true);
} else {
origin_x_left->setChecked(false);
}
updateTextOriginX();
origin_x_left->setChecked(true);
} else {
origin_x_left->setChecked(false);
}
updateTextOriginX();
- if (yAxis == TitleDocument::AxisInverted) {
+ if(yAxis == TitleDocument::AxisInverted) {
origin_y_top->setChecked(true);
} else {
origin_y_top->setChecked(false);
origin_y_top->setChecked(true);
} else {
origin_y_top->setChecked(false);
void TitleWidget::slotChanged()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::slotChanged()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
- if (l.size() >= 1 && l.at(0)->type() == TEXTITEM) {
+ if(l.size() >= 1 && l.at(0)->type() == TEXTITEM) {
textChanged(static_cast <QGraphicsTextItem *>(l.at(0)));
}
}
textChanged(static_cast <QGraphicsTextItem *>(l.at(0)));
}
}
- if (origin_x_left->isChecked() || origin_y_top->isChecked()) {
- if (!i->toPlainText().isEmpty())
+ if(origin_x_left->isChecked() || origin_y_top->isChecked()) {
+ if(!i->toPlainText().isEmpty())
updatePosition(i);
else {
/*
updatePosition(i);
else {
/*
void TitleWidget::slotInsertUnicodeString(QString text)
{
QList<QGraphicsItem *> l = graphicsView->scene()->selectedItems();
void TitleWidget::slotInsertUnicodeString(QString text)
{
QList<QGraphicsItem *> l = graphicsView->scene()->selectedItems();
- if (l.size() > 0) {
- if (l.at(0)->type() == TEXTITEM) {
+ if(l.size() > 0) {
+ if(l.at(0)->type() == TEXTITEM) {
QGraphicsTextItem *t = static_cast <QGraphicsTextItem *>(l.at(0));
t->textCursor().insertText(text);
}
QGraphicsTextItem *t = static_cast <QGraphicsTextItem *>(l.at(0));
t->textCursor().insertText(text);
}
double outlineWidth = textOutline->value() / 10.0;
QGraphicsTextItem* item = NULL;
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
double outlineWidth = textOutline->value() / 10.0;
QGraphicsTextItem* item = NULL;
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
- if (l.size() == 1 && l.at(0)->type() == TEXTITEM) {
+ if(l.size() == 1 && l.at(0)->type() == TEXTITEM) {
item = static_cast <QGraphicsTextItem *>(l.at(0));
}
item = static_cast <QGraphicsTextItem *>(l.at(0));
}
//if (item->textCursor().selection ().isEmpty())
QTextCursor cur(item->document());
cur.select(QTextCursor::Document);
QTextBlockFormat format = cur.blockFormat();
//if (item->textCursor().selection ().isEmpty())
QTextCursor cur(item->document());
cur.select(QTextCursor::Document);
QTextBlockFormat format = cur.blockFormat();
- if (buttonAlignLeft->isChecked() || buttonAlignCenter->isChecked() || buttonAlignRight->isChecked()) {
+ if(buttonAlignLeft->isChecked() || buttonAlignCenter->isChecked() || buttonAlignRight->isChecked()) {
item->setTextWidth(item->boundingRect().width());
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);
+ 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);
} else {
format.setAlignment(Qt::AlignLeft);
item->setTextWidth(-1);
item->setData(101, outlineWidth);
item->setData(102, outlineColor);
item->setData(101, outlineWidth);
item->setData(102, outlineColor);
- if (outlineWidth > 0.0) cformat.setTextOutline(QPen(outlineColor, outlineWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
+ if(outlineWidth > 0.0) cformat.setTextOutline(QPen(outlineColor, outlineWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
cformat.setForeground(QBrush(color));
cur.setCharFormat(cformat);
cformat.setForeground(QBrush(color));
cur.setCharFormat(cformat);
void TitleWidget::rectChanged()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::rectChanged()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
- if (l.size() == 1 && l.at(0)->type() == RECTITEM && !settingUp) {
+ if(l.size() == 1 && l.at(0)->type() == RECTITEM && !settingUp) {
QGraphicsRectItem *rec = static_cast<QGraphicsRectItem *>(l.at(0));
QColor f = rectFColor->color();
f.setAlpha(rectFAlpha->value());
QGraphicsRectItem *rec = static_cast<QGraphicsRectItem *>(l.at(0));
QColor f = rectFColor->color();
f.setAlpha(rectFAlpha->value());
void TitleWidget::itemScaled(int val)
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::itemScaled(int val)
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
Transform x = m_transformations.value(l.at(0));
x.scalex = (double)val / 100.0;
x.scaley = (double)val / 100.0;
Transform x = m_transformations.value(l.at(0));
x.scalex = (double)val / 100.0;
x.scaley = (double)val / 100.0;
void TitleWidget::itemRotate(qreal val, int axis)
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::itemRotate(qreal val, int axis)
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
Transform x = m_transformations[l.at(0)];
Transform x = m_transformations[l.at(0)];
case 0:
x.rotatex = val;
break;
case 0:
x.rotatex = val;
break;
qtrans.rotate(x.rotatez, Qt::ZAxis);
l[0]->setTransform(qtrans);
m_transformations[l.at(0)] = x;
qtrans.rotate(x.rotatez, Qt::ZAxis);
l[0]->setTransform(qtrans);
m_transformations[l.at(0)] = x;
- if (l[0]->data(ZOOMFACTOR).isNull()) l[0]->setData(ZOOMFACTOR, 100);
+ if(l[0]->data(ZOOMFACTOR).isNull()) l[0]->setData(ZOOMFACTOR, 100);
updateDimension(l.at(0));
}
}
updateDimension(l.at(0));
}
}
void TitleWidget::itemHCenter()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::itemHCenter()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
QGraphicsItem *item = l.at(0);
QRectF br = item->sceneBoundingRect();
int width = (int)br.width();
QGraphicsItem *item = l.at(0);
QRectF br = item->sceneBoundingRect();
int width = (int)br.width();
void TitleWidget::itemVCenter()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::itemVCenter()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
QGraphicsItem *item = l.at(0);
QRectF br = item->sceneBoundingRect();
int height = (int)br.height();
QGraphicsItem *item = l.at(0);
QRectF br = item->sceneBoundingRect();
int height = (int)br.height();
void TitleWidget::itemTop()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::itemTop()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
QGraphicsItem *item = l.at(0);
QRectF br = item->sceneBoundingRect();
double diff;
QGraphicsItem *item = l.at(0);
QRectF br = item->sceneBoundingRect();
double diff;
- if (br.top() > 0) diff = -br.top();
+ if(br.top() > 0) diff = -br.top();
else diff = -br.bottom();
item->moveBy(0, diff);
updateCoordinates(item);
else diff = -br.bottom();
item->moveBy(0, diff);
updateCoordinates(item);
void TitleWidget::itemBottom()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::itemBottom()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
QGraphicsItem *item = l.at(0);
QRectF br = item->sceneBoundingRect();
double diff;
QGraphicsItem *item = l.at(0);
QRectF br = item->sceneBoundingRect();
double diff;
- if (br.bottom() > m_frameHeight) diff = m_frameHeight - br.top();
+ if(br.bottom() > m_frameHeight) diff = m_frameHeight - br.top();
else diff = m_frameHeight - br.bottom();
item->moveBy(0, diff);
updateCoordinates(item);
else diff = m_frameHeight - br.bottom();
item->moveBy(0, diff);
updateCoordinates(item);
void TitleWidget::itemLeft()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::itemLeft()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
QGraphicsItem *item = l.at(0);
QRectF br = item->sceneBoundingRect();
double diff;
QGraphicsItem *item = l.at(0);
QRectF br = item->sceneBoundingRect();
double diff;
- if (br.left() > 0) diff = -br.left();
+ if(br.left() > 0) diff = -br.left();
else diff = -br.right();
item->moveBy(diff, 0);
updateCoordinates(item);
else diff = -br.right();
item->moveBy(diff, 0);
updateCoordinates(item);
void TitleWidget::itemRight()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::itemRight()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
QGraphicsItem *item = l.at(0);
QRectF br = item->sceneBoundingRect();
double diff;
QGraphicsItem *item = l.at(0);
QRectF br = item->sceneBoundingRect();
double diff;
- if (br.right() < m_frameWidth) diff = m_frameWidth - br.right();
+ if(br.right() < m_frameWidth) diff = m_frameWidth - br.right();
else diff = m_frameWidth - br.left();
item->moveBy(diff, 0);
updateCoordinates(item);
else diff = m_frameWidth - br.left();
item->moveBy(diff, 0);
updateCoordinates(item);
void TitleWidget::loadTitle(KUrl url)
{
void TitleWidget::loadTitle(KUrl url)
{
- if (url.isEmpty()) url = KFileDialog::getOpenUrl(KUrl(m_projectTitlePath), "application/x-kdenlivetitle", this, i18n("Load Title"));
- if (!url.isEmpty()) {
+ if(url.isEmpty()) url = KFileDialog::getOpenUrl(KUrl(m_projectTitlePath), "application/x-kdenlivetitle", this, i18n("Load Title"));
+ if(!url.isEmpty()) {
QList<QGraphicsItem *> items = m_scene->items();
QList<QGraphicsItem *> items = m_scene->items();
- for (int i = 0; i < items.size(); i++) {
- if (items.at(i)->zValue() > -1000) delete items.at(i);
+ for(int i = 0; i < items.size(); i++) {
+ if(items.at(i)->zValue() > -1000) delete items.at(i);
}
m_scene->clearTextSelection();
QDomDocument doc;
QString tmpfile;
}
m_scene->clearTextSelection();
QDomDocument doc;
QString tmpfile;
- if (KIO::NetAccess::download(url, tmpfile, 0)) {
+ if(KIO::NetAccess::download(url, tmpfile, 0)) {
- if (file.open(QIODevice::ReadOnly)) {
+ if(file.open(QIODevice::ReadOnly)) {
doc.setContent(&file, false);
file.close();
} else return;
doc.setContent(&file, false);
file.close();
} else return;
void TitleWidget::saveTitle(KUrl url)
{
void TitleWidget::saveTitle(KUrl url)
{
- if (anim_start->isChecked()) slotAnimStart(false);
- if (anim_end->isChecked()) slotAnimEnd(false);
- if (url.isEmpty()) {
+ if(anim_start->isChecked()) slotAnimStart(false);
+ if(anim_end->isChecked()) slotAnimEnd(false);
+ if(url.isEmpty()) {
KFileDialog *fs = new KFileDialog(KUrl(m_projectTitlePath), "application/x-kdenlivetitle", this);
fs->setOperationMode(KFileDialog::Saving);
fs->setMode(KFile::File);
KFileDialog *fs = new KFileDialog(KUrl(m_projectTitlePath), "application/x-kdenlivetitle", this);
fs->setOperationMode(KFileDialog::Saving);
fs->setMode(KFile::File);
url = fs->selectedUrl();
delete fs;
}
url = fs->selectedUrl();
delete fs;
}
- if (!url.isEmpty()) {
- if (m_titledocument.saveDocument(url, m_startViewport, m_endViewport, m_tc.getFrameCount(title_duration->text()) - 1) == false)
+ if(!url.isEmpty()) {
+ if(m_titledocument.saveDocument(url, m_startViewport, m_endViewport, m_tc.getFrameCount(title_duration->text()) - 1) == false)
KMessageBox::error(this, i18n("Cannot write to file %1", url.path()));
}
}
KMessageBox::error(this, i18n("Cannot write to file %1", url.path()));
}
}
m_transformations.clear();
QList <QGraphicsItem *> items = graphicsView->scene()->items();
const double PI = 4.0 * atan(1.0);
m_transformations.clear();
QList <QGraphicsItem *> items = graphicsView->scene()->items();
const double PI = 4.0 * atan(1.0);
- for (int i = 0; i < items.count(); i++) {
+ for(int i = 0; i < items.count(); i++) {
QTransform t = items.at(i)->transform();
Transform x;
x.scalex = t.m11();
x.scaley = t.m22();
QTransform t = items.at(i)->transform();
Transform x;
x.scalex = t.m11();
x.scaley = t.m22();
- if (!items.at(i)->data(ROTATEFACTOR).isNull()) {
+ if(!items.at(i)->data(ROTATEFACTOR).isNull()) {
QList<QVariant> rotlist = items.at(i)->data(ROTATEFACTOR).toList();
QList<QVariant> rotlist = items.at(i)->data(ROTATEFACTOR).toList();
- if (rotlist.count() >= 3) {
+ if(rotlist.count() >= 3) {
x.rotatex = rotlist[0].toDouble();
x.rotatey = rotlist[1].toDouble();
x.rotatez = rotlist[2].toDouble();
x.rotatex = rotlist[0].toDouble();
x.rotatey = rotlist[1].toDouble();
x.rotatez = rotlist[2].toDouble();
void TitleWidget::slotAccepted()
{
void TitleWidget::slotAccepted()
{
- if (anim_start->isChecked()) slotAnimStart(false);
- if (anim_end->isChecked()) slotAnimEnd(false);
+ if(anim_start->isChecked()) slotAnimStart(false);
+ if(anim_end->isChecked()) slotAnimEnd(false);
textOutline->setValue(titleConfig.readEntry("font_outline", textOutline->value()));
int weight;
textOutline->setValue(titleConfig.readEntry("font_outline", textOutline->value()));
int weight;
- if (titleConfig.readEntry("font_bold", false)) weight = QFont::Bold;
+ if(titleConfig.readEntry("font_bold", false)) weight = QFont::Bold;
else weight = titleConfig.readEntry("font_weight", font_weight_box->itemData(font_weight_box->currentIndex()).toInt());
setFontBoxWeight(weight);
buttonItalic->setChecked(titleConfig.readEntry("font_italic", buttonItalic->isChecked()));
else weight = titleConfig.readEntry("font_weight", font_weight_box->itemData(font_weight_box->currentIndex()).toInt());
setFontBoxWeight(weight);
buttonItalic->setChecked(titleConfig.readEntry("font_italic", buttonItalic->isChecked()));
void TitleWidget::slotAnimStart(bool anim)
{
void TitleWidget::slotAnimStart(bool anim)
{
- if (anim && anim_end->isChecked()) {
+ if(anim && anim_end->isChecked()) {
anim_end->setChecked(false);
m_endViewport->setZValue(-1000);
m_endViewport->setBrush(QBrush());
}
slotSelectTool();
QList<QGraphicsItem *> list = m_scene->items();
anim_end->setChecked(false);
m_endViewport->setZValue(-1000);
m_endViewport->setBrush(QBrush());
}
slotSelectTool();
QList<QGraphicsItem *> list = m_scene->items();
- for (int i = 0; i < list.count(); i++) {
- if (list.at(i)->zValue() > -1000) {
+ for(int i = 0; i < list.count(); i++) {
+ if(list.at(i)->zValue() > -1000) {
list.at(i)->setFlag(QGraphicsItem::ItemIsMovable, !anim);
list.at(i)->setFlag(QGraphicsItem::ItemIsSelectable, !anim);
}
list.at(i)->setFlag(QGraphicsItem::ItemIsMovable, !anim);
list.at(i)->setFlag(QGraphicsItem::ItemIsSelectable, !anim);
}
itemrotatez->setEnabled(!anim);
frame_toolbar->setEnabled(!anim);
toolbar_stack->setEnabled(!anim);
itemrotatez->setEnabled(!anim);
frame_toolbar->setEnabled(!anim);
toolbar_stack->setEnabled(!anim);
keep_aspect->setChecked(!m_startViewport->data(0).isNull());
m_startViewport->setZValue(1100);
QColor col = m_startViewport->pen().color();
keep_aspect->setChecked(!m_startViewport->data(0).isNull());
m_startViewport->setZValue(1100);
QColor col = m_startViewport->pen().color();
m_startViewport->setSelected(true);
selectionChanged();
slotSelectTool();
m_startViewport->setSelected(true);
selectionChanged();
slotSelectTool();
- if (m_startViewport->childItems().isEmpty()) addAnimInfoText();
+ if(m_startViewport->childItems().isEmpty()) addAnimInfoText();
} else {
m_startViewport->setZValue(-1000);
m_startViewport->setBrush(QBrush());
m_startViewport->setFlags(0);
} else {
m_startViewport->setZValue(-1000);
m_startViewport->setBrush(QBrush());
m_startViewport->setFlags(0);
- if (!anim_end->isChecked()) deleteAnimInfoText();
+ if(!anim_end->isChecked()) deleteAnimInfoText();
}
}
void TitleWidget::slotAnimEnd(bool anim)
{
}
}
void TitleWidget::slotAnimEnd(bool anim)
{
- if (anim && anim_start->isChecked()) {
+ if(anim && anim_start->isChecked()) {
anim_start->setChecked(false);
m_startViewport->setZValue(-1000);
m_startViewport->setBrush(QBrush());
}
slotSelectTool();
QList<QGraphicsItem *> list = m_scene->items();
anim_start->setChecked(false);
m_startViewport->setZValue(-1000);
m_startViewport->setBrush(QBrush());
}
slotSelectTool();
QList<QGraphicsItem *> list = m_scene->items();
- for (int i = 0; i < list.count(); i++) {
- if (list.at(i)->zValue() > -1000) {
+ for(int i = 0; i < list.count(); i++) {
+ if(list.at(i)->zValue() > -1000) {
list.at(i)->setFlag(QGraphicsItem::ItemIsMovable, !anim);
list.at(i)->setFlag(QGraphicsItem::ItemIsSelectable, !anim);
}
list.at(i)->setFlag(QGraphicsItem::ItemIsMovable, !anim);
list.at(i)->setFlag(QGraphicsItem::ItemIsSelectable, !anim);
}
itemrotatez->setEnabled(!anim);
frame_toolbar->setEnabled(!anim);
toolbar_stack->setEnabled(!anim);
itemrotatez->setEnabled(!anim);
frame_toolbar->setEnabled(!anim);
toolbar_stack->setEnabled(!anim);
keep_aspect->setChecked(!m_endViewport->data(0).isNull());
m_endViewport->setZValue(1100);
QColor col = m_endViewport->pen().color();
keep_aspect->setChecked(!m_endViewport->data(0).isNull());
m_endViewport->setZValue(1100);
QColor col = m_endViewport->pen().color();
m_endViewport->setSelected(true);
selectionChanged();
slotSelectTool();
m_endViewport->setSelected(true);
selectionChanged();
slotSelectTool();
- if (m_endViewport->childItems().isEmpty()) addAnimInfoText();
+ if(m_endViewport->childItems().isEmpty()) addAnimInfoText();
} else {
m_endViewport->setZValue(-1000);
m_endViewport->setBrush(QBrush());
m_endViewport->setFlags(0);
} else {
m_endViewport->setZValue(-1000);
m_endViewport->setBrush(QBrush());
m_endViewport->setFlags(0);
- if (!anim_start->isChecked()) deleteAnimInfoText();
+ if(!anim_start->isChecked()) deleteAnimInfoText();
void TitleWidget::updateInfoText()
{
// update info text font
void TitleWidget::updateInfoText()
{
// update info text font
- if (!m_startViewport->childItems().isEmpty()) {
+ if(!m_startViewport->childItems().isEmpty()) {
QGraphicsTextItem *item = static_cast <QGraphicsTextItem *>(m_startViewport->childItems().at(0));
QGraphicsTextItem *item = static_cast <QGraphicsTextItem *>(m_startViewport->childItems().at(0));
QFont font = item->font();
font.setPixelSize(m_startViewport->rect().width() / 10);
item->setFont(font);
}
}
QFont font = item->font();
font.setPixelSize(m_startViewport->rect().width() / 10);
item->setFont(font);
}
}
- if (!m_endViewport->childItems().isEmpty()) {
+ if(!m_endViewport->childItems().isEmpty()) {
QGraphicsTextItem *item = static_cast <QGraphicsTextItem *>(m_endViewport->childItems().at(0));
QGraphicsTextItem *item = static_cast <QGraphicsTextItem *>(m_endViewport->childItems().at(0));
QFont font = item->font();
font.setPixelSize(m_endViewport->rect().width() / 10);
item->setFont(font);
QFont font = item->font();
font.setPixelSize(m_endViewport->rect().width() / 10);
item->setFont(font);
void TitleWidget::deleteAnimInfoText()
{
// end animation editing, remove info text
void TitleWidget::deleteAnimInfoText()
{
// end animation editing, remove info text
- while (!m_startViewport->childItems().isEmpty()) {
+ while(!m_startViewport->childItems().isEmpty()) {
QGraphicsItem *item = m_startViewport->childItems().at(0);
m_scene->removeItem(item);
delete item;
}
QGraphicsItem *item = m_startViewport->childItems().at(0);
m_scene->removeItem(item);
delete item;
}
- while (!m_endViewport->childItems().isEmpty()) {
+ while(!m_endViewport->childItems().isEmpty()) {
QGraphicsItem *item = m_endViewport->childItems().at(0);
m_scene->removeItem(item);
delete item;
QGraphicsItem *item = m_endViewport->childItems().at(0);
m_scene->removeItem(item);
delete item;
void TitleWidget::slotKeepAspect(bool keep)
{
void TitleWidget::slotKeepAspect(bool keep)
{
- if (m_endViewport->zValue() == 1100) {
+ if(m_endViewport->zValue() == 1100) {
m_endViewport->setData(0, keep == true ? m_frameWidth : QVariant());
m_endViewport->setData(1, keep == true ? m_frameHeight : QVariant());
} else {
m_endViewport->setData(0, keep == true ? m_frameWidth : QVariant());
m_endViewport->setData(1, keep == true ? m_frameHeight : QVariant());
} else {
void TitleWidget::slotResize50()
{
void TitleWidget::slotResize50()
{
- if (m_endViewport->zValue() == 1100) {
+ if(m_endViewport->zValue() == 1100) {
m_endViewport->setRect(0, 0, m_frameWidth / 2, m_frameHeight / 2);
} else m_startViewport->setRect(0, 0, m_frameWidth / 2, m_frameHeight / 2);
}
void TitleWidget::slotResize100()
{
m_endViewport->setRect(0, 0, m_frameWidth / 2, m_frameHeight / 2);
} else m_startViewport->setRect(0, 0, m_frameWidth / 2, m_frameHeight / 2);
}
void TitleWidget::slotResize100()
{
- if (m_endViewport->zValue() == 1100) {
+ if(m_endViewport->zValue() == 1100) {
m_endViewport->setRect(0, 0, m_frameWidth, m_frameHeight);
} else m_startViewport->setRect(0, 0, m_frameWidth, m_frameHeight);
}
void TitleWidget::slotResize200()
{
m_endViewport->setRect(0, 0, m_frameWidth, m_frameHeight);
} else m_startViewport->setRect(0, 0, m_frameWidth, m_frameHeight);
}
void TitleWidget::slotResize200()
{
- if (m_endViewport->zValue() == 1100) {
+ if(m_endViewport->zValue() == 1100) {
m_endViewport->setRect(0, 0, m_frameWidth * 2, m_frameHeight * 2);
} else m_startViewport->setRect(0, 0, m_frameWidth * 2, m_frameHeight * 2);
}
m_endViewport->setRect(0, 0, m_frameWidth * 2, m_frameHeight * 2);
} else m_startViewport->setRect(0, 0, m_frameWidth * 2, m_frameHeight * 2);
}
QList<QGraphicsItem *> list = graphicsView->scene()->selectedItems();
int effect = effect_list->itemData(ix).toInt();
QList<QGraphicsItem *> list = graphicsView->scene()->selectedItems();
int effect = effect_list->itemData(ix).toInt();
- if (list.size() == 1) {
- if (effect == NOEFFECT)
+ if(list.size() == 1) {
+ if(effect == NOEFFECT)
effect_stack->setHidden(true);
else {
effect_stack->setCurrentIndex(effect - 1);
effect_stack->setHidden(true);
else {
effect_stack->setCurrentIndex(effect - 1);
} else // Hide the effects stack when more than one element is selected.
effect_stack->setHidden(true);
} else // Hide the effects stack when more than one element is selected.
effect_stack->setHidden(true);
- foreach(QGraphicsItem *item, list) {
- switch (effect) {
+ foreach(QGraphicsItem * item, list) {
+ switch(effect) {
case NOEFFECT:
item->setData(100, QVariant());
#if QT_VERSION >= 0x040600
case NOEFFECT:
item->setData(100, QVariant());
#if QT_VERSION >= 0x040600
* Allow the user to set the typewriter effect to more than one
* element, but do not add it to non-text elements.
*/
* Allow the user to set the typewriter effect to more than one
* element, but do not add it to non-text elements.
*/
- if (item->type() == TEXTITEM) {
+ if(item->type() == TEXTITEM) {
QStringList effdata = QStringList() << "typewriter" << QString::number(typewriter_delay->value()) + ";" + QString::number(typewriter_start->value());
item->setData(100, effdata);
}
QStringList effdata = QStringList() << "typewriter" << QString::number(typewriter_delay->value()) + ";" + QString::number(typewriter_start->value());
item->setData(100, effdata);
}
void TitleWidget::slotFontText(const QString& s)
{
const QFont f(s);
void TitleWidget::slotFontText(const QString& s)
{
const QFont f(s);
// Font really exists (could also just be a «d» if the user
// starts typing «dejavu» for example).
font_family->setCurrentFont(f);
}
// Note: Typing dejavu serif does not recognize the font (takes sans)
// Font really exists (could also just be a «d» if the user
// starts typing «dejavu» for example).
font_family->setCurrentFont(f);
}
// Note: Typing dejavu serif does not recognize the font (takes sans)
- // in older Qt versions.
+ // in older Qt versions. Case must match there (except for first letter)
}
void TitleWidget::slotEditTypewriter(int /*ix*/)
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
}
void TitleWidget::slotEditTypewriter(int /*ix*/)
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
QStringList effdata = QStringList() << "typewriter" << QString::number(typewriter_delay->value()) + ";" + QString::number(typewriter_start->value());
l[0]->setData(100, effdata);
}
QStringList effdata = QStringList() << "typewriter" << QString::number(typewriter_delay->value()) + ";" + QString::number(typewriter_start->value());
l[0]->setData(100, effdata);
}
return;
#else
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
return;
#else
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
QGraphicsEffect *eff = l[0]->graphicsEffect();
QGraphicsBlurEffect *blur = static_cast <QGraphicsBlurEffect *>(eff);
QGraphicsEffect *eff = l[0]->graphicsEffect();
QGraphicsBlurEffect *blur = static_cast <QGraphicsBlurEffect *>(eff);
- if (blur) blur->setBlurRadius(ix);
+ if(blur) blur->setBlurRadius(ix);
return;
#else
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
return;
#else
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
QGraphicsEffect *eff = l[0]->graphicsEffect();
QGraphicsDropShadowEffect *shadow = static_cast <QGraphicsDropShadowEffect *>(eff);
QGraphicsEffect *eff = l[0]->graphicsEffect();
QGraphicsDropShadowEffect *shadow = static_cast <QGraphicsDropShadowEffect *>(eff);
shadow->setBlurRadius(shadow_radius->value());
shadow->setOffset(shadow_x->value(), shadow_y->value());
}
shadow->setBlurRadius(shadow_radius->value());
shadow->setOffset(shadow_x->value(), shadow_y->value());
}
{
qreal bound = maxBound ? -99 : 99;
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
{
qreal bound = maxBound ? -99 : 99;
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
QList<QGraphicsItem*> lItems;
// Get items (all or intersecting only)
QList<QGraphicsItem*> lItems;
// Get items (all or intersecting only)
- if (intersectingOnly) {
lItems = graphicsView->scene()->items(l[0]->sceneBoundingRect(), Qt::IntersectsItemShape);
} else {
lItems = graphicsView->scene()->items();
}
lItems = graphicsView->scene()->items(l[0]->sceneBoundingRect(), Qt::IntersectsItemShape);
} else {
lItems = graphicsView->scene()->items();
}
- if (lItems.size() > 0) {
+ if(lItems.size() > 0) {
int n = lItems.size();
qreal z;
int n = lItems.size();
qreal z;
- if (maxBound) {
- for (int i = 0; i < n; i++) {
+ if(maxBound) {
+ for(int i = 0; i < n; i++) {
- if (z > bound && !lItems[i]->isSelected()) {
+ if(z > bound && !lItems[i]->isSelected()) {
bound = z;
}
}
} else {
// Get minimum z index.
bound = z;
}
}
} else {
// Get minimum z index.
- for (int i = 0; i < n; i++) {
+ for(int i = 0; i < n; i++) {
- if (z < bound && !lItems[i]->isSelected() && z > -999) {
+ if(z < bound && !lItems[i]->isSelected() && z > -999) {
// There are items at the very bottom (background e.g.) with z-index < -1000.
bound = z;
}
// There are items at the very bottom (background e.g.) with z-index < -1000.
bound = z;
}
void TitleWidget::slotZIndexUp()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::slotZIndexUp()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
qreal currentZ = l[0]->zValue();
qreal max = zIndexBounds(true, true);
qreal currentZ = l[0]->zValue();
qreal max = zIndexBounds(true, true);
l[0]->setZValue(currentZ + 1);
updateDimension(l[0]);
}
l[0]->setZValue(currentZ + 1);
updateDimension(l[0]);
}
void TitleWidget::slotZIndexTop()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::slotZIndexTop()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
qreal currentZ = l[0]->zValue();
qreal max = zIndexBounds(true, false);
qreal currentZ = l[0]->zValue();
qreal max = zIndexBounds(true, false);
l[0]->setZValue(max + 1);
updateDimension(l[0]);
}
l[0]->setZValue(max + 1);
updateDimension(l[0]);
}
void TitleWidget::slotZIndexDown()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::slotZIndexDown()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
qreal currentZ = l[0]->zValue();
qreal min = zIndexBounds(false, true);
qreal currentZ = l[0]->zValue();
qreal min = zIndexBounds(false, true);
l[0]->setZValue(currentZ - 1);
updateDimension(l[0]);
}
l[0]->setZValue(currentZ - 1);
updateDimension(l[0]);
}
void TitleWidget::slotZIndexBottom()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
void TitleWidget::slotZIndexBottom()
{
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
qreal currentZ = l[0]->zValue();
qreal min = zIndexBounds(false, false);
qreal currentZ = l[0]->zValue();
qreal min = zIndexBounds(false, false);
l[0]->setZValue(min - 1);
updateDimension(l[0]);
}
l[0]->setZValue(min - 1);
updateDimension(l[0]);
}
/** @brief Returns clip out position. */
int outPoint() const;
/** @brief Returns clip out position. */
int outPoint() const;
- /** @brief Loads title templates. */
+ /** @brief Retrieves a list of all available title templates. */
static void refreshTitleTemplates();
protected:
static void refreshTitleTemplates();
protected:
void slotNewRect(QGraphicsRectItem *rect);
void slotChangeBackground();
void slotNewRect(QGraphicsRectItem *rect);
void slotChangeBackground();
- /** @brief Sets up the tools according to the selected item. */
+ /** @brief Sets up the tools (toolbars etc.) according to the selected item. */
void selectionChanged();
void rectChanged();
void setupViewports();
void selectionChanged();
void rectChanged();
void setupViewports();
void slotAdjustZoom();
void slotZoomOneToOne();
void slotAdjustZoom();
void slotZoomOneToOne();
+ /** Called whenever text properties change (font e.g.) */
void slotUpdateText();
void slotInsertUnicode();
void slotInsertUnicodeString(QString);
void slotUpdateText();
void slotInsertUnicode();
void slotInsertUnicodeString(QString);
void slotZIndexDown();
void slotZIndexTop();
void slotZIndexBottom();
void slotZIndexDown();
void slotZIndexTop();
void slotZIndexBottom();
+ /** Called when the user wants to apply a different template to the title */
void templateIndexChanged(int);
};
void templateIndexChanged(int);
};
- <width>986</width>
- <height>621</height>
+ <width>1100</width>
+ <height>679</height>
</rect>
</property>
<property name="sizePolicy">
</rect>
</property>
<property name="sizePolicy">
<string>Title Clip</string>
</property>
<layout class="QGridLayout" name="gridLayout_9">
<string>Title Clip</string>
</property>
<layout class="QGridLayout" name="gridLayout_9">
- <item row="0" column="0" colspan="5">
+ <item row="0" column="0" colspan="7">
<widget class="QFrame" name="frame_toolbar">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<widget class="QFrame" name="frame_toolbar">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
</property>
</widget>
</item>
</property>
</widget>
</item>
- <item row="0" column="5" colspan="6">
+ <item row="0" column="7" colspan="7">
<widget class="QFrame" name="frame_properties">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<widget class="QFrame" name="frame_properties">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
</layout>
</widget>
</item>
</layout>
</widget>
</item>
- <item row="2" column="0" colspan="10">
+ <item row="2" column="0" colspan="13">
<widget class="QSplitter" name="splitter">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
<widget class="QSplitter" name="splitter">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
</property>
</widget>
</item>
</property>
</widget>
</item>
- <item row="3" column="2">
+ <item row="3" column="3">
<widget class="QSlider" name="zoom_slider">
<property name="minimumSize">
<size>
<widget class="QSlider" name="zoom_slider">
<property name="minimumSize">
<size>
</property>
</widget>
</item>
</property>
</widget>
</item>
- <item row="3" column="3">
+ <item row="3" column="4">
<widget class="QLabel" name="zoom_label">
<property name="text">
<string>x1</string>
</property>
</widget>
</item>
<widget class="QLabel" name="zoom_label">
<property name="text">
<string>x1</string>
</property>
</widget>
</item>
- <item row="3" column="4" colspan="2">
+ <item row="3" column="6" colspan="2">
<widget class="QCheckBox" name="displayBg">
<property name="text">
<string>Show background</string>
</property>
</widget>
</item>
<widget class="QCheckBox" name="displayBg">
<property name="text">
<string>Show background</string>
</property>
</widget>
</item>
- <item row="1" column="0" colspan="11">
+ <item row="1" column="0" colspan="14">
<widget class="QStackedWidget" name="toolbar_stack">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<widget class="QStackedWidget" name="toolbar_stack">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
</widget>
</widget>
</item>
</widget>
</widget>
</item>
- <item row="3" column="8">
+ <item row="3" column="11">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
</property>
</widget>
</item>
- <item row="3" column="7">
+ <item row="3" column="10">
<widget class="QComboBox" name="templateBox"/>
</item>
<widget class="QComboBox" name="templateBox"/>
</item>
- <item row="3" column="6">
+ <item row="3" column="9">
<widget class="QLabel" name="label_22">
<property name="text">
<string>Template:</string>
</property>
</widget>
</item>
<widget class="QLabel" name="label_22">
<property name="text">
<string>Template:</string>
</property>
</widget>
</item>
+ <item row="3" column="8">
+ <widget class="Line" name="line_6">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="5">
+ <widget class="Line" name="line_7">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <widget class="Line" name="line_8">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
<customwidgets>
</layout>
</widget>
<customwidgets>