UI: Add ability to copy & paste filters from the mixer

This commit is contained in:
Clayton Groeneveld
2019-02-26 06:58:53 -06:00
parent 484c3847fc
commit ad55f413bb
2 changed files with 51 additions and 1 deletions

View File

@@ -2775,6 +2775,9 @@ void OBSBasic::VolControlContextMenu()
QAction unhideAllAction(QTStr("UnhideAll"), this);
QAction mixerRenameAction(QTStr("Rename"), this);
QAction copyFiltersAction(QTStr("Copy.Filters"), this);
QAction pasteFiltersAction(QTStr("Paste.Filters"), this);
QAction filtersAction(QTStr("Filters"), this);
QAction propertiesAction(QTStr("Properties"), this);
QAction advPropAction(QTStr("Basic.MainMenu.Edit.AdvAudio"), this);
@@ -2796,6 +2799,13 @@ void OBSBasic::VolControlContextMenu()
this, &OBSBasic::MixerRenameSource,
Qt::DirectConnection);
connect(&copyFiltersAction, &QAction::triggered,
this, &OBSBasic::AudioMixerCopyFilters,
Qt::DirectConnection);
connect(&pasteFiltersAction, &QAction::triggered,
this, &OBSBasic::AudioMixerPasteFilters,
Qt::DirectConnection);
connect(&filtersAction, &QAction::triggered,
this, &OBSBasic::GetAudioSourceFilters,
Qt::DirectConnection);
@@ -2819,6 +2829,11 @@ void OBSBasic::VolControlContextMenu()
mixerRenameAction.setProperty("volControl",
QVariant::fromValue<VolControl*>(vol));
copyFiltersAction.setProperty("volControl",
QVariant::fromValue<VolControl*>(vol));
pasteFiltersAction.setProperty("volControl",
QVariant::fromValue<VolControl*>(vol));
filtersAction.setProperty("volControl",
QVariant::fromValue<VolControl*>(vol));
propertiesAction.setProperty("volControl",
@@ -2826,11 +2841,19 @@ void OBSBasic::VolControlContextMenu()
/* ------------------- */
if (copyFiltersString == nullptr)
pasteFiltersAction.setEnabled(false);
else
pasteFiltersAction.setEnabled(true);
QMenu popup;
popup.addAction(&unhideAllAction);
popup.addAction(&hideAction);
popup.addAction(&mixerRenameAction);
popup.addSeparator();
popup.addAction(&copyFiltersAction);
popup.addAction(&pasteFiltersAction);
popup.addSeparator();
popup.addAction(&toggleControlLayoutAction);
popup.addSeparator();
popup.addAction(&filtersAction);
@@ -6727,6 +6750,30 @@ void OBSBasic::on_actionPasteDup_triggered()
on_actionPasteTransform_triggered();
}
void OBSBasic::AudioMixerCopyFilters()
{
QAction *action = reinterpret_cast<QAction*>(sender());
VolControl *vol = action->property("volControl").value<VolControl*>();
obs_source_t *source = vol->GetSource();
copyFiltersString = obs_source_get_name(source);
}
void OBSBasic::AudioMixerPasteFilters()
{
QAction *action = reinterpret_cast<QAction*>(sender());
VolControl *vol = action->property("volControl").value<VolControl*>();
obs_source_t *dstSource = vol->GetSource();
OBSSource source = obs_get_source_by_name(copyFiltersString);
obs_source_release(source);
if (source == dstSource)
return;
obs_source_copy_filters(dstSource, source);
}
void OBSBasic::on_actionCopyFilters_triggered()
{
OBSSceneItem item = GetCurrentSceneItem();