netsurf/windows/about.c

175 lines
5.4 KiB
C

/*
* Copyright 2009 Mark Benjamin <netsurf-browser.org.MarkBenjamin@dfgh.net>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
* NetSurf is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* NetSurf is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <windows.h>
#include <stdio.h>
#include "utils/utils.h"
#include "utils/messages.h"
#include "desktop/netsurf.h"
#include "windows/about.h"
#include "windows/resourceid.h"
const char *netsurf_authors[] = {
"John-Mark Bell", "James Bursa", "Michael Drake",
"Rob Kendrick", "Adrian Lees", "Vincent Sanders",
"Daniel Silverstone", "Richard Wilson",
"\nContributors:", "Kevin Bagust", "Stefaan Claes",
"Matthew Hambley", "Rob Jackson", "Jeffrey Lee", "Phil Mellor",
"Philip Pemberton", "Darren Salt", "Andrew Timmins",
"John Tytgat", "Chris Williams",
"\nGoogle Summer of Code Contributors:", "Mark Benjamin",
"Adam Blokus", "Paul Blokus", "Sean Fox", "Michael Lester",
"Andrew Sidwell", "Bo Yang", NULL
};
const char * const netsurf_translators = "Sebastian Barthel\n"
"Bruno D'Arcangeli\nGerard van Katwijk\nJérôme Mathevet\n"
"Simon Voortman.";
const char *netsurf_artists[] = {
"Michael Drake", "\nContributors:", "Andrew Duffell",
"John Duffell", "Richard Hallas", "Phil Mellor", NULL
};
const char *netsurf_documenters[] = {
"John-Mark Bell", "James Bursa", "Michael Drake",
"Richard Wilson", "\nContributors:", "James Shaw", NULL
};
const char * const netsurf_name = "NetSurf";
const char * const netsurf_description =
"Small as a mouse, fast as a cheetah, and available for free.\n"
"NetSurf is a portable web browser for RISC OS, AmigaOS, BeOS, "
"Windows and UNIX-like platforms.";
const char * const netsurf_url = "http://www.netsurf-browser.org/";
const char * const netsurf_url_label = "NetSurf Website";
const char * const netsurf_copyright =
"Copyright © 2003 - 2009 The NetSurf Developers";
BOOL CALLBACK nsws_about_event_callback(HWND hwnd, UINT msg, WPARAM wparam,
LPARAM lparam);
BOOL CALLBACK nsws_about_event_callback(HWND hwnd, UINT msg, WPARAM wparam,
LPARAM lparam)
{
switch(msg) {
case WM_INITDIALOG: {
HWND content = GetDlgItem(hwnd, NSWS_ID_ABOUT_CONTENT);
/* modify label NSWS_ID_ABOUT_CONTENT */
size_t len;
char *newcontent, *authors, *artists, *documenters;
int i;
for (i = 0, len = 0; netsurf_authors[i] != NULL; i++) {
len += strlen(netsurf_authors[i]) + 1;
}
authors = malloc(len + 1);
if (authors == NULL) {
warn_user(messages_get("NoMemory"), 0);
return FALSE;
}
authors[0] = '\0';
for (i = 0; netsurf_authors[i] != NULL; i++) {
strcat(authors, netsurf_authors[i]);
strcat(authors, " ");
}
for (i = 0, len = 0; netsurf_artists[i] != NULL; i++) {
len += strlen(netsurf_artists[i]) + 1;
}
artists = malloc(len + 1);
if (artists == NULL) {
warn_user(messages_get("NoMemory"), 0);
free(authors);
return FALSE;
}
artists[0] = '\0';
for (i = 0; netsurf_artists[i] != NULL; i++) {
strcat(artists, netsurf_artists[i]);
strcat(artists, " ");
}
for (i = 0, len = 0; netsurf_documenters[i] != NULL; i++) {
len += strlen(netsurf_documenters[i]) + 1;
}
documenters = malloc(len + 1);
if (documenters == NULL) {
warn_user(messages_get("NoMemory"), 0);
free(authors);
free(artists);
return FALSE;
}
documenters[0] = '\0';
for (i = 0; netsurf_documenters[i] != NULL; i++) {
strcat(documenters, netsurf_documenters[i]);
strcat(documenters, " ");
}
len = strlen(netsurf_name) + 1 + strlen(netsurf_version) +
2 + strlen(netsurf_description) + 2 +
strlen(netsurf_url) + 2 +
strlen(netsurf_copyright) + 2 +
strlen(netsurf_translators) + 2 +
strlen(authors) + 2 + strlen(artists) + 2 +
strlen(documenters) + 2 + SLEN("authors:") + 2 +
SLEN("artists:") + 2 + SLEN("documenters:") + 2 +
SLEN("translators:") + 2;
newcontent = malloc(len + 1);
if (newcontent == NULL) {
warn_user(messages_get("NoMemory"), 0);
free(authors);
free(artists);
free(documenters);
return FALSE;
}
sprintf(newcontent, "%s %s\n\n%s\n\nauthors:\n\n%s\n\n"
"artists:\n\n%s\n\ndocumenters:\n\n%s\n\n"
"translators:\n\n%s\n\n%s\n\n%s\n",
netsurf_name, netsurf_version,
netsurf_description, authors, artists,
documenters, netsurf_translators, netsurf_url,
netsurf_copyright);
SendMessage(content, WM_SETTEXT, 0, (LPARAM)newcontent);
free(authors);
free(artists);
free(documenters);
free(newcontent);
return TRUE;
}
case WM_COMMAND:
switch(LOWORD(wparam)) {
case IDOK:
EndDialog(hwnd, IDOK);
break;
default:
return FALSE;
}
break;
case WM_CREATE:
return TRUE;
default:
return FALSE;
}
return TRUE;
}
void nsws_about_dialog_init(HINSTANCE hinst, HWND parent)
{
int ret = DialogBox(hinst, MAKEINTRESOURCE(NSWS_ID_ABOUT_DIALOG), parent,
nsws_about_event_callback);
if (ret == -1) {
warn_user(messages_get("NoMemory"), 0);
return;
}
}