rabbit 2.1.3 → 2.1.4

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.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/doc/_config.yml +2 -2
  3. data/doc/en/faq.rd +5 -5
  4. data/doc/en/install/windows.rd +4 -49
  5. data/doc/en/news.rd +96 -0
  6. data/doc/en/slides.rd +2 -0
  7. data/doc/en/usage/rabbit-slide.rd +1 -1
  8. data/doc/ja/faq.rd +37 -32
  9. data/doc/ja/how-to-make/theme.rd +50 -50
  10. data/doc/ja/index.rd +35 -35
  11. data/doc/ja/install/windows.rd +4 -46
  12. data/doc/ja/news.rd +127 -30
  13. data/doc/ja/sample/hiki/rabbit.hiki +4 -4
  14. data/doc/ja/usage/rabbit-slide.rd +8 -8
  15. data/doc/ja/usage/rabbit-theme.rd +7 -7
  16. data/doc/ja/usage/rabbit.rd +124 -124
  17. data/lib/rabbit/action/basic.rb +1 -1
  18. data/lib/rabbit/canvas.rb +19 -19
  19. data/lib/rabbit/command/rabbit-slide.rb +5 -4
  20. data/lib/rabbit/command/rabbit.rb +2 -1
  21. data/lib/rabbit/cursor-manager.rb +14 -14
  22. data/lib/rabbit/element/poppler-slide.rb +6 -0
  23. data/lib/rabbit/element/poppler-title-slide.rb +6 -0
  24. data/lib/rabbit/element/slide-element.rb +4 -0
  25. data/lib/rabbit/element/text-renderer.rb +1 -1
  26. data/lib/rabbit/formatter.rb +9 -9
  27. data/lib/rabbit/frame.rb +5 -5
  28. data/lib/rabbit/front.rb +2 -2
  29. data/lib/rabbit/graffiti/processor.rb +9 -9
  30. data/lib/rabbit/html/template.erb +1 -1
  31. data/lib/rabbit/image/default.rb +2 -2
  32. data/lib/rabbit/image/eps.rb +5 -5
  33. data/lib/rabbit/image/pdf.rb +1 -1
  34. data/lib/rabbit/image/svg.rb +1 -1
  35. data/lib/rabbit/logger/base.rb +5 -5
  36. data/lib/rabbit/logger/stderr.rb +4 -1
  37. data/lib/rabbit/menu.rb +4 -4
  38. data/lib/rabbit/parser/ext/aafigure.rb +6 -4
  39. data/lib/rabbit/parser/ext/blockdiag.rb +5 -3
  40. data/lib/rabbit/parser/ext/entity.rb +26 -26
  41. data/lib/rabbit/parser/markdown.rb +42 -0
  42. data/lib/rabbit/parser/markdown/converter.rb +115 -18
  43. data/lib/rabbit/parser/pdf.rb +1 -5
  44. data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +2 -2
  45. data/lib/rabbit/rabbit.rb +1 -1
  46. data/lib/rabbit/renderer/base.rb +15 -23
  47. data/lib/rabbit/renderer/color.rb +3 -3
  48. data/lib/rabbit/renderer/display/base.rb +81 -6
  49. data/lib/rabbit/renderer/display/clutter-embed.rb +1 -1
  50. data/lib/rabbit/renderer/display/drawing-area-base.rb +2 -2
  51. data/lib/rabbit/renderer/display/drawing-area-primitive.rb +1 -1
  52. data/lib/rabbit/renderer/engine/cairo.rb +1 -70
  53. data/lib/rabbit/renderer/kernel.rb +11 -19
  54. data/lib/rabbit/renderer/pixmap/base.rb +3 -3
  55. data/lib/rabbit/renderer/print/base.rb +5 -5
  56. data/lib/rabbit/renderer/print/cairo.rb +10 -17
  57. data/lib/rabbit/renderer/print/layout.rb +6 -6
  58. data/lib/rabbit/renderer/print/multiple.rb +11 -14
  59. data/lib/rabbit/size.rb +65 -0
  60. data/lib/rabbit/soap/driver.rb +1 -1
  61. data/lib/rabbit/soap/server.rb +1 -1
  62. data/lib/rabbit/source/argf.rb +4 -4
  63. data/lib/rabbit/source/base.rb +2 -1
  64. data/lib/rabbit/source/file.rb +8 -8
  65. data/lib/rabbit/source/hiki.rb +1 -1
  66. data/lib/rabbit/source/memory.rb +2 -2
  67. data/lib/rabbit/source/uri.rb +4 -2
  68. data/lib/rabbit/theme/applier.rb +1 -0
  69. data/lib/rabbit/theme/default-block-quote/default-block-quote.rb +3 -1
  70. data/lib/rabbit/theme/pdf/pdf.rb +12 -6
  71. data/lib/rabbit/utils.rb +6 -6
  72. data/lib/rabbit/version.rb +1 -1
  73. data/lib/rabbit/xmlrpc/server.rb +1 -1
  74. data/po/en/rabbit.edit.po +29 -30
  75. data/po/fr/rabbit.edit.po +29 -30
  76. data/po/ja/rabbit.edit.po +29 -29
  77. data/sample/rabbit-en.hiki +3 -3
  78. data/sample/rabbit-en.md +27 -8
  79. data/sample/rabbit-en.rd +2 -2
  80. data/sample/rabbit.hiki +3 -3
  81. data/sample/rabbit.md +27 -8
  82. data/sample/rabbit.rd +2 -2
  83. data/test/parser/test-markdown.rb +210 -6
  84. data/test/test-size.rb +152 -0
  85. data/test/test-source.rb +17 -0
  86. metadata +5 -2
data/lib/rabbit/canvas.rb CHANGED
@@ -64,8 +64,8 @@ module Rabbit
64
64
  def_delegators(:@renderer, :draw_arc_by_radius, :draw_circle_by_radius)
65
65
  def_delegators(:@renderer, :draw_slide, :draw_polygon, :draw_flag)
66
66
  def_delegators(:@renderer, :draw_rounded_rectangle)
67
- def_delegators(:@renderer, :draw_rsvg_handle, :rsvg_available?)
68
- def_delegators(:@renderer, :draw_poppler_page, :poppler_available?)
67
+ def_delegators(:@renderer, :draw_rsvg_handle)
68
+ def_delegators(:@renderer, :draw_poppler_page)
69
69
 
70
70
  def_delegators(:@renderer, :draw_cube, :draw_sphere, :draw_cone)
71
71
  def_delegators(:@renderer, :draw_torus, :draw_tetrahedron)
@@ -74,18 +74,18 @@ module Rabbit
74
74
 
75
75
  def_delegators(:@renderer, :gl_compile, :gl_call_list)
76
76
  def_delegators(:@renderer, :new_list_id)
77
-
77
+
78
78
  def_delegators(:@renderer, :z_far, :z_view)
79
-
79
+
80
80
  def_delegators(:@renderer, :to_attrs, :flag_size)
81
-
81
+
82
82
  def_delegators(:@renderer, :create_pango_context, :pango_context=)
83
83
 
84
84
  def_delegators(:@renderer, :confirm)
85
85
 
86
86
  def_delegators(:@renderer, :display?, :printable?)
87
87
  def_delegators(:@renderer, :x_dpi, :y_dpi)
88
-
88
+
89
89
  def_delegators(:@renderer, :whiteouting?, :blackouting?)
90
90
  def_delegators(:@renderer, :toggle_whiteout, :toggle_blackout)
91
91
 
@@ -119,7 +119,7 @@ module Rabbit
119
119
 
120
120
  attr_reader :logger, :renderer, :last_modified
121
121
  attr_reader :comments, :actions
122
-
122
+
123
123
  attr_writer :saved_image_base_name
124
124
  attr_writer :use_gl, :allotted_time
125
125
 
@@ -177,7 +177,7 @@ module Rabbit
177
177
  @quitted = true
178
178
  @frame.quit
179
179
  end
180
-
180
+
181
181
  def front(public_level=nil)
182
182
  Front.new(self, public_level)
183
183
  end
@@ -186,12 +186,12 @@ module Rabbit
186
186
  @frame = frame if frame
187
187
  @renderer.attach_to(window, container, &block) if window
188
188
  end
189
-
189
+
190
190
  def detach
191
191
  @frame = NullFrame.new
192
192
  @renderer.detach
193
193
  end
194
-
194
+
195
195
  def title
196
196
  ts = title_slide
197
197
  if ts
@@ -304,7 +304,7 @@ module Rabbit
304
304
  def apply_theme(name=nil, &block)
305
305
  _apply_theme(name, Object.new.__id__, &block)
306
306
  end
307
-
307
+
308
308
  def theme_name
309
309
  @theme_name || default_theme || "default"
310
310
  end
@@ -377,7 +377,7 @@ module Rabbit
377
377
  current_slide.flush
378
378
  @renderer.to_pixbuf(current_slide)
379
379
  end
380
-
380
+
381
381
  def save_as_image
382
382
  process do
383
383
  generator = HTML::Generator.new(self,
@@ -386,7 +386,7 @@ module Rabbit
386
386
  @output_html,
387
387
  @output_index_html,
388
388
  @rss_base_uri)
389
- generator.pdf_filename = filename if /\.pdf/i =~ filename.to_s
389
+ generator.pdf_filename = filename if /\.pdf\z/i =~ filename.to_s
390
390
  generator.source_filename = @source_filename
391
391
  generator.save
392
392
  end
@@ -397,7 +397,7 @@ module Rabbit
397
397
  @renderer.print(&block)
398
398
  end
399
399
  end
400
-
400
+
401
401
  def fullscreened
402
402
  @renderer.post_fullscreen
403
403
  end
@@ -507,7 +507,7 @@ module Rabbit
507
507
  def first_slide?
508
508
  current_index.zero?
509
509
  end
510
-
510
+
511
511
  def last_slide?
512
512
  slide_size.zero? or current_index == (slide_size - 1)
513
513
  end
@@ -680,11 +680,11 @@ module Rabbit
680
680
  Action.update_status(self)
681
681
  end
682
682
  end
683
-
683
+
684
684
  def modified
685
685
  @last_modified = Time.now
686
686
  end
687
-
687
+
688
688
  def clear
689
689
  clear_comments
690
690
  reset_timer
@@ -703,7 +703,7 @@ module Rabbit
703
703
  @current_index = 0
704
704
  @slides = []
705
705
  end
706
-
706
+
707
707
  def clear_index_slides
708
708
  activate("ToggleIndexMode") if @index_mode
709
709
  @index_current_index = 0
@@ -728,7 +728,7 @@ module Rabbit
728
728
  @index_current_index = index_index
729
729
  @index_mode = index_mode
730
730
  end
731
-
731
+
732
732
  def default_theme
733
733
  ts = title_slide
734
734
  ts and ts.theme
@@ -309,6 +309,7 @@ module Rabbit
309
309
  def generate_dot_gitignore
310
310
  create_file(".gitignore") do |dot_gitignore|
311
311
  dot_gitignore.puts(<<-EOD)
312
+ .DS_Store
312
313
  /.tmp/
313
314
  /pkg/
314
315
  /pdf/
@@ -383,9 +384,9 @@ require "rabbit/task/slide"
383
384
  spec = nil
384
385
  Rabbit::Task::Slide.new do |task|
385
386
  spec = task.spec
386
- # task.spec.files += Dir.glob("doc/**/*.*")
387
- # task.spec.files -= Dir.glob("private/**/*.*")
388
- # task.spec.add_runtime_dependency("YOUR THEME")
387
+ # spec.files += Dir.glob("doc/**/*.*")
388
+ # spec.files -= Dir.glob("private/**/*.*")
389
+ # spec.add_runtime_dependency("YOUR THEME")
389
390
  end
390
391
 
391
392
  desc "Tag #{spec.version}"
@@ -460,7 +461,7 @@ end
460
461
  ["author", @author_conf.name, _("AUTHOR")],
461
462
  ["institution", nil, _("INSTITUTION")],
462
463
  ["content-source", nil, _("EVENT NAME")],
463
- ["date", presentation_date, Time.now.strftime("%Y/%m/%d")],
464
+ ["date", presentation_date, Time.now.strftime("%Y-%m-%d")],
464
465
  ["allotted-time", @allotted_time, "5m"],
465
466
  ["theme", nil, "default"],
466
467
  ]
@@ -667,7 +667,8 @@ module Rabbit
667
667
  exit if file_name.nil?
668
668
  rest_arguments = [file_name]
669
669
  @options.source_type = Source::File
670
- elsif rest_arguments.size == 1 and /\Ahttps?:\/\// =~ rest_arguments[0]
670
+ elsif rest_arguments.size == 1 and
671
+ /\A(?:https?|file):\/\//i =~ rest_arguments[0]
671
672
  @options.source_type = Source::URI
672
673
  else
673
674
  @options.source_type = Source::File
@@ -22,9 +22,9 @@ module Rabbit
22
22
 
23
23
  def restore(drawable, name)
24
24
  if name.nil?
25
- type = @current
25
+ type = @current
26
26
  else
27
- type = @stocks[name].pop
27
+ type = @stocks[name].pop
28
28
  end
29
29
  drawable.cursor = type_to_cursor(type)
30
30
  end
@@ -36,24 +36,24 @@ module Rabbit
36
36
  private
37
37
  def type_to_cursor(type)
38
38
  if type.nil?
39
- nil
39
+ nil
40
40
  else
41
- name = "@#{type}_cursor"
42
- unless instance_variable_defined?(name)
43
- raise UnknownCursorTypeError.new(type)
44
- end
45
- instance_variable_get(name)
41
+ name = "@#{type}_cursor"
42
+ unless instance_variable_defined?(name)
43
+ raise UnknownCursorTypeError.new(type)
44
+ end
45
+ instance_variable_get(name)
46
46
  end
47
47
  end
48
48
 
49
49
  def blank_cursor
50
50
  if @@blank_cursor.nil?
51
- source = Gdk::Pixmap.new(nil, 1, 1, 1)
52
- mask = Gdk::Pixmap.new(nil, 1, 1, 1)
53
- gc = Gdk::GC.new(source)
54
- fg = gc.foreground
55
- bg = gc.background
56
- @@blank_cursor = Gdk::Cursor.new(source, mask, fg, bg, 1, 1)
51
+ source = Gdk::Pixmap.new(nil, 1, 1, 1)
52
+ mask = Gdk::Pixmap.new(nil, 1, 1, 1)
53
+ gc = Gdk::GC.new(source)
54
+ fg = gc.foreground
55
+ bg = gc.background
56
+ @@blank_cursor = Gdk::Cursor.new(source, mask, fg, bg, 1, 1)
57
57
  end
58
58
  @@blank_cursor
59
59
  end
@@ -5,6 +5,7 @@ module Rabbit
5
5
  module Element
6
6
  class PopplerSlide < Slide
7
7
  def initialize(page)
8
+ @raw_page = page
8
9
  @page = PopplerPage.new(page)
9
10
  super(@page)
10
11
  end
@@ -20,6 +21,11 @@ module Rabbit
20
21
  def title
21
22
  (@page.text.split(/\r?\n/, 2)[0] || super).chomp
22
23
  end
24
+
25
+ def size_ratio
26
+ w, h = @raw_page.size
27
+ w.to_f / h.to_f
28
+ end
23
29
  end
24
30
  end
25
31
  end
@@ -7,6 +7,7 @@ module Rabbit
7
7
 
8
8
  def initialize(page, document)
9
9
  @document = document
10
+ @raw_page = page
10
11
  @page = PopplerPage.new(page)
11
12
  super(@page)
12
13
  end
@@ -18,6 +19,11 @@ module Rabbit
18
19
  def theme
19
20
  super || "pdf"
20
21
  end
22
+
23
+ def size_ratio
24
+ w, h = @raw_page.size
25
+ w.to_f / h.to_f
26
+ end
21
27
  end
22
28
  end
23
29
  end
@@ -21,6 +21,10 @@ module Rabbit
21
21
  @elements.first.text
22
22
  end
23
23
 
24
+ def size_ratio
25
+ self["size-ratio"]
26
+ end
27
+
24
28
  def draw(canvas, simulation=nil)
25
29
  if simulation.nil?
26
30
  begin
@@ -107,7 +107,7 @@ module Rabbit
107
107
  super
108
108
  @layout = nil
109
109
  end
110
-
110
+
111
111
  def dirty?
112
112
  super or text_dirty?
113
113
  end
@@ -5,18 +5,18 @@ module Rabbit
5
5
  module Format
6
6
 
7
7
  extend Utils
8
-
8
+
9
9
  module Formatter
10
10
  include ERB::Util
11
11
 
12
12
  def text_formatter?
13
13
  false
14
14
  end
15
-
15
+
16
16
  def html_formatter?
17
17
  false
18
18
  end
19
-
19
+
20
20
  def tagged_text(text, name, attrs)
21
21
  attrs = attrs.collect do |key, value|
22
22
  %Q[ #{h(key)}="#{h(value)}"]
@@ -45,15 +45,15 @@ module Rabbit
45
45
  def initialize(value)
46
46
  @value = value
47
47
  end
48
-
48
+
49
49
  def text_formatter?
50
50
  true
51
51
  end
52
-
52
+
53
53
  def html_formatter?
54
54
  true
55
55
  end
56
-
56
+
57
57
  def format(text)
58
58
  tagged_text(text, "span", normalize_attribute(name, @value))
59
59
  end
@@ -67,7 +67,7 @@ module Rabbit
67
67
  def normalize_attribute(name, value)
68
68
  {name => value}
69
69
  end
70
-
70
+
71
71
  def pango2css(name, value)
72
72
  css_name = PANGO2CSS[name]
73
73
  if css_name.respond_to?(:call)
@@ -77,7 +77,7 @@ module Rabbit
77
77
  end
78
78
  end
79
79
  end
80
-
80
+
81
81
  %w(font_desc font_family face size style weight variant
82
82
  stretch foreground background underline
83
83
  underline_color rise strikethrough
@@ -85,7 +85,7 @@ module Rabbit
85
85
  module_eval(<<-EOC)
86
86
  class #{to_class_name(name)}
87
87
  include SpanTextFormatter
88
-
88
+
89
89
  def name
90
90
  #{name.dump}
91
91
  end
data/lib/rabbit/frame.rb CHANGED
@@ -37,7 +37,7 @@ module Rabbit
37
37
  def destroyed?
38
38
  @window.nil? or @window.destroyed?
39
39
  end
40
-
40
+
41
41
  def quit
42
42
  @window.destroy unless destroyed?
43
43
  @window = nil
@@ -67,7 +67,7 @@ module Rabbit
67
67
  @fullscreen = false
68
68
  @window.unfullscreen
69
69
  end
70
-
70
+
71
71
  def toggle_fullscreen
72
72
  if fullscreen?
73
73
  unfullscreen
@@ -87,7 +87,7 @@ module Rabbit
87
87
  def main_window?
88
88
  @main_window
89
89
  end
90
-
90
+
91
91
  def update_title(new_title)
92
92
  @window.title = Utils.unescape_title(new_title)
93
93
  end
@@ -219,7 +219,7 @@ module Rabbit
219
219
  false
220
220
  end
221
221
  end
222
-
222
+
223
223
  class EmbedFrame < Frame
224
224
 
225
225
  def update_title(new_title)
@@ -232,7 +232,7 @@ module Rabbit
232
232
  def iconify_available?
233
233
  false
234
234
  end
235
-
235
+
236
236
  def init_gui(width, height, main_window, window_type=nil)
237
237
  @window = Gtk::EventBox.new
238
238
  @window.set_size_request(width, height)
data/lib/rabbit/front.rb CHANGED
@@ -51,9 +51,9 @@ module Rabbit
51
51
  end
52
52
 
53
53
  include MonitorMixin
54
-
54
+
55
55
  attr_reader :image_type, :public_level, :last_modified
56
-
56
+
57
57
  def initialize(canvas, public_level=nil)
58
58
  super()
59
59
  @canvas = canvas
@@ -20,28 +20,28 @@ module Rabbit
20
20
  def have_graffiti?
21
21
  not @segments.empty?
22
22
  end
23
-
23
+
24
24
  def can_undo?
25
25
  not @undo_stack.empty?
26
26
  end
27
-
27
+
28
28
  def button_press(x, y, width, height)
29
29
  @pressed = true
30
30
  @undo_index = nil
31
31
  @segments << [[x.to_f / width, y.to_f / height]]
32
32
  end
33
-
33
+
34
34
  def button_release(x, y, width, height)
35
35
  @pressed = false
36
36
  @undo_stack << [:push]
37
37
  end
38
-
38
+
39
39
  def button_motion(x, y, width, height)
40
40
  if @pressed
41
41
  @segments.last << [x.to_f / width, y.to_f / height]
42
42
  end
43
43
  end
44
-
44
+
45
45
  def draw_last_segment(renderer)
46
46
  points = @segments.last
47
47
  if points.size >= 2
@@ -55,7 +55,7 @@ module Rabbit
55
55
  @color, {:line_width => @line_width})
56
56
  end
57
57
  end
58
-
58
+
59
59
  def draw_all_segment(renderer)
60
60
  return if @segments.empty?
61
61
  args = [@color, {:line_width => @line_width, :opened => true}]
@@ -68,11 +68,11 @@ module Rabbit
68
68
  renderer.draw_lines(converted_points, *args)
69
69
  end
70
70
  end
71
-
71
+
72
72
  def dragging?
73
73
  @pressed
74
74
  end
75
-
75
+
76
76
  def clear
77
77
  @pressed = false
78
78
  @segments = []
@@ -104,7 +104,7 @@ module Rabbit
104
104
  @segments << segment
105
105
  @undo_stack << [:push]
106
106
  end
107
-
107
+
108
108
  if @undo_index > 0
109
109
  @undo_index -= 1
110
110
  else