summaryrefslogtreecommitdiff
path: root/mate-about
diff options
context:
space:
mode:
Diffstat (limited to 'mate-about')
-rw-r--r--mate-about/Makefile.am24
-rw-r--r--mate-about/mate-about.c275
-rw-r--r--mate-about/mate-about.desktop.in.in15
-rw-r--r--mate-about/mate-about.h656
-rw-r--r--mate-about/nyan-cat.gifbin0 -> 24975 bytes
5 files changed, 970 insertions, 0 deletions
diff --git a/mate-about/Makefile.am b/mate-about/Makefile.am
new file mode 100644
index 0000000..d56ac71
--- /dev/null
+++ b/mate-about/Makefile.am
@@ -0,0 +1,24 @@
+bin_PROGRAMS = mate-about
+mate_about_SOURCES = mate-about.c mate-about.h
+mate_about_CFLAGS = $(MATE_ABOUT_CFLAGS) $(UNIQUE_CFLAGS)
+mate_about_LDADD = $(MATE_ABOUT_LIBS) $(UNIQUE_LIBS)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ $(MATE_ABOUT_CFLAGS) \
+ -DLOCALE_DIR=\"$(datadir)/locale\" \
+ -DPIXMAPS_DIR=\"$(datadir)/pixmaps/\"
+
+@INTLTOOL_DESKTOP_RULE@
+
+pixmapdir = $(datadir)/pixmaps
+pixmap_DATA = nyan-cat.gif
+
+desktopdir = $(datadir)/applications
+desktop_in_files = mate-about.desktop.in
+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+
+CLEANFILES = mate-about.desktop mate-about
+
+#-include $(top_srcdir)/git.mk
+
diff --git a/mate-about/mate-about.c b/mate-about/mate-about.c
new file mode 100644
index 0000000..c513248
--- /dev/null
+++ b/mate-about/mate-about.c
@@ -0,0 +1,275 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ *
+ * Copyright (C) 2011 Perberos <[email protected]>
+ *
+ * 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 2, 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#ifndef __MATE_ABOUT_C__
+#define __MATE_ABOUT_C__
+
+#include "mate-about.h"
+
+// what a mess!
+#ifndef DISABLE_NYANCAT
+
+// Thanks! http://www.gtkforums.com/viewtopic.php?t=1639
+typedef struct _iter_arg {
+ GtkWidget* widget;
+ GdkPixbufAnimation* animation;
+ GdkPixbufAnimationIter* iter;
+} iter_arg_t;
+
+gboolean on_animation_frame(iter_arg_t* object)
+{
+ if (object->widget == NULL)
+ {
+ return FALSE;
+ }
+
+ static gint frame = 1;
+
+ if (gdk_pixbuf_animation_iter_advance(object->iter, NULL))
+ {
+ frame++;
+
+ gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(object->widget), gdk_pixbuf_animation_iter_get_pixbuf(object->iter));
+ }
+
+ return TRUE;
+}
+
+#endif
+
+#if GTK_CHECK_VERSION(3, 0, 0) && !defined(UNIQUE)
+
+static void mate_about_on_activate(GtkApplication* app)
+{
+ GList* list;
+ GtkWidget* window;
+
+ list = gtk_application_get_windows(app);
+
+ if (list)
+ {
+ gtk_window_present(GTK_WINDOW(list->data));
+ }
+ else
+ {
+ mate_about_run();
+ }
+}
+
+#elif GLIB_CHECK_VERSION(2, 26, 0) && !defined(UNIQUE)
+// es un callback
+static void mate_about_on_activate(GApplication* app)
+{
+ if (!mate_about_dialog)
+ {
+ mate_about_run();
+ }
+ else
+ {
+ gtk_window_present(GTK_WINDOW(mate_about_dialog));
+ }
+}
+
+#endif
+
+void mate_about_run(void)
+{
+ /**
+ * Es importante llamar gtk_init, si no, no se puede iniciar bien el dialogo
+ */
+ mate_about_dialog = gtk_about_dialog_new();
+
+ gtk_window_set_default_icon_name(icon);
+
+ // logo
+ #ifndef DISABLE_NYANCAT
+ iter_arg_t animation_object;
+ GdkPixbufAnimation* animation;
+ GdkPixbufAnimationIter *iter;
+ GtkWidget* image;
+
+ animation = gdk_pixbuf_animation_new_from_file(PIXMAPS_DIR "nyan-cat.gif", NULL);
+
+ if (animation != NULL)
+ {
+ iter = gdk_pixbuf_animation_get_iter(animation, NULL);
+
+ animation_object.animation = animation;
+ animation_object.iter = iter;
+ animation_object.widget = mate_about_dialog;
+
+ gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(mate_about_dialog), gdk_pixbuf_animation_iter_get_pixbuf(iter));
+
+ g_timeout_add(gdk_pixbuf_animation_iter_get_delay_time(iter), (GSourceFunc) on_animation_frame, (gpointer) &animation_object);
+ }
+
+ #elif GTK_CHECK_VERSION(3, 0, 0) || GTK_CHECK_VERSION(2, 6, 0)
+
+ gtk_about_dialog_set_logo_icon_name(GTK_ABOUT_DIALOG(mate_about_dialog), icon);
+
+ #else
+
+ GtkIconTheme* icon_theme = gtk_icon_theme_get_default();
+
+ if (gtk_icon_theme_has_icon(icon_theme, icon))
+ {
+ GdkPixbuf* pixbuf = gtk_icon_theme_load_icon(icon_theme, icon, 64, 0, NULL);
+ gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(mate_about_dialog), pixbuf);
+ g_object_unref(pixbuf);
+ }
+
+ #endif
+
+ //name
+ #if GTK_CHECK_VERSION(3, 0, 0) || GTK_CHECK_VERSION(2, 12, 0)
+ gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(mate_about_dialog), gettext(program_name));
+ #else
+ gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(mate_about_dialog), gettext(program_name));
+ #endif
+
+ // version
+ gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(mate_about_dialog), version);
+
+ // creditos y pagina web
+ gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(mate_about_dialog), copyright);
+ gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(mate_about_dialog), website);
+
+ /**
+ * This generate a random message.
+ * The comments index must not be more than comments_count - 1
+ */
+ gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(mate_about_dialog), gettext(comments[g_random_int_range(0, comments_count - 1)]));
+
+ // autores
+ gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(mate_about_dialog), authors);
+ // I comment this because the list is empty
+ //gtk_about_dialog_set_artists(GTK_ABOUT_DIALOG(mate_about_dialog), artists);
+ //gtk_about_dialog_set_documenters(GTK_ABOUT_DIALOG(mate_about_dialog), documenters);
+
+ #if GTK_CHECK_VERSION(3, 0, 0)
+ gtk_about_dialog_set_license_type(GTK_ABOUT_DIALOG(mate_about_dialog), GTK_LICENSE_GPL_3_0);
+ gtk_about_dialog_set_wrap_license(GTK_ABOUT_DIALOG(mate_about_dialog), TRUE);
+ #endif
+
+ #ifdef USE_UNIQUE
+ unique_app_watch_window(mate_about_application, GTK_WINDOW(mate_about_dialog));
+ #elif GTK_CHECK_VERSION(3, 0, 0) && !defined(UNIQUE)
+ gtk_window_set_application(GTK_WINDOW(mate_about_dialog), mate_about_application);
+ #endif
+
+ // start and destroy
+ gtk_dialog_run(GTK_DIALOG(mate_about_dialog));
+ gtk_widget_destroy(mate_about_dialog);
+}
+
+void mate_about_release_version(void)
+{
+ g_printf("%s %s\n", gettext(program_name), version);
+}
+
+// ...
+gint main(gint argc, gchar** argv)
+{
+ gint status = 0;
+ /**
+ * Solo utilizado para option parse
+ */
+ GError* error = NULL;
+
+ /**
+ * Con esto se inicia gettext
+ */
+ bindtextdomain(gettext_package, locale_dir);
+ bind_textdomain_codeset(gettext_package, "UTF-8");
+ textdomain(gettext_package);
+
+ /**
+ * http://www.gtk.org/api/2.6/glib/glib-Commandline-option-parser.html
+ */
+ GOptionContext* context = g_option_context_new(NULL);
+ g_option_context_add_main_entries(context, command_entries, gettext_package);
+ g_option_context_add_group(context, gtk_get_option_group(TRUE));
+ g_option_context_parse(context, &argc, &argv, &error);
+
+ /**
+ * Not necesary at all, program just run and die.
+ * But it free a little memory.
+ */
+ g_option_context_free(context);
+
+ gtk_init(&argc, &argv);
+
+ if (mate_about_nogui == TRUE)
+ {
+ mate_about_release_version();
+ }
+ else
+ {
+ /**
+ * Ejemplos tomados de:
+ * http://developer.gnome.org/gtk3/3.0/gtk-migrating-GtkApplication.html
+ */
+ #if defined(UNIQUE)
+
+ mate_about_application = unique_app_new("org.mate.about", NULL);
+
+ if (unique_app_is_running(mate_about_application))
+ {
+ UniqueResponse response = unique_app_send_message(mate_about_application, UNIQUE_ACTIVATE, NULL);
+
+ if (response != UNIQUE_RESPONSE_OK)
+ {
+ status = 1;
+ }
+ }
+ else
+ {
+ mate_about_run();
+ }
+
+ g_object_unref(mate_about_application);
+
+ #elif GTK_CHECK_VERSION(3, 0, 0)
+
+ mate_about_application = gtk_application_new("org.mate.about", 0);
+ g_signal_connect(mate_about_application, "activate", G_CALLBACK(mate_about_on_activate), NULL);
+
+ status = g_application_run(G_APPLICATION(mate_about_application), argc, argv);
+
+ g_object_unref(mate_about_application);
+
+ #elif GLIB_CHECK_VERSION(2, 26, 0)
+
+ mate_about_application = g_application_new("org.mate.about", G_APPLICATION_FLAGS_NONE);
+ g_signal_connect(mate_about_application, "activate", G_CALLBACK(mate_about_on_activate), NULL);
+
+ status = g_application_run(G_APPLICATION(mate_about_application), argc, argv);
+
+ g_object_unref(mate_about_application);
+
+ #else
+ mate_about_run();
+ #endif
+ }
+
+ return status;
+}
+
+#endif
diff --git a/mate-about/mate-about.desktop.in.in b/mate-about/mate-about.desktop.in.in
new file mode 100644
index 0000000..e4b36e3
--- /dev/null
+++ b/mate-about/mate-about.desktop.in.in
@@ -0,0 +1,15 @@
+[Desktop Entry]
+_Name=About MATE
+_Comment=Learn more about MATE
+Exec=mate-about
+Icon=desktop
+Terminal=false
+Type=Application
+Categories=MATE;GTK;Core;Utility;
+OnlyShowIn=MATE;
+X-MATE-Bugzilla-Bugzilla=MATE
+X-MATE-Bugzilla-Product=mate-desktop
+X-MATE-Bugzilla-Component=mate-about
+X-MATE-Bugzilla-Version=@VERSION@
+StartupNotify=false
+NoDisplay=true
diff --git a/mate-about/mate-about.h b/mate-about/mate-about.h
new file mode 100644
index 0000000..91cd4c4
--- /dev/null
+++ b/mate-about/mate-about.h
@@ -0,0 +1,656 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ *
+ * Copyright (C) 2011 Perberos <[email protected]>
+ *
+ * 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 2, 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#ifndef __MATE_ABOUT_H__
+#define __MATE_ABOUT_H__
+
+#include <gtk/gtk.h>
+#include <libintl.h> // for gettext
+
+#include <config.h> // autogenerated by ./configure
+
+#ifdef USE_UNIQUE
+ #include <unique/unique.h>
+#endif
+
+//mate-about
+//{
+ const gchar* gettext_package = GETTEXT_PACKAGE; // mate-desktop-2.0
+ const gchar* locale_dir = LOCALE_DIR; // /usr/local/share/locale
+
+ const gchar* program_name = "MATE Desktop Environment"; // MATE @PACKAGE_NAME@
+ const gchar* version = PACKAGE_VERSION;
+ const gchar* icon = "desktop";
+ const gchar* website = "http://www.matsusoft.com.ar/projects/mate/";
+
+ const gchar* copyright = ""
+ "Copyright © 1997-2011 GNOME developers\n"
+ "Copyright © 2011 Perberos"; // egoista!
+
+ /**
+ * Incrementar el valor de comments_count si se desea agregar nuevos valores
+ * en comments[]. Porque, este valor es usado en un random para obtener el
+ * indice de la cadena.
+ */
+ const gint comments_count = 6;
+ const gchar* comments[] = {
+ "MATE also includes a complete development platform for applications "
+ "programmers, allowing the creation of powerful and complex applications.",
+
+ "MATE includes most of what you see on your computer, including the file "
+ "manager, web browser, menus, and many applications.",
+
+ "MATE is a Free, usable, stable, accessible desktop environment for the Unix-"
+ "like family of operating systems.",
+
+ "MATE's focus on usability and accessibility, regular release cycle, and "
+ "strong corporate backing make it unique among Free Software desktops.",
+
+ "MATE's greatest strength is our strong community. Virtually anyone, with or "
+ "without coding skills, can contribute to making MATE better.",
+ // Must be GNOME, not MATE! or not...?
+ "Hundreds of people have contributed code to MATE since it was started in "
+ "1997; many more have contributed in other important ways, including "
+ "translations, documentation, and quality assurance.",
+ };
+
+ const gchar* authors[] = {
+ "Jérôme Abela",
+ "Rob Adams",
+ "Djihed Afifi",
+ "Sarfraaz Ahmed",
+ "Christopher Aillon",
+ "Lauri Alanko",
+ "Борислав Александров (Borislav Aleksandrov)",
+ "Seth Alves",
+ "Shawn T. Amundson",
+ "Robert Ancell",
+ "Erik Andersen",
+ "Филип Андонов (Filip Andonov)",
+ "Marius Andreiana",
+ "Jon Anhold",
+ "Арангел Ангов (Arangel Angov)",
+ "Никола Антонов (Nikola Antonov)",
+ "Sandy Armstrong",
+ "Frank Arnold",
+ "Arunprakash",
+ "Paolo Bacchilega",
+ "Peter Bach",
+ "Timur I. Bakeyev",
+ "Sébastien Bacher",
+ "Chris Ball",
+ "Szabolcs 'Shooby' Bán",
+ "Lasse Bang Mikkelsen",
+ "Matthew Barnes",
+ "Seba Barto",
+ "Emmanuele Bassi",
+ "Martin Baulig",
+ "Tom Bech",
+ "Andreas Beck",
+ "Carlos Amador Bedolla",
+ "Martijn van Beers",
+ "Frank Belew",
+ "Calum Benson",
+ "Jacob Berkman",
+ "Eckehard Berns",
+ "Žygimantas Beručka",
+ "Runa Bhattacharjee",
+ "Robert Bihlmeyer",
+ "Jonathan Blandford",
+ "Christopher Blizzard",
+ "Bruno Boaventura",
+ "Евгени Боевски (Evgeni Boevski)",
+ "Jérôme Bolliet",
+ "Andreas Bolsch",
+ "Wouter Bolsterlee",
+ "David Bolter",
+ "Dave Bordoley",
+ "Paolo Borelli",
+ "James Bowes",
+ "Karsten Bräckelmann",
+ "Hendrik Brandt",
+ "Dario Bressanini",
+ "Emmanuel Briot",
+ "Stephen Browne",
+ "Marcus Brubaker",
+ "Christian Bucher",
+ "Ronald S. Bultje",
+ "Rich Burridge",
+ "Ross Burton",
+ "Jeff Cai",
+ "Brian Cameron",
+ "Dave Camp",
+ "Didier Carlier",
+ "Anders Carlsson",
+ "Luca Cavalli",
+ "Chema Celorio",
+ "Youssef Chahibi",
+ "Gaël Chamoulaud",
+ "Сава Чанков (Sava Chankov)",
+ "Damon Chaplin",
+ "Kevin Charter",
+ "Erwann Chénedé",
+ "張 國 冠",
+ "Павел Чолаков (Pavel Cholakov)",
+ "Kenneth Rohde Christiansen",
+ "Bryan Clark",
+ "Chad Clark",
+ "Matthias Clasen",
+ "Andrew Clausen",
+ "Jason Clinton",
+ "Jules Colding",
+ "Jeremy Collins",
+ "Rusty Conover",
+ "Pat Costello",
+ "Phil Cowans",
+ "Alan Cox",
+ "Dennis Cranston",
+ "Mark Crichton",
+ "Frédéric Crozat",
+ "Andreas Czechanowski",
+ "Виктор Дачев (Victor Dachev)",
+ "Johan Dahlin",
+ "Nalin Dahyabhai",
+ "Dan Damian",
+ "Sayamindu Dasgupta",
+ "Phil Dawes",
+ "Fatih Demir",
+ "Guillaume Desmottes",
+ "Frédéric Devernay",
+ "Joanmarie Diggs",
+ "Feico W. Dillema",
+ "Филип Димитров (Philip Dimitrov)",
+ "Carlos Eduardo Rodrigues Diógenes",
+ "Станимир Джевелеков (Stanimir Djevelekov)",
+ "Петър Добрев (Peter Dobrev)",
+ "Явор Доганов (Yavor Doganov)",
+ "Radek Doulik",
+ "Sebastian Dröge",
+ "Máirín Duffy",
+ "Alex Duggan",
+ "László Dvornik",
+ "Tom Dyas",
+ "Karl Eichwalder",
+ "John Ellis",
+ "Diego Escalante Urrelo",
+ "Behdad Esfahbod",
+ "Arturo Espinosa",
+ "Gus Estrella",
+ "David Etherton",
+ "Larry Ewing",
+ "Marc Ewing",
+ "Gergő Érdi",
+ "Peter Fales",
+ "Ahmad Farghal",
+ "Joaquim Fellmann",
+ "Christophe Fergeau",
+ "Jens Finke",
+ "Mark Finlay",
+ "Dave Finton",
+ "Milon Firikis",
+ "John Fleck",
+ "Raúl Perusquia Flores",
+ "Crispin Flowerday",
+ "Lawrence Foard",
+ "Leonardo Fontenelle",
+ "Glynn Foster",
+ "Ben FrantzDale",
+ "Jeff Freedman",
+ "David Abilleira Freijeiro",
+ "Nat Friedman",
+ "Jochen Friedrich",
+ "Adam Fritzler",
+ "Michael Fulbright",
+ "Christopher R. Gabriel",
+ "Mark Galassi",
+ "Tony Gale",
+ "Carlos García Campos",
+ "Matthew Garrett",
+ "Carlos Garnacho Parro",
+ "Jeff Garzik",
+ "Vincent Geddes",
+ "Владимир Герджиков (Vladimir Gerdjikov)",
+ "Tim Gerla",
+ "Björn Giesler",
+ "Quim Gil",
+ "Evandro Fernandes Giovanini",
+ "Владимира Гиргинова (Vladimira Girginova)",
+ "Dave Glowacki",
+ "Scott Goehring",
+ "Jody Goldberg",
+ "Randy Gordon",
+ "Ted Gould",
+ "Jens Granseuer",
+ "Kenny Graunke",
+ "Alex Graveley",
+ "Jamin Philip Gray",
+ "Dov Grobgeld",
+ "Bertrand Guiheneuf",
+ "Alan Aspuru Guzik",
+ "Telsa Gwynne",
+ "Fredrik Hallenberg",
+ "Mikael Hallendal",
+ "Lars Hamann",
+ "Bill Haneman",
+ "Michael Hanni",
+ "Raja R Harinath",
+ "Heath Harrelson",
+ "Peter Harvey",
+ "Mathias Hasselmann",
+ "Peter Hawkins",
+ "Chris Heath",
+ "Scott Heavner",
+ "Sebastian Heinlein",
+ "Jon K Hellan",
+ "James Henstridge",
+ "Fernando Herrera",
+ "Richard Hestilow",
+ "Raphael Higino",
+ "Thomas Hinkle",
+ "Iain Holmes",
+ "Adam Hooper",
+ "Alan Horkan",
+ "Khaled Hosny",
+ "Ihar Hrachyshka",
+ "Николай Христов (Nikolay Hristov)",
+ "Irene Huang",
+ "Richard Hughes",
+ "David Huggins-Daines",
+ "Richard Hult",
+ "Andreas Hyden",
+ "Miguel de Icaza",
+ "Hiroyuki Ikezoe",
+ "Khandakar Mujahidul Islam",
+ "Johnny Jacob",
+ "Mayank Jain",
+ "Vivek Jain",
+ "Tim Janik",
+ "Stefan Jeske",
+ "王 剑",
+ "Amed Ç. Jiyan",
+ "Michael K. Johnson",
+ "Keld Jørn Simonsen",
+ "Andy Kahn",
+ "Mikkel Kamstrup Erlandsen",
+ "Sami Kananoja",
+ "Янко Канети (Yanko Kaneti)",
+ "Ивелина Кърчева (Ivelina Karcheva)",
+ "Theppitak Karoonboonyanan",
+ "Matt Keenan",
+ "Gábor Kelemen",
+ "Michael Kellen",
+ "Christian Kellner",
+ "Stephen Kiernan",
+ "Spencer Kimball",
+ "Christian Kintner",
+ "Christian Kirbach",
+ "Peter Kirchgessner",
+ "Alexander Kirillov",
+ "Димитър Киров (Dimitar Kirov)",
+ "Andre Klapper",
+ "Helmut Köberle",
+ "Alfredo Kojima",
+ "Атанас Кошаров (Atanas Kosharov)",
+ "Martin Kretzschmar",
+ "Harish Krishnaswamy",
+ "Andrew Kuchling",
+ "Tomas Kuliavas",
+ "Stephan Kulow",
+ "Kaushal Kumar",
+ "Nirmal Kumar",
+ "Praveen Kumar",
+ "Martynas Kunigelis",
+ "Tuomas Kuosmanen",
+ "Olof Kylander",
+ "Mathieu Lacage",
+ "Francis J. Lacoste",
+ "Chris Lahey",
+ "Dom Lachowicz",
+ "Scott Laird",
+ "Birger Langkjer",
+ "Ask Hjorth Larsen",
+ "Alexander Larsson",
+ "Guillaume Laurent",
+ "Ole Laursen",
+ "Michael Lausch",
+ "Will LaShell",
+ "Jens Lautenbacher",
+ "Evan Lawrence",
+ "Garrett LeSage",
+ "Jason Leach",
+ "George Lebl",
+ "Gregory Leblanc",
+ "Elliot Lee",
+ "Marc Lehmann",
+ "Noah Levitt",
+ "Raph Levien",
+ "廖 昭 雄",
+ "Tor Lillqvist",
+ "Matt Loper",
+ "Nick Lopez",
+ "Xan Lopez",
+ "Elixan Loran",
+ "Ryan Lortie",
+ "Harry Lu",
+ "Dirk Lutjens",
+ "Josh MacDonald",
+ "Og Maciel",
+ "David MacKay",
+ "Davyd Madeley",
+ "Mohamed Magdy",
+ "Paolo Maggi",
+ "Sam Magnuson",
+ "Ian Main",
+ "David Malcolm",
+ "Jordi Mallach",
+ "Mandrake",
+ "Daniel Manrique",
+ "Kjartan Maraas",
+ "Matthew Marjanovic",
+ "Heath Martin",
+ "Oliver Maruhn",
+ "Fabio Marzocca",
+ "Dave Mason",
+ "James Mastros",
+ "Peter Mattis",
+ "Gordon Matzigkeit",
+ "Dietmar Maurer",
+ "Justin Maurer",
+ "Shaun McCance",
+ "William Jon McCann",
+ "Callum McKenzie",
+ "Gregory McLean",
+ "Mark McLoughlin",
+ "Michael Meeks",
+ "Federico Mena-Quintero",
+ "Christophe Merlet",
+ "Christian Meyer",
+ "Tim Miao",
+ "Gintautas Miliauskas",
+ "Cesar Miquel",
+ "Julian Missig",
+ "Eric B. Mitchell",
+ "Jaka Mocnik",
+ "Paolo Molaro",
+ "Lynn Monsanto",
+ "David Mosberger",
+ "Rodrigo Moya",
+ "Dan Mueth",
+ "Thomas Muldowney",
+ "Alexandre Muñiz",
+ "Tim-Philipp Müller",
+ "Sivaiah Nallagatla",
+ "남 성 현",
+ "Deepa Natarajan",
+ "Ales Navicki",
+ "Јован Наумовски (Jovan Naumovski)",
+ "Dave Neary",
+ "Karl Nelson",
+ "Elijah Newren",
+ "Christian Neumair",
+ "Mike Newman",
+ "Seth Nickell",
+ "Asger Alstrup Nielsen",
+ "Kenneth Nielsen",
+ "Nate Nielsen",
+ "Eric Nielson",
+ "Bastien Nocera",
+ "Martin Norbäck",
+ "Joachim Noreiko",
+ "Alexander Nyakhaychyk",
+ "Daniel Nylander",
+ "Padraig O'Briain",
+ "Eskil Olsen",
+ "Jimmy Olsen",
+ "David Orme",
+ "Karl Anders Oygard",
+ "Tomas Ögren",
+ "Keith Packard",
+ "Jay Painter",
+ "Chenthill Palanisamy",
+ "John Palmieri",
+ "Cameron Parish",
+ "Conrad Parker",
+ "Stuart Parmenter",
+ "Guilherme de S. Pastore",
+ "Sankarasivasubramaniam Pasupathilingam",
+ "Данило Шеган",
+ "Mike Pedersen",
+ "Nils Pedersen",
+ "Илия Пенев (Ilia Penev)",
+ "Havoc Pennington",
+ "Ettore Perazzoli",
+ "Carlos Perelló Marín",
+ "Christian Persch",
+ "Marco Pesenti Gritti",
+ "Ian Peters",
+ "Martin Kasper Petersen",
+ "Christof Petig",
+ "Владимир Петков (Vladimir \"Kaladan\" Petkov)",
+ "Joe Pfeiffer",
+ "Ben Pierce",
+ "Chris Pinkham",
+ "Hasbullah Bin Pit",
+ "Sebastian Pölsterl",
+ "Germán Poo-Caamaño",
+ "Пейо Попов (Peio Popov)",
+ "Dick Porter",
+ "Ясен Праматаров (Yasen Pramatarov)",
+ "Tero Pulkkinen",
+ "Атанас Пюскюлев (Atanas Pyuskyulev)",
+ "Sushma Rai",
+ "Ростислав Райков (Rostislav \"zbrox\" Raikov)",
+ "Madhan Raj M.",
+ "Srinivasa Ragavan",
+ "Rajeev Ramanathan",
+ "Jean-François Rameau",
+ "Sriram Ramkrishna",
+ "The Rasterman",
+ "Oliver Rauch",
+ "Lucas Rocha",
+ "Erdal Ronahi",
+ "Andreas Røsdal",
+ "Christian Rose",
+ "Cody Russell",
+ "Reklaw",
+ "Jens Christian Restemeier",
+ "Patrick Reynolds",
+ "Robert Richardson",
+ "Hendrik Richter",
+ "Kristian Rietveld",
+ "Sebastian Rittau",
+ "Alex Roberts",
+ "Michel Roelofs",
+ "Ueli Rutishauser",
+ "Lars Rydlinge",
+ "Peter Ryland",
+ "Claudio Saavedra",
+ "Joseph Sacco",
+ "Bibek Sahu",
+ "Arvind Samptur",
+ "Søren Sandmann",
+ "Damien Sandras",
+ "Pablo Saratxaga",
+ "笹 山 和 宏",
+ "Carsten Schaar",
+ "Christian Schaller",
+ "Wayne Schuller",
+ "Franck Schneider",
+ "Ingo Schneider",
+ "Bernd Schroeder",
+ "John Schulien",
+ "Chris Scobell",
+ "Don Scorgie",
+ "Jens Seidel",
+ "Dodji Seketeli",
+ "Shakti Sen",
+ "Iñigo Serna",
+ "Shaleh",
+ "Devashish Sharma",
+ "Joe Shaw",
+ "Александър Шопов (Alexander Shopov)",
+ "Clytie Siddall",
+ "Alejandro Aguilar Sierra",
+ "Miroslav Silovic",
+ "Manish Singh",
+ "Timo Sirainen",
+ "David F. Skoll",
+ "Jochen Skulj",
+ "Nuke Skyjumper",
+ "Петър Славов (Peter \"Peshka\" Slavov)",
+ "Josh Sled",
+ "John Slee",
+ "Raphaël Slinckx",
+ "Brent Smith",
+ "Garrett Smith",
+ "Suzanna Smith",
+ "Andrew Sobala",
+ "Shreyas Srinivasan",
+ "Maciej Stachowiak",
+ "Stalyn",
+ "Jeffrey Stedfast",
+ "Jakub Steiner",
+ "Ben Stern",
+ "Micah Stetson",
+ "Ray Strode",
+ "Luke Stroven",
+ "Mariano Suárez-Alvarez",
+ "Parthasarathi Susarla",
+ "Nathan Carl Summers",
+ "Istvan Szekeres",
+ "Петър Тахчиев (Peter Tahchiev)",
+ "HideToshi Tajima",
+ "Nigel Tao",
+ "Tristan Tarrant",
+ "Anthony Taylor",
+ "Owen Taylor",
+ "Peter Teichman",
+ "Arturo Tena",
+ "Thomas Thurman",
+ "Kimball Thurston",
+ "András Tímár",
+ "Boyd Timothy",
+ "Rêzan Tovjîn",
+ "Alp Toker",
+ "Chris Toshok",
+ "Christoph Toshok",
+ "Malcolm Tredinnick",
+ "Tom Tromey",
+ "David Trowbridge",
+ "Jon Trowbridge",
+ "段 活 文",
+ "Сергей В. Удальцов",
+ "Juan Pablo Ugarte",
+ "Vincent Untz",
+ "Manish Vachharajani",
+ "Neil Vachharajani",
+ "Tristan Van Berkom",
+ "Philip Van Hoof",
+ "Thomas Vander Stichele",
+ "Veerapuram Varadhan",
+ "Васил Василев (Vasil Vasilev)",
+ "Daniel Veillard",
+ "Vendu",
+ "Andrew Veliath",
+ "Юлия Велкова (Julia Velkova)",
+ "Luis Villa",
+ "Olav Vitters",
+ "Marius Vollmer",
+ "Patrick Wade",
+ "Shawn Wagner",
+ "Will Walker",
+ "Hanna Wallach",
+ "Colin Walters",
+ "Matthias Warkus",
+ "Jeff Waugh",
+ "Morten Welinder",
+ "Jonh Wendell",
+ "Bruno Widmann",
+ "Robert Wilhelm",
+ "Sebastian Wilhelmi",
+ "Dan Williams",
+ "James Willcox",
+ "David Winkler",
+ "Dan Winship",
+ "Jeremy Wise",
+ "Roger Wolff",
+ "Ivan Wong",
+ "Frank Worsley",
+ "Rizoyê Xerzî",
+ "Wang Xin",
+ "James Youngman",
+ "Mengjie Yu",
+ "Li Yuan",
+ "Orest Zborowski",
+ "Simon Zheng",
+ "Sascha Ziemann",
+ "Michael Zucchi",
+ "Jason van Zyl",
+ // MATE start here
+ "Perberos <[email protected]>",
+ NULL
+ };
+
+ // documentacion
+ /*const gchar* documenters[] = {
+ "TODO", // TODO: fillme
+ NULL
+ };*/
+ // artistas
+ /*const gchar* artists[] = {
+ "TODO", // TODO: fillme
+ NULL
+ };*/
+
+ // widget de la unica ventana
+ GtkWidget* mate_about_dialog = FALSE;
+
+ // libunique thing
+ #ifdef USE_UNIQUE
+ UniqueApp* mate_about_application;
+ #elif GTK_CHECK_VERSION(3, 0, 0)
+ GtkApplication* mate_about_application;
+ #elif GLIB_CHECK_VERSION(2, 26, 0)
+ GApplication* mate_about_application;
+ #endif
+
+ /**
+ * If this value is set to TRUE, then mate_about_dialog will not be called
+ * on the main function.
+ */
+ gboolean mate_about_nogui = FALSE;
+ // functions
+ void mate_about_run(void);
+ void mate_about_release_version(void);
+
+ #if GTK_CHECK_VERSION(3, 0, 0) && !defined(USE_UNIQUE)
+ static void mate_about_on_activate(GtkApplication* app);
+ #elif GLIB_CHECK_VERSION(2, 26, 0) && !defined(USE_UNIQUE)
+ static void mate_about_on_activate(GApplication* app);
+ #endif
+
+ // for command line
+ static GOptionEntry command_entries[] = {
+ {"version", 'v', 0, G_OPTION_ARG_NONE, &mate_about_nogui, "Show release version", NULL},
+ {NULL}
+ };
+//}
+
+#endif /* __MATE_ABOUT_H__ */
diff --git a/mate-about/nyan-cat.gif b/mate-about/nyan-cat.gif
new file mode 100644
index 0000000..e224e04
--- /dev/null
+++ b/mate-about/nyan-cat.gif
Binary files differ