rabbit 3.0.4 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/Rakefile +53 -7
- data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
- data/doc/_config.yml +2 -2
- data/doc/en/news.rd +69 -1
- data/doc/ja/news.rd +68 -0
- data/lib/rabbit/actions.rb +446 -0
- data/lib/rabbit/author-configuration.rb +7 -10
- data/lib/rabbit/canvas.rb +74 -42
- data/lib/rabbit/command/rabbit-slide.rb +11 -13
- data/lib/rabbit/command/rabbit-theme.rb +10 -12
- data/lib/rabbit/command/rabbit.rb +31 -43
- data/lib/rabbit/console.rb +20 -22
- data/lib/rabbit/dependency-canvas.rb +2 -2
- data/lib/rabbit/element/base.rb +93 -6
- data/lib/rabbit/element/block-element.rb +17 -1
- data/lib/rabbit/element/block.rb +17 -1
- data/lib/rabbit/element/container-element.rb +59 -3
- data/lib/rabbit/element/description-list.rb +18 -2
- data/lib/rabbit/element/enum-list.rb +18 -2
- data/lib/rabbit/element/footnote.rb +18 -2
- data/lib/rabbit/element/image-title-slide.rb +17 -1
- data/lib/rabbit/element/image.rb +32 -2
- data/lib/rabbit/element/index-slide.rb +29 -13
- data/lib/rabbit/element/item-list.rb +18 -2
- data/lib/rabbit/element/method-list.rb +18 -2
- data/lib/rabbit/element/poppler-page.rb +17 -1
- data/lib/rabbit/element/poppler-slide.rb +18 -2
- data/lib/rabbit/element/poppler-title-slide.rb +18 -2
- data/lib/rabbit/element/preformatted.rb +18 -2
- data/lib/rabbit/element/slide-element.rb +29 -2
- data/lib/rabbit/element/slide.rb +18 -2
- data/lib/rabbit/element/syntax-highlighting.rb +17 -1
- data/lib/rabbit/element/table.rb +19 -3
- data/lib/rabbit/element/tag.rb +18 -2
- data/lib/rabbit/element/text-block-element.rb +18 -2
- data/lib/rabbit/element/text-container-element.rb +41 -2
- data/lib/rabbit/element/text-element.rb +17 -1
- data/lib/rabbit/element/text-renderer.rb +17 -1
- data/lib/rabbit/element/text.rb +4 -4
- data/lib/rabbit/element/title-slide.rb +19 -3
- data/lib/rabbit/element/video.rb +157 -56
- data/lib/rabbit/element.rb +20 -20
- data/lib/rabbit/formatter.rb +18 -1
- data/lib/rabbit/frame.rb +102 -90
- data/lib/rabbit/front.rb +11 -4
- data/lib/rabbit/gem-finder.rb +4 -8
- data/lib/rabbit/gem-pusher.rb +4 -4
- data/lib/rabbit/gesture/handler.rb +26 -21
- data/lib/rabbit/graffiti/config-dialog.rb +18 -2
- data/lib/rabbit/graffiti/processor.rb +20 -4
- data/lib/rabbit/gtk.rb +48 -14
- data/lib/rabbit/html/generator.rb +18 -18
- data/{test/helper/fixture.rb → lib/rabbit/icon.rb} +16 -6
- data/lib/rabbit/image/base.rb +7 -6
- data/lib/rabbit/image/default.rb +17 -1
- data/lib/rabbit/image/dia.rb +2 -2
- data/lib/rabbit/image/eps.rb +16 -2
- data/lib/rabbit/image/gimp.rb +28 -11
- data/lib/rabbit/image/mermaid.rb +3 -3
- data/lib/rabbit/image/pdf.rb +3 -3
- data/lib/rabbit/image/svg.rb +2 -2
- data/lib/rabbit/image.rb +8 -8
- data/lib/rabbit/info-window.rb +55 -18
- data/lib/rabbit/key-handler.rb +381 -0
- data/lib/rabbit/keys.rb +31 -2
- data/lib/rabbit/logger/base.rb +17 -1
- data/lib/rabbit/logger/gui.rb +20 -4
- data/lib/rabbit/logger/stderr.rb +16 -2
- data/lib/rabbit/logger.rb +4 -4
- data/lib/rabbit/menu.rb +200 -220
- data/lib/rabbit/parser/base.rb +17 -1
- data/lib/rabbit/parser/ext/aafigure.rb +17 -1
- data/lib/rabbit/parser/ext/blockdiag.rb +17 -1
- data/lib/rabbit/parser/ext/charty.rb +2 -2
- data/lib/rabbit/parser/ext/coderay.rb +20 -4
- data/lib/rabbit/parser/ext/enscript.rb +31 -15
- data/lib/rabbit/parser/ext/entity.rb +17 -1
- data/lib/rabbit/parser/ext/image.rb +6 -6
- data/lib/rabbit/parser/ext/inline.rb +17 -1
- data/lib/rabbit/parser/ext/rouge.rb +7 -4
- data/lib/rabbit/parser/ext/tex.rb +18 -2
- data/lib/rabbit/parser/ext/video.rb +4 -4
- data/lib/rabbit/parser/image.rb +20 -4
- data/lib/rabbit/parser/markdown/converter.rb +12 -13
- data/lib/rabbit/parser/markdown.rb +18 -2
- data/lib/rabbit/parser/pause-support.rb +1 -0
- data/lib/rabbit/parser/pdf.rb +3 -3
- data/lib/rabbit/parser/rd/ext/base.rb +20 -4
- data/lib/rabbit/parser/rd/ext/block-verbatim.rb +24 -28
- data/lib/rabbit/parser/rd/ext/character-reference.rb +18 -2
- data/lib/rabbit/parser/rd/ext/image.rb +3 -3
- data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +6 -6
- data/lib/rabbit/parser/rd/ext/refer.rb +18 -2
- data/lib/rabbit/parser/rd/ext/video.rb +19 -2
- data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +24 -8
- data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +18 -2
- data/lib/rabbit/parser/rd/visitor.rb +18 -2
- data/lib/rabbit/parser/rd.rb +18 -2
- data/lib/rabbit/parser/wiki/output.rb +25 -28
- data/lib/rabbit/parser/wiki.rb +18 -2
- data/lib/rabbit/parser.rb +8 -6
- data/lib/rabbit/path-manipulatable.rb +4 -4
- data/lib/rabbit/progress.rb +17 -1
- data/lib/rabbit/properties.rb +3 -3
- data/lib/rabbit/rabbit.rb +15 -7
- data/lib/rabbit/readme-parser.rb +4 -6
- data/lib/rabbit/renderer/base.rb +44 -36
- data/lib/rabbit/renderer/color.rb +18 -2
- data/lib/rabbit/renderer/display/base.rb +10 -12
- data/lib/rabbit/renderer/display/button-handler.rb +141 -60
- data/lib/rabbit/renderer/display/cursor.rb +4 -5
- data/lib/rabbit/renderer/display/drawing-area-base.rb +32 -48
- data/lib/rabbit/renderer/display/drawing-area-primitive.rb +10 -61
- data/lib/rabbit/renderer/display/drawing-area-view-only.rb +19 -8
- data/lib/rabbit/renderer/display/drawing-area.rb +19 -15
- data/lib/rabbit/renderer/display/gesture.rb +9 -9
- data/lib/rabbit/renderer/display/graffiti.rb +22 -13
- data/lib/rabbit/renderer/display/info.rb +22 -2
- data/lib/rabbit/renderer/display/magnifier.rb +30 -17
- data/lib/rabbit/renderer/display/mask.rb +17 -1
- data/lib/rabbit/renderer/display/menu.rb +27 -3
- data/lib/rabbit/renderer/display/motion-handler.rb +45 -0
- data/lib/rabbit/renderer/display/progress.rb +17 -2
- data/lib/rabbit/renderer/display/scroll-handler.rb +60 -13
- data/lib/rabbit/renderer/display/search.rb +19 -2
- data/lib/rabbit/renderer/display/spotlight.rb +39 -25
- data/lib/rabbit/renderer/display.rb +16 -36
- data/lib/rabbit/renderer/engine/cairo.rb +4 -11
- data/lib/rabbit/renderer/engine.rb +17 -1
- data/lib/rabbit/renderer/kernel.rb +2 -20
- data/lib/rabbit/renderer/offscreen.rb +8 -14
- data/lib/rabbit/renderer/print-layout.rb +2 -2
- data/lib/rabbit/renderer/printer.rb +9 -16
- data/lib/rabbit/renderer/scene-background-widget.rb +95 -0
- data/lib/rabbit/renderer/scene-node-widget.rb +63 -0
- data/lib/rabbit/renderer/scene.rb +508 -0
- data/lib/rabbit/renderer.rb +6 -6
- data/lib/rabbit/search-window.rb +18 -2
- data/lib/rabbit/searcher.rb +15 -1
- data/lib/rabbit/size.rb +9 -1
- data/lib/rabbit/slide-configuration.rb +11 -14
- data/lib/rabbit/soap/driver.rb +20 -4
- data/lib/rabbit/soap/server.rb +17 -1
- data/lib/rabbit/source/argf.rb +5 -5
- data/lib/rabbit/source/base.rb +5 -6
- data/lib/rabbit/source/file.rb +5 -5
- data/lib/rabbit/source/memory.rb +20 -4
- data/lib/rabbit/source/uri.rb +9 -11
- data/lib/rabbit/source-generator/hiki.rb +2 -7
- data/lib/rabbit/source-generator/markdown.rb +2 -7
- data/lib/rabbit/source-generator/rd.rb +2 -7
- data/lib/rabbit/source-generator.rb +4 -4
- data/lib/rabbit/source.rb +5 -5
- data/lib/rabbit/task/slide.rb +13 -11
- data/lib/rabbit/task/theme.rb +8 -11
- data/lib/rabbit/task.rb +3 -3
- data/lib/rabbit/theme/applier.rb +27 -11
- data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
- data/lib/rabbit/theme/color-circle/color-circle.rb +18 -1
- data/lib/rabbit/theme/cozmixng/cozmixng.rb +1 -1
- data/lib/rabbit/theme/default/default.rb +1 -0
- data/lib/rabbit/theme/default-icon/default-icon.rb +1 -1
- data/lib/rabbit/theme/default-item-mark-setup/default-item-mark-setup.rb +17 -1
- data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +9 -1
- data/lib/rabbit/theme/enishi-green/enishi-green.rb +1 -1
- data/lib/rabbit/theme/entry.rb +10 -12
- data/lib/rabbit/theme/icon/icon.rb +3 -8
- data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +5 -5
- data/lib/rabbit/theme/image-timer/image-timer.rb +3 -3
- data/lib/rabbit/theme/lightning-simple/lightning-simple.rb +1 -0
- data/lib/rabbit/theme/lightning-talk/lightning-talk.rb +1 -0
- data/lib/rabbit/theme/manager.rb +19 -9
- data/lib/rabbit/theme/rabbit-icon/rabbit-icon.rb +1 -1
- data/lib/rabbit/theme/ranguba/ranguba.rb +1 -1
- data/lib/rabbit/theme/red-frame/red-frame.rb +6 -2
- data/lib/rabbit/theme/ruby-gnome2/ruby-gnome2.rb +1 -0
- data/lib/rabbit/theme/ruby-gnome2-icon/ruby-gnome2-icon.rb +1 -1
- data/lib/rabbit/theme/searcher.rb +23 -7
- data/lib/rabbit/theme/slide-number/slide-number.rb +1 -1
- data/lib/rabbit/theme/slide-show/slide-show.rb +1 -1
- data/lib/rabbit/theme/table/table.rb +2 -2
- data/lib/rabbit/theme/video/property.rb +3 -0
- data/lib/rabbit/theme/video/video.rb +5 -0
- data/lib/rabbit/theme-configuration.rb +9 -11
- data/lib/rabbit/utils.rb +12 -94
- data/lib/rabbit/version.rb +2 -2
- data/lib/rabbit/xmlrpc/client.rb +17 -1
- data/lib/rabbit/xmlrpc/server.rb +17 -1
- data/po/en/rabbit.edit.po +325 -317
- data/po/en/rabbit.po +61 -55
- data/po/fr/rabbit.edit.po +325 -317
- data/po/fr/rabbit.po +61 -55
- data/po/ja/rabbit.edit.po +346 -371
- data/po/ja/rabbit.po +83 -80
- data/rabbit.gemspec +4 -2
- data/sample/block-quote.rab +13 -0
- data/sample/description-list.rab +17 -0
- data/sample/mermaid.rab +16 -0
- data/sample/rabbit-en.hiki +0 -1
- data/sample/rabbit-en.md +0 -1
- data/sample/rabbit-en.rd +0 -1
- data/sample/rabbit.hiki +0 -1
- data/sample/rabbit.md +0 -1
- data/sample/rabbit.rd +0 -1
- data/sample/video.rab +17 -0
- metadata +33 -65
- data/lib/rabbit/action/basic.rb +0 -304
- data/lib/rabbit/action/radio.rb +0 -78
- data/lib/rabbit/action/toggle.rb +0 -82
- data/lib/rabbit/action.rb +0 -140
- data/lib/rabbit/renderer/display/gl.rb +0 -98
- data/lib/rabbit/renderer/display/key-handler.rb +0 -321
- data/lib/rabbit/renderer/gl.rb +0 -95
- data/lib/rabbit/renderer/screen.rb +0 -286
- data/lib/rabbit/renderer/widget/drawing-area.rb +0 -93
- data/lib/rabbit/stock.rb +0 -31
- data/lib/rabbit/trackball.rb +0 -228
- data/lib/rabbit/video-window.rb +0 -123
- data/test/command/test-rabbit.rb +0 -101
- data/test/helper/parser.rb +0 -48
- data/test/helper.rb +0 -24
- data/test/image/test-dia.rb +0 -54
- data/test/image/test-eps.rb +0 -41
- data/test/parser/test-markdown.rb +0 -360
- data/test/parser/test-rd.rb +0 -43
- data/test/parser/test-wiki.rb +0 -71
- data/test/run-test.rb +0 -27
- data/test/source-generator/test-hiki.rb +0 -68
- data/test/source-generator/test-markdown.rb +0 -67
- data/test/source-generator/test-rd.rb +0 -69
- data/test/test-applier.rb +0 -73
- data/test/test-author-configuration.rb +0 -37
- data/test/test-canvas.rb +0 -70
- data/test/test-color.rb +0 -51
- data/test/test-element.rb +0 -103
- data/test/test-readme-parser.rb +0 -160
- data/test/test-size.rb +0 -155
- data/test/test-slide-configuration.rb +0 -74
- data/test/test-source.rb +0 -122
- data/test/test-theme-configuration.rb +0 -47
- data/test/test-utils.rb +0 -64
data/lib/rabbit/canvas.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2004-
|
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
|
@@ -15,17 +15,19 @@
|
|
15
15
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
16
16
|
|
17
17
|
require "forwardable"
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
18
|
+
|
19
|
+
require_relative "gtk"
|
20
|
+
|
21
|
+
require_relative "actions"
|
22
|
+
require_relative "element"
|
23
|
+
require_relative "filename"
|
24
|
+
require_relative "frame"
|
25
|
+
require_relative "front"
|
26
|
+
require_relative "html/generator"
|
27
|
+
require_relative "key-handler"
|
28
|
+
require_relative "parser"
|
29
|
+
require_relative "rabbit"
|
30
|
+
require_relative "theme/manager"
|
29
31
|
|
30
32
|
module Rabbit
|
31
33
|
class Canvas
|
@@ -118,14 +120,16 @@ module Rabbit
|
|
118
120
|
def_delegators(:@renderer, :graffiti_line_width, :graffiti_line_width=)
|
119
121
|
|
120
122
|
def_delegators(:@renderer, :toggle_info_window)
|
121
|
-
def_delegators(:@renderer, :
|
123
|
+
def_delegators(:@renderer, :info_window_showing?)
|
124
|
+
def_delegators(:@renderer, :toggle_spotlight)
|
125
|
+
def_delegators(:@renderer, :spotlighting?)
|
126
|
+
def_delegators(:@renderer, :toggle_magnifier)
|
127
|
+
def_delegators(:@renderer, :magnifying?)
|
122
128
|
|
123
129
|
def_delegators(:@renderer, :add_gesture_action)
|
124
130
|
|
125
131
|
def_delegators(:@renderer, :post_init_gui)
|
126
132
|
|
127
|
-
def_delegators(:@renderer, :connect_key, :disconnect_key)
|
128
|
-
|
129
133
|
def_delegators(:@renderer, :expand_hole, :narrow_hole)
|
130
134
|
|
131
135
|
def_delegators(:@renderer, :search_slide, :stop_slide_search, :searching?)
|
@@ -134,7 +138,7 @@ module Rabbit
|
|
134
138
|
|
135
139
|
def_delegators(:@source, :source=, :reset, :base)
|
136
140
|
|
137
|
-
attr_reader :
|
141
|
+
attr_reader :renderer, :last_modified
|
138
142
|
attr_reader :comments, :actions
|
139
143
|
|
140
144
|
attr_writer :saved_image_base_name
|
@@ -147,8 +151,7 @@ module Rabbit
|
|
147
151
|
attr_accessor :font_resolution_ratio
|
148
152
|
attr_accessor :max_n_comments, :comment_theme
|
149
153
|
|
150
|
-
def initialize(
|
151
|
-
@logger = logger
|
154
|
+
def initialize(renderer_class)
|
152
155
|
@frame = NullFrame.new
|
153
156
|
@theme_name = nil
|
154
157
|
@saved_image_base_name = nil
|
@@ -169,9 +172,17 @@ module Rabbit
|
|
169
172
|
@max_n_comments = 100
|
170
173
|
@allotted_time = nil
|
171
174
|
@comment_theme = nil
|
175
|
+
@index_mode = false
|
176
|
+
@key_handler = nil
|
172
177
|
clear
|
173
|
-
@renderer =
|
174
|
-
@actions =
|
178
|
+
@renderer = renderer_class.new(self)
|
179
|
+
@actions = Actions.new(self)
|
180
|
+
end
|
181
|
+
|
182
|
+
def logger
|
183
|
+
message = "Rabbit::Canvas#logger is deprecated. Use Rabbit.logger instead."
|
184
|
+
Rabbit.logger.warn(message)
|
185
|
+
Rabbit.logger
|
175
186
|
end
|
176
187
|
|
177
188
|
def quitted?
|
@@ -201,11 +212,15 @@ module Rabbit
|
|
201
212
|
|
202
213
|
def attach_to(frame, window, container=nil, &block)
|
203
214
|
@frame = frame if frame
|
204
|
-
|
215
|
+
if window
|
216
|
+
@key_handler = KeyHandler.new(self, window)
|
217
|
+
@renderer.attach_to(window, container, &block)
|
218
|
+
end
|
205
219
|
end
|
206
220
|
|
207
221
|
def detach
|
208
222
|
@frame = NullFrame.new
|
223
|
+
@key_handler&.detach
|
209
224
|
@renderer.detach
|
210
225
|
end
|
211
226
|
|
@@ -263,10 +278,17 @@ module Rabbit
|
|
263
278
|
indexes
|
264
279
|
end
|
265
280
|
|
266
|
-
def
|
281
|
+
def n_slides
|
267
282
|
slides.size
|
268
283
|
end
|
269
284
|
|
285
|
+
def slide_size
|
286
|
+
warn("#{self.class.name}\##{__method__} is deprecated. " +
|
287
|
+
"Use \#n_slides instead.",
|
288
|
+
category: :deprecated)
|
289
|
+
n_slides
|
290
|
+
end
|
291
|
+
|
270
292
|
def current_slide
|
271
293
|
slide = slides[current_index]
|
272
294
|
if slide
|
@@ -294,7 +316,7 @@ module Rabbit
|
|
294
316
|
index = @current_index
|
295
317
|
@current_index = new_index
|
296
318
|
end
|
297
|
-
if 0 <= current_index and current_index <
|
319
|
+
if 0 <= current_index and current_index < n_slides
|
298
320
|
yield
|
299
321
|
end
|
300
322
|
ensure
|
@@ -368,7 +390,7 @@ module Rabbit
|
|
368
390
|
if block_given?
|
369
391
|
yield($!)
|
370
392
|
else
|
371
|
-
logger.warn($!.message)
|
393
|
+
Rabbit.logger.warn($!.message)
|
372
394
|
end
|
373
395
|
ensure
|
374
396
|
@parse_request_queue.delete_if {|x| x == id}
|
@@ -431,11 +453,21 @@ module Rabbit
|
|
431
453
|
@renderer.post_iconify
|
432
454
|
end
|
433
455
|
|
456
|
+
def connect_key(keyval, modifier, flags, &block)
|
457
|
+
@key_handler.connect_key(keyval, modifier, flags, &block) if @key_handler
|
458
|
+
end
|
459
|
+
|
460
|
+
def disconnect_key(keyval, modifier)
|
461
|
+
@key_handler.disconnect_key(keyval, modifier) if @key_handler
|
462
|
+
end
|
463
|
+
|
434
464
|
def pre_terminal
|
435
465
|
@renderer.pre_terminal
|
466
|
+
@key_handler.pre_terminal if @key_handler
|
436
467
|
end
|
437
468
|
|
438
469
|
def post_terminal
|
470
|
+
@key_handler.post_terminal if @key_handler
|
439
471
|
@renderer.post_terminal
|
440
472
|
end
|
441
473
|
|
@@ -450,7 +482,7 @@ module Rabbit
|
|
450
482
|
end
|
451
483
|
|
452
484
|
def move_to_if_can(index)
|
453
|
-
if index and 0 <= index and index <
|
485
|
+
if index and 0 <= index and index < n_slides
|
454
486
|
move_to(index)
|
455
487
|
end
|
456
488
|
current_index
|
@@ -461,7 +493,7 @@ module Rabbit
|
|
461
493
|
if slide and !slide.last?
|
462
494
|
old_index = slide.drawing_index
|
463
495
|
slide.move_to_next
|
464
|
-
|
496
|
+
@actions.update_status
|
465
497
|
@renderer.post_move_in_slide(old_index, slide.drawing_index)
|
466
498
|
else
|
467
499
|
move_to_next_slide_if_can
|
@@ -477,7 +509,7 @@ module Rabbit
|
|
477
509
|
if slide and !slide.first?
|
478
510
|
old_index = slide.drawing_index
|
479
511
|
slide.move_to_previous
|
480
|
-
|
512
|
+
@actions.update_status
|
481
513
|
@renderer.post_move_in_slide(old_index, slide.drawing_index)
|
482
514
|
else
|
483
515
|
move_to_previous_slide_if_can
|
@@ -493,7 +525,7 @@ module Rabbit
|
|
493
525
|
end
|
494
526
|
|
495
527
|
def move_to_last
|
496
|
-
move_to(
|
528
|
+
move_to(n_slides - 1)
|
497
529
|
end
|
498
530
|
|
499
531
|
def index_mode?
|
@@ -538,7 +570,7 @@ module Rabbit
|
|
538
570
|
end
|
539
571
|
|
540
572
|
def last_slide?
|
541
|
-
|
573
|
+
n_slides.zero? or current_index == (n_slides - 1)
|
542
574
|
end
|
543
575
|
|
544
576
|
def have_previous_slide?
|
@@ -552,7 +584,7 @@ module Rabbit
|
|
552
584
|
end
|
553
585
|
|
554
586
|
def have_next_slide?
|
555
|
-
|
587
|
+
n_slides - 1 > current_index
|
556
588
|
end
|
557
589
|
|
558
590
|
def have_next?
|
@@ -609,7 +641,7 @@ module Rabbit
|
|
609
641
|
begin
|
610
642
|
callback.call(comment)
|
611
643
|
rescue
|
612
|
-
logger.error($!)
|
644
|
+
Rabbit.logger.error($!)
|
613
645
|
end
|
614
646
|
end
|
615
647
|
true
|
@@ -619,10 +651,10 @@ module Rabbit
|
|
619
651
|
@slides.find{|x| x.is_a?(Element::TitleSlide)}
|
620
652
|
end
|
621
653
|
|
622
|
-
def activate(name,
|
654
|
+
def activate(name, argument=nil)
|
623
655
|
act = action(name)
|
624
|
-
if act and act.
|
625
|
-
act.activate(
|
656
|
+
if act and act.enabled?
|
657
|
+
act.activate(argument)
|
626
658
|
true
|
627
659
|
else
|
628
660
|
false
|
@@ -630,11 +662,11 @@ module Rabbit
|
|
630
662
|
end
|
631
663
|
|
632
664
|
def action(name)
|
633
|
-
act = @actions
|
665
|
+
act = @actions[name]
|
634
666
|
if act
|
635
667
|
act
|
636
668
|
else
|
637
|
-
logger.warn(_("Unknown action: %s") % name)
|
669
|
+
Rabbit.logger.warn(_("Unknown action: %s") % name)
|
638
670
|
false
|
639
671
|
end
|
640
672
|
end
|
@@ -707,7 +739,7 @@ module Rabbit
|
|
707
739
|
success = false
|
708
740
|
index_mode = @index_mode
|
709
741
|
begin
|
710
|
-
|
742
|
+
@actions.update_status
|
711
743
|
clear_theme
|
712
744
|
clear_index_slides
|
713
745
|
manager = Theme::Manager.new(self) do
|
@@ -722,7 +754,7 @@ module Rabbit
|
|
722
754
|
rescue ApplyFinish
|
723
755
|
ensure
|
724
756
|
@apply_theme_request_queue.delete_if {|x| x == id}
|
725
|
-
|
757
|
+
@actions.update_status
|
726
758
|
end
|
727
759
|
activate("ToggleIndexMode") if success and index_mode
|
728
760
|
end
|
@@ -730,16 +762,16 @@ module Rabbit
|
|
730
762
|
|
731
763
|
def process
|
732
764
|
if @processing
|
733
|
-
|
765
|
+
Rabbit.logger.info(_("Processing..."))
|
734
766
|
return
|
735
767
|
end
|
736
768
|
begin
|
737
769
|
@processing = true
|
738
|
-
|
770
|
+
@actions.update_status
|
739
771
|
yield
|
740
772
|
ensure
|
741
773
|
@processing = false
|
742
|
-
|
774
|
+
@actions.update_status
|
743
775
|
end
|
744
776
|
end
|
745
777
|
|
@@ -806,7 +838,7 @@ module Rabbit
|
|
806
838
|
def move_to(index)
|
807
839
|
old_index = current_index
|
808
840
|
set_current_index(index)
|
809
|
-
|
841
|
+
@actions.update_status
|
810
842
|
@renderer.post_move(old_index, current_index)
|
811
843
|
end
|
812
844
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2012-
|
1
|
+
# Copyright (C) 2012-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
|
@@ -16,11 +16,11 @@
|
|
16
16
|
|
17
17
|
require "yaml"
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
require_relative "../author-configuration"
|
20
|
+
require_relative "../console"
|
21
|
+
require_relative "../path-manipulatable"
|
22
|
+
require_relative "../slide-configuration"
|
23
|
+
require_relative "../source-generator"
|
24
24
|
|
25
25
|
module Rabbit
|
26
26
|
module Command
|
@@ -63,7 +63,6 @@ module Rabbit
|
|
63
63
|
def initialize
|
64
64
|
@use_gui = true
|
65
65
|
@data = Data.new
|
66
|
-
@logger = nil
|
67
66
|
end
|
68
67
|
|
69
68
|
def run(arguments)
|
@@ -76,7 +75,7 @@ module Rabbit
|
|
76
75
|
validate
|
77
76
|
unless @validation_errors.empty?
|
78
77
|
messages = (@validation_errors + [_("See --help for example")])
|
79
|
-
|
78
|
+
Rabbit.logger.error(messages.join("\n"))
|
80
79
|
return false
|
81
80
|
end
|
82
81
|
|
@@ -95,10 +94,9 @@ module Rabbit
|
|
95
94
|
|
96
95
|
def setup_options(parser, options)
|
97
96
|
@options = options
|
98
|
-
@
|
99
|
-
@data.author_conf = AuthorConfiguration.new(@logger)
|
97
|
+
@data.author_conf = AuthorConfiguration.new
|
100
98
|
@data.author_conf.load
|
101
|
-
@data.slide_conf = SlideConfiguration.new
|
99
|
+
@data.slide_conf = SlideConfiguration.new
|
102
100
|
@data.slide_conf.author = @data.author_conf
|
103
101
|
|
104
102
|
format = _("Usage: %s COMMAND [OPTIONS]\n" \
|
@@ -439,7 +437,7 @@ module Rabbit
|
|
439
437
|
end
|
440
438
|
|
441
439
|
def show_gui
|
442
|
-
|
440
|
+
require_relative "../gtk"
|
443
441
|
|
444
442
|
mappers = build_gui_mappers
|
445
443
|
|
@@ -506,7 +504,7 @@ module Rabbit
|
|
506
504
|
end
|
507
505
|
|
508
506
|
def merge_config_yaml
|
509
|
-
existing_slide_conf = SlideConfiguration.new
|
507
|
+
existing_slide_conf = SlideConfiguration.new
|
510
508
|
existing_slide_conf.load
|
511
509
|
existing_slide_conf.merge!(@data.slide_conf.to_hash)
|
512
510
|
@data.slide_conf = existing_slide_conf
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2012 Kouhei
|
1
|
+
# Copyright (C) 2012-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
|
@@ -16,11 +16,11 @@
|
|
16
16
|
|
17
17
|
require "yaml"
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
require_relative "../console"
|
20
|
+
require_relative "../author-configuration"
|
21
|
+
require_relative "../theme-configuration"
|
22
|
+
require_relative "../path-manipulatable"
|
23
|
+
require_relative "../source-generator"
|
24
24
|
|
25
25
|
module Rabbit
|
26
26
|
module Command
|
@@ -37,16 +37,15 @@ module Rabbit
|
|
37
37
|
def initialize
|
38
38
|
@theme_conf = nil
|
39
39
|
@author_conf = nil
|
40
|
-
@logger = nil
|
41
40
|
end
|
42
41
|
|
43
42
|
def run(arguments)
|
44
|
-
@options
|
43
|
+
@options = parse_command_line_arguments(arguments)
|
45
44
|
|
46
45
|
validate
|
47
46
|
unless @validation_errors.empty?
|
48
47
|
messages = (@validation_errors + [_("See --help for example")])
|
49
|
-
|
48
|
+
Rabbit.logger.error(messages.join("\n"))
|
50
49
|
return false
|
51
50
|
end
|
52
51
|
|
@@ -58,10 +57,9 @@ module Rabbit
|
|
58
57
|
private
|
59
58
|
def parse_command_line_arguments(arguments)
|
60
59
|
Rabbit::Console.parse!(ARGV) do |parser, options|
|
61
|
-
@
|
62
|
-
@author_conf = AuthorConfiguration.new(@logger)
|
60
|
+
@author_conf = AuthorConfiguration.new
|
63
61
|
@author_conf.load
|
64
|
-
@theme_conf = ThemeConfiguration.new
|
62
|
+
@theme_conf = ThemeConfiguration.new
|
65
63
|
@theme_conf.author = @author_conf
|
66
64
|
|
67
65
|
format = _("Usage: %s new [options]\n" \
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2004-
|
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
|
@@ -16,8 +16,8 @@
|
|
16
16
|
|
17
17
|
require "English"
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
require_relative "../rabbit"
|
20
|
+
require_relative "../slide-configuration"
|
21
21
|
|
22
22
|
module Rabbit
|
23
23
|
module Command
|
@@ -30,27 +30,24 @@ module Rabbit
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
def initialize
|
34
|
-
@logger = nil
|
35
|
-
end
|
36
|
-
|
37
33
|
def run(arguments)
|
38
34
|
GC.disable
|
39
35
|
require "rbconfig"
|
40
36
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
37
|
+
require_relative "../console"
|
38
|
+
require_relative "../front"
|
39
|
+
require_relative "../renderer"
|
40
|
+
require_relative "../source"
|
45
41
|
|
46
|
-
@options
|
42
|
+
@options = parse_command_line_arguments(arguments)
|
47
43
|
|
48
|
-
|
44
|
+
require_relative "../canvas"
|
49
45
|
GC.enable
|
50
46
|
|
51
47
|
application = ::Rabbit.application
|
52
48
|
succeeded = false
|
53
49
|
application.signal_connect("command-line") do |_, command_line|
|
50
|
+
GLib.application_name = "Rabbit"
|
54
51
|
application.activate
|
55
52
|
succeeded ? 0 : 1
|
56
53
|
end
|
@@ -61,7 +58,7 @@ module Rabbit
|
|
61
58
|
__send__("do_#{@options.action}")
|
62
59
|
end
|
63
60
|
rescue
|
64
|
-
|
61
|
+
::Rabbit.logger.error($!)
|
65
62
|
end
|
66
63
|
end
|
67
64
|
exit_code = application.run
|
@@ -74,8 +71,6 @@ module Rabbit
|
|
74
71
|
private
|
75
72
|
def parse_command_line_arguments(arguments)
|
76
73
|
Console.parse!(arguments) do |parser, options|
|
77
|
-
@logger = options.logger
|
78
|
-
|
79
74
|
rest_arguments_from_options_file = []
|
80
75
|
options.before_hooks << lambda do |_, _, _|
|
81
76
|
rest_arguments_from_options_file = options.rest.dup
|
@@ -608,8 +603,8 @@ module Rabbit
|
|
608
603
|
source = options.rest[0]
|
609
604
|
if /\.gem\z/i =~ source
|
610
605
|
gem_name = $PREMATCH
|
611
|
-
|
612
|
-
finder = GemFinder.new
|
606
|
+
require_relative "../gem-finder"
|
607
|
+
finder = GemFinder.new
|
613
608
|
spec = finder.find(gem_name, "#{SlideConfiguration::GEM_NAME_PREFIX}-")
|
614
609
|
source = spec.gem_dir if spec
|
615
610
|
end
|
@@ -622,7 +617,7 @@ module Rabbit
|
|
622
617
|
end
|
623
618
|
|
624
619
|
def make_canvas(renderer)
|
625
|
-
canvas = Canvas.new(
|
620
|
+
canvas = Canvas.new(renderer)
|
626
621
|
canvas.comment_theme = @options.comment_theme
|
627
622
|
canvas.allotted_time = @options.allotted_time
|
628
623
|
canvas
|
@@ -673,8 +668,7 @@ module Rabbit
|
|
673
668
|
if @options.source_type == Source::ARGF
|
674
669
|
rest_arguments = [ARGF]
|
675
670
|
end
|
676
|
-
source = @options.source_type.new(@options.encoding,
|
677
|
-
*rest_arguments)
|
671
|
+
source = @options.source_type.new(@options.encoding, *rest_arguments)
|
678
672
|
source.base = @options.base if @options.base
|
679
673
|
source
|
680
674
|
end
|
@@ -746,16 +740,16 @@ module Rabbit
|
|
746
740
|
require "drb/drb"
|
747
741
|
begin
|
748
742
|
DRb.start_service(@options.druby_uri, front)
|
749
|
-
|
743
|
+
::Rabbit.logger.info(DRb.uri) if @options.output_druby_uri
|
750
744
|
rescue SocketError
|
751
|
-
|
745
|
+
::Rabbit.logger.error($!)
|
752
746
|
rescue Errno::EADDRINUSE
|
753
|
-
|
747
|
+
::Rabbit.logger.error(_("dRuby URI <%s> is in use.") % @options.druby_uri)
|
754
748
|
end
|
755
749
|
end
|
756
750
|
|
757
751
|
def setup_soap(front)
|
758
|
-
|
752
|
+
require_relative "../soap/server"
|
759
753
|
thread = nil
|
760
754
|
|
761
755
|
begin
|
@@ -763,20 +757,20 @@ module Rabbit
|
|
763
757
|
:BindAddress => @options.soap_host,
|
764
758
|
:Port => @options.soap_port,
|
765
759
|
:AddressFamily => Socket::AF_INET,
|
766
|
-
:Logger =>
|
760
|
+
:Logger => ::Rabbit.logger,
|
767
761
|
}
|
768
762
|
server = Rabbit::SOAP::Server.new(front, config)
|
769
763
|
prev = trap(:INT) {server.shutdown; trap(:INT, prev)}
|
770
764
|
thread = Thread.new {server.start}
|
771
765
|
rescue Errno::EADDRINUSE
|
772
|
-
|
766
|
+
::Rabbit.logger.error(_("port <%s> for SOAP is in use.") % @options.soap_port)
|
773
767
|
end
|
774
768
|
|
775
769
|
thread
|
776
770
|
end
|
777
771
|
|
778
772
|
def setup_xmlrpc(front)
|
779
|
-
|
773
|
+
require_relative "../xmlrpc/server"
|
780
774
|
thread = nil
|
781
775
|
|
782
776
|
begin
|
@@ -784,13 +778,13 @@ module Rabbit
|
|
784
778
|
:BindAddress => @options.xmlrpc_host,
|
785
779
|
:Port => @options.xmlrpc_port,
|
786
780
|
:AddressFamily => Socket::AF_INET,
|
787
|
-
:Logger =>
|
781
|
+
:Logger => ::Rabbit.logger,
|
788
782
|
}
|
789
783
|
server = Rabbit::XMLRPC::Server.new(front, config)
|
790
784
|
prev = trap(:INT) {server.shutdown; trap(:INT, prev)}
|
791
785
|
thread = Thread.new {server.start}
|
792
786
|
rescue Errno::EADDRINUSE
|
793
|
-
|
787
|
+
::Rabbit.logger.error(_("port <%s> for XML-RPC is in use.") % @options.xmlrpc_port)
|
794
788
|
end
|
795
789
|
|
796
790
|
thread
|
@@ -809,7 +803,7 @@ module Rabbit
|
|
809
803
|
canvas.quit
|
810
804
|
true
|
811
805
|
rescue ::Rabbit::NoPrintSupportError
|
812
|
-
|
806
|
+
::Rabbit.logger.error($!.message)
|
813
807
|
false
|
814
808
|
end
|
815
809
|
|
@@ -831,19 +825,13 @@ module Rabbit
|
|
831
825
|
end
|
832
826
|
|
833
827
|
def do_display
|
834
|
-
display_init_options = {}
|
835
|
-
if @options.use_gl
|
836
|
-
display_init_options[:preferred_class_name] = "ClutterEmbed"
|
837
|
-
end
|
838
|
-
Renderer::Display.init(display_init_options)
|
839
|
-
|
840
828
|
source = make_source
|
841
|
-
if
|
842
|
-
canvas = make_canvas(Renderer::
|
829
|
+
if Gtk::Version::MAJOR >= 4
|
830
|
+
canvas = make_canvas(Renderer::Scene)
|
843
831
|
else
|
844
|
-
canvas = make_canvas(Renderer::Display)
|
832
|
+
canvas = make_canvas(Renderer::Display::DrawingArea)
|
845
833
|
end
|
846
|
-
frame = Frame.new(
|
834
|
+
frame = Frame.new(canvas)
|
847
835
|
frame.geometry = @options.geometry
|
848
836
|
setup_base_size(canvas)
|
849
837
|
setup_paper_size(canvas)
|
@@ -856,7 +844,7 @@ module Rabbit
|
|
856
844
|
if @options.show_native_window_id
|
857
845
|
native_surface = frame.window.surface
|
858
846
|
if native_surface.respond_to?(:xid)
|
859
|
-
|
847
|
+
::Rabbit.logger.info(_("Window ID: %d") % native_surface.xid)
|
860
848
|
end
|
861
849
|
end
|
862
850
|
apply_theme_if_need(frame)
|
@@ -885,7 +873,7 @@ module Rabbit
|
|
885
873
|
end
|
886
874
|
|
887
875
|
if exception
|
888
|
-
|
876
|
+
::Rabbit.logger.info(exception.message)
|
889
877
|
false
|
890
878
|
else
|
891
879
|
true
|