brokenClips.clear();
if (addCommand->childCount() > 0) m_commandStack->push(addCommand);
else delete addCommand;
+
+ // Automatic audio split
+ if (KdenliveSettings::splitaudio())
+ splitAudio();
setDocumentModified();
/*
if (!clip->isItemLocked()) transitionInfos.append(clip->info());
}
}
- if (clipInfos.count() > 0) {
+ if (clipInfos.count() > 0)
new GroupClipsCommand(this, clipInfos, transitionInfos, false, deleteSelected);
- }
}
}
}
}
-
void CustomTrackView::loadGroups(const QDomNodeList groups)
{
for (int i = 0; i < groups.count(); i++) {
resetSelectionGroup();
QList<QGraphicsItem *> selection = scene()->selectedItems();
if (selection.isEmpty()) {
- emit displayMessage(i18n("You must select one clip for this action"), ErrorMessage);
+ emit displayMessage(i18n("You must select at least one clip for this action"), ErrorMessage);
return;
}
QUndoCommand *splitCommand = new QUndoCommand();
viewport()->update();
}
-void CustomTrackView::selectClip(bool add, bool group)
+void CustomTrackView::selectClip(bool add, bool group, int track, int pos)
{
- QRectF rect(m_cursorPos, m_selectedTrack * m_tracksHeight + m_tracksHeight / 2, 1, 1);
+ QRectF rect;
+ if (track != -1 && pos != -1)
+ rect = QRectF(pos, track * m_tracksHeight + m_tracksHeight / 2, 1, 1);
+ else
+ rect = QRectF(m_cursorPos, m_selectedTrack * m_tracksHeight + m_tracksHeight / 2, 1, 1);
QList<QGraphicsItem *> selection = m_scene->items(rect);
resetSelectionGroup(group);
if (!group) m_scene->clearSelection();
adjustTimelineClips(OVERWRITEEDIT, NULL, info, addCommand);
new AddTimelineClipCommand(this, clip->toXML(), clip->getId(), info, EffectsList(), true, false, true, false, addCommand);
m_commandStack->push(addCommand);
+
+ selectClip(true, false, m_selectedTrack, in);
+ // Automatic audio split
+ if (KdenliveSettings::splitaudio())
+ splitAudio();
}
void CustomTrackView::clearSelection()
int selectedTrack() const;
QStringList selectedClips() const;
QList<ClipItem *> selectedClipItems() const;
- void selectClip(bool add, bool group = false);
+ /** @brief Selects a clip.
+ * @param add Whether to select or deselect
+ * @param group (optional) Whether to add the clip to a group
+ * @param track (optional) The track of the clip (has to be combined with @param pos)
+ * @param pos (optional) The position of the clip (has to be combined with @param track) */
+ void selectClip(bool add, bool group = false, int track = -1, int pos = -1);
void selectTransition(bool add, bool group = false);
QStringList extractTransitionsLumas();
void setEditMode(EDITMODE mode);
<label>active project format.</label>
<default></default>
</entry>
+
+ <entry name="splitaudio" type="Bool">
+ <label>Automatically split audio and video.</label>
+ <default>false</default>
+ </entry>
</group>
<group name="display">
toolbar->addSeparator();
+ //create automatic audio split button
+ m_buttonAutomaticSplitAudio = new KAction(KIcon("kdenlive-split-audio"), i18n("Split audio and video automatically"), this);
+ toolbar->addAction(m_buttonAutomaticSplitAudio);
+ m_buttonAutomaticSplitAudio->setCheckable(true);
+ m_buttonAutomaticSplitAudio->setChecked(KdenliveSettings::splitaudio());
+ connect(m_buttonAutomaticSplitAudio, SIGNAL(triggered()), this, SLOT(slotSwitchSplitAudio()));
+
m_buttonVideoThumbs = new KAction(KIcon("kdenlive-show-videothumb"), i18n("Show video thumbnails"), this);
toolbar->addAction(m_buttonVideoThumbs);
m_buttonVideoThumbs->setCheckable(true);
m_buttonSnap->setChecked(KdenliveSettings::snaptopoints());
connect(m_buttonSnap, SIGNAL(triggered()), this, SLOT(slotSwitchSnap()));
+ actionWidget = toolbar->widgetForAction(m_buttonAutomaticSplitAudio);
+ actionWidget->setMaximumWidth(max);
+ actionWidget->setMaximumHeight(max - 4);
+
actionWidget = toolbar->widgetForAction(m_buttonVideoThumbs);
actionWidget->setMaximumWidth(max);
actionWidget->setMaximumHeight(max - 4);
collection->addAction("razor_tool", m_buttonRazorTool);
collection->addAction("spacer_tool", m_buttonSpacerTool);
+ collection->addAction("automatic_split_audio", m_buttonAutomaticSplitAudio);
collection->addAction("show_video_thumbs", m_buttonVideoThumbs);
collection->addAction("show_audio_thumbs", m_buttonAudioThumbs);
collection->addAction("show_markers", m_buttonShowMarkers);
}
+void MainWindow::slotSwitchSplitAudio()
+{
+ KdenliveSettings::setSplitaudio(!KdenliveSettings::splitaudio());
+ m_buttonAutomaticSplitAudio->setChecked(KdenliveSettings::splitaudio());
+}
void MainWindow::slotSwitchVideoThumbs()
{
KAction *m_buttonVideoThumbs;
KAction *m_buttonShowMarkers;
KAction *m_buttonFitZoom;
+ KAction *m_buttonAutomaticSplitAudio;
KAction *m_normalEditTool;
KAction *m_overwriteEditTool;
KAction *m_insertEditTool;
void slotDetectAudioDriver();
void slotEditProjectSettings();
void slotDisplayActionMessage(QAction *a);
+ /** @brief Turns automatic splitting of audio and video on/off. */
+ void slotSwitchSplitAudio();
void slotSwitchVideoThumbs();
void slotSwitchAudioThumbs();
void slotSwitchMarkersComments();
</property>
</widget>
</item>
- <item row="4" column="0" colspan="6">
+ <item row="5" column="0" colspan="6">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Default Durations</string>
</layout>
</widget>
</item>
- <item row="5" column="0" colspan="6">
+ <item row="6" column="0" colspan="6">
<widget class="QGroupBox" name="properties">
<property name="title">
<string>Default Profile</string>
</layout>
</widget>
</item>
- <item row="6" column="0">
+ <item row="7" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Video tracks</string>
</property>
</widget>
</item>
- <item row="6" column="2">
+ <item row="7" column="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</spacer>
</item>
- <item row="6" column="3">
+ <item row="7" column="3">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Audio tracks</string>
</property>
</widget>
</item>
- <item row="7" column="0" colspan="6">
+ <item row="8" column="0" colspan="6">
<spacer>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</spacer>
</item>
- <item row="6" column="1">
+ <item row="7" column="1">
<widget class="KIntSpinBox" name="kcfg_videotracks"/>
</item>
- <item row="6" column="4">
+ <item row="7" column="4">
<widget class="KIntSpinBox" name="kcfg_audiotracks"/>
</item>
<item row="3" column="0" colspan="5">
</property>
</widget>
</item>
+ <item row="4" column="0" colspan="5">
+ <widget class="QCheckBox" name="kcfg_splitaudio">
+ <property name="text">
+ <string>Automatically split audio from video</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
<customwidgets>