X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fwizard.cpp;h=5444d21037c4357ebf2741df61b239f43a314d56;hb=4a47150aaf6f75c45ddca8a071c3bc291117bdd3;hp=7cdefed7438259649974c23ec6dfb13fd1ff92ea;hpb=2c0b468416c80c5473b024bb6aa439871f295875;p=kdenlive diff --git a/src/wizard.cpp b/src/wizard.cpp index 7cdefed7..5444d210 100644 --- a/src/wizard.cpp +++ b/src/wizard.cpp @@ -17,20 +17,21 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ -#include -#include -#include -#include -#include +#include "wizard.h" +#include "kdenlivesettings.h" +#include "profilesdialog.h" #include #include #include #include -#include "kdenlivesettings.h" -#include "profilesdialog.h" -#include "wizard.h" +#include +#include +#include +#include + +const double recommendedMltVersion = 36; Wizard::Wizard(QWidget *parent): QWizard(parent) { setPixmap(QWizard::WatermarkPixmap, QPixmap(KStandardDirs::locate("appdata", "banner.png"))); @@ -56,6 +57,9 @@ Wizard::Wizard(QWidget *parent): QWizard(parent) { page2->setTitle(i18n("Video Standard")); m_standard.setupUi(page2); + m_okIcon = KIcon("dialog-ok"); + m_badIcon = KIcon("dialog-close"); + // build profiles lists m_profilesInfo = ProfilesDialog::getProfilesInfo(); QMap::const_iterator i = m_profilesInfo.constBegin(); @@ -110,23 +114,23 @@ void Wizard::checkMltComponents() { m_mltCheck.programList->setRootIsDecorated(false); m_mltCheck.programList->setHeaderHidden(true); QSize itemSize(20, this->fontMetrics().height() * 2.5); - KIcon okIcon("dialog-ok"); - KIcon missingIcon("dialog-close"); m_mltCheck.programList->setColumnWidth(0, 30); m_mltCheck.programList->setIconSize(QSize(24, 24)); - QTreeWidgetItem *item = new QTreeWidgetItem(m_mltCheck.programList, QStringList() << QString() << i18n("Inigo") + " (" + KdenliveSettings::rendererpath() + ')'); - item->setData(1, Qt::UserRole, i18n("Required for rendering (part of MLT package)")); - item->setSizeHint(0, itemSize); - item->setIcon(0, okIcon); + QTreeWidgetItem *mltitem = new QTreeWidgetItem(m_mltCheck.programList); + + QTreeWidgetItem *inigoitem = new QTreeWidgetItem(m_mltCheck.programList, QStringList() << QString() << i18n("Inigo") + " (" + KdenliveSettings::rendererpath() + ')'); + inigoitem->setData(1, Qt::UserRole, i18n("Required for rendering (part of MLT package)")); + inigoitem->setSizeHint(0, itemSize); + inigoitem->setIcon(0, m_okIcon); // Check MLT's installed producers QProcess checkProcess; checkProcess.start(KdenliveSettings::rendererpath(), QStringList() << "-query" << "producer"); if (!checkProcess.waitForStarted()) { - item->setIcon(0, missingIcon); - item->setData(1, Qt::UserRole, i18n("Error starting MLT's command line player (inigo)")); + inigoitem->setIcon(0, m_badIcon); + inigoitem->setData(1, Qt::UserRole, i18n("Error starting MLT's command line player (inigo)")); button(QWizard::NextButton)->setEnabled(false); } else { checkProcess.waitForFinished(); @@ -137,12 +141,14 @@ void Wizard::checkMltComponents() { avformatItem->setData(1, Qt::UserRole, i18n("Required to work with various video formats (hdv, mpeg, flash, ...)")); avformatItem->setSizeHint(0, itemSize); if (!result.contains("- avformat")) { - avformatItem->setIcon(0, missingIcon); + avformatItem->setIcon(0, m_badIcon); m_mltCheck.tabWidget->setTabEnabled(1, false); } else { - avformatItem->setIcon(0, okIcon); + avformatItem->setIcon(0, m_okIcon); // Make sure we have MLT > 0.3.4 bool recentMlt = false; + int version = 0; + QString mltVersion; QString exepath = KStandardDirs::findExe("pkg-config"); if (!exepath.isEmpty()) { checkProcess.start(exepath, QStringList() << "--variable=version" << "mlt-framework"); @@ -150,26 +156,37 @@ void Wizard::checkMltComponents() { kDebug() << "// Error querying MLT's version"; } else { checkProcess.waitForFinished(); - QString mltVersion = checkProcess.readAllStandardOutput(); - int version = 100 * mltVersion.section('.', 0, 0).toInt() + 10 * mltVersion.section('.', 1, 1).toInt() + mltVersion.section('.', 2, 2).toInt(); + mltVersion = checkProcess.readAllStandardOutput(); + version = 100 * mltVersion.section('.', 0, 0).toInt() + 10 * mltVersion.section('.', 1, 1).toInt() + mltVersion.section('.', 2, 2).toInt(); kDebug() << "// FOUND MLT's pkgconfig version: " << version; if (version > 34) recentMlt = true; } - } else { + } + if (version == 0) { checkProcess.start(KdenliveSettings::rendererpath(), QStringList() << "--version"); if (!checkProcess.waitForStarted()) { kDebug() << "// Error querying MLT's version"; } else { checkProcess.waitForFinished(); - QString mltVersion = checkProcess.readAllStandardError(); - mltVersion = mltVersion.section("\n", 0, 0).simplified(); + mltVersion = checkProcess.readAllStandardError(); + mltVersion = mltVersion.section('\n', 0, 0).simplified(); mltVersion = mltVersion.section(' ', -1).simplified(); - int version = 100 * mltVersion.section('.', 0, 0).toInt() + 10 * mltVersion.section('.', 1, 1).toInt() + mltVersion.section('.', 2, 2).toInt(); + version = 100 * mltVersion.section('.', 0, 0).toInt() + 10 * mltVersion.section('.', 1, 1).toInt() + mltVersion.section('.', 2, 2).toInt(); kDebug() << "// FOUND MLT version: " << version; if (version > 34) recentMlt = true; } } + mltitem->setText(1, i18n("MLT version: %1", mltVersion.simplified())); + mltitem->setSizeHint(0, itemSize); + if (version < recommendedMltVersion) { + mltitem->setData(1, Qt::UserRole, i18n("Please upgrade to the latest MLT version")); + mltitem->setIcon(0, m_badIcon); + } else { + mltitem->setData(1, Qt::UserRole, i18n("MLT version is correct")); + mltitem->setIcon(0, m_okIcon); + } + if (recentMlt) { // Check installed audio codecs QProcess checkProcess2; @@ -182,7 +199,7 @@ void Wizard::checkMltComponents() { QByteArray codecList = checkProcess2.readAllStandardError(); QString acodecList(codecList); QStringList result; - QStringList alist = acodecList.split("\n", QString::SkipEmptyParts); + QStringList alist = acodecList.split('\n', QString::SkipEmptyParts); for (int i = 0; i < alist.count(); i++) { if (alist.at(i).contains("- ")) result.append(alist.at(i).section("- ", 1).simplified().toLower()); } @@ -199,7 +216,7 @@ void Wizard::checkMltComponents() { QByteArray codecList = checkProcess2.readAllStandardError(); QString vcodecList(codecList); QStringList result; - QStringList vlist = vcodecList.split("\n", QString::SkipEmptyParts); + QStringList vlist = vcodecList.split('\n', QString::SkipEmptyParts); for (int i = 0; i < vlist.count(); i++) { if (vlist.at(i).contains("- ")) result.append(vlist.at(i).section("- ", 1).simplified().toLower()); } @@ -216,7 +233,7 @@ void Wizard::checkMltComponents() { QByteArray codecList = checkProcess2.readAllStandardError(); QString vcodecList(codecList); QStringList result; - QStringList vlist = vcodecList.split("\n", QString::SkipEmptyParts); + QStringList vlist = vcodecList.split('\n', QString::SkipEmptyParts); for (int i = 0; i < vlist.count(); i++) { if (vlist.at(i).contains("- ")) { QString format = vlist.at(i).section("- ", 1).simplified().toLower(); @@ -240,9 +257,9 @@ void Wizard::checkMltComponents() { dvItem->setData(1, Qt::UserRole, i18n("Required to work with dv files if avformat module is not installed")); dvItem->setSizeHint(0, itemSize); if (!result.contains("- libdv")) { - dvItem->setIcon(0, missingIcon); + dvItem->setIcon(0, m_badIcon); } else { - dvItem->setIcon(0, okIcon); + dvItem->setIcon(0, m_okIcon); } // Check MLT image format module @@ -250,14 +267,14 @@ void Wizard::checkMltComponents() { imageItem->setData(1, Qt::UserRole, i18n("Required to work with images")); imageItem->setSizeHint(0, itemSize); if (!result.contains("- qimage")) { - imageItem->setIcon(0, missingIcon); + imageItem->setIcon(0, m_badIcon); imageItem = new QTreeWidgetItem(m_mltCheck.programList, QStringList() << QString() << i18n("Pixbuf module")); imageItem->setData(1, Qt::UserRole, i18n("Required to work with images")); imageItem->setSizeHint(0, itemSize); - if (!result.contains("- pixbuf")) imageItem->setIcon(0, missingIcon); - else imageItem->setIcon(0, okIcon); + if (!result.contains("- pixbuf")) imageItem->setIcon(0, m_badIcon); + else imageItem->setIcon(0, m_okIcon); } else { - imageItem->setIcon(0, okIcon); + imageItem->setIcon(0, m_okIcon); } } } @@ -267,8 +284,6 @@ void Wizard::slotCheckPrograms() { m_check.programList->setRootIsDecorated(false); m_check.programList->setHeaderHidden(true); QSize itemSize(20, this->fontMetrics().height() * 2.5); - KIcon okIcon("dialog-ok"); - KIcon missingIcon("dialog-close"); m_check.programList->setColumnWidth(0, 30); m_check.programList->setIconSize(QSize(24, 24)); @@ -276,33 +291,33 @@ void Wizard::slotCheckPrograms() { item->setData(1, Qt::UserRole, i18n("Required for webcam capture")); item->setSizeHint(0, itemSize); QString exepath = KStandardDirs::findExe("ffmpeg"); - if (exepath.isEmpty()) item->setIcon(0, missingIcon); - else if (KStandardDirs::findExe("ffplay").isEmpty()) item->setIcon(0, missingIcon); - else item->setIcon(0, okIcon); + if (exepath.isEmpty()) item->setIcon(0, m_badIcon); + else if (KStandardDirs::findExe("ffplay").isEmpty()) item->setIcon(0, m_badIcon); + else item->setIcon(0, m_okIcon); item = new QTreeWidgetItem(m_check.programList, QStringList() << QString() << i18n("Recordmydesktop")); item->setData(1, Qt::UserRole, i18n("Required for screen capture")); item->setSizeHint(0, itemSize); - if (KStandardDirs::findExe("recordmydesktop").isEmpty()) item->setIcon(0, missingIcon); - else item->setIcon(0, okIcon); + if (KStandardDirs::findExe("recordmydesktop").isEmpty()) item->setIcon(0, m_badIcon); + else item->setIcon(0, m_okIcon); item = new QTreeWidgetItem(m_check.programList, QStringList() << QString() << i18n("Dvgrab")); item->setData(1, Qt::UserRole, i18n("Required for firewire capture")); item->setSizeHint(0, itemSize); - if (KStandardDirs::findExe("dvgrab").isEmpty()) item->setIcon(0, missingIcon); - else item->setIcon(0, okIcon); + if (KStandardDirs::findExe("dvgrab").isEmpty()) item->setIcon(0, m_badIcon); + else item->setIcon(0, m_okIcon); item = new QTreeWidgetItem(m_check.programList, QStringList() << QString() << i18n("Dvdauthor")); item->setData(1, Qt::UserRole, i18n("Required for creation of DVD")); item->setSizeHint(0, itemSize); - if (KStandardDirs::findExe("dvdauthor").isEmpty()) item->setIcon(0, missingIcon); - else item->setIcon(0, okIcon); + if (KStandardDirs::findExe("dvdauthor").isEmpty()) item->setIcon(0, m_badIcon); + else item->setIcon(0, m_okIcon); item = new QTreeWidgetItem(m_check.programList, QStringList() << QString() << i18n("Mkisofs")); item->setData(1, Qt::UserRole, i18n("Required for creation of DVD iso images")); item->setSizeHint(0, itemSize); - if (KStandardDirs::findExe("mkisofs").isEmpty()) item->setIcon(0, missingIcon); - else item->setIcon(0, okIcon); + if (KStandardDirs::findExe("mkisofs").isEmpty()) item->setIcon(0, m_badIcon); + else item->setIcon(0, m_okIcon); } @@ -454,12 +469,12 @@ void Wizard::slotCheckMlt() { QProcess checkProcess2; checkProcess2.start(KdenliveSettings::rendererpath(), QStringList() << "-query" << "consumer"); if (!checkProcess2.waitForStarted()) - errorMessage.append(i18n("Error starting MLT's command line player (inigo).") + "\n"); + errorMessage.append(i18n("Error starting MLT's command line player (inigo).") + '\n'); checkProcess2.waitForFinished(); QByteArray result = checkProcess2.readAllStandardError(); - if (!result.contains("sdl") || !result.contains("sdl_preview")) errorMessage.append(i18n("MLT's SDL module not found. Please check your MLT install. Kdenlive will not work until this issue is fixed.") + "\n"); + if (!result.contains("sdl") || !result.contains("sdl_preview")) errorMessage.append(i18n("MLT's SDL module not found. Please check your MLT install. Kdenlive will not work until this issue is fixed.") + '\n'); if (!errorMessage.isEmpty()) { errorMessage.prepend(QString("%1
").arg(i18n("Fatal Error")));