[ease/themes: 2/2] Added basic prequisites for theme support:



commit 91767d6438291660351b5e27d571e0f35802fcc4
Author: Nate Stedman <natesm gmail com>
Date:   Thu Jun 3 05:01:19 2010 -0400

    Added basic prequisites for theme support:
    
    - identifiers and slide titles in Document.json
    - properties for these in Slide and Element
    - parsing ability in JSONParser
    - the beginnings of a theme file

 Examples/Transitions.ease/Document.json |   92 ++++++++++++++++++++++++------
 src/Element.vala                        |    9 +++
 src/JSONParser.vala                     |   47 ++++++++++++++--
 src/Slide.vala                          |    5 ++
 themes/White.easetheme/Theme.json       |   52 +++++++++++++++++
 5 files changed, 180 insertions(+), 25 deletions(-)
---
diff --git a/Examples/Transitions.ease/Document.json b/Examples/Transitions.ease/Document.json
index a202181..b4a3ece 100644
--- a/Examples/Transitions.ease/Document.json
+++ b/Examples/Transitions.ease/Document.json
@@ -3,9 +3,9 @@
   "slides" : [
     {
       "transition" : "1",
-      "automatically_advance" : "true",
       "green" : "34",
       "variant" : "0",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -16,6 +16,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -34,6 +35,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -46,14 +48,15 @@
         }
       ],
       "blue" : "34",
+      "title" : "Standard",
       "red" : "34",
       "transition_time" : "1"
     },
     {
       "transition" : "2",
-      "automatically_advance" : "true",
       "green" : "255",
       "variant" : "2",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -64,6 +67,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -82,6 +86,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -94,14 +99,15 @@
         }
       ],
       "blue" : "255",
+      "title" : "Standard",
       "red" : "255",
       "transition_time" : "1"
     },
     {
       "transition" : "3",
-      "automatically_advance" : "true",
       "green" : "34",
       "variant" : "0",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -112,6 +118,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -130,6 +137,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -142,14 +150,15 @@
         }
       ],
       "blue" : "34",
+      "title" : "Standard",
       "red" : "34",
       "transition_time" : "1"
     },
     {
       "transition" : "4",
-      "automatically_advance" : "true",
       "green" : "255",
       "variant" : "7",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -160,6 +169,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -178,6 +188,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -190,14 +201,15 @@
         }
       ],
       "blue" : "255",
+      "title" : "Standard",
       "red" : "255",
       "transition_time" : "1"
     },
     {
       "transition" : "5",
-      "automatically_advance" : "true",
       "green" : "34",
       "variant" : "13",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -208,6 +220,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -226,6 +239,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -238,14 +252,15 @@
         }
       ],
       "blue" : "34",
+      "title" : "Standard",
       "red" : "34",
       "transition_time" : "1"
     },
     {
       "transition" : "6",
-      "automatically_advance" : "true",
       "green" : "255",
       "variant" : "2",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -256,6 +271,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -274,6 +290,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -286,14 +303,15 @@
         }
       ],
       "blue" : "255",
+      "title" : "Standard",
       "red" : "255",
       "transition_time" : "1"
     },
     {
       "transition" : "7",
-      "automatically_advance" : "true",
       "green" : "34",
       "variant" : "0",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -304,6 +322,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -322,6 +341,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -334,14 +354,15 @@
         }
       ],
       "blue" : "34",
+      "title" : "Standard",
       "red" : "34",
       "transition_time" : "1"
     },
     {
       "transition" : "8",
-      "automatically_advance" : "true",
       "green" : "255",
       "variant" : "0",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -352,6 +373,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -370,6 +392,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -382,14 +405,15 @@
         }
       ],
       "blue" : "255",
+      "title" : "Standard",
       "red" : "255",
       "transition_time" : "1"
     },
     {
       "transition" : "10",
-      "automatically_advance" : "true",
       "green" : "34",
       "variant" : "0",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -400,6 +424,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -418,6 +443,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -430,14 +456,15 @@
         }
       ],
       "blue" : "34",
+      "title" : "Standard",
       "red" : "34",
       "transition_time" : "1"
     },
     {
       "transition" : "11",
-      "automatically_advance" : "true",
       "green" : "255",
       "variant" : "6",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -448,6 +475,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -466,6 +494,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -478,14 +507,15 @@
         }
       ],
       "blue" : "255",
+      "title" : "Standard",
       "red" : "255",
       "transition_time" : "1"
     },
     {
       "transition" : "12",
-      "automatically_advance" : "true",
       "green" : "34",
       "variant" : "0",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -496,6 +526,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -514,6 +545,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -526,14 +558,15 @@
         }
       ],
       "blue" : "34",
+      "title" : "Standard",
       "red" : "34",
       "transition_time" : "1"
     },
     {
       "transition" : "13",
-      "automatically_advance" : "true",
       "green" : "255",
       "variant" : "2",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -544,6 +577,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -562,6 +596,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -574,14 +609,15 @@
         }
       ],
       "blue" : "255",
+      "title" : "Standard",
       "red" : "255",
       "transition_time" : "1"
     },
     {
       "transition" : "15",
-      "automatically_advance" : "true",
       "green" : "34",
       "variant" : "0",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -592,6 +628,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -610,6 +647,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -622,14 +660,15 @@
         }
       ],
       "blue" : "34",
+      "title" : "Standard",
       "red" : "34",
       "transition_time" : "1"
     },
     {
       "transition" : "16",
-      "automatically_advance" : "true",
       "green" : "255",
       "variant" : "0",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -640,6 +679,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -658,6 +698,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -670,14 +711,15 @@
         }
       ],
       "blue" : "255",
+      "title" : "Standard",
       "red" : "255",
       "transition_time" : "1"
     },
     {
       "transition" : "14",
-      "automatically_advance" : "true",
       "green" : "34",
       "variant" : "0",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -688,6 +730,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -706,6 +749,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -718,14 +762,15 @@
         }
       ],
       "blue" : "34",
+      "title" : "Standard",
       "red" : "34",
       "transition_time" : "1"
     },
     {
       "transition" : "17",
-      "automatically_advance" : "true",
       "green" : "255",
       "variant" : "15",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -736,6 +781,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -754,6 +800,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -766,14 +813,15 @@
         }
       ],
       "blue" : "255",
+      "title" : "Standard",
       "red" : "255",
       "transition_time" : "1"
     },
     {
       "transition" : "0",
-      "automatically_advance" : "true",
       "green" : "34",
       "variant" : "0",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -784,6 +832,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -802,6 +851,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "255",
           "align" : "left",
           "width" : "964",
@@ -814,14 +864,15 @@
         }
       ],
       "blue" : "34",
+      "title" : "Standard",
       "red" : "34",
       "transition_time" : "1"
     },
     {
       "transition" : "0",
-      "automatically_advance" : "true",
       "green" : "255",
       "variant" : "0",
+      "automatically_advance" : "true",
       "advance_delay" : "0.5",
       "elements" : [
         {
@@ -832,6 +883,7 @@
           "font_style" : "Normal",
           "text" : "Lorem Ipsum Dolor",
           "element_type" : "text",
+          "identifier" : "header",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -850,6 +902,7 @@
           "font_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_type" : "text",
+          "identifier" : "main-text",
           "green" : "34",
           "align" : "left",
           "width" : "964",
@@ -862,9 +915,10 @@
         }
       ],
       "blue" : "255",
+      "title" : "Standard",
       "red" : "255",
       "transition_time" : "1"
     }
   ],
   "width" : "1024"
-}
+}
\ No newline at end of file
diff --git a/src/Element.vala b/src/Element.vala
index fed40a1..7e94d9b 100644
--- a/src/Element.vala
+++ b/src/Element.vala
@@ -236,6 +236,15 @@ public class Ease.Element : GLib.Object
 	}
 	
 	/**
+	 * The Element's identifier on its master { link Slide}
+	 */
+	public string identifier
+	{
+		owned get { return data.get("identifier"); }
+		set	{ data.set("identifier", value); }
+	}
+	
+	/**
 	 * The X position of this Element.
 	 */
 	public float x
diff --git a/src/JSONParser.vala b/src/JSONParser.vala
index a197da1..59fdb33 100644
--- a/src/JSONParser.vala
+++ b/src/JSONParser.vala
@@ -21,7 +21,7 @@
 public static class Ease.JSONParser
 {
 	/**
-	 * Parses a JSON file, creating a { link Document}.
+	 * Parses a document JSON file, creating a { link Document}.
 	 *
 	 * @param filename The filename of the { link Document}
 	 */
@@ -33,7 +33,7 @@ public static class Ease.JSONParser
 		var parser = new Json.Parser();
 		
 		// attempt to load the file
-		parser.load_from_file(filename + "/Document.json");
+		parser.load_from_file(Path.build_path("/", filename, "Document.json"));
 		
 		// grab the root object
 		var root = parser.get_root().get_object();
@@ -48,13 +48,45 @@ public static class Ease.JSONParser
 		for (var i = 0; i < slides.get_length(); i++)
 		{
 			var node = slides.get_object_element(i);
-			document.add_slide(document.length, document_parse_slide(node));
+			document.add_slide(document.length, parse_slide(node));
 		}
 		
 		return document;
 	}
 	
-	private static Slide document_parse_slide(Json.Object obj)
+	/**
+	 * Parses a theme JSON file, creating a { link Theme}.
+	 *
+	 * @param filename The path to the { link Theme}
+	 */
+	public static Theme theme(string filename) throws GLib.Error
+	{
+		var theme = new Theme();
+	
+		var parser = new Json.Parser();
+		
+		// attempt to load the file
+		parser.load_from_file(Path.build_path("/", filename, "Theme.json"));
+		
+		// grab the root object
+		var root = parser.get_root().get_object();
+		
+		// set document properties
+		theme.title = root.get_string_member("title");
+		
+		// add all slides
+		var slides = root.get_array_member("slides");
+		
+		for (var i = 0; i < slides.get_length(); i++)
+		{
+			var node = slides.get_object_element(i);
+			theme.add_slide(theme.length, parse_slide(node));
+		}
+		
+		return theme;
+	}
+	
+	private static Slide parse_slide(Json.Object obj)
 	{
 		var slide = new Slide();
 		
@@ -74,6 +106,8 @@ public static class Ease.JSONParser
 		slide.advance_delay =
 			obj.get_string_member("advance_delay").to_double();
 		
+		slide.title = obj.get_string_member("title");
+		
 		// read the slide's background properties
 		if (obj.has_member("background_image"))
 		{
@@ -99,13 +133,13 @@ public static class Ease.JSONParser
 		for (var i = 0; i < elements.get_length(); i++)
 		{
 			var node = elements.get_object_element(i);
-			slide.add_element(slide.count, document_parse_element(node));
+			slide.add_element(slide.count, parse_element(node));
 		}
 		
 		return slide;
 	}
 	
-	private static Element document_parse_element(Json.Object obj)
+	private static Element parse_element(Json.Object obj)
 	{
 		var element = new Element();
 		
@@ -168,6 +202,7 @@ public static class Ease.JSONParser
 		                      slide.automatically_advance.to_string());
 		obj.set_string_member("advance_delay",
 		                      slide.advance_delay.to_string());
+		obj.set_string_member("title", slide.title);
 		
 		// write the slide's background properties
 		if (slide.background_image != null)
diff --git a/src/Slide.vala b/src/Slide.vala
index ae72741..6e5c8b5 100644
--- a/src/Slide.vala
+++ b/src/Slide.vala
@@ -82,6 +82,11 @@ public class Ease.Slide
 	}
 	
 	/**
+	 * The title of this Slide's master (unless the Slide is a master itself)
+	 */
+	public string title { get; set; }
+	
+	/**
 	 * The { link Document} that this Slide is part of
 	 */
 	public Document parent { get; set; }
diff --git a/themes/White.easetheme/Theme.json b/themes/White.easetheme/Theme.json
new file mode 100644
index 0000000..124b819
--- /dev/null
+++ b/themes/White.easetheme/Theme.json
@@ -0,0 +1,52 @@
+{
+  "title" : "White",
+  "slides" : [
+    {
+      "transition" : "1",
+      "green" : "255",
+      "variant" : "0",
+      "elements" : [
+        {
+          "font_variant" : "Normal",
+          "y" : "0.05",
+          "x" : "0.05",
+          "height" : "0.1",
+          "font_style" : "Normal",
+          "element_type" : "text",
+          "identifier" : "header",
+          "green" : "0",
+          "align" : "left",
+          "width" : "0.9",
+          "blue" : "0",
+          "font_weight" : "900",
+          "red" : "0",
+          "ease_name" : "header",
+          "font_name" : "Sans",
+          "font_size" : "36"
+        },
+        {
+          "font_variant" : "Normal",
+          "y" : "0.2",
+          "x" : "0.05",
+          "height" : "0.75",
+          "font_style" : "Normal",
+          "element_type" : "text",
+          "identifier" : "main-text",
+          "green" : "0",
+          "align" : "left",
+          "width" : "0.9",
+          "blue" : "0",
+          "font_weight" : "500",
+          "red" : "0",
+          "ease_name" : "text",
+          "font_name" : "Sans",
+          "font_size" : "16"
+        }
+      ],
+      "blue" : "255",
+      "title" : "Standard",
+      "red" : "255",
+      "transition_time" : "0.5"
+    }
+  ]
+}



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