未验证 提交 1dc3edc8 编写于 作者: C Colin Edwards 提交者: GitHub

Merge pull request #1694 from cg2121/audio-mixer-copy-filters

UI: Add ability to copy & paste filters from the mixer
...@@ -2792,6 +2792,9 @@ void OBSBasic::VolControlContextMenu() ...@@ -2792,6 +2792,9 @@ void OBSBasic::VolControlContextMenu()
QAction unhideAllAction(QTStr("UnhideAll"), this); QAction unhideAllAction(QTStr("UnhideAll"), this);
QAction mixerRenameAction(QTStr("Rename"), this); QAction mixerRenameAction(QTStr("Rename"), this);
QAction copyFiltersAction(QTStr("Copy.Filters"), this);
QAction pasteFiltersAction(QTStr("Paste.Filters"), this);
QAction filtersAction(QTStr("Filters"), this); QAction filtersAction(QTStr("Filters"), this);
QAction propertiesAction(QTStr("Properties"), this); QAction propertiesAction(QTStr("Properties"), this);
QAction advPropAction(QTStr("Basic.MainMenu.Edit.AdvAudio"), this); QAction advPropAction(QTStr("Basic.MainMenu.Edit.AdvAudio"), this);
...@@ -2813,6 +2816,13 @@ void OBSBasic::VolControlContextMenu() ...@@ -2813,6 +2816,13 @@ void OBSBasic::VolControlContextMenu()
this, &OBSBasic::MixerRenameSource, this, &OBSBasic::MixerRenameSource,
Qt::DirectConnection); Qt::DirectConnection);
connect(&copyFiltersAction, &QAction::triggered,
this, &OBSBasic::AudioMixerCopyFilters,
Qt::DirectConnection);
connect(&pasteFiltersAction, &QAction::triggered,
this, &OBSBasic::AudioMixerPasteFilters,
Qt::DirectConnection);
connect(&filtersAction, &QAction::triggered, connect(&filtersAction, &QAction::triggered,
this, &OBSBasic::GetAudioSourceFilters, this, &OBSBasic::GetAudioSourceFilters,
Qt::DirectConnection); Qt::DirectConnection);
...@@ -2836,6 +2846,11 @@ void OBSBasic::VolControlContextMenu() ...@@ -2836,6 +2846,11 @@ void OBSBasic::VolControlContextMenu()
mixerRenameAction.setProperty("volControl", mixerRenameAction.setProperty("volControl",
QVariant::fromValue<VolControl*>(vol)); QVariant::fromValue<VolControl*>(vol));
copyFiltersAction.setProperty("volControl",
QVariant::fromValue<VolControl*>(vol));
pasteFiltersAction.setProperty("volControl",
QVariant::fromValue<VolControl*>(vol));
filtersAction.setProperty("volControl", filtersAction.setProperty("volControl",
QVariant::fromValue<VolControl*>(vol)); QVariant::fromValue<VolControl*>(vol));
propertiesAction.setProperty("volControl", propertiesAction.setProperty("volControl",
...@@ -2843,11 +2858,19 @@ void OBSBasic::VolControlContextMenu() ...@@ -2843,11 +2858,19 @@ void OBSBasic::VolControlContextMenu()
/* ------------------- */ /* ------------------- */
if (copyFiltersString == nullptr)
pasteFiltersAction.setEnabled(false);
else
pasteFiltersAction.setEnabled(true);
QMenu popup; QMenu popup;
popup.addAction(&unhideAllAction); popup.addAction(&unhideAllAction);
popup.addAction(&hideAction); popup.addAction(&hideAction);
popup.addAction(&mixerRenameAction); popup.addAction(&mixerRenameAction);
popup.addSeparator(); popup.addSeparator();
popup.addAction(&copyFiltersAction);
popup.addAction(&pasteFiltersAction);
popup.addSeparator();
popup.addAction(&toggleControlLayoutAction); popup.addAction(&toggleControlLayoutAction);
popup.addSeparator(); popup.addSeparator();
popup.addAction(&filtersAction); popup.addAction(&filtersAction);
...@@ -6773,6 +6796,30 @@ void OBSBasic::on_actionPasteDup_triggered() ...@@ -6773,6 +6796,30 @@ void OBSBasic::on_actionPasteDup_triggered()
on_actionPasteTransform_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() void OBSBasic::on_actionCopyFilters_triggered()
{ {
OBSSceneItem item = GetCurrentSceneItem(); OBSSceneItem item = GetCurrentSceneItem();
......
...@@ -155,7 +155,7 @@ private: ...@@ -155,7 +155,7 @@ private:
bool fullscreenInterface = false; bool fullscreenInterface = false;
const char *copyString; const char *copyString;
const char *copyFiltersString; const char *copyFiltersString = nullptr;
bool copyVisible = true; bool copyVisible = true;
QScopedPointer<QThread> updateCheckThread; QScopedPointer<QThread> updateCheckThread;
...@@ -522,6 +522,9 @@ private slots: ...@@ -522,6 +522,9 @@ private slots:
void on_actionShowAbout_triggered(); void on_actionShowAbout_triggered();
void AudioMixerCopyFilters();
void AudioMixerPasteFilters();
private: private:
/* OBS Callbacks */ /* OBS Callbacks */
static void SceneReordered(void *data, calldata_t *params); static void SceneReordered(void *data, calldata_t *params);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册