setFrameShape(QFrame::NoFrame);
setFocusPolicy(Qt::ClickFocus);
//setEnabled(false);
- setContentsMargins(0, 0, 0, 0);
+ setContentsMargins(2, 2, 2, 2);
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
}
m_pageVob = new DvdWizardVob(this);
m_pageVob->setTitle(i18n("Select Files For Your DVD"));
addPage(m_pageVob);
- if (!url.isEmpty()) m_pageVob->setUrl(url);
-
m_pageChapters = new DvdWizardChapters(manager, m_pageVob->dvdFormat(), this);
m_pageChapters->setTitle(i18n("DVD Chapters"));
addPage(m_pageChapters);
+
+ if (!url.isEmpty()) m_pageVob->setUrl(url);
+ connect(m_pageVob, SIGNAL(prepareMonitor()), this, SLOT(slotprepareMonitor()));
m_pageVob->updateChapters(m_pageChapters->chaptersData());
} else if (page == 1) {
m_pageChapters->setVobFiles(m_pageVob->dvdFormat(), m_pageVob->selectedUrls(), m_pageVob->durations(), m_pageVob->chapters());
+ setTitleFormat(Qt::PlainText);
} else if (page == 2) {
m_pageChapters->stopMonitor();
m_pageVob->updateChapters(m_pageChapters->chaptersData());
}
}
-
+void DvdWizard::slotprepareMonitor()
+{
+ m_pageChapters->createMonitor(m_pageVob->dvdFormat());
+}
void DvdWizard::generateDvd()
{
void slotShowRenderInfo();
void slotShowIsoInfo();
void slotProcessMenuStatus(int, QProcess::ExitStatus status);
+ void slotprepareMonitor();
};
#endif
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_view.monitor_frame->setVisible(false);
}
DvdWizardChapters::~DvdWizardChapters()
{
if (m_monitor) {
+ m_manager->removeMonitor(m_monitor);
m_monitor->stop();
delete m_monitor;
}
if (m_monitor) m_monitor->stop();
}
+void DvdWizardChapters::refreshMonitor()
+{
+ if (m_monitor) m_monitor->refreshMonitor();
+}
+
void DvdWizardChapters::slotUpdateChaptersList()
{
m_monitor->slotOpenFile(m_view.vob_list->currentText());
if (m_view.chapters_list->currentItem()) m_monitor->setTimePos(m_tc.reformatSeparators(m_view.chapters_list->currentItem()->text()));
}
+void DvdWizardChapters::createMonitor(DVDFORMAT format)
+{
+ QString profile = DvdWizardVob::getDvdProfile(format);
+ if (m_monitor == NULL) {
+ m_monitor = new Monitor(Kdenlive::dvdMonitor, m_manager, profile, this);
+ //m_monitor->start();
+ QVBoxLayout *vbox = new QVBoxLayout;
+ vbox->addWidget(m_monitor);
+ m_view.video_frame->setLayout(vbox);
+ m_monitor->setSizePolicy(QSizePolicy ( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
+ m_manager->appendMonitor(m_monitor);
+ vbox->insertWidget(0, m_monitor, 10);
+ }
+}
+
void DvdWizardChapters::setVobFiles(DVDFORMAT format, const QStringList &movies, const QStringList &durations, const QStringList &chapters)
{
m_format = format;
} else {
m_tc.setFormat(30000.0 / 1001);
}
- if (m_monitor == NULL) {
- m_monitor = new Monitor(Kdenlive::dvdMonitor, m_manager, profile, this);
- //m_monitor->start();
- /*QVBoxLayout *vbox = new QVBoxLayout;
- vbox->addWidget(m_monitor);
- m_view.monitor_frame->setLayout(vbox);*/
- QVBoxLayout *lay = static_cast<QVBoxLayout *> (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);
+
+ if (m_monitor == NULL) createMonitor(format);
+ m_monitor->setCustomProfile(profile, m_tc);
m_view.vob_list->blockSignals(true);
m_view.vob_list->clear();
}
m_view.vob_list->blockSignals(false);
slotUpdateChaptersList();
+ setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
+ adjustSize();
+ updateGeometry();
+ m_manager->activateMonitor(Kdenlive::dvdMonitor);
+ m_monitor->refreshMonitor();
}
QMap <QString, QString> DvdWizardChapters::chaptersData() const
QDomElement toXml() const;
QMap <QString, QString> chaptersData() const;
void stopMonitor();
+ void refreshMonitor();
+ void createMonitor(DVDFORMAT format);
private:
Ui::DvdWizardChapters_UI m_view;
slotCheckVobList();
slotCheckProfiles();
}
+ emit prepareMonitor();
}
void DvdWizardVob::slotDeleteVobFile()
void slotItemDown();
void slotTranscodeFiles();
void slotTranscodedClip(KUrl, KUrl);
+
+signals:
+ void prepareMonitor();
};
#endif
QPointer<DvdWizard> w = new DvdWizard(m_monitorManager, url, this);
w->exec();
delete w;
+ m_monitorManager->activateMonitor(Kdenlive::clipMonitor);
}
void MainWindow::slotShowTimeline(bool show)
m_effectWidget(NULL),
m_selectedClip(NULL),
m_loopClipTransition(true),
+#ifdef USE_OPENGL
+ m_glWidget(NULL),
+#endif
m_editMarker(NULL)
{
QVBoxLayout *layout = new QVBoxLayout;
bool Monitor::createOpenGlWidget(QWidget *parent, const QString profile)
{
render = new Render(id(), 0, profile, this);
- kDebug()<<"+++++++++++++\nCREATED OPENGL WIDG\n++++++++++++++";
m_glWidget = new VideoGLWidget(parent);
if (m_glWidget == NULL) {
// Creation failed, we are in trouble...
void Monitor::start()
{
if (!isVisible() || !isActive()) return;
+#ifdef USE_OPENGL
+ if (m_glWidget) m_glWidget->activateMonitor();
+#endif
if (render) render->startConsumer();
}
//render->setSceneList(doc, 0);
}
+void Monitor::setCustomProfile(const QString &profile, Timecode tc)
+{
+ m_timePos->updateTimeCode(tc);
+ if (render == NULL) return;
+ if (!render->hasProfile(profile)) {
+ slotActivateMonitor();
+ render->resetProfile(profile);
+#ifdef USE_OPENGL
+ if (m_glWidget) m_glWidget->setImageAspectRatio(render->dar());
+#endif
+ }
+}
+
void Monitor::resetProfile(const QString &profile)
{
m_timePos->updateTimeCode(m_monitorManager->timecode());
if (!render->hasProfile(profile)) {
slotActivateMonitor();
render->resetProfile(profile);
+#ifdef USE_OPENGL
+ if (m_glWidget) m_glWidget->setImageAspectRatio(render->dar());
+#endif
}
if (m_effectWidget)
m_effectWidget->resetProfile(render);
Render *render;
AbstractRender *abstractRender();
void resetProfile(const QString &profile);
+ void setCustomProfile(const QString &profile, Timecode tc);
void resetSize();
void pause();
void unpause();
}
m_lastConnectedRenderer = m_monitorManager->activeRenderer();
+ // DVD monitor shouldn't be monitored or will cause crash on deletion
+ if (m_monitorManager->isActive(Kdenlive::dvdMonitor)) m_lastConnectedRenderer = NULL;
// Connect new renderer
if (m_lastConnectedRenderer != NULL) {
m_titledocument.setScene(m_scene, m_frameWidth, m_frameHeight);
connect(m_scene, SIGNAL(changed(QList<QRectF>)), this, SLOT(slotChanged()));
connect(font_size, SIGNAL(valueChanged(int)), m_scene, SLOT(slotUpdateFontSize(int)));
-
+
// a gradient background
/*QRadialGradient *gradient = new QRadialGradient(0, 0, 10);
gradient->setSpread(QGradient::ReflectSpread);
, m_texture(0)
, m_display_ratio(4.0 / 3.0)
, m_backgroundColor(Qt::gray)
-{
+{
setAttribute(Qt::WA_PaintOnScreen);
setAttribute(Qt::WA_OpaquePaintEvent);
}
}
void VideoGLWidget::resizeGL(int width, int height)
{
-
double this_aspect = (double) width / height;
// Special case optimisation to negate odd effect of sample aspect ratio
glClear(GL_COLOR_BUFFER_BIT);
}
+void VideoGLWidget::activateMonitor()
+{
+ makeCurrent();
+ glViewport(0, 0, width(), height());
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluOrtho2D(0, width(), height(), 0);
+ glMatrixMode(GL_MODELVIEW);
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
void VideoGLWidget::paintGL()
{
if (m_texture) {
{
m_image_width = image.width();
m_image_height = image.height();
-
makeCurrent();
if (m_texture)
glDeleteTextures(1, &m_texture);
public:
VideoGLWidget(QWidget *parent = 0);
~VideoGLWidget();
-
+ void activateMonitor();
QSize minimumSizeHint() const;
QSize sizeHint() const;
void setImageAspectRatio(double ratio) {
<rect>
<x>0</x>
<y>0</y>
- <width>247</width>
- <height>182</height>
+ <width>322</width>
+ <height>238</height>
</rect>
</property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <property name="spacing">
- <number>-1</number>
- </property>
+ <layout class="QGridLayout" name="gridLayout">
<property name="margin">
<number>0</number>
</property>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="QLabel" name="label">
- <property name="text">
- <string>Movie file</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="KComboBox" name="vob_list"/>
- </item>
- </layout>
- </item>
- <item>
+ <item row="2" column="0" colspan="4">
<widget class="QListWidget" name="chapters_list">
<property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Maximum">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>150</height>
+ </size>
+ </property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
</widget>
</item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QPushButton" name="button_add">
- <property name="text">
- <string>Add chapter</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="button_delete">
- <property name="text">
- <string>Remove chapter</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>79</width>
- <height>22</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
+ <item row="3" column="0" colspan="2">
+ <widget class="QPushButton" name="button_add">
+ <property name="text">
+ <string>Add chapter</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Movie file</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="3">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>80</width>
+ <height>13</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="3" column="2">
+ <widget class="QPushButton" name="button_delete">
+ <property name="text">
+ <string>Remove chapter</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" colspan="4">
+ <widget class="QFrame" name="video_frame">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>100</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" colspan="3">
+ <widget class="KComboBox" name="vob_list"/>
</item>
</layout>
</widget>
<property name="spacing">
<number>0</number>
</property>
- <item row="0" column="0">
- <widget class="QFrame" name="audio_monitor">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Plain</enum>
- </property>
- <property name="lineWidth">
- <number>0</number>
- </property>
- </widget>
- </item>
<item row="1" column="0">
- <widget class="QFrame" name="video_frame">
- <property name="font">
- <font>
- <stylestrategy>NoAntialias</stylestrategy>
- </font>
- </property>
- <property name="lineWidth">
- <number>0</number>
- </property>
- </widget>
- </item>
- <item row="2" column="0">
<widget class="QFrame" name="ruler_frame">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
</property>
</widget>
</item>
- <item row="3" column="0">
+ <item row="0" column="0">
+ <widget class="QFrame" name="video_frame">
+ <property name="font">
+ <font>
+ <stylestrategy>NoAntialias</stylestrategy>
+ </font>
+ </property>
+ <property name="lineWidth">
+ <number>0</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
<widget class="QFrame" name="button_frame">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">