Browse Source

UI: Add helper class to translate message box buttons

jp9000 8 years ago
parent
commit
bd34dce8b6
2 changed files with 62 additions and 0 deletions
  1. 46 0
      UI/qt-wrappers.cpp
  2. 16 0
      UI/qt-wrappers.hpp

+ 46 - 0
UI/qt-wrappers.cpp

@@ -16,6 +16,8 @@
 ******************************************************************************/
 
 #include "qt-wrappers.hpp"
+#include "obs-app.hpp"
+
 #include <graphics/graphics.h>
 #include <QWidget>
 #include <QLayout>
@@ -42,6 +44,50 @@ void OBSErrorBox(QWidget *parent, const char *msg, ...)
 	va_end(args);
 }
 
+QMessageBox::StandardButton OBSMessageBox::question(
+		QWidget *parent,
+		const QString &title,
+		const QString &text,
+		QMessageBox::StandardButtons buttons,
+		QMessageBox::StandardButton defaultButton)
+{
+	QMessageBox mb(QMessageBox::Question,
+			title, text, buttons,
+			parent);
+	mb.setDefaultButton(defaultButton);
+#define translate_button(x) \
+	if (buttons & QMessageBox::x) \
+		mb.setButtonText(QMessageBox::x, QTStr(#x));
+	translate_button(Ok);
+	translate_button(Open);
+	translate_button(Save);
+	translate_button(Cancel);
+	translate_button(Close);
+	translate_button(Discard);
+	translate_button(Apply);
+	translate_button(Reset);
+	translate_button(Yes);
+	translate_button(No);
+	translate_button(No);
+	translate_button(Abort);
+	translate_button(Retry);
+	translate_button(Ignore);
+#undef translate_button
+	return (QMessageBox::StandardButton)mb.exec();
+}
+
+void OBSMessageBox::information(
+		QWidget *parent,
+		const QString &title,
+		const QString &text)
+{
+	QMessageBox mb(QMessageBox::Information,
+			title, text, QMessageBox::Ok,
+			parent);
+	mb.setButtonText(QMessageBox::Ok, QTStr("OK"));
+	mb.exec();
+}
+
 void QTToGSWindow(WId windowId, gs_window &gswindow)
 {
 #ifdef _WIN32

+ 16 - 0
UI/qt-wrappers.hpp

@@ -17,6 +17,7 @@
 
 #pragma once
 
+#include <QMessageBox>
 #include <QWidget>
 #include <obs.hpp>
 
@@ -29,8 +30,23 @@
 class QDataStream;
 class QWidget;
 class QLayout;
+class QString;
 struct gs_window;
 
+class OBSMessageBox {
+public:
+	static QMessageBox::StandardButton question(
+			QWidget *parent,
+			const QString &title,
+			const QString &text,
+			QMessageBox::StandardButtons buttons = QMessageBox::StandardButtons( QMessageBox::Yes | QMessageBox::No ),
+			QMessageBox::StandardButton defaultButton = QMessageBox::NoButton);
+	static void information(
+			QWidget *parent,
+			const QString &title,
+			const QString &text);
+};
+
 void OBSErrorBox(QWidget *parent, const char *msg, ...);
 
 void QTToGSWindow(WId windowId, gs_window &gswindow);