showoff 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,66 @@
1
+ div.zoomed {
2
+ zoom: 50%;
3
+ -moz-transform: scale(50%);
4
+ }
5
+
6
+ #preso { margin-top: 20px; }
7
+
8
+ #main h2 {
9
+ text-align: left;
10
+ font-size: 1.5em;
11
+ }
12
+
13
+ #progress {
14
+ padding: 10px;
15
+ }
16
+ #slideSource {
17
+ padding: 10px;
18
+ background: #9d9;
19
+ }
20
+
21
+ #preview {
22
+ min-height: 430px;
23
+ background: #777;
24
+ }
25
+
26
+ #links {
27
+ background: #fff;
28
+ padding: 10px;
29
+ text-align: right;
30
+ }
31
+ #links a { color: #000; }
32
+
33
+ #slidemenu {
34
+ background: #fff;
35
+ padding: 10px;
36
+ }
37
+ #slidemenu ul li {
38
+ padding: 5px;
39
+ }
40
+
41
+ #sidebar { background: #ddd; }
42
+
43
+ #notes {
44
+ background: #ff9;
45
+ font-size: 1.5em;
46
+ min-height: 150px;
47
+ padding: 20px;
48
+ }
49
+
50
+ .menu {
51
+ height: 350px;
52
+ max-height: 350px;
53
+ overflow:auto;
54
+ }
55
+
56
+ .menu a {
57
+ display: block;
58
+ color: #000;
59
+ }
60
+ .menu > ul > li > ul {
61
+ padding-left: 20px;
62
+ }
63
+ .menu > ul > li > a {
64
+ padding: 10px;
65
+ background: #eee;
66
+ }
@@ -0,0 +1,129 @@
1
+ // presenter js
2
+ var w = null;
3
+
4
+ $(function(){
5
+ w = window.open('/');
6
+ // side menu accordian crap
7
+ $("#preso").bind("showoff:loaded", function (event) {
8
+ $(".menu > ul ul").hide()
9
+ $(".menu > ul a").click(function() {
10
+ if ($(this).next().is('ul')) {
11
+ $(this).next().toggle()
12
+ } else {
13
+ gotoSlide($(this).attr('rel'))
14
+ w.gotoSlide($(this).attr('rel'))
15
+ postSlide()
16
+ }
17
+ return false
18
+ }).next().hide()
19
+ })
20
+ });
21
+
22
+ function presPrevStep()
23
+ {
24
+ prevStep()
25
+ w.prevStep()
26
+ postSlide()
27
+ }
28
+
29
+ function presNextStep()
30
+ {
31
+ nextStep()
32
+ w.nextStep()
33
+ postSlide()
34
+ }
35
+
36
+ function postSlide()
37
+ {
38
+ if(currentSlide) {
39
+ var notes = w.getCurrentNotes()
40
+ var fileName = currentSlide.children().first().attr('ref')
41
+ $('#notes').text(notes)
42
+ $('#slideFile').text(fileName)
43
+ }
44
+ }
45
+
46
+ // See e.g. http://www.quirksmode.org/js/keys.html for keycodes
47
+ function keyDown(event)
48
+ {
49
+ var key = event.keyCode;
50
+
51
+ if (event.ctrlKey || event.altKey || event.metaKey)
52
+ return true;
53
+
54
+ debug('keyDown: ' + key)
55
+
56
+ if (key >= 48 && key <= 57) // 0 - 9
57
+ {
58
+ gotoSlidenum = gotoSlidenum * 10 + (key - 48);
59
+ return true;
60
+ }
61
+
62
+ if (key == 13) {
63
+ if (gotoSlidenum > 0) {
64
+ debug('go to ' + gotoSlidenum);
65
+ slidenum = gotoSlidenum - 1;
66
+ showSlide(true);
67
+ w.slidenum = gotoSlidenum - 1;
68
+ w.showSlide(true);
69
+ gotoSlidenum = 0;
70
+ } else {
71
+ debug('executeCode');
72
+ executeAnyCode();
73
+ w.executeAnyCode();
74
+ }
75
+ }
76
+
77
+ if (key == 16) // shift key
78
+ {
79
+ shiftKeyActive = true;
80
+ }
81
+
82
+ if (key == 32) // space bar
83
+ {
84
+ if (shiftKeyActive) {
85
+ presPrevStep()
86
+ } else {
87
+ presNextStep()
88
+ }
89
+ }
90
+ else if (key == 68) // 'd' for debug
91
+ {
92
+ debugMode = !debugMode
93
+ doDebugStuff()
94
+ }
95
+ else if (key == 37 || key == 33 || key == 38) // Left arrow, page up, or up arrow
96
+ {
97
+ presPrevStep()
98
+ }
99
+ else if (key == 39 || key == 34 || key == 40) // Right arrow, page down, or down arrow
100
+ {
101
+ presNextStep()
102
+ }
103
+ else if (key == 84 || key == 67) // T or C for table of contents
104
+ {
105
+ $('#navmenu').toggle().trigger('click')
106
+ }
107
+ else if (key == 90 || key == 191) // z or ? for help
108
+ {
109
+ $('#help').toggle()
110
+ }
111
+ else if (key == 66 || key == 70) // f for footer (also "b" which is what kensington remote "stop" button sends
112
+ {
113
+ toggleFooter()
114
+ }
115
+ else if (key == 78) // 'n' for notes
116
+ {
117
+ toggleNotes()
118
+ }
119
+ else if (key == 27) // esc
120
+ {
121
+ removeResults();
122
+ w.removeResults();
123
+ }
124
+ else if (key == 80) // 'p' for preshow
125
+ {
126
+ w.togglePreShow();
127
+ }
128
+ return true
129
+ }
data/public/js/showoff.js CHANGED
@@ -309,6 +309,22 @@ function toggleNotes()
309
309
  }
310
310
  }
311
311
 
312
+ function executeAnyCode()
313
+ {
314
+ var $jsCode = $('.execute .sh_javascript code:visible')
315
+ if ($jsCode.length > 0) {
316
+ executeCode.call($jsCode);
317
+ }
318
+ var $rubyCode = $('.execute .sh_ruby code:visible')
319
+ if ($rubyCode.length > 0) {
320
+ executeRuby.call($rubyCode);
321
+ }
322
+ var $coffeeCode = $('.execute .sh_coffeescript code:visible')
323
+ if ($coffeeCode.length > 0) {
324
+ executeCoffee.call($coffeeCode);
325
+ }
326
+ }
327
+
312
328
  function debug(data)
313
329
  {
314
330
  $('#debugInfo').text(data)
@@ -338,20 +354,8 @@ function keyDown(event)
338
354
  gotoSlidenum = 0;
339
355
  } else {
340
356
  debug('executeCode');
341
- var $jsCode = $('.execute .sh_javascript code:visible')
342
- if ($jsCode.length > 0) {
343
- executeCode.call($jsCode);
344
- }
345
- var $rubyCode = $('.execute .sh_ruby code:visible')
346
- if ($rubyCode.length > 0) {
347
- executeRuby.call($rubyCode);
348
- }
349
- var $coffeeCode = $('.execute .sh_coffeescript code:visible')
350
- if ($coffeeCode.length > 0) {
351
- executeCoffee.call($coffeeCode);
352
- }
357
+ executeAnyCode();
353
358
  }
354
-
355
359
  }
356
360
 
357
361
 
@@ -410,7 +414,7 @@ function keyDown(event)
410
414
  }
411
415
  else if (key == 80) // 'p' for preshow
412
416
  {
413
- runPreShow();
417
+ togglePreShow();
414
418
  }
415
419
  return true
416
420
  }
@@ -539,7 +543,7 @@ var preshow_images;
539
543
  var preshow_imagesTotal = 0;
540
544
  var preshow_des = null;
541
545
 
542
- function runPreShow() {
546
+ function togglePreShow() {
543
547
  if(preshow_running) {
544
548
  stopPreShow()
545
549
  } else {
data/views/header.erb ADDED
@@ -0,0 +1,40 @@
1
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
2
+ <title><%= @title %></title>
3
+
4
+ <meta name="viewport" content="width=device-width"/>
5
+
6
+ <link rel="stylesheet" href="<%= @asset_path %>css/reset.css" type="text/css"/>
7
+ <link rel="stylesheet" href="<%= @asset_path %>css/showoff.css" type="text/css"/>
8
+
9
+ <script type="text/javascript" src="<%= @asset_path %>js/jquery-1.4.2.min.js"></script>
10
+ <script type="text/javascript" src="<%= @asset_path %>js/jquery.cycle.all.js"></script>
11
+ <script type="text/javascript" src="<%= @asset_path %>js/jquery-print.js"></script>
12
+ <script type="text/javascript" src="<%= @asset_path %>js/jquery.batchImageLoad.js"></script>
13
+
14
+ <script type="text/javascript" src="<%= @asset_path %>js/jquery.doubletap-0.1.js"></script>
15
+
16
+ <script type="text/javascript" src="<%= @asset_path %>js/fg.menu.js"></script>
17
+ <script type="text/javascript" src="<%= @asset_path %>js/showoff.js"></script>
18
+ <script type="text/javascript" src="<%= @asset_path %>js/jTypeWriter.js"> </script>
19
+ <script type="text/javascript" src="<%= @asset_path %>js/sh_main.min.js"></script>
20
+ <script type="text/javascript" src="<%= @asset_path %>js/core.js"></script>
21
+ <script type="text/javascript" src="<%= @asset_path %>js/showoffcore.js"></script>
22
+ <script type="text/javascript" src="<%= @asset_path %>js/coffee-script.js"></script>
23
+
24
+ <link type="text/css" href="<%= @asset_path %>css/fg.menu.css" media="screen" rel="stylesheet" />
25
+ <link type="text/css" href="<%= @asset_path %>css/theme/ui.all.css" media="screen" rel="stylesheet" />
26
+ <link type="text/css" href="<%= @asset_path %>css/sh_style.css" rel="stylesheet" >
27
+
28
+ <% css_files.each do |css_file| %>
29
+ <link rel="stylesheet" href="file/<%= css_file %>" type="text/css"/>
30
+ <% end %>
31
+
32
+ <% js_files.each do |js_file| %>
33
+ <script type="text/javascript" src="file/<%= js_file %>"></script>
34
+ <% end %>
35
+
36
+ <script type="text/javascript">
37
+ $(function(){
38
+ setupPreso(<%= @slides.nil? ? "true" : "false"%>, '<%= @asset_path %>');
39
+ });
40
+ </script>
data/views/index.erb CHANGED
@@ -3,51 +3,11 @@
3
3
 
4
4
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
5
  <head>
6
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
7
- <title><%= @title %></title>
8
-
9
- <meta name="viewport" content="width=device-width"/>
10
-
11
- <link rel="stylesheet" href="<%= @asset_path %>css/reset.css" type="text/css"/>
12
- <link rel="stylesheet" href="<%= @asset_path %>css/showoff.css" type="text/css"/>
13
-
14
- <script type="text/javascript" src="<%= @asset_path %>js/jquery-1.4.2.min.js"></script>
15
- <script type="text/javascript" src="<%= @asset_path %>js/jquery.cycle.all.js"></script>
16
- <script type="text/javascript" src="<%= @asset_path %>js/jquery-print.js"></script>
17
- <script type="text/javascript" src="<%= @asset_path %>js/jquery.batchImageLoad.js"></script>
18
-
19
- <script type="text/javascript" src="<%= @asset_path %>js/jquery.doubletap-0.1.js"></script>
20
-
21
- <script type="text/javascript" src="<%= @asset_path %>js/fg.menu.js"></script>
22
- <script type="text/javascript" src="<%= @asset_path %>js/showoff.js"></script>
23
- <script type="text/javascript" src="<%= @asset_path %>js/jTypeWriter.js"> </script>
24
- <script type="text/javascript" src="<%= @asset_path %>js/sh_main.min.js"></script>
25
- <script type="text/javascript" src="<%= @asset_path %>js/core.js"></script>
26
- <script type="text/javascript" src="<%= @asset_path %>js/showoffcore.js"></script>
27
- <script type="text/javascript" src="<%= @asset_path %>js/coffee-script.js"></script>
28
-
29
- <link type="text/css" href="<%= @asset_path %>css/fg.menu.css" media="screen" rel="stylesheet" />
30
- <link type="text/css" href="<%= @asset_path %>css/theme/ui.all.css" media="screen" rel="stylesheet" />
31
- <link type="text/css" href="<%= @asset_path %>css/sh_style.css" rel="stylesheet" >
32
-
33
- <% css_files.each do |css_file| %>
34
- <link rel="stylesheet" href="file/<%= css_file %>" type="text/css"/>
35
- <% end %>
36
-
37
- <% js_files.each do |js_file| %>
38
- <script type="text/javascript" src="file/<%= js_file %>"></script>
39
- <% end %>
40
-
41
- <script type="text/javascript">
42
- $(function(){
43
- setupPreso(<%= @slides.nil? ? "true" : "false"%>, '<%= @asset_path %>');
44
- });
45
- </script>
6
+ <%= erb :header %>
46
7
  </head>
47
8
 
48
9
  <body>
49
10
 
50
-
51
11
  <a tabindex="0" href="#search-engines" class="fg-button fg-button-icon-right ui-widget ui-state-default ui-corner-all" id="navmenu"><span class="ui-icon ui-icon-triangle-1-s"></span>slides</a>
52
12
  <div id="navigation" class="hidden"></div>
53
13
 
@@ -0,0 +1,64 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <%= erb :header %>
7
+ <link rel="stylesheet" href="<%= @asset_path %>css/960.css" type="text/css"/>
8
+ <link rel="stylesheet" href="<%= @asset_path %>css/presenter.css" type="text/css"/>
9
+ <script type="text/javascript" src="<%= @asset_path %>js/presenter.js"></script>
10
+ </head>
11
+
12
+ <body>
13
+
14
+ <a tabindex="0" href="#search-engines" class="fg-button fg-button-icon-right ui-widget ui-state-default ui-corner-all" id="navmenu"><span class="ui-icon ui-icon-triangle-1-s"></span>slides</a>
15
+
16
+ <div id="help">
17
+ <table>
18
+ <tr><td class="key">z, ?</td><td>toggle help (this)</td></tr>
19
+ <tr><td class="key">space, &rarr;</td><td>next slide</td></tr>
20
+ <tr><td class="key">shift-space, &larr;</td><td>previous slide</td></tr>
21
+ <tr><td class="key">d</td><td>toggle debug mode</td></tr>
22
+ <tr><td class="key">## &lt;ret&gt;</td><td>go to slide #</td></tr>
23
+ <tr><td class="key">c, t</td><td>table of contents (vi)</td></tr>
24
+ <tr><td class="key">r</td><td>reload slides</td></tr>
25
+ <tr><td class="key">p</td><td>run preshow</td></tr>
26
+ </table>
27
+ </div>
28
+
29
+ <div id="main" class="container_12">
30
+ <div id="topbar" class="grid_12">
31
+ <div id="links">
32
+ <a href="/pdf">Generate PDF</a>
33
+ &nbsp; &nbsp;
34
+ <a href="/onepage">Single Page</a>
35
+ </div>
36
+ </div>
37
+ <div class="clear"></div>
38
+ <div id="sidebar" class="grid_4">
39
+ <div id="progress">
40
+ Slide: <span id="slideInfo"></span>
41
+ </div>
42
+ <div id="slideSource">
43
+ Source: <span id="slideFile"></span>
44
+ </div>
45
+ <div id="debugInfo"></div>
46
+ <div id="slidemenu">
47
+ <div id="navigation" class="menu"></div>
48
+ </div>
49
+ </div>
50
+ <div id="preview" class="grid_8">
51
+ <div id="preso" class="zoomed">loading presentation...</div>
52
+ </div>
53
+ <div class="clear"></div>
54
+ <div id="bottom" class="grid_12">
55
+ <div id="notes"></div>
56
+ </div>
57
+ </div>
58
+
59
+ <div id="slides" class="offscreen" <%= 'style="display:none;"' if @slides %>>
60
+ <%= @slides %>
61
+ </div>
62
+
63
+ </body>
64
+ </html>
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: showoff
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 6
8
+ - 7
9
9
  - 0
10
- version: 0.6.0
10
+ version: 0.7.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Scott Chacon
@@ -131,14 +131,17 @@ files:
131
131
  - LICENSE
132
132
  - bin/showoff
133
133
  - lib/commandline_parser.rb
134
- - lib/princely.rb
135
134
  - lib/showoff.rb
136
135
  - lib/showoff_utils.rb
136
+ - views/header.erb
137
137
  - views/index.erb
138
138
  - views/onepage.erb
139
+ - views/presenter.erb
140
+ - public/css/960.css
139
141
  - public/css/fg.menu.css
140
142
  - public/css/onepage.css
141
143
  - public/css/pdf.css
144
+ - public/css/presenter.css
142
145
  - public/css/reset.css
143
146
  - public/css/sh_style.css
144
147
  - public/css/showoff.css
@@ -183,6 +186,7 @@ files:
183
186
  - public/js/jquery.ws-0.3pre.js
184
187
  - public/js/jTypeWriter.js
185
188
  - public/js/onepage.js
189
+ - public/js/presenter.js
186
190
  - public/js/sh_lang/sh_bison.min.js
187
191
  - public/js/sh_lang/sh_c.min.js
188
192
  - public/js/sh_lang/sh_caml.min.js