浏览代码

recompile presentation

Laurent Laffont 12 年之前
父节点
当前提交
a99e01320e
共有 3 个文件被更改,包括 868 次插入751 次删除
  1. 326 326
      examples/presentation/js/Presentation.deploy.js
  2. 444 400
      examples/presentation/js/Presentation.js
  3. 98 25
      examples/presentation/st/Presentation.st

+ 326 - 326
examples/presentation/js/Presentation.deploy.js

@@ -1,245 +1,278 @@
 smalltalk.addPackage('Presentation', {});
-smalltalk.addClass('FOSDEMREPLSlide', smalltalk.FOSDEMSlide, [], 'Presentation');
+smalltalk.addClass('Presentation', smalltalk.Widget, ['currentSlide', 'slides'], 'Presentation');
 smalltalk.addMethod(
-unescape('_renderSlideOn_'),
+unescape('_title'),
 smalltalk.method({
-selector: unescape('renderSlideOn%3A'),
-fn: function (html){
+selector: unescape('title'),
+fn: function (){
 var self=this;
-smalltalk.send(html, "_h1_", ["REPL"]);
-smalltalk.send(self, "_renderCodeSnippetOn_", [html]);
+return smalltalk.send(smalltalk.send(self, "_class", []), "_title", []);
 return self;}
 }),
-smalltalk.FOSDEMREPLSlide);
+smalltalk.Presentation);
 
 smalltalk.addMethod(
-unescape('_codeSnippet'),
+unescape('_author'),
 smalltalk.method({
-selector: unescape('codeSnippet'),
+selector: unescape('author'),
 fn: function (){
 var self=this;
-return unescape("./bin/amber%0Afs%20%3A%3D%20require%20value%3A%20%27fs%27.%0Afs%20readdir%3A%20%27/tmp%27%20do%3A%20%5B%3Aerr%20%3Afile%7C%20console%20log%3A%20file%5D");
+return "John Smith";
 return self;}
 }),
-smalltalk.FOSDEMREPLSlide);
-
+smalltalk.Presentation);
 
+smalltalk.addMethod(
+unescape('_url'),
+smalltalk.method({
+selector: unescape('url'),
+fn: function (){
+var self=this;
+return unescape("http%3A//jtalk-project.org");
+return self;}
+}),
+smalltalk.Presentation);
 
-smalltalk.addClass('FOSDEMJSToSmalltalk', smalltalk.FOSDEMSlide, [], 'Presentation');
 smalltalk.addMethod(
-unescape('_renderSlideOn_'),
+unescape('_description'),
 smalltalk.method({
-selector: unescape('renderSlideOn%3A'),
-fn: function (html){
+selector: unescape('description'),
+fn: function (){
 var self=this;
-smalltalk.send(html, "_h1_", ["Call Smalltalk from Javascript"]);
-smalltalk.send(self, "_renderCodeSnippetOn_", [html]);
-smalltalk.send(smalltalk.send(html, "_div", []), "_id_", ["jsToSmalltalk"]);
+return "A presentation written in Jtalk";
 return self;}
 }),
-smalltalk.FOSDEMJSToSmalltalk);
+smalltalk.Presentation);
 
 smalltalk.addMethod(
-unescape('_cssClass'),
+unescape('_email'),
 smalltalk.method({
-selector: unescape('cssClass'),
+selector: unescape('email'),
 fn: function (){
 var self=this;
-return "slide blue3d";
+return unescape("john@smith.com");
 return self;}
 }),
-smalltalk.FOSDEMJSToSmalltalk);
+smalltalk.Presentation);
 
 smalltalk.addMethod(
-unescape('_codeSnippet'),
+unescape('_slides'),
 smalltalk.method({
-selector: unescape('codeSnippet'),
+selector: unescape('slides'),
 fn: function (){
 var self=this;
-return unescape("var%20counter%20%3D%20window.smalltalk.Counter._new%28%29%3B%0Acounter._appendToJQuery_%28%24%28%27%23jsToSmalltalk%27%29%29%3B");
+(($receiver = self['@slides']) == nil || $receiver == undefined) ? (function(){return smalltalk.send(self, "_initSlides", []);})() : $receiver;
+return self['@slides'];
 return self;}
 }),
-smalltalk.FOSDEMJSToSmalltalk);
+smalltalk.Presentation);
 
+smalltalk.addMethod(
+unescape('_slideClasses'),
+smalltalk.method({
+selector: unescape('slideClasses'),
+fn: function (){
+var self=this;
+return smalltalk.send(self, "_subclassResponsibility", []);
+return self;}
+}),
+smalltalk.Presentation);
 
+smalltalk.addMethod(
+unescape('_currentSlide'),
+smalltalk.method({
+selector: unescape('currentSlide'),
+fn: function (){
+var self=this;
+return self['@currentSlide'];
+return self;}
+}),
+smalltalk.Presentation);
 
-smalltalk.addClass('FOSDEMCanvasSlide', smalltalk.FOSDEMSlide, ['c2d', 'canvas'], 'Presentation');
 smalltalk.addMethod(
-unescape('_renderSlideOn_'),
+unescape('_currentSlide_'),
 smalltalk.method({
-selector: unescape('renderSlideOn%3A'),
-fn: function (html){
+selector: unescape('currentSlide%3A'),
+fn: function (aSlide){
 var self=this;
-smalltalk.send(html, "_h1_", ["Playing with canvas"]);
-(self['@canvas']=(function($rec){smalltalk.send($rec, "_width_", [(700)]);return smalltalk.send($rec, "_height_", [(400)]);})(smalltalk.send(html, "_canvas", [])));
-smalltalk.send(self, "_updateCanvas", []);
+(self['@currentSlide']=aSlide);
 return self;}
 }),
-smalltalk.FOSDEMCanvasSlide);
+smalltalk.Presentation);
 
 smalltalk.addMethod(
-unescape('_drawOnCanvas'),
+unescape('_slideTransition'),
 smalltalk.method({
-selector: unescape('drawOnCanvas'),
+selector: unescape('slideTransition'),
 fn: function (){
 var self=this;
-var c2d=nil;
-(self['@c2d']=smalltalk.send(smalltalk.send(self['@canvas'], "_element", []), "_getContext_", ["2d"]));
-smalltalk.send(self['@c2d'], "_clearRect_y_width_height_", [(0), (0), smalltalk.send(smalltalk.send(self['@canvas'], "_element", []), "_width", []), smalltalk.send(smalltalk.send(self['@canvas'], "_element", []), "_height", [])]);
-smalltalk.send(smalltalk.send((40), "_atRandom", []), "_timesRepeat_", [(function(){var rgba=nil;
-(rgba=smalltalk.send(unescape("%2C"), "_join_", [[smalltalk.send((255), "_atRandom", []),smalltalk.send((255), "_atRandom", []),smalltalk.send((255), "_atRandom", []),((($receiver = smalltalk.send((10), "_atRandom", [])).klass === smalltalk.Number) ? $receiver /(10) : smalltalk.send($receiver, "__slash", [(10)]))]]));smalltalk.send(self['@c2d'], "_at_put_", ["fillStyle", smalltalk.send(smalltalk.send(unescape("rgba%28"), "__comma", [rgba]), "__comma", [unescape("%29")])]);return smalltalk.send(self['@c2d'], "_fillRect_y_width_height_", [smalltalk.send((600), "_atRandom", []), smalltalk.send((300), "_atRandom", []), smalltalk.send((200), "_atRandom", []), smalltalk.send((200), "_atRandom", [])]);})]);
+return "fade";
 return self;}
 }),
-smalltalk.FOSDEMCanvasSlide);
+smalltalk.Presentation);
 
 smalltalk.addMethod(
-unescape('_cssClass'),
+unescape('_style'),
 smalltalk.method({
-selector: unescape('cssClass'),
+selector: unescape('style'),
 fn: function (){
 var self=this;
-return "slide red3d";
+return "";
 return self;}
 }),
-smalltalk.FOSDEMCanvasSlide);
+smalltalk.Presentation);
 
 smalltalk.addMethod(
-unescape('_updateCanvas'),
+unescape('_nextSlide'),
 smalltalk.method({
-selector: unescape('updateCanvas'),
+selector: unescape('nextSlide'),
 fn: function (){
 var self=this;
-smalltalk.send(self, "_drawOnCanvas", []);
-smalltalk.send((typeof window == 'undefined' ? nil : window), "_setTimeout_delay_", [(function(){return smalltalk.send(self, "_updateCanvas", []);}), (500)]);
+var next=nil;
+(($receiver = smalltalk.send(self, "_currentSlide", [])) != nil && $receiver != undefined) ? (function(){(next=smalltalk.send(smalltalk.send(self, "_slides", []), "_at_ifAbsent_", [((($receiver = smalltalk.send(self, "_currentSlideIndex", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)])), (function(){return nil;})]));return (($receiver = next) != nil && $receiver != undefined) ? (function(){(self['@currentSlide']=next);return smalltalk.send(next, "_show", []);})() : nil;})() : nil;
 return self;}
 }),
-smalltalk.FOSDEMCanvasSlide);
-
-
+smalltalk.Presentation);
 
-smalltalk.addClass('FOSDEMJSPlayGroundSlide', smalltalk.FOSDEMSlide, [], 'Presentation');
 smalltalk.addMethod(
-unescape('_renderSlideOn_'),
+unescape('_showCurrentSlide'),
 smalltalk.method({
-selector: unescape('renderSlideOn%3A'),
-fn: function (html){
+selector: unescape('showCurrentSlide'),
+fn: function (){
 var self=this;
-(function($rec){smalltalk.send($rec, "_class_", ["section center"]);return smalltalk.send($rec, "_with_", [(function(){smalltalk.send(self, "_renderCodeSnippetOn_", [html]);return (function($rec){smalltalk.send($rec, "_id_", ["amberlogo"]);return smalltalk.send($rec, "_src_", [unescape("fosdem2012/images/amber.png")]);})(smalltalk.send(html, "_img", []));})]);})(smalltalk.send(html, "_div", []));
+(($receiver = smalltalk.send(self, "_currentSlide", [])) != nil && $receiver != undefined) ? (function(){smalltalk.send(smalltalk.send(".slide", "_asJQuery", []), "_hide", []);smalltalk.send(smalltalk.send(smalltalk.send(unescape("%23"), "__comma", [smalltalk.send(smalltalk.send(self, "_currentSlide", []), "_id", [])]), "_asJQuery", []), "_show", []);return smalltalk.send(smalltalk.send("title", "_asJQuery", []), "_text_", [smalltalk.send(smalltalk.send(smalltalk.send(self, "_title", []), "__comma", [unescape("%20-%20")]), "__comma", [smalltalk.send(smalltalk.send(self, "_currentSlide", []), "_id", [])])]);})() : nil;
 return self;}
 }),
-smalltalk.FOSDEMJSPlayGroundSlide);
+smalltalk.Presentation);
 
 smalltalk.addMethod(
-unescape('_codeSnippet'),
+unescape('_previousSlide'),
 smalltalk.method({
-selector: unescape('codeSnippet'),
+selector: unescape('previousSlide'),
 fn: function (){
 var self=this;
-return unescape("%7Clogo%7C%0Alogo%3A%3D%27img%23amberlogo%27%20asJQuery.%0A%0Alogo%0A%20%20css%3A%27-webkit-transition%27%20put%3A%27all%2010s%20ease-in-out%27.%0A%0A%3Clogo.css%28%27-webkit-transform%27%2C%20%27rotateY%28360deg%29%27%29%3B%3E.%0A%0Alogo%20click%3A%20%5Bwindow%20alert%3A%20%27This%20is%20cool%20%21%27%5D.%0A%0Alogo%20inspect");
+var next=nil;
+(($receiver = smalltalk.send(self, "_currentSlide", [])) != nil && $receiver != undefined) ? (function(){(next=smalltalk.send(smalltalk.send(self, "_slides", []), "_at_ifAbsent_", [((($receiver = smalltalk.send(self, "_currentSlideIndex", [])).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), (function(){return nil;})]));return (($receiver = next) != nil && $receiver != undefined) ? (function(){(self['@currentSlide']=next);return smalltalk.send(next, "_show", []);})() : nil;})() : nil;
 return self;}
 }),
-smalltalk.FOSDEMJSPlayGroundSlide);
-
-
+smalltalk.Presentation);
 
-smalltalk.addClass('FOSDEMAmberBackend', smalltalk.FOSDEMSlide, [], 'Presentation');
 smalltalk.addMethod(
-unescape('_renderSlideOn_'),
+unescape('_moveAt_'),
 smalltalk.method({
-selector: unescape('renderSlideOn%3A'),
-fn: function (html){
+selector: unescape('moveAt%3A'),
+fn: function (anInteger){
 var self=this;
-(function($rec){smalltalk.send($rec, "_class_", ["section center"]);return smalltalk.send($rec, "_with_", [(function(){smalltalk.send(html, "_h1_", [unescape("Need%20a%20backend%20%3F")]);return smalltalk.send(["nodejs.png","php.gif","rails.png","pharo.png","ambrhino.jpg"], "_do_", [(function(aString){return smalltalk.send(html, "_img_", [smalltalk.send(unescape("fosdem2012/images/"), "__comma", [aString])]);})]);})]);})(smalltalk.send(html, "_div", []));
+var next=nil;
+(next=smalltalk.send(smalltalk.send(self, "_slides", []), "_at_ifAbsent_", [anInteger, (function(){return nil;})]));
+(($receiver = next) != nil && $receiver != undefined) ? (function(){(self['@currentSlide']=next);return smalltalk.send(next, "_show", []);})() : nil;
 return self;}
 }),
-smalltalk.FOSDEMAmberBackend);
+smalltalk.Presentation);
 
 smalltalk.addMethod(
-unescape('_cssClass'),
+unescape('_currentSlideIndex'),
 smalltalk.method({
-selector: unescape('cssClass'),
+selector: unescape('currentSlideIndex'),
 fn: function (){
 var self=this;
-return "slide green3d";
+return smalltalk.send(smalltalk.send(self, "_slides", []), "_indexOf_ifAbsent_", [smalltalk.send(self, "_currentSlide", []), (function(){return (1);})]);
 return self;}
 }),
-smalltalk.FOSDEMAmberBackend);
+smalltalk.Presentation);
 
+smalltalk.addMethod(
+unescape('_slidesDo_'),
+smalltalk.method({
+selector: unescape('slidesDo%3A'),
+fn: function (aBlockWithArg){
+var self=this;
+smalltalk.send(smalltalk.send(self, "_slides", []), "_do_", [(function(aSlide){return smalltalk.send(aBlockWithArg, "_value_", [aSlide]);})]);
+return self;}
+}),
+smalltalk.Presentation);
 
+smalltalk.addMethod(
+unescape('_initSlides'),
+smalltalk.method({
+selector: unescape('initSlides'),
+fn: function (){
+var self=this;
+(self['@slides']=smalltalk.send(smalltalk.send(self, "_slideClasses", []), "_collect_", [(function(each){return smalltalk.send(each, "_on_", [self]);})]));
+return self;}
+}),
+smalltalk.Presentation);
 
-smalltalk.addClass('FOSDEMBookletSlide', smalltalk.FOSDEMSlide, [], 'Presentation');
 smalltalk.addMethod(
-unescape('_renderSlideOn_'),
+unescape('_renderOn_'),
 smalltalk.method({
-selector: unescape('renderSlideOn%3A'),
+selector: unescape('renderOn%3A'),
 fn: function (html){
 var self=this;
-smalltalk.send(self, "_renderBookOn_", [html]);
-(function($rec){smalltalk.send($rec, "_rel_", ["stylesheet"]);return smalltalk.send($rec, "_href_", [unescape("fosdem2012/lib/booklet/jquery.booklet.1.2.0.css")]);})(smalltalk.send(html, "_link", []));
-smalltalk.send(html, "_style_", [smalltalk.send(self, "_style", [])]);
-smalltalk.send((typeof jQuery == 'undefined' ? nil : jQuery), "_getScript_do_", [unescape("fosdem2012/lib/booklet/jquery.booklet.1.2.0.min.js"), (function(){return smalltalk.send(smalltalk.send(unescape("%23book"), "_asJQuery", []), "_booklet_", [smalltalk.send(self, "_bookletOptions", [])]);})]);
+(function($rec){smalltalk.send($rec, "_type_", [unescape("text/css")]);return smalltalk.send($rec, "_with_", [smalltalk.send(self, "_style", [])]);})(smalltalk.send(html, "_style", []));
+(function($rec){smalltalk.send($rec, "_id_", ["slides"]);return smalltalk.send($rec, "_with_", [(function(){return smalltalk.send(self, "_renderSlidesOn_", [html]);})]);})(smalltalk.send(html, "_div", []));
 return self;}
 }),
-smalltalk.FOSDEMBookletSlide);
+smalltalk.Presentation);
 
 smalltalk.addMethod(
-unescape('_renderBookOn_'),
+unescape('_renderSlidesOn_'),
 smalltalk.method({
-selector: unescape('renderBookOn%3A'),
+selector: unescape('renderSlidesOn%3A'),
 fn: function (html){
 var self=this;
-(function($rec){smalltalk.send($rec, "_id_", ["book"]);return smalltalk.send($rec, "_with_", [(function(){return (function($rec){smalltalk.send($rec, "_class_", [unescape("b-load")]);return smalltalk.send($rec, "_with_", [(function(){return (function($rec){smalltalk.send($rec, "_div_", ["Amber makes it easy to plug existing javascript libraires"]);smalltalk.send($rec, "_div_", ["Here is an example with the jQuery Booklet plugin"]);smalltalk.send($rec, "_div_", [unescape("Want%20to%20see%20how%20%3F")]);return smalltalk.send($rec, "_div_", [(function(){return (function($rec){smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send((smalltalk.Browser || Browser), "_openOn_", [(smalltalk.FOSDEMBookletSlide || FOSDEMBookletSlide)]);})]);return smalltalk.send($rec, "_with_", [unescape("Just%20browse%20the%20code%20%3A%29")]);})(smalltalk.send(html, "_button", []));})]);})(html);})]);})(smalltalk.send(html, "_div", []));})]);})(smalltalk.send(html, "_div", []));
+smalltalk.send(smalltalk.send(self, "_slides", []), "_do_", [(function(each){return smalltalk.send(each, "_renderOn_", [html]);})]);
+(($receiver = self['@currentSlide']) == nil || $receiver == undefined) ? (function(){return (self['@currentSlide']=smalltalk.send(smalltalk.send(self, "_slides", []), "_first", []));})() : $receiver;
+smalltalk.send(self, "_showCurrentSlide", []);
 return self;}
 }),
-smalltalk.FOSDEMBookletSlide);
+smalltalk.Presentation);
+
 
+smalltalk.Presentation.klass.iVarNames = ['current'];
 smalltalk.addMethod(
-unescape('_bookletOptions'),
+unescape('_concretePresentations'),
 smalltalk.method({
-selector: unescape('bookletOptions'),
+selector: unescape('concretePresentations'),
 fn: function (){
 var self=this;
-return smalltalk.HashedCollection._fromPairs_([smalltalk.send("arrows", "__minus_gt", [true]),smalltalk.send("keyboard", "__minus_gt", [false]),smalltalk.send("pageNumbers", "__minus_gt", [false]),smalltalk.send("closed", "__minus_gt", [true])]);
+return smalltalk.send(smalltalk.send(self, "_allSubclasses", []), "_select_", [(function(aPresentationClass){return smalltalk.send(aPresentationClass, "_isConcrete", []);})]);
 return self;}
 }),
-smalltalk.FOSDEMBookletSlide);
+smalltalk.Presentation.klass);
 
 smalltalk.addMethod(
-unescape('_cssClass'),
+unescape('_title'),
 smalltalk.method({
-selector: unescape('cssClass'),
+selector: unescape('title'),
 fn: function (){
 var self=this;
-return "slide blue3d";
+return "Slides";
 return self;}
 }),
-smalltalk.FOSDEMBookletSlide);
+smalltalk.Presentation.klass);
 
 smalltalk.addMethod(
-unescape('_style'),
+unescape('_concretePresentationsDo_'),
 smalltalk.method({
-selector: unescape('style'),
-fn: function (){
+selector: unescape('concretePresentationsDo%3A'),
+fn: function (aBlockWithArg){
 var self=this;
-return unescape("%0A%23book%20%7B%20font-size%3A%201.4em%3B%20%7D%0A%23book%20.b-load%20.b-wrap-right%20%7B%20background-color%3A%20%23DEC3A9%3B%7D%0A%23book%20.b-load%20.b-wrap-left%20%7B%20background-color%3A%20%23DDD%3B%7D%20%0A");
+smalltalk.send(smalltalk.send(self, "_concretePresentations", []), "_do_", [aBlockWithArg]);
 return self;}
 }),
-smalltalk.FOSDEMBookletSlide);
-
-
+smalltalk.Presentation.klass);
 
-smalltalk.addClass('FOSDEMIntroSlide', smalltalk.FOSDEMSlide, [], 'Presentation');
 smalltalk.addMethod(
-unescape('_renderSlideOn_'),
+unescape('_isConcrete'),
 smalltalk.method({
-selector: unescape('renderSlideOn%3A'),
-fn: function (html){
+selector: unescape('isConcrete'),
+fn: function (){
 var self=this;
-(function($rec){smalltalk.send($rec, "_class_", ["section center animate"]);return smalltalk.send($rec, "_with_", [(function(){smalltalk.send(smalltalk.send(html, "_img", []), "_src_", [unescape("fosdem2012/images/amber.png")]);smalltalk.send(html, "_p_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_author", [])]);smalltalk.send(html, "_p_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_description", [])]);return smalltalk.send(html, "_p_", [(function(){return smalltalk.send(html, "_with_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_email", [])]);})]);})]);})(smalltalk.send(html, "_div", []));
+return false;
 return self;}
 }),
-smalltalk.FOSDEMIntroSlide);
-
+smalltalk.Presentation.klass);
 
 
 smalltalk.addClass('PresentationNavigator', smalltalk.Widget, ['presentationBrush', 'currentPresentation', 'slideSelect'], 'Presentation');
@@ -516,406 +549,409 @@ return self;}
 smalltalk.PresentationNavigator.klass);
 
 
-smalltalk.addClass('Presentation', smalltalk.Widget, ['currentSlide', 'slides'], 'Presentation');
+smalltalk.addClass('Slide', smalltalk.Widget, ['presentation'], 'Presentation');
 smalltalk.addMethod(
-unescape('_title'),
+unescape('_presentation'),
 smalltalk.method({
-selector: unescape('title'),
+selector: unescape('presentation'),
 fn: function (){
 var self=this;
-return smalltalk.send(smalltalk.send(self, "_class", []), "_title", []);
+return self['@presentation'];
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.Slide);
 
 smalltalk.addMethod(
-unescape('_author'),
+unescape('_presentation_'),
 smalltalk.method({
-selector: unescape('author'),
-fn: function (){
+selector: unescape('presentation%3A'),
+fn: function (aPresentation){
 var self=this;
-return "John Smith";
+(self['@presentation']=aPresentation);
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.Slide);
 
 smalltalk.addMethod(
-unescape('_url'),
+unescape('_id'),
 smalltalk.method({
-selector: unescape('url'),
+selector: unescape('id'),
 fn: function (){
 var self=this;
-return unescape("http%3A//jtalk-project.org");
+return smalltalk.send(smalltalk.send(self, "_class", []), "_name", []);
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.Slide);
 
 smalltalk.addMethod(
-unescape('_description'),
+unescape('_cssClass'),
 smalltalk.method({
-selector: unescape('description'),
+selector: unescape('cssClass'),
 fn: function (){
 var self=this;
-return "A presentation written in Jtalk";
+return "slide";
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.Slide);
 
 smalltalk.addMethod(
-unescape('_email'),
+unescape('_backgroundColor'),
 smalltalk.method({
-selector: unescape('email'),
+selector: unescape('backgroundColor'),
 fn: function (){
 var self=this;
-return unescape("john@smith.com");
+return unescape("%23555");
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.Slide);
 
 smalltalk.addMethod(
-unescape('_slides'),
+unescape('_title'),
 smalltalk.method({
-selector: unescape('slides'),
+selector: unescape('title'),
 fn: function (){
 var self=this;
-(($receiver = self['@slides']) == nil || $receiver == undefined) ? (function(){return smalltalk.send(self, "_initSlides", []);})() : $receiver;
-return self['@slides'];
+return smalltalk.send(self, "_id", []);
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.Slide);
 
 smalltalk.addMethod(
-unescape('_slideClasses'),
+unescape('_show'),
 smalltalk.method({
-selector: unescape('slideClasses'),
+selector: unescape('show'),
 fn: function (){
 var self=this;
-return smalltalk.send(self, "_subclassResponsibility", []);
+(($receiver = smalltalk.send(self, "_backgroundColor", [])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(smalltalk.send((typeof window == 'undefined' ? nil : window), "_jQuery_", [unescape("%23slides")]), "_css_color_", ["background", smalltalk.send(self, "_backgroundColor", [])]);})() : nil;
+smalltalk.send(smalltalk.send((typeof window == 'undefined' ? nil : window), "_jQuery_", [".slide"]), "_hide_options_duration_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_slideTransition", []), [], (300)]);
+smalltalk.send(smalltalk.send((typeof window == 'undefined' ? nil : window), "_jQuery_", [smalltalk.send(unescape("%23"), "__comma", [smalltalk.send(self, "_id", [])])]), "_show_options_duration_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_slideTransition", []), [], (300)]);
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.Slide);
 
 smalltalk.addMethod(
-unescape('_currentSlide'),
+unescape('_renderOn_'),
 smalltalk.method({
-selector: unescape('currentSlide'),
-fn: function (){
+selector: unescape('renderOn%3A'),
+fn: function (html){
 var self=this;
-return self['@currentSlide'];
+(function($rec){smalltalk.send($rec, "_class_", [smalltalk.send(self, "_cssClass", [])]);smalltalk.send($rec, "_id_", [smalltalk.send(self, "_id", [])]);return smalltalk.send($rec, "_with_", [(function(){smalltalk.send(self, "_renderSlideOn_", [html]);return smalltalk.send(self, "_renderMetaOn_", [html]);})]);})(smalltalk.send(html, "_div", []));
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.Slide);
 
 smalltalk.addMethod(
-unescape('_currentSlide_'),
+unescape('_renderSlideOn_'),
 smalltalk.method({
-selector: unescape('currentSlide%3A'),
-fn: function (aSlide){
+selector: unescape('renderSlideOn%3A'),
+fn: function (html){
 var self=this;
-(self['@currentSlide']=aSlide);
-return self;}
-}),
-smalltalk.Presentation);
 
-smalltalk.addMethod(
-unescape('_slideTransition'),
-smalltalk.method({
-selector: unescape('slideTransition'),
-fn: function (){
-var self=this;
-return "fade";
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.Slide);
 
 smalltalk.addMethod(
-unescape('_style'),
+unescape('_renderMetaOn_'),
 smalltalk.method({
-selector: unescape('style'),
-fn: function (){
+selector: unescape('renderMetaOn%3A'),
+fn: function (html){
 var self=this;
-return "";
+(function($rec){smalltalk.send($rec, "_id_", ["meta"]);return smalltalk.send($rec, "_with_", [(function(){(function($rec){smalltalk.send($rec, "_class_", ["title"]);return smalltalk.send($rec, "_with_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_title", [])]);})(smalltalk.send(html, "_p", []));(function($rec){smalltalk.send($rec, "_class_", ["description"]);return smalltalk.send($rec, "_with_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_description", [])]);})(smalltalk.send(html, "_p", []));(function($rec){smalltalk.send($rec, "_class_", ["author"]);smalltalk.send($rec, "_with_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_author", [])]);return smalltalk.send($rec, "_href_", [smalltalk.send("mailto:", "__comma", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_email", [])])]);})(smalltalk.send(html, "_a", []));return (function($rec){smalltalk.send($rec, "_class_", ["url"]);smalltalk.send($rec, "_with_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_url", [])]);return smalltalk.send($rec, "_href_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_url", [])]);})(smalltalk.send(html, "_a", []));})]);})(smalltalk.send(html, "_div", []));
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.Slide);
+
 
 smalltalk.addMethod(
-unescape('_nextSlide'),
+unescape('_on_'),
 smalltalk.method({
-selector: unescape('nextSlide'),
-fn: function (){
+selector: unescape('on%3A'),
+fn: function (aPresentation){
 var self=this;
-var next=nil;
-(($receiver = smalltalk.send(self, "_currentSlide", [])) != nil && $receiver != undefined) ? (function(){(next=smalltalk.send(smalltalk.send(self, "_slides", []), "_at_ifAbsent_", [((($receiver = smalltalk.send(self, "_currentSlideIndex", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)])), (function(){return nil;})]));return (($receiver = next) != nil && $receiver != undefined) ? (function(){(self['@currentSlide']=next);return smalltalk.send(next, "_show", []);})() : nil;})() : nil;
+return (function($rec){smalltalk.send($rec, "_presentation_", [aPresentation]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.Slide.klass);
+
 
+smalltalk.addClass('FOSDEMSlide', smalltalk.Slide, [], 'Presentation');
 smalltalk.addMethod(
-unescape('_showCurrentSlide'),
+unescape('_codeSnippet'),
 smalltalk.method({
-selector: unescape('showCurrentSlide'),
+selector: unescape('codeSnippet'),
 fn: function (){
 var self=this;
-(($receiver = smalltalk.send(self, "_currentSlide", [])) != nil && $receiver != undefined) ? (function(){smalltalk.send(smalltalk.send(".slide", "_asJQuery", []), "_hide", []);smalltalk.send(smalltalk.send(smalltalk.send(unescape("%23"), "__comma", [smalltalk.send(smalltalk.send(self, "_currentSlide", []), "_id", [])]), "_asJQuery", []), "_show", []);return smalltalk.send(smalltalk.send("title", "_asJQuery", []), "_text_", [smalltalk.send(smalltalk.send(smalltalk.send(self, "_title", []), "__comma", [unescape("%20-%20")]), "__comma", [smalltalk.send(smalltalk.send(self, "_currentSlide", []), "_id", [])])]);})() : nil;
+smalltalk.send(self, "_subclassResponsibility", []);
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.FOSDEMSlide);
 
 smalltalk.addMethod(
-unescape('_previousSlide'),
+unescape('_renderSnippet_on_'),
 smalltalk.method({
-selector: unescape('previousSlide'),
-fn: function (){
+selector: unescape('renderSnippet%3Aon%3A'),
+fn: function (aString, html){
 var self=this;
-var next=nil;
-(($receiver = smalltalk.send(self, "_currentSlide", [])) != nil && $receiver != undefined) ? (function(){(next=smalltalk.send(smalltalk.send(self, "_slides", []), "_at_ifAbsent_", [((($receiver = smalltalk.send(self, "_currentSlideIndex", [])).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), (function(){return nil;})]));return (($receiver = next) != nil && $receiver != undefined) ? (function(){(self['@currentSlide']=next);return smalltalk.send(next, "_show", []);})() : nil;})() : nil;
+smalltalk.send((function($rec){smalltalk.send($rec, "_renderOn_", [html]);return smalltalk.send($rec, "_editor", []);})(smalltalk.send((smalltalk.SourceArea || SourceArea), "_new", [])), "_setValue_", [aString]);
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.FOSDEMSlide);
 
 smalltalk.addMethod(
-unescape('_moveAt_'),
-smalltalk.method({
-selector: unescape('moveAt%3A'),
-fn: function (anInteger){
+unescape('_renderCodeSnippetOn_'),
+smalltalk.method({
+selector: unescape('renderCodeSnippetOn%3A'),
+fn: function (html){
 var self=this;
-var next=nil;
-(next=smalltalk.send(smalltalk.send(self, "_slides", []), "_at_ifAbsent_", [anInteger, (function(){return nil;})]));
-(($receiver = next) != nil && $receiver != undefined) ? (function(){(self['@currentSlide']=next);return smalltalk.send(next, "_show", []);})() : nil;
+smalltalk.send((function($rec){smalltalk.send($rec, "_renderOn_", [html]);return smalltalk.send($rec, "_editor", []);})(smalltalk.send((smalltalk.SourceArea || SourceArea), "_new", [])), "_setValue_", [smalltalk.send(self, "_codeSnippet", [])]);
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.FOSDEMSlide);
+
 
+
+smalltalk.addClass('FOSDEMREPLSlide', smalltalk.FOSDEMSlide, [], 'Presentation');
 smalltalk.addMethod(
-unescape('_currentSlideIndex'),
+unescape('_renderSlideOn_'),
 smalltalk.method({
-selector: unescape('currentSlideIndex'),
-fn: function (){
+selector: unescape('renderSlideOn%3A'),
+fn: function (html){
 var self=this;
-return smalltalk.send(smalltalk.send(self, "_slides", []), "_indexOf_ifAbsent_", [smalltalk.send(self, "_currentSlide", []), (function(){return (1);})]);
+smalltalk.send(html, "_h1_", ["REPL"]);
+smalltalk.send(self, "_renderCodeSnippetOn_", [html]);
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.FOSDEMREPLSlide);
 
 smalltalk.addMethod(
-unescape('_slidesDo_'),
+unescape('_codeSnippet'),
 smalltalk.method({
-selector: unescape('slidesDo%3A'),
-fn: function (aBlockWithArg){
+selector: unescape('codeSnippet'),
+fn: function (){
 var self=this;
-smalltalk.send(smalltalk.send(self, "_slides", []), "_do_", [(function(aSlide){return smalltalk.send(aBlockWithArg, "_value_", [aSlide]);})]);
+return unescape("./bin/amber%0Afs%20%3A%3D%20require%20value%3A%20%27fs%27.%0Afs%20readdir%3A%20%27/tmp%27%20do%3A%20%5B%3Aerr%20%3Afile%7C%20console%20log%3A%20file%5D");
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.FOSDEMREPLSlide);
+
 
+
+smalltalk.addClass('FOSDEMJSToSmalltalk', smalltalk.FOSDEMSlide, [], 'Presentation');
 smalltalk.addMethod(
-unescape('_initSlides'),
+unescape('_cssClass'),
 smalltalk.method({
-selector: unescape('initSlides'),
+selector: unescape('cssClass'),
 fn: function (){
 var self=this;
-(self['@slides']=smalltalk.send(smalltalk.send(self, "_slideClasses", []), "_collect_", [(function(each){return smalltalk.send(each, "_on_", [self]);})]));
+return "slide blue3d";
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.FOSDEMJSToSmalltalk);
 
 smalltalk.addMethod(
-unescape('_renderOn_'),
+unescape('_codeSnippet'),
 smalltalk.method({
-selector: unescape('renderOn%3A'),
-fn: function (html){
+selector: unescape('codeSnippet'),
+fn: function (){
 var self=this;
-(function($rec){smalltalk.send($rec, "_type_", [unescape("text/css")]);return smalltalk.send($rec, "_with_", [smalltalk.send(self, "_style", [])]);})(smalltalk.send(html, "_style", []));
-(function($rec){smalltalk.send($rec, "_id_", ["slides"]);return smalltalk.send($rec, "_with_", [(function(){return smalltalk.send(self, "_renderSlidesOn_", [html]);})]);})(smalltalk.send(html, "_div", []));
+return unescape("var%20counter%20%3D%20window.smalltalk.Counter._new%28%29%3B%0Acounter._appendToJQuery_%28%24%28%27%23jsToSmalltalk%27%29%29%3B");
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.FOSDEMJSToSmalltalk);
 
 smalltalk.addMethod(
-unescape('_renderSlidesOn_'),
+unescape('_renderSlideOn_'),
 smalltalk.method({
-selector: unescape('renderSlidesOn%3A'),
+selector: unescape('renderSlideOn%3A'),
 fn: function (html){
 var self=this;
-smalltalk.send(smalltalk.send(self, "_slides", []), "_do_", [(function(each){return smalltalk.send(each, "_renderOn_", [html]);})]);
-(($receiver = self['@currentSlide']) == nil || $receiver == undefined) ? (function(){return (self['@currentSlide']=smalltalk.send(smalltalk.send(self, "_slides", []), "_first", []));})() : $receiver;
-smalltalk.send(self, "_showCurrentSlide", []);
+smalltalk.send(html, "_h1_", ["Call Smalltalk from Javascript"]);
+(function($rec){smalltalk.send($rec, "_id_", ["jsToSmalltalk"]);return smalltalk.send($rec, "_style_", ["float: left"]);})(smalltalk.send(html, "_div", []));
+smalltalk.send(self, "_renderCodeSnippetOn_", [html]);
 return self;}
 }),
-smalltalk.Presentation);
+smalltalk.FOSDEMJSToSmalltalk);
 
 
-smalltalk.Presentation.klass.iVarNames = ['current'];
+
+smalltalk.addClass('FOSDEMCanvasSlide', smalltalk.FOSDEMSlide, ['c2d', 'canvas'], 'Presentation');
 smalltalk.addMethod(
-unescape('_concretePresentations'),
+unescape('_cssClass'),
 smalltalk.method({
-selector: unescape('concretePresentations'),
+selector: unescape('cssClass'),
 fn: function (){
 var self=this;
-return smalltalk.send(smalltalk.send(self, "_allSubclasses", []), "_select_", [(function(aPresentationClass){return smalltalk.send(aPresentationClass, "_isConcrete", []);})]);
+return "slide red3d";
 return self;}
 }),
-smalltalk.Presentation.klass);
+smalltalk.FOSDEMCanvasSlide);
 
 smalltalk.addMethod(
-unescape('_title'),
+unescape('_drawOnCanvas'),
 smalltalk.method({
-selector: unescape('title'),
+selector: unescape('drawOnCanvas'),
 fn: function (){
 var self=this;
-return "Slides";
+var c2d=nil;
+(self['@c2d']=smalltalk.send(smalltalk.send(self['@canvas'], "_element", []), "_getContext_", ["2d"]));
+smalltalk.send(self['@c2d'], "_clearRect_y_width_height_", [(0), (0), smalltalk.send(smalltalk.send(self['@canvas'], "_element", []), "_width", []), smalltalk.send(smalltalk.send(self['@canvas'], "_element", []), "_height", [])]);
+smalltalk.send(smalltalk.send((40), "_atRandom", []), "_timesRepeat_", [(function(){var rgba=nil;
+(rgba=smalltalk.send(unescape("%2C"), "_join_", [[smalltalk.send((255), "_atRandom", []),smalltalk.send((255), "_atRandom", []),smalltalk.send((255), "_atRandom", []),((($receiver = smalltalk.send((10), "_atRandom", [])).klass === smalltalk.Number) ? $receiver /(10) : smalltalk.send($receiver, "__slash", [(10)]))]]));smalltalk.send(self['@c2d'], "_at_put_", ["fillStyle", smalltalk.send(smalltalk.send(unescape("rgba%28"), "__comma", [rgba]), "__comma", [unescape("%29")])]);return smalltalk.send(self['@c2d'], "_fillRect_y_width_height_", [smalltalk.send((600), "_atRandom", []), smalltalk.send((300), "_atRandom", []), smalltalk.send((200), "_atRandom", []), smalltalk.send((200), "_atRandom", [])]);})]);
 return self;}
 }),
-smalltalk.Presentation.klass);
+smalltalk.FOSDEMCanvasSlide);
 
 smalltalk.addMethod(
-unescape('_concretePresentationsDo_'),
+unescape('_renderSlideOn_'),
 smalltalk.method({
-selector: unescape('concretePresentationsDo%3A'),
-fn: function (aBlockWithArg){
+selector: unescape('renderSlideOn%3A'),
+fn: function (html){
 var self=this;
-smalltalk.send(smalltalk.send(self, "_concretePresentations", []), "_do_", [aBlockWithArg]);
+smalltalk.send(html, "_h1_", ["Playing with canvas"]);
+(self['@canvas']=(function($rec){smalltalk.send($rec, "_width_", [(700)]);return smalltalk.send($rec, "_height_", [(400)]);})(smalltalk.send(html, "_canvas", [])));
+smalltalk.send(self, "_updateCanvas", []);
 return self;}
 }),
-smalltalk.Presentation.klass);
+smalltalk.FOSDEMCanvasSlide);
 
 smalltalk.addMethod(
-unescape('_isConcrete'),
+unescape('_updateCanvas'),
 smalltalk.method({
-selector: unescape('isConcrete'),
+selector: unescape('updateCanvas'),
 fn: function (){
 var self=this;
-return false;
+smalltalk.send(self, "_drawOnCanvas", []);
+smalltalk.send((typeof window == 'undefined' ? nil : window), "_setTimeout_delay_", [(function(){return smalltalk.send(self, "_updateCanvas", []);}), (500)]);
 return self;}
 }),
-smalltalk.Presentation.klass);
+smalltalk.FOSDEMCanvasSlide);
 
 
-smalltalk.addClass('Slide', smalltalk.Widget, ['presentation'], 'Presentation');
+
+smalltalk.addClass('FOSDEMJSPlayGroundSlide', smalltalk.FOSDEMSlide, [], 'Presentation');
 smalltalk.addMethod(
-unescape('_presentation'),
+unescape('_codeSnippet'),
 smalltalk.method({
-selector: unescape('presentation'),
+selector: unescape('codeSnippet'),
 fn: function (){
 var self=this;
-return self['@presentation'];
+return unescape("%7Clogo%7C%0Alogo%3A%3D%27img%23amberlogo%27%20asJQuery.%0A%0Alogo%0A%20%20css%3A%27-webkit-transition%27%20put%3A%27all%2010s%20ease-in-out%27.%0A%0A%3Clogo.css%28%27-webkit-transform%27%2C%20%27rotateY%28360deg%29%27%29%3B%3E.%0A%0Alogo%20click%3A%20%5Bwindow%20alert%3A%20%27This%20is%20cool%20%21%27%5D.%0A%0Alogo%20inspect");
 return self;}
 }),
-smalltalk.Slide);
+smalltalk.FOSDEMJSPlayGroundSlide);
 
 smalltalk.addMethod(
-unescape('_presentation_'),
+unescape('_renderSlideOn_'),
 smalltalk.method({
-selector: unescape('presentation%3A'),
-fn: function (aPresentation){
+selector: unescape('renderSlideOn%3A'),
+fn: function (html){
 var self=this;
-(self['@presentation']=aPresentation);
+(function($rec){smalltalk.send($rec, "_class_", ["section center"]);return smalltalk.send($rec, "_with_", [(function(){smalltalk.send(self, "_renderCodeSnippetOn_", [html]);return (function($rec){smalltalk.send($rec, "_id_", ["amberlogo"]);return smalltalk.send($rec, "_src_", [unescape("fosdem2012/images/amber.png")]);})(smalltalk.send(html, "_img", []));})]);})(smalltalk.send(html, "_div", []));
 return self;}
 }),
-smalltalk.Slide);
+smalltalk.FOSDEMJSPlayGroundSlide);
+
 
-smalltalk.addMethod(
-unescape('_id'),
-smalltalk.method({
-selector: unescape('id'),
-fn: function (){
-var self=this;
-return smalltalk.send(smalltalk.send(self, "_class", []), "_name", []);
-return self;}
-}),
-smalltalk.Slide);
 
+smalltalk.addClass('FOSDEMAmberBackend', smalltalk.FOSDEMSlide, [], 'Presentation');
 smalltalk.addMethod(
 unescape('_cssClass'),
 smalltalk.method({
 selector: unescape('cssClass'),
 fn: function (){
 var self=this;
-return "slide";
+return "slide green3d";
 return self;}
 }),
-smalltalk.Slide);
+smalltalk.FOSDEMAmberBackend);
 
 smalltalk.addMethod(
-unescape('_backgroundColor'),
+unescape('_renderSlideOn_'),
 smalltalk.method({
-selector: unescape('backgroundColor'),
-fn: function (){
+selector: unescape('renderSlideOn%3A'),
+fn: function (html){
 var self=this;
-return unescape("%23555");
+(function($rec){smalltalk.send($rec, "_class_", ["section center"]);return smalltalk.send($rec, "_with_", [(function(){smalltalk.send(html, "_h1_", [unescape("Need%20a%20backend%20%3F")]);return smalltalk.send(["nodejs.png","php.gif","rails.png","pharo.png","ambrhino.jpg"], "_do_", [(function(aString){return smalltalk.send(html, "_img_", [smalltalk.send(unescape("fosdem2012/images/"), "__comma", [aString])]);})]);})]);})(smalltalk.send(html, "_div", []));
 return self;}
 }),
-smalltalk.Slide);
+smalltalk.FOSDEMAmberBackend);
+
 
+
+smalltalk.addClass('FOSDEMBookletSlide', smalltalk.FOSDEMSlide, [], 'Presentation');
 smalltalk.addMethod(
-unescape('_title'),
+unescape('_cssClass'),
 smalltalk.method({
-selector: unescape('title'),
+selector: unescape('cssClass'),
 fn: function (){
 var self=this;
-return smalltalk.send(self, "_id", []);
+return "slide blue3d";
 return self;}
 }),
-smalltalk.Slide);
+smalltalk.FOSDEMBookletSlide);
 
 smalltalk.addMethod(
-unescape('_show'),
+unescape('_style'),
 smalltalk.method({
-selector: unescape('show'),
+selector: unescape('style'),
 fn: function (){
 var self=this;
-(($receiver = smalltalk.send(self, "_backgroundColor", [])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(smalltalk.send((typeof window == 'undefined' ? nil : window), "_jQuery_", [unescape("%23slides")]), "_css_color_", ["background", smalltalk.send(self, "_backgroundColor", [])]);})() : nil;
-smalltalk.send(smalltalk.send((typeof window == 'undefined' ? nil : window), "_jQuery_", [".slide"]), "_hide_options_duration_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_slideTransition", []), [], (300)]);
-smalltalk.send(smalltalk.send((typeof window == 'undefined' ? nil : window), "_jQuery_", [smalltalk.send(unescape("%23"), "__comma", [smalltalk.send(self, "_id", [])])]), "_show_options_duration_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_slideTransition", []), [], (300)]);
+return unescape("%0A%23book%20%7B%20font-size%3A%201.4em%3B%20%7D%0A%23book%20.b-load%20.b-wrap-right%20%7B%20background-color%3A%20%23DEC3A9%3B%7D%0A%23book%20.b-load%20.b-wrap-left%20%7B%20background-color%3A%20%23DDD%3B%7D%20%0A");
 return self;}
 }),
-smalltalk.Slide);
+smalltalk.FOSDEMBookletSlide);
 
 smalltalk.addMethod(
-unescape('_renderOn_'),
+unescape('_renderSlideOn_'),
 smalltalk.method({
-selector: unescape('renderOn%3A'),
+selector: unescape('renderSlideOn%3A'),
 fn: function (html){
 var self=this;
-(function($rec){smalltalk.send($rec, "_class_", [smalltalk.send(self, "_cssClass", [])]);smalltalk.send($rec, "_id_", [smalltalk.send(self, "_id", [])]);return smalltalk.send($rec, "_with_", [(function(){smalltalk.send(self, "_renderSlideOn_", [html]);return smalltalk.send(self, "_renderMetaOn_", [html]);})]);})(smalltalk.send(html, "_div", []));
+smalltalk.send(self, "_renderBookOn_", [html]);
+(function($rec){smalltalk.send($rec, "_rel_", ["stylesheet"]);return smalltalk.send($rec, "_href_", [unescape("fosdem2012/lib/booklet/jquery.booklet.1.2.0.css")]);})(smalltalk.send(html, "_link", []));
+smalltalk.send(html, "_style_", [smalltalk.send(self, "_style", [])]);
+smalltalk.send((typeof jQuery == 'undefined' ? nil : jQuery), "_getScript_do_", [unescape("fosdem2012/lib/booklet/jquery.booklet.1.2.0.min.js"), (function(){return smalltalk.send(smalltalk.send(unescape("%23book"), "_asJQuery", []), "_booklet_", [smalltalk.send(self, "_bookletOptions", [])]);})]);
 return self;}
 }),
-smalltalk.Slide);
+smalltalk.FOSDEMBookletSlide);
 
 smalltalk.addMethod(
-unescape('_renderSlideOn_'),
+unescape('_renderBookOn_'),
 smalltalk.method({
-selector: unescape('renderSlideOn%3A'),
+selector: unescape('renderBookOn%3A'),
 fn: function (html){
 var self=this;
-
+(function($rec){smalltalk.send($rec, "_id_", ["book"]);return smalltalk.send($rec, "_with_", [(function(){return (function($rec){smalltalk.send($rec, "_class_", [unescape("b-load")]);return smalltalk.send($rec, "_with_", [(function(){return (function($rec){smalltalk.send($rec, "_div_", ["Amber makes it easy to plug existing javascript libraires"]);smalltalk.send($rec, "_div_", ["Here is an example with the jQuery Booklet plugin"]);smalltalk.send($rec, "_div_", [unescape("Want%20to%20see%20how%20%3F")]);return smalltalk.send($rec, "_div_", [(function(){return (function($rec){smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send((smalltalk.Browser || Browser), "_openOn_", [(smalltalk.FOSDEMBookletSlide || FOSDEMBookletSlide)]);})]);return smalltalk.send($rec, "_with_", [unescape("Just%20browse%20the%20code%20%3A%29")]);})(smalltalk.send(html, "_button", []));})]);})(html);})]);})(smalltalk.send(html, "_div", []));})]);})(smalltalk.send(html, "_div", []));
 return self;}
 }),
-smalltalk.Slide);
+smalltalk.FOSDEMBookletSlide);
 
 smalltalk.addMethod(
-unescape('_renderMetaOn_'),
+unescape('_bookletOptions'),
 smalltalk.method({
-selector: unescape('renderMetaOn%3A'),
-fn: function (html){
+selector: unescape('bookletOptions'),
+fn: function (){
 var self=this;
-(function($rec){smalltalk.send($rec, "_id_", ["meta"]);return smalltalk.send($rec, "_with_", [(function(){(function($rec){smalltalk.send($rec, "_class_", ["title"]);return smalltalk.send($rec, "_with_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_title", [])]);})(smalltalk.send(html, "_p", []));(function($rec){smalltalk.send($rec, "_class_", ["description"]);return smalltalk.send($rec, "_with_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_description", [])]);})(smalltalk.send(html, "_p", []));(function($rec){smalltalk.send($rec, "_class_", ["author"]);smalltalk.send($rec, "_with_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_author", [])]);return smalltalk.send($rec, "_href_", [smalltalk.send("mailto:", "__comma", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_email", [])])]);})(smalltalk.send(html, "_a", []));return (function($rec){smalltalk.send($rec, "_class_", ["url"]);smalltalk.send($rec, "_with_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_url", [])]);return smalltalk.send($rec, "_href_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_url", [])]);})(smalltalk.send(html, "_a", []));})]);})(smalltalk.send(html, "_div", []));
+return smalltalk.HashedCollection._fromPairs_([smalltalk.send("arrows", "__minus_gt", [true]),smalltalk.send("keyboard", "__minus_gt", [false]),smalltalk.send("pageNumbers", "__minus_gt", [false]),smalltalk.send("closed", "__minus_gt", [true])]);
 return self;}
 }),
-smalltalk.Slide);
+smalltalk.FOSDEMBookletSlide);
+
 
 
+smalltalk.addClass('FOSDEMIntroSlide', smalltalk.FOSDEMSlide, [], 'Presentation');
 smalltalk.addMethod(
-unescape('_on_'),
+unescape('_renderSlideOn_'),
 smalltalk.method({
-selector: unescape('on%3A'),
-fn: function (aPresentation){
+selector: unescape('renderSlideOn%3A'),
+fn: function (html){
 var self=this;
-return (function($rec){smalltalk.send($rec, "_presentation_", [aPresentation]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
+(function($rec){smalltalk.send($rec, "_class_", ["section center animate"]);return smalltalk.send($rec, "_with_", [(function(){smalltalk.send(smalltalk.send(html, "_img", []), "_src_", [unescape("fosdem2012/images/amber.png")]);smalltalk.send(html, "_p_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_author", [])]);smalltalk.send(html, "_p_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_description", [])]);return smalltalk.send(html, "_p_", [(function(){return smalltalk.send(html, "_with_", [smalltalk.send(smalltalk.send(self, "_presentation", []), "_email", [])]);})]);})]);})(smalltalk.send(html, "_div", []));
 return self;}
 }),
-smalltalk.Slide.klass);
+smalltalk.FOSDEMIntroSlide);
+
 
 
 smalltalk.addClass('ESUG2011Presentation', smalltalk.Presentation, [], 'Presentation');
@@ -1770,39 +1806,3 @@ return self;}
 smalltalk.FOSDEM2012Presentation.klass);
 
 
-smalltalk.addClass('FOSDEMSlide', smalltalk.Slide, [], 'Presentation');
-smalltalk.addMethod(
-unescape('_renderSnippet_on_'),
-smalltalk.method({
-selector: unescape('renderSnippet%3Aon%3A'),
-fn: function (aString, html){
-var self=this;
-smalltalk.send((function($rec){smalltalk.send($rec, "_renderOn_", [html]);return smalltalk.send($rec, "_editor", []);})(smalltalk.send((smalltalk.SourceArea || SourceArea), "_new", [])), "_setValue_", [aString]);
-return self;}
-}),
-smalltalk.FOSDEMSlide);
-
-smalltalk.addMethod(
-unescape('_renderCodeSnippetOn_'),
-smalltalk.method({
-selector: unescape('renderCodeSnippetOn%3A'),
-fn: function (html){
-var self=this;
-smalltalk.send((function($rec){smalltalk.send($rec, "_renderOn_", [html]);return smalltalk.send($rec, "_editor", []);})(smalltalk.send((smalltalk.SourceArea || SourceArea), "_new", [])), "_setValue_", [smalltalk.send(self, "_codeSnippet", [])]);
-return self;}
-}),
-smalltalk.FOSDEMSlide);
-
-smalltalk.addMethod(
-unescape('_codeSnippet'),
-smalltalk.method({
-selector: unescape('codeSnippet'),
-fn: function (){
-var self=this;
-smalltalk.send(self, "_subclassResponsibility", []);
-return self;}
-}),
-smalltalk.FOSDEMSlide);
-
-
-

文件差异内容过多而无法显示
+ 444 - 400
examples/presentation/js/Presentation.js


+ 98 - 25
examples/presentation/st/Presentation.st

@@ -1,4 +1,98 @@
 Smalltalk current createPackage: 'Presentation' properties: #{}!
+Widget subclass: #Slide
+	instanceVariableNames: 'presentation'
+	category: 'Presentation'!
+
+!Slide methodsFor: 'accessing'!
+
+presentation
+	^presentation
+!
+
+presentation: aPresentation
+	presentation := aPresentation
+!
+
+id
+	^ self class name
+!
+
+cssClass
+	^'slide'
+!
+
+backgroundColor
+	^'#555'
+!
+
+title
+	^ self id
+! !
+
+!Slide methodsFor: 'actions'!
+
+show
+	self backgroundColor ifNotNil: [
+		(window jQuery: '#slides') css: 'background' color: self backgroundColor].
+	(window jQuery: '.slide') hide: self presentation slideTransition options: #() duration: 300.
+	(window jQuery: '#', self id) show: self presentation slideTransition options: #() duration: 300.
+! !
+
+!Slide methodsFor: 'rendering'!
+
+renderOn: html
+	html div class: self cssClass; id: self id; with: [
+		self renderSlideOn: html.
+		self renderMetaOn: html]
+!
+
+renderSlideOn: html
+!
+
+renderMetaOn: html
+	html div 
+		id: 'meta';
+		with: [
+			html p class: 'title'; with: self presentation title.
+			html p class: 'description'; with: self presentation description.
+			html a class: 'author'; with: self presentation author; href: 'mailto:', self presentation email.
+			html a class: 'url'; with: self presentation url; href: self presentation url]
+! !
+
+!Slide class methodsFor: 'instance creation'!
+
+on: aPresentation
+	^self new
+		presentation: aPresentation;
+		yourself
+! !
+
+
+Slide subclass: #FOSDEMSlide
+	instanceVariableNames: ''
+	category: 'Presentation'!
+
+!FOSDEMSlide methodsFor: 'accessing'!
+
+codeSnippet
+	self subclassResponsibility
+! !
+
+!FOSDEMSlide methodsFor: 'rendering'!
+
+renderSnippet: aString on: html
+	(SourceArea new 
+			renderOn: html;
+			editor)  setValue: aString.
+!
+
+renderCodeSnippetOn: html
+	(SourceArea new 
+			renderOn: html;
+			editor)  setValue: self codeSnippet.
+! !
+
+
 FOSDEMSlide subclass: #FOSDEMREPLSlide
 	instanceVariableNames: ''
 	category: 'Presentation'!
@@ -37,8 +131,10 @@ counter._appendToJQuery_($(''#jsToSmalltalk''));'.
 
 renderSlideOn: html
 	html h1: 'Call Smalltalk from Javascript'.
+	html div
+		id: 'jsToSmalltalk';
+		style: 'float: left'.
 	self renderCodeSnippetOn: html.
-	html div id: 'jsToSmalltalk'
 ! !
 
 FOSDEMSlide subclass: #FOSDEMCanvasSlide
@@ -423,6 +519,7 @@ open
 	^ self new open
 ! !
 
+
 Widget subclass: #Presentation
 	instanceVariableNames: 'currentSlide slides'
 	category: 'Presentation'!
@@ -1829,27 +1926,3 @@ title
 	^'Amber'
 ! !
 
-Slide subclass: #FOSDEMSlide
-	instanceVariableNames: ''
-	category: 'Presentation'!
-
-!FOSDEMSlide methodsFor: 'accessing'!
-
-codeSnippet
-	self subclassResponsibility
-! !
-
-!FOSDEMSlide methodsFor: 'rendering'!
-
-renderSnippet: aString on: html
-	(SourceArea new 
-			renderOn: html;
-			editor)  setValue: aString.
-!
-
-renderCodeSnippetOn: html
-	(SourceArea new 
-			renderOn: html;
-			editor)  setValue: self codeSnippet.
-! !
-

部分文件因为文件数量过多而无法显示