summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
4977049)
http://www.kdenlive.org:80/mantis/view.php?id=1164
svn path=/trunk/kdenlive/; revision=3929
{
setWindowTitle(i18n("DVD Wizard"));
//setPixmap(QWizard::WatermarkPixmap, QPixmap(KStandardDirs::locate("appdata", "banner.png")));
{
setWindowTitle(i18n("DVD Wizard"));
//setPixmap(QWizard::WatermarkPixmap, QPixmap(KStandardDirs::locate("appdata", "banner.png")));
- setAttribute(Qt::WA_DeleteOnClose);
m_pageVob = new DvdWizardVob(profile, this);
m_pageVob->setTitle(i18n("Select Files For Your DVD"));
addPage(m_pageVob);
m_pageVob = new DvdWizardVob(profile, this);
m_pageVob->setTitle(i18n("Select Files For Your DVD"));
addPage(m_pageVob);
connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(slotPageChanged(int)));
connect(m_status.button_start, SIGNAL(clicked()), this, SLOT(slotGenerate()));
connect(m_status.button_abort, SIGNAL(clicked()), this, SLOT(slotAbort()));
connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(slotPageChanged(int)));
connect(m_status.button_start, SIGNAL(clicked()), this, SLOT(slotGenerate()));
connect(m_status.button_abort, SIGNAL(clicked()), this, SLOT(slotAbort()));
DvdWizard::~DvdWizard()
{
// m_menuFile.remove();
DvdWizard::~DvdWizard()
{
// m_menuFile.remove();
delete m_burnMenu;
if (m_dvdauthor) {
m_dvdauthor->blockSignals(true);
delete m_burnMenu;
if (m_dvdauthor) {
m_dvdauthor->blockSignals(true);
//kDebug() << "// PAGE CHGD: " << page << ", ID: " << visitedPages();
if (page == 0) {
// Update chapters that were modified in page 1
//kDebug() << "// PAGE CHGD: " << page << ", ID: " << visitedPages();
if (page == 0) {
// Update chapters that were modified in page 1
+ m_pageChapters->stopMonitor();
m_pageVob->updateChapters(m_pageChapters->chaptersData());
} else if (page == 1) {
m_pageVob->updateChapters(m_pageChapters->chaptersData());
} else if (page == 1) {
- m_pageChapters->setVobFiles(m_pageVob->isPal(), m_pageVob->selectedUrls(), m_pageVob->durations(), m_pageVob->chapters());
+ m_pageChapters->setVobFiles(m_pageVob->isPal(), m_pageVob->isWide(), m_pageVob->selectedUrls(), m_pageVob->durations(), m_pageVob->chapters());
+ m_pageChapters->stopMonitor();
m_pageMenu->setTargets(m_pageChapters->selectedTitles(), m_pageChapters->selectedTargets());
m_pageMenu->changeProfile(m_pageVob->isPal());
}
m_pageMenu->setTargets(m_pageChapters->selectedTitles(), m_pageChapters->selectedTargets());
m_pageMenu->changeProfile(m_pageVob->isPal());
}
KUrl url = KFileDialog::getSaveUrl(KUrl("kfiledialog:///projectfolder"), "*.kdvd", this, i18n("Save DVD Project"));
if (url.isEmpty()) return;
KUrl url = KFileDialog::getSaveUrl(KUrl("kfiledialog:///projectfolder"), "*.kdvd", this, i18n("Save DVD Project"));
if (url.isEmpty()) return;
- if (currentId() == 0) m_pageChapters->setVobFiles(m_pageVob->isPal(), m_pageVob->selectedUrls(), m_pageVob->durations(), m_pageVob->chapters());
+ if (currentId() == 0) m_pageChapters->setVobFiles(m_pageVob->isPal(), m_pageVob->isWide(), m_pageVob->selectedUrls(), m_pageVob->durations(), m_pageVob->chapters());
QDomDocument doc;
QDomElement dvdproject = doc.createElement("dvdproject");
QDomDocument doc;
QDomElement dvdproject = doc.createElement("dvdproject");
DvdWizardChapters::DvdWizardChapters(bool isPal, QWidget *parent) :
QWizardPage(parent),
DvdWizardChapters::DvdWizardChapters(bool isPal, QWidget *parent) :
QWizardPage(parent),
+ m_isPal(isPal),
+ m_monitor(NULL)
m_manager = new MonitorManager(this);
m_manager->resetProfiles(m_tc);
m_manager = new MonitorManager(this);
m_manager->resetProfiles(m_tc);
- m_monitor = new Monitor("chapter", m_manager, this);
- m_monitor->start();
-
- QVBoxLayout *vbox = new QVBoxLayout;
- vbox->addWidget(m_monitor);
- m_view.monitor_frame->setLayout(vbox);
-
-
+ //m_view.monitor_frame->setVisible(false);
}
DvdWizardChapters::~DvdWizardChapters()
{
}
DvdWizardChapters::~DvdWizardChapters()
{
+ if (m_monitor) {
+ m_monitor->stop();
+ delete m_monitor;
+ }
+void DvdWizardChapters::stopMonitor()
+{
+ if (m_monitor) m_monitor->stop();
+}
+
void DvdWizardChapters::slotUpdateChaptersList()
{
m_monitor->slotOpenFile(m_view.vob_list->currentText());
void DvdWizardChapters::slotUpdateChaptersList()
{
m_monitor->slotOpenFile(m_view.vob_list->currentText());
m_monitor->setTimePos(m_view.chapters_list->currentItem()->text() + ":00");
}
m_monitor->setTimePos(m_view.chapters_list->currentItem()->text() + ":00");
}
-void DvdWizardChapters::setVobFiles(bool isPal, const QStringList movies, const QStringList durations, const QStringList chapters)
+void DvdWizardChapters::setVobFiles(bool isPal, bool isWide, const QStringList movies, const QStringList durations, const QStringList chapters)
- if (m_isPal) m_tc.setFormat(25);
- else m_tc.setFormat(30000.0 / 1001, true);
+ QString profile;
+ if (m_isPal) {
+ m_tc.setFormat(25);
+ profile = "dv_pal";
+ } else {
+ m_tc.setFormat(30000.0 / 1001, true);
+ profile = "dv_ntsc";
+ }
+ if (isWide) profile.append("_wide");
m_manager->resetProfiles(m_tc);
m_manager->resetProfiles(m_tc);
- m_monitor->resetProfile();
+
+ if (m_monitor == NULL) {
+
+ m_monitor = new Monitor("chapter", m_manager, profile, this);
+ m_monitor->start();
+ QVBoxLayout *vbox = new QVBoxLayout;
+ vbox->addWidget(m_monitor);
+ m_view.monitor_frame->setLayout(vbox);
+ /*updateGeometry();
+ adjustSize();*/
+ } else m_monitor->resetProfile(profile);
m_view.vob_list->clear();
for (int i = 0; i < movies.count(); i++) {
m_view.vob_list->clear();
for (int i = 0; i < movies.count(); i++) {
virtual bool isComplete() const;
void changeProfile(bool isPal);
void setPal(bool isPal);
virtual bool isComplete() const;
void changeProfile(bool isPal);
void setPal(bool isPal);
- void setVobFiles(bool isPal, const QStringList movies, const QStringList durations, const QStringList chapters);
+ void setVobFiles(bool isPal, bool isWide, const QStringList movies, const QStringList durations, const QStringList chapters);
QStringList selectedTitles() const;
QStringList selectedTargets() const;
QStringList chapters(int ix) const;
QDomElement toXml() const;
QMap <QString, QString> chaptersData() const;
QStringList selectedTitles() const;
QStringList selectedTargets() const;
QStringList chapters(int ix) const;
QDomElement toXml() const;
QMap <QString, QString> chaptersData() const;
private:
Ui::DvdWizardChapters_UI m_view;
private:
Ui::DvdWizardChapters_UI m_view;
int KdenliveDoc::setSceneList()
{
int KdenliveDoc::setSceneList()
{
- m_render->resetProfile();
+ m_render->resetProfile(KdenliveSettings::current_profile());
if (m_render->setSceneList(m_document.toString(), m_documentProperties.value("position").toInt()) == -1) {
// INVALID MLT Consumer, something is wrong
return -1;
if (m_render->setSceneList(m_document.toString(), m_documentProperties.value("position").toInt()) == -1) {
// INVALID MLT Consumer, something is wrong
return -1;
m_clipMonitorDock = new QDockWidget(i18n("Clip Monitor"), this);
m_clipMonitorDock->setObjectName("clip_monitor");
m_clipMonitorDock = new QDockWidget(i18n("Clip Monitor"), this);
m_clipMonitorDock->setObjectName("clip_monitor");
- m_clipMonitor = new Monitor("clip", m_monitorManager, this);
+ m_clipMonitor = new Monitor("clip", m_monitorManager, QString(), this);
m_clipMonitorDock->setWidget(m_clipMonitor);
addDockWidget(Qt::TopDockWidgetArea, m_clipMonitorDock);
//m_clipMonitor->stop();
m_projectMonitorDock = new QDockWidget(i18n("Project Monitor"), this);
m_projectMonitorDock->setObjectName("project_monitor");
m_clipMonitorDock->setWidget(m_clipMonitor);
addDockWidget(Qt::TopDockWidgetArea, m_clipMonitorDock);
//m_clipMonitor->stop();
m_projectMonitorDock = new QDockWidget(i18n("Project Monitor"), this);
m_projectMonitorDock->setObjectName("project_monitor");
- m_projectMonitor = new Monitor("project", m_monitorManager, this);
+ m_projectMonitor = new Monitor("project", m_monitorManager, QString(), this);
m_projectMonitorDock->setWidget(m_projectMonitor);
addDockWidget(Qt::TopDockWidgetArea, m_projectMonitorDock);
m_projectMonitorDock->setWidget(m_projectMonitor);
addDockWidget(Qt::TopDockWidgetArea, m_projectMonitorDock);
void MainWindow::slotDvdWizard(const QString &url, const QString &profile)
{
void MainWindow::slotDvdWizard(const QString &url, const QString &profile)
{
- DvdWizard *w = new DvdWizard(url, profile, this);
- w->exec();
+ DvdWizard w(url, profile, this);
+ w.exec();
}
void MainWindow::slotShowTimeline(bool show)
}
void MainWindow::slotShowTimeline(bool show)
-Monitor::Monitor(QString name, MonitorManager *manager, QWidget *parent) :
+Monitor::Monitor(QString name, MonitorManager *manager, QString profile, QWidget *parent) :
QWidget(parent),
render(NULL),
m_name(name),
QWidget(parent),
render(NULL),
m_name(name),
//m_ruler->setPixelPerMark(3);
//m_ruler->setPixelPerMark(3);
+ if (profile.isEmpty()) profile = KdenliveSettings::current_profile();
+
QVBoxLayout *rendererBox = new QVBoxLayout(m_ui.video_frame);
rendererBox->setContentsMargins(0, 0, 0, 0);
#ifdef Q_WS_MAC
m_glWidget = new VideoGLWidget(m_ui.video_frame);
rendererBox->addWidget(m_glWidget);
QVBoxLayout *rendererBox = new QVBoxLayout(m_ui.video_frame);
rendererBox->setContentsMargins(0, 0, 0, 0);
#ifdef Q_WS_MAC
m_glWidget = new VideoGLWidget(m_ui.video_frame);
rendererBox->addWidget(m_glWidget);
- render = new Render(m_name, (int) m_ui.video_frame->winId(), -1, this);
+ render = new Render(m_name, (int) m_ui.video_frame->winId(), -1, profile, this);
m_glWidget->setImageAspectRatio(render->dar());
m_glWidget->setBackgroundColor(KdenliveSettings::window_background());
m_glWidget->resize(m_ui.video_frame->size());
m_glWidget->setImageAspectRatio(render->dar());
m_glWidget->setBackgroundColor(KdenliveSettings::window_background());
m_glWidget->resize(m_ui.video_frame->size());
#else
m_monitorRefresh = new MonitorRefresh(m_ui.video_frame);
rendererBox->addWidget(m_monitorRefresh);
#else
m_monitorRefresh = new MonitorRefresh(m_ui.video_frame);
rendererBox->addWidget(m_monitorRefresh);
- render = new Render(m_name, (int) m_monitorRefresh->winId(), -1, this);
+ render = new Render(m_name, (int) m_monitorRefresh->winId(), -1, profile, this);
m_monitorRefresh->setRenderer(render);
#endif
m_monitorRefresh->setRenderer(render);
#endif
-void Monitor::resetProfile()
+void Monitor::resetProfile(const QString profile)
{
if (render == NULL) return;
{
if (render == NULL) return;
- render->resetProfile();
+ render->resetProfile(profile);
}
void Monitor::saveSceneList(QString path, QDomElement info)
}
void Monitor::saveSceneList(QString path, QDomElement info)
- Monitor(QString name, MonitorManager *manager, QWidget *parent = 0);
+ Monitor(QString name, MonitorManager *manager, QString profile = QString(), QWidget *parent = 0);
virtual ~Monitor();
Render *render;
virtual ~Monitor();
Render *render;
+ void resetProfile(const QString profile);
QString name() const;
void resetSize();
bool isActive() const;
QString name() const;
void resetSize();
bool isActive() const;
void MonitorManager::activateMonitor(QString name)
{
void MonitorManager::activateMonitor(QString name)
{
+ if (m_blocked || m_clipMonitor == NULL) return;
if (m_activeMonitor == name) return;
if (name == "clip") {
m_projectMonitor->stop();
if (m_activeMonitor == name) return;
if (name == "clip") {
m_projectMonitor->stop();
void MonitorManager::switchMonitors()
{
void MonitorManager::switchMonitors()
{
+ if (m_blocked || m_clipMonitor == NULL) return;
if (m_clipMonitor->isActive()) {
m_clipMonitor->stop();
m_projectMonitor->start();
if (m_clipMonitor->isActive()) {
m_clipMonitor->stop();
m_projectMonitor->start();
if (m_blocked) return;
if (m_projectMonitor == NULL || m_clipMonitor == NULL) return;
activateMonitor("clip");
if (m_blocked) return;
if (m_projectMonitor == NULL || m_clipMonitor == NULL) return;
activateMonitor("clip");
- m_clipMonitor->resetProfile();
+ m_clipMonitor->resetProfile(KdenliveSettings::current_profile());
activateMonitor("project");
activateMonitor("project");
- m_projectMonitor->resetProfile();
+ m_projectMonitor->resetProfile(KdenliveSettings::current_profile());
//m_projectMonitor->refreshMonitor(true);
}
//m_projectMonitor->refreshMonitor(true);
}
-Render::Render(const QString & rendererName, int winid, int /* extid */, QWidget *parent) :
+Render::Render(const QString & rendererName, int winid, int /* extid */, QString profile, QWidget *parent) :
QObject(parent),
m_isBlocked(0),
m_name(rendererName),
QObject(parent),
m_isBlocked(0),
m_name(rendererName),
- kDebug() << "////////// USING PROFILE: " << (char*)KdenliveSettings::current_profile().toUtf8().data();
-
/*if (rendererName == "project") m_monitorId = 10000;
else m_monitorId = 10001;*/
/*m_osdTimer = new QTimer(this);
connect(m_osdTimer, SIGNAL(timeout()), this, SLOT(slotOsdTimeout()));*/
/*if (rendererName == "project") m_monitorId = 10000;
else m_monitorId = 10001;*/
/*m_osdTimer = new QTimer(this);
connect(m_osdTimer, SIGNAL(timeout()), this, SLOT(slotOsdTimeout()));*/
+ if (profile.isEmpty()) profile = KdenliveSettings::current_profile();
+ buildConsumer(profile);
m_mltProducer = m_blackClip->cut(0, 50);
m_mltConsumer->connect(*m_mltProducer);
m_mltProducer = m_blackClip->cut(0, 50);
m_mltConsumer->connect(*m_mltProducer);
-void Render::buildConsumer()
+void Render::buildConsumer(const QString profileName)
- m_activeProfile = KdenliveSettings::current_profile();
+ m_activeProfile = profileName;
tmp = decodedString(m_activeProfile);
setenv("MLT_PROFILE", tmp, 1);
delete m_blackClip;
tmp = decodedString(m_activeProfile);
setenv("MLT_PROFILE", tmp, 1);
delete m_blackClip;
-int Render::resetProfile()
+int Render::resetProfile(const QString profileName)
{
if (!m_mltConsumer) return 0;
{
if (!m_mltConsumer) return 0;
- if (m_activeProfile == KdenliveSettings::current_profile()) {
+ if (m_activeProfile == profileName) {
kDebug() << "reset to same profile, nothing to do";
return 1;
}
kDebug() << "reset to same profile, nothing to do";
return 1;
}
- kDebug() << "// RESETTING PROFILE FROM: " << m_activeProfile << " TO: " << KdenliveSettings::current_profile();
+ kDebug() << "// RESETTING PROFILE FROM: " << m_activeProfile << " TO: " << profileName; //KdenliveSettings::current_profile();
if (m_isSplitView) slotSplitView(false);
if (!m_mltConsumer->is_stopped()) m_mltConsumer->stop();
m_mltConsumer->purge();
if (m_isSplitView) slotSplitView(false);
if (!m_mltConsumer->is_stopped()) m_mltConsumer->stop();
m_mltConsumer->purge();
+ buildConsumer(profileName);
double new_fps = m_mltProfile->fps();
if (current_fps != new_fps) {
// fps changed, we must update the scenelist positions
double new_fps = m_mltProfile->fps();
if (current_fps != new_fps) {
// fps changed, we must update the scenelist positions
- Render(const QString & rendererName, int winid, int extid, QWidget *parent = 0);
+ Render(const QString & rendererName, int winid, int extid, QString profile = QString(), QWidget *parent = 0);
~Render();
/** Seeks the renderer clip to the given time. */
~Render();
/** Seeks the renderer clip to the given time. */
/** Turn on or off on screen display */
void refreshDisplay();
/** Turn on or off on screen display */
void refreshDisplay();
+ int resetProfile(const QString profileName);
double fps() const;
int renderWidth() const;
int renderHeight() const;
double fps() const;
int renderWidth() const;
int renderHeight() const;
void mltPasteEffects(Mlt::Producer *source, Mlt::Producer *dest);
QMap<QString, QString> mltGetTransitionParamsFromXml(QDomElement xml);
QMap<QString, Mlt::Producer *> m_slowmotionProducers;
void mltPasteEffects(Mlt::Producer *source, Mlt::Producer *dest);
QMap<QString, QString> mltGetTransitionParamsFromXml(QDomElement xml);
QMap<QString, Mlt::Producer *> m_slowmotionProducers;
+ void buildConsumer(const QString profileName);
void resetZoneMode();
void fillSlowMotionProducers();
void resetZoneMode();
void fillSlowMotionProducers();
</property>
</spacer>
</item>
</property>
</spacer>
</item>
- <item row="0" column="0" colspan="5">
- <widget class="QGroupBox" name="monitor_frame">
- <property name="title">
- <string/>
+ <item row="0" column="0" colspan="4">
+ <widget class="QFrame" name="monitor_frame">
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
</property>
</widget>
</item>
</property>
</widget>
</item>