]> git.sesse.net Git - kdenlive/blobdiff - src/clipproperties.cpp
Fix typos (patch from yurchor)
[kdenlive] / src / clipproperties.cpp
index 728f6bd0c0666f4f1222e050b4e54b6c36eb8502..6b8f6d3eda5d559c6d05ca60d53bbb30173e90ad 100644 (file)
@@ -38,18 +38,14 @@ static const int MARKERTAB = 5;
 static const int METATAB = 6;
 static const int ADVANCEDTAB = 7;
 
-static const int TYPE_JPEG = 0;
-static const int TYPE_PNG = 1;
-static const int TYPE_BMP = 2;
-static const int TYPE_GIF = 3;
-
 ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidget * parent) :
         QDialog(parent),
         m_clip(clip),
         m_tc(tc),
         m_fps(fps),
         m_count(0),
-        m_clipNeedsRefresh(false)
+        m_clipNeedsRefresh(false),
+        m_clipNeedsReLoad(false)
 {
     setFont(KGlobalSettings::toolBarFont());
     m_view.setupUi(this);
@@ -149,16 +145,28 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg
         m_view.tabWidget->removeTab(COLORTAB);
         m_view.tabWidget->removeTab(AUDIOTAB);
         m_view.tabWidget->removeTab(VIDEOTAB);
-        QStringList types;
-        types << "JPG" << "PNG" << "BMP" << "GIF";
-        m_view.image_type->addItems(types);
+
+        //WARNING: Keep in sync with slideshowclip.cpp
+        m_view.image_type->addItem("JPG (*.jpg)", "jpg");
+        m_view.image_type->addItem("JPEG (*.jpeg)", "jpeg");
+        m_view.image_type->addItem("PNG (*.png)", "png");
+        m_view.image_type->addItem("BMP (*.bmp)", "bmp");
+        m_view.image_type->addItem("GIF (*.gif)", "gif");
+        m_view.image_type->addItem("TGA (*.tga)", "tga");
+        m_view.image_type->addItem("TIFF (*.tiff)", "tiff");
+        m_view.image_type->addItem("Open EXR (*.exr)", "exr");
+
         m_view.slide_loop->setChecked(props.value("loop").toInt());
         m_view.slide_fade->setChecked(props.value("fade").toInt());
         m_view.luma_softness->setValue(props.value("softness").toInt());
         QString path = props.value("resource");
-        if (path.endsWith("png")) m_view.image_type->setCurrentIndex(TYPE_PNG);
-        else if (path.endsWith("bmp")) m_view.image_type->setCurrentIndex(TYPE_BMP);
-        else if (path.endsWith("gif")) m_view.image_type->setCurrentIndex(TYPE_GIF);
+        QString ext = path.section('.', -1);
+        for (int i = 0; i < m_view.image_type->count(); i++) {
+            if (m_view.image_type->itemData(i).toString() == ext) {
+                m_view.image_type->setCurrentIndex(i);
+                break;
+            }
+        }
         m_view.slide_duration->setText(tc.getTimecodeFromFrames(props.value("ttl").toInt()));
 
         m_view.slide_duration_format->addItem(i18n("hh:mm:ss::ff"));
@@ -196,13 +204,12 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg
             m_view.luma_file->addItem(KIcon(filePath), fname, filePath);
         }
 
-        slotEnableLuma(m_view.slide_fade->checkState());
-        slotEnableLumaFile(m_view.slide_luma->checkState());
-
         if (!lumaFile.isEmpty()) {
             m_view.slide_luma->setChecked(true);
             m_view.luma_file->setCurrentIndex(m_view.luma_file->findData(lumaFile));
         } else m_view.luma_file->setEnabled(false);
+        slotEnableLuma(m_view.slide_fade->checkState());
+        slotEnableLumaFile(m_view.slide_luma->checkState());
         connect(m_view.slide_fade, SIGNAL(stateChanged(int)), this, SLOT(slotEnableLuma(int)));
         connect(m_view.slide_luma, SIGNAL(stateChanged(int)), this, SLOT(slotEnableLumaFile(int)));
 
@@ -388,7 +395,7 @@ QMap <QString, QString> ClipProperties::properties()
     } else if (t == IMAGE) {
         if ((int) m_view.image_transparency->isChecked() != old_props.value("transparency").toInt()) {
             props["transparency"] = QString::number((int)m_view.image_transparency->isChecked());
-            m_clipNeedsRefresh = true;
+            //m_clipNeedsRefresh = true;
         }
         int duration = m_tc.getFrameCount(m_view.clip_duration->text());
         if (duration != m_clip->duration().frames(m_fps)) {
@@ -402,24 +409,10 @@ QMap <QString, QString> ClipProperties::properties()
         value = QString::number((int) m_view.luma_softness->value());
         if (old_props.value("softness") != value) props["softness"] = value;
 
-        QString extension;
-        switch (m_view.image_type->currentIndex()) {
-        case TYPE_PNG:
-            extension = "/.all.png";
-            break;
-        case TYPE_BMP:
-            extension = "/.all.bmp";
-            break;
-        case TYPE_GIF:
-            extension = "/.all.gif";
-            break;
-        default:
-            extension = "/.all.jpg";
-            break;
-        }
+        QString extension = "/.all." + m_view.image_type->itemData(m_view.image_type->currentIndex()).toString();
         QString new_path = m_view.clip_path->text() + extension;
         if (new_path != old_props.value("resource")) {
-            m_clipNeedsRefresh = true;
+            m_clipNeedsReLoad = true;
             props["resource"] = new_path;
             kDebug() << "////  SLIDE EDIT, NEW:" << new_path << ", OLD; " << old_props.value("resource");
         }
@@ -469,36 +462,29 @@ bool ClipProperties::needsTimelineRefresh() const
     return m_clipNeedsRefresh;
 }
 
+bool ClipProperties::needsTimelineReload() const
+{
+    return m_clipNeedsReLoad;
+}
+
 void ClipProperties::parseFolder()
 {
 
     QDir dir(m_view.clip_path->text());
     QStringList filters;
-    QString extension;
-    switch (m_view.image_type->currentIndex()) {
-    case TYPE_PNG:
-        filters << "*.png";
-        extension = "/.all.png";
-        break;
-    case TYPE_BMP:
-        filters << "*.bmp";
-        extension = "/.all.bmp";
-        break;
-    case TYPE_GIF:
-        filters << "*.gif";
-        extension = "/.all.gif";
-        break;
-    default:
-        filters << "*.jpg";
-        // TODO: improve jpeg image detection with extension like jpeg, requires change in MLT image producers
-        // << "*.jpeg";
-        extension = "/.all.jpg";
-        break;
-    }
+    filters << "*." + m_view.image_type->itemData(m_view.image_type->currentIndex()).toString();
+    QString extension = "/.all." + m_view.image_type->itemData(m_view.image_type->currentIndex()).toString();
 
     dir.setNameFilters(filters);
     QStringList result = dir.entryList(QDir::Files);
     m_count = result.count();
+    if (m_count == 0) {
+        // no images, do not accept that
+        m_view.slide_info->setText(i18n("No image found"));
+        m_view.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+        return;
+    }
+    m_view.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
     m_view.slide_info->setText(i18np("1 image found", "%1 images found", m_count));
     QDomElement xml = m_clip->toXML();
     xml.setAttribute("resource", m_view.clip_path->text() + extension);