From: Jean-Baptiste Mardelle Date: Tue, 26 May 2009 13:49:03 +0000 (+0000) Subject: Store transcoding profiles in a separate file (kdenlivetranscodingrc) X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=5ef2bcdb9049542e0b8f147f22b421d13c0fc6de;p=kdenlive Store transcoding profiles in a separate file (kdenlivetranscodingrc) svn path=/trunk/kdenlive/; revision=3428 --- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4d94d276..1d13e0b9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -198,7 +198,7 @@ install( FILES kdenliveui.rc kdenlive.notifyrc DESTINATION ${DATA_INSTALL_DIR}/ install (FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR}) install (FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR}) install (FILES application-x-kdenlive.svgz video-mlt-playlist.svgz DESTINATION ${ICON_INSTALL_DIR}/oxygen/scalable/mimetypes) -install( FILES kdenlive.knsrc kdenlive_render.knsrc kdenlive_mltprofiles.knsrc DESTINATION ${CONFIG_INSTALL_DIR} ) +install( FILES kdenlive.knsrc kdenlive_render.knsrc kdenlive_mltprofiles.knsrc kdenlivetranscodingrc DESTINATION ${CONFIG_INSTALL_DIR} ) kde4_install_icons( ${ICON_INSTALL_DIR} ) diff --git a/src/cliptranscode.cpp b/src/cliptranscode.cpp index adc8fe92..e9ccc376 100644 --- a/src/cliptranscode.cpp +++ b/src/cliptranscode.cpp @@ -45,7 +45,7 @@ ClipTranscode::ClipTranscode(const KUrl &src, const QString ¶ms, QWidget * p m_view.params->setPlainText(params.simplified()); } else { // load Profiles - KSharedConfigPtr config = KGlobal::config(); + KSharedConfigPtr config = KSharedConfig::openConfig("kdenlivetranscodingrc"); KConfigGroup transConfig(config, "Transcoding"); // read the entries QMap< QString, QString > profiles = transConfig.entryMap(); diff --git a/src/kdenlivesettingsdialog.cpp b/src/kdenlivesettingsdialog.cpp index 7cd86aad..add9a255 100644 --- a/src/kdenlivesettingsdialog.cpp +++ b/src/kdenlivesettingsdialog.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -42,7 +43,8 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(QWidget * parent) : - KConfigDialog(parent, "settings", KdenliveSettings::self()) + KConfigDialog(parent, "settings", KdenliveSettings::self()), + m_modified(false) { QWidget *p1 = new QWidget; @@ -96,6 +98,7 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(QWidget * parent) : m_page7 = addPage(p7, i18n("Transcode"), "edit-copy"); connect(m_configTranscode.button_add, SIGNAL(clicked()), this, SLOT(slotAddTranscode())); connect(m_configTranscode.button_delete, SIGNAL(clicked()), this, SLOT(slotDeleteTranscode())); + connect(m_configTranscode.profiles_list, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(slotDialogModified())); QStringList actions; actions << i18n("Do nothing"); @@ -391,7 +394,8 @@ void KdenliveSettingsDialog::rebuildVideo4Commands() void KdenliveSettingsDialog::updateSettings() { - kDebug() << "// // // KCONFIG UPDATE called"; + //kDebug() << "// // // KCONFIG UPDATE called"; + m_defaultProfile = m_configMisc.kcfg_profiles_list->currentText(); KdenliveSettings::setDefault_profile(m_defaultPath); @@ -445,10 +449,17 @@ void KdenliveSettingsDialog::updateSettings() updatePreview = true; } - // TODO: only save profiles if modified - saveTranscodeProfiles(); + if (m_modified) { + // The transcoding profiles were modified, save. + m_modified = false; + saveTranscodeProfiles(); + } + +#if KDE_IS_VERSION(4,3,0) + KConfigDialog::settingsChangedSlot(); +#endif - KConfigDialog::updateSettings(); + //KConfigDialog::updateSettings(); if (resetProfile) emit doResetProfile(); if (updatePreview) emit updatePreviewSettings(); } @@ -475,26 +486,24 @@ void KdenliveSettingsDialog::slotCheckAlsaDriver() void KdenliveSettingsDialog::loadTranscodeProfiles() { - KSharedConfigPtr config = KGlobal::config(); + KSharedConfigPtr config = KSharedConfig::openConfig("kdenlivetranscodingrc"); KConfigGroup transConfig(config, "Transcoding"); // read the entries - + m_configTranscode.profiles_list->blockSignals(true); QMap< QString, QString > profiles = transConfig.entryMap(); - if (profiles.isEmpty()) { - // TODO: find a better way to store defaule transcode profiles - profiles.insert("DNxHD 1920x1080", "-s 1920x1080 -r pal -b 220000k -threads 2 -vcodec dnxhd -acodec copy %1.mov"); - } QMapIterator i(profiles); while (i.hasNext()) { i.next(); QTreeWidgetItem *item = new QTreeWidgetItem(m_configTranscode.profiles_list, QStringList() << i.key() << i.value()); item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable); } + m_configTranscode.profiles_list->blockSignals(false); } void KdenliveSettingsDialog::saveTranscodeProfiles() { - KSharedConfigPtr config = KGlobal::config(); + KSharedConfigPtr config = KSharedConfig::openConfig("kdenlivetranscodingrc"); + //KSharedConfigPtr config = KGlobal::config(); KConfigGroup transConfig(config, "Transcoding"); // read the entries transConfig.deleteGroup(); @@ -510,7 +519,9 @@ void KdenliveSettingsDialog::slotAddTranscode() { QTreeWidgetItem *item = new QTreeWidgetItem(m_configTranscode.profiles_list, QStringList() << i18n("Name") << i18n("Parameters")); item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable); + m_configTranscode.profiles_list->setCurrentItem(item); m_configTranscode.profiles_list->editItem(item); + slotDialogModified(); } void KdenliveSettingsDialog::slotDeleteTranscode() @@ -518,8 +529,26 @@ void KdenliveSettingsDialog::slotDeleteTranscode() QTreeWidgetItem *item = m_configTranscode.profiles_list->currentItem(); if (item == NULL) return; delete item; + slotDialogModified(); } +void KdenliveSettingsDialog::slotDialogModified() +{ + m_modified = true; +#if KDE_IS_VERSION(4,3,0) + KConfigDialog::updateButtons(); +#endif +} + +//virtual +bool KdenliveSettingsDialog::hasChanged() +{ + if (m_modified) return true; + return KConfigDialog::hasChanged(); +} + + + #include "kdenlivesettingsdialog.moc" diff --git a/src/kdenlivesettingsdialog.h b/src/kdenlivesettingsdialog.h index 3266c98f..97103611 100644 --- a/src/kdenlivesettingsdialog.h +++ b/src/kdenlivesettingsdialog.h @@ -46,7 +46,7 @@ public: protected slots: void updateSettings(); - + virtual bool hasChanged(); private slots: void slotUpdateDisplay(); @@ -63,6 +63,7 @@ private slots: void slotCheckAlsaDriver(); void slotAddTranscode(); void slotDeleteTranscode(); + void slotDialogModified(); private: KPageWidgetItem *m_page1; @@ -82,6 +83,7 @@ private: QString m_defaultProfile; QString m_defaultPath; KProcess m_readProcess; + bool m_modified; void initDevices(); void loadTranscodeProfiles(); void saveTranscodeProfiles(); diff --git a/src/kdenlivetranscodingrc b/src/kdenlivetranscodingrc new file mode 100644 index 00000000..51594904 --- /dev/null +++ b/src/kdenlivetranscodingrc @@ -0,0 +1,2 @@ +[Transcoding] +DNxHD 1920x1080=-s 1920x1080 -r pal -b 220000k -threads 2 -vcodec dnxhd -acodec copy %1.mov diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 7975f0a9..59fbf3e8 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1943,6 +1943,9 @@ void MainWindow::updateConfiguration() } m_buttonAudioThumbs->setChecked(KdenliveSettings::audiothumbnails()); m_buttonVideoThumbs->setChecked(KdenliveSettings::videothumbnails()); + + // Update list of transcoding profiles + loadTranscoders(); #ifndef NO_JOGSHUTTLE activateShuttleDevice(); #endif /* NO_JOGSHUTTLE */ @@ -2661,7 +2664,8 @@ void MainWindow::loadTranscoders() { QMenu *transMenu = static_cast(factory()->container("transcoders", this)); transMenu->clear(); - KSharedConfigPtr config = KGlobal::config(); + + KSharedConfigPtr config = KSharedConfig::openConfig("kdenlivetranscodingrc"); KConfigGroup transConfig(config, "Transcoding"); // read the entries QMap< QString, QString > profiles = transConfig.entryMap();