rabbit 2.2.1 → 3.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.
Files changed (177) hide show
  1. checksums.yaml +5 -5
  2. data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
  3. data/doc/_config.yml +2 -2
  4. data/doc/_layouts/en.html +1 -1
  5. data/doc/_layouts/ja.html +1 -1
  6. data/doc/en/news.rd +140 -0
  7. data/doc/en/sample/hiki/rabbit.hiki +2 -2
  8. data/doc/en/sample/markdown/rabbit.md +1 -1
  9. data/doc/en/sample/rd/rabbit.rd +1 -1
  10. data/doc/en/usage/rabbit-slide.rd +3 -3
  11. data/doc/images/screenshots/en/blue-circle-raw.png +0 -0
  12. data/doc/images/screenshots/en/blue-circle.png +0 -0
  13. data/doc/images/screenshots/en/clear-blue-raw.png +0 -0
  14. data/doc/images/screenshots/en/clear-blue.png +0 -0
  15. data/doc/images/screenshots/en/cozmixng-raw.png +0 -0
  16. data/doc/images/screenshots/en/cozmixng.png +0 -0
  17. data/doc/images/screenshots/en/dark-gradation-raw.png +0 -0
  18. data/doc/images/screenshots/en/dark-gradation.png +0 -0
  19. data/doc/images/screenshots/en/day-white-raw.png +0 -0
  20. data/doc/images/screenshots/en/day-white.png +0 -0
  21. data/doc/images/screenshots/en/debian-raw.png +0 -0
  22. data/doc/images/screenshots/en/debian.png +0 -0
  23. data/doc/images/screenshots/en/green-circle-raw.png +0 -0
  24. data/doc/images/screenshots/en/green-circle.png +0 -0
  25. data/doc/images/screenshots/en/night-black-raw.png +0 -0
  26. data/doc/images/screenshots/en/night-black.png +0 -0
  27. data/doc/images/screenshots/en/rabbit-raw.png +0 -0
  28. data/doc/images/screenshots/en/rabbit.png +0 -0
  29. data/doc/images/screenshots/en/ranguba-raw.png +0 -0
  30. data/doc/images/screenshots/en/ranguba.png +0 -0
  31. data/doc/images/screenshots/en/red-frame-raw.png +0 -0
  32. data/doc/images/screenshots/en/red-frame.png +0 -0
  33. data/doc/images/screenshots/en/ruby-gnome2-raw.png +0 -0
  34. data/doc/images/screenshots/en/ruby-gnome2.png +0 -0
  35. data/doc/images/screenshots/en/rubykaigi2011-raw.png +0 -0
  36. data/doc/images/screenshots/en/rubykaigi2011.png +0 -0
  37. data/doc/images/screenshots/ja/blue-circle-raw.png +0 -0
  38. data/doc/images/screenshots/ja/blue-circle.png +0 -0
  39. data/doc/images/screenshots/ja/clear-blue-raw.png +0 -0
  40. data/doc/images/screenshots/ja/clear-blue.png +0 -0
  41. data/doc/images/screenshots/ja/cozmixng-raw.png +0 -0
  42. data/doc/images/screenshots/ja/cozmixng.png +0 -0
  43. data/doc/images/screenshots/ja/dark-gradation-raw.png +0 -0
  44. data/doc/images/screenshots/ja/dark-gradation.png +0 -0
  45. data/doc/images/screenshots/ja/day-white-raw.png +0 -0
  46. data/doc/images/screenshots/ja/day-white.png +0 -0
  47. data/doc/images/screenshots/ja/debian-raw.png +0 -0
  48. data/doc/images/screenshots/ja/debian.png +0 -0
  49. data/doc/images/screenshots/ja/green-circle-raw.png +0 -0
  50. data/doc/images/screenshots/ja/green-circle.png +0 -0
  51. data/doc/images/screenshots/ja/night-black-raw.png +0 -0
  52. data/doc/images/screenshots/ja/night-black.png +0 -0
  53. data/doc/images/screenshots/ja/rabbit-raw.png +0 -0
  54. data/doc/images/screenshots/ja/rabbit.png +0 -0
  55. data/doc/images/screenshots/ja/ranguba-raw.png +0 -0
  56. data/doc/images/screenshots/ja/ranguba.png +0 -0
  57. data/doc/images/screenshots/ja/red-frame-raw.png +0 -0
  58. data/doc/images/screenshots/ja/red-frame.png +0 -0
  59. data/doc/images/screenshots/ja/ruby-gnome2-raw.png +0 -0
  60. data/doc/images/screenshots/ja/ruby-gnome2.png +0 -0
  61. data/doc/images/screenshots/ja/rubykaigi2011-raw.png +0 -0
  62. data/doc/images/screenshots/ja/rubykaigi2011.png +0 -0
  63. data/doc/ja/how-to-make/index.rd +1 -1
  64. data/doc/ja/news.rd +143 -0
  65. data/doc/ja/sample/hiki/rabbit.hiki +2 -2
  66. data/doc/ja/sample/markdown/rabbit.md +1 -1
  67. data/doc/ja/sample/rd/rabbit.rd +1 -1
  68. data/doc/ja/slides.rd +1 -1
  69. data/doc/ja/usage/rabbit-slide.rd +3 -3
  70. data/doc/ja/users.rd +1 -1
  71. data/lib/rabbit/action.rb +23 -4
  72. data/lib/rabbit/canvas.rb +70 -14
  73. data/lib/rabbit/command/rabbit-slide.rb +252 -67
  74. data/lib/rabbit/command/rabbit-slide.ui +180 -0
  75. data/lib/rabbit/command/rabbit.rb +14 -20
  76. data/lib/rabbit/console.rb +9 -3
  77. data/lib/rabbit/dependency-canvas.rb +19 -1
  78. data/lib/rabbit/element.rb +34 -7
  79. data/lib/rabbit/element/poppler-page.rb +1 -2
  80. data/lib/rabbit/element/text-container-element.rb +2 -2
  81. data/lib/rabbit/element/text-renderer.rb +5 -4
  82. data/lib/rabbit/element/title-slide.rb +8 -0
  83. data/lib/rabbit/element/video.rb +1 -2
  84. data/lib/rabbit/filename.rb +39 -0
  85. data/lib/rabbit/formatter.rb +61 -30
  86. data/lib/rabbit/frame.rb +1 -19
  87. data/lib/rabbit/front.rb +23 -2
  88. data/lib/rabbit/gesture/handler.rb +21 -2
  89. data/lib/rabbit/graffiti/config-dialog.rb +15 -18
  90. data/lib/rabbit/gtk.rb +2 -191
  91. data/lib/rabbit/html/generator.rb +38 -30
  92. data/lib/rabbit/image-data-loader.rb +6 -1
  93. data/lib/rabbit/image.rb +22 -4
  94. data/lib/rabbit/image/base.rb +34 -2
  95. data/lib/rabbit/image/default.rb +1 -1
  96. data/lib/rabbit/image/eps.rb +1 -1
  97. data/lib/rabbit/image/gimp.rb +1 -1
  98. data/lib/rabbit/info-window.rb +27 -15
  99. data/lib/rabbit/logger/gui.rb +21 -23
  100. data/lib/rabbit/logger/stderr.rb +1 -1
  101. data/lib/rabbit/pango-markup.rb +44 -0
  102. data/lib/rabbit/parser.rb +20 -3
  103. data/lib/rabbit/parser/ext/image.rb +25 -8
  104. data/lib/rabbit/parser/ext/video.rb +21 -2
  105. data/lib/rabbit/parser/markdown.rb +1 -2
  106. data/lib/rabbit/parser/pdf.rb +23 -7
  107. data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +20 -0
  108. data/lib/rabbit/progress.rb +34 -23
  109. data/lib/rabbit/renderer.rb +17 -23
  110. data/lib/rabbit/renderer/base.rb +31 -57
  111. data/lib/rabbit/renderer/color.rb +46 -53
  112. data/lib/rabbit/renderer/display/base.rb +71 -62
  113. data/lib/rabbit/renderer/display/button-handler.rb +2 -1
  114. data/lib/rabbit/renderer/display/clutter-embed.rb +60 -26
  115. data/lib/rabbit/renderer/display/drawing-area-base.rb +1 -1
  116. data/lib/rabbit/renderer/display/drawing-area-primitive.rb +34 -21
  117. data/lib/rabbit/renderer/display/graffiti.rb +1 -3
  118. data/lib/rabbit/renderer/display/hook-handler.rb +8 -4
  119. data/lib/rabbit/renderer/display/key-handler.rb +7 -2
  120. data/lib/rabbit/renderer/display/magnifier.rb +2 -2
  121. data/lib/rabbit/renderer/display/progress.rb +10 -2
  122. data/lib/rabbit/renderer/display/spotlight.rb +2 -2
  123. data/lib/rabbit/renderer/engine/cairo.rb +0 -3
  124. data/lib/rabbit/renderer/kernel.rb +54 -0
  125. data/lib/rabbit/renderer/offscreen.rb +14 -6
  126. data/lib/rabbit/renderer/print-layout.rb +150 -0
  127. data/lib/rabbit/renderer/printer.rb +236 -0
  128. data/lib/rabbit/renderer/screen.rb +288 -0
  129. data/lib/rabbit/renderer/widget/drawing-area.rb +93 -0
  130. data/lib/rabbit/size.rb +52 -25
  131. data/lib/rabbit/slide-configuration.rb +56 -12
  132. data/lib/rabbit/source.rb +24 -8
  133. data/lib/rabbit/task/slide.rb +1 -1
  134. data/lib/rabbit/theme/applier.rb +26 -9
  135. data/lib/rabbit/theme/base/base.rb +7 -7
  136. data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
  137. data/lib/rabbit/theme/image-timer/image-timer.rb +3 -1
  138. data/lib/rabbit/theme/image-viewer/image-viewer.rb +13 -1
  139. data/lib/rabbit/theme/image/image.rb +4 -4
  140. data/lib/rabbit/theme/lightning-talk-toolkit/lightning-talk-toolkit.rb +3 -1
  141. data/lib/rabbit/theme/tag/tag.rb +12 -4
  142. data/lib/rabbit/version.rb +2 -2
  143. data/lib/rabbit/video-window.rb +75 -89
  144. data/misc/emacs/rabbit-mode.el +11 -7
  145. data/po/en/rabbit.edit.po +189 -185
  146. data/po/en/rabbit.po +15 -12
  147. data/po/fr/rabbit.edit.po +189 -185
  148. data/po/fr/rabbit.po +15 -12
  149. data/po/ja/rabbit.edit.po +190 -186
  150. data/po/ja/rabbit.po +16 -13
  151. data/rabbit.gemspec +34 -16
  152. data/test/command/test-rabbit.rb +100 -0
  153. data/test/{rabbit-test-utils.rb → helper.rb} +7 -4
  154. data/test/{rabbit-test-utils → helper}/fixture.rb +2 -2
  155. data/test/{rabbit-test-utils → helper}/parser.rb +2 -2
  156. data/test/image/test-dia.rb +2 -2
  157. data/test/image/test-eps.rb +2 -2
  158. data/test/parser/test-markdown.rb +3 -5
  159. data/test/parser/test-rd.rb +1 -3
  160. data/test/parser/test-wiki.rb +3 -5
  161. data/test/run-test.rb +3 -3
  162. data/test/test-applier.rb +60 -29
  163. data/test/test-canvas.rb +70 -0
  164. data/test/test-color.rb +18 -9
  165. data/test/test-element.rb +15 -3
  166. data/test/test-size.rb +25 -22
  167. data/test/test-slide-configuration.rb +16 -6
  168. data/test/test-source.rb +15 -5
  169. data/test/test-utils.rb +15 -1
  170. metadata +55 -84
  171. data/lib/rabbit/renderer/print.rb +0 -31
  172. data/lib/rabbit/renderer/print/base.rb +0 -78
  173. data/lib/rabbit/renderer/print/cairo.rb +0 -122
  174. data/lib/rabbit/renderer/print/layout.rb +0 -123
  175. data/lib/rabbit/renderer/print/multiple.rb +0 -202
  176. data/lib/rabbit/source/hiki.rb +0 -36
  177. data/lib/rabbit/source/slide-share.rb +0 -53
@@ -0,0 +1,39 @@
1
+ # Copyright (C) 2018 Kouhei Sutou <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 "glib2"
18
+
19
+ module Rabbit
20
+ class Filename
21
+ class << self
22
+ def sanitize(string)
23
+ string.gsub(/[\r\n]/, "").gsub(/[\/\\:]/, "-")
24
+ end
25
+ end
26
+
27
+ def initialize(filename)
28
+ @utf8_filename = filename.encode("UTF-8")
29
+ end
30
+
31
+ def encode
32
+ if GLib.const_defined?(:Win32)
33
+ GLib::Win32.locale_filename_from_utf8(@utf8_filename)
34
+ else
35
+ GLib.filename_from_utf8(@utf8_filename)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -28,18 +28,6 @@ module Rabbit
28
28
  module SpanTextFormatter
29
29
  include Formatter
30
30
 
31
- PANGO2CSS = {
32
- "font_family" => Proc.new do |name, value|
33
- ["font-family", "'#{value}'"]
34
- end,
35
- "foreground" => "color",
36
- "size" => Proc.new do |name, value|
37
- ["font-size", "#{(value / Pango::SCALE) * 2}px"]
38
- end,
39
- "style" => "font-style",
40
- "weight" => "font-weight",
41
- }
42
-
43
31
  attr_reader :value
44
32
 
45
33
  def initialize(value)
@@ -55,26 +43,24 @@ module Rabbit
55
43
  end
56
44
 
57
45
  def format(text)
58
- tagged_text(text, "span", normalize_attribute(name, @value))
46
+ tagged_text(text, "span", {name => pango_value})
59
47
  end
60
48
 
61
49
  def html_format(text)
62
- css_name, css_value = pango2css(name, @value)
63
50
  tagged_text(text, "span", {'style' => "#{css_name}: #{css_value};"})
64
51
  end
65
52
 
53
+ def pango_value
54
+ @value
55
+ end
56
+
66
57
  private
67
- def normalize_attribute(name, value)
68
- {name => value}
58
+ def css_name
59
+ name
69
60
  end
70
61
 
71
- def pango2css(name, value)
72
- css_name = PANGO2CSS[name]
73
- if css_name.respond_to?(:call)
74
- css_name.call(name, value)
75
- else
76
- [css_name || name, value]
77
- end
62
+ def css_value
63
+ value
78
64
  end
79
65
  end
80
66
 
@@ -93,17 +79,62 @@ module Rabbit
93
79
  EOC
94
80
  end
95
81
 
96
- class Size
97
- def initialize(value)
98
- value = value.ceil if value.is_a?(Numeric)
99
- super(value)
82
+ class FontFamily
83
+ private
84
+ def css_name
85
+ "font-family"
86
+ end
87
+
88
+ def css_value
89
+ "'#{@value}'"
100
90
  end
101
91
  end
102
92
 
103
93
  class Foreground
104
- def normalize_attribute(name, value)
105
- value = Renderer::Color.parse(value).to_gdk_format
106
- super(name, value)
94
+ def pango_value
95
+ Renderer::Color.parse(@value).to_gdk_format
96
+ end
97
+
98
+ private
99
+ def css_name
100
+ "color"
101
+ end
102
+ end
103
+
104
+ class Size
105
+ def pango_value
106
+ if @value > Pango::SCALE # For backward compatibility
107
+ @value.ceil
108
+ else
109
+ (@value * Pango::SCALE).ceil
110
+ end
111
+ end
112
+
113
+ private
114
+ def css_name
115
+ "font-size"
116
+ end
117
+
118
+ def css_value
119
+ if value > Pango::SCALE # For backward compatibility
120
+ "#{(value / Pango::SCALE) * 2}px"
121
+ else
122
+ "#{value * 2}px"
123
+ end
124
+ end
125
+ end
126
+
127
+ class Style
128
+ private
129
+ def css_name
130
+ "font-style"
131
+ end
132
+ end
133
+
134
+ class Weigth
135
+ private
136
+ def css_name
137
+ "font-weight"
107
138
  end
108
139
  end
109
140
 
@@ -25,13 +25,12 @@ module Rabbit
25
25
  def_delegators(:@canvas, :rss_base_uri=, :use_gl?, :use_gl=)
26
26
 
27
27
  attr_reader :window, :logger
28
- attr_accessor :geometry, :force_keep_above
28
+ attr_accessor :geometry
29
29
 
30
30
  def initialize(logger, canvas)
31
31
  @logger = logger
32
32
  @canvas = canvas
33
33
  @geometry = nil
34
- @force_keep_above = nil
35
34
  end
36
35
 
37
36
  def destroyed?
@@ -88,11 +87,6 @@ module Rabbit
88
87
  init_window(width, height, window_type)
89
88
  @fullscreen = false
90
89
  @main_window = main_window
91
- if @main_window
92
- @window.keep_above = @force_keep_above unless @force_keep_above.nil?
93
- else
94
- @window.keep_above = true
95
- end
96
90
  @window.show
97
91
  @canvas.post_init_gui
98
92
  end
@@ -122,24 +116,13 @@ module Rabbit
122
116
  set_window_signal_destroy
123
117
  end
124
118
 
125
- def update_keep_above(keep_above)
126
- if @main_window
127
- keep_above = @force_keep_above unless @force_keep_above.nil?
128
- @window.keep_above = keep_above
129
- else
130
- @window.keep_above = true
131
- end
132
- end
133
-
134
119
  def set_window_signal_window_state_event
135
120
  @window.signal_connect("window_state_event") do |widget, event|
136
121
  if event.changed_mask.fullscreen?
137
122
  @fullscreen = event.new_window_state.fullscreen?
138
123
  if @fullscreen
139
- @window.keep_above = true
140
124
  @canvas.fullscreened
141
125
  else
142
- update_keep_above(false)
143
126
  @canvas.unfullscreened
144
127
  end
145
128
  elsif event.changed_mask.iconified?
@@ -191,7 +174,6 @@ module Rabbit
191
174
  def_null_methods(:icon, :icon=, :set_icon)
192
175
  def_null_methods(:icon_list, :icon_list=, :set_icon_list)
193
176
  def_null_methods(:update_title, :geometry, :geometry=)
194
- def_null_methods(:force_keep_above, :force_keep_above=)
195
177
 
196
178
  def_null_methods(:fullscreen?, :quit)
197
179
 
@@ -1,3 +1,19 @@
1
+ # Copyright (C) 2005-2019 Kouhei Sutou <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 "monitor"
2
18
 
3
19
  require "rabbit/rabbit"
@@ -29,11 +45,16 @@ module Rabbit
29
45
  AVAILABLE_INTERFACES << [name, PublicLevel::MOVE, false]
30
46
  end
31
47
 
32
- %w(width height paper_width paper_height).each do |name|
48
+ %w(width height base_width base_height paper_width paper_height).each do |name|
33
49
  AVAILABLE_INTERFACES << [name, PublicLevel::READ_SIZE, false]
34
50
  end
35
51
 
36
- %w(width= height= paper_width= paper_height=).each do |name|
52
+ # Deprecated. Use #base_width= and #base_height= instead.
53
+ %w(width= height=).each do |name|
54
+ AVAILABLE_INTERFACES << [name, PublicLevel::CHANGE_SIZE, true]
55
+ end
56
+
57
+ %w(base_width= base_height= paper_width= paper_height=).each do |name|
37
58
  AVAILABLE_INTERFACES << [name, PublicLevel::CHANGE_SIZE, true]
38
59
  end
39
60
 
@@ -1,3 +1,19 @@
1
+ # Copyright (C) 2006-2017 Kouhei Sutou <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 'rabbit/gtk'
2
18
 
3
19
  require 'rabbit/rabbit'
@@ -79,7 +95,8 @@ module Rabbit
79
95
  def draw(renderer)
80
96
  if @back_color.alpha == 1.0 or
81
97
  (@back_color.alpha < 1.0 and renderer.alpha_available?)
82
- args = [true, 0, 0, renderer.width, renderer.height]
98
+ size = renderer.size
99
+ args = [true, 0, 0, size.real_width, size.real_height]
83
100
  args << @back_color
84
101
  renderer.draw_rectangle(*args)
85
102
  end
@@ -160,7 +177,9 @@ module Rabbit
160
177
  icon = nil
161
178
  icon = act.create_icon(Gtk::IconSize::DIALOG) if act
162
179
  if icon
163
- pixbuf = icon.render_icon(icon.stock, icon.icon_size, act.name)
180
+ stock, = icon.stock
181
+ icon_size = icon.icon_size
182
+ pixbuf = icon.render_icon_pixbuf(stock, icon_size)
164
183
  x -= pixbuf.width / 2.0
165
184
  y -= pixbuf.height / 2.0
166
185
  renderer.draw_pixbuf(pixbuf, x, y)
@@ -7,16 +7,18 @@ module Rabbit
7
7
  class ConfigDialog
8
8
  include GetText
9
9
 
10
- attr_reader :color, :line_width
11
10
  def initialize(color, line_width)
12
- @original_color = @color = color
13
- @original_line_width = @line_width = line_width
11
+ @original_color = color
12
+ @original_line_width = line_width
14
13
  end
15
14
 
16
15
  def run(&block)
17
16
  @callback = block
18
17
  init_dialog
19
- if @dialog.run != Gtk::Dialog::RESPONSE_OK
18
+ if @dialog.run == Gtk::ResponseType::OK
19
+ @callback.call(Renderer::Color.new(@dialog.rgba),
20
+ nil)
21
+ else
20
22
  @callback.call(@original_color, @original_line_width)
21
23
  end
22
24
  @dialog.destroy
@@ -24,20 +26,12 @@ module Rabbit
24
26
 
25
27
  private
26
28
  def init_dialog
27
- @dialog = Gtk::ColorSelectionDialog.new
28
- colorsel = @dialog.colorsel
29
- colorsel.has_opacity_control = true
30
- colorsel.has_palette = true
31
- r, g, b, a = @original_color.to_gdk_rgba
32
- colorsel.set_current_color(Gdk::Color.new(r, g, b))
33
- colorsel.set_current_alpha(a)
29
+ @dialog = Gtk::ColorChooserDialog.new
30
+ @dialog.use_alpha = true
31
+ @dialog.rgba = @original_color.to_gdk_rgba
34
32
  add_line_width_control
35
- colorsel.signal_connect("color_changed") do
36
- color = Renderer::Color.new_from_gdk_color(colorsel.current_color)
37
- color.have_alpha = true
38
- alpha = colorsel.current_alpha / Renderer::Color::GDK_COLOR_NORMALIZE
39
- color.alpha = alpha
40
- @callback.call(color, nil)
33
+ @dialog.signal_connect(:color_activated) do |gdk_color|
34
+ @callback.call(Renderer::Color.new(gdk_color), nil)
41
35
  end
42
36
  end
43
37
 
@@ -52,7 +46,10 @@ module Rabbit
52
46
  hbox.pack_end(spin, :expand => false, :fill => false, :padding => 5)
53
47
  hbox.pack_end(label, :expand => false, :fill => false, :padding => 5)
54
48
  hbox.show_all
55
- @dialog.vbox.pack_end(hbox, :expand => false, :fill => false, :padding => 5)
49
+ @dialog.child.pack_end(hbox,
50
+ :expand => false,
51
+ :fill => false,
52
+ :padding => 5)
56
53
  end
57
54
  end
58
55
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2014-2015 Kouhei Sutou <kou@cozmixng.org>
1
+ # Copyright (C) 2014-2018 Kouhei Sutou <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,193 +14,4 @@
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 "English"
18
-
19
- if ENV["RABBIT_GTK_VERSION"] == "3"
20
- require "gtk3"
21
- Gtk.init if Gtk.respond_to?(:init)
22
- else
23
- require "cairo"
24
- require "gio2"
25
- require "gtk2"
26
- end
27
-
28
- module Cairo
29
- class Region
30
- unless public_method_defined?(:each_rectangle)
31
- def each_rectangle
32
- num_rectangles.times do |i|
33
- yield(self[i])
34
- end
35
- end
36
- end
37
- end
38
- end
39
-
40
- module Pango
41
- unless const_defined?(:WrapMode)
42
- WrapMode = Layout::WrapMode
43
- end
44
-
45
- unless const_defined?(:Alignment)
46
- Alignment = Layout::Alignment
47
- end
48
- end
49
-
50
- module Gdk
51
- class Event
52
- STOP = true unless const_defined?(:STOP)
53
- PROPAGATE = false unless const_defined?(:PROPAGATE)
54
- end
55
-
56
- class Window
57
- unless method_defined?(:width)
58
- def width
59
- size[0]
60
- end
61
- end
62
-
63
- unless method_defined?(:height)
64
- def height
65
- size[1]
66
- end
67
- end
68
- end
69
-
70
- unless const_defined?(:EventType)
71
- EventType = Event::Type
72
- end
73
-
74
- unless const_defined?(:ModifierType)
75
- ModifierType = Window::ModifierType
76
- end
77
-
78
- unless const_defined?(:EventMask)
79
- EventMask = Event::Mask
80
- end
81
-
82
- module Keyval
83
- constants.each do |name|
84
- if /\AGDK_KEY_/ =~ name.to_s
85
- const_set("KEY_#{$POSTMATCH}", const_get(name))
86
- end
87
- end
88
- end
89
-
90
- class Screen
91
- unless method_defined?(:get_monitor_geometry)
92
- alias_method :get_monitor_geometry, :monitor_geometry
93
- end
94
- end
95
-
96
- unless const_defined?(:ScrollDirection)
97
- ScrollDirection = Gdk::EventScroll::Direction
98
- end
99
- end
100
-
101
- module Gtk
102
- unless const_defined?(:Actionable)
103
- class Action
104
- alias_method :initialize_raw, :initialize
105
- def initialize(name, options={})
106
- initialize_raw(name,
107
- options[:label],
108
- options[:tooltip],
109
- options[:stock_id])
110
-
111
- end
112
- end
113
- end
114
-
115
- unless const_defined?(:Application)
116
- class Application < Gio::Application
117
- attr_reader :windows
118
- def initialize(id, flags)
119
- super
120
- signal_connect_after("activate") do
121
- Gtk.main unless @windows.empty?
122
- end
123
- @windows = []
124
- end
125
- end
126
- end
127
-
128
- unless const_defined?(:ApplicationWindow)
129
- class ApplicationWindow
130
- class << self
131
- def new(application)
132
- window = Window.new
133
- application.windows << window
134
- window.signal_connect("destroy") do
135
- windows = application.windows
136
- windows.delete(window)
137
- Gtk.main_quit if windows.empty?
138
- end
139
- window
140
- end
141
- end
142
- end
143
- end
144
-
145
- class Widget
146
- unless public_method_defined?(:drag_dest_set)
147
- def drag_dest_set(flags, targets, actions)
148
- Gtk::Drag.dest_set(self, flags, targets, actions)
149
- end
150
- end
151
-
152
- unless public_method_defined?(:shape_combine_region)
153
- def shape_combine_region(cairo_region)
154
- gdk_region = cairo_region_to_gdk_region(cairo_region)
155
- window.shape_combine_region(gdk_region, 0, 0)
156
- end
157
- end
158
-
159
- private
160
- def cairo_region_to_gdk_region(cairo_region)
161
- return nil if cairo_region.nil?
162
-
163
- gdk_region = Gdk::Region.new
164
- cairo_region.each_rectangle do |rectangle|
165
- gdk_region.union(Gdk::Rectangle.new(*rectangle))
166
- end
167
- gdk_region
168
- end
169
- end
170
-
171
- if Box.gtype.abstract?
172
- class HBox
173
- class << self
174
- alias_method :new_raw, :new
175
- def new(*arguments)
176
- new_raw(*arguments)
177
- end
178
- end
179
- end
180
-
181
- class VBox
182
- class << self
183
- alias_method :new_raw, :new
184
- def new(*arguments)
185
- new_raw(*arguments)
186
- end
187
- end
188
- end
189
-
190
- class Box
191
- class << self
192
- def new(type)
193
- case type
194
- when :horizontal
195
- HBox.new
196
- when :vertical
197
- VBox.new
198
- else
199
- raise ArgumentError,
200
- "Box type must be :horizontal or :vertical: #{type.inspect}"
201
- end
202
- end
203
- end
204
- end
205
- end
206
- end
17
+ require "gtk3"