From f7b6e23085b1023c9299572245117517e9e86d36 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Tue, 6 Jan 2009 22:52:47 +0000 Subject: [PATCH] Add new clip generator: noise svn path=/branches/KDE4/; revision=2880 --- plugins/sampleplugin/sampleplugin.cpp | 79 ++++++++++++++++----------- plugins/sampleplugin/sampleplugin.h | 19 +++---- src/mainwindow.cpp | 13 +++-- src/mainwindow.h | 1 + 4 files changed, 65 insertions(+), 47 deletions(-) diff --git a/plugins/sampleplugin/sampleplugin.cpp b/plugins/sampleplugin/sampleplugin.cpp index a816322a..486f681f 100644 --- a/plugins/sampleplugin/sampleplugin.cpp +++ b/plugins/sampleplugin/sampleplugin.cpp @@ -15,12 +15,13 @@ * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ - + ***************************************************************************/ + #include #include #include +#include #include #include @@ -30,50 +31,62 @@ #include "sampleplugin.h" #include "ui_countdown_ui.h" - QStringList SamplePlugin::generators() const - { - return QStringList() << tr("Countdown"); - } +QStringList SamplePlugin::generators() const { + return QStringList() << i18n("Countdown") << i18n("Noise"); +} KUrl SamplePlugin::generatedClip(const QString &generator, const KUrl &projectFolder, const QStringList &lumaNames, const QStringList &lumaFiles, const double fps, const int width, const int height) { + QString prePath; + if (generator == i18n("Noise")) { + prePath = projectFolder.path() + "/noise"; + } else prePath = projectFolder.path() + "/counter"; int ct = 0; QString counter = QString::number(ct).rightJustified(5, '0', false); - while (QFile::exists(projectFolder.path() + "/counter" + counter + ".westley")) { + while (QFile::exists(prePath + counter + ".westley")) { ct++; counter = QString::number(ct).rightJustified(5, '0', false); } QDialog d; - d.setWindowTitle(tr("Create Countdown Clip")); + if (generator == i18n("Noise")) d.setWindowTitle(tr("Create Noise Clip")); + else d.setWindowTitle(tr("Create Countdown Clip")); Ui::CountDown_UI view; view.setupUi(&d); - QString clipFile = projectFolder.path() + "/counter" + counter + ".westley"; + QString clipFile = prePath + counter + ".westley"; view.path->setPath(clipFile); if (d.exec() == QDialog::Accepted) { - QDomDocument doc; - QDomElement westley = doc.createElement("westley"); - QDomElement playlist = doc.createElement("playlist"); - for (int i = 0; i < view.duration->value(); i++) { - // Create the producers - QDomElement prod = doc.createElement("producer"); - prod.setAttribute("mlt_service", "pango"); - prod.setAttribute("in", "0"); - prod.setAttribute("out", QString::number((int) fps)); - prod.setAttribute("markup", QString::number(view.duration->value() - i)); - playlist.appendChild(prod); - } - westley.appendChild(playlist); - doc.appendChild(westley); - QFile file(view.path->url().path()); - if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { - kWarning() << "////// ERROR writing to file: " << view.path->url().path(); - KMessageBox::error(0, i18n("Cannot write to file %1", view.path->url().path())); - return KUrl(); - } - QTextStream out(&file); - out << doc.toString(); - file.close(); - return view.path->url(); + QDomDocument doc; + QDomElement westley = doc.createElement("westley"); + QDomElement playlist = doc.createElement("playlist"); + if (generator == i18n("Noise")) { + QDomElement prod = doc.createElement("producer"); + prod.setAttribute("mlt_service", "noise"); + prod.setAttribute("in", "0"); + prod.setAttribute("out", QString::number((int) fps * view.duration->value())); + playlist.appendChild(prod); + } else { + for (int i = 0; i < view.duration->value(); i++) { + // Create the producers + QDomElement prod = doc.createElement("producer"); + prod.setAttribute("mlt_service", "pango"); + prod.setAttribute("in", "0"); + prod.setAttribute("out", QString::number((int) fps)); + prod.setAttribute("markup", QString::number(view.duration->value() - i)); + playlist.appendChild(prod); + } + } + westley.appendChild(playlist); + doc.appendChild(westley); + QFile file(view.path->url().path()); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + kWarning() << "////// ERROR writing to file: " << view.path->url().path(); + KMessageBox::error(0, i18n("Cannot write to file %1", view.path->url().path())); + return KUrl(); + } + QTextStream out(&file); + out << doc.toString(); + file.close(); + return view.path->url(); } return KUrl(); } diff --git a/plugins/sampleplugin/sampleplugin.h b/plugins/sampleplugin/sampleplugin.h index 50abc9d4..c25d8ac4 100644 --- a/plugins/sampleplugin/sampleplugin.h +++ b/plugins/sampleplugin/sampleplugin.h @@ -15,28 +15,27 @@ * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ - + ***************************************************************************/ + #ifndef SAMPLEPLUGIN_H #define SAMPLEPLUGIN_H #include #include - + #include #include "interfaces.h" -class SamplePlugin : public QObject, public ClipGenerator -{ +class SamplePlugin : public QObject, public ClipGenerator { Q_OBJECT Q_INTERFACES(ClipGenerator) - public: - QStringList generators() const; - KUrl generatedClip(const QString &generator, const KUrl &projectFolder, const QStringList &lumaNames, const QStringList &lumaFiles, const double fps, const int width, const int height); - }; +public: + QStringList generators() const; + KUrl generatedClip(const QString &generator, const KUrl &projectFolder, const QStringList &lumaNames, const QStringList &lumaFiles, const double fps, const int width, const int height); +}; - #endif \ No newline at end of file +#endif \ No newline at end of file diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 7ae740d6..912faa9d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -405,11 +405,8 @@ void MainWindow::loadPlugins() { } void MainWindow::populateMenus(QObject *plugin) { - kDebug() << "// POP MENU"; QMenu *addMenu = static_cast(factory()->container("generators", this)); ClipGenerator *iGenerator = qobject_cast(plugin); - kDebug() << "// POP MENU 2"; - if (addMenu) kDebug() << "// POP MENU 3"; if (iGenerator) addToMenu(plugin, iGenerator->generators(), addMenu, SLOT(generateClip()), NULL); @@ -421,6 +418,7 @@ void MainWindow::addToMenu(QObject *plugin, const QStringList &texts, kDebug() << "// ADD to MENU" << texts; foreach(QString text, texts) { QAction *action = new QAction(text, plugin); + action->setData(text); connect(action, SIGNAL(triggered()), this, member); menu->addAction(action); @@ -441,7 +439,7 @@ void MainWindow::generateClip() { QAction *action = qobject_cast(sender()); ClipGenerator *iGenerator = qobject_cast(action->parent()); - KUrl clipUrl = iGenerator->generatedClip(action->text(), m_activeDocument->projectFolder(), QStringList(), QStringList(), 25, 720, 576); + KUrl clipUrl = iGenerator->generatedClip(action->data().toString(), m_activeDocument->projectFolder(), QStringList(), QStringList(), 25, 720, 576); if (!clipUrl.isEmpty()) { m_projectList->slotAddClip(clipUrl); } @@ -1618,6 +1616,7 @@ void MainWindow::slotPreferences(int page, int option) { KdenliveSettingsDialog* dialog = new KdenliveSettingsDialog(this); connect(dialog, SIGNAL(settingsChanged(const QString&)), this, SLOT(updateConfiguration())); connect(dialog, SIGNAL(doResetProfile()), m_monitorManager, SLOT(slotResetProfiles())); + //connect(dialog, SIGNAL(updatePreviewSettings()), this, SLOT(slotUpdatePreviewSettings())); dialog->show(); if (page != -1) dialog->showPage(page, option); } @@ -1638,6 +1637,12 @@ void MainWindow::updateConfiguration() { } +void MainWindow::slotUpdatePreviewSettings() { + //TODO: perform operation on all open documents + m_activeDocument->clipManager()->updatePreviewSettings(); +} + + void MainWindow::slotSwitchVideoThumbs() { KdenliveSettings::setVideothumbnails(!KdenliveSettings::videothumbnails()); if (m_activeTimeline) { diff --git a/src/mainwindow.h b/src/mainwindow.h index c0c47c6f..afc4b167 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -283,6 +283,7 @@ private slots: void slotRunWizard(); void generateClip(); void slotZoneMoved(int start, int end); + void slotUpdatePreviewSettings(); }; -- 2.39.2