]> git.sesse.net Git - kdenlive/blobdiff - src/renderwidget.cpp
Improve reloading of externally modified clips (wait for 1.5 second before reloading...
[kdenlive] / src / renderwidget.cpp
index a778a22145785bee235f8dedf45b98bee2cc9325..e1a835b1338f4b382f352afa50cf249857b6e9fe 100644 (file)
@@ -92,16 +92,9 @@ RenderWidget::RenderWidget(const QString &projectfolder, QWidget * parent) :
     m_view.rescale_size->setText("320x240");
 
 
-    QMenu *renderMenu = new QMenu(i18n("Start Rendering"), this);
-    QAction *renderAction = renderMenu->addAction(KIcon("video-x-generic"), i18n("Render to File"));
-    connect(renderAction, SIGNAL(triggered()), this, SLOT(slotPrepareExport()));
-    QAction *scriptAction = renderMenu->addAction(KIcon("application-x-shellscript"), i18n("Generate Script"));
-    connect(scriptAction, SIGNAL(triggered()), this, SLOT(slotGenerateScript()));
-
-    m_view.buttonStart->setMenu(renderMenu);
-    m_view.buttonStart->setPopupMode(QToolButton::MenuButtonPopup);
-    m_view.buttonStart->setDefaultAction(renderAction);
-    m_view.buttonStart->setToolButtonStyle(Qt::ToolButtonTextOnly);
+    connect(m_view.buttonRender, SIGNAL(clicked()), this, SLOT(slotPrepareExport()));
+    connect(m_view.buttonGenerateScript, SIGNAL(clicked()), this, SLOT(slotGenerateScript()));
+
     m_view.abort_job->setEnabled(false);
     m_view.start_script->setEnabled(false);
     m_view.delete_script->setEnabled(false);
@@ -109,6 +102,13 @@ RenderWidget::RenderWidget(const QString &projectfolder, QWidget * parent) :
     m_view.format_list->setAlternatingRowColors(true);
     m_view.size_list->setAlternatingRowColors(true);
 
+    KColorScheme scheme(palette().currentColorGroup(), KColorScheme::Window);
+    QPalette p = m_view.errorLabel->palette();
+    p.setColor(QPalette::Background, scheme.background(KColorScheme::NegativeBackground).color());
+    m_view.errorLabel->setAutoFillBackground(true);
+    m_view.errorLabel->setPalette(p);
+    m_view.errorLabel->setHidden(true);
+
     parseProfiles();
     parseScriptFiles();
 
@@ -151,7 +151,8 @@ RenderWidget::RenderWidget(const QString &projectfolder, QWidget * parent) :
 
     connect(m_view.format_selection, SIGNAL(activated(int)), this, SLOT(refreshView()));
 
-    m_view.buttonStart->setEnabled(false);
+    m_view.buttonRender->setEnabled(false);
+    m_view.buttonGenerateScript->setEnabled(false);
     m_view.rescale_size->setEnabled(false);
     m_view.guides_box->setVisible(false);
     m_view.open_dvd->setVisible(false);
@@ -195,7 +196,7 @@ RenderWidget::RenderWidget(const QString &projectfolder, QWidget * parent) :
     }
 
     QDBusConnectionInterface* interface = QDBusConnection::sessionBus().interface();
-    if (!interface || !interface->isServiceRegistered("org.kde.ksmserver")) {
+    if (!interface || (!interface->isServiceRegistered("org.kde.ksmserver") && !interface->isServiceRegistered("org.gnome.SessionManager"))) {
         m_view.shutdown->setEnabled(false);
     }
 
@@ -293,15 +294,17 @@ void RenderWidget::setGuides(QDomElement guidesxml, double duration)
  */
 void RenderWidget::slotUpdateButtons(KUrl url)
 {
-    if (m_view.out_file->url().isEmpty()) m_view.buttonStart->setEnabled(false);
-    else {
+    if (m_view.out_file->url().isEmpty()) {
+        m_view.buttonGenerateScript->setEnabled(false);
+        m_view.buttonRender->setEnabled(false);
+    } else {
         updateButtons(); // This also checks whether the selected format is available
-        //m_view.buttonStart->setEnabled(true);
     }
     if (url != 0) {
         QListWidgetItem *item = m_view.size_list->currentItem();
         if (!item) {
-            m_view.buttonStart->setEnabled(false);
+            m_view.buttonRender->setEnabled(false);
+            m_view.buttonGenerateScript->setEnabled(false);
             return;
         }
         QString extension = item->data(ExtensionRole).toString();
@@ -316,9 +319,12 @@ void RenderWidget::slotUpdateButtons(KUrl url)
  */
 void RenderWidget::slotUpdateButtons()
 {
-    if (m_view.out_file->url().isEmpty()) m_view.buttonStart->setEnabled(false);
-    else updateButtons(); // This also checks whether the selected format is available
-    //else m_view.buttonStart->setEnabled(true);
+    if (m_view.out_file->url().isEmpty()) {
+        m_view.buttonRender->setEnabled(false);
+        m_view.buttonGenerateScript->setEnabled(false);
+    } else {
+        updateButtons(); // This also checks whether the selected format is available
+    }
 }
 
 void RenderWidget::slotSaveProfile()
@@ -619,10 +625,12 @@ void RenderWidget::updateButtons()
         m_view.buttonSave->setEnabled(false);
         m_view.buttonDelete->setEnabled(false);
         m_view.buttonEdit->setEnabled(false);
-        m_view.buttonStart->setEnabled(false);
+        m_view.buttonRender->setEnabled(false);
+        m_view.buttonGenerateScript->setEnabled(false);
     } else {
         m_view.buttonSave->setEnabled(true);
-        m_view.buttonStart->setEnabled(m_view.size_list->currentItem()->toolTip().isEmpty());
+        m_view.buttonRender->setEnabled(m_view.size_list->currentItem()->toolTip().isEmpty());
+        m_view.buttonGenerateScript->setEnabled(m_view.size_list->currentItem()->toolTip().isEmpty());
         QString edit = m_view.size_list->currentItem()->data(EditableRole).toString();
         if (edit.isEmpty() || !edit.endsWith("customprofiles.xml")) {
             m_view.buttonDelete->setEnabled(false);
@@ -816,7 +824,7 @@ void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const
     if (!existing.isEmpty()) {
         renderItem = existing.at(0);
         if (renderItem->data(1, Qt::UserRole + 2).toInt() == RUNNINGJOB) {
-            KMessageBox::information(this, i18n("There is already a job writing file:<br><b>%1</b><br>Abort the job if you want to overwrite it...", dest), i18n("Already running"));
+            KMessageBox::information(this, i18n("There is already a job writing file:<br /><b>%1</b><br />Abort the job if you want to overwrite it...", dest), i18n("Already running"));
             return;
         }
         renderItem->setData(1, Qt::UserRole + 4, QString());
@@ -1102,7 +1110,8 @@ void RenderWidget::refreshParams()
     QListWidgetItem *item = m_view.size_list->currentItem();
     if (!item || item->isHidden()) {
         m_view.advanced_params->clear();
-        m_view.buttonStart->setEnabled(false);
+        m_view.buttonRender->setEnabled(false);
+        m_view.buttonGenerateScript->setEnabled(false);
         return;
     }
     QString params = item->data(ParamsRole).toString();
@@ -1138,7 +1147,8 @@ void RenderWidget::refreshParams()
         m_view.buttonEdit->setEnabled(true);
     }
 
-    m_view.buttonStart->setEnabled(m_view.size_list->currentItem()->toolTip().isEmpty());
+    m_view.buttonRender->setEnabled(m_view.size_list->currentItem()->toolTip().isEmpty());
+    m_view.buttonGenerateScript->setEnabled(m_view.size_list->currentItem()->toolTip().isEmpty());
 }
 
 void RenderWidget::reloadProfiles()
@@ -1620,7 +1630,7 @@ void RenderWidget::slotStartScript()
         if (!existing.isEmpty()) {
             renderItem = existing.at(0);
             if (renderItem->data(1, Qt::UserRole + 2).toInt() == RUNNINGJOB) {
-                KMessageBox::information(this, i18n("There is already a job writing file:<br><b>%1</b><br>Abort the job if you want to overwrite it...", destination), i18n("Already running"));
+                KMessageBox::information(this, i18n("There is already a job writing file:<br /><b>%1</b><br />Abort the job if you want to overwrite it...", destination), i18n("Already running"));
                 return;
             }
         } else renderItem = new QTreeWidgetItem(m_view.running_jobs, QStringList() << QString() << destination << QString());
@@ -1680,6 +1690,7 @@ void RenderWidget::setRenderProfile(const QString &dest, const QString &group, c
         QList<QListWidgetItem *> childs = m_view.format_list->findItems(group, Qt::MatchExactly);
         if (!childs.isEmpty()) {
             m_view.format_list->setCurrentItem(childs.at(0));
+            m_view.format_list->scrollToItem(childs.at(0));
         }
         refreshView();
     }
@@ -1688,6 +1699,7 @@ void RenderWidget::setRenderProfile(const QString &dest, const QString &group, c
     QList<QListWidgetItem *> childs = m_view.size_list->findItems(name, Qt::MatchExactly);
     if (!childs.isEmpty()) {
         m_view.size_list->setCurrentItem(childs.at(0));
+        m_view.size_list->scrollToItem(childs.at(0));
     }
     //refreshView();
     m_view.destination_list->blockSignals(false);
@@ -1757,5 +1769,11 @@ void RenderWidget::slotPlayRendering(QTreeWidgetItem *item, int)
     KRun::runCommand(command, KdenliveSettings::defaultplayerapp(), KdenliveSettings::defaultplayerapp(), this, startId);
 }
 
-
+void RenderWidget::missingClips(bool hasMissing)
+{
+    if (hasMissing) {
+        m_view.errorLabel->setText(i18n("Check missing clips"));
+        m_view.errorLabel->setHidden(false);
+    } else m_view.errorLabel->setHidden(true);
+}