else {
m_scene->m_tracksList.insert(m_scene->m_tracksList.count() - ix, type);
// insert track in MLT playlist
- m_document->renderer()->mltInsertTrack(m_scene->m_tracksList.count() - ix);
+ m_document->renderer()->mltInsertTrack(m_scene->m_tracksList.count() - ix, type.type == VIDEOTRACK);
double startY = ix * m_tracksHeight + 1 + m_tracksHeight / 2;
QRectF r(0, startY, sceneRect().width(), sceneRect().height() - startY);
return;
}
int length = m_document->renderer()->mltGetSpaceLength(pos, m_scene->m_tracksList.count() - track);
- kDebug()<<"// GOT LENGT; "<<length;
+ //kDebug() << "// GOT LENGT; " << length;
if (length <= 0) {
emit displayMessage(i18n("You must be in an empty space to remove space (time=%1, track:%2)", m_document->timecode().getTimecodeFromFrames(mapToScene(m_menuPosition).x()), track), ErrorMessage);
return;
view.track_nb->setValue(ix);
if (d.exec() == QDialog::Accepted) {
- if (view.before_select->currentIndex() == 2) {
+ if (view.before_select->currentIndex() == 1) {
kDebug() << "// AFTER";
ix++;
}
<label>Default image clip duration.</label>
<default>00:00:05:00</default>
</entry>
+
+ <entry name="videotracks" type="Int">
+ <label>Default number of video tracks.</label>
+ <default>3</default>
+ </entry>
+
+ <entry name="audiotracks" type="Int">
+ <label>Default number of audio tracks.</label>
+ <default>2</default>
+ </entry>
</group>
<group name="display">
void MainWindow::newFile(bool showProjectSettings) {
QString profileName;
KUrl projectFolder;
- QPoint projectTracks(3, 2);
+ QPoint projectTracks(KdenliveSettings::videotracks(), KdenliveSettings::audiotracks());
if (!showProjectSettings && m_timelineArea->count() == 0) {
if (!KdenliveSettings::activatetabs()) closeCurrentDocument();
profileName = KdenliveSettings::default_profile();
} else {
- ProjectSettings *w = new ProjectSettings;
+ ProjectSettings *w = new ProjectSettings(projectTracks.x(), projectTracks.y(), false, this);
if (w->exec() != QDialog::Accepted) return;
if (!KdenliveSettings::activatetabs()) closeCurrentDocument();
profileName = w->selectedProfile();
}
void MainWindow::slotEditProjectSettings() {
- ProjectSettings *w = new ProjectSettings;
+ QPoint p = m_activeTimeline->getTracksCount();
+ ProjectSettings *w = new ProjectSettings(p.x(), p.y(), true, this);
+
if (w->exec() == QDialog::Accepted) {
QString profile = w->selectedProfile();
m_activeDocument->setProfilePath(profile);
#include "profilesdialog.h"
#include "projectsettings.h"
-ProjectSettings::ProjectSettings(QWidget * parent): QDialog(parent), m_isCustomProfile(false) {
+ProjectSettings::ProjectSettings(int videotracks, int audiotracks, bool readOnlyTracks, QWidget * parent): QDialog(parent), m_isCustomProfile(false) {
m_view.setupUi(this);
QMap <QString, QString> profilesInfo = ProfilesDialog::getProfilesInfo();
//buttonOk->setEnabled(false);
m_view.audio_thumbs->setChecked(KdenliveSettings::audiothumbnails());
m_view.video_thumbs->setChecked(KdenliveSettings::videothumbnails());
- m_view.audio_tracks->setValue(2);
- m_view.video_tracks->setValue(3);
+ m_view.audio_tracks->setValue(audiotracks);
+ m_view.video_tracks->setValue(videotracks);
+ if (readOnlyTracks) {
+ m_view.video_tracks->setEnabled(false);
+ m_view.audio_tracks->setEnabled(false);
+ }
slotUpdateDisplay();
connect(m_view.profiles_list, SIGNAL(currentIndexChanged(int)), this, SLOT(slotUpdateDisplay()));
connect(m_view.project_folder, SIGNAL(textChanged(const QString &)), this, SLOT(slotUpdateButton(const QString &)));
Q_OBJECT
public:
- ProjectSettings(QWidget * parent = 0);
+ ProjectSettings(int videotracks, int audiotracks, bool readOnlyTracks, QWidget * parent = 0);
QString selectedProfile() const;
KUrl selectedFolder() const;
QPoint tracks();
Mlt::Service service(m_mltProducer->parent().get_service());
Mlt::Tractor tractor(service);
Mlt::Producer trackProducer(tractor.track(track));
- Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
if (mute) {
if (blind) trackProducer.set("hide", 3);
else trackProducer.set("hide", 2);
return prods;
}
-void Render::mltInsertTrack(int ix) {
+void Render::mltInsertTrack(int ix, bool videoTrack) {
blockSignals(true);
m_isBlocked = true;
if (pos < ct) {
Mlt::Producer *prodToMove = new Mlt::Producer(tractor.track(pos));
tractor.set_track(*playlist, pos);
+ Mlt::Producer newProd(tractor.track(pos));
+ if (!videoTrack) newProd.set("hide", 1);
pos++;
for (; pos <= ct; pos++) {
Mlt::Producer *prodToMove2 = new Mlt::Producer(tractor.track(pos));
void mltMoveTransparency(int startTime, int endTime, int startTrack, int endTrack, int id);
void mltDeleteTransparency(int pos, int track, int id);
void mltResizeTransparency(int oldStart, int newStart, int newEnd, int track, int id);
- void mltInsertTrack(int ix);
+ void mltInsertTrack(int ix, bool videoTrack);
void mltDeleteTrack(int ix);
void mltUpdateClipProducer(int track, int pos, Mlt::Producer *prod);
m_trackview->viewport()->update();
}
+QPoint TrackView::getTracksCount() const {
+ QList <TrackInfo> list = m_trackview->tracksList();
+ int audio = 0;
+ int video = 0;
+ foreach(const TrackInfo &info, list) {
+ if (info.type == VIDEOTRACK) video++;
+ else audio++;
+ }
+ return QPoint(video, audio);
+}
+
void TrackView::slotRebuildTrackHeaders() {
QList <TrackInfo> list = m_trackview->tracksList();
QList<HeaderTrack *> widgets = this->findChildren<HeaderTrack *>();
int outPoint() const;
int inPoint() const;
int fitZoom() const;
-
+ QPoint getTracksCount() const;
public slots:
void slotDeleteClip(const QString &clipId);
<rect>
<x>0</x>
<y>0</y>
- <width>369</width>
- <height>308</height>
+ <width>278</width>
+ <height>340</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_4" >
- <item row="3" column="0" >
+ <item row="0" column="0" colspan="6" >
+ <widget class="QCheckBox" name="kcfg_openlastproject" >
+ <property name="text" >
+ <string>Open last project on startup</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="6" >
+ <widget class="QCheckBox" name="kcfg_crashrecovery" >
+ <property name="text" >
+ <string>Crash recovery (automatic backup)</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="6" >
+ <widget class="QCheckBox" name="kcfg_activatetabs" >
+ <property name="text" >
+ <string>Open projects in new tabs</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="6" >
<widget class="QGroupBox" name="groupBox" >
<property name="title" >
<string>Default Durations</string>
</layout>
</widget>
</item>
- <item row="4" column="0" >
+ <item row="4" column="0" colspan="6" >
<widget class="QGroupBox" name="properties" >
<property name="title" >
<string>Default Profile</string>
</widget>
</item>
<item row="5" column="0" >
- <spacer>
+ <widget class="QLabel" name="label_6" >
+ <property name="text" >
+ <string>Video tracks</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="2" >
+ <spacer name="horizontalSpacer" >
<property name="orientation" >
- <enum>Qt::Vertical</enum>
+ <enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0" >
<size>
- <width>20</width>
- <height>40</height>
+ <width>13</width>
+ <height>25</height>
</size>
</property>
</spacer>
</item>
- <item row="0" column="0" >
- <widget class="QCheckBox" name="kcfg_openlastproject" >
+ <item row="5" column="3" >
+ <widget class="QLabel" name="label_7" >
<property name="text" >
- <string>Open last project on startup</string>
+ <string>Audio tracks</string>
</property>
</widget>
</item>
- <item row="1" column="0" >
- <widget class="QCheckBox" name="kcfg_crashrecovery" >
- <property name="text" >
- <string>Crash recovery (automatic backup)</string>
+ <item row="6" column="0" colspan="6" >
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
</property>
- </widget>
- </item>
- <item row="2" column="0" >
- <widget class="QCheckBox" name="kcfg_activatetabs" >
- <property name="text" >
- <string>Open projects in new tabs</string>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
</property>
- </widget>
+ </spacer>
+ </item>
+ <item row="5" column="1" >
+ <widget class="KIntSpinBox" name="kcfg_videotracks" />
+ </item>
+ <item row="5" column="4" >
+ <widget class="KIntSpinBox" name="kcfg_audiotracks" />
</item>
</layout>
</widget>
<extends>QComboBox</extends>
<header>kcombobox.h</header>
</customwidget>
+ <customwidget>
+ <class>KIntSpinBox</class>
+ <extends>QSpinBox</extends>
+ <header>knuminput.h</header>
+ </customwidget>
<customwidget>
<class>KRestrictedLine</class>
<extends>KLineEdit</extends>