showoff 0.12.1 → 0.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +76 -0
- data/bin/showoff +3 -4
- data/lib/showoff/version.rb +1 -1
- data/lib/showoff_utils.rb +40 -28
- data/public/css/presenter.css +1 -4
- data/public/css/showoff.css +34 -26
- metadata +3 -3
- data/README.rdoc +0 -128
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec76aa0788c47474cae17e4e7fd001f5f59528fb
|
4
|
+
data.tar.gz: 672f97f4f81b725f1f0d68418b5a292f3061d58d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46464828f157e75fd4783ef28628ff404573f57f69d3fa87da500a5cf4be46ce62a9e9639e695cf3f451eca27ec423ab9be48137ffc75fb45317b104c2218204
|
7
|
+
data.tar.gz: 6e3c5444159ce33d30e273de6de19da2357bec6b1aa82da65a7d7b4d5cad118bd472fba0289109c5a70eb0efd2184f080e64ec443aa0823f048445351acca284
|
data/README.md
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
# Showoff Presenter
|
2
|
+
|
3
|
+
Showoff is a slideshow presentation tool with a twist. It runs as a web application,
|
4
|
+
with audience interactivity features. This means that your audience can follow along
|
5
|
+
in their own browsers, can download supplemental materials, can participate in quizzes
|
6
|
+
or polls, post questions for the presenter, etc. By default, their slideshows will
|
7
|
+
synchronize with the presenter, but they can switch to self-navigation mode.
|
8
|
+
|
9
|
+

|
10
|
+
|
11
|
+
Showoff allows you to author your presentation slides in Markdown, then organize
|
12
|
+
them with a `showoff.json` file. This file also contains metadata about
|
13
|
+
the presentation, such as the title, any password protection, etc.
|
14
|
+
|
15
|
+
Then you just run `showoff serve` in the presentation directory and open
|
16
|
+
a browser window.
|
17
|
+
|
18
|
+
|
19
|
+
## Functionality
|
20
|
+
|
21
|
+
Beyond the standard presentation functionality, Showoff provides:
|
22
|
+
|
23
|
+
* Live presenter tools:
|
24
|
+
* presenter view that display notes, tree representation of presentation, and other tools
|
25
|
+
* execute code in many languages (Javascript, Ruby, Python, Puppet, etc) live and display results
|
26
|
+
* show a pre-show slideshow while you wait to start
|
27
|
+
* let audience members download slides, code samples or other supplementary material
|
28
|
+
* show a countdown timer to help keep you on pace.
|
29
|
+
* show synchronized, hidden notes on another browser (like an iphone)
|
30
|
+
|
31
|
+
* Live audience tools:
|
32
|
+
* audience can pull up the presentation on their own browsers
|
33
|
+
* presentation is synchronized to track the presenter's
|
34
|
+
* call up a menu of sections/slides at any time to navigate directly to slides
|
35
|
+
* independent navigation so that audience members can go back or catch up as you talk
|
36
|
+
* allow the audience to provide pace feedback and ask questions of the presenter
|
37
|
+
* allow the audience to provide content feedback on the material
|
38
|
+
|
39
|
+
* Content creation and distribution functionality:
|
40
|
+
* generate supplemental material based on slide tags
|
41
|
+
* generate printed versions of the presentation including handout notes
|
42
|
+
* password protect any URL path to keep control over different views of content
|
43
|
+
* automatically generate a Table of Contents
|
44
|
+
* provide buttons for one-click issue reporting for presentation materials
|
45
|
+
* open the current slide in a Markdown editor
|
46
|
+
* open the current slide in an online editor such as Github's repository editor
|
47
|
+
* track how much time audience members spend on specific slides
|
48
|
+
* generate a static form of the presentation and upload it to Github Pages
|
49
|
+
* generate a Heroku app to serve your presentation from
|
50
|
+
* automatically generate presentations from an outline
|
51
|
+
|
52
|
+
Due to it being plain text, you can easily version control it, you can easily move
|
53
|
+
sections between presentations, and you can rearrange or remove sections easily.
|
54
|
+
|
55
|
+
|
56
|
+
## Installation
|
57
|
+
|
58
|
+
Showoff is distributed as a RubyGem. Simply install it like any other gem. Showoff
|
59
|
+
will run out of the box on OS X and most Linux distributions. To install on Windows,
|
60
|
+
you'll need to install both Ruby and the Ruby DevKit for compiling native extensions.
|
61
|
+
|
62
|
+
gem install showoff
|
63
|
+
|
64
|
+
|
65
|
+
## Documentation
|
66
|
+
|
67
|
+
Please see the [documentation](./documentation) section for further information.
|
68
|
+
|
69
|
+
You can generate a nice & pretty local copy of the documentation by running
|
70
|
+
`rake doc` in your clone of the repository. The generated HTML will be saved in
|
71
|
+
the `docs` directory.
|
72
|
+
|
73
|
+
|
74
|
+
## Contributing
|
75
|
+
|
76
|
+
See the [CONTRIB.md](CONTRIB.md) file for how to contribute to this project
|
data/bin/showoff
CHANGED
@@ -50,11 +50,10 @@ command [:create,:init] do |c|
|
|
50
50
|
c.action do |global_options,options,args|
|
51
51
|
raise "dir_name is required" if args.empty?
|
52
52
|
ShowOffUtils.create(args[0],!options[:n],options[:d])
|
53
|
-
if
|
54
|
-
puts "
|
55
|
-
else
|
56
|
-
puts "done. add slides, modify #{ShowOffUtils.presentation_config_file} and then run 'showoff serve' in #{dirname}/ dir to see slideshow"
|
53
|
+
if options[:n]
|
54
|
+
puts "Add slides and update #{args[0]}/#{ShowOffUtils.presentation_config_file}"
|
57
55
|
end
|
56
|
+
puts "Run 'showoff serve' in the #{args[0]} directory to see your new slideshow"
|
58
57
|
end
|
59
58
|
end
|
60
59
|
|
data/lib/showoff/version.rb
CHANGED
data/lib/showoff_utils.rb
CHANGED
@@ -32,22 +32,28 @@ class ShowOffUtils
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def self.create(dirname,create_samples,dir='one')
|
35
|
-
|
35
|
+
FileUtils.mkdir_p(dirname)
|
36
36
|
Dir.chdir(dirname) do
|
37
37
|
if create_samples
|
38
38
|
# create section
|
39
|
-
|
39
|
+
FileUtils.mkdir_p(dir)
|
40
40
|
|
41
41
|
# create markdown file
|
42
42
|
File.open("#{dir}/01_slide.md", 'w+') do |f|
|
43
43
|
f.puts make_slide("My Presentation")
|
44
|
+
end
|
45
|
+
File.open("#{dir}/02_slide.md", 'w+') do |f|
|
44
46
|
f.puts make_slide("Bullet Points","bullets incremental",["first point","second point","third point"])
|
45
47
|
end
|
46
48
|
end
|
47
49
|
|
50
|
+
# Create asset directories
|
51
|
+
FileUtils.mkdir_p('_files/share')
|
52
|
+
FileUtils.mkdir_p('_images')
|
53
|
+
|
48
54
|
# create showoff.json
|
49
55
|
File.open(ShowOffUtils.presentation_config_file, 'w+') do |f|
|
50
|
-
f.puts
|
56
|
+
f.puts JSON.pretty_generate({ "name" => "My Preso", "sections" => [ { "section" => dir } ]})
|
51
57
|
end
|
52
58
|
end
|
53
59
|
end
|
@@ -58,6 +64,10 @@ class ShowOffUtils
|
|
58
64
|
ShowOffUtils.presentation_config_file = File.basename(config)
|
59
65
|
end
|
60
66
|
|
67
|
+
# Create asset directories
|
68
|
+
FileUtils.mkdir_p('_files/share')
|
69
|
+
FileUtils.mkdir_p('_images')
|
70
|
+
|
61
71
|
self.showoff_sections('.').each do |filename|
|
62
72
|
next if File.exist? filename
|
63
73
|
|
@@ -138,8 +148,8 @@ class ShowOffUtils
|
|
138
148
|
# [content] slide content. Currently, if this is an array, it will make a bullet list. Otherwise
|
139
149
|
# the string value of this will be put in the slide as-is
|
140
150
|
def self.make_slide(title,classes="",content=nil)
|
141
|
-
slide = "
|
142
|
-
slide << "# #{title}
|
151
|
+
slide = "<!SLIDE #{classes}>\n"
|
152
|
+
slide << "# #{title}\n"
|
143
153
|
slide << "\n"
|
144
154
|
if content
|
145
155
|
if content.kind_of? Array
|
@@ -152,13 +162,13 @@ class ShowOffUtils
|
|
152
162
|
end
|
153
163
|
|
154
164
|
TYPES = {
|
155
|
-
:default
|
156
|
-
'title'
|
157
|
-
'bullets'
|
158
|
-
'smbullets'
|
159
|
-
'code'
|
160
|
-
'commandline' => lambda { |t,size,dontcare|
|
161
|
-
'full-page'
|
165
|
+
:default => lambda { |t,size,source,type| make_slide(t,"#{size} #{type}",source) },
|
166
|
+
'title' => lambda { |t,size,dontcare| make_slide(t,size) },
|
167
|
+
'bullets' => lambda { |t,size,dontcare| make_slide(t,"#{size} bullets incremental",["bullets","go","here"])},
|
168
|
+
'smbullets' => lambda { |t,size,dontcare| make_slide(t,"#{size} smbullets incremental",["bullets","go","here","and","here"])},
|
169
|
+
'code' => lambda { |t,size,src| make_slide(t,size,blank?(src) ? " @@@ Ruby\n code_here()" : src) },
|
170
|
+
'commandline' => lambda { |t,size,dontcare| make_slide(t,"#{size} commandline"," $ command here\n output here")},
|
171
|
+
'full-page' => lambda { |t,size,dontcare| make_slide(t,"#{size} full-page","")},
|
162
172
|
}
|
163
173
|
|
164
174
|
|
@@ -187,7 +197,7 @@ class ShowOffUtils
|
|
187
197
|
type = options[:type] || :default
|
188
198
|
slide = TYPES[type].call(title,size,source)
|
189
199
|
|
190
|
-
if options[:
|
200
|
+
if options[:name]
|
191
201
|
filename = determine_filename(options[:dir],options[:name],options[:number])
|
192
202
|
write_file(filename,slide)
|
193
203
|
else
|
@@ -233,27 +243,29 @@ class ShowOffUtils
|
|
233
243
|
end
|
234
244
|
|
235
245
|
def self.determine_filename(slide_dir,slide_name,number)
|
236
|
-
|
246
|
+
raise "Slide name is required" unless slide_name
|
247
|
+
|
237
248
|
if number
|
238
|
-
|
239
|
-
|
249
|
+
next_num = find_next_number(slide_dir)
|
250
|
+
slide_name = "#{next_num}_#{slide_name}"
|
240
251
|
end
|
252
|
+
|
253
|
+
if slide_dir
|
254
|
+
filename = "#{slide_dir}/#{slide_name}.md"
|
255
|
+
else
|
256
|
+
filename = "#{slide_name}.md"
|
257
|
+
end
|
258
|
+
|
241
259
|
filename
|
242
260
|
end
|
243
261
|
|
244
262
|
# Finds the next number in the given dir to
|
245
263
|
# name a slide as the last slide in the dir.
|
246
264
|
def self.find_next_number(slide_dir)
|
247
|
-
|
248
|
-
Dir.
|
249
|
-
|
250
|
-
|
251
|
-
max = num if num > max
|
252
|
-
end
|
253
|
-
end
|
254
|
-
max += 1
|
255
|
-
max = "0#{max}" if max < 10
|
256
|
-
max
|
265
|
+
slide_dir ||= '.'
|
266
|
+
next_num = Dir.glob("#{slide_dir}/*.md").size + 1
|
267
|
+
|
268
|
+
sprintf("%02d", next_num)
|
257
269
|
end
|
258
270
|
|
259
271
|
def self.determine_title(title,slide_name,code)
|
@@ -274,8 +286,8 @@ class ShowOffUtils
|
|
274
286
|
size = "small" if lines > 15
|
275
287
|
size = "smaller" if width > 57
|
276
288
|
size = "smaller" if lines > 19
|
277
|
-
puts "
|
278
|
-
puts "
|
289
|
+
puts "WARNING: some lines are too long and might be truncated" if width > 65
|
290
|
+
puts "WARNING: your code is too long and may not fit on a slide" if lines > 23
|
279
291
|
size
|
280
292
|
end
|
281
293
|
|
data/public/css/presenter.css
CHANGED
data/public/css/showoff.css
CHANGED
@@ -820,33 +820,41 @@ form .element {
|
|
820
820
|
*** Callouts ***
|
821
821
|
**********************/
|
822
822
|
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
.callout:before {
|
832
|
-
font-family: FontAwesome;
|
833
|
-
font-style: normal;
|
834
|
-
font-weight: normal;
|
835
|
-
font-size: 2em;
|
836
|
-
text-decoration: inherit;
|
837
|
-
padding: 0 8px 100% 8px;
|
838
|
-
float: left;
|
839
|
-
}
|
840
|
-
|
841
|
-
.callout.info:before { content: "\f05a"; } /* fa-info-circle */
|
842
|
-
.callout.warning:before { content: "\f071"; } /* fa-exclamation-triangle */
|
843
|
-
.callout.question:before { content: "\f059"; } /* fa-question-circle */
|
844
|
-
.callout.exercise:before { content: "\f41b"; } /* fa-pencil-square */
|
845
|
-
.callout.stop:before { content: "\f05e"; } /* fa-ban */
|
823
|
+
.callout {
|
824
|
+
padding: 1em;
|
825
|
+
line-height: 1.2em;
|
826
|
+
border: 1px solid #222;
|
827
|
+
border-radius: 4px;
|
828
|
+
background-color: transparent; /* because there's a warning class with a red background */
|
829
|
+
}
|
846
830
|
|
847
|
-
|
848
|
-
|
849
|
-
|
831
|
+
.callout:before {
|
832
|
+
font-family: FontAwesome;
|
833
|
+
font-style: normal;
|
834
|
+
font-weight: normal;
|
835
|
+
font-size: 2em;
|
836
|
+
text-decoration: inherit;
|
837
|
+
position: absolute;
|
838
|
+
left: 1em;
|
839
|
+
}
|
840
|
+
|
841
|
+
.callout.info,
|
842
|
+
.callout.warning,
|
843
|
+
.callout.question,
|
844
|
+
.callout.exercise,
|
845
|
+
.callout.stop {
|
846
|
+
padding-left: 3em;
|
847
|
+
}
|
848
|
+
|
849
|
+
.callout.info:before { content: "\f05a"; } /* fa-info-circle */
|
850
|
+
.callout.warning:before { content: "\f071"; } /* fa-exclamation-triangle */
|
851
|
+
.callout.question:before { content: "\f059"; } /* fa-question-circle */
|
852
|
+
.callout.exercise:before { content: "\f41b"; } /* fa-pencil-square */
|
853
|
+
.callout.stop:before { content: "\f05e"; } /* fa-ban */
|
854
|
+
|
855
|
+
/**********************
|
856
|
+
*** end callouts ***
|
857
|
+
**********************/
|
850
858
|
|
851
859
|
|
852
860
|
/* Tiny mobile devices. Larger devices scale automatically. */
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: showoff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Chacon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -180,7 +180,7 @@ executables:
|
|
180
180
|
extensions: []
|
181
181
|
extra_rdoc_files: []
|
182
182
|
files:
|
183
|
-
- README.
|
183
|
+
- README.md
|
184
184
|
- Rakefile
|
185
185
|
- LICENSE
|
186
186
|
- bin/showoff
|
data/README.rdoc
DELETED
@@ -1,128 +0,0 @@
|
|
1
|
-
= Showoff Presentation Software
|
2
|
-
|
3
|
-
Showoff is a Sinatra web app that reads simple configuration files for a
|
4
|
-
presentation. It is sort of like a Keynote web app engine - think S5 +
|
5
|
-
Slidedown. I am using it to do all my talks in 2010, because I have a deep
|
6
|
-
hatred in my heart for Keynote and yet it is by far the best in the field.
|
7
|
-
|
8
|
-
Showoff allows you to author your presentation slides in Markdown, then organize
|
9
|
-
them with a <tt>showoff.json</tt> file. This file also contains metadata about
|
10
|
-
the presentation, such as the title, any password protection, etc.
|
11
|
-
|
12
|
-
Then you just run <tt>showoff serve</tt> in the presentation directory and open
|
13
|
-
a browser window.
|
14
|
-
|
15
|
-
Showoff's capabilities include:
|
16
|
-
|
17
|
-
* Display content on slides including:
|
18
|
-
* formatted text and images
|
19
|
-
* syntax highlighted code
|
20
|
-
* bullets with incremental advancing
|
21
|
-
* simple slide transitions (instant, fade, slide in)
|
22
|
-
* replayed command line interactions
|
23
|
-
|
24
|
-
* Live presenter tools:
|
25
|
-
* presenter view that display notes, tree representation of presentation, and other tools
|
26
|
-
* execute Javascript, Coffeescript or Ruby live and display results
|
27
|
-
* show a pre-show slideshow while you wait to start
|
28
|
-
* let audience members download slides, code samples or other supplementary material
|
29
|
-
* show a timer - elapsed / remaining
|
30
|
-
* show synchronized, hidden notes on another browser (like an iphone)
|
31
|
-
|
32
|
-
* Live audience tools:
|
33
|
-
* audience can pull up the presentation on their own browsers
|
34
|
-
* call up a menu of sections/slides at any time to jump around
|
35
|
-
* independent navigation so that audience members can go back / catch up as you talk
|
36
|
-
* allow viewers to set their view of the presentation to track the presenter's
|
37
|
-
* allow the audience to provide pace feedback and ask questions of the presenter
|
38
|
-
* allow the audience to provide contend feedback on the material
|
39
|
-
|
40
|
-
* Content creation and distribution functionality:
|
41
|
-
* generate supplemental material based on slide tags
|
42
|
-
* generate printed versions of the presentation including handout notes
|
43
|
-
* password protect any URL path to keep control over different views of content
|
44
|
-
* Automatically generate a Table of Contents
|
45
|
-
|
46
|
-
Due to it being plain text, you can easily version control it, you can easily move
|
47
|
-
sections between presentations, and you can rearrange or remove sections easily.
|
48
|
-
|
49
|
-
Please see the documentation in <tt>./documentation</tt> for further information.
|
50
|
-
|
51
|
-
= Real World Usage
|
52
|
-
|
53
|
-
So far, Showoff has been used in the following presentations (and many others):
|
54
|
-
|
55
|
-
* LinuxConf.au 2010 - Wrangling Git - Scott Chacon
|
56
|
-
http://github.com/schacon/showoff-wrangling-git
|
57
|
-
* SF Ruby Meetup - Resque! - Chris Wanstrath
|
58
|
-
http://github.com/defunkt/sfruby-meetup-resque
|
59
|
-
* RORO Sydney Talk, Feb 2010 - Beyond Actions - Dave Bolton
|
60
|
-
http://github.com/lightningdb/roro-syd-beyond-actions
|
61
|
-
* LRUG's February meeting - Showing Off with Ruby - Joel Chippindale
|
62
|
-
http://github.com/mocoso/showing-off-with-ruby
|
63
|
-
* PyCon 2010 - Hg and Git; Can't we all just get along? - Scott Chacon
|
64
|
-
http://github.com/schacon/pycon-hg-git
|
65
|
-
* PdxJs Tech Talk - Asynchronous Coding For My Tiny Ruby Brain - Rick Olson
|
66
|
-
http://github.com/technoweenie/pdxjs-twitter-node
|
67
|
-
* RORO Perth Talk - Rails 3; A Brief Introduction Darcy Laycock
|
68
|
-
http://github.com/Sutto/roro-perth-rails-3
|
69
|
-
* PDXRB Tech Talk - Here's Sinatra - Jesse Cooke
|
70
|
-
http://github.com/jc00ke/pdxrb_sinatra
|
71
|
-
* Red Dirt Ruby Conference May 2010 - Plain Old Tokyo Storage - Jeremy Hinegardner
|
72
|
-
http://github.com/copiousfreetime/plain-old-tokyo-storage-presentation
|
73
|
-
http://plain-old-tokyo-storage.heroku.com/
|
74
|
-
* Lambda Lounge and StrangeLoop 2010 - JavaScript Functions : The Good Parts - Idioms for Encapsulation and Inheritance - Scott Bale
|
75
|
-
http://github.com/scottbale/JavaScript-Function-Idioms
|
76
|
-
* Open Source Bridge 2010 - Creating a low-cost clustered virtualization environment w/ Ganeti - Lance Albertson
|
77
|
-
http://github.com/ramereth/presentation-ganeti
|
78
|
-
* RailsConf 2010 - Domain-driven Test-assisted Production Rails Crisis Interventions - Rick Bradley
|
79
|
-
http://railsconf2010.rickbradley.com/ http://github.com/rick/presentation_railsconf_2010
|
80
|
-
* WebWorkersCamp - 25 promising projects in 50 minutes - Bruno Michel
|
81
|
-
http://github.com/nono/Presentations/tree/master/20100703_25_promising_projects_in_50_minutes/
|
82
|
-
* 11th Libre Software Meeting 2010 - Ruby 1.9, The future of Ruby? - Bruno Michel
|
83
|
-
http://github.com/nono/Presentations/tree/master/20100708_RMLL_Ruby_1.9/
|
84
|
-
* Lone Star PHP 2011 - Drupal - Chris Christensen
|
85
|
-
https://github.com/christianchristensen/Presentations/tree/master/20110611-lonestarphp-drupal
|
86
|
-
* Railsbridge Open Workshops - Sarah Allen, Sarah Mei, and Alex Chaffee
|
87
|
-
http://github.com/alexch/workshop
|
88
|
-
* SDRuby Lightning Talk - Readable Regexps - Ian Young
|
89
|
-
https://github.com/iangreenleaf/sdruby-lightningtalk-tregexp
|
90
|
-
* Disney HTML5 Summit 2011 - Polyfills: Shims and Shivs - Josh Dzielak
|
91
|
-
https://github.com/dzello/shims_and_shivs
|
92
|
-
* All PuppetLabs training from Summer 2012 on and many internal & external presentations
|
93
|
-
|
94
|
-
|
95
|
-
If you use it for something, please let me know so I can add it.
|
96
|
-
|
97
|
-
= Future Plans
|
98
|
-
|
99
|
-
I really want this to evolve into a dynamic presentation software server,
|
100
|
-
that gives the audience a lot of interaction into the presentation -
|
101
|
-
helping them decide dynamically what the content of the presentation is,
|
102
|
-
ask questions without interupting the presenter, etc. I want the audience
|
103
|
-
to be able to download a dynamically generated PDF of either the actual
|
104
|
-
talk that was given, or all the available slides, plus supplementary
|
105
|
-
material. And I want the presenter (me) to be able to push each
|
106
|
-
presentation to Heroku or GitHub pages for archiving super easily.
|
107
|
-
|
108
|
-
Potential future capabilities might include:
|
109
|
-
|
110
|
-
* perform simple animations of images moving between keyframes
|
111
|
-
* let audience members vote on sections (?)
|
112
|
-
* broadcast itself on Bonjour
|
113
|
-
* let you write on the slide with your mouse, madden-style via canvas
|
114
|
-
* automatically resize text to fit screen [see Alex's shrink.js]
|
115
|
-
|
116
|
-
= Why Not S5 or Slidy or Slidedown?
|
117
|
-
|
118
|
-
S5 and Slidy are really cool, and I was going to use them, but mainly I wanted
|
119
|
-
something more dynamic. I wanted Slidy + Slidedown, where I could write my
|
120
|
-
slideshows in a structured format in sections, where the sections could easily
|
121
|
-
be moved around and between presentations and could be written in Markdown. I
|
122
|
-
also like the idea of having interactive presentation system and didn't need
|
123
|
-
half the features of S5/Slidy (style based print view, auto-scaling, themes,
|
124
|
-
etc).
|
125
|
-
|
126
|
-
= Contributing
|
127
|
-
|
128
|
-
See the CONTRIB.txt file for how to contribute to this project
|