فهرست منبع

UI: Clean up Settings Output form

- Adds frames around certain elements for a better element hierarchy
- Moves the scroll areas into the tabs themselves
- Hides stacked widgets that aren't visible to prevent scrolling of invisible content
Warchamp7 4 سال پیش
والد
کامیت
f9e7d237ad
3فایلهای تغییر یافته به همراه663 افزوده شده و 557 حذف شده
  1. 4 0
      UI/data/locale/en-US.ini
  2. 640 550
      UI/forms/OBSBasicSettings.ui
  3. 19 7
      UI/window-basic-settings.cpp

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

@@ -941,6 +941,7 @@ Basic.Settings.Output.NoSpaceFileName="Generate File Name without Space"
 Basic.Settings.Output.Adv.Rescale="Rescale Output"
 Basic.Settings.Output.Adv.AudioTrack="Audio Track"
 Basic.Settings.Output.Adv.Streaming="Streaming"
+Basic.Settings.Output.Adv.Streaming.Settings="Streaming Settings"
 Basic.Settings.Output.Adv.Audio.Track1="Track 1"
 Basic.Settings.Output.Adv.Audio.Track2="Track 2"
 Basic.Settings.Output.Adv.Audio.Track3="Track 3"
@@ -948,9 +949,11 @@ Basic.Settings.Output.Adv.Audio.Track4="Track 4"
 Basic.Settings.Output.Adv.Audio.Track5="Track 5"
 Basic.Settings.Output.Adv.Audio.Track6="Track 6"
 Basic.Settings.Output.Adv.TwitchVodTrack="Twitch VOD Track"
+Basic.Settings.Output.Adv.Encoder="Encoder Settings"
 
 # basic mode 'output' settings - advanced section - recording subsection
 Basic.Settings.Output.Adv.Recording="Recording"
+Basic.Settings.Output.Adv.Recording.Settings="Recording Settings"
 Basic.Settings.Output.Adv.Recording.RecType="Recording Type"
 Basic.Settings.Output.Adv.Recording.Type="Type"
 Basic.Settings.Output.Adv.Recording.Type.Standard="Standard"
@@ -979,6 +982,7 @@ Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Audio Encoder Settings (if an
 Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Muxer Settings (if any)"
 Basic.Settings.Output.Adv.FFmpeg.GOPSize="Keyframe interval (frames)"
 Basic.Settings.Output.Adv.FFmpeg.IgnoreCodecCompat="Show all codecs (even if potentially incompatible)"
+Basic.Settings.Output.Adv.FFmpeg.Settings="FFmpeg Settings"
 Basic.Settings.Output.EnableSplitFile="Automatic File Splitting"
 Basic.Settings.Output.SplitFile.TypeTime="Split by Time"
 Basic.Settings.Output.SplitFile.TypeSize="Split by Size"

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 640 - 550
UI/forms/OBSBasicSettings.ui


+ 19 - 7
UI/window-basic-settings.cpp

@@ -1892,7 +1892,8 @@ OBSBasicSettings::CreateEncoderPropertyView(const char *encoder,
 	view = new OBSPropertiesView(
 		settings.Get(), encoder,
 		(PropertiesReloadCallback)obs_get_encoder_properties, 170);
-	view->setFrameShape(QFrame::StyledPanel);
+	view->setFrameShape(QFrame::NoFrame);
+	view->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
 	view->setProperty("changed", QVariant(changed));
 	QObject::connect(view, SIGNAL(Changed()), this, SLOT(OutputsChanged()));
 
@@ -1907,7 +1908,9 @@ void OBSBasicSettings::LoadAdvOutputStreamingEncoderProperties()
 	delete streamEncoderProps;
 	streamEncoderProps =
 		CreateEncoderPropertyView(type, "streamEncoder.json");
-	ui->advOutputStreamTab->layout()->addWidget(streamEncoderProps);
+	streamEncoderProps->setSizePolicy(QSizePolicy::Preferred,
+					  QSizePolicy::Minimum);
+	ui->advOutEncoderLayout->addWidget(streamEncoderProps);
 
 	connect(streamEncoderProps, SIGNAL(Changed()), this,
 		SLOT(UpdateStreamDelayEstimate()));
@@ -2019,7 +2022,10 @@ void OBSBasicSettings::LoadAdvOutputRecordingEncoderProperties()
 	if (astrcmpi(type, "none") != 0) {
 		recordEncoderProps =
 			CreateEncoderPropertyView(type, "recordEncoder.json");
-		ui->advOutRecStandard->layout()->addWidget(recordEncoderProps);
+		recordEncoderProps->setSizePolicy(QSizePolicy::Preferred,
+						  QSizePolicy::Minimum);
+		ui->advOutRecEncoderProps->layout()->addWidget(
+			recordEncoderProps);
 		connect(recordEncoderProps, SIGNAL(Changed()), this,
 			SLOT(AdvReplayBufferChanged()));
 	}
@@ -3985,7 +3991,9 @@ void OBSBasicSettings::on_advOutEncoder_currentIndexChanged(int idx)
 		streamEncoderProps = CreateEncoderPropertyView(
 			QT_TO_UTF8(encoder),
 			loadSettings ? "streamEncoder.json" : nullptr, true);
-		ui->advOutputStreamTab->layout()->addWidget(streamEncoderProps);
+		streamEncoderProps->setSizePolicy(QSizePolicy::Preferred,
+						  QSizePolicy::Minimum);
+		ui->advOutEncoderLayout->addWidget(streamEncoderProps);
 	}
 
 	ui->advOutUseRescale->setVisible(true);
@@ -4005,6 +4013,7 @@ void OBSBasicSettings::on_advOutRecEncoder_currentIndexChanged(int idx)
 		ui->advOutRecUseRescale->setChecked(false);
 		ui->advOutRecUseRescale->setVisible(false);
 		ui->advOutRecRescaleContainer->setVisible(false);
+		ui->advOutRecEncoderProps->setVisible(false);
 		return;
 	}
 
@@ -4015,13 +4024,17 @@ void OBSBasicSettings::on_advOutRecEncoder_currentIndexChanged(int idx)
 		recordEncoderProps = CreateEncoderPropertyView(
 			QT_TO_UTF8(encoder),
 			loadSettings ? "recordEncoder.json" : nullptr, true);
-		ui->advOutRecStandard->layout()->addWidget(recordEncoderProps);
+		recordEncoderProps->setSizePolicy(QSizePolicy::Preferred,
+						  QSizePolicy::Minimum);
+		ui->advOutRecEncoderProps->layout()->addWidget(
+			recordEncoderProps);
 		connect(recordEncoderProps, SIGNAL(Changed()), this,
 			SLOT(AdvReplayBufferChanged()));
 	}
 
 	ui->advOutRecUseRescale->setVisible(true);
 	ui->advOutRecRescaleContainer->setVisible(true);
+	ui->advOutRecEncoderProps->setVisible(true);
 }
 
 void OBSBasicSettings::on_advOutFFIgnoreCompat_stateChanged(int)
@@ -5037,8 +5050,7 @@ void OBSBasicSettings::AdvReplayBufferChanged()
 	else
 		ui->advRBEstimate->setText(QTStr(ESTIMATE_UNKNOWN_STR));
 
-	ui->advReplayBufferGroupBox->setVisible(!lossless &&
-						replayBufferEnabled);
+	ui->advReplayBufferFrame->setEnabled(!lossless && replayBufferEnabled);
 	ui->advReplayBuf->setEnabled(!lossless);
 
 	UpdateAutomaticReplayBufferCheckboxes();

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است