/* Copyright (C) 2013 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include "lib/version.h" #include "lib/compose.hpp" #include "about_dialog.h" #include "wx_util.h" using std::vector; AboutDialog::AboutDialog (wxWindow* parent) : wxDialog (parent, wxID_ANY, _("About DCP-o-matic")) { wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL); wxBoxSizer* sizer = new wxBoxSizer (wxVERTICAL); wxFont title_font (*wxNORMAL_FONT); title_font.SetPointSize (title_font.GetPointSize() + 12); title_font.SetWeight (wxFONTWEIGHT_BOLD); wxFont subtitle_font (*wxNORMAL_FONT); subtitle_font.SetPointSize (subtitle_font.GetPointSize() + 2); wxFont version_font (*wxNORMAL_FONT); version_font.SetWeight (wxFONTWEIGHT_BOLD); wxStaticText* t = new wxStaticText (this, wxID_ANY, _("DCP-o-matic")); t->SetFont (title_font); sizer->Add (t, wxSizerFlags().Centre().Border(wxALL, 16)); wxString s; if (strcmp (dcpomatic_git_commit, "release") == 0) { t = new wxStaticText (this, wxID_ANY, std_to_wx (String::compose ("Version %1", dcpomatic_version))); } else { t = new wxStaticText (this, wxID_ANY, std_to_wx (String::compose ("Version %1 git %2", dcpomatic_version, dcpomatic_git_commit))); } t->SetFont (version_font); sizer->Add (t, wxSizerFlags().Centre().Border(wxALL, 2)); sizer->AddSpacer (12); t = new wxStaticText ( this, wxID_ANY, _("Free, open-source DCP generation from almost anything."), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER ); t->SetFont (subtitle_font); sizer->Add (t, wxSizerFlags().Centre().Border(wxALL, 8)); wxHyperlinkCtrl* h = new wxHyperlinkCtrl ( this, wxID_ANY, wxT ("dcpomatic.com"), wxT ("http://dcpomatic.com") ); sizer->Add (h, wxSizerFlags().Centre().Border(wxALL, 8)); t = new wxStaticText ( this, wxID_ANY, _("(C) 2012-2014 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER ); sizer->Add (t, wxSizerFlags().Centre().Border(wxLEFT | wxRIGHT, 16)); _notebook = new wxNotebook (this, wxID_ANY); wxArrayString written_by; written_by.Add (wxT ("Carl Hetherington")); written_by.Add (wxT ("Terrence Meiczinger")); written_by.Add (wxT ("Paul Davis")); written_by.Add (wxT ("Ole Laursen")); add_section (_("Written by"), written_by); wxArrayString translated_by; translated_by.Add (wxT ("Olivier Perriere")); translated_by.Add (wxT ("Lilian Lefranc")); translated_by.Add (wxT ("Thierry Journet")); translated_by.Add (wxT ("Massimiliano Broggi")); translated_by.Add (wxT ("William Fanelli")); translated_by.Add (wxT ("Manuel AC")); translated_by.Add (wxT ("Adam Klotblixt")); translated_by.Add (wxT ("Markus Raab")); add_section (_("Translated by"), translated_by); wxArrayString supported_by; supported_by.Add (wxT ("Carsten Kurz")); supported_by.Add (wxT ("Wolfgang Woehl")); supported_by.Add (wxT ("Manual AC")); supported_by.Add (wxT ("Theo Lipfert")); supported_by.Add (wxT ("Olivier Lemaire")); supported_by.Add (wxT ("Mattias Mattsson")); supported_by.Add (wxT ("Andrä Steiner")); supported_by.Add (wxT ("Jonathan Jensen")); supported_by.Add (wxT ("Mike Stiebing")); supported_by.Add (wxT ("Kjarten Michaelsen")); supported_by.Add (wxT ("Jussi Siponen")); supported_by.Add (wxT ("Cinema Clarici")); supported_by.Add (wxT ("Evan Freeze")); supported_by.Add (wxT ("Flor Guillaume")); supported_by.Add (wxT ("Adam Klotblixt ")); supported_by.Add (wxT ("Lilian Lefranc")); supported_by.Add (wxT ("Gavin Lewarne")); supported_by.Add (wxT ("Lasse Salling")); supported_by.Add (wxT ("Andres Fink")); supported_by.Add (wxT ("Kieran Carroll")); supported_by.Add (wxT ("Kambiz Afshar")); supported_by.Add (wxT ("Sean Leigh")); supported_by.Add (wxT ("Wolfram Weber")); supported_by.Add (wxT ("Randy Stankey")); supported_by.Add (wxT ("Frank Cianciolo")); supported_by.Add (wxT ("Rodolfo Giuliano")); supported_by.Add (wxT ("Sylvain Mielle")); supported_by.Add (wxT ("Ivan Pullman")); supported_by.Add (wxT ("Aldo Midali")); supported_by.Add (wxT ("Jeff Boot")); supported_by.Add (wxT ("Filip Kovcin")); supported_by.Add (wxT ("Adam Colt")); supported_by.Add (wxT ("Lindsay Morris")); add_section (_("Supported by"), supported_by); wxArrayString testers; testers.Add (wxT ("Greg Rooke")); testers.Add (wxT ("Olivier Lemaire")); testers.Add (wxT ("Trever Anderson")); testers.Add (wxT ("Wolfgang Woehl")); testers.Add (wxT ("Jonathan Jensen")); testers.Add (wxT ("Anders Nordentoft-Madsen")); testers.Add (wxT ("Lilian Lefranc")); testers.Add (wxT ("Gérald Maruccia")); testers.Add (wxT ("John Convertino")); testers.Add (wxT ("Mike Blakesley")); testers.Add (wxT ("Simon Kesselman")); testers.Add (wxT ("Gavin Lewarne")); testers.Add (wxT ("Thierry Journet")); testers.Add (wxT ("Carsten Kurz")); testers.Add (wxT ("Karim Senoucci")); testers.Add (wxT ("Paul Willmott")); testers.Add (wxT ("Mattias Mattsson")); testers.Add (wxT ("Andreas Eli")); testers.Add (wxT ("Roop Chand")); testers.Add (wxT ("Peter Puchner")); testers.Add (wxT ("David Booty")); testers.Add (wxT ("Maurizio Giampà")); testers.Add (wxT ("Bill Lam")); testers.Add (wxT ("Pepijn Klijs")); testers.Add (wxT ("Will Meadows")); testers.Add (wxT ("Adam Colt")); testers.Add (wxT ("Markus Raab")); add_section (_("Tested by"), testers); sizer->Add (_notebook, wxSizerFlags().Centre().Border(wxALL, 16).Expand()); overall_sizer->Add (sizer); wxSizer* buttons = CreateButtonSizer (wxOK); if (buttons) { overall_sizer->Add (buttons, 1, wxEXPAND | wxALL, 4); } SetSizerAndFit (overall_sizer); } void AboutDialog::add_section (wxString name, wxArrayString credits) { static bool first = true; int const N = 3; wxPanel* panel = new wxPanel (_notebook, wxID_ANY); wxSizer* overall_sizer = new wxBoxSizer (wxHORIZONTAL); vector sizers; for (int i = 0; i < N; ++i) { sizers.push_back (new wxBoxSizer (wxVERTICAL)); overall_sizer->Add (sizers.back (), 1, wxEXPAND | wxALL, 6); } int c = 0; for (size_t i = 0; i < credits.Count(); ++i) { add_label_to_sizer (sizers[c], panel, credits[i], false); ++c; if (c == N) { c = 0; } } panel->SetSizerAndFit (overall_sizer); _notebook->AddPage (panel, name, first); first = false; }