Piggy 0.4.2.4 → 0.4.3.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 (61) hide show
  1. data/CHANGES.txt +15 -0
  2. data/INSTALL.txt +9 -4
  3. data/README.txt +8 -6
  4. data/bin/directory_diff +1 -1
  5. data/bin/ftp_browser +1 -1
  6. data/bin/piggy +1 -1
  7. data/lib/directory_diff.rb +8 -6
  8. data/lib/ftp_browser.rb +8 -6
  9. data/lib/icons/connect.ico +0 -0
  10. data/lib/icons/hide_details.ico +0 -0
  11. data/lib/icons/show_details.ico +0 -0
  12. data/lib/piggy-core/alive_check.rb +4 -4
  13. data/lib/piggy-core/debug.rb +4 -4
  14. data/lib/piggy-core/environment.rb +24 -26
  15. data/lib/piggy-core/exifr_adapter.rb +11 -11
  16. data/lib/piggy-core/file_info.rb +61 -61
  17. data/lib/piggy-core/ftp_adapter.rb +24 -24
  18. data/lib/piggy-core/htmlgen.rb +41 -45
  19. data/lib/piggy-core/nconvert_thumbsgen.rb +22 -22
  20. data/lib/piggy-core/options.rb +25 -19
  21. data/lib/piggy-core/options_persistence.rb +8 -8
  22. data/lib/piggy-core/progress.rb +7 -7
  23. data/lib/piggy-core/rmagick_thumbnail_page_generator.rb +14 -14
  24. data/lib/piggy-core/thumbnail_generator.rb +26 -26
  25. data/lib/piggy-core/thumbnail_page_generator.rb +234 -230
  26. data/lib/piggy-core/upload_info.rb +22 -22
  27. data/lib/piggy-core/version.rb +7 -7
  28. data/lib/piggy-core/winshell.rb +136 -80
  29. data/lib/piggy-gui/dir_chooser.rb +14 -14
  30. data/lib/piggy-gui/directory_diff_widget.rb +177 -160
  31. data/lib/piggy-gui/filtered_file_list.rb +87 -87
  32. data/lib/piggy-gui/fox_thumbsgen.rb +4 -4
  33. data/lib/piggy-gui/ftp_browser_widget.rb +211 -155
  34. data/lib/piggy-gui/fullscreen.rb +4 -4
  35. data/lib/piggy-gui/html_generation_dialog.rb +42 -115
  36. data/lib/piggy-gui/html_options_widget.rb +97 -0
  37. data/lib/piggy-gui/image_processor.rb +58 -58
  38. data/lib/piggy-gui/modal_dialog.rb +11 -5
  39. data/lib/piggy-gui/multiimagecanvas.rb +59 -59
  40. data/lib/piggy-gui/options_dialog.rb +170 -48
  41. data/lib/piggy-gui/piggy_image_browser.rb +382 -340
  42. data/lib/piggy-gui/pipe_log.rb +17 -17
  43. data/lib/piggy-gui/progress_with_dialog.rb +8 -8
  44. data/lib/piggy-gui/require-fox.rb +23 -8
  45. data/lib/piggy.rb +7 -5
  46. data/lib/templates/styles/basic/style.css +16 -14
  47. data/lib/templates/styles/black/style.css +28 -29
  48. data/lib/templates/styles/roundedbox/style.css +28 -31
  49. data/lib/templates/styles/shadow/style.css +26 -26
  50. data/lib/templates/styles/shadow_D9F5F3/style.css +1 -1
  51. data/lib/templates/styles/shadow_black/lo.jpg +0 -0
  52. data/lib/templates/styles/shadow_black/lu.jpg +0 -0
  53. data/lib/templates/styles/shadow_black/ro.jpg +0 -0
  54. data/lib/templates/styles/shadow_black/ru.jpg +0 -0
  55. data/lib/templates/styles/shadow_black/style.css +78 -0
  56. data/lib/templates/styles/shadow_bowers/style.css +48 -51
  57. data/lib/templates/styles/sylvester/sh.png +0 -0
  58. data/lib/templates/styles/sylvester/style.css +74 -0
  59. data/lib/templates/styles/sylvester/wunderkerze.jpg +0 -0
  60. data/test/file_info_test.rb +29 -29
  61. metadata +52 -38
@@ -14,9 +14,9 @@ class MultiImageCanvas < Fox::FXScrollWindow
14
14
 
15
15
  def initialize(p1, p2)
16
16
  super(p1, p2)
17
- drawArea = FXCanvas.new(self, nil, 0,
18
- FRAME_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_Y)
19
- drawArea.connect(SEL_PAINT, method(:onPaint))
17
+ draw_area = FXCanvas.new(self, nil, 0,
18
+ FRAME_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_Y)
19
+ draw_area.connect(SEL_PAINT, method(:on_paint))
20
20
  @contentWidth = width
21
21
  @contentHeight = height
22
22
  @images = Array.new
@@ -26,19 +26,19 @@ class MultiImageCanvas < Fox::FXScrollWindow
26
26
  @imgProcessor = ImageProcessor.new getApp
27
27
  end
28
28
 
29
- def destroyAll(imageCache)
30
- @imgProcessor.destroyAll(imageCache)
29
+ def destroy_all(imageCache)
30
+ @imgProcessor.destroy_all(imageCache)
31
31
  end
32
32
 
33
- def imageProcessor
33
+ def image_processor
34
34
  return @imgProcessor
35
35
  end
36
36
 
37
- def getContentWidth
37
+ def get_content_width
38
38
  return @contentWidth
39
39
  end
40
40
 
41
- def getContentHeight
41
+ def get_content_height
42
42
  return @contentHeight
43
43
  end
44
44
 
@@ -50,59 +50,59 @@ class MultiImageCanvas < Fox::FXScrollWindow
50
50
  return @images.empty? ? nil : @images[0]
51
51
  end
52
52
 
53
- def setImages(imageArray)
53
+ def set_images(imageArray)
54
54
  @images = imageArray
55
55
  end
56
56
 
57
- def loadAndShowImage(file)
58
- loadImage(file)
57
+ def load_and_show_image(file)
58
+ load_image(file)
59
59
  end
60
60
 
61
- def loadImage(file, additive=false, degree=0)
61
+ def load_image(file, additive=false, degree=0)
62
62
  if additive && @thumbs.has_key?(file)
63
63
  images.push(@thumbs[file])
64
64
  return
65
65
  end
66
- if !@imgProcessor.isSupportedImageFile? file
66
+ unless @imgProcessor.is_supported_image_file? file
67
67
  FXMessageBox.error(self, MBOX_OK, "Warning image type",
68
- "Unsupported image type: #{file}")
68
+ "Unsupported image type: #{file}")
69
69
  return
70
70
  end
71
71
  getApp.beginWaitCursor do
72
- img = @imgProcessor.loadImage(file, false)
72
+ img = @imgProcessor.load_image(file, false)
73
73
  unless degree == 0
74
- @imgProcessor.rotateImage(img, degree)
74
+ @imgProcessor.rotate_image(img, degree)
75
75
  end
76
- destroyAll(@images) if !additive
76
+ destroy_all(@images) if !additive
77
77
  images.push(img)
78
78
  if additive
79
- cacheThumbFor(file, img)
79
+ cache_thumb_for(file, img)
80
80
  else
81
- w = img.getWidth
82
- h = img.getHeight
83
- if(w > 1600 && h > 1000)
84
- # reduce footprint
85
- @imgProcessor.fitImage(img, 1600, 1000, 1)
86
- end
87
- FXMemoryStream.open(FXStreamSave, nil) do |stream|
88
- img.savePixels(stream)
89
- @buffer = stream.takeBuffer
90
- end
91
- @imgProcessor.fitImage(img, getWidth, getHeight, 1)
81
+ w = img.getWidth
82
+ h = img.getHeight
83
+ if(w > 1600 && h > 1000)
84
+ # reduce footprint
85
+ @imgProcessor.fit_image(img, 1600, 1000, 1)
86
+ end
87
+ FXMemoryStream.open(FXStreamSave, nil) do |stream|
88
+ img.savePixels(stream)
89
+ @buffer = stream.takeBuffer
90
+ end
91
+ @imgProcessor.fit_image(img, getWidth, getHeight, 1)
92
92
  end
93
93
  img.create
94
- forceRefresh if !additive
94
+ force_refresh if !additive
95
95
  end
96
96
  end
97
97
 
98
- def cacheThumbFor(file, img)
99
- @imgProcessor.fitImage(img, 100, 100, 0)
98
+ def cache_thumb_for(file, img)
99
+ @imgProcessor.fit_image(img, 100, 100, 0)
100
100
  @thumbs[file] = img
101
101
  @fifoThumbsKeys.push(file)
102
102
  if @fifoThumbsKeys.size > CacheSize
103
- thumbToDestroy = @fifoThumbsKeys.shift
104
- @thumbs[thumbToDestroy].destroy
105
- @thumbs.delete(thumbToDestroy)
103
+ thumb_to_destroy = @fifoThumbsKeys.shift
104
+ @thumbs[thumb_to_destroy].destroy
105
+ @thumbs.delete(thumb_to_destroy)
106
106
  end
107
107
  end
108
108
 
@@ -114,49 +114,49 @@ class MultiImageCanvas < Fox::FXScrollWindow
114
114
  FXMemoryStream.open(FXStreamLoad, @buffer) do |stream|
115
115
  img.loadPixels(stream)
116
116
  end
117
- @imgProcessor.fitImage(img, w, h)
118
- forceRefresh
117
+ @imgProcessor.fit_image(img, w, h)
118
+ force_refresh
119
119
  end
120
120
 
121
- def loadImages(files)
121
+ def load_images(files)
122
122
  images.clear
123
- files.each { |f| loadImage(f, true) }
124
- forceRefresh
123
+ files.each { |f| load_image(f, true) }
124
+ force_refresh
125
125
  end
126
126
 
127
- def forceRefresh
127
+ def force_refresh
128
128
  contentWindow.update
129
129
  contentWindow.repaint
130
130
  contentWindow.recalc
131
131
  repaint
132
132
  end
133
133
 
134
- def onPaint(sender, sel, unused)
134
+ def on_paint(sender, sel, unused)
135
135
  sdc = FXDCWindow.new(contentWindow)
136
136
  sdc.fillRectangle(0, 0, width, height)
137
137
  unless images.empty? || width < 5 || height < 5
138
138
  # Draw image table
139
139
  x = 0;
140
140
  y = 0;
141
- lineHeight = 0
142
- subWidth = images.size == 1 ? 0 : 16 # width for vScrollbar
143
- maxW = [images[0].width + subWidth, width].max
141
+ line_height = 0
142
+ sub_width = images.size == 1 ? 0 : 16 # width for vScrollbar
143
+ max_w = [images[0].width + sub_width, width].max
144
144
  images.each { |img|
145
- imgHeight = img.height
146
- imgWidth = img.width
147
- maxW = imgWidth if imgWidth + subWidth > maxW
148
- if x + img.width > maxW - subWidth
149
- x = 0
150
- y += lineHeight + 4
151
- lineHeight = 0
152
- end
153
- lineHeight = imgHeight if imgHeight > lineHeight
154
- sdc.drawImage(img, x, y)
155
- sdc.fillRectangle(x, y + imgHeight, x + imgWidth, y + lineHeight)
156
- x += imgWidth + 4
145
+ imgHeight = img.height
146
+ imgWidth = img.width
147
+ max_w = imgWidth if imgWidth + sub_width > max_w
148
+ if x + img.width > max_w - sub_width
149
+ x = 0
150
+ y += line_height + 4
151
+ line_height = 0
152
+ end
153
+ line_height = imgHeight if imgHeight > line_height
154
+ sdc.drawImage(img, x, y)
155
+ sdc.fillRectangle(x, y + imgHeight, x + imgWidth, y + line_height)
156
+ x += imgWidth + 4
157
157
  }
158
- @contentWidth = maxW
159
- @contentHeight = y + lineHeight
158
+ @contentWidth = max_w
159
+ @contentHeight = y + line_height
160
160
  end
161
161
  sdc.end
162
162
  end
@@ -7,98 +7,220 @@ require 'piggy-core/environment'
7
7
  require 'piggy-core/options'
8
8
  require 'piggy-gui/require-fox'
9
9
  require 'piggy-gui/modal_dialog'
10
+ require 'piggy-gui/html_options_widget'
10
11
 
11
12
  # Dialog to change some of Piggy's options.
12
13
  class OptionsDialog < ModalDialog
13
14
  attr_reader(:options)
14
15
 
15
16
  def initialize(owner, piggyOptions)
16
- title = "Piggy general options"
17
+ title = "Piggy options"
17
18
  super(owner, title, DECOR_TITLE|DECOR_BORDER|DECOR_CLOSE|PIGGY_WINDOW_PLACEMENT)
18
19
  @options = piggyOptions.clone
19
20
  @fillMode = LAYOUT_LEFT|LAYOUT_FILL_X|LAYOUT_FILL_Y
20
21
  @frameStyle = FRAME_NONE
21
22
  @shell = WinShell.instance
22
- initializeLayout
23
+ initialize_layout
23
24
  end
24
25
 
25
- def initFrame(aFrame)
26
+ def init_frame(aFrame)
26
27
  aFrame.setFrameStyle(@frameStyle)
27
28
  aFrame.setLayoutHints(@fillMode)
28
29
  return aFrame
29
30
  end
30
31
 
31
- def initializeLayout
32
- basicFrame = FXVerticalFrame.new(self)
33
- cbFlags = ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP
34
-
35
- FXLabel.new(basicFrame, "Image processing:")
36
- radioButtonsFrame = initFrame(FXVerticalFrame.new(basicFrame))
37
- @rbFxruby = FXRadioButton.new(radioButtonsFrame, "Internal (FXRuby)")
38
- @rbNconvert = FXRadioButton.new(radioButtonsFrame, "NConvert (XNView)")
39
- @rbRmagick = FXRadioButton.new(radioButtonsFrame, "RMagick")
40
- updateProcessor
32
+ def initialize_layout
33
+ basic_frame = FXVerticalFrame.new(self)
34
+ tabs = FXTabBook.new(basic_frame, :opts => LAYOUT_FILL)
35
+ add_tab_general_to(tabs)
36
+ add_tab_html_to(tabs)
37
+ add_tab_ftp_to(tabs)
38
+ add_tab_experimental_to(tabs)
39
+ add_ok_cancel_buttons_to(basic_frame)
40
+ end
41
+
42
+ def add_tab(book, name)
43
+ FXTabItem.new(book, " #{name} ");
44
+ return FXVerticalFrame.new(book, :opts => FRAME_RAISED|LAYOUT_FILL)
45
+ end
46
+
47
+ def cb_flags
48
+ ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP
49
+ end
50
+
51
+ def add_label_to(frame, msg)
52
+ FXLabel.new(frame, msg, :opts => JUSTIFY_LEFT|LAYOUT_CENTER_Y)
53
+ end
54
+
55
+ def add_txt_to(frame, msg)
56
+ FXLabel.new(frame, msg, :opts => JUSTIFY_LEFT)
57
+ end
58
+
59
+ def add_tab_general_to(tabs)
60
+ tab = add_tab(tabs, "General")
61
+
62
+ add_label_to(tab, "Image processing:")
63
+ radio_buttons_frame = init_frame(FXVerticalFrame.new(tab))
64
+ @rbFxruby = FXRadioButton.new(radio_buttons_frame, "Internal (FXRuby)")
65
+ @rbNconvert = FXRadioButton.new(radio_buttons_frame, "NConvert (XNView)")
66
+ @rbRmagick = FXRadioButton.new(radio_buttons_frame, "RMagick")
67
+ update_processor
41
68
  @rbFxruby.connect(SEL_COMMAND) { |sender, sel, ptr|
42
- @options.useFxruby!
43
- updateProcessor
69
+ @options.use_fxruby!
70
+ update_processor
44
71
  }
45
72
  @rbNconvert.connect(SEL_COMMAND) { |sender, sel, ptr|
46
- @options.useNconvert!
47
- updateProcessor
73
+ @options.use_nconvert!
74
+ update_processor
48
75
  }
49
76
  if RMAGICK_AVAILIABLE
50
77
  @rbRmagick.connect(SEL_COMMAND) { |sender, sel, ptr|
51
- @options.useRmagick!
52
- updateProcessor
78
+ @options.use_rmagick!
79
+ update_processor
53
80
  }
54
81
  else
55
82
  @rbRmagick.disable
56
83
  end
57
-
58
- FXLabel.new(basicFrame, "Main window:")
59
-
60
- cb = FXCheckButton.new(basicFrame,
61
- 'Show log pane',
62
- nil, 0, cbFlags)
84
+
85
+ add_label_to(tab, "Main window:")
86
+
87
+ cb = FXCheckButton.new(tab,
88
+ 'Show log pane',
89
+ nil, 0, cb_flags)
63
90
  cb.setCheck(@options.useLog)
64
91
  cb.connect(SEL_COMMAND) { |sender, sel, ptr|
65
92
  @options.useLog = ptr
66
93
  }
67
- cb = FXCheckButton.new(basicFrame,
68
- 'Show preview pane (experimental)',
69
- nil, 0, cbFlags)
70
- cb.setCheck(@options.usePreview)
71
- cb.connect(SEL_COMMAND) { |sender, sel, ptr|
72
- @options.usePreview = ptr
73
- }
74
- FXLabel.new(basicFrame, "Web browser:")
75
- combo = FXHorizontalFrame.new(basicFrame)
76
- @browserField = FXTextField.new(combo, 32)
77
- @browserField.setText(ruby2Fox(@shell.osPath(@options.browser)))
94
+
95
+ add_label_to(tab, "Web browser:")
96
+ combo = FXHorizontalFrame.new(tab)
97
+ @browserField = FXTextField.new(combo, 32)
98
+ @browserField.setText(ruby_2_fox(@shell.os_path(@options.browser)))
78
99
  @browserField.connect(SEL_COMMAND) {
79
- browserChanged
100
+ browser_changed
80
101
  }
81
- chooserButton = FXButton.new(combo, '...')
82
- chooserButton.connect(SEL_COMMAND) {
102
+ chooser_button = FXButton.new(combo, '...')
103
+ chooser_button.connect(SEL_COMMAND) {
83
104
  dialog = FXFileDialog.new(self, "Choose browser")
84
105
  dialog.filename = @browserField.getText
85
106
  dialog.selectMode = SELECTFILE_EXISTING
86
107
  unless dialog.execute == 0
87
- @browserField.setText(dialog.filename)
88
- browserChanged
108
+ @browserField.setText(dialog.filename)
109
+ browser_changed
110
+ end
111
+ }
112
+ end
113
+
114
+ def add_tab_html_to(tabs)
115
+ tab = add_tab(tabs, "Html")
116
+ HtmlOptionsWidget.new(tab, @options)
117
+ end
118
+
119
+ def add_tab_ftp_to(tabs)
120
+ tab = add_tab(tabs, "Upload")
121
+ frame = FXMatrix.new(tab, 2, MATRIX_BY_COLUMNS)
122
+ add_label_to(frame, "FTP server:")
123
+ server_field = FXTextField.new(frame, 32)
124
+ server_field.setLayoutHints(LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
125
+ server_field.setText(ruby_2_fox(@options.ftpHost))
126
+ server_field.connect(SEL_COMMAND) {
127
+ @options.ftpHost = fox_2_ruby(server_field.getText)
128
+ }
129
+ add_label_to(frame, "User:")
130
+ user_field = FXTextField.new(frame, 32)
131
+ user_field.setLayoutHints(LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
132
+ user_field.setText(@options.ftpUser)
133
+ user_field.connect(SEL_COMMAND) {
134
+ @options.ftpUser = fox_2_ruby(user_field.getText)
135
+ }
136
+ add_label_to(frame, "Remote path:")
137
+ remote_path_field = FXTextField.new(frame, 32)
138
+ remote_path_field.setLayoutHints(LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
139
+ remote_path_field.setText(@options.remoteDestinationPath)
140
+ remote_path_field.connect(SEL_COMMAND) {
141
+ @options.remoteDestinationPath = fox_2_ruby(remote_path_field.getText)
142
+ }
143
+
144
+ frame = FXMatrix.new(tab, 2, MATRIX_BY_COLUMNS)
145
+ add_txt_to(frame, "Expert settings")
146
+ add_txt_to(frame, "")
147
+ add_label_to(frame, "Exclude filters:")
148
+ filters_field = FXTextField.new(frame, 32)
149
+ filters_field.setLayoutHints(LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
150
+ filters_field.setText(@options.excludeFilters.join(','))
151
+ filters_field.connect(SEL_COMMAND) {
152
+ filters_txt = fox_2_ruby(filters_field.getText)
153
+ @options.excludeFilters = filters_txt.split(',').
154
+ collect { |s| s.strip }.
155
+ reject { |s| s.length == 0 }
156
+ }
157
+ end
158
+
159
+ def add_tab_experimental_to(tabs)
160
+ tab = add_tab(tabs, "Experimental")
161
+ msg = "These options are old or experimental." +
162
+ "\nDon't change them unless you really need to."
163
+ add_txt_to(tab, msg)
164
+ cb = FXCheckButton.new(tab,
165
+ 'Preselect directories',
166
+ nil, 0, cb_flags)
167
+ cb.setCheck(@options.preselectDirectories)
168
+ cb.connect(SEL_COMMAND) { |sender, sel, ptr|
169
+ @options.preselectDirectories = ptr
170
+ }
171
+ cb = FXCheckButton.new(tab,
172
+ 'Show preview pane',
173
+ nil, 0, cb_flags)
174
+ cb.setCheck(@options.usePreview)
175
+ cb.connect(SEL_COMMAND) { |sender, sel, ptr|
176
+ @options.usePreview = ptr
177
+ }
178
+ cb = FXCheckButton.new(tab,
179
+ 'Use HTML tables',
180
+ nil, 0, cb_flags)
181
+ cb.setCheck(@options.useTable)
182
+ cb.connect(SEL_COMMAND) { |sender, sel, ptr|
183
+ @options.useTable = ptr
184
+ }
185
+ cb = FXCheckButton.new(tab,
186
+ 'Styles sample',
187
+ nil, 0, cb_flags)
188
+ cb.setCheck(@options.stylesSample)
189
+ cb.connect(SEL_COMMAND) { |sender, sel, ptr|
190
+ @options.stylesSample = ptr
191
+ }
192
+
193
+ size_frame = FXHorizontalFrame.new(tab, FRAME_NONE, 0, 0, 0 , 0, 0, 0, 0, 0)
194
+ add_txt_to(size_frame, "Thumbnail size:")
195
+ thumb_width_field = FXTextField.new(size_frame, 4)
196
+ add_label_to(size_frame, " x ")
197
+ thumb_height_field = FXTextField.new(size_frame, 4)
198
+ thumb_width_field.setText(ruby_2_fox(@options.thumbWidth.to_s))
199
+ thumb_height_field.setText(ruby_2_fox(@options.thumbHeight.to_s))
200
+ thumb_width_field.connect(SEL_COMMAND) { |sender, sel, ptr|
201
+ begin
202
+ @options.thumbWidth = fox_2_ruby(thumb_width_field.getText).to_i
203
+ rescue StandardError => ex
204
+ thumb_width_field.setText(ruby_2_fox(@options.thumbWidth.to_s))
205
+ end
206
+ }
207
+ thumb_height_field.connect(SEL_COMMAND) { |sender, sel, ptr|
208
+ begin
209
+ @options.thumbHeight = fox_2_ruby(thumb_height_field.getText).to_i
210
+ rescue StandardError => ex
211
+ thumb_height_field.setText(ruby_2_fox(@options.thumbHeight.to_s))
89
212
  end
90
213
  }
91
- addOkCancelButtonsTo(basicFrame)
92
214
  end
93
215
 
94
- def browserChanged
95
- @options.browser = @shell.rubyPath(fox2Ruby(@browserField.getText))
216
+ def browser_changed
217
+ @options.browser = @shell.ruby_path(fox_2_ruby(@browserField.getText))
96
218
  end
97
219
 
98
- def updateProcessor
99
- @rbFxruby.setCheck(@options.useFxruby?)
100
- @rbNconvert.setCheck(@options.useNconvert?)
101
- @rbRmagick.setCheck(@options.useRmagick?)
220
+ def update_processor
221
+ @rbFxruby.setCheck(@options.use_fxruby?)
222
+ @rbNconvert.setCheck(@options.use_nconvert?)
223
+ @rbRmagick.setCheck(@options.use_rmagick?)
102
224
  end
103
225
 
104
226
  def validate