rabbit 2.1.6 → 2.1.7

Sign up to get free protection for your applications and to get access to all the features.
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)