commit - a78d33409f8cb67b7ae8af4ab9f48e5a729a7ea6
commit + 6f1b42f263b7acd091cfae63c46a15c26e82a721
blob - /dev/null
blob + d9ae7aef8ba18c4861064bad4d59a3b75523d3ae (mode 644)
--- /dev/null
+++ src/about.ui
+<?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 <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>
+Oliver Lowe <o@olowe.co>
+ </property>
+ <property name="artists">Jesper Schultz <jesper@schultz-net.dk>
+Jakub 'jimmac' Steiner <jimmac@ximian.com>
+Aleksandar Urošević <urke@users.sf.net>
+</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
-/*
- * 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
-/*
- * 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
-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
#include "utils.h"
#include "gtkutils.h"
#include "codeconv.h"
-#include "about.h"
#include "manual.h"
#include "version.h"
#include "prefs_gtk.h"
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)