|  | @@ -1,70 +1,148 @@
 | 
	
		
			
				|  |  |  Smalltalk current createPackage: 'Presentation' properties: #{}!
 | 
	
		
			
				|  |  | -Widget subclass: #Slide
 | 
	
		
			
				|  |  | -	instanceVariableNames: 'presentation'
 | 
	
		
			
				|  |  | +Widget subclass: #Presentation
 | 
	
		
			
				|  |  | +	instanceVariableNames: 'currentSlide slides'
 | 
	
		
			
				|  |  |  	category: 'Presentation'!
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -!Slide methodsFor: 'accessing'!
 | 
	
		
			
				|  |  | +!Presentation methodsFor: 'accessing'!
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -presentation
 | 
	
		
			
				|  |  | -	^presentation
 | 
	
		
			
				|  |  | +title
 | 
	
		
			
				|  |  | +	^ self class title.
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -presentation: aPresentation
 | 
	
		
			
				|  |  | -	presentation := aPresentation
 | 
	
		
			
				|  |  | +author
 | 
	
		
			
				|  |  | +	^'John Smith'
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -id
 | 
	
		
			
				|  |  | -	^ self class name
 | 
	
		
			
				|  |  | +url
 | 
	
		
			
				|  |  | +	^'http://jtalk-project.org'
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -cssClass
 | 
	
		
			
				|  |  | -	^'slide'
 | 
	
		
			
				|  |  | +description
 | 
	
		
			
				|  |  | +	^'A presentation written in Jtalk'
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -backgroundColor
 | 
	
		
			
				|  |  | -	^'#555'
 | 
	
		
			
				|  |  | +email
 | 
	
		
			
				|  |  | +	^'john@smith.com'
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -title
 | 
	
		
			
				|  |  | -	^ self id
 | 
	
		
			
				|  |  | +slides
 | 
	
		
			
				|  |  | +	slides ifNil: [self initSlides].
 | 
	
		
			
				|  |  | +	^slides
 | 
	
		
			
				|  |  | +!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +slideClasses
 | 
	
		
			
				|  |  | +	^self subclassResponsibility
 | 
	
		
			
				|  |  | +!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +currentSlide
 | 
	
		
			
				|  |  | +	^currentSlide
 | 
	
		
			
				|  |  | +!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +currentSlide: aSlide
 | 
	
		
			
				|  |  | +	currentSlide := aSlide
 | 
	
		
			
				|  |  | +!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +slideTransition
 | 
	
		
			
				|  |  | +	^'fade'
 | 
	
		
			
				|  |  | +!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +style
 | 
	
		
			
				|  |  | +	"Should return a CSS style"
 | 
	
		
			
				|  |  | +	^ ''
 | 
	
		
			
				|  |  |  ! !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -!Slide methodsFor: 'actions'!
 | 
	
		
			
				|  |  | +!Presentation 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.
 | 
	
		
			
				|  |  | +nextSlide
 | 
	
		
			
				|  |  | +	| next |
 | 
	
		
			
				|  |  | +	self currentSlide ifNotNil: [
 | 
	
		
			
				|  |  | +		next := self slides 
 | 
	
		
			
				|  |  | +			at: (self currentSlideIndex) + 1
 | 
	
		
			
				|  |  | +			ifAbsent: [nil].
 | 
	
		
			
				|  |  | +		next ifNotNil: [currentSlide := next. next show]]
 | 
	
		
			
				|  |  | +!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +showCurrentSlide
 | 
	
		
			
				|  |  | +	self currentSlide ifNotNil: [
 | 
	
		
			
				|  |  | +		'.slide' asJQuery hide.
 | 
	
		
			
				|  |  | +		('#', self currentSlide id) asJQuery show.
 | 
	
		
			
				|  |  | +          	'title' asJQuery text: self title, ' - ', self currentSlide id.
 | 
	
		
			
				|  |  | +        ]
 | 
	
		
			
				|  |  | +!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +previousSlide
 | 
	
		
			
				|  |  | +	| next |
 | 
	
		
			
				|  |  | +	self currentSlide ifNotNil: [
 | 
	
		
			
				|  |  | +		next := self slides 
 | 
	
		
			
				|  |  | +			at: (self currentSlideIndex) - 1
 | 
	
		
			
				|  |  | +			ifAbsent: [nil].
 | 
	
		
			
				|  |  | +		next ifNotNil: [currentSlide := next. next show]]
 | 
	
		
			
				|  |  | +!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +moveAt: anInteger
 | 
	
		
			
				|  |  | +	| next |
 | 
	
		
			
				|  |  | +	next := self slides 
 | 
	
		
			
				|  |  | +			at: anInteger
 | 
	
		
			
				|  |  | +			ifAbsent: [nil].
 | 
	
		
			
				|  |  | +	next ifNotNil: [currentSlide := next. next show]
 | 
	
		
			
				|  |  | +!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +currentSlideIndex
 | 
	
		
			
				|  |  | +	^ self slides indexOf: self currentSlide ifAbsent: [1]
 | 
	
		
			
				|  |  |  ! !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -!Slide methodsFor: 'rendering'!
 | 
	
		
			
				|  |  | +!Presentation methodsFor: 'enumerating'!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +slidesDo: aBlockWithArg
 | 
	
		
			
				|  |  | +	self slides do: [:aSlide| aBlockWithArg value: aSlide].
 | 
	
		
			
				|  |  | +! !
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +!Presentation methodsFor: 'initialization'!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +initSlides
 | 
	
		
			
				|  |  | +	slides := self slideClasses collect: [:each | each on: self]
 | 
	
		
			
				|  |  | +! !
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +!Presentation methodsFor: 'rendering'!
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  renderOn: html
 | 
	
		
			
				|  |  | -	html div class: self cssClass; id: self id; with: [
 | 
	
		
			
				|  |  | -		self renderSlideOn: html.
 | 
	
		
			
				|  |  | -		self renderMetaOn: html]
 | 
	
		
			
				|  |  | +	html style
 | 
	
		
			
				|  |  | +		type: 'text/css';
 | 
	
		
			
				|  |  | +		with: self style.
 | 
	
		
			
				|  |  | +	html div 
 | 
	
		
			
				|  |  | +		id: 'slides';
 | 
	
		
			
				|  |  | +		with: [self renderSlidesOn: html]
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -renderSlideOn: html
 | 
	
		
			
				|  |  | +renderSlidesOn: html
 | 
	
		
			
				|  |  | +	self slides do: [:each | 
 | 
	
		
			
				|  |  | +		each renderOn: html].
 | 
	
		
			
				|  |  | +	currentSlide ifNil: [currentSlide := self slides first].
 | 
	
		
			
				|  |  | +	self showCurrentSlide
 | 
	
		
			
				|  |  | +! !
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Presentation class instanceVariableNames: 'current'!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +!Presentation class methodsFor: 'accessing'!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +concretePresentations
 | 
	
		
			
				|  |  | +	^ self allSubclasses select: [:aPresentationClass| aPresentationClass isConcrete]
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -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]
 | 
	
		
			
				|  |  | +title
 | 
	
		
			
				|  |  | +	^ 'Slides'
 | 
	
		
			
				|  |  |  ! !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -!Slide class methodsFor: 'instance creation'!
 | 
	
		
			
				|  |  | +!Presentation class methodsFor: 'enumerating'!
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -on: aPresentation
 | 
	
		
			
				|  |  | -	^self new
 | 
	
		
			
				|  |  | -		presentation: aPresentation;
 | 
	
		
			
				|  |  | -		yourself
 | 
	
		
			
				|  |  | +concretePresentationsDo: aBlockWithArg
 | 
	
		
			
				|  |  | +	self concretePresentations do: aBlockWithArg.
 | 
	
		
			
				|  |  | +! !
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +!Presentation class methodsFor: 'testing'!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +isConcrete
 | 
	
		
			
				|  |  | +	^false
 | 
	
		
			
				|  |  |  ! !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  Widget subclass: #PresentationNavigator
 | 
	
	
		
			
				|  | @@ -270,150 +348,72 @@ open
 | 
	
		
			
				|  |  |  	^ self new open
 | 
	
		
			
				|  |  |  ! !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -Widget subclass: #Presentation
 | 
	
		
			
				|  |  | -	instanceVariableNames: 'currentSlide slides'
 | 
	
		
			
				|  |  | +Widget subclass: #Slide
 | 
	
		
			
				|  |  | +	instanceVariableNames: 'presentation'
 | 
	
		
			
				|  |  |  	category: 'Presentation'!
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -!Presentation methodsFor: 'accessing'!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -title
 | 
	
		
			
				|  |  | -	^ self class title.
 | 
	
		
			
				|  |  | -!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -author
 | 
	
		
			
				|  |  | -	^'John Smith'
 | 
	
		
			
				|  |  | -!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -url
 | 
	
		
			
				|  |  | -	^'http://jtalk-project.org'
 | 
	
		
			
				|  |  | -!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -description
 | 
	
		
			
				|  |  | -	^'A presentation written in Jtalk'
 | 
	
		
			
				|  |  | -!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -email
 | 
	
		
			
				|  |  | -	^'john@smith.com'
 | 
	
		
			
				|  |  | -!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -slides
 | 
	
		
			
				|  |  | -	slides ifNil: [self initSlides].
 | 
	
		
			
				|  |  | -	^slides
 | 
	
		
			
				|  |  | -!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -slideClasses
 | 
	
		
			
				|  |  | -	^self subclassResponsibility
 | 
	
		
			
				|  |  | -!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -currentSlide
 | 
	
		
			
				|  |  | -	^currentSlide
 | 
	
		
			
				|  |  | -!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -currentSlide: aSlide
 | 
	
		
			
				|  |  | -	currentSlide := aSlide
 | 
	
		
			
				|  |  | -!
 | 
	
		
			
				|  |  | +!Slide methodsFor: 'accessing'!
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -slideTransition
 | 
	
		
			
				|  |  | -	^'fade'
 | 
	
		
			
				|  |  | +presentation
 | 
	
		
			
				|  |  | +	^presentation
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -style
 | 
	
		
			
				|  |  | -	"Should return a CSS style"
 | 
	
		
			
				|  |  | -	^ ''
 | 
	
		
			
				|  |  | -! !
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -!Presentation methodsFor: 'actions'!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -nextSlide
 | 
	
		
			
				|  |  | -	| next |
 | 
	
		
			
				|  |  | -	self currentSlide ifNotNil: [
 | 
	
		
			
				|  |  | -		next := self slides 
 | 
	
		
			
				|  |  | -			at: (self currentSlideIndex) + 1
 | 
	
		
			
				|  |  | -			ifAbsent: [nil].
 | 
	
		
			
				|  |  | -		next ifNotNil: [currentSlide := next. next show]]
 | 
	
		
			
				|  |  | +presentation: aPresentation
 | 
	
		
			
				|  |  | +	presentation := aPresentation
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -showCurrentSlide
 | 
	
		
			
				|  |  | -	self currentSlide ifNotNil: [
 | 
	
		
			
				|  |  | -		'.slide' asJQuery hide.
 | 
	
		
			
				|  |  | -		('#', self currentSlide id) asJQuery show.
 | 
	
		
			
				|  |  | -          	'title' asJQuery text: self title, ' - ', self currentSlide id.
 | 
	
		
			
				|  |  | -        ]
 | 
	
		
			
				|  |  | +id
 | 
	
		
			
				|  |  | +	^ self class name
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -previousSlide
 | 
	
		
			
				|  |  | -	| next |
 | 
	
		
			
				|  |  | -	self currentSlide ifNotNil: [
 | 
	
		
			
				|  |  | -		next := self slides 
 | 
	
		
			
				|  |  | -			at: (self currentSlideIndex) - 1
 | 
	
		
			
				|  |  | -			ifAbsent: [nil].
 | 
	
		
			
				|  |  | -		next ifNotNil: [currentSlide := next. next show]]
 | 
	
		
			
				|  |  | +cssClass
 | 
	
		
			
				|  |  | +	^'slide'
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -moveAt: anInteger
 | 
	
		
			
				|  |  | -	| next |
 | 
	
		
			
				|  |  | -	next := self slides 
 | 
	
		
			
				|  |  | -			at: anInteger
 | 
	
		
			
				|  |  | -			ifAbsent: [nil].
 | 
	
		
			
				|  |  | -	next ifNotNil: [currentSlide := next. next show]
 | 
	
		
			
				|  |  | +backgroundColor
 | 
	
		
			
				|  |  | +	^'#555'
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -currentSlideIndex
 | 
	
		
			
				|  |  | -	^ self slides indexOf: self currentSlide ifAbsent: [1]
 | 
	
		
			
				|  |  | -! !
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -!Presentation methodsFor: 'enumerating'!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -slidesDo: aBlockWithArg
 | 
	
		
			
				|  |  | -	self slides do: [:aSlide| aBlockWithArg value: aSlide].
 | 
	
		
			
				|  |  | +title
 | 
	
		
			
				|  |  | +	^ self id
 | 
	
		
			
				|  |  |  ! !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -!Presentation methodsFor: 'initialization'!
 | 
	
		
			
				|  |  | +!Slide methodsFor: 'actions'!
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -initSlides
 | 
	
		
			
				|  |  | -	slides := self slideClasses collect: [:each | each on: self]
 | 
	
		
			
				|  |  | +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.
 | 
	
		
			
				|  |  |  ! !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -!Presentation methodsFor: 'rendering'!
 | 
	
		
			
				|  |  | +!Slide methodsFor: 'rendering'!
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  renderOn: html
 | 
	
		
			
				|  |  | -	html style
 | 
	
		
			
				|  |  | -		type: 'text/css';
 | 
	
		
			
				|  |  | -		with: self style.
 | 
	
		
			
				|  |  | -	html div 
 | 
	
		
			
				|  |  | -		id: 'slides';
 | 
	
		
			
				|  |  | -		with: [self renderSlidesOn: html]
 | 
	
		
			
				|  |  | +	html div class: self cssClass; id: self id; with: [
 | 
	
		
			
				|  |  | +		self renderSlideOn: html.
 | 
	
		
			
				|  |  | +		self renderMetaOn: html]
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -renderSlidesOn: html
 | 
	
		
			
				|  |  | -	self slides do: [:each | 
 | 
	
		
			
				|  |  | -		each renderOn: html].
 | 
	
		
			
				|  |  | -	currentSlide ifNil: [currentSlide := self slides first].
 | 
	
		
			
				|  |  | -	self showCurrentSlide
 | 
	
		
			
				|  |  | -! !
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Presentation class instanceVariableNames: 'current'!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -!Presentation class methodsFor: 'accessing'!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -concretePresentations
 | 
	
		
			
				|  |  | -	^ self allSubclasses select: [:aPresentationClass| aPresentationClass isConcrete]
 | 
	
		
			
				|  |  | +renderSlideOn: html
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -title
 | 
	
		
			
				|  |  | -	^ 'Slides'
 | 
	
		
			
				|  |  | -! !
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -!Presentation class methodsFor: 'enumerating'!
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -concretePresentationsDo: aBlockWithArg
 | 
	
		
			
				|  |  | -	self concretePresentations do: aBlockWithArg.
 | 
	
		
			
				|  |  | +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]
 | 
	
		
			
				|  |  |  ! !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -!Presentation class methodsFor: 'testing'!
 | 
	
		
			
				|  |  | +!Slide class methodsFor: 'instance creation'!
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -isConcrete
 | 
	
		
			
				|  |  | -	^false
 | 
	
		
			
				|  |  | +on: aPresentation
 | 
	
		
			
				|  |  | +	^self new
 | 
	
		
			
				|  |  | +		presentation: aPresentation;
 | 
	
		
			
				|  |  | +		yourself
 | 
	
		
			
				|  |  |  ! !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  Slide subclass: #FOSDEMSlide
 | 
	
	
		
			
				|  | @@ -1824,6 +1824,19 @@ body {
 | 
	
		
			
				|  |  |  	-webkit-animation: rotate-horizontal 2s infinite alternate ease-in-out;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +.slide#FOSDEMContributionsSlide {
 | 
	
		
			
				|  |  | +    background: white url("esug2011/images/asterix.png") 30px 130px no-repeat;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +.slide#FOSDEMContributionsSlide .section {
 | 
	
		
			
				|  |  | +    margin-left: 250px;
 | 
	
		
			
				|  |  | +    margin-top: 200px;
 | 
	
		
			
				|  |  | +    font-family: "Droid Sans";
 | 
	
		
			
				|  |  | +    font-size: 26px;
 | 
	
		
			
				|  |  | +    font-weight: bold;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  .slide#ide {
 | 
	
		
			
				|  |  |      background: black url("esug2011/images/ide_star_wars.png") center center no-repeat;
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -1861,7 +1874,9 @@ slideClasses
 | 
	
		
			
				|  |  |  	FOSDEMTwitter.
 | 
	
		
			
				|  |  |  	FOSDEMCanvasSlide.
 | 
	
		
			
				|  |  |  	FOSDEMAmberBackend.
 | 
	
		
			
				|  |  | -	FOSDEMREPLSlide
 | 
	
		
			
				|  |  | +	FOSDEMREPLSlide.
 | 
	
		
			
				|  |  | +	FOSDEMCLISlide.
 | 
	
		
			
				|  |  | +	FOSDEMContributionsSlide
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  ! !
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1924,3 +1939,40 @@ renderTweet: tweet on: html
 | 
	
		
			
				|  |  |  		]
 | 
	
		
			
				|  |  |  ! !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +FOSDEMSlide subclass: #FOSDEMCLISlide
 | 
	
		
			
				|  |  | +	instanceVariableNames: ''
 | 
	
		
			
				|  |  | +	category: 'Presentation'!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +!FOSDEMCLISlide methodsFor: 'rendering'!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +renderSlideOn: html
 | 
	
		
			
				|  |  | +	html h1: 'CLI'.
 | 
	
		
			
				|  |  | +	html with:  'amberc compiles .st files into node programs !!'.
 | 
	
		
			
				|  |  | +	self renderCodeSnippetOn: html.
 | 
	
		
			
				|  |  | +!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +codeSnippet
 | 
	
		
			
				|  |  | +	^ 
 | 
	
		
			
				|  |  | +'cd examples/nodejs/hello
 | 
	
		
			
				|  |  | +../../../bin/amberc -m Hello Hello.st Program
 | 
	
		
			
				|  |  | +node Program.js
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Hello world from Amber in Node.js'
 | 
	
		
			
				|  |  | +! !
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +FOSDEMSlide subclass: #FOSDEMContributionsSlide
 | 
	
		
			
				|  |  | +	instanceVariableNames: ''
 | 
	
		
			
				|  |  | +	category: 'Presentation'!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +!FOSDEMContributionsSlide methodsFor: 'rendering'!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +renderSlideOn: html
 | 
	
		
			
				|  |  | +	html div class: 'section'; with: [
 | 
	
		
			
				|  |  | +		html p with: [
 | 
	
		
			
				|  |  | +			html a href: 'http://amber-lang.net'; with: 'amber-lang.net'].
 | 
	
		
			
				|  |  | +		html p with: [
 | 
	
		
			
				|  |  | +			html a href: 'https://github.com/NicolasPetton/amber'; with: 'github.com/NicolasPetton/amber'].
 | 
	
		
			
				|  |  | +		html p with: [
 | 
	
		
			
				|  |  | +			html a href: 'http://groups.google.com/group/amber-lang'; with: 'groups.google.com/group/amber-lang']]
 | 
	
		
			
				|  |  | +! !
 | 
	
		
			
				|  |  | +
 |