From 8dba1cb55c4d8529d0e188cad1ac21118347e8e7 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sat, 28 Nov 2009 20:02:43 +0000 Subject: [PATCH] Allow user to manually start waiting render job: http://kdenlive.org/mantis/view.php?id=1320 svn path=/trunk/kdenlive/; revision=4151 --- src/renderwidget.cpp | 53 ++++++++++++++++++++++------------ src/renderwidget.h | 2 ++ src/widgets/renderwidget_ui.ui | 17 +++++++---- 3 files changed, 49 insertions(+), 23 deletions(-) diff --git a/src/renderwidget.cpp b/src/renderwidget.cpp index fc011e23..40adaf47 100644 --- a/src/renderwidget.cpp +++ b/src/renderwidget.cpp @@ -121,6 +121,7 @@ RenderWidget::RenderWidget(const QString &projectfolder, QWidget * parent) : connect(m_view.buttonEdit, SIGNAL(clicked()), this, SLOT(slotEditProfile())); connect(m_view.buttonDelete, SIGNAL(clicked()), this, SLOT(slotDeleteProfile())); connect(m_view.abort_job, SIGNAL(clicked()), this, SLOT(slotAbortCurrentJob())); + connect(m_view.start_job, SIGNAL(clicked()), this, SLOT(slotStartCurrentJob())); connect(m_view.clean_up, SIGNAL(clicked()), this, SLOT(slotCLeanUpJobs())); connect(m_view.hide_log, SIGNAL(clicked()), this, SLOT(slotHideLog())); @@ -839,23 +840,7 @@ void RenderWidget::checkRenderStatus() if (item->data(1, Qt::UserRole + 2).toInt() == WAITINGJOB) { item->setData(1, Qt::UserRole + 1, QTime::currentTime()); waitingJob = true; - if (item->data(1, Qt::UserRole + 4).isNull()) { - // Normal render process - if (QProcess::startDetached(m_renderer, item->data(1, Qt::UserRole + 3).toStringList()) == false) { - item->setData(1, Qt::UserRole + 2, FINISHEDJOB); - item->setData(1, Qt::UserRole, i18n("Rendering crashed")); - item->setIcon(0, KIcon("dialog-close")); - item->setData(2, Qt::UserRole, 100); - } else KNotification::event("RenderStarted", i18n("Rendering %1 started", item->text(1)), QPixmap(), this); - } else { - // Script item - if (QProcess::startDetached(item->data(1, Qt::UserRole + 3).toString()) == false) { - item->setData(1, Qt::UserRole + 2, FINISHEDJOB); - item->setData(1, Qt::UserRole, i18n("Rendering crashed")); - item->setIcon(0, KIcon("dialog-close")); - item->setData(2, Qt::UserRole, 100); - } - } + startRendering(item); break; } item = m_view.running_jobs->itemBelow(item); @@ -863,6 +848,27 @@ void RenderWidget::checkRenderStatus() if (waitingJob == false && m_view.shutdown->isChecked()) emit shutdown(); } +void RenderWidget::startRendering(QTreeWidgetItem *item) +{ + if (item->data(1, Qt::UserRole + 4).isNull()) { + // Normal render process + if (QProcess::startDetached(m_renderer, item->data(1, Qt::UserRole + 3).toStringList()) == false) { + item->setData(1, Qt::UserRole + 2, FINISHEDJOB); + item->setData(1, Qt::UserRole, i18n("Rendering crashed")); + item->setIcon(0, KIcon("dialog-close")); + item->setData(2, Qt::UserRole, 100); + } else KNotification::event("RenderStarted", i18n("Rendering %1 started", item->text(1)), QPixmap(), this); + } else { + // Script item + if (QProcess::startDetached(item->data(1, Qt::UserRole + 3).toString()) == false) { + item->setData(1, Qt::UserRole + 2, FINISHEDJOB); + item->setData(1, Qt::UserRole, i18n("Rendering crashed")); + item->setIcon(0, KIcon("dialog-close")); + item->setData(2, Qt::UserRole, 100); + } + } +} + int RenderWidget::waitingJobsCount() const { int count = 0; @@ -1451,6 +1457,14 @@ void RenderWidget::slotAbortCurrentJob() } } +void RenderWidget::slotStartCurrentJob() +{ + QTreeWidgetItem *current = m_view.running_jobs->currentItem(); + if (current && current->data(1, Qt::UserRole + 2).toInt() == WAITINGJOB) + startRendering(current); + m_view.start_job->setEnabled(false); +} + void RenderWidget::slotCheckJob() { bool activate = false; @@ -1458,7 +1472,10 @@ void RenderWidget::slotCheckJob() if (current) { if (current->data(1, Qt::UserRole + 2).toInt() == RUNNINGJOB) m_view.abort_job->setText(i18n("Abort Job")); - else m_view.abort_job->setText(i18n("Remove Job")); + else { + m_view.abort_job->setText(i18n("Remove Job")); + m_view.start_job->setEnabled(current->data(1, Qt::UserRole + 2).toInt() == WAITINGJOB); + } activate = true; } m_view.abort_job->setEnabled(activate); diff --git a/src/renderwidget.h b/src/renderwidget.h index 371731d6..3c5f9775 100644 --- a/src/renderwidget.h +++ b/src/renderwidget.h @@ -140,6 +140,7 @@ private slots: void slotHideLog(); void slotPrepareExport(bool scriptExport = false); void slotPlayRendering(QTreeWidgetItem *item, int); + void slotStartCurrentJob(); private: Ui::RenderWidget_UI m_view; @@ -154,6 +155,7 @@ private: void updateButtons(); KUrl filenameWithExtension(KUrl url, QString extension); void checkRenderStatus(); + void startRendering(QTreeWidgetItem *item); signals: void abortProcess(const QString &url); diff --git a/src/widgets/renderwidget_ui.ui b/src/widgets/renderwidget_ui.ui index 1004d42a..d0bb1443 100644 --- a/src/widgets/renderwidget_ui.ui +++ b/src/widgets/renderwidget_ui.ui @@ -338,7 +338,7 @@ Job Queue - + Qt::Horizontal @@ -358,14 +358,14 @@ - + Close - + Qt::Vertical @@ -426,20 +426,27 @@ - + Clean Up - + Shutdown computer after renderings + + + + Start Job + + + -- 2.39.2