* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
- ***************************************************************************/
-
+ ***************************************************************************/
+
#include <QtGui>
#include <QDialog>
#include <QDomDocument>
+#include <QInputDialog>
#include <KUrlRequester>
#include <KIntSpinBox>
#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();
}
* 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 <QObject>
#include <QStringList>
-
+
#include <KUrl>
#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
}
void MainWindow::populateMenus(QObject *plugin) {
- kDebug() << "// POP MENU";
QMenu *addMenu = static_cast<QMenu*>(factory()->container("generators", this));
ClipGenerator *iGenerator = qobject_cast<ClipGenerator *>(plugin);
- kDebug() << "// POP MENU 2";
- if (addMenu) kDebug() << "// POP MENU 3";
if (iGenerator)
addToMenu(plugin, iGenerator->generators(), addMenu, SLOT(generateClip()),
NULL);
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);
QAction *action = qobject_cast<QAction *>(sender());
ClipGenerator *iGenerator = qobject_cast<ClipGenerator *>(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);
}
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);
}
}
+void MainWindow::slotUpdatePreviewSettings() {
+ //TODO: perform operation on all open documents
+ m_activeDocument->clipManager()->updatePreviewSettings();
+}
+
+
void MainWindow::slotSwitchVideoThumbs() {
KdenliveSettings::setVideothumbnails(!KdenliveSettings::videothumbnails());
if (m_activeTimeline) {