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,321 +0,0 @@
1
- require 'rabbit/gtk'
2
-
3
- require "rabbit/keys"
4
-
5
- module Rabbit
6
- module Renderer
7
- module Display
8
- module KeyHandler
9
- def initialize(*args, &block)
10
- super
11
- init_key_handler
12
- end
13
-
14
- def connect_key(keyval, modifier, flags, &block)
15
- @user_accel_group.connect(keyval, modifier, flags, &block)
16
- end
17
-
18
- def disconnect_key(keyval, modifier)
19
- @user_accel_group.disconnect_key(keyval, modifier)
20
- end
21
-
22
- def pre_terminal
23
- @window.remove_accel_group(@accel_group)
24
- end
25
-
26
- def post_terminal
27
- @window.add_accel_group(@accel_group)
28
- end
29
-
30
- private
31
- def init_key_handler
32
- @user_accel_group = nil
33
- init_accel_group
34
- init_toggle_terminal_accel_group
35
- end
36
-
37
- def clear_user_accel_group
38
- @user_accel_group = Gtk::AccelGroup.new
39
- end
40
-
41
- def attach_key(window)
42
- window.add_accel_group(@accel_group)
43
- window.add_accel_group(@toggle_terminal_accel_group)
44
- end
45
-
46
- def detach_key(window)
47
- window.remove_accel_group(@accel_group)
48
- window.remove_accel_group(@toggle_terminal_accel_group)
49
- end
50
-
51
- def clear_keys
52
- super
53
- @window.remove_accel_group(@user_accel_group) if @user_accel_group
54
- clear_user_accel_group
55
- @window.add_accel_group(@user_accel_group)
56
- end
57
-
58
- def init_accel_group
59
- @accel_group = Gtk::AccelGroup.new
60
- init_number_keys
61
- init_no_prefix_keys
62
- init_shift_keys
63
- init_control_keys
64
- init_alt_keys
65
- end
66
-
67
- def init_toggle_terminal_accel_group
68
- @toggle_terminal_accel_group = Gtk::AccelGroup.new
69
- mod = Gdk::ModifierType::SHIFT_MASK |
70
- Gdk::ModifierType::CONTROL_MASK |
71
- Gdk::ModifierType::MOD1_MASK
72
- keys = Keys::ShiftControlAlt::TOGGLE_TERMINAL_KEYS
73
- set_keys(keys,
74
- mod,
75
- nil,
76
- @toggle_terminal_accel_group) do |group, obj, val, modifier|
77
- @canvas.activate("ToggleTerminal")
78
- end
79
- end
80
-
81
- def set_keys(keys, mod, flags=nil, accel_group=@accel_group, &block)
82
- flags ||= Gtk::AccelFlags::VISIBLE
83
- keys.each do |val|
84
- accel_group.connect(val, mod, flags, &block)
85
- end
86
- end
87
-
88
- def have_slide_number_related_mask?(modifier)
89
- modifier.control_mask? or
90
- modifier.mod1_mask?
91
- end
92
-
93
- def calc_slide_number(val, modifier)
94
- val += 10 if modifier.control_mask?
95
- val += 20 if modifier.mod1_mask?
96
- val
97
- end
98
-
99
- def init_number_keys
100
- no_mod = Gdk::ModifierType.new
101
- mods = Utils.combination([
102
- Gdk::ModifierType::CONTROL_MASK,
103
- Gdk::ModifierType::MOD1_MASK,
104
- ])
105
- mods.each do |mod|
106
- mod = mod.inject(no_mod) do |result, item|
107
- result | item
108
- end
109
- keys = (0..9).collect{|i| Gdk::Keyval.const_get("KEY_#{i}")}
110
- set_keys(keys, mod) do |group, obj, val, modifier|
111
- index = calc_slide_number(val - Gdk::Keyval::KEY_0, modifier)
112
- @canvas.activate("JumpTo") {index}
113
- end
114
- keys = (0..9).collect{|i| Gdk::Keyval.const_get("KEY_KP_#{i}")}
115
- set_keys(keys, mod) do |group, obj, val, modifier|
116
- index = calc_slide_number(val - Gdk::Keyval::KEY_KP_0, modifier)
117
- @canvas.activate("JumpTo") {index}
118
- end
119
- end
120
- end
121
-
122
- def init_no_prefix_keys
123
- mod = Gdk::ModifierType.new
124
-
125
- keys = Keys::QUIT_KEYS
126
- set_keys(keys, mod) do |group, obj, val, modifier|
127
- @canvas.activate("Quit")
128
- end
129
- keys = Keys::MOVE_TO_NEXT_KEYS
130
- set_keys(keys, mod) do |group, obj, val, modifier|
131
- @canvas.activate("Next")
132
- end
133
- keys = Keys::MOVE_TO_PREVIOUS_KEYS
134
- set_keys(keys, mod) do |group, obj, val, modifier|
135
- @canvas.activate("Previous")
136
- end
137
- keys = Keys::MOVE_TO_FIRST_KEYS
138
- set_keys(keys, mod) do |group, obj, val, modifier|
139
- @canvas.activate("FirstSlide")
140
- end
141
- keys = Keys::MOVE_TO_LAST_KEYS
142
- set_keys(keys, mod) do |group, obj, val, modifier|
143
- @canvas.activate("LastSlide")
144
- end
145
- keys = Keys::TOGGLE_FULLSCREEN_KEYS
146
- set_keys(keys, mod) do |group, obj, val, modifier|
147
- @canvas.activate("ToggleFullScreen")
148
- end
149
- keys = Keys::RELOAD_THEME_KEYS
150
- set_keys(keys, mod) do |group, obj, val, modifier|
151
- reload_theme
152
- end
153
- keys = Keys::SAVE_AS_IMAGE_KEYS
154
- set_keys(keys, mod) do |group, obj, val, modifier|
155
- @canvas.activate("SaveAsImage")
156
- end
157
- keys = Keys::ICONIFY_KEYS
158
- set_keys(keys, mod) do |group, obj, val, modifier|
159
- @canvas.activate("Iconify")
160
- end
161
- keys = Keys::TOGGLE_INDEX_MODE_KEYS
162
- set_keys(keys, mod) do |group, obj, val, modifier|
163
- @canvas.activate("ToggleIndexMode")
164
- end
165
- keys = Keys::CACHE_ALL_SLIDES_KEYS
166
- set_keys(keys, mod) do |group, obj, val, modifier|
167
- @canvas.activate("CacheAllSlides")
168
- end
169
- keys = Keys::SEARCH_SLIDE_FORWARD_KEYS
170
- set_keys(keys, mod) do |group, obj, val, modifier|
171
- @canvas.activate("SearchSlideForward")
172
- end
173
- keys = Keys::SEARCH_SLIDE_BACKWARD_KEYS
174
- set_keys(keys, mod) do |group, obj, val, modifier|
175
- @canvas.activate("SearchSlideBackward")
176
- end
177
- keys = Keys::SEARCH_SLIDE_FORWARD_NEXT_KEYS
178
- set_keys(keys, mod) do |group, obj, val, modifier|
179
- @canvas.activate("SearchSlideForwardNext")
180
- end
181
- end
182
-
183
- def init_shift_keys
184
- mod = Gdk::ModifierType::SHIFT_MASK
185
-
186
- keys = Keys::Shift::WHITE_OUT_KEYS
187
- set_keys(keys, mod) do |group, obj, val, modifier|
188
- @canvas.activate("ToggleWhiteout")
189
- end
190
- keys = Keys::Shift::BLACK_OUT_KEYS
191
- set_keys(keys, mod) do |group, obj, val, modifier|
192
- @canvas.activate("ToggleBlackout")
193
- end
194
- keys = Keys::Shift::EXPAND_HOLE_KEYS
195
- set_keys(keys, mod) do |group, obj, val, modifier|
196
- @canvas.activate("ExpandHole")
197
- end
198
- keys = Keys::Shift::NARROW_HOLE_KEYS
199
- set_keys(keys, mod) do |group, obj, val, modifier|
200
- @canvas.activate("NarrowHole")
201
- end
202
- keys = Keys::Shift::TOGGLE_GRAFFITI_MODE_KEYS
203
- set_keys(keys, mod) do |group, obj, val, modifier|
204
- @canvas.activate("ToggleGraffitiMode")
205
- end
206
- keys = Keys::Shift::SEARCH_SLIDE_BACKWARD_NEXT_KEYS
207
- set_keys(keys, mod) do |group, obj, val, modifier|
208
- @canvas.activate("SearchSlideBackwardNext")
209
- end
210
- keys = Keys::Shift::TOGGLE_INFO_WINDOW_KEYS
211
- set_keys(keys, mod) do |group, obj, val, modifier|
212
- @canvas.activate("ToggleInfoWindow")
213
- end
214
- end
215
-
216
- def init_control_keys
217
- mod = Gdk::ModifierType::CONTROL_MASK
218
-
219
- keys = Keys::Control::CLEAR_GRAFFITI_KEYS
220
- set_keys(keys, mod) do |group, obj, val, modifier|
221
- @canvas.activate("ClearGraffiti")
222
- end
223
- keys = Keys::Control::UNDO_GRAFFITI_KEYS
224
- set_keys(keys, mod) do |group, obj, val, modifier|
225
- @canvas.activate("UndoGraffiti")
226
- end
227
-
228
- keys = Keys::Control::CLEAR_SLIDE_KEYS
229
- set_keys(keys, mod) do |group, obj, val, modifier|
230
- @canvas.activate("ClearSlide")
231
- end
232
- keys = Keys::Control::PRINT_KEYS
233
- set_keys(keys, mod) do |group, obj, val, modifier|
234
- @canvas.activate("Print")
235
- end
236
- keys = Keys::Control::SEARCH_SLIDE_FORWARD_KEYS
237
- set_keys(keys, mod) do |group, obj, val, modifier|
238
- @canvas.activate("SearchSlideForward")
239
- end
240
- keys = Keys::Control::SEARCH_SLIDE_BACKWARD_KEYS
241
- set_keys(keys, mod) do |group, obj, val, modifier|
242
- @canvas.activate("SearchSlideBackward")
243
- end
244
- keys = Keys::Control::SEARCH_SLIDE_FORWARD_NEXT_KEYS
245
- set_keys(keys, mod) do |group, obj, val, modifier|
246
- @canvas.activate("SearchSlideForwardNext")
247
- end
248
- keys = Keys::Control::SEARCH_SLIDE_BACKWARD_NEXT_KEYS
249
- set_keys(keys, mod) do |group, obj, val, modifier|
250
- @canvas.activate("SearchSlideBackwardNext")
251
- end
252
- keys = Keys::Control::STOP_SLIDE_SEARCH_KEYS
253
- set_keys(keys, mod) do |group, obj, val, modifier|
254
- @canvas.activate("StopSlideSearch")
255
- end
256
-
257
- keys = Keys::MOVE_TO_NEXT_KEYS
258
- set_keys(keys, mod) do |group, obj, val, modifier|
259
- @canvas.activate("NextSlide")
260
- end
261
- keys = Keys::MOVE_TO_PREVIOUS_KEYS
262
- set_keys(keys, mod) do |group, obj, val, modifier|
263
- @canvas.activate("PreviousSlide")
264
- end
265
- end
266
-
267
- def init_alt_keys
268
- mod = Gdk::ModifierType::MOD1_MASK
269
-
270
- keys = Keys::Alt::RESET_ADJUSTMENT_KEYS
271
- set_keys(keys, mod) do |group, obj, val, modifier|
272
- @canvas.activate("ResetAdjustment")
273
- end
274
-
275
- keys = Keys::Alt::RESET_TIMER_KEYS
276
- set_keys(keys, mod) do |group, obj, val, modifier|
277
- @canvas.activate("ResetTimer")
278
- end
279
- end
280
-
281
- def set_key_press_event(widget)
282
- prev_keys = [
283
- Gdk::Keyval::KEY_Up,
284
- Gdk::Keyval::KEY_Left,
285
- Gdk::Keyval::KEY_KP_Up,
286
- Gdk::Keyval::KEY_KP_Left,
287
- ]
288
- next_keys = [
289
- Gdk::Keyval::KEY_Right,
290
- Gdk::Keyval::KEY_Down,
291
- Gdk::Keyval::KEY_KP_Right,
292
- Gdk::Keyval::KEY_KP_Down,
293
- ]
294
- widget.signal_connect("key_press_event") do |_widget, event|
295
- handled = true
296
- modifier = event.state
297
- case event.keyval
298
- when *prev_keys
299
- if have_slide_number_related_mask?(modifier)
300
- index = calc_slide_number(0, modifier)
301
- @canvas.activate("JumpTo") {@canvas.current_index - index}
302
- else
303
- @canvas.activate("PreviousSlide")
304
- end
305
- when *next_keys
306
- if have_slide_number_related_mask?(modifier)
307
- index = calc_slide_number(0, modifier)
308
- @canvas.activate("JumpTo") {@canvas.current_index + index}
309
- else
310
- @canvas.activate("NextSlide")
311
- end
312
- else
313
- handled = false
314
- end
315
- handled
316
- end
317
- end
318
- end
319
- end
320
- end
321
- end
@@ -1,95 +0,0 @@
1
- require "gtkglext"
2
-
3
- require "rabbit/rabbit"
4
- Rabbit.add_gui_init_proc do
5
- Gtk::GL.init
6
- end
7
-
8
- require "rabbit/trackball"
9
-
10
- module Rabbit
11
- module Renderer
12
- module GL
13
- def draw_slide(slide, simulation, &block)
14
- if gl_available?
15
- gl_drawable.gl_begin(gl_context) do
16
- init_gl_drawing_info
17
- super(slide, simulation, &block)
18
- gl_drawable.swap_buffers if gl_drawable.double_buffered?
19
- end
20
- else
21
- super(slide, simulation, &block)
22
- end
23
- end
24
-
25
- def gl_supported?
26
- (Gtk::GL::BUILD_VERSION <=> [1, 2, 0]) >= 0
27
- end
28
-
29
- private
30
- def init_gl_drawing_info
31
- gl_drawable.wait_gdk
32
- ::GL.ClearDepth(1.0)
33
- ::GL.Clear(::GL::DEPTH_BUFFER_BIT)
34
-
35
- ::GL.Viewport(0, 0, width, height)
36
-
37
- ::GL.Light(::GL::LIGHT0, ::GL::POSITION, [1.0, 1.0, 1.0, 0.0])
38
- ::GL.Enable(::GL::LIGHTING)
39
- ::GL.Enable(::GL::LIGHT0)
40
- ::GL.Enable(::GL::DEPTH_TEST)
41
-
42
- ::GL.MatrixMode(::GL::PROJECTION)
43
- ::GL.LoadIdentity
44
- GLU.Perspective(30.0, width / height, 1.0, z_far)
45
-
46
- ::GL.MatrixMode(::GL::MODELVIEW)
47
- ::GL.LoadIdentity
48
- GLU.LookAt(0.0, 0.0, z_view,
49
- 0.0, 0.0, 0.0,
50
- 0.0, 1.0, 0.0)
51
- ::GL.Translate(0.0, 0.0, -z_view)
52
- ::GL.Scale(gl_scale, gl_scale, gl_scale)
53
- ::GL.MultMatrix(gl_quaternion.build_rotmatrix)
54
- gl_drawable.wait_gl
55
- end
56
-
57
- def draw_gl(x, y, z, color, block)
58
- gl_drawable.wait_gdk
59
- ::GL.PushMatrix
60
- setup_geometry(x, y, z)
61
- setup_color(color)
62
- block.call(true) if block
63
- yield
64
- block.call(false) if block
65
- unless gl_drawable.double_buffered?
66
- ::GL.Flush
67
- end
68
- ::GL.PopMatrix
69
- gl_drawable.wait_gl
70
- end
71
-
72
- def setup_color(color)
73
- color = make_color(color)
74
- ::GL.Light(::GL::LIGHT0, ::GL::DIFFUSE, color.to_a)
75
- end
76
-
77
- def setup_geometry(x, y, z)
78
- new_x = to_gl_size(x, width)
79
- new_y = to_gl_size(height - y, height)
80
- new_z = z
81
- ::GL.MatrixMode(::GL::MODELVIEW)
82
- ::GL.Translate(new_x, new_y, new_z)
83
- end
84
-
85
- def to_gl_size(value, max)
86
- min = 0.0
87
- range = min.abs + max.abs
88
- gl_min = -1.0
89
- gl_max = 1.0
90
- gl_range = gl_min.abs + gl_max.abs
91
- (value / range.to_f) * gl_range + gl_min
92
- end
93
- end
94
- end
95
- end
@@ -1,286 +0,0 @@
1
- # Copyright (C) 2018-2024 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 "forwardable"
18
-
19
- require "rabbit/renderer/base"
20
-
21
- require "rabbit/renderer/display/base"
22
- require "rabbit/renderer/display/menu"
23
- require "rabbit/renderer/display/progress"
24
- require "rabbit/renderer/display/mask"
25
- require "rabbit/renderer/display/search"
26
- require "rabbit/renderer/display/gesture"
27
- require "rabbit/renderer/display/graffiti"
28
- require "rabbit/renderer/display/button-handler"
29
- require "rabbit/renderer/display/key-handler"
30
- require "rabbit/renderer/display/scroll-handler"
31
- require "rabbit/renderer/display/info"
32
- require "rabbit/renderer/display/spotlight"
33
- require "rabbit/renderer/display/magnifier"
34
-
35
- require "rabbit/renderer/widget/drawing-area"
36
-
37
- module Rabbit
38
- module Renderer
39
- class Screen
40
- extend Forwardable
41
-
42
- include Display::Base
43
-
44
- include Display::Cursor
45
- # include Display::Menu
46
- # include Display::Graffiti
47
- # include Display::Mask
48
- # include Display::Progress
49
- # include Display::Search
50
- # include Display::Gesture
51
- include Display::KeyHandler
52
- # include Display::ButtonHandler
53
- # include Display::ScrollHandler
54
- # include Display::Info
55
- # include Display::Spotlight
56
- # include Display::Magnifier
57
-
58
- def_delegators(:@slide_widget, :make_color)
59
- def_delegators(:@slide_widget, :foreground=)
60
- def_delegators(:@slide_widget, :background=)
61
- def_delegators(:@slide_widget, :set_font_resolution)
62
-
63
- def_delegators(:@slide_widget, :flag_size)
64
-
65
- def_delegators(:@slide_widget, :draw_layout)
66
- def_delegators(:@slide_widget, :draw_pixbuf)
67
- def_delegators(:@slide_widget, :draw_line)
68
- def_delegators(:@slide_widget, :draw_rectangle)
69
- def_delegators(:@slide_widget, :draw_rsvg_handle)
70
- def_delegators(:@slide_widget, :draw_link)
71
- def_delegators(:@slide_widget, :draw_flag)
72
-
73
- attr_accessor :filename
74
- def initialize(canvas)
75
- super
76
- @filename = nil
77
- init_ui
78
- end
79
-
80
- def attach_to(window, container=nil)
81
- super
82
- if container
83
- container.add(@fixed)
84
- else
85
- @window.child = @fixed
86
- end
87
- @fixed.show
88
- attach_key(@window)
89
- end
90
-
91
- def detach
92
- detach_key(@window)
93
- @fixed.hide
94
- super
95
- end
96
-
97
- def widget
98
- @fixed
99
- end
100
-
101
- def clear_slide
102
- super
103
- @slide_widget.clear_compiled_slide
104
- redraw
105
- end
106
-
107
- def post_fullscreen
108
- update_cursor(:blank, true)
109
- @slide_widget.clear_compiled_slides
110
- end
111
-
112
- def post_unfullscreen
113
- update_cursor(nil, true)
114
- update_menu
115
- end
116
-
117
- def post_iconify
118
- end
119
-
120
- def post_apply_theme
121
- @slide_widget.clear_compiled_slides
122
- queue_draw
123
- end
124
-
125
- def post_move(old_index, index)
126
- queue_draw
127
- end
128
-
129
- def post_move_in_slide(old_index, index)
130
- queue_draw
131
- end
132
-
133
- def pre_parse
134
- end
135
-
136
- def post_parse
137
- @slide_widget.clear_compiled_slides
138
- end
139
-
140
- def pre_toggle_index_mode
141
- end
142
-
143
- def post_toggle_index_mode
144
- queue_draw
145
- end
146
-
147
- def pre_to_pixbuf(slide_size)
148
- end
149
-
150
- def to_pixbufing(i)
151
- true
152
- end
153
-
154
- def post_to_pixbuf(canceled)
155
- end
156
-
157
- def index_mode_on
158
- keep_cursor(:index)
159
- update_cursor(nil, true)
160
- end
161
-
162
- def index_mode_off
163
- restore_cursor(:index)
164
- end
165
-
166
- # TODO: screen?
167
- def display?
168
- true
169
- end
170
-
171
- def draw_slide(slide, simulation, &block)
172
- set_size_ratio(slide.size_ratio || @default_size_ratio)
173
-
174
- if simulation
175
- @slide_widget.draw_slide(slide, simulation, &block)
176
- else
177
- @slide_widget.save_context do
178
- @slide_widget.translate_context(@size.logical_margin_left,
179
- @size.logical_margin_top)
180
- @slide_widget.draw_slide(slide, simulation, &block)
181
- end
182
-
183
- unless @size.have_logical_margin?
184
- return
185
- end
186
-
187
- margin_background = @slide_widget.make_color("black")
188
- if @size.have_logical_margin_x?
189
- @slide_widget.draw_rectangle(true,
190
- 0,
191
- 0,
192
- @size.logical_margin_left,
193
- @size.real_height,
194
- margin_background)
195
- @slide_widget.draw_rectangle(true,
196
- @size.real_width - @size.logical_margin_right,
197
- 0,
198
- @size.logical_margin_right,
199
- @size.real_height,
200
- margin_background)
201
- end
202
- if @size.have_logical_margin_y?
203
- @slide_widget.draw_rectangle(true,
204
- 0,
205
- 0,
206
- @size.real_width,
207
- @size.logical_margin_top,
208
- margin_background)
209
- @slide_widget.draw_rectangle(true,
210
- 0,
211
- @size.real_height - @size.logical_margin_bottom,
212
- @size.real_width,
213
- @size.logical_margin_bottom,
214
- margin_background)
215
- end
216
- end
217
- end
218
-
219
- private
220
- def init_ui
221
- @fixed = Gtk::Fixed.new
222
- @fixed.can_focus = true
223
- set_map
224
- set_size_allocate
225
-
226
- set_key_press_event(@fixed)
227
-
228
- @slide_widget = Widget::DrawingArea.new(@canvas)
229
- @slide_widget.raw.show
230
- @fixed.put(@slide_widget.raw, 0, 0)
231
- end
232
-
233
- def depth
234
- @fixed.window.depth
235
- end
236
-
237
- def set_map
238
- @fixed.signal_connect_after(:map) do |widget|
239
- mapped(widget)
240
- end
241
- end
242
-
243
- def mapped(widget)
244
- allocation = widget.allocation
245
- set_default_size(allocation.width,
246
- allocation.height)
247
- end
248
-
249
- def set_size_allocate
250
- @fixed.signal_connect(:size_allocate) do |widget, allocation|
251
- w = allocation.width
252
- h = allocation.height
253
- @slide_widget.raw.allocation = allocation
254
- update_size(w, h)
255
- reload_theme
256
- end
257
- end
258
-
259
- def reload_theme(&callback)
260
- callback ||= Utils.process_pending_events_proc
261
- @canvas.activate("ReloadTheme", &callback)
262
- end
263
-
264
- def grab
265
- @fixed.grab_add
266
- Gdk.pointer_grab(@fixed.window, false,
267
- Gdk::EventMask::BUTTON_PRESS_MASK |
268
- Gdk::EventMask::BUTTON_RELEASE_MASK |
269
- Gdk::EventMask::SCROLL_MASK |
270
- Gdk::EventMask::POINTER_MOTION_MASK,
271
- nil, nil,
272
- Gdk::CURRENT_TIME)
273
- end
274
-
275
- def ungrab
276
- @fixed.grab_remove
277
- Gdk.pointer_ungrab(Gdk::CURRENT_TIME)
278
- end
279
-
280
- def pointer
281
- window, x, y, mask = @fixed.window.pointer
282
- [x, y, mask]
283
- end
284
- end
285
- end
286
- end