rabbit 3.0.5 → 4.0.1

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 (241) 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/en/news.rd +63 -0
  5. data/doc/ja/news.rd +63 -0
  6. data/lib/rabbit/actions.rb +446 -0
  7. data/lib/rabbit/author-configuration.rb +7 -10
  8. data/lib/rabbit/canvas.rb +74 -42
  9. data/lib/rabbit/command/rabbit-slide.rb +11 -13
  10. data/lib/rabbit/command/rabbit-theme.rb +10 -12
  11. data/lib/rabbit/command/rabbit.rb +31 -43
  12. data/lib/rabbit/console.rb +20 -22
  13. data/lib/rabbit/dependency-canvas.rb +2 -2
  14. data/lib/rabbit/element/base.rb +93 -6
  15. data/lib/rabbit/element/block-element.rb +17 -1
  16. data/lib/rabbit/element/block.rb +17 -1
  17. data/lib/rabbit/element/container-element.rb +59 -3
  18. data/lib/rabbit/element/description-list.rb +18 -2
  19. data/lib/rabbit/element/enum-list.rb +18 -2
  20. data/lib/rabbit/element/footnote.rb +18 -2
  21. data/lib/rabbit/element/image-title-slide.rb +17 -1
  22. data/lib/rabbit/element/image.rb +32 -2
  23. data/lib/rabbit/element/index-slide.rb +29 -13
  24. data/lib/rabbit/element/item-list.rb +18 -2
  25. data/lib/rabbit/element/method-list.rb +18 -2
  26. data/lib/rabbit/element/poppler-page.rb +17 -1
  27. data/lib/rabbit/element/poppler-slide.rb +18 -2
  28. data/lib/rabbit/element/poppler-title-slide.rb +18 -2
  29. data/lib/rabbit/element/preformatted.rb +18 -2
  30. data/lib/rabbit/element/slide-element.rb +29 -2
  31. data/lib/rabbit/element/slide.rb +18 -2
  32. data/lib/rabbit/element/syntax-highlighting.rb +17 -1
  33. data/lib/rabbit/element/table.rb +19 -3
  34. data/lib/rabbit/element/tag.rb +18 -2
  35. data/lib/rabbit/element/text-block-element.rb +18 -2
  36. data/lib/rabbit/element/text-container-element.rb +41 -2
  37. data/lib/rabbit/element/text-element.rb +17 -1
  38. data/lib/rabbit/element/text-renderer.rb +17 -1
  39. data/lib/rabbit/element/text.rb +4 -4
  40. data/lib/rabbit/element/title-slide.rb +19 -3
  41. data/lib/rabbit/element/video.rb +157 -56
  42. data/lib/rabbit/element.rb +20 -20
  43. data/lib/rabbit/formatter.rb +18 -1
  44. data/lib/rabbit/frame.rb +101 -93
  45. data/lib/rabbit/front.rb +11 -4
  46. data/lib/rabbit/gem-finder.rb +4 -8
  47. data/lib/rabbit/gem-pusher.rb +4 -4
  48. data/lib/rabbit/gesture/handler.rb +26 -21
  49. data/lib/rabbit/graffiti/config-dialog.rb +18 -2
  50. data/lib/rabbit/graffiti/processor.rb +20 -4
  51. data/lib/rabbit/gtk.rb +48 -14
  52. data/lib/rabbit/html/generator.rb +18 -18
  53. data/{test/helper/fixture.rb → lib/rabbit/icon.rb} +16 -6
  54. data/lib/rabbit/image/base.rb +7 -6
  55. data/lib/rabbit/image/default.rb +17 -1
  56. data/lib/rabbit/image/dia.rb +2 -2
  57. data/lib/rabbit/image/eps.rb +16 -2
  58. data/lib/rabbit/image/gimp.rb +28 -11
  59. data/lib/rabbit/image/mermaid.rb +3 -3
  60. data/lib/rabbit/image/pdf.rb +3 -3
  61. data/lib/rabbit/image/svg.rb +2 -2
  62. data/lib/rabbit/image.rb +8 -8
  63. data/lib/rabbit/info-window.rb +55 -18
  64. data/lib/rabbit/key-handler.rb +381 -0
  65. data/lib/rabbit/keys.rb +31 -2
  66. data/lib/rabbit/logger/base.rb +17 -1
  67. data/lib/rabbit/logger/gui.rb +20 -4
  68. data/lib/rabbit/logger/stderr.rb +16 -2
  69. data/lib/rabbit/logger.rb +4 -4
  70. data/lib/rabbit/menu.rb +200 -220
  71. data/lib/rabbit/parser/base.rb +17 -1
  72. data/lib/rabbit/parser/ext/aafigure.rb +17 -1
  73. data/lib/rabbit/parser/ext/blockdiag.rb +17 -1
  74. data/lib/rabbit/parser/ext/charty.rb +2 -2
  75. data/lib/rabbit/parser/ext/coderay.rb +20 -4
  76. data/lib/rabbit/parser/ext/enscript.rb +31 -15
  77. data/lib/rabbit/parser/ext/entity.rb +17 -1
  78. data/lib/rabbit/parser/ext/image.rb +6 -6
  79. data/lib/rabbit/parser/ext/inline.rb +17 -1
  80. data/lib/rabbit/parser/ext/rouge.rb +7 -4
  81. data/lib/rabbit/parser/ext/tex.rb +18 -2
  82. data/lib/rabbit/parser/ext/video.rb +4 -4
  83. data/lib/rabbit/parser/image.rb +20 -4
  84. data/lib/rabbit/parser/markdown/converter.rb +12 -13
  85. data/lib/rabbit/parser/markdown.rb +18 -2
  86. data/lib/rabbit/parser/pause-support.rb +1 -0
  87. data/lib/rabbit/parser/pdf.rb +3 -3
  88. data/lib/rabbit/parser/rd/ext/base.rb +20 -4
  89. data/lib/rabbit/parser/rd/ext/block-verbatim.rb +24 -28
  90. data/lib/rabbit/parser/rd/ext/character-reference.rb +18 -2
  91. data/lib/rabbit/parser/rd/ext/image.rb +3 -3
  92. data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +6 -6
  93. data/lib/rabbit/parser/rd/ext/refer.rb +18 -2
  94. data/lib/rabbit/parser/rd/ext/video.rb +19 -2
  95. data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +24 -8
  96. data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +18 -2
  97. data/lib/rabbit/parser/rd/visitor.rb +18 -2
  98. data/lib/rabbit/parser/rd.rb +18 -2
  99. data/lib/rabbit/parser/wiki/output.rb +25 -28
  100. data/lib/rabbit/parser/wiki.rb +18 -2
  101. data/lib/rabbit/parser.rb +6 -6
  102. data/lib/rabbit/path-manipulatable.rb +4 -4
  103. data/lib/rabbit/progress.rb +17 -1
  104. data/lib/rabbit/properties.rb +3 -3
  105. data/lib/rabbit/rabbit.rb +15 -7
  106. data/lib/rabbit/readme-parser.rb +4 -6
  107. data/lib/rabbit/renderer/base.rb +44 -36
  108. data/lib/rabbit/renderer/color.rb +18 -2
  109. data/lib/rabbit/renderer/display/base.rb +10 -12
  110. data/lib/rabbit/renderer/display/button-handler.rb +141 -60
  111. data/lib/rabbit/renderer/display/cursor.rb +4 -5
  112. data/lib/rabbit/renderer/display/drawing-area-base.rb +32 -48
  113. data/lib/rabbit/renderer/display/drawing-area-primitive.rb +10 -61
  114. data/lib/rabbit/renderer/display/drawing-area-view-only.rb +19 -8
  115. data/lib/rabbit/renderer/display/drawing-area.rb +19 -15
  116. data/lib/rabbit/renderer/display/gesture.rb +9 -9
  117. data/lib/rabbit/renderer/display/graffiti.rb +22 -13
  118. data/lib/rabbit/renderer/display/info.rb +22 -2
  119. data/lib/rabbit/renderer/display/magnifier.rb +30 -17
  120. data/lib/rabbit/renderer/display/mask.rb +17 -1
  121. data/lib/rabbit/renderer/display/menu.rb +27 -3
  122. data/lib/rabbit/renderer/display/motion-handler.rb +45 -0
  123. data/lib/rabbit/renderer/display/progress.rb +17 -2
  124. data/lib/rabbit/renderer/display/scroll-handler.rb +60 -13
  125. data/lib/rabbit/renderer/display/search.rb +19 -2
  126. data/lib/rabbit/renderer/display/spotlight.rb +39 -25
  127. data/lib/rabbit/renderer/display.rb +16 -36
  128. data/lib/rabbit/renderer/engine/cairo.rb +4 -11
  129. data/lib/rabbit/renderer/engine.rb +17 -1
  130. data/lib/rabbit/renderer/kernel.rb +2 -20
  131. data/lib/rabbit/renderer/offscreen.rb +8 -14
  132. data/lib/rabbit/renderer/print-layout.rb +2 -2
  133. data/lib/rabbit/renderer/printer.rb +9 -16
  134. data/lib/rabbit/renderer/scene-background-widget.rb +95 -0
  135. data/lib/rabbit/renderer/scene-node-widget.rb +63 -0
  136. data/lib/rabbit/renderer/scene.rb +508 -0
  137. data/lib/rabbit/renderer.rb +6 -6
  138. data/lib/rabbit/search-window.rb +18 -2
  139. data/lib/rabbit/searcher.rb +15 -1
  140. data/lib/rabbit/size.rb +9 -1
  141. data/lib/rabbit/slide-configuration.rb +11 -14
  142. data/lib/rabbit/soap/driver.rb +20 -4
  143. data/lib/rabbit/soap/server.rb +17 -1
  144. data/lib/rabbit/source/argf.rb +5 -5
  145. data/lib/rabbit/source/base.rb +5 -6
  146. data/lib/rabbit/source/file.rb +5 -5
  147. data/lib/rabbit/source/memory.rb +20 -4
  148. data/lib/rabbit/source/uri.rb +9 -11
  149. data/lib/rabbit/source-generator/hiki.rb +2 -7
  150. data/lib/rabbit/source-generator/markdown.rb +2 -7
  151. data/lib/rabbit/source-generator/rd.rb +2 -7
  152. data/lib/rabbit/source-generator.rb +4 -4
  153. data/lib/rabbit/source.rb +5 -5
  154. data/lib/rabbit/task/slide.rb +13 -11
  155. data/lib/rabbit/task/theme.rb +8 -11
  156. data/lib/rabbit/task.rb +3 -3
  157. data/lib/rabbit/theme/applier.rb +27 -11
  158. data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
  159. data/lib/rabbit/theme/color-circle/color-circle.rb +18 -1
  160. data/lib/rabbit/theme/cozmixng/cozmixng.rb +1 -1
  161. data/lib/rabbit/theme/default/default.rb +1 -0
  162. data/lib/rabbit/theme/default-icon/default-icon.rb +1 -1
  163. data/lib/rabbit/theme/default-item-mark-setup/default-item-mark-setup.rb +17 -1
  164. data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +9 -1
  165. data/lib/rabbit/theme/enishi-green/enishi-green.rb +1 -1
  166. data/lib/rabbit/theme/entry.rb +10 -12
  167. data/lib/rabbit/theme/icon/icon.rb +3 -8
  168. data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +5 -5
  169. data/lib/rabbit/theme/image-timer/image-timer.rb +3 -3
  170. data/lib/rabbit/theme/lightning-simple/lightning-simple.rb +1 -0
  171. data/lib/rabbit/theme/lightning-talk/lightning-talk.rb +1 -0
  172. data/lib/rabbit/theme/manager.rb +19 -9
  173. data/lib/rabbit/theme/rabbit-icon/rabbit-icon.rb +1 -1
  174. data/lib/rabbit/theme/ranguba/ranguba.rb +1 -1
  175. data/lib/rabbit/theme/red-frame/red-frame.rb +6 -2
  176. data/lib/rabbit/theme/ruby-gnome2/ruby-gnome2.rb +1 -0
  177. data/lib/rabbit/theme/ruby-gnome2-icon/ruby-gnome2-icon.rb +1 -1
  178. data/lib/rabbit/theme/searcher.rb +23 -7
  179. data/lib/rabbit/theme/slide-number/slide-number.rb +1 -1
  180. data/lib/rabbit/theme/slide-show/slide-show.rb +1 -1
  181. data/lib/rabbit/theme/table/table.rb +2 -2
  182. data/lib/rabbit/theme/video/property.rb +3 -0
  183. data/lib/rabbit/theme/video/video.rb +5 -0
  184. data/lib/rabbit/theme-configuration.rb +9 -11
  185. data/lib/rabbit/utils.rb +12 -94
  186. data/lib/rabbit/version.rb +1 -1
  187. data/lib/rabbit/xmlrpc/client.rb +17 -1
  188. data/lib/rabbit/xmlrpc/server.rb +17 -1
  189. data/po/en/rabbit.edit.po +324 -316
  190. data/po/en/rabbit.po +61 -55
  191. data/po/fr/rabbit.edit.po +324 -316
  192. data/po/fr/rabbit.po +61 -55
  193. data/po/ja/rabbit.edit.po +345 -370
  194. data/po/ja/rabbit.po +83 -80
  195. data/rabbit.gemspec +4 -2
  196. data/sample/block-quote.rab +13 -0
  197. data/sample/description-list.rab +17 -0
  198. data/sample/mermaid.rab +16 -0
  199. data/sample/rabbit-en.hiki +0 -1
  200. data/sample/rabbit-en.md +0 -1
  201. data/sample/rabbit-en.rd +0 -1
  202. data/sample/rabbit.hiki +0 -1
  203. data/sample/rabbit.md +0 -1
  204. data/sample/rabbit.rd +0 -1
  205. data/sample/video.rab +17 -0
  206. metadata +33 -65
  207. data/lib/rabbit/action/basic.rb +0 -304
  208. data/lib/rabbit/action/radio.rb +0 -78
  209. data/lib/rabbit/action/toggle.rb +0 -82
  210. data/lib/rabbit/action.rb +0 -140
  211. data/lib/rabbit/renderer/display/gl.rb +0 -98
  212. data/lib/rabbit/renderer/display/key-handler.rb +0 -321
  213. data/lib/rabbit/renderer/gl.rb +0 -95
  214. data/lib/rabbit/renderer/screen.rb +0 -286
  215. data/lib/rabbit/renderer/widget/drawing-area.rb +0 -93
  216. data/lib/rabbit/stock.rb +0 -31
  217. data/lib/rabbit/trackball.rb +0 -228
  218. data/lib/rabbit/video-window.rb +0 -123
  219. data/test/command/test-rabbit.rb +0 -101
  220. data/test/helper/parser.rb +0 -48
  221. data/test/helper.rb +0 -24
  222. data/test/image/test-dia.rb +0 -54
  223. data/test/image/test-eps.rb +0 -41
  224. data/test/parser/test-markdown.rb +0 -360
  225. data/test/parser/test-rd.rb +0 -43
  226. data/test/parser/test-wiki.rb +0 -71
  227. data/test/run-test.rb +0 -27
  228. data/test/source-generator/test-hiki.rb +0 -68
  229. data/test/source-generator/test-markdown.rb +0 -67
  230. data/test/source-generator/test-rd.rb +0 -69
  231. data/test/test-applier.rb +0 -73
  232. data/test/test-author-configuration.rb +0 -37
  233. data/test/test-canvas.rb +0 -70
  234. data/test/test-color.rb +0 -51
  235. data/test/test-element.rb +0 -103
  236. data/test/test-readme-parser.rb +0 -160
  237. data/test/test-size.rb +0 -155
  238. data/test/test-slide-configuration.rb +0 -74
  239. data/test/test-source.rb +0 -122
  240. data/test/test-theme-configuration.rb +0 -47
  241. data/test/test-utils.rb +0 -64
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2004-2024 Sutou Kouhei <kou@cozmixng.org>
1
+ # Copyright (C) 2004-2025 Sutou Kouhei <kou@cozmixng.org>
2
2
  #
3
3
  # This program is free software; you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
@@ -14,19 +14,19 @@
14
14
  # with this program; if not, write to the Free Software Foundation, Inc.,
15
15
  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
16
 
17
- require "rabbit/renderer/display/drawing-area-primitive"
18
- require "rabbit/renderer/display/menu"
19
- require "rabbit/renderer/display/progress"
20
- require "rabbit/renderer/display/mask"
21
- require "rabbit/renderer/display/search"
22
- require "rabbit/renderer/display/gesture"
23
- require "rabbit/renderer/display/graffiti"
24
- require "rabbit/renderer/display/button-handler"
25
- require "rabbit/renderer/display/key-handler"
26
- require "rabbit/renderer/display/scroll-handler"
27
- require "rabbit/renderer/display/info"
28
- require "rabbit/renderer/display/spotlight"
29
- require "rabbit/renderer/display/magnifier"
17
+ require_relative "drawing-area-primitive"
18
+ require_relative "menu"
19
+ require_relative "progress"
20
+ require_relative "mask"
21
+ require_relative "search"
22
+ require_relative "gesture"
23
+ require_relative "graffiti"
24
+ require_relative "button-handler"
25
+ require_relative "motion-handler"
26
+ require_relative "scroll-handler"
27
+ require_relative "info"
28
+ require_relative "spotlight"
29
+ require_relative "magnifier"
30
30
 
31
31
  module Rabbit
32
32
  module Renderer
@@ -40,8 +40,8 @@ module Rabbit
40
40
  include Progress
41
41
  include Search
42
42
  include Gesture
43
- include KeyHandler
44
43
  include ButtonHandler
44
+ include MotionHandler
45
45
  include ScrollHandler
46
46
  include Info
47
47
  include Spotlight
@@ -53,6 +53,13 @@ module Rabbit
53
53
  super
54
54
  end
55
55
 
56
+ def update_size(width, height)
57
+ super
58
+ @mask = nil
59
+ set_hole
60
+ reload_theme if @surface
61
+ end
62
+
56
63
  def post_apply_theme
57
64
  if @need_reload_theme
58
65
  @need_reload_theme = false
@@ -122,8 +129,8 @@ module Rabbit
122
129
  super
123
130
  end
124
131
 
125
- def pre_print(slide_size)
126
- start_progress(slide_size)
132
+ def pre_print(n_slides)
133
+ start_progress(n_slides)
127
134
  end
128
135
 
129
136
  def printing(i)
@@ -136,9 +143,9 @@ module Rabbit
136
143
  end_progress
137
144
  end
138
145
 
139
- def pre_to_pixbuf(slide_size)
146
+ def pre_to_pixbuf(n_slides)
140
147
  super
141
- start_progress(slide_size)
148
+ start_progress(n_slides)
142
149
  @pixbufing_size = [width, height]
143
150
  end
144
151
 
@@ -155,7 +162,7 @@ module Rabbit
155
162
  end
156
163
 
157
164
  def cache_all_slides
158
- pre_cache_all_slides(@canvas.slide_size)
165
+ pre_cache_all_slides(@canvas.n_slides)
159
166
  canceled = false
160
167
  @canvas.slides.each_with_index do |slide, i|
161
168
  @canvas.change_current_index(i) do
@@ -169,10 +176,10 @@ module Rabbit
169
176
  post_cache_all_slides(canceled)
170
177
  end
171
178
 
172
- def pre_cache_all_slides(slide_size)
179
+ def pre_cache_all_slides(n_slides)
173
180
  @caching = true
174
181
  @caching_size = [width, height]
175
- start_progress(slide_size)
182
+ start_progress(n_slides)
176
183
  end
177
184
 
178
185
  def caching_all_slides(i)
@@ -209,9 +216,9 @@ module Rabbit
209
216
  if @canvas.need_reload_source?
210
217
  callback ||= Utils.process_pending_events_proc
211
218
  begin
212
- super(callback)
219
+ @canvas.reload_source(callback)
213
220
  rescue
214
- @canvas.logger.error($!)
221
+ Rabbit.logger.error($!)
215
222
  end
216
223
  end
217
224
  end
@@ -224,11 +231,9 @@ module Rabbit
224
231
  add_widgets_to_container(@container, &block)
225
232
  widget.show
226
233
  attach_menu(@window)
227
- attach_key(@window)
228
234
  end
229
235
 
230
236
  def detach
231
- detach_key(@window)
232
237
  detach_menu(@window)
233
238
  widget.hide
234
239
  unless @window.destroyed?
@@ -285,25 +290,11 @@ module Rabbit
285
290
 
286
291
  def init_drawing_area
287
292
  super
288
- event_mask = Gdk::EventMask::BUTTON_PRESS_MASK
289
- event_mask |= Gdk::EventMask::BUTTON_RELEASE_MASK
290
- event_mask |= Gdk::EventMask::BUTTON1_MOTION_MASK
291
- event_mask |= Gdk::EventMask::BUTTON2_MOTION_MASK
292
- event_mask |= Gdk::EventMask::BUTTON3_MOTION_MASK
293
- event_mask |= Gdk::EventMask::SCROLL_MASK
294
- @area.add_events(event_mask)
295
- set_key_press_event(@area)
296
293
  set_button_event(@area)
297
- set_motion_notify_event
294
+ set_motion_event(@area)
298
295
  set_scroll_event(@area)
299
296
  end
300
297
 
301
- def set_motion_notify_event
302
- @area.signal_connect("motion_notify_event") do |widget, event|
303
- call_hook_procs(@motion_notify_hook_procs, event)
304
- end
305
- end
306
-
307
298
  def paint(color_name)
308
299
  context = @surface.create_cairo_context
309
300
  context.set_source_rgba(*Color.parse(color_name).to_a)
@@ -374,13 +365,6 @@ module Rabbit
374
365
  Gdk::RGB::DITHER_NORMAL, 0, 0)
375
366
  end
376
367
 
377
- def configured_after(widget, event)
378
- @mask = nil
379
- set_hole
380
- super unless @caching
381
- false
382
- end
383
-
384
368
  def confirm_dialog(message)
385
369
  flags = Gtk::Dialog::MODAL | Gtk::Dialog::DESTROY_WITH_PARENT
386
370
  dialog_type = Gtk::MessageDialog::INFO
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2004-2024 Sutou Kouhei <kou@cozmixng.org>
1
+ # Copyright (C) 2004-2025 Sutou Kouhei <kou@cozmixng.org>
2
2
  #
3
3
  # This program is free software; you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
@@ -14,12 +14,12 @@
14
14
  # with this program; if not, write to the Free Software Foundation, Inc.,
15
15
  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
16
 
17
- require 'rabbit/gtk'
17
+ require_relative "../../gtk"
18
18
 
19
- require "rabbit/utils"
20
- require "rabbit/renderer/engine"
21
- require "rabbit/renderer/display/base"
22
- require 'rabbit/renderer/display/cursor'
19
+ require_relative "../../utils"
20
+ require_relative "../engine"
21
+ require_relative "base"
22
+ require_relative "cursor"
23
23
 
24
24
  module Rabbit
25
25
  module Renderer
@@ -37,21 +37,6 @@ module Rabbit
37
37
  init_drawing_area
38
38
  end
39
39
 
40
- def attach_to(window, container=nil)
41
- super
42
-
43
- set_configure_event
44
- end
45
-
46
- def detach
47
- if !@window.destroyed? and @configure_signal_id
48
- @window.signal_handler_disconnect(@configure_signal_id)
49
- @configure_signal_id = nil
50
- end
51
-
52
- super
53
- end
54
-
55
40
  def widget
56
41
  @area
57
42
  end
@@ -103,7 +88,7 @@ module Rabbit
103
88
  queue_draw
104
89
  end
105
90
 
106
- def pre_to_pixbuf(slide_size)
91
+ def pre_to_pixbuf(n_slides)
107
92
  end
108
93
 
109
94
  def to_pixbufing(i)
@@ -132,7 +117,6 @@ module Rabbit
132
117
  @area.can_focus = true
133
118
  set_map
134
119
  set_draw
135
- set_configure_event_after
136
120
  end
137
121
 
138
122
  def depth
@@ -179,49 +163,17 @@ module Rabbit
179
163
  compile_slide(slide) unless compiled_slide?(slide)
180
164
  slide.draw(@canvas, false)
181
165
  rescue
182
- @canvas.logger.warn($!)
166
+ Rabbit.logger.warn($!)
183
167
  end
184
168
  end
185
169
  end
186
170
 
187
- def set_configure_event
188
- id = @window.signal_connect("configure_event") do |widget, event|
189
- configured(event.x, event.y, event.width, event.height)
190
- false
191
- end
192
- @configure_signal_id = id
193
- end
194
-
195
171
  def configured(x, y, w, h)
196
172
  @real_width = @surface.width
197
173
  @real_height = @surface.height
198
174
  @size_dirty = true
199
175
  end
200
176
 
201
- def set_configure_event_after
202
- prev_x = prev_y = prev_width = prev_height = nil
203
- @area.signal_connect_after("configure_event") do |widget, event|
204
- prev_x ||= event.x
205
- prev_y ||= event.y
206
- prev_width ||= event.width
207
- prev_height ||= event.height
208
- if [prev_x, prev_y, prev_width, prev_height] !=
209
- [event.x, event.y, event.width, event.height]
210
- configured_after(widget, event)
211
- end
212
- prev_x = event.x
213
- prev_y = event.y
214
- prev_width = event.width
215
- prev_height = event.height
216
- false
217
- end
218
- end
219
-
220
- def configured_after(widget, event)
221
- update_size(event.width, event.height)
222
- reload_theme if @surface
223
- end
224
-
225
177
  def reload_theme(&callback)
226
178
  callback ||= Utils.process_pending_events_proc
227
179
  @canvas.activate("ReloadTheme", &callback)
@@ -245,6 +197,7 @@ module Rabbit
245
197
  end
246
198
 
247
199
  def grab
200
+ return unless @area.respond_to?(:grab_add)
248
201
  @area.grab_add
249
202
  Gdk.pointer_grab(@area.window, false,
250
203
  Gdk::EventMask::BUTTON_PRESS_MASK |
@@ -256,14 +209,10 @@ module Rabbit
256
209
  end
257
210
 
258
211
  def ungrab
212
+ return unless @area.respond_to?(:grab_remove)
259
213
  @area.grab_remove
260
214
  Gdk.pointer_ungrab(Gdk::CURRENT_TIME)
261
215
  end
262
-
263
- def pointer
264
- window, x, y, mask = @area.window.pointer
265
- [x, y, mask]
266
- end
267
216
  end
268
217
  end
269
218
  end
@@ -1,10 +1,26 @@
1
- require 'rabbit/renderer/engine'
2
- require 'rabbit/renderer/display/drawing-area-primitive'
1
+ # Copyright (C) 2005-2025 Sutou Kouhei <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_relative "../engine"
18
+ require_relative "drawing-area-primitive"
3
19
 
4
20
  module Rabbit
5
21
  module Renderer
6
22
  module Display
7
- class DrawingAreaViewOnly
23
+ class DrawingAreaViewOnly < Renderer::Base
8
24
  include Renderer::Engine::Cairo
9
25
  include DrawingAreaPrimitive
10
26
 
@@ -24,11 +40,6 @@ module Rabbit
24
40
  end
25
41
 
26
42
  private
27
- def init_color
28
- super
29
- init_engine_color
30
- end
31
-
32
43
  def add_widgets_to_container(container, &block)
33
44
  if block_given?
34
45
  yield(container, @area)
@@ -1,24 +1,28 @@
1
- require 'rabbit/renderer/engine'
2
- require 'rabbit/renderer/display/drawing-area-base'
1
+ # Copyright (C) 2004-2025 Sutou Kouhei <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_relative "../engine"
18
+ require_relative "drawing-area-base"
3
19
 
4
20
  module Rabbit
5
21
  module Renderer
6
22
  module Display
7
- class DrawingArea
23
+ class DrawingArea < Renderer::Base
8
24
  include Renderer::Engine::Cairo
9
25
  include DrawingAreaBase
10
-
11
- class << self
12
- def priority
13
- 100
14
- end
15
- end
16
-
17
- private
18
- def init_color
19
- super
20
- init_engine_color
21
- end
22
26
  end
23
27
  end
24
28
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2006-2024 Sutou Kouhei <kou@cozmixng.org>
1
+ # Copyright (C) 2006-2025 Sutou Kouhei <kou@cozmixng.org>
2
2
  #
3
3
  # This program is free software; you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
@@ -14,7 +14,7 @@
14
14
  # with this program; if not, write to the Free Software Foundation, Inc.,
15
15
  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
16
 
17
- require "rabbit/gesture/handler"
17
+ require_relative "../../gesture/handler"
18
18
 
19
19
  module Rabbit
20
20
  module Renderer
@@ -56,14 +56,14 @@ module Rabbit
56
56
  end
57
57
  end
58
58
 
59
- add_motion_notify_hook do |event|
59
+ add_motion_notify_hook do |x, y|
60
60
  if @gesture.processing? and pressed_info == target_info
61
61
  unless @gesture.moved?
62
62
  keep_cursor(:gesture)
63
63
  update_cursor(:hand)
64
64
  end
65
65
  first_move = !@gesture.moved?
66
- handled = @gesture.button_motion(event.x, event.y, width, height)
66
+ handled = @gesture.button_motion(x, y, width, height)
67
67
  queue_draw if handled or first_move
68
68
  init_renderer(@surface)
69
69
  @gesture.draw_last_locus(self)
@@ -84,16 +84,16 @@ module Rabbit
84
84
  add_gesture_action(%w(L R), "FirstSlide")
85
85
  add_gesture_action(%w(U), "Quit")
86
86
 
87
- add_gesture_action(%w(D), "ToggleIndexMode", &bg_proc)
88
- add_gesture_action(%w(D U), "ToggleFullScreen", &bg_proc)
87
+ add_gesture_action(%w(D), "ToggleIndexMode")
88
+ add_gesture_action(%w(D U), "ToggleFullscreen")
89
89
  add_gesture_action(%w(LR), "ToggleGraffitiMode")
90
90
 
91
91
  add_gesture_action(%w(UL), "Redraw")
92
- add_gesture_action(%w(UL D), "ReloadTheme", &bg_proc)
92
+ add_gesture_action(%w(UL D), "ReloadTheme")
93
93
  end
94
94
 
95
- def add_gesture_action(sequence, action, &block)
96
- @gesture.add_action(sequence, @canvas.action(action), &block)
95
+ def add_gesture_action(sequence, action)
96
+ @gesture.add_action(sequence, @canvas.actions.find_action(action))
97
97
  end
98
98
 
99
99
  def gesturing?
@@ -1,7 +1,22 @@
1
+ # Copyright (C) 2006-2025 Sutou Kouhei <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 "forwardable"
2
18
 
3
- require "rabbit/action"
4
- require "rabbit/graffiti/processor"
19
+ require_relative "../../graffiti/processor"
5
20
 
6
21
  module Rabbit
7
22
  module Renderer
@@ -20,13 +35,8 @@ module Rabbit
20
35
  init_graffiti
21
36
  end
22
37
 
23
- def attach_to(window, container=nil)
24
- super
25
- graffiti_mode_action.active = false
26
- end
27
-
28
38
  def graffiti_mode?
29
- graffiti_mode_action.active?
39
+ @graffiti_mode
30
40
  end
31
41
 
32
42
  def have_graffiti?
@@ -38,6 +48,7 @@ module Rabbit
38
48
  end
39
49
 
40
50
  def toggle_graffiti_mode
51
+ @graffiti_mode = !@graffiti_mode
41
52
  if graffiti_mode?
42
53
  update_cursor(:pencil)
43
54
  else
@@ -48,13 +59,11 @@ module Rabbit
48
59
 
49
60
  def clear_graffiti
50
61
  @graffiti.clear
51
- Action.update_graffiti_action_status(@canvas)
52
62
  @area.queue_draw
53
63
  end
54
64
 
55
65
  def undo_graffiti
56
66
  @graffiti.undo
57
- Action.update_graffiti_action_status(@canvas)
58
67
  @area.queue_draw
59
68
  end
60
69
 
@@ -67,6 +76,7 @@ module Rabbit
67
76
  private
68
77
  def init_graffiti
69
78
  @graffiti = Rabbit::Graffiti::Processor.new
79
+ @graffiti_mode = false
70
80
 
71
81
  pressed_button = nil
72
82
  target_button = 1
@@ -85,18 +95,17 @@ module Rabbit
85
95
  pressed_button = nil
86
96
  if graffiti_mode? and event.button == target_button
87
97
  @graffiti.button_release(event.x, event.y, width, height)
88
- Action.update_graffiti_action_status(@canvas)
89
98
  true
90
99
  else
91
100
  false
92
101
  end
93
102
  end
94
103
 
95
- add_motion_notify_hook do |event|
104
+ add_motion_notify_hook do |x, y|
96
105
  if graffiti_mode? and
97
106
  @graffiti.dragging? and
98
107
  pressed_button == target_button
99
- @graffiti.button_motion(event.x, event.y, width, height)
108
+ @graffiti.button_motion(x, y, width, height)
100
109
  redraw
101
110
  true
102
111
  else
@@ -1,4 +1,20 @@
1
- require 'rabbit/info-window'
1
+ # Copyright (C) 2006-2025 Sutou Kouhei <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_relative "../../info-window"
2
18
 
3
19
  module Rabbit
4
20
  module Renderer
@@ -10,13 +26,17 @@ module Rabbit
10
26
  end
11
27
 
12
28
  def toggle_info_window
13
- if @info_window.showing?
29
+ if info_window_showing?
14
30
  hide_info_window
15
31
  else
16
32
  show_info_window
17
33
  end
18
34
  end
19
35
 
36
+ def info_window_showing?
37
+ @info_window.showing?
38
+ end
39
+
20
40
  def show_info_window
21
41
  @info_window.show(width, height)
22
42
  end
@@ -1,3 +1,19 @@
1
+ # Copyright (C) 2006-2025 Sutou Kouhei <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
  module Rabbit
2
18
  module Renderer
3
19
  module Display
@@ -7,17 +23,12 @@ module Rabbit
7
23
  init_magnifier
8
24
  end
9
25
 
10
- def attach_to(window, container=nil)
11
- super
12
- magnifier_action.active = false
13
- end
14
-
15
26
  def toggle_magnifier
27
+ @magnifying = !@magnifying
16
28
  if magnifying?
17
29
  grab
18
- x, y, mask = pointer
19
- @magnifier_center_x ||= x
20
- @magnifier_center_y ||= y
30
+ @magnifier_center_x = 0
31
+ @magnifier_center_y = 0
21
32
  else
22
33
  ungrab
23
34
  @magnifier_center_x = nil
@@ -26,8 +37,14 @@ module Rabbit
26
37
  queue_draw
27
38
  end
28
39
 
40
+ def magnifying?
41
+ @magnifying
42
+ end
43
+
29
44
  private
30
45
  def init_magnifier
46
+ @magnifying = false
47
+
31
48
  @magnifier_ratio = 1.5
32
49
  @magnifier_center_x = nil
33
50
  @magnifier_center_y = nil
@@ -41,7 +58,7 @@ module Rabbit
41
58
  event.state.control_mask?
42
59
  @magnifier_center_x = event.x
43
60
  @magnifier_center_y = event.y
44
- magnifier_action.active = true
61
+ magnifier_action.enabled = true
45
62
  true
46
63
  else
47
64
  false
@@ -50,17 +67,17 @@ module Rabbit
50
67
 
51
68
  add_button_release_hook do |event, last_event|
52
69
  if magnifying? and event.button == target_button
53
- magnifier_action.active = false
70
+ magnifier_action.enabled = false
54
71
  true
55
72
  else
56
73
  false
57
74
  end
58
75
  end
59
76
 
60
- add_motion_notify_hook do |event|
77
+ add_motion_notify_hook do |x, y|
61
78
  if magnifying?
62
- @magnifier_center_x = event.x
63
- @magnifier_center_y = event.y
79
+ @magnifier_center_x = x
80
+ @magnifier_center_y = y
64
81
  queue_draw
65
82
  add_button_handler do
66
83
  clear_button_handler
@@ -112,10 +129,6 @@ module Rabbit
112
129
  draw_rounded_rectangle(false, x, y, w, h, r, "red")
113
130
  end
114
131
 
115
- def magnifying?
116
- magnifier_action.active?
117
- end
118
-
119
132
  def magnifier_action
120
133
  @canvas.action("ToggleMagnifier")
121
134
  end
@@ -1,4 +1,20 @@
1
- require 'rabbit/gtk'
1
+ # Copyright (C) 2006-2025 Sutou Kouhei <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_relative "../../gtk"
2
18
 
3
19
  module Rabbit
4
20
  module Renderer