]> git.sesse.net Git - kdenlive/commitdiff
Allow user to manually start waiting render job:
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 28 Nov 2009 20:02:43 +0000 (20:02 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 28 Nov 2009 20:02:43 +0000 (20:02 +0000)
http://kdenlive.org/mantis/view.php?id=1320

svn path=/trunk/kdenlive/; revision=4151

src/renderwidget.cpp
src/renderwidget.h
src/widgets/renderwidget_ui.ui

index fc011e23d67c43bdc009aa35380665ead8983159..40adaf47708b4eccc1856d9c470077f4ff65430b 100644 (file)
@@ -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 <i>%1</i> 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 <i>%1</i> 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);
index 371731d6c0c470d170259267a1f53b1aa0f780a1..3c5f9775f0d4d5b812a1aa87f8202263ceab90c6 100644 (file)
@@ -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);
index 1004d42a3944ae0bd05ae0863d833bef7debb876..d0bb1443bba40aa390f3d963d1e945b5a8970e3f 100644 (file)
        <string>Job Queue</string>
       </attribute>
       <layout class="QGridLayout" name="gridLayout_5">
-       <item row="2" column="2">
+       <item row="2" column="3">
         <spacer name="horizontalSpacer_3">
          <property name="orientation">
           <enum>Qt::Horizontal</enum>
          </property>
         </widget>
        </item>
-       <item row="2" column="3">
+       <item row="2" column="4">
         <widget class="KPushButton" name="buttonClose2">
          <property name="text">
           <string>Close</string>
          </property>
         </widget>
        </item>
-       <item row="0" column="0" colspan="4">
+       <item row="0" column="0" colspan="5">
         <widget class="QSplitter" name="splitter_2">
          <property name="orientation">
           <enum>Qt::Vertical</enum>
          </widget>
         </widget>
        </item>
-       <item row="2" column="1">
+       <item row="2" column="2">
         <widget class="QPushButton" name="clean_up">
          <property name="text">
           <string>Clean Up</string>
          </property>
         </widget>
        </item>
-       <item row="1" column="0" colspan="4">
+       <item row="1" column="0" colspan="5">
         <widget class="QCheckBox" name="shutdown">
          <property name="text">
           <string>Shutdown computer after renderings</string>
          </property>
         </widget>
        </item>
+       <item row="2" column="1">
+        <widget class="QPushButton" name="start_job">
+         <property name="text">
+          <string>Start Job</string>
+         </property>
+        </widget>
+       </item>
       </layout>
      </widget>
      <widget class="QWidget" name="tab_3">