diff options
Diffstat (limited to 'src/actions.c')
-rw-r--r-- | src/actions.c | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/src/actions.c b/src/actions.c index 0287b40..974af9f 100644 --- a/src/actions.c +++ b/src/actions.c @@ -21,6 +21,7 @@ */ #include <config.h> +#include <glib.h> #include <string.h> #include <math.h> #include <sys/types.h> @@ -841,16 +842,14 @@ activate_action_manual (GtkAction *action, } +#define ABOUT_GROUP "About" +#define EMAILIFY(string) (g_strdelimit ((string), "%", '@')) + void activate_action_about (GtkAction *action, - gpointer data) + gpointer gp) { - FrWindow *window = data; - const char *authors[] = { - "Paolo Bacchilega <[email protected]>", - "Perberos <[email protected]>", - NULL - }; + FrWindow *window = gp; const char *documenters [] = { "Alexander Kirillov", "Breda McColgan", @@ -870,6 +869,29 @@ activate_action_about (GtkAction *action, "51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA") }; char *license_text; + GKeyFile *key_file; + GBytes *bytes; + const guint8 *data; + gsize data_len; + GError *error = NULL; + char **authors; + gsize n_authors = 0, i; + + bytes = g_resources_lookup_data (ENGRAMPA_RESOURCE_UI_PATH G_DIR_SEPARATOR_S "engrampa.about", G_RESOURCE_LOOKUP_FLAGS_NONE, &error); + g_assert_no_error (error); + + data = g_bytes_get_data (bytes, &data_len); + key_file = g_key_file_new (); + g_key_file_load_from_data (key_file, (const char *) data, data_len, 0, &error); + g_assert_no_error (error); + + authors = g_key_file_get_string_list (key_file, ABOUT_GROUP, "Authors", &n_authors, NULL); + + g_key_file_free (key_file); + g_bytes_unref (bytes); + + for (i = 0; i < n_authors; ++i) + authors[i] = EMAILIFY (authors[i]); license_text = g_strjoin ("\n\n", _(license[0]), _(license[1]), _(license[2]), NULL); @@ -887,5 +909,6 @@ activate_action_about (GtkAction *action, "website", "http://mate-desktop.org", NULL); + g_strfreev (authors); g_free (license_text); } |