1
0
Эх сурвалжийг харах

UI: Add ability to rename audio sources from the mixer

This adds the ability for users to change the names of audio sources
from the mixer including desktop and mic/aux sources.

Closes jp9000/obs-studio#1055
cg2121 8 жил өмнө
parent
commit
e86754c2a0

+ 5 - 0
UI/data/locale/en-US.ini

@@ -344,6 +344,11 @@ AddProfile.Text="Please enter the name of the profile"
 # rename profile dialog
 RenameProfile.Title="Rename Profile"
 
+# rename audio source in mixer
+Basic.Main.MixerRename.Title="Rename Audio Source"
+Basic.Main.MixerRename.Text="Please enter the name of the audio source"
+
+
 # preview window disabled
 Basic.Main.PreviewDisabled="Preview is currently disabled"
 

+ 49 - 0
UI/window-basic-main.cpp

@@ -2285,6 +2285,48 @@ void OBSBasic::ToggleHideMixer()
 	}
 }
 
+void OBSBasic::MixerRenameSource()
+{
+	QAction *action = reinterpret_cast<QAction*>(sender());
+	VolControl *vol = action->property("volControl").value<VolControl*>();
+	OBSSource source = vol->GetSource();
+
+	const char *prevName = obs_source_get_name(source);
+
+	for (;;) {
+		string name;
+		bool accepted = NameDialog::AskForName(this,
+				QTStr("Basic.Main.MixerRename.Title"),
+				QTStr("Basic.Main.MixerRename.Text"),
+				name,
+				QT_UTF8(prevName));
+		if (!accepted)
+			return;
+
+		if (name.empty()) {
+			OBSMessageBox::information(this,
+					QTStr("NoNameEntered.Title"),
+					QTStr("NoNameEntered.Text"));
+			continue;
+		}
+
+		obs_source_t *sourceTest =
+				obs_get_source_by_name(name.c_str());
+
+		if (sourceTest) {
+			OBSMessageBox::information(this,
+					QTStr("NameExists.Title"),
+					QTStr("NameExists.Text"));
+			continue;
+		}
+
+		obs_source_set_name(source, name.c_str());
+		obs_source_release(sourceTest);
+
+		break;
+	}
+}
+
 void OBSBasic::VolControlContextMenu()
 {
 	VolControl *vol = reinterpret_cast<VolControl*>(sender());
@@ -2293,6 +2335,7 @@ void OBSBasic::VolControlContextMenu()
 
 	QAction hideAction(QTStr("Hide"), this);
 	QAction unhideAllAction(QTStr("UnhideAll"), this);
+	QAction mixerRenameAction(QTStr("Rename"), this);
 
 	QAction filtersAction(QTStr("Filters"), this);
 	QAction propertiesAction(QTStr("Properties"), this);
@@ -2306,6 +2349,9 @@ void OBSBasic::VolControlContextMenu()
 	connect(&unhideAllAction, &QAction::triggered,
 			this, &OBSBasic::UnhideAllAudioControls,
 			Qt::DirectConnection);
+	connect(&mixerRenameAction, &QAction::triggered,
+			this, &OBSBasic::MixerRenameSource,
+			Qt::DirectConnection);
 
 	connect(&filtersAction, &QAction::triggered,
 			this, &OBSBasic::GetAudioSourceFilters,
@@ -2321,6 +2367,8 @@ void OBSBasic::VolControlContextMenu()
 
 	hideAction.setProperty("volControl",
 			QVariant::fromValue<VolControl*>(vol));
+	mixerRenameAction.setProperty("volControl",
+			QVariant::fromValue<VolControl*>(vol));
 
 	filtersAction.setProperty("volControl",
 			QVariant::fromValue<VolControl*>(vol));
@@ -2332,6 +2380,7 @@ void OBSBasic::VolControlContextMenu()
 	QMenu popup(this);
 	popup.addAction(&unhideAllAction);
 	popup.addAction(&hideAction);
+	popup.addAction(&mixerRenameAction);
 	popup.addSeparator();
 	popup.addAction(&filtersAction);
 	popup.addAction(&propertiesAction);

+ 2 - 0
UI/window-basic-main.hpp

@@ -434,6 +434,8 @@ private slots:
 	void UnhideAllAudioControls();
 	void ToggleHideMixer();
 
+	void MixerRenameSource();
+
 	void on_mixerScrollArea_customContextMenuRequested();
 
 	void on_actionCopySource_triggered();