2 Copyright (C) 2013-2017 Carl Hetherington <cth@carlh.net>
4 This file is part of DCP-o-matic.
6 DCP-o-matic is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 DCP-o-matic is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
21 /** @file src/wx/about_dialog.cc
22 * @brief The "about DCP-o-matic" dialogue box.
25 #include "about_dialog.h"
27 #include "lib/version.h"
28 #include "lib/compose.hpp"
29 #include <wx/notebook.h>
30 #include <wx/hyperlink.h>
34 AboutDialog::AboutDialog (wxWindow* parent)
35 : wxDialog (parent, wxID_ANY, _("About DCP-o-matic"))
37 wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL);
38 wxBoxSizer* sizer = new wxBoxSizer (wxVERTICAL);
40 wxFont title_font (*wxNORMAL_FONT);
41 title_font.SetPointSize (title_font.GetPointSize() + 12);
42 title_font.SetWeight (wxFONTWEIGHT_BOLD);
44 wxFont subtitle_font (*wxNORMAL_FONT);
45 subtitle_font.SetPointSize (subtitle_font.GetPointSize() + 2);
47 wxFont version_font (*wxNORMAL_FONT);
48 version_font.SetWeight (wxFONTWEIGHT_BOLD);
50 wxStaticText* t = new wxStaticText (this, wxID_ANY, _("DCP-o-matic"));
51 t->SetFont (title_font);
52 sizer->Add (t, wxSizerFlags().Centre().Border(wxALL, 16));
55 if (strcmp (dcpomatic_git_commit, "release") == 0) {
56 t = new wxStaticText (this, wxID_ANY, std_to_wx (String::compose ("Version %1", dcpomatic_version)));
58 t = new wxStaticText (this, wxID_ANY, std_to_wx (String::compose ("Version %1 git %2", dcpomatic_version, dcpomatic_git_commit)));
60 t->SetFont (version_font);
61 sizer->Add (t, wxSizerFlags().Centre().Border(wxALL, 2));
62 sizer->AddSpacer (12);
64 t = new wxStaticText (
66 _("Free, open-source DCP creation from almost anything."),
67 wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER
69 t->SetFont (subtitle_font);
71 sizer->Add (t, wxSizerFlags().Centre().Border(wxALL, 8));
73 wxHyperlinkCtrl* h = new wxHyperlinkCtrl (
75 wxT ("dcpomatic.com"),
76 wxT ("http://dcpomatic.com")
79 sizer->Add (h, wxSizerFlags().Centre().Border(wxALL, 8));
81 t = new wxStaticText (
83 _("(C) 2012-2018 Carl Hetherington, Terrence Meiczinger\n Ole Laursen, Brecht Sanders"),
84 wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER
87 sizer->Add (t, wxSizerFlags().Centre().Border(wxLEFT | wxRIGHT, 16));
89 _notebook = new wxNotebook (this, wxID_ANY);
91 wxArrayString written_by;
92 written_by.Add (wxT ("Carl Hetherington"));
93 written_by.Add (wxT ("Terrence Meiczinger"));
94 written_by.Add (wxT ("Ole Laursen"));
95 written_by.Add (wxT ("Brecht Sanders"));
96 written_by.Add (wxT ("Jianguo Huang"));
97 add_section (_("Written by"), written_by);
99 wxArrayString translated_by;
100 translated_by.Add (wxT ("Manuel AC"));
101 translated_by.Add (wxT ("Max Aeschlimann"));
102 translated_by.Add (wxT ("Thiago Andre"));
103 translated_by.Add (wxT ("Grégoire Ausina"));
104 translated_by.Add (wxT ("Tomáš Begeni"));
105 translated_by.Add (wxT ("Fabio \"Zak\" Belli"));
106 translated_by.Add (wxT ("Cherif Ben Brahim"));
107 translated_by.Add (wxT ("Massimiliano Broggi"));
108 translated_by.Add (wxT ("Davide Dall'AraCiao"));
109 translated_by.Add (wxT ("William Fanelli"));
110 translated_by.Add (wxT ("Max M. Fuhlendorf"));
111 translated_by.Add (wxT ("Tomáš Hlaváč"));
112 translated_by.Add (wxT ("Thierry Journet"));
113 translated_by.Add (wxT ("Adam Klotblixt"));
114 translated_by.Add (wxT ("Theo Kooijmans"));
115 translated_by.Add (wxT ("Carsten Kurz"));
116 translated_by.Add (wxT ("Lilian Lefranc"));
117 translated_by.Add (wxT ("Gérald Maruccia"));
118 translated_by.Add (wxT ("Mike Mazur"));
119 translated_by.Add (wxT ("Rob van Nieuwkerk"));
120 translated_by.Add (wxT ("Anders Uhl Pedersen"));
121 translated_by.Add (wxT ("Olivier Perriere"));
122 translated_by.Add (wxT ("Markus Raab"));
123 translated_by.Add (wxT ("Tiago Casal Ribeiro"));
124 translated_by.Add (wxT ("Davide Sanvito"));
125 translated_by.Add (wxT ("Marek Skrzelowski"));
126 translated_by.Add (wxT ("Igor Voytovich"));
127 translated_by.Add (wxT ("Rov (若文)"));
128 translated_by.Add (wxT ("刘汉源"));
129 add_section (_("Translated by"), translated_by);
131 wxArrayString with_help_from;
132 with_help_from.Add (wxT ("David Vignoni"));
133 with_help_from.Add (wxT ("Dennis Couzin"));
134 with_help_from.Add (wxT ("Gérald Maruccia"));
135 with_help_from.Add (wxT ("Julian van Mil"));
136 add_section (_("With help from"), with_help_from);
138 wxArrayString supported_by;
139 #include "../../build/supporters.cc"
140 add_section (_("Supported by"), supported_by);
142 wxArrayString tested_by;
143 tested_by.Add (wxT ("Manuel AC"));
144 tested_by.Add (wxT ("Trever Anderson"));
145 tested_by.Add (wxT ("Mike Blakesley"));
146 tested_by.Add (wxT ("David Booty"));
147 tested_by.Add (wxT ("Roop Chand"));
148 tested_by.Add (wxT ("Daniel Chauvet"));
149 tested_by.Add (wxT ("Adam Colt"));
150 tested_by.Add (wxT ("John Convertino"));
151 tested_by.Add (wxT ("Andreas Eli"));
152 tested_by.Add (wxT ("Leo Enticknap"));
153 tested_by.Add (wxT ("Jose Angel Velasco Fernandez"));
154 tested_by.Add (wxT ("Maurizio Giampà"));
155 tested_by.Add (wxT ("Luke Granger-Brown"));
156 tested_by.Add (wxT ("Sumit Guha"));
157 tested_by.Add (wxT ("Steve Guttag"));
158 tested_by.Add (wxT ("Patrick Haderer"));
159 tested_by.Add (wxT ("Bill Hamell"));
160 tested_by.Add (wxT ("Jonathan Jensen"));
161 tested_by.Add (wxT ("Thierry Journet"));
162 tested_by.Add (wxT ("Markus Kalb"));
163 tested_by.Add (wxT ("Ada de Kamper"));
164 tested_by.Add (wxT ("Stefan Karner"));
165 tested_by.Add (wxT ("Adam Keay"));
166 tested_by.Add (wxT ("Simon Kesselman"));
167 tested_by.Add (wxT ("Pepijn Klijs"));
168 tested_by.Add (wxT ("Denzil Kriekenbeek"));
169 tested_by.Add (wxT ("Carsten Kurz"));
170 tested_by.Add (wxT ("Bill Lam"));
171 tested_by.Add (wxT ("Lilian Lefranc"));
172 tested_by.Add (wxT ("Olivier Lemaire"));
173 tested_by.Add (wxT ("Gavin Lewarne"));
174 tested_by.Add (wxT ("Gérald Maruccia"));
175 tested_by.Add (wxT ("George Mazarakis"));
176 tested_by.Add (wxT ("Mattias Mattsson"));
177 tested_by.Add (wxT ("Will Meadows"));
178 tested_by.Add (wxT ("Brad Miller"));
179 tested_by.Add (wxT ("Ash Mitchell"));
180 tested_by.Add (wxT ("Rob van Nieuwkerk"));
181 tested_by.Add (wxT ("Anders Nordentoft-Madsen"));
182 tested_by.Add (wxT ("Mauro Ottonello"));
183 tested_by.Add (wxT ("Peter Puchner"));
184 tested_by.Add (wxT ("Markus Raab"));
185 tested_by.Add (wxT ("Michael Reckert"));
186 tested_by.Add (wxT ("Greg Rooke"));
187 tested_by.Add (wxT ("Elad Saad"));
188 tested_by.Add (wxT ("Karim Senoucci"));
189 tested_by.Add (wxT ("Hordur Valgardsson"));
190 tested_by.Add (wxT ("Xenophon the Vampire"));
191 tested_by.Add (wxT ("Simon Vannarath"));
192 tested_by.Add (wxT ("Igor Voytovich"));
193 tested_by.Add (wxT ("Andrew Walls"));
194 tested_by.Add (wxT ("Andreas Weiss"));
195 tested_by.Add (wxT ("Paul Willmott"));
196 tested_by.Add (wxT ("Wolfgang Woehl"));
197 add_section (_("Tested by"), tested_by);
199 sizer->Add (_notebook, wxSizerFlags().Centre().Border(wxALL, 16).Expand());
201 overall_sizer->Add (sizer);
203 wxSizer* buttons = CreateButtonSizer (wxOK);
205 overall_sizer->Add (buttons, 1, wxEXPAND | wxALL, 4);
208 SetSizerAndFit (overall_sizer);
211 /** Add a section of credits.
212 * @param name Name of section.
213 * @param credits List of names.
216 AboutDialog::add_section (wxString name, wxArrayString credits)
218 static bool first = true;
221 wxScrolledWindow* panel = new wxScrolledWindow (_notebook);
222 panel->SetMaxSize (wxSize (-1, 380));
223 panel->EnableScrolling (false, true);
224 panel->SetScrollRate (0, 32);
225 wxSizer* overall_sizer = new wxBoxSizer (wxHORIZONTAL);
227 vector<wxSizer*> sizers;
229 for (int i = 0; i < N; ++i) {
230 sizers.push_back (new wxBoxSizer (wxVERTICAL));
231 overall_sizer->Add (sizers.back (), 1, wxEXPAND | wxALL, 6);
235 for (size_t i = 0; i < credits.Count(); ++i) {
236 add_label_to_sizer (sizers[c], panel, credits[i], false);
243 panel->SetSizerAndFit (overall_sizer);
244 _notebook->AddPage (panel, name, first);