Extract all uses of DCP-o-matic name to allow branding.
[dcpomatic.git] / src / wx / system_information_dialog.cc
index ed93a4ab42f57e5bc7409a760b3679d4dca9af74..26138900a602b4934103263ae342d0adfb7e32bd 100644 (file)
@@ -23,6 +23,7 @@
 #include "gl_video_view.h"
 #include "system_information_dialog.h"
 #include "wx_util.h"
+#include "wx_variant.h"
 
 
 #ifdef DCPOMATIC_OSX
@@ -39,29 +40,47 @@ using std::weak_ptr;
 using std::shared_ptr;
 
 
-SystemInformationDialog::SystemInformationDialog (wxWindow* parent, weak_ptr<FilmViewer> weak_viewer)
+#if wxCHECK_VERSION(3, 1, 0)
+
+SystemInformationDialog::SystemInformationDialog(wxWindow* parent, FilmViewer const& viewer)
        : TableDialog (parent, _("System information"), 2, 1, false)
 {
-       auto viewer = weak_viewer.lock ();
-       shared_ptr<const GLVideoView> gl;
-       if (viewer) {
-               gl = std::dynamic_pointer_cast<const GLVideoView>(viewer->video_view());
-       }
+       auto gl = std::dynamic_pointer_cast<const GLVideoView>(viewer.video_view());
 
        if (!gl) {
                add (_("OpenGL version"), true);
-               add (_("unknown (OpenGL not enabled in DCP-o-matic)"), false);
+               add(variant::wx::insert_dcpomatic(_("unknown (OpenGL not enabled in %s)")), false);
        } else {
-               add (_("OpenGL version"), true);
-               auto v = reinterpret_cast<char const *>(glGetString(GL_VERSION));
-               if (v) {
-                       add (std_to_wx(v), false);
-               } else {
-                       add (_("unknown"), false);
-               }
+               auto information = gl->information();
+               auto add_string = [this, &information](GLenum name, wxString label) {
+                       add (label, true);
+                       auto i = information.find(name);
+                       if (i != information.end()) {
+                               add (std_to_wx(i->second), false);
+                       } else {
+                               add (_("unknown"), false);
+                       }
+               };
+
+               add_string (GL_VENDOR, _("Vendor"));
+               add_string (GL_RENDERER, _("Renderer"));
+               add_string (GL_VERSION, _("Version"));
+               add_string (GL_SHADING_LANGUAGE_VERSION, _("Shading language version"));
+
                add (_("vsync"), true);
                add (gl->vsync_enabled() ? _("enabled") : _("not enabled"), false);
        }
 
        layout ();
 }
+
+#else
+
+SystemInformationDialog::SystemInformationDialog(wxWindow* parent, FilmViewer const&)
+       : TableDialog (parent, _("System information"), 2, 1, false)
+{
+       add (_("OpenGL version"), true);
+       add(variant::wx::insert_dcpomatic(_("OpenGL renderer not supported by this %s version")), false);
+}
+
+#endif