showoff 0.12.1 → 0.12.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
![Presenter view](images/presenter.png)
|
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","![Image Description](image/ref.png)")},
|
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
|