Piggy 0.4.2.4 → 0.4.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.txt +15 -0
- data/INSTALL.txt +9 -4
- data/README.txt +8 -6
- data/bin/directory_diff +1 -1
- data/bin/ftp_browser +1 -1
- data/bin/piggy +1 -1
- data/lib/directory_diff.rb +8 -6
- data/lib/ftp_browser.rb +8 -6
- data/lib/icons/connect.ico +0 -0
- data/lib/icons/hide_details.ico +0 -0
- data/lib/icons/show_details.ico +0 -0
- data/lib/piggy-core/alive_check.rb +4 -4
- data/lib/piggy-core/debug.rb +4 -4
- data/lib/piggy-core/environment.rb +24 -26
- data/lib/piggy-core/exifr_adapter.rb +11 -11
- data/lib/piggy-core/file_info.rb +61 -61
- data/lib/piggy-core/ftp_adapter.rb +24 -24
- data/lib/piggy-core/htmlgen.rb +41 -45
- data/lib/piggy-core/nconvert_thumbsgen.rb +22 -22
- data/lib/piggy-core/options.rb +25 -19
- data/lib/piggy-core/options_persistence.rb +8 -8
- data/lib/piggy-core/progress.rb +7 -7
- data/lib/piggy-core/rmagick_thumbnail_page_generator.rb +14 -14
- data/lib/piggy-core/thumbnail_generator.rb +26 -26
- data/lib/piggy-core/thumbnail_page_generator.rb +234 -230
- data/lib/piggy-core/upload_info.rb +22 -22
- data/lib/piggy-core/version.rb +7 -7
- data/lib/piggy-core/winshell.rb +136 -80
- data/lib/piggy-gui/dir_chooser.rb +14 -14
- data/lib/piggy-gui/directory_diff_widget.rb +177 -160
- data/lib/piggy-gui/filtered_file_list.rb +87 -87
- data/lib/piggy-gui/fox_thumbsgen.rb +4 -4
- data/lib/piggy-gui/ftp_browser_widget.rb +211 -155
- data/lib/piggy-gui/fullscreen.rb +4 -4
- data/lib/piggy-gui/html_generation_dialog.rb +42 -115
- data/lib/piggy-gui/html_options_widget.rb +97 -0
- data/lib/piggy-gui/image_processor.rb +58 -58
- data/lib/piggy-gui/modal_dialog.rb +11 -5
- data/lib/piggy-gui/multiimagecanvas.rb +59 -59
- data/lib/piggy-gui/options_dialog.rb +170 -48
- data/lib/piggy-gui/piggy_image_browser.rb +382 -340
- data/lib/piggy-gui/pipe_log.rb +17 -17
- data/lib/piggy-gui/progress_with_dialog.rb +8 -8
- data/lib/piggy-gui/require-fox.rb +23 -8
- data/lib/piggy.rb +7 -5
- data/lib/templates/styles/basic/style.css +16 -14
- data/lib/templates/styles/black/style.css +28 -29
- data/lib/templates/styles/roundedbox/style.css +28 -31
- data/lib/templates/styles/shadow/style.css +26 -26
- data/lib/templates/styles/shadow_D9F5F3/style.css +1 -1
- data/lib/templates/styles/shadow_black/lo.jpg +0 -0
- data/lib/templates/styles/shadow_black/lu.jpg +0 -0
- data/lib/templates/styles/shadow_black/ro.jpg +0 -0
- data/lib/templates/styles/shadow_black/ru.jpg +0 -0
- data/lib/templates/styles/shadow_black/style.css +78 -0
- data/lib/templates/styles/shadow_bowers/style.css +48 -51
- data/lib/templates/styles/sylvester/sh.png +0 -0
- data/lib/templates/styles/sylvester/style.css +74 -0
- data/lib/templates/styles/sylvester/wunderkerze.jpg +0 -0
- data/test/file_info_test.rb +29 -29
- 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
|
-
|
18
|
-
|
19
|
-
|
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
|
30
|
-
@imgProcessor.
|
29
|
+
def destroy_all(imageCache)
|
30
|
+
@imgProcessor.destroy_all(imageCache)
|
31
31
|
end
|
32
32
|
|
33
|
-
def
|
33
|
+
def image_processor
|
34
34
|
return @imgProcessor
|
35
35
|
end
|
36
36
|
|
37
|
-
def
|
37
|
+
def get_content_width
|
38
38
|
return @contentWidth
|
39
39
|
end
|
40
40
|
|
41
|
-
def
|
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
|
53
|
+
def set_images(imageArray)
|
54
54
|
@images = imageArray
|
55
55
|
end
|
56
56
|
|
57
|
-
def
|
58
|
-
|
57
|
+
def load_and_show_image(file)
|
58
|
+
load_image(file)
|
59
59
|
end
|
60
60
|
|
61
|
-
def
|
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
|
-
|
66
|
+
unless @imgProcessor.is_supported_image_file? file
|
67
67
|
FXMessageBox.error(self, MBOX_OK, "Warning image type",
|
68
|
-
|
68
|
+
"Unsupported image type: #{file}")
|
69
69
|
return
|
70
70
|
end
|
71
71
|
getApp.beginWaitCursor do
|
72
|
-
img = @imgProcessor.
|
72
|
+
img = @imgProcessor.load_image(file, false)
|
73
73
|
unless degree == 0
|
74
|
-
|
74
|
+
@imgProcessor.rotate_image(img, degree)
|
75
75
|
end
|
76
|
-
|
76
|
+
destroy_all(@images) if !additive
|
77
77
|
images.push(img)
|
78
78
|
if additive
|
79
|
-
|
79
|
+
cache_thumb_for(file, img)
|
80
80
|
else
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
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
|
-
|
94
|
+
force_refresh if !additive
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
98
|
-
def
|
99
|
-
@imgProcessor.
|
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
|
-
|
104
|
-
@thumbs[
|
105
|
-
@thumbs.delete(
|
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.
|
118
|
-
|
117
|
+
@imgProcessor.fit_image(img, w, h)
|
118
|
+
force_refresh
|
119
119
|
end
|
120
120
|
|
121
|
-
def
|
121
|
+
def load_images(files)
|
122
122
|
images.clear
|
123
|
-
files.each { |f|
|
124
|
-
|
123
|
+
files.each { |f| load_image(f, true) }
|
124
|
+
force_refresh
|
125
125
|
end
|
126
126
|
|
127
|
-
def
|
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
|
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
|
-
|
142
|
-
|
143
|
-
|
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
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
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 =
|
159
|
-
@contentHeight = y +
|
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
|
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
|
-
|
23
|
+
initialize_layout
|
23
24
|
end
|
24
25
|
|
25
|
-
def
|
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
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
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.
|
43
|
-
|
69
|
+
@options.use_fxruby!
|
70
|
+
update_processor
|
44
71
|
}
|
45
72
|
@rbNconvert.connect(SEL_COMMAND) { |sender, sel, ptr|
|
46
|
-
@options.
|
47
|
-
|
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.
|
52
|
-
|
78
|
+
@options.use_rmagick!
|
79
|
+
update_processor
|
53
80
|
}
|
54
81
|
else
|
55
82
|
@rbRmagick.disable
|
56
83
|
end
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
cb = FXCheckButton.new(
|
61
|
-
|
62
|
-
|
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
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
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
|
-
|
100
|
+
browser_changed
|
80
101
|
}
|
81
|
-
|
82
|
-
|
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
|
-
|
88
|
-
|
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
|
95
|
-
@options.browser = @shell.
|
216
|
+
def browser_changed
|
217
|
+
@options.browser = @shell.ruby_path(fox_2_ruby(@browserField.getText))
|
96
218
|
end
|
97
219
|
|
98
|
-
def
|
99
|
-
@rbFxruby.setCheck(@options.
|
100
|
-
@rbNconvert.setCheck(@options.
|
101
|
-
@rbRmagick.setCheck(@options.
|
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
|