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.
- checksums.yaml +4 -4
- data/doc/_config.yml +2 -2
- data/doc/en/faq.rd +5 -5
- data/doc/en/install/windows.rd +4 -49
- data/doc/en/news.rd +96 -0
- data/doc/en/slides.rd +2 -0
- data/doc/en/usage/rabbit-slide.rd +1 -1
- data/doc/ja/faq.rd +37 -32
- data/doc/ja/how-to-make/theme.rd +50 -50
- data/doc/ja/index.rd +35 -35
- data/doc/ja/install/windows.rd +4 -46
- data/doc/ja/news.rd +127 -30
- data/doc/ja/sample/hiki/rabbit.hiki +4 -4
- data/doc/ja/usage/rabbit-slide.rd +8 -8
- data/doc/ja/usage/rabbit-theme.rd +7 -7
- data/doc/ja/usage/rabbit.rd +124 -124
- data/lib/rabbit/action/basic.rb +1 -1
- data/lib/rabbit/canvas.rb +19 -19
- data/lib/rabbit/command/rabbit-slide.rb +5 -4
- data/lib/rabbit/command/rabbit.rb +2 -1
- data/lib/rabbit/cursor-manager.rb +14 -14
- data/lib/rabbit/element/poppler-slide.rb +6 -0
- data/lib/rabbit/element/poppler-title-slide.rb +6 -0
- data/lib/rabbit/element/slide-element.rb +4 -0
- data/lib/rabbit/element/text-renderer.rb +1 -1
- data/lib/rabbit/formatter.rb +9 -9
- data/lib/rabbit/frame.rb +5 -5
- data/lib/rabbit/front.rb +2 -2
- data/lib/rabbit/graffiti/processor.rb +9 -9
- data/lib/rabbit/html/template.erb +1 -1
- data/lib/rabbit/image/default.rb +2 -2
- data/lib/rabbit/image/eps.rb +5 -5
- data/lib/rabbit/image/pdf.rb +1 -1
- data/lib/rabbit/image/svg.rb +1 -1
- data/lib/rabbit/logger/base.rb +5 -5
- data/lib/rabbit/logger/stderr.rb +4 -1
- data/lib/rabbit/menu.rb +4 -4
- data/lib/rabbit/parser/ext/aafigure.rb +6 -4
- data/lib/rabbit/parser/ext/blockdiag.rb +5 -3
- data/lib/rabbit/parser/ext/entity.rb +26 -26
- data/lib/rabbit/parser/markdown.rb +42 -0
- data/lib/rabbit/parser/markdown/converter.rb +115 -18
- data/lib/rabbit/parser/pdf.rb +1 -5
- data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +2 -2
- data/lib/rabbit/rabbit.rb +1 -1
- data/lib/rabbit/renderer/base.rb +15 -23
- data/lib/rabbit/renderer/color.rb +3 -3
- data/lib/rabbit/renderer/display/base.rb +81 -6
- data/lib/rabbit/renderer/display/clutter-embed.rb +1 -1
- data/lib/rabbit/renderer/display/drawing-area-base.rb +2 -2
- data/lib/rabbit/renderer/display/drawing-area-primitive.rb +1 -1
- data/lib/rabbit/renderer/engine/cairo.rb +1 -70
- data/lib/rabbit/renderer/kernel.rb +11 -19
- data/lib/rabbit/renderer/pixmap/base.rb +3 -3
- data/lib/rabbit/renderer/print/base.rb +5 -5
- data/lib/rabbit/renderer/print/cairo.rb +10 -17
- data/lib/rabbit/renderer/print/layout.rb +6 -6
- data/lib/rabbit/renderer/print/multiple.rb +11 -14
- data/lib/rabbit/size.rb +65 -0
- data/lib/rabbit/soap/driver.rb +1 -1
- data/lib/rabbit/soap/server.rb +1 -1
- data/lib/rabbit/source/argf.rb +4 -4
- data/lib/rabbit/source/base.rb +2 -1
- data/lib/rabbit/source/file.rb +8 -8
- data/lib/rabbit/source/hiki.rb +1 -1
- data/lib/rabbit/source/memory.rb +2 -2
- data/lib/rabbit/source/uri.rb +4 -2
- data/lib/rabbit/theme/applier.rb +1 -0
- data/lib/rabbit/theme/default-block-quote/default-block-quote.rb +3 -1
- data/lib/rabbit/theme/pdf/pdf.rb +12 -6
- data/lib/rabbit/utils.rb +6 -6
- data/lib/rabbit/version.rb +1 -1
- data/lib/rabbit/xmlrpc/server.rb +1 -1
- data/po/en/rabbit.edit.po +29 -30
- data/po/fr/rabbit.edit.po +29 -30
- data/po/ja/rabbit.edit.po +29 -29
- data/sample/rabbit-en.hiki +3 -3
- data/sample/rabbit-en.md +27 -8
- data/sample/rabbit-en.rd +2 -2
- data/sample/rabbit.hiki +3 -3
- data/sample/rabbit.md +27 -8
- data/sample/rabbit.rd +2 -2
- data/test/parser/test-markdown.rb +210 -6
- data/test/test-size.rb +152 -0
- data/test/test-source.rb +17 -0
- 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
|
68
|
-
def_delegators(:@renderer, :draw_poppler_page
|
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
|
-
#
|
387
|
-
#
|
388
|
-
#
|
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
|
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
|
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
|
-
|
25
|
+
type = @current
|
26
26
|
else
|
27
|
-
|
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
|
-
|
39
|
+
nil
|
40
40
|
else
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
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
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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
|
data/lib/rabbit/formatter.rb
CHANGED
@@ -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
@@ -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
|