Commit Diff


commit - a78d33409f8cb67b7ae8af4ab9f48e5a729a7ea6
commit + 6f1b42f263b7acd091cfae63c46a15c26e82a721
blob - /dev/null
blob + d9ae7aef8ba18c4861064bad4d59a3b75523d3ae (mode 644)
--- /dev/null
+++ src/about.ui
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<interface>
+  <object id="about" class="GtkAboutDialog">
+    <property name="website">https://git.olowe.co/talons</property>
+    <property name="authors">Jonathan Boeing &lt;jonathan@claws-mail.org&gt;
+Tristan Chabredier &lt;wwp@claws-mail.org&gt;
+Thorsten Maerz &lt;thorsten@claws-mail.org&gt;
+Paul Mangan &lt;paul@claws-mail.org&gt;
+Ricardo Mones Lastra &lt;ricardo@mones.org&gt;
+Salvatore De Paolis &lt;iwkse@claws-mail.org&gt;
+Michael Rasmussen &lt;mir@datanom.net&gt;
+Oliver Lowe &lt;o@olowe.co&gt;
+    </property>
+    <property name="artists">Jesper Schultz &lt;jesper@schultz-net.dk&gt;
+Jakub 'jimmac' Steiner &lt;jimmac@ximian.com&gt;
+Aleksandar Urošević &lt;urke@users.sf.net&gt;
+</property>
+    <property name="license-type">GTK_LICENSE_GPL_3_0</property>
+    <property name="comments">A fork of claws-mail</property>
+  </object>
+</interface>
blob - 3457dc938b74465c949d8037adca44abcdfe0e77 (mode 644)
blob + /dev/null
--- src/gtk/about.c
+++ /dev/null
@@ -1,826 +0,0 @@
-/*
- * Claws Mail -- a GTK based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2025 the Claws Mail team and Hiroyuki Yamamoto
- *
- * This program 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; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program 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 "defs.h"
-
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-#include <errno.h>
-
-#include "about.h"
-#include "gtkutils.h"
-#include "stock_pixmap.h"
-#include "prefs_common.h"
-#include "utils.h"
-#include "version.h"
-#include "authors.h"
-#include "codeconv.h"
-#include "menu.h"
-#include "textview.h"
-#include "main.h"
-#include "file-utils.h"
-
-static GtkWidget *window;
-static gchar* uri_hover = NULL;
-static GtkTextIter uri_hover_start_iter;
-static GtkTextIter uri_hover_end_iter;
-static GdkCursor *hand_cursor = NULL;
-static GdkCursor *text_cursor = NULL;
-
-static void about_create(void);
-static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event);
-static gboolean about_textview_uri_clicked(GtkTextTag *tag, GObject *obj,
-					GdkEvent *event, GtkTextIter *iter,
-					GtkWidget *textview);
-static gboolean about_textview_motion_notify(GtkWidget *widget,
-					GdkEventMotion *event,
-					GtkWidget *textview);
-static gboolean about_textview_leave_notify(GtkWidget *widget,
-					GdkEventCrossing *event,
-					GtkWidget *textview);
-static void about_textview_uri_update(GtkWidget *textview, gint x, gint y);
-
-static GtkWidget *link_popupmenu;
-
-
-void about_show(void)
-{
-	if (!window)
-		about_create();
-	else {
-		gtk_window_present(GTK_WINDOW(window));
-	}
-
-}
-
-#define ADD_TEXT(text) gtk_text_buffer_insert(buffer, &iter, text, -1)
-
-static GtkWidget *about_create_child_page_info(void)
-{
-	GtkWidget *scrolledwin;
-	GtkWidget *text;
-	GtkTextBuffer *buffer;
-	GtkTextIter iter;
-	GdkRGBA uri_color;
-	gchar buf[1024];
-	GtkTextTag *tag;
-
-	scrolledwin = gtk_scrolled_window_new(NULL, NULL);
-	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
-				       GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwin),
-					    GTK_SHADOW_IN);
-
-	text = gtk_text_view_new();
-	gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE);
-	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD);
-	/* disable margins until GTK bug 793407 is fixed
-	gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text), 6);
-	gtk_text_view_set_right_margin(GTK_TEXT_VIEW(text), 6); */
-	gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text), FALSE);
-	gtk_container_add(GTK_CONTAINER(scrolledwin), text);
-	gtk_widget_add_events(text, GDK_LEAVE_NOTIFY_MASK);
-
-	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
-	gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0);
-
-	/* textview link style (based upon main prefs) */
-	uri_color = prefs_common.color[COL_URI];
-	tag = gtk_text_buffer_create_tag(buffer, "link",
-				"foreground-rgba", &uri_color,
-				"wrap-mode", GTK_WRAP_NONE,
-				NULL);
-	gtk_text_buffer_create_tag(buffer, "link-hover",
-				"foreground-rgba", &uri_color,
-				"underline", PANGO_UNDERLINE_SINGLE,
-				NULL);
-
-	ADD_TEXT(_("Claws Mail is a lightweight, fast and highly-configurable "
-				"email client."));
-	ADD_TEXT("\n\n");
-	ADD_TEXT(_("For further information visit the Claws Mail website:"));
-	ADD_TEXT("\n");
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, HOMEPAGE_URI, -1,
-				"link", NULL);
-	ADD_TEXT("\n\n");
-	ADD_TEXT(_("For support and discussion subscribe to the Claws Mail "
-				"users' mailing list:"));
-	ADD_TEXT("\n");
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, USERS_ML_URI, -1,
-				"link", NULL);
-	ADD_TEXT("\n\n");
-	ADD_TEXT(_("Claws Mail is free software released "
-				"under the GPL. If you wish to donate "
-				"to the Claws Mail project you can do "
-				"so at:"));
-	ADD_TEXT("\n");
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, DONATE_URI, -1,
-				"link", NULL);
-
-	gtk_text_buffer_create_tag(buffer, "indented-list-item",
-				"indent", 8,
-				NULL);
-	gtk_text_buffer_create_tag(buffer, "underlined-list-title",
-				"underline", PANGO_UNDERLINE_SINGLE,
-				NULL);
-	ADD_TEXT("\n\n");
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter,
-			(_("System Information\n")), -1, "underlined-list-title", NULL);
-
-	g_snprintf(buf, sizeof(buf),
-		"GTK %d.%d.%d / GLib %d.%d.%d\nLocale: %s (charset: %s)\n",
-		gtk_major_version, gtk_minor_version, gtk_micro_version,
-		glib_major_version, glib_minor_version, glib_micro_version,
-		conv_get_current_locale(), conv_get_locale_charset_str());
-
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, buf, -1,
-						 "indented-list-item", NULL);
-	ADD_TEXT("\n");
-
-	g_signal_connect(G_OBJECT(tag), "event",
-				G_CALLBACK(about_textview_uri_clicked), text);
-	g_signal_connect(G_OBJECT(text), "motion-notify-event",
-				G_CALLBACK(about_textview_motion_notify), text);
-	g_signal_connect(G_OBJECT(text), "leave-notify-event",
-				G_CALLBACK(about_textview_leave_notify), text);
-
-	return scrolledwin;
-}
-
-static GtkWidget *about_create_child_page_authors(void)
-{
-	GtkWidget *scrolledwin;
-	GtkWidget *text;
-	GtkTextBuffer *buffer;
-	GtkTextIter iter;
-	gint i;
-
-	scrolledwin = gtk_scrolled_window_new(NULL, NULL);
-	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
-				       GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwin),
-					    GTK_SHADOW_IN);
-
-	text = gtk_text_view_new();
-	gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE);
-	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD);
-	/* disable margins until GTK bug 793407 is fixed
-	gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text), 6);
-	gtk_text_view_set_right_margin(GTK_TEXT_VIEW(text), 6); */
-	gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text), FALSE);
-	gtk_container_add(GTK_CONTAINER(scrolledwin), text);
-	gtk_widget_add_events(text, GDK_LEAVE_NOTIFY_MASK);
-
-	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
-	gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0);
-
-	/* init formatting tag: indentation for list items */
-	gtk_text_buffer_create_tag(buffer, "indented-list-item",
-				"indent", 8,
-				NULL);
-	gtk_text_buffer_create_tag(buffer, "underlined-list-title",
-				"underline", PANGO_UNDERLINE_SINGLE,
-				NULL);
-
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter,
-			(_("The Claws Mail Team")), -1, "underlined-list-title", NULL);
-	gtk_text_buffer_insert(buffer, &iter, "\n", 1);
-
-	for (i = 0; TEAM_LIST[i] != NULL; i++) {
-		if (g_utf8_validate(TEAM_LIST[i], -1, NULL))
-			gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, TEAM_LIST[i], -1,
-					"indented-list-item", NULL);
-		else {
-			gchar *conv = conv_codeset_strdup(TEAM_LIST[i], CS_ISO_8859_1, CS_UTF_8);
-			if (conv)
-				gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, conv, -1,
-						"indented-list-item", NULL);
-			g_free(conv);
-		}
-		gtk_text_buffer_insert(buffer, &iter, "\n", 1);
-	}
-
-	ADD_TEXT("\n");
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter,
-			(_("Previous team members")), -1, "underlined-list-title", NULL);
-	ADD_TEXT("\n");
-
-	for (i = 0; EX_TEAM_LIST[i] != NULL; i++) {
-		if (g_utf8_validate(EX_TEAM_LIST[i], -1, NULL))
-			gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, EX_TEAM_LIST[i], -1,
-					"indented-list-item", NULL);
-		else {
-			gchar *conv = conv_codeset_strdup(EX_TEAM_LIST[i], CS_ISO_8859_1, CS_UTF_8);
-			if (conv)
-				gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, conv, -1,
-						"indented-list-item", NULL);
-			g_free(conv);
-		}
-		ADD_TEXT("\n");
-	}
-
-	ADD_TEXT("\n");
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter,
-			(_("The translation team")), -1, "underlined-list-title", NULL);
-	ADD_TEXT("\n");
-
-	for (i = 0; TRANS_TEAM_LIST[i] != NULL; i++) {
-		if (g_utf8_validate(TRANS_TEAM_LIST[i], -1, NULL))
-			gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, TRANS_TEAM_LIST[i], -1,
-					"indented-list-item", NULL);
-		else {
-			gchar *conv = conv_codeset_strdup(TRANS_TEAM_LIST[i], CS_ISO_8859_1, CS_UTF_8);
-			if (conv)
-				gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, conv, -1,
-						"indented-list-item", NULL);
-			g_free(conv);
-		}
-		ADD_TEXT("\n");
-	}
-
-	ADD_TEXT("\n");
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter,
-			(_("Documentation team")), -1, "underlined-list-title", NULL);
-	ADD_TEXT("\n");
-
-	for (i = 0; DOC_TEAM_LIST[i] != NULL; i++) {
-		if (g_utf8_validate(DOC_TEAM_LIST[i], -1, NULL))
-			gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, DOC_TEAM_LIST[i], -1,
-					"indented-list-item", NULL);
-		else {
-			gchar *conv = conv_codeset_strdup(DOC_TEAM_LIST[i], CS_ISO_8859_1, CS_UTF_8);
-			if (conv)
-				gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, conv, -1,
-						"indented-list-item", NULL);
-			g_free(conv);
-		}
-		ADD_TEXT("\n");
-	}
-
-	ADD_TEXT("\n");
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, (_("Logo")), -1,
-			"underlined-list-title", NULL);
-	ADD_TEXT("\n");
-
-	for (i = 0; LOGO_LIST[i] != NULL; i++) {
-		if (g_utf8_validate(LOGO_LIST[i], -1, NULL))
-			gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, LOGO_LIST[i], -1,
-					"indented-list-item", NULL);
-		else {
-			gchar *conv = conv_codeset_strdup(LOGO_LIST[i], CS_ISO_8859_1, CS_UTF_8);
-			if (conv)
-				gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, conv, -1,
-						"indented-list-item", NULL);
-			g_free(conv);
-		}
-		ADD_TEXT("\n");
-	}
-
-	ADD_TEXT("\n");
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, (_("Icons")), -1,
-			"underlined-list-title", NULL);
-	ADD_TEXT("\n");
-
-	for (i = 0; ICONS_LIST[i] != NULL; i++) {
-		if (g_utf8_validate(ICONS_LIST[i], -1, NULL))
-			gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, ICONS_LIST[i], -1,
-					"indented-list-item", NULL);
-		else {
-			gchar *conv = conv_codeset_strdup(ICONS_LIST[i], CS_ISO_8859_1, CS_UTF_8);
-			if (conv)
-				gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, conv, -1,
-						"indented-list-item", NULL);
-			g_free(conv);
-		}
-		ADD_TEXT("\n");
-	}
-
-	ADD_TEXT("\n");
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, (_("Contributors")), -1,
-			"underlined-list-title", NULL);
-	ADD_TEXT("\n");
-
-	for (i = 0; CONTRIBS_LIST[i] != NULL; i++) {
-		if (g_utf8_validate(CONTRIBS_LIST[i], -1, NULL))
-			gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, CONTRIBS_LIST[i], -1,
-					"indented-list-item", NULL);
-		else {
-			gchar *conv = conv_codeset_strdup(CONTRIBS_LIST[i], CS_ISO_8859_1, CS_UTF_8);
-			if (conv)
-				gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, conv, -1,
-						"indented-list-item", NULL);
-			g_free(conv);
-		}
-		ADD_TEXT("\n");
-	}
-
-	return scrolledwin;
-}
-
-static GtkWidget *about_create_child_page_features(void)
-{
-	GtkWidget *scrolledwin;
-	GtkWidget *text;
-	GtkTextBuffer *buffer;
-	GtkTextIter iter;
-	GdkPixbuf *active_pixbuf;
-	GdkPixbuf *inactive_pixbuf;
-
-	scrolledwin = gtk_scrolled_window_new(NULL, NULL);
-	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
-				       GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwin),
-					    GTK_SHADOW_IN);
-
-	text = gtk_text_view_new();
-	gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE);
-	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD);
-	/* disable margins until GTK bug 793407 is fixed
-	gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text), 6);
-	gtk_text_view_set_right_margin(GTK_TEXT_VIEW(text), 6); */
-	gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text), FALSE);
-	gtk_container_add(GTK_CONTAINER(scrolledwin), text);
-	gtk_widget_add_events(text, GDK_LEAVE_NOTIFY_MASK);
-
-	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
-	gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0);
-
-	ADD_TEXT(_("Compiled-in Features"));
-	ADD_TEXT("\n");
-
-	gtk_text_buffer_create_tag(buffer, "bold", "weight", PANGO_WEIGHT_BOLD,
-				   NULL);
-
-	stock_pixbuf_gdk(STOCK_PIXMAP_CHECKBOX_ON, &active_pixbuf);
-	stock_pixbuf_gdk(STOCK_PIXMAP_CHECKBOX_OFF, &inactive_pixbuf);
-
-	gtk_text_buffer_insert_pixbuf(buffer, &iter, active_pixbuf);
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, (" GnuTLS "), -1,
-						 "bold", NULL);
-	gtk_text_buffer_insert(buffer, &iter,
-		(gchar *)C_("GnuTLS", "adds support for encrypted connections to servers\n"), -1);
-
-	gtk_text_buffer_insert_pixbuf(buffer, &iter, active_pixbuf);
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, (" iconv "), -1,
-						 "bold", NULL);
-	gtk_text_buffer_insert(buffer, &iter,
-		(gchar *)C_("iconv", "allows converting to and from different character sets\n"), -1);
-
-	gtk_text_buffer_insert_pixbuf(buffer, &iter, active_pixbuf);
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, (" libetpan "), -1,
-						 "bold", NULL);
-	gtk_text_buffer_insert(buffer, &iter,
-		(gchar *)C_("libetpan", "adds support for IMAP and NNTP servers\n"), -1);
-
-#if USE_OAUTH2
-	gtk_text_buffer_insert_pixbuf(buffer, &iter, active_pixbuf);
-#else
-	gtk_text_buffer_insert_pixbuf(buffer, &iter, inactive_pixbuf);
-#endif
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, (" OAuth2 "), -1,
-						 "bold", NULL);
-	gtk_text_buffer_insert(buffer, &iter,
-		(gchar *)C_("OAuth2", "adds support for OAuth2 authentication\n"), -1);
-
-	return scrolledwin;
-}
-
-static GtkWidget *about_create_child_page_license(void)
-{
-	GtkWidget *scrolledwin;
-	GtkWidget *text;
-	GtkTextBuffer *buffer;
-	GtkTextIter iter;
-	GdkRGBA uri_color;
-	GtkTextTag *tag;
-
-	scrolledwin = gtk_scrolled_window_new(NULL, NULL);
-	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
-				       GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwin),
-					    GTK_SHADOW_IN);
-
-	text = gtk_text_view_new();
-	gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE);
-	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD);
-	/* disable margins until GTK bug 793407 is fixed
-	gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text), 6);
-	gtk_text_view_set_right_margin(GTK_TEXT_VIEW(text), 6); */
-	gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text), FALSE);
-	gtk_container_add(GTK_CONTAINER(scrolledwin), text);
-
-	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
-	gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0);
-
-	ADD_TEXT(
-		_("This program 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; either version 3, or (at your option) "
-		  "any later version."));
-	ADD_TEXT("\n\n");
-
-	ADD_TEXT(
-		_("This program 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."));
-	ADD_TEXT("\n\n");
-
-	/* textview link style (based upon main prefs) */
-	uri_color = prefs_common.color[COL_URI];
-
-	tag = gtk_text_buffer_create_tag(buffer, "link",
-		"foreground-rgba", &uri_color,
-		NULL);
-	gtk_text_buffer_create_tag(buffer, "link-hover",
-		"foreground-rgba", &uri_color,
-		"underline", PANGO_UNDERLINE_SINGLE,
-		NULL);
-
-	gtk_text_buffer_insert(buffer, &iter, g_strconcat(
-		_("You should have received a copy of the GNU General Public License "
-		  "along with this program. If not, see "), "<", NULL), -1);
-	gtk_text_buffer_insert_with_tags_by_name(buffer, &iter,
-		"http://www.gnu.org/licenses/", -1,
-		"link", NULL);
-	gtk_text_buffer_insert(buffer, &iter, ">. \n\n", -1);
-
-	g_signal_connect(G_OBJECT(tag), "event",
-				G_CALLBACK(about_textview_uri_clicked), text);
-	g_signal_connect(G_OBJECT(text), "motion-notify-event",
-			 G_CALLBACK(about_textview_motion_notify), text);
-	g_signal_connect(G_OBJECT(text), "leave-notify-event",
-				G_CALLBACK(about_textview_leave_notify), text);
-
-	return scrolledwin;
-}
-
-#undef ADD_TEXT
-
-static gboolean release_notes_available(void)
-{
-	gboolean ret = FALSE;
-	gchar *path = NULL;
-
-	// path = g_strconcat(DOCDIR, G_DIR_SEPARATOR_S, RELEASE_NOTES_FILE, NULL);
-	path = "/dev/null";
-	ret = (is_file_exist(path));
-	g_free(path);
-
-	return ret;
-}
-
-static GtkWidget *about_create_child_page_release_notes(void)
-{
-	GtkWidget *scrolledwin;
-	GtkWidget *text;
-	GtkTextBuffer *buffer;
-	GtkTextIter iter;
-	gchar *path, buf[1024];
-	FILE *fp;
-
-	scrolledwin = gtk_scrolled_window_new(NULL, NULL);
-	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
-			GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwin),
-			GTK_SHADOW_IN);
-	text = gtk_text_view_new();
-	gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE);
-	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD);
-	/* disable margins until GTK bug 793407 is fixed
-	gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text), 6);
-	gtk_text_view_set_right_margin(GTK_TEXT_VIEW(text), 6); */
-	gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text), FALSE);
-	gtk_container_add(GTK_CONTAINER(scrolledwin), text);
-
-	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
-	gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0);
-
-	// path = g_strconcat(DOCDIR, G_DIR_SEPARATOR_S, RELEASE_NOTES_FILE, NULL);
-	path = "/dev/null";
-	if ((fp = g_fopen(path, "rb")) == NULL) {
-		if (ENOENT != errno) FILE_OP_ERROR(path, "g_fopen");
-		g_free(path);
-		return scrolledwin;
-	}
-	g_free(path);
-
-	while (fgets(buf, sizeof(buf), fp) != NULL) {
-		const gchar *src_codeset = conv_get_locale_charset_str();
-		const gchar *dest_codeset = CS_UTF_8;
-		gchar *tmp;
-
-		tmp = conv_codeset_strdup(buf, src_codeset, dest_codeset);
-		if (!tmp) {
-			g_warning("failed to convert character set of action configuration");
-			tmp = g_strdup(buf);
-		}
-
-		gtk_text_buffer_insert(buffer, &iter, tmp, -1);
-		g_free(tmp);
-	}
-	fclose(fp);
-
-	return scrolledwin;
-}
-
-static void notebook_append_page(GtkWidget *notebook, GtkWidget *scrolledwin, const gchar *label_text)
-{
-	if (!scrolledwin)
-		return;
-
-	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
-	                               GTK_POLICY_AUTOMATIC,
-	                               GTK_POLICY_AUTOMATIC);
-	gtk_widget_set_vexpand(scrolledwin, TRUE);
-	gtk_widget_set_hexpand(scrolledwin, TRUE);
-
-	gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
-	                         scrolledwin,
-	                         gtk_label_new_with_mnemonic(label_text));
-}
-
-static void about_create(void)
-{
-	GtkWidget *grid1;
-	GtkWidget *grid2;
-	GtkWidget *image;
-	GtkWidget *label;
-	GtkWidget *button;
-	GtkWidget *notebook;
-	char *markup;
-	GtkWidget *confirm_area;
-	GtkWidget *close_button;
-	static GdkGeometry geometry;
-	gint row = 0;
-
-	window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "about");
-	gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
-	gtk_window_set_title(GTK_WINDOW(window), _("About Claws Mail"));
-	gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG);
-	gtk_container_set_border_width(GTK_CONTAINER(window), 8);
-
-	g_signal_connect(G_OBJECT(window), "delete_event",
-			 G_CALLBACK(gtk_widget_hide_on_delete), NULL);
-	g_signal_connect(G_OBJECT(window), "key_press_event",
-			 G_CALLBACK(key_pressed), NULL);
-
-	geometry.min_width = 450;
-	geometry.min_height = 500;
-
-	gtk_window_set_geometry_hints(GTK_WINDOW(window), NULL, &geometry,
-				      GDK_HINT_MIN_SIZE);
-
-	gtk_widget_realize(window);
-
-	grid1 = gtk_grid_new();
-	gtk_widget_set_halign(grid1, GTK_ALIGN_FILL);
-	gtk_orientable_set_orientation(GTK_ORIENTABLE(grid1),
-			GTK_ORIENTATION_VERTICAL);
-	gtk_grid_set_row_spacing(GTK_GRID(grid1), 8);
-	gtk_grid_set_column_spacing(GTK_GRID(grid1), 8);
-	gtk_container_add(GTK_CONTAINER(window), grid1);
-
-	image = priv_pixmap_widget(PRIV_PIXMAP_CLAWS_MAIL_LOGO);
-	gtk_widget_set_halign(image, GTK_ALIGN_CENTER);
-	gtk_widget_set_valign(image, GTK_ALIGN_CENTER);
-	gtk_grid_attach(GTK_GRID(grid1), image, 0, row, 1, 1);
-
-	grid2 = gtk_grid_new();
-	gtk_orientable_set_orientation(GTK_ORIENTABLE(grid2),
-			GTK_ORIENTATION_VERTICAL);
-	gtk_widget_set_halign(grid2, GTK_ALIGN_CENTER);
-	gtk_widget_set_valign(grid2, GTK_ALIGN_CENTER);
-	gtk_grid_set_row_spacing(GTK_GRID(grid2), 4);
-
-	gtk_grid_attach(GTK_GRID(grid1), grid2, 1, row, 1, 1);
-	row++;
-
-	label = gtk_label_new("");
-	gtk_label_set_selectable(GTK_LABEL(label), TRUE);
-	gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_CENTER);
-	gtk_container_add(GTK_CONTAINER(grid2), label);
-	markup = g_markup_printf_escaped
-		("<span weight=\"bold\" size=\"xx-large\">Claws Mail</span>\nversion %s",
-		 VERSION);
-	gtk_label_set_markup(GTK_LABEL(label), markup);
-	g_free(markup);
-
-	button = gtk_link_button_new(HOMEPAGE_URI);
-	gtk_container_add(GTK_CONTAINER(grid2), button);
-	label = gtk_label_new
-		(_("Copyright (C) 1999-2025\nThe Claws Mail Team\n"
-		 "and Hiroyuki Yamamoto"));
-	gtk_label_set_selectable(GTK_LABEL(label), TRUE);
-	gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_CENTER);
-	gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
-	gtk_container_add(GTK_CONTAINER(grid2), label);
-
-	notebook = gtk_notebook_new();
-	gtk_widget_show(notebook);
-
-	notebook_append_page(notebook, about_create_child_page_info(), _("_Info"));
-	notebook_append_page(notebook, about_create_child_page_authors(), _("_Authors"));
-	notebook_append_page(notebook, about_create_child_page_features(), _("_Features"));
-	notebook_append_page(notebook, about_create_child_page_license(), _("_License"));
-
-	if (release_notes_available()) {
-		notebook_append_page(notebook, about_create_child_page_release_notes(), _("_Release Notes"));
-	}
-
-	gtk_widget_set_hexpand(notebook, TRUE);
-	gtk_widget_set_vexpand(notebook, TRUE);
-	gtk_grid_attach(GTK_GRID(grid1), notebook, 0, row, 2, 1);
-	row++;
-
-	gtkut_stock_button_set_create(&confirm_area, &close_button, "window-close", _("_Close"),
-				      NULL, NULL, NULL, NULL, NULL, NULL);
-	gtk_grid_attach(GTK_GRID(grid1), confirm_area, 0, row, 2, 1);
-	row++;
-
-	gtk_widget_grab_default(close_button);
-	gtk_widget_grab_focus(close_button);
-	g_signal_connect_closure
-		(G_OBJECT(close_button), "clicked",
-		 g_cclosure_new_swap(G_CALLBACK(gtk_widget_hide_on_delete),
-				     window, NULL), FALSE);
-
-	gtk_widget_show_all(window);
-}
-
-static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event)
-{
-	if (event && event->keyval == GDK_KEY_Escape)
-		gtk_widget_hide(window);
-	return FALSE;
-}
-
-static gboolean about_textview_uri_clicked(GtkTextTag *tag, GObject *obj,
-					GdkEvent *event, GtkTextIter *iter,
-					GtkWidget *textview)
-{
-	GtkTextIter start_iter, end_iter;
-	GdkEventButton *bevent;
-	gchar *link = NULL;
-
-	if (!event || !tag) {
-		return FALSE;
-	}
-
-	if (event->type != GDK_BUTTON_PRESS && event->type != GDK_2BUTTON_PRESS
-		&& event->type != GDK_BUTTON_RELEASE) {
-		return FALSE;
-	}
-
-	/* get link text from tag */
-	if (get_tag_range(iter, tag, &start_iter,
-				   &end_iter) == FALSE) {
-		return FALSE;
-	}
-	link = gtk_text_iter_get_text(&start_iter, &end_iter);
-	if (link == NULL) {
-		return FALSE;
-	}
-
-	bevent = (GdkEventButton *) event;
-	if (bevent->button == 1 && event->type == GDK_BUTTON_RELEASE) {
-		GtkTextBuffer *buffer;
-
-		/* we shouldn't follow a link if the user has selected something */
-		buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
-		gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter);
-		if (gtk_text_iter_get_offset(&start_iter) != gtk_text_iter_get_offset(&end_iter)) {
-			return FALSE;
-		}
-		/* open link and do *not* return TRUE so that
-		   further gtk processing of the signal is done */
-		open_uri(link, prefs_common_get_uri_cmd());
-
-	} else {
-		if (bevent->button == 3 && event->type == GDK_BUTTON_PRESS) {
-			link_popupmenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(
-				gtk_ui_manager_get_widget(gtkut_ui_manager(), "/Menus/TextviewPopupLink")));
-
-			g_object_set_data(
-					G_OBJECT(link_popupmenu),
-					"raw_url", link);
-			gtk_menu_popup_at_pointer(GTK_MENU(link_popupmenu), NULL);
-
-			return TRUE;
-		}
-	}
-	return FALSE;
-}
-
-static gboolean about_textview_motion_notify(GtkWidget *widget,
-					GdkEventMotion *event,
-					GtkWidget *textview)
-{
-	about_textview_uri_update(textview, event->x, event->y);
-	return FALSE;
-}
-
-static gboolean about_textview_leave_notify(GtkWidget *widget,
-					GdkEventCrossing *event,
-					GtkWidget *textview)
-{
-	about_textview_uri_update(textview, -1, -1);
-
-	return FALSE;
-}
-
-static void about_textview_uri_update(GtkWidget *textview, gint x, gint y)
-{
-	GtkTextBuffer *buffer;
-	GtkTextIter start_iter, end_iter;
-	gchar *uri = NULL;
-	gboolean same;
-
-	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
-
-	if (x != -1 && y != -1) {
-		gint bx, by;
-		GtkTextIter iter;
-		GSList *tags;
-		GSList *cur;
-
-		gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(textview),
-				GTK_TEXT_WINDOW_WIDGET,
-				x, y, &bx, &by);
-		gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(textview),
-				&iter, bx, by);
-
-		tags = gtk_text_iter_get_tags(&iter);
-		for (cur = tags; cur != NULL; cur = cur->next) {
-			GtkTextTag *tag = cur->data;
-			char *name;
-
-			g_object_get(G_OBJECT(tag), "name", &name, NULL);
-			if (strcmp(name, "link") == 0
-			    && get_tag_range(&iter, tag, &start_iter, &end_iter)) {
-				uri = gtk_text_iter_get_text(&start_iter, &end_iter);
-			}
-			g_free(name);
-
-			if (uri) {
-				break;
-			}
-		}
-		g_slist_free(tags);
-	}
-
-	/* compare previous hovered link and this one
-	   (here links must be unique in text buffer otherwise ClickableText structures should be
-	   used as in textview.c) */
-	same = (uri != NULL && uri_hover != NULL
-		&& strcmp((char*)uri, (char*)uri_hover) == 0);
-
-	if (same == FALSE) {
-		GdkWindow *window;
-
-		if (uri_hover) {
-			gtk_text_buffer_remove_tag_by_name(buffer,
-					"link-hover",
-					&uri_hover_start_iter,
-					&uri_hover_end_iter);
-		}
-
-		uri_hover = uri;
-		if (uri) {
-			uri_hover_start_iter = start_iter;
-			uri_hover_end_iter = end_iter;
-
-			gtk_text_buffer_apply_tag_by_name(buffer,
-					"link-hover",
-					&start_iter,
-					&end_iter);
-		}
-
-		window = gtk_text_view_get_window(GTK_TEXT_VIEW(textview),
-						GTK_TEXT_WINDOW_TEXT);
-		if (!hand_cursor)
-			hand_cursor = gdk_cursor_new_for_display(
-					gdk_window_get_display(window), GDK_HAND2);
-		if (!text_cursor)
-			text_cursor = gdk_cursor_new_for_display(
-					gdk_window_get_display(window), GDK_XTERM);
-		gdk_window_set_cursor(window, uri ? hand_cursor : text_cursor);
-	}
-}
blob - 52ce9317967fc6c9bc893884ba6eeadfa2c5130b (mode 644)
blob + /dev/null
--- src/gtk/about.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Claws Mail -- a GTK based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2015 Hiroyuki Yamamoto and the Claws Mail team
- *
- * This program 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; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program 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/>.
- */
-
-#ifndef __ABOUT_H__
-#define __ABOUT_H__
-
-void about_show(void);
-
-#endif /* __ABOUT_H__ */
blob - aedce72de5a8ca5a086529f3414d2b7b817a0cd7 (mode 644)
blob + /dev/null
--- src/gtk/authors.h
+++ /dev/null
@@ -1,356 +0,0 @@
-static char *TEAM_LIST[] = {
-"Jonathan Boeing <jonathan@claws-mail.org>",
-"Tristan Chabredier <wwp@claws-mail.org>",
-"Thorsten Maerz <thorsten@claws-mail.org>",
-"Paul Mangan <paul@claws-mail.org>",
-"Ricardo Mones Lastra <ricardo@mones.org>",
-"Salvatore De Paolis <iwkse@claws-mail.org>",
-"Michael Rasmussen <mir@datanom.net>",
-NULL
-};
-
-static char *EX_TEAM_LIST[] = {
-"Holger Berndt",
-"Hoà Viêt Dinh",
-"Keith Edmunds",
-"Match Grun",
-"Melvin Hadasht",
-"Oliver Haertel",
-"Christoph Hohmann",
-"Alfons Hoogervorst",
-"Andrej Kacian",
-"Werner Koch",
-"Darko Koruga",
-"Charles Lehner",
-"Colin Leroy-Mira",
-"Paweł Pękala",
-"Leandro A. F. Pereira",
-"Luke Plant",
-"Martin Schaaf",
-"Carsten Schurig",
-"Fabien Vantard",
-"Sergey Vlasov",
-"Hiroyuki Yamamoto",
-NULL
-};
-
-static char *TRANS_TEAM_LIST[] = {
-"[ca] David Medina <opensusecatala@gmail.com>",
-"[cs] David Vachulka <david@konstrukce-cad.com>",
-"[da] Erik P. Olsen <epodata@gmail.com>",
-"[de] Simon Legner",
-"[en_GB] Paul Mangan <paul@claws-mail.org>",
-"[es] Ricardo Mones Lastra <ricardo@mones.org>",
-"[fi] Flammie Pirinen <flammie@iki.fi>",
-"[fr] Tristan Chabredier <wwp@claws-mail.org>",
-"[hu] Páder Rezső <rezso@rezso.net>",
-"[id_ID] MSulchan Darmawan <bleketux@gmail.com>",
-"[it] Luigi Votta <luigi.vtt@gmail.com>",
-"[ja] UTUMI Hirosi <utuhiro78@yahoo.co.jp>",
-"[nb] Petter Adsen <petter@synth.no>",
-"[nl] Marcel Pol <mpol@gmx.net>",
-"[pl] Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>",
-"[pt_BR] Frederico Goncalves Guimaraes <frederico@teia.bio.br>",
-"[pt_PT] Hugo Carvalho <hugokarvalho@hotmail.com>",
-"[ro] Cristian Secară <liste@secarica.ro>",
-"[ru] Mikhail Kurinnoi <viewizard@viewizard.com>",
-"[sk] Slavko <slavino@slavino.sk>",
-"[sq] Besnik Bleta <besnik@programeshqip.org>",
-"[sv] Andreas Rönnquist <gusnan@openmailbox.org>",
-"[tr] Numan Demirdöğen <if.gnu.linux@gmail.com>",
-"[zh_TW] Mark Chang <mark.cyj@gmail.com>",
-NULL
-};
-
-static char *DOC_TEAM_LIST[] = {
-"[en] Tristan Chabredier <wwp@claws-mail.org>",
-"     Ricardo Mones Lastra <ricardo@mones.org>",
-"     Paul Mangan <paul@claws-mail.org>",
-"[de] Christoph Klassen <christoph.klassen@intevation.de>",
-"[es] Ricardo Mones Lastra <ricardo@mones.org>",
-"[fr] Tristan Chabredier <wwp@claws-mail.org>",
-NULL
-};
-
-static char *LOGO_LIST[] = {
-"Jesper Schultz <jesper@schultz-net.dk>",
-NULL
-};
-
-static char *ICONS_LIST[] = {
-"Jakub 'jimmac' Steiner <jimmac@ximian.com>",
-"Aleksandar Urošević <urke@users.sf.net>",
-NULL
-};
-
-static char *CONTRIBS_LIST[] = {
-"Alte",
-"Jeremy Andrews",
-"Stephen Anthony",
-"André Filipe de Assunção e Brito",
-"Sergei Astanin",
-"Ruslan N. Balkin",
-"Andy Balaam",
-"Henri Bauer",
-"Didier Barvaux",
-"Fabio Júnior Beneditto",
-"M. Benkmann",
-"Wilbert Berendsen",
-"Sébastien Bigaret",
-"Laurent Bigonville",
-"Jean-Luc Biord",
-"Blatinox",
-"Hanno Böck",
-"Pavlo Bohmat",
-"Ralf Bormann",
-"H. Merijn Brand",
-"Eugene Brevdo",
-"Olivier Brunel",
-"Sean Buckheister",
-"Anton Butanaev",
-"Henrik Carlqvist",
-"Luca Cavalli",
-"Gianni Ceccarelli",
-"David Chalmers",
-"Wei-Lun Chao",
-"Guillaume Chazarain",
-"Tsu-Fan Cheng",
-"Manrat Chobchuen",
-"Rich Coe",
-"Natanael Copa",
-"Jonathan Corbet",
-"Christian Cornelssen",
-"Palmer Dabbelt",
-"George Danchev",
-"Robert David",
-"Kevin Day",
-"Matthieu Dazy",
-"Ben Deering",
-"Jean Delvare",
-"Pierric Descamps",
-"Orivej Desh",
-"Rodrigo Dias Arruda Senra",
-"Frank Dietrich",
-"Tim Dijkstra",
-"Nicolas Doualot",
-"Felix Eckhofer",
-"Charles A. Edwards",
-"Stefaan Eeckels",
-"Mikhail Efremov",
-"Willem van Engen",
-"Paul Evans",
-"Leonid Evdokimov",
-"Xavier FACQ",
-"Tiago Faria",
-"Alessandro Di Federico",
-"Lars Persson Fink",
-"David Fletcher",
-"Bob Forsman",
-"Matthias Förste",
-"Ivan Francolin Martinez",
-"Stoyan Genov",
-"Stavros Giannouris",
-"Thomas Gilgin",
-"Marius Glauser",
-"Michael Gmelin",
-"Thierry Godefroy",
-"Alex Gorbachenko",
-"Michał Górny",
-"Bodo Graumann",
-"Yang Guilong",
-"Ashish Gupta",
-"Daniel Gustafson",
-"Roland Haas",
-"Oliver Haertel",
-"Anders Hammar",
-"Mitko Haralanov",
-"Alexander Lyons Harkness",
-"Hashimoto",
-"Jacob Head",
-"Federico Heinz",
-"Geir Helland",
-"Jorge Van Hemelryck",
-"Olaf Hering",
-"Christian Hesse",
-"Higuchi",
-"Hiramatu",
-"HIROSHIMA",
-"Marc Hoper",
-"Michihide Hotta",
-"Shawn Houston",
-"Charles Huber",
-"Michael Hughes",
-"Richard Hughes",
-"Arthur Huillet",
-"Ben Hutchings",
-"Chideok Hwang",
-"John E.P. Hynes",
-"Hironori IWANE",
-"Motonobu Ichimura",
-"Alexey Illarionov",
-"Yoichi Imai",
-"Mathias Intemann",
-"Ishihara",
-"Jens Jahnke",
-"Daniel Jakots",
-"Pascal Jermini",
-"KAJIWARA",
-"KUROSAWA",
-"Nicolas Kaiser",
-"Stanislav Karchebny",
-"kazken3",
-"WAKAI Kazunao",
-"Fabian Keil",
-"Jakub Kiciński",
-"Martin Kluge",
-"IWAMOTO Kouichi",
-"Ivan Krylov",
-"Mikhail Kurinnoi",
-"Abhay S. Kushwaha",
-"Joshua M. Kwan",
-"Jean-Yves Lefort",
-"Flavio Leitner",
-"Jérôme Lelong",
-"Eric Limpens",
-"Thomas Link",
-"Reed Loden",
-"David Looney",
-"Alessandro Maestri",
-"Maki",
-"Jindrich Makovicka",
-"Igor Mammedov",
-"Tim Mann",
-"Darac Marjal",
-"HIRAMATSU Masami",
-"Yasuzaki Masayoshi",
-"Jason McCarver",
-"Yotam Medini",
-"David Mehrmann",
-"Christian Mertes",
-"Bram Metsch",
-"Hanno Meyer-Thurow",
-"George Michaelson",
-"Raphael Michel",
-"Florian Mickler",
-"Neill Miller",
-"Suzuki Mio",
-"Alex S Moore",
-"Frank Mueller",
-"NAKAGAWA",
-"Yuuki NINOMIYA",
-"Satoshi Nagayasu",
-"Yukihiro Nakai",
-"SungHyun Nam",
-"OSHIRO Naoki",
-"Andrew Nelson",
-"Nishika",
-"Nishimura",
-"Nishiyama",
-"Masaaki Noro",
-"Gustavo Noronha Silva",
-"Ales Nosek",
-"Emilian Nowak",
-"James Noyes",
-"Nikolas Nyby",
-"nycex",
-"Jens Oberender",
-"Ofer",
-"Ohmasa",
-"Miquel Oliete",
-"Paul Ollis",
-"Fredrik Olofssen",
-"Orbea",
-"Thomas Orgis",
-"Reza Pakdel",
-"Richard Palo",
-"Alvar Penning",
-"Damian Poddebniak",
-"Marcel Pol",
-"Martin Pool",
-"MatN",
-"Quar",
-"Don Quijote",
-"Steve Rader",
-"Quentin Rameau",
-"Steve Randall",
-"Jens Rantil",
-"Ravemax",
-"Eric S. Raymond",
-"Ivan Rayner",
-"David Relson",
-"Volker Ribbert",
-"Chad Robinson",
-"Paul Rolland",
-"Andreas Rönnquist",
-"Luca Rosellini",
-"Guy Rouillier",
-"Stephan Sachse",
-"Sakamoto",
-"Mohammed Sameer",
-"Tobias Sandhaas",
-"Peter Sarvas",
-"Oliver Schneider",
-"Torsten Schoenfeld",
-"Simon 'corecode' Schubert",
-"Kim Schulz",
-"Markus Schwarzenberg",
-"Michael Schwendt",
-"Ralph Sennhauser",
-"Setoh",
-"Michael Shell",
-"shigeri",
-"Jesse Skinner",
-"Ville Skyttä",
-"Alex Smith",
-"Dale P. Smith",
-"Avinash Sonawane",
-"Andrea Spadaccini",
-"Manuel Stoeckl",
-"Bogdan Sumanariu",
-"TAKANO",
-"TOGAWA",
-"Tajiri",
-"Takahashi",
-"Sakaguchi Takayuki",
-"Tanaka",
-"Shimamoto \"Neko\" Tatsuya",
-"Timo Teräs",
-"Pascal Terjan",
-"Thorsten Thielen",
-"Edgar Toernig",
-"Konstantin Tokarev",
-"Masahiro Tomita",
-"Tomita",
-"Topia",
-"Ramin Yaghoubzadeh Torky",
-"Anders Troback",
-"Tsutsui",
-"Aleksandar Urošević",
-"Petr Vanek",
-"Jeroen Versteeg",
-"Viatrix",
-"Kevin Vigor",
-"Michael Vilain",
-"Johan Vromans",
-"Botalov Vyacheslav",
-"Radek Vybiral",
-"Jonathan Ware",
-"Watanabe",
-"Rafal Weglarz",
-"Florian Weimer",
-"Martin Wicke",
-"Jan Willamowius",
-"Paul Wolneykien",
-"Bob Woodside",
-"YAMAGUCHI",
-"T. Yamamoto",
-"Yanase",
-"Yasumatsu",
-"Ralgh Young",
-"YUP",
-"Daniel Zaoui",
-"Gál Zoltán",
-"Marien Zwart",
-"Martin Zwickel",
-NULL
-};
blob - 9a39b5760ead821db8d92708d1084b039366ee16
blob + f648114613c5b64dfeecabdb2836029d4e817f58
--- src/mainwindow.c
+++ src/mainwindow.c
@@ -60,7 +60,6 @@
 #include "utils.h"
 #include "gtkutils.h"
 #include "codeconv.h"
-#include "about.h"
 #include "manual.h"
 #include "version.h"
 #include "prefs_gtk.h"
@@ -388,7 +387,13 @@ static void mainwindow_nothing_cb	   (GtkAction *actio
 
 static void about_cb(GtkAction *gaction, gpointer data)
 {
-	about_show();
+	char path[PATH_MAX];
+	strlcpy(path, getenv("HOME"), sizeof(path));
+	strlcat(path, "/.local/share/talons/about.ui", sizeof(path));
+
+	GtkBuilder *builder = gtk_builder_new_from_file(path);
+	GtkWidget *about = GTK_WIDGET(gtk_builder_get_object(builder, "about"));
+	gtk_widget_show(about);
 }
 
 static void	mw_inc_mail_cb			(GtkAction *gaction, gpointer data)