| 66 char *name; |
66 char *name; |
| 67 char *email; |
67 char *email; |
| 68 }; |
68 }; |
| 69 |
69 |
| 70 /* Order: Lead Developer, then Alphabetical by Last Name */ |
70 /* Order: Lead Developer, then Alphabetical by Last Name */ |
| 71 static struct developer developers[] = { |
71 static const struct developer developers[] = { |
| 72 {"Sean Egan", N_("lead developer"), "sean.egan@gmail.com"}, |
72 {"Sean Egan", N_("lead developer"), "sean.egan@gmail.com"}, |
| 73 {"Daniel 'datallah' Atallah", N_("developer"), NULL}, |
73 {"Daniel 'datallah' Atallah", N_("developer"), NULL}, |
| |
74 {"John 'rekkanoryo' Bailey", N_("developer"), NULL}, |
| 74 {"Ethan 'Paco-Paco' Blanton", N_("developer"), NULL}, |
75 {"Ethan 'Paco-Paco' Blanton", N_("developer"), NULL}, |
| 75 {"Thomas Butter", N_("developer"), NULL}, |
76 {"Thomas Butter", N_("developer"), NULL}, |
| 76 {"Ka-Hing Cheung", N_("developer"), NULL}, |
77 {"Ka-Hing Cheung", N_("developer"), NULL}, |
| 77 {"Sadrul Habib Chowdhury", N_("developer"), NULL}, |
78 {"Sadrul Habib Chowdhury", N_("developer"), NULL}, |
| 78 {"Mark 'KingAnt' Doliner", N_("developer"), NULL}, |
79 {"Mark 'KingAnt' Doliner", N_("developer"), NULL}, |
| 92 {"Nathan 'faceprint' Walp", N_("developer"), NULL}, |
93 {"Nathan 'faceprint' Walp", N_("developer"), NULL}, |
| 93 {NULL, NULL, NULL} |
94 {NULL, NULL, NULL} |
| 94 }; |
95 }; |
| 95 |
96 |
| 96 /* Order: Alphabetical by Last Name */ |
97 /* Order: Alphabetical by Last Name */ |
| 97 static struct developer patch_writers[] = { |
98 static const struct developer patch_writers[] = { |
| 98 {"John 'rekkanoryo' Bailey", NULL, NULL}, |
|
| 99 {"Dennis 'EvilDennisR' Ristuccia", N_("Senior Contributor/QA"), NULL}, |
99 {"Dennis 'EvilDennisR' Ristuccia", N_("Senior Contributor/QA"), NULL}, |
| 100 {"Peter 'Fmoo' Ruibal", NULL, NULL}, |
100 {"Peter 'Fmoo' Ruibal", NULL, NULL}, |
| 101 {"Gabriel 'Nix' Schulhof", NULL, NULL}, |
101 {"Gabriel 'Nix' Schulhof", NULL, NULL}, |
| 102 {"Will 'resiak' Thompson", NULL, NULL}, |
102 {"Will 'resiak' Thompson", NULL, NULL}, |
| 103 {NULL, NULL, NULL} |
103 {NULL, NULL, NULL} |
| 104 }; |
104 }; |
| 105 |
105 |
| 106 /* Order: Alphabetical by Last Name */ |
106 /* Order: Alphabetical by Last Name */ |
| 107 static struct developer retired_developers[] = { |
107 static const struct developer retired_developers[] = { |
| 108 {"Herman Bloggs", N_("win32 port"), "herman@bluedigits.com"}, |
108 {"Herman Bloggs", N_("win32 port"), "herman@bluedigits.com"}, |
| 109 {"Jim Duchek", N_("maintainer"), "jim@linuxpimps.com"}, |
109 {"Jim Duchek", N_("maintainer"), "jim@linuxpimps.com"}, |
| 110 {"Rob Flynn", N_("maintainer"), NULL}, |
110 {"Rob Flynn", N_("maintainer"), NULL}, |
| 111 {"Adam Fritzler", N_("libfaim maintainer"), NULL}, |
111 {"Adam Fritzler", N_("libfaim maintainer"), NULL}, |
| 112 {"Christian 'ChipX86' Hammond", N_("developer & webmaster"), NULL}, |
112 {"Christian 'ChipX86' Hammond", N_("developer & webmaster"), NULL}, |
| 117 {"Eric Warmenhoven", N_("lead developer"), "warmenhoven@yahoo.com"}, |
117 {"Eric Warmenhoven", N_("lead developer"), "warmenhoven@yahoo.com"}, |
| 118 {NULL, NULL, NULL} |
118 {NULL, NULL, NULL} |
| 119 }; |
119 }; |
| 120 |
120 |
| 121 /* Order: Alphabetical by Last Name */ |
121 /* Order: Alphabetical by Last Name */ |
| 122 static struct developer retired_patch_writers[] = { |
122 static const struct developer retired_patch_writers[] = { |
| 123 {"Felipe 'shx' Contreras", NULL, NULL}, |
123 {"Felipe 'shx' Contreras", NULL, NULL}, |
| 124 {"Decklin Foster", NULL, NULL}, |
124 {"Decklin Foster", NULL, NULL}, |
| 125 {"Peter 'Bleeter' Lawler", NULL, NULL}, |
125 {"Peter 'Bleeter' Lawler", NULL, NULL}, |
| 126 {"Robert 'Robot101' McQueen", NULL, NULL}, |
126 {"Robert 'Robot101' McQueen", NULL, NULL}, |
| 127 {"Benjamin Miller", NULL, NULL}, |
127 {"Benjamin Miller", NULL, NULL}, |
| 128 {NULL, NULL, NULL} |
128 {NULL, NULL, NULL} |
| 129 }; |
129 }; |
| 130 |
130 |
| 131 /* Order: Code, then Alphabetical by Last Name */ |
131 /* Order: Code, then Alphabetical by Last Name */ |
| 132 static struct translator current_translators[] = { |
132 static const struct translator current_translators[] = { |
| 133 {N_("Afrikaans"), "af", "Friedel Wolff", "friedel@translate.org.za"}, |
133 {N_("Afrikaans"), "af", "Friedel Wolff", "friedel@translate.org.za"}, |
| 134 {N_("Arabic"), "ar", "Khaled Hosny", "khaledhosny@eglug.org"}, |
134 {N_("Arabic"), "ar", "Khaled Hosny", "khaledhosny@eglug.org"}, |
| 135 {N_("Belarusian Latin"), "be@latin", "Ihar Hrachyshka", "ihar.hrachyshka@gmail.com"}, |
135 {N_("Belarusian Latin"), "be@latin", "Ihar Hrachyshka", "ihar.hrachyshka@gmail.com"}, |
| 136 {N_("Bulgarian"), "bg", "Vladimira Girginova", "missing@here.is"}, |
136 {N_("Bulgarian"), "bg", "Vladimira Girginova", "missing@here.is"}, |
| 137 {N_("Bulgarian"), "bg", "Vladimir (Kaladan) Petkov", "vpetkov@i-space.org"}, |
137 {N_("Bulgarian"), "bg", "Vladimir (Kaladan) Petkov", "vpetkov@i-space.org"}, |
| 145 {N_("Valencian-Catalan"), "ca@valencia", "Josep Puigdemont", "tradgnome@softcatala.org"}, |
145 {N_("Valencian-Catalan"), "ca@valencia", "Josep Puigdemont", "tradgnome@softcatala.org"}, |
| 146 {N_("Czech"), "cs", "Miloslav Trmac", "mitr@volny.cz"}, |
146 {N_("Czech"), "cs", "Miloslav Trmac", "mitr@volny.cz"}, |
| 147 {N_("Danish"), "da", "Morten Brix Pedersen", "morten@wtf.dk"}, |
147 {N_("Danish"), "da", "Morten Brix Pedersen", "morten@wtf.dk"}, |
| 148 {N_("Danish"), "da", "Peter Bach", "bach.peter@gmail.com"}, |
148 {N_("Danish"), "da", "Peter Bach", "bach.peter@gmail.com"}, |
| 149 {N_("German"), "de", "Björn Voigt", "bjoern@cs.tu-berlin.de"}, |
149 {N_("German"), "de", "Björn Voigt", "bjoern@cs.tu-berlin.de"}, |
| 150 {N_("German"), "de", "Jochen Kemnade", "kemnade@gmail.com"}, |
150 {N_("German"), "de", "Jochen Kemnade", "jochenkemnade@web.de"}, |
| 151 {N_("Dzongkha"), "dz", "Norbu", "nor_den@hotmail.com"}, |
151 {N_("Dzongkha"), "dz", "Norbu", "nor_den@hotmail.com"}, |
| 152 {N_("Dzongkha"), "dz", "Jurmey Rabgay", "jur_gay@yahoo.com"}, |
152 {N_("Dzongkha"), "dz", "Jurmey Rabgay", "jur_gay@yahoo.com"}, |
| 153 {N_("Dzongkha"), "dz", "Wangmo Sherpa", "rinwanshe@yahoo.com"}, |
153 {N_("Dzongkha"), "dz", "Wangmo Sherpa", "rinwanshe@yahoo.com"}, |
| 154 {N_("Greek"), "el", "Katsaloulis Panayotis", "panayotis@panayotis.com"}, |
154 {N_("Greek"), "el", "Katsaloulis Panayotis", "panayotis@panayotis.com"}, |
| 155 {N_("Greek"), "el", "Bouklis Panos", "panos@echidna-band.com"}, |
155 {N_("Greek"), "el", "Bouklis Panos", "panos@echidna-band.com"}, |
| 219 {N_("Traditional Chinese"), "zh_TW", "Paladin R. Liu", "paladin@ms1.hinet.net"}, |
219 {N_("Traditional Chinese"), "zh_TW", "Paladin R. Liu", "paladin@ms1.hinet.net"}, |
| 220 {NULL, NULL, NULL, NULL} |
220 {NULL, NULL, NULL, NULL} |
| 221 }; |
221 }; |
| 222 |
222 |
| 223 |
223 |
| 224 static struct translator past_translators[] = { |
224 static const struct translator past_translators[] = { |
| 225 {N_("Amharic"), "am", "Daniel Yacob", NULL}, |
225 {N_("Amharic"), "am", "Daniel Yacob", NULL}, |
| 226 {N_("Arabic"), "ar", "Mohamed Magdy", "alnokta@yahoo.com"}, |
226 {N_("Arabic"), "ar", "Mohamed Magdy", "alnokta@yahoo.com"}, |
| 227 {N_("Bulgarian"), "bg", "Hristo Todorov", NULL}, |
227 {N_("Bulgarian"), "bg", "Hristo Todorov", NULL}, |
| 228 {N_("Catalan"), "ca", "JM Pérez Cáncer", NULL}, |
228 {N_("Catalan"), "ca", "JM Pérez Cáncer", NULL}, |
| 229 {N_("Catalan"), "ca", "Robert Millan", NULL}, |
229 {N_("Catalan"), "ca", "Robert Millan", NULL}, |
| 269 {N_("Simplified Chinese"), "zh_CN", "Hashao, Rocky S. Lee", NULL}, |
269 {N_("Simplified Chinese"), "zh_CN", "Hashao, Rocky S. Lee", NULL}, |
| 270 {N_("Traditional Chinese"), "zh_TW", "Hashao, Rocky S. Lee", NULL}, |
270 {N_("Traditional Chinese"), "zh_TW", "Hashao, Rocky S. Lee", NULL}, |
| 271 {NULL, NULL, NULL, NULL} |
271 {NULL, NULL, NULL, NULL} |
| 272 }; |
272 }; |
| 273 |
273 |
| 274 static struct artist artists[] = { |
274 static const struct artist artists[] = { |
| 275 {"Hylke Bons", "h.bons@student.rug.nl"}, |
275 {"Hylke Bons", "h.bons@student.rug.nl"}, |
| 276 {NULL, NULL} |
276 {NULL, NULL} |
| 277 }; |
277 }; |
| 278 |
278 |
| 279 void |
279 void |
| 313 g_object_unref(G_OBJECT(*original)); |
313 g_object_unref(G_OBJECT(*original)); |
| 314 |
314 |
| 315 context = gtk_widget_get_pango_context(widget); |
315 context = gtk_widget_get_pango_context(widget); |
| 316 layout = pango_layout_new(context); |
316 layout = pango_layout_new(context); |
| 317 |
317 |
| 318 markup = g_strdup_printf("<span foreground=\"#000000\">%s</span>", VERSION); |
318 markup = g_strdup_printf("<span foreground=\"#000000\">%s</span>", DISPLAY_VERSION); |
| 319 pango_layout_set_font_description(layout, style->font_desc); |
319 pango_layout_set_font_description(layout, style->font_desc); |
| 320 pango_layout_set_markup(layout, markup, strlen(markup)); |
320 pango_layout_set_markup(layout, markup, strlen(markup)); |
| 321 g_free(markup); |
321 g_free(markup); |
| 322 |
322 |
| 323 pango_layout_get_pixel_size(layout, &lwidth, &lheight); |
323 pango_layout_get_pixel_size(layout, &lwidth, &lheight); |
| 391 gtk_widget_destroy(logo); |
391 gtk_widget_destroy(logo); |
| 392 logo = gtk_image_new_from_pixbuf(pixbuf); |
392 logo = gtk_image_new_from_pixbuf(pixbuf); |
| 393 gdk_pixbuf_unref(pixbuf); |
393 gdk_pixbuf_unref(pixbuf); |
| 394 /* Insert the logo */ |
394 /* Insert the logo */ |
| 395 obj = gtk_widget_get_accessible(logo); |
395 obj = gtk_widget_get_accessible(logo); |
| 396 tmp = g_strconcat(PIDGIN_NAME, " " VERSION, NULL); |
396 tmp = g_strconcat(PIDGIN_NAME, " " DISPLAY_VERSION, NULL); |
| 397 atk_object_set_description(obj, tmp); |
397 atk_object_set_description(obj, tmp); |
| 398 g_free(tmp); |
398 g_free(tmp); |
| 399 gtk_box_pack_start(GTK_BOX(vbox), logo, FALSE, FALSE, 0); |
399 gtk_box_pack_start(GTK_BOX(vbox), logo, FALSE, FALSE, 0); |
| 400 |
400 |
| 401 frame = pidgin_create_imhtml(FALSE, &text, NULL, NULL); |
401 frame = pidgin_create_imhtml(FALSE, &text, NULL, NULL); |
| 403 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); |
403 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); |
| 404 |
404 |
| 405 str = g_string_sized_new(4096); |
405 str = g_string_sized_new(4096); |
| 406 |
406 |
| 407 g_string_append_printf(str, |
407 g_string_append_printf(str, |
| 408 "<CENTER><FONT SIZE=\"4\"><B>%s %s</B></FONT></CENTER><BR><BR>", PIDGIN_NAME, VERSION); |
408 "<CENTER><FONT SIZE=\"4\"><B>%s %s</B></FONT></CENTER><BR><BR>", PIDGIN_NAME, DISPLAY_VERSION); |
| 409 |
409 |
| 410 g_string_append_printf(str, |
410 g_string_append_printf(str, |
| 411 _("%s is a graphical modular messaging client based on " |
411 _("%s is a graphical modular messaging client based on " |
| 412 "libpurple which is capable of connecting to " |
412 "libpurple which is capable of connecting to " |
| 413 "AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, " |
413 "AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, " |
| 654 g_string_append(str, " <b>Network Security Services (NSS):</b> Enabled<br/>"); |
654 g_string_append(str, " <b>Network Security Services (NSS):</b> Enabled<br/>"); |
| 655 #else |
655 #else |
| 656 g_string_append(str, " <b>Network Security Services (NSS):</b> Disabled<br/>"); |
656 g_string_append(str, " <b>Network Security Services (NSS):</b> Disabled<br/>"); |
| 657 #endif |
657 #endif |
| 658 |
658 |
| 659 #ifdef HAVE_PERL |
659 if (purple_plugins_find_with_id("core-perl") != NULL) |
| 660 g_string_append(str, " <b>Perl:</b> Enabled<br/>"); |
660 g_string_append(str, " <b>Perl:</b> Enabled<br/>"); |
| 661 #else |
661 else |
| 662 g_string_append(str, " <b>Perl:</b> Disabled<br/>"); |
662 g_string_append(str, " <b>Perl:</b> Disabled<br/>"); |
| 663 #endif |
|
| 664 |
663 |
| 665 #ifndef _WIN32 |
664 #ifndef _WIN32 |
| 666 #ifdef HAVE_STARTUP_NOTIFICATION |
665 #ifdef HAVE_STARTUP_NOTIFICATION |
| 667 g_string_append(str, " <b>Startup Notification:</b> Enabled<br/>"); |
666 g_string_append(str, " <b>Startup Notification:</b> Enabled<br/>"); |
| 668 #else |
667 #else |
| 669 g_string_append(str, " <b>Startup Notification:</b> Disabled<br/>"); |
668 g_string_append(str, " <b>Startup Notification:</b> Disabled<br/>"); |
| 670 #endif |
669 #endif |
| 671 #endif |
670 #endif |
| 672 |
671 |
| 673 #ifdef HAVE_TCL |
672 if (purple_plugins_find_with_id("core-tcl") != NULL) { |
| 674 g_string_append(str, " <b>Tcl:</b> Enabled<br/>"); |
673 g_string_append(str, " <b>Tcl:</b> Enabled<br/>"); |
| 675 #else |
|
| 676 g_string_append(str, " <b>Tcl:</b> Disabled<br/>"); |
|
| 677 #endif |
|
| 678 |
|
| 679 #ifdef HAVE_TK |
674 #ifdef HAVE_TK |
| 680 g_string_append(str, " <b>Tk:</b> Enabled<br/>"); |
675 g_string_append(str, " <b>Tk:</b> Enabled<br/>"); |
| 681 #else |
676 #else |
| 682 g_string_append(str, " <b>Tk:</b> Disabled<br/>"); |
677 g_string_append(str, " <b>Tk:</b> Disabled<br/>"); |
| 683 #endif |
678 #endif |
| |
679 } else { |
| |
680 g_string_append(str, " <b>Tcl:</b> Disabled<br/>"); |
| |
681 g_string_append(str, " <b>Tk:</b> Disabled<br/>"); |
| |
682 } |
| 684 |
683 |
| 685 #ifndef _WIN32 |
684 #ifndef _WIN32 |
| 686 #ifdef USE_SM |
685 #ifdef USE_SM |
| 687 g_string_append(str, " <b>X Session Management:</b> Enabled<br/>"); |
686 g_string_append(str, " <b>X Session Management:</b> Enabled<br/>"); |
| 688 #else |
687 #else |