Blob Blame History Raw
diff -upr mate-desktop-1.6.1-orig/configure.ac mate-desktop-1.6.1/configure.ac
--- mate-desktop-1.6.1-orig/configure.ac	2013-05-13 13:25:46.000000000 +0200
+++ mate-desktop-1.6.1/configure.ac	2013-05-23 11:56:04.318835560 +0200
@@ -236,6 +236,15 @@ AC_SUBST(GETTEXT_PACKAGE)
 
 AM_GLIB_GNU_GETTEXT
 
+AC_ARG_ENABLE([gnucat],
+              [AS_HELP_STRING([--enable-gnucat], [enable the use of gnu cat as logo in mate-about])],
+              [enable_gnucat=yes], [enable_gnucat=no])
+
+if test "x$enable_gnucat" = "xyes"; then
+    MATE_ABOUT_CFLAGS="$MATE_ABOUT_CFLAGS -DENABLE_GNUCAT=1"
+fi
+AM_CONDITIONAL(GNUCAT_ENABLED, test "x$enable_gnucat" = "xyes") 
+
 dnl ============================================================================
 dnl | se comprueba unique
 dnl | de lo contrario, se intenta utilizar libunique
@@ -343,4 +352,5 @@ mate-desktop $VERSION `echo mate-desktop
     Startup notification support: ${have_startup_notification}
     XRandr support:               ${have_randr}
     Build gtk-doc documentation:  ${enable_gtk_doc}
+    Enable gnucat:                ${enable_gnucat}
 "
Nur in mate-desktop-1.6.1/mate-about: gnu-cat.gif.
Nur in mate-desktop-1.6.1/mate-about: gnu-cat_navideno_v3.png.
diff -upr mate-desktop-1.6.1-orig/mate-about/Makefile.am mate-desktop-1.6.1/mate-about/Makefile.am
--- mate-desktop-1.6.1-orig/mate-about/Makefile.am	2013-05-13 13:25:46.000000000 +0200
+++ mate-desktop-1.6.1/mate-about/Makefile.am	2013-05-23 11:57:08.732446891 +0200
@@ -11,6 +11,11 @@ AM_CPPFLAGS = \
 
 @INTLTOOL_DESKTOP_RULE@
 
+if GNUCAT_ENABLED
+pixmapdir  = $(datadir)/pixmaps
+pixmap_DATA = gnu-cat_navideno_v3.png gnu-cat.gif
+endif
+
 desktopdir = $(datadir)/applications
 desktop_in_files = mate-about.desktop.in
 desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
diff -upr mate-desktop-1.6.1-orig/mate-about/mate-about.c mate-desktop-1.6.1/mate-about/mate-about.c
--- mate-desktop-1.6.1-orig/mate-about/mate-about.c	2013-05-13 13:25:46.000000000 +0200
+++ mate-desktop-1.6.1/mate-about/mate-about.c	2013-05-23 12:26:36.740226552 +0200
@@ -20,6 +20,7 @@
 
 #ifndef __MATE_ABOUT_C__
 #define __MATE_ABOUT_C__
+#endif
 
 #include "mate-about.h"
 
@@ -32,6 +33,37 @@
 	textdomain(package);
 #endif
 
+  // what a mess!
+  #ifdef ENABLE_GNUCAT
+
+  // 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((GtkAboutDialog*) 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)
@@ -74,6 +106,55 @@
 
 		gtk_window_set_default_icon_name(icon);
 
+    #ifdef ENABLE_GNUCAT
+
+      /* check if it's christmas, to show a different image */
+      gboolean is_christmas = FALSE;
+
+      GDate* d = g_date_new();
+      g_date_set_time_t(d, (time_t) time(NULL));
+
+      if (g_date_get_month(d) == G_DATE_DECEMBER)
+      {
+        GDateDay day = g_date_get_day(d);
+
+        if (day >= 24 && day <=25)
+        {
+          is_christmas = TRUE;
+        }
+      }
+
+      g_date_free(d);
+
+      if (is_christmas == TRUE)
+      {
+        GdkPixbuf* pixbuf = gdk_pixbuf_new_from_file(PIXMAPS_DIR "gnu-cat_navideno_v3.png", NULL);
+        gtk_about_dialog_set_logo(mate_about_dialog, pixbuf);
+        g_object_unref(pixbuf);
+      }
+      else
+      {
+        iter_arg_t animation_object;
+        GdkPixbufAnimation* animation;
+        GdkPixbufAnimationIter *iter;
+        GtkWidget* image;
+
+        animation = gdk_pixbuf_animation_new_from_file(PIXMAPS_DIR "gnu-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 = (GtkWidget*) mate_about_dialog;
+
+          gtk_about_dialog_set_logo(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);
+        }
+      } 
+
 		#if GTK_CHECK_VERSION(3, 0, 0) || GTK_CHECK_VERSION(2, 6, 0)
 
 			gtk_about_dialog_set_logo_icon_name(mate_about_dialog, icon);