#include <QSlider>
#include <KFileDialog>
-ClipStabilize::ClipStabilize(const QString &dest, int count, const QString &filterName,QWidget * parent) :
+ClipStabilize::ClipStabilize(const QStringList &urls, const QString &filterName,QWidget * parent) :
QDialog(parent),
m_filtername(filterName),
- m_count(count),
+ m_urls(urls),
vbox(NULL)
{
setFont(KGlobalSettings::toolBarFont());
setupUi(this);
setWindowTitle(i18n("Stabilize Clip"));
- auto_add->setText(i18np("Add clip to project", "Add clips to project", count));
+ auto_add->setText(i18np("Add clip to project", "Add clips to project", urls.count()));
+ auto_add->setChecked(KdenliveSettings::add_new_clip());
QPalette p = palette();
KColorScheme scheme(p.currentColorGroup(), KColorScheme::View, KSharedConfig::openConfig(KdenliveSettings::colortheme()));
.arg(dark_bg.name()).arg(selected_bg.name()).arg(hover_bg.name()).arg(light_bg.name()));
setStyleSheet(stylesheet);
- if (m_count == 1) {
- QString newFile = dest;
+ if (m_urls.count() == 1) {
+ QString newFile = m_urls.first();
newFile.append(".mlt");
KUrl dest(newFile);
dest_url->setMode(KFile::File);
} else {
label_dest->setText(i18n("Destination folder"));
dest_url->setMode(KFile::Directory);
- dest_url->setUrl(KUrl(dest));
+ dest_url->setUrl(KUrl(KUrl(m_urls.first()).directory()));
dest_url->fileDialog()->setOperationMode(KFileDialog::Saving);
}
if (m_filtername=="videostab"){
QStringList ls;
- ls << "shutterangle,type,int,value,0,min,0,max,100,tooltip,Angle that Images could be maximum rotated";
+ ls << "shutterangle,type,int,value,0,min,0,max,180,tooltip,Angle that Images could be maximum rotated";
fillParameters(ls);
}else if (m_filtername=="videostab2"){
+ // Some default params have to be set:
+ m_fixedParams << "algo=1" << "relative=1";
QStringList ls;
- ls << "accuracy,type,int,value,4,min,1,max,10,tooltip,Accuracy of Shakiness detection";
+ ls << "accuracy,type,int,value,8,min,1,max,10,tooltip,Accuracy of Shakiness detection";
ls << "shakiness,type,int,value,4,min,1,max,10,tooltip,How shaky is the Video";
ls << "stepsize,type,int,value,6,min,0,max,100,tooltip,Stepsize of Detection process minimum around";
- ls << "algo,type,bool,value,1,min,0,max,1,tooltip,0 = Bruteforce 1 = small measurement fields";
+ //ls << "algo,type,bool,value,1,min,0,max,1,tooltip,0 = Bruteforce 1 = small measurement fields";
ls << "mincontrast,type,double,value,0.3,min,0,max,1,factor,1,decimals,2,tooltip,Below this Contrast Field is discarded";
- ls << "show,type,int,value,0,min,0,max,2,tooltip,0 = draw nothing. 1 or 2 show fields and transforms";
+ //ls << "show,type,int,value,0,min,0,max,2,tooltip,0 = draw nothing. 1 or 2 show fields and transforms";
ls << "smoothing,type,int,value,10,min,0,max,100,tooltip,number of frames for lowpass filtering";
ls << "maxshift,type,int,value,-1,min,-1,max,1000,tooltip,max number of pixels to shift";
ls << "maxangle,type,int,value,-1,min,-1,max,1000,tooltip,max anglen to rotate (in rad)";
ls << "crop,type,bool,value,0,min,0,max,1,tooltip,0 = keep border 1 = black background";
- ls << "invert,type,bool,value,0,min,0,max,1,tooltip,invert transform";
- ls << "realtive,type,bool,value,1,min,0,max,1,tooltip,0 = absolute transform 1= relative";
+ //ls << "invert,type,bool,value,0,min,0,max,1,tooltip,invert transform";
+ //ls << "relative,type,bool,value,1,min,0,max,1,tooltip,0 = absolute transform 1= relative";
ls << "zoom,type,int,value,0,min,-500,max,500,tooltip,additional zoom during transform";
ls << "optzoom,type,bool,value,1,min,0,max,1,tooltip,use optimal zoom (calulated from transforms)";
ls << "sharpen,type,double,value,0.8,min,0,max,1,decimals,1,tooltip,sharpen transformed image";
}
- //connect(buttonBox,SIGNAL(rejected()), this, SLOT(slotAbortStabilize()));
+ connect(buttonBox->button(QDialogButtonBox::Ok),SIGNAL(clicked()), this, SLOT(slotValidate()));
vbox=new QVBoxLayout(optionsbox);
QHashIterator<QString,QHash<QString,QString> > hi(m_ui_params);
/*if (m_stabilizeProcess.state() != QProcess::NotRunning) {
m_stabilizeProcess.close();
}*/
+ KdenliveSettings::setAdd_new_clip(auto_add->isChecked());
}
QStringList ClipStabilize::params()
params << QString();
// filter
params << m_filtername;
- QStringList filterparamsList;
+ QStringList filterparamsList = m_fixedParams;
QHashIterator <QString,QHash<QString,QString> > it(m_ui_params);
while (it.hasNext()){
it.next();
QString ClipStabilize::destination() const
{
- if (m_count == 1)
+ if (m_urls.count() == 1)
return dest_url->url().path();
else
- return dest_url->url().directory(KUrl::AppendTrailingSlash);
+ return dest_url->url().path(KUrl::AddTrailingSlash);
}
QString ClipStabilize::desc() const
}
+void ClipStabilize::slotValidate()
+{
+ if (m_urls.count() == 1) {
+ if (QFile::exists(dest_url->url().path())) {
+ if (KMessageBox::questionYesNo(this, i18n("File %1 already exists.\nDo you want to overwrite it?", dest_url->url().path() )) == KMessageBox::No) return;
+ }
+ }
+ else {
+ KUrl folder(dest_url->url());
+ QStringList existingFiles;
+ foreach(const QString &path, m_urls) {
+ KUrl dest = folder;
+ dest.addPath(KUrl(path).fileName());
+ if (QFile::exists(dest.path() + ".mlt")) existingFiles.append(dest.path() + ".mlt");
+ }
+ if (!existingFiles.isEmpty()) {
+ if (KMessageBox::warningContinueCancelList(this, i18n("The stabilize job will overwrite the following files:"), existingFiles) == KMessageBox::Cancel) return;
+ }
+ }
+ accept();
+}
#include "clipstabilize.moc"