Merged with trunk R992.
[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     $Id$
19 */
20
21 #include <algorithm>
22 #include <unistd.h>
23 #include <sys/types.h>
24 #include <sys/wait.h>
25 #include <cstdio>
26 #include <ctime>
27 #include <cstdlib>
28
29 #include <ardour/ardour.h>
30 #include <ardour/version.h>
31
32 #include "utils.h"
33 #include "version.h"
34
35 #include "about.h"
36 #include "rgb_macros.h"
37 #include "ardour_ui.h"
38
39 #include "i18n.h"
40
41 using namespace Gtk;
42 using namespace Gdk;
43 using namespace std;
44 using namespace sigc;
45 using namespace ARDOUR;
46 using namespace PBD;
47
48 #ifdef WITH_PAYMENT_OPTIONS
49
50 /* XPM */
51 static const gchar * paypal_xpm[] = {
52 "62 31 33 1",
53 "       c None",
54 ".      c #325781",
55 "+      c #154170",
56 "@      c #C1CDDA",
57 "#      c #4E6E92",
58 "$      c #D1D5DA",
59 "%      c #88A0B8",
60 "&      c #B4C4D3",
61 "*      c #C8D3DE",
62 "=      c #D7E1E9",
63 "-      c #002158",
64 ";      c #F6F8FA",
65 ">      c #44658B",
66 ",      c #E7ECF0",
67 "'      c #A4B7CA",
68 ")      c #9DB0C4",
69 "!      c #E3F1F7",
70 "~      c #708CA9",
71 "{      c #E1E7ED",
72 "]      c #567698",
73 "^      c #7C96B1",
74 "/      c #E7F5FA",
75 "(      c #EEF1F4",
76 "_      c #6883A2",
77 ":      c #244873",
78 "<      c #BBBBBB",
79 "[      c #E9E9E9",
80 "}      c #063466",
81 "|      c #22364D",
82 "1      c #94A7BD",
83 "2      c #000000",
84 "3      c #EAF7FC",
85 "4      c #FFFFFF",
86 "1'111111111111111111111111111111111111111111111111111111111%_#",
87 "%333333333333333333333333333333333333333333333333333333333333.",
88 "%444444444444444444444444444444444444444444444444444444444444:",
89 "_4333333!!!!!!33333333333333333333!!!!!!33333333333!%%%%1334[:",
90 "_444444@+}}}}+>)44444444444444444,:}}}}}.^(44444444@}..+.44($:",
91 "_433333^:&&&&)_}_33///33333333333&+)&&&'~+./3///333^.(;#]33($:",
92 "_444444>_444444'}_>...#%####~,]##..444444=+#]...>1;#_4;.144($:",
93 "_43333!+'4,>#=4(:+_%%%]}}#~#}_+~~:]44_>&44#}_%%%_+>:14=}@33($:",
94 "_44444*+$4&--)4(+%44444%-)4=--'4{+14,}-~44##44444&}}*4)+444($:",
95 "_433331:;4):_;4*}_]:.$4*-~4{}>44#-=4@.#{4;+>_:.&4,++;4_#333($:",
96 "_44444_#444444=.-.%&*,41-#4(:@4'-:(44444(_-:^&*,4*}#44.%444($:",
97 "_43333:%4;@@'~+-%44*&44]-.;;'4,:-#44*@&%:-];4{'(4)-%4{+&333($:",
98 "_4444{}@4*}}+>#:;4^-#4;.>+,444_+:^4(:}+.]}=4'-+(4_-&4&+{444($:",
99 "_4333'+(41:*=3'.44*)(4=+)+*44@}%+@4=}&=/@}{4{1{44:+,4^.3333($:",
100 "_4444~>,,]#444*})(;**,':*}'4;._@}=,%:444(+~(;{&,*}.,,>~4444($:",
101 "_4333>}}}}^3333~}::}}}}>].;4^+=~}}}}]3333'}+:}}}}}}}}}'3333($:",
102 "_4444$@@@@(44444$))@*@*^}$4=}14=@@@@{44444=))&*@@@@@@@;4444($:",
103 "_433333333333333333333=+:%%.>/33333333333333333333333333333($:",
104 "_4444444444444444444441....>=444444444444444444444444444444($:",
105 "_4333333333333333333333333333333333333333333333333333333333($:",
106 "_4444444444444444444444444444444444444444444444444444444444($:",
107 "_4333333333333333333333333333333333333333333333333333333333($:",
108 "_4444442222444222442444242444244222242444242222244222244444($:",
109 "_4333332333232333233232332232233233332233233323332333333333($:",
110 "_4444442222442222244424442424244222442424244424444222444444($:",
111 "_4333332333332333233323332333233233332332233323333333233333($:",
112 "_4444442444442444244424442444244222242444244424442222444444($:",
113 "_433333333333333333333333333333333333333333333333333333333344:",
114 "#4([[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[=&:",
115 ".=&<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<1|",
116 "::||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"};
117 #endif
118
119 static const char* authors[] = {
120         N_("Paul Davis"),
121         N_("Jesse Chappell"),
122         N_("Taybin Rutkin"),
123         N_("Marcus Andersson"),
124         N_("Jeremy Hall"),
125         N_("Steve Harris"),
126         N_("Tim Mayberry"),
127         N_("Mark Stewart"),
128         N_("Sam Chessman"),
129         N_("Jack O'Quin"),
130         N_("Matt Krai"),
131         N_("Ben Bell"),
132         N_("Gerard van Dongen"),
133         N_("Thomas Charbonnel"),
134         N_("Nick Mainsbridge"),
135         N_("Colin Law"),
136         N_("Sampo Savolainen"),
137         N_("Joshua Leach"),
138         N_("Rob Holland"),
139         N_("Per Sigmond"),
140         N_("Doug Mclain"),
141         N_("Petter Sundlöf"),
142         0
143 };
144
145 static const char* translators[] = {
146         N_("French:\n\tAlain Fréhel <alain.frehel@free.fr>\n"),
147         N_("German:\n\tKarsten Petersen <kapet@kapet.de>\n"),
148         N_("Italian:\n\tFilippo Pappalardo <filippo@email.it>\n"),
149         N_("Portuguese:\n\tRui Nuno Capela <rncbc@rncbc.org>\n"),
150         N_("Brazilian Portuguese:\n\tAlexander da Franca Fernandes <alexander@nautae.eti.br>\
151 \n\tChris Ross <chris@tebibyte.org>\n"),
152         N_("Spanish:\n\t Alex Krohn <alexkrohn@fastmail.fm>\n"),
153         N_("Russian:\n\t Igor Blinov <pitstop@nm.ru>\n"),
154         0
155 };
156
157
158 About::About ()
159 #ifdef WITH_PAYMENT_OPTIONS
160         : paypal_pixmap (paypal_xpm)
161 #endif
162 {
163         set_type_hint(Gdk::WINDOW_TYPE_HINT_SPLASHSCREEN);
164
165         string path;
166         string t;
167
168         path = find_data_file ("splash.png");
169
170         Glib::RefPtr<Pixbuf> pixbuf = Gdk::Pixbuf::create_from_file (path);
171
172         set_logo (Gdk::Pixbuf::create_from_file (path));
173         set_authors (authors);
174
175         for (int n = 0; translators[n]; ++n) {
176                 t += translators[n];
177                 t += ' ';
178         }
179
180         set_translator_credits (t);
181         set_copyright (_("Copyright (C) 1999-2006 Paul Davis\n"));
182         set_license (_("Ardour comes with ABSOLUTELY NO WARRANTY\n"
183                        "This is free software, and you are welcome to redistribute it\n"
184                        "under certain conditions; see the file COPYING for details.\n"));
185         set_name (X_("ardour"));
186         set_website (X_("http://ardour.org/"));
187         set_website_label (X_("visit http://www.ardour.org/"));
188         set_version ((string_compose(_("%1\n(built with ardour/gtk %2.%3.%4 libardour: %5.%6.%7)"), 
189                                      VERSIONSTRING, 
190                                      gtk_ardour_major_version, 
191                                      gtk_ardour_minor_version, 
192                                      gtk_ardour_micro_version, 
193                                      libardour_major_version, 
194                                      libardour_minor_version, 
195                                      libardour_micro_version))); 
196
197
198 #ifdef WITH_PAYMENT_OPTIONS
199         paypal_button.add (paypal_pixmap);
200         
201         HBox *payment_box = manage (new HBox);
202         payment_box->pack_start (paypal_button, true, false);
203
204         subvbox.pack_start (*payment_box, false, false);
205 #endif
206
207 }
208
209 About::~About ()
210 {
211 }
212
213 #ifdef WITH_PAYMENT_OPTIONS
214 void
215 About::goto_paypal ()
216 {
217         char buf[PATH_MAX+16];
218         char *argv[4];
219         char *docfile = "foo";
220         int grandchild;
221         
222         if (fork() == 0) {
223
224                 /* child */
225
226                 if ((grandchild = fork()) == 0) {
227                         
228                         /* grandchild */
229                         
230                         argv[0] = "mozilla";
231                         argv[1] = "-remote";
232                         snprintf (buf, sizeof(buf), "openurl(%s)", docfile);
233                         argv[2] = buf;
234                         argv[3] = 0;
235
236                         execvp ("mozilla", argv);
237                         error << "could not start mozilla" << endmsg;
238
239                 } else {
240                         int status;
241                         waitpid (grandchild, &status, 0);
242                 }
243
244         } 
245 }
246 #endif