exit 1
end
if !system("which identify >/dev/null 2>/dev/null")
- show_popup($main_window, utf8(_("The program 'identify' is needed to get images sizes and EXIF data. Please install it.
+ show_popup($main_window, utf8(_("The program 'identify' is needed to get photos sizes and EXIF data. Please install it.
It is generally available with the 'ImageMagick' software package.")), { :pos_centered => true })
end
if !system("which exif >/dev/null 2>/dev/null")
image_editor_binary = $config['image-editor'].split.first
if image_editor_binary && !File.executable?(image_editor_binary)
show_popup($main_window, utf8(_("The configured image editor seems to be unavailable.
-You should fix this in Edit/Preferences so that you can edit images externally.
+You should fix this in Edit/Preferences so that you can edit photos externally.
Problem was: '%s' is not an executable file.
Hint: don't forget to specify the full path to the executable,
this panorama image should probably be roughly three times the width of regular images.
With this information, booh will be able to generate panorama thumbnails looking
-the right 'size'.
+the right 'size', since the height of the thumbnail for this image will be similar
+to the height of other thumbnails.
"))
dialog.vbox.add(lbl)
dialog.vbox.add(Gtk::Alignment.new(0.5, 0.5, 0, 0).add(Gtk::HBox.new.add(rb_no = Gtk::RadioButton.new(utf8(_("none (not a panorama image)")))).
lbl = Gtk::Label.new
lbl.markup = utf8(
_("You can fix the <b>white balance</b> of the image, if your image is too blue
-or too yellow because your camera didn't detect the light correctly. Drag the
+or too yellow because the recorder didn't detect the light correctly. Drag the
slider below the image to the left for more blue, to the right for more yellow.
"))
dialog.vbox.add(lbl)
vb.pack_start(Gtk::Label.new(msg), false, false)
vb.pack_start(frame1 = Gtk::Frame.new(utf8(_("Thumbnails"))).add(vb1 = Gtk::VBox.new(false, 5)))
- vb1.pack_start(pb1_1 = Gtk::ProgressBar.new.set_text(utf8(_("Scanning images and videos..."))), false, false)
+ vb1.pack_start(pb1_1 = Gtk::ProgressBar.new.set_text(utf8(_("Scanning photos and videos..."))), false, false)
if mode != 'one dir scan'
vb1.pack_start(pb1_2 = Gtk::ProgressBar.new.set_text(utf8(_("not started"))), false, false)
end
total[element.name] += 1
end
}
- $statusbar.push(0, utf8(_("%s: %s images and %s videos, %s sub-albums") % [ File.basename(from_utf8($xmldir.attributes['path'])),
+ $statusbar.push(0, utf8(_("%s: %s photos and %s videos, %s sub-albums") % [ File.basename(from_utf8($xmldir.attributes['path'])),
total['image'], total['video'], total['dir'] ]))
$subalbums_vb.add($subalbums)
$subalbums_vb.show_all
if entry2type(filename).nil?
return utf8(_("Not a booh file!"))
else
- return utf8(_("Not a booh file!\n\nHint: you cannot import directly an image or video with File/Open.\nUse File/New to create a new album."))
+ return utf8(_("Not a booh file!\n\nHint: you cannot import directly a photo or video with File/Open.\nUse File/New to create a new album."))
end
end
[Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_CANCEL])
frame1 = Gtk::Frame.new(utf8(_("Locations"))).add(tbl = Gtk::Table.new(0, 0, false))
- tbl.attach(Gtk::Label.new(utf8(_("Directory of images/videos: "))),
+ tbl.attach(Gtk::Label.new(utf8(_("Directory of photos/videos: "))),
0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 2, 2)
tbl.attach(src = Gtk::Entry.new,
1, 2, 0, 1, Gtk::FILL, Gtk::SHRINK, 2, 2)
tbl.attach(src_browse = Gtk::Button.new(utf8(_("browse..."))),
2, 3, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 2, 2)
- tbl.attach(Gtk::Label.new.set_markup(utf8(_("<span size='small'><i>number of images/videos down this directory:</i></span> "))),
+ tbl.attach(Gtk::Label.new.set_markup(utf8(_("<span size='small'><i>number of photos/videos down this directory:</i></span> "))),
0, 1, 1, 2, Gtk::SHRINK, Gtk::SHRINK, 2, 2)
tbl.attach(src_nb = Gtk::Label.new.set_markup(utf8(_("<span size='small'><i>N/A</i></span>"))),
1, 2, 1, 2, Gtk::FILL, Gtk::SHRINK, 2, 2)
vb.add(Gtk::HBox.new(false, 3).pack_start(Gtk::Label.new(utf8(_("Sizes of images to generate: "))), false, false, 0).
pack_start(sizes = Gtk::HBox.new, false, false, 0))
vb.add(optimize432 = Gtk::CheckButton.new(utf8(_("Optimize for 3/2 aspect ratio"))))
- tooltips.set_tip(optimize432, utf8(_("Resize images with optimized sizes for 3/2 aspect ratio rather than 4/3 (typical aspect ratio of pictures from non digital cameras are 3/2 when pictures from digital cameras are 4/3)")), nil)
+ tooltips.set_tip(optimize432, utf8(_("Resize images with optimized sizes for 3/2 aspect ratio rather than 4/3 (typical aspect ratio of photos from non digital cameras are 3/2 when pictures from digital cameras are 4/3)")), nil)
vb.add(Gtk::HBox.new(false, 3).pack_start(Gtk::Label.new(utf8(_("Number of thumbnails per row: "))), false, false, 0).
pack_start(nperrowradios = Gtk::HBox.new, false, false, 0))
nperpage_model = Gtk::ListStore.new(String, String)
end
end
}
- gtk_thread_protect { src_nb.set_markup(utf8(_("<span size='small'><i>%s images and %s videos</i></span>") % [ total['image'], total['video'] ])) }
+ gtk_thread_protect { src_nb.set_markup(utf8(_("<span size='small'><i>%s photos and %s videos</i></span>") % [ total['image'], total['video'] ])) }
src_nb_thread = nil
}
else
}
src_browse.signal_connect('clicked') {
- fc = Gtk::FileChooserDialog.new(utf8(_("Select the directory of images/videos")),
+ fc = Gtk::FileChooserDialog.new(utf8(_("Select the directory of photos/videos")),
nil,
Gtk::FileChooser::ACTION_SELECT_FOLDER,
nil,
}
sizes.add(cb = Gtk::CheckButton.new(utf8(_('original'))))
tooltips = Gtk::Tooltips.new
- tooltips.set_tip(cb, utf8(_("Include original image in web-album")), nil)
+ tooltips.set_tip(cb, utf8(_("Include original photo in web-album")), nil)
theme_sizes << { :widget => cb, :value => 'original' }
sizes.show_all
destdir = from_utf8_safe(dest.text)
confpath = from_utf8_safe(conf.text)
if src.text != '' && srcdir == ''
- show_popup(dialog, utf8(_("The directory of images/videos is invalid. Please check your input.")))
+ show_popup(dialog, utf8(_("The directory of photos/videos is invalid. Please check your input.")))
src.grab_focus
elsif !File.directory?(srcdir)
- show_popup(dialog, utf8(_("The directory of images/videos doesn't exist. Please check your input.")))
+ show_popup(dialog, utf8(_("The directory of photos/videos doesn't exist. Please check your input.")))
src.grab_focus
elsif dest.text != '' && destdir == ''
show_popup(dialog, utf8(_("The destination directory is invalid. Please check your input.")))
tooltips = Gtk::Tooltips.new
frame1 = Gtk::Frame.new(utf8(_("Locations"))).add(tbl = Gtk::Table.new(0, 0, false))
- tbl.attach(Gtk::Label.new(utf8(_("Directory of source images/videos: "))),
+ tbl.attach(Gtk::Label.new(utf8(_("Directory of source photos/videos: "))),
0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 2, 2)
tbl.attach(Gtk::Alignment.new(0, 0.5, 0, 0).add(Gtk::Label.new.set_markup('<i>' + source + '</i>')),
1, 2, 0, 1, Gtk::FILL, Gtk::SHRINK, 2, 2)
}
sizes.add(cb = Gtk::CheckButton.new(utf8(_('original'))))
tooltips = Gtk::Tooltips.new
- tooltips.set_tip(cb, utf8(_("Include original image in web-album")), nil)
+ tooltips.set_tip(cb, utf8(_("Include original photo in web-album")), nil)
if limit_sizes && limit_sizes.include?('original')
cb.active = true
end
tbl.attach(nogestures_check = Gtk::CheckButton.new(utf8(_("Disable mouse gestures"))),
0, 2, 4, 5, Gtk::FILL, Gtk::SHRINK, 2, 2)
tooltips.set_tip(nogestures_check, utf8(_("Mouse gestures are 'unusual' mouse movements triggering special actions, and are great for speeding up your editions. Get details on available mouse gestures from the Help menu.")), nil)
- tbl.attach(deleteondisk_check = Gtk::CheckButton.new(utf8(_("Delete original images/videos as well"))),
+ tbl.attach(deleteondisk_check = Gtk::CheckButton.new(utf8(_("Delete original photos/videos as well"))),
0, 2, 6, 7, Gtk::FILL, Gtk::SHRINK, 2, 2)
- tooltips.set_tip(deleteondisk_check, utf8(_("Normally, deleting an image or video in booh only removes it from the web-album. If you check this option, the original file in source directory will be removed as well. Undo is possible, since actual deletion is performed only when web-album is saved.")), nil)
+ tooltips.set_tip(deleteondisk_check, utf8(_("Normally, deleting a photo or video in booh only removes it from the web-album. If you check this option, the original file in source directory will be removed as well. Undo is possible, since actual deletion is performed only when web-album is saved.")), nil)
smp_check.signal_connect('toggled') {
smp_hbox.sensitive = smp_check.active?
0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 2, 2)
tbl.attach(enhance_entry = Gtk::Entry.new.set_text($config['convert-enhance'] || $convert_enhance).set_size_request(250, -1),
1, 2, 0, 1, Gtk::FILL, Gtk::SHRINK, 2, 2)
- tbl.attach(Gtk::Label.new.set_markup(utf8(_("Format to use for comments of \nimages in new albums:"))),
+ tbl.attach(Gtk::Label.new.set_markup(utf8(_("Format to use for comments of \nphotos in new albums:"))),
0, 1, 1, 2, Gtk::FILL, Gtk::SHRINK, 2, 2)
tbl.attach(commentsformat_entry = Gtk::Entry.new.set_text($config['comments-format']),
1, 2, 1, 2, Gtk::FILL, Gtk::SHRINK, 2, 2)
tbl.attach(commentsformat_help = Gtk::Button.new(Gtk::Stock::HELP),
2, 3, 1, 2, Gtk::FILL, Gtk::SHRINK, 2, 2)
- tooltips.set_tip(commentsformat_entry, utf8(_("Normally, filenames without extension are used as comments for images and videos in new albums. Use this entry to use something else for images.")), nil)
+ tooltips.set_tip(commentsformat_entry, utf8(_("Normally, filenames without extension are used as comments for photos and videos in new albums. Use this entry to use something else.")), nil)
commentsformat_help.signal_connect('clicked') {
show_popup(dialog, utf8(_("The comments format you specify is actually passed to the 'identify' program,
hence you should look at ImageMagick/identify documentation for the most
filesubmenu.append($save_as = Gtk::ImageMenuItem.new(Gtk::Stock::SAVE_AS).set_sensitive(false))
filesubmenu.append( Gtk::SeparatorMenuItem.new)
tooltips = Gtk::Tooltips.new
- filesubmenu.append($merge_current = Gtk::ImageMenuItem.new(utf8(_("Merge new/removed images/videos in current subalbum"))).set_sensitive(false))
+ filesubmenu.append($merge_current = Gtk::ImageMenuItem.new(utf8(_("Merge new/removed photos/videos in current subalbum"))).set_sensitive(false))
$merge_current.image = Gtk::Image.new("#{$FPATH}/images/stock-reset-16.png")
- tooltips.set_tip($merge_current, utf8(_("Take into account new/removed images/videos in currently viewed subalbum")), nil)
+ tooltips.set_tip($merge_current, utf8(_("Take into account new/removed photos/videos in currently viewed subalbum")), nil)
filesubmenu.append($merge_newsubs = Gtk::ImageMenuItem.new(utf8(_("Merge new subalbums (subdirectories) in current subalbum"))).set_sensitive(false))
$merge_newsubs.image = Gtk::Image.new("#{$FPATH}/images/stock-reset-16.png")
tooltips.set_tip($merge_newsubs, utf8(_("Take into account new subalbums in currently viewed subalbum (and only here)")), nil)
- filesubmenu.append($merge = Gtk::ImageMenuItem.new(utf8(_("Scan source directory to merge new subalbums and new/removed images/videos"))).set_sensitive(false))
+ filesubmenu.append($merge = Gtk::ImageMenuItem.new(utf8(_("Scan source directory to merge new subalbums and new/removed photos/videos"))).set_sensitive(false))
$merge.image = Gtk::Image.new("#{$FPATH}/images/stock-reset-16.png")
- tooltips.set_tip($merge, utf8(_("Take into account new/removed subalbums (subdirectories) and new/removed images/videos in existing subalbums (anywhere)")), nil)
+ tooltips.set_tip($merge, utf8(_("Take into account new/removed subalbums (subdirectories) and new/removed photos/videos in existing subalbums (anywhere)")), nil)
filesubmenu.append( Gtk::SeparatorMenuItem.new)
filesubmenu.append($generate = Gtk::ImageMenuItem.new(utf8(_("Generate web-album"))).set_sensitive(false))
$generate.image = Gtk::Image.new("#{$FPATH}/images/stock-web-16.png")
<span foreground='darkblue'>Tab</span>: go to next image caption and select text (begin typing to erase current text!)
<span foreground='darkblue'>Shift-Tab</span>: go to previous image caption
<span foreground='darkblue'>Control-Left/Right/Up/Down</span>: go to specified direction's image caption
-<span foreground='darkblue'>Control-Enter</span>: for an image, open larger view; for a video, launch player
+<span foreground='darkblue'>Control-Enter</span>: for a photo, open larger view; for a video, launch player
<span foreground='darkblue'>Control-Delete</span>: delete image
<span foreground='darkblue'>Shift-Left/Right/Up/Down</span>: move image left/right/up/down
<span foreground='darkblue'>Alt-Left/Right</span>: rotate image clockwise/counter-clockwise
menu.append(passprotect = Gtk::ImageMenuItem.new(utf8(_("Password protect"))))
passprotect.image = Gtk::Image.new("#{$FPATH}/images/galeon-secure.png")
passprotect.signal_connect('activate') { ask_password_protect }
- menu.append(restore = Gtk::ImageMenuItem.new(utf8(_("Restore deleted images/videos/subalbums"))))
+ menu.append(restore = Gtk::ImageMenuItem.new(utf8(_("Restore deleted photos/videos/subalbums"))))
restore.image = Gtk::Image.new("#{$FPATH}/images/restore.png")
restore.signal_connect('activate') { restore_deleted }
menu.append(Gtk::SeparatorMenuItem.new)
[ '--help', '-h', GetoptLong::NO_ARGUMENT, _("Get help message") ],
[ '--version', '-V', GetoptLong::NO_ARGUMENT, _("Print version and exit") ],
- [ '--source', '-s', GetoptLong::REQUIRED_ARGUMENT, _("Directory which contains original images/videos as files or subdirs") ],
+ [ '--source', '-s', GetoptLong::REQUIRED_ARGUMENT, _("Directory which contains original photos/videos as files or subdirs") ],
[ '--destination', '-d', GetoptLong::REQUIRED_ARGUMENT, _("Directory which will contain the web-album; if it already exits, then all existing files and directories inside it will be removed!") ],
[ '--theme', '-t', GetoptLong::REQUIRED_ARGUMENT, _("Select HTML theme to use") ],
- [ '--config', '-C', GetoptLong::REQUIRED_ARGUMENT, _("File containing config listing images and videos within directories with captions") ],
+ [ '--config', '-C', GetoptLong::REQUIRED_ARGUMENT, _("File containing config listing photos and videos within directories with captions") ],
[ '--config-skel', '-k', GetoptLong::REQUIRED_ARGUMENT, _("Filename where the script will output a config skeleton") ],
- [ '--merge-config', '-M', GetoptLong::REQUIRED_ARGUMENT, _("File containing config listing, where to merge new/removed images/videos from --source, and change theme info") ],
+ [ '--merge-config', '-M', GetoptLong::REQUIRED_ARGUMENT, _("File containing config listing, where to merge new/removed photos/videos from --source, and change theme info") ],
[ '--merge-config-onedir', '-O', GetoptLong::REQUIRED_ARGUMENT, _("File containing config listing, for merging the subdir specified with --dir") ],
[ '--merge-config-subdirs', '-U', GetoptLong::REQUIRED_ARGUMENT, _("File containing config listing, for merging the new subdirs down the subdir specified with --dir") ],
[ '--dir', '-D', GetoptLong::REQUIRED_ARGUMENT, _("Directory for merge with --merge-config-onedir or --merge-config-subdirs") ],
end
end
images = entries.find_all { |e| entry2type(e) == 'image' }
- msg 3, _("\t%s images") % images.length
+ msg 3, _("\t%s photos") % images.length
videos = entries.find_all { |e| entry2type(e) == 'video' }
msg 3, _("\t%s videos") % videos.length
info("walking: #{dir}|#{$source}, #{images.length + videos.length} elements")
fullscreen_images['original'] = []
end
- images.size >= 1 and msg 3, _("\tcreating images thumbnails...")
+ images.size >= 1 and msg 3, _("\tcreating photos thumbnails...")
#- create thumbnails for images
images.each { |img|