First commit of brand new rewrite
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
#include "aboutdialog.h"
|
||||
#include "ui_aboutdialog.h"
|
||||
|
||||
AboutDialog::AboutDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::AboutDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
}
|
||||
|
||||
AboutDialog::~AboutDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
#ifndef ABOUTDIALOG_H
|
||||
#define ABOUTDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
namespace Ui {
|
||||
class AboutDialog;
|
||||
}
|
||||
|
||||
class AboutDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit AboutDialog(QWidget *parent = 0);
|
||||
~AboutDialog();
|
||||
|
||||
private:
|
||||
Ui::AboutDialog *ui;
|
||||
};
|
||||
|
||||
#endif // ABOUTDIALOG_H
|
||||
@@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>AboutDialog</class>
|
||||
<widget class="QDialog" name="AboutDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>320</width>
|
||||
<height>180</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Olive is a professional video editor.</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
<property name="centerButtons">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>AboutDialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>AboutDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
@@ -0,0 +1,437 @@
|
||||
#include "exportdialog.h"
|
||||
#include "ui_exportdialog.h"
|
||||
|
||||
#include <QOpenGLWidget>
|
||||
#include <QFileDialog>
|
||||
#include <QThread>
|
||||
#include <QDebug>
|
||||
|
||||
#include "panels/panels.h"
|
||||
#include "panels/viewer.h"
|
||||
#include "panels/timeline.h"
|
||||
#include "ui/viewerwidget.h"
|
||||
#include "project/sequence.h"
|
||||
#include "io/exportthread.h"
|
||||
|
||||
extern "C" {
|
||||
#include <libavformat/avformat.h>
|
||||
}
|
||||
|
||||
enum ExportFormats {
|
||||
FORMAT_3GPP,
|
||||
FORMAT_AIFF,
|
||||
FORMAT_APNG,
|
||||
FORMAT_AVI,
|
||||
FORMAT_DNXHD,
|
||||
FORMAT_AC3,
|
||||
FORMAT_FLV,
|
||||
FORMAT_GIF,
|
||||
FORMAT_IMG,
|
||||
FORMAT_MP2,
|
||||
FORMAT_MP3,
|
||||
FORMAT_MPEG1,
|
||||
FORMAT_MPEG2,
|
||||
FORMAT_MPEG4,
|
||||
FORMAT_MPEGTS,
|
||||
FORMAT_MKV,
|
||||
FORMAT_OGG,
|
||||
FORMAT_MOV,
|
||||
FORMAT_WAV,
|
||||
FORMAT_WEBM,
|
||||
FORMAT_WMV,
|
||||
FORMAT_SIZE
|
||||
};
|
||||
|
||||
ExportDialog::ExportDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::ExportDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
format_strings.resize(FORMAT_SIZE);
|
||||
format_strings[FORMAT_3GPP] = "3GPP";
|
||||
format_strings[FORMAT_AIFF] = "AIFF";
|
||||
format_strings[FORMAT_APNG] = "Animated PNG";
|
||||
format_strings[FORMAT_AVI] = "AVI";
|
||||
format_strings[FORMAT_DNXHD] = "DNxHD";
|
||||
format_strings[FORMAT_AC3] = "Dolby Digital (AC3)";
|
||||
format_strings[FORMAT_FLV] = "FLV";
|
||||
format_strings[FORMAT_GIF] = "GIF";
|
||||
format_strings[FORMAT_IMG] = "Image Sequence";
|
||||
format_strings[FORMAT_MP2] = "MP2 Audio";
|
||||
format_strings[FORMAT_MP3] = "MP3 Audio";
|
||||
format_strings[FORMAT_MPEG1] = "MPEG-1 Video";
|
||||
format_strings[FORMAT_MPEG2] = "MPEG-2 Video";
|
||||
format_strings[FORMAT_MPEG4] = "MPEG-4 Video";
|
||||
format_strings[FORMAT_MPEGTS] = "MPEG-TS";
|
||||
format_strings[FORMAT_MKV] = "Matroska MKV";
|
||||
format_strings[FORMAT_OGG] = "Ogg";
|
||||
format_strings[FORMAT_MOV] = "QuickTime MOV";
|
||||
format_strings[FORMAT_WAV] = "WAVE Audio";
|
||||
format_strings[FORMAT_WEBM] = "WebM";
|
||||
format_strings[FORMAT_WMV] = "Windows Media";
|
||||
|
||||
for (int i=0;i<FORMAT_SIZE;i++) {
|
||||
ui->formatCombobox->addItem(format_strings[i]);
|
||||
}
|
||||
ui->formatCombobox->setCurrentIndex(FORMAT_MPEG4);
|
||||
}
|
||||
|
||||
ExportDialog::~ExportDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void ExportDialog::on_formatCombobox_currentIndexChanged(int index)
|
||||
{
|
||||
format_vcodecs.clear();
|
||||
format_acodecs.clear();
|
||||
ui->vcodecCombobox->clear();
|
||||
ui->acodecCombobox->clear();
|
||||
|
||||
int default_vcodec = 0;
|
||||
int default_acodec = 0;
|
||||
|
||||
switch (index) {
|
||||
case FORMAT_3GPP:
|
||||
format_vcodecs.append(AV_CODEC_ID_MPEG4);
|
||||
format_vcodecs.append(AV_CODEC_ID_H264);
|
||||
|
||||
format_acodecs.append(AV_CODEC_ID_AAC);
|
||||
|
||||
default_vcodec = 1;
|
||||
break;
|
||||
case FORMAT_AIFF:
|
||||
format_acodecs.append(AV_CODEC_ID_PCM_S16LE);
|
||||
break;
|
||||
case FORMAT_APNG:
|
||||
format_vcodecs.append(AV_CODEC_ID_APNG);
|
||||
break;
|
||||
case FORMAT_AVI:
|
||||
format_vcodecs.append(AV_CODEC_ID_H264);
|
||||
format_vcodecs.append(AV_CODEC_ID_MPEG4);
|
||||
format_vcodecs.append(AV_CODEC_ID_MJPEG);
|
||||
format_vcodecs.append(AV_CODEC_ID_MSVIDEO1);
|
||||
format_vcodecs.append(AV_CODEC_ID_RAWVIDEO);
|
||||
format_vcodecs.append(AV_CODEC_ID_HUFFYUV);
|
||||
format_vcodecs.append(AV_CODEC_ID_DVVIDEO);
|
||||
|
||||
format_acodecs.append(AV_CODEC_ID_AAC);
|
||||
format_acodecs.append(AV_CODEC_ID_AC3);
|
||||
format_acodecs.append(AV_CODEC_ID_FLAC);
|
||||
format_acodecs.append(AV_CODEC_ID_MP2);
|
||||
format_acodecs.append(AV_CODEC_ID_MP3);
|
||||
format_acodecs.append(AV_CODEC_ID_PCM_S16LE);
|
||||
|
||||
default_vcodec = 3;
|
||||
default_acodec = 5;
|
||||
break;
|
||||
case FORMAT_DNXHD:
|
||||
format_vcodecs.append(AV_CODEC_ID_DNXHD);
|
||||
|
||||
format_acodecs.append(AV_CODEC_ID_PCM_S16LE);
|
||||
break;
|
||||
case FORMAT_AC3:
|
||||
format_acodecs.append(AV_CODEC_ID_AC3);
|
||||
format_acodecs.append(AV_CODEC_ID_EAC3);
|
||||
break;
|
||||
case FORMAT_FLV:
|
||||
format_vcodecs.append(AV_CODEC_ID_FLV1);
|
||||
|
||||
format_acodecs.append(AV_CODEC_ID_MP3);
|
||||
break;
|
||||
case FORMAT_GIF:
|
||||
format_vcodecs.append(AV_CODEC_ID_GIF);
|
||||
break;
|
||||
case FORMAT_IMG:
|
||||
format_vcodecs.append(AV_CODEC_ID_BMP);
|
||||
format_vcodecs.append(AV_CODEC_ID_MJPEG);
|
||||
format_vcodecs.append(AV_CODEC_ID_JPEG2000);
|
||||
format_vcodecs.append(AV_CODEC_ID_PSD);
|
||||
format_vcodecs.append(AV_CODEC_ID_PNG);
|
||||
format_vcodecs.append(AV_CODEC_ID_TIFF);
|
||||
|
||||
default_vcodec = 4;
|
||||
break;
|
||||
case FORMAT_MP2:
|
||||
format_acodecs.append(AV_CODEC_ID_MP2);
|
||||
break;
|
||||
case FORMAT_MP3:
|
||||
format_acodecs.append(AV_CODEC_ID_MP3);
|
||||
break;
|
||||
case FORMAT_MPEG1:
|
||||
format_vcodecs.append(AV_CODEC_ID_MPEG1VIDEO);
|
||||
|
||||
format_acodecs.append(AV_CODEC_ID_AC3);
|
||||
format_acodecs.append(AV_CODEC_ID_MP2);
|
||||
format_acodecs.append(AV_CODEC_ID_MP3);
|
||||
format_acodecs.append(AV_CODEC_ID_PCM_S16LE);
|
||||
|
||||
default_acodec = 1;
|
||||
break;
|
||||
case FORMAT_MPEG2:
|
||||
format_vcodecs.append(AV_CODEC_ID_MPEG2VIDEO);
|
||||
|
||||
format_acodecs.append(AV_CODEC_ID_AC3);
|
||||
format_acodecs.append(AV_CODEC_ID_MP2);
|
||||
format_acodecs.append(AV_CODEC_ID_MP3);
|
||||
format_acodecs.append(AV_CODEC_ID_PCM_S16LE);
|
||||
|
||||
default_acodec = 1;
|
||||
break;
|
||||
case FORMAT_MPEG4:
|
||||
format_vcodecs.append(AV_CODEC_ID_MPEG4);
|
||||
format_vcodecs.append(AV_CODEC_ID_H264);
|
||||
|
||||
format_acodecs.append(AV_CODEC_ID_AAC);
|
||||
format_acodecs.append(AV_CODEC_ID_AC3);
|
||||
format_acodecs.append(AV_CODEC_ID_MP2);
|
||||
format_acodecs.append(AV_CODEC_ID_MP3);
|
||||
|
||||
default_vcodec = 1;
|
||||
break;
|
||||
case FORMAT_MPEGTS:
|
||||
format_vcodecs.append(AV_CODEC_ID_MPEG2VIDEO);
|
||||
|
||||
format_acodecs.append(AV_CODEC_ID_AAC);
|
||||
format_acodecs.append(AV_CODEC_ID_AC3);
|
||||
format_acodecs.append(AV_CODEC_ID_MP2);
|
||||
format_acodecs.append(AV_CODEC_ID_MP3);
|
||||
|
||||
default_acodec = 2;
|
||||
break;
|
||||
case FORMAT_MKV:
|
||||
format_vcodecs.append(AV_CODEC_ID_MPEG4);
|
||||
format_vcodecs.append(AV_CODEC_ID_H264);
|
||||
|
||||
format_acodecs.append(AV_CODEC_ID_AAC);
|
||||
format_acodecs.append(AV_CODEC_ID_AC3);
|
||||
format_acodecs.append(AV_CODEC_ID_EAC3);
|
||||
format_acodecs.append(AV_CODEC_ID_FLAC);
|
||||
format_acodecs.append(AV_CODEC_ID_MP2);
|
||||
format_acodecs.append(AV_CODEC_ID_MP3);
|
||||
format_acodecs.append(AV_CODEC_ID_OPUS);
|
||||
format_acodecs.append(AV_CODEC_ID_PCM_S16LE);
|
||||
format_acodecs.append(AV_CODEC_ID_VORBIS);
|
||||
format_acodecs.append(AV_CODEC_ID_WAVPACK);
|
||||
format_acodecs.append(AV_CODEC_ID_WMAV1);
|
||||
format_acodecs.append(AV_CODEC_ID_WMAV2);
|
||||
|
||||
default_vcodec = 1;
|
||||
break;
|
||||
case FORMAT_OGG:
|
||||
format_vcodecs.append(AV_CODEC_ID_THEORA);
|
||||
|
||||
format_acodecs.append(AV_CODEC_ID_OPUS);
|
||||
format_acodecs.append(AV_CODEC_ID_VORBIS);
|
||||
|
||||
default_acodec = AV_CODEC_ID_VORBIS;
|
||||
break;
|
||||
case FORMAT_MOV:
|
||||
format_vcodecs.append(AV_CODEC_ID_QTRLE);
|
||||
format_vcodecs.append(AV_CODEC_ID_MPEG4);
|
||||
format_vcodecs.append(AV_CODEC_ID_H264);
|
||||
format_vcodecs.append(AV_CODEC_ID_MJPEG);
|
||||
format_vcodecs.append(AV_CODEC_ID_PRORES);
|
||||
|
||||
format_acodecs.append(AV_CODEC_ID_AAC);
|
||||
format_acodecs.append(AV_CODEC_ID_AC3);
|
||||
format_acodecs.append(AV_CODEC_ID_MP2);
|
||||
format_acodecs.append(AV_CODEC_ID_MP3);
|
||||
format_acodecs.append(AV_CODEC_ID_PCM_S16LE);
|
||||
|
||||
default_vcodec = 2;
|
||||
break;
|
||||
case FORMAT_WAV:
|
||||
format_acodecs.append(AV_CODEC_ID_PCM_S16LE);
|
||||
break;
|
||||
case FORMAT_WEBM:
|
||||
format_vcodecs.append(AV_CODEC_ID_VP8);
|
||||
format_vcodecs.append(AV_CODEC_ID_VP9);
|
||||
|
||||
format_acodecs.append(AV_CODEC_ID_OPUS);
|
||||
format_acodecs.append(AV_CODEC_ID_VORBIS);
|
||||
|
||||
default_vcodec = 1;
|
||||
break;
|
||||
case FORMAT_WMV:
|
||||
format_vcodecs.append(AV_CODEC_ID_WMV1);
|
||||
format_vcodecs.append(AV_CODEC_ID_WMV2);
|
||||
|
||||
format_acodecs.append(AV_CODEC_ID_WMAV1);
|
||||
format_acodecs.append(AV_CODEC_ID_WMAV2);
|
||||
|
||||
default_vcodec = 1;
|
||||
default_acodec = 1;
|
||||
break;
|
||||
default:
|
||||
qDebug() << "[ERROR] Invalid format selection - this is a bug, please inform the developers";
|
||||
}
|
||||
|
||||
AVCodec* codec_info;
|
||||
for (int i=0;i<format_vcodecs.size();i++) {
|
||||
codec_info = avcodec_find_encoder((enum AVCodecID) format_vcodecs.at(i));
|
||||
if (codec_info == NULL) {
|
||||
ui->vcodecCombobox->addItem("NULL");
|
||||
} else {
|
||||
ui->vcodecCombobox->addItem(codec_info->long_name);
|
||||
}
|
||||
}
|
||||
for (int i=0;i<format_acodecs.size();i++) {
|
||||
codec_info = avcodec_find_encoder((enum AVCodecID) format_acodecs.at(i));
|
||||
if (codec_info == NULL) {
|
||||
ui->acodecCombobox->addItem("NULL");
|
||||
} else {
|
||||
ui->acodecCombobox->addItem(codec_info->long_name);
|
||||
}
|
||||
}
|
||||
|
||||
ui->vcodecCombobox->setCurrentIndex(default_vcodec);
|
||||
ui->acodecCombobox->setCurrentIndex(default_acodec);
|
||||
|
||||
bool video_enabled = format_vcodecs.size() != 0;
|
||||
bool audio_enabled = format_acodecs.size() != 0;
|
||||
ui->videoGroupbox->setChecked(video_enabled);
|
||||
ui->audioGroupbox->setChecked(audio_enabled);
|
||||
ui->videoGroupbox->setEnabled(video_enabled);
|
||||
ui->audioGroupbox->setEnabled(audio_enabled);
|
||||
}
|
||||
|
||||
void ExportDialog::on_pushButton_2_clicked()
|
||||
{
|
||||
close();
|
||||
}
|
||||
|
||||
void ExportDialog::on_pushButton_clicked()
|
||||
{
|
||||
QString ext;
|
||||
switch (ui->formatCombobox->currentIndex()) {
|
||||
case FORMAT_3GPP:
|
||||
ext = "3gp";
|
||||
break;
|
||||
case FORMAT_AIFF:
|
||||
ext = "aiff";
|
||||
break;
|
||||
case FORMAT_APNG:
|
||||
ext = "apng";
|
||||
break;
|
||||
case FORMAT_AVI:
|
||||
ext = "avi";
|
||||
break;
|
||||
case FORMAT_DNXHD:
|
||||
ext = "mxf";
|
||||
break;
|
||||
case FORMAT_AC3:
|
||||
ext = "ac3";
|
||||
break;
|
||||
case FORMAT_FLV:
|
||||
ext = "flv";
|
||||
break;
|
||||
case FORMAT_GIF:
|
||||
ext = "gif";
|
||||
break;
|
||||
case FORMAT_IMG:
|
||||
// ext_name = "";
|
||||
// ext = "";
|
||||
// ext is determined from codec, but we prevent the switch from going to 'default' here
|
||||
qDebug() << "[INFO] Image export not implemented yet";
|
||||
return;
|
||||
break;
|
||||
case FORMAT_MP3:
|
||||
ext = "mp3";
|
||||
break;
|
||||
case FORMAT_MPEG1:
|
||||
if (ui->videoGroupbox->isChecked() && !ui->audioGroupbox->isChecked()) {
|
||||
ext = "m1v";
|
||||
} else if (!ui->videoGroupbox->isChecked() && ui->audioGroupbox->isChecked()) {
|
||||
ext = "m1a";
|
||||
} else {
|
||||
ext = "mpg";
|
||||
}
|
||||
break;
|
||||
case FORMAT_MPEG2:
|
||||
if (ui->videoGroupbox->isChecked() && !ui->audioGroupbox->isChecked()) {
|
||||
ext = "m2v";
|
||||
} else if (!ui->videoGroupbox->isChecked() && ui->audioGroupbox->isChecked()) {
|
||||
ext = "m2a";
|
||||
} else {
|
||||
ext = "mpg";
|
||||
}
|
||||
break;
|
||||
case FORMAT_MPEG4:
|
||||
if (ui->videoGroupbox->isChecked() && !ui->audioGroupbox->isChecked()) {
|
||||
ext = "m4v";
|
||||
} else if (!ui->videoGroupbox->isChecked() && ui->audioGroupbox->isChecked()) {
|
||||
ext = "m4a";
|
||||
} else {
|
||||
ext = "mp4";
|
||||
}
|
||||
break;
|
||||
case FORMAT_MPEGTS:
|
||||
ext = "ts";
|
||||
break;
|
||||
case FORMAT_MKV:
|
||||
if (!ui->videoGroupbox->isChecked()) {
|
||||
ext = "mka";
|
||||
} else {
|
||||
ext = "mkv";
|
||||
}
|
||||
break;
|
||||
case FORMAT_OGG:
|
||||
ext = "ogg";
|
||||
break;
|
||||
case FORMAT_MOV:
|
||||
ext = "mov";
|
||||
break;
|
||||
case FORMAT_WEBM:
|
||||
ext = "webm";
|
||||
break;
|
||||
case FORMAT_WMV:
|
||||
if (ui->videoGroupbox->isChecked()) {
|
||||
ext = "wmv";
|
||||
} else {
|
||||
ext = "wma";
|
||||
}
|
||||
break;
|
||||
default:
|
||||
qDebug() << "[ERROR] Invalid format - this is a bug, please inform the developers";
|
||||
return;
|
||||
}
|
||||
QString filename = QFileDialog::getSaveFileName(this, "Export Media", "", format_strings[ui->formatCombobox->currentIndex()] + " (*." + ext + ")");
|
||||
if (!filename.isEmpty()) {
|
||||
ExportThread* et = new ExportThread();
|
||||
|
||||
et->surface.create();
|
||||
|
||||
connect(et, SIGNAL(finished()), et, SLOT(deleteLater()));
|
||||
connect(et, SIGNAL(progress_changed(int)), this, SLOT(update_progress_bar(int)));
|
||||
|
||||
panel_viewer->viewer_widget->context()->doneCurrent();
|
||||
panel_viewer->viewer_widget->context()->moveToThread(et);
|
||||
|
||||
et->filename = filename;
|
||||
et->video_enabled = ui->videoGroupbox->isChecked();
|
||||
et->video_codec = format_vcodecs.at(ui->vcodecCombobox->currentIndex());
|
||||
et->video_width = ui->widthSpinbox->value();
|
||||
et->video_height = ui->heightSpinbox->value();
|
||||
et->video_frame_rate = ui->framerateSpinbox->value();
|
||||
et->video_bitrate = ui->videobitrateSpinbox->value();
|
||||
et->audio_enabled = ui->audioGroupbox->isChecked();
|
||||
et->audio_codec = format_acodecs.at(ui->acodecCombobox->currentIndex());
|
||||
et->audio_sampling_rate = 48000;
|
||||
et->audio_bitrate = ui->audiobitrateSpinbox->value();
|
||||
|
||||
et->start();
|
||||
}
|
||||
}
|
||||
|
||||
void ExportDialog::set_defaults(Sequence* s) {
|
||||
ui->widthSpinbox->setValue(s->width);
|
||||
ui->heightSpinbox->setValue(s->height);
|
||||
ui->samplingRateSpinbox->setValue(s->audio_frequency);
|
||||
ui->framerateSpinbox->setValue(s->frame_rate);
|
||||
}
|
||||
|
||||
void ExportDialog::update_progress_bar(int value) {
|
||||
ui->progressBar->setValue(value);
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
#ifndef EXPORTDIALOG_H
|
||||
#define EXPORTDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
namespace Ui {
|
||||
class ExportDialog;
|
||||
}
|
||||
|
||||
struct Sequence;
|
||||
|
||||
class ExportDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ExportDialog(QWidget *parent = 0);
|
||||
~ExportDialog();
|
||||
|
||||
void set_defaults(Sequence* s);
|
||||
|
||||
private slots:
|
||||
void on_formatCombobox_currentIndexChanged(int index);
|
||||
|
||||
void on_pushButton_2_clicked();
|
||||
|
||||
void on_pushButton_clicked();
|
||||
|
||||
void update_progress_bar(int value);
|
||||
|
||||
private:
|
||||
Ui::ExportDialog *ui;
|
||||
|
||||
QVector<QString> format_strings;
|
||||
QVector<int> format_vcodecs;
|
||||
QVector<int> format_acodecs;
|
||||
};
|
||||
|
||||
#endif // EXPORTDIALOG_H
|
||||
@@ -0,0 +1,232 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ExportDialog</class>
|
||||
<widget class="QDialog" name="ExportDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>299</width>
|
||||
<height>372</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Export</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Format: </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="formatCombobox"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="videoGroupbox">
|
||||
<property name="title">
|
||||
<string>Video</string>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Codec:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="vcodecCombobox"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Width:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QSpinBox" name="widthSpinbox">
|
||||
<property name="maximum">
|
||||
<number>16777216</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Height:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QSpinBox" name="heightSpinbox">
|
||||
<property name="maximum">
|
||||
<number>16777216</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>Frame Rate:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QDoubleSpinBox" name="framerateSpinbox">
|
||||
<property name="maximum">
|
||||
<double>60.000000000000000</double>
|
||||
</property>
|
||||
<property name="value">
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>Bitrate (Mbps/CBR):</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QDoubleSpinBox" name="videobitrateSpinbox">
|
||||
<property name="maximum">
|
||||
<double>100.000000000000000</double>
|
||||
</property>
|
||||
<property name="value">
|
||||
<double>2.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="audioGroupbox">
|
||||
<property name="title">
|
||||
<string>Audio</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Codec:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="acodecCombobox"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>Sampling Rate:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QSpinBox" name="samplingRateSpinbox">
|
||||
<property name="maximum">
|
||||
<number>96000</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>Bitrate (Kbps/CBR):</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QSpinBox" name="audiobitrateSpinbox">
|
||||
<property name="maximum">
|
||||
<number>320</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>256</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QProgressBar" name="progressBar">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton">
|
||||
<property name="text">
|
||||
<string>Export</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_2">
|
||||
<property name="text">
|
||||
<string>Cancel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@@ -0,0 +1,110 @@
|
||||
#include "newsequencedialog.h"
|
||||
#include "ui_newsequencedialog.h"
|
||||
|
||||
#include "panels/panels.h"
|
||||
#include "panels/project.h"
|
||||
#include "project/sequence.h"
|
||||
|
||||
#include <QVariant>
|
||||
#include <QDebug>
|
||||
|
||||
extern "C" {
|
||||
#include <libavcodec/avcodec.h>
|
||||
}
|
||||
|
||||
NewSequenceDialog::NewSequenceDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::NewSequenceDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
ui->frame_rate_combobox->addItem("10 FPS", 10.0f);
|
||||
ui->frame_rate_combobox->addItem("12.5 FPS", 12.5f);
|
||||
ui->frame_rate_combobox->addItem("15 FPS", 15.0f);
|
||||
ui->frame_rate_combobox->addItem("25 FPS", 25.0f);
|
||||
ui->frame_rate_combobox->addItem("29.97 FPS", 29.97f);
|
||||
ui->frame_rate_combobox->addItem("30 FPS", (float) 30.0f);
|
||||
ui->frame_rate_combobox->addItem("50 FPS", (float) 50.0f);
|
||||
ui->frame_rate_combobox->addItem("59.94 FPS", (float) 59.94f);
|
||||
ui->frame_rate_combobox->addItem("60 FPS", (float) 60.0f);
|
||||
ui->frame_rate_combobox->setCurrentIndex(4);
|
||||
|
||||
ui->audio_frequency_combobox->addItem("22050 Hz", 22050);
|
||||
ui->audio_frequency_combobox->addItem("24000 Hz", 24000);
|
||||
ui->audio_frequency_combobox->addItem("32000 Hz", 32000);
|
||||
ui->audio_frequency_combobox->addItem("44100 Hz", 44100);
|
||||
ui->audio_frequency_combobox->addItem("48000 Hz", 48000);
|
||||
ui->audio_frequency_combobox->addItem("88200 Hz", 88200);
|
||||
ui->audio_frequency_combobox->addItem("96000 Hz", 96000);
|
||||
ui->audio_frequency_combobox->setCurrentIndex(4);
|
||||
}
|
||||
|
||||
NewSequenceDialog::~NewSequenceDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void NewSequenceDialog::set_sequence_name(const QString& s) {
|
||||
ui->lineEdit->setText(s);
|
||||
}
|
||||
|
||||
void NewSequenceDialog::on_buttonBox_accepted()
|
||||
{
|
||||
Sequence* s = new Sequence();
|
||||
|
||||
s->name = ui->lineEdit->text();
|
||||
s->width = ui->width_numeric->value();
|
||||
s->height = ui->height_numeric->value();
|
||||
s->frame_rate = ui->frame_rate_combobox->currentData().toFloat();
|
||||
s->audio_frequency = ui->audio_frequency_combobox->currentData().toInt();
|
||||
s->audio_layout = AV_CH_LAYOUT_STEREO;
|
||||
|
||||
panel_project->new_sequence(s);
|
||||
}
|
||||
|
||||
void NewSequenceDialog::on_comboBox_currentIndexChanged(int index)
|
||||
{
|
||||
switch (index) {
|
||||
case 0: // FILM 4K
|
||||
ui->width_numeric->setValue(4096);
|
||||
ui->height_numeric->setValue(2160);
|
||||
|
||||
break;
|
||||
case 1: // TV 4K
|
||||
ui->width_numeric->setValue(3840);
|
||||
ui->height_numeric->setValue(2160);
|
||||
break;
|
||||
case 2: // 1080p
|
||||
ui->width_numeric->setValue(1920);
|
||||
ui->height_numeric->setValue(1080);
|
||||
break;
|
||||
case 3: // 720p
|
||||
ui->width_numeric->setValue(1280);
|
||||
ui->height_numeric->setValue(720);
|
||||
break;
|
||||
case 4: // 480p
|
||||
ui->width_numeric->setValue(640);
|
||||
ui->height_numeric->setValue(480);
|
||||
break;
|
||||
case 5: // 360p
|
||||
ui->width_numeric->setValue(640);
|
||||
ui->height_numeric->setValue(360);
|
||||
break;
|
||||
case 6: // 240p
|
||||
ui->width_numeric->setValue(320);
|
||||
ui->height_numeric->setValue(240);
|
||||
break;
|
||||
case 7: // 144p
|
||||
ui->width_numeric->setValue(192);
|
||||
ui->height_numeric->setValue(144);
|
||||
break;
|
||||
case 8: // NTSC (480i)
|
||||
ui->width_numeric->setValue(720);
|
||||
ui->height_numeric->setValue(480);
|
||||
break;
|
||||
case 9: // PAL (576i)
|
||||
ui->width_numeric->setValue(720);
|
||||
ui->height_numeric->setValue(576);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
#ifndef NEWSEQUENCEDIALOG_H
|
||||
#define NEWSEQUENCEDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
class Project;
|
||||
|
||||
namespace Ui {
|
||||
class NewSequenceDialog;
|
||||
}
|
||||
|
||||
class NewSequenceDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit NewSequenceDialog(QWidget *parent = 0);
|
||||
~NewSequenceDialog();
|
||||
void set_sequence_name(const QString& s);
|
||||
|
||||
private slots:
|
||||
void on_buttonBox_accepted();
|
||||
|
||||
void on_comboBox_currentIndexChanged(int index);
|
||||
|
||||
private:
|
||||
Ui::NewSequenceDialog *ui;
|
||||
};
|
||||
|
||||
#endif // NEWSEQUENCEDIALOG_H
|
||||
@@ -0,0 +1,360 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>NewSequenceDialog</class>
|
||||
<widget class="QDialog" name="NewSequenceDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>298</width>
|
||||
<height>341</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>New Sequence</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Preset: </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="comboBox">
|
||||
<property name="currentIndex">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Film 4K</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>TV 4K (Ultra HD/2160p)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>1080p</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>720p</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>480p</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>360p</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>240p</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>144p</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>NTSC (480i)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>PAL (576i)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Custom</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Video</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="2" colspan="2">
|
||||
<widget class="QSpinBox" name="height_numeric">
|
||||
<property name="maximum">
|
||||
<number>9999</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>1080</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2" colspan="2">
|
||||
<widget class="QSpinBox" name="width_numeric">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>9999</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>1920</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Width: </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Pixel Aspect Ratio: </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Interlacing:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Height: </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="2" colspan="2">
|
||||
<widget class="QComboBox" name="par_combobox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Square Pixels (1.0)</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="2" colspan="2">
|
||||
<widget class="QComboBox" name="interlacing_combobox">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>None (Progressive)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Upper Field First</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Lower Field First</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2" colspan="2">
|
||||
<widget class="QComboBox" name="frame_rate_combobox"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>Frame Rate:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Audio</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Sample Rate: </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="audio_frequency_combobox"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_2" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>Name: </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit">
|
||||
<property name="text">
|
||||
<string>Sequence 01</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
<property name="centerButtons">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>NewSequenceDialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>NewSequenceDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
Reference in New Issue
Block a user