// precedence, then "openlastproject", then just a plain empty file.
// If opening Url fails, openlastproject will _not_ be used.
if (!Url.isEmpty()) {
- openFile(Url);
- } else {
- if (KdenliveSettings::openlastproject()) {
- openLastFile();
- }
- }
- if (m_timelineArea->count() == 0) {
+ // delay loading so that the window shows up
+ m_startUrl = Url;
+ QTimer::singleShot(500, this, SLOT(openFile()));
+ } else if (KdenliveSettings::openlastproject()) {
+ QTimer::singleShot(500, this, SLOT(openLastFile()));
+ } else { //if (m_timelineArea->count() == 0) {
newFile(false);
}
void MainWindow::openFile()
{
+ if (!m_startUrl.isEmpty()) {
+ openFile(m_startUrl);
+ m_startUrl = KUrl();
+ return;
+ }
// Check that the Kdenlive mime type is correctly installed
QString mimetype = "application/x-kdenlive";
KMimeType::Ptr mime = KMimeType::mimeType(mimetype);
}
}
if (!KdenliveSettings::activatetabs()) closeCurrentDocument();
+ m_messageLabel->setMessage(i18n("Opening file %1", url.path()), InformationMessage);
+ qApp->processEvents();
doOpenFile(url, NULL);
}
disconnect(m_activeTimeline->projectView(), SIGNAL(activateDocumentMonitor()), m_projectMonitor, SLOT(activateMonitor()));
disconnect(m_activeTimeline, SIGNAL(zoneMoved(int, int)), this, SLOT(slotZoneMoved(int, int)));
disconnect(m_projectList, SIGNAL(loadingIsOver()), m_activeTimeline->projectView(), SLOT(slotUpdateAllThumbs()));
- disconnect(m_projectList, SIGNAL(displayMessage(const QString&, MessageType)), m_messageLabel, SLOT(setMessage(const QString&, MessageType)));
+ disconnect(m_projectList, SIGNAL(displayMessage(const QString&, int)), this, SLOT(slotGotProgressInfo(const QString&, int)));
m_effectStack->clear();
}
//m_activeDocument->setRenderer(NULL);
connect(trackView->projectView(), SIGNAL(activateDocumentMonitor()), m_projectMonitor, SLOT(activateMonitor()));
connect(trackView, SIGNAL(zoneMoved(int, int)), this, SLOT(slotZoneMoved(int, int)));
connect(m_projectList, SIGNAL(loadingIsOver()), trackView->projectView(), SLOT(slotUpdateAllThumbs()));
- connect(m_projectList, SIGNAL(displayMessage(const QString&, MessageType)), m_messageLabel, SLOT(setMessage(const QString&, MessageType)));
+ connect(m_projectList, SIGNAL(displayMessage(const QString&, int)), this, SLOT(slotGotProgressInfo(const QString&, int)));
trackView->projectView()->setContextMenu(m_timelineContextMenu, m_timelineContextClipMenu, m_timelineContextTransitionMenu, m_clipTypeGroup);
m_saveAction->setEnabled(doc->isModified());
m_activeDocument = doc;
m_activeTimeline->updateProjectFps();
- m_projectList->updateAllClips();
+ m_activeDocument->checkProjectClips();
if (KdenliveSettings::dropbframes()) slotUpdatePreviewSettings();
// set tool to select tool
if (dia_ui->exec() == QDialog::Accepted) {
QMap <QString, QString> newprops;
newprops.insert("xmldata", dia_ui->xml().toString());
- newprops.insert("out", QString::number(dia_ui->duration()));
+ if (dia_ui->duration() != clip->duration().frames(m_activeDocument->fps()) - 1) {
+ // duration changed, we need to update duration
+ newprops.insert("out", QString::number(dia_ui->duration()));
+ }
EditClipCommand *command = new EditClipCommand(m_projectList, clip->getId(), clip->properties(), newprops, true);
m_activeDocument->commandStack()->push(command);
m_activeTimeline->projectView()->slotUpdateClip(clip->getId());
{
if (m_activeDocument && m_activeTimeline) {
//m_activeDocument->setTool(tool);
+ QString message;
+ switch (tool) {
+ case SPACERTOOL:
+ message = i18n("Ctrl + click to use spacer on current track only");
+ break;
+ case RAZORTOOL:
+ message = i18n("Click on a clip to cut it");
+ break;
+ default:
+ message = i18n("Shift + click to create a selection rectangle, Ctrl + click to add an item to selection");
+ break;
+ }
+ m_messageLabel->setMessage(message, InformationMessage);
m_activeTimeline->projectView()->setTool(tool);
}
}