From 1f5c19bcf720efb573fd7320a149fe6c17cf4fd7 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sun, 30 Dec 2012 23:54:17 +0100 Subject: [PATCH] Fix Dvd wizard monitor layout and loading issues --- src/dvdwizard.cpp | 4 +- src/dvdwizard.h | 2 +- src/dvdwizardchapters.cpp | 21 +++--- src/dvdwizardchapters.h | 4 +- src/mainwindow.cpp | 6 +- src/monitor.cpp | 9 +-- src/renderer.cpp | 6 ++ src/renderer.h | 3 + src/widgets/dvdwizardchapters_ui.ui | 107 +++++++++++++--------------- 9 files changed, 79 insertions(+), 83 deletions(-) diff --git a/src/dvdwizard.cpp b/src/dvdwizard.cpp index a5421b38..6af065e5 100644 --- a/src/dvdwizard.cpp +++ b/src/dvdwizard.cpp @@ -40,7 +40,7 @@ #include -DvdWizard::DvdWizard(const QString &url, QWidget *parent) : +DvdWizard::DvdWizard(MonitorManager *manager, const QString &url, QWidget *parent) : QWizard(parent), m_dvdauthor(NULL), m_mkiso(NULL), @@ -54,7 +54,7 @@ DvdWizard::DvdWizard(const QString &url, QWidget *parent) : if (!url.isEmpty()) m_pageVob->setUrl(url); - m_pageChapters = new DvdWizardChapters(m_pageVob->dvdFormat(), this); + m_pageChapters = new DvdWizardChapters(manager, m_pageVob->dvdFormat(), this); m_pageChapters->setTitle(i18n("DVD Chapters")); addPage(m_pageChapters); diff --git a/src/dvdwizard.h b/src/dvdwizard.h index 8ec8a6f2..b1f2e25b 100644 --- a/src/dvdwizard.h +++ b/src/dvdwizard.h @@ -41,7 +41,7 @@ class DvdWizard : public QWizard { Q_OBJECT public: - explicit DvdWizard(const QString &url = QString(), QWidget * parent = 0); + explicit DvdWizard(MonitorManager *manager, const QString &url = QString(), QWidget * parent = 0); virtual ~DvdWizard(); void processSpumux(); diff --git a/src/dvdwizardchapters.cpp b/src/dvdwizardchapters.cpp index ebd9d38e..12dee110 100644 --- a/src/dvdwizardchapters.cpp +++ b/src/dvdwizardchapters.cpp @@ -23,10 +23,11 @@ #include -DvdWizardChapters::DvdWizardChapters(DVDFORMAT format, QWidget *parent) : +DvdWizardChapters::DvdWizardChapters(MonitorManager *manager, DVDFORMAT format, QWidget *parent) : QWizardPage(parent), m_format(format), - m_monitor(NULL) + m_monitor(NULL), + m_manager(manager) { m_view.setupUi(this); @@ -39,9 +40,9 @@ DvdWizardChapters::DvdWizardChapters(DVDFORMAT format, QWidget *parent) : if (m_format == PAL || m_format == PAL_WIDE) m_tc.setFormat(25); else m_tc.setFormat(30000.0 / 1001); + show(); + setVobFiles(format, QStringList(), QStringList(), QStringList()); - m_manager = new MonitorManager(this); - m_manager->resetProfiles(m_tc); //m_view.monitor_frame->setVisible(false); } @@ -51,7 +52,6 @@ DvdWizardChapters::~DvdWizardChapters() m_monitor->stop(); delete m_monitor; } - delete m_manager; } // virtual @@ -143,16 +143,17 @@ void DvdWizardChapters::setVobFiles(DVDFORMAT format, const QStringList &movies, } else { m_tc.setFormat(30000.0 / 1001); } - m_manager->resetProfiles(m_tc); if (m_monitor == NULL) { m_monitor = new Monitor(Kdenlive::dvdMonitor, m_manager, profile, this); //m_monitor->start(); - QVBoxLayout *vbox = new QVBoxLayout; + /*QVBoxLayout *vbox = new QVBoxLayout; vbox->addWidget(m_monitor); - m_view.monitor_frame->setLayout(vbox); - /*updateGeometry(); - m_view.monitor_frame->adjustSize();*/ + m_view.monitor_frame->setLayout(vbox);*/ + QVBoxLayout *lay = static_cast (layout()); + m_monitor->setSizePolicy(QSizePolicy ( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding)); + lay->insertWidget(0, m_monitor, 10); } else m_monitor->resetProfile(profile); + m_manager->activateMonitor(Kdenlive::dvdMonitor); m_view.vob_list->blockSignals(true); m_view.vob_list->clear(); diff --git a/src/dvdwizardchapters.h b/src/dvdwizardchapters.h index d8afa4e9..245755d9 100644 --- a/src/dvdwizardchapters.h +++ b/src/dvdwizardchapters.h @@ -35,7 +35,7 @@ class DvdWizardChapters : public QWizardPage Q_OBJECT public: - explicit DvdWizardChapters(DVDFORMAT format, QWidget * parent = 0); + explicit DvdWizardChapters(MonitorManager *manager, DVDFORMAT format, QWidget * parent = 0); virtual ~DvdWizardChapters(); virtual bool isComplete() const; void changeProfile(DVDFORMAT format); @@ -51,8 +51,8 @@ public: private: Ui::DvdWizardChapters_UI m_view; DVDFORMAT m_format; - MonitorManager *m_manager; Monitor *m_monitor; + MonitorManager *m_manager; Timecode m_tc; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 88d8fa7f..c41f2ed9 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -3903,11 +3903,9 @@ void MainWindow::slotUpdateClipType(QAction *action) void MainWindow::slotDvdWizard(const QString &url) { // We must stop the monitors since we create a new on in the dvd wizard - m_clipMonitor->stop(); - m_projectMonitor->stop(); - QPointer w = new DvdWizard(url, this); + m_monitorManager->activateMonitor(Kdenlive::dvdMonitor); + QPointer w = new DvdWizard(m_monitorManager, url, this); w->exec(); - m_projectMonitor->start(); delete w; } diff --git a/src/monitor.cpp b/src/monitor.cpp index d0f24fcf..aa3076b8 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -893,14 +893,7 @@ void Monitor::slotOpenFile(const QString &file) { if (render == NULL) return; slotActivateMonitor(); - QDomDocument doc; - QDomElement mlt = doc.createElement("mlt"); - doc.appendChild(mlt); - QDomElement prod = doc.createElement("producer"); - mlt.appendChild(prod); - prod.setAttribute("mlt_service", "avformat"); - prod.setAttribute("resource", file); - render->setSceneList(doc, 0); + render->loadUrl(file); } void Monitor::slotSaveZone() diff --git a/src/renderer.cpp b/src/renderer.cpp index a821dbbf..79873c2b 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -1141,6 +1141,12 @@ void Render::initSceneList() } #endif +void Render::loadUrl(const QString &url) +{ + Mlt::Producer *producer = new Mlt::Producer(*m_mltProfile, url.toUtf8().constData()); + setProducer(producer, 0); +} + int Render::setProducer(Mlt::Producer *producer, int position) { m_refreshTimer.stop(); diff --git a/src/renderer.h b/src/renderer.h index 3d05de8e..28e317c6 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -333,6 +333,9 @@ Q_OBJECT public: int requestedSeekPosition; /** @brief Get current seek pos requested of current producer pos if not seeking */ int getCurrentSeekPosition() const; + /** @brief Create a producer from url and load it in the monitor */ + void loadUrl(const QString &url); + QSemaphore showFrameSemaphore; bool externalConsumer; diff --git a/src/widgets/dvdwizardchapters_ui.ui b/src/widgets/dvdwizardchapters_ui.ui index 52671e21..20234d44 100644 --- a/src/widgets/dvdwizardchapters_ui.ui +++ b/src/widgets/dvdwizardchapters_ui.ui @@ -6,68 +6,32 @@ 0 0 - 254 - 283 + 247 + 182 - + + + -1 + 0 - - - - Movie file - - - - - - - - - - Add chapter - - - - - - - Remove chapter - - + + + + + + Movie file + + + + + + + - - - - Qt::Horizontal - - - - 79 - 22 - - - - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - + @@ -80,6 +44,37 @@ + + + + + + Add chapter + + + + + + + Remove chapter + + + + + + + Qt::Horizontal + + + + 79 + 22 + + + + + + -- 2.39.2