layoutActions->addAction("save_layout" + QString::number(i), save);
}
+ KAction *action;
+ // Stop motion actions. Beware of the order, we MUST use the same order in stopmotion/stopmotion.cpp
+ m_stopmotion_actions = new KActionCategory(i18n("Stop Motion"), actionCollection());
+ action = new KAction(KIcon("media-record"), i18n("Capture frame"), this);
+ action->setShortcut(Qt::Key_Space);
+ //action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+ m_stopmotion_actions->addAction("stopmotion_capture", action);
+ action = new KAction(i18n("Switch live / captured frame"), this);
+ //action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+ m_stopmotion_actions->addAction("stopmotion_switch", action);
+ action = new KAction(KIcon("edit-paste"), i18n("Show last frame over video"), this);
+ action->setCheckable(true);
+ action->setChecked(false);
+ m_stopmotion_actions->addAction("stopmotion_overlay", action);
setupGUI();
static_cast<QMenu*>(factory()->container("transcoders", this)),
clipInTimeline);
- KAction *action;
// build themes menus
QMenu *themesMenu = static_cast<QMenu*>(factory()->container("themes_menu", this));
QActionGroup *themegroup = new QActionGroup(this);
m_monitorManager->initMonitors(m_clipMonitor, m_projectMonitor);
slotConnectMonitors();
- // Disable drop B frames, see Kdenlive issue #1330, see also kdenlivesettingsdialog.cpp
- KdenliveSettings::setDropbframes(false);
-
// Open or create a file. Command line argument passed in Url has
// precedence, then "openlastproject", then just a plain empty file.
// If opening Url fails, openlastproject will _not_ be used.
MainWindow::~MainWindow()
{
+ if (m_stopmotion) {
+ delete m_stopmotion;
+ }
m_effectStack->slotClipItemSelected(NULL, 0);
m_transitionConfig->slotTransitionItemSelected(NULL, 0, QPoint(), false);
void MainWindow::queryQuit()
{
if (queryClose()) {
- kapp->quit();
+ close();
}
}
connect(reloadClip , SIGNAL(triggered()), m_projectList, SLOT(slotReloadClip()));
reloadClip->setEnabled(false);
- QAction *stopMotion = new KAction(KIcon("image-x-generic"), i18n("Stopmotion Animation"), this);
+ QAction *stopMotion = new KAction(KIcon("image-x-generic"), i18n("Stop Motion Capture"), this);
collection->addAction("stopmotion", stopMotion);
connect(stopMotion , SIGNAL(triggered()), this, SLOT(slotOpenStopmotion()));
{
QString currentSceneList;
m_monitorManager->stopActiveMonitor();
- if (KdenliveSettings::dropbframes()) {
- KdenliveSettings::setDropbframes(false);
- m_activeDocument->clipManager()->updatePreviewSettings();
- currentSceneList = m_projectMonitor->sceneList();
- KdenliveSettings::setDropbframes(true);
- m_activeDocument->clipManager()->updatePreviewSettings();
- } else currentSceneList = m_projectMonitor->sceneList();
-
- if (m_activeDocument->saveSceneList(outputFileName, currentSceneList) == false)
+
+ if (m_activeDocument->saveSceneList(outputFileName, m_projectMonitor->sceneList()) == false)
return false;
// Save timeline thumbnails
// Recreate stopmotion widget on document change
if (m_stopmotion) {
- delete m_stopmotion;
- m_stopmotion = NULL;
+ delete m_stopmotion;
+ m_stopmotion = NULL;
}
KProgressDialog progressDialog(this, i18n("Loading project"), i18n("Loading project"));
// Recreate the stopmotion widget if profile changes
if (m_stopmotion) {
- delete m_stopmotion;
- m_stopmotion = NULL;
+ delete m_stopmotion;
+ m_stopmotion = NULL;
}
// Deselect current effect / transition
#ifndef Q_WS_MAC
m_recMonitor->slotUpdateCaptureFolder(m_activeDocument->projectFolder().path(KUrl::AddTrailingSlash));
#endif
- if (KdenliveSettings::dropbframes()) slotUpdatePreviewSettings();
//Update the mouse position display so it will display in DF/NDF format by default based on the project setting.
slotUpdateMousePosition(0);
// set tool to select tool
* cached, in which case you want to display the cached dialog
* instead of creating another one
*/
+ if (m_stopmotion) m_stopmotion->slotLive(false);
if (KConfigDialog::showDialog("settings")) {
KdenliveSettingsDialog* d = static_cast <KdenliveSettingsDialog*>(KConfigDialog::exists("settings"));
if (page != -1) d->showPage(page, option);
connect(dialog, SIGNAL(settingsChanged(const QString&)), this, SLOT(updateConfiguration()));
//connect(dialog, SIGNAL(doResetProfile()), this, SLOT(slotDetectAudioDriver()));
connect(dialog, SIGNAL(doResetProfile()), m_monitorManager, SLOT(slotResetProfiles()));
- connect(dialog, SIGNAL(updatePreviewSettings()), this, SLOT(slotUpdatePreviewSettings()));
#ifndef Q_WS_MAC
connect(dialog, SIGNAL(updateCaptureFolder()), this, SLOT(slotUpdateCaptureFolder()));
#endif
- //connect(dialog, SIGNAL(updatePreviewSettings()), this, SLOT(slotUpdatePreviewSettings()));
dialog->show();
if (page != -1) dialog->showPage(page, option);
}
#endif
}
-void MainWindow::slotUpdatePreviewSettings()
-{
- if (m_activeDocument) {
- m_clipMonitor->slotSetXml(NULL);
- m_activeDocument->updatePreviewSettings();
- }
-}
-
void MainWindow::updateConfiguration()
{
//TODO: we should apply settings to all projects, not only the current one
void MainWindow::slotOpenStopmotion()
{
if (m_stopmotion == NULL) {
- m_stopmotion = new StopmotionWidget(m_activeDocument->projectFolder(), this);
+ m_stopmotion = new StopmotionWidget(m_activeDocument->projectFolder(), m_stopmotion_actions->actions(), this);
connect(m_stopmotion, SIGNAL(addOrUpdateSequence(const QString)), m_projectList, SLOT(slotAddOrUpdateSequence(const QString)));
}
m_stopmotion->show();
}
-
void MainWindow::slotDeleteClip(const QString &id)
{
QList <ClipProperties *> list = findChildren<ClipProperties *>();