rabbit 2.1.6 → 2.1.7

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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
  3. data/doc/_config.yml +2 -2
  4. data/doc/_layouts/en.html +1 -1
  5. data/doc/_layouts/ja.html +1 -1
  6. data/doc/_layouts/skeleton.html +22 -17
  7. data/doc/css/rabbit.css +62 -4
  8. data/doc/en/development.rd +2 -2
  9. data/doc/en/news.rd +65 -2
  10. data/doc/index.html.en +15 -15
  11. data/doc/index.html.ja +20 -20
  12. data/doc/ja/development.rd +2 -2
  13. data/doc/ja/index.rd +4 -4
  14. data/doc/ja/news.rd +61 -2
  15. data/lib/rabbit/command/rabbit.rb +7 -62
  16. data/lib/rabbit/cursor-manager.rb +29 -22
  17. data/lib/rabbit/element/index-slide.rb +1 -1
  18. data/lib/rabbit/error.rb +224 -0
  19. data/lib/rabbit/frame.rb +6 -10
  20. data/lib/rabbit/graffiti/config-dialog.rb +4 -4
  21. data/lib/rabbit/gtk.rb +173 -3
  22. data/lib/rabbit/image/pdf.rb +1 -3
  23. data/lib/rabbit/image/svg.rb +1 -3
  24. data/lib/rabbit/info-window.rb +37 -30
  25. data/lib/rabbit/keys.rb +70 -70
  26. data/lib/rabbit/logger/gui.rb +3 -10
  27. data/lib/rabbit/menu.rb +22 -8
  28. data/lib/rabbit/parser.rb +4 -2
  29. data/lib/rabbit/parser/base.rb +0 -6
  30. data/lib/rabbit/parser/image.rb +4 -0
  31. data/lib/rabbit/parser/markdown.rb +33 -7
  32. data/lib/rabbit/parser/markdown/converter.rb +15 -4
  33. data/lib/rabbit/parser/pdf.rb +4 -0
  34. data/lib/rabbit/parser/rd.rb +4 -0
  35. data/lib/rabbit/parser/rd/ext/block-verbatim.rb +47 -34
  36. data/lib/rabbit/parser/wiki.rb +4 -0
  37. data/lib/rabbit/parser/wiki/output.rb +42 -15
  38. data/lib/rabbit/progress.rb +1 -1
  39. data/lib/rabbit/rabbit.rb +8 -225
  40. data/lib/rabbit/renderer/base.rb +1 -1
  41. data/lib/rabbit/renderer/display/base.rb +10 -3
  42. data/lib/rabbit/renderer/display/button-handler.rb +3 -3
  43. data/lib/rabbit/renderer/display/clutter-embed.rb +9 -9
  44. data/lib/rabbit/renderer/display/drawing-area-base.rb +19 -24
  45. data/lib/rabbit/renderer/display/drawing-area-primitive.rb +22 -13
  46. data/lib/rabbit/renderer/display/drawing-area-view-only.rb +1 -1
  47. data/lib/rabbit/renderer/display/drawing-area.rb +1 -1
  48. data/lib/rabbit/renderer/display/gesture.rb +1 -1
  49. data/lib/rabbit/renderer/display/key-handler.rb +19 -19
  50. data/lib/rabbit/renderer/display/magnifier.rb +1 -1
  51. data/lib/rabbit/renderer/display/mask.rb +16 -21
  52. data/lib/rabbit/renderer/display/search.rb +1 -1
  53. data/lib/rabbit/renderer/display/spotlight.rb +1 -1
  54. data/lib/rabbit/renderer/engine.rb +1 -18
  55. data/lib/rabbit/renderer/engine/cairo.rb +0 -6
  56. data/lib/rabbit/renderer/pixmap.rb +1 -25
  57. data/lib/rabbit/renderer/pixmap/cairo.rb +1 -9
  58. data/lib/rabbit/renderer/print/cairo.rb +1 -10
  59. data/lib/rabbit/search-window.rb +2 -2
  60. data/lib/rabbit/source-generator/markdown.rb +1 -1
  61. data/lib/rabbit/stock.rb +3 -3
  62. data/lib/rabbit/task/slide.rb +1 -1
  63. data/lib/rabbit/theme/applier.rb +1 -1
  64. data/lib/rabbit/theme/clear-blue/clear-blue.rb +0 -8
  65. data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +7 -5
  66. data/lib/rabbit/theme/image-timer/image-timer.rb +4 -1
  67. data/lib/rabbit/utils.rb +20 -3
  68. data/lib/rabbit/version.rb +1 -1
  69. data/lib/rabbit/video-window.rb +3 -3
  70. data/po/en/rabbit.edit.po +187 -199
  71. data/po/en/rabbit.po +58 -67
  72. data/po/fr/rabbit.edit.po +187 -199
  73. data/po/fr/rabbit.po +58 -67
  74. data/po/ja/rabbit.edit.po +204 -205
  75. data/po/ja/rabbit.po +64 -73
  76. data/rabbit.gemspec +2 -0
  77. data/sample/rabbit-en.md +2 -2
  78. data/sample/rabbit.md +2 -2
  79. data/test/image/test-dia.rb +2 -2
  80. data/test/image/test-eps.rb +2 -2
  81. data/test/parser/test-markdown.rb +71 -25
  82. data/test/parser/test-wiki.rb +73 -0
  83. data/test/rabbit-test-utils.rb +3 -7
  84. data/test/rabbit-test-utils/fixture.rb +24 -0
  85. data/test/rabbit-test-utils/parser.rb +48 -0
  86. data/test/source-generator/test-markdown.rb +1 -1
  87. metadata +37 -7
  88. data/README +0 -1
  89. data/doc/images/jp.png +0 -0
  90. data/doc/images/us.png +0 -0
  91. data/lib/rabbit/renderer/engine/gdk.rb +0 -230
  92. data/lib/rabbit/renderer/pixmap/gdk.rb +0 -29
@@ -1,5 +1,5 @@
1
1
  require "rabbit/renderer/display/drawing-area-primitive"
2
- require 'rabbit/renderer/display/menu'
2
+ require "rabbit/renderer/display/menu"
3
3
  require "rabbit/renderer/display/progress"
4
4
  require "rabbit/renderer/display/mask"
5
5
  require "rabbit/renderer/display/search"
@@ -239,10 +239,10 @@ module Rabbit
239
239
 
240
240
  private
241
241
  def add_widgets_to_container(container)
242
- @hbox = Gtk::HBox.new
243
- @vbox = Gtk::VBox.new
244
- @vbox.pack_start(@area, true, true, 0)
245
- @hbox.pack_end(@vbox, true, true, 0)
242
+ @hbox = Gtk::Box.new(:horizontal)
243
+ @vbox = Gtk::Box.new(:vertical)
244
+ @vbox.pack_start(@area, :expand => true, :fill => true, :padding => 0)
245
+ @hbox.pack_end(@vbox, :expand => true, :fill => true, :padding => 0)
246
246
  if block_given?
247
247
  yield(container, @hbox)
248
248
  else
@@ -259,11 +259,11 @@ module Rabbit
259
259
 
260
260
  def init_drawing_area
261
261
  super
262
- event_mask = Gdk::Event::BUTTON_PRESS_MASK
263
- event_mask |= Gdk::Event::BUTTON_RELEASE_MASK
264
- event_mask |= Gdk::Event::BUTTON1_MOTION_MASK
265
- event_mask |= Gdk::Event::BUTTON2_MOTION_MASK
266
- event_mask |= Gdk::Event::BUTTON3_MOTION_MASK
262
+ event_mask = Gdk::EventMask::BUTTON_PRESS_MASK
263
+ event_mask |= Gdk::EventMask::BUTTON_RELEASE_MASK
264
+ event_mask |= Gdk::EventMask::BUTTON1_MOTION_MASK
265
+ event_mask |= Gdk::EventMask::BUTTON2_MOTION_MASK
266
+ event_mask |= Gdk::EventMask::BUTTON3_MOTION_MASK
267
267
  @area.add_events(event_mask)
268
268
  set_key_press_event(@area)
269
269
  set_button_event(@area)
@@ -271,36 +271,31 @@ module Rabbit
271
271
  set_scroll_event(@area)
272
272
  end
273
273
 
274
- def mapped(widget)
275
- super
276
- @white = Gdk::GC.new(@drawable)
277
- @white.set_rgb_fg_color(Color.parse("white").to_gdk_color)
278
- @black = Gdk::GC.new(@drawable)
279
- @black.set_rgb_fg_color(Color.parse("black").to_gdk_color)
280
- end
281
-
282
274
  def set_motion_notify_event
283
275
  @area.signal_connect("motion_notify_event") do |widget, event|
284
276
  call_hook_procs(@motion_notify_hook_procs, event)
285
277
  end
286
278
  end
287
279
 
288
- def exposed(widget, event)
280
+ def paint(color_name)
281
+ context = @drawable.create_cairo_context
282
+ context.set_source_rgb(*Color.parse(color_name).to_gdk_rgb)
283
+ context.paint
284
+ end
285
+
286
+ def draw(widget, context)
289
287
  reload_source unless @caching
290
288
 
291
289
  if whiteouting?
292
- @drawable.draw_rectangle(@white, true, 0, 0,
293
- @size.real_width, @size.real_height)
290
+ paint("white")
294
291
  elsif blackouting?
295
- @drawable.draw_rectangle(@black, true, 0, 0,
296
- @size.real_width, @size.real_height)
292
+ paint("black")
297
293
  else
298
294
  super
299
295
  draw_graffiti
300
296
  draw_gesture
301
297
  draw_spotlight
302
298
  end
303
- true
304
299
  end
305
300
 
306
301
  def draw_slide(slide, simulation, &block)
@@ -116,7 +116,7 @@ module Rabbit
116
116
  @area = Gtk::DrawingArea.new
117
117
  @area.can_focus = true
118
118
  set_map
119
- set_expose_event
119
+ set_draw
120
120
  set_configure_event_after
121
121
  end
122
122
 
@@ -135,18 +135,27 @@ module Rabbit
135
135
  prepare_renderer(@drawable)
136
136
  end
137
137
 
138
- def set_expose_event
139
- @area.signal_connect("expose_event") do |widget, event|
140
- init_renderer(@drawable)
141
- result = exposed(widget, event)
142
- finish_renderer
143
- result
138
+ def set_draw
139
+ stop_events = false
140
+ if @area.class.signals.include?("draw")
141
+ @area.signal_connect("draw") do |widget, context|
142
+ init_context(context)
143
+ draw(widget, context)
144
+ finish_renderer
145
+ stop_events
146
+ end
147
+ else
148
+ @area.signal_connect("expose_event") do |widget, event|
149
+ init_renderer(@drawable)
150
+ draw(widget, @drawable.create_cairo_context)
151
+ finish_renderer
152
+ stop_events
153
+ end
144
154
  end
145
155
  end
146
156
 
147
- def exposed(widget, event)
157
+ def draw(widget, context)
148
158
  draw_current_slide
149
- true
150
159
  end
151
160
 
152
161
  def draw_current_slide
@@ -197,10 +206,10 @@ module Rabbit
197
206
  def grab
198
207
  Gtk.grab_add(@area)
199
208
  Gdk.pointer_grab(@area.window, false,
200
- Gdk::Event::BUTTON_PRESS_MASK |
201
- Gdk::Event::BUTTON_RELEASE_MASK |
202
- Gdk::Event::SCROLL_MASK |
203
- Gdk::Event::POINTER_MOTION_MASK,
209
+ Gdk::EventMask::BUTTON_PRESS_MASK |
210
+ Gdk::EventMask::BUTTON_RELEASE_MASK |
211
+ Gdk::EventMask::SCROLL_MASK |
212
+ Gdk::EventMask::POINTER_MOTION_MASK,
204
213
  nil, nil,
205
214
  Gdk::Event::CURRENT_TIME)
206
215
  end
@@ -5,7 +5,7 @@ module Rabbit
5
5
  module Renderer
6
6
  module Display
7
7
  class DrawingAreaViewOnly
8
- include Renderer::Engine.renderer_module
8
+ include Renderer::Engine::Cairo
9
9
  include DrawingAreaPrimitive
10
10
 
11
11
  def attach_to(window, container=nil, &block)
@@ -5,7 +5,7 @@ module Rabbit
5
5
  module Renderer
6
6
  module Display
7
7
  class DrawingArea
8
- include Renderer::Engine.renderer_module
8
+ include Renderer::Engine::Cairo
9
9
  include DrawingAreaBase
10
10
 
11
11
  class << self
@@ -15,7 +15,7 @@ module Rabbit
15
15
 
16
16
  pressed_info = nil
17
17
  target_button = 3
18
- target_event_type = Gdk::Event::Type::BUTTON_PRESS
18
+ target_event_type = Gdk::EventType::BUTTON_PRESS
19
19
  target_info = [target_button, target_event_type]
20
20
 
21
21
  add_button_press_hook do |event|
@@ -67,30 +67,30 @@ module Rabbit
67
67
  end
68
68
 
69
69
  def init_number_keys
70
- no_mod = Gdk::Window::ModifierType.new
70
+ no_mod = Gdk::ModifierType.new
71
71
  mods = Utils.combination([
72
- Gdk::Window::ModifierType::CONTROL_MASK,
73
- Gdk::Window::ModifierType::MOD1_MASK,
72
+ Gdk::ModifierType::CONTROL_MASK,
73
+ Gdk::ModifierType::MOD1_MASK,
74
74
  ])
75
75
  mods.each do |mod|
76
76
  mod = mod.inject(no_mod) do |result, item|
77
77
  result | item
78
78
  end
79
- keys = (0..9).collect{|i| Gdk::Keyval.const_get("GDK_KEY_#{i}")}
79
+ keys = (0..9).collect{|i| Gdk::Keyval.const_get("KEY_#{i}")}
80
80
  set_keys(keys, mod) do |group, obj, val, modifier|
81
- index = calc_slide_number(val - Gdk::Keyval::GDK_KEY_0, modifier)
81
+ index = calc_slide_number(val - Gdk::Keyval::KEY_0, modifier)
82
82
  @canvas.activate("JumpTo") {index}
83
83
  end
84
- keys = (0..9).collect{|i| Gdk::Keyval.const_get("GDK_KEY_KP_#{i}")}
84
+ keys = (0..9).collect{|i| Gdk::Keyval.const_get("KEY_KP_#{i}")}
85
85
  set_keys(keys, mod) do |group, obj, val, modifier|
86
- index = calc_slide_number(val - Gdk::Keyval::GDK_KEY_KP_0, modifier)
86
+ index = calc_slide_number(val - Gdk::Keyval::KEY_KP_0, modifier)
87
87
  @canvas.activate("JumpTo") {index}
88
88
  end
89
89
  end
90
90
  end
91
91
 
92
92
  def init_no_prefix_keys
93
- mod = Gdk::Window::ModifierType.new
93
+ mod = Gdk::ModifierType.new
94
94
 
95
95
  keys = Keys::QUIT_KEYS
96
96
  set_keys(keys, mod) do |group, obj, val, modifier|
@@ -155,7 +155,7 @@ module Rabbit
155
155
  end
156
156
 
157
157
  def init_shift_keys
158
- mod = Gdk::Window::SHIFT_MASK
158
+ mod = Gdk::ModifierType::SHIFT_MASK
159
159
 
160
160
  keys = Keys::Shift::WHITE_OUT_KEYS
161
161
  set_keys(keys, mod) do |group, obj, val, modifier|
@@ -188,7 +188,7 @@ module Rabbit
188
188
  end
189
189
 
190
190
  def init_control_keys
191
- mod = Gdk::Window::CONTROL_MASK
191
+ mod = Gdk::ModifierType::CONTROL_MASK
192
192
 
193
193
  keys = Keys::Control::CLEAR_GRAFFITI_KEYS
194
194
  set_keys(keys, mod) do |group, obj, val, modifier|
@@ -239,7 +239,7 @@ module Rabbit
239
239
  end
240
240
 
241
241
  def init_alt_keys
242
- mod = Gdk::Window::MOD1_MASK
242
+ mod = Gdk::ModifierType::MOD1_MASK
243
243
 
244
244
  keys = Keys::Alt::RESET_ADJUSTMENT_KEYS
245
245
  set_keys(keys, mod) do |group, obj, val, modifier|
@@ -254,16 +254,16 @@ module Rabbit
254
254
 
255
255
  def set_key_press_event(widget)
256
256
  prev_keys = [
257
- Gdk::Keyval::GDK_KEY_Up,
258
- Gdk::Keyval::GDK_KEY_Left,
259
- Gdk::Keyval::GDK_KEY_KP_Up,
260
- Gdk::Keyval::GDK_KEY_KP_Left,
257
+ Gdk::Keyval::KEY_Up,
258
+ Gdk::Keyval::KEY_Left,
259
+ Gdk::Keyval::KEY_KP_Up,
260
+ Gdk::Keyval::KEY_KP_Left,
261
261
  ]
262
262
  next_keys = [
263
- Gdk::Keyval::GDK_KEY_Right,
264
- Gdk::Keyval::GDK_KEY_Down,
265
- Gdk::Keyval::GDK_KEY_KP_Right,
266
- Gdk::Keyval::GDK_KEY_KP_Down,
263
+ Gdk::Keyval::KEY_Right,
264
+ Gdk::Keyval::KEY_Down,
265
+ Gdk::Keyval::KEY_KP_Right,
266
+ Gdk::Keyval::KEY_KP_Down,
267
267
  ]
268
268
  widget.signal_connect("key_press_event") do |_widget, event|
269
269
  handled = true
@@ -33,7 +33,7 @@ module Rabbit
33
33
  @magnifier_center_y = nil
34
34
 
35
35
  target_button = 3
36
- target_event_type = Gdk::Event::BUTTON_PRESS
36
+ target_event_type = Gdk::EventType::BUTTON_PRESS
37
37
  target_info = [target_button, target_event_type]
38
38
 
39
39
  add_button_press_hook do |event|
@@ -31,36 +31,31 @@ module Rabbit
31
31
 
32
32
  def set_hole
33
33
  if @mask_size <= 0
34
- @window.shape_combine_mask(nil, 0, 0)
34
+ @window.shape_combine_region(nil)
35
35
  else
36
- setup_mask if @mask.nil?
37
- w, h = width, height
38
- @mask.draw_rectangle(@set_gc, true, 0, 0, w, h)
39
- mw = w * @mask_size
40
- mh = h * @mask_size
41
- mx = (w - mw) / 2
42
- my = (h - mh) / 2
43
- @mask.draw_rectangle(@xor_gc, true, mx, my, mw, mh)
44
- @window.shape_combine_mask(@mask, 0, 0)
36
+ _size = size
37
+ w, h = _size.real_width, _size.real_height
38
+ @mask = Cairo::Region.new
39
+ @mask.union!(0, 0, w, h)
40
+ if @mask_size < 1.0
41
+ mw = w * @mask_size
42
+ mh = h * @mask_size
43
+ mx = (w - mw) / 2
44
+ my = (h - mh) / 2
45
+ @mask.subtract!(mx, my, mw, mh)
46
+ else
47
+ @mask.subtract!(0, 0, w - 1, h)
48
+ end
49
+ @window.shape_combine_region(@mask)
45
50
  end
51
+ redraw
46
52
  update_title # for xfwm
47
53
  end
48
54
 
49
55
  private
50
56
  def init_mask
51
- @mask = nil
52
57
  @mask_size = 0
53
58
  end
54
-
55
- def setup_mask
56
- @mask = Gdk::Pixmap.new(nil, width, height, 1)
57
- @xor_gc = Gdk::GC.new(@mask)
58
- @xor_gc.set_function(Gdk::GC::INVERT)
59
- @set_gc = Gdk::GC.new(@mask)
60
- @set_gc.set_function(Gdk::GC::SET)
61
- @clear_gc = Gdk::GC.new(@mask)
62
- @clear_gc.set_function(Gdk::GC::CLEAR)
63
- end
64
59
  end
65
60
  end
66
61
  end
@@ -55,7 +55,7 @@ module Rabbit
55
55
  entry = @search_window.entry
56
56
  direction = @search_window.direction
57
57
  entry.signal_connect("key_press_event") do |widget, key|
58
- if key.state == Gdk::Window::ModifierType.new
58
+ if key.state == Gdk::ModifierType.new
59
59
  false
60
60
  else
61
61
  Gtk::AccelGroup.activate(@window, key.keyval, key.state)
@@ -33,7 +33,7 @@ module Rabbit
33
33
  @spotlight_center_y = nil
34
34
 
35
35
  target_button = 3
36
- target_event_type = Gdk::Event::BUTTON2_PRESS
36
+ target_event_type = Gdk::EventType::BUTTON2_PRESS
37
37
  target_info = [target_button, target_event_type]
38
38
 
39
39
  add_button_press_hook do |event|
@@ -1,18 +1 @@
1
- require 'rabbit/utils'
2
-
3
- module Rabbit
4
- module Renderer
5
- module Engine
6
- extend Utils
7
-
8
- dir = ::File.join("rabbit", "renderer", "engine")
9
- require_files_under_directory_in_load_path(dir)
10
-
11
- class << self
12
- def renderer_module
13
- corresponding_module_under_module(self)
14
- end
15
- end
16
- end
17
- end
18
- end
1
+ require "rabbit/renderer/engine/cairo"
@@ -10,12 +10,6 @@ module Rabbit
10
10
  module Cairo
11
11
  include Kernel
12
12
 
13
- class << self
14
- def priority
15
- 100
16
- end
17
- end
18
-
19
13
  attr_writer :foreground, :background
20
14
 
21
15
  def alpha_available?
@@ -1,25 +1 @@
1
- require "rabbit/utils"
2
-
3
- module Rabbit
4
- module Renderer
5
- module Pixmap
6
- extend Utils
7
-
8
- class << self
9
- @initialized = false
10
- def init
11
- unless @initialized
12
- @initialized = true
13
- dir = ::File.join("rabbit", "renderer", "pixmap")
14
- require_files_under_directory_in_load_path(dir)
15
- end
16
- end
17
-
18
- def new(*args, &block)
19
- init
20
- corresponding_class_under_module(self).new(*args, &block)
21
- end
22
- end
23
- end
24
- end
25
- end
1
+ require "rabbit/renderer/pixmap/cairo"
@@ -1,6 +1,4 @@
1
- require "rabbit/utils"
2
-
3
- Rabbit::Utils.require_safe "rabbit/renderer/engine/cairo"
1
+ require "rabbit/renderer/engine/cairo"
4
2
  require "rabbit/renderer/pixmap/base"
5
3
  require "rabbit/renderer/pixmap/gl"
6
4
 
@@ -11,12 +9,6 @@ module Rabbit
11
9
  include Engine::Cairo
12
10
  include GL
13
11
  include Base
14
-
15
- class << self
16
- def priority
17
- Engine::Cairo.priority
18
- end
19
- end
20
12
  end
21
13
  end
22
14
  end
@@ -1,13 +1,4 @@
1
- require "rabbit/utils"
2
-
3
- Rabbit::Utils.require_safe "rabbit/renderer/engine/cairo"
4
-
5
- if !(Cairo.const_defined?(:PSSurface) or
6
- Cairo.const_defined?(:PDFSurface) or
7
- Cairo.const_defined?(:SVGSurface))
8
- raise LoadError
9
- end
10
-
1
+ require "rabbit/renderer/engine/cairo"
11
2
  require "rabbit/renderer/print/base"
12
3
 
13
4
  module Rabbit
@@ -40,7 +40,7 @@ module Rabbit
40
40
 
41
41
  private
42
42
  def init_window
43
- @window = Gtk::Window.new(Gtk::Window::POPUP)
43
+ @window = Gtk::Window.new(:popup)
44
44
  @window.modal = true
45
45
  init_frame
46
46
  init_box
@@ -56,7 +56,7 @@ module Rabbit
56
56
  end
57
57
 
58
58
  def init_box
59
- @box = Gtk::HBox.new
59
+ @box = Gtk::Box.new(:horizontal)
60
60
  @box.border_width = 3
61
61
  @box.show
62
62
  @frame.add(@box)