[ease] [general] Transition restructuring



commit c1d77259449623ce014d033510034f1154a893a3
Author: Nate Stedman <natesm gmail com>
Date:   Sun Jul 25 08:31:01 2010 -0400

    [general] Transition restructuring
    
    - All transition classes removed
    - Transitions are now purely enum-based
    - Transition pane uses TreeModels
    - Transition changes are undoable.

 examples/Transitions/Document.json | 1128 ++++++++++++++++++------------------
 src/ease-slide-actor.vala          |   34 +-
 src/ease-slide.vala                |   14 +-
 src/ease-transition-pane.vala      |  212 ++++++-
 src/ease-transitions.vala          |  539 +++++++++---------
 src/main.vala                      |    1 -
 6 files changed, 1027 insertions(+), 901 deletions(-)
---
diff --git a/examples/Transitions/Document.json b/examples/Transitions/Document.json
index 8480b9e..21d3d8d 100644
--- a/examples/Transitions/Document.json
+++ b/examples/Transitions/Document.json
@@ -1,842 +1,834 @@
 {
+  "width" : "1024",
   "height" : "768",
   "slides" : [
     {
-      "transition" : "1",
-      "background-color" : "0.13, 0.13, 0.13",
-      "background-type" : "background-type-color",
-      "variant" : "0",
+      "transition" : "EASE_TRANSITION_FADE",
+      "variant" : "EASE_TRANSITION_VARIANT_UP",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "2",
-      "background-color" : "1, 1, 1, 1",
-      "background-type" : "background-type-color",
-      "variant" : "2",
+      "transition" : "EASE_TRANSITION_SLIDE",
+      "variant" : "EASE_TRANSITION_VARIANT_LEFT",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "3",
-      "background-color" : "0.13, 0.13, 0.13",
-      "background-type" : "background-type-color",
-      "background-type" : "background-type-color",
-      "variant" : "0",
+      "transition" : "EASE_TRANSITION_DROP",
+      "variant" : "EASE_TRANSITION_VARIANT_UP",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "4",
-      "background-color" : "1, 1, 1, 1",
-      "background-type" : "background-type-color",
-      "variant" : "7",
+      "transition" : "EASE_TRANSITION_PIVOT",
+      "variant" : "EASE_TRANSITION_VARIANT_TOP_LEFT",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "5",
-      "background-color" : "0.13, 0.13, 0.13",
-      "background-type" : "background-type-color",
-      "background-type" : "background-type-color",
-      "variant" : "13",
+      "transition" : "EASE_TRANSITION_FLIP",
+      "variant" : "EASE_TRANSITION_VARIANT_LEFT_TO_RIGHT",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "6",
-      "background-color" : "1, 1, 1, 1",
-      "background-type" : "background-type-color",
-      "variant" : "2",
+      "transition" : "EASE_TRANSITION_REVOLVING_DOOR",
+      "variant" : "EASE_TRANSITION_VARIANT_LEFT",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "7",
-      "background-color" : "0.13, 0.13, 0.13",
-      "background-type" : "background-type-color",
-      "background-type" : "background-type-color",
-      "variant" : "0",
+      "transition" : "EASE_TRANSITION_REVEAL",
+      "variant" : "EASE_TRANSITION_VARIANT_UP",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "8",
-      "background-color" : "1, 1, 1, 1",
-      "background-type" : "background-type-color",
-      "variant" : "0",
+      "transition" : "EASE_TRANSITION_FALL",
+      "variant" : "EASE_TRANSITION_VARIANT_UP",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "10",
-      "background-color" : "0.13, 0.13, 0.13",
-      "background-type" : "background-type-color",
-      "background-type" : "background-type-color",
-      "variant" : "0",
+      "transition" : "EASE_TRANSITION_OPEN_DOOR",
+      "variant" : "EASE_TRANSITION_VARIANT_UP",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "11",
-      "background-color" : "1, 1, 1, 1",
-      "background-type" : "background-type-color",
-      "variant" : "6",
+      "transition" : "EASE_TRANSITION_ZOOM",
+      "variant" : "EASE_TRANSITION_VARIANT_CENTER",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "12",
-      "background-color" : "0.13, 0.13, 0.13",
-      "background-type" : "background-type-color",
-      "background-type" : "background-type-color",
-      "variant" : "0",
+      "transition" : "EASE_TRANSITION_PANEL",
+      "variant" : "EASE_TRANSITION_VARIANT_UP",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "13",
-      "background-color" : "1, 1, 1, 1",
-      "background-type" : "background-type-color",
-      "variant" : "2",
+      "transition" : "EASE_TRANSITION_SPIN_CONTENTS",
+      "variant" : "EASE_TRANSITION_VARIANT_LEFT",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "15",
-      "background-color" : "0.13, 0.13, 0.13",
-      "background-type" : "background-type-color",
-      "background-type" : "background-type-color",
-      "variant" : "0",
+      "transition" : "EASE_TRANSITION_SWING_CONTENTS",
+      "variant" : "EASE_TRANSITION_VARIANT_UP",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "16",
-      "background-color" : "1, 1, 1, 1",
-      "background-type" : "background-type-color",
-      "variant" : "0",
+      "transition" : "EASE_TRANSITION_SLIDE_CONTENTS",
+      "variant" : "EASE_TRANSITION_VARIANT_UP",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "14",
-      "background-color" : "0.13, 0.13, 0.13",
-      "background-type" : "background-type-color",
-      "background-type" : "background-type-color",
-      "variant" : "0",
+      "transition" : "EASE_TRANSITION_SPRING_CONTENTS",
+      "variant" : "EASE_TRANSITION_VARIANT_UP",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "17",
-      "background-color" : "1, 1, 1, 1",
-      "background-type" : "background-type-color",
-      "variant" : "15",
+      "transition" : "EASE_TRANSITION_ZOOM_CONTENTS",
+      "variant" : "EASE_TRANSITION_VARIANT_IN",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "9",
-      "background-color" : "0.13, 0.13, 0.13",
-      "background-type" : "background-type-color",
-      "background-type" : "background-type-color",
-      "variant" : "0",
+      "transition" : "EASE_TRANSITION_SLATS",
+      "variant" : "EASE_TRANSITION_VARIANT_UP",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "1.0, 1.0, 1.0, 1.0",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     },
     {
-      "transition" : "0",
-      "background-color" : "1, 1, 1, 1",
-      "background-type" : "background-type-color",
-      "variant" : "0",
+      "transition" : "EASE_TRANSITION_NONE",
+      "variant" : "EASE_TRANSITION_VARIANT_UP",
+      "transition_time" : "1",
       "automatically_advance" : "true",
       "advance_delay" : "0.5",
+      "title" : "Standard",
+      "background-color" : "1.000000, 1.000000, 1.000000, 1.000000",
+      "background-type" : "background-type-color",
       "elements" : [
         {
-          "text-variant" : "Normal",
-          "y" : "30",
-          "x" : "30",
-          "height" : "200",
-          "text-style" : "Normal",
-          "text" : "Lorem Ipsum Dolor",
+          "element-identifier" : "content-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "header-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "90",
           "width" : "964",
-          "text-weight" : "900",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "768",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
           "text-font" : "Sans",
-          "text-size" : "36"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "500",
+          "text-align" : "left",
+          "text-size" : "16"
         },
         {
-          "text-variant" : "Normal",
-          "y" : "90",
-          "x" : "30",
-          "height" : "768",
-          "text-style" : "Normal",
-          "text" : "Sit amet, consectetur adipiscing elit. Maecenas sed odio eget purus laoreet volutpat. Etiam nulla orci, eleifend nec sodales in, tempor cursus urna. Aenean posuere aliquet malesuada. Integer varius placerat massa. Pellentesque enim urna, cursus et molestie et, iaculis vitae libero. Quisque vel metus sed magna lacinia luctus. Suspendisse vel lectus eget diam dapibus condimentum. Aliquam a dolor vel sem rutrum mattis sit amet vitae nisl. Etiam vel sem tortor. Vestibulum varius metus id orci vulputate viverra luctus magna commodo. Duis dignissim sollicitudin leo eget tristique. Maecenas adipiscing neque nec mauris mollis ut ultrices sem porta. Cras vitae massa lectus. Aenean orci lectus, pretium nec sodales eu, aliquam vitae neque. Mauris nibh lectus, porta et vestibulum a, vestibulum a nulla.",
+          "element-identifier" : "header-text",
           "element-type" : "EaseTextElement",
-          "has-been-edited" : "true",
-          "element-identifier" : "content-text",
-          "text-align" : "left",
+          "x" : "30",
+          "y" : "30",
           "width" : "964",
-          "text-weight" : "500",
-          "text-color" : "0.13, 0.13, 0.13",
+          "height" : "200",
+          "has-been-edited" : "true",
+          "text-color" : "0.130000, 0.130000, 0.130000, 1.000000",
+          "text" : "Lorem Ipsum Dolor",
           "text-font" : "Sans",
-          "text-size" : "16"
+          "text-style" : "normal",
+          "text-variant" : "Small Caps",
+          "text-weight" : "900",
+          "text-align" : "left",
+          "text-size" : "36"
         }
-      ],
-      "title" : "Standard",
-      "transition_time" : "1"
+      ]
     }
-  ],
-  "width" : "1024"
+  ]
 }
diff --git a/src/ease-slide-actor.vala b/src/ease-slide-actor.vala
index 72e3cd4..3c4ba41 100644
--- a/src/ease-slide-actor.vala
+++ b/src/ease-slide-actor.vala
@@ -423,7 +423,7 @@ public class Ease.SlideActor : Clutter.Group
 	 * Starts a transition to a new SlideActor.
 	 *
 	 * This method calls the appropriate method for the current { link Slide}'s
-	 * { link TransitionType}.
+	 * { link Transition}.
 	 *
 	 * @param new_slide The new SlideActor.
 	 * @param container The container that holds the displayed SlideActors.
@@ -437,67 +437,67 @@ public class Ease.SlideActor : Clutter.Group
 
 		switch (slide.transition)
 		{
-			case TransitionType.SLIDE:
+			case Transition.SLIDE:
 				slide_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.DROP:
+			case Transition.DROP:
 				drop_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.PIVOT:
+			case Transition.PIVOT:
 				pivot_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.OPEN_DOOR:
+			case Transition.OPEN_DOOR:
 				open_door_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.REVEAL:
+			case Transition.REVEAL:
 				reveal_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.SLATS:
+			case Transition.SLATS:
 				slats_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.FLIP:
+			case Transition.FLIP:
 				flip_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.REVOLVING_DOOR:
+			case Transition.REVOLVING_DOOR:
 				revolving_door_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.FALL:
+			case Transition.FALL:
 				fall_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.SPIN_CONTENTS:
+			case Transition.SPIN_CONTENTS:
 				spin_contents_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.SWING_CONTENTS:
+			case Transition.SWING_CONTENTS:
 				swing_contents_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.ZOOM:
+			case Transition.ZOOM:
 				zoom_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.SLIDE_CONTENTS:
+			case Transition.SLIDE_CONTENTS:
 				slide_contents_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.SPRING_CONTENTS:
+			case Transition.SPRING_CONTENTS:
 				spring_contents_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.ZOOM_CONTENTS:
+			case Transition.ZOOM_CONTENTS:
 				zoom_contents_transition(new_slide, container, length);
 				break;
 
-			case TransitionType.PANEL:
+			case Transition.PANEL:
 				panel_transition(new_slide, container, length);
 				break;
 				
diff --git a/src/ease-slide.vala b/src/ease-slide.vala
index aefea96..f288128 100644
--- a/src/ease-slide.vala
+++ b/src/ease-slide.vala
@@ -34,7 +34,7 @@ public class Ease.Slide : GLib.Object
 	/**
 	 * The Slide's transition
 	 */
-	public TransitionType transition { get; set; }
+	public Transition transition { get; set; }
 	
 	/**
 	 * The variant (if any) of the Slide's transition
@@ -247,11 +247,11 @@ public class Ease.Slide : GLib.Object
 		var slide = new Slide();
 		
 		// read the slide's transition properties
-		transition =
-			(TransitionType)obj.get_string_member("transition").to_int();
+		transition = Transition.from_string(
+			obj.get_string_member("transition"));
 			
-		variant =
-			(TransitionVariant)obj.get_string_member("variant").to_int();
+		variant = TransitionVariant.from_string(
+			obj.get_string_member("variant"));
 			
 		transition_time = obj.get_string_member("transition_time").to_double();
 			
@@ -315,8 +315,8 @@ public class Ease.Slide : GLib.Object
 		var obj = new Json.Object();
 		
 		// write the slide's transition properties
-		obj.set_string_member("transition", ((int)transition).to_string());
-		obj.set_string_member("variant", ((int)variant).to_string());
+		obj.set_string_member("transition", transition.to_string());
+		obj.set_string_member("variant", variant.to_string());
 		obj.set_string_member("transition_time", transition_time.to_string());
 		obj.set_string_member("automatically_advance",
 		                      automatically_advance.to_string());
diff --git a/src/ease-transition-pane.vala b/src/ease-transition-pane.vala
index b38417c..2177171 100644
--- a/src/ease-transition-pane.vala
+++ b/src/ease-transition-pane.vala
@@ -36,10 +36,16 @@ public class Ease.TransitionPane : InspectorPane
 	private SlideActor new_slide;
 	private Clutter.Timeline preview_alarm;
 	
+	// the old slide, to disconnect handlers
+	private Slide old_slide;
+	
 	// constants
 	private const int PREVIEW_HEIGHT = 150;
 	private const uint PREVIEW_DELAY = 500;
 	
+	// silence undo if needed
+	private bool silence_undo;
+	
 	public TransitionPane()
 	{
 		base();
@@ -64,12 +70,10 @@ public class Ease.TransitionPane : InspectorPane
 		var align = new Gtk.Alignment(0, 0, 0, 0);
 		align.add(new Gtk.Label(_("Effect")));
 		vbox.pack_start(align, false, false, 0);
-		effect = new Gtk.ComboBox.text();
-		for (var i = 0; i < Transitions.size; i++)
-		{
-			effect.append_text(Transitions.get_name(i));
-		}
-		effect.set_active(0);
+		effect = new Gtk.ComboBox.with_model(Transition.model());
+		var render = new Gtk.CellRendererText();
+		effect.pack_start(render, true);
+		effect.set_attributes(render, "text", 0);
 		align = new Gtk.Alignment(0, 0, 1, 1);
 		align.add(effect);
 		vbox.pack_start(align, false, false, 0);
@@ -94,7 +98,10 @@ public class Ease.TransitionPane : InspectorPane
 		align = new Gtk.Alignment(0, 0, 0, 0);
 		align.add(new Gtk.Label(_("Direction")));
 		vbox.pack_start(align, false, false, 0);
-		variant = new Gtk.ComboBox.text();
+		variant = new Gtk.ComboBox();
+		render = new Gtk.CellRendererText();
+		variant.pack_start(render, true);
+		variant.set_attributes(render, "text", 0);
 		variant_align = new Gtk.Alignment(0, 0, 1, 1);
 		variant_align.add(variant);
 		vbox.pack_start(variant_align, false, false, 0);
@@ -130,43 +137,73 @@ public class Ease.TransitionPane : InspectorPane
 		pack_start(hbox, false, false, 5);
 		
 		// signal handlers
-		effect.changed.connect(() => {			
-			// create a new ComboBox
-			variant_align.remove(variant);
-			variant = new Gtk.ComboBox.text();
-			variant_align.add(variant);
-			variant.show();
+		effect.changed.connect((sender) => {
+			// allow the user to undo the change
+			var action = new UndoAction(slide, "transition");
+			action.add(slide, "variant");
+			if (!silence_undo) undo(action);
 			
-			// get the variants for the new transition
-			var variants = Transitions.variants_for_index(effect.active);
+			silence_undo = true;
 			
-			// add the transition's variants
-			for (var i = 0; i < variants.length; i++)
+			// set the transition
+			Gtk.TreeIter itr;
+			if (sender.get_active_iter(out itr))
 			{
-				variant.append_text(Transitions.get_variant_name(variants[i]));
+				Transition transition;
+				sender.model.get(itr, 1, out transition);
+				slide.transition = transition;
 			}
+			else
+			{
+				critical("Transition not found in model");
+			}
+				
+			// get the variants for the new transition
+			variant.model = slide.transition.variant_model();
 			
 			// if the slide has variants, make the appropriate one active
-			for (int i = 0; i < variants.length; i++)
+			if (variant.model.get_iter_first(out itr))
 			{
-				if (variants[i] == slide.variant)
+				TransitionVariant v;
+				do
 				{
-					variant.set_active(i);
-					break;
+					variant.model.get(itr, 1, out v);
+					if (v == slide.variant)
+					{
+						variant.set_active_iter(itr);
+						silence_undo = false;
+						return;
+					}
 				}
+				while (variant.model.iter_next(ref itr));
+				
+				// if none was set, set the variant to the first item
+				variant.model.get_iter_first(out itr);
+				variant.set_active_iter(itr);
 			}
 			
-			// set the transition
-			slide.transition = Transitions.transition_for_index(effect.active);
+			silence_undo = false;
+		});
+		
+		// allow the user to change the variant
+		variant.changed.connect((sender) => {
+			if (!silence_undo) undo(new UndoAction(slide, "variant"));
 			
-			// allow the user to change the variant
-			variant.changed.connect(() => {
-				var v = Transitions.variants_for_transition(slide.transition);
-				slide.variant = v[variant.active];
-			});
+			Gtk.TreeIter itr;
+			if (sender.get_active_iter(out itr))
+			{
+				TransitionVariant variant;
+				sender.model.get(itr, 1, out variant);
+				slide.variant = variant;
+			}
+			else
+			{
+				critical("Variant not found in model");
+			}
 		});
 		
 		start_transition.changed.connect(() => {
+			if (!silence_undo) undo(new UndoAction(slide, "start-transition"));
 			if (start_transition.active == 0)
 			{
 				delay.sensitive = false;
@@ -180,10 +217,12 @@ public class Ease.TransitionPane : InspectorPane
 		});
 		
 		transition_time.value_changed.connect(() => {
+			if (!silence_undo) undo(new UndoAction(slide, "transition-time"));
 			slide.transition_time = transition_time.get_value();
 		});
 		
 		delay.value_changed.connect(() => {
+			if (!silence_undo) undo(new UndoAction(slide, "advance-delay"));
 			slide.advance_delay = delay.get_value();
 		});
 		
@@ -243,14 +282,123 @@ public class Ease.TransitionPane : InspectorPane
 		preview_alarm.start();
 	}
 	
+	private void on_slide_notify(GLib.Object obj, GLib.ParamSpec spec)
+	{
+		silence_undo = true;
+		Gtk.TreeIter itr;
+		switch (spec.name)
+		{
+			case "transition":
+				if (effect.model.get_iter_first(out itr))
+				{
+					bool set = false;
+					Transition t;
+					do
+					{
+						effect.model.get(itr, 1, out t);
+						if (t == slide.transition)
+						{
+							effect.set_active_iter(itr);
+							set = true;
+							break;
+						}
+					}
+					while (effect.model.iter_next(ref itr));
+			
+					// if none was set, set the variant to the first item
+					if (!set)
+					{
+						effect.model.get_iter_first(out itr);
+						effect.set_active_iter(itr);
+					}
+				}
+				break;
+			case "variant":
+				if (variant.model.get_iter_first(out itr))
+				{
+					TransitionVariant v;
+					do
+					{
+						variant.model.get(itr, 1, out v);
+						if (v == slide.variant)
+						{
+							variant.set_active_iter(itr);
+							return;
+						}
+					}
+					while (variant.model.iter_next(ref itr));
+				
+					// if none was set, set the variant to the first item
+					variant.model.get_iter_first(out itr);
+					variant.set_active_iter(itr);
+				}
+				break;
+			case "transition-time":
+				transition_time.set_value(slide.transition_time);
+				break;
+			case "advance-delay":
+				delay.set_value(slide.advance_delay);
+				break;
+			case "start-transition":
+				start_transition.set_active(slide.automatically_advance ?
+				                            1 : 0);
+				delay.set_value(slide.advance_delay);
+				delay.sensitive = slide.automatically_advance;
+				break;
+		}
+		silence_undo = false;
+	}
+	
 	protected override void slide_updated()
 	{
+		silence_undo = true;
+		
+		// disconnect old signal handlers
+		if (old_slide != null)
+		{
+			old_slide.notify["transition-time"].disconnect(on_slide_notify);
+			old_slide.notify["variant"].disconnect(on_slide_notify);
+			old_slide.notify["transition"].disconnect(on_slide_notify);
+			old_slide.notify["advance-delay"].disconnect(on_slide_notify);
+			old_slide.notify["start-transition"].disconnect(on_slide_notify);
+		}
+		old_slide = slide;
+		
+		// connect new signal handlers
+		slide.notify["transition-time"].connect(on_slide_notify);
+		slide.notify["variant"].connect(on_slide_notify);
+		slide.notify["transition"].connect(on_slide_notify);
+		slide.notify["advance-delay"].connect(on_slide_notify);
+		slide.notify["start-transition"].connect(on_slide_notify);
+		
 		// set transition time box
 		transition_time.set_value(slide.transition_time);
 		
 		// set effect and variant combo boxes
-		var index = Transitions.get_index(slide.transition);
-		effect.set_active(index);
+		Gtk.TreeIter itr;
+		if (effect.model.get_iter_first(out itr))
+		{
+			bool set = false;
+			Transition t;
+			do
+			{
+				effect.model.get(itr, 1, out t);
+				if (t == slide.transition)
+				{
+					effect.set_active_iter(itr);
+					set = true;
+					break;
+				}
+			}
+			while (effect.model.iter_next(ref itr));
+			
+			// if none was set, set the variant to the first item
+			if (!set)
+			{
+				effect.model.get_iter_first(out itr);
+				effect.set_active_iter(itr);
+			}
+		}
 		
 		// set the automatic advance boxes
 		start_transition.set_active(slide.automatically_advance ? 1 : 0);
@@ -283,6 +431,8 @@ public class Ease.TransitionPane : InspectorPane
 			preview_alarm.stop();
 		}
 		animate_preview();
+		
+		silence_undo = false;
 	}
 }
 
diff --git a/src/ease-transitions.vala b/src/ease-transitions.vala
index 8bff24d..cc81e1f 100644
--- a/src/ease-transitions.vala
+++ b/src/ease-transitions.vala
@@ -16,139 +16,300 @@
 */
 
 /**
- * A static class containing all Ease transitions
- * 
- * The transition class is initialized at program start. It contains
- * information about each transition and each transition's variants.
+ * All transitions available in Ease
  */
-public static class Ease.Transitions : GLib.Object
+public enum Ease.Transition
 {
-	private static Transition[] transitions;
+	NONE,
+	FADE,
+	SLIDE,
+	DROP,
+	PIVOT,
+	FLIP,
+	REVOLVING_DOOR,
+	REVEAL,
+	FALL,
+	SLATS,
+	OPEN_DOOR,
+	ZOOM,
+	PANEL,
+	SPIN_CONTENTS,
+	SPRING_CONTENTS,
+	SWING_CONTENTS,
+	SLIDE_CONTENTS,
+	ZOOM_CONTENTS;
 	
-	public static int size { get { return transitions.length; } }
+	// TODO: get rid of this, there is a vala bug for foreach on enums
+	private const Transition[] TRANSITIONS = { NONE,
+		                                       FADE,
+		                                       SLIDE,
+		                                       DROP,
+		                                       PIVOT,
+		                                       FLIP,
+		                                       REVOLVING_DOOR,
+		                                       REVEAL,
+		                                       FALL,
+		                                       SLATS,
+		                                       OPEN_DOOR,
+		                                       ZOOM,
+		                                       PANEL,
+		                                       SPIN_CONTENTS,
+		                                       SPRING_CONTENTS,
+		                                       SWING_CONTENTS,
+		                                       SLIDE_CONTENTS,
+		                                       ZOOM_CONTENTS };
 	
-	public static void init()
+	public static Gtk.ListStore model()
 	{
-		transitions = {
-			Transition() { type = TransitionType.NONE, variants = {} },
-			Transition() { type = TransitionType.FADE, variants = {} },
-			Transition() { type = TransitionType.SLIDE,
-			               variants =  { TransitionVariant.UP,
-	                                     TransitionVariant.DOWN,
-	                                     TransitionVariant.LEFT,
-	                                     TransitionVariant.RIGHT } },
-			Transition() { type = TransitionType.DROP, variants = {} },
-			Transition() { type = TransitionType.PIVOT,
-				           variants = { TransitionVariant.TOP_LEFT,
-				                        TransitionVariant.TOP_RIGHT,
-				                        TransitionVariant.BOTTOM_LEFT,
-				                        TransitionVariant.BOTTOM_RIGHT } },
-			Transition() { type = TransitionType.FLIP,
-				           variants = { TransitionVariant.TOP_TO_BOTTOM,
-				                        TransitionVariant.BOTTOM_TO_TOP,
-				                        TransitionVariant.LEFT_TO_RIGHT,
-				                        TransitionVariant.RIGHT_TO_LEFT } },
-			Transition() { type = TransitionType.REVOLVING_DOOR,
-				           variants =  { TransitionVariant.UP,
-	                                     TransitionVariant.DOWN,
-	                                     TransitionVariant.LEFT,
-	                                     TransitionVariant.RIGHT } },
-			Transition() { type = TransitionType.REVEAL,
-			               variants =  { TransitionVariant.UP,
-	                                     TransitionVariant.DOWN,
-	                                     TransitionVariant.LEFT,
-	                                     TransitionVariant.RIGHT } },
-			Transition() { type = TransitionType.FALL, variants = {} },
-			Transition() { type = TransitionType.SLATS, variants = {} },
-			Transition() { type = TransitionType.OPEN_DOOR, variants = {} },
-			Transition() { type = TransitionType.ZOOM,
-				           variants = { TransitionVariant.CENTER,
-				                        TransitionVariant.TOP_LEFT,
-				                        TransitionVariant.TOP_RIGHT,
-				                        TransitionVariant.BOTTOM_LEFT,
-				                        TransitionVariant.BOTTOM_RIGHT } },
-			Transition() { type = TransitionType.PANEL,
-			               variants =  { TransitionVariant.UP,
-	                                     TransitionVariant.DOWN,
-	                                     TransitionVariant.LEFT,
-	                                     TransitionVariant.RIGHT } },
-			Transition() { type = TransitionType.SPIN_CONTENTS,
-				           variants = { TransitionVariant.LEFT,
-				                        TransitionVariant.RIGHT } },
-			Transition() { type = TransitionType.SWING_CONTENTS,
-			               variants = {} },
-			Transition() { type = TransitionType.SLIDE_CONTENTS,
-				           variants =  { TransitionVariant.UP,
-	                                     TransitionVariant.DOWN,
-	                                     TransitionVariant.LEFT,
-	                                     TransitionVariant.RIGHT } },
-			Transition() { type = TransitionType.SPRING_CONTENTS,
-				           variants = { TransitionVariant.UP,
-				                        TransitionVariant.DOWN } },
-			Transition() { type = TransitionType.ZOOM_CONTENTS,
-				           variants = { TransitionVariant.IN,
-				                        TransitionVariant.OUT } }
-		};
+		var store = new Gtk.ListStore(2, typeof(string), typeof(Transition));
+		Gtk.TreeIter itr;
+		for(int i = 0; i < TRANSITIONS.length; i++)
+		{
+			store.append(out itr);
+			store.set(itr, 0, TRANSITIONS[i].get_name(), 1, TRANSITIONS[i]);
+		}
+		
+		return store;
+	}
+	
+	public Gtk.ListStore variant_model()
+	{
+		var store = new Gtk.ListStore(2, typeof(string),
+		                                 typeof(TransitionVariant));
+		Gtk.TreeIter itr;
+		foreach (var variant in this.variants())
+		{
+			store.append(out itr);
+			store.set(itr, 0, variant.get_name(), 1, variant);
+		}
+		
+		return store;
+	}
+	
+	public static Transition from_string(string str)
+	{
+		switch (str)
+		{
+			case "EASE_TRANSITION_NONE":
+				return NONE;
+			case "EASE_TRANSITION_FADE":
+				return FADE;
+			case "EASE_TRANSITION_SLIDE":
+				return SLIDE;
+			case "EASE_TRANSITION_DROP":
+				return DROP;
+			case "EASE_TRANSITION_PIVOT":
+				return PIVOT;
+			case "EASE_TRANSITION_FLIP":
+				return FLIP;
+			case "EASE_TRANSITION_REVOLVING_DOOR":
+				return REVOLVING_DOOR;
+			case "EASE_TRANSITION_REVEAL":
+				return REVEAL;
+			case "EASE_TRANSITION_FALL":
+				return FALL;
+			case "EASE_TRANSITION_SLATS":
+				return SLATS;
+			case "EASE_TRANSITION_OPEN_DOOR":
+				return OPEN_DOOR;
+			case "EASE_TRANSITION_ZOOM":
+				return ZOOM;
+			case "EASE_TRANSITION_PANEL":
+				return PANEL;
+			case "EASE_TRANSITION_SPIN_CONTENTS":
+				return SPIN_CONTENTS;
+			case "EASE_TRANSITION_SPRING_CONTENTS":
+				return SPRING_CONTENTS;
+			case "EASE_TRANSITION_SWING_CONTENTS":
+				return SWING_CONTENTS;
+			case "EASE_TRANSITION_SLIDE_CONTENTS":
+				return SLIDE_CONTENTS;
+			case "EASE_TRANSITION_ZOOM_CONTENTS":
+				return ZOOM_CONTENTS;
+			default:
+				critical("Invalid transition string: %s", str);
+				return NONE;
+		}
+	}
+	
+	public TransitionVariant[] variants()
+	{
+		switch (this)
+		{
+			case Transition.NONE:
+			case Transition.FADE:
+			case Transition.DROP:
+			case Transition.FALL:
+			case Transition.SLATS:
+			case Transition.OPEN_DOOR:
+			case Transition.SWING_CONTENTS:
+				return {};
+			
+			case Transition.REVOLVING_DOOR:
+			case Transition.REVEAL:
+			case Transition.SLIDE:
+			case Transition.PANEL:
+			case Transition.SLIDE_CONTENTS:
+				return { TransitionVariant.LEFT,
+				         TransitionVariant.RIGHT,
+				         TransitionVariant.UP,
+				         TransitionVariant.DOWN };
+			
+			
+			case Transition.PIVOT:
+				return { TransitionVariant.TOP_LEFT,
+				         TransitionVariant.TOP_RIGHT,
+				         TransitionVariant.BOTTOM_LEFT,
+				         TransitionVariant.BOTTOM_RIGHT };
+				         
+			case Transition.FLIP:
+				return { TransitionVariant.LEFT_TO_RIGHT,
+				         TransitionVariant.RIGHT_TO_LEFT,
+				         TransitionVariant.TOP_TO_BOTTOM,
+				         TransitionVariant.BOTTOM_TO_TOP };
+			
+			case Transition.ZOOM:
+				return { TransitionVariant.CENTER,
+				         TransitionVariant.TOP_LEFT,
+				         TransitionVariant.TOP_RIGHT,
+				         TransitionVariant.BOTTOM_LEFT,
+				         TransitionVariant.BOTTOM_RIGHT };
+
+			case Transition.SPIN_CONTENTS:
+				return { TransitionVariant.LEFT,
+				         TransitionVariant.RIGHT };
+			
+			case Transition.SPRING_CONTENTS:
+				return { TransitionVariant.UP,
+				         TransitionVariant.DOWN };
+				         
+			case Transition.ZOOM_CONTENTS:
+				return { TransitionVariant.IN,
+				         TransitionVariant.OUT };
+			
+			default:
+				critical("Undefined transition %i", this);
+				return {};
+		}
 	}
 	
-	/**
-	 * Returns the string name of a transition.
-	 *
-	 * @param type The { link TransitionType} to find a name for.
-	 */
-	public static string get_name(TransitionType type)
+	public string get_name()
 	{
-		switch (type)
+		switch (this)
 		{
-			case TransitionType.NONE:
+			case Transition.NONE:
 				return _("None");
-			case TransitionType.FADE:
+			case Transition.FADE:
 				return _("Fade");
-			case TransitionType.SLIDE:
+			case Transition.SLIDE:
 				return _("Slide");
-			case TransitionType.DROP:
+			case Transition.DROP:
 				return _("Drop");
-			case TransitionType.PIVOT:
+			case Transition.PIVOT:
 				return _("Pivot");
-			case TransitionType.FLIP:
+			case Transition.FLIP:
 				return _("Flip");
-			case TransitionType.REVOLVING_DOOR:
+			case Transition.REVOLVING_DOOR:
 				return _("Revolving Door");
-			case TransitionType.REVEAL:
+			case Transition.REVEAL:
 				return _("Reveal");
-			case TransitionType.FALL:
+			case Transition.FALL:
 				return _("Fall");
-			case TransitionType.SLATS:
+			case Transition.SLATS:
 				return _("Slats");
-			case TransitionType.OPEN_DOOR:
+			case Transition.OPEN_DOOR:
 				return _("Open Door");
-			case TransitionType.ZOOM:
+			case Transition.ZOOM:
 				return _("Zoom");
-			case TransitionType.PANEL:
+			case Transition.PANEL:
 				return _("Panel");
-			case TransitionType.SPIN_CONTENTS:
+			case Transition.SPIN_CONTENTS:
 				return _("Spin Contents");
-			case TransitionType.SPRING_CONTENTS:
+			case Transition.SPRING_CONTENTS:
 				return _("Spring Contents");
-			case TransitionType.SWING_CONTENTS:
+			case Transition.SWING_CONTENTS:
 				return _("Swing Contents");
-			case TransitionType.SLIDE_CONTENTS:
+			case Transition.SLIDE_CONTENTS:
 				return _("Slide Contents");
-			case TransitionType.ZOOM_CONTENTS:
+			case Transition.ZOOM_CONTENTS:
 				return _("Zoom Contents");
 			default:
+				critical("Undefined transition %i", this);
 				return _("Undefined");
 		}
 	}
+}
+
+/**
+ * All transition variants available in Ease. Each transition uses a subset.
+ */
+public enum Ease.TransitionVariant
+{
+	UP,
+	DOWN,
+	LEFT,
+	RIGHT,
+	BOTTOM,
+	TOP,
+	CENTER,
+	TOP_LEFT,
+	TOP_RIGHT,
+	BOTTOM_LEFT,
+	BOTTOM_RIGHT,
+	TOP_TO_BOTTOM,
+	BOTTOM_TO_TOP,
+	LEFT_TO_RIGHT,
+	RIGHT_TO_LEFT,
+	IN,
+	OUT;
+	
+	public static TransitionVariant from_string(string str)
+	{
+		switch (str)
+		{
+			case "EASE_TRANSITION_VARIANT_UP":
+				return UP;
+			case "EASE_TRANSITION_VARIANT_DOWN":
+				return DOWN;
+			case "EASE_TRANSITION_VARIANT_LEFT":
+				return LEFT;
+			case "EASE_TRANSITION_VARIANT_RIGHT":
+				return RIGHT;
+			case "EASE_TRANSITION_VARIANT_BOTTOM":
+				return BOTTOM;
+			case "EASE_TRANSITION_VARIANT_TOP":
+				return TOP;
+			case "EASE_TRANSITION_VARIANT_CENTER":
+				return CENTER;
+			case "EASE_TRANSITION_VARIANT_TOP_LEFT":
+				return TOP_LEFT;
+			case "EASE_TRANSITION_VARIANT_TOP_RIGHT":
+				return TOP_RIGHT;
+			case "EASE_TRANSITION_VARIANT_BOTTOM_LEFT":
+				return BOTTOM_LEFT;
+			case "EASE_TRANSITION_VARIANT_BOTTOM_RIGHT":
+				return BOTTOM_RIGHT;
+			case "EASE_TRANSITION_VARIANT_TOP_TO_BOTTOM":
+				return TOP_TO_BOTTOM;
+			case "EASE_TRANSITION_VARIANT_BOTTOM_TO_TOP":
+				return BOTTOM_TO_TOP;
+			case "EASE_TRANSITION_VARIANT_LEFT_TO_RIGHT":
+				return LEFT_TO_RIGHT;
+			case "EASE_TRANSITION_VARIANT_RIGHT_TO_LEFT":
+				return RIGHT_TO_LEFT;
+			case "EASE_TRANSITION_VARIANT_IN":
+				return IN;
+			case "EASE_TRANSITION_VARIANT_OUT":
+				return OUT;
+			default:
+				critical("Invalid transition variant: %s", str);
+				return UP;
+		}
+	}
 	
-	/**
-	 * Returns the string name of a variant.
-	 *
-	 * @param variant The { link TransitionVariant} to find a name for.
-	 */
-	public static string get_variant_name(TransitionVariant variant)
+	public string get_name()
 	{
-		switch (variant)
+		switch (this)
 		{
 			case TransitionVariant.UP:
 				return _("Up");
@@ -185,185 +346,9 @@ public static class Ease.Transitions : GLib.Object
 			case TransitionVariant.OUT:
 				return _("Out");
 			default:
+				critical("Undefined variant: %i", this);
 				return _("Undefined");
 		}
 	}
-	
-	/**
-	 * Returns a { link Transition} struct for the given { link TransitionType}.
-	 *
-	 * @param type The { link TransitionType} to find the transition for.
-	 */
-	public static Transition? get_transition(TransitionType type)
-	{
-		for (int i = 0; i < transitions.length; i++)
-		{
-			if (transitions[i].type == type)
-			{
-				return transitions[i];
-			}
-		}
-		
-		return null;
-	}
-	
-	/**
-	 * Returns the index of the given { link TransitionType}.
-	 *
-	 * @param type The { link TransitionType} to find the index of.
-	 */
-	public static int? get_index(TransitionType type)
-	{
-		for (int i = 0; i < transitions.length; i++)
-		{
-			if (transitions[i].type == type)
-			{
-				return i;
-			}
-		}
-		
-		return null;
-	}
-	
-	/**
-	 * Returns the { link TransitionType} for a given index.
-	 *
-	 * @param index The index to find the { link TransitionType} of.
-	 */
-	public static TransitionType transition_for_index(int index)
-	{
-		return transitions[index].type;
-	}
-	
-	/**
-	 * Returns the variants for a given index.
-	 *
-	 * @param index The index to find the variants of.
-	 */
-	public static TransitionVariant[] variants_for_index(int index)
-	{
-		return transitions[index].variants;
-	}
-	
-	/**
-	 * Returns the variants of a given { link TransitionType}.
-	 *
-	 * @param t The { link TransitionType} to find the variants of.
-	 */
-	public static TransitionVariant[] variants_for_transition(TransitionType t)
-	{
-		return variants_for_index(get_index(t));
-	}
-	
-	/**
-	 * Returns the names of all transitions.
-	 */
-	public static string[] names()
-	{
-		var names = new string[transitions.length];
-		
-		for (int i = 0; i < transitions.length; i++)
-		{
-			names[i] = get_name(transitions[i].type);
-		}
-		
-		return names;
-	}
-	
-	/**
-	 * Returns a specific transition name
-	 *
-	 * @param index The index of the transition to find the name of.
-	 */
-	public static string name(int index)
-	{
-		return get_name(transitions[index].type);
-	}
-	
-	/**
-	 * Runs a test print of all transitions and variants.
-	 */
-	public static void test()
-	{
-		stdout.printf("%i Transitions:\n", (int)transitions.length);
-		
-		for (int i = 0; i < transitions.length; i++)
-		{
-			stdout.printf("\t%s has %i variants:\n",
-			              get_name(transitions[i].type),
-			              transitions[i].variants.length);
-			
-			for (int j = 0; j < transitions[i].variants.length; j++)
-			{
-				stdout.printf("\t\t%s\n",
-				              get_variant_name(transitions[i].variants[j]));
-			}
-		}
-	}
-}
-
-/** 
- * The representation of a transition and its possible variants.
- */
-public struct Ease.Transition
-{
-	/**
-	 * The specific transition.
-	 */
-	public TransitionType type;
-	
-	/**
-	 * The variants of the transition (if any).
-	 */
-	public TransitionVariant[] variants;
-}
-
-/**
- * All transitions available in Ease
- */
-public enum Ease.TransitionType
-{
-	NONE,
-	FADE,
-	SLIDE,
-	DROP,
-	PIVOT,
-	FLIP,
-	REVOLVING_DOOR,
-	REVEAL,
-	FALL,
-	SLATS,
-	OPEN_DOOR,
-	ZOOM,
-	PANEL,
-	SPIN_CONTENTS,
-	SPRING_CONTENTS,
-	SWING_CONTENTS,
-	SLIDE_CONTENTS,
-	ZOOM_CONTENTS,
-}
-
-/**
- * All transition variants available in Ease. Each transition uses a subset.
- */
-public enum Ease.TransitionVariant
-{
-	UP,
-	DOWN,
-	LEFT,
-	RIGHT,
-	BOTTOM,
-	TOP,
-	CENTER,
-	TOP_LEFT,
-	TOP_RIGHT,
-	BOTTOM_LEFT,
-	BOTTOM_RIGHT,
-	TOP_TO_BOTTOM,
-	BOTTOM_TO_TOP,
-	LEFT_TO_RIGHT,
-	RIGHT_TO_LEFT,
-	IN,
-	OUT
 }
 
diff --git a/src/main.vala b/src/main.vala
index d70b33a..496a266 100644
--- a/src/main.vala
+++ b/src/main.vala
@@ -80,7 +80,6 @@ public static class Ease.Main : GLib.Object
 		}
 
 		// initalize static classes
-		Transitions.init();
 		windows = new Gee.ArrayList<EditorWindow>();
 		
 		// Clutter settings



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