rabbit 3.0.0 → 3.0.2
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/Rakefile +2 -1
- data/data/locale/en/LC_MESSAGES/rabbit.mo +0 -0
- data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
- data/doc/_config.yml +2 -2
- data/doc/_layouts/skeleton.html +0 -7
- data/doc/en/faq.rd +4 -2
- data/doc/en/install/homebrew.rd +8 -13
- data/doc/en/news.rd +158 -0
- data/doc/en/sample/hiki/rabbit.hiki +0 -4
- data/doc/en/sample/rd/rabbit.rd +0 -4
- data/doc/en/usage/rabbit-slide.rd +3 -3
- data/doc/images/screenshots/en/blue-circle-raw.png +0 -0
- data/doc/images/screenshots/en/blue-circle.png +0 -0
- data/doc/images/screenshots/en/clear-blue-raw.png +0 -0
- data/doc/images/screenshots/en/clear-blue.png +0 -0
- data/doc/images/screenshots/en/cozmixng-raw.png +0 -0
- data/doc/images/screenshots/en/cozmixng.png +0 -0
- data/doc/images/screenshots/en/dark-gradation-raw.png +0 -0
- data/doc/images/screenshots/en/dark-gradation.png +0 -0
- data/doc/images/screenshots/en/day-white-raw.png +0 -0
- data/doc/images/screenshots/en/day-white.png +0 -0
- data/doc/images/screenshots/en/debian-raw.png +0 -0
- data/doc/images/screenshots/en/debian.png +0 -0
- data/doc/images/screenshots/en/green-circle-raw.png +0 -0
- data/doc/images/screenshots/en/green-circle.png +0 -0
- data/doc/images/screenshots/en/night-black-raw.png +0 -0
- data/doc/images/screenshots/en/night-black.png +0 -0
- data/doc/images/screenshots/en/rabbit-raw.png +0 -0
- data/doc/images/screenshots/en/rabbit.png +0 -0
- data/doc/images/screenshots/en/ranguba-raw.png +0 -0
- data/doc/images/screenshots/en/ranguba.png +0 -0
- data/doc/images/screenshots/en/red-frame-raw.png +0 -0
- data/doc/images/screenshots/en/red-frame.png +0 -0
- data/doc/images/screenshots/en/ruby-gnome2-raw.png +0 -0
- data/doc/images/screenshots/en/ruby-gnome2.png +0 -0
- data/doc/images/screenshots/en/rubykaigi2011-raw.png +0 -0
- data/doc/images/screenshots/en/rubykaigi2011.png +0 -0
- data/doc/images/screenshots/ja/blue-circle-raw.png +0 -0
- data/doc/images/screenshots/ja/blue-circle.png +0 -0
- data/doc/images/screenshots/ja/clear-blue-raw.png +0 -0
- data/doc/images/screenshots/ja/clear-blue.png +0 -0
- data/doc/images/screenshots/ja/cozmixng-raw.png +0 -0
- data/doc/images/screenshots/ja/cozmixng.png +0 -0
- data/doc/images/screenshots/ja/dark-gradation-raw.png +0 -0
- data/doc/images/screenshots/ja/dark-gradation.png +0 -0
- data/doc/images/screenshots/ja/day-white-raw.png +0 -0
- data/doc/images/screenshots/ja/day-white.png +0 -0
- data/doc/images/screenshots/ja/debian-raw.png +0 -0
- data/doc/images/screenshots/ja/debian.png +0 -0
- data/doc/images/screenshots/ja/green-circle-raw.png +0 -0
- data/doc/images/screenshots/ja/green-circle.png +0 -0
- data/doc/images/screenshots/ja/night-black-raw.png +0 -0
- data/doc/images/screenshots/ja/night-black.png +0 -0
- data/doc/images/screenshots/ja/rabbit-raw.png +0 -0
- data/doc/images/screenshots/ja/rabbit.png +0 -0
- data/doc/images/screenshots/ja/ranguba-raw.png +0 -0
- data/doc/images/screenshots/ja/ranguba.png +0 -0
- data/doc/images/screenshots/ja/red-frame-raw.png +0 -0
- data/doc/images/screenshots/ja/red-frame.png +0 -0
- data/doc/images/screenshots/ja/ruby-gnome2-raw.png +0 -0
- data/doc/images/screenshots/ja/ruby-gnome2.png +0 -0
- data/doc/images/screenshots/ja/rubykaigi2011-raw.png +0 -0
- data/doc/images/screenshots/ja/rubykaigi2011.png +0 -0
- data/doc/index.html.en +1 -1
- data/doc/ja/faq.rd +2 -0
- data/doc/ja/install/homebrew.rd +8 -12
- data/doc/ja/news.rd +157 -0
- data/doc/ja/sample/hiki/rabbit.hiki +0 -4
- data/doc/ja/sample/rd/rabbit.rd +0 -4
- data/doc/ja/usage/rabbit-slide.rd +3 -3
- data/doc/ja/users.rd +7 -0
- data/lib/rabbit/action/toggle.rb +7 -0
- data/lib/rabbit/author-configuration.rb +3 -4
- data/lib/rabbit/canvas.rb +18 -6
- data/lib/rabbit/command/rabbit-slide.rb +59 -1
- data/lib/rabbit/command/rabbit-slide.ui +127 -49
- data/lib/rabbit/command/rabbit.rb +5 -9
- data/lib/rabbit/element/base.rb +1 -5
- data/lib/rabbit/element/image.rb +139 -89
- data/lib/rabbit/element/video.rb +3 -11
- data/lib/rabbit/error.rb +9 -3
- data/lib/rabbit/formatter.rb +1 -1
- data/lib/rabbit/frame.rb +102 -4
- data/lib/rabbit/gem-pusher.rb +29 -6
- data/lib/rabbit/image/base.rb +163 -28
- data/lib/rabbit/image/dia.rb +21 -14
- data/lib/rabbit/image/mermaid.rb +73 -0
- data/lib/rabbit/image/pdf.rb +22 -9
- data/lib/rabbit/image/svg.rb +1 -4
- data/lib/rabbit/image.rb +6 -6
- data/lib/rabbit/info-window.rb +106 -80
- data/lib/rabbit/keys.rb +6 -0
- data/lib/rabbit/menu.rb +2 -0
- data/lib/rabbit/parser/base.rb +2 -1
- data/lib/rabbit/parser/ext/blockdiag.rb +16 -14
- data/lib/rabbit/parser/ext/charty.rb +58 -0
- data/lib/rabbit/parser/ext/image.rb +38 -10
- data/lib/rabbit/parser/markdown/converter.rb +36 -30
- data/lib/rabbit/parser/rd/ext/block-verbatim.rb +33 -35
- data/lib/rabbit/parser/rd/ext/image.rb +23 -4
- data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +3 -1
- data/lib/rabbit/parser/rd.rb +1 -1
- data/lib/rabbit/parser/wiki/output.rb +9 -9
- data/lib/rabbit/parser.rb +2 -2
- data/lib/rabbit/progress.rb +1 -1
- data/lib/rabbit/properties.rb +154 -0
- data/lib/rabbit/rabbit.rb +3 -1
- data/lib/rabbit/relative-size.rb +28 -0
- data/lib/rabbit/renderer/base.rb +6 -0
- data/lib/rabbit/renderer/display/drawing-area-base.rb +1 -2
- data/lib/rabbit/renderer/display/drawing-area-primitive.rb +1 -0
- data/lib/rabbit/renderer/display/info.rb +6 -1
- data/lib/rabbit/renderer/display/key-handler.rb +27 -2
- data/lib/rabbit/renderer/engine/cairo.rb +24 -3
- data/lib/rabbit/renderer/screen.rb +0 -1
- data/lib/rabbit/slide-configuration.rb +16 -8
- data/lib/rabbit/task/slide.rb +6 -33
- data/lib/rabbit/theme/background-image-toolkit/background-image-toolkit.rb +38 -0
- data/lib/rabbit/theme/clear-blue/clear-blue.rb +4 -2
- data/lib/rabbit/theme/edge-info-toolkit/edge-info-toolkit.rb +12 -2
- data/lib/rabbit/theme/image/image.rb +3 -0
- data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +8 -3
- data/lib/rabbit/theme/image-timer/image-timer.rb +8 -3
- data/lib/rabbit/theme/pdf/pdf.rb +1 -1
- data/lib/rabbit/theme/slide-footer-info/slide-footer-info.rb +2 -0
- data/lib/rabbit/theme/tag/tag.rb +9 -2
- data/lib/rabbit/theme-configuration.rb +3 -4
- data/lib/rabbit/utils.rb +25 -2
- data/lib/rabbit/version.rb +2 -2
- data/lib/rabbit/video-window.rb +14 -3
- data/{test/test-slideshare.rb → lib/rabbit/yaml-loader.rb} +20 -15
- data/po/en/rabbit.edit.po +123 -121
- data/po/en/rabbit.po +28 -26
- data/po/fr/rabbit.edit.po +122 -120
- data/po/fr/rabbit.po +27 -25
- data/po/ja/rabbit.edit.po +156 -125
- data/po/ja/rabbit.po +34 -30
- data/rabbit.gemspec +0 -1
- data/sample/can_rabbit.rd +0 -24
- data/sample/rabbit-en.hiki +0 -4
- data/sample/rabbit-en.md +13 -0
- data/sample/rabbit-en.rd +10 -4
- data/sample/rabbit.hiki +0 -4
- data/sample/rabbit.md +21 -0
- data/sample/rabbit.rd +20 -4
- data/test/command/test-rabbit.rb +1 -0
- data/test/parser/test-markdown.rb +2 -2
- data/test/test-slide-configuration.rb +4 -2
- metadata +30 -46
- data/doc/css/jquery-ui/themes/ui-lightness.css +0 -573
- data/doc/javascripts/jquery-ui.js +0 -11544
- data/doc/javascripts/jquery.js +0 -7179
- data/lib/rabbit/slideshare.rb +0 -192
|
@@ -1,29 +1,36 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!-- Generated with glade 3.
|
|
2
|
+
<!-- Generated with glade 3.38.2 -->
|
|
3
3
|
<interface>
|
|
4
4
|
<requires lib="gtk+" version="3.20"/>
|
|
5
|
+
<object class="GtkAdjustment" id="slide-height-adjustment">
|
|
6
|
+
<property name="upper">4000</property>
|
|
7
|
+
<property name="step-increment">10</property>
|
|
8
|
+
<property name="page-increment">100</property>
|
|
9
|
+
</object>
|
|
10
|
+
<object class="GtkAdjustment" id="slide-width-adjustment">
|
|
11
|
+
<property name="upper">4000</property>
|
|
12
|
+
<property name="step-increment">10</property>
|
|
13
|
+
<property name="page-increment">100</property>
|
|
14
|
+
</object>
|
|
5
15
|
<object class="GtkDialog" id="dialog">
|
|
6
|
-
<property name="
|
|
7
|
-
<property name="
|
|
8
|
-
<child>
|
|
9
|
-
<placeholder/>
|
|
10
|
-
</child>
|
|
16
|
+
<property name="can-focus">False</property>
|
|
17
|
+
<property name="type-hint">dialog</property>
|
|
11
18
|
<child internal-child="vbox">
|
|
12
19
|
<object class="GtkBox">
|
|
13
|
-
<property name="
|
|
20
|
+
<property name="can-focus">False</property>
|
|
14
21
|
<property name="orientation">vertical</property>
|
|
15
22
|
<property name="spacing">2</property>
|
|
16
23
|
<child internal-child="action_area">
|
|
17
24
|
<object class="GtkButtonBox">
|
|
18
|
-
<property name="
|
|
19
|
-
<property name="
|
|
25
|
+
<property name="can-focus">False</property>
|
|
26
|
+
<property name="layout-style">end</property>
|
|
20
27
|
<child>
|
|
21
28
|
<object class="GtkButton" id="cancel-button">
|
|
22
29
|
<property name="label">gtk-cancel</property>
|
|
23
30
|
<property name="visible">True</property>
|
|
24
|
-
<property name="
|
|
25
|
-
<property name="
|
|
26
|
-
<property name="
|
|
31
|
+
<property name="can-focus">True</property>
|
|
32
|
+
<property name="receives-default">True</property>
|
|
33
|
+
<property name="use-stock">True</property>
|
|
27
34
|
</object>
|
|
28
35
|
<packing>
|
|
29
36
|
<property name="expand">True</property>
|
|
@@ -35,9 +42,9 @@
|
|
|
35
42
|
<object class="GtkButton" id="apply-button">
|
|
36
43
|
<property name="label">gtk-apply</property>
|
|
37
44
|
<property name="visible">True</property>
|
|
38
|
-
<property name="
|
|
39
|
-
<property name="
|
|
40
|
-
<property name="
|
|
45
|
+
<property name="can-focus">True</property>
|
|
46
|
+
<property name="receives-default">True</property>
|
|
47
|
+
<property name="use-stock">True</property>
|
|
41
48
|
</object>
|
|
42
49
|
<packing>
|
|
43
50
|
<property name="expand">True</property>
|
|
@@ -55,90 +62,153 @@
|
|
|
55
62
|
<child>
|
|
56
63
|
<object class="GtkBox">
|
|
57
64
|
<property name="visible">True</property>
|
|
58
|
-
<property name="
|
|
65
|
+
<property name="can-focus">False</property>
|
|
59
66
|
<property name="orientation">vertical</property>
|
|
60
67
|
<child>
|
|
61
68
|
<object class="GtkFrame">
|
|
62
69
|
<property name="visible">True</property>
|
|
63
|
-
<property name="
|
|
64
|
-
<property name="
|
|
65
|
-
<property name="
|
|
70
|
+
<property name="can-focus">False</property>
|
|
71
|
+
<property name="label-xalign">0</property>
|
|
72
|
+
<property name="shadow-type">none</property>
|
|
66
73
|
<child>
|
|
67
74
|
<object class="GtkAlignment">
|
|
68
75
|
<property name="visible">True</property>
|
|
69
|
-
<property name="
|
|
70
|
-
<property name="
|
|
76
|
+
<property name="can-focus">False</property>
|
|
77
|
+
<property name="left-padding">12</property>
|
|
71
78
|
<child>
|
|
79
|
+
<!-- n-columns=3 n-rows=5 -->
|
|
72
80
|
<object class="GtkGrid">
|
|
73
81
|
<property name="visible">True</property>
|
|
74
|
-
<property name="
|
|
82
|
+
<property name="can-focus">False</property>
|
|
75
83
|
<child>
|
|
76
84
|
<object class="GtkLabel">
|
|
77
85
|
<property name="visible">True</property>
|
|
78
|
-
<property name="
|
|
86
|
+
<property name="can-focus">False</property>
|
|
79
87
|
<property name="halign">end</property>
|
|
80
88
|
<property name="label" translatable="yes">ID:</property>
|
|
81
89
|
</object>
|
|
82
90
|
<packing>
|
|
83
|
-
<property name="
|
|
84
|
-
<property name="
|
|
91
|
+
<property name="left-attach">0</property>
|
|
92
|
+
<property name="top-attach">0</property>
|
|
85
93
|
</packing>
|
|
86
94
|
</child>
|
|
87
95
|
<child>
|
|
88
|
-
<object class="
|
|
96
|
+
<object class="GtkLabel">
|
|
89
97
|
<property name="visible">True</property>
|
|
90
|
-
<property name="
|
|
91
|
-
<property name="
|
|
98
|
+
<property name="can-focus">False</property>
|
|
99
|
+
<property name="halign">end</property>
|
|
100
|
+
<property name="label" translatable="yes">Base name:</property>
|
|
92
101
|
</object>
|
|
93
102
|
<packing>
|
|
94
|
-
<property name="
|
|
95
|
-
<property name="
|
|
103
|
+
<property name="left-attach">0</property>
|
|
104
|
+
<property name="top-attach">1</property>
|
|
96
105
|
</packing>
|
|
97
106
|
</child>
|
|
98
107
|
<child>
|
|
99
108
|
<object class="GtkLabel">
|
|
100
109
|
<property name="visible">True</property>
|
|
101
|
-
<property name="
|
|
102
|
-
<property name="
|
|
103
|
-
<property name="label" translatable="yes">Base name:</property>
|
|
110
|
+
<property name="can-focus">False</property>
|
|
111
|
+
<property name="label" translatable="yes">Markup language:</property>
|
|
104
112
|
</object>
|
|
105
113
|
<packing>
|
|
106
|
-
<property name="
|
|
107
|
-
<property name="
|
|
114
|
+
<property name="left-attach">0</property>
|
|
115
|
+
<property name="top-attach">2</property>
|
|
116
|
+
</packing>
|
|
117
|
+
</child>
|
|
118
|
+
<child>
|
|
119
|
+
<object class="GtkLabel">
|
|
120
|
+
<property name="visible">True</property>
|
|
121
|
+
<property name="can-focus">False</property>
|
|
122
|
+
<property name="label" translatable="yes">Height:</property>
|
|
123
|
+
</object>
|
|
124
|
+
<packing>
|
|
125
|
+
<property name="left-attach">0</property>
|
|
126
|
+
<property name="top-attach">4</property>
|
|
127
|
+
</packing>
|
|
128
|
+
</child>
|
|
129
|
+
<child>
|
|
130
|
+
<object class="GtkEntry" id="slide-id">
|
|
131
|
+
<property name="visible">True</property>
|
|
132
|
+
<property name="can-focus">True</property>
|
|
133
|
+
<property name="placeholder-text" translatable="yes">rubykaigi2012</property>
|
|
134
|
+
</object>
|
|
135
|
+
<packing>
|
|
136
|
+
<property name="left-attach">1</property>
|
|
137
|
+
<property name="top-attach">0</property>
|
|
108
138
|
</packing>
|
|
109
139
|
</child>
|
|
110
140
|
<child>
|
|
111
141
|
<object class="GtkEntry" id="slide-base-name">
|
|
112
142
|
<property name="visible">True</property>
|
|
113
|
-
<property name="
|
|
114
|
-
<property name="
|
|
143
|
+
<property name="can-focus">True</property>
|
|
144
|
+
<property name="placeholder-text" translatable="yes">rabbit-introduction</property>
|
|
115
145
|
</object>
|
|
116
146
|
<packing>
|
|
117
|
-
<property name="
|
|
118
|
-
<property name="
|
|
147
|
+
<property name="left-attach">1</property>
|
|
148
|
+
<property name="top-attach">1</property>
|
|
149
|
+
</packing>
|
|
150
|
+
</child>
|
|
151
|
+
<child>
|
|
152
|
+
<object class="GtkComboBoxText" id="slide-markup-language">
|
|
153
|
+
<property name="visible">True</property>
|
|
154
|
+
<property name="can-focus">False</property>
|
|
155
|
+
</object>
|
|
156
|
+
<packing>
|
|
157
|
+
<property name="left-attach">1</property>
|
|
158
|
+
<property name="top-attach">2</property>
|
|
159
|
+
</packing>
|
|
160
|
+
</child>
|
|
161
|
+
<child>
|
|
162
|
+
<object class="GtkSpinButton" id="slide-height">
|
|
163
|
+
<property name="visible">True</property>
|
|
164
|
+
<property name="can-focus">True</property>
|
|
165
|
+
<property name="adjustment">slide-height-adjustment</property>
|
|
166
|
+
<property name="climb-rate">10</property>
|
|
167
|
+
<property name="numeric">True</property>
|
|
168
|
+
</object>
|
|
169
|
+
<packing>
|
|
170
|
+
<property name="left-attach">1</property>
|
|
171
|
+
<property name="top-attach">4</property>
|
|
119
172
|
</packing>
|
|
120
173
|
</child>
|
|
121
174
|
<child>
|
|
122
175
|
<object class="GtkLabel">
|
|
123
176
|
<property name="visible">True</property>
|
|
124
|
-
<property name="
|
|
125
|
-
<property name="label" translatable="yes">
|
|
177
|
+
<property name="can-focus">False</property>
|
|
178
|
+
<property name="label" translatable="yes">Width:</property>
|
|
126
179
|
</object>
|
|
127
180
|
<packing>
|
|
128
|
-
<property name="
|
|
129
|
-
<property name="
|
|
181
|
+
<property name="left-attach">0</property>
|
|
182
|
+
<property name="top-attach">3</property>
|
|
130
183
|
</packing>
|
|
131
184
|
</child>
|
|
132
185
|
<child>
|
|
133
|
-
<object class="
|
|
186
|
+
<object class="GtkSpinButton" id="slide-width">
|
|
134
187
|
<property name="visible">True</property>
|
|
135
|
-
<property name="
|
|
188
|
+
<property name="can-focus">True</property>
|
|
189
|
+
<property name="adjustment">slide-width-adjustment</property>
|
|
190
|
+
<property name="climb-rate">10</property>
|
|
136
191
|
</object>
|
|
137
192
|
<packing>
|
|
138
|
-
<property name="
|
|
139
|
-
<property name="
|
|
193
|
+
<property name="left-attach">1</property>
|
|
194
|
+
<property name="top-attach">3</property>
|
|
140
195
|
</packing>
|
|
141
196
|
</child>
|
|
197
|
+
<child>
|
|
198
|
+
<placeholder/>
|
|
199
|
+
</child>
|
|
200
|
+
<child>
|
|
201
|
+
<placeholder/>
|
|
202
|
+
</child>
|
|
203
|
+
<child>
|
|
204
|
+
<placeholder/>
|
|
205
|
+
</child>
|
|
206
|
+
<child>
|
|
207
|
+
<placeholder/>
|
|
208
|
+
</child>
|
|
209
|
+
<child>
|
|
210
|
+
<placeholder/>
|
|
211
|
+
</child>
|
|
142
212
|
</object>
|
|
143
213
|
</child>
|
|
144
214
|
</object>
|
|
@@ -146,7 +216,7 @@
|
|
|
146
216
|
<child type="label">
|
|
147
217
|
<object class="GtkLabel">
|
|
148
218
|
<property name="visible">True</property>
|
|
149
|
-
<property name="
|
|
219
|
+
<property name="can-focus">False</property>
|
|
150
220
|
<property name="label" translatable="yes">Slide information</property>
|
|
151
221
|
</object>
|
|
152
222
|
</child>
|
|
@@ -158,7 +228,15 @@
|
|
|
158
228
|
</packing>
|
|
159
229
|
</child>
|
|
160
230
|
<child>
|
|
161
|
-
<
|
|
231
|
+
<object class="GtkBox">
|
|
232
|
+
<property name="visible">True</property>
|
|
233
|
+
<property name="can-focus">False</property>
|
|
234
|
+
</object>
|
|
235
|
+
<packing>
|
|
236
|
+
<property name="expand">False</property>
|
|
237
|
+
<property name="fill">True</property>
|
|
238
|
+
<property name="position">1</property>
|
|
239
|
+
</packing>
|
|
162
240
|
</child>
|
|
163
241
|
<child>
|
|
164
242
|
<placeholder/>
|
|
@@ -636,14 +636,10 @@ module Rabbit
|
|
|
636
636
|
end
|
|
637
637
|
|
|
638
638
|
def choose_source_file_by_dialog
|
|
639
|
-
dialog = Gtk::FileChooserDialog.new(_("Choose a Rabbit source file"),
|
|
640
|
-
|
|
641
|
-
Gtk::
|
|
642
|
-
|
|
643
|
-
[Gtk::Stock::CANCEL,
|
|
644
|
-
Gtk::Dialog::RESPONSE_CANCEL],
|
|
645
|
-
[Gtk::Stock::OPEN,
|
|
646
|
-
Gtk::Dialog::RESPONSE_ACCEPT])
|
|
639
|
+
dialog = Gtk::FileChooserDialog.new(:title => _("Choose a Rabbit source file"),
|
|
640
|
+
:action => :open,
|
|
641
|
+
:buttons => [[Gtk::Stock::CANCEL, :cancel],
|
|
642
|
+
[Gtk::Stock::OPEN, :accept]])
|
|
647
643
|
dialog.current_folder = @options.base if @options.base
|
|
648
644
|
add_source_dialog_filter(dialog, "Rabbit files", "*.rab")
|
|
649
645
|
add_source_dialog_filter(dialog, "RD files", "*.rd")
|
|
@@ -652,7 +648,7 @@ module Rabbit
|
|
|
652
648
|
add_source_dialog_filter(dialog, "Markdown files", "*.md")
|
|
653
649
|
add_source_dialog_filter(dialog, "All files", "*")
|
|
654
650
|
file_name = nil
|
|
655
|
-
if dialog.run == Gtk::
|
|
651
|
+
if dialog.run == Gtk::ResponseType::ACCEPT
|
|
656
652
|
file_name = dialog.filename
|
|
657
653
|
dialog.destroy
|
|
658
654
|
end
|
data/lib/rabbit/element/base.rb
CHANGED
|
@@ -430,11 +430,7 @@ module Rabbit
|
|
|
430
430
|
|
|
431
431
|
def make_prop_value(name, *values)
|
|
432
432
|
formatter_name = to_class_name(name)
|
|
433
|
-
|
|
434
|
-
unless Format.const_defined?(formatter_name)
|
|
435
|
-
raise NameError
|
|
436
|
-
end
|
|
437
|
-
rescue NameError
|
|
433
|
+
unless Format.const_defined?(formatter_name)
|
|
438
434
|
raise UnknownPropertyError.new(name)
|
|
439
435
|
end
|
|
440
436
|
Format.const_get(formatter_name).new(*values)
|
data/lib/rabbit/element/image.rb
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
# Copyright (C) 2004-2021 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 "rabbit/image"
|
|
18
|
+
require "rabbit/element/block-element"
|
|
3
19
|
|
|
4
20
|
module Rabbit
|
|
5
21
|
module Element
|
|
@@ -13,61 +29,29 @@ module Rabbit
|
|
|
13
29
|
alias image_draw draw
|
|
14
30
|
alias draw element_draw
|
|
15
31
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
attr_reader :relative_margin_left, :relative_margin_right
|
|
22
|
-
attr_reader :relative_padding_top, :relative_padding_bottom
|
|
23
|
-
attr_reader :relative_padding_left, :relative_padding_right
|
|
24
|
-
|
|
25
|
-
def initialize(filename, prop)
|
|
26
|
-
@filename = filename
|
|
27
|
-
prop = Utils.stringify_hash_key(prop)
|
|
28
|
-
super(filename, prop)
|
|
29
|
-
normalized_prop = {}
|
|
30
|
-
prop.each do |name, value|
|
|
31
|
-
normalized_prop[name.gsub(/-/, '_')] = value
|
|
32
|
-
end
|
|
33
|
-
prop = normalized_prop
|
|
34
|
-
%w(caption dither_mode).each do |name|
|
|
35
|
-
instance_variable_set("@#{name}", prop[name])
|
|
36
|
-
end
|
|
37
|
-
%w(keep_scale keep_ratio).each do |name|
|
|
38
|
-
unless prop[name].nil?
|
|
39
|
-
self.keep_ratio = true_value?(prop[name])
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
%w(as_large_as_possible).each do |name|
|
|
43
|
-
instance_variable_set("@#{name}", true_value?(prop[name]))
|
|
44
|
-
end
|
|
45
|
-
%w(width height
|
|
46
|
-
x_dither y_dither
|
|
47
|
-
normalized_width normalized_height
|
|
48
|
-
relative_width relative_height
|
|
49
|
-
relative_margin_top relative_margin_bottom
|
|
50
|
-
relative_margin_left relative_margin_right
|
|
51
|
-
relative_padding_top relative_padding_bottom
|
|
52
|
-
relative_padding_left relative_padding_right
|
|
53
|
-
).each do |name|
|
|
54
|
-
begin
|
|
55
|
-
instance_variable_set("@#{name}", prop[name] && Integer(prop[name]))
|
|
56
|
-
rescue ArgumentError
|
|
57
|
-
raise InvalidImageSizeError.new(filename, name, prop[name])
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
setup_draw_parameters(prop)
|
|
62
|
-
resize(@width, @height)
|
|
32
|
+
def initialize(filename, props, canvas: nil)
|
|
33
|
+
super(filename, props, canvas: canvas)
|
|
34
|
+
setup_draw_parameters
|
|
35
|
+
resize(properties.get_size("width", @filename),
|
|
36
|
+
properties.get_size("height", @filename))
|
|
63
37
|
end
|
|
64
38
|
|
|
65
39
|
def draw_element(canvas, x, y, w, h, simulation)
|
|
66
|
-
draw_image(canvas, x, y, w, h, simulation)
|
|
40
|
+
result = draw_image(canvas, x, y, w, h, simulation)
|
|
41
|
+
draw_properties(canvas, x, y, w, h) unless simulation
|
|
42
|
+
result
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def caption
|
|
46
|
+
self["caption"]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def caption_font_size
|
|
50
|
+
properties.get_float("caption-font-size")
|
|
67
51
|
end
|
|
68
52
|
|
|
69
53
|
def text
|
|
70
|
-
|
|
54
|
+
caption.to_s
|
|
71
55
|
end
|
|
72
56
|
|
|
73
57
|
def to_rd
|
|
@@ -85,22 +69,44 @@ module Rabbit
|
|
|
85
69
|
html
|
|
86
70
|
end
|
|
87
71
|
|
|
88
|
-
def
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
Gdk::RGB::DITHER_NORMAL
|
|
95
|
-
end
|
|
72
|
+
def relative_width
|
|
73
|
+
properties.get_relative_size("relative_width", @filename)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def relative_height
|
|
77
|
+
properties.get_relative_size("relative_height", @filename)
|
|
96
78
|
end
|
|
97
79
|
|
|
98
|
-
def
|
|
99
|
-
@
|
|
80
|
+
def relative_margin_top
|
|
81
|
+
properties.get_relative_size("relative_margin_top", @filename)
|
|
100
82
|
end
|
|
101
83
|
|
|
102
|
-
def
|
|
103
|
-
@
|
|
84
|
+
def relative_margin_bottom
|
|
85
|
+
properties.get_relative_size("relative_margin_bottom", @filename)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def relative_margin_left
|
|
89
|
+
properties.get_relative_size("relative_margin_left", @filename)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def relative_margin_right
|
|
93
|
+
properties.get_relative_size("relative_margin_right", @filename)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def relative_padding_top
|
|
97
|
+
properties.get_relative_size("relative_padding_top", @filename)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def relative_padding_bottom
|
|
101
|
+
properties.get_relative_size("relative_padding_bottom", @filename)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def relative_padding_left
|
|
105
|
+
properties.get_relative_size("relative_padding_left", @filename)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def relative_padding_right
|
|
109
|
+
properties.get_relative_size("relative_padding_right", @filename)
|
|
104
110
|
end
|
|
105
111
|
|
|
106
112
|
alias _compile compile
|
|
@@ -113,32 +119,34 @@ module Rabbit
|
|
|
113
119
|
adjust_size(canvas, @x, @y, @w, @h)
|
|
114
120
|
end
|
|
115
121
|
|
|
122
|
+
alias_method :width_without_padding, :width
|
|
116
123
|
def width
|
|
117
124
|
super + @padding_left + @padding_right
|
|
118
125
|
end
|
|
119
126
|
|
|
127
|
+
alias_method :height_without_padding, :height
|
|
120
128
|
def height
|
|
121
129
|
super + @padding_top + @padding_bottom
|
|
122
130
|
end
|
|
123
131
|
|
|
124
132
|
def as_large_as_possible?
|
|
125
|
-
|
|
133
|
+
properties.get_boolean("as_large_as_possible")
|
|
126
134
|
end
|
|
127
135
|
|
|
128
136
|
private
|
|
129
|
-
def setup_draw_parameters
|
|
137
|
+
def setup_draw_parameters
|
|
130
138
|
@draw_parameters = {}
|
|
131
139
|
|
|
132
|
-
@draw_parameters[:reflect] = {} if
|
|
140
|
+
@draw_parameters[:reflect] = {} if properties.get_boolean("reflect")
|
|
133
141
|
[:ratio, :alpha].each do |key|
|
|
134
142
|
name = "reflect_#{key}"
|
|
135
|
-
value =
|
|
143
|
+
value = self[name]
|
|
136
144
|
next unless value
|
|
137
145
|
@draw_parameters[:reflect] ||= {}
|
|
138
146
|
@draw_parameters[:reflect][key] = Float(value)
|
|
139
147
|
end
|
|
140
148
|
|
|
141
|
-
alpha =
|
|
149
|
+
alpha = self["alpha"]
|
|
142
150
|
@draw_parameters[:alpha] = Float(alpha) if alpha
|
|
143
151
|
end
|
|
144
152
|
|
|
@@ -151,24 +159,24 @@ module Rabbit
|
|
|
151
159
|
|
|
152
160
|
def adjust_margin(w, h)
|
|
153
161
|
@margin_top =
|
|
154
|
-
|
|
162
|
+
relative_margin_top&.resolve(h) || @margin_top
|
|
155
163
|
@margin_bottom =
|
|
156
|
-
|
|
164
|
+
relative_margin_bottom&.resolve(h) || @margin_bottom
|
|
157
165
|
@margin_left =
|
|
158
|
-
|
|
166
|
+
relative_margin_left&.resolve(w) || @margin_left
|
|
159
167
|
@margin_right =
|
|
160
|
-
|
|
168
|
+
relative_margin_right&.resolve(w) || @margin_right
|
|
161
169
|
end
|
|
162
170
|
|
|
163
171
|
def adjust_padding(w, h)
|
|
164
172
|
@padding_top =
|
|
165
|
-
|
|
173
|
+
relative_padding_top&.resolve(h) || @padding_top
|
|
166
174
|
@padding_bottom =
|
|
167
|
-
|
|
175
|
+
relative_padding_bottom&.resolve(h) || @padding_bottom
|
|
168
176
|
@padding_left =
|
|
169
|
-
|
|
177
|
+
relative_padding_left&.resolve(w) || @padding_left
|
|
170
178
|
@padding_right =
|
|
171
|
-
|
|
179
|
+
relative_padding_right&.resolve(w) || @padding_right
|
|
172
180
|
end
|
|
173
181
|
|
|
174
182
|
def adjust_size(canvas, x, y, w, h)
|
|
@@ -177,7 +185,7 @@ module Rabbit
|
|
|
177
185
|
adjust_margin(base_w, base_h)
|
|
178
186
|
adjust_padding(base_w, base_h)
|
|
179
187
|
base_h = base_h - @padding_top - @padding_bottom
|
|
180
|
-
if
|
|
188
|
+
if as_large_as_possible?
|
|
181
189
|
iw = base_w - x
|
|
182
190
|
ih = base_h - y
|
|
183
191
|
if iw.to_f / original_width > ih.to_f / original_height
|
|
@@ -186,26 +194,68 @@ module Rabbit
|
|
|
186
194
|
ih = nil
|
|
187
195
|
end
|
|
188
196
|
else
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
rw = make_relative_size(@relative_width, base_w)
|
|
192
|
-
rh = make_relative_size(@relative_height, base_h)
|
|
193
|
-
iw = nw || rw
|
|
194
|
-
ih = nh || rh
|
|
197
|
+
iw = relative_width&.resolve(base_w)
|
|
198
|
+
ih = relative_height&.resolve(base_h)
|
|
195
199
|
end
|
|
196
200
|
resize(iw, ih)
|
|
197
201
|
end
|
|
198
202
|
|
|
199
|
-
def
|
|
200
|
-
|
|
203
|
+
def draw_properties(canvas, base_x, base_y, base_w, base_h)
|
|
204
|
+
properties.draws.each do |type, *args|
|
|
205
|
+
case type
|
|
206
|
+
when "line"
|
|
207
|
+
if args.last.is_a?(Hash)
|
|
208
|
+
params = args.pop
|
|
209
|
+
else
|
|
210
|
+
params = nil
|
|
211
|
+
end
|
|
212
|
+
points = args.each_slice(2).collect do |x, y|
|
|
213
|
+
x = (x * width_without_padding) + base_x
|
|
214
|
+
y = (y * height_without_padding) + base_y
|
|
215
|
+
[x, y]
|
|
216
|
+
end
|
|
217
|
+
params = normalize_params(params)
|
|
218
|
+
color = params.delete(:color) || "black"
|
|
219
|
+
canvas.draw_lines(points, color, params)
|
|
220
|
+
when "rectangle"
|
|
221
|
+
filled, x, y, w, h, params = args
|
|
222
|
+
x = (x * width_without_padding) + base_x
|
|
223
|
+
y = (y * height_without_padding) + base_y
|
|
224
|
+
w = (w * width_without_padding)
|
|
225
|
+
h = (h * height_without_padding)
|
|
226
|
+
params = normalize_params(params)
|
|
227
|
+
color = params.delete(:color) || "black"
|
|
228
|
+
canvas.draw_rectangle(filled, x, y, w, h, color, params)
|
|
229
|
+
when "text"
|
|
230
|
+
text, x, y, params = args
|
|
231
|
+
params = normalize_params(params)
|
|
232
|
+
layout = canvas.make_layout(markup_text(text, params))
|
|
233
|
+
x = (x * width_without_padding) + base_x
|
|
234
|
+
y = (y * height_without_padding) + base_y
|
|
235
|
+
color = params.delete(:color) || "black"
|
|
236
|
+
canvas.draw_layout(layout, x, y, color, params)
|
|
237
|
+
end
|
|
238
|
+
end
|
|
201
239
|
end
|
|
202
240
|
|
|
203
|
-
def
|
|
204
|
-
|
|
241
|
+
def normalize_params(params)
|
|
242
|
+
return {} if params.nil?
|
|
243
|
+
normalized_params = {}
|
|
244
|
+
params.each do |key, value|
|
|
245
|
+
normalized_params[key.to_sym] = value
|
|
246
|
+
end
|
|
247
|
+
normalized_params
|
|
205
248
|
end
|
|
206
249
|
|
|
207
|
-
def
|
|
208
|
-
|
|
250
|
+
def markup_text(text, props)
|
|
251
|
+
props.each do |name, value|
|
|
252
|
+
formatter_name = Utils.to_class_name(name.to_s)
|
|
253
|
+
next unless Format.const_defined?(formatter_name)
|
|
254
|
+
formatter = Format.const_get(formatter_name).new(value)
|
|
255
|
+
next unless formatter.text_formatter?
|
|
256
|
+
text = formatter.format(text)
|
|
257
|
+
end
|
|
258
|
+
text
|
|
209
259
|
end
|
|
210
260
|
end
|
|
211
261
|
end
|