if xmldir
value = xmldir.attributes["#{attributes_prefix}pano-amount"]
else
- value = ''
+ value = nil
end
dialog = Gtk::Dialog.new(utf8(_("Specify panorama amount")),
#- init $modified_pixbufs correctly
# update_shown_pixbuf(thumbnail_img, img_, desired_x, desired_y)
- value = xmlelem.attributes["#{attributes_prefix}white-balance"] || "0"
+ value = xmlelem ? (xmlelem.attributes["#{attributes_prefix}white-balance"] || "0") : "0"
dialog = Gtk::Dialog.new(utf8(_("Fix white balance")),
$main_window,
slider below the image to the left for more blue, to the right for more yellow.
"))
dialog.vbox.add(lbl)
- dialog.vbox.add(evt = Gtk::EventBox.new.add(img = Gtk::Image.new(img_.pixbuf)))
+ if img_
+ dialog.vbox.add(evt = Gtk::EventBox.new.add(img = Gtk::Image.new(img_.pixbuf)))
+ end
dialog.vbox.add(hs = Gtk::HScale.new(-200, 200, 1).set_value(value.to_i))
dialog.window_position = Gtk::Window::POS_MOUSE
timeout = Gtk.timeout_add(100) {
if hs.value != lastval
lastval = hs.value
- recalc_whitebalance(lastval, orig, thumbnail_img, img, xmlelem, attributes_prefix, desired_x, desired_y, infotype)
+ if img_
+ recalc_whitebalance(lastval, orig, thumbnail_img, img, xmlelem, attributes_prefix, desired_x, desired_y, infotype)
+ end
end
true
}
dialog.destroy
return { :old => value, :new => newval }
else
- $modified_pixbufs[thumbnail_img] ||= {}
- $modified_pixbufs[thumbnail_img][:whitebalance] = value.to_f
- $modified_pixbufs[thumbnail_img][:pixbuf] = img_.pixbuf
+ if thumbnail_img
+ $modified_pixbufs[thumbnail_img] ||= {}
+ $modified_pixbufs[thumbnail_img][:whitebalance] = value.to_f
+ $modified_pixbufs[thumbnail_img][:pixbuf] = img_.pixbuf
+ end
dialog.destroy
return nil
end
menu.append(changeimg = Gtk::ImageMenuItem.new(utf8(_("Change image"))))
changeimg.image = Gtk::Image.new("#{$FPATH}/images/stock-images-16.png")
changeimg.signal_connect('activate') { closures[:change].call }
- menu.append( Gtk::SeparatorMenuItem.new)
+ menu.append(Gtk::SeparatorMenuItem.new)
end
- if closures[:view]
- if type == 'image'
- menu.append(view = Gtk::ImageMenuItem.new(utf8(_("View larger"))))
- view.image = Gtk::Image.new("#{$FPATH}/images/stock-view-16.png")
- view.signal_connect('activate') { closures[:view].call }
- else
- menu.append(view = Gtk::ImageMenuItem.new(utf8(_("Play video"))))
- view.image = Gtk::Image.new("#{$FPATH}/images/stock-video-16.png")
- view.signal_connect('activate') { closures[:view].call }
- menu.append( Gtk::SeparatorMenuItem.new)
- end
- end
- if type == 'image'
- menu.append(exif = Gtk::ImageMenuItem.new(utf8(_("View EXIF data"))))
- exif.image = Gtk::Image.new("#{$FPATH}/images/stock-list-16.png")
- exif.signal_connect('activate') { show_popup($main_window,
- utf8(`identify -format "%[EXIF:*]" #{fullpath}`.sub(/MakerNote.*\n/, '')),
- { :title => utf8(_("EXIF data of %s") % File.basename(fullpath)), :nomarkup => true, :scrolled => true }) }
- menu.append( Gtk::SeparatorMenuItem.new)
+ if !possible_actions[:can_multiple] || $selected_elements.length == 0
+ if closures[:view]
+ if type == 'image'
+ menu.append(view = Gtk::ImageMenuItem.new(utf8(_("View larger"))))
+ view.image = Gtk::Image.new("#{$FPATH}/images/stock-view-16.png")
+ view.signal_connect('activate') { closures[:view].call }
+ else
+ menu.append(view = Gtk::ImageMenuItem.new(utf8(_("Play video"))))
+ view.image = Gtk::Image.new("#{$FPATH}/images/stock-video-16.png")
+ view.signal_connect('activate') { closures[:view].call }
+ menu.append(Gtk::SeparatorMenuItem.new)
+ end
+ end
+ if type == 'image' && (!possible_actions[:can_multiple] || $selected_elements.length == 0)
+ menu.append(exif = Gtk::ImageMenuItem.new(utf8(_("View EXIF data"))))
+ exif.image = Gtk::Image.new("#{$FPATH}/images/stock-list-16.png")
+ exif.signal_connect('activate') { show_popup($main_window,
+ utf8(`identify -format "%[EXIF:*]" #{fullpath}`.sub(/MakerNote.*\n/, '')),
+ { :title => utf8(_("EXIF data of %s") % File.basename(fullpath)), :nomarkup => true, :scrolled => true }) }
+ menu.append(Gtk::SeparatorMenuItem.new)
+ end
end
menu.append(r90 = Gtk::ImageMenuItem.new(utf8(_("Rotate clockwise"))))
r90.image = Gtk::Image.new("#{$FPATH}/images/stock-rotate-90-16.png")
r270.image = Gtk::Image.new("#{$FPATH}/images/stock-rotate-270-16.png")
r270.signal_connect('activate') { distribute_multiple_call.call(:rotate, -90) }
if !possible_actions[:can_multiple] || $selected_elements.length == 0
- menu.append( Gtk::SeparatorMenuItem.new)
+ menu.append(Gtk::SeparatorMenuItem.new)
if !possible_actions[:forbid_left]
menu.append(moveleft = Gtk::ImageMenuItem.new(utf8(_("Move left"))))
moveleft.image = Gtk::Image.new("#{$FPATH}/images/stock-move-left.png")
end
if type == 'video'
if !possible_actions[:can_multiple] || $selected_elements.length == 0 || $selected_elements.reject { |k,v| $name2widgets[k][:type] == 'video' }.empty?
- menu.append( Gtk::SeparatorMenuItem.new)
- menu.append( color_swap = Gtk::ImageMenuItem.new(utf8(_("Red/blue color swap"))))
+ menu.append(Gtk::SeparatorMenuItem.new)
+ menu.append(color_swap = Gtk::ImageMenuItem.new(utf8(_("Red/blue color swap"))))
color_swap.image = Gtk::Image.new("#{$FPATH}/images/stock-color-triangle-16.png")
color_swap.signal_connect('activate') { distribute_multiple_call.call(:color_swap) }
- menu.append( flip = Gtk::ImageMenuItem.new(utf8(_("Flip upside-down"))))
+ menu.append(flip = Gtk::ImageMenuItem.new(utf8(_("Flip upside-down"))))
flip.image = Gtk::Image.new("#{$FPATH}/images/stock-rotate-180-16.png")
flip.signal_connect('activate') { distribute_multiple_call.call(:rotate, 180) }
menu.append(frame_offset = Gtk::ImageMenuItem.new(utf8(_("Specify frame offset"))))
end
end
menu.append( Gtk::SeparatorMenuItem.new)
- if !possible_actions[:can_multiple] || $selected_elements.length == 0
- menu.append(whitebalance = Gtk::ImageMenuItem.new(utf8(_("Fix white-balance"))))
- whitebalance.image = Gtk::Image.new("#{$FPATH}/images/stock-tool-color-balance-16.png")
- whitebalance.signal_connect('activate') { closures[:whitebalance].call }
- end
+ menu.append(whitebalance = Gtk::ImageMenuItem.new(utf8(_("Fix white-balance"))))
+ whitebalance.image = Gtk::Image.new("#{$FPATH}/images/stock-tool-color-balance-16.png")
+ whitebalance.signal_connect('activate') {
+ if possible_actions[:can_multiple] && $selected_elements.length > 0
+ if values = ask_whitebalance(nil, nil, nil, nil, '', nil, nil, '')
+ distribute_multiple_call.call(:whitebalance, values)
+ end
+ else
+ closures[:whitebalance].call
+ end
+ }
if !possible_actions[:can_multiple] || $selected_elements.length == 0
menu.append(enhance = Gtk::ImageMenuItem.new(utf8(xmldir.attributes["#{attributes_prefix}enhance"] ? _("Original contrast") :
_("Enhance constrast"))))
if type == 'image' && possible_actions[:can_panorama]
menu.append(panorama = Gtk::ImageMenuItem.new(utf8(_("Set as panorama"))))
panorama.image = Gtk::Image.new("#{$FPATH}/images/stock-images-16.png")
- panorama.signal_connect('activate') { closures[:pano].call }
+ panorama.signal_connect('activate') {
+ if possible_actions[:can_multiple] && $selected_elements.length > 0
+ if values = ask_new_pano_amount(nil, '')
+ distribute_multiple_call.call(:pano, values)
+ end
+ else
+ distribute_multiple_call.call(:pano)
+ end
+ }
end
if optionals.include?('delete')
menu.append( Gtk::SeparatorMenuItem.new)
end
}
- whitebalance_and_cleanup = Proc.new {
- if values = ask_whitebalance(fullpath, thumbnail_img, img,
- $xmldir.elements["*[@filename='#{filename}']"], '', $default_thumbnails[:x], $default_thumbnails[:y], '')
- perform_change_whitebalance_and_cleanup = Proc.new { |val|
- change_whitebalance($xmldir.elements["*[@filename='#{filename}']"], '', val)
- recalc_whitebalance(val, fullpath, thumbnail_img, img,
- $xmldir.elements["*[@filename='#{filename}']"], '', $default_thumbnails[:x], $default_thumbnails[:y], '')
- cleanup_all_thumbnails.call
- }
- perform_change_whitebalance_and_cleanup.call(values[:new])
+ whitebalance_and_cleanup_real = Proc.new { |values|
+ perform_change_whitebalance_and_cleanup = Proc.new { |val|
+ change_whitebalance($xmldir.elements["*[@filename='#{filename}']"], '', val)
+ recalc_whitebalance(val, fullpath, thumbnail_img, img,
+ $xmldir.elements["*[@filename='#{filename}']"], '', $default_thumbnails[:x], $default_thumbnails[:y], '')
+ cleanup_all_thumbnails.call
+ }
+ perform_change_whitebalance_and_cleanup.call(values[:new])
- save_undo(_("fix white balance"),
+ save_undo(_("fix white balance"),
+ Proc.new {
+ perform_change_whitebalance_and_cleanup.call(values[:old])
+ textview.grab_focus
+ autoscroll_if_needed($autotable_sw, img, textview)
+ $notebook.set_page(1)
Proc.new {
- perform_change_whitebalance_and_cleanup.call(values[:old])
+ perform_change_whitebalance_and_cleanup.call(values[:new])
textview.grab_focus
autoscroll_if_needed($autotable_sw, img, textview)
$notebook.set_page(1)
- Proc.new {
- perform_change_whitebalance_and_cleanup.call(values[:new])
- textview.grab_focus
- autoscroll_if_needed($autotable_sw, img, textview)
- $notebook.set_page(1)
- }
- })
+ }
+ })
+ }
+
+ whitebalance_and_cleanup = Proc.new {
+ if values = ask_whitebalance(fullpath, thumbnail_img, img,
+ $xmldir.elements["*[@filename='#{filename}']"], '', $default_thumbnails[:x], $default_thumbnails[:y], '')
+ whitebalance_and_cleanup_real.call(values)
end
}
$name2closures[filename] = { :rotate => rotate_and_cleanup, :enhance => enhance_and_cleanup, :delete => delete, :cut => cut,
:color_swap => color_swap_and_cleanup, :frame_offset => change_frame_offset_and_cleanup_real,
- :pano => change_pano_amount_and_cleanup }
+ :whitebalance => whitebalance_and_cleanup_real, :pano => change_pano_amount_and_cleanup_real }
textview.signal_connect('key-press-event') { |w, event|
propagate = true