work around bug or feature of string_compose()
[ardour.git] / gtk2_ardour / about.cc
1 /*
2     Copyright (C) 2003 Paul Davis
3
4     This program is free software; you can redistribute it and/or modify
5     it under the terms of the GNU General Public License as published by
6     the Free Software Foundation; either version 2 of the License, or
7     (at your option) any later version.
8
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13
14     You should have received a copy of the GNU General Public License
15     along with this program; if not, write to the Free Software
16     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
18 */
19
20 #include <algorithm>
21 #include <unistd.h>
22 #include <sys/types.h>
23 #include <cstdio>
24 #include <ctime>
25 #include <cstdlib>
26
27 #include "pbd/error.h"
28 #include "pbd/file_utils.h"
29 #include "pbd/openuri.h"
30
31 #include "ardour/profile.h"
32 #include "ardour/revision.h"
33 #include "ardour/filesystem_paths.h"
34
35 #include "about.h"
36 #include "configinfo.h"
37 #include "rgb_macros.h"
38
39 #include "i18n.h"
40
41 #ifdef WAF_BUILD
42 #include "gtk2ardour-version.h"
43 #endif
44
45 using namespace Gtk;
46 using namespace Gdk;
47 using namespace std;
48 using namespace ARDOUR;
49 using namespace PBD;
50
51 #ifndef CODENAME
52 #define CODENAME ""
53 #endif
54
55 #ifdef WITH_PAYMENT_OPTIONS
56
57 /* XPM */
58 static const gchar * paypal_xpm[] = {
59 "62 31 33 1",
60 "       c None",
61 ".      c #325781",
62 "+      c #154170",
63 "@      c #C1CDDA",
64 "#      c #4E6E92",
65 "$      c #D1D5DA",
66 "%      c #88A0B8",
67 "&      c #B4C4D3",
68 "*      c #C8D3DE",
69 "=      c #D7E1E9",
70 "-      c #002158",
71 ";      c #F6F8FA",
72 ">      c #44658B",
73 ",      c #E7ECF0",
74 "'      c #A4B7CA",
75 ")      c #9DB0C4",
76 "!      c #E3F1F7",
77 "~      c #708CA9",
78 "{      c #E1E7ED",
79 "]      c #567698",
80 "^      c #7C96B1",
81 "/      c #E7F5FA",
82 "(      c #EEF1F4",
83 "_      c #6883A2",
84 ":      c #244873",
85 "<      c #BBBBBB",
86 "[      c #E9E9E9",
87 "}      c #063466",
88 "|      c #22364D",
89 "1      c #94A7BD",
90 "2      c #000000",
91 "3      c #EAF7FC",
92 "4      c #FFFFFF",
93 "1'111111111111111111111111111111111111111111111111111111111%_#",
94 "%333333333333333333333333333333333333333333333333333333333333.",
95 "%444444444444444444444444444444444444444444444444444444444444:",
96 "_4333333!!!!!!33333333333333333333!!!!!!33333333333!%%%%1334[:",
97 "_444444@+}}}}+>)44444444444444444,:}}}}}.^(44444444@}..+.44($:",
98 "_433333^:&&&&)_}_33///33333333333&+)&&&'~+./3///333^.(;#]33($:",
99 "_444444>_444444'}_>...#%####~,]##..444444=+#]...>1;#_4;.144($:",
100 "_43333!+'4,>#=4(:+_%%%]}}#~#}_+~~:]44_>&44#}_%%%_+>:14=}@33($:",
101 "_44444*+$4&--)4(+%44444%-)4=--'4{+14,}-~44##44444&}}*4)+444($:",
102 "_433331:;4):_;4*}_]:.$4*-~4{}>44#-=4@.#{4;+>_:.&4,++;4_#333($:",
103 "_44444_#444444=.-.%&*,41-#4(:@4'-:(44444(_-:^&*,4*}#44.%444($:",
104 "_43333:%4;@@'~+-%44*&44]-.;;'4,:-#44*@&%:-];4{'(4)-%4{+&333($:",
105 "_4444{}@4*}}+>#:;4^-#4;.>+,444_+:^4(:}+.]}=4'-+(4_-&4&+{444($:",
106 "_4333'+(41:*=3'.44*)(4=+)+*44@}%+@4=}&=/@}{4{1{44:+,4^.3333($:",
107 "_4444~>,,]#444*})(;**,':*}'4;._@}=,%:444(+~(;{&,*}.,,>~4444($:",
108 "_4333>}}}}^3333~}::}}}}>].;4^+=~}}}}]3333'}+:}}}}}}}}}'3333($:",
109 "_4444$@@@@(44444$))@*@*^}$4=}14=@@@@{44444=))&*@@@@@@@;4444($:",
110 "_433333333333333333333=+:%%.>/33333333333333333333333333333($:",
111 "_4444444444444444444441....>=444444444444444444444444444444($:",
112 "_4333333333333333333333333333333333333333333333333333333333($:",
113 "_4444444444444444444444444444444444444444444444444444444444($:",
114 "_4333333333333333333333333333333333333333333333333333333333($:",
115 "_4444442222444222442444242444244222242444242222244222244444($:",
116 "_4333332333232333233232332232233233332233233323332333333333($:",
117 "_4444442222442222244424442424244222442424244424444222444444($:",
118 "_4333332333332333233323332333233233332332233323333333233333($:",
119 "_4444442444442444244424442444244222242444244424442222444444($:",
120 "_433333333333333333333333333333333333333333333333333333333344:",
121 "#4([[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[=&:",
122 ".=&<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<1|",
123 "::||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"};
124 #endif
125
126 static const char* authors[] = {
127         N_("Brian Ahr"),
128         N_("John Anderson"),
129         N_("Marcus Andersson"),
130         N_("Nedko Arnaudov"),
131         N_("Hans Baier"),
132         N_("Ben Bell"),
133         N_("Sakari Bergen"),
134         N_("Christian Borss"),
135         N_("Chris Cannam"),
136         N_("Jeremy Carter"),
137         N_("Jesse Chappell"),
138         N_("Thomas Charbonnel"),
139         N_("Sam Chessman"),
140         N_("André Colomb"),
141         N_("Paul Davis"),
142         N_("Gerard van Dongen"),
143         N_("John Emmas"),
144         N_("Colin Fletcher"),
145         N_("Dave Flick"),
146         N_("Hans Fugal"),
147         N_("Robin Gareus"),
148         N_("Christopher George"),
149         N_("Chris Goddard"),
150         N_("J. Abelardo Gutierrez"),
151         N_("Jeremy Hall"),
152         N_("Audun Halland"),
153         N_("David Halter"),
154         N_("Steve Harris"),
155         N_("Melvin Ray Herr"),
156         N_("Carl Hetherington"),
157         N_("Rob Holland"),
158         N_("Robert Jordens"),
159         N_("Stefan Kersten"),
160         N_("Armand Klenk"),
161         N_("Julien de Kozak"),
162         N_("Matt Krai"),
163         N_("Georg Krause"),
164         N_("Nick Lanham"),
165         N_("Colin Law"),
166         N_("Joshua Leach"),
167         N_("Ben Loftis"),
168         N_("Nick Mainsbridge"),
169         N_("Tim Mayberry"),
170         N_("Doug Mclain"),
171         N_("Todd Naugle"),
172         N_("Jack O'Quin"),
173         N_("Nimal Ratnayake"),
174         N_("David Robillard"),
175         N_("Taybin Rutkin"),
176         N_("Andreas Ruge"),
177         N_("Sampo Savolainen"),
178         N_("Rodrigo Severo"),
179         N_("Per Sigmond"),
180         N_("Lincoln Spiteri"),
181         N_("Mike Start"),
182         N_("Mark Stewart"),
183         N_("Roland Stigge"),
184         N_("Petter Sundlöf"),
185         N_("Mike Täht"),
186         N_("Roy Vegard"),
187         N_("Thorsten Wilms"),
188         N_("Damien Zammit"),
189         N_("Grygorii Zharun"),
190         0
191 };
192
193 static const char* translators[] = {
194         N_("French:\n\tAlain Fréhel <alain.frehel@free.fr>\n\tChristophe Combelles <ccomb@free.fr>\n\tMartin Blanchard\n\tRomain Arnaud <roming22@gmail.com>\n"),
195         N_("German:\n\tKarsten Petersen <kapet@kapet.de>\
196 \n\tSebastian Arnold <mail@sebastian-arnold.net>\
197 \n\tRobert Schwede <schwede@ironshark.com>\
198 \n\tBenjamin Scherrer <realhangman@web.de>\
199 \n\tEdgar Aichinger <edogawa@aon.at>\
200 \n\tRichard Oax <richard@pagliacciempire.de>\
201 \n\tRobin Gloster <robin@loc-com.de>\n"),
202         N_("Italian:\n\tFilippo Pappalardo <filippo@email.it>\n\tRaffaele Morelli <raffaele.morelli@gmail.com>\n"),
203         N_("Portuguese:\n\tRui Nuno Capela <rncbc@rncbc.org>\n"),
204         N_("Brazilian Portuguese:\n\tAlexander da Franca Fernandes <alexander@nautae.eti.br>\
205 \n\tChris Ross <chris@tebibyte.org>\n"),
206         N_("Spanish:\n\t Alex Krohn <alexkrohn@fastmail.fm>\n\tPablo Fernández <pablo.fbus@gmail.com>\n"),
207         N_("Russian:\n\t Igor Blinov <pitstop@nm.ru>\
208 \n\tAlexandre Prokoudine <alexandre.prokoudine@gmail.com>\n"),
209         N_("Greek:\n\t Klearchos Gourgourinis <muadib@in.gr>\n"),
210         N_("Swedish:\n\t Petter Sundlöf <petter.sundlof@gmail.com>\n"),
211         N_("Polish:\n\t Piotr Zaryk <pzaryk@gmail.com>\n"),
212         N_("Czech:\n\t Pavel Fric <pavelfric@seznam.cz>\n"),
213         N_("Norwegian:\n\t Eivind Ødegård\n"),
214         N_("Chinese:\n\t Rui-huai Zhang <zrhzrh@mail.ustc.edu.cn>\n"),
215         0
216 };
217
218 static const char* gpl = X_("\n\
219 Ardour comes with NO WARRANTY. It is free software, and you are welcome to redistribute it\n\
220 under the terms of the GNU General Public License, shown below.\n\
221 \n\
222                     GNU GENERAL PUBLIC LICENSE\n\
223                        Version 2, June 1991\n\
224 \n\
225  Copyright (C) 1989, 1991 Free Software Foundation, Inc.\n\
226      59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n\
227  Everyone is permitted to copy and distribute verbatim copies\n\
228  of this license document, but changing it is not allowed.\n\
229 \n\
230                             Preamble\n\
231 \n\
232   The licenses for most software are designed to take away your\n\
233 freedom to share and change it.  By contrast, the GNU General Public\n\
234 License is intended to guarantee your freedom to share and change free\n\
235 software--to make sure the software is free for all its users.  This\n\
236 General Public License applies to most of the Free Software\n\
237 Foundation's software and to any other program whose authors commit to\n\
238 using it.  (Some other Free Software Foundation software is covered by\n\
239 the GNU Library General Public License instead.)  You can apply it to\n\
240 your programs, too.\n\
241 \n\
242   When we speak of free software, we are referring to freedom, not\n\
243 price.  Our General Public Licenses are designed to make sure that you\n\
244 have the freedom to distribute copies of free software (and charge for\n\
245 this service if you wish), that you receive source code or can get it\n\
246 if you want it, that you can change the software or use pieces of it\n\
247 in new free programs; and that you know you can do these things.\n\
248 \n\
249   To protect your rights, we need to make restrictions that forbid\n\
250 anyone to deny you these rights or to ask you to surrender the rights.\n\
251 These restrictions translate to certain responsibilities for you if you\n\
252 distribute copies of the software, or if you modify it.\n\
253 \n\
254   For example, if you distribute copies of such a program, whether\n\
255 gratis or for a fee, you must give the recipients all the rights that\n\
256 you have.  You must make sure that they, too, receive or can get the\n\
257 source code.  And you must show them these terms so they know their\n\
258 rights.\n\
259 \n\
260   We protect your rights with two steps: (1) copyright the software, and\n\
261 (2) offer you this license which gives you legal permission to copy,\n\
262 distribute and/or modify the software.\n\
263 \n\
264   Also, for each author's protection and ours, we want to make certain\n\
265 that everyone understands that there is no warranty for this free\n\
266 software.  If the software is modified by someone else and passed on, we\n\
267 want its recipients to know that what they have is not the original, so\n\
268 that any problems introduced by others will not reflect on the original\n\
269 authors' reputations.\n\
270 \n\
271   Finally, any free program is threatened constantly by software\n\
272 patents.  We wish to avoid the danger that redistributors of a free\n\
273 program will individually obtain patent licenses, in effect making the\n\
274 program proprietary.  To prevent this, we have made it clear that any\n\
275 patent must be licensed for everyone's free use or not licensed at all.\n\
276 \n\
277   The precise terms and conditions for copying, distribution and\n\
278 modification follow.\n\
279 \f\n\
280 ""                  GNU GENERAL PUBLIC LICENSE\n\
281    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\
282 \n\
283   0. This License applies to any program or other work which contains\n\
284 a notice placed by the copyright holder saying it may be distributed\n\
285 under the terms of this General Public License.  The \"Program\", below,\n\
286 refers to any such program or work, and a \"work based on the Program\"\n\
287 means either the Program or any derivative work under copyright law:\n\
288 that is to say, a work containing the Program or a portion of it,\n\
289 either verbatim or with modifications and/or translated into another\n\
290 language.  (Hereinafter, translation is included without limitation in\n\
291 the term \"modification\".)  Each licensee is addressed as \"you\".\n\
292 \n\
293 Activities other than copying, distribution and modification are not\n\
294 covered by this License; they are outside its scope.  The act of\n\
295 running the Program is not restricted, and the output from the Program\n\
296 is covered only if its contents constitute a work based on the\n\
297 Program (independent of having been made by running the Program).\n\
298 Whether that is true depends on what the Program does.\n\
299 \n\
300   1. You may copy and distribute verbatim copies of the Program's\n\
301 source code as you receive it, in any medium, provided that you\n\
302 conspicuously and appropriately publish on each copy an appropriate\n\
303 copyright notice and disclaimer of warranty; keep intact all the\n\
304 notices that refer to this License and to the absence of any warranty;\n\
305 and give any other recipients of the Program a copy of this License\n\
306 along with the Program.\n\
307 \n\
308 You may charge a fee for the physical act of transferring a copy, and\n\
309 you may at your option offer warranty protection in exchange for a fee.\n\
310 \n\
311   2. You may modify your copy or copies of the Program or any portion\n\
312 of it, thus forming a work based on the Program, and copy and\n\
313 distribute such modifications or work under the terms of Section 1\n\
314 above, provided that you also meet all of these conditions:\n\
315 \n\
316     a) You must cause the modified files to carry prominent notices\n\
317     stating that you changed the files and the date of any change.\n\
318 \n\
319     b) You must cause any work that you distribute or publish, that in\n\
320     whole or in part contains or is derived from the Program or any\n\
321     part thereof, to be licensed as a whole at no charge to all third\n\
322     parties under the terms of this License.\n\
323 \n\
324     c) If the modified program normally reads commands interactively\n\
325     when run, you must cause it, when started running for such\n\
326     interactive use in the most ordinary way, to print or display an\n\
327     announcement including an appropriate copyright notice and a\n\
328     notice that there is no warranty (or else, saying that you provide\n\
329     a warranty) and that users may redistribute the program under\n\
330     these conditions, and telling the user how to view a copy of this\n\
331     License.  (Exception: if the Program itself is interactive but\n\
332     does not normally print such an announcement, your work based on\n\
333     the Program is not required to print an announcement.)\n\
334 \f\n\
335 These requirements apply to the modified work as a whole.  If\n\
336 identifiable sections of that work are not derived from the Program,\n\
337 and can be reasonably considered independent and separate works in\n\
338 themselves, then this License, and its terms, do not apply to those\n\
339 sections when you distribute them as separate works.  But when you\n\
340 distribute the same sections as part of a whole which is a work based\n\
341 on the Program, the distribution of the whole must be on the terms of\n\
342 this License, whose permissions for other licensees extend to the\n\
343 entire whole, and thus to each and every part regardless of who wrote it.\n\
344 \n\
345 Thus, it is not the intent of this section to claim rights or contest\n\
346 your rights to work written entirely by you; rather, the intent is to\n\
347 exercise the right to control the distribution of derivative or\n\
348 collective works based on the Program.\n\
349 \n\
350 In addition, mere aggregation of another work not based on the Program\n\
351 with the Program (or with a work based on the Program) on a volume of\n\
352 a storage or distribution medium does not bring the other work under\n\
353 the scope of this License.\n\
354 \n\
355   3. You may copy and distribute the Program (or a work based on it,\n\
356 under Section 2) in object code or executable form under the terms of\n\
357 Sections 1 and 2 above provided that you also do one of the following:\n\
358 \n\
359     a) Accompany it with the complete corresponding machine-readable\n\
360     source code, which must be distributed under the terms of Sections\n\
361     1 and 2 above on a medium customarily used for software interchange; or,\n\
362 \n\
363     b) Accompany it with a written offer, valid for at least three\n\
364     years, to give any third party, for a charge no more than your\n\
365     cost of physically performing source distribution, a complete\n\
366     machine-readable copy of the corresponding source code, to be\n\
367     distributed under the terms of Sections 1 and 2 above on a medium\n\
368     customarily used for software interchange; or,\n\
369 \n\
370     c) Accompany it with the information you received as to the offer\n\
371     to distribute corresponding source code.  (This alternative is\n\
372     allowed only for noncommercial distribution and only if you\n\
373     received the program in object code or executable form with such\n\
374     an offer, in accord with Subsection b above.)\n\
375 \n\
376 The source code for a work means the preferred form of the work for\n\
377 making modifications to it.  For an executable work, complete source\n\
378 code means all the source code for all modules it contains, plus any\n\
379 associated interface definition files, plus the scripts used to\n\
380 control compilation and installation of the executable.  However, as a\n\
381 special exception, the source code distributed need not include\n\
382 anything that is normally distributed (in either source or binary\n\
383 form) with the major components (compiler, kernel, and so on) of the\n\
384 operating system on which the executable runs, unless that component\n\
385 itself accompanies the executable.\n\
386 \n\
387 If distribution of executable or object code is made by offering\n\
388 access to copy from a designated place, then offering equivalent\n\
389 access to copy the source code from the same place counts as\n\
390 distribution of the source code, even though third parties are not\n\
391 compelled to copy the source along with the object code.\n\
392 \f\n\
393   4. You may not copy, modify, sublicense, or distribute the Program\n\
394 except as expressly provided under this License.  Any attempt\n\
395 otherwise to copy, modify, sublicense or distribute the Program is\n\
396 void, and will automatically terminate your rights under this License.\n\
397 However, parties who have received copies, or rights, from you under\n\
398 this License will not have their licenses terminated so long as such\n\
399 parties remain in full compliance.\n\
400 \n\
401   5. You are not required to accept this License, since you have not\n\
402 signed it.  However, nothing else grants you permission to modify or\n\
403 distribute the Program or its derivative works.  These actions are\n\
404 prohibited by law if you do not accept this License.  Therefore, by\n\
405 modifying or distributing the Program (or any work based on the\n\
406 Program), you indicate your acceptance of this License to do so, and\n\
407 all its terms and conditions for copying, distributing or modifying\n\
408 the Program or works based on it.\n\
409 \n\
410   6. Each time you redistribute the Program (or any work based on the\n\
411 Program), the recipient automatically receives a license from the\n\
412 original licensor to copy, distribute or modify the Program subject to\n\
413 these terms and conditions.  You may not impose any further\n\
414 restrictions on the recipients' exercise of the rights granted herein.\n\
415 You are not responsible for enforcing compliance by third parties to\n\
416 this License.\n\
417 \n\
418   7. If, as a consequence of a court judgment or allegation of patent\n\
419 infringement or for any other reason (not limited to patent issues),\n\
420 conditions are imposed on you (whether by court order, agreement or\n\
421 otherwise) that contradict the conditions of this License, they do not\n\
422 excuse you from the conditions of this License.  If you cannot\n\
423 distribute so as to satisfy simultaneously your obligations under this\n\
424 License and any other pertinent obligations, then as a consequence you\n\
425 may not distribute the Program at all.  For example, if a patent\n\
426 license would not permit royalty-free redistribution of the Program by\n\
427 all those who receive copies directly or indirectly through you, then\n\
428 the only way you could satisfy both it and this License would be to\n\
429 refrain entirely from distribution of the Program.\n\
430 \n\
431 If any portion of this section is held invalid or unenforceable under\n\
432 any particular circumstance, the balance of the section is intended to\n\
433 apply and the section as a whole is intended to apply in other\n\
434 circumstances.\n\
435 \n\
436 It is not the purpose of this section to induce you to infringe any\n\
437 patents or other property right claims or to contest validity of any\n\
438 such claims; this section has the sole purpose of protecting the\n\
439 integrity of the free software distribution system, which is\n\
440 implemented by public license practices.  Many people have made\n\
441 generous contributions to the wide range of software distributed\n\
442 through that system in reliance on consistent application of that\n\
443 system; it is up to the author/donor to decide if he or she is willing\n\
444 to distribute software through any other system and a licensee cannot\n\
445 impose that choice.\n\
446 \n\
447 This section is intended to make thoroughly clear what is believed to\n\
448 be a consequence of the rest of this License.\n\
449 \f\n\
450   8. If the distribution and/or use of the Program is restricted in\n\
451 certain countries either by patents or by copyrighted interfaces, the\n\
452 original copyright holder who places the Program under this License\n\
453 may add an explicit geographical distribution limitation excluding\n\
454 those countries, so that distribution is permitted only in or among\n\
455 countries not thus excluded.  In such case, this License incorporates\n\
456 the limitation as if written in the body of this License.\n\
457 \n\
458   9. The Free Software Foundation may publish revised and/or new versions\n\
459 of the General Public License from time to time.  Such new versions will\n\
460 be similar in spirit to the present version, but may differ in detail to\n\
461 address new problems or concerns.\n\
462 \n\
463 Each version is given a distinguishing version number.  If the Program\n\
464 specifies a version number of this License which applies to it and \"any\n\
465 later version\", you have the option of following the terms and conditions\n\
466 either of that version or of any later version published by the Free\n\
467 Software Foundation.  If the Program does not specify a version number of\n\
468 this License, you may choose any version ever published by the Free Software\n\
469 Foundation.\n\
470 \n\
471   10. If you wish to incorporate parts of the Program into other free\n\
472 programs whose distribution conditions are different, write to the author\n\
473 to ask for permission.  For software which is copyrighted by the Free\n\
474 Software Foundation, write to the Free Software Foundation; we sometimes\n\
475 make exceptions for this.  Our decision will be guided by the two goals\n\
476 of preserving the free status of all derivatives of our free software and\n\
477 of promoting the sharing and reuse of software generally.\n\
478 \n\
479                             NO WARRANTY\n\
480 \n\
481   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\n\
482 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\n\
483 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\n\
484 PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\n\
485 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n\
486 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\n\
487 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\n\
488 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\n\
489 REPAIR OR CORRECTION.\n\
490 \n\
491   12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\n\
492 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\n\
493 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\n\
494 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\n\
495 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\n\
496 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\n\
497 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\n\
498 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\n\
499 POSSIBILITY OF SUCH DAMAGES.\n\
500 \n\
501                      END OF TERMS AND CONDITIONS\n\
502 \f\n\
503             How to Apply These Terms to Your New Programs\n\
504 \n\
505   If you develop a new program, and you want it to be of the greatest\n\
506 possible use to the public, the best way to achieve this is to make it\n\
507 free software which everyone can redistribute and change under these terms.\n\
508 \n\
509   To do so, attach the following notices to the program.  It is safest\n\
510 to attach them to the start of each source file to most effectively\n\
511 convey the exclusion of warranty; and each file should have at least\n\
512 the \"copyright\" line and a pointer to where the full notice is found.\n\
513 \n\
514     <one line to give the program's name and a brief idea of what it does.>\n\
515     Copyright (C) <year>  <name of author>\n\
516 \n\
517     This program is free software; you can redistribute it and/or modify\n\
518     it under the terms of the GNU General Public License as published by\n\
519     the Free Software Foundation; either version 2 of the License, or\n\
520     (at your option) any later version.\n\
521 \n\
522     This program is distributed in the hope that it will be useful,\n\
523     but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
524     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n\
525     GNU General Public License for more details.\n\
526 \n\
527     You should have received a copy of the GNU General Public License\n\
528     along with this program; if not, write to the Free Software\n\
529     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n\
530 \n\
531 \n\
532 Also add information on how to contact you by electronic and paper mail.\n\
533 \n\
534 If the program is interactive, make it output a short notice like this\n\
535 when it starts in an interactive mode:\n\
536 \n\
537     Gnomovision version 69, Copyright (C) year  name of author\n\
538     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n\
539     This is free software, and you are welcome to redistribute it\n\
540     under certain conditions; type `show c' for details.\n\
541 \n\
542 The hypothetical commands `show w' and `show c' should show the appropriate\n\
543 parts of the General Public License.  Of course, the commands you use may\n\
544 be called something other than `show w' and `show c'; they could even be\n\
545 mouse-clicks or menu items--whatever suits your program.\n\
546 \n\
547 You should also get your employer (if you work as a programmer) or your\n\
548 school, if any, to sign a \"copyright disclaimer\" for the program, if\n\
549 necessary.  Here is a sample; alter the names:\n\
550 \n\
551   Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n\
552   `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\
553 \n\
554   <signature of Ty Coon>, 1 April 1989\n\
555   Ty Coon, President of Vice\n\
556 \n\
557 This General Public License does not permit incorporating your program into\n\
558 proprietary programs.  If your program is a subroutine library, you may\n\
559 consider it more useful to permit linking proprietary applications with the\n\
560 library.  If this is what you want to do, use the GNU Library General\n\
561 Public License instead of this License.\n\
562 "); /* Note that at the start of (approximately) line 265, the above license
563        text has been split into two concatenated tokens (to satisfy compilation
564        under MSVC). Hopefully this won't affect gcc */
565
566 About::About ()
567         : config_info (0)
568 #ifdef WITH_PAYMENT_OPTIONS
569         , paypal_pixmap (paypal_xpm)
570 #endif
571 {
572         // set_type_hint(Gdk::WINDOW_TYPE_HINT_SPLASHSCREEN);
573
574         string t;
575
576         std::string splash_file;
577
578         Searchpath spath(ardour_data_search_path());
579
580         if (find_file (spath, "splash.png", splash_file)) {
581                 set_logo (Gdk::Pixbuf::create_from_file (splash_file));
582         } else {
583                 error << "Could not find splash file" << endmsg;
584         }
585
586         set_authors (authors);
587
588         for (int n = 0; translators[n]; ++n) {
589                 t += translators[n];
590                 t += ' ';
591         }
592
593 #if defined __x86_64__ || defined _M_X64
594         const std::string cpu_arch = _("Intel 64 bit");
595 #elif defined __i386__  || defined _M_IX86
596         const std::string cpu_arch = _("Intel 32 bit");
597 #elif defined __ppc__ && defined  __LP64__
598         const std::string cpu_arch = _("PowerPC 64bit");
599 #elif defined __ppc__
600         const std::string cpu_arch = _("PowerPC 32bit");
601 #elif defined  __LP64__
602         const std::string cpu_arch = _("64bit");
603 #else
604         const std::string cpu_arch = _("32bit"); // ARM, ALPHA,..
605 #endif
606         std::string codename = CODENAME;
607         if (ARDOUR::Profile->get_mixbus() || ARDOUR::Profile->get_trx()) {
608                 codename = " ";
609         }
610
611         set_translator_credits (t);
612         set_copyright (_("Copyright (C) 1999-2015 Paul Davis\n"));
613         set_license (gpl);
614         set_name (X_("Ardour"));
615         set_website (X_("http://ardour.org/"));
616         set_website_label (_("http://ardour.org/"));
617         set_version ((string_compose(_("%1%2\n(built from revision %3)\n%4"),
618                                      VERSIONSTRING,
619                                      codename,
620                                      revision, cpu_arch)));
621
622         Gtk::Button* config_button = manage (new Button (_("Config")));
623
624         get_action_area()->add (*config_button);
625         get_action_area()->reorder_child (*config_button, 0);
626         config_button->signal_clicked().connect (mem_fun (*this, &About::show_config_info));
627
628         Gtk::Button *btn = static_cast<Gtk::Button*>(get_widget_for_response(Gtk::RESPONSE_CANCEL));
629         if (btn) {
630                 btn->signal_clicked().connect(sigc::mem_fun(static_cast<Gtk::Window*>(this), &Gtk::Window::hide));
631         }
632         set_url_hook (sigc::ptr_fun(&About::launch_homepage));
633 }
634
635 About::~About ()
636 {
637         delete config_info;
638 }
639
640 void
641 About::show_config_info ()
642 {
643         if (!config_info) {
644                 config_info = new ConfigInfoDialog;
645         }
646
647         config_info->run ();
648         config_info->hide ();
649 }
650
651 void
652 About::launch_homepage (AboutDialog& /* about */, const Glib::ustring& website_url)
653 {
654         PBD::open_uri (website_url);
655 }