Browse Source

add in code for OK/Cancel/Apply buttons in basic settings window

jp9000 12 years ago
parent
commit
b5bbe74120

+ 2 - 1
build/data/obs-studio/locale/en.txt

@@ -34,7 +34,7 @@ Settings.Outputs="Outputs"
 Settings.Video="Video"
 Settings.Video.Adapter="Video Adapter:"
 Settings.Video.BaseRes="Base Resolution:"
-Settings.Video.DownscaleRes="Output Resolution:"
+Settings.Video.OutputRes="Output Resolution:"
 Settings.Video.DownscaleFilter="Downscale Filter:"
 Settings.Video.DisableAeroWindows="Disable Aero (Windows only)"
 Settings.Video.FPS="FPS:"
@@ -44,6 +44,7 @@ Settings.VIdeo.FPS.Fraction="Frame Interval (fraction)"
 Settings.Video.FPS.Nanoseconds="Frame Interval (nanoseconds)"
 Settings.Video.FPS.Numerator="Numerator:"
 Settings.Video.FPS.Denominator="Denominator:"
+Settings.Video.Renderer="Renderer:"
 Settings.Video.InvalidResolution="Invalid base resolution value.  Must be [width]x[height] (i.e. 1920x1080)"
 
 Settings.Audio="Audio"

+ 1 - 1
obs/settings-basic-video.cpp

@@ -344,7 +344,6 @@ void BasicVideoData::SaveFPSData()
 	}
 
 	config_set_string(GetGlobalConfig(), "Video", "FPSType", type);
-	SaveOther();
 	SaveFPSCommon();
 	SaveFPSInteger();
 	SaveFPSFraction();
@@ -396,6 +395,7 @@ void BasicVideoData::Apply()
 		config_set_uint(GetGlobalConfig(), "Video", "OutputCY", cy);
 	}
 
+	SaveOther();
 	SaveFPSData();
 }
 

+ 44 - 3
obs/window-settings-basic.cpp

@@ -15,6 +15,7 @@
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ******************************************************************************/
 
+#include <wx/msgdlg.h>
 #include "window-settings-basic.hpp"
 
 OBSBasicSettings::OBSBasicSettings(wxWindow *parent)
@@ -46,14 +47,54 @@ void OBSBasicSettings::PageChanged(wxListbookEvent &event)
 	settings = move(unique_ptr<BasicSettingsData>(ptr));
 }
 
+bool OBSBasicSettings::ConfirmChanges()
+{
+	if (settings && settings->DataChanged()) {
+		int confirm = wxMessageBox(WXStr("Settings.Confirm"),
+				WXStr("Settings.ConfirmTitle"),
+				wxYES_NO | wxCANCEL);
+
+		if (confirm == wxCANCEL) {
+			return false;
+		} else if (confirm == wxYES) {
+			settings->Apply();
+			return true;
+		}
+	}
+
+	return true;
+}
+
 void OBSBasicSettings::PageChanging(wxListbookEvent &event)
 {
+	if (!ConfirmChanges())
+		event.Veto();
 }
 
 void OBSBasicSettings::OnClose(wxCloseEvent &event)
 {
-	if(IsModal())
-		EndModal(0);
+	if (!ConfirmChanges())
+		event.Veto();
 	else
-		Destroy();
+		EndModal(0);
+}
+
+void OBSBasicSettings::OKClicked(wxCommandEvent &event)
+{
+	if (settings)
+		settings->Apply();
+
+	EndModal(0);
+}
+
+void OBSBasicSettings::CancelClicked(wxCommandEvent &event)
+{
+	if (ConfirmChanges())
+		EndModal(0);
+}
+
+void OBSBasicSettings::ApplyClicked(wxCommandEvent &event)
+{
+	if (settings)
+		settings->Apply();
 }

+ 6 - 0
obs/window-settings-basic.hpp

@@ -31,6 +31,12 @@ protected:
 	virtual void PageChanging(wxListbookEvent &event);
 	virtual void OnClose(wxCloseEvent &event);
 
+	bool ConfirmChanges();
+
+	virtual void OKClicked(wxCommandEvent &event);
+	virtual void CancelClicked(wxCommandEvent &event);
+	virtual void ApplyClicked(wxCommandEvent &event);
+
 public:
 	OBSBasicSettings(wxWindow *parent);
 };