rabbit 2.1.2 → 2.1.3
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/Rakefile +26 -0
- data/data/locale/en/LC_MESSAGES/rabbit.mo +0 -0
- data/data/locale/fr/LC_MESSAGES/rabbit.mo +0 -0
- data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
- data/doc/_config.yml +2 -3
- data/doc/en/development.rd +9 -9
- data/doc/en/faq.rd +132 -0
- data/doc/en/hiki.hiki +2 -1
- data/doc/en/index.rd +19 -29
- data/doc/en/install/homebrew.rd +1 -0
- data/doc/en/install/windows.rd +6 -3
- data/doc/en/news.rd +68 -1
- data/doc/en/rd.rd +2 -1
- data/doc/en/sample/hiki/rabbit.hiki +2 -1
- data/doc/en/usage.rd +4 -0
- data/doc/en/usage/platform/os-x.rd +13 -0
- data/doc/images/screenshots/en/blue-circle-raw.png +0 -0
- data/doc/images/screenshots/en/blue-circle.png +0 -0
- data/doc/images/screenshots/en/clear-blue-raw.png +0 -0
- data/doc/images/screenshots/en/clear-blue.png +0 -0
- data/doc/images/screenshots/en/cozmixng-raw.png +0 -0
- data/doc/images/screenshots/en/cozmixng.png +0 -0
- data/doc/images/screenshots/en/dark-gradation-raw.png +0 -0
- data/doc/images/screenshots/en/dark-gradation.png +0 -0
- data/doc/images/screenshots/en/day-white-raw.png +0 -0
- data/doc/images/screenshots/en/day-white.png +0 -0
- data/doc/images/screenshots/en/debian-raw.png +0 -0
- data/doc/images/screenshots/en/debian.png +0 -0
- data/doc/images/screenshots/en/green-circle-raw.png +0 -0
- data/doc/images/screenshots/en/green-circle.png +0 -0
- data/doc/images/screenshots/en/night-black-raw.png +0 -0
- data/doc/images/screenshots/en/night-black.png +0 -0
- data/doc/images/screenshots/en/rabbit-raw.png +0 -0
- data/doc/images/screenshots/en/rabbit.png +0 -0
- data/doc/images/screenshots/en/ranguba-raw.png +0 -0
- data/doc/images/screenshots/en/ranguba.png +0 -0
- data/doc/images/screenshots/en/red-frame-raw.png +0 -0
- data/doc/images/screenshots/en/red-frame.png +0 -0
- data/doc/images/screenshots/en/ruby-gnome2-raw.png +0 -0
- data/doc/images/screenshots/en/ruby-gnome2.png +0 -0
- data/doc/images/screenshots/en/rubykaigi2011-raw.png +0 -0
- data/doc/images/screenshots/en/rubykaigi2011.png +0 -0
- data/doc/images/screenshots/ja/blue-circle-raw.png +0 -0
- data/doc/images/screenshots/ja/blue-circle.png +0 -0
- data/doc/images/screenshots/ja/clear-blue-raw.png +0 -0
- data/doc/images/screenshots/ja/clear-blue.png +0 -0
- data/doc/images/screenshots/ja/cozmixng-raw.png +0 -0
- data/doc/images/screenshots/ja/cozmixng.png +0 -0
- data/doc/images/screenshots/ja/dark-gradation-raw.png +0 -0
- data/doc/images/screenshots/ja/dark-gradation.png +0 -0
- data/doc/images/screenshots/ja/day-white-raw.png +0 -0
- data/doc/images/screenshots/ja/day-white.png +0 -0
- data/doc/images/screenshots/ja/debian-raw.png +0 -0
- data/doc/images/screenshots/ja/debian.png +0 -0
- data/doc/images/screenshots/ja/green-circle-raw.png +0 -0
- data/doc/images/screenshots/ja/green-circle.png +0 -0
- data/doc/images/screenshots/ja/night-black-raw.png +0 -0
- data/doc/images/screenshots/ja/night-black.png +0 -0
- data/doc/images/screenshots/ja/rabbit-raw.png +0 -0
- data/doc/images/screenshots/ja/rabbit.png +0 -0
- data/doc/images/screenshots/ja/ranguba-raw.png +0 -0
- data/doc/images/screenshots/ja/ranguba.png +0 -0
- data/doc/images/screenshots/ja/red-frame-raw.png +0 -0
- data/doc/images/screenshots/ja/red-frame.png +0 -0
- data/doc/images/screenshots/ja/ruby-gnome2-raw.png +0 -0
- data/doc/images/screenshots/ja/ruby-gnome2.png +0 -0
- data/doc/images/screenshots/ja/rubykaigi2011-raw.png +0 -0
- data/doc/images/screenshots/ja/rubykaigi2011.png +0 -0
- data/doc/ja/hiki.hiki +2 -1
- data/doc/ja/install/windows.rd +6 -3
- data/doc/ja/news.rd +68 -1
- data/doc/ja/rd.rd +2 -1
- data/doc/ja/sample/hiki/rabbit.hiki +2 -1
- data/lib/rabbit/canvas.rb +1 -5
- data/lib/rabbit/command/rabbit.rb +9 -2
- data/lib/rabbit/element/container-element.rb +5 -3
- data/lib/rabbit/element/slide-element.rb +11 -0
- data/lib/rabbit/gtk.rb +25 -0
- data/lib/rabbit/image-data-loader.rb +46 -0
- data/lib/rabbit/image/base.rb +9 -11
- data/lib/rabbit/image/default.rb +1 -2
- data/lib/rabbit/image/eps.rb +2 -2
- data/lib/rabbit/image/gimp.rb +1 -2
- data/lib/rabbit/image/pdf.rb +1 -0
- data/lib/rabbit/info-window.rb +62 -21
- data/lib/rabbit/logger.rb +20 -4
- data/lib/rabbit/logger/gui.rb +5 -8
- data/lib/rabbit/logger/stderr.rb +5 -9
- data/lib/rabbit/parser/rd.rb +1 -1
- data/lib/rabbit/renderer/display/button-handler.rb +2 -2
- data/lib/rabbit/renderer/display/drawing-area-base.rb +2 -6
- data/lib/rabbit/renderer/display/progress.rb +1 -1
- data/lib/rabbit/renderer/engine/cairo.rb +17 -13
- data/lib/rabbit/slideshare.rb +1 -1
- data/lib/rabbit/source/base.rb +24 -40
- data/lib/rabbit/task/slide.rb +1 -1
- data/lib/rabbit/theme/applier.rb +8 -3
- data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +4 -1
- data/lib/rabbit/theme/default-text/default-text.rb +0 -10
- data/lib/rabbit/theme/slide-show/slide-show.rb +2 -2
- data/lib/rabbit/theme/syntax-highlighting/syntax-highlighting.rb +6 -0
- data/lib/rabbit/theme/tag/tag.rb +4 -0
- data/lib/rabbit/version.rb +2 -2
- data/po/en/rabbit.edit.po +2675 -0
- data/po/en/rabbit.po +3 -862
- data/po/fr/rabbit.edit.po +2674 -0
- data/po/fr/rabbit.po +3 -862
- data/po/ja/rabbit.edit.po +2737 -0
- data/po/ja/rabbit.po +4 -864
- data/sample/image-reflection.rab +12 -0
- data/sample/note.rab +31 -0
- data/sample/rabbit-slide-show-logo.svg +597 -0
- data/test/parser/test-rd.rb +45 -0
- data/test/test-source.rb +78 -30
- metadata +767 -756
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Copyright (C) 2014 Kouhei Sutou <kou@cozmixng.org>
|
|
2
|
+
#
|
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
6
|
+
# (at your option) any later version.
|
|
7
|
+
#
|
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
+
# GNU General Public License for more details.
|
|
12
|
+
#
|
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
|
+
|
|
17
|
+
require "gdk_pixbuf2"
|
|
18
|
+
|
|
19
|
+
module Rabbit
|
|
20
|
+
class ImageDataLoader
|
|
21
|
+
attr_reader :width, :height, :pixbuf
|
|
22
|
+
def initialize(data)
|
|
23
|
+
@width = 0
|
|
24
|
+
@height = 0
|
|
25
|
+
@pixbuf = nil
|
|
26
|
+
@data = data
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def load
|
|
30
|
+
loader = Gdk::PixbufLoader.new
|
|
31
|
+
id = loader.signal_connect("size_prepared") do |l, width, height|
|
|
32
|
+
@width = width
|
|
33
|
+
@height = height
|
|
34
|
+
end
|
|
35
|
+
begin
|
|
36
|
+
loader.last_write(@data)
|
|
37
|
+
rescue Gdk::PixbufError => error
|
|
38
|
+
loader.close rescue Gdk::PixbufError
|
|
39
|
+
raise ImageLoadError.new(error.message)
|
|
40
|
+
end
|
|
41
|
+
loader.signal_handler_disconnect(id)
|
|
42
|
+
@pixbuf = loader.pixbuf
|
|
43
|
+
@pixbuf
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
data/lib/rabbit/image/base.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require "gdk_pixbuf2"
|
|
2
2
|
|
|
3
3
|
require "rabbit/utils"
|
|
4
|
+
require "rabbit/image-data-loader"
|
|
4
5
|
|
|
5
6
|
module Rabbit
|
|
6
7
|
module ImageManipulable
|
|
@@ -84,20 +85,17 @@ module Rabbit
|
|
|
84
85
|
key.to_s.gsub(/-/, "_")
|
|
85
86
|
end
|
|
86
87
|
|
|
87
|
-
def
|
|
88
|
-
loader =
|
|
89
|
-
id = loader.signal_connect("size_prepared") do |l, width, height|
|
|
90
|
-
@width = width
|
|
91
|
-
@height = height
|
|
92
|
-
end
|
|
88
|
+
def load_data(data)
|
|
89
|
+
loader = ImageDataLoader.new(data)
|
|
93
90
|
begin
|
|
94
|
-
loader.
|
|
95
|
-
rescue
|
|
96
|
-
loader.close rescue Gdk::PixbufError
|
|
91
|
+
loader.load
|
|
92
|
+
rescue ImageLoadError
|
|
97
93
|
raise ImageLoadError.new("#{@filename}: #{$!.message}")
|
|
98
94
|
end
|
|
99
|
-
|
|
100
|
-
loader
|
|
95
|
+
|
|
96
|
+
@width = loader.width
|
|
97
|
+
@height = loader.height
|
|
98
|
+
loader.pixbuf
|
|
101
99
|
end
|
|
102
100
|
end
|
|
103
101
|
end
|
data/lib/rabbit/image/default.rb
CHANGED
data/lib/rabbit/image/eps.rb
CHANGED
|
@@ -34,7 +34,7 @@ module Rabbit
|
|
|
34
34
|
|
|
35
35
|
private
|
|
36
36
|
def update_size
|
|
37
|
-
@pixbuf = load_image
|
|
37
|
+
@pixbuf = load_image
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
def load_image(width=nil, height=nil)
|
|
@@ -43,7 +43,7 @@ module Rabbit
|
|
|
43
43
|
rescue EPSCanNotHandleError
|
|
44
44
|
eps_to_pnm(width, height)
|
|
45
45
|
end
|
|
46
|
-
|
|
46
|
+
load_data(data)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def eps_to_png(width=nil, height=nil)
|
data/lib/rabbit/image/gimp.rb
CHANGED
|
@@ -41,8 +41,7 @@ EOC
|
|
|
41
41
|
if GIMP_COMMANDS.any? {|gimp| run(gimp, *args); File.exist?(png_path)}
|
|
42
42
|
png_file.open
|
|
43
43
|
png_file.binmode
|
|
44
|
-
|
|
45
|
-
@pixbuf = loader.pixbuf
|
|
44
|
+
@pixbuf = load_data(png_file.read)
|
|
46
45
|
else
|
|
47
46
|
raise GIMPCanNotHandleError.new("gimp #{args.join(' ')}",
|
|
48
47
|
GIMP_COMMANDS)
|
data/lib/rabbit/image/pdf.rb
CHANGED
data/lib/rabbit/info-window.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'erb'
|
|
2
2
|
|
|
3
|
+
require 'rabbit/gtk'
|
|
3
4
|
require 'rabbit/dependency-canvas'
|
|
4
5
|
require 'rabbit/renderer/display/drawing-area-view-only'
|
|
5
6
|
require 'rabbit/renderer/display/hook-handler'
|
|
@@ -22,7 +23,8 @@ module Rabbit
|
|
|
22
23
|
def initialize(canvas)
|
|
23
24
|
@canvas = canvas
|
|
24
25
|
@window = nil
|
|
25
|
-
@
|
|
26
|
+
@timer_id = nil
|
|
27
|
+
@note_area = nil
|
|
26
28
|
init_hook_handler
|
|
27
29
|
init_key_handler
|
|
28
30
|
init_button_handler
|
|
@@ -48,7 +50,8 @@ module Rabbit
|
|
|
48
50
|
@window.destroy
|
|
49
51
|
@window = @window_destroy_id = nil
|
|
50
52
|
@canvas_widgets = @outer_box = nil
|
|
51
|
-
@
|
|
53
|
+
GLib::Source.remove(@timer_id) if @timer_id
|
|
54
|
+
@timer_id = nil
|
|
52
55
|
@previous_canvas = @current_canvas = @next_canvas = nil
|
|
53
56
|
end
|
|
54
57
|
|
|
@@ -148,7 +151,7 @@ module Rabbit
|
|
|
148
151
|
|
|
149
152
|
def init_widgets_on_note_mode(width, height)
|
|
150
153
|
init_timer_label(width * (1.0 / 5.0), height * (2.0 / 5.0))
|
|
151
|
-
|
|
154
|
+
init_note_area
|
|
152
155
|
@outer_box = Gtk::VBox.new
|
|
153
156
|
|
|
154
157
|
current_box = Gtk::HBox.new
|
|
@@ -168,8 +171,8 @@ module Rabbit
|
|
|
168
171
|
@outer_box.pack_start(current_box, false, false)
|
|
169
172
|
|
|
170
173
|
bottom_box = Gtk::HBox.new
|
|
171
|
-
bottom_box.pack_start(@
|
|
172
|
-
@outer_box.pack_start(bottom_box, true,
|
|
174
|
+
bottom_box.pack_start(@note_area, true, true, 20)
|
|
175
|
+
@outer_box.pack_start(bottom_box, true, true, 20)
|
|
173
176
|
|
|
174
177
|
@outer_box.show
|
|
175
178
|
end
|
|
@@ -184,34 +187,72 @@ module Rabbit
|
|
|
184
187
|
@timer_label = Gtk::Label.new
|
|
185
188
|
@timer_label.justify = :center
|
|
186
189
|
@timer_label.markup = markupped_timer_label(width, height)
|
|
187
|
-
@timer_started = false
|
|
188
|
-
check_timer
|
|
189
190
|
end
|
|
190
191
|
|
|
191
|
-
def
|
|
192
|
-
@
|
|
193
|
-
@
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
192
|
+
def init_note_area
|
|
193
|
+
@note_area = Gtk::DrawingArea.new
|
|
194
|
+
@note_area.signal_connect("expose-event") do |area, event|
|
|
195
|
+
draw_text_as_large_as_possible(area, note_text)
|
|
196
|
+
Gdk::Event::PROPAGATE
|
|
197
|
+
end
|
|
197
198
|
end
|
|
198
199
|
|
|
199
200
|
def update(index=nil)
|
|
200
|
-
|
|
201
|
-
|
|
201
|
+
start_timer if @timer_id.nil?
|
|
202
|
+
@note_area.queue_draw if @note_area
|
|
202
203
|
adjust_slide(index)
|
|
203
204
|
end
|
|
204
205
|
|
|
205
|
-
def
|
|
206
|
-
|
|
206
|
+
def note_text
|
|
207
|
+
note = @canvas.current_slide["note"]
|
|
208
|
+
return note if note.nil?
|
|
209
|
+
note.gsub(/\\n/, "\n")
|
|
207
210
|
end
|
|
208
211
|
|
|
209
|
-
def
|
|
210
|
-
return if
|
|
212
|
+
def draw_text_as_large_as_possible(area, markupped_text)
|
|
213
|
+
return if markupped_text.nil?
|
|
214
|
+
|
|
215
|
+
area_width, area_height = area.window.size
|
|
216
|
+
|
|
217
|
+
context = area.window.create_cairo_context
|
|
218
|
+
layout = context.create_pango_layout
|
|
219
|
+
layout.context.resolution = @canvas.font_resolution
|
|
220
|
+
attributes, text = Pango.parse_markup(markupped_text)
|
|
221
|
+
layout.text = text
|
|
222
|
+
layout.attributes = attributes
|
|
223
|
+
layout.width = area_width * Pango::SCALE
|
|
224
|
+
layout.wrap = :word_char
|
|
225
|
+
set_as_large_as_font_description(layout, area_height)
|
|
226
|
+
|
|
227
|
+
context.update_pango_layout(layout)
|
|
228
|
+
context.show_pango_layout(layout)
|
|
229
|
+
end
|
|
211
230
|
|
|
212
|
-
|
|
231
|
+
def set_as_large_as_font_description(layout, max_height)
|
|
232
|
+
family = "Sans"
|
|
233
|
+
size = 14
|
|
234
|
+
last_font_description = nil
|
|
235
|
+
loop do
|
|
236
|
+
font_description = Pango::FontDescription.new("#{family} #{size}")
|
|
237
|
+
layout.font_description = font_description
|
|
238
|
+
layout_height = layout.pixel_size[1]
|
|
239
|
+
break if layout_height > max_height
|
|
240
|
+
last_font_description = font_description
|
|
241
|
+
size = [size * 1.2, size + 5].min
|
|
242
|
+
end
|
|
243
|
+
last_font_description ||= Pango::FontDescription.new("#{family} #{size}")
|
|
244
|
+
layout.font_description = last_font_description
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
def start_timer
|
|
248
|
+
@timer_id = GLib::Timeout.add(1000) do
|
|
213
249
|
@timer_label.markup = markupped_timer_label if showing?
|
|
214
|
-
|
|
250
|
+
if showing? and @canvas.rest_time
|
|
251
|
+
GLib::Source::CONTINUE
|
|
252
|
+
else
|
|
253
|
+
@timer_id = nil
|
|
254
|
+
GLib::Source::REMOVE
|
|
255
|
+
end
|
|
215
256
|
end
|
|
216
257
|
end
|
|
217
258
|
|
data/lib/rabbit/logger.rb
CHANGED
|
@@ -1,19 +1,35 @@
|
|
|
1
|
+
# Copyright (C) 2004-2014 Kouhei Sutou <kou@cozmixng.org>
|
|
2
|
+
#
|
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
6
|
+
# (at your option) any later version.
|
|
7
|
+
#
|
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
+
# GNU General Public License for more details.
|
|
12
|
+
#
|
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
|
+
|
|
1
17
|
require "rabbit/utils"
|
|
2
18
|
|
|
19
|
+
require "rabbit/logger/stderr"
|
|
20
|
+
require "rabbit/logger/gui"
|
|
21
|
+
|
|
3
22
|
module Rabbit
|
|
4
23
|
module Logger
|
|
5
24
|
extend Utils
|
|
6
25
|
|
|
7
|
-
dir = ::File.join("rabbit", "logger")
|
|
8
|
-
require_files_under_directory_in_load_path(dir)
|
|
9
|
-
|
|
10
26
|
class << self
|
|
11
27
|
def types
|
|
12
28
|
collect_classes_under_module(self)
|
|
13
29
|
end
|
|
14
30
|
|
|
15
31
|
def default
|
|
16
|
-
if Utils.support_console_output?
|
|
32
|
+
if Utils.support_console_output?
|
|
17
33
|
Logger::STDERR.new
|
|
18
34
|
else
|
|
19
35
|
Logger::GUI.new
|
data/lib/rabbit/logger/gui.rb
CHANGED
|
@@ -54,24 +54,21 @@ module Rabbit
|
|
|
54
54
|
append("#{prog_name}: ", "prog_name")
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
def log_message(message)
|
|
59
|
-
unless GLib.utf8_validate(message)
|
|
60
|
-
message = GLib.filename_to_utf8(message)
|
|
61
|
-
end
|
|
62
59
|
append(message, "message")
|
|
63
60
|
append("\n")
|
|
64
61
|
end
|
|
65
62
|
|
|
66
63
|
def append(text, *tags)
|
|
67
64
|
iter = @buffer.get_iter_at_offset(-1)
|
|
68
|
-
@buffer.insert_with_tags(iter, text, *tags)
|
|
65
|
+
@buffer.insert_with_tags(iter, text.encode("UTF-8"), *tags)
|
|
69
66
|
end
|
|
70
67
|
|
|
71
68
|
def title
|
|
72
69
|
_("Rabbit Error Dialog")
|
|
73
70
|
end
|
|
74
|
-
|
|
71
|
+
|
|
75
72
|
def init_dialog(width=@width, height=@height)
|
|
76
73
|
flags = 0
|
|
77
74
|
buttons = [
|
|
@@ -93,7 +90,7 @@ module Rabbit
|
|
|
93
90
|
true
|
|
94
91
|
end
|
|
95
92
|
end
|
|
96
|
-
|
|
93
|
+
|
|
97
94
|
def set_dialog_response
|
|
98
95
|
@dialog.signal_connect("response") do |widget, event|
|
|
99
96
|
case event
|
|
@@ -112,7 +109,7 @@ module Rabbit
|
|
|
112
109
|
false
|
|
113
110
|
end
|
|
114
111
|
end
|
|
115
|
-
|
|
112
|
+
|
|
116
113
|
def set_dialog_accel_group
|
|
117
114
|
accel_group = Gtk::AccelGroup.new
|
|
118
115
|
mod = Gdk::Window::ModifierType.new
|
data/lib/rabbit/logger/stderr.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "glib2"
|
|
2
2
|
|
|
3
3
|
require "rabbit/logger/base"
|
|
4
4
|
|
|
@@ -9,19 +9,15 @@ module Rabbit
|
|
|
9
9
|
|
|
10
10
|
private
|
|
11
11
|
def do_log(severity, prog_name, message)
|
|
12
|
-
# TODO: Remove me. It is workaround until Ruby/GLib2 2.0.3 is released.
|
|
13
|
-
if message.encoding == Encoding::ASCII_8BIT
|
|
14
|
-
message.force_encoding("UTF-8")
|
|
15
|
-
end
|
|
16
12
|
begin
|
|
17
13
|
message = message.encode("locale")
|
|
18
14
|
rescue EncodingError
|
|
19
15
|
format = _("can't convert to current locale from UTF-8: %s")
|
|
20
|
-
|
|
16
|
+
$stderr.puts(format % message.encode(format.encoding))
|
|
21
17
|
end
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
$stderr.puts(format_severity(severity))
|
|
19
|
+
$stderr.print("[#{prog_name}]: ") if prog_name
|
|
20
|
+
$stderr.puts(message)
|
|
25
21
|
exit if severity >= Severity::FATAL
|
|
26
22
|
end
|
|
27
23
|
end
|
data/lib/rabbit/parser/rd.rb
CHANGED
|
@@ -129,9 +129,9 @@ module Rabbit
|
|
|
129
129
|
else
|
|
130
130
|
@button_handling = true
|
|
131
131
|
@button_event_coming = false
|
|
132
|
-
|
|
132
|
+
GLib::Timeout.add(BUTTON_PRESS_ACCEPTING_TIME) do
|
|
133
133
|
if @button_event_coming
|
|
134
|
-
|
|
134
|
+
GLib::Timeout.add(BUTTON_PRESS_ACCEPTING_TIME) do
|
|
135
135
|
call_button_handler
|
|
136
136
|
@button_handling = false
|
|
137
137
|
false
|
|
@@ -305,12 +305,8 @@ module Rabbit
|
|
|
305
305
|
|
|
306
306
|
def draw_slide(slide, simulation, &block)
|
|
307
307
|
super do |*args|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
## the below codes are workaround for
|
|
311
|
-
## http://redmine.ruby-lang.org/issues/show/2600
|
|
312
|
-
yield(*args)
|
|
313
|
-
magnify {yield(*args)} unless simulation
|
|
308
|
+
block.call(*args)
|
|
309
|
+
magnify {block.call(*args)} unless simulation
|
|
314
310
|
end
|
|
315
311
|
end
|
|
316
312
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "cairo"
|
|
2
|
+
require "stringio"
|
|
2
3
|
|
|
3
|
-
require
|
|
4
|
+
require "rabbit/image-data-loader"
|
|
5
|
+
require "rabbit/renderer/kernel"
|
|
4
6
|
|
|
5
7
|
module Cairo
|
|
6
8
|
class Context
|
|
@@ -340,10 +342,10 @@ module Rabbit
|
|
|
340
342
|
end
|
|
341
343
|
|
|
342
344
|
def make_layout(text)
|
|
343
|
-
|
|
345
|
+
attributes, text = Pango.parse_markup(text)
|
|
344
346
|
layout = @context.create_pango_layout
|
|
345
347
|
layout.text = text
|
|
346
|
-
layout.
|
|
348
|
+
layout.attributes = attributes
|
|
347
349
|
set_font_resolution(layout.context)
|
|
348
350
|
@context.update_pango_layout(layout)
|
|
349
351
|
layout
|
|
@@ -488,15 +490,17 @@ module Rabbit
|
|
|
488
490
|
return unless params
|
|
489
491
|
|
|
490
492
|
dim = handle.dimensions
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
493
|
+
::Cairo::ImageSurface.new(:argb32, width, height) do |surface|
|
|
494
|
+
::Cairo::Context.new(surface) do |context|
|
|
495
|
+
context.scale(width / dim.width, height / dim.height)
|
|
496
|
+
context.render_rsvg_handle(handle)
|
|
497
|
+
png = StringIO.new
|
|
498
|
+
context.target.write_to_png(png)
|
|
499
|
+
loader = ImageDataLoader.new(png.string)
|
|
500
|
+
loader.load
|
|
501
|
+
_draw_reflected_pixbuf(loader.pixbuf, x, y, params)
|
|
502
|
+
end
|
|
503
|
+
end
|
|
500
504
|
end
|
|
501
505
|
|
|
502
506
|
def set_line_options(params)
|