[gnome-builder/wip/path-bar: 7/11] egg: move IdeAnimation to EggAnimation



commit 360dca0efc7b6253d1e3e895822e1077e0a79640
Author: Christian Hergert <christian hergert me>
Date:   Thu Aug 13 19:52:22 2015 +0200

    egg: move IdeAnimation to EggAnimation
    
    This will let us use animations from the egg helper library. Should make
    things easier for external consumers.

 contrib/egg/Makefile.am                            |    4 +
 .../ide-animation.c => contrib/egg/egg-animation.c |  346 +++++++++++---------
 .../ide-animation.h => contrib/egg/egg-animation.h |   50 ++--
 .../egg/egg-frame-source.c                         |   38 +-
 .../egg/egg-frame-source.h                         |   12 +-
 doc/reference/libide/libide-sections.txt           |   13 -
 doc/reference/libide/libide.types                  |    2 +-
 libide/Makefile.am                                 |    4 -
 libide/git/ide-git-remote-callbacks.c              |   12 +-
 libide/ide-source-view.c                           |   38 +-
 libide/ide.h                                       |    1 -
 libide/theatrics/ide-box-theatric.c                |    2 +-
 src/dialogs/gb-new-project-dialog.c                |    5 +-
 src/editor/gb-editor-workspace-actions.c           |    8 +-
 src/util/gb-widget.c                               |    9 +-
 src/workspace/gb-slider.c                          |   18 +-
 src/workspace/gb-workspace.c                       |    9 +-
 tests/test-ide-source-view.c                       |    4 +-
 18 files changed, 293 insertions(+), 282 deletions(-)
---
diff --git a/contrib/egg/Makefile.am b/contrib/egg/Makefile.am
index 7edcb68..2370e96 100644
--- a/contrib/egg/Makefile.am
+++ b/contrib/egg/Makefile.am
@@ -1,10 +1,14 @@
 noinst_LTLIBRARIES = libegg.la
 
 libegg_la_SOURCES = \
+       egg-animation.c \
+       egg-animation.h \
        egg-binding-group.c \
        egg-binding-group.h \
        egg-counter.c \
        egg-counter.h \
+       egg-frame-source.c \
+       egg-frame-source.h \
        egg-heap.c \
        egg-heap.h \
        egg-search-bar.c \
diff --git a/libide/theatrics/ide-animation.c b/contrib/egg/egg-animation.c
similarity index 75%
rename from libide/theatrics/ide-animation.c
rename to contrib/egg/egg-animation.c
index f47e84c..af323ca 100644
--- a/libide/theatrics/ide-animation.c
+++ b/contrib/egg/egg-animation.c
@@ -1,4 +1,4 @@
-/* ide-animation.c
+/* egg-animation.c
  *
  * Copyright (C) 2013 Christian Hergert <christian hergert me>
  *
@@ -22,8 +22,8 @@
 #include <gtk/gtk.h>
 #include <string.h>
 
-#include "ide-animation.h"
-#include "ide-frame-source.h"
+#include "egg-animation.h"
+#include "egg-frame-source.h"
 
 #define FALLBACK_FRAME_RATE 60
 
@@ -42,7 +42,7 @@ typedef struct
 } Tween;
 
 
-struct _IdeAnimation
+struct _EggAnimation
 {
   GInitiallyUnowned  parent_instance;
 
@@ -55,9 +55,11 @@ struct _IdeAnimation
   gdouble            last_offset;         /* Track our last offset */
   GArray            *tweens;              /* Array of tweens to perform */
   GdkFrameClock     *frame_clock;         /* An optional frame-clock for sync. */
+  GDestroyNotify     notify;              /* Notify callback */
+  gpointer           notify_data;         /* Data for notify */
 };
 
-G_DEFINE_TYPE (IdeAnimation, ide_animation, G_TYPE_INITIALLY_UNOWNED)
+G_DEFINE_TYPE (EggAnimation, egg_animation, G_TYPE_INITIALLY_UNOWNED)
 
 enum {
   PROP_0,
@@ -95,7 +97,7 @@ enum {
 /*
  * Globals.
  */
-static AlphaFunc   gAlphaFuncs[IDE_ANIMATION_LAST];
+static AlphaFunc   gAlphaFuncs[EGG_ANIMATION_LAST];
 static gboolean    gDebug;
 static GParamSpec *gParamSpecs[LAST_PROP];
 static guint       gSignals[LAST_SIGNAL];
@@ -114,22 +116,22 @@ TWEEN (double);
 
 
 /**
- * ide_animation_alpha_ease_in_cubic:
+ * egg_animation_alpha_ease_in_cubic:
  * @offset: (in): The position within the animation; 0.0 to 1.0.
  *
  * An alpha function to transform the offset within the animation.
- * @IDE_ANIMATION_CUBIC means the valu ewill be transformed into
+ * @EGG_ANIMATION_CUBIC means the valu ewill be transformed into
  * cubic acceleration (x * x * x).
  */
 static gdouble
-ide_animation_alpha_ease_in_cubic (gdouble offset)
+egg_animation_alpha_ease_in_cubic (gdouble offset)
 {
   return offset * offset * offset;
 }
 
 
 static gdouble
-ide_animation_alpha_ease_out_cubic (gdouble offset)
+egg_animation_alpha_ease_out_cubic (gdouble offset)
 {
   gdouble p = offset - 1.0;
 
@@ -138,64 +140,64 @@ ide_animation_alpha_ease_out_cubic (gdouble offset)
 
 
 /**
- * ide_animation_alpha_linear:
+ * egg_animation_alpha_linear:
  * @offset: (in): The position within the animation; 0.0 to 1.0.
  *
  * An alpha function to transform the offset within the animation.
- * @IDE_ANIMATION_LINEAR means no tranformation will be made.
+ * @EGG_ANIMATION_LINEAR means no tranformation will be made.
  *
  * Returns: @offset.
  * Side effects: None.
  */
 static gdouble
-ide_animation_alpha_linear (gdouble offset)
+egg_animation_alpha_linear (gdouble offset)
 {
   return offset;
 }
 
 
 /**
- * ide_animation_alpha_ease_in_quad:
+ * egg_animation_alpha_ease_in_quad:
  * @offset: (in): The position within the animation; 0.0 to 1.0.
  *
  * An alpha function to transform the offset within the animation.
- * @IDE_ANIMATION_EASE_IN_QUAD means that the value will be transformed
+ * @EGG_ANIMATION_EASE_IN_QUAD means that the value will be transformed
  * into a quadratic acceleration.
  *
  * Returns: A tranformation of @offset.
  * Side effects: None.
  */
 static gdouble
-ide_animation_alpha_ease_in_quad (gdouble offset)
+egg_animation_alpha_ease_in_quad (gdouble offset)
 {
   return offset * offset;
 }
 
 
 /**
- * ide_animation_alpha_ease_out_quad:
+ * egg_animation_alpha_ease_out_quad:
  * @offset: (in): The position within the animation; 0.0 to 1.0.
  *
  * An alpha function to transform the offset within the animation.
- * @IDE_ANIMATION_EASE_OUT_QUAD means that the value will be transformed
+ * @EGG_ANIMATION_EASE_OUT_QUAD means that the value will be transformed
  * into a quadratic deceleration.
  *
  * Returns: A tranformation of @offset.
  * Side effects: None.
  */
 static gdouble
-ide_animation_alpha_ease_out_quad (gdouble offset)
+egg_animation_alpha_ease_out_quad (gdouble offset)
 {
   return -1.0 * offset * (offset - 2.0);
 }
 
 
 /**
- * ide_animation_alpha_ease_in_out_quad:
+ * egg_animation_alpha_ease_in_out_quad:
  * @offset: (in): The position within the animation; 0.0 to 1.0.
  *
  * An alpha function to transform the offset within the animation.
- * @IDE_ANIMATION_EASE_IN_OUT_QUAD means that the value will be transformed
+ * @EGG_ANIMATION_EASE_IN_OUT_QUAD means that the value will be transformed
  * into a quadratic acceleration for the first half, and quadratic
  * deceleration the second half.
  *
@@ -203,7 +205,7 @@ ide_animation_alpha_ease_out_quad (gdouble offset)
  * Side effects: None.
  */
 static gdouble
-ide_animation_alpha_ease_in_out_quad (gdouble offset)
+egg_animation_alpha_ease_in_out_quad (gdouble offset)
 {
   offset *= 2.0;
   if (offset < 1.0)
@@ -214,8 +216,8 @@ ide_animation_alpha_ease_in_out_quad (gdouble offset)
 
 
 /**
- * ide_animation_load_begin_values:
- * @animation: (in): A #IdeAnimation.
+ * egg_animation_load_begin_values:
+ * @animation: (in): A #EggAnimation.
  *
  * Load the begin values for all the properties we are about to
  * animate.
@@ -224,13 +226,13 @@ ide_animation_alpha_ease_in_out_quad (gdouble offset)
  * Side effects: None.
  */
 static void
-ide_animation_load_begin_values (IdeAnimation *animation)
+egg_animation_load_begin_values (EggAnimation *animation)
 {
   GtkContainer *container;
   Tween *tween;
   gint i;
 
-  g_return_if_fail (IDE_IS_ANIMATION (animation));
+  g_return_if_fail (EGG_IS_ANIMATION (animation));
 
   for (i = 0; i < animation->tweens->len; i++)
     {
@@ -255,8 +257,8 @@ ide_animation_load_begin_values (IdeAnimation *animation)
 
 
 /**
- * ide_animation_unload_begin_values:
- * @animation: (in): A #IdeAnimation.
+ * egg_animation_unload_begin_values:
+ * @animation: (in): A #EggAnimation.
  *
  * Unloads the begin values for the animation. This might be particularly
  * useful once we support pointer types.
@@ -265,12 +267,12 @@ ide_animation_load_begin_values (IdeAnimation *animation)
  * Side effects: None.
  */
 static void
-ide_animation_unload_begin_values (IdeAnimation *animation)
+egg_animation_unload_begin_values (EggAnimation *animation)
 {
   Tween *tween;
   gint i;
 
-  g_return_if_fail (IDE_IS_ANIMATION (animation));
+  g_return_if_fail (EGG_IS_ANIMATION (animation));
 
   for (i = 0; i < animation->tweens->len; i++)
     {
@@ -281,8 +283,8 @@ ide_animation_unload_begin_values (IdeAnimation *animation)
 
 
 /**
- * ide_animation_get_offset:
- * @animation: A #IdeAnimation.
+ * egg_animation_get_offset:
+ * @animation: A #EggAnimation.
  * @frame_time: the time to present the frame, or 0 for current timing.
  *
  * Retrieves the position within the animation from 0.0 to 1.0. This
@@ -292,13 +294,13 @@ ide_animation_unload_begin_values (IdeAnimation *animation)
  * Returns: The offset of the animation from 0.0 to 1.0.
  */
 static gdouble
-ide_animation_get_offset (IdeAnimation *animation,
+egg_animation_get_offset (EggAnimation *animation,
                           gint64        frame_time)
 {
   gdouble offset;
   gint64 frame_msec;
 
-  g_return_val_if_fail (IDE_IS_ANIMATION (animation), 0.0);
+  g_return_val_if_fail (EGG_IS_ANIMATION (animation), 0.0);
 
   if (frame_time == 0)
     {
@@ -318,8 +320,8 @@ ide_animation_get_offset (IdeAnimation *animation,
 
 
 /**
- * ide_animation_update_property:
- * @animation: (in): A #IdeAnimation.
+ * egg_animation_update_property:
+ * @animation: (in): A #EggAnimation.
  * @target: (in): A #GObject.
  * @tween: (in): a #Tween containing the property.
  * @value: (in): The new value for the property.
@@ -330,12 +332,12 @@ ide_animation_get_offset (IdeAnimation *animation,
  * Side effects: The property of @target is updated.
  */
 static void
-ide_animation_update_property (IdeAnimation  *animation,
+egg_animation_update_property (EggAnimation  *animation,
                               gpointer      target,
                               Tween        *tween,
                               const GValue *value)
 {
-  g_assert (IDE_IS_ANIMATION (animation));
+  g_assert (EGG_IS_ANIMATION (animation));
   g_assert (G_IS_OBJECT (target));
   g_assert (tween);
   g_assert (value);
@@ -345,8 +347,8 @@ ide_animation_update_property (IdeAnimation  *animation,
 
 
 /**
- * ide_animation_update_child_property:
- * @animation: (in): A #IdeAnimation.
+ * egg_animation_update_child_property:
+ * @animation: (in): A #EggAnimation.
  * @target: (in): A #GObject.
  * @tween: (in): A #Tween containing the property.
  * @value: (in): The new value for the property.
@@ -357,14 +359,14 @@ ide_animation_update_property (IdeAnimation  *animation,
  * Side effects: The property of @target<!-- -->'s parent widget is updated.
  */
 static void
-ide_animation_update_child_property (IdeAnimation *animation,
+egg_animation_update_child_property (EggAnimation *animation,
                                      gpointer      target,
                                      Tween        *tween,
                                      const GValue *value)
 {
   GtkWidget *parent;
 
-  g_assert (IDE_IS_ANIMATION (animation));
+  g_assert (EGG_IS_ANIMATION (animation));
   g_assert (G_IS_OBJECT (target));
   g_assert (tween);
   g_assert (value);
@@ -378,8 +380,8 @@ ide_animation_update_child_property (IdeAnimation *animation,
 
 
 /**
- * ide_animation_get_value_at_offset:
- * @animation: (in): A #IdeAnimation.
+ * egg_animation_get_value_at_offset:
+ * @animation: (in): A #EggAnimation.
  * @offset: (in): The offset in the animation from 0.0 to 1.0.
  * @tween: (in): A #Tween containing the property.
  * @value: (out): A #GValue in which to store the property.
@@ -390,12 +392,12 @@ ide_animation_update_child_property (IdeAnimation *animation,
  * Side effects: None.
  */
 static void
-ide_animation_get_value_at_offset (IdeAnimation *animation,
+egg_animation_get_value_at_offset (EggAnimation *animation,
                                    gdouble       offset,
                                    Tween        *tween,
                                    GValue       *value)
 {
-  g_return_if_fail (IDE_IS_ANIMATION (animation));
+  g_return_if_fail (EGG_IS_ANIMATION (animation));
   g_return_if_fail (tween != NULL);
   g_return_if_fail (value != NULL);
   g_return_if_fail (value->g_type == tween->pspec->value_type);
@@ -420,7 +422,7 @@ ide_animation_get_value_at_offset (IdeAnimation *animation,
 }
 
 static void
-ide_animation_set_frame_clock (IdeAnimation  *animation,
+egg_animation_set_frame_clock (EggAnimation  *animation,
                                GdkFrameClock *frame_clock)
 {
   if (animation->frame_clock != frame_clock)
@@ -431,7 +433,7 @@ ide_animation_set_frame_clock (IdeAnimation  *animation,
 }
 
 static void
-ide_animation_set_target (IdeAnimation *animation,
+egg_animation_set_target (EggAnimation *animation,
                           gpointer      target)
 {
   g_assert (!animation->target);
@@ -439,14 +441,14 @@ ide_animation_set_target (IdeAnimation *animation,
   animation->target = g_object_ref (target);
 
   if (GTK_IS_WIDGET (animation->target))
-    ide_animation_set_frame_clock (animation,
+    egg_animation_set_frame_clock (animation,
                                   gtk_widget_get_frame_clock (animation->target));
 }
 
 
 /**
- * ide_animation_tick:
- * @animation: (in): A #IdeAnimation.
+ * egg_animation_tick:
+ * @animation: (in): A #EggAnimation.
  *
  * Moves the object properties to the next position in the animation.
  *
@@ -454,7 +456,7 @@ ide_animation_set_target (IdeAnimation *animation,
  * Side effects: None.
  */
 static gboolean
-ide_animation_tick (IdeAnimation *animation,
+egg_animation_tick (EggAnimation *animation,
                     gdouble       offset)
 {
   gdouble alpha;
@@ -462,7 +464,7 @@ ide_animation_tick (IdeAnimation *animation,
   Tween *tween;
   gint i;
 
-  g_return_val_if_fail (IDE_IS_ANIMATION (animation), FALSE);
+  g_return_val_if_fail (EGG_IS_ANIMATION (animation), FALSE);
 
   if (offset == animation->last_offset)
     return offset < 1.0;
@@ -476,17 +478,17 @@ ide_animation_tick (IdeAnimation *animation,
     {
       tween = &g_array_index (animation->tweens, Tween, i);
       g_value_init (&value, tween->pspec->value_type);
-      ide_animation_get_value_at_offset (animation, alpha, tween, &value);
+      egg_animation_get_value_at_offset (animation, alpha, tween, &value);
       if (!tween->is_child)
         {
-          ide_animation_update_property (animation,
+          egg_animation_update_property (animation,
                                         animation->target,
                                         tween,
                                         &value);
         }
       else
         {
-          ide_animation_update_child_property (animation,
+          egg_animation_update_child_property (animation,
                                               animation->target,
                                               tween,
                                               &value);
@@ -519,8 +521,8 @@ ide_animation_tick (IdeAnimation *animation,
 
 
 /**
- * ide_animation_timeout_cb:
- * @user_data: (in): A #IdeAnimation.
+ * egg_animation_timeout_cb:
+ * @user_data: (in): A #EggAnimation.
  *
  * Timeout from the main loop to move to the next step of the animation.
  *
@@ -528,38 +530,38 @@ ide_animation_tick (IdeAnimation *animation,
  * Side effects: None.
  */
 static gboolean
-ide_animation_timeout_cb (gpointer user_data)
+egg_animation_timeout_cb (gpointer user_data)
 {
-  IdeAnimation *animation = user_data;
+  EggAnimation *animation = user_data;
   gboolean ret;
   gdouble offset;
 
-  offset = ide_animation_get_offset (animation, 0);
+  offset = egg_animation_get_offset (animation, 0);
 
-  if (!(ret = ide_animation_tick (animation, offset)))
-    ide_animation_stop (animation);
+  if (!(ret = egg_animation_tick (animation, offset)))
+    egg_animation_stop (animation);
 
   return ret;
 }
 
 
 static gboolean
-ide_animation_widget_tick_cb (GdkFrameClock *frame_clock,
-                              IdeAnimation  *animation)
+egg_animation_widget_tick_cb (GdkFrameClock *frame_clock,
+                              EggAnimation  *animation)
 {
   gboolean ret = G_SOURCE_REMOVE;
 
   g_assert (GDK_IS_FRAME_CLOCK (frame_clock));
-  g_assert (IDE_IS_ANIMATION (animation));
+  g_assert (EGG_IS_ANIMATION (animation));
 
   if (animation->tween_handler)
     {
       gdouble offset;
 
-      offset = ide_animation_get_offset (animation, 0);
+      offset = egg_animation_get_offset (animation, 0);
 
-      if (!(ret = ide_animation_tick (animation, offset)))
-        ide_animation_stop (animation);
+      if (!(ret = egg_animation_tick (animation, offset)))
+        egg_animation_stop (animation);
     }
 
   return ret;
@@ -567,8 +569,8 @@ ide_animation_widget_tick_cb (GdkFrameClock *frame_clock,
 
 
 static void
-ide_animation_widget_after_paint_cb (GdkFrameClock *frame_clock,
-                                     IdeAnimation  *animation)
+egg_animation_widget_after_paint_cb (GdkFrameClock *frame_clock,
+                                     EggAnimation  *animation)
 {
   gint64 base_time;
   gint64 interval;
@@ -576,20 +578,20 @@ ide_animation_widget_after_paint_cb (GdkFrameClock *frame_clock,
   gdouble offset;
 
   g_assert (GDK_IS_FRAME_CLOCK (frame_clock));
-  g_assert (IDE_IS_ANIMATION (animation));
+  g_assert (EGG_IS_ANIMATION (animation));
 
   base_time = gdk_frame_clock_get_frame_time (frame_clock);
   gdk_frame_clock_get_refresh_info (frame_clock, base_time, &interval, &next_frame_time);
 
-  offset = ide_animation_get_offset (animation, next_frame_time);
+  offset = egg_animation_get_offset (animation, next_frame_time);
 
-  ide_animation_tick (animation, offset);
+  egg_animation_tick (animation, offset);
 }
 
 
 /**
- * ide_animation_start:
- * @animation: (in): A #IdeAnimation.
+ * egg_animation_start:
+ * @animation: (in): A #EggAnimation.
  *
  * Start the animation. When the animation stops, the internal reference will
  * be dropped and the animation may be finalized.
@@ -598,13 +600,13 @@ ide_animation_widget_after_paint_cb (GdkFrameClock *frame_clock,
  * Side effects: None.
  */
 void
-ide_animation_start (IdeAnimation *animation)
+egg_animation_start (EggAnimation *animation)
 {
-  g_return_if_fail (IDE_IS_ANIMATION (animation));
+  g_return_if_fail (EGG_IS_ANIMATION (animation));
   g_return_if_fail (!animation->tween_handler);
 
   g_object_ref_sink (animation);
-  ide_animation_load_begin_values (animation);
+  egg_animation_load_begin_values (animation);
 
   if (animation->frame_clock)
     {
@@ -612,28 +614,46 @@ ide_animation_start (IdeAnimation *animation)
       animation->tween_handler =
         g_signal_connect (animation->frame_clock,
                           "update",
-                          G_CALLBACK (ide_animation_widget_tick_cb),
+                          G_CALLBACK (egg_animation_widget_tick_cb),
                           animation);
       animation->after_paint_handler =
         g_signal_connect (animation->frame_clock,
                           "after-paint",
-                          G_CALLBACK (ide_animation_widget_after_paint_cb),
+                          G_CALLBACK (egg_animation_widget_after_paint_cb),
                           animation);
       gdk_frame_clock_begin_updating (animation->frame_clock);
     }
   else
     {
       animation->begin_msec = g_get_monotonic_time () / 1000UL;
-      animation->tween_handler = ide_frame_source_add (FALLBACK_FRAME_RATE,
-                                                       ide_animation_timeout_cb,
+      animation->tween_handler = egg_frame_source_add (FALLBACK_FRAME_RATE,
+                                                       egg_animation_timeout_cb,
                                                        animation);
     }
 }
 
 
+static void
+egg_animation_notify (EggAnimation *self)
+{
+  g_assert (EGG_IS_ANIMATION (self));
+
+  if (self->notify != NULL)
+    {
+      GDestroyNotify notify = self->notify;
+      gpointer data = self->notify_data;
+
+      self->notify = NULL;
+      self->notify_data = NULL;
+
+      notify (data);
+    }
+}
+
+
 /**
- * ide_animation_stop:
- * @animation: (in): A #IdeAnimation.
+ * egg_animation_stop:
+ * @animation: (in): A #EggAnimation.
  *
  * Stops a running animation. The internal reference to the animation is
  * dropped and therefore may cause the object to finalize.
@@ -642,9 +662,9 @@ ide_animation_start (IdeAnimation *animation)
  * Side effects: None.
  */
 void
-ide_animation_stop (IdeAnimation *animation)
+egg_animation_stop (EggAnimation *animation)
 {
-  g_return_if_fail (IDE_IS_ANIMATION (animation));
+  g_return_if_fail (EGG_IS_ANIMATION (animation));
 
   if (animation->tween_handler)
     {
@@ -660,15 +680,16 @@ ide_animation_stop (IdeAnimation *animation)
           g_source_remove (animation->tween_handler);
           animation->tween_handler = 0;
         }
-      ide_animation_unload_begin_values (animation);
+      egg_animation_unload_begin_values (animation);
+      egg_animation_notify (animation);
       g_object_unref (animation);
     }
 }
 
 
 /**
- * ide_animation_add_property:
- * @animation: (in): A #IdeAnimation.
+ * egg_animation_add_property:
+ * @animation: (in): A #EggAnimation.
  * @pspec: (in): A #ParamSpec of @target or a #GtkWidget<!-- -->'s parent.
  * @value: (in): The new value for the property at the end of the animation.
  *
@@ -679,14 +700,14 @@ ide_animation_stop (IdeAnimation *animation)
  * Side effects: None.
  */
 void
-ide_animation_add_property (IdeAnimation *animation,
+egg_animation_add_property (EggAnimation *animation,
                             GParamSpec   *pspec,
                             const GValue *value)
 {
   Tween tween = { 0 };
   GType type;
 
-  g_return_if_fail (IDE_IS_ANIMATION (animation));
+  g_return_if_fail (EGG_IS_ANIMATION (animation));
   g_return_if_fail (pspec != NULL);
   g_return_if_fail (value != NULL);
   g_return_if_fail (value->g_type);
@@ -714,8 +735,8 @@ ide_animation_add_property (IdeAnimation *animation,
 
 
 /**
- * ide_animation_dispose:
- * @object: (in): A #IdeAnimation.
+ * egg_animation_dispose:
+ * @object: (in): A #EggAnimation.
  *
  * Releases any object references the animation contains.
  *
@@ -723,20 +744,20 @@ ide_animation_add_property (IdeAnimation *animation,
  * Side effects: None.
  */
 static void
-ide_animation_dispose (GObject *object)
+egg_animation_dispose (GObject *object)
 {
-  IdeAnimation *self = IDE_ANIMATION (object);
+  EggAnimation *self = EGG_ANIMATION (object);
 
   g_clear_object (&self->target);
   g_clear_object (&self->frame_clock);
 
-  G_OBJECT_CLASS (ide_animation_parent_class)->dispose (object);
+  G_OBJECT_CLASS (egg_animation_parent_class)->dispose (object);
 }
 
 
 /**
- * ide_animation_finalize:
- * @object: (in): A #IdeAnimation.
+ * egg_animation_finalize:
+ * @object: (in): A #EggAnimation.
  *
  * Finalizes the object and releases any resources allocated.
  *
@@ -744,9 +765,9 @@ ide_animation_dispose (GObject *object)
  * Side effects: None.
  */
 static void
-ide_animation_finalize (GObject *object)
+egg_animation_finalize (GObject *object)
 {
-  IdeAnimation *self = IDE_ANIMATION (object);
+  EggAnimation *self = EGG_ANIMATION (object);
   Tween *tween;
   gint i;
 
@@ -760,12 +781,12 @@ ide_animation_finalize (GObject *object)
 
   g_array_unref (self->tweens);
 
-  G_OBJECT_CLASS (ide_animation_parent_class)->finalize (object);
+  G_OBJECT_CLASS (egg_animation_parent_class)->finalize (object);
 }
 
 
 /**
- * ide_animation_set_property:
+ * egg_animation_set_property:
  * @object: (in): A #GObject.
  * @prop_id: (in): The property identifier.
  * @value: (in): The given property.
@@ -774,12 +795,12 @@ ide_animation_finalize (GObject *object)
  * Set a given #GObject property.
  */
 static void
-ide_animation_set_property (GObject      *object,
+egg_animation_set_property (GObject      *object,
                             guint         prop_id,
                             const GValue *value,
                             GParamSpec   *pspec)
 {
-  IdeAnimation *animation = IDE_ANIMATION (object);
+  EggAnimation *animation = EGG_ANIMATION (object);
 
   switch (prop_id)
     {
@@ -788,7 +809,7 @@ ide_animation_set_property (GObject      *object,
       break;
 
     case PROP_FRAME_CLOCK:
-      ide_animation_set_frame_clock (animation, g_value_get_object (value));
+      egg_animation_set_frame_clock (animation, g_value_get_object (value));
       break;
 
     case PROP_MODE:
@@ -796,7 +817,7 @@ ide_animation_set_property (GObject      *object,
       break;
 
     case PROP_TARGET:
-      ide_animation_set_target (animation, g_value_get_object (value));
+      egg_animation_set_target (animation, g_value_get_object (value));
       break;
 
     default:
@@ -806,8 +827,8 @@ ide_animation_set_property (GObject      *object,
 
 
 /**
- * ide_animation_class_init:
- * @klass: (in): A #IdeAnimationClass.
+ * egg_animation_class_init:
+ * @klass: (in): A #EggAnimationClass.
  *
  * Initializes the GObjectClass.
  *
@@ -815,19 +836,19 @@ ide_animation_set_property (GObject      *object,
  * Side effects: Properties, signals, and vtables are initialized.
  */
 static void
-ide_animation_class_init (IdeAnimationClass *klass)
+egg_animation_class_init (EggAnimationClass *klass)
 {
   GObjectClass *object_class;
 
-  gDebug = !!g_getenv ("IDE_ANIMATION_DEBUG");
+  gDebug = !!g_getenv ("EGG_ANIMATION_DEBUG");
 
   object_class = G_OBJECT_CLASS (klass);
-  object_class->dispose = ide_animation_dispose;
-  object_class->finalize = ide_animation_finalize;
-  object_class->set_property = ide_animation_set_property;
+  object_class->dispose = egg_animation_dispose;
+  object_class->finalize = egg_animation_finalize;
+  object_class->set_property = egg_animation_set_property;
 
   /**
-   * IdeAnimation:duration:
+   * EggAnimation:duration:
    *
    * The "duration" property is the total number of milliseconds that the
    * animation should run before being completed.
@@ -853,7 +874,7 @@ ide_animation_class_init (IdeAnimationClass *klass)
                           G_PARAM_STATIC_STRINGS));
 
   /**
-   * IdeAnimation:mode:
+   * EggAnimation:mode:
    *
    * The "mode" property is the Alpha function that should be used to
    * determine the offset within the animation based on the current
@@ -863,14 +884,14 @@ ide_animation_class_init (IdeAnimationClass *klass)
     g_param_spec_enum ("mode",
                        _("Mode"),
                        _("The animation mode"),
-                       IDE_TYPE_ANIMATION_MODE,
-                       IDE_ANIMATION_LINEAR,
+                       EGG_TYPE_ANIMATION_MODE,
+                       EGG_ANIMATION_LINEAR,
                        (G_PARAM_WRITABLE |
                         G_PARAM_CONSTRUCT_ONLY |
                         G_PARAM_STATIC_STRINGS));
 
   /**
-   * IdeAnimation:target:
+   * EggAnimation:target:
    *
    * The "target" property is the #GObject that should have it's properties
    * animated.
@@ -887,12 +908,12 @@ ide_animation_class_init (IdeAnimationClass *klass)
   g_object_class_install_properties (object_class, LAST_PROP, gParamSpecs);
 
   /**
-   * IdeAnimation::tick:
+   * EggAnimation::tick:
    *
    * The "tick" signal is emitted on each frame in the animation.
    */
   gSignals[TICK] = g_signal_new ("tick",
-                                 IDE_TYPE_ANIMATION,
+                                 EGG_TYPE_ANIMATION,
                                  G_SIGNAL_RUN_FIRST,
                                  0,
                                  NULL, NULL, NULL,
@@ -900,7 +921,7 @@ ide_animation_class_init (IdeAnimationClass *klass)
                                  0);
 
 #define SET_ALPHA(_T, _t) \
-  gAlphaFuncs[IDE_ANIMATION_ ## _T] = ide_animation_alpha_ ## _t
+  gAlphaFuncs[EGG_ANIMATION_ ## _T] = egg_animation_alpha_ ## _t
 
   SET_ALPHA (LINEAR, linear);
   SET_ALPHA (EASE_IN_QUAD, ease_in_quad);
@@ -925,53 +946,53 @@ ide_animation_class_init (IdeAnimationClass *klass)
 
 
 /**
- * ide_animation_init:
- * @animation: (in): A #IdeAnimation.
+ * egg_animation_init:
+ * @animation: (in): A #EggAnimation.
  *
- * Initializes the #IdeAnimation instance.
+ * Initializes the #EggAnimation instance.
  *
  * Returns: None.
  * Side effects: Everything.
  */
 static void
-ide_animation_init (IdeAnimation *animation)
+egg_animation_init (EggAnimation *animation)
 {
   animation->duration_msec = 250;
-  animation->mode = IDE_ANIMATION_EASE_IN_OUT_QUAD;
+  animation->mode = EGG_ANIMATION_EASE_IN_OUT_QUAD;
   animation->tweens = g_array_new (FALSE, FALSE, sizeof (Tween));
   animation->last_offset = -G_MINDOUBLE;
 }
 
 
 /**
- * ide_animation_mode_get_type:
+ * egg_animation_mode_get_type:
  *
- * Retrieves the GType for #IdeAnimationMode.
+ * Retrieves the GType for #EggAnimationMode.
  *
  * Returns: A GType.
  * Side effects: GType registered on first call.
  */
 GType
-ide_animation_mode_get_type (void)
+egg_animation_mode_get_type (void)
 {
   static GType type_id = 0;
   static const GEnumValue values[] = {
-    { IDE_ANIMATION_LINEAR, "IDE_ANIMATION_LINEAR", "LINEAR" },
-    { IDE_ANIMATION_EASE_IN_QUAD, "IDE_ANIMATION_EASE_IN_QUAD", "EASE_IN_QUAD" },
-    { IDE_ANIMATION_EASE_IN_OUT_QUAD, "IDE_ANIMATION_EASE_IN_OUT_QUAD", "EASE_IN_OUT_QUAD" },
-    { IDE_ANIMATION_EASE_OUT_QUAD, "IDE_ANIMATION_EASE_OUT_QUAD", "EASE_OUT_QUAD" },
-    { IDE_ANIMATION_EASE_IN_CUBIC, "IDE_ANIMATION_EASE_IN_CUBIC", "EASE_IN_CUBIC" },
-    { IDE_ANIMATION_EASE_OUT_CUBIC, "IDE_ANIMATION_EASE_OUT_CUBIC", "EASE_OUT_CUBIC" },
+    { EGG_ANIMATION_LINEAR, "EGG_ANIMATION_LINEAR", "LINEAR" },
+    { EGG_ANIMATION_EASE_IN_QUAD, "EGG_ANIMATION_EASE_IN_QUAD", "EASE_IN_QUAD" },
+    { EGG_ANIMATION_EASE_IN_OUT_QUAD, "EGG_ANIMATION_EASE_IN_OUT_QUAD", "EASE_IN_OUT_QUAD" },
+    { EGG_ANIMATION_EASE_OUT_QUAD, "EGG_ANIMATION_EASE_OUT_QUAD", "EASE_OUT_QUAD" },
+    { EGG_ANIMATION_EASE_IN_CUBIC, "EGG_ANIMATION_EASE_IN_CUBIC", "EASE_IN_CUBIC" },
+    { EGG_ANIMATION_EASE_OUT_CUBIC, "EGG_ANIMATION_EASE_OUT_CUBIC", "EASE_OUT_CUBIC" },
     { 0 }
   };
 
   if (G_UNLIKELY (!type_id))
-    type_id = g_enum_register_static ("IdeAnimationMode", values);
+    type_id = g_enum_register_static ("EggAnimationMode", values);
   return type_id;
 }
 
 /**
- * ide_object_animatev:
+ * egg_object_animatev:
  * @object: A #GObject.
  * @mode: The animation mode.
  * @duration_msec: The duration in milliseconds.
@@ -979,17 +1000,17 @@ ide_animation_mode_get_type (void)
  * @first_property: The first property to animate.
  * @args: A variadac list of arguments
  *
- * Returns: (transfer none): A #IdeAnimation.
+ * Returns: (transfer none): A #EggAnimation.
  */
-IdeAnimation *
-ide_object_animatev (gpointer          object,
-                     IdeAnimationMode  mode,
+EggAnimation *
+egg_object_animatev (gpointer          object,
+                     EggAnimationMode  mode,
                      guint             duration_msec,
                      GdkFrameClock    *frame_clock,
                      const gchar      *first_property,
                      va_list           args)
 {
-  IdeAnimation *animation;
+  EggAnimation *animation;
   GObjectClass *klass;
   GObjectClass *pklass;
   const gchar *name;
@@ -1002,7 +1023,7 @@ ide_object_animatev (gpointer          object,
   gboolean enable_animations;
 
   g_return_val_if_fail (first_property != NULL, NULL);
-  g_return_val_if_fail (mode < IDE_ANIMATION_LAST, NULL);
+  g_return_val_if_fail (mode < EGG_ANIMATION_LAST, NULL);
 
   if ((frame_clock == NULL) && GTK_IS_WIDGET (object))
     frame_clock = gtk_widget_get_frame_clock (GTK_WIDGET (object));
@@ -1025,7 +1046,7 @@ ide_object_animatev (gpointer          object,
   name = first_property;
   type = G_TYPE_FROM_INSTANCE (object);
   klass = G_OBJECT_GET_CLASS (object);
-  animation = g_object_new (IDE_TYPE_ANIMATION,
+  animation = g_object_new (EGG_TYPE_ANIMATION,
                             "duration", duration_msec,
                             "frame-clock", frame_clock,
                             "mode", mode,
@@ -1072,12 +1093,12 @@ ide_object_animatev (gpointer          object,
           goto failure;
         }
 
-      ide_animation_add_property (animation, pspec, &value);
+      egg_animation_add_property (animation, pspec, &value);
       g_value_unset (&value);
     }
   while ((name = va_arg (args, const gchar *)));
 
-  ide_animation_start (animation);
+  egg_animation_start (animation);
 
   return animation;
 
@@ -1088,7 +1109,7 @@ failure:
 }
 
 /**
- * ide_object_animate:
+ * egg_object_animate:
  * @object: (in): A #GObject.
  * @mode: (in): The animation mode.
  * @duration_msec: (in): The duration in milliseconds.
@@ -1097,34 +1118,34 @@ failure:
  * Animates the properties of @object. The can be set in a similar manner to g_object_set(). They
  * will be animated from their current value to the target value over the time period.
  *
- * Return value: (transfer none): A #IdeAnimation.
+ * Return value: (transfer none): A #EggAnimation.
  * Side effects: None.
  */
-IdeAnimation*
-ide_object_animate (gpointer        object,
-                    IdeAnimationMode mode,
+EggAnimation*
+egg_object_animate (gpointer        object,
+                    EggAnimationMode mode,
                     guint           duration_msec,
                     GdkFrameClock  *frame_clock,
                     const gchar    *first_property,
                     ...)
 {
-  IdeAnimation *animation;
+  EggAnimation *animation;
   va_list args;
 
   va_start (args, first_property);
-  animation = ide_object_animatev (object, mode, duration_msec, frame_clock, first_property, args);
+  animation = egg_object_animatev (object, mode, duration_msec, frame_clock, first_property, args);
   va_end (args);
   return animation;
 }
 
 /**
- * ide_object_animate_full:
+ * egg_object_animate_full:
  *
- * Return value: (transfer none): A #IdeAnimation.
+ * Return value: (transfer none): A #EggAnimation.
  */
-IdeAnimation*
-ide_object_animate_full (gpointer        object,
-                         IdeAnimationMode mode,
+EggAnimation*
+egg_object_animate_full (gpointer        object,
+                         EggAnimationMode mode,
                          guint           duration_msec,
                          GdkFrameClock  *frame_clock,
                          GDestroyNotify  notify,
@@ -1132,11 +1153,11 @@ ide_object_animate_full (gpointer        object,
                          const gchar    *first_property,
                          ...)
 {
-  IdeAnimation *animation;
+  EggAnimation *animation;
   va_list args;
 
   va_start (args, first_property);
-  animation = ide_object_animatev (object,
+  animation = egg_object_animatev (object,
                                   mode,
                                   duration_msec,
                                   frame_clock,
@@ -1144,7 +1165,8 @@ ide_object_animate_full (gpointer        object,
                                   args);
   va_end (args);
 
-  g_object_weak_ref (G_OBJECT (animation), (GWeakNotify) notify, notify_data);
+  animation->notify = notify;
+  animation->notify_data = notify_data;
 
   return animation;
 }
diff --git a/libide/theatrics/ide-animation.h b/contrib/egg/egg-animation.h
similarity index 59%
rename from libide/theatrics/ide-animation.h
rename to contrib/egg/egg-animation.h
index b2352ee..d1efa78 100644
--- a/libide/theatrics/ide-animation.h
+++ b/contrib/egg/egg-animation.h
@@ -1,4 +1,4 @@
-/* ide-animation.h
+/* egg-animation.h
  *
  * Copyright (C) 2013 Christian Hergert <christian hergert me>
  *
@@ -16,47 +16,47 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef IDE_ANIMATION_H
-#define IDE_ANIMATION_H
+#ifndef EGG_ANIMATION_H
+#define EGG_ANIMATION_H
 
 #include <gdk/gdk.h>
 
 G_BEGIN_DECLS
 
-#define IDE_TYPE_ANIMATION      (ide_animation_get_type())
-#define IDE_TYPE_ANIMATION_MODE (ide_animation_mode_get_type())
+#define EGG_TYPE_ANIMATION      (egg_animation_get_type())
+#define EGG_TYPE_ANIMATION_MODE (egg_animation_mode_get_type())
 
-G_DECLARE_FINAL_TYPE (IdeAnimation, ide_animation,
-                      IDE, ANIMATION, GInitiallyUnowned)
+G_DECLARE_FINAL_TYPE (EggAnimation, egg_animation,
+                      EGG, ANIMATION, GInitiallyUnowned)
 
-typedef enum   _IdeAnimationMode    IdeAnimationMode;
+typedef enum   _EggAnimationMode    EggAnimationMode;
 
-enum _IdeAnimationMode
+enum _EggAnimationMode
 {
-  IDE_ANIMATION_LINEAR,
-  IDE_ANIMATION_EASE_IN_QUAD,
-  IDE_ANIMATION_EASE_OUT_QUAD,
-  IDE_ANIMATION_EASE_IN_OUT_QUAD,
-  IDE_ANIMATION_EASE_IN_CUBIC,
-  IDE_ANIMATION_EASE_OUT_CUBIC,
+  EGG_ANIMATION_LINEAR,
+  EGG_ANIMATION_EASE_IN_QUAD,
+  EGG_ANIMATION_EASE_OUT_QUAD,
+  EGG_ANIMATION_EASE_IN_OUT_QUAD,
+  EGG_ANIMATION_EASE_IN_CUBIC,
+  EGG_ANIMATION_EASE_OUT_CUBIC,
 
-  IDE_ANIMATION_LAST
+  EGG_ANIMATION_LAST
 };
 
-GType         ide_animation_mode_get_type (void);
-void          ide_animation_start         (IdeAnimation      *animation);
-void          ide_animation_stop          (IdeAnimation      *animation);
-void          ide_animation_add_property  (IdeAnimation      *animation,
+GType         egg_animation_mode_get_type (void);
+void          egg_animation_start         (EggAnimation     *animation);
+void          egg_animation_stop          (EggAnimation     *animation);
+void          egg_animation_add_property  (EggAnimation     *animation,
                                            GParamSpec       *pspec,
                                            const GValue     *value);
-IdeAnimation* ide_object_animate          (gpointer          object,
-                                           IdeAnimationMode   mode,
+EggAnimation* egg_object_animate          (gpointer          object,
+                                           EggAnimationMode  mode,
                                            guint             duration_msec,
                                            GdkFrameClock    *frame_clock,
                                            const gchar      *first_property,
                                            ...) G_GNUC_NULL_TERMINATED;
-IdeAnimation* ide_object_animate_full     (gpointer          object,
-                                           IdeAnimationMode   mode,
+EggAnimation* egg_object_animate_full     (gpointer          object,
+                                           EggAnimationMode  mode,
                                            guint             duration_msec,
                                            GdkFrameClock    *frame_clock,
                                            GDestroyNotify    notify,
@@ -66,4 +66,4 @@ IdeAnimation* ide_object_animate_full     (gpointer          object,
 
 G_END_DECLS
 
-#endif /* IDE_ANIMATION_H */
+#endif /* EGG_ANIMATION_H */
diff --git a/libide/theatrics/ide-frame-source.c b/contrib/egg/egg-frame-source.c
similarity index 79%
rename from libide/theatrics/ide-frame-source.c
rename to contrib/egg/egg-frame-source.c
index f7e5153..065f145 100644
--- a/libide/theatrics/ide-frame-source.c
+++ b/contrib/egg/egg-frame-source.c
@@ -1,6 +1,6 @@
-/* ide-frame-source.c
+/* egg-frame-source.c
  *
- * Copyright (C) 2015 Christian Hergert <christian hergert me>
+ * Copyright (C) 2010-2015 Christian Hergert <christian hergert me>
  *
  * 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
@@ -16,7 +16,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "ide-frame-source.h"
+#include "egg-frame-source.h"
 
 typedef struct
 {
@@ -24,13 +24,13 @@ typedef struct
    guint   fps;
    guint   frame_count;
    gint64  start_time;
-} IdeFrameSource;
+} EggFrameSource;
 
 static gboolean
-ide_frame_source_prepare (GSource *source,
+egg_frame_source_prepare (GSource *source,
                           gint    *timeout_)
 {
-   IdeFrameSource *fsource = (IdeFrameSource *)(gpointer)source;
+   EggFrameSource *fsource = (EggFrameSource *)(gpointer)source;
    gint64 current_time;
    guint elapsed_time;
    guint new_frame_num;
@@ -66,18 +66,18 @@ ide_frame_source_prepare (GSource *source,
 }
 
 static gboolean
-ide_frame_source_check (GSource *source)
+egg_frame_source_check (GSource *source)
 {
    gint timeout_;
-   return ide_frame_source_prepare(source, &timeout_);
+   return egg_frame_source_prepare(source, &timeout_);
 }
 
 static gboolean
-ide_frame_source_dispatch (GSource     *source,
+egg_frame_source_dispatch (GSource     *source,
                            GSourceFunc  source_func,
                            gpointer     user_data)
 {
-   IdeFrameSource *fsource = (IdeFrameSource *)(gpointer)source;
+   EggFrameSource *fsource = (EggFrameSource *)(gpointer)source;
    gboolean ret;
 
    if ((ret = source_func(user_data)))
@@ -86,13 +86,13 @@ ide_frame_source_dispatch (GSource     *source,
 }
 
 static GSourceFuncs source_funcs = {
-   ide_frame_source_prepare,
-   ide_frame_source_check,
-   ide_frame_source_dispatch,
+   egg_frame_source_prepare,
+   egg_frame_source_check,
+   egg_frame_source_dispatch,
 };
 
 /**
- * ide_frame_source_add:
+ * egg_frame_source_add:
  * @frames_per_sec: (in): Target frames per second.
  * @callback: (in) (scope notified): A #GSourceFunc to execute.
  * @user_data: (in): User data for @callback.
@@ -104,24 +104,24 @@ static GSourceFuncs source_funcs = {
  * Returns: A source id that can be removed with g_source_remove().
  */
 guint
-ide_frame_source_add (guint       frames_per_sec,
+egg_frame_source_add (guint       frames_per_sec,
                       GSourceFunc callback,
                       gpointer    user_data)
 {
-   IdeFrameSource *fsource;
+   EggFrameSource *fsource;
    GSource *source;
    guint ret;
 
    g_return_val_if_fail (frames_per_sec > 0, 0);
    g_return_val_if_fail (frames_per_sec <= 120, 0);
 
-   source = g_source_new(&source_funcs, sizeof(IdeFrameSource));
-   fsource = (IdeFrameSource *)(gpointer)source;
+   source = g_source_new(&source_funcs, sizeof(EggFrameSource));
+   fsource = (EggFrameSource *)(gpointer)source;
    fsource->fps = frames_per_sec;
    fsource->frame_count = 0;
    fsource->start_time = g_get_monotonic_time() / 1000;
    g_source_set_callback(source, callback, user_data, NULL);
-   g_source_set_name(source, "IdeFrameSource");
+   g_source_set_name(source, "EggFrameSource");
 
    ret = g_source_attach(source, NULL);
    g_source_unref(source);
diff --git a/libide/theatrics/ide-frame-source.h b/contrib/egg/egg-frame-source.h
similarity index 77%
rename from libide/theatrics/ide-frame-source.h
rename to contrib/egg/egg-frame-source.h
index 29bec2f..37f79cb 100644
--- a/libide/theatrics/ide-frame-source.h
+++ b/contrib/egg/egg-frame-source.h
@@ -1,6 +1,6 @@
-/* ide-frame-source.h
+/* egg-frame-source.h
  *
- * Copyright (C) 2015 Christian Hergert <christian hergert me>
+ * Copyright (C) 2010-2015 Christian Hergert <christian hergert me>
  *
  * 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
@@ -16,17 +16,17 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef IDE_FRAME_SOURCE_H
-#define IDE_FRAME_SOURCE_H
+#ifndef EGG_FRAME_SOURCE_H
+#define EGG_FRAME_SOURCE_H
 
 #include <glib.h>
 
 G_BEGIN_DECLS
 
-guint ide_frame_source_add (guint       frames_per_sec,
+guint egg_frame_source_add (guint       frames_per_sec,
                             GSourceFunc callback,
                             gpointer    user_data);
 
 G_END_DECLS
 
-#endif /* IDE_FRAME_SOURCE_H */
+#endif /* EGG_FRAME_SOURCE_H */
diff --git a/doc/reference/libide/libide-sections.txt b/doc/reference/libide/libide-sections.txt
index 8b8b9c1..04c3151 100644
--- a/doc/reference/libide/libide-sections.txt
+++ b/doc/reference/libide/libide-sections.txt
@@ -4,19 +4,6 @@ IDE_INSIDE
 </SECTION>
 
 <SECTION>
-<FILE>ide-animation</FILE>
-IDE_TYPE_ANIMATION
-ide_animation_start
-ide_animation_stop
-ide_animation_add_property
-ide_object_animate
-ide_object_animate_full
-<SUBSECTION Standard>
-IDE_TYPE_ANIMATION_MODE
-ide_animation_mode_get_type
-</SECTION>
-
-<SECTION>
 <FILE>ide-autotools-build-system</FILE>
 IDE_TYPE_AUTOTOOLS_BUILD_SYSTEM
 ide_autotools_build_system_get_tarball_name
diff --git a/doc/reference/libide/libide.types b/doc/reference/libide/libide.types
index 5e6e785..b1115c9 100644
--- a/doc/reference/libide/libide.types
+++ b/doc/reference/libide/libide.types
@@ -1,4 +1,4 @@
-ide_animation_mode_get_type
+egg_animation_mode_get_type
 ide_buffer_line_flags_get_type
 ide_debugger_get_type
 ide_diagnostic_get_type
diff --git a/libide/Makefile.am b/libide/Makefile.am
index 9324d4f..08ff871 100644
--- a/libide/Makefile.am
+++ b/libide/Makefile.am
@@ -176,8 +176,6 @@ libide_1_0_la_public_sources = \
        ide.h \
        local/ide-local-device.c \
        local/ide-local-device.h \
-       theatrics/ide-animation.c \
-       theatrics/ide-animation.h \
        $(NULL)
 
 libide_1_0_la_SOURCES = \
@@ -246,8 +244,6 @@ libide_1_0_la_SOURCES = \
        pygobject/ide-pygobject-script.h \
        theatrics/ide-box-theatric.c \
        theatrics/ide-box-theatric.h \
-       theatrics/ide-frame-source.c \
-       theatrics/ide-frame-source.h \
        util/ide-cairo.c \
        util/ide-cairo.h \
        util/ide-doc-seq.c \
diff --git a/libide/git/ide-git-remote-callbacks.c b/libide/git/ide-git-remote-callbacks.c
index 9d8b996..9c08d8f 100644
--- a/libide/git/ide-git-remote-callbacks.c
+++ b/libide/git/ide-git-remote-callbacks.c
@@ -18,7 +18,7 @@
 
 #include <glib/gi18n.h>
 
-#include "ide-animation.h"
+#include "egg-animation.h"
 #include "ide-debug.h"
 #include "ide-git-remote-callbacks.h"
 #include "ide-macros.h"
@@ -30,7 +30,7 @@ struct _IdeGitRemoteCallbacks
 {
   GgitRemoteCallbacks  parent_instance;
 
-  IdeAnimation        *animation;
+  EggAnimation        *animation;
   IdeProgress         *progress;
   gdouble              fraction;
 };
@@ -86,18 +86,18 @@ static gboolean
 ide_git_remote_callbacks__notify_fraction_cb (gpointer data)
 {
   g_autoptr(IdeGitRemoteCallbacks) self = data;
-  IdeAnimation *animation;
+  EggAnimation *animation;
 
   g_assert (IDE_IS_GIT_REMOTE_CALLBACKS (self));
 
   if ((animation = self->animation))
     {
       ide_clear_weak_pointer (&self->animation);
-      ide_animation_stop (animation);
+      egg_animation_stop (animation);
     }
 
-  animation = ide_object_animate (self->progress,
-                                  IDE_ANIMATION_EASE_IN_OUT_QUAD,
+  animation = egg_object_animate (self->progress,
+                                  EGG_ANIMATION_EASE_IN_OUT_QUAD,
                                   ANIMATION_DURATION_MSEC,
                                   NULL,
                                   "fraction", self->fraction,
diff --git a/libide/ide-source-view.c b/libide/ide-source-view.c
index 5eddf1b..691473c 100644
--- a/libide/ide-source-view.c
+++ b/libide/ide-source-view.c
@@ -23,7 +23,7 @@
 #include "egg-binding-group.h"
 #include "egg-signal-group.h"
 
-#include "ide-animation.h"
+#include "egg-animation.h"
 #include "ide-back-forward-item.h"
 #include "ide-back-forward-list.h"
 #include "ide-box-theatric.h"
@@ -103,8 +103,8 @@ typedef struct
   GQueue                      *snippets;
   GtkSourceCompletionProvider *snippets_provider;
   GtkSourceSearchContext      *search_context;
-  IdeAnimation                *hadj_animation;
-  IdeAnimation                *vadj_animation;
+  EggAnimation                *hadj_animation;
+  EggAnimation                *vadj_animation;
 
   IdeExtensionSetAdapter      *completion_providers;
   EggSignalGroup              *completion_providers_signals;
@@ -642,8 +642,8 @@ animate_expand (IdeSourceView     *self,
                            "y", rect.y,
                            NULL);
 
-  ide_object_animate_full (theatric,
-                           IDE_ANIMATION_EASE_IN_CUBIC,
+  egg_object_animate_full (theatric,
+                           EGG_ANIMATION_EASE_IN_CUBIC,
                            250,
                            gtk_widget_get_frame_clock (GTK_WIDGET (self)),
                            g_object_unref,
@@ -701,8 +701,8 @@ animate_shrink (IdeSourceView     *self,
                            NULL);
 
   if (is_whole_line)
-    ide_object_animate_full (theatric,
-                             IDE_ANIMATION_EASE_OUT_QUAD,
+    egg_object_animate_full (theatric,
+                             EGG_ANIMATION_EASE_OUT_QUAD,
                              150,
                              gtk_widget_get_frame_clock (GTK_WIDGET (self)),
                              g_object_unref,
@@ -714,8 +714,8 @@ animate_shrink (IdeSourceView     *self,
                              "alpha", 0.3,
                              NULL);
   else if (is_single_line)
-    ide_object_animate_full (theatric,
-                             IDE_ANIMATION_EASE_OUT_QUAD,
+    egg_object_animate_full (theatric,
+                             EGG_ANIMATION_EASE_OUT_QUAD,
                              150,
                              gtk_widget_get_frame_clock (GTK_WIDGET (self)),
                              g_object_unref,
@@ -727,8 +727,8 @@ animate_shrink (IdeSourceView     *self,
                              "alpha", 0.3,
                              NULL);
   else
-    ide_object_animate_full (theatric,
-                             IDE_ANIMATION_EASE_OUT_QUAD,
+    egg_object_animate_full (theatric,
+                             EGG_ANIMATION_EASE_OUT_QUAD,
                              150,
                              gtk_widget_get_frame_clock (GTK_WIDGET (self)),
                              g_object_unref,
@@ -4855,13 +4855,13 @@ ide_source_view_dispose (GObject *object)
 
   if (priv->hadj_animation)
     {
-      ide_animation_stop (priv->hadj_animation);
+      egg_animation_stop (priv->hadj_animation);
       ide_clear_weak_pointer (&priv->hadj_animation);
     }
 
   if (priv->vadj_animation)
     {
-      ide_animation_stop (priv->vadj_animation);
+      egg_animation_stop (priv->vadj_animation);
       ide_clear_weak_pointer (&priv->vadj_animation);
     }
 
@@ -6819,13 +6819,13 @@ ide_source_view_scroll_to_iter (IdeSourceView     *self,
 
       if (priv->hadj_animation != NULL)
         {
-          ide_animation_stop (priv->hadj_animation);
+          egg_animation_stop (priv->hadj_animation);
           ide_clear_weak_pointer (&priv->hadj_animation);
         }
 
       priv->hadj_animation =
-        ide_object_animate (hadj,
-                            IDE_ANIMATION_EASE_OUT_CUBIC,
+        egg_object_animate (hadj,
+                            EGG_ANIMATION_EASE_OUT_CUBIC,
                             duration_msec,
                             frame_clock,
                             "value", (double)xvalue,
@@ -6835,13 +6835,13 @@ ide_source_view_scroll_to_iter (IdeSourceView     *self,
 
       if (priv->vadj_animation != NULL)
         {
-          ide_animation_stop (priv->vadj_animation);
+          egg_animation_stop (priv->vadj_animation);
           ide_clear_weak_pointer (&priv->vadj_animation);
         }
 
       priv->vadj_animation =
-        ide_object_animate_full (vadj,
-                                 IDE_ANIMATION_EASE_OUT_CUBIC,
+        egg_object_animate_full (vadj,
+                                 EGG_ANIMATION_EASE_OUT_CUBIC,
                                  duration_msec,
                                  frame_clock,
                                  (GDestroyNotify)ide_source_view__vadj_animation_completed,
diff --git a/libide/ide.h b/libide/ide.h
index faea19c..6065801 100644
--- a/libide/ide.h
+++ b/libide/ide.h
@@ -101,7 +101,6 @@ G_BEGIN_DECLS
 #include "git/ide-git-remote-callbacks.h"
 #include "git/ide-git-vcs.h"
 #include "local/ide-local-device.h"
-#include "theatrics/ide-animation.h"
 
 #undef IDE_INSIDE
 
diff --git a/libide/theatrics/ide-box-theatric.c b/libide/theatrics/ide-box-theatric.c
index bc18cb0..6fa3a39 100644
--- a/libide/theatrics/ide-box-theatric.c
+++ b/libide/theatrics/ide-box-theatric.c
@@ -20,7 +20,7 @@
 
 #include <glib/gi18n.h>
 
-#include "ide-animation.h"
+#include "egg-animation.h"
 #include "ide-box-theatric.h"
 #include "ide-cairo.h"
 
diff --git a/src/dialogs/gb-new-project-dialog.c b/src/dialogs/gb-new-project-dialog.c
index 7ae4d75..5fcaaeb 100644
--- a/src/dialogs/gb-new-project-dialog.c
+++ b/src/dialogs/gb-new-project-dialog.c
@@ -20,6 +20,7 @@
 
 #include <glib/gi18n.h>
 #include <libgit2-glib/ggit.h>
+#include <egg-animation.h>
 
 #include "gb-new-project-dialog.h"
 #include "gb-string.h"
@@ -161,8 +162,8 @@ gb_new_project_dialog__clone_cb (GObject      *object,
   g_assert (GB_IS_NEW_PROJECT_DIALOG (self));
   g_assert (G_IS_TASK (task));
 
-  ide_object_animate_full (self->clone_progress,
-                           IDE_ANIMATION_EASE_IN_OUT_QUAD,
+  egg_object_animate_full (self->clone_progress,
+                           EGG_ANIMATION_EASE_IN_OUT_QUAD,
                            ANIMATION_DURATION_MSEC,
                            NULL,
                            (GDestroyNotify)gb_widget_fade_hide,
diff --git a/src/editor/gb-editor-workspace-actions.c b/src/editor/gb-editor-workspace-actions.c
index 8ac5ab8..7121a80 100644
--- a/src/editor/gb-editor-workspace-actions.c
+++ b/src/editor/gb-editor-workspace-actions.c
@@ -40,8 +40,8 @@ gb_editor_workspace_actions_show_sidebar (GSimpleAction *action,
   if (!g_variant_get_boolean (variant) && visible)
     {
       gb_project_tree_save_desired_width (self->project_tree);
-      ide_object_animate_full (self->project_paned,
-                               IDE_ANIMATION_EASE_IN_CUBIC,
+      egg_object_animate_full (self->project_paned,
+                               EGG_ANIMATION_EASE_IN_CUBIC,
                                ANIMATION_DURATION_MSEC,
                                NULL,
                                (GDestroyNotify)gtk_widget_hide,
@@ -58,8 +58,8 @@ gb_editor_workspace_actions_show_sidebar (GSimpleAction *action,
       position = gb_project_tree_get_desired_width (self->project_tree);
       gtk_paned_set_position (self->project_paned, 0);
       gtk_widget_show (GTK_WIDGET (self->project_sidebar));
-      ide_object_animate (self->project_paned,
-                          IDE_ANIMATION_EASE_IN_CUBIC,
+      egg_object_animate (self->project_paned,
+                          EGG_ANIMATION_EASE_IN_CUBIC,
                           ANIMATION_DURATION_MSEC,
                           NULL,
                           "position", position,
diff --git a/src/util/gb-widget.c b/src/util/gb-widget.c
index 71aeb73..5b227df 100644
--- a/src/util/gb-widget.c
+++ b/src/util/gb-widget.c
@@ -16,6 +16,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <egg-animation.h>
 #include <ide.h>
 #include <math.h>
 
@@ -176,8 +177,8 @@ gb_widget_fade_hide (GtkWidget *widget)
   if (gtk_widget_get_visible (widget))
     {
       frame_clock = gtk_widget_get_frame_clock (widget);
-      ide_object_animate_full (widget,
-                               IDE_ANIMATION_LINEAR,
+      egg_object_animate_full (widget,
+                               EGG_ANIMATION_LINEAR,
                                1000,
                                frame_clock,
                                hide_callback,
@@ -199,8 +200,8 @@ gb_widget_fade_show (GtkWidget *widget)
       frame_clock = gtk_widget_get_frame_clock (widget);
       gtk_widget_set_opacity (widget, 0.0);
       gtk_widget_show (widget);
-      ide_object_animate_full (widget,
-                               IDE_ANIMATION_LINEAR,
+      egg_object_animate_full (widget,
+                               EGG_ANIMATION_LINEAR,
                                500,
                                frame_clock,
                                NULL,
diff --git a/src/workspace/gb-slider.c b/src/workspace/gb-slider.c
index 1dc2d1f..25165e1 100644
--- a/src/workspace/gb-slider.c
+++ b/src/workspace/gb-slider.c
@@ -16,8 +16,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <egg-animation.h>
 #include <ide.h>
-
 #include <glib/gi18n.h>
 
 #include "gb-slider.h"
@@ -35,8 +35,8 @@ typedef struct
   GtkAdjustment    *h_adj;
   GtkAdjustment    *v_adj;
 
-  IdeAnimation     *h_anim;
-  IdeAnimation     *v_anim;
+  EggAnimation     *h_anim;
+  EggAnimation     *v_anim;
 
   GPtrArray        *children;
 
@@ -60,7 +60,7 @@ enum {
   CHILD_PROP_POSITION,
 };
 
-#define ANIMATION_MODE     IDE_ANIMATION_EASE_IN_QUAD
+#define ANIMATION_MODE     EGG_ANIMATION_EASE_IN_QUAD
 #define ANIMATION_DURATION 150
 
 static GParamSpec *gParamSpecs [LAST_PROP];
@@ -855,18 +855,18 @@ gb_slider_set_position (GbSlider         *self,
   if (priv->position != position)
     {
       GdkFrameClock *frame_clock;
-      IdeAnimation *anim;
+      EggAnimation *anim;
       gdouble v_value;
       gdouble h_value;
 
       priv->position = position;
 
       if (priv->h_anim)
-        ide_animation_stop (priv->h_anim);
+        egg_animation_stop (priv->h_anim);
       ide_clear_weak_pointer (&priv->h_anim);
 
       if (priv->v_anim)
-        ide_animation_stop (priv->v_anim);
+        egg_animation_stop (priv->v_anim);
       ide_clear_weak_pointer (&priv->v_anim);
 
       switch (position)
@@ -903,7 +903,7 @@ gb_slider_set_position (GbSlider         *self,
 
       frame_clock = gtk_widget_get_frame_clock (GTK_WIDGET (self));
 
-      anim = ide_object_animate (priv->h_adj,
+      anim = egg_object_animate (priv->h_adj,
                                  ANIMATION_MODE,
                                  ANIMATION_DURATION,
                                  frame_clock,
@@ -911,7 +911,7 @@ gb_slider_set_position (GbSlider         *self,
                                  NULL);
       ide_set_weak_pointer (&priv->h_anim, anim);
 
-      anim = ide_object_animate (priv->v_adj,
+      anim = egg_object_animate (priv->v_adj,
                                  ANIMATION_MODE,
                                  ANIMATION_DURATION,
                                  frame_clock,
diff --git a/src/workspace/gb-workspace.c b/src/workspace/gb-workspace.c
index dc576a2..7436b4d 100644
--- a/src/workspace/gb-workspace.c
+++ b/src/workspace/gb-workspace.c
@@ -16,6 +16,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <egg-animation.h>
 #include <glib/gi18n.h>
 #include <ide.h>
 #include <string.h>
@@ -23,7 +24,7 @@
 #include "gb-workspace.h"
 #include "gb-workspace-pane.h"
 
-#define ANIMATION_MODE     IDE_ANIMATION_EASE_IN_OUT_QUAD
+#define ANIMATION_MODE     EGG_ANIMATION_EASE_IN_OUT_QUAD
 #define ANIMATION_DURATION 250
 #define HORIZ_GRIP_EXTRA   5
 #define VERT_GRIP_EXTRA    5
@@ -33,7 +34,7 @@ typedef struct
 {
   GtkWidget       *widget;
   GtkAdjustment   *adjustment;
-  IdeAnimation    *animation;
+  EggAnimation    *animation;
   GdkWindow       *handle;
   GtkAllocation    handle_pos;
   GtkAllocation    alloc;
@@ -491,7 +492,7 @@ gb_workspace_child_set_reveal (GbWorkspace *self,
 
   if (item->animation != NULL)
     {
-      ide_animation_stop (item->animation);
+      egg_animation_stop (item->animation);
       ide_clear_weak_pointer (&item->animation);
     }
 
@@ -511,7 +512,7 @@ gb_workspace_child_set_reveal (GbWorkspace *self,
 
   if (gtk_widget_get_realized (GTK_WIDGET (self)))
     {
-      item->animation = ide_object_animate_full (item->adjustment,
+      item->animation = egg_object_animate_full (item->adjustment,
                                                  ANIMATION_MODE,
                                                  ANIMATION_DURATION,
                                                  frame_clock,
diff --git a/tests/test-ide-source-view.c b/tests/test-ide-source-view.c
index 1997a02..749b614 100644
--- a/tests/test-ide-source-view.c
+++ b/tests/test-ide-source-view.c
@@ -319,8 +319,8 @@ widget_fade_hide (GtkWidget *widget)
   if (gtk_widget_get_visible (widget))
     {
       frame_clock = gtk_widget_get_frame_clock (widget);
-      ide_object_animate_full (widget,
-                               IDE_ANIMATION_LINEAR,
+      egg_object_animate_full (widget,
+                               EGG_ANIMATION_LINEAR,
                                1000,
                                frame_clock,
                                hide_callback,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]