summaryrefslogtreecommitdiff
path: root/windows/about.c
diff options
context:
space:
mode:
Diffstat (limited to 'windows/about.c')
-rw-r--r--windows/about.c174
1 files changed, 174 insertions, 0 deletions
diff --git a/windows/about.c b/windows/about.c
new file mode 100644
index 000000000..e73b270ce
--- /dev/null
+++ b/windows/about.c
@@ -0,0 +1,174 @@
+/*
+* 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;
+ }
+}