2 Copyright (C) 2013-2021 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/>.
22 /** @file src/wx/about_dialog.cc
23 * @brief The "about DCP-o-matic" dialogue box.
26 #include "about_dialog.h"
27 #include "static_text.h"
29 #include "lib/compose.hpp"
30 #include "lib/version.h"
31 #include <dcp/warnings.h>
32 LIBDCP_DISABLE_WARNINGS
33 #include <wx/notebook.h>
34 #include <wx/hyperlink.h>
35 LIBDCP_ENABLE_WARNINGS
40 AboutDialog::AboutDialog (wxWindow* parent)
41 : wxDialog (parent, wxID_ANY, _("About DCP-o-matic"))
43 auto overall_sizer = new wxBoxSizer (wxVERTICAL);
44 auto sizer = new wxBoxSizer (wxVERTICAL);
46 wxFont title_font (*wxNORMAL_FONT);
47 title_font.SetPointSize (title_font.GetPointSize() + 12);
48 title_font.SetWeight (wxFONTWEIGHT_BOLD);
50 wxFont subtitle_font (*wxNORMAL_FONT);
51 subtitle_font.SetPointSize (subtitle_font.GetPointSize() + 2);
53 wxFont version_font (*wxNORMAL_FONT);
54 version_font.SetWeight (wxFONTWEIGHT_BOLD);
56 auto t = new StaticText (this, _("DCP-o-matic"));
57 t->SetFont (title_font);
58 sizer->Add (t, wxSizerFlags().Centre().Border(wxALL, 16));
61 if (strcmp (dcpomatic_git_commit, "release") == 0) {
62 t = new StaticText (this, std_to_wx(String::compose("Version %1", dcpomatic_version)));
64 t = new StaticText (this, std_to_wx(String::compose("Version %1 git %2", dcpomatic_version, dcpomatic_git_commit)));
66 t->SetFont (version_font);
67 sizer->Add (t, wxSizerFlags().Centre().Border(wxALL, 2));
68 sizer->AddSpacer (12);
72 _("Free, open-source DCP creation from almost anything."),
73 wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER
75 t->SetFont (subtitle_font);
77 sizer->Add (t, wxSizerFlags().Centre().Border(wxALL, 8));
79 auto h = new wxHyperlinkCtrl (
81 wxT ("dcpomatic.com"),
82 wxT ("https://dcpomatic.com")
85 sizer->Add (h, wxSizerFlags().Centre().Border(wxALL, 8));
89 _("(C) 2012-2023 Carl Hetherington, Terrence Meiczinger\n Ole Laursen"),
90 wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER
93 sizer->Add (t, wxSizerFlags().Centre().Border(wxLEFT | wxRIGHT, 16));
95 _notebook = new wxNotebook (this, wxID_ANY);
97 wxArrayString written_by;
98 written_by.Add (wxT ("Carl Hetherington"));
99 written_by.Add (wxT ("Terrence Meiczinger"));
100 written_by.Add (wxT ("Mart Jansink"));
101 written_by.Add (wxT ("Ole Laursen"));
102 add_section (_("Written by"), written_by);
104 wxArrayString with_help_from;
105 with_help_from.Add (wxT ("David Vignoni"));
106 with_help_from.Add (wxT ("Dennis Couzin"));
107 with_help_from.Add (wxT ("Carsten Kurz"));
108 with_help_from.Add (wxT ("Gérald Maruccia"));
109 with_help_from.Add (wxT ("Julian van Mil"));
110 with_help_from.Add (wxT ("Lilian Lefranc"));
111 add_section (_("With help from"), with_help_from);
113 wxArrayString translated_by;
114 translated_by.Add (wxT ("Manuel AC"));
115 translated_by.Add (wxT ("Max Aeschlimann"));
116 translated_by.Add (wxT ("Gökhan Aksoy"));
117 translated_by.Add (wxT ("Thiago Andre"));
118 translated_by.Add (wxT ("Felice D'Andrea"));
119 translated_by.Add (wxT ("Németh Áron"));
120 translated_by.Add (wxT ("Grégoire Ausina"));
121 translated_by.Add (wxT ("Tomáš Begeni"));
122 translated_by.Add (wxT ("Fabio \"Zak\" Belli"));
123 translated_by.Add (wxT ("Cherif Ben Brahim"));
124 translated_by.Add (wxT ("Massimiliano Broggi"));
125 translated_by.Add (wxT ("Dan Cohen"));
126 translated_by.Add (wxT ("Davide Dall'AraCiao"));
127 translated_by.Add (wxT ("Uwe Dittes"));
128 translated_by.Add (wxT ("Михаил Эпштейн"));
129 translated_by.Add (wxT ("William Fanelli"));
130 translated_by.Add (wxT ("Max M. Fuhlendorf"));
131 translated_by.Add (wxT ("Tomáš Hlaváč"));
132 translated_by.Add (wxT ("Thierry Journet"));
133 translated_by.Add (wxT ("Adam Klotblixt"));
134 translated_by.Add (wxT ("Theo Kooijmans"));
135 translated_by.Add (wxT ("Carsten Kurz"));
136 translated_by.Add (wxT ("Lilian Lefranc"));
137 translated_by.Add (wxT ("Gérald Maruccia"));
138 translated_by.Add (wxT ("Mattias Mattsson"));
139 translated_by.Add (wxT ("Mike Mazur"));
140 translated_by.Add (wxT ("Rob van Nieuwkerk"));
141 translated_by.Add (wxT ("Anders Uhl Pedersen"));
142 translated_by.Add (wxT ("David Perrenoud"));
143 translated_by.Add (wxT ("Olivier Perriere"));
144 translated_by.Add (wxT ("Markus Raab"));
145 translated_by.Add (wxT ("Tiago Casal Ribeiro"));
146 translated_by.Add (wxT ("Davide Sanvito"));
147 translated_by.Add (wxT ("Marek Skrzelowski"));
148 translated_by.Add (wxT ("Danbo Song"));
149 translated_by.Add (wxT ("Martin Srebotnjak"));
150 translated_by.Add (wxT ("Michał Tomaszewski"));
151 translated_by.Add (wxT ("Igor Voytovich"));
152 translated_by.Add (wxT ("Rov (若文)"));
153 translated_by.Add (wxT ("刘汉源"));
154 add_section (_("Translated by"), translated_by);
156 wxArrayString patrons;
157 patrons.Add ("Lightbender Post");
158 patrons.Add ("Drop-out Cinema");
159 patrons.Add ("Root & Rust Creative");
160 add_section (_("Patrons"), patrons);
162 wxArrayString subscribers;
163 #include "subscribers.cc"
164 add_section (_("Subscribers"), subscribers);
166 wxArrayString supported_by;
167 #include "supporters.cc"
168 add_section (_("Also supported by"), supported_by);
170 wxArrayString tested_by;
171 tested_by.Add (wxT ("Manuel AC"));
172 tested_by.Add (wxT ("Trever Anderson"));
173 tested_by.Add (wxT ("Mohamad W. Ali"));
174 tested_by.Add (wxT ("JP Beauviala"));
175 tested_by.Add (wxT ("Mike Blakesley"));
176 tested_by.Add (wxT ("David Booty"));
177 tested_by.Add (wxT ("Antonio Casado"));
178 tested_by.Add (wxT ("Roop Chand"));
179 tested_by.Add (wxT ("Daniel Chauvet"));
180 tested_by.Add (wxT ("Adam Colt"));
181 tested_by.Add (wxT ("John Convertino"));
182 tested_by.Add (wxT ("Daniel Courville"));
183 tested_by.Add (wxT ("Marek Dudzik"));
184 tested_by.Add (wxT ("Andreas Eli"));
185 tested_by.Add (wxT ("Leo Enticknap"));
186 tested_by.Add (wxT ("Jose Angel Velasco Fernandez"));
187 tested_by.Add (wxT ("Maurizio Giampà"));
188 tested_by.Add (wxT ("Luke Granger-Brown"));
189 tested_by.Add (wxT ("Sumit Guha"));
190 tested_by.Add (wxT ("Steve Guttag"));
191 tested_by.Add (wxT ("Patrick Haderer"));
192 tested_by.Add (wxT ("Bill Hamell"));
193 tested_by.Add (wxT ("Groet Han"));
194 tested_by.Add (wxT ("Jonathan Jensen"));
195 tested_by.Add (wxT ("Thierry Journet"));
196 tested_by.Add (wxT ("Markus Kalb"));
197 tested_by.Add (wxT ("Ada de Kamper"));
198 tested_by.Add (wxT ("Stefan Karner"));
199 tested_by.Add (wxT ("Adam Keay"));
200 tested_by.Add (wxT ("Simon Kesselman"));
201 tested_by.Add (wxT ("Pepijn Klijs"));
202 tested_by.Add (wxT ("Denzil Kriekenbeek"));
203 tested_by.Add (wxT ("Carsten Kurz"));
204 tested_by.Add (wxT ("Bill Lam"));
205 tested_by.Add (wxT ("David Lankes"));
206 tested_by.Add (wxT ("Lilian Lefranc"));
207 tested_by.Add (wxT ("Sebastian Leitner"));
208 tested_by.Add (wxT ("Olivier Lemaire"));
209 tested_by.Add (wxT ("Gavin Lewarne"));
210 tested_by.Add (wxT ("Gérald Maruccia"));
211 tested_by.Add (wxT ("George Mazarakis"));
212 tested_by.Add (wxT ("Mattias Mattsson"));
213 tested_by.Add (wxT ("Will Meadows"));
214 tested_by.Add (wxT ("Brad Miller"));
215 tested_by.Add (wxT ("Ash Mitchell"));
216 tested_by.Add (wxT ("Rob van Nieuwkerk"));
217 tested_by.Add (wxT ("Anders Nordentoft-Madsen"));
218 tested_by.Add (wxT ("Mauro Ottonello"));
219 tested_by.Add (wxT ("Peter Puchner"));
220 tested_by.Add (wxT ("Markus Raab"));
221 tested_by.Add (wxT ("Michael Reckert"));
222 tested_by.Add (wxT ("Greg Rooke"));
223 tested_by.Add (wxT ("Elad Saad"));
224 tested_by.Add (wxT ("Karim Senoucci"));
225 tested_by.Add (wxT ("Hordur Valgardsson"));
226 tested_by.Add (wxT ("Xenophon the Vampire"));
227 tested_by.Add (wxT ("Simon Vannarath"));
228 tested_by.Add (wxT ("Igor Voytovich"));
229 tested_by.Add (wxT ("Andrew Walls"));
230 tested_by.Add (wxT ("Andreas Weiss"));
231 tested_by.Add (wxT ("Paul Willmott"));
232 tested_by.Add (wxT ("Wolfgang Woehl"));
233 add_section (_("Tested by"), tested_by);
235 sizer->Add (_notebook, wxSizerFlags().Centre().Border(wxALL, 16));
237 overall_sizer->Add (sizer);
239 wxSizer* buttons = CreateButtonSizer (wxOK);
241 overall_sizer->Add (buttons, 1, wxEXPAND | wxALL, 4);
244 SetSizerAndFit (overall_sizer);
247 /** Add a section of credits.
248 * @param name Name of section.
249 * @param credits List of names.
252 AboutDialog::add_section (wxString name, wxArrayString credits)
254 static auto first = true;
257 auto panel = new wxScrolledWindow (_notebook);
258 panel->SetMaxSize (wxSize (-1, 380));
259 panel->EnableScrolling (false, true);
260 panel->SetScrollRate (0, 32);
261 auto overall_sizer = new wxBoxSizer (wxHORIZONTAL);
263 vector<wxSizer*> sizers;
265 for (int i = 0; i < N; ++i) {
266 sizers.push_back (new wxBoxSizer (wxVERTICAL));
267 overall_sizer->Add (sizers.back (), 1, wxEXPAND | wxALL, 6);
271 for (size_t i = 0; i < credits.Count(); ++i) {
272 add_label_to_sizer (sizers[c], panel, credits[i], false);
279 panel->SetSizerAndFit (overall_sizer);
280 _notebook->AddPage (panel, name, first);