Merge merge requests 641, 638, 630 and 627
authorKlaus Ethgen <Klaus@Ethgen.de>
Tue, 5 Feb 2019 20:18:18 +0000 (21:18 +0100)
committerKlaus Ethgen <Klaus@Ethgen.de>
Tue, 5 Feb 2019 20:18:18 +0000 (21:18 +0100)
Just pro forma as they are already in the history.

* github/merge-requests/641:
  Add export-jpg to POTFILES.in

* github/merge-requests/638:
  Avoid non-portable == for the test command

* github/merge-requests/630:
  add headline field

* github/merge-requests/627:
  Add awk shebang to geocode-parameters.awk

87 files changed:
.gitignore
.mailmap
README.md
autogen.sh
configure.ac [moved from configure.in with 98% similarity]
doc/docbook/GuideOptionsBehavior.xml
doc/docbook/GuidePluginsConfig.xml
doc/docbook/GuideReferenceKeyboardShortcuts.xml
geeqie.1
plugins/Makefile.am
plugins/camera-import/Makefile.am [new file with mode: 0644]
plugins/camera-import/camera-import.desktop.in [new file with mode: 0644]
plugins/camera-import/geeqie-camera-import [new file with mode: 0755]
plugins/camera-import/geeqie-camera-import-hook-script [new file with mode: 0755]
plugins/export-jpeg/Makefile.am [new file with mode: 0644]
plugins/export-jpeg/export-jpeg.desktop.in [new file with mode: 0644]
plugins/export-jpeg/geeqie-export-jpeg [new file with mode: 0755]
plugins/image-crop/Makefile.am [new file with mode: 0644]
plugins/image-crop/geeqie-image-crop [new file with mode: 0644]
plugins/image-crop/image-crop.desktop [new file with mode: 0644]
plugins/image-crop/image-crop.desktop.in [new file with mode: 0644]
plugins/random-image/Makefile.am [new file with mode: 0644]
plugins/random-image/geeqie-random-image [new file with mode: 0755]
plugins/random-image/random-image.desktop.in [new file with mode: 0644]
plugins/template.desktop.in [new file with mode: 0644]
plugins/tethered-photography/Makefile.am [new file with mode: 0644]
plugins/tethered-photography/geeqie-tethered-photography [new file with mode: 0755]
plugins/tethered-photography/geeqie-tethered-photography-hook-script [new file with mode: 0755]
plugins/tethered-photography/tethered-photography.desktop.in [new file with mode: 0644]
po/POTFILES.in
po/en_GB.po
po/tr.po
src/Makefile.am
src/bar_exif.c
src/bar_sort.c
src/collect-table.c
src/collect.c
src/collect.h
src/desktop_file.c
src/dupe.c
src/editors.c
src/editors.h
src/exif-common.c
src/exiv2.cc
src/fullscreen.c
src/icons/Makefile.am
src/icons/icon_flip.png [new file with mode: 0644]
src/icons/icon_mirror.png [new file with mode: 0644]
src/icons/icon_original.png [new file with mode: 0644]
src/icons/icon_rotate_180.png [new file with mode: 0644]
src/icons/icon_rotate_clockwise.png [new file with mode: 0644]
src/icons/icon_rotate_counter_clockwise.png [new file with mode: 0644]
src/icons/icon_trash.png [new file with mode: 0644]
src/image-overlay.c
src/image.c
src/img-view.c
src/layout.c
src/layout_image.c
src/layout_util.c
src/main.c
src/options.c
src/options.h
src/osd.c [new file with mode: 0644]
src/osd.h [new file with mode: 0644]
src/pan-view/pan-view.c
src/pixbuf-renderer.c
src/pixbuf_util.c
src/pixbuf_util.h
src/preferences.c
src/print.c
src/rcfile.c
src/remote.c
src/search.c
src/toolbar.c
src/trash.c
src/typedefs.h
src/ui_fileops.c
src/utilops.c
src/view_dir.c
src/view_dir.h
src/view_dir_list.c
src/view_dir_tree.c
src/view_file/view_file.c
web/geeqie-install-debian.sh
web/help/GuideOptionsBehavior.html
web/help/GuidePluginsConfig.html
web/help/GuideReferenceKeyboardShortcuts.html

index af6579c..fdcda09 100644 (file)
@@ -6,6 +6,9 @@ Makefile.in
 *.rej
 *.orig
 
+# GNOME .desktop files
+*.desktop
+
 # /
 /aclocal.m4
 /autom4te.cache
@@ -32,23 +35,10 @@ Makefile.in
 /depcomp
 /auxdir
 /stamp-h1
-/geeqie.desktop
 /intltool-extract.in
 /intltool-update.in
 /intltool-merge.in
 
-# /plugins/import/
-/plugins/import/*.desktop
-
-# /plugins/rotate/
-/plugins/rotate/*.desktop
-
-# /plugins/symlink/
-/plugins/symlink/*.desktop
-
-# /plugins/ufraw/
-/plugins/ufraw/*.desktop
-
 # /po/
 /po/Makefile.in.in
 /po/POTFILES
index 5dadf80..ed085e2 100644 (file)
--- a/.mailmap
+++ b/.mailmap
@@ -6,6 +6,8 @@ Colin Clark <colin.clark@cclark.uk>
 <mschwendt@fedoraproject.org> <mschwendt@gmail.com>
 <michal@cihar.com> <mcihar@suse.cz>
 <michal@cihar.com> <nijel@debian.org>
-<jrs+git@weitnahbei.de> J. R. Schmid <sixtyfive@users.noreply.github.com>
+<jrs+git@weitnahbei.de> <sixtyfive@users.noreply.github.com>
 Morgan Hardwood <entertheyoni@gmail.com>
 Rezső Páder <rezso@rezso.net>
+Olaf Seibert <rhialto@falu.nl>
+<niko@nava.de> <nikoss@users.noreply.github.com>
index 9fb4ad4..9b0735f 100644 (file)
--- a/README.md
+++ b/README.md
@@ -100,17 +100,26 @@ Geeqie is a graphics file viewer. Basic features:
 
 ## Downloading
 
-Geeqie is available as a package with some distributions.
+Geeqie is available as a package with some distributions, however Geeqie is stable and you may compile the latest version from sources.
 
-However Geeqie is stable, and you may download the latest version (if you have installed git) from here:
+There are two scripts which will download and compile the sources for you.
+
+The first script will install Geeqie to a defined location, and will run under any system. However, it is left to you to make sure dependencies are fulfilled.
+To get the script, from the command line type:<br/><br/>
+`wget https://raw.githubusercontent.com/pixlsus/Scripts/master/build-geeqie`
+
+The second script will run only on Debian-based system, but will fulfil all dependencies and also give you the opportunity to include additional pixbuf loaders and other useful programs.
+To get the script, from the command line type:<br/><br/>
+`wget https://raw.githubusercontent.com/BestImageViewer/geeqie/master/web/geeqie-install-debian.sh`
+
+
+If you wish to compile the sources yourself you may download the latest version (if you have installed git) from here:
 
 Either: `git clone git://www.geeqie.org/geeqie.git`
 
 Or: `git clone http://www.geeqie.org/git/geeqie.git`
 
-For Ubuntu and other Debian-based systems, [this script](http://www.geeqie.org/web/geeqie-install-debian.sh) will download Geeqie sources, all dependencies, and compile and install Geeqie. You may also select which optional libraries to install.
-
-## Installation
+## Manual Installation
 
 List compile options: `./autogen.sh --help`
 
@@ -238,6 +247,19 @@ And either the ChangeLog file or [Geeqie ChangeLog](http://geeqie.org/cgi-bin/gi
         and copy to the location of the Geeqie ancilliary files, which is usually:
         /usr/local/lib/geeqie/
 
+    libimage-exiftool-perl
+        For the jpeg extraction plugin
+
+    liblcms2-utils
+        For the command-line tool jpgicc, used by the jpeg extraction plugin
+
+     ImageMagick
+     exiftran
+     gphoto2
+     ufraw
+     exiv2
+        Additional command-line tools for various operations
+
 ### Code hackers:
 
 If you plan on making any major changes to the code that will be offered for
index c1603ea..9a32605 100755 (executable)
@@ -6,7 +6,7 @@
 srcdir=`dirname $0`
 test -z "$srcdir" && srcdir=.
 
-(test -f $srcdir/configure.in \
+(test -f $srcdir/configure.ac\
   && test -f $srcdir/src/main.c \
   && test -f $srcdir/src/main.h) || {
     echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
@@ -24,8 +24,8 @@ DIE=0
   DIE=1
 }
 
-(grep "^AM_GLIB_GNU_GETTEXT" $srcdir/configure.in >/dev/null) && {
-  (grep "sed.*POTFILES" $srcdir/configure.in) >/dev/null || \
+(grep "^AM_GLIB_GNU_GETTEXT" $srcdir/configure.ac >/dev/null) && {
+  (grep "sed.*POTFILES" $srcdir/configure.ac) >/dev/null || \
   (glib-gettextize --version) < /dev/null > /dev/null 2>&1 || {
     echo
     echo "**Error**: You must have \`glib-gettextize' installed."
@@ -74,13 +74,13 @@ xlc )
   am_opt=--include-deps;;
 esac
 
-auxdir="`sed -ne 's/^[ \t]*A._CONFIG_AUX_DIR *( *\([^ )]*\).*/\1/p' $srcdir/configure.in`"
+auxdir="`sed -ne 's/^[ \t]*A._CONFIG_AUX_DIR *( *\([^ )]*\).*/\1/p' $srcdir/configure.ac`"
 if test -n "$auxdir"; then
   if test ! -d "$srcdir/$auxdir"; then
     mkdir -p "$srcdir/$auxdir"
   fi                                                                            fi
 
-for coin in `find $srcdir -name configure.in -print`
+for coin in `find $srcdir -name configure.ac -print`
 do 
   dr=`dirname $coin`
   if test -f $dr/NO-AUTO-GEN; then
@@ -97,9 +97,9 @@ do
        ##  echo "**Warning**: No such directory \`$k'.  Ignored."
         fi
       done
-      if grep "^AM_GLIB_GNU_GETTEXT" configure.in >/dev/null; then
-       if grep "sed.*POTFILES" configure.in >/dev/null; then
-         : do nothing -- we still have an old unmodified configure.in
+      if grep "^AM_GLIB_GNU_GETTEXT" configure.ac >/dev/null; then
+       if grep "sed.*POTFILES" configure.ac >/dev/null; then
+         : do nothing -- we still have an old unmodified configure.ac
        else
          echo "Creating $dr/aclocal.m4 ..."
          test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
@@ -117,7 +117,7 @@ do
       fi
       echo "Running aclocal $aclocalinclude ..."
       aclocal $aclocalinclude
-      if grep "^AC_CONFIG_HEADER" configure.in >/dev/null; then
+      if grep "^AC_CONFIG_HEADER" configure.ac >/dev/null; then
        echo "Running autoheader..."
        autoheader
       fi
similarity index 98%
rename from configure.in
rename to configure.ac
index 751e9fb..7e20158 100644 (file)
@@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script.  -*- Autoconf
  -*-
 
 dnl This file is a part of Geeqie project (http://www.geeqie.org/).
-dnl Copyright (C) 2008 - 2016 The Geeqie Team
+dnl Copyright (C) 2008 - 2018 The Geeqie Team
 dnl
 dnl This program is free software; you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@ dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 dnl GNU General Public License for more details.
 
 AC_PREREQ(2.57)
-AC_INIT([geeqie], m4_esyscmd_s(git rev-parse --quiet --verify --short HEAD), [geeqie-devel@lists.sourceforge.net], [], [http://www.geeqie.org/])
+AC_INIT([geeqie], m4_esyscmd_s(git rev-parse --quiet --verify --short HEAD), [geeqie@freelists.org], [], [http://www.geeqie.org/])
 
 # Add -Werror to the default CFLAGS
 CFLAGS+=" -Werror -Wno-error=deprecated-declarations -Wno-error=sign-compare -Wno-error=return-type"
@@ -619,6 +619,11 @@ AC_CONFIG_FILES([
     plugins/ufraw/Makefile
     plugins/import/Makefile
     plugins/geocode-parameters/Makefile
+    plugins/export-jpeg/Makefile
+    plugins/tethered-photography/Makefile
+    plugins/camera-import/Makefile
+    plugins/image-crop/Makefile
+    plugins/random-image/Makefile
     geeqie.spec
 ])
 
index c166c2d..ad04f20 100644 (file)
@@ -7,12 +7,20 @@
     <variablelist>\r
       <varlistentry>\r
         <term>\r
-          <guilabel>Confirm file delete</guilabel>\r
+          <guilabel>Confirm permanent file delete</guilabel>\r
         </term>\r
         <listitem>\r
           <para>Prompts for confirmation before deleting files.</para>\r
         </listitem>\r
       </varlistentry>\r
+      <varlistentry>\r
+        <term>\r
+          <guilabel>Confirm move file to Trash</guilabel>\r
+        </term>\r
+        <listitem>\r
+          <para>Prompts for confirmation before moving files to the trash bin.</para>\r
+        </listitem>\r
+      </varlistentry>\r
       <varlistentry>\r
         <term>\r
           <guilabel>\r
@@ -44,7 +52,7 @@
       </varlistentry>\r
       <varlistentry>\r
         <term>\r
-          <guilabel>Safe Delete</guilabel>\r
+          <guilabel>Use Geeqie trash location</guilabel>\r
         </term>\r
         <listitem>\r
           <para>Moves deleted files to a temporary folder, for easy retrieval of deleted files. Files in the temporary folder are retained until the maximum size is reached, at which point deleting additional files will result in the removal of the oldest files to reclaim the space needed for the new files.</para>\r
           </note>\r
         </listitem>\r
       </varlistentry>\r
+      <varlistentry>\r
+        <term>\r
+          <guilabel>Use system Trash bin</guilabel>\r
+        </term>\r
+        <listitem>\r
+          <para>Moves deleted files to the system-defined trash bin.</para>\r
+        </listitem>\r
+      </varlistentry>\r
       <varlistentry>\r
         <term>\r
           <guilabel>Folder</guilabel>\r
index 6977b43..5b03723 100644 (file)
       The list has the following columns:\r
     </para>\r
     <variablelist spacing="compact">\r
+      <varlistentry>\r
+        <term>\r
+          <guilabel>Disabled</guilabel>\r
+        </term>\r
+        <listitem>\r
+          <para>If the checkbox is ticked, the plugin will not be displayed in Geeqie menus.</para>\r
+        </listitem>\r
+      </varlistentry>\r
       <varlistentry>\r
         <term>\r
           <guilabel>Name</guilabel>\r
index 00a4159..ee8b6bb 100644 (file)
               </code>\r
             </entry>\r
             <entry />\r
-            <entry>Delete selected images.</entry>\r
+            <entry>Move selected images to trash bin.</entry>\r
+          </row>\r
+          <row>\r
+            <entry>\r
+              <code>\r
+                Shift + Delete\r
+              </code>\r
+            </entry>\r
+            <entry />\r
+            <entry>Permanently delete selected images.</entry>\r
           </row>\r
           <row>\r
             <entry>\r
index 12ae938..416e30d 100644 (file)
--- a/geeqie.1
+++ b/geeqie.1
@@ -156,22 +156,58 @@ Get list of sidecars of FILE.
 Get destination path of FILE.
 .br
 .B
+.IP file:<FILE>
+Open FILE, bring Geeqie window to the top.
+.br
+.B
 .IP \-\-file:<FILE>
 Open FILE, bring Geeqie window to the top.
 .br
 .B
+.IP File:<FILE>
+Open FILE, do not bring Geeqie window to the top.
+.br
+.B
 .IP \-\-File:<FILE>
 Open FILE, do not bring Geeqie window to the top.
 .br
 .B
 .IP \-\-tell
-Print filename of current image.
+Print filename [and Collection] of current image.
 .br
 .B
 .IP \-\-pixel\-info
 Print X, Y and RGB of mouse pointer on current image.
 .br
 .B
+.IP \-\-get\-rectangle
+Get rectangle co-ordinates.
+.br
+.B
+.IP \-\-get\-render\-intent
+Get render intent.
+.br
+.B
+.IP \-\-get\-filelist:[<FOLDER>]
+Get list of files and class.
+.br
+.B
+.IP \-\-get\-filelist-recurse:[<FOLDER>]
+Get list of file and class recursive.
+.br
+.B
+.IP \-\-get\-collection:<COLLECTION>
+Get collection content.
+.br
+.B
+.IP \-\-get\-collection\-list
+Get collection list.
+.br
+.B
+.IP view:<FILE>
+Open FILE in new window.
+.br
+.B
 .IP \-\-view:<FILE>
 Open FILE in new window.
 .br
@@ -188,6 +224,10 @@ Add FILE to command line collection list.
 Bring the Geeqie window to the top.
 .br
 .B
+.IP \-\-raise
+Bring the Geeqie window to the top.
+.br
+.B
 .IP \-\-id:<ID>
 Window ID for following commands.
 .br
index 9d1aaca..abfaef8 100644 (file)
@@ -1,7 +1,9 @@
-#FIXME enable or disable individual plugins from configure
 
-SUBDIRS = rotate symlink ufraw import geocode-parameters
+SUBDIRS = rotate symlink ufraw import geocode-parameters export-jpeg tethered-photography camera-import image-crop random-image
 qq_desktoptemplatedir = $(appdir)
-qq_desktoptemplate_DATA = template.desktop
+qq_desktoptemplate_in_files = template.desktop.in
+qq_desktoptemplate_DATA = $(qq_desktoptemplate_in_files:.desktop.in=.desktop)
+@INTLTOOL_DESKTOP_RULE@
 
-EXTRA_DIST = $(qq_desktoptemplate_DATA)
+EXTRA_DIST = $(qq_desktoptemplate_in_files)
+CLEANFILES = $(qq_desktoptemplate_DATA)
diff --git a/plugins/camera-import/Makefile.am b/plugins/camera-import/Makefile.am
new file mode 100644 (file)
index 0000000..58b91b8
--- /dev/null
@@ -0,0 +1,9 @@
+dist_gq_bin_SCRIPTS = geeqie-camera-import geeqie-camera-import-hook-script
+
+gq_desktopdir = $(appdir)/applications
+gq_desktop_in_files = camera-import.desktop.in
+gq_desktop_DATA = $(gq_desktop_in_files:.desktop.in=.desktop)
+@INTLTOOL_DESKTOP_RULE@
+
+EXTRA_DIST = $(gq_desktop_in_files)
+CLEANFILES = $(gq_desktop_DATA)
diff --git a/plugins/camera-import/camera-import.desktop.in b/plugins/camera-import/camera-import.desktop.in
new file mode 100644 (file)
index 0000000..fff8ede
--- /dev/null
@@ -0,0 +1,19 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+_Name=Camera import
+
+# Requires gphoto2
+# The gphoto2 file $HOME/.gphoto2/settings can
+# be used to set auto-rename on download
+
+Exec=geeqie-camera-import
+
+# Desktop files that are usable only in Geeqie should be marked like this:
+Categories=X-Geeqie;
+OnlyShowIn=X-Geeqie;
+
+# It can be made verbose
+#X-Geeqie-Verbose=true
+
+Icon=geeqie
diff --git a/plugins/camera-import/geeqie-camera-import b/plugins/camera-import/geeqie-camera-import
new file mode 100755 (executable)
index 0000000..40cca5f
--- /dev/null
@@ -0,0 +1,159 @@
+#!/bin/bash
+
+# Import all images from camera
+# Requires gphoto2
+
+function finish 
+{
+       if [ -f /tmp/geeqie-camera-import-files ]
+       then
+               rm /tmp/geeqie-camera-import-files
+       fi
+
+       if [ -p $zen_pipe ]
+       then
+               rm $zen_pipe
+       fi
+
+       if [ "$gphoto2_pid" != "" ]
+       then
+               ps -p $gphoto2_pid > /dev/null
+               if [ $? -eq 0 ]
+               then
+                       kill $gphoto2_pid
+               fi
+       fi
+
+       if [ "$zen_pid" != "" ]
+       then
+               ps -p $zen_pid > /dev/null
+               if [ $? -eq 0 ]
+               then
+                       kill $zen_pid
+               fi
+       fi
+}
+trap finish EXIT
+
+if ! [ -x "$(command -v gphoto2)" ]
+then
+       zenity --title="Geeqie camera import" --info --width=200 --text="gphoto2 is not installed" 2>/dev/null
+       exit 0
+fi
+
+if [ -f /tmp/geeqie-camera-import.log ]
+then
+       rm /tmp/geeqie-camera-import.log
+fi
+
+if [ $(gphoto2 --auto-detect | wc -l) -le 2 ]
+then
+       zenity --error --title="Geeqie camera import" --text="No camera detected" --window-icon=/usr/local/share/pixmaps/geeqie.png --width=250 2>/dev/null
+       exit 0
+fi
+
+list=$(gphoto2 --auto-detect | tail +3)
+readarray -t split_list <<<"$list"
+
+camera_list=""
+n=1
+count=$(gphoto2 --auto-detect | tail +3 | wc -l)
+if [[ $count -gt 1 ]]
+then
+       for camera in "${split_list[@]}"
+       do
+               if [[ $n -eq $count ]]
+               then
+                       camera_list="$camera_list"$'TRUE\n'"$camera"$'\n'"$n"
+               else
+                       camera_list="$camera_list"$'FALSE\n'"$camera"$'\n'"$n"$'\n'
+               fi
+               n=$((n+1))
+       done
+
+       camera_selected=$(echo "$camera_list" | zenity  --width=500 --height=250 --title="Geeqie camera import" --list  --text "Select camera" --radiolist  --column "Select" --column "Camera" --column "n" --hide-column=3 --print-column=2 2>/dev/null) 
+
+       if [[ $? == 1 ]]
+       then
+               exit 0
+       fi
+else
+       camera_selected=$(gphoto2 --auto-detect | tail +3)
+fi
+
+port_type=$(echo $camera_selected |awk -F ':' '{print $1}' | awk '{print $NF}')
+camera=$(echo $camera_selected | awk -F $port_type '{print $1}')
+port_address=$(echo $camera_selected | awk -F ':' '{print $2}')
+port="$port_type:$port_address"
+
+script_dir=$(dirname "$0")
+
+zenity --question --title="Geeqie camera import" --text="Camera: $camera\n\nDownloading to folder:\n<b>$PWD</b>" --ok-label="OK" --cancel-label="Cancel" --window-icon=/usr/local/share/pixmaps/geeqie.png --width=350 2>/dev/null
+
+if [[ $? == 1 ]]
+then
+       exit 0
+fi
+
+src_files_sorted=$(mktemp --tmpdir geeqie_camera_import_camera_files_sorted_XXXXXX)
+dest_files_sorted=$(mktemp --tmpdir geeqie_camera_import_computer_files_sorted_XXXXXX)
+
+(
+gphoto2 --port "$port" --list-files  2>/tmp/geeqie-camera-import.log | awk '/#/ {print $2}' | sort > $src_files_sorted
+) | zenity --progress --auto-close --auto-kill --title="Geeqie camera import" --text="Searching for files to download..."  --pulsate --window-icon=/usr/local/share/pixmaps/geeqie.png --width=250 
+
+error=$(grep -i error /tmp/geeqie-camera-import.log)
+
+if [ ! -z "$error" ]
+then
+       cat /tmp/geeqie-camera-import.log | zenity --text-info --title="Geeqie camera import" - --window-icon=error --width=250 2>/dev/null
+       exit 1
+fi
+
+ls -1 | sort > $dest_files_sorted
+existing_file_count=$(comm -12 $src_files_sorted $dest_files_sorted | wc -l)
+
+total=$(cat $src_files_sorted | wc -l)
+files_to_load=$(( $total - $existing_file_count ))
+
+rm $src_files_sorted
+rm $dest_files_sorted
+
+if [ "$files_to_load" -eq 0 ]
+then
+       zenity --info --title="Geeqie camera download" --text="No photos to download" --width=250 --window-icon=usr/local/share/pixmaps/geeqie.png 2>/dev/null
+       exit 0
+fi
+
+if [ -f /tmp/geeqie-camera-import-files ]
+then
+       rm /tmp/geeqie-camera-import-files
+fi
+touch /tmp/geeqie-camera-import-files
+
+zen_pipe=$(mktemp --dry-run --tmpdir geeqie_camera_import_pipe_XXXXXX)
+mkfifo $zen_pipe
+
+gphoto2 --port "$port" --hook-script "$script_dir/"geeqie-camera-import-hook-script --get-all-files --skip-existing 2>/tmp/geeqie-camera-import.log &
+
+gphoto2_pid=$!
+
+(tail -f $zen_pipe 2>/dev/null) | zenity --progress --title="Geeqie camera import" --width=370 --text="Downloading: total: $files_to_load existing: $existing_file_count\n" --auto-close --auto-kill --percentage=0 window-icon=/usr/local/share/pixmaps/geeqie.png 2>/dev/null &
+zen_pid=$!
+
+n=0
+while [ -f /tmp/geeqie-camera-import-files ] &&  [ "$n" -lt 100 ]
+do
+       i=$(cat "/tmp/geeqie-camera-import-files" | wc -l)
+       n=$(( $((i * 100)) / $files_to_load))
+       echo "$n" >$zen_pipe
+
+       latest_file=$(tail -n 1 /tmp/geeqie-camera-import-files)
+       if [ -z "$latest_file" ]
+       then
+               latest_file="Skipping existing files, if any..."
+       fi
+       echo "#Downloading: total: $files_to_load existing: $existing_file_count\n$latest_file" >$zen_pipe
+
+       sleep 1
+done
diff --git a/plugins/camera-import/geeqie-camera-import-hook-script b/plugins/camera-import/geeqie-camera-import-hook-script
new file mode 100755 (executable)
index 0000000..46464ee
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# Camera import
+
+if [ "$ACTION" == "download" ]
+then
+       echo "$ARGUMENT" >> /tmp/geeqie-camera-import-files
+
+elif [ "$ACTION" == "stop" ]
+then
+       zenity --info --title="Geeqie camera download" --text="Import ended" --width=200 --timeout=5 --window-icon=usr/local/share/pixmaps/geeqie.png 2>/dev/null 
+       if [ -f /tmp/geeqie-camera-import-files ]
+       then
+               rm /tmp/geeqie-camera-import-files
+       fi
+fi
+
+exit 0
diff --git a/plugins/export-jpeg/Makefile.am b/plugins/export-jpeg/Makefile.am
new file mode 100644 (file)
index 0000000..b2a7da3
--- /dev/null
@@ -0,0 +1,9 @@
+dist_gq_bin_SCRIPTS = geeqie-export-jpeg
+
+gq_desktopdir = $(appdir)/applications
+gq_desktop_in_files = export-jpeg.desktop.in
+gq_desktop_DATA = $(gq_desktop_in_files:.desktop.in=.desktop)
+@INTLTOOL_DESKTOP_RULE@
+
+EXTRA_DIST = $(gq_desktop_in_files)
+CLEANFILES = $(gq_desktop_DATA)
diff --git a/plugins/export-jpeg/export-jpeg.desktop.in b/plugins/export-jpeg/export-jpeg.desktop.in
new file mode 100644 (file)
index 0000000..3cfdb73
--- /dev/null
@@ -0,0 +1,19 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+_Name=Export jpeg
+
+Exec=geeqie-export-jpeg %f
+
+# show only if these are installed
+#TryExec=exiv2
+#TryExec=jpgicc
+
+# Desktop files that are usable only in Geeqie should be marked like this:
+Categories=X-Geeqie;
+OnlyShowIn=X-Geeqie;
+
+# It can be made verbose
+#X-Geeqie-Verbose=true
+
+Icon=geeqie
diff --git a/plugins/export-jpeg/geeqie-export-jpeg b/plugins/export-jpeg/geeqie-export-jpeg
new file mode 100755 (executable)
index 0000000..3b8baf6
--- /dev/null
@@ -0,0 +1,80 @@
+#!/bin/bash
+
+# Extract emdedded jpegs from a raw file:
+#
+# Display a list of the embedded files
+# Extract the selected image to a tmp folder
+# If jpgicc is installed, correct for currently selected rendering intent
+#  and store in a new file
+# Set Geeqie focus to the newly generated image
+
+count=$(exiv2 -pp "$1" | wc -l)
+
+if [[ $count -eq 0 ]]
+then
+       zenity --info --width=300 --height=100 --text="Export jpeg from raw file\n\nFile contains no embedded images" --title="Geeqie export jpeg" 2>/dev/null
+       exit
+fi
+
+if ! [ -x "$(command -v exiv2)" ]
+then
+       zenity --info --width=300 --height=100 --text="Export jpeg from raw file\n\nexiv2 is not installed" --title="Geeqie export jpeg" 2>/dev/null
+       exit 1
+fi
+
+if ! [ -x "$(command -v jpgicc)" ]
+then
+       zenity --info --width=300 --height=100 --text="Export jpeg from raw file\n\njpgicc is not installed\ncolor corrections will not be made\nYou may install via liblcms2-utils" --title="Geeqie export jpeg" 2>/dev/null
+fi
+
+list=$(exiv2 -pp "$1")
+readarray -t split_list <<<"$list"
+
+image_list=""
+n=1
+
+for image in "${split_list[@]}"
+do
+       if [[ $n -eq $count ]]
+       then
+               image_list="$image_list"$'TRUE\n'"$image"$'\n'"$n"
+       else
+               image_list="$image_list"$'FALSE\n'"$image"$'\n'"$n"$'\n'
+       fi
+       n=$((n+1))
+done
+
+image_selected=$(echo "$image_list" | zenity  --width=500 --height=250 --title="Geeqie export jpeg" --list  --text "Select embedded image" --radiolist  --column "Select" --column "Image" --column "n" --hide-column=3 --print-column=3 2>/dev/null) 
+
+if [[ ! -z "$image_selected" ]]
+then
+       tmpdir=$(mktemp --tmpdir --directory geeqie_export_jpeg_XXXXXX)
+
+       exiv2 -ep"$image_selected" "$1" --location "$tmpdir"
+
+       render_str=$(geeqie --remote --get-render-intent)
+
+       case $render_str in
+               "Perceptual" )
+               render_key=0;;
+               "Relative Colorimetric" )
+               render_key=1;;
+               "Saturation" )
+               render_key=2;;
+               "Absolute Colorimetric" )
+               render_key=3;;
+       esac
+
+       filename=$(basename "$tmpdir/"* ".jpg")
+       if [ -x "$(command -v jpgicc)" ]
+       then
+               filename_ri="$tmpdir/""$filename""-ri.jpg"
+               jpgicc -t $render_key "$tmpdir/""$filename"".jpg"  "$filename_ri"
+
+               rm "$tmpdir/""$filename"".jpg"
+
+               geeqie --remote view:"$filename_ri"
+       else
+               geeqie --remote view:"$tmpdir/""$filename"".jpg"
+       fi
+fi
diff --git a/plugins/image-crop/Makefile.am b/plugins/image-crop/Makefile.am
new file mode 100644 (file)
index 0000000..809260c
--- /dev/null
@@ -0,0 +1,9 @@
+dist_gq_bin_SCRIPTS = geeqie-image-crop
+
+gq_desktopdir = $(appdir)/applications
+gq_desktop_in_files = image-crop.desktop.in
+gq_desktop_DATA = $(gq_desktop_in_files:.desktop.in=.desktop)
+@INTLTOOL_DESKTOP_RULE@
+
+EXTRA_DIST = $(gq_desktop_in_files)
+CLEANFILES = $(gq_desktop_DATA)
diff --git a/plugins/image-crop/geeqie-image-crop b/plugins/image-crop/geeqie-image-crop
new file mode 100644 (file)
index 0000000..09482ee
--- /dev/null
@@ -0,0 +1,109 @@
+#!/bin/bash
+
+# Crop image
+#
+# Requires ImageMagick and exiftool
+
+
+process_raw ()
+{
+       tmpdir=$(mktemp --tmpdir --directory geeqie_crop_image_XXXXXX)
+
+       list=$(exiv2 -pp "$1")
+       if [[ ! -z "$list" ]]
+       then
+               readarray -t split_list <<<"$list"
+
+               array_length="${#split_list[@]}" 
+               exiv2 -ep"$array_length" "$1" --location "$tmpdir"
+
+               src_filename=$(ls "$tmpdir/")
+               filename="${src_filename%.*}"
+               extension="${src_filename##*.}"
+               rotation=$(exiftool -Orientation -n "$1" | cut -d':' -f2 | xargs)
+               convert "$tmpdir/$src_filename" -crop "$2" "$tmpdir/$filename-crop.$extension"
+
+               exiftool -Orientation=$rotation -n "$tmpdir/$filename-crop.$extension"
+
+               rm "$tmpdir/$src_filename"
+
+               geeqie --remote view:"$tmpdir/$filename-crop.$extension"
+               res=0
+       else
+               res=1
+       fi
+
+       return $res
+}
+
+process_plain ()
+{
+       tmpdir=$(mktemp --tmpdir --directory geeqie_crop_image_XXXXXX)
+
+       src_filename=$(basename -- "$1")
+       filename="${src_filename%.*}"
+       extension="${src_filename##*.}"
+       convert "$1" -crop "$2" "$tmpdir/$filename-crop.$extension"
+       if [ $? = 1 ]
+       then
+               zenity --error --title="$title" --text="Cannot process this file format" --width="$width" --window-icon="$window_icon"
+       else
+               geeqie --remote view:"$tmpdir/$filename-crop.$extension"
+       fi
+}
+
+export window_icon="/usr/local/share/pixmaps/geeqie.png"
+export title="Geeqie crop image"
+export width="250"
+
+if [ -x "$(command -v convert)" ]
+then
+       if [ -x "$(command -v exiftool)" ]
+       then
+
+               coords=$(geeqie --remote --get-rectangle)
+
+               if [ -z "$coords" ]
+               then
+                       zenity --error --title="$title" --text="Rectangle coordinates have not been set" --width="$width" --window-icon="$window_icon" 2>/dev/null
+                       exit 0
+               fi
+
+               filename=$(basename -- "$1")
+               extension="${filename##*.}"
+
+               if [ "${extension,,}" = "jpeg" ]
+               then
+                       source_file="$1"
+                       process_plain "$1" $coords
+               elif [ "${extension,,}" = "jpg" ]
+               then
+                       source_file="$1"
+                       process_plain "$1" $coords
+               elif [ "${extension,,}" = "png" ]
+               then
+                       source_file="$1"
+                       process_plain "$1" $coords
+               elif [ "${extension,,}" = "tif" ]
+               then
+                       source_file="$1"
+                       process_plain "$1" $coords
+               elif [ "${extension,,}" = "tiff" ]
+               then
+                       source_file="$1"
+                       process_plain "$1" $coords
+               else
+                       process_raw "$1" $coords
+                       if [ $? = 1 ]
+                       then
+                               process_plain "$1" $coords
+                       fi
+               fi
+       else
+               zenity --info --title="$title" --width="$width" --height=100 --text="Crop image\n\nexiftool is not installed" --title="$title" --window-icon="$window_icon" 2>/dev/null
+               exit 0
+       fi
+else
+       zenity --info --title="$title" --width="$width" --height=100 --text="Crop image\n\nImageMagick is not installed" --title="$title" --window-icon="$window_icon" 2>/dev/null
+       exit 0
+fi
diff --git a/plugins/image-crop/image-crop.desktop b/plugins/image-crop/image-crop.desktop
new file mode 100644 (file)
index 0000000..7501e92
--- /dev/null
@@ -0,0 +1,17 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Name=Image crop
+
+# Requires ImageMagick and exiftools
+
+Exec=geeqie-image-crop %f
+
+# Desktop files that are usable only in Geeqie should be marked like this:
+Categories=X-Geeqie;
+OnlyShowIn=X-Geeqie;
+
+# It can be made verbose
+#X-Geeqie-Verbose=true
+
+Icon=geeqie
diff --git a/plugins/image-crop/image-crop.desktop.in b/plugins/image-crop/image-crop.desktop.in
new file mode 100644 (file)
index 0000000..82d3ce9
--- /dev/null
@@ -0,0 +1,17 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+_Name=Image crop
+
+# Requires ImageMagick and exiftools
+
+Exec=geeqie-image-crop %f
+
+# Desktop files that are usable only in Geeqie should be marked like this:
+Categories=X-Geeqie;
+OnlyShowIn=X-Geeqie;
+
+# It can be made verbose
+#X-Geeqie-Verbose=true
+
+Icon=geeqie
diff --git a/plugins/random-image/Makefile.am b/plugins/random-image/Makefile.am
new file mode 100644 (file)
index 0000000..423ae9b
--- /dev/null
@@ -0,0 +1,9 @@
+dist_gq_bin_SCRIPTS = geeqie-random-image
+
+gq_desktopdir = $(appdir)/applications
+gq_desktop_in_files = random-image.desktop.in
+gq_desktop_DATA = $(gq_desktop_in_files:.desktop.in=.desktop)
+@INTLTOOL_DESKTOP_RULE@
+
+EXTRA_DIST = $(gq_desktop_in_files)
+CLEANFILES = $(gq_desktop_DATA)
diff --git a/plugins/random-image/geeqie-random-image b/plugins/random-image/geeqie-random-image
new file mode 100755 (executable)
index 0000000..66e3c72
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+# Select and display a random image from a list of all images
+# in Collections and the currently displayed folder
+
+# get list of images in all collections
+collection_list=$(geeqie --remote --get-collection-list)
+OLDIFS=$IFS
+while IFS= read -r line
+do
+       collection=$(geeqie --remote --get-collection:"$line")
+       list="$list""$collection"$'\n'
+done <<< "$collection_list"
+IFS=$OLDIFS
+
+# get list of images in current folder
+file_list=$(geeqie --remote --get-filelist:)
+OLDIFS=$IFS
+while IFS= read -r line
+do
+       class_whitespace="${line##*Class:}"
+       class="${class_whitespace#"${class_whitespace%%[![:space:]]*}"}"
+
+       if [ "$class" == "Image" ]
+       then
+               list="$list""${line%%Class*}"$'\n'
+       fi
+
+       if [ "$class" == "RAW Image" ]
+       then
+               list="$list""${line%%Class*}"$'\n'
+       fi
+done <<< "$file_list"
+IFS=$OLDIFS
+
+# remove blank lines
+files_no_blanks=$(echo "$list" | sed -e 's/^[[:blank:]]*$//')
+# remove leading trailing whitespace
+files_no_spaces=$(echo "$files_no_blanks" | sed 's/^[ \t]*//;s/[ \t]*$//')
+
+# remove duplicate lines and select random line
+display_image="$(echo "$files_no_spaces" | sort --uniq | shuf -n 1)"
+
+# get image currently displayed
+current_image_collection=$(geeqie --remote --tell)
+# remove collection name, if it is there
+current_image_spaces="${current_image_collection%%Collection:*}"
+# remove leading trailing whitespace
+curent_image=$(echo "$current_image_spaces" | sed 's/^[ \t]*//;s/[ \t]*$//')
+
+# if the selected random image is currently displayed, try again
+if [ "$current_image" == "$display_image" ]
+then
+       display_image="$(echo "$files_no_spaces" | sort --uniq | shuf -n 1)"
+fi
+
+geeqie --remote file:"$display_image"
diff --git a/plugins/random-image/random-image.desktop.in b/plugins/random-image/random-image.desktop.in
new file mode 100644 (file)
index 0000000..a9c733a
--- /dev/null
@@ -0,0 +1,15 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+_Name=Random image
+
+Exec=geeqie-random-image
+
+# Desktop files that are usable only in Geeqie should be marked like this:
+Categories=X-Geeqie;
+OnlyShowIn=X-Geeqie;
+
+# It can be made verbose
+#X-Geeqie-Verbose=true
+
+Icon=geeqie
diff --git a/plugins/template.desktop.in b/plugins/template.desktop.in
new file mode 100644 (file)
index 0000000..d43690c
--- /dev/null
@@ -0,0 +1,94 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+
+# The name which appears in the menu:
+_Name=Template
+#Name[cs]=
+#Name[fr]=
+#Name[de]=Vorlage
+
+# Replace "command" with the actual command or script:
+Exec=command %f
+
+# %f    A single file name, even if multiple files are selected. The
+#        system reading the desktop entry should recognize that the program in
+#        question cannot handle multiple file arguments, and it should should
+#        probably spawn and execute multiple copies of a program for each
+#        selected file if the program is not able to handle additional file
+#        arguments. If files are not on the local file system (i.e. are on HTTP
+#        or FTP locations), the files will be copied to the local file system
+#        and %f will be expanded to point at the temporary file. Used for
+#        programs that do not understand the URL syntax.
+#
+# %F   A list of files. Use for apps that can open several local files
+#       at once. Each file is passed as a separate argument to the executable
+#       program.
+#
+# %u   A single URL. Local files may either be passed as file: URLs or
+#       as file path.
+#
+# %U   A list of URLs. Each URL is passed as a separate argument to
+#       the executable program. Local files may either be passed as file: URLs
+#       or as file path.
+
+# Change the following line to point to an icon of your choosing
+Icon=gtk-file
+
+# Use the following to only show this menu entry if the command is installed
+#TryExec=command
+
+# Desktop files that are usable only in Geeqie should be marked like this:
+Categories=X-Geeqie;
+OnlyShowIn=X-Geeqie;
+
+# Uncomment the following line to include in a Geeqie menu,
+# other than in the default path of EditMenu/ExternalMenu
+#X-Geeqie-Menu-Path=<FileMenuPath>
+
+# e.g.
+#X-Geeqie-Menu-Path=SelectMenu/SelectSection
+
+# Valid sections are:
+#    FileMenu
+#    FileMenu/OpenSection
+#    FileMenu/SearchSection
+#    FileMenu/PrintSection
+#    FileMenu/FileOpsSection
+#    FileMenu/QuitSection
+#    GoMenu
+#    SelectMenu
+#    SelectMenu/SelectSection
+#    SelectMenu/ClipboardSection
+#    SelectMenu/MarksSection
+#    EditMenu
+#    EditMenu/EditSection
+#    EditMenu/OrientationMenu
+#    EditMenu/RatingMenu
+#    EditMenu/PropertiesSection
+#    EditMenu/PreferencesSection
+#    PluginsMenu
+#    ViewMenu
+#    ViewMenu/WindowSection
+#    ViewMenu/FileDirMenu
+#    ViewMenu/FileDirMenu/FolderSection
+#    ViewMenu/FileDirMenu/ListSection
+#    ViewMenu/DirSection
+#    ViewMenu/ZoomMenu
+#    ViewMenu/ZoomMenu/ConnectZoomMenu
+#    ViewMenu/SplitMenu
+#    ViewMenu/StereoMenu
+#    ViewMenu/ColorMenu
+#    ViewMenu/OverlayMenu
+#    ViewMenu/ViewSection
+#    ViewMenu/ToolsSection
+#    ViewMenu/SlideShowSection
+#    HelpMenu
+#    HelpMenu/HelpSection
+
+# This is a filter - see symlink.desktop and geeqie-symlink for an example
+# how to use this feature
+#X-Geeqie-Filter=true
+
+# It can be made verbose
+#X-Geeqie-Verbose=true
diff --git a/plugins/tethered-photography/Makefile.am b/plugins/tethered-photography/Makefile.am
new file mode 100644 (file)
index 0000000..841b467
--- /dev/null
@@ -0,0 +1,9 @@
+dist_gq_bin_SCRIPTS = geeqie-tethered-photography geeqie-tethered-photography-hook-script
+
+gq_desktopdir = $(appdir)/applications
+gq_desktop_in_files = tethered-photography.desktop.in
+gq_desktop_DATA = $(gq_desktop_in_files:.desktop.in=.desktop)
+@INTLTOOL_DESKTOP_RULE@
+
+EXTRA_DIST = $(gq_desktop_in_files)
+CLEANFILES = $(gq_desktop_DATA)
diff --git a/plugins/tethered-photography/geeqie-tethered-photography b/plugins/tethered-photography/geeqie-tethered-photography
new file mode 100755 (executable)
index 0000000..b762aed
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+# Tethered photography
+# Requires gphoto2
+#
+# If a file already exists with the same name, it is not overwritten, but the
+# download will not take place.
+# Auto-rename can be achieved with the --filename option of gphoto2.
+# In file $HOME/.config/gphoto2/settings, set the option:
+# gphoto2=filename=<see the manual>
+
+n=$(ps -e | grep "geeqie-tethered" | wc -l)
+if [ "$n" -ge 3 ]
+then
+       exit 0
+fi
+
+if ! [ -x "$(command -v gphoto2)" ]
+then
+       zenity --title="Geeqie tethered photography" --info --width=200 --text="gphoto2 is not installed" 2>/dev/null
+       exit 0
+fi
+
+if [ $(gphoto2 --auto-detect | wc -l) -le 2 ]
+then
+       zenity --error --title="Geeqie tethered photography" --text="No camera detected" --window-icon=/usr/local/share/pixmaps/geeqie.png --width=250 2>/dev/null
+       exit 0
+fi
+
+notify-send --expire-time=2000 "$(gphoto2 --auto-detect | sed -n '3p')" --icon=geeqie
+
+script_dir=$(dirname "$0")
+
+tmpfile=$(mktemp --tmpdir geeqie_tethered_photography_XXXXXX)
+
+yes n | gphoto2 --hook-script "$script_dir/"geeqie-tethered-photography-hook-script --capture-tethered >$tmpfile &
+
+gphoto2_pid=$!
+
+zenity --question --title="Geeqie tethered photography" --ok-label="Stop" --cancel-label="Show log data" --text="Tethered photography is running.\n\n\nDownloading to folder:\n""$PWD\n\n\nExisting files will not be overwritten,\nbut the download will not take place.\n\n(Use gphoto2 --filename default option\nfor auto-rename on download)" --width=300 --window-icon=/usr/local/share/pixmaps/geeqie.png 2>/dev/null
+
+if [ $? == 1 ]
+then
+       zenity --text-info --title="Geeqie tethered photography" --window-icon=/usr/local/share/pixmaps/geeqie.png --ok-label="Stop" --cancel-label="Abort" <$tmpfile 2>/dev/null
+fi
+
+kill $gphoto2_pid
+rm $tmpfile
diff --git a/plugins/tethered-photography/geeqie-tethered-photography-hook-script b/plugins/tethered-photography/geeqie-tethered-photography-hook-script
new file mode 100755 (executable)
index 0000000..8df15b9
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+# Tethered photography
+
+if [ "$ACTION" == "download" ]
+then
+       notify-send --expire-time=4000 "$ARGUMENT"  --icon=geeqie
+       geeqie --remote File:"$PWD/$ARGUMENT"
+fi
+
+exit 0
diff --git a/plugins/tethered-photography/tethered-photography.desktop.in b/plugins/tethered-photography/tethered-photography.desktop.in
new file mode 100644 (file)
index 0000000..5ffdb35
--- /dev/null
@@ -0,0 +1,15 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+_Name=Tethered photography
+
+Exec=geeqie-tethered-photography
+
+# Desktop files that are usable only in Geeqie should be marked like this:
+Categories=X-Geeqie;
+OnlyShowIn=X-Geeqie;
+
+# It can be made verbose
+#X-Geeqie-Verbose=true
+
+Icon=geeqie
index ae791e6..4b0f4e3 100644 (file)
@@ -1,8 +1,14 @@
 geeqie.desktop.in
 plugins/import/geeqie-import-geeqie.desktop.in
 plugins/import/geeqie-import-gqview.desktop.in
+plugins/export-jpeg/export-jpeg.desktop.in
+plugins/tethered-photography/tethered-photography.desktop.in
+plugins/camera-import/camera-import.desktop.in
+plugins/image-crop/image-crop.desktop.in
+plugins/random-image/random-image.desktop.in
 plugins/rotate/rotate.desktop.in
 plugins/symlink/symlink.desktop.in
+plugins/template.desktop.in
 plugins/ufraw/geeqie-ufraw.desktop.in
 plugins/ufraw/geeqie-ufraw-id.desktop.in
 plugins/ufraw/geeqie-ufraw-recursive.desktop.in
@@ -45,9 +51,12 @@ src/histogram.c
 src/history_list.c
 src/image.c
 src/image-load.c
+src/image_load_collection.c
+src/image_load_dds.c
 src/image_load_ffmpegthumbnailer.c
 src/image_load_gdk.c
 src/image_load_jpeg.c
+src/image_load_pdf.c
 src/image_load_tiff.c
 src/image-overlay.c
 src/img-view.c
@@ -66,6 +75,7 @@ src/menu.c
 src/metadata.c
 src/misc.c
 src/options.c
+src/osd.c
 src/pan-view/pan-calendar.c
 src/pan-view/pan-folder.c
 src/pan-view/pan-grid.c
@@ -111,3 +121,4 @@ src/view_file/view_file.c
 src/view_file/view_file_icon.c
 src/view_file/view_file_list.c
 src/window.c
+src/zonedetect.c
index 662b4a1..0a4640f 100644 (file)
@@ -7,15 +7,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: geeqie-1.3\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-06-24 10:14+0100\n"
-"PO-Revision-Date: 2018-07-14 14:54+0100\n"
+"POT-Creation-Date: 2018-11-03 15:19+0000\n"
+"PO-Revision-Date: 2018-11-03 16:09+0000\n"
 "Last-Translator: Colin Clark <colin.clark@cclark.uk>\n"
-"Language-Team: British English <>\n"
+"Language-Team: English <>\n"
 "Language: en_GB\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 "X-Generator: Gtranslator 2.91.7\n"
 
 #: ../geeqie.desktop.in.h:1
@@ -38,6 +38,22 @@ msgstr ""
 msgid "Import GQView metadata"
 msgstr ""
 
+#: ../plugins/export-jpeg/export-jpeg.desktop.in.h:1
+msgid "Export jpeg"
+msgstr ""
+
+#: ../plugins/tethered-photography/tethered-photography.desktop.in.h:1
+msgid "Tethered photography"
+msgstr ""
+
+#: ../plugins/camera-import/camera-import.desktop.in.h:1
+msgid "Camera import"
+msgstr ""
+
+#: ../plugins/image-crop/image-crop.desktop.in.h:1
+msgid "Image crop"
+msgstr ""
+
 #: ../plugins/rotate/rotate.desktop.in.h:1
 msgid "Apply the orientation to image content"
 msgstr ""
@@ -58,13 +74,13 @@ msgstr ""
 msgid "UFRaw Batch recursive"
 msgstr ""
 
-#: ../src/advanced_exif.c:384 ../src/cache_maint.c:1265
-#: ../src/preferences.c:111 ../src/preferences.c:2304 ../src/search.c:2103
-#: ../src/search.c:3242
+#: ../src/advanced_exif.c:384 ../src/cache_maint.c:1266
+#: ../src/preferences.c:118 ../src/preferences.c:2512 ../src/search.c:2193
+#: ../src/search.c:3366
 msgid "Metadata"
 msgstr ""
 
-#: ../src/advanced_exif.c:432 ../src/preferences.c:2218
+#: ../src/advanced_exif.c:432 ../src/preferences.c:2426
 msgid "Description"
 msgstr ""
 
@@ -72,9 +88,10 @@ msgstr ""
 msgid "Value"
 msgstr ""
 
-#: ../src/advanced_exif.c:434 ../src/desktop_file.c:535 ../src/dupe.c:2765
-#: ../src/dupe.c:3306 ../src/print.c:3209 ../src/search.c:3325
-#: ../src/utilops.c:505 ../src/view_file/view_file_list.c:2059
+#: ../src/advanced_exif.c:434 ../src/desktop_file.c:629 ../src/dupe.c:2784
+#: ../src/dupe.c:3326 ../src/preferences.c:2062 ../src/print.c:414
+#: ../src/search.c:3449 ../src/utilops.c:505
+#: ../src/view_file/view_file_list.c:2070
 msgid "Name"
 msgstr ""
 
@@ -91,68 +108,72 @@ msgid "Elements"
 msgstr ""
 
 #. default sidebar
-#: ../src/bar.c:186
+#: ../src/bar.c:199
 msgid "Histogram"
 msgstr ""
 
-#: ../src/bar.c:187
+#: ../src/bar.c:200
 msgid "Title"
 msgstr ""
 
-#: ../src/bar.c:188 ../src/search.c:3163
+#: ../src/bar.c:201 ../src/preferences.c:2897 ../src/search.c:3286
 msgid "Keywords"
 msgstr ""
 
-#: ../src/bar.c:189 ../src/search.c:3175
+#: ../src/bar.c:202 ../src/search.c:3298
 msgid "Comment"
 msgstr ""
 
-#: ../src/bar.c:190
+#: ../src/bar.c:203
 msgid "Rating"
 msgstr ""
 
-#: ../src/bar.c:191
+#: ../src/bar.c:204
+msgid "Headline"
+msgstr ""
+
+#: ../src/bar.c:205
 msgid "Exif"
 msgstr ""
 
 #. other pre-configured panes
-#: ../src/bar.c:193
+#: ../src/bar.c:207
 msgid "File info"
 msgstr ""
 
-#: ../src/bar.c:194
+#: ../src/bar.c:208
 msgid "Location and GPS"
 msgstr ""
 
-#: ../src/bar.c:195 ../src/exif.c:342
+#: ../src/bar.c:209 ../src/exif.c:342
 msgid "Copyright"
 msgstr ""
 
-#: ../src/bar.c:198 ../src/bar_gps.c:1010
+#: ../src/bar.c:212 ../src/bar_gps.c:1010
 msgid "GPS Map"
 msgstr ""
 
-#: ../src/bar.c:318 ../src/toolbar.c:191
+#: ../src/bar.c:332 ../src/toolbar.c:210
 msgid "Move to _top"
 msgstr ""
 
-#: ../src/bar.c:319 ../src/toolbar.c:192 ../src/ui_bookmark.c:416
+#: ../src/bar.c:333 ../src/toolbar.c:211 ../src/ui_bookmark.c:416
 msgid "Move _up"
 msgstr ""
 
-#: ../src/bar.c:320 ../src/toolbar.c:193 ../src/ui_bookmark.c:418
+#: ../src/bar.c:334 ../src/toolbar.c:212 ../src/ui_bookmark.c:418
 msgid "Move _down"
 msgstr ""
 
-#: ../src/bar.c:321 ../src/toolbar.c:194
+#: ../src/bar.c:335 ../src/toolbar.c:213
 msgid "Move to _bottom"
 msgstr ""
 
-#: ../src/bar.c:323 ../src/toolbar.c:196
+#: ../src/bar.c:337 ../src/toolbar.c:215
 msgid "Remove"
 msgstr ""
 
-#: ../src/bar.c:714
+#: ../src/bar.c:728
 msgid "Add Pane"
 msgstr ""
 
@@ -181,7 +202,7 @@ msgstr ""
 msgid "Key:"
 msgstr ""
 
-#: ../src/bar_exif.c:576 ../src/preferences.c:1872
+#: ../src/bar_exif.c:576 ../src/preferences.c:1886
 msgid "Title:"
 msgstr ""
 
@@ -199,7 +220,7 @@ msgstr ""
 msgid "Configure \"%s\""
 msgstr ""
 
-#: ../src/bar_exif.c:636 ../src/bar_keywords.c:1342
+#: ../src/bar_exif.c:636 ../src/bar_keywords.c:1367
 #, c-format
 msgid "Remove \"%s\""
 msgstr ""
@@ -303,27 +324,27 @@ msgid "Map centering"
 msgstr ""
 
 #. use the same strings as in layout_util.c
-#: ../src/bar_histogram.c:257 ../src/layout_util.c:1961
+#: ../src/bar_histogram.c:257 ../src/layout_util.c:2047
 msgid "Histogram on _Red"
 msgstr ""
 
-#: ../src/bar_histogram.c:258 ../src/layout_util.c:1962
+#: ../src/bar_histogram.c:258 ../src/layout_util.c:2048
 msgid "Histogram on _Green"
 msgstr ""
 
-#: ../src/bar_histogram.c:259 ../src/layout_util.c:1963
+#: ../src/bar_histogram.c:259 ../src/layout_util.c:2049
 msgid "Histogram on _Blue"
 msgstr ""
 
-#: ../src/bar_histogram.c:260 ../src/layout_util.c:1964
+#: ../src/bar_histogram.c:260 ../src/layout_util.c:2050
 msgid "_Histogram on RGB"
 msgstr ""
 
-#: ../src/bar_histogram.c:261 ../src/layout_util.c:1965
+#: ../src/bar_histogram.c:261 ../src/layout_util.c:2051
 msgid "Histogram on _Value"
 msgstr ""
 
-#: ../src/bar_histogram.c:265 ../src/layout_util.c:1969
+#: ../src/bar_histogram.c:265 ../src/layout_util.c:2055
 msgid "Li_near Histogram"
 msgstr ""
 
@@ -331,120 +352,125 @@ msgstr ""
 msgid "L_og Histogram"
 msgstr ""
 
-#: ../src/bar_keywords.c:463
-msgid "Add keywords to selected files"
+#: ../src/bar_keywords.c:488
+msgid "Add selected keywords to selected files"
 msgstr ""
 
-#: ../src/bar_keywords.c:464
-msgid "Replace existing keywords in selected files"
+#: ../src/bar_keywords.c:489
+msgid "Replace existing keywords in selected files with selected keywords"
 msgstr ""
 
-#: ../src/bar_keywords.c:935
+#: ../src/bar_keywords.c:960
 msgid "Edit keyword"
 msgstr ""
 
-#: ../src/bar_keywords.c:935 ../src/bar_keywords.c:942
-#: ../src/bar_keywords.c:1287
+#: ../src/bar_keywords.c:960 ../src/bar_keywords.c:967
+#: ../src/bar_keywords.c:1312
 msgid "New keyword"
 msgstr ""
 
-#: ../src/bar_keywords.c:942
+#: ../src/bar_keywords.c:967
 msgid "Configure keyword"
 msgstr ""
 
-#: ../src/bar_keywords.c:948
+#: ../src/bar_keywords.c:973
 msgid "Keyword:"
 msgstr ""
 
-#: ../src/bar_keywords.c:957
+#: ../src/bar_keywords.c:982
 msgid "Keyword type:"
 msgstr ""
 
-#: ../src/bar_keywords.c:959
+#: ../src/bar_keywords.c:984
 msgid "Active keyword"
 msgstr ""
 
-#: ../src/bar_keywords.c:962
+#: ../src/bar_keywords.c:987
 msgid "Helper"
 msgstr ""
 
-#: ../src/bar_keywords.c:1036
+#: ../src/bar_keywords.c:1061
 msgid "This will disconnect all Marks Keywords connections"
 msgstr ""
 
-#: ../src/bar_keywords.c:1038
+#: ../src/bar_keywords.c:1063
 msgid "Marks Keywords"
 msgstr ""
 
-#: ../src/bar_keywords.c:1311
+#: ../src/bar_keywords.c:1336
 #, c-format
 msgid "Add \"%s\" to all selected images"
 msgstr ""
 
-#: ../src/bar_keywords.c:1317
+#: ../src/bar_keywords.c:1342
 #, c-format
 msgid "Hide \"%s\""
 msgstr ""
 
-#: ../src/bar_keywords.c:1324
+#: ../src/bar_keywords.c:1349
 #, c-format
 msgid "Mark %d"
 msgstr ""
 
-#: ../src/bar_keywords.c:1332
+#: ../src/bar_keywords.c:1357
 #, c-format
 msgid "Connect \"%s\" to mark"
 msgstr ""
 
-#: ../src/bar_keywords.c:1339
+#: ../src/bar_keywords.c:1364
 #, c-format
 msgid "Edit \"%s\""
 msgstr ""
 
-#: ../src/bar_keywords.c:1349
+#: ../src/bar_keywords.c:1374
 #, c-format
 msgid "Disconnect \"%s\" from mark %s"
 msgstr ""
 
-#: ../src/bar_keywords.c:1356
+#: ../src/bar_keywords.c:1381
 #, c-format
 msgid "Disconnect all Mark Keyword connections"
 msgstr ""
 
 #. for the pane
-#: ../src/bar_keywords.c:1367 ../src/bar_keywords.c:1381
+#: ../src/bar_keywords.c:1392 ../src/bar_keywords.c:1406
 msgid "Expand checked"
 msgstr ""
 
-#: ../src/bar_keywords.c:1368 ../src/bar_keywords.c:1382
+#: ../src/bar_keywords.c:1393 ../src/bar_keywords.c:1407
 msgid "Collapse unchecked"
 msgstr ""
 
-#: ../src/bar_keywords.c:1369 ../src/bar_keywords.c:1383
+#: ../src/bar_keywords.c:1394 ../src/bar_keywords.c:1408
 msgid "Hide unchecked"
 msgstr ""
 
-#: ../src/bar_keywords.c:1370
+#: ../src/bar_keywords.c:1395
 msgid "Revert all hidden"
 msgstr ""
 
-#: ../src/bar_keywords.c:1372
+#: ../src/bar_keywords.c:1397
 msgid "Show all"
 msgstr ""
 
-#: ../src/bar_keywords.c:1373
+#: ../src/bar_keywords.c:1398
 msgid "Collapse all"
 msgstr ""
 
-#: ../src/bar_keywords.c:1374
+#: ../src/bar_keywords.c:1399
 msgid "Revert"
 msgstr ""
 
-#: ../src/bar_keywords.c:1378
+#: ../src/bar_keywords.c:1403
 msgid "On any change"
 msgstr ""
 
-#: ../src/bar_sort.c:500
+#: ../src/bar_keywords.c:1899
+#, c-format
+msgid "Error: Unable to write keywords list to: %s\n"
+msgstr ""
+
+#: ../src/bar_sort.c:501
 #, c-format
 msgid ""
 "The collection:\n"
@@ -452,63 +478,63 @@ msgid ""
 "already exists."
 msgstr ""
 
-#: ../src/bar_sort.c:501
+#: ../src/bar_sort.c:502
 msgid "Collection exists"
 msgstr ""
 
-#: ../src/bar_sort.c:515 ../src/collect.c:1146 ../src/collect-dlg.c:93
+#: ../src/bar_sort.c:516 ../src/collect.c:1147 ../src/collect-dlg.c:93
 #, c-format
 msgid ""
 "Failed to save the collection:\n"
 "%s"
 msgstr ""
 
-#: ../src/bar_sort.c:516 ../src/collect.c:1147 ../src/collect-dlg.c:94
+#: ../src/bar_sort.c:517 ../src/collect.c:1148 ../src/collect-dlg.c:94
 msgid "Save Failed"
 msgstr ""
 
-#: ../src/bar_sort.c:551 ../src/bar_sort.c:723
+#: ../src/bar_sort.c:552 ../src/bar_sort.c:724
 msgid "Add Bookmark"
 msgstr ""
 
-#: ../src/bar_sort.c:555
+#: ../src/bar_sort.c:556
 msgid "Add Collection"
 msgstr ""
 
-#: ../src/bar_sort.c:572 ../src/shortcuts.c:118 ../src/ui_bookmark.c:297
+#: ../src/bar_sort.c:573 ../src/shortcuts.c:118 ../src/ui_bookmark.c:297
 msgid "Name:"
 msgstr ""
 
-#: ../src/bar_sort.c:650
+#: ../src/bar_sort.c:651
 msgid "Sort Manager"
 msgstr ""
 
-#: ../src/bar_sort.c:659 ../src/pan-view/pan-view.c:1832
+#: ../src/bar_sort.c:660 ../src/pan-view/pan-view.c:1836
 #: ../src/ui_pathsel.c:1108
 msgid "Folders"
 msgstr ""
 
-#: ../src/bar_sort.c:660 ../src/options.c:207
+#: ../src/bar_sort.c:661 ../src/options.c:221
 msgid "Collections"
 msgstr ""
 
-#: ../src/bar_sort.c:668 ../src/utilops.c:2321
+#: ../src/bar_sort.c:669 ../src/toolbar.c:88 ../src/utilops.c:2329
 msgid "Copy"
 msgstr ""
 
-#: ../src/bar_sort.c:671 ../src/utilops.c:2271
+#: ../src/bar_sort.c:672 ../src/toolbar.c:89 ../src/utilops.c:2279
 msgid "Move"
 msgstr ""
 
-#: ../src/bar_sort.c:710
+#: ../src/bar_sort.c:711
 msgid "Add image"
 msgstr ""
 
-#: ../src/bar_sort.c:713
+#: ../src/bar_sort.c:714
 msgid "Add selection"
 msgstr ""
 
-#: ../src/bar_sort.c:726
+#: ../src/bar_sort.c:727
 msgid "Undo last image"
 msgstr ""
 
@@ -520,7 +546,7 @@ msgid ""
 msgstr ""
 
 #: ../src/cache_maint.c:123 ../src/cache_maint.c:612 ../src/cache_maint.c:880
-#: ../src/editors.c:1205
+#: ../src/editors.c:1228 ../src/preferences.c:2674
 msgid "done"
 msgstr ""
 
@@ -540,11 +566,11 @@ msgstr ""
 msgid "Maintenance"
 msgstr ""
 
-#: ../src/cache_maint.c:732
+#: ../src/cache_maint.c:732 ../src/preferences.c:2756
 msgid "Invalid folder"
 msgstr ""
 
-#: ../src/cache_maint.c:733
+#: ../src/cache_maint.c:733 ../src/preferences.c:2757
 msgid "The specified folder can not be found."
 msgstr ""
 
@@ -552,19 +578,19 @@ msgstr ""
 msgid "Create thumbnails"
 msgstr ""
 
-#: ../src/cache_maint.c:804 ../src/cache_maint.c:1063
+#: ../src/cache_maint.c:804 ../src/cache_maint.c:1063 ../src/preferences.c:2795
 msgid "S_tart"
 msgstr ""
 
-#: ../src/cache_maint.c:817 ../src/preferences.c:2564
+#: ../src/cache_maint.c:817 ../src/preferences.c:2808 ../src/preferences.c:3134
 msgid "Folder:"
 msgstr ""
 
-#: ../src/cache_maint.c:820
+#: ../src/cache_maint.c:820 ../src/preferences.c:2811
 msgid "Select folder"
 msgstr ""
 
-#: ../src/cache_maint.c:824
+#: ../src/cache_maint.c:824 ../src/preferences.c:2815
 msgid "Include subfolders"
 msgstr ""
 
@@ -572,11 +598,11 @@ msgstr ""
 msgid "Store thumbnails local to source images"
 msgstr ""
 
-#: ../src/cache_maint.c:834 ../src/cache_maint.c:1072
+#: ../src/cache_maint.c:834 ../src/cache_maint.c:1072 ../src/preferences.c:2823
 msgid "click start to begin"
 msgstr ""
 
-#: ../src/cache_maint.c:992 ../src/editors.c:1131
+#: ../src/cache_maint.c:992 ../src/editors.c:1154
 msgid "running..."
 msgstr ""
 
@@ -613,7 +639,7 @@ msgid "Geeqie thumbnail cache"
 msgstr ""
 
 #: ../src/cache_maint.c:1227 ../src/cache_maint.c:1246
-#: ../src/cache_maint.c:1271
+#: ../src/cache_maint.c:1272
 msgid "Clean up"
 msgstr ""
 
@@ -641,13 +667,13 @@ msgstr ""
 msgid "Render thumbnails for a specific folder."
 msgstr ""
 
-#: ../src/cache_maint.c:1274
+#: ../src/cache_maint.c:1275
 msgid "Remove orphaned keywords and comments."
 msgstr ""
 
 #. When does this occur ??
-#: ../src/collect.c:422 ../src/image.c:189 ../src/image-overlay.c:549
-#: ../src/image-overlay.c:626
+#: ../src/collect.c:422 ../src/image.c:313 ../src/image-overlay.c:555
+#: ../src/image-overlay.c:632
 msgid "Untitled"
 msgstr ""
 
@@ -656,22 +682,22 @@ msgstr ""
 msgid "Untitled (%d)"
 msgstr ""
 
-#: ../src/collect.c:1071
+#: ../src/collect.c:1072
 #, c-format
 msgid "%s - Collection - %s"
 msgstr ""
 
-#: ../src/collect.c:1183 ../src/collect.c:1187
+#: ../src/collect.c:1184 ../src/collect.c:1188
 msgid "Close collection"
 msgstr ""
 
-#: ../src/collect.c:1188
+#: ../src/collect.c:1189
 msgid ""
 "Collection has been modified.\n"
 "Save first?"
 msgstr ""
 
-#: ../src/collect.c:1191
+#: ../src/collect.c:1192
 msgid "_Discard"
 msgstr ""
 
@@ -750,166 +776,189 @@ msgid ""
 "error: %s\n"
 msgstr ""
 
-#: ../src/collect-table.c:212
+#: ../src/collect-table.c:214
 #, c-format
 msgid "%s, %d images (%s, %d)"
 msgstr ""
 
-#: ../src/collect-table.c:219
+#: ../src/collect-table.c:221
 #, c-format
 msgid "%s, %d images"
 msgstr ""
 
-#: ../src/collect-table.c:224 ../src/layout_util.c:1736
-#: ../src/layout_util.c:2880
+#: ../src/collect-table.c:226 ../src/layout_util.c:1817
+#: ../src/layout_util.c:2992
 msgid "Empty"
 msgstr ""
 
-#: ../src/collect-table.c:238 ../src/dupe.c:1363 ../src/search.c:386
-#: ../src/view_file/view_file.c:1004 ../src/view_file/view_file.c:1113
+#: ../src/collect-table.c:240 ../src/dupe.c:1364 ../src/search.c:389
+#: ../src/view_file/view_file.c:1146 ../src/view_file/view_file.c:1255
 msgid "Loading thumbs..."
 msgstr ""
 
-#: ../src/collect-table.c:933 ../src/dupe.c:2344 ../src/dupe.c:2662
-#: ../src/layout_util.c:1783 ../src/search.c:1095
+#: ../src/collect-table.c:961 ../src/dupe.c:2354 ../src/dupe.c:2681
+#: ../src/layout_util.c:1864 ../src/search.c:1107
 msgid "_View"
 msgstr ""
 
-#: ../src/collect-table.c:935 ../src/dupe.c:2346 ../src/dupe.c:2664
-#: ../src/img-view.c:1328 ../src/layout_image.c:691
-#: ../src/pan-view/pan-view.c:2290 ../src/search.c:1097
-#: ../src/view_file/view_file.c:622
+#: ../src/collect-table.c:963 ../src/dupe.c:2356 ../src/dupe.c:2683
+#: ../src/img-view.c:1337 ../src/layout_image.c:701
+#: ../src/pan-view/pan-view.c:2309 ../src/search.c:1109
+#: ../src/view_file/view_file.c:623
 msgid "View in _new window"
 msgstr ""
 
-#: ../src/collect-table.c:937 ../src/pan-view/pan-view.c:2292
+#: ../src/collect-table.c:965 ../src/pan-view/pan-view.c:2311
 msgid "Go to original"
 msgstr ""
 
-#: ../src/collect-table.c:940 ../src/dupe.c:2385 ../src/dupe.c:2672
-#: ../src/search.c:1132
+#: ../src/collect-table.c:968 ../src/dupe.c:2404 ../src/dupe.c:2691
 msgid "Rem_ove"
 msgstr ""
 
-#: ../src/collect-table.c:943
+#: ../src/collect-table.c:971
 msgid "Append from file selection"
 msgstr ""
 
-#: ../src/collect-table.c:945
+#: ../src/collect-table.c:973
 msgid "Append from collection..."
 msgstr ""
 
-#: ../src/collect-table.c:949
+#: ../src/collect-table.c:977
 msgid "_Selection"
 msgstr ""
 
-#: ../src/collect-table.c:951 ../src/dupe.c:2349 ../src/dupe.c:2667
-#: ../src/layout_util.c:1841 ../src/search.c:1100
+#: ../src/collect-table.c:979 ../src/dupe.c:2359 ../src/dupe.c:2686
+#: ../src/layout_util.c:1923 ../src/search.c:1112 ../src/toolbar.c:94
 msgid "Select all"
 msgstr ""
 
-#: ../src/collect-table.c:953 ../src/dupe.c:2351 ../src/dupe.c:2669
-#: ../src/layout_util.c:1842 ../src/search.c:1102
+#: ../src/collect-table.c:981 ../src/dupe.c:2361 ../src/dupe.c:2688
+#: ../src/layout_util.c:1924 ../src/search.c:1114 ../src/toolbar.c:95
 msgid "Select none"
 msgstr ""
 
-#: ../src/collect-table.c:955
+#: ../src/collect-table.c:983
 msgid "Invert selection"
 msgstr ""
 
-#: ../src/collect-table.c:957
+#: ../src/collect-table.c:985
 msgid "Rectangular selection"
 msgstr ""
 
-#: ../src/collect-table.c:969 ../src/dupe.c:2372 ../src/img-view.c:1332
-#: ../src/layout_image.c:699 ../src/layout_util.c:1816
-#: ../src/pan-view/pan-view.c:2296 ../src/search.c:1119
-#: ../src/view_file/view_file.c:626
+#: ../src/collect-table.c:997 ../src/dupe.c:2382 ../src/img-view.c:1341
+#: ../src/layout_image.c:709 ../src/layout_util.c:1897
+#: ../src/pan-view/pan-view.c:2315 ../src/search.c:1131
+#: ../src/view_file/view_file.c:627
 msgid "_Copy..."
 msgstr ""
 
-#: ../src/collect-table.c:971 ../src/dupe.c:2374 ../src/img-view.c:1333
-#: ../src/layout_image.c:701 ../src/layout_util.c:1817
-#: ../src/pan-view/pan-view.c:2298 ../src/search.c:1121
-#: ../src/view_file/view_file.c:628
+#: ../src/collect-table.c:999 ../src/dupe.c:2384 ../src/img-view.c:1342
+#: ../src/layout_image.c:711 ../src/layout_util.c:1898
+#: ../src/pan-view/pan-view.c:2317 ../src/search.c:1133
+#: ../src/view_file/view_file.c:629
 msgid "_Move..."
 msgstr ""
 
-#: ../src/collect-table.c:973 ../src/dupe.c:2376 ../src/img-view.c:1334
-#: ../src/layout_image.c:703 ../src/layout_util.c:1818
-#: ../src/pan-view/pan-view.c:2300 ../src/search.c:1123 ../src/view_dir.c:683
-#: ../src/view_file/view_file.c:630
+#: ../src/collect-table.c:1001 ../src/dupe.c:2386 ../src/img-view.c:1343
+#: ../src/layout_image.c:713 ../src/layout_util.c:1899
+#: ../src/pan-view/pan-view.c:2319 ../src/search.c:1135 ../src/view_dir.c:686
+#: ../src/view_file/view_file.c:631
 msgid "_Rename..."
 msgstr ""
 
-#: ../src/collect-table.c:975 ../src/dupe.c:2378 ../src/img-view.c:1335
-#: ../src/layout_image.c:705 ../src/pan-view/pan-view.c:2302
-#: ../src/search.c:1125 ../src/view_dir.c:686 ../src/view_file/view_file.c:632
+#: ../src/collect-table.c:1003 ../src/dupe.c:2388 ../src/img-view.c:1344
+#: ../src/layout_image.c:715 ../src/pan-view/pan-view.c:2321
+#: ../src/search.c:1137 ../src/view_dir.c:689 ../src/view_file/view_file.c:633
 msgid "_Copy path"
 msgstr ""
 
-#: ../src/collect-table.c:977 ../src/dupe.c:2380 ../src/img-view.c:1336
-#: ../src/layout_image.c:706 ../src/pan-view/pan-view.c:2304
-#: ../src/search.c:1127 ../src/view_dir.c:689 ../src/view_file/view_file.c:634
+#: ../src/collect-table.c:1005 ../src/dupe.c:2390 ../src/img-view.c:1345
+#: ../src/layout_image.c:716 ../src/pan-view/pan-view.c:2323
+#: ../src/search.c:1139 ../src/view_dir.c:692 ../src/view_file/view_file.c:635
 msgid "_Copy path unquoted"
 msgstr ""
 
-#: ../src/collect-table.c:979 ../src/dupe.c:2382 ../src/img-view.c:1337
-#: ../src/layout_image.c:708 ../src/layout_util.c:1819
-#: ../src/layout_util.c:1820 ../src/layout_util.c:1821
-#: ../src/pan-view/pan-view.c:2306 ../src/search.c:1129 ../src/view_dir.c:692
-#: ../src/view_file/view_file.c:636
+#: ../src/collect-table.c:1010 ../src/dupe.c:2395 ../src/img-view.c:1349
+#: ../src/layout_image.c:721 ../src/layout_util.c:1900
+#: ../src/layout_util.c:1901 ../src/layout_util.c:1902
+#: ../src/pan-view/pan-view.c:2328 ../src/search.c:1144
+#: ../src/view_file/view_file.c:639
+msgid "Move to Trash..."
+msgstr "Move to Rubbish bin..."
+
+#: ../src/collect-table.c:1011 ../src/dupe.c:2396 ../src/img-view.c:1350
+#: ../src/layout_image.c:722 ../src/pan-view/pan-view.c:2329
+#: ../src/search.c:1145 ../src/view_file/view_file.c:640
+msgid "Move to Trash"
+msgstr "Move to Rubbish bin"
+
+#: ../src/collect-table.c:1014 ../src/dupe.c:2399 ../src/img-view.c:1353
+#: ../src/layout_image.c:726 ../src/pan-view/pan-view.c:2332
+#: ../src/search.c:1148 ../src/view_dir.c:695 ../src/view_file/view_file.c:643
 msgid "_Delete..."
 msgstr ""
 
-#: ../src/collect-table.c:985
+#: ../src/collect-table.c:1015 ../src/dupe.c:2400 ../src/img-view.c:1354
+#: ../src/layout_image.c:727 ../src/pan-view/pan-view.c:2333
+#: ../src/search.c:1149 ../src/ui_pathsel.c:644
+#: ../src/view_file/view_file.c:644
+msgid "_Delete"
+msgstr ""
+
+#: ../src/collect-table.c:1021
 msgid "Randomize"
 msgstr "Randomise"
 
-#: ../src/collect-table.c:987 ../src/view_file/view_file.c:661
+#: ../src/collect-table.c:1023 ../src/view_file/view_file.c:669
 msgid "_Sort"
 msgstr ""
 
-#: ../src/collect-table.c:990 ../src/view_file/view_file.c:677
+#: ../src/collect-table.c:1026 ../src/view_file/view_file.c:685
 msgid "Show filename _text"
 msgstr ""
 
-#: ../src/collect-table.c:993
+#: ../src/collect-table.c:1028 ../src/view_file/view_file.c:693
+#: ../src/view_file/view_file.c:697
+msgid "Show star rating"
+msgstr ""
+
+#: ../src/collect-table.c:1031
 msgid "_Save collection"
 msgstr ""
 
-#: ../src/collect-table.c:995
+#: ../src/collect-table.c:1033
 msgid "Save collection _as..."
 msgstr ""
 
-#: ../src/collect-table.c:998 ../src/layout_util.c:1812
-#: ../src/view_file/view_file.c:646
+#: ../src/collect-table.c:1036 ../src/layout_util.c:1893
+#: ../src/view_file/view_file.c:654
 msgid "_Find duplicates..."
 msgstr ""
 
-#: ../src/collect-table.c:1000 ../src/dupe.c:2369 ../src/layout_util.c:1814
-#: ../src/search.c:1116
+#: ../src/collect-table.c:1038 ../src/dupe.c:2379 ../src/layout_util.c:1895
+#: ../src/search.c:1128
 msgid "Print..."
 msgstr ""
 
-#: ../src/collect-table.c:2189 ../src/dupe.c:3528 ../src/img-view.c:1496
+#: ../src/collect-table.c:2227 ../src/dupe.c:3548 ../src/img-view.c:1514
 msgid "Dropped list includes folders."
 msgstr ""
 
-#: ../src/collect-table.c:2191 ../src/dupe.c:3530 ../src/img-view.c:1498
+#: ../src/collect-table.c:2229 ../src/dupe.c:3550 ../src/img-view.c:1516
 msgid "_Add contents"
 msgstr ""
 
-#: ../src/collect-table.c:2193 ../src/dupe.c:3531 ../src/img-view.c:1499
+#: ../src/collect-table.c:2231 ../src/dupe.c:3551 ../src/img-view.c:1517
 msgid "Add contents _recursive"
 msgstr ""
 
-#: ../src/collect-table.c:2195 ../src/dupe.c:3532 ../src/img-view.c:1500
+#: ../src/collect-table.c:2233 ../src/dupe.c:3552 ../src/img-view.c:1518
 msgid "_Skip folders"
 msgstr ""
 
-#: ../src/collect-table.c:2198 ../src/dupe.c:3534 ../src/img-view.c:1502
-#: ../src/view_dir.c:426
+#: ../src/collect-table.c:2236 ../src/dupe.c:3554 ../src/img-view.c:1520
+#: ../src/view_dir.c:429
 msgid "Cancel"
 msgstr ""
 
@@ -945,7 +994,7 @@ msgstr ""
 msgid "Could not create directory"
 msgstr ""
 
-#: ../src/desktop_file.c:191 ../src/desktop_file.c:554
+#: ../src/desktop_file.c:191 ../src/desktop_file.c:648
 msgid "Desktop file"
 msgstr ""
 
@@ -956,8 +1005,8 @@ msgid ""
 "%s"
 msgstr ""
 
-#: ../src/desktop_file.c:301 ../src/ui_pathsel.c:495 ../src/utilops.c:2157
-#: ../src/utilops.c:2184 ../src/utilops.c:2706
+#: ../src/desktop_file.c:301 ../src/ui_pathsel.c:495 ../src/utilops.c:2158
+#: ../src/utilops.c:2192 ../src/utilops.c:2714
 msgid "File deletion failed"
 msgstr ""
 
@@ -977,230 +1026,234 @@ msgstr ""
 msgid "new.desktop"
 msgstr ""
 
-#: ../src/desktop_file.c:467
+#: ../src/desktop_file.c:548 ../src/menu.c:119
 msgid "Plugins"
 msgstr ""
 
-#: ../src/desktop_file.c:544
+#: ../src/desktop_file.c:616
+msgid "Disabled"
+msgstr ""
+
+#: ../src/desktop_file.c:638
 msgid "Hidden"
 msgstr ""
 
-#: ../src/desktop_file.c:563 ../src/dupe.c:2771 ../src/dupe.c:3310
-#: ../src/print.c:3211 ../src/search.c:3329 ../src/ui_pathsel.c:1120
-#: ../src/utilops.c:501
+#: ../src/desktop_file.c:657 ../src/dupe.c:2790 ../src/dupe.c:3330
+#: ../src/preferences.c:2063 ../src/print.c:416 ../src/search.c:3453
+#: ../src/ui_pathsel.c:1120 ../src/utilops.c:501
 msgid "Path"
 msgstr ""
 
-#: ../src/dupe.c:109
+#: ../src/dupe.c:110
 msgid "Drop files to compare them."
 msgstr ""
 
-#: ../src/dupe.c:113
+#: ../src/dupe.c:114
 #, c-format
 msgid "%d files"
 msgstr ""
 
-#: ../src/dupe.c:117
+#: ../src/dupe.c:118
 #, c-format
 msgid "%d matches found in %d files"
 msgstr ""
 
-#: ../src/dupe.c:122
+#: ../src/dupe.c:123
 msgid "[set 1]"
 msgstr ""
 
-#: ../src/dupe.c:1489
+#: ../src/dupe.c:1490
 msgid "Reading checksums..."
 msgstr ""
 
-#: ../src/dupe.c:1522
+#: ../src/dupe.c:1523
 msgid "Reading dimensions..."
 msgstr ""
 
-#: ../src/dupe.c:1556
+#: ../src/dupe.c:1557
 msgid "Reading similarity data..."
 msgstr ""
 
-#: ../src/dupe.c:1592 ../src/dupe.c:1623
+#: ../src/dupe.c:1593 ../src/dupe.c:1624
 msgid "Comparing..."
 msgstr ""
 
-#: ../src/dupe.c:1603 ../src/pan-view/pan-view.c:1012
+#: ../src/dupe.c:1604 ../src/pan-view/pan-view.c:1012
 msgid "Sorting..."
 msgstr ""
 
-#: ../src/dupe.c:2353
+#: ../src/dupe.c:2363
 msgid "Select group _1 duplicates"
 msgstr ""
 
-#: ../src/dupe.c:2355
+#: ../src/dupe.c:2365
 msgid "Select group _2 duplicates"
 msgstr ""
 
-#: ../src/dupe.c:2387 ../src/dupe.c:2674 ../src/search.c:1134
+#: ../src/dupe.c:2406 ../src/dupe.c:2693
 msgid "C_lear"
 msgstr ""
 
-#: ../src/dupe.c:2390 ../src/dupe.c:2677
+#: ../src/dupe.c:2409 ../src/dupe.c:2696
 msgid "Close _window"
 msgstr ""
 
-#: ../src/dupe.c:2550
+#: ../src/dupe.c:2569
 #, c-format
 msgid "%d files (set 2)"
 msgstr ""
 
-#: ../src/dupe.c:2766
+#: ../src/dupe.c:2785
 msgid "Name case-insensitive"
 msgstr ""
 
-#: ../src/dupe.c:2767 ../src/dupe.c:3307 ../src/preferences.c:2017
-#: ../src/print.c:3215 ../src/search.c:3326
-#: ../src/view_file/view_file_list.c:2071
+#: ../src/dupe.c:2786 ../src/dupe.c:3327 ../src/preferences.c:2033
+#: ../src/preferences.c:2065 ../src/print.c:420 ../src/search.c:3450
+#: ../src/view_file/view_file_list.c:2082
 msgid "Size"
 msgstr ""
 
-#: ../src/dupe.c:2768 ../src/dupe.c:3308 ../src/exif.c:336
-#: ../src/exif-common.c:870 ../src/print.c:3213 ../src/search.c:3327
-#: ../src/view_file/view_file_list.c:2075
+#: ../src/dupe.c:2787 ../src/dupe.c:3328 ../src/exif.c:336
+#: ../src/exif-common.c:900 ../src/preferences.c:2064 ../src/print.c:418
+#: ../src/search.c:3451 ../src/view_file/view_file_list.c:2086
 msgid "Date"
 msgstr ""
 
-#: ../src/dupe.c:2769 ../src/dupe.c:3309 ../src/print.c:3217
-#: ../src/search.c:3328
+#: ../src/dupe.c:2788 ../src/dupe.c:3329 ../src/preferences.c:2067
+#: ../src/print.c:422 ../src/search.c:3452
 msgid "Dimensions"
 msgstr ""
 
-#: ../src/dupe.c:2770
+#: ../src/dupe.c:2789
 msgid "Checksum"
 msgstr ""
 
-#: ../src/dupe.c:2772
+#: ../src/dupe.c:2791
 msgid "Similarity (high)"
 msgstr ""
 
-#: ../src/dupe.c:2773
+#: ../src/dupe.c:2792
 msgid "Similarity"
 msgstr ""
 
-#: ../src/dupe.c:2774
+#: ../src/dupe.c:2793
 msgid "Similarity (low)"
 msgstr ""
 
-#: ../src/dupe.c:2775
+#: ../src/dupe.c:2794
 msgid "Similarity (custom)"
 msgstr ""
 
-#: ../src/dupe.c:3260 ../src/toolbar.c:86
+#: ../src/dupe.c:3280 ../src/toolbar.c:86
 msgid "Find duplicates"
 msgstr ""
 
-#: ../src/dupe.c:3342
+#: ../src/dupe.c:3362
 msgid "Compare to:"
 msgstr ""
 
-#: ../src/dupe.c:3355
+#: ../src/dupe.c:3375
 msgid "Compare by:"
 msgstr ""
 
-#: ../src/dupe.c:3363 ../src/preferences.c:1714 ../src/search.c:3342
+#: ../src/dupe.c:3383 ../src/preferences.c:1721 ../src/search.c:3466
 msgid "Thumbnails"
 msgstr ""
 
-#: ../src/dupe.c:3371
+#: ../src/dupe.c:3391
 msgid "Ignore Rotation"
 msgstr ""
 
-#: ../src/dupe.c:3379
+#: ../src/dupe.c:3399
 msgid "Compare two file sets"
 msgstr ""
 
-#: ../src/dupe.c:3399 ../src/menu.c:229
+#: ../src/dupe.c:3419 ../src/menu.c:229
 msgid "Sort"
 msgstr ""
 
-#: ../src/dupe.c:3407
+#: ../src/dupe.c:3427
 msgid "Custom Threshold"
 msgstr ""
 
-#: ../src/editors.c:305
+#: ../src/editors.c:307
 #, c-format
 msgid "Desktop file '%s' should not include extension in Icon key: '%s'\n"
 msgstr ""
 
 #. flash fired (bit 0)
-#: ../src/editors.c:359 ../src/exif.c:220 ../src/exif-common.c:429
+#: ../src/editors.c:377 ../src/exif.c:220 ../src/exif-common.c:429
 msgid "yes"
 msgstr ""
 
-#: ../src/editors.c:359 ../src/exif.c:219 ../src/exif-common.c:429
+#: ../src/editors.c:377 ../src/exif.c:219 ../src/exif-common.c:429
 msgid "no"
 msgstr ""
 
-#: ../src/editors.c:531
+#: ../src/editors.c:554
 msgid "stopping..."
 msgstr ""
 
-#: ../src/editors.c:552
+#: ../src/editors.c:575
 msgid "Edit command results"
 msgstr ""
 
-#: ../src/editors.c:555
+#: ../src/editors.c:578
 #, c-format
 msgid "Output of %s"
 msgstr ""
 
-#: ../src/editors.c:1082
+#: ../src/editors.c:1105
 #, c-format
 msgid ""
 "Failed to run command:\n"
 "%s\n"
 msgstr ""
 
-#: ../src/editors.c:1209
+#: ../src/editors.c:1232
 msgid "stopped by user"
 msgstr ""
 
-#: ../src/editors.c:1294
+#: ../src/editors.c:1317
 #, c-format
 msgid ""
 "%s\n"
 "\"%s\""
 msgstr ""
 
-#: ../src/editors.c:1296
+#: ../src/editors.c:1319
 msgid "Invalid editor command"
 msgstr ""
 
-#: ../src/editors.c:1383
+#: ../src/editors.c:1406
 msgid "Editor template is empty."
 msgstr ""
 
-#: ../src/editors.c:1384
+#: ../src/editors.c:1407
 msgid "Editor template has incorrect syntax."
 msgstr ""
 
-#: ../src/editors.c:1385
+#: ../src/editors.c:1408
 msgid "Editor template uses incompatible macros."
 msgstr ""
 
-#: ../src/editors.c:1386
+#: ../src/editors.c:1409
 msgid "Can't find matching file type."
 msgstr ""
 
-#: ../src/editors.c:1387
+#: ../src/editors.c:1410
 msgid "Can't execute external editor."
 msgstr ""
 
-#: ../src/editors.c:1388
+#: ../src/editors.c:1411
 msgid "External editor returned error status."
 msgstr ""
 
-#: ../src/editors.c:1389
+#: ../src/editors.c:1412
 msgid "File was skipped."
 msgstr ""
 
-#: ../src/editors.c:1390
+#: ../src/editors.c:1413
 msgid "Unknown error."
 msgstr ""
 
@@ -1592,7 +1645,7 @@ msgstr ""
 msgid "Spectral Sensitivity"
 msgstr ""
 
-#: ../src/exif.c:349 ../src/exif.c:385 ../src/exif-common.c:875
+#: ../src/exif.c:349 ../src/exif.c:385 ../src/exif-common.c:905
 msgid "ISO sensitivity"
 msgstr ""
 
@@ -1608,7 +1661,7 @@ msgstr ""
 msgid "Date original"
 msgstr ""
 
-#: ../src/exif.c:353
+#: ../src/exif.c:353 ../src/preferences.c:2078
 msgid "Date digitized"
 msgstr "Date digitised"
 
@@ -1620,11 +1673,11 @@ msgstr ""
 msgid "Compression ratio"
 msgstr ""
 
-#: ../src/exif.c:356 ../src/exif-common.c:872
+#: ../src/exif.c:356 ../src/exif-common.c:902 ../src/preferences.c:2084
 msgid "Shutter speed"
 msgstr ""
 
-#: ../src/exif.c:357 ../src/exif-common.c:873
+#: ../src/exif.c:357 ../src/exif-common.c:903 ../src/preferences.c:2080
 msgid "Aperture"
 msgstr ""
 
@@ -1632,7 +1685,7 @@ msgstr ""
 msgid "Brightness"
 msgstr ""
 
-#: ../src/exif.c:359 ../src/exif-common.c:874
+#: ../src/exif.c:359 ../src/exif-common.c:904 ../src/preferences.c:2081
 msgid "Exposure bias"
 msgstr ""
 
@@ -1640,7 +1693,7 @@ msgstr ""
 msgid "Maximum aperture"
 msgstr ""
 
-#: ../src/exif.c:361 ../src/exif-common.c:878
+#: ../src/exif.c:361 ../src/exif-common.c:908 ../src/preferences.c:2088
 msgid "Subject distance"
 msgstr ""
 
@@ -1652,11 +1705,11 @@ msgstr ""
 msgid "Light source"
 msgstr ""
 
-#: ../src/exif.c:364 ../src/exif-common.c:879
+#: ../src/exif.c:364 ../src/exif-common.c:909 ../src/preferences.c:2089
 msgid "Flash"
 msgstr ""
 
-#: ../src/exif.c:365 ../src/exif-common.c:876
+#: ../src/exif.c:365 ../src/exif-common.c:906 ../src/preferences.c:2086
 msgid "Focal length"
 msgstr ""
 
@@ -1693,11 +1746,11 @@ msgid "Colorspace"
 msgstr "Colourspace"
 
 #. ExifImageWidth, ExifImageHeight can also be unsigned short
-#: ../src/exif.c:375 ../src/preferences.c:2829
+#: ../src/exif.c:375 ../src/preferences.c:3411
 msgid "Width"
 msgstr ""
 
-#: ../src/exif.c:376 ../src/preferences.c:2831
+#: ../src/exif.c:376 ../src/preferences.c:3413
 msgid "Height"
 msgstr ""
 
@@ -1782,7 +1835,7 @@ msgstr ""
 msgid "Contrast"
 msgstr ""
 
-#: ../src/exif.c:399 ../src/preferences.c:2435
+#: ../src/exif.c:399 ../src/preferences.c:2986
 msgid "Saturation"
 msgstr ""
 
@@ -1818,11 +1871,11 @@ msgstr ""
 msgid "mode:"
 msgstr ""
 
-#: ../src/exif-common.c:437 ../src/trash.c:213
+#: ../src/exif-common.c:437
 msgid "on"
 msgstr ""
 
-#: ../src/exif-common.c:440 ../src/trash.c:218
+#: ../src/exif-common.c:440
 msgid "off"
 msgstr ""
 
@@ -1860,141 +1913,165 @@ msgstr ""
 msgid "Below Sea Level"
 msgstr ""
 
-#: ../src/exif-common.c:869
+#: ../src/exif-common.c:899 ../src/preferences.c:2083
 msgid "Camera"
 msgstr ""
 
-#: ../src/exif-common.c:871
+#: ../src/exif-common.c:901
 msgid "DateDigitized"
 msgstr "DateDigitised"
 
-#: ../src/exif-common.c:877
+#: ../src/exif-common.c:907
 msgid "Focal length 35mm"
 msgstr ""
 
-#: ../src/exif-common.c:880
+#: ../src/exif-common.c:910 ../src/preferences.c:2082
 msgid "Resolution"
 msgstr ""
 
-#: ../src/exif-common.c:881
+#: ../src/exif-common.c:911 ../src/preferences.c:2090
 msgid "Color profile"
 msgstr "Colour profile"
 
-#: ../src/exif-common.c:882
+#: ../src/exif-common.c:912
 msgid "GPS position"
 msgstr ""
 
-#: ../src/exif-common.c:883
+#: ../src/exif-common.c:913
 msgid "GPS altitude"
 msgstr ""
 
-#: ../src/exif-common.c:884
+#: ../src/exif-common.c:914 ../src/preferences.c:2093
 msgid "Local time"
 msgstr ""
 
-#: ../src/exif-common.c:885
+#: ../src/exif-common.c:915
 msgid "Time zone"
 msgstr ""
 
-#: ../src/exif-common.c:886
+#: ../src/exif-common.c:916 ../src/preferences.c:2095
+msgid "Country name"
+msgstr ""
+
+#: ../src/exif-common.c:917 ../src/preferences.c:2096
+msgid "Country code"
+msgstr ""
+
+#: ../src/exif-common.c:918 ../src/preferences.c:2097
 msgid "Star rating"
 msgstr ""
 
-#: ../src/exif-common.c:887
+#: ../src/exif-common.c:919
 msgid "File size"
 msgstr ""
 
-#: ../src/exif-common.c:888
+#: ../src/exif-common.c:920
 msgid "File date"
 msgstr ""
 
-#: ../src/exif-common.c:889
+#: ../src/exif-common.c:921 ../src/preferences.c:2072
 msgid "File mode"
 msgstr ""
 
-#: ../src/exif-common.c:890
+#: ../src/exif-common.c:922 ../src/preferences.c:2071
 msgid "File ctime"
 msgstr ""
 
-#: ../src/filedata.c:110
+#: ../src/exif-common.c:923 ../src/preferences.c:2073
+msgid "File owner"
+msgstr ""
+
+#: ../src/exif-common.c:924 ../src/preferences.c:2074
+msgid "File group"
+msgstr ""
+
+#: ../src/exif-common.c:925 ../src/preferences.c:2075
+msgid "File link"
+msgstr ""
+
+#: ../src/exif-common.c:926 ../src/preferences.c:2076
+msgid "File class"
+msgstr ""
+
+#: ../src/filedata.c:112
 #, c-format
 msgid "%d bytes"
 msgstr ""
 
-#: ../src/filedata.c:114
+#: ../src/filedata.c:116
 #, c-format
 msgid "%.1f K"
 msgstr ""
 
-#: ../src/filedata.c:118
+#: ../src/filedata.c:120
 #, c-format
 msgid "%.1f MB"
 msgstr ""
 
-#: ../src/filedata.c:123
+#: ../src/filedata.c:125
 #, c-format
 msgid "%.1f GB"
 msgstr ""
 
-#: ../src/filedata.c:2625
+#: ../src/filedata.c:2680
 msgid "file or directory does not exist"
 msgstr ""
 
-#: ../src/filedata.c:2631
+#: ../src/filedata.c:2686
 msgid "destination already exists"
 msgstr ""
 
-#: ../src/filedata.c:2637
+#: ../src/filedata.c:2692
 msgid "destination can't be overwritten"
 msgstr ""
 
-#: ../src/filedata.c:2643
+#: ../src/filedata.c:2698
 msgid "destination directory is not writable"
 msgstr ""
 
-#: ../src/filedata.c:2649
+#: ../src/filedata.c:2704
 msgid "destination directory does not exist"
 msgstr ""
 
-#: ../src/filedata.c:2655
+#: ../src/filedata.c:2710
 msgid "source directory is not writable"
 msgstr ""
 
-#: ../src/filedata.c:2661
+#: ../src/filedata.c:2716
 msgid "no read permission"
 msgstr ""
 
-#: ../src/filedata.c:2667
+#: ../src/filedata.c:2722
 msgid "file is readonly"
 msgstr ""
 
-#: ../src/filedata.c:2673
+#: ../src/filedata.c:2728
 msgid "destination already exists and will be overwritten"
 msgstr ""
 
-#: ../src/filedata.c:2679
+#: ../src/filedata.c:2734
 msgid "source and destination are the same"
 msgstr ""
 
-#: ../src/filedata.c:2685
+#: ../src/filedata.c:2740
 msgid "source and destination have different extension"
 msgstr ""
 
-#: ../src/filedata.c:2691
+#: ../src/filedata.c:2746
 msgid "there are unsaved metadata changes for the file"
 msgstr ""
 
-#: ../src/filedata.c:2697
+#: ../src/filedata.c:2752
 msgid "another destination file has the same filename"
 msgstr ""
 
-#: ../src/filedata.c:3251
+#: ../src/filedata.c:3306
 #, c-format
 msgid "Error: Unable to write marks lists to: %s\n"
 msgstr ""
 
-#: ../src/fullscreen.c:242 ../src/layout_util.c:1883 ../src/layout_util.c:1884
-#: ../src/layout_util.c:1885 ../src/preferences.c:2030
+#: ../src/fullscreen.c:242 ../src/layout_util.c:1966 ../src/layout_util.c:1967
+#: ../src/layout_util.c:1968 ../src/preferences.c:2046
 msgid "Full screen"
 msgstr ""
 
@@ -2067,7 +2144,7 @@ msgstr ""
 msgid "Unable to write history lists to: %s\n"
 msgstr ""
 
-#: ../src/image.c:190
+#: ../src/image.c:314
 #, c-format
 msgid " (Collection %s)"
 msgstr ""
@@ -2077,201 +2154,201 @@ msgstr ""
 msgid "Error interpreting JPEG image file (%s)"
 msgstr ""
 
-#: ../src/img-view.c:1312 ../src/layout_image.c:674 ../src/layout_util.c:1850
-#: ../src/layout_util.c:1851 ../src/layout_util.c:1866
-#: ../src/layout_util.c:1867 ../src/pan-view/pan-view.c:2275
+#: ../src/img-view.c:1321 ../src/layout_image.c:684 ../src/layout_util.c:1933
+#: ../src/layout_util.c:1934 ../src/layout_util.c:1949
+#: ../src/layout_util.c:1950 ../src/pan-view/pan-view.c:2294
 msgid "Zoom _in"
 msgstr ""
 
-#: ../src/img-view.c:1313 ../src/layout_image.c:675 ../src/layout_util.c:1852
-#: ../src/layout_util.c:1853 ../src/layout_util.c:1868
-#: ../src/layout_util.c:1869 ../src/pan-view/pan-view.c:2277
+#: ../src/img-view.c:1322 ../src/layout_image.c:685 ../src/layout_util.c:1935
+#: ../src/layout_util.c:1936 ../src/layout_util.c:1951
+#: ../src/layout_util.c:1952 ../src/pan-view/pan-view.c:2296
 msgid "Zoom _out"
 msgstr ""
 
-#: ../src/img-view.c:1314 ../src/layout_image.c:676 ../src/layout_util.c:1854
-#: ../src/layout_util.c:1855 ../src/layout_util.c:1870
-#: ../src/layout_util.c:1871 ../src/pan-view/pan-view.c:2279
+#: ../src/img-view.c:1323 ../src/layout_image.c:686 ../src/layout_util.c:1937
+#: ../src/layout_util.c:1938 ../src/layout_util.c:1953
+#: ../src/layout_util.c:1954 ../src/pan-view/pan-view.c:2298
 msgid "Zoom _1:1"
 msgstr ""
 
-#: ../src/img-view.c:1315 ../src/layout_image.c:677
+#: ../src/img-view.c:1324 ../src/layout_image.c:687
 msgid "Fit image to _window"
 msgstr ""
 
-#: ../src/img-view.c:1324 ../src/layout_image.c:687 ../src/layout_util.c:1848
+#: ../src/img-view.c:1333 ../src/layout_image.c:697 ../src/layout_util.c:1930
 msgid "Set as _wallpaper"
 msgstr ""
 
-#: ../src/img-view.c:1329 ../src/layout_image.c:694
+#: ../src/img-view.c:1338 ../src/layout_image.c:704
 msgid "_Go to directory view"
 msgstr ""
 
-#: ../src/img-view.c:1348 ../src/layout_image.c:719
+#: ../src/img-view.c:1366 ../src/layout_image.c:739
 msgid "_Stop slideshow"
 msgstr ""
 
-#: ../src/img-view.c:1351 ../src/layout_image.c:722
+#: ../src/img-view.c:1369 ../src/layout_image.c:742
 msgid "Continue slides_how"
 msgstr ""
 
-#: ../src/img-view.c:1356 ../src/img-view.c:1364 ../src/layout_image.c:727
-#: ../src/layout_image.c:734
+#: ../src/img-view.c:1374 ../src/img-view.c:1382 ../src/layout_image.c:747
+#: ../src/layout_image.c:754
 msgid "Pause slides_how"
 msgstr ""
 
-#: ../src/img-view.c:1362 ../src/layout_image.c:733
+#: ../src/img-view.c:1380 ../src/layout_image.c:753
 msgid "_Start slideshow"
 msgstr ""
 
-#: ../src/img-view.c:1370 ../src/layout_image.c:744
-#: ../src/pan-view/pan-view.c:2359
+#: ../src/img-view.c:1388 ../src/layout_image.c:764
+#: ../src/pan-view/pan-view.c:2386
 msgid "Exit _full screen"
 msgstr ""
 
-#: ../src/img-view.c:1374 ../src/layout_image.c:740
-#: ../src/pan-view/pan-view.c:2363
+#: ../src/img-view.c:1392 ../src/layout_image.c:760
+#: ../src/pan-view/pan-view.c:2390
 msgid "_Full screen"
 msgstr ""
 
-#: ../src/img-view.c:1378 ../src/layout_util.c:1826
-#: ../src/pan-view/pan-view.c:2367
+#: ../src/img-view.c:1396 ../src/layout_util.c:1908
+#: ../src/pan-view/pan-view.c:2394
 msgid "C_lose window"
 msgstr ""
 
-#: ../src/layout.c:407 ../src/view_file/view_file.c:658
+#: ../src/layout.c:424 ../src/view_file/view_file.c:666
 msgid "Ascending"
 msgstr ""
 
-#: ../src/layout.c:487
+#: ../src/layout.c:504
 msgid "Scroll to top left corner"
 msgstr ""
 
-#: ../src/layout.c:492
+#: ../src/layout.c:509
 msgid "Scroll to image center"
 msgstr ""
 
-#: ../src/layout.c:497
+#: ../src/layout.c:514
 msgid "Keep the region from previous image"
 msgstr ""
 
-#: ../src/layout.c:603
+#: ../src/layout.c:620
 msgid " Slideshow"
 msgstr ""
 
-#: ../src/layout.c:607
+#: ../src/layout.c:624
 msgid " Paused"
 msgstr ""
 
-#: ../src/layout.c:623
+#: ../src/layout.c:640
 #, c-format
 msgid "%s, %d files (%s, %d)%s"
 msgstr ""
 
-#: ../src/layout.c:630
+#: ../src/layout.c:647
 #, c-format
 msgid "%s, %d files%s"
 msgstr ""
 
-#: ../src/layout.c:635
+#: ../src/layout.c:652
 #, c-format
 msgid "%d files%s"
 msgstr ""
 
-#: ../src/layout.c:681
+#: ../src/layout.c:698
 #, c-format
 msgid "(no read permission) %s bytes"
 msgstr ""
 
-#: ../src/layout.c:685
+#: ../src/layout.c:702
 #, c-format
 msgid "( ? x ? ) %s bytes"
 msgstr ""
 
-#: ../src/layout.c:693
+#: ../src/layout.c:710
 #, c-format
 msgid "( %d x %d ) %s bytes"
 msgstr ""
 
-#: ../src/layout.c:779
+#: ../src/layout.c:796
 msgid "Select sort order"
 msgstr ""
 
-#: ../src/layout.c:784
+#: ../src/layout.c:801
 msgid "Folder contents (files selected)"
 msgstr ""
 
-#: ../src/layout.c:793
+#: ../src/layout.c:810
 msgid "(Image dimensions) Image size"
 msgstr ""
 
-#: ../src/layout.c:803
+#: ../src/layout.c:820
 msgid "Select zoom and scroll mode"
 msgstr ""
 
 #. expand only in small format
-#: ../src/layout.c:813
+#: ../src/layout.c:830
 msgid "[Pixel x,y coord]: (Pixel R,G,B value)"
 msgstr ""
 
-#: ../src/layout.c:1458 ../src/layout_config.c:67
+#: ../src/layout.c:1493 ../src/layout_config.c:67
 msgid "Tools"
 msgstr ""
 
-#: ../src/layout.c:2085
+#: ../src/layout.c:2123
 msgid "Window options and layout"
 msgstr ""
 
-#: ../src/layout.c:2150
+#: ../src/layout.c:2188
 msgid "General options"
 msgstr ""
 
-#: ../src/layout.c:2152
+#: ../src/layout.c:2190
 msgid "Home path (empty to use your home directory)"
 msgstr ""
 
-#: ../src/layout.c:2160
+#: ../src/layout.c:2198
 msgid "Use current"
 msgstr ""
 
-#: ../src/layout.c:2163
+#: ../src/layout.c:2201
 msgid "Show date in directories list view"
 msgstr ""
 
-#: ../src/layout.c:2166
+#: ../src/layout.c:2204
 msgid "Exit program when this window is closed"
 msgstr ""
 
-#: ../src/layout.c:2169
+#: ../src/layout.c:2207
 msgid "Start-up directory:"
 msgstr ""
 
-#: ../src/layout.c:2171
+#: ../src/layout.c:2209
 msgid "No change"
 msgstr ""
 
-#: ../src/layout.c:2174
+#: ../src/layout.c:2212
 msgid "Restore last path"
 msgstr ""
 
-#: ../src/layout.c:2177
+#: ../src/layout.c:2215
 msgid "Home path"
 msgstr ""
 
-#: ../src/layout.c:2181 ../src/print.c:3375 ../src/print.c:3382
+#: ../src/layout.c:2219
 msgid "Layout"
 msgstr ""
 
-#: ../src/layout.c:2428
+#: ../src/layout.c:2466
 msgid "Invalid geometry\n"
 msgstr ""
 
-#: ../src/layout_config.c:67 ../src/preferences.c:2150 ../src/ui_pathsel.c:1187
+#: ../src/layout_config.c:67 ../src/preferences.c:2358 ../src/ui_pathsel.c:1187
 msgid "Files"
 msgstr ""
 
-#: ../src/layout_config.c:67 ../src/preferences.c:109 ../src/preferences.c:1915
-#: ../src/print.c:133 ../src/search.c:2088 ../src/search.c:3239
+#: ../src/layout_config.c:67 ../src/preferences.c:116 ../src/preferences.c:1934
+#: ../src/search.c:2178 ../src/search.c:3363
 msgid "Image"
 msgstr ""
 
@@ -2279,1216 +2356,1239 @@ msgstr ""
 msgid "(drag to change order)"
 msgstr ""
 
-#: ../src/layout_image.c:747
+#: ../src/layout_image.c:767
 msgid "_Animate"
 msgstr ""
 
-#: ../src/layout_image.c:751
+#: ../src/layout_image.c:771
 msgid "Hide file _list"
 msgstr ""
 
-#: ../src/layout_image.c:1942
+#: ../src/layout_image.c:1962
 #, c-format
 msgid "[%*d,%*d]: RGB(%3d,%3d,%3d)"
 msgstr ""
 
-#: ../src/layout_image.c:1950
+#: ../src/layout_image.c:1970
 #, c-format
 msgid "[%*s,%*s]: RGB(---,---,---)"
 msgstr ""
 
-#: ../src/layout_util.c:255 ../src/layout_util.c:1912
+#: ../src/layout_util.c:265 ../src/layout_util.c:1995
 msgid "Clear Marks"
 msgstr ""
 
-#: ../src/layout_util.c:569
+#: ../src/layout_util.c:606
 msgid "Operation failed:\n"
 msgstr ""
 
-#: ../src/layout_util.c:572
+#: ../src/layout_util.c:609
 msgid "No file extension\n"
 msgstr ""
 
-#: ../src/layout_util.c:574
+#: ../src/layout_util.c:611
 msgid "Cannot create tmp file\n"
 msgstr ""
 
-#: ../src/layout_util.c:576
+#: ../src/layout_util.c:613
 msgid "Operation not supported for filetype\n"
 msgstr ""
 
-#: ../src/layout_util.c:578
+#: ../src/layout_util.c:615
 msgid "File is not writable\n"
 msgstr ""
 
-#: ../src/layout_util.c:580
+#: ../src/layout_util.c:617
 msgid "Exiftran error\n"
 msgstr ""
 
-#: ../src/layout_util.c:582
+#: ../src/layout_util.c:619
 msgid "Mogrify error\n"
 msgstr ""
 
-#: ../src/layout_util.c:586
+#: ../src/layout_util.c:623
 msgid "Image orientation"
 msgstr ""
 
-#: ../src/layout_util.c:1776
+#: ../src/layout_util.c:1857
 msgid "_File"
 msgstr ""
 
-#: ../src/layout_util.c:1777
+#: ../src/layout_util.c:1858
 msgid "_Go"
 msgstr ""
 
-#: ../src/layout_util.c:1778 ../src/menu.c:119
+#: ../src/layout_util.c:1859
 msgid "_Edit"
 msgstr ""
 
-#: ../src/layout_util.c:1779
+#: ../src/layout_util.c:1860
 msgid "_Select"
 msgstr ""
 
-#: ../src/layout_util.c:1780 ../src/menu.c:380
+#: ../src/layout_util.c:1861 ../src/menu.c:380
 msgid "_Orientation"
 msgstr ""
 
-#: ../src/layout_util.c:1781
+#: ../src/layout_util.c:1862
 msgid "_Rating"
 msgstr ""
 
-#: ../src/layout_util.c:1782
+#: ../src/layout_util.c:1863
 msgid "P_references"
 msgstr ""
 
-#: ../src/layout_util.c:1784
+#: ../src/layout_util.c:1865
 msgid "_Files and Folders"
 msgstr ""
 
-#: ../src/layout_util.c:1785
+#: ../src/layout_util.c:1866
 msgid "_Zoom"
 msgstr ""
 
-#: ../src/layout_util.c:1786
+#: ../src/layout_util.c:1867
 msgid "_Color Management"
 msgstr "_Colour Management"
 
-#: ../src/layout_util.c:1787
+#: ../src/layout_util.c:1868
 msgid "_Connected Zoom"
 msgstr ""
 
-#: ../src/layout_util.c:1788
+#: ../src/layout_util.c:1869
 msgid "Spli_t"
 msgstr ""
 
-#: ../src/layout_util.c:1789
+#: ../src/layout_util.c:1870
 msgid "Stere_o"
 msgstr ""
 
-#: ../src/layout_util.c:1790 ../src/layout_util.c:1928
+#: ../src/layout_util.c:1871 ../src/layout_util.c:2012
 msgid "Image _Overlay"
 msgstr ""
 
-#: ../src/layout_util.c:1791
+#: ../src/layout_util.c:1872
 msgid "_Plugins"
 msgstr ""
 
-#: ../src/layout_util.c:1792
+#: ../src/layout_util.c:1873
 msgid "_Help"
 msgstr ""
 
-#: ../src/layout_util.c:1794
+#: ../src/layout_util.c:1875
 msgid "_First Image"
 msgstr ""
 
-#: ../src/layout_util.c:1794 ../src/toolbar.c:74
+#: ../src/layout_util.c:1875 ../src/toolbar.c:74
 msgid "First Image"
 msgstr ""
 
-#: ../src/layout_util.c:1795 ../src/layout_util.c:1796
-#: ../src/layout_util.c:1797
+#: ../src/layout_util.c:1876 ../src/layout_util.c:1877
+#: ../src/layout_util.c:1878
 msgid "_Previous Image"
 msgstr ""
 
-#: ../src/layout_util.c:1795 ../src/layout_util.c:1796
-#: ../src/layout_util.c:1797 ../src/toolbar.c:75
+#: ../src/layout_util.c:1876 ../src/layout_util.c:1877
+#: ../src/layout_util.c:1878 ../src/toolbar.c:75
 msgid "Previous Image"
 msgstr ""
 
-#: ../src/layout_util.c:1798 ../src/layout_util.c:1799
-#: ../src/layout_util.c:1800
+#: ../src/layout_util.c:1879 ../src/layout_util.c:1880
+#: ../src/layout_util.c:1881
 msgid "_Next Image"
 msgstr ""
 
-#: ../src/layout_util.c:1798 ../src/layout_util.c:1799
-#: ../src/layout_util.c:1800 ../src/toolbar.c:76
+#: ../src/layout_util.c:1879 ../src/layout_util.c:1880
+#: ../src/layout_util.c:1881 ../src/toolbar.c:76
 msgid "Next Image"
 msgstr ""
 
-#: ../src/layout_util.c:1801
+#: ../src/layout_util.c:1882
 msgid "_Last Image"
 msgstr ""
 
-#: ../src/layout_util.c:1801 ../src/toolbar.c:77
+#: ../src/layout_util.c:1882 ../src/toolbar.c:77
 msgid "Last Image"
 msgstr ""
 
-#: ../src/layout_util.c:1802
+#: ../src/layout_util.c:1883
 msgid "_Back"
 msgstr ""
 
-#: ../src/layout_util.c:1802 ../src/toolbar.c:78
+#: ../src/layout_util.c:1883 ../src/toolbar.c:78
 msgid "Back"
 msgstr ""
 
-#: ../src/layout_util.c:1803
+#: ../src/layout_util.c:1884
 msgid "_Forward"
 msgstr ""
 
-#: ../src/layout_util.c:1803 ../src/toolbar.c:79
+#: ../src/layout_util.c:1884 ../src/toolbar.c:79
 msgid "Forward"
 msgstr ""
 
-#: ../src/layout_util.c:1804
+#: ../src/layout_util.c:1885
 msgid "_Home"
 msgstr ""
 
-#: ../src/layout_util.c:1804 ../src/options.c:203 ../src/toolbar.c:80
-#: ../src/ui_bookmark.c:567 ../src/ui_pathsel.c:1056
+#: ../src/layout_util.c:1885 ../src/options.c:217 ../src/toolbar.c:80
+#: ../src/ui_bookmark.c:578 ../src/ui_pathsel.c:1056
 msgid "Home"
 msgstr ""
 
-#: ../src/layout_util.c:1805
+#: ../src/layout_util.c:1886
 msgid "_Up"
 msgstr ""
 
-#: ../src/layout_util.c:1805 ../src/toolbar.c:81
+#: ../src/layout_util.c:1886 ../src/toolbar.c:81
 msgid "Up"
 msgstr ""
 
-#: ../src/layout_util.c:1807 ../src/toolbar.c:82
+#: ../src/layout_util.c:1888 ../src/toolbar.c:82
 msgid "New _window"
 msgstr ""
 
-#: ../src/layout_util.c:1807
+#: ../src/layout_util.c:1888
 msgid "New window"
 msgstr ""
 
-#: ../src/layout_util.c:1808
+#: ../src/layout_util.c:1889
 msgid "_New collection"
 msgstr ""
 
-#: ../src/layout_util.c:1808 ../src/menu.c:439 ../src/toolbar.c:83
+#: ../src/layout_util.c:1889 ../src/menu.c:439 ../src/toolbar.c:83
 msgid "New collection"
 msgstr ""
 
-#: ../src/layout_util.c:1809
+#: ../src/layout_util.c:1890
 msgid "_Open collection..."
 msgstr ""
 
-#: ../src/layout_util.c:1809
+#: ../src/layout_util.c:1890
 msgid "Open collection..."
 msgstr ""
 
-#: ../src/layout_util.c:1810
+#: ../src/layout_util.c:1891
 msgid "Open recen_t"
 msgstr ""
 
-#: ../src/layout_util.c:1810
+#: ../src/layout_util.c:1891
 msgid "Open recent"
 msgstr ""
 
-#: ../src/layout_util.c:1811
+#: ../src/layout_util.c:1892
 msgid "_Search..."
 msgstr ""
 
-#: ../src/layout_util.c:1811
+#: ../src/layout_util.c:1892
 msgid "Search..."
 msgstr ""
 
-#: ../src/layout_util.c:1812
+#: ../src/layout_util.c:1893
 msgid "Find duplicates..."
 msgstr ""
 
-#: ../src/layout_util.c:1813
+#: ../src/layout_util.c:1894
 msgid "Pa_n view"
 msgstr ""
 
-#: ../src/layout_util.c:1813 ../src/toolbar.c:87
+#: ../src/layout_util.c:1894 ../src/toolbar.c:93
 msgid "Pan view"
 msgstr ""
 
-#: ../src/layout_util.c:1814
+#: ../src/layout_util.c:1895
 msgid "_Print..."
 msgstr ""
 
-#: ../src/layout_util.c:1815
+#: ../src/layout_util.c:1896
 msgid "N_ew folder..."
 msgstr ""
 
-#: ../src/layout_util.c:1815
+#: ../src/layout_util.c:1896
 msgid "New folder..."
 msgstr ""
 
-#: ../src/layout_util.c:1816
+#: ../src/layout_util.c:1897
 msgid "Copy..."
 msgstr ""
 
-#: ../src/layout_util.c:1817
+#: ../src/layout_util.c:1898
 msgid "Move..."
 msgstr ""
 
-#: ../src/layout_util.c:1818
+#: ../src/layout_util.c:1899
 msgid "Rename..."
 msgstr ""
 
-#: ../src/layout_util.c:1819 ../src/layout_util.c:1820
-#: ../src/layout_util.c:1821
+#: ../src/layout_util.c:1903
 msgid "Delete..."
 msgstr ""
 
-#: ../src/layout_util.c:1822 ../src/view_file/view_file.c:640
+#: ../src/layout_util.c:1904 ../src/view_file/view_file.c:648
 msgid "Enable file _grouping"
 msgstr ""
 
-#: ../src/layout_util.c:1822
+#: ../src/layout_util.c:1904
 msgid "Enable file grouping"
 msgstr ""
 
-#: ../src/layout_util.c:1823 ../src/view_file/view_file.c:642
+#: ../src/layout_util.c:1905 ../src/view_file/view_file.c:650
 msgid "Disable file groupi_ng"
 msgstr ""
 
-#: ../src/layout_util.c:1823
+#: ../src/layout_util.c:1905
 msgid "Disable file grouping"
 msgstr ""
 
-#: ../src/layout_util.c:1824
+#: ../src/layout_util.c:1906
 msgid "_Copy path to clipboard"
 msgstr ""
 
-#: ../src/layout_util.c:1824
+#: ../src/layout_util.c:1906
 msgid "Copy path to clipboard"
 msgstr ""
 
-#: ../src/layout_util.c:1825
+#: ../src/layout_util.c:1907
 msgid "_Copy path unquoted to clipboard"
 msgstr ""
 
-#: ../src/layout_util.c:1825
+#: ../src/layout_util.c:1907
 msgid "Copy path unquoted to clipboard"
 msgstr ""
 
-#: ../src/layout_util.c:1826
+#: ../src/layout_util.c:1908
 msgid "Close window"
 msgstr ""
 
-#: ../src/layout_util.c:1827
+#: ../src/layout_util.c:1909
 msgid "_Quit"
 msgstr ""
 
-#: ../src/layout_util.c:1827 ../src/toolbar.c:117
+#: ../src/layout_util.c:1909 ../src/toolbar.c:136
 msgid "Quit"
 msgstr ""
 
-#: ../src/layout_util.c:1828 ../src/menu.c:322
+#: ../src/layout_util.c:1910 ../src/menu.c:322
 msgid "_Rotate clockwise"
 msgstr ""
 
-#: ../src/layout_util.c:1828
+#: ../src/layout_util.c:1910 ../src/toolbar.c:103
 msgid "Rotate clockwise"
 msgstr ""
 
-#: ../src/layout_util.c:1829
+#: ../src/layout_util.c:1911
 msgid "_Rating 0"
 msgstr ""
 
-#: ../src/layout_util.c:1829
+#: ../src/layout_util.c:1911
 msgid "Rating 0"
 msgstr ""
 
-#: ../src/layout_util.c:1830
+#: ../src/layout_util.c:1912
 msgid "_Rating 1"
 msgstr ""
 
-#: ../src/layout_util.c:1830
+#: ../src/layout_util.c:1912
 msgid "Rating 1"
 msgstr ""
 
-#: ../src/layout_util.c:1831
+#: ../src/layout_util.c:1913
 msgid "_Rating 2"
 msgstr ""
 
-#: ../src/layout_util.c:1831
+#: ../src/layout_util.c:1913
 msgid "Rating 2"
 msgstr ""
 
-#: ../src/layout_util.c:1832
+#: ../src/layout_util.c:1914
 msgid "_Rating 3"
 msgstr ""
 
-#: ../src/layout_util.c:1832
+#: ../src/layout_util.c:1914
 msgid "Rating 3"
 msgstr ""
 
-#: ../src/layout_util.c:1833
+#: ../src/layout_util.c:1915
 msgid "_Rating 4"
 msgstr ""
 
-#: ../src/layout_util.c:1833
+#: ../src/layout_util.c:1915
 msgid "Rating 4"
 msgstr ""
 
-#: ../src/layout_util.c:1834
+#: ../src/layout_util.c:1916
 msgid "_Rating 5"
 msgstr ""
 
-#: ../src/layout_util.c:1834
+#: ../src/layout_util.c:1916
 msgid "Rating 5"
 msgstr ""
 
-#: ../src/layout_util.c:1835
+#: ../src/layout_util.c:1917
 msgid "_Rating -1"
 msgstr ""
 
-#: ../src/layout_util.c:1835
+#: ../src/layout_util.c:1917
 msgid "Rating -1"
 msgstr ""
 
-#: ../src/layout_util.c:1836 ../src/menu.c:325
+#: ../src/layout_util.c:1918 ../src/menu.c:325
 msgid "Rotate _counterclockwise"
 msgstr ""
 
-#: ../src/layout_util.c:1836
+#: ../src/layout_util.c:1918 ../src/toolbar.c:104
 msgid "Rotate counterclockwise"
 msgstr ""
 
-#: ../src/layout_util.c:1837
+#: ../src/layout_util.c:1919
 msgid "Rotate 1_80"
 msgstr ""
 
-#: ../src/layout_util.c:1837
+#: ../src/layout_util.c:1919 ../src/toolbar.c:105
 msgid "Rotate 180"
 msgstr ""
 
-#: ../src/layout_util.c:1838 ../src/menu.c:331
+#: ../src/layout_util.c:1920 ../src/menu.c:331
 msgid "_Mirror"
 msgstr ""
 
-#: ../src/layout_util.c:1838
+#: ../src/layout_util.c:1920 ../src/toolbar.c:106
 msgid "Mirror"
 msgstr ""
 
-#: ../src/layout_util.c:1839 ../src/menu.c:334
+#: ../src/layout_util.c:1921 ../src/menu.c:334
 msgid "_Flip"
 msgstr ""
 
-#: ../src/layout_util.c:1839
+#: ../src/layout_util.c:1921 ../src/toolbar.c:107
 msgid "Flip"
 msgstr ""
 
-#: ../src/layout_util.c:1840 ../src/menu.c:337
+#: ../src/layout_util.c:1922 ../src/menu.c:337
 msgid "_Original state"
 msgstr ""
 
-#: ../src/layout_util.c:1840
+#: ../src/layout_util.c:1922 ../src/toolbar.c:108
 msgid "Original state"
 msgstr ""
 
-#: ../src/layout_util.c:1841
+#: ../src/layout_util.c:1923
 msgid "Select _all"
 msgstr ""
 
-#: ../src/layout_util.c:1842
+#: ../src/layout_util.c:1924
 msgid "Select _none"
 msgstr ""
 
-#: ../src/layout_util.c:1843
+#: ../src/layout_util.c:1925
 msgid "_Invert Selection"
 msgstr ""
 
-#: ../src/layout_util.c:1843
+#: ../src/layout_util.c:1925
 msgid "Invert Selection"
 msgstr ""
 
-#: ../src/layout_util.c:1844
+#: ../src/layout_util.c:1926
 msgid "P_references..."
 msgstr ""
 
-#: ../src/layout_util.c:1844
+#: ../src/layout_util.c:1926
 msgid "Preferences..."
 msgstr ""
 
-#: ../src/layout_util.c:1845
+#: ../src/layout_util.c:1927
 msgid "Configure _Plugins..."
 msgstr ""
 
-#: ../src/layout_util.c:1845
+#: ../src/layout_util.c:1927
 msgid "Configure Plugins..."
 msgstr ""
 
-#: ../src/layout_util.c:1846
+#: ../src/layout_util.c:1928
 msgid "_Configure this window..."
 msgstr ""
 
-#: ../src/layout_util.c:1846
+#: ../src/layout_util.c:1928
 msgid "Configure this window..."
 msgstr ""
 
-#: ../src/layout_util.c:1847
+#: ../src/layout_util.c:1929
 msgid "_Cache maintenance..."
 msgstr ""
 
-#: ../src/layout_util.c:1847
+#: ../src/layout_util.c:1929
 msgid "Cache maintenance..."
 msgstr ""
 
-#: ../src/layout_util.c:1848
+#: ../src/layout_util.c:1930
 msgid "Set as wallpaper"
 msgstr ""
 
-#: ../src/layout_util.c:1849
+#: ../src/layout_util.c:1931
 msgid "_Save metadata"
 msgstr ""
 
-#: ../src/layout_util.c:1849
+#: ../src/layout_util.c:1931
 msgid "Save metadata"
 msgstr ""
 
-#: ../src/layout_util.c:1850 ../src/layout_util.c:1851 ../src/toolbar.c:92
+#: ../src/layout_util.c:1932
+msgid "Keyword autocomplete"
+msgstr ""
+
+#: ../src/layout_util.c:1932
+msgid "Keyword Autocomplete"
+msgstr ""
+
+#: ../src/layout_util.c:1933 ../src/layout_util.c:1934 ../src/toolbar.c:109
 msgid "Zoom in"
 msgstr ""
 
-#: ../src/layout_util.c:1852 ../src/layout_util.c:1853 ../src/toolbar.c:93
+#: ../src/layout_util.c:1935 ../src/layout_util.c:1936 ../src/toolbar.c:110
 msgid "Zoom out"
 msgstr ""
 
-#: ../src/layout_util.c:1854 ../src/layout_util.c:1855 ../src/toolbar.c:94
+#: ../src/layout_util.c:1937 ../src/layout_util.c:1938 ../src/toolbar.c:111
 msgid "Zoom 1:1"
 msgstr ""
 
-#: ../src/layout_util.c:1856 ../src/layout_util.c:1857
-#: ../src/layout_util.c:1872 ../src/layout_util.c:1873
+#: ../src/layout_util.c:1939 ../src/layout_util.c:1940
+#: ../src/layout_util.c:1955 ../src/layout_util.c:1956
 msgid "_Zoom to fit"
 msgstr ""
 
-#: ../src/layout_util.c:1856 ../src/layout_util.c:1857 ../src/toolbar.c:95
+#: ../src/layout_util.c:1939 ../src/layout_util.c:1940 ../src/toolbar.c:112
 msgid "Zoom to fit"
 msgstr ""
 
-#: ../src/layout_util.c:1858 ../src/layout_util.c:1874
+#: ../src/layout_util.c:1941 ../src/layout_util.c:1957
 msgid "Fit _Horizontally"
 msgstr ""
 
-#: ../src/layout_util.c:1858
+#: ../src/layout_util.c:1941
 msgid "Fit Horizontally"
 msgstr ""
 
-#: ../src/layout_util.c:1859 ../src/layout_util.c:1875
+#: ../src/layout_util.c:1942 ../src/layout_util.c:1958
 msgid "Fit _Vertically"
 msgstr ""
 
-#: ../src/layout_util.c:1859
+#: ../src/layout_util.c:1942
 msgid "Fit Vertically"
 msgstr ""
 
-#: ../src/layout_util.c:1860 ../src/layout_util.c:1876
+#: ../src/layout_util.c:1943 ../src/layout_util.c:1959
 msgid "Zoom _2:1"
 msgstr ""
 
-#: ../src/layout_util.c:1860 ../src/toolbar.c:98
+#: ../src/layout_util.c:1943 ../src/toolbar.c:115
 msgid "Zoom 2:1"
 msgstr ""
 
-#: ../src/layout_util.c:1861 ../src/layout_util.c:1877
+#: ../src/layout_util.c:1944 ../src/layout_util.c:1960
 msgid "Zoom _3:1"
 msgstr ""
 
-#: ../src/layout_util.c:1861 ../src/toolbar.c:99
+#: ../src/layout_util.c:1944 ../src/toolbar.c:116
 msgid "Zoom 3:1"
 msgstr ""
 
-#: ../src/layout_util.c:1862 ../src/layout_util.c:1878
+#: ../src/layout_util.c:1945 ../src/layout_util.c:1961
 msgid "Zoom _4:1"
 msgstr ""
 
-#: ../src/layout_util.c:1862 ../src/toolbar.c:100
+#: ../src/layout_util.c:1945 ../src/toolbar.c:117
 msgid "Zoom 4:1"
 msgstr ""
 
-#: ../src/layout_util.c:1863 ../src/layout_util.c:1879 ../src/toolbar.c:101
+#: ../src/layout_util.c:1946 ../src/layout_util.c:1962 ../src/toolbar.c:118
 msgid "Zoom 1:2"
 msgstr ""
 
-#: ../src/layout_util.c:1864 ../src/layout_util.c:1880
+#: ../src/layout_util.c:1947 ../src/layout_util.c:1963
 msgid "Zoom 1:3"
 msgstr ""
 
-#: ../src/layout_util.c:1865 ../src/layout_util.c:1881 ../src/toolbar.c:103
+#: ../src/layout_util.c:1948 ../src/layout_util.c:1964 ../src/toolbar.c:120
 msgid "Zoom 1:4"
 msgstr ""
 
-#: ../src/layout_util.c:1866 ../src/layout_util.c:1867 ../src/toolbar.c:104
+#: ../src/layout_util.c:1949 ../src/layout_util.c:1950 ../src/toolbar.c:121
 msgid "Connected Zoom in"
 msgstr ""
 
-#: ../src/layout_util.c:1868 ../src/layout_util.c:1869
+#: ../src/layout_util.c:1951 ../src/layout_util.c:1952
 msgid "Connected Zoom out"
 msgstr ""
 
-#: ../src/layout_util.c:1870 ../src/layout_util.c:1871
+#: ../src/layout_util.c:1953 ../src/layout_util.c:1954
 msgid "Connected Zoom 1:1"
 msgstr ""
 
-#: ../src/layout_util.c:1872 ../src/layout_util.c:1873
+#: ../src/layout_util.c:1955 ../src/layout_util.c:1956
 msgid "Connected Zoom to fit"
 msgstr ""
 
-#: ../src/layout_util.c:1874
+#: ../src/layout_util.c:1957
 msgid "Connected Fit Horizontally"
 msgstr ""
 
-#: ../src/layout_util.c:1875
+#: ../src/layout_util.c:1958
 msgid "Connected Fit Vertically"
 msgstr ""
 
-#: ../src/layout_util.c:1876
+#: ../src/layout_util.c:1959
 msgid "Connected Zoom 2:1"
 msgstr ""
 
-#: ../src/layout_util.c:1877
+#: ../src/layout_util.c:1960
 msgid "Connected Zoom 3:1"
 msgstr ""
 
-#: ../src/layout_util.c:1878
+#: ../src/layout_util.c:1961
 msgid "Connected Zoom 4:1"
 msgstr ""
 
-#: ../src/layout_util.c:1879
+#: ../src/layout_util.c:1962
 msgid "Connected Zoom 1:2"
 msgstr ""
 
-#: ../src/layout_util.c:1880
+#: ../src/layout_util.c:1963
 msgid "Connected Zoom 1:3"
 msgstr ""
 
-#: ../src/layout_util.c:1881
+#: ../src/layout_util.c:1964
 msgid "Connected Zoom 1:4"
 msgstr ""
 
-#: ../src/layout_util.c:1882
+#: ../src/layout_util.c:1965
 msgid "_View in new window"
 msgstr ""
 
-#: ../src/layout_util.c:1882
+#: ../src/layout_util.c:1965
 msgid "View in new window"
 msgstr ""
 
-#: ../src/layout_util.c:1883 ../src/layout_util.c:1884
-#: ../src/layout_util.c:1885
+#: ../src/layout_util.c:1966 ../src/layout_util.c:1967
+#: ../src/layout_util.c:1968
 msgid "F_ull screen"
 msgstr ""
 
-#: ../src/layout_util.c:1886 ../src/layout_util.c:1887
+#: ../src/layout_util.c:1969 ../src/layout_util.c:1970
 msgid "_Leave full screen"
 msgstr ""
 
-#: ../src/layout_util.c:1886 ../src/layout_util.c:1887
+#: ../src/layout_util.c:1969 ../src/layout_util.c:1970
 msgid "Leave full screen"
 msgstr ""
 
-#: ../src/layout_util.c:1888
+#: ../src/layout_util.c:1971
 msgid "_Cycle through overlay modes"
 msgstr ""
 
-#: ../src/layout_util.c:1888
+#: ../src/layout_util.c:1971
 msgid "Cycle through Overlay modes"
 msgstr ""
 
-#: ../src/layout_util.c:1889
+#: ../src/layout_util.c:1972
 msgid "Cycle through histogram ch_annels"
 msgstr ""
 
-#: ../src/layout_util.c:1889
+#: ../src/layout_util.c:1972
 msgid "Cycle through histogram channels"
 msgstr ""
 
-#: ../src/layout_util.c:1890
+#: ../src/layout_util.c:1973
 msgid "Cycle through histogram mo_des"
 msgstr ""
 
-#: ../src/layout_util.c:1890
+#: ../src/layout_util.c:1973
 msgid "Cycle through histogram modes"
 msgstr ""
 
-#: ../src/layout_util.c:1891
+#: ../src/layout_util.c:1974
 msgid "_Hide file list"
 msgstr ""
 
-#: ../src/layout_util.c:1891 ../src/toolbar.c:105
+#: ../src/layout_util.c:1974 ../src/toolbar.c:122
 msgid "Hide file list"
 msgstr ""
 
-#: ../src/layout_util.c:1892
+#: ../src/layout_util.c:1975
 msgid "_Pause slideshow"
 msgstr ""
 
-#: ../src/layout_util.c:1892 ../src/toolbar.c:106
+#: ../src/layout_util.c:1975 ../src/toolbar.c:123
 msgid "Pause slideshow"
 msgstr ""
 
-#: ../src/layout_util.c:1893
+#: ../src/layout_util.c:1976
 msgid "Faster"
 msgstr ""
 
-#: ../src/layout_util.c:1894
+#: ../src/layout_util.c:1977
 msgid "Slower"
 msgstr ""
 
-#: ../src/layout_util.c:1895
+#: ../src/layout_util.c:1978
 msgid "_Refresh"
 msgstr ""
 
-#: ../src/layout_util.c:1895 ../src/toolbar.c:109
+#: ../src/layout_util.c:1978 ../src/toolbar.c:126
 msgid "Refresh"
 msgstr ""
 
-#: ../src/layout_util.c:1896
+#: ../src/layout_util.c:1979
 msgid "_Contents"
 msgstr ""
 
-#: ../src/layout_util.c:1896
+#: ../src/layout_util.c:1979
 msgid "Contents"
 msgstr ""
 
-#: ../src/layout_util.c:1897 ../src/window.c:371
+#: ../src/layout_util.c:1980 ../src/window.c:371
 msgid "On-line help search"
 msgstr ""
 
-#: ../src/layout_util.c:1898
+#: ../src/layout_util.c:1981
 msgid "_Keyboard shortcuts"
 msgstr ""
 
-#: ../src/layout_util.c:1898
+#: ../src/layout_util.c:1981
 msgid "Keyboard shortcuts"
 msgstr ""
 
-#: ../src/layout_util.c:1899
+#: ../src/layout_util.c:1982
 msgid "_Keyboard map"
 msgstr ""
 
-#: ../src/layout_util.c:1899
+#: ../src/layout_util.c:1982
 msgid "Keyboard map"
 msgstr ""
 
-#: ../src/layout_util.c:1900
+#: ../src/layout_util.c:1983
 msgid "_Release notes"
 msgstr ""
 
-#: ../src/layout_util.c:1900
+#: ../src/layout_util.c:1983
 msgid "Release notes"
 msgstr ""
 
-#: ../src/layout_util.c:1901
+#: ../src/layout_util.c:1984
 msgid "_ChangeLog"
 msgstr ""
 
-#: ../src/layout_util.c:1901
+#: ../src/layout_util.c:1984
 msgid "ChangeLog notes"
 msgstr ""
 
-#: ../src/layout_util.c:1902
+#: ../src/layout_util.c:1985
 msgid "_About"
 msgstr ""
 
-#: ../src/layout_util.c:1902
+#: ../src/layout_util.c:1985
 msgid "About"
 msgstr ""
 
-#: ../src/layout_util.c:1903
+#: ../src/layout_util.c:1986
 msgid "_Log Window"
 msgstr ""
 
-#: ../src/layout_util.c:1903
+#: ../src/layout_util.c:1986
 msgid "Log Window"
 msgstr ""
 
-#: ../src/layout_util.c:1904
+#: ../src/layout_util.c:1987
 msgid "_Exif window"
 msgstr ""
 
-#: ../src/layout_util.c:1904 ../src/toolbar.c:111
+#: ../src/layout_util.c:1987 ../src/toolbar.c:128
 msgid "Exif window"
 msgstr ""
 
-#: ../src/layout_util.c:1905
+#: ../src/layout_util.c:1988
 msgid "_Cycle through stereo modes"
 msgstr ""
 
-#: ../src/layout_util.c:1905
+#: ../src/layout_util.c:1988
 msgid "Cycle through stereo modes"
 msgstr ""
 
-#: ../src/layout_util.c:1906
+#: ../src/layout_util.c:1989
 msgid "_Next Pane"
 msgstr ""
 
-#: ../src/layout_util.c:1906
+#: ../src/layout_util.c:1989
 msgid "Next Pane"
 msgstr ""
 
-#: ../src/layout_util.c:1907
+#: ../src/layout_util.c:1990
 msgid "_Previous Pane"
 msgstr ""
 
-#: ../src/layout_util.c:1907
+#: ../src/layout_util.c:1990
 msgid "Previous Pane"
 msgstr ""
 
-#: ../src/layout_util.c:1908
+#: ../src/layout_util.c:1991
 msgid "_Up Pane"
 msgstr ""
 
-#: ../src/layout_util.c:1908
+#: ../src/layout_util.c:1991
 msgid "Up Pane"
 msgstr ""
 
-#: ../src/layout_util.c:1909
+#: ../src/layout_util.c:1992
 msgid "_Down Pane"
 msgstr ""
 
-#: ../src/layout_util.c:1909
+#: ../src/layout_util.c:1992
 msgid "Down Pane"
 msgstr ""
 
-#: ../src/layout_util.c:1910
+#: ../src/layout_util.c:1993
 msgid "_Write orientation to file"
 msgstr ""
 
-#: ../src/layout_util.c:1910
+#: ../src/layout_util.c:1993
 msgid "Write orientation to file"
 msgstr ""
 
-#: ../src/layout_util.c:1911
+#: ../src/layout_util.c:1994
 msgid "_Write orientation to file (preserve timestamp)"
 msgstr ""
 
-#: ../src/layout_util.c:1911
+#: ../src/layout_util.c:1994
 msgid "Write orientation to file (preserve timestamp)"
 msgstr ""
 
-#: ../src/layout_util.c:1912
+#: ../src/layout_util.c:1995
 msgid "Clear Marks..."
 msgstr ""
 
-#: ../src/layout_util.c:1916
+#: ../src/layout_util.c:1999
 msgid "Show _Thumbnails"
 msgstr ""
 
-#: ../src/layout_util.c:1916
+#: ../src/layout_util.c:1999
 msgid "Show Thumbnails"
 msgstr ""
 
-#: ../src/layout_util.c:1917
+#: ../src/layout_util.c:2000
 msgid "Show _Marks"
 msgstr ""
 
-#: ../src/layout_util.c:1917
+#: ../src/layout_util.c:2000
 msgid "Show Marks"
 msgstr ""
 
-#: ../src/layout_util.c:1918
+#: ../src/layout_util.c:2001
+msgid "Show File Filter"
+msgstr ""
+
+#: ../src/layout_util.c:2002
 msgid "Pi_xel Info"
 msgstr ""
 
-#: ../src/layout_util.c:1918
+#: ../src/layout_util.c:2002
 msgid "Show Pixel Info"
 msgstr ""
 
-#: ../src/layout_util.c:1919
+#: ../src/layout_util.c:2003
 msgid "_Float file list"
 msgstr ""
 
-#: ../src/layout_util.c:1919 ../src/toolbar.c:114
+#: ../src/layout_util.c:2003 ../src/toolbar.c:133
 msgid "Float file list"
 msgstr ""
 
-#: ../src/layout_util.c:1920
+#: ../src/layout_util.c:2004
 msgid "Hide tool_bar"
 msgstr ""
 
-#: ../src/layout_util.c:1920
+#: ../src/layout_util.c:2004
 msgid "Hide toolbar"
 msgstr ""
 
-#: ../src/layout_util.c:1921
+#: ../src/layout_util.c:2005
 msgid "_Info sidebar"
 msgstr ""
 
-#: ../src/layout_util.c:1921 ../src/toolbar.c:115
+#: ../src/layout_util.c:2005 ../src/toolbar.c:134
 msgid "Info sidebar"
 msgstr ""
 
-#: ../src/layout_util.c:1922
+#: ../src/layout_util.c:2006
 msgid "Sort _manager"
 msgstr ""
 
-#: ../src/layout_util.c:1922 ../src/toolbar.c:116
+#: ../src/layout_util.c:2006 ../src/toolbar.c:135
 msgid "Sort manager"
 msgstr ""
 
-#: ../src/layout_util.c:1923
+#: ../src/layout_util.c:2007
 msgid "Hide Bars"
 msgstr ""
 
-#: ../src/layout_util.c:1924
+#: ../src/layout_util.c:2008
 msgid "Toggle _slideshow"
 msgstr ""
 
-#: ../src/layout_util.c:1924
+#: ../src/layout_util.c:2008
 msgid "Toggle slideshow"
 msgstr ""
 
-#: ../src/layout_util.c:1925
+#: ../src/layout_util.c:2009
 msgid "Use _color profiles"
 msgstr "Use _colour profiles"
 
-#: ../src/layout_util.c:1925
+#: ../src/layout_util.c:2009
 msgid "Use color profiles"
 msgstr "Use colour profiles"
 
-#: ../src/layout_util.c:1926
+#: ../src/layout_util.c:2010
 msgid "Use profile from _image"
 msgstr ""
 
-#: ../src/layout_util.c:1926
+#: ../src/layout_util.c:2010
 msgid "Use profile from image"
 msgstr ""
 
-#: ../src/layout_util.c:1927
+#: ../src/layout_util.c:2011
 msgid "Toggle _grayscale"
 msgstr ""
 
-#: ../src/layout_util.c:1927
+#: ../src/layout_util.c:2011
 msgid "Toggle grayscale"
 msgstr ""
 
-#: ../src/layout_util.c:1928
+#: ../src/layout_util.c:2012
 msgid "Image Overlay"
 msgstr ""
 
-#: ../src/layout_util.c:1929
+#: ../src/layout_util.c:2013
 msgid "_Show Histogram"
 msgstr ""
 
-#: ../src/layout_util.c:1929
+#: ../src/layout_util.c:2013
 msgid "Show Histogram"
 msgstr ""
 
-#: ../src/layout_util.c:1930
+#: ../src/layout_util.c:2014
+msgid "_Show Guidelines"
+msgstr ""
+
+#: ../src/layout_util.c:2014
+msgid "Show Guidelines"
+msgstr ""
+
+#: ../src/layout_util.c:2015
 msgid "Rectangular Selection"
 msgstr ""
 
-#: ../src/layout_util.c:1931
+#: ../src/layout_util.c:2016
 msgid "GIF _animation"
 msgstr ""
 
-#: ../src/layout_util.c:1931
+#: ../src/layout_util.c:2016
 msgid "Toggle GIF animation"
 msgstr ""
 
-#: ../src/layout_util.c:1932
+#: ../src/layout_util.c:2017
 msgid "_Exif rotate"
 msgstr ""
 
-#: ../src/layout_util.c:1932
+#: ../src/layout_util.c:2017
 msgid "Exif rotate"
 msgstr ""
 
-#: ../src/layout_util.c:1936
+#: ../src/layout_util.c:2018 ../src/toolbar.c:132
+msgid "Draw Rectangle"
+msgstr ""
+
+#: ../src/layout_util.c:2022
 msgid "Image _List"
 msgstr ""
 
-#: ../src/layout_util.c:1936
+#: ../src/layout_util.c:2022
 msgid "View Images as List"
 msgstr ""
 
-#: ../src/layout_util.c:1937
+#: ../src/layout_util.c:2023
 msgid "I_cons"
 msgstr ""
 
-#: ../src/layout_util.c:1937
+#: ../src/layout_util.c:2023
 msgid "View Images as Icons"
 msgstr ""
 
-#: ../src/layout_util.c:1941
+#: ../src/layout_util.c:2027
 msgid "T_oggle Folder View"
 msgstr ""
 
-#: ../src/layout_util.c:1941
+#: ../src/layout_util.c:2027
 msgid "Toggle Folders View"
 msgstr ""
 
-#: ../src/layout_util.c:1945
+#: ../src/layout_util.c:2031
 msgid "_Horizontal"
 msgstr ""
 
-#: ../src/layout_util.c:1945
+#: ../src/layout_util.c:2031
 msgid "Split Horizontal"
 msgstr ""
 
-#: ../src/layout_util.c:1946
+#: ../src/layout_util.c:2032
 msgid "_Vertical"
 msgstr ""
 
-#: ../src/layout_util.c:1946
+#: ../src/layout_util.c:2032
 msgid "Split Vertical"
 msgstr ""
 
-#: ../src/layout_util.c:1947
+#: ../src/layout_util.c:2033
 msgid "_Quad"
 msgstr ""
 
-#: ../src/layout_util.c:1947
+#: ../src/layout_util.c:2033
 msgid "Split Quad"
 msgstr ""
 
-#: ../src/layout_util.c:1948
+#: ../src/layout_util.c:2034
 msgid "_Single"
 msgstr ""
 
-#: ../src/layout_util.c:1948
+#: ../src/layout_util.c:2034
 msgid "Split Single"
 msgstr ""
 
-#: ../src/layout_util.c:1952
+#: ../src/layout_util.c:2038
 msgid "Input _0: sRGB"
 msgstr ""
 
-#: ../src/layout_util.c:1952
+#: ../src/layout_util.c:2038
 msgid "Input 0: sRGB"
 msgstr ""
 
-#: ../src/layout_util.c:1953
+#: ../src/layout_util.c:2039
 msgid "Input _1: AdobeRGB compatible"
 msgstr ""
 
-#: ../src/layout_util.c:1953
+#: ../src/layout_util.c:2039
 msgid "Input 1: AdobeRGB compatible"
 msgstr ""
 
-#: ../src/layout_util.c:1954
+#: ../src/layout_util.c:2040
 msgid "Input _2"
 msgstr ""
 
-#: ../src/layout_util.c:1954
+#: ../src/layout_util.c:2040
 msgid "Input 2"
 msgstr ""
 
-#: ../src/layout_util.c:1955
+#: ../src/layout_util.c:2041
 msgid "Input _3"
 msgstr ""
 
-#: ../src/layout_util.c:1955
+#: ../src/layout_util.c:2041
 msgid "Input 3"
 msgstr ""
 
-#: ../src/layout_util.c:1956
+#: ../src/layout_util.c:2042
 msgid "Input _4"
 msgstr ""
 
-#: ../src/layout_util.c:1956
+#: ../src/layout_util.c:2042
 msgid "Input 4"
 msgstr ""
 
-#: ../src/layout_util.c:1957
+#: ../src/layout_util.c:2043
 msgid "Input _5"
 msgstr ""
 
-#: ../src/layout_util.c:1957
+#: ../src/layout_util.c:2043
 msgid "Input 5"
 msgstr ""
 
-#: ../src/layout_util.c:1961
+#: ../src/layout_util.c:2047
 msgid "Histogram on Red"
 msgstr ""
 
-#: ../src/layout_util.c:1962
+#: ../src/layout_util.c:2048
 msgid "Histogram on Green"
 msgstr ""
 
-#: ../src/layout_util.c:1963
+#: ../src/layout_util.c:2049
 msgid "Histogram on Blue"
 msgstr ""
 
-#: ../src/layout_util.c:1964
+#: ../src/layout_util.c:2050
 msgid "Histogram on RGB"
 msgstr ""
 
-#: ../src/layout_util.c:1965
+#: ../src/layout_util.c:2051
 msgid "Histogram on Value"
 msgstr ""
 
-#: ../src/layout_util.c:1969
+#: ../src/layout_util.c:2055
 msgid "Linear Histogram"
 msgstr ""
 
-#: ../src/layout_util.c:1970
+#: ../src/layout_util.c:2056
 msgid "_Log Histogram"
 msgstr ""
 
-#: ../src/layout_util.c:1970
+#: ../src/layout_util.c:2056
 msgid "Log Histogram"
 msgstr ""
 
-#: ../src/layout_util.c:1974
+#: ../src/layout_util.c:2060
 msgid "_Auto"
 msgstr ""
 
-#: ../src/layout_util.c:1974
+#: ../src/layout_util.c:2060
 msgid "Stereo Auto"
 msgstr ""
 
-#: ../src/layout_util.c:1975
+#: ../src/layout_util.c:2061
 msgid "_Side by Side"
 msgstr ""
 
-#: ../src/layout_util.c:1975
+#: ../src/layout_util.c:2061
 msgid "Stereo Side by Side"
 msgstr ""
 
-#: ../src/layout_util.c:1976
+#: ../src/layout_util.c:2062
 msgid "_Cross"
 msgstr ""
 
-#: ../src/layout_util.c:1976
+#: ../src/layout_util.c:2062
 msgid "Stereo Cross"
 msgstr ""
 
-#: ../src/layout_util.c:1977
+#: ../src/layout_util.c:2063
 msgid "_Off"
 msgstr ""
 
-#: ../src/layout_util.c:1977
+#: ../src/layout_util.c:2063
 msgid "Stereo Off"
 msgstr ""
 
-#: ../src/layout_util.c:2290
+#: ../src/layout_util.c:2384
 #, c-format
 msgid "Mark _%d"
 msgstr ""
 
-#: ../src/layout_util.c:2291 ../src/view_file/view_file.c:574
+#: ../src/layout_util.c:2385 ../src/view_file/view_file.c:575
 #, c-format
 msgid "_Set mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2291
+#: ../src/layout_util.c:2385
 #, c-format
 msgid "Set mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2292 ../src/view_file/view_file.c:575
+#: ../src/layout_util.c:2386 ../src/view_file/view_file.c:576
 #, c-format
 msgid "_Reset mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2292
+#: ../src/layout_util.c:2386
 #, c-format
 msgid "Reset mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2293 ../src/layout_util.c:2294
-#: ../src/view_file/view_file.c:576
+#: ../src/layout_util.c:2387 ../src/layout_util.c:2388
+#: ../src/view_file/view_file.c:577
 #, c-format
 msgid "_Toggle mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2293 ../src/layout_util.c:2294
+#: ../src/layout_util.c:2387 ../src/layout_util.c:2388
 #, c-format
 msgid "Toggle mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2295
+#: ../src/layout_util.c:2389
 #, c-format
 msgid "Se_lect mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2295 ../src/layout_util.c:2296
+#: ../src/layout_util.c:2389 ../src/layout_util.c:2390
 #, c-format
 msgid "Select mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2296 ../src/view_file/view_file.c:577
+#: ../src/layout_util.c:2390 ../src/view_file/view_file.c:578
 #, c-format
 msgid "_Select mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2297 ../src/view_file/view_file.c:578
+#: ../src/layout_util.c:2391 ../src/view_file/view_file.c:579
 #, c-format
 msgid "_Add mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2297
+#: ../src/layout_util.c:2391
 #, c-format
 msgid "Add mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2298 ../src/view_file/view_file.c:579
+#: ../src/layout_util.c:2392 ../src/view_file/view_file.c:580
 #, c-format
 msgid "_Intersection with mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2298
+#: ../src/layout_util.c:2392
 #, c-format
 msgid "Intersection with mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2299 ../src/view_file/view_file.c:580
+#: ../src/layout_util.c:2393 ../src/view_file/view_file.c:581
 #, c-format
 msgid "_Unselect mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2299
+#: ../src/layout_util.c:2393
 #, c-format
 msgid "Unselect mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2300
+#: ../src/layout_util.c:2394
 #, c-format
 msgid "_Filter mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2300
+#: ../src/layout_util.c:2394
 #, c-format
 msgid "Filter mark %d"
 msgstr ""
 
-#: ../src/layout_util.c:2854
+#: ../src/layout_util.c:2966
 #, c-format
 msgid "Number of files with unsaved metadata: %d"
 msgstr ""
 
-#: ../src/layout_util.c:2860
+#: ../src/layout_util.c:2972
 msgid "No unsaved metadata"
 msgstr ""
 
-#: ../src/layout_util.c:2907
+#: ../src/layout_util.c:3019
 #, c-format
 msgid ""
 "Image profile: %s\n"
 "Screen profile: %s"
 msgstr ""
 
-#: ../src/layout_util.c:2915
+#: ../src/layout_util.c:3027
 msgid "Click to enable color management"
 msgstr "Click to enable colour management"
 
-#: ../src/layout_util.c:2920
+#: ../src/layout_util.c:3032
 msgid "Color profiles not supported"
 msgstr "Colour profiles not supported"
 
-#: ../src/layout_util.c:2942
+#: ../src/layout_util.c:3054
 #, c-format
 msgid "Input _%d: %s"
 msgstr ""
@@ -3511,7 +3611,7 @@ msgstr ""
 msgid "Log"
 msgstr ""
 
-#: ../src/logwindow.c:172 ../src/preferences.c:2636
+#: ../src/logwindow.c:172 ../src/preferences.c:3218
 msgid "Debug level:"
 msgstr ""
 
@@ -3642,7 +3742,7 @@ msgstr ""
 msgid "Collections have been modified. Quit anyway?"
 msgstr ""
 
-#: ../src/main.c:973 ../src/remote.c:790
+#: ../src/main.c:973 ../src/remote.c:847
 msgid "Command line"
 msgstr ""
 
@@ -3694,7 +3794,7 @@ msgstr ""
 msgid "Zoom to original size"
 msgstr ""
 
-#: ../src/menu.c:245 ../src/preferences.c:1936
+#: ../src/menu.c:245 ../src/preferences.c:1955
 msgid "Fit image to window"
 msgstr ""
 
@@ -3702,7 +3802,7 @@ msgstr ""
 msgid "Leave Zoom at previous setting"
 msgstr ""
 
-#: ../src/menu.c:303 ../src/preferences.c:1917
+#: ../src/menu.c:303 ../src/preferences.c:1936 ../src/preferences.c:2066
 msgid "Zoom"
 msgstr ""
 
@@ -3798,7 +3898,7 @@ msgstr ""
 msgid "Sea"
 msgstr ""
 
-#: ../src/metadata.c:1733 ../src/print.c:385
+#: ../src/metadata.c:1733
 msgid "Landscape"
 msgstr ""
 
@@ -3934,7 +4034,7 @@ msgstr ""
 msgid "Macro"
 msgstr ""
 
-#: ../src/metadata.c:1769 ../src/print.c:384
+#: ../src/metadata.c:1769
 msgid "Portrait"
 msgstr ""
 
@@ -3946,12 +4046,12 @@ msgstr ""
 msgid "Perspective"
 msgstr ""
 
-#: ../src/options.c:205 ../src/ui_bookmark.c:578
+#: ../src/options.c:219 ../src/ui_bookmark.c:589
 msgid "Desktop"
 msgstr ""
 
-#: ../src/options.c:226 ../src/search.c:2140 ../src/search.c:2144
-#: ../src/search.c:3258 ../src/search.c:3262 ../src/view_file/view_file.c:820
+#: ../src/options.c:240 ../src/search.c:2230 ../src/search.c:2234
+#: ../src/search.c:3382 ../src/search.c:3386 ../src/view_file/view_file.c:828
 msgid "Mark "
 msgstr ""
 
@@ -3977,140 +4077,141 @@ msgstr ""
 msgid "Sorting images..."
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1408 ../src/print.c:2609
+#: ../src/pan-view/pan-view.c:1412
 msgid "Filename:"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1410 ../src/pan-view/pan-view.c:1823
-#: ../src/preferences.c:2034
+#: ../src/pan-view/pan-view.c:1414 ../src/pan-view/pan-view.c:1827
+#: ../src/preferences.c:2050
 msgid "Location:"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1412 ../src/pan-view/pan-view-search.c:377
+#: ../src/pan-view/pan-view.c:1416 ../src/pan-view/pan-view-search.c:377
 msgid "Date:"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1414 ../src/preferences.c:1717
-#: ../src/print.c:3222 ../src/print.c:3427
+#: ../src/pan-view/pan-view.c:1418 ../src/preferences.c:1724
 msgid "Size:"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1721 ../src/search.c:2560
+#: ../src/pan-view/pan-view.c:1725 ../src/search.c:2680
 msgid "Folder not found"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1722
+#: ../src/pan-view/pan-view.c:1726
 msgid "The entered path is not a folder"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1807
+#: ../src/pan-view/pan-view.c:1811
 msgid "Pan View"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1830
+#: ../src/pan-view/pan-view.c:1834
 msgid "Timeline"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1831
+#: ../src/pan-view/pan-view.c:1835
 msgid "Calendar"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1833
+#: ../src/pan-view/pan-view.c:1837
 msgid "Folders (flower)"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1834
+#: ../src/pan-view/pan-view.c:1838
 msgid "Grid"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1843
+#: ../src/pan-view/pan-view.c:1847
 msgid "Dots"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1844
+#: ../src/pan-view/pan-view.c:1848
 msgid "No Images"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1845
+#: ../src/pan-view/pan-view.c:1849
 msgid "Small Thumbnails"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1846
+#: ../src/pan-view/pan-view.c:1850
 msgid "Normal Thumbnails"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1847
+#: ../src/pan-view/pan-view.c:1851
 msgid "Large Thumbnails"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1848 ../src/pan-view/pan-view.c:2349
+#: ../src/pan-view/pan-view.c:1852 ../src/pan-view/pan-view.c:2376
 msgid "1:10 (10%)"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1849 ../src/pan-view/pan-view.c:2345
+#: ../src/pan-view/pan-view.c:1853 ../src/pan-view/pan-view.c:2372
 msgid "1:4 (25%)"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1850 ../src/pan-view/pan-view.c:2341
+#: ../src/pan-view/pan-view.c:1854 ../src/pan-view/pan-view.c:2368
 msgid "1:3 (33%)"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1851 ../src/pan-view/pan-view.c:2337
+#: ../src/pan-view/pan-view.c:1855 ../src/pan-view/pan-view.c:2364
 msgid "1:2 (50%)"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1852
+#: ../src/pan-view/pan-view.c:1856
 msgid "1:1 (100%)"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:1998
+#: ../src/pan-view/pan-view.c:2002
 msgid "Pan View Performance"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:2005
+#: ../src/pan-view/pan-view.c:2009
 msgid "Pan view performance may be poor."
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:2006
+#: ../src/pan-view/pan-view.c:2010
 msgid ""
-"To improve performance of thumbnails in the pan view the following options "
-"can be enabled. Note that both options must be enabled to notice a change in "
-"performance."
+"To improve the performance of thumbnails in\n"
+"pan view the following options can be enabled.\n"
+"\n"
+"Note that both options must be enabled to\n"
+"notice a change in performance."
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:2014 ../src/preferences.c:1720
+#: ../src/pan-view/pan-view.c:2016 ../src/preferences.c:1727
 msgid "Cache thumbnails"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:2016
+#: ../src/pan-view/pan-view.c:2018
 msgid "Use shared thumbnail cache"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:2022
+#: ../src/pan-view/pan-view.c:2024
 msgid "Do not show this dialog again"
 msgstr "Do not show this dialogue again"
 
-#: ../src/pan-view/pan-view.c:2271 ../src/search.c:1091
+#: ../src/pan-view/pan-view.c:2290 ../src/search.c:1103
 msgid "_Play"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:2317
+#: ../src/pan-view/pan-view.c:2344
 msgid "Sort by E_xif date"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:2323
+#: ../src/pan-view/pan-view.c:2350
 msgid "_Show Exif information"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:2325
+#: ../src/pan-view/pan-view.c:2352
 msgid "Show im_age"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:2329
+#: ../src/pan-view/pan-view.c:2356
 msgid "_None"
 msgstr ""
 
-#: ../src/pan-view/pan-view.c:2333
+#: ../src/pan-view/pan-view.c:2360
 msgid "_Full size"
 msgstr ""
 
@@ -4150,7 +4251,7 @@ msgstr ""
 msgid "Keyword Filter:"
 msgstr ""
 
-#: ../src/pan-view/pan-view-filter.c:105 ../src/preferences.c:2198
+#: ../src/pan-view/pan-view-filter.c:105 ../src/preferences.c:2406
 msgid "Filter"
 msgstr ""
 
@@ -4182,271 +4283,297 @@ msgstr ""
 msgid "no match"
 msgstr ""
 
-#: ../src/preferences.c:108 ../src/search.c:3243
+#: ../src/preferences.c:115 ../src/search.c:3367
 msgid "Unknown"
 msgstr ""
 
-#: ../src/preferences.c:110
+#: ../src/preferences.c:117
 msgid "RAW Image"
 msgstr ""
 
-#: ../src/preferences.c:112 ../src/search.c:2098 ../src/search.c:3241
+#: ../src/preferences.c:119 ../src/search.c:2188 ../src/search.c:3365
 msgid "Video"
 msgstr ""
 
-#: ../src/preferences.c:570
+#: ../src/preferences.c:120 ../src/preferences.c:2068
+msgid "Collection"
+msgstr ""
+
+#: ../src/preferences.c:121
+msgid "Pdf"
+msgstr ""
+
+#: ../src/preferences.c:589
 msgid "Nearest (worst, but fastest)"
 msgstr ""
 
-#: ../src/preferences.c:572
+#: ../src/preferences.c:591
 msgid "Tiles"
 msgstr ""
 
-#: ../src/preferences.c:574
+#: ../src/preferences.c:593
 msgid "Bilinear"
 msgstr ""
 
-#: ../src/preferences.c:576
+#: ../src/preferences.c:595
 msgid "Hyper (best, but slowest)"
 msgstr ""
 
-#: ../src/preferences.c:601
+#: ../src/preferences.c:620
 msgid "PRIMARY"
 msgstr ""
 
-#: ../src/preferences.c:603
+#: ../src/preferences.c:622
 msgid "CLIPBOARD"
 msgstr ""
 
-#: ../src/preferences.c:668 ../src/print.c:390
+#: ../src/preferences.c:687
 msgid "Custom"
 msgstr ""
 
-#: ../src/preferences.c:751
+#: ../src/preferences.c:770
 msgid "Single image"
 msgstr ""
 
-#: ../src/preferences.c:753
+#: ../src/preferences.c:772
 msgid "Anaglyph Red-Cyan"
 msgstr ""
 
-#: ../src/preferences.c:755
+#: ../src/preferences.c:774
 msgid "Anaglyph Green-Magenta"
 msgstr ""
 
-#: ../src/preferences.c:757
+#: ../src/preferences.c:776
 msgid "Anaglyph Yellow-Blue"
 msgstr ""
 
-#: ../src/preferences.c:759
+#: ../src/preferences.c:778
 msgid "Anaglyph Gray Red-Cyan"
 msgstr ""
 
-#: ../src/preferences.c:761
+#: ../src/preferences.c:780
 msgid "Anaglyph Gray Green-Magenta"
 msgstr ""
 
-#: ../src/preferences.c:763
+#: ../src/preferences.c:782
 msgid "Anaglyph Gray Yellow-Blue"
 msgstr ""
 
-#: ../src/preferences.c:765
+#: ../src/preferences.c:784
 msgid "Anaglyph Dubois Red-Cyan"
 msgstr ""
 
-#: ../src/preferences.c:767
+#: ../src/preferences.c:786
 msgid "Anaglyph Dubois Green-Magenta"
 msgstr ""
 
-#: ../src/preferences.c:769
+#: ../src/preferences.c:788
 msgid "Anaglyph Dubois Yellow-Blue"
 msgstr ""
 
-#: ../src/preferences.c:772
+#: ../src/preferences.c:791
 msgid "Side by Side"
 msgstr ""
 
-#: ../src/preferences.c:773
+#: ../src/preferences.c:792
 msgid "Side by Side Half size"
 msgstr ""
 
-#: ../src/preferences.c:780
+#: ../src/preferences.c:799
 msgid "Top - Bottom"
 msgstr ""
 
-#: ../src/preferences.c:781
+#: ../src/preferences.c:800
 msgid "Top - Bottom Half size"
 msgstr ""
 
-#: ../src/preferences.c:790 ../src/preferences.c:2827
+#: ../src/preferences.c:809 ../src/preferences.c:3409
 msgid "Fixed position"
 msgstr ""
 
-#: ../src/preferences.c:1129 ../src/preferences.c:1132
+#: ../src/preferences.c:1148 ../src/preferences.c:1151
 msgid "Reset filters"
 msgstr ""
 
-#: ../src/preferences.c:1133
+#: ../src/preferences.c:1152
 msgid ""
 "This will reset the file filters to the defaults.\n"
 "Continue?"
 msgstr ""
 
-#: ../src/preferences.c:1160 ../src/preferences.c:1163
+#: ../src/preferences.c:1179 ../src/preferences.c:1182
 msgid "Clear trash"
 msgstr "Clear Rubbish Bin"
 
-#: ../src/preferences.c:1164
+#: ../src/preferences.c:1183
 msgid "This will remove the trash contents."
 msgstr "This will remove the Rubbish Bin contents."
 
-#: ../src/preferences.c:1208 ../src/preferences.c:1211
+#: ../src/preferences.c:1227 ../src/preferences.c:1230
 msgid "Reset image overlay template string"
 msgstr ""
 
-#: ../src/preferences.c:1212
+#: ../src/preferences.c:1231
 msgid ""
 "This will reset the image overlay template string to the default.\n"
 "Continue?"
 msgstr ""
 
-#: ../src/preferences.c:1712
+#: ../src/preferences.c:1719
 msgid "General"
 msgstr ""
 
-#: ../src/preferences.c:1718 ../src/preferences.c:1920
+#: ../src/preferences.c:1725 ../src/preferences.c:1939
 msgid "Quality:"
 msgstr ""
 
-#: ../src/preferences.c:1726
+#: ../src/preferences.c:1735
 msgid "Use Geeqie thumbnail style and cache"
 msgstr ""
 
-#: ../src/preferences.c:1733
+#: ../src/preferences.c:1742
 msgid "Store thumbnails local to image folder (non-standard)"
 msgstr ""
 
-#: ../src/preferences.c:1740
+#: ../src/preferences.c:1749
 msgid "Use standard thumbnail style and cache, shared with other applications"
 msgstr ""
 
-#: ../src/preferences.c:1746
+#: ../src/preferences.c:1755
 msgid "Use EXIF thumbnails when available (EXIF thumbnails may be outdated)"
 msgstr ""
 
-#: ../src/preferences.c:1750
+#: ../src/preferences.c:1758
+msgid "Collection preview:"
+msgstr ""
+
+#: ../src/preferences.c:1761
+msgid "The maximum number of thumbnails shown in a Collection preview montage"
+msgstr ""
+
+#: ../src/preferences.c:1764
 msgid "Use embedded metadata in video files as thumbnails when available"
 msgstr ""
 
-#: ../src/preferences.c:1757
+#: ../src/preferences.c:1771
 msgid "Star Rating"
 msgstr ""
 
-#: ../src/preferences.c:1773 ../src/preferences.c:1805
+#: ../src/preferences.c:1787 ../src/preferences.c:1819
 msgid "Set"
 msgstr ""
 
-#: ../src/preferences.c:1775 ../src/preferences.c:1807
+#: ../src/preferences.c:1789 ../src/preferences.c:1821
 msgid "Display selected character"
 msgstr ""
 
-#: ../src/preferences.c:1778 ../src/preferences.c:1810
+#: ../src/preferences.c:1792 ../src/preferences.c:1824
 msgid ""
 "Hexadecimal representation of a Unicode character. A list of all Unicode "
 "characters may be found on the Internet."
 msgstr ""
 
-#: ../src/preferences.c:1782 ../src/preferences.c:1814
-#: ../src/preferences.c:1894 ../src/window.c:397
+#: ../src/preferences.c:1796 ../src/preferences.c:1828
+#: ../src/preferences.c:1913 ../src/window.c:397
 msgid "Clear"
 msgstr ""
 
-#: ../src/preferences.c:1786 ../src/preferences.c:1818
-#: ../src/preferences.c:1898
+#: ../src/preferences.c:1800 ../src/preferences.c:1832
+#: ../src/preferences.c:1917
 msgid "Default"
 msgstr ""
 
-#: ../src/preferences.c:1826
+#: ../src/preferences.c:1840
 msgid "Slide show"
 msgstr ""
 
-#: ../src/preferences.c:1837
+#: ../src/preferences.c:1851
 msgid "Delay between image change hrs:mins:secs.dec"
 msgstr ""
 
-#: ../src/preferences.c:1853
+#: ../src/preferences.c:1867
 msgid "Random"
 msgstr ""
 
-#: ../src/preferences.c:1854
+#: ../src/preferences.c:1868
 msgid "Repeat"
 msgstr ""
 
-#: ../src/preferences.c:1856
+#: ../src/preferences.c:1870
 msgid "Image loading and caching"
 msgstr ""
 
-#: ../src/preferences.c:1858
+#: ../src/preferences.c:1872
 msgid "Decoded image cache size (Mb):"
 msgstr ""
 
-#: ../src/preferences.c:1860
+#: ../src/preferences.c:1874
 msgid "Preload next image"
 msgstr ""
 
-#: ../src/preferences.c:1863
+#: ../src/preferences.c:1877
 msgid "Refresh on file change"
 msgstr ""
 
-#: ../src/preferences.c:1866
+#: ../src/preferences.c:1880
 msgid "Info sidebar heights"
 msgstr ""
 
-#: ../src/preferences.c:1867
+#: ../src/preferences.c:1881
 msgid "NOTE! Geeqie must be restarted for changes to take effect"
 msgstr ""
 
-#: ../src/preferences.c:1869
+#: ../src/preferences.c:1883
 msgid "Keywords:"
 msgstr ""
 
-#: ../src/preferences.c:1875
+#: ../src/preferences.c:1889
 msgid "Comment:"
 msgstr ""
 
-#: ../src/preferences.c:1878
+#: ../src/preferences.c:1892
 msgid "Rating:"
 msgstr ""
 
-#: ../src/preferences.c:1882
+#: ../src/preferences.c:1896
+msgid "Show predefined keyword tree"
+msgstr ""
+
+#: ../src/preferences.c:1898
+msgid ""
+"Show predefined keyword tree (NOTE! Geeqie must be restarted for change to "
+"take effect)"
+msgstr ""
+
+#: ../src/preferences.c:1901
 msgid "On-line help search engine"
 msgstr ""
 
-#: ../src/preferences.c:1889
+#: ../src/preferences.c:1908
 msgid ""
 "The format varies between search engines, e.g the format may be:\n"
 "https://www.search_engine.com/search?q=site:geeqie.org/help\n"
 "https://www.search_engine.com/?q=site:geeqie.org/help"
 msgstr ""
 
-#: ../src/preferences.c:1923
+#: ../src/preferences.c:1942
 msgid "Use GPU acceleration via Clutter library"
 msgstr ""
 
-#: ../src/preferences.c:1927
+#: ../src/preferences.c:1946
 msgid "Two pass rendering (apply HQ zoom and color correction in second pass)"
 msgstr ""
 "Two pass rendering (apply HQ zoom and colour correction in second pass)"
 
-#: ../src/preferences.c:1931
+#: ../src/preferences.c:1950
 msgid "Zoom increment:"
 msgstr ""
 
-#: ../src/preferences.c:1939
+#: ../src/preferences.c:1958
 msgid "Allow enlargement of image (max. size in %)"
 msgstr ""
 
-#: ../src/preferences.c:1945
+#: ../src/preferences.c:1964
 #, c-format
 msgid ""
 "Enable this to allow Geeqie to increase the image size for images that are "
@@ -4455,12 +4582,12 @@ msgid ""
 "100% is full-size."
 msgstr ""
 
-#: ../src/preferences.c:1948
+#: ../src/preferences.c:1967
 #, c-format
 msgid "Virtual window size (% of actual window):"
 msgstr ""
 
-#: ../src/preferences.c:1954
+#: ../src/preferences.c:1973
 msgid ""
 "This value will set the virtual size of the window when \"Fit image to window"
 "\" is set. Instead of using the actual size of the window, the specified "
@@ -4469,822 +4596,656 @@ msgid ""
 "than 100%). It affects fullscreen mode too."
 msgstr ""
 
-#: ../src/preferences.c:1956
+#: ../src/preferences.c:1975
 msgid "Appearance"
 msgstr ""
 
-#: ../src/preferences.c:1958
+#: ../src/preferences.c:1977
 msgid "Use custom border color in window mode"
 msgstr "Use custom border colour in window mode"
 
-#: ../src/preferences.c:1961
+#: ../src/preferences.c:1980
 msgid "Use custom border color in fullscreen mode"
 msgstr "Use custom border colour in fullscreen mode"
 
-#: ../src/preferences.c:1964
+#: ../src/preferences.c:1983
 msgid "Border color"
 msgstr "Border colour"
 
-#: ../src/preferences.c:1969
+#: ../src/preferences.c:1988
 msgid "Alpha channel color 1"
 msgstr "Alpha channel colour 1"
 
-#: ../src/preferences.c:1972
+#: ../src/preferences.c:1991
 msgid "Alpha channel color 2"
 msgstr "Alpha channel colour 2"
 
-#: ../src/preferences.c:1978
+#: ../src/preferences.c:1997
 msgid "Convenience"
 msgstr ""
 
-#: ../src/preferences.c:1980
+#: ../src/preferences.c:1999
 msgid "Auto rotate proofs using Exif information"
 msgstr ""
 
-#: ../src/preferences.c:1997
+#: ../src/preferences.c:2013
 msgid "Windows"
 msgstr ""
 
-#: ../src/preferences.c:1999
+#: ../src/preferences.c:2015
 msgid "State"
 msgstr ""
 
-#: ../src/preferences.c:2001
+#: ../src/preferences.c:2017
 msgid "Remember window positions"
 msgstr ""
 
-#: ../src/preferences.c:2004
+#: ../src/preferences.c:2020
 msgid "Use saved window positions also for new windows"
 msgstr ""
 
-#: ../src/preferences.c:2008
+#: ../src/preferences.c:2024
 msgid "Remember tool state (float/hidden)"
 msgstr ""
 
-#: ../src/preferences.c:2011
+#: ../src/preferences.c:2027
 msgid "Remember dialog window positions"
 msgstr "Remember dialogue window positions"
 
-#: ../src/preferences.c:2014
+#: ../src/preferences.c:2030
 msgid "Show window IDs"
 msgstr ""
 
-#: ../src/preferences.c:2019
+#: ../src/preferences.c:2035
 msgid "Fit window to image when tools are hidden/floating"
 msgstr ""
 
-#: ../src/preferences.c:2023
+#: ../src/preferences.c:2039
 msgid "Limit size when auto-sizing window (%):"
 msgstr ""
 
-#: ../src/preferences.c:2038
+#: ../src/preferences.c:2054
 msgid "Smooth image flip"
 msgstr ""
 
-#: ../src/preferences.c:2040
+#: ../src/preferences.c:2056
 msgid "Disable screen saver"
 msgstr ""
 
-#: ../src/preferences.c:2044
+#: ../src/preferences.c:2069
+msgid "Collection number"
+msgstr ""
+
+#: ../src/preferences.c:2070
+msgid "Collection total"
+msgstr ""
+
+#: ../src/preferences.c:2077
+msgid "Image date"
+msgstr ""
+
+#: ../src/preferences.c:2079
+msgid "ShutterSpeed"
+msgstr ""
+
+#: ../src/preferences.c:2085
+msgid "ISO"
+msgstr ""
+
+#: ../src/preferences.c:2087
+msgid "Focal len. 35mm"
+msgstr ""
+
+#: ../src/preferences.c:2091
+msgid "Lat, Long"
+msgstr ""
+
+#: ../src/preferences.c:2092
+msgid "Altitude"
+msgstr ""
+
+#: ../src/preferences.c:2094
+msgid "Timezone"
+msgstr ""
+
+#: ../src/preferences.c:2186
+msgid "OSD"
+msgstr ""
+
+#: ../src/preferences.c:2190
 msgid "Overlay Screen Display"
 msgstr ""
 
-#: ../src/preferences.c:2046
+#: ../src/preferences.c:2197
+msgid ""
+"To include predefined tags in the template, click a button or drag-and-drop"
+msgstr ""
+
+#: ../src/preferences.c:2222
 msgid "Image overlay template"
 msgstr ""
 
-#: ../src/preferences.c:2059
-msgid ""
-"<i>%name%</i> results in the filename of the picture.\n"
-"Also available: <i>%collection%</i>, <i>%number%</i>, <i>%total%</i>, <i>"
-"%date%</i>,\n"
-"<i>%size%</i> (filesize), <i>%width%</i>, <i>%height%</i>, <i>%res%</i> "
-"(resolution),\n"
-"<i>%rating%</i>, <i>%keywords%</i>, <i>%comment%</i> (XMP), <i>%imagecomment"
-"%</i> (JPEG)\n"
-"To access exif data use the exif name, e. g. <i>%formatted.Camera%</i> is "
-"the formatted camera name,\n"
-"<i>%Exif.Photo.DateTimeOriginal%</i> the date of the original shot.\n"
-"<i>%formatted.Camera:20</i> notation will truncate the displayed data to 20 "
-"characters and will add 3 dots at the end to denote the truncation.\n"
-"If two or more variables are connected with the |-sign, it prints available "
-"variables with a separator.\n"
-"<i>%formatted.ShutterSpeed%</i>|<i>%formatted.ISOSpeedRating%</i>|<i>"
-"%formatted.FocalLength%</i> could show \"1/20s - 400 - 80 mm\" or \"1/200 - "
-"80 mm\",\n"
-"if there's no ISO information in the Exif data.\n"
-"If a line is empty, it is removed. This allows one to add lines that totally "
-"disappear when no data is available.\n"
-msgstr ""
-
-#: ../src/preferences.c:2077 ../src/print.c:3220
+#: ../src/preferences.c:2233
+msgid "Extensive formatting options are shown in the Help file"
+msgstr ""
+
+#: ../src/preferences.c:2241 ../src/print.c:428 ../src/print.c:491
 msgid "Font"
 msgstr ""
 
-#: ../src/preferences.c:2089 ../src/print.c:3410
+#: ../src/preferences.c:2253
 msgid "Text"
 msgstr ""
 
-#: ../src/preferences.c:2094
+#: ../src/preferences.c:2258
 msgid "Background"
 msgstr ""
 
-#: ../src/preferences.c:2100 ../src/preferences.c:2278
-#: ../src/preferences.c:2740
+#: ../src/preferences.c:2264 ../src/preferences.c:2486
+#: ../src/preferences.c:3322
 msgid "Defaults"
 msgstr ""
 
-#: ../src/preferences.c:2154
+#: ../src/preferences.c:2281
+msgid "Exif, XMP or IPTC tags"
+msgstr ""
+
+#: ../src/preferences.c:2285
+msgid "%Exif.Image.Orientation%"
+msgstr ""
+
+#: ../src/preferences.c:2290
+msgid "Field separators"
+msgstr ""
+
+#: ../src/preferences.c:2294
+msgid ""
+"Separator shown only if both fields are non-null:\n"
+"%formatted.ShutterSpeed%|%formatted.ISOSpeedRating%"
+msgstr ""
+
+#: ../src/preferences.c:2299
+msgid "Field maximum length"
+msgstr ""
+
+#: ../src/preferences.c:2303
+msgid "%path:39%"
+msgstr ""
+
+#: ../src/preferences.c:2308
+msgid "Pre- and post- text"
+msgstr ""
+
+#: ../src/preferences.c:2312
+msgid ""
+"Text shown only if the field is non-null:\n"
+"%formatted.Aperture:F no. * setting%\n"
+" %formatted.Aperture:10:F no. * setting%"
+msgstr ""
+
+#: ../src/preferences.c:2317
+msgid "Pango markup"
+msgstr ""
+
+#: ../src/preferences.c:2321
+msgid ""
+"<b>bold</b>\n"
+"<u>underline</u>\n"
+"<i>italic</i>\n"
+"<s>strikethrough</s>"
+msgstr ""
+
+#: ../src/preferences.c:2362
 msgid "Show hidden files or folders"
 msgstr ""
 
-#: ../src/preferences.c:2156
+#: ../src/preferences.c:2364
 msgid "Show parent folder (..)"
 msgstr ""
 
-#: ../src/preferences.c:2158
+#: ../src/preferences.c:2366
 msgid "Case sensitive sort"
 msgstr ""
 
-#: ../src/preferences.c:2160
+#: ../src/preferences.c:2368
 msgid "Natural sort order"
 msgstr ""
 
-#: ../src/preferences.c:2162
+#: ../src/preferences.c:2370
 msgid "Disable file extension checks"
 msgstr ""
 
-#: ../src/preferences.c:2165
+#: ../src/preferences.c:2373
 msgid "Disable File Filtering"
 msgstr ""
 
-#: ../src/preferences.c:2169
+#: ../src/preferences.c:2377
 msgid "Grouping sidecar extensions"
 msgstr ""
 
-#: ../src/preferences.c:2176
+#: ../src/preferences.c:2384
 msgid "File types"
 msgstr ""
 
-#: ../src/preferences.c:2233
+#: ../src/preferences.c:2441
 msgid "Class"
 msgstr ""
 
-#: ../src/preferences.c:2250
+#: ../src/preferences.c:2458
 msgid "Writable"
 msgstr ""
 
-#: ../src/preferences.c:2261
+#: ../src/preferences.c:2469
 msgid "Sidecar is allowed"
 msgstr ""
 
-#: ../src/preferences.c:2307
+#: ../src/preferences.c:2515
 msgid "Metadata writing process"
 msgstr ""
 
-#: ../src/preferences.c:2309
+#: ../src/preferences.c:2517
 msgid "Warning: Geeqie is built without Exiv2. Some options are disabled."
 msgstr ""
 
-#: ../src/preferences.c:2311
+#: ../src/preferences.c:2519
 msgid ""
 "Metadata are written in the following order. The process ends after first "
 "success."
 msgstr ""
 
-#: ../src/preferences.c:2314
+#: ../src/preferences.c:2522
 msgid ""
 "1) Save metadata in image files, or sidecar files, according to the XMP "
 "standard"
 msgstr ""
 
-#: ../src/preferences.c:2320
+#: ../src/preferences.c:2528
 msgid ""
 "2) Save metadata in '.metadata' folder, local to image folder (non-standard)"
 msgstr ""
 
-#: ../src/preferences.c:2323
+#: ../src/preferences.c:2531
 #, c-format
 msgid "3) Save metadata in Geeqie private directory '%s'"
 msgstr ""
 
-#: ../src/preferences.c:2329
+#: ../src/preferences.c:2537
 msgid "Step 1: Write to image files"
 msgstr ""
 
-#: ../src/preferences.c:2337
+#: ../src/preferences.c:2545
 msgid ""
 "Store metadata also in legacy IPTC tags (converted according to IPTC4XMP "
 "standard)"
 msgstr ""
 
-#: ../src/preferences.c:2340
+#: ../src/preferences.c:2548
 msgid "Warn if the image files are unwritable"
 msgstr ""
 
-#: ../src/preferences.c:2343
+#: ../src/preferences.c:2551
 msgid "Ask before writing to image files"
 msgstr ""
 
-#: ../src/preferences.c:2346
+#: ../src/preferences.c:2554
 msgid "Create sidecar files named image.ext.xmp (as opposed to image.xmp)"
 msgstr ""
 
-#: ../src/preferences.c:2349
+#: ../src/preferences.c:2557
 msgid "Step 2 and 3: write to Geeqie private files"
 msgstr ""
 
-#: ../src/preferences.c:2354
+#: ../src/preferences.c:2562
 msgid ""
 "Use GQview legacy metadata format (supports only keywords and comments) "
 "instead of XMP"
 msgstr ""
 
-#: ../src/preferences.c:2358
+#: ../src/preferences.c:2566
 msgid "Miscellaneous"
 msgstr ""
 
-#: ../src/preferences.c:2359
+#: ../src/preferences.c:2567
 msgid ""
 "Write the same description tags (keywords, comment, etc.) to all grouped "
 "sidecars"
 msgstr ""
 
-#: ../src/preferences.c:2362
+#: ../src/preferences.c:2570
 msgid "Allow keywords to differ only in case"
 msgstr ""
 
-#: ../src/preferences.c:2365
+#: ../src/preferences.c:2573
 msgid "Write altered image orientation to the metadata"
 msgstr ""
 
-#: ../src/preferences.c:2371
+#: ../src/preferences.c:2579
 msgid "Auto-save options"
 msgstr ""
 
-#: ../src/preferences.c:2373
+#: ../src/preferences.c:2581
 msgid "Write metadata after timeout"
 msgstr ""
 
-#: ../src/preferences.c:2379
+#: ../src/preferences.c:2587
 msgid "Timeout (seconds):"
 msgstr ""
 
-#: ../src/preferences.c:2382
+#: ../src/preferences.c:2590
 msgid "Write metadata on image change"
 msgstr ""
 
-#: ../src/preferences.c:2385
+#: ../src/preferences.c:2593
 msgid "Write metadata on directory change"
 msgstr ""
 
-#: ../src/preferences.c:2388
+#: ../src/preferences.c:2596
 msgid "Pre-load metadata"
 msgstr ""
 
-#: ../src/preferences.c:2390
+#: ../src/preferences.c:2598
 msgid "Read metadata in background"
 msgstr ""
 
-#: ../src/preferences.c:2431
+#: ../src/preferences.c:2787 ../src/preferences.c:2801
+msgid "Search for keywords"
+msgstr ""
+
+#: ../src/preferences.c:2899
+msgid "Edit keywords autocompletion list"
+msgstr ""
+
+#: ../src/preferences.c:2903 ../src/toolbar.c:85
+msgid "Search"
+msgstr ""
+
+#: ../src/preferences.c:2982
 msgid "Perceptual"
 msgstr ""
 
-#: ../src/preferences.c:2433
+#: ../src/preferences.c:2984
 msgid "Relative Colorimetric"
 msgstr "Relative Colourimetric"
 
-#: ../src/preferences.c:2437
+#: ../src/preferences.c:2988
 msgid "Absolute Colorimetric"
 msgstr "Absolute Colourimetric"
 
-#: ../src/preferences.c:2462
+#: ../src/preferences.c:3013
 msgid "Color management"
 msgstr "Colour management"
 
-#: ../src/preferences.c:2464
+#: ../src/preferences.c:3015
 msgid "Input profiles"
 msgstr ""
 
-#: ../src/preferences.c:2472
+#: ../src/preferences.c:3023
 msgid "Type"
 msgstr ""
 
-#: ../src/preferences.c:2475
+#: ../src/preferences.c:3026
 msgid "Menu name"
 msgstr ""
 
-#: ../src/preferences.c:2478
+#: ../src/preferences.c:3029
 msgid "File"
 msgstr ""
 
-#: ../src/preferences.c:2486
+#: ../src/preferences.c:3037
 #, c-format
 msgid "Input %d:"
 msgstr ""
 
-#: ../src/preferences.c:2502 ../src/preferences.c:2522
+#: ../src/preferences.c:3053 ../src/preferences.c:3073
 msgid "Select color profile"
 msgstr "Select colour profile"
 
-#: ../src/preferences.c:2510
+#: ../src/preferences.c:3061
 msgid "Screen profile"
 msgstr ""
 
-#: ../src/preferences.c:2514
+#: ../src/preferences.c:3065
 msgid "Use system screen profile if available"
 msgstr ""
 
-#: ../src/preferences.c:2519
+#: ../src/preferences.c:3070
 msgid "Screen:"
 msgstr ""
 
-#: ../src/preferences.c:2525
+#: ../src/preferences.c:3076
 msgid "Render Intent:"
 msgstr ""
 
-#: ../src/preferences.c:2548 ../src/preferences.c:2589
+#: ../src/preferences.c:3116 ../src/preferences.c:3163
 msgid "Behavior"
 msgstr "Behaviour"
 
-#: ../src/preferences.c:2550 ../src/utilops.c:2180
+#: ../src/preferences.c:3118 ../src/toolbar.c:91 ../src/utilops.c:2188
 msgid "Delete"
 msgstr ""
 
-#: ../src/preferences.c:2552
-msgid "Confirm file delete"
+#: ../src/preferences.c:3120
+msgid "Confirm permanent file delete"
 msgstr ""
 
-#: ../src/preferences.c:2554
+#: ../src/preferences.c:3122
+msgid "Confirm move file to Trash"
+msgstr "Confirm file move to Rubbish bin"
+
+#: ../src/preferences.c:3124
 msgid "Enable Delete key"
 msgstr ""
 
-#: ../src/preferences.c:2557
-msgid "Safe delete"
-msgstr ""
+#: ../src/preferences.c:3127
+msgid "Use Geeqie trash location"
+msgstr "Use Geeqie Rubbish bin location"
 
-#: ../src/preferences.c:2575
+#: ../src/preferences.c:3145
 msgid "Maximum size:"
 msgstr ""
 
-#: ../src/preferences.c:2575
+#: ../src/preferences.c:3145
 msgid "MB"
 msgstr ""
 
-#: ../src/preferences.c:2577
+#: ../src/preferences.c:3147
 msgid "Set to 0 for unlimited size"
 msgstr ""
 
-#: ../src/preferences.c:2578
+#: ../src/preferences.c:3148
 msgid "View"
 msgstr ""
 
-#: ../src/preferences.c:2591
+#: ../src/preferences.c:3156
+msgid "Use system Trash bin"
+msgstr "Use system Rubbish bin"
+
+#: ../src/preferences.c:3165
 msgid "Descend folders in tree view"
 msgstr ""
 
-#: ../src/preferences.c:2594
+#: ../src/preferences.c:3168
 msgid "In place renaming"
 msgstr ""
 
-#: ../src/preferences.c:2597
+#: ../src/preferences.c:3171
 msgid "List directory view uses single click to enter"
 msgstr ""
 
-#: ../src/preferences.c:2600
+#: ../src/preferences.c:3174
 msgid "Save marks on exit"
 msgstr ""
 
-#: ../src/preferences.c:2604
+#: ../src/preferences.c:3178
 msgid "Use \"With Rename\" as default for Copy/Move dialogs"
 msgstr "Use \"With Rename\" as default for Copy/Move dialogues"
 
-#: ../src/preferences.c:2608
+#: ../src/preferences.c:3182
+msgid "Open collections on top"
+msgstr ""
+
+#: ../src/preferences.c:3186
 msgid "Recent folder list maximum size"
 msgstr ""
 
-#: ../src/preferences.c:2611
+#: ../src/preferences.c:3189
 msgid "Drag'n drop icon size"
 msgstr ""
 
-#: ../src/preferences.c:2615
+#: ../src/preferences.c:3193
 msgid "Copy path clipboard selection:"
 msgstr ""
 
-#: ../src/preferences.c:2617
+#: ../src/preferences.c:3197
 msgid "Navigation"
 msgstr ""
 
-#: ../src/preferences.c:2619
+#: ../src/preferences.c:3199
 msgid "Progressive keyboard scrolling"
 msgstr ""
 
-#: ../src/preferences.c:2621
+#: ../src/preferences.c:3201
 msgid "Keyboard scrolling step multiplier:"
 msgstr ""
 
-#: ../src/preferences.c:2623
+#: ../src/preferences.c:3203
 msgid "Mouse wheel scrolls image"
 msgstr ""
 
-#: ../src/preferences.c:2625
+#: ../src/preferences.c:3205
 msgid "Navigation by left or middle click on image"
 msgstr ""
 
-#: ../src/preferences.c:2627
+#: ../src/preferences.c:3207
 msgid "Play video by left click on image"
 msgstr ""
 
-#: ../src/preferences.c:2630
+#: ../src/preferences.c:3210
 msgid "Play with:"
 msgstr ""
 
-#: ../src/preferences.c:2634
+#: ../src/preferences.c:3216
 msgid "Debugging"
 msgstr ""
 
-#: ../src/preferences.c:2639
+#: ../src/preferences.c:3221
 msgid "Timer data"
 msgstr ""
 
-#: ../src/preferences.c:2642
+#: ../src/preferences.c:3224
 msgid "Log Window max. lines:"
 msgstr ""
 
-#: ../src/preferences.c:2660
+#: ../src/preferences.c:3242
 msgid "Keyboard"
 msgstr ""
 
-#: ../src/preferences.c:2662
+#: ../src/preferences.c:3244
 msgid "Accelerators"
 msgstr ""
 
-#: ../src/preferences.c:2681
+#: ../src/preferences.c:3263
 msgid "Action"
 msgstr ""
 
-#: ../src/preferences.c:2703
+#: ../src/preferences.c:3285
 msgid "KEY"
 msgstr ""
 
-#: ../src/preferences.c:2714
+#: ../src/preferences.c:3296
 msgid "Tooltip"
 msgstr ""
 
-#: ../src/preferences.c:2745
+#: ../src/preferences.c:3327
 msgid "Reset selected"
 msgstr ""
 
-#: ../src/preferences.c:2760
+#: ../src/preferences.c:3342
 msgid "Toolbar"
 msgstr ""
 
-#: ../src/preferences.c:2777
+#: ../src/preferences.c:3359
 msgid "Stereo"
 msgstr ""
 
-#: ../src/preferences.c:2779 ../src/preferences.c:2782
+#: ../src/preferences.c:3361 ../src/preferences.c:3364
 msgid "Windowed stereo mode"
 msgstr ""
 
-#: ../src/preferences.c:2786 ../src/preferences.c:2811
+#: ../src/preferences.c:3368 ../src/preferences.c:3393
 msgid "Mirror left image"
 msgstr ""
 
-#: ../src/preferences.c:2789 ../src/preferences.c:2814
+#: ../src/preferences.c:3371 ../src/preferences.c:3396
 msgid "Flip left image"
 msgstr ""
 
-#: ../src/preferences.c:2792 ../src/preferences.c:2817
+#: ../src/preferences.c:3374 ../src/preferences.c:3399
 msgid "Mirror right image"
 msgstr ""
 
-#: ../src/preferences.c:2795 ../src/preferences.c:2820
+#: ../src/preferences.c:3377 ../src/preferences.c:3402
 msgid "Flip right image"
 msgstr ""
 
-#: ../src/preferences.c:2797 ../src/preferences.c:2822
+#: ../src/preferences.c:3379 ../src/preferences.c:3404
 msgid "Swap left and right images"
 msgstr ""
 
-#: ../src/preferences.c:2799 ../src/preferences.c:2824
+#: ../src/preferences.c:3381 ../src/preferences.c:3406
 msgid "Disable stereo mode on single image source"
 msgstr ""
 
-#: ../src/preferences.c:2802 ../src/preferences.c:2808
+#: ../src/preferences.c:3384 ../src/preferences.c:3390
 msgid "Fullscreen stereo mode"
 msgstr ""
 
-#: ../src/preferences.c:2803
+#: ../src/preferences.c:3385
 msgid "Use different settings for fullscreen"
 msgstr ""
 
-#: ../src/preferences.c:2833
+#: ../src/preferences.c:3415
 msgid "Left X"
 msgstr ""
 
-#: ../src/preferences.c:2835
+#: ../src/preferences.c:3417
 msgid "Left Y"
 msgstr ""
 
-#: ../src/preferences.c:2837
+#: ../src/preferences.c:3419
 msgid "Right X"
 msgstr ""
 
-#: ../src/preferences.c:2839
+#: ../src/preferences.c:3421
 msgid "Right Y"
 msgstr ""
 
-#: ../src/preferences.c:2855 ../src/toolbar.c:89
+#: ../src/preferences.c:3437 ../src/toolbar.c:100
 msgid "Preferences"
 msgstr ""
 
-#: ../src/preferences.c:3004
+#: ../src/preferences.c:3589
 msgid "About Geeqie"
 msgstr ""
 
-#: ../src/preferences.c:3014
+#: ../src/preferences.c:3599
 msgid "translator-credits"
 msgstr ""
 
-#: ../src/print.c:134
-msgid "Selection"
-msgstr ""
-
-#: ../src/print.c:135
-msgid "All"
-msgstr ""
-
-#: ../src/print.c:146
-msgid "One image per page"
-msgstr ""
-
-#: ../src/print.c:147
-msgid "Proof sheet"
-msgstr ""
-
-#: ../src/print.c:160
-msgid "Default printer"
-msgstr ""
-
-#: ../src/print.c:161
-msgid "Custom printer"
-msgstr ""
-
-#: ../src/print.c:162
-msgid "PostScript file"
-msgstr ""
-
-#: ../src/print.c:163
-msgid "Image file"
-msgstr ""
-
-#: ../src/print.c:177
-msgid "jpeg, low quality"
-msgstr ""
-
-#: ../src/print.c:178
-msgid "jpeg, normal quality"
-msgstr ""
-
-#: ../src/print.c:179
-msgid "jpeg, high quality"
-msgstr ""
-
-#: ../src/print.c:375 ../src/print.c:3222
-msgid "points"
-msgstr ""
-
-#: ../src/print.c:376
-msgid "millimeters"
-msgstr "millimetres"
-
-#: ../src/print.c:377
-msgid "centimeters"
-msgstr "centimetres"
-
-#: ../src/print.c:378
-msgid "inches"
-msgstr ""
-
-#: ../src/print.c:379
-msgid "picas"
-msgstr ""
-
-#: ../src/print.c:391
-msgid "Letter"
-msgstr ""
-
-#. in 8.5 x 11
-#: ../src/print.c:392
-msgid "Legal"
-msgstr ""
-
-#. in 8.5 x 14
-#: ../src/print.c:393
-msgid "Executive"
-msgstr ""
-
-#. in 7.25x 10.5
-#. mm 841 x 1189
-#. mm 594 x 841
-#. mm 420 x 594
-#. mm 297 x 420
-#. mm 210 x 297
-#. mm 148 x 210
-#. mm 105 x 148
-#. mm 353 x 500
-#. mm 250 x 353
-#. mm 176 x 250
-#. mm 125 x 176
-#: ../src/print.c:405
-msgid "Envelope #10"
-msgstr ""
-
-#. in 4.125 x 9.5
-#: ../src/print.c:406
-msgid "Envelope #9"
-msgstr ""
-
-#. in 3.875 x 8.875
-#: ../src/print.c:407
-msgid "Envelope C4"
-msgstr ""
-
-#. mm 229 x 324
-#: ../src/print.c:408
-msgid "Envelope C5"
-msgstr ""
-
-#. mm 162 x 229
-#: ../src/print.c:409
-msgid "Envelope C6"
-msgstr ""
-
-#. mm 114 x 162
-#: ../src/print.c:410
-msgid "Photo 6x4"
-msgstr ""
-
-#. in 6   x 4
-#: ../src/print.c:411
-msgid "Photo 8x10"
-msgstr ""
-
-#. in 8   x 10
-#: ../src/print.c:412
-msgid "Postcard"
-msgstr ""
-
-#. mm 100 x 148
-#: ../src/print.c:413
-msgid "Tabloid"
-msgstr ""
-
-#: ../src/print.c:569
-#, c-format
-msgid "page %d of %d"
-msgstr ""
-
-#: ../src/print.c:761
-msgid "Preview"
-msgstr ""
-
-#: ../src/print.c:1069
-#, c-format
-msgid ""
-"Unable to open pipe for writing.\n"
-"\"%s\""
-msgstr ""
-
-#: ../src/print.c:1084 ../src/print.c:1476 ../src/ui_pathsel.c:432
-#, c-format
-msgid "A file with name %s already exists."
-msgstr ""
-
-#: ../src/print.c:1099 ../src/print.c:1531
-#, c-format
-msgid "Failure writing to file %s"
-msgstr ""
-
-#: ../src/print.c:1154 ../src/print.c:1191 ../src/print.c:1227
-#: ../src/print.c:1344 ../src/print.c:1417
-msgid "SIGPIPE error writing to printer."
-msgstr ""
-
-#: ../src/print.c:1952
-#, c-format
-msgid "Page %d"
-msgstr ""
-
-#: ../src/print.c:1974 ../src/print.c:1979
-msgid "Printing error"
-msgstr ""
-
-#: ../src/print.c:1978
-#, c-format
-msgid "An error occurred printing to %s."
-msgstr ""
-
-#: ../src/print.c:1982
-msgid "Details"
-msgstr ""
-
-#: ../src/print.c:2597 ../src/print.c:3351 ../src/toolbar.c:88
-msgid "Print"
-msgstr ""
-
-#: ../src/print.c:2601
-#, c-format
-msgid "Printing %d pages to %s."
-msgstr ""
-
-#: ../src/print.c:2701
-msgid "Format:"
-msgstr ""
-
-#: ../src/print.c:2776
-msgid "Units:"
-msgstr ""
-
-#: ../src/print.c:2820
-msgid "Orientation:"
-msgstr ""
-
-#: ../src/print.c:2952
-msgid "Destination:"
-msgstr ""
-
-#: ../src/print.c:3000
-msgid "<printer name>"
+#: ../src/print.c:386
+msgid "Image text"
 msgstr ""
 
-#: ../src/print.c:3089
-msgid "Unlimited"
+#: ../src/print.c:388
+msgid "Show image text"
 msgstr ""
 
-#: ../src/print.c:3207
-msgid "Show"
+#: ../src/print.c:442
+msgid "Page text"
 msgstr ""
 
-#: ../src/print.c:3378
-msgid "Source"
-msgstr ""
-
-#: ../src/print.c:3390
-msgid "Image size:"
-msgstr ""
-
-#: ../src/print.c:3394
-msgid "Proof size:"
-msgstr ""
-
-#: ../src/print.c:3420
-msgid "Paper"
-msgstr ""
-
-#: ../src/print.c:3443
-msgid "Margins"
-msgstr ""
-
-#: ../src/print.c:3445
-msgid "Left:"
-msgstr ""
-
-#: ../src/print.c:3448
-msgid "Right:"
-msgstr ""
-
-#: ../src/print.c:3451
-msgid "Top:"
-msgstr ""
-
-#: ../src/print.c:3454
-msgid "Bottom:"
-msgstr ""
-
-#: ../src/print.c:3463
-msgid "Printer"
-msgstr ""
-
-#: ../src/print.c:3469
-msgid "Custom printer:"
-msgstr ""
-
-#: ../src/print.c:3478
-msgid "File:"
-msgstr ""
-
-#: ../src/print.c:3487
-msgid "File format:"
-msgstr ""
-
-#: ../src/print.c:3492
-msgid "DPI:"
-msgstr ""
-
-#: ../src/print.c:3500
-msgid "Remember print settings"
+#: ../src/print.c:444
+msgid "Show page text"
 msgstr ""
 
 #: ../src/rcfile.c:91
@@ -5292,12 +5253,12 @@ msgstr ""
 msgid "Option %s ignored: %s\n"
 msgstr ""
 
-#: ../src/rcfile.c:560
+#: ../src/rcfile.c:608
 #, c-format
 msgid "error saving config file: %s\n"
 msgstr ""
 
-#: ../src/rcfile.c:621
+#: ../src/rcfile.c:672
 #, c-format
 msgid ""
 "error saving config file: %s\n"
@@ -5309,417 +5270,430 @@ msgstr ""
 msgid "[%d,%d]: RGB(%3d,%3d,%3d)"
 msgstr ""
 
-#: ../src/remote.c:834 ../src/remote.c:839
+#: ../src/remote.c:708
+#, c-format
+msgid "%dx%d+%d+%d"
+msgstr ""
+
+#: ../src/remote.c:891 ../src/remote.c:896
 msgid "lua error: no data"
 msgstr ""
 
 #. short, long                  callback,               extra, prefer, parameter, description
-#: ../src/remote.c:862
+#: ../src/remote.c:919
 msgid "next image"
 msgstr ""
 
-#: ../src/remote.c:863
+#: ../src/remote.c:920
 msgid "previous image"
 msgstr ""
 
-#: ../src/remote.c:864
+#: ../src/remote.c:921
 msgid "first image"
 msgstr ""
 
-#: ../src/remote.c:865
+#: ../src/remote.c:922
 msgid "last image"
 msgstr ""
 
-#: ../src/remote.c:866
+#: ../src/remote.c:923
 msgid "toggle full screen"
 msgstr ""
 
-#: ../src/remote.c:867
+#: ../src/remote.c:924
 msgid "start full screen"
 msgstr ""
 
-#: ../src/remote.c:868
+#: ../src/remote.c:925
 msgid "stop full screen"
 msgstr ""
 
-#: ../src/remote.c:869
+#: ../src/remote.c:926
 msgid "toggle slide show"
 msgstr ""
 
-#: ../src/remote.c:870
+#: ../src/remote.c:927
 msgid "start slide show"
 msgstr ""
 
-#: ../src/remote.c:871
+#: ../src/remote.c:928
 msgid "stop slide show"
 msgstr ""
 
-#: ../src/remote.c:872
+#: ../src/remote.c:929
 msgid "<FOLDER>"
 msgstr ""
 
-#: ../src/remote.c:872
+#: ../src/remote.c:929
 msgid "start recursive slide show in FOLDER"
 msgstr ""
 
-#: ../src/remote.c:873
+#: ../src/remote.c:930
 msgid "<[H:][M:][N][.M]>"
 msgstr ""
 
-#: ../src/remote.c:873
+#: ../src/remote.c:930
 msgid "set slide show delay to Hrs Mins N.M seconds"
 msgstr ""
 
-#: ../src/remote.c:874
+#: ../src/remote.c:931
 msgid "show tools"
 msgstr ""
 
-#: ../src/remote.c:875
+#: ../src/remote.c:932
 msgid "hide tools"
 msgstr ""
 
-#: ../src/remote.c:876
+#: ../src/remote.c:933
 msgid "quit"
 msgstr ""
 
-#: ../src/remote.c:877 ../src/remote.c:878 ../src/remote.c:879
-#: ../src/remote.c:880 ../src/remote.c:881 ../src/remote.c:884
-#: ../src/remote.c:886
+#: ../src/remote.c:934 ../src/remote.c:935 ../src/remote.c:936
+#: ../src/remote.c:937 ../src/remote.c:938 ../src/remote.c:943
+#: ../src/remote.c:945
 msgid "<FILE>"
 msgstr ""
 
-#: ../src/remote.c:877
+#: ../src/remote.c:934
 msgid "load configuration from FILE"
 msgstr ""
 
-#: ../src/remote.c:878
+#: ../src/remote.c:935
 msgid "get list of sidecars of FILE"
 msgstr ""
 
-#: ../src/remote.c:879
+#: ../src/remote.c:936
 msgid "get destination path of FILE"
 msgstr ""
 
-#: ../src/remote.c:880
+#: ../src/remote.c:937
 msgid "open FILE, bring Geeqie window to the top"
 msgstr ""
 
-#: ../src/remote.c:881
+#: ../src/remote.c:938
 msgid "open FILE, do not bring Geeqie window to the top"
 msgstr ""
 
-#: ../src/remote.c:882
+#: ../src/remote.c:939
 msgid "print filename of current image"
 msgstr ""
 
-#: ../src/remote.c:883
+#: ../src/remote.c:940
 msgid "print pixel info of mouse pointer on current image"
 msgstr ""
 
-#: ../src/remote.c:884
+#: ../src/remote.c:941
+msgid "get rectangle co-ordinates"
+msgstr ""
+
+#: ../src/remote.c:942
+msgid "get render intent"
+msgstr ""
+
+#: ../src/remote.c:943
 msgid "open FILE in new window"
 msgstr ""
 
-#: ../src/remote.c:885
+#: ../src/remote.c:944
 msgid "clear command line collection list"
 msgstr ""
 
-#: ../src/remote.c:886
+#: ../src/remote.c:945
 msgid "add FILE to command line collection list"
 msgstr ""
 
-#: ../src/remote.c:887
+#: ../src/remote.c:946
 msgid "bring the Geeqie window to the top"
 msgstr ""
 
-#: ../src/remote.c:888
+#: ../src/remote.c:947
 msgid "<ID>"
 msgstr ""
 
-#: ../src/remote.c:888
+#: ../src/remote.c:947
 msgid "window id for following commands"
 msgstr ""
 
-#: ../src/remote.c:889
+#: ../src/remote.c:948
 msgid "new window"
 msgstr ""
 
-#: ../src/remote.c:890
+#: ../src/remote.c:949
 msgid "close window"
 msgstr ""
 
-#: ../src/remote.c:891 ../src/remote.c:892
+#: ../src/remote.c:950 ../src/remote.c:951
 msgid "clear|clean"
 msgstr ""
 
-#: ../src/remote.c:891
+#: ../src/remote.c:950
 msgid "clear or clean thumbnail cache"
 msgstr ""
 
-#: ../src/remote.c:892
+#: ../src/remote.c:951
 msgid "clear or clean shared thumbnail cache"
 msgstr ""
 
-#: ../src/remote.c:893
+#: ../src/remote.c:952
 msgid "    clean the metadata cache"
 msgstr ""
 
-#: ../src/remote.c:894
+#: ../src/remote.c:953
 msgid "<folder>  "
 msgstr ""
 
-#: ../src/remote.c:894
+#: ../src/remote.c:953
 msgid " render thumbnails"
 msgstr ""
 
-#: ../src/remote.c:895 ../src/remote.c:896
+#: ../src/remote.c:954 ../src/remote.c:955
 msgid "<folder> "
 msgstr ""
 
-#: ../src/remote.c:895
+#: ../src/remote.c:954
 msgid "render thumbnails recursively"
 msgstr ""
 
-#: ../src/remote.c:896
+#: ../src/remote.c:955
 msgid " render thumbnails (see Help)"
 msgstr ""
 
-#: ../src/remote.c:897
+#: ../src/remote.c:956
 msgid "<folder>"
 msgstr ""
 
-#: ../src/remote.c:897
+#: ../src/remote.c:956
 msgid " render thumbnails recursively (see Help)"
 msgstr ""
 
-#: ../src/remote.c:899
+#: ../src/remote.c:958
 msgid "<FILE>,<lua script>"
 msgstr ""
 
-#: ../src/remote.c:899
+#: ../src/remote.c:958
 msgid "run lua script on FILE"
 msgstr ""
 
-#: ../src/remote.c:965
+#: ../src/remote.c:1024
 msgid "Remote command list:\n"
 msgstr ""
 
-#: ../src/remote.c:984
+#: ../src/remote.c:1043
 msgid ""
 "\n"
 "  All other command line parameters are used as plain files if they exists.\n"
 msgstr ""
 
-#: ../src/remote.c:1034
+#: ../src/remote.c:1093
 #, c-format
 msgid "Remote %s not running, starting..."
 msgstr ""
 
-#: ../src/remote.c:1170
+#: ../src/remote.c:1229
 msgid "Remote not available\n"
 msgstr ""
 
-#: ../src/search.c:254
+#: ../src/search.c:257
 msgid "folder"
 msgstr ""
 
-#: ../src/search.c:255
+#: ../src/search.c:258
 msgid "comments"
 msgstr ""
 
-#: ../src/search.c:256
+#: ../src/search.c:259
 msgid "results"
 msgstr ""
 
-#: ../src/search.c:260 ../src/search.c:285
+#: ../src/search.c:263 ../src/search.c:288
 msgid "contains"
 msgstr ""
 
-#: ../src/search.c:261 ../src/search.c:304 ../src/search.c:309
+#: ../src/search.c:264 ../src/search.c:307 ../src/search.c:312
 msgid "is"
 msgstr ""
 
-#: ../src/search.c:265 ../src/search.c:272 ../src/search.c:291
+#: ../src/search.c:268 ../src/search.c:275 ../src/search.c:294
 msgid "equal to"
 msgstr ""
 
-#: ../src/search.c:266 ../src/search.c:292 ../src/search.c:299
+#: ../src/search.c:269 ../src/search.c:295 ../src/search.c:302
 msgid "less than"
 msgstr ""
 
-#: ../src/search.c:267 ../src/search.c:293 ../src/search.c:300
+#: ../src/search.c:270 ../src/search.c:296 ../src/search.c:303
 msgid "greater than"
 msgstr ""
 
-#: ../src/search.c:268 ../src/search.c:275 ../src/search.c:294
+#: ../src/search.c:271 ../src/search.c:278 ../src/search.c:297
 msgid "between"
 msgstr ""
 
-#: ../src/search.c:273
+#: ../src/search.c:276
 msgid "before"
 msgstr ""
 
-#: ../src/search.c:274
+#: ../src/search.c:277
 msgid "after"
 msgstr ""
 
-#: ../src/search.c:279
+#: ../src/search.c:282
 msgid "match all"
 msgstr ""
 
-#: ../src/search.c:280
+#: ../src/search.c:283
 msgid "match any"
 msgstr ""
 
-#: ../src/search.c:281
+#: ../src/search.c:284
 msgid "exclude"
 msgstr ""
 
-#: ../src/search.c:286
+#: ../src/search.c:289
 msgid "miss"
 msgstr ""
 
-#: ../src/search.c:298
+#: ../src/search.c:301
 msgid "not geocoded"
 msgstr ""
 
-#: ../src/search.c:305 ../src/search.c:310
+#: ../src/search.c:308 ../src/search.c:313
 msgid "is not"
 msgstr ""
 
-#: ../src/search.c:361
+#: ../src/search.c:364
 #, c-format
 msgid "%s, %d files (%s, %d)"
 msgstr ""
 
-#: ../src/search.c:366
+#: ../src/search.c:369
 #, c-format
 msgid "%s, %d files"
 msgstr ""
 
-#: ../src/search.c:384
+#: ../src/search.c:387
 msgid "Searching..."
 msgstr ""
 
-#: ../src/search.c:1885
+#: ../src/search.c:1975
 msgid "Changed"
 msgstr ""
 
-#: ../src/search.c:1890 ../src/search.c:3114
+#: ../src/search.c:1980 ../src/search.c:3237
 msgid "Original"
 msgstr ""
 
-#: ../src/search.c:1896 ../src/search.c:3115
+#: ../src/search.c:1986 ../src/search.c:3238
 msgid "Digitized"
 msgstr "Digitised"
 
-#: ../src/search.c:2093 ../src/search.c:3240
+#: ../src/search.c:2183 ../src/search.c:3364
 msgid "Raw Image"
 msgstr ""
 
-#: ../src/search.c:2132 ../src/search.c:3255
+#: ../src/search.c:2222 ../src/search.c:3379
 msgid "Any mark"
 msgstr ""
 
-#: ../src/search.c:2188 ../src/search.c:3213
+#: ../src/search.c:2278 ../src/search.c:3337
 msgid "km"
 msgstr ""
 
-#: ../src/search.c:2193 ../src/search.c:3214
+#: ../src/search.c:2283 ../src/search.c:3338
 msgid "miles"
 msgstr ""
 
-#: ../src/search.c:2485
+#: ../src/search.c:2605
 msgid "File not found"
 msgstr ""
 
-#: ../src/search.c:2486
+#: ../src/search.c:2606
 msgid "Please enter an existing file for image content."
 msgstr ""
 
-#: ../src/search.c:2511
+#: ../src/search.c:2631
 msgid "Entry does not contain a valid lat/long value"
 msgstr ""
 
-#: ../src/search.c:2561
+#: ../src/search.c:2681
 msgid "Please enter an existing folder to search."
 msgstr ""
 
-#: ../src/search.c:3021
+#: ../src/search.c:3143
 msgid "Image search"
 msgstr ""
 
-#: ../src/search.c:3051
+#: ../src/search.c:3173
 msgid "Search:"
 msgstr ""
 
-#: ../src/search.c:3065
+#: ../src/search.c:3187
 msgid "Recurse"
 msgstr ""
 
-#: ../src/search.c:3070
+#: ../src/search.c:3192
 msgid "File name"
 msgstr ""
 
-#: ../src/search.c:3076 ../src/search.c:3184
+#: ../src/search.c:3198 ../src/search.c:3307
 msgid "Match case"
 msgstr ""
 
-#: ../src/search.c:3081
+#: ../src/search.c:3204
 msgid "File size is"
 msgstr ""
 
-#: ../src/search.c:3088 ../src/search.c:3105 ../src/search.c:3134
-#: ../src/search.c:3196
+#: ../src/search.c:3211 ../src/search.c:3228 ../src/search.c:3257
+#: ../src/search.c:3320
 msgid "and"
 msgstr ""
 
-#: ../src/search.c:3094
+#: ../src/search.c:3217
 msgid "File date is"
 msgstr ""
 
-#: ../src/search.c:3112
+#: ../src/search.c:3235
 msgid "Modified"
 msgstr ""
 
-#: ../src/search.c:3113
+#: ../src/search.c:3236
 msgid "Status Changed"
 msgstr ""
 
-#: ../src/search.c:3123
+#: ../src/search.c:3246
 msgid "Image dimensions are"
 msgstr ""
 
-#: ../src/search.c:3144
+#: ../src/search.c:3267
 msgid "Image content is"
 msgstr ""
 
-#: ../src/search.c:3150
+#: ../src/search.c:3273
 #, no-c-format
 msgid "% similar to"
 msgstr ""
 
-#: ../src/search.c:3158
+#: ../src/search.c:3281
 msgid "Ignore rotation"
 msgstr ""
 
-#: ../src/search.c:3189
+#: ../src/search.c:3313
 msgid "Image rating is"
 msgstr ""
 
-#: ../src/search.c:3203
+#: ../src/search.c:3327
 msgid "Image is"
 msgstr ""
 
-#: ../src/search.c:3215
+#: ../src/search.c:3339
 msgid "n.m."
 msgstr ""
 
-#: ../src/search.c:3221
+#: ../src/search.c:3345
 msgid "from"
 msgstr ""
 
-#: ../src/search.c:3226
+#: ../src/search.c:3350
 msgid ""
 "Enter a coordinate in the form:\n"
 "89.123 179.456\n"
@@ -5730,15 +5704,15 @@ msgid ""
 "See the Help file"
 msgstr ""
 
-#: ../src/search.c:3234
+#: ../src/search.c:3358
 msgid "Image class"
 msgstr ""
 
-#: ../src/search.c:3250
+#: ../src/search.c:3374
 msgid "Marks"
 msgstr ""
 
-#: ../src/search.c:3323
+#: ../src/search.c:3447
 msgid "Rank"
 msgstr ""
 
@@ -5786,56 +5760,85 @@ msgstr ""
 msgid "Thumbnail image in cache failed to load, trying to recreate.\n"
 msgstr ""
 
-#: ../src/toolbar.c:85
-msgid "Search"
+#: ../src/toolbar.c:87 ../src/ui_pathsel.c:752 ../src/ui_pathsel.c:1058
+#: ../src/utilops.c:2879
+msgid "New folder"
+msgstr ""
+
+#: ../src/toolbar.c:90 ../src/utilops.c:2375 ../src/utilops.c:2841
+msgid "Rename"
+msgstr ""
+
+#: ../src/toolbar.c:92
+msgid "Close Window"
+msgstr ""
+
+#: ../src/toolbar.c:96
+msgid "Select invert"
+msgstr ""
+
+#: ../src/toolbar.c:97
+msgid "Show file filter"
+msgstr ""
+
+#: ../src/toolbar.c:98
+msgid "Select rectangle"
 msgstr ""
 
-#: ../src/toolbar.c:90
+#: ../src/toolbar.c:99
+msgid "Print"
+msgstr ""
+
+#: ../src/toolbar.c:101
 msgid "Configure this window"
 msgstr ""
 
-#: ../src/toolbar.c:91
+#: ../src/toolbar.c:102
 msgid "Cache maintenance"
 msgstr ""
 
-#: ../src/toolbar.c:96
+#: ../src/toolbar.c:113
 msgid "Fit Horizontaly"
 msgstr ""
 
-#: ../src/toolbar.c:97
+#: ../src/toolbar.c:114
 msgid "Fit vertically"
 msgstr ""
 
-#: ../src/toolbar.c:102
+#: ../src/toolbar.c:119
 msgid "Zoom1:3"
 msgstr ""
 
-#: ../src/toolbar.c:107
+#: ../src/toolbar.c:124
 msgid "Slideshow Faster"
 msgstr ""
 
-#: ../src/toolbar.c:108
+#: ../src/toolbar.c:125
 msgid "Slideshow Slower"
 msgstr ""
 
-#: ../src/toolbar.c:110 ../src/window.c:287 ../src/window.c:308
+#: ../src/toolbar.c:127 ../src/window.c:287 ../src/window.c:308
 msgid "Help"
 msgstr ""
 
-#: ../src/toolbar.c:112
+#: ../src/toolbar.c:129
 msgid "Show thumbnails"
 msgstr ""
 
-#: ../src/toolbar.c:113
+#: ../src/toolbar.c:130
 msgid "Show marks"
 msgstr ""
 
-#: ../src/toolbar.c:503
+#: ../src/toolbar.c:131
+msgid "Show guidelines"
+msgstr ""
+
+#: ../src/toolbar.c:522
 msgid "Add Toolbar Item"
 msgstr ""
 
-#: ../src/trash.c:88 ../src/utilops.c:2645 ../src/utilops.c:2656
-#: ../src/utilops.c:2713
+#: ../src/trash.c:88 ../src/utilops.c:2653 ../src/utilops.c:2664
+#: ../src/utilops.c:2721
 msgid "Delete failed"
 msgstr ""
 
@@ -5843,15 +5846,15 @@ msgstr ""
 msgid "Unable to remove old file from trash folder"
 msgstr "Unable to remove old file from Rubbish Bin folder"
 
-#: ../src/trash.c:146
+#: ../src/trash.c:148
 msgid "Could not create folder"
 msgstr ""
 
-#: ../src/trash.c:168
+#: ../src/trash.c:170
 msgid "Permission denied"
 msgstr ""
 
-#: ../src/trash.c:178
+#: ../src/trash.c:180
 #, c-format
 msgid ""
 "Unable to access or create the trash folder.\n"
@@ -5860,32 +5863,28 @@ msgstr ""
 "Unable to access or create the Rubbish Bin folder.\n"
 "\"%s\""
 
-#: ../src/trash.c:182
-msgid "Turn off safe delete"
-msgstr ""
-
-#: ../src/trash.c:201
+#: ../src/trash.c:210
 msgid "Deletion by external command"
 msgstr ""
 
-#: ../src/trash.c:209
+#: ../src/trash.c:220
 #, c-format
 msgid " (max. %d MB)"
 msgstr ""
 
-#: ../src/trash.c:213
+#. ~ buf = g_strdup_printf(_("Safe delete: %s%s\nTrash: %s"), _("on"), buf2, options->file_ops.safe_delete_path);
+#: ../src/trash.c:225
 #, c-format
 msgid ""
-"Safe delete: %s%s\n"
-"Trash: %s"
+"Using Geeqie Trash bin\n"
+"%s"
 msgstr ""
-"Safe delete: %s%s\n"
-"Rubbish Bin: %s"
+"Using Geeqie Rubbish bin\n"
+"%s"
 
-#: ../src/trash.c:218
-#, c-format
-msgid "Safe delete: %s"
-msgstr ""
+#: ../src/trash.c:230
+msgid "Using system Trash bin"
+msgstr "Using system Rubbish bin"
 
 #: ../src/ui_bookmark.c:139 ../src/ui_bookmark.c:202
 msgid "New Bookmark"
@@ -5979,8 +5978,13 @@ msgid ""
 "%s"
 msgstr ""
 
-#: ../src/ui_pathsel.c:433 ../src/ui_pathsel.c:439 ../src/utilops.c:2344
-#: ../src/utilops.c:2371 ../src/utilops.c:2837
+#: ../src/ui_pathsel.c:432
+#, c-format
+msgid "A file with name %s already exists."
+msgstr ""
+
+#: ../src/ui_pathsel.c:433 ../src/ui_pathsel.c:439 ../src/utilops.c:2352
+#: ../src/utilops.c:2379 ../src/utilops.c:2845
 msgid "Rename failed"
 msgstr ""
 
@@ -5997,14 +6001,6 @@ msgstr ""
 msgid "Add _Bookmark"
 msgstr ""
 
-#: ../src/ui_pathsel.c:644
-msgid "_Delete"
-msgstr ""
-
-#: ../src/ui_pathsel.c:752 ../src/ui_pathsel.c:1058 ../src/utilops.c:2871
-msgid "New folder"
-msgstr ""
-
 #: ../src/ui_pathsel.c:762
 #, c-format
 msgid ""
@@ -6028,11 +6024,11 @@ msgstr ""
 msgid "Filter:"
 msgstr ""
 
-#: ../src/ui_tabcomp.c:941
+#: ../src/ui_tabcomp.c:942
 msgid "Select path"
 msgstr ""
 
-#: ../src/ui_tabcomp.c:963
+#: ../src/ui_tabcomp.c:964
 msgid "All files"
 msgstr ""
 
@@ -6195,121 +6191,121 @@ msgstr ""
 msgid "The following metadata tags will be written to the image file itself."
 msgstr ""
 
-#: ../src/utilops.c:2181
-msgid "Delete files?"
+#: ../src/utilops.c:2182
+msgid "This will move the following files to the Trash bin"
+msgstr "This will move the following files to the Rubbish bin"
+
+#: ../src/utilops.c:2186
+msgid "This will permanently delete the following files"
 msgstr ""
 
-#: ../src/utilops.c:2182
-msgid "This will delete the following files"
+#: ../src/utilops.c:2189
+msgid "Delete files?"
 msgstr ""
 
-#: ../src/utilops.c:2201
+#: ../src/utilops.c:2209
 msgid "Can't write metadata"
 msgstr ""
 
-#: ../src/utilops.c:2224
+#: ../src/utilops.c:2232
 msgid "Write metadata"
 msgstr ""
 
-#: ../src/utilops.c:2225
+#: ../src/utilops.c:2233
 msgid "Write metadata?"
 msgstr ""
 
-#: ../src/utilops.c:2226
+#: ../src/utilops.c:2234
 msgid "This will write the changed metadata into the following files"
 msgstr ""
 
-#: ../src/utilops.c:2228
+#: ../src/utilops.c:2236
 msgid "Metadata writing failed"
 msgstr ""
 
-#: ../src/utilops.c:2247 ../src/utilops.c:2275
+#: ../src/utilops.c:2255 ../src/utilops.c:2283
 msgid "Move failed"
 msgstr ""
 
-#: ../src/utilops.c:2272
+#: ../src/utilops.c:2280
 msgid "Move files?"
 msgstr ""
 
-#: ../src/utilops.c:2273
+#: ../src/utilops.c:2281
 msgid "This will move the following files"
 msgstr ""
 
-#: ../src/utilops.c:2297 ../src/utilops.c:2325
+#: ../src/utilops.c:2305 ../src/utilops.c:2333
 msgid "Copy failed"
 msgstr ""
 
-#: ../src/utilops.c:2322
+#: ../src/utilops.c:2330
 msgid "Copy files?"
 msgstr ""
 
-#: ../src/utilops.c:2323 ../src/utilops.c:2457
+#: ../src/utilops.c:2331 ../src/utilops.c:2465
 msgid "This will copy the following files"
 msgstr ""
 
-#: ../src/utilops.c:2367 ../src/utilops.c:2833
-msgid "Rename"
-msgstr ""
-
-#: ../src/utilops.c:2368
+#: ../src/utilops.c:2376
 msgid "Rename files?"
 msgstr ""
 
-#: ../src/utilops.c:2369
+#: ../src/utilops.c:2377
 msgid "This will rename the following files"
 msgstr ""
 
-#: ../src/utilops.c:2421
+#: ../src/utilops.c:2429
 msgid "Can't run external editor"
 msgstr ""
 
-#: ../src/utilops.c:2455
+#: ../src/utilops.c:2463
 msgid "Editor"
 msgstr ""
 
-#: ../src/utilops.c:2456
+#: ../src/utilops.c:2464
 msgid "Run editor?"
 msgstr ""
 
-#: ../src/utilops.c:2459
+#: ../src/utilops.c:2467
 msgid "External command failed"
 msgstr ""
 
-#: ../src/utilops.c:2628 ../src/utilops.c:2701
+#: ../src/utilops.c:2636 ../src/utilops.c:2709
 msgid "Delete folder"
 msgstr ""
 
-#: ../src/utilops.c:2629
+#: ../src/utilops.c:2637
 msgid "Delete symbolic link?"
 msgstr ""
 
-#: ../src/utilops.c:2631
+#: ../src/utilops.c:2639
 msgid ""
 "This will delete the symbolic link.\n"
 "The folder this link points to will not be deleted."
 msgstr ""
 
-#: ../src/utilops.c:2633
+#: ../src/utilops.c:2641
 msgid "Link deletion failed"
 msgstr ""
 
-#: ../src/utilops.c:2643
+#: ../src/utilops.c:2651
 #, c-format
 msgid ""
 "Unable to remove folder %s\n"
 "Permissions do not allow writing to the folder."
 msgstr ""
 
-#: ../src/utilops.c:2655 ../src/utilops.c:2712
+#: ../src/utilops.c:2663 ../src/utilops.c:2720
 #, c-format
 msgid "Unable to list contents of folder %s"
 msgstr ""
 
-#: ../src/utilops.c:2669 ../src/utilops.c:2677
+#: ../src/utilops.c:2677 ../src/utilops.c:2685
 msgid "Folder contains subfolders"
 msgstr ""
 
-#: ../src/utilops.c:2673
+#: ../src/utilops.c:2681
 #, c-format
 msgid ""
 "Unable to delete the folder:\n"
@@ -6319,140 +6315,136 @@ msgid ""
 "This folder contains subfolders which must be moved before it can be deleted."
 msgstr ""
 
-#: ../src/utilops.c:2681
+#: ../src/utilops.c:2689
 msgid "Subfolders:"
 msgstr ""
 
-#: ../src/utilops.c:2702
+#: ../src/utilops.c:2710
 msgid "Delete folder?"
 msgstr ""
 
-#: ../src/utilops.c:2703
+#: ../src/utilops.c:2711
 msgid "The folder contains these files:"
 msgstr ""
 
-#: ../src/utilops.c:2704
+#: ../src/utilops.c:2712
 msgid ""
 "This will delete the folder.\n"
 "The contents of this folder will also be deleted."
 msgstr ""
 
-#: ../src/utilops.c:2834
+#: ../src/utilops.c:2842
 msgid "Rename folder?"
 msgstr ""
 
-#: ../src/utilops.c:2835
+#: ../src/utilops.c:2843
 msgid "The folder contains the following files"
 msgstr ""
 
-#: ../src/utilops.c:2881
+#: ../src/utilops.c:2889
 msgid "Create Folder"
 msgstr ""
 
-#: ../src/utilops.c:2882
+#: ../src/utilops.c:2890
 msgid "Create folder?"
 msgstr ""
 
-#: ../src/utilops.c:2885
+#: ../src/utilops.c:2893
 msgid "Can't create folder"
 msgstr ""
 
-#: ../src/view_dir.c:406
+#: ../src/view_dir.c:409
 msgid "_Copy"
 msgstr ""
 
-#: ../src/view_dir.c:408
+#: ../src/view_dir.c:411
 msgid "_Move"
 msgstr ""
 
-#: ../src/view_dir.c:662
+#: ../src/view_dir.c:665
 msgid "_Up to parent"
 msgstr ""
 
-#: ../src/view_dir.c:667
+#: ../src/view_dir.c:670
 msgid "_Slideshow"
 msgstr ""
 
-#: ../src/view_dir.c:669
+#: ../src/view_dir.c:672
 msgid "Slideshow recursive"
 msgstr ""
 
-#: ../src/view_dir.c:673
+#: ../src/view_dir.c:676
 msgid "Find _duplicates..."
 msgstr ""
 
-#: ../src/view_dir.c:675
+#: ../src/view_dir.c:678
 msgid "Find duplicates recursive..."
 msgstr ""
 
-#: ../src/view_dir.c:680
+#: ../src/view_dir.c:683
 msgid "_New folder..."
 msgstr ""
 
-#: ../src/view_dir.c:697 ../src/view_file/view_file.c:664
+#: ../src/view_dir.c:700 ../src/view_file/view_file.c:672
 msgid "View as _List"
 msgstr ""
 
-#: ../src/view_dir.c:700
+#: ../src/view_dir.c:703
 msgid "View as _Tree"
 msgstr ""
 
-#: ../src/view_dir.c:705
+#: ../src/view_dir.c:708
 msgid "Show _hidden files"
 msgstr ""
 
-#: ../src/view_dir.c:708 ../src/view_file/view_file.c:694
+#: ../src/view_dir.c:711 ../src/view_file/view_file.c:702
 msgid "Re_fresh"
 msgstr ""
 
-#: ../src/view_file/view_file.c:667
+#: ../src/view_file/view_file.c:675
 msgid "View as _Icons"
 msgstr ""
 
-#: ../src/view_file/view_file.c:673
+#: ../src/view_file/view_file.c:681
 msgid "Show _thumbnails"
 msgstr ""
 
-#: ../src/view_file/view_file.c:685 ../src/view_file/view_file.c:689
-msgid "Show star rating"
-msgstr ""
-
-#: ../src/view_file/view_file.c:809
+#: ../src/view_file/view_file.c:817
 msgid "Mark text"
 msgstr ""
 
-#: ../src/view_file/view_file.c:812
+#: ../src/view_file/view_file.c:820
 msgid "Set mark text"
 msgstr ""
 
-#: ../src/view_file/view_file.c:813
+#: ../src/view_file/view_file.c:821
 msgid "This will set or clear the mark text."
 msgstr ""
 
-#: ../src/view_file/view_file.c:1273
+#: ../src/view_file/view_file.c:1448
 msgid "Loading meta..."
 msgstr ""
 
-#: ../src/view_file/view_file_icon.c:2022 ../src/view_file/view_file_list.c:910
+#: ../src/view_file/view_file_icon.c:2031 ../src/view_file/view_file_list.c:919
 msgid " [NO GROUPING]"
 msgstr ""
 
-#: ../src/view_file/view_file_list.c:511
+#: ../src/view_file/view_file_list.c:513
 #, c-format
 msgid ""
 "Invalid file name:\n"
 "%s"
 msgstr ""
 
-#: ../src/view_file/view_file_list.c:512
+#: ../src/view_file/view_file_list.c:514
 msgid "Error renaming file"
 msgstr ""
 
-#: ../src/view_file/view_file_list.c:2063
+#: ../src/view_file/view_file_list.c:2074
 msgid "NameStars"
 msgstr ""
 
-#: ../src/view_file/view_file_list.c:2067
+#: ../src/view_file/view_file_list.c:2078
 msgid "Stars"
 msgstr ""
 
@@ -6467,3 +6459,16 @@ msgstr ""
 #: ../src/window.c:387
 msgid "Search terms:"
 msgstr ""
+
+#~ msgid ""
+#~ "Safe delete: %s%s\n"
+#~ "Trash: %s"
+#~ msgstr ""
+#~ "Safe delete: %s%s\n"
+#~ "Rubbish Bin: %s"
+
+#~ msgid "millimeters"
+#~ msgstr "millimetres"
+
+#~ msgid "centimeters"
+#~ msgstr "centimetres"
index e506fc7..7b94149 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
@@ -8,229 +8,211 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2017-12-28 19:44+0100\n"
 "PO-Revision-Date: 2000-04-07 17:09+0200\n"
-"Last-Translator: Fatih Demir <kabalak@gmx.net>\n"
-"Language-Team: Turkish Gnome Translation Team <gnotrap@gmx.net>\n"
+"Last-Translator: Yaşar Çiv <yasarciv67@gmail.com>\n"
+"Language-Team: Milis Linux Translation Team <https://milislinux.org>\n"
 "Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Language: tr_TR\n"
+"X-Source-Language: C\n"
 
 #: ../geeqie.desktop.in.h:1
-#, fuzzy
 msgid "Geeqie"
-msgstr ""
-"%s'yi yeniden\n"
-"adlandır :\n"
-" "
+msgstr "Geeqie"
 
 #: ../geeqie.desktop.in.h:2
-#, fuzzy
 msgid "Image Viewer"
-msgstr "Resim"
+msgstr "Resim Görüntüleyici"
 
 #: ../geeqie.desktop.in.h:3
 msgid "View and manage images"
-msgstr ""
+msgstr "Resimleri görüntüle ve yönet"
 
 #: ../plugins/import/geeqie-import-geeqie.desktop.in.h:1
 msgid "Import Geeqie 1.0alphaX metadata"
-msgstr ""
+msgstr "Geeqie 1.0alphaX meta verilerini içe aktar"
 
 #: ../plugins/import/geeqie-import-gqview.desktop.in.h:1
 msgid "Import GQView metadata"
-msgstr ""
+msgstr "GQView meta verilerini içe aktar"
 
 #: ../plugins/rotate/rotate.desktop.in.h:1
-#, fuzzy
 msgid "Apply the orientation to image content"
-msgstr "Lütfen varolan bir dizini seç"
+msgstr "Yönlendirmeyi resim içeriğine uygula"
 
 #: ../plugins/symlink/symlink.desktop.in.h:1
 msgid "Symlink"
-msgstr ""
+msgstr "Sembolik bağ"
 
 #: ../plugins/ufraw/geeqie-ufraw.desktop.in.h:1
 msgid "UFRaw Batch"
-msgstr ""
+msgstr "UFRaw Yığını"
 
 #: ../plugins/ufraw/geeqie-ufraw-id.desktop.in.h:1
 msgid "Edit UFRaw ID file"
-msgstr ""
+msgstr "UFRaw Kimlik dosyasını düzenle"
 
 #: ../plugins/ufraw/geeqie-ufraw-recursive.desktop.in.h:1
 msgid "UFRaw Batch recursive"
-msgstr ""
+msgstr "UFRaw Toplu özyinelemeli"
 
 #: ../src/advanced_exif.c:378 ../src/cache_maint.c:1265
 #: ../src/preferences.c:110 ../src/preferences.c:2095
 msgid "Metadata"
-msgstr ""
+msgstr "Metaveri"
 
 #: ../src/advanced_exif.c:426 ../src/preferences.c:2009
 msgid "Description"
-msgstr ""
+msgstr "Açıklama"
 
 #: ../src/advanced_exif.c:427
 msgid "Value"
-msgstr ""
+msgstr "Değer"
 
 #: ../src/advanced_exif.c:428 ../src/desktop_file.c:535 ../src/dupe.c:2764
 #: ../src/dupe.c:3303 ../src/print.c:3209 ../src/search.c:3111
 #: ../src/utilops.c:505 ../src/view_file/view_file_list.c:1935
-#, fuzzy
 msgid "Name"
-msgstr "Yeniden adlandır"
+msgstr "Ad"
 
 #: ../src/advanced_exif.c:429
 msgid "Tag"
-msgstr ""
+msgstr "Etiket"
 
 #: ../src/advanced_exif.c:430
-#, fuzzy
 msgid "Format"
-msgstr "Genel"
+msgstr "Biçim"
 
 #: ../src/advanced_exif.c:431
 msgid "Elements"
-msgstr ""
+msgstr "Öğeler"
 
 #. default sidebar
 #: ../src/bar.c:183
 msgid "Histogram"
-msgstr ""
+msgstr "Histogram"
 
 #: ../src/bar.c:184
 msgid "Title"
-msgstr ""
+msgstr "Başlık"
 
 #: ../src/bar.c:185 ../src/search.c:2993
 msgid "Keywords"
-msgstr ""
+msgstr "Anahtar kelimeler"
 
 #: ../src/bar.c:186 ../src/search.c:3005
-#, fuzzy
 msgid "Comment"
-msgstr "Büyült"
+msgstr "Yorum"
 
 #: ../src/bar.c:187
-#, fuzzy
 msgid "Rating"
-msgstr "Filtralama"
+msgstr "Derecelendirme"
 
 #: ../src/bar.c:188
-#, fuzzy
 msgid "Exif"
-msgstr "Çık"
+msgstr "Exif"
 
 #. other pre-configured panes
 #: ../src/bar.c:190
-#, fuzzy
 msgid "File info"
-msgstr "Filtralama"
+msgstr "Dosya bilgisi"
 
 #: ../src/bar.c:191
 msgid "Location and GPS"
-msgstr ""
+msgstr "Konum ve GPS"
 
 #: ../src/bar.c:192 ../src/exif.c:342
-#, fuzzy
 msgid "Copyright"
-msgstr "Kopyala"
+msgstr "Telif Hakkı"
 
 #: ../src/bar.c:195 ../src/bar_gps.c:1010
 msgid "GPS Map"
-msgstr ""
+msgstr "GPS Haritası"
 
+# Yukarı taşı da olabilir
 #: ../src/bar.c:315 ../src/toolbar.c:191
-#, fuzzy
 msgid "Move to _top"
-msgstr "Taşı"
+msgstr "Üste _taşı"
 
 #: ../src/bar.c:316 ../src/toolbar.c:192 ../src/ui_bookmark.c:416
-#, fuzzy
 msgid "Move _up"
-msgstr "Taşı"
+msgstr "Yukarı _taşı"
 
 #: ../src/bar.c:317 ../src/toolbar.c:193 ../src/ui_bookmark.c:418
-#, fuzzy
 msgid "Move _down"
-msgstr "Taşı"
+msgstr "Aşağı _taşı"
 
 #: ../src/bar.c:318 ../src/toolbar.c:194
 msgid "Move to _bottom"
-msgstr ""
+msgstr "Alta _taşı"
 
 #: ../src/bar.c:320 ../src/toolbar.c:196
-#, fuzzy
 msgid "Remove"
-msgstr "Yeniden adlandır"
+msgstr "Kaldır"
 
 #: ../src/bar.c:711
-#, fuzzy
 msgid "Add Pane"
-msgstr "%d dosya %s"
+msgstr "Bölme Ekle"
 
 #: ../src/bar_comment.c:216
-#, fuzzy
 msgid "Add text to selected files"
-msgstr ""
-"%s dosyasını\n"
-"silmek üzereyim"
+msgstr "Seçilen dosyalara metin ekle"
 
 #: ../src/bar_comment.c:217
 msgid "Replace existing text in selected files"
-msgstr ""
+msgstr "Seçili dosyalarda mevcut metni değiştir"
 
 #: ../src/bar_exif.c:222
 msgid "<empty label, fixme>"
-msgstr ""
+msgstr "<empty label, fixme>"
 
 #: ../src/bar_exif.c:550 ../src/bar_exif.c:560
-#, fuzzy
 msgid "Configure entry"
-msgstr "Seçenekleri ayarla"
+msgstr "Girişi yapılandır"
 
 #. for the pane
 #: ../src/bar_exif.c:550 ../src/bar_exif.c:560 ../src/bar_exif.c:648
 msgid "Add entry"
-msgstr ""
+msgstr "Giriş ekle"
 
 #: ../src/bar_exif.c:566
 msgid "Key:"
-msgstr ""
+msgstr "Tuş:"
 
 #: ../src/bar_exif.c:575 ../src/preferences.c:1688
 msgid "Title:"
-msgstr ""
+msgstr "Başlık:"
 
 #: ../src/bar_exif.c:584
 msgid "Show only if set"
-msgstr ""
+msgstr "Yalnızca ayarlanmışsa göster"
 
 #: ../src/bar_exif.c:585
 msgid "Editable (supported only for XMP)"
-msgstr ""
+msgstr "Düzenlenebilir (yalnızca XMP için desteklenir)"
 
+# Arayüzdeki cümleye göre değişim gerekebilir
 #. for the entry
 #: ../src/bar_exif.c:634
-#, fuzzy, c-format
+#, c-format
 msgid "Configure \"%s\""
-msgstr "Seçenekleri ayarla"
+msgstr "Yapılandır \"%s\""
 
 #: ../src/bar_exif.c:635 ../src/bar_keywords.c:1342
-#, fuzzy, c-format
+#, c-format
 msgid "Remove \"%s\""
-msgstr "Yeniden adlandır"
+msgstr "Kaldır \"%s\""
 
 #: ../src/bar_exif.c:636
-#, fuzzy, c-format
+#, c-format
 msgid "Copy \"%s\""
-msgstr "Kopyala"
+msgstr "Kopyala \"%s\""
 
 #: ../src/bar_exif.c:649
-#, fuzzy
 msgid "Show hidden entries"
-msgstr "Tırnakları arabellekte tut"
+msgstr "Gizli girişleri göster"
 
 #: ../src/bar_gps.c:187
 #, c-format
@@ -238,13 +220,18 @@ msgid ""
 "\n"
 "Do you want to geocode image %s?"
 msgstr ""
+"\n"
+"%s resmini coğrafi olarak kodlamak ister misiniz?"
 
+# Arayüzedeki cümleye göre değiştirme gerekebilir
 #: ../src/bar_gps.c:192
 #, c-format
 msgid ""
 "\n"
 "Do you want to geocode %i images?"
 msgstr ""
+"\n"
+"%i adet resmi coğrafi olarak kodlamak ister misiniz?"
 
 #: ../src/bar_gps.c:197
 #, c-format
@@ -252,6 +239,8 @@ msgid ""
 "\n"
 "This image is already geocoded!"
 msgstr ""
+"\n"
+"Bu resim zaten coğrafi olarak kodlanmış!"
 
 #: ../src/bar_gps.c:202
 #, c-format
@@ -259,6 +248,8 @@ msgid ""
 "\n"
 "One image is already geocoded!"
 msgstr ""
+"\n"
+"Bir resim zaten coğrafi olarak kodlanmış!"
 
 #: ../src/bar_gps.c:207
 #, c-format
@@ -266,6 +257,8 @@ msgid ""
 "\n"
 "%i Images are already geocoded!"
 msgstr ""
+"\n"
+"%i adet resim zaten coğrafi olarak kodlanmış!"
 
 #: ../src/bar_gps.c:212
 #, c-format
@@ -274,261 +267,256 @@ msgid ""
 "\n"
 "Position: %s \n"
 msgstr ""
+"\n"
+"\n"
+"Konum: %s \n"
 
 #: ../src/bar_gps.c:214
-#, fuzzy
 msgid "Geocode images"
-msgstr "%d dosya %s"
+msgstr "Coğrafi kodlu resimler"
 
 #: ../src/bar_gps.c:218
 msgid "Write lat/long to meta-data?"
-msgstr ""
+msgstr "Meta-verilere enlem/boylam yazılsın mı?"
 
 #: ../src/bar_gps.c:721
-#, fuzzy, c-format
+#, c-format
 msgid "Zoom %i"
-msgstr "Büyült"
+msgstr "%i yakınlaştır"
 
 #: ../src/bar_gps.c:739
-#, fuzzy, c-format
+#, c-format
 msgid "Zoom level %i"
-msgstr "Büyült"
+msgstr "Yakınlaştırma seviyesi %i"
 
 #: ../src/bar_gps.c:744
-#, fuzzy
 msgid "Loading map"
-msgstr "Tırnakları yükliyorum .."
+msgstr "Harita yükleniyor"
 
 #: ../src/bar_gps.c:810
 msgid "Enable markers"
-msgstr ""
+msgstr "İşaretçileri etkinleştir"
 
 #: ../src/bar_gps.c:812
 msgid "Centre map on marker"
-msgstr ""
+msgstr "İşaretçinin merkez haritası"
 
 #: ../src/bar_gps.c:834
 msgid ""
 "Move map centre to marker\n"
 " is disabled"
 msgstr ""
+"Harita merkezini işaretçiye taşıma\n"
+" devre dışı"
 
 #: ../src/bar_gps.c:839
 msgid ""
 "Move map centre to marker\n"
 " is enabled"
 msgstr ""
+"Harita merkezini işaretçiye taşıma\n"
+" etkin"
 
 #: ../src/bar_gps.c:843
 msgid "Map centering"
-msgstr ""
+msgstr "Harita ortalanıyor"
 
 #. use the same strings as in layout_util.c
 #: ../src/bar_histogram.c:257 ../src/layout_util.c:1899
 msgid "Histogram on _Red"
-msgstr ""
+msgstr "Kı_rmızı Histogram"
 
 #: ../src/bar_histogram.c:258 ../src/layout_util.c:1900
 msgid "Histogram on _Green"
-msgstr ""
+msgstr "_Yeşil Histogram"
 
 #: ../src/bar_histogram.c:259 ../src/layout_util.c:1901
 msgid "Histogram on _Blue"
-msgstr ""
+msgstr "_Mavi Histogram"
 
 #: ../src/bar_histogram.c:260 ../src/layout_util.c:1902
 msgid "_Histogram on RGB"
-msgstr ""
+msgstr "RGB _Histogram"
 
 #: ../src/bar_histogram.c:261 ../src/layout_util.c:1903
 msgid "Histogram on _Value"
-msgstr ""
+msgstr "_Değer Üzerinde Histogram"
 
 #: ../src/bar_histogram.c:265 ../src/layout_util.c:1907
 msgid "Li_near Histogram"
-msgstr ""
+msgstr "Doğrusa_l Histogram"
 
 #: ../src/bar_histogram.c:266
 msgid "L_og Histogram"
-msgstr ""
+msgstr "Günlük Hist_ogramı"
 
 #: ../src/bar_keywords.c:463
 msgid "Add keywords to selected files"
-msgstr ""
+msgstr "Seçilen dosyalara anahtar kelimeler ekle"
 
 #: ../src/bar_keywords.c:464
 msgid "Replace existing keywords in selected files"
-msgstr ""
+msgstr "Seçili dosyalardaki mevcut anahtar kelimeleri değiştir"
 
 #: ../src/bar_keywords.c:935
-#, fuzzy
 msgid "Edit keyword"
-msgstr "Düzenle"
+msgstr "Anahtar kelimeyi düzenle"
 
 #: ../src/bar_keywords.c:935 ../src/bar_keywords.c:942
 #: ../src/bar_keywords.c:1287
-#, fuzzy
 msgid "New keyword"
-msgstr "Tırnaklar"
+msgstr "Yeni anahtar kelime"
 
 #: ../src/bar_keywords.c:942
-#, fuzzy
 msgid "Configure keyword"
-msgstr "Seçenekleri ayarla"
+msgstr "Anahtar kelimeyi yapılandır"
 
 #: ../src/bar_keywords.c:948
-#, fuzzy
 msgid "Keyword:"
-msgstr "Tırnaklar"
+msgstr "Anahtar kelime:"
 
 #: ../src/bar_keywords.c:957
-#, fuzzy
 msgid "Keyword type:"
-msgstr "Tırnaklar"
+msgstr "Anahtar kelime türü:"
 
 #: ../src/bar_keywords.c:959
 msgid "Active keyword"
-msgstr ""
+msgstr "Etkin anahtar kelime"
 
 #: ../src/bar_keywords.c:962
-#, fuzzy
 msgid "Helper"
-msgstr "Yardım"
+msgstr "Yardım"
 
+# Marks Keywords çevirisini yapamadım
 #: ../src/bar_keywords.c:1036
 msgid "This will disconnect all Marks Keywords connections"
-msgstr ""
+msgstr "Bu, tüm Anahtar Kelime bağlantılarını kesecek"
 
+# Marks Keywords çevirisini yapamadım
 #: ../src/bar_keywords.c:1038
-#, fuzzy
 msgid "Marks Keywords"
-msgstr "Tırnaklar"
+msgstr "Anahtar Kelimeler"
 
 #: ../src/bar_keywords.c:1311
-#, fuzzy, c-format
+#, c-format
 msgid "Add \"%s\" to all selected images"
-msgstr ""
-"%s dosyasını\n"
-"silmek üzereyim"
+msgstr "Seçilen tüm resimlere \"%s\" ekle"
 
 #: ../src/bar_keywords.c:1317
 #, c-format
 msgid "Hide \"%s\""
-msgstr ""
+msgstr "\"%s\"'i gizle"
 
 #: ../src/bar_keywords.c:1324
-#, fuzzy, c-format
+#, c-format
 msgid "Mark %d"
-msgstr "Düzenle"
+msgstr "%d'i işaretle"
 
 #: ../src/bar_keywords.c:1332
 #, c-format
 msgid "Connect \"%s\" to mark"
-msgstr ""
+msgstr "İşaretlemek için \"%s\"'i bağla"
 
 #: ../src/bar_keywords.c:1339
-#, fuzzy, c-format
+#, c-format
 msgid "Edit \"%s\""
-msgstr "Düzenle"
+msgstr "\"%s\"'i düzenle"
 
 #: ../src/bar_keywords.c:1349
 #, c-format
 msgid "Disconnect \"%s\" from mark %s"
-msgstr ""
+msgstr "%s işaretinden \"%s\"'i çıkarın"
 
 #: ../src/bar_keywords.c:1356
 #, c-format
 msgid "Disconnect all Mark Keyword connections"
-msgstr ""
+msgstr "Tüm İşaretli Anahtar Kelime bağlantılarını kes"
 
 #. for the pane
 #: ../src/bar_keywords.c:1367 ../src/bar_keywords.c:1381
 msgid "Expand checked"
-msgstr ""
+msgstr "Kontrol edilenleri genişlet"
 
 #: ../src/bar_keywords.c:1368 ../src/bar_keywords.c:1382
 msgid "Collapse unchecked"
-msgstr ""
+msgstr "Kontrol edilmeyenleri daralt"
 
 #: ../src/bar_keywords.c:1369 ../src/bar_keywords.c:1383
 msgid "Hide unchecked"
-msgstr ""
+msgstr "Kontrol edilmeyenleri gizle"
 
 #: ../src/bar_keywords.c:1370
 msgid "Revert all hidden"
-msgstr ""
+msgstr "Tüm gizlenenleri geri al"
 
 #: ../src/bar_keywords.c:1372
-#, fuzzy
 msgid "Show all"
-msgstr "Resim"
+msgstr "Tümünü göster"
 
 #: ../src/bar_keywords.c:1373
 msgid "Collapse all"
-msgstr ""
+msgstr "Tümünü daralt"
 
 #: ../src/bar_keywords.c:1374
 msgid "Revert"
-msgstr ""
+msgstr "Geri al"
 
 #: ../src/bar_keywords.c:1378
 msgid "On any change"
-msgstr ""
+msgstr "Herhangi bir değişiklik"
 
 #: ../src/bar_sort.c:500
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "The collection:\n"
 "%s\n"
 "already exists."
 msgstr ""
-"%s dizini \n"
-"zaten dosya halinde\n"
-"var ."
+"Koleksiyon:\n"
+"%s\n"
+"zaten var."
 
 #: ../src/bar_sort.c:501
-#, fuzzy
 msgid "Collection exists"
-msgstr "Üstüne yaz"
+msgstr "Koleksiyon var"
 
 #: ../src/bar_sort.c:515 ../src/collect.c:1126 ../src/collect-dlg.c:93
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Failed to save the collection:\n"
 "%s"
-msgstr "%s'yi silemedim \n"
+msgstr ""
+"Koleksiyon kaydedilemedi:\n"
+"%s"
 
 #: ../src/bar_sort.c:516 ../src/collect.c:1127 ../src/collect-dlg.c:94
 msgid "Save Failed"
-msgstr ""
+msgstr "Kaydedilemedi"
 
 #: ../src/bar_sort.c:551 ../src/bar_sort.c:723
 msgid "Add Bookmark"
-msgstr ""
+msgstr "Yer İmi Ekle"
 
 #: ../src/bar_sort.c:555
-#, fuzzy
 msgid "Add Collection"
-msgstr "%s'yi silemedim \n"
+msgstr "Koleksiyon Ekle"
 
 #: ../src/bar_sort.c:572 ../src/shortcuts.c:118 ../src/ui_bookmark.c:297
-#, fuzzy
 msgid "Name:"
-msgstr "Yeniden adlandır"
+msgstr "Ad:"
 
 #: ../src/bar_sort.c:650
 msgid "Sort Manager"
-msgstr ""
+msgstr "Sıralama Yöneticisi"
 
 #: ../src/bar_sort.c:659 ../src/pan-view/pan-view.c:1823
 #: ../src/ui_pathsel.c:1108
-#, fuzzy
 msgid "Folders"
-msgstr "Dosya"
+msgstr "Dizinler"
 
 #: ../src/bar_sort.c:660 ../src/options.c:197
 msgid "Collections"
-msgstr ""
+msgstr "Koleksiyonlar"
 
 #: ../src/bar_sort.c:668 ../src/utilops.c:2297
 msgid "Copy"
@@ -539,201 +527,185 @@ msgid "Move"
 msgstr "Taşı"
 
 #: ../src/bar_sort.c:710
-#, fuzzy
 msgid "Add image"
-msgstr "%d dosya %s"
+msgstr "Resim ekle"
 
 #: ../src/bar_sort.c:713
-#, fuzzy
 msgid "Add selection"
-msgstr "Seçenekler ..."
+msgstr "Seçim ekle"
 
 #: ../src/bar_sort.c:726
 msgid "Undo last image"
-msgstr ""
+msgstr "Son resmi geri al"
 
 #: ../src/cache.c:173
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "error saving sim cache data: %s\n"
 "error: %s\n"
-msgstr "%s ayar dosyasını kaydederken bir hata oluştu\n"
+msgstr ""
+"Sim önbellek verileri kaydedilirken hata oluştu: %s\n"
+"hatalar: %s\n"
 
 #: ../src/cache_maint.c:123 ../src/cache_maint.c:612 ../src/cache_maint.c:880
 #: ../src/editors.c:1195
 msgid "done"
-msgstr ""
+msgstr "tamam"
 
 #: ../src/cache_maint.c:313
 msgid "Removing old metadata..."
-msgstr ""
+msgstr "Eski meta verileri kaldırılıyor..."
 
 #: ../src/cache_maint.c:317
-#, fuzzy
 msgid "Clearing cached thumbnails..."
-msgstr "Tırnakları yükliyorum .."
+msgstr "Önbelleğe alınmış küçük resimler temizleniyor..."
 
 #: ../src/cache_maint.c:321 ../src/cache_maint.c:1053
-#, fuzzy
 msgid "Removing old thumbnails..."
-msgstr "Tırnakları yükliyorum .."
+msgstr "Eski küçük resimler kaldırılıyor..."
 
 #: ../src/cache_maint.c:324 ../src/cache_maint.c:1056
 msgid "Maintenance"
-msgstr ""
+msgstr "Bakım"
 
 #: ../src/cache_maint.c:732
-#, fuzzy
 msgid "Invalid folder"
-msgstr "geçerli opsiyonlar :\n"
+msgstr "Geçersiz dizin"
 
 #: ../src/cache_maint.c:733
 msgid "The specified folder can not be found."
-msgstr ""
+msgstr "Belirtilen dizin bulunamadı."
 
 #: ../src/cache_maint.c:796 ../src/cache_maint.c:810 ../src/cache_maint.c:1256
-#, fuzzy
 msgid "Create thumbnails"
-msgstr "Tırnakları arabellekte tut"
+msgstr "Küçük resimler oluştur"
 
 #: ../src/cache_maint.c:804 ../src/cache_maint.c:1063
-#, fuzzy
 msgid "S_tart"
-msgstr "Sil"
+msgstr "Başla_t"
 
 #: ../src/cache_maint.c:817 ../src/preferences.c:2347
-#, fuzzy
 msgid "Folder:"
-msgstr "Dosya"
+msgstr "Dizin:"
 
 #: ../src/cache_maint.c:820
-#, fuzzy
 msgid "Select folder"
-msgstr "Sil .."
+msgstr "Dizin seç"
 
 #: ../src/cache_maint.c:824
-#, fuzzy
 msgid "Include subfolders"
-msgstr "geçerli opsiyonlar :\n"
+msgstr "Alt dizinler dahil"
 
 #: ../src/cache_maint.c:825
 msgid "Store thumbnails local to source images"
-msgstr ""
+msgstr "Kaynak görüntüleri yerel olarak küçük resimlerde saklayın"
 
 #: ../src/cache_maint.c:834 ../src/cache_maint.c:1072
 msgid "click start to begin"
-msgstr ""
+msgstr "başlamak için başlat'a tıkla"
 
 #: ../src/cache_maint.c:992 ../src/editors.c:1121
-#, fuzzy
 msgid "running..."
-msgstr "Kopyala ..."
+msgstr "çalışıyor..."
 
 #: ../src/cache_maint.c:1048
-#, fuzzy
 msgid "Clearing thumbnails..."
-msgstr "Tırnakları yükliyorum .."
+msgstr "Küçük resimler temizleniyor..."
 
 #: ../src/cache_maint.c:1131 ../src/cache_maint.c:1134
 #: ../src/cache_maint.c:1232 ../src/cache_maint.c:1251
 msgid "Clear cache"
-msgstr ""
+msgstr "Önbelleği temizle"
 
 #: ../src/cache_maint.c:1135
 msgid ""
 "This will remove all thumbnails that have\n"
 "been saved to disk, continue?"
 msgstr ""
+"Bu, diske kaydedilmiş tüm küçük resimleri \n"
+"kaldıracak, devam edilsin mi?"
 
 #: ../src/cache_maint.c:1180
 #, c-format
 msgid "Location: %s"
-msgstr ""
+msgstr "Konum: %s"
 
 #: ../src/cache_maint.c:1205
-#, fuzzy
 msgid "Cache Maintenance"
-msgstr ""
-"%s'yi yeniden\n"
-"adlandır :\n"
-" "
+msgstr "Önbellek Bakımı"
 
 #: ../src/cache_maint.c:1217
 msgid "Cache and Data Maintenance"
-msgstr ""
+msgstr "Önbellek ve Veri Bakımı"
 
 #: ../src/cache_maint.c:1221
-#, fuzzy
 msgid "Geeqie thumbnail cache"
-msgstr "Tırnakları arabellekte tut"
+msgstr "Geeqie küçük resim önbelleği"
 
 #: ../src/cache_maint.c:1227 ../src/cache_maint.c:1246
 #: ../src/cache_maint.c:1271
 msgid "Clean up"
-msgstr ""
+msgstr "Temizlik"
 
 #: ../src/cache_maint.c:1230 ../src/cache_maint.c:1249
 msgid "Remove orphaned or outdated thumbnails."
-msgstr ""
+msgstr "Artık veya modası geçmiş küçük resimleri kaldırın."
 
 #: ../src/cache_maint.c:1235
-#, fuzzy
 msgid "Delete all cached data."
-msgstr "Tırnakları arabellekte tut"
+msgstr "Önbelleğe alınmış tüm verileri silin."
 
 #: ../src/cache_maint.c:1238
-#, fuzzy
 msgid "Shared thumbnail cache"
-msgstr "Tırnakları arabellekte tut"
+msgstr "Paylaşılan küçük resim önbelleği"
 
 #: ../src/cache_maint.c:1254
-#, fuzzy
 msgid "Delete all cached thumbnails."
-msgstr "Tırnakları arabellekte tut"
+msgstr "Önbelleğe alınmış tüm küçük resimleri silin."
 
 #: ../src/cache_maint.c:1260
-#, fuzzy
 msgid "Render"
-msgstr "Yeniden adlandır"
+msgstr "Oluştur"
 
 #: ../src/cache_maint.c:1263
 msgid "Render thumbnails for a specific folder."
-msgstr ""
+msgstr "Belirli bir dizin için küçük resimleri oluşturun."
 
 #: ../src/cache_maint.c:1274
 msgid "Remove orphaned keywords and comments."
-msgstr ""
+msgstr "Artık anahtar kelimeleri ve yorumları kaldırın."
 
 #. When does this occur ??
 #: ../src/collect.c:405 ../src/image.c:186 ../src/image-overlay.c:545
 #: ../src/image-overlay.c:622
 msgid "Untitled"
-msgstr ""
+msgstr "Başlıksız"
 
 #: ../src/collect.c:409
 #, c-format
 msgid "Untitled (%d)"
-msgstr ""
+msgstr "Başlıksız (%d)"
 
 #: ../src/collect.c:1051
-#, fuzzy, c-format
+#, c-format
 msgid "%s - Collection - %s"
-msgstr "Üstüne yaz"
+msgstr "%s - Koleksiyon - %s"
 
 #: ../src/collect.c:1163 ../src/collect.c:1167
-#, fuzzy
 msgid "Close collection"
-msgstr "Seçenekler ..."
+msgstr "Koleksiyonu kapat"
 
 #: ../src/collect.c:1168
 msgid ""
 "Collection has been modified.\n"
 "Save first?"
 msgstr ""
+"Koleksiyon değiştirildi.\n"
+"İlk önce kaydedilsin mi?"
 
 #: ../src/collect.c:1171
 msgid "_Discard"
-msgstr ""
+msgstr "_Artık"
 
 #: ../src/collect-dlg.c:67
 #, c-format
@@ -742,255 +714,232 @@ msgid ""
 "%s\n"
 "is a folder, collections are files"
 msgstr ""
+"Belirtilen yol:\n"
+"%s\n"
+"bir dizin, koleksiyonlar dosyadır"
 
 #: ../src/collect-dlg.c:68
-#, fuzzy
 msgid "Invalid filename"
-msgstr "geçerli opsiyonlar :\n"
+msgstr "Geçersiz dosya ismi"
 
 #: ../src/collect-dlg.c:77
-#, fuzzy
 msgid "Overwrite File"
-msgstr "Üstüne yaz"
+msgstr "Dosyanın üzerine yaz"
 
 #: ../src/collect-dlg.c:82
-#, fuzzy
 msgid "Overwrite existing file?"
-msgstr "Üstüne yaz"
+msgstr "Mevcut dosyanın üzerine yazılsın mı?"
 
 #: ../src/collect-dlg.c:84
-#, fuzzy
 msgid "_Overwrite"
-msgstr "Üstüne yaz"
+msgstr "_Üstüne yaz"
 
 #: ../src/collect-dlg.c:135
 #, c-format
 msgid "No such file '%s'."
-msgstr ""
+msgstr "Böyle bir dosya yok '%s'."
 
 #: ../src/collect-dlg.c:140
 #, c-format
 msgid "'%s' is a directory, not a collection file."
-msgstr ""
+msgstr "'%s' bir dizin, koleksiyon dosyası değil."
 
 #: ../src/collect-dlg.c:145
 #, c-format
 msgid "You do not have read permissions on the file '%s'."
-msgstr ""
+msgstr "'%s' dosyasında okuma izniniz yok."
 
 #: ../src/collect-dlg.c:151
-#, fuzzy
 msgid "Can not open collection file"
-msgstr "%s'yi silemedim \n"
+msgstr "Koleksiyon dosyası açılamıyor"
 
 #: ../src/collect-dlg.c:203
 msgid "Save collection"
-msgstr ""
+msgstr "Koleksiyonu kaydet"
 
 #: ../src/collect-dlg.c:210 ../src/toolbar.c:84
-#, fuzzy
 msgid "Open collection"
-msgstr "Seçenekler ..."
+msgstr "Koleksiyon aç"
 
 #: ../src/collect-dlg.c:218
 msgid "Append collection"
-msgstr ""
+msgstr "Koleksiyon ekle"
 
 #: ../src/collect-dlg.c:219
 msgid "_Append"
-msgstr ""
+msgstr "_Ekle"
 
 #: ../src/collect-dlg.c:236
-#, fuzzy
 msgid "Collection Files"
-msgstr "Üstüne yaz"
+msgstr "Koleksiyon Dosyaları"
 
 #: ../src/collect-io.c:356
-#, fuzzy, c-format
+#, c-format
 msgid "failed to open collection (write) \"%s\"\n"
-msgstr "%s'yi silemedim \n"
+msgstr "\"%s\" koleksiyonu (yazma) açılamadı\n"
 
 #: ../src/collect-io.c:381
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "error saving collection file: %s\n"
 "error: %s\n"
-msgstr "%s ayar dosyasını kaydederken bir hata oluştu\n"
+msgstr ""
+"koleksiyon dosyası kaydedilirken hata oluştu: %s\n"
+"hata: %s\n"
 
 #: ../src/collect-table.c:212
-#, fuzzy, c-format
+#, c-format
 msgid "%s, %d images (%s, %d)"
-msgstr "%d dosya (%d)%s"
+msgstr "%s, %d resim (%s, %d)"
 
 #: ../src/collect-table.c:219
-#, fuzzy, c-format
+#, c-format
 msgid "%s, %d images"
-msgstr "%d dosya %s"
+msgstr "%s, %d resim"
 
 #: ../src/collect-table.c:224 ../src/layout_util.c:1675
 #: ../src/layout_util.c:2816
 msgid "Empty"
-msgstr ""
+msgstr "Boş"
 
 #: ../src/collect-table.c:238 ../src/dupe.c:1362 ../src/search.c:365
 #: ../src/view_file/view_file.c:848 ../src/view_file/view_file.c:957
 msgid "Loading thumbs..."
-msgstr "Tırnakları yükliyorum .."
+msgstr "Küçük resimler yükleniyor..."
 
 #: ../src/collect-table.c:913 ../src/dupe.c:2343 ../src/dupe.c:2661
 #: ../src/layout_util.c:1722 ../src/search.c:1061
-#, fuzzy
 msgid "_View"
-msgstr "Göster"
+msgstr "_Görünüm"
 
 #: ../src/collect-table.c:915 ../src/dupe.c:2345 ../src/dupe.c:2663
 #: ../src/img-view.c:1319 ../src/layout_image.c:691
 #: ../src/pan-view/pan-view.c:2254 ../src/search.c:1063
 #: ../src/view_file/view_file.c:598
-#, fuzzy
 msgid "View in _new window"
-msgstr "Yeni penerede göster"
+msgstr "Y_eni penerede göster"
 
 #: ../src/collect-table.c:918 ../src/dupe.c:2384 ../src/dupe.c:2671
 #: ../src/search.c:1098
-#, fuzzy
 msgid "Rem_ove"
-msgstr "Yeniden adlandır"
+msgstr "_Kaldır"
 
 #: ../src/collect-table.c:921
-#, fuzzy
 msgid "Append from file selection"
-msgstr "Dosya listesini yenile"
+msgstr "Dosya seçiminden ekle"
 
 #: ../src/collect-table.c:923
 msgid "Append from collection..."
-msgstr ""
+msgstr "Koleksiyondan ekle..."
 
 #: ../src/collect-table.c:927
-#, fuzzy
 msgid "_Selection"
-msgstr "Seçenekler ..."
+msgstr "_Seçim"
 
 #: ../src/collect-table.c:929 ../src/dupe.c:2348 ../src/dupe.c:2666
 #: ../src/layout_util.c:1780 ../src/search.c:1066
-#, fuzzy
 msgid "Select all"
-msgstr "Silerken bir hata oluştu"
+msgstr "Tümünü seç"
 
 #: ../src/collect-table.c:931 ../src/dupe.c:2350 ../src/dupe.c:2668
 #: ../src/layout_util.c:1781 ../src/search.c:1068
 msgid "Select none"
-msgstr ""
+msgstr "Hiçbirini seçme"
 
 #: ../src/collect-table.c:933
-#, fuzzy
 msgid "Invert selection"
-msgstr "Seçenekler ..."
+msgstr "Zıt seçim"
 
 #: ../src/collect-table.c:935
-#, fuzzy
 msgid "Rectangular selection"
-msgstr "Seçenekler ..."
+msgstr "Dikdörtgen seçimi"
 
 #: ../src/collect-table.c:947 ../src/dupe.c:2371 ../src/img-view.c:1323
 #: ../src/layout_image.c:699 ../src/layout_util.c:1755
 #: ../src/pan-view/pan-view.c:2258 ../src/search.c:1085
 #: ../src/view_file/view_file.c:602
-#, fuzzy
 msgid "_Copy..."
-msgstr "Kopyala ..."
+msgstr "_Kopyala..."
 
 #: ../src/collect-table.c:949 ../src/dupe.c:2373 ../src/img-view.c:1324
 #: ../src/layout_image.c:701 ../src/layout_util.c:1756
 #: ../src/pan-view/pan-view.c:2260 ../src/search.c:1087
 #: ../src/view_file/view_file.c:604
-#, fuzzy
 msgid "_Move..."
-msgstr "Taşı ..."
+msgstr "_Taşı..."
 
 #: ../src/collect-table.c:951 ../src/dupe.c:2375 ../src/img-view.c:1325
 #: ../src/layout_image.c:703 ../src/layout_util.c:1757
 #: ../src/pan-view/pan-view.c:2262 ../src/search.c:1089 ../src/view_dir.c:683
 #: ../src/view_file/view_file.c:606
-#, fuzzy
 msgid "_Rename..."
-msgstr "Yeniden adlandı.."
+msgstr "Yeniden adlandı_r..."
 
 #: ../src/collect-table.c:953 ../src/dupe.c:2377 ../src/img-view.c:1326
 #: ../src/layout_image.c:705 ../src/pan-view/pan-view.c:2264
 #: ../src/search.c:1091 ../src/view_dir.c:686 ../src/view_file/view_file.c:608
-#, fuzzy
 msgid "_Copy path"
-msgstr "Kopyala"
+msgstr "Yolu _kopyala"
 
 #: ../src/collect-table.c:955 ../src/dupe.c:2379 ../src/img-view.c:1327
 #: ../src/layout_image.c:706 ../src/pan-view/pan-view.c:2266
 #: ../src/search.c:1093 ../src/view_dir.c:689 ../src/view_file/view_file.c:610
-#, fuzzy
 msgid "_Copy path unquoted"
-msgstr "Kopyala"
+msgstr "Alıntı olmayan yolu kopyala"
 
 #: ../src/collect-table.c:957 ../src/dupe.c:2381 ../src/img-view.c:1328
 #: ../src/layout_image.c:708 ../src/layout_util.c:1758
 #: ../src/layout_util.c:1759 ../src/layout_util.c:1760
 #: ../src/pan-view/pan-view.c:2268 ../src/search.c:1095 ../src/view_dir.c:692
 #: ../src/view_file/view_file.c:612
-#, fuzzy
 msgid "_Delete..."
-msgstr "Sil .."
+msgstr "_Sil..."
 
 #: ../src/collect-table.c:963
-#, fuzzy
 msgid "Randomize"
-msgstr "Tesadüfen"
+msgstr "Gelişigüzel"
 
 #: ../src/collect-table.c:965 ../src/view_file/view_file.c:637
 msgid "_Sort"
-msgstr ""
+msgstr "_Sırala"
 
 #: ../src/collect-table.c:968 ../src/view_file/view_file.c:653
 msgid "Show filename _text"
-msgstr ""
+msgstr "Dosya ismi me_tnini göster"
 
 #: ../src/collect-table.c:971
-#, fuzzy
 msgid "_Save collection"
-msgstr "Seçenekler ..."
+msgstr "Kolek_siyonu kaydet"
 
 #: ../src/collect-table.c:973
-#, fuzzy
 msgid "Save collection _as..."
-msgstr "Seçenekler ..."
+msgstr "Koleksiyonu f_arklı kaydet..."
 
 #: ../src/collect-table.c:976 ../src/layout_util.c:1751
 #: ../src/view_file/view_file.c:622
-#, fuzzy
 msgid "_Find duplicates..."
-msgstr "Yeniden adlandır .."
+msgstr "_Kopyaları bul..."
 
 #: ../src/collect-table.c:978 ../src/dupe.c:2368 ../src/layout_util.c:1753
 #: ../src/search.c:1082
-#, fuzzy
 msgid "Print..."
-msgstr "Yeniden adlandır .."
+msgstr "Yazdır..."
 
 #: ../src/collect-table.c:2167 ../src/dupe.c:3525 ../src/img-view.c:1487
 msgid "Dropped list includes folders."
-msgstr ""
+msgstr "Bırakılan listede dizinler var."
 
 #: ../src/collect-table.c:2169 ../src/dupe.c:3527 ../src/img-view.c:1489
 msgid "_Add contents"
-msgstr ""
+msgstr "İçerik _ekle"
 
 #: ../src/collect-table.c:2171 ../src/dupe.c:3528 ../src/img-view.c:1490
-#, fuzzy
 msgid "Add contents _recursive"
-msgstr "Yeniden adlandır .."
+msgstr "Özyinelemeli içe_rik ekle"
 
 #: ../src/collect-table.c:2173 ../src/dupe.c:3529 ../src/img-view.c:1491
-#, fuzzy
 msgid "_Skip folders"
-msgstr "Başlangıç dizini"
+msgstr "Di_zinleri atla"
 
 #: ../src/collect-table.c:2176 ../src/dupe.c:3531 ../src/img-view.c:1493
 #: ../src/view_dir.c:426
@@ -999,42 +948,39 @@ msgstr "Vazgeç"
 
 #: ../src/color-man.c:434 ../src/exif.c:227 ../src/exif-common.c:448
 msgid "sRGB"
-msgstr ""
+msgstr "sRGB"
 
 #: ../src/color-man.c:436
 msgid "Adobe RGB compatible"
-msgstr ""
+msgstr "Adobe RGB uyumlu"
 
 #: ../src/color-man.c:453
-#, fuzzy
 msgid "Custom profile"
-msgstr "Benim dosya tiplerim :"
+msgstr "Özel düzen"
 
 #: ../src/debug.c:55
 msgid "error"
-msgstr ""
+msgstr "hata"
 
 #: ../src/debug.c:56
 msgid "warning"
-msgstr ""
+msgstr "uyarı"
 
 #: ../src/desktop_file.c:83 ../src/desktop_file.c:95 ../src/desktop_file.c:101
 msgid "Can't save"
-msgstr ""
+msgstr "Kaydedilemiyor"
 
 #: ../src/desktop_file.c:83
 msgid "Please specify file name."
-msgstr ""
+msgstr "Lütfen dosya adını belirtin."
 
 #: ../src/desktop_file.c:95
-#, fuzzy
 msgid "Could not create directory"
-msgstr "Dizini yaratamadım"
+msgstr "Dizin oluşturulamadı"
 
 #: ../src/desktop_file.c:191 ../src/desktop_file.c:554
-#, fuzzy
 msgid "Desktop file"
-msgstr "Dosyayı sil"
+msgstr "Masaüstü dosyası"
 
 #: ../src/desktop_file.c:300 ../src/ui_pathsel.c:494
 #, c-format
@@ -1042,13 +988,13 @@ msgid ""
 "Unable to delete file:\n"
 "%s"
 msgstr ""
-"%s 'yi maalesef\n"
-"silemedim"
+"Dosya silinemedi:\n"
+"%s"
 
 #: ../src/desktop_file.c:301 ../src/ui_pathsel.c:495 ../src/utilops.c:2133
 #: ../src/utilops.c:2160 ../src/utilops.c:2682
 msgid "File deletion failed"
-msgstr "Silerken bir hata oluştu"
+msgstr "Dosya silme başarısız oldu"
 
 #: ../src/desktop_file.c:345 ../src/desktop_file.c:353 ../src/ui_pathsel.c:537
 #: ../src/ui_pathsel.c:545
@@ -1061,208 +1007,198 @@ msgid ""
 "About to delete the file:\n"
 " %s"
 msgstr ""
-"%s dosyasını\n"
-"silmek üzereyim"
+"Dosya silinmek üzere:\n"
+" %s"
 
 #: ../src/desktop_file.c:383
 msgid "new.desktop"
-msgstr ""
+msgstr "yeni.desktop"
 
 #: ../src/desktop_file.c:467
 msgid "Plugins"
-msgstr ""
+msgstr "Eklentiler"
 
 #: ../src/desktop_file.c:544
 msgid "Hidden"
-msgstr ""
+msgstr "Gizli"
 
 #: ../src/desktop_file.c:563 ../src/dupe.c:2770 ../src/dupe.c:3307
 #: ../src/print.c:3211 ../src/search.c:3115 ../src/ui_pathsel.c:1120
 #: ../src/utilops.c:501
 msgid "Path"
-msgstr ""
+msgstr "Yol"
 
 #: ../src/dupe.c:108
 msgid "Drop files to compare them."
-msgstr ""
+msgstr "Karşılaştırmak için dosyaları bırakın."
 
 #: ../src/dupe.c:112
-#, fuzzy, c-format
+#, c-format
 msgid "%d files"
-msgstr "%d dosya %s"
+msgstr "%d dosya"
 
 #: ../src/dupe.c:116
 #, c-format
 msgid "%d matches found in %d files"
-msgstr ""
+msgstr "%d dosyada %d eşleşme bulundu"
 
 #: ../src/dupe.c:121
 msgid "[set 1]"
-msgstr ""
+msgstr "[ayar 1]"
 
 #: ../src/dupe.c:1488
-#, fuzzy
 msgid "Reading checksums..."
-msgstr "Tırnakları yükliyorum .."
+msgstr "Sağlama toplamları okunuyor..."
 
 #: ../src/dupe.c:1521
 msgid "Reading dimensions..."
-msgstr ""
+msgstr "Boyutlar okunuyor..."
 
 #: ../src/dupe.c:1555
 msgid "Reading similarity data..."
-msgstr ""
+msgstr "Benzerlik verileri okunuyor..."
 
 #: ../src/dupe.c:1591 ../src/dupe.c:1622
-#, fuzzy
 msgid "Comparing..."
-msgstr "Kopyala ..."
+msgstr "Karşılaştırma..."
 
 #: ../src/dupe.c:1602 ../src/pan-view/pan-view.c:1011
-#, fuzzy
 msgid "Sorting..."
-msgstr "Kopyala ..."
+msgstr "Sıralama..."
 
 #: ../src/dupe.c:2352
 msgid "Select group _1 duplicates"
-msgstr ""
+msgstr "Grup _1 kopyalarını seç"
 
 #: ../src/dupe.c:2354
 msgid "Select group _2 duplicates"
-msgstr ""
+msgstr "Grup _2 kopyalarını seç"
 
 #: ../src/dupe.c:2386 ../src/dupe.c:2673 ../src/search.c:1100
 msgid "C_lear"
-msgstr ""
+msgstr "Temiz_le"
 
 #: ../src/dupe.c:2389 ../src/dupe.c:2676
-#, fuzzy
 msgid "Close _window"
-msgstr "Pencereyi kapat"
+msgstr "_Pencereyi kapat"
 
 #: ../src/dupe.c:2549
-#, fuzzy, c-format
+#, c-format
 msgid "%d files (set 2)"
-msgstr "%d dosya %s"
+msgstr "%d dosya (ayar 2)"
 
 #: ../src/dupe.c:2765
 msgid "Name case-insensitive"
-msgstr ""
+msgstr "Ad büyük/küçük harfe duyarlı"
 
 #: ../src/dupe.c:2766 ../src/dupe.c:3304 ../src/preferences.c:1809
 #: ../src/print.c:3215 ../src/search.c:3112
 #: ../src/view_file/view_file_list.c:1939
-#, fuzzy
 msgid "Size"
-msgstr "Boy :"
+msgstr "Boyut"
 
 #: ../src/dupe.c:2767 ../src/dupe.c:3305 ../src/exif.c:336
 #: ../src/exif-common.c:565 ../src/print.c:3213 ../src/search.c:3113
 #: ../src/view_file/view_file_list.c:1943
-#, fuzzy
 msgid "Date"
-msgstr "Sil"
+msgstr "Tarih"
 
 #: ../src/dupe.c:2768 ../src/dupe.c:3306 ../src/print.c:3217
 #: ../src/search.c:3114
 msgid "Dimensions"
-msgstr ""
+msgstr "Boyutlar"
 
 #: ../src/dupe.c:2769
 msgid "Checksum"
-msgstr ""
+msgstr "Sağlama Toplamı"
 
 #: ../src/dupe.c:2771
 msgid "Similarity (high)"
-msgstr ""
+msgstr "Benzerlik (yüksek)"
 
 #: ../src/dupe.c:2772
 msgid "Similarity"
-msgstr ""
+msgstr "Benzerlik"
 
 #: ../src/dupe.c:2773
 msgid "Similarity (low)"
-msgstr ""
+msgstr "Benzerlik (düşük)"
 
 #: ../src/dupe.c:2774
 msgid "Similarity (custom)"
-msgstr ""
+msgstr "Benzerlik (özel)"
 
 #: ../src/dupe.c:3257 ../src/toolbar.c:86
-#, fuzzy
 msgid "Find duplicates"
-msgstr "Yeniden adlandır .."
+msgstr "Kopyaları bul"
 
 #: ../src/dupe.c:3339
 msgid "Compare to:"
-msgstr ""
+msgstr "Şununla karşılaştır:"
 
 #: ../src/dupe.c:3352
 msgid "Compare by:"
-msgstr ""
+msgstr "Karşlaştır:"
 
 #: ../src/dupe.c:3360 ../src/preferences.c:1599 ../src/search.c:3128
 msgid "Thumbnails"
-msgstr "Tırnaklar"
+msgstr "Küçük resimler"
 
 #: ../src/dupe.c:3368
 msgid "Ignore Rotation"
-msgstr ""
+msgstr "Döndürmeyi Yoksay"
 
 #: ../src/dupe.c:3376
 msgid "Compare two file sets"
-msgstr ""
+msgstr "İki dosya kümesini karşılaştırın"
 
 #: ../src/dupe.c:3396 ../src/menu.c:221
 msgid "Sort"
-msgstr ""
+msgstr "Sırala"
 
 #: ../src/dupe.c:3404
-#, fuzzy
 msgid "Custom Threshold"
-msgstr "Benim dosya tiplerim :"
+msgstr "Özel Eşik"
 
 #: ../src/editors.c:295
 #, c-format
 msgid "Desktop file '%s' should not include extension in Icon key: '%s'\n"
-msgstr ""
+msgstr "'%s' masaüstü dosyası simge anahtarında uzantı içermemelidir: '%s'\n"
 
 #. flash fired (bit 0)
 #: ../src/editors.c:349 ../src/exif.c:220 ../src/exif-common.c:374
-#, fuzzy
 msgid "yes"
-msgstr "Evet"
+msgstr "evet"
 
 #: ../src/editors.c:349 ../src/exif.c:219 ../src/exif-common.c:374
 msgid "no"
-msgstr ""
+msgstr "hayır"
 
 #: ../src/editors.c:521
-#, fuzzy
 msgid "stopping..."
-msgstr "Kopyala ..."
+msgstr "durduruluyor..."
 
 #: ../src/editors.c:542
 msgid "Edit command results"
-msgstr ""
+msgstr "Komut sonuçlarını düzenle"
 
 #: ../src/editors.c:545
 #, c-format
 msgid "Output of %s"
-msgstr ""
+msgstr "%s çıktısı"
 
 #: ../src/editors.c:1072
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Failed to run command:\n"
 "%s\n"
 msgstr ""
-"%s 'yi maalesef\n"
-"silemedim"
+"Komut çalıştırılamadı:\n"
+"%s\n"
 
 #: ../src/editors.c:1199
 msgid "stopped by user"
-msgstr ""
+msgstr "kullanıcı tarafından durduruldu"
 
 #: ../src/editors.c:1284
 #, c-format
@@ -1270,1041 +1206,989 @@ msgid ""
 "%s\n"
 "\"%s\""
 msgstr ""
+"%s\n"
+"\"%s\""
 
 #: ../src/editors.c:1286
-#, fuzzy
 msgid "Invalid editor command"
-msgstr "Geçersiz dizin"
+msgstr "Geçersiz düzenleyici komutu"
 
 #: ../src/editors.c:1373
 msgid "Editor template is empty."
-msgstr ""
+msgstr "Düzenleyici şablonu boş."
 
 #: ../src/editors.c:1374
 msgid "Editor template has incorrect syntax."
-msgstr ""
+msgstr "Düzenleyici şablonunun yanlış sözdizimi var."
 
 #: ../src/editors.c:1375
 msgid "Editor template uses incompatible macros."
-msgstr ""
+msgstr "Düzenleyici şablonu, uyumsuz makrolar kullanır."
 
 #: ../src/editors.c:1376
 msgid "Can't find matching file type."
-msgstr ""
+msgstr "Eşleşen dosya türü bulunamadı."
 
 #: ../src/editors.c:1377
 msgid "Can't execute external editor."
-msgstr ""
+msgstr "Dış düzenleyici yürütülemiyor."
 
 #: ../src/editors.c:1378
 msgid "External editor returned error status."
-msgstr ""
+msgstr "Dış düzenleyici hata durumu döndürdü."
 
 #: ../src/editors.c:1379
 msgid "File was skipped."
-msgstr ""
+msgstr "Dosya atlanmış."
 
 #: ../src/editors.c:1380
 msgid "Unknown error."
-msgstr ""
+msgstr "Bilinmeyen hata."
 
 #: ../src/exif.c:142 ../src/exif.c:155 ../src/exif.c:169 ../src/exif.c:194
 #: ../src/exif.c:311 ../src/exif.c:658 ../src/exif-common.c:350
 #: ../src/exif-common.c:353 ../src/exif-common.c:420
-#, fuzzy
 msgid "unknown"
-msgstr "(bennebileyimne)'de"
+msgstr "bilinmeyen"
 
 #: ../src/exif.c:143
-#, fuzzy
 msgid "top left"
-msgstr "Sil"
+msgstr "üst sol"
 
 #: ../src/exif.c:144
 msgid "top right"
-msgstr ""
+msgstr "üst sağ"
 
 #: ../src/exif.c:145
 msgid "bottom right"
-msgstr ""
+msgstr "alt sağ"
 
 #: ../src/exif.c:146
 msgid "bottom left"
-msgstr ""
+msgstr "alt sol"
 
 #: ../src/exif.c:147
-#, fuzzy
 msgid "left top"
-msgstr "Sil"
+msgstr "sol üst"
 
 #: ../src/exif.c:148
 msgid "right top"
-msgstr ""
+msgstr "sağ üst"
 
 #: ../src/exif.c:149
 msgid "right bottom"
-msgstr ""
+msgstr "sağ alt"
 
 #: ../src/exif.c:150
 msgid "left bottom"
-msgstr ""
+msgstr "sol alt"
 
 #: ../src/exif.c:157
 msgid "inch"
-msgstr ""
+msgstr "inç"
 
 #: ../src/exif.c:158
 msgid "centimeter"
-msgstr ""
+msgstr "santimetre"
 
 #: ../src/exif.c:170
 msgid "average"
-msgstr ""
+msgstr "ortalama"
 
 #: ../src/exif.c:171
 msgid "center weighted"
-msgstr ""
+msgstr "merkez ağırlıklı"
 
+# programda bakmalı
 #: ../src/exif.c:172
 msgid "spot"
-msgstr ""
+msgstr "nokta"
 
 #: ../src/exif.c:173
 msgid "multi-spot"
-msgstr ""
+msgstr "çoklu nokta"
 
 #: ../src/exif.c:174
 msgid "multi-segment"
-msgstr ""
+msgstr "çok kademeli"
 
 #: ../src/exif.c:175
 msgid "partial"
-msgstr ""
+msgstr "kısmi"
 
 #: ../src/exif.c:176 ../src/exif.c:214
 msgid "other"
-msgstr ""
+msgstr "diğer"
 
 #: ../src/exif.c:181 ../src/exif.c:233
 msgid "not defined"
-msgstr ""
+msgstr "tanımlanmamış"
 
 #: ../src/exif.c:182 ../src/exif.c:261 ../src/exif.c:268
 msgid "manual"
-msgstr ""
+msgstr "el ile"
 
 #: ../src/exif.c:183 ../src/exif.c:254 ../src/exif.c:290 ../src/exif.c:297
 #: ../src/exif.c:304
-#, fuzzy
 msgid "normal"
-msgstr "Genel"
+msgstr "olağan"
 
 #: ../src/exif.c:184
 msgid "aperture"
-msgstr ""
+msgstr "açıklık"
 
 #: ../src/exif.c:185
 msgid "shutter"
-msgstr ""
+msgstr "deklanşör"
 
 #: ../src/exif.c:186
-#, fuzzy
 msgid "creative"
-msgstr "Yarat"
+msgstr "oluşturucu"
 
 #: ../src/exif.c:187
 msgid "action"
-msgstr ""
+msgstr "eylem"
 
 #: ../src/exif.c:188 ../src/exif.c:275
 msgid "portrait"
-msgstr ""
+msgstr "portre"
 
 #: ../src/exif.c:189 ../src/exif.c:274
 msgid "landscape"
-msgstr ""
+msgstr "manzara"
 
 #: ../src/exif.c:195
 msgid "daylight"
-msgstr ""
+msgstr "gün ışığı"
 
 #: ../src/exif.c:196
 msgid "fluorescent"
-msgstr ""
+msgstr "floresan"
 
 #: ../src/exif.c:197
 msgid "tungsten (incandescent)"
-msgstr ""
+msgstr "tungsten (akkor)"
 
 #: ../src/exif.c:198
 msgid "flash"
-msgstr ""
+msgstr "flaş"
 
 #: ../src/exif.c:199
 msgid "fine weather"
-msgstr ""
+msgstr "güzel hava"
 
 #: ../src/exif.c:200
 msgid "cloudy weather"
-msgstr ""
+msgstr "bulutlu hava"
 
 #: ../src/exif.c:201
 msgid "shade"
-msgstr ""
+msgstr "gölge"
 
 #: ../src/exif.c:202
 msgid "daylight fluorescent"
-msgstr ""
+msgstr "gün ışığı floresan"
 
 #: ../src/exif.c:203
 msgid "day white fluorescent"
-msgstr ""
+msgstr "gün beyazı floresan"
 
 #: ../src/exif.c:204
 msgid "cool white fluorescent"
-msgstr ""
+msgstr "soğuk beyaz floresan"
 
 #: ../src/exif.c:205
 msgid "white fluorescent"
-msgstr ""
+msgstr "beyaz floresan"
 
 #: ../src/exif.c:206
 msgid "standard light A"
-msgstr ""
+msgstr "standart ışık A"
 
 #: ../src/exif.c:207
 msgid "standard light B"
-msgstr ""
+msgstr "standart ışık B"
 
 #: ../src/exif.c:208
 msgid "standard light C"
-msgstr ""
+msgstr "standart ışık C"
 
 #: ../src/exif.c:209
 msgid "D55"
-msgstr ""
+msgstr "D55"
 
 #: ../src/exif.c:210
 msgid "D65"
-msgstr ""
+msgstr "D65"
 
 #: ../src/exif.c:211
 msgid "D75"
-msgstr ""
+msgstr "D75"
 
 #: ../src/exif.c:212
 msgid "D50"
-msgstr ""
+msgstr "D50"
 
 #: ../src/exif.c:213
 msgid "ISO studio tungsten"
-msgstr ""
+msgstr "ISO stüdyosu tungsten"
 
 #: ../src/exif.c:221
 msgid "yes, not detected by strobe"
-msgstr ""
+msgstr "evet, çakar tarafından algılanmadı"
 
 #: ../src/exif.c:222
 msgid "yes, detected by strobe"
-msgstr ""
+msgstr "evet, çakar tarafından algılandı"
 
 #: ../src/exif.c:228
 msgid "uncalibrated"
-msgstr ""
+msgstr "kalibre edilmemiş"
 
 #: ../src/exif.c:234
 msgid "1 chip color area"
-msgstr ""
+msgstr "1 çip renk alanı"
 
 #: ../src/exif.c:235
 msgid "2 chip color area"
-msgstr ""
+msgstr "2 çip renk alanı"
 
 #: ../src/exif.c:236
 msgid "3 chip color area"
-msgstr ""
+msgstr "3 çip renk alanı"
 
 #: ../src/exif.c:237
 msgid "color sequential area"
-msgstr ""
+msgstr "renk sıralı alanı"
 
 #: ../src/exif.c:238
-#, fuzzy
 msgid "trilinear"
-msgstr "Filtralama"
+msgstr "üç çizgili"
 
 #: ../src/exif.c:239
 msgid "color sequential linear"
-msgstr ""
+msgstr "renk sıralı doğrusal"
 
 #: ../src/exif.c:244
 msgid "digital still camera"
-msgstr ""
+msgstr "dijital sabit kamera"
 
 #: ../src/exif.c:249
 msgid "direct photo"
-msgstr ""
+msgstr "doğrudan fotoğraf"
 
 #: ../src/exif.c:255
 msgid "custom"
-msgstr ""
+msgstr "özel"
 
 #: ../src/exif.c:260 ../src/exif.c:267 ../src/exif-common.c:388
 msgid "auto"
-msgstr ""
+msgstr "otomatik"
 
 #: ../src/exif.c:262
-#, fuzzy
 msgid "auto bracket"
-msgstr "Mönü adı"
+msgstr "otomatik destek"
 
 #: ../src/exif.c:273
 msgid "standard"
-msgstr ""
+msgstr "standart"
 
 #: ../src/exif.c:276
 msgid "night scene"
-msgstr ""
+msgstr "gece çekimi"
 
 #: ../src/exif.c:281
-#, fuzzy
 msgid "none"
-msgstr "Taşı"
+msgstr "yok"
 
 #: ../src/exif.c:282
 msgid "low gain up"
-msgstr ""
+msgstr "düşük kazanç"
 
 #: ../src/exif.c:283
 msgid "high gain up"
-msgstr ""
+msgstr "yüksek kazanç"
 
 #: ../src/exif.c:284
-#, fuzzy
 msgid "low gain down"
-msgstr "Pencereyi kapat"
+msgstr "düşük kayıp"
 
 #: ../src/exif.c:285
 msgid "high gain down"
-msgstr ""
+msgstr "yüksek kayıp"
 
 #: ../src/exif.c:291 ../src/exif.c:305
 msgid "soft"
-msgstr ""
+msgstr "yumuşak"
 
 #: ../src/exif.c:292 ../src/exif.c:306
 msgid "hard"
-msgstr ""
+msgstr "sert"
 
 #: ../src/exif.c:298
 msgid "low"
-msgstr ""
+msgstr "düşük"
 
 #: ../src/exif.c:299
 msgid "high"
-msgstr ""
+msgstr "yüksek"
 
 #: ../src/exif.c:312
 msgid "macro"
-msgstr ""
+msgstr "makro"
 
 #: ../src/exif.c:313
 msgid "close"
-msgstr ""
+msgstr "kapat"
 
 #: ../src/exif.c:314
 msgid "distant"
-msgstr ""
+msgstr "uzak"
 
 #: ../src/exif.c:324
-#, fuzzy
 msgid "Image Width"
-msgstr "Resim"
+msgstr "Resim Genişliği"
 
 #: ../src/exif.c:325
-#, fuzzy
 msgid "Image Height"
-msgstr "Geçersiz hedef"
+msgstr "Resim Yüksekliği"
 
 #: ../src/exif.c:326
 msgid "Bits per Sample/Pixel"
-msgstr ""
+msgstr "Örnek/Piksel başına bit"
 
 #: ../src/exif.c:327
-#, fuzzy
 msgid "Compression"
-msgstr "Kopyala ..."
+msgstr "Sıkıştırma"
 
 #: ../src/exif.c:328
-#, fuzzy
 msgid "Image description"
-msgstr "Geçersiz hedef"
+msgstr "Resim açıklaması"
 
 #: ../src/exif.c:329
 msgid "Camera make"
-msgstr ""
+msgstr "Kamera yapma"
 
 #: ../src/exif.c:330
 msgid "Camera model"
-msgstr ""
+msgstr "Kamera modeli"
 
 #: ../src/exif.c:331
 msgid "Orientation"
-msgstr ""
+msgstr "Yönlendirme"
 
 #: ../src/exif.c:332
 msgid "X resolution"
-msgstr ""
+msgstr "X çözünürlüğü"
 
 #: ../src/exif.c:333
 msgid "Y Resolution"
-msgstr ""
+msgstr "Y çözünürlüğü"
 
 #: ../src/exif.c:334
-#, fuzzy
 msgid "Resolution units"
-msgstr "Ã\9cstüne yaz"
+msgstr "Ã\87özünürlük birimleri"
 
 #: ../src/exif.c:335
 msgid "Firmware"
-msgstr ""
+msgstr "Yazılım"
 
 #: ../src/exif.c:337
 msgid "White point"
-msgstr ""
+msgstr "Beyaz nokta"
 
 #: ../src/exif.c:338
 msgid "Primary chromaticities"
-msgstr ""
+msgstr "Birincil kromatiklikler"
 
 #: ../src/exif.c:339
 msgid "YCbCy coefficients"
-msgstr ""
+msgstr "YCbCy katsayıları"
 
 #: ../src/exif.c:340
 msgid "YCbCr positioning"
-msgstr ""
+msgstr "YCbCr konumlandırma"
 
 #: ../src/exif.c:341
-#, fuzzy
 msgid "Black white reference"
-msgstr "Geeqie - yeniden adlandır"
+msgstr "Siyah beyaz referans"
 
 #: ../src/exif.c:343
 msgid "SubIFD Exif offset"
-msgstr ""
+msgstr "SubIFD Exif baskı"
 
 #. subIFD follows
 #: ../src/exif.c:345
 msgid "Exposure time (seconds)"
-msgstr ""
+msgstr "Pozlama süresi (saniye)"
 
 #: ../src/exif.c:346
 msgid "FNumber"
-msgstr ""
+msgstr "Oransal açıklık"
 
 #: ../src/exif.c:347
 msgid "Exposure program"
-msgstr ""
+msgstr "Pozlama programı"
 
 #: ../src/exif.c:348
 msgid "Spectral Sensitivity"
-msgstr ""
+msgstr "Görüntüsel Duyarlılık"
 
 #: ../src/exif.c:349 ../src/exif.c:385 ../src/exif-common.c:569
 msgid "ISO sensitivity"
-msgstr ""
+msgstr "ISO Duyarlılığı"
 
 #: ../src/exif.c:350
 msgid "Optoelectric conversion factor"
-msgstr ""
+msgstr "Optoelektrik dönüşüm etkeni"
 
 #: ../src/exif.c:351
 msgid "Exif version"
-msgstr ""
+msgstr "Exif sürümü"
 
 #: ../src/exif.c:352
 msgid "Date original"
-msgstr ""
+msgstr "Özgün tarih"
 
 #: ../src/exif.c:353
 msgid "Date digitized"
-msgstr ""
+msgstr "Sayısallaştırılmış tarih"
 
 #: ../src/exif.c:354
-#, fuzzy
 msgid "Pixel format"
-msgstr "Filtralama"
+msgstr "Piksel biçimi"
 
 #: ../src/exif.c:355
 msgid "Compression ratio"
-msgstr ""
+msgstr "Sıkıştırma oranı"
 
 #: ../src/exif.c:356 ../src/exif-common.c:566
 msgid "Shutter speed"
-msgstr ""
+msgstr "Deklanşör hızı"
 
 #: ../src/exif.c:357 ../src/exif-common.c:567
 msgid "Aperture"
-msgstr ""
+msgstr "Açıklık"
 
 #: ../src/exif.c:358
 msgid "Brightness"
-msgstr ""
+msgstr "Parlaklık"
 
 #: ../src/exif.c:359 ../src/exif-common.c:568
 msgid "Exposure bias"
-msgstr ""
+msgstr "Pozlama eğilimi"
 
 #: ../src/exif.c:360
-#, fuzzy
 msgid "Maximum aperture"
-msgstr "Dosya"
+msgstr "En fazla açıklık"
 
 #: ../src/exif.c:361 ../src/exif-common.c:572
 msgid "Subject distance"
-msgstr ""
+msgstr "Özne uzaklığı"
 
 #: ../src/exif.c:362
 msgid "Metering mode"
-msgstr ""
+msgstr "Ölçme kipi"
 
 #: ../src/exif.c:363
 msgid "Light source"
-msgstr ""
+msgstr "Işık kaynağı"
 
 #: ../src/exif.c:364 ../src/exif-common.c:573
 msgid "Flash"
-msgstr ""
+msgstr "Flaş"
 
 #: ../src/exif.c:365 ../src/exif-common.c:570
 msgid "Focal length"
-msgstr ""
+msgstr "Odak uzaklığı"
 
 #: ../src/exif.c:366
 msgid "Subject area"
-msgstr ""
+msgstr "Özne alanı"
 
 #: ../src/exif.c:367
 msgid "MakerNote"
-msgstr ""
+msgstr "YapanNotu"
 
 #: ../src/exif.c:368
-#, fuzzy
 msgid "UserComment"
-msgstr "Büyült"
+msgstr "KullanıcıYorumu"
 
 #: ../src/exif.c:369
 msgid "Subsecond time"
-msgstr ""
+msgstr "Alt İkinci zaman"
 
 #: ../src/exif.c:370
 msgid "Subsecond time original"
-msgstr ""
+msgstr "Özgün Alt İkinci zaman"
 
 #: ../src/exif.c:371
 msgid "Subsecond time digitized"
-msgstr ""
+msgstr "Alt İkinci zaman sayısallaştırılmış"
 
 #: ../src/exif.c:372
 msgid "FlashPix version"
-msgstr ""
+msgstr "FlashPix sürümü"
 
 #: ../src/exif.c:373
 msgid "Colorspace"
-msgstr ""
+msgstr "Renkalanı"
 
 #. ExifImageWidth, ExifImageHeight can also be unsigned short
 #: ../src/exif.c:375 ../src/preferences.c:2604
 msgid "Width"
-msgstr ""
+msgstr "Genişlik"
 
 #: ../src/exif.c:376 ../src/preferences.c:2606
 msgid "Height"
-msgstr ""
+msgstr "Yükseklik"
 
 #: ../src/exif.c:377
-#, fuzzy
 msgid "Audio data"
-msgstr "Listeleri yenile"
+msgstr "Ses verisi"
 
 #: ../src/exif.c:378
 msgid "ExifR98 extension"
-msgstr ""
+msgstr "ExifR98 uzantısı"
 
 #: ../src/exif.c:379
 msgid "Flash strength"
-msgstr ""
+msgstr "Flaş gücü"
 
 #: ../src/exif.c:380
 msgid "Spatial frequency response"
-msgstr ""
+msgstr "Mekansal frekans cevabı"
 
 #: ../src/exif.c:381
 msgid "X Pixel density"
-msgstr ""
+msgstr "X Piksel yoğunluğu"
 
 #: ../src/exif.c:382
 msgid "Y Pixel density"
-msgstr ""
+msgstr "Y Piksel yoğunluğu"
 
 #: ../src/exif.c:383
 msgid "Pixel density units"
-msgstr ""
+msgstr "Piksel yoğunluğu birimleri"
 
 #: ../src/exif.c:384
-#, fuzzy
 msgid "Subject location"
-msgstr "Seçenekler ..."
+msgstr "Özne konumu"
 
 #: ../src/exif.c:386
 msgid "Sensor type"
-msgstr ""
+msgstr "Algılayıcı türü"
 
 #: ../src/exif.c:387
 msgid "Source type"
-msgstr ""
+msgstr "Kaynak türü"
 
 #: ../src/exif.c:388
-#, fuzzy
 msgid "Scene type"
-msgstr "Filtralama"
+msgstr "Sahne türü"
 
 #: ../src/exif.c:389
 msgid "Color filter array pattern"
-msgstr ""
+msgstr "Renk süzgeci sıra deseni"
 
 #. tags a4xx were added for Exif 2.2 (not just these - some above, as well)
 #: ../src/exif.c:391
-#, fuzzy
 msgid "Render process"
-msgstr "Yeniden adlandır"
+msgstr "Oluşturma işlemi"
 
 #: ../src/exif.c:392
 msgid "Exposure mode"
-msgstr ""
+msgstr "Pozlama kipi"
 
 #: ../src/exif.c:393
 msgid "White balance"
-msgstr ""
+msgstr "Beyaz dengesi"
 
 #: ../src/exif.c:394
 msgid "Digital zoom ratio"
-msgstr ""
+msgstr "Sayısal yakınlaştırma oranı"
 
 #: ../src/exif.c:395
 msgid "Focal length (35mm)"
-msgstr ""
+msgstr "Odak uzaklığı (35mm)"
 
 #: ../src/exif.c:396
 msgid "Scene capture type"
-msgstr ""
+msgstr "Sahne yakalama türü"
 
 #: ../src/exif.c:397
-#, fuzzy
 msgid "Gain control"
-msgstr "Dinamik ayarlamalar"
+msgstr "Kazanç denetimi"
 
 #: ../src/exif.c:398
-#, fuzzy
 msgid "Contrast"
-msgstr "Devam et"
+msgstr "Karşıtlık"
 
 #: ../src/exif.c:399 ../src/preferences.c:2220
 msgid "Saturation"
-msgstr ""
+msgstr "Doygunluk"
 
 #: ../src/exif.c:400
 msgid "Sharpness"
-msgstr ""
+msgstr "Netlik"
 
 #: ../src/exif.c:401
 msgid "Device setting"
-msgstr ""
+msgstr "Aygıt ayarları"
 
 #: ../src/exif.c:402
 msgid "Subject range"
-msgstr ""
+msgstr "Özne alanı"
 
 #: ../src/exif.c:403
-#, fuzzy
 msgid "Image serial number"
-msgstr "Resim"
+msgstr "Resmin seri numarası"
 
 #: ../src/exif.c:1110
 msgid "Can't get image comment: not compiled with Exiv2.\n"
-msgstr ""
+msgstr "Resim yorumu alınamıyor: Exiv2 ile derlenmedi.\n"
 
 #: ../src/exif.c:1116
 msgid "Can't set image comment: not compiled with Exiv2.\n"
-msgstr ""
+msgstr "Resim yorumu ayarlanamıyor: Exiv2 ile derlenmedi.\n"
 
 #: ../src/exif-common.c:349
 msgid "infinity"
-msgstr ""
+msgstr "sonsuzluk"
 
 #: ../src/exif-common.c:378
-#, fuzzy
 msgid "mode:"
-msgstr "Dosya"
+msgstr "kip:"
 
 #: ../src/exif-common.c:382 ../src/trash.c:213
 msgid "on"
-msgstr ""
+msgstr "açık"
 
 #: ../src/exif-common.c:385 ../src/trash.c:218
 msgid "off"
-msgstr ""
+msgstr "kapalı"
 
 #: ../src/exif-common.c:394
 msgid "not detected by strobe"
-msgstr ""
+msgstr "çakar tarafından algılanmadı"
 
 #: ../src/exif-common.c:395
 msgid "detected by strobe"
-msgstr ""
+msgstr "çakar tarafından algılandı"
 
 #. we ignore flash function (bit 5)
 #. red-eye (bit 6)
 #: ../src/exif-common.c:400
 msgid "red-eye reduction"
-msgstr ""
+msgstr "kırmızı göz azaltma"
 
 #: ../src/exif-common.c:420
 msgid "dot"
-msgstr ""
+msgstr "benek"
 
 #: ../src/exif-common.c:453
 msgid "AdobeRGB"
-msgstr ""
+msgstr "AdobeRGB"
 
 #: ../src/exif-common.c:461
 msgid "embedded"
-msgstr ""
+msgstr "gömülü"
 
 #: ../src/exif-common.c:556
 msgid "Above Sea Level"
-msgstr ""
+msgstr "Deniz seviyesinden yukarıda"
 
 #: ../src/exif-common.c:556
 msgid "Below Sea Level"
-msgstr ""
+msgstr "Deniz seviyesinin altında"
 
 #: ../src/exif-common.c:564
-#, fuzzy
 msgid "Camera"
-msgstr "Yeniden adlandır"
+msgstr "Kamera"
 
 #: ../src/exif-common.c:571
 msgid "Focal length 35mm"
-msgstr ""
+msgstr "Odak uzaklığı 35mm"
 
 #: ../src/exif-common.c:574
-#, fuzzy
 msgid "Resolution"
-msgstr "Ã\9cstüne yaz"
+msgstr "Ã\87özünürlük"
 
 #: ../src/exif-common.c:575
-#, fuzzy
 msgid "Color profile"
-msgstr "%d dosya %s"
+msgstr "Renk düzeni"
 
 #: ../src/exif-common.c:576
 msgid "GPS position"
-msgstr ""
+msgstr "GPS konumu"
 
 #: ../src/exif-common.c:577
 msgid "GPS altitude"
-msgstr ""
+msgstr "GPS yüksekliği"
 
 #: ../src/exif-common.c:578
-#, fuzzy
 msgid "File size"
-msgstr "Dosya"
+msgstr "Dosya boyutu"
 
 #: ../src/exif-common.c:579
-#, fuzzy
 msgid "File date"
-msgstr "Filtralama"
+msgstr "Dosya tarihi"
 
 #: ../src/exif-common.c:580
-#, fuzzy
 msgid "File mode"
-msgstr "Yeniden adlandır :"
+msgstr "Dosya kipi"
 
 #: ../src/filedata.c:109
-#, fuzzy, c-format
+#, c-format
 msgid "%d bytes"
-msgstr "%d dosya %s"
+msgstr "%d bayt"
 
 #: ../src/filedata.c:113
 #, c-format
 msgid "%.1f K"
-msgstr ""
+msgstr "%.1f K"
 
 #: ../src/filedata.c:117
 #, c-format
 msgid "%.1f MB"
-msgstr ""
+msgstr "%.1f MB"
 
 #: ../src/filedata.c:122
 #, c-format
 msgid "%.1f GB"
-msgstr ""
+msgstr "%.1f GB"
 
 #: ../src/filedata.c:2556
 msgid "file or directory does not exist"
-msgstr ""
+msgstr "dosya veya dizin yok"
 
 #: ../src/filedata.c:2562
-#, fuzzy
 msgid "destination already exists"
-msgstr ""
-"%s dizini \n"
-"zaten dosya halinde\n"
-"var ."
+msgstr "Hedef zaten var"
 
 #: ../src/filedata.c:2568
 msgid "destination can't be overwritten"
-msgstr ""
+msgstr "hedefin üzerine yazılamaz"
 
 #: ../src/filedata.c:2574
 msgid "destination directory is not writable"
-msgstr ""
+msgstr "hedef dizin yazılabilir değil"
 
 #: ../src/filedata.c:2580
 msgid "destination directory does not exist"
-msgstr ""
+msgstr "hedef dizin yok"
 
 #: ../src/filedata.c:2586
 msgid "source directory is not writable"
-msgstr ""
+msgstr "kaynak dizin yazılabilir değil"
 
 #: ../src/filedata.c:2592
 msgid "no read permission"
-msgstr ""
+msgstr "okuma izni yok"
 
 #: ../src/filedata.c:2598
 msgid "file is readonly"
-msgstr ""
+msgstr "dosya salt okunur"
 
 #: ../src/filedata.c:2604
 msgid "destination already exists and will be overwritten"
-msgstr ""
+msgstr "hedef zaten var ve üzerine yazılacak"
 
 #: ../src/filedata.c:2610
-#, fuzzy
 msgid "source and destination are the same"
-msgstr "Kaynak ve hedef eşittir, işlem durduruldu ."
+msgstr "kaynak ve hedef aynı"
 
 #: ../src/filedata.c:2616
-#, fuzzy
 msgid "source and destination have different extension"
-msgstr "Kaynak ve hedef eşittir, işlem durduruldu ."
+msgstr "kaynak ve hedef farklı uzantılara sahip"
 
 #: ../src/filedata.c:2622
 msgid "there are unsaved metadata changes for the file"
-msgstr ""
+msgstr "dosya için kaydedilmemiş meta veri değişiklikleri var"
 
 #: ../src/filedata.c:2628
 msgid "another destination file has the same filename"
-msgstr ""
+msgstr "başka bir hedef dosya aynı dosya adına sahip"
 
 #: ../src/fullscreen.c:242 ../src/layout_util.c:1822 ../src/layout_util.c:1823
 #: ../src/layout_util.c:1824 ../src/preferences.c:1822
-#, fuzzy
 msgid "Full screen"
 msgstr "Tam ekran"
 
 #: ../src/fullscreen.c:413
-#, fuzzy
 msgid "Full size"
-msgstr "Dosya"
+msgstr "Tam boy"
 
 #: ../src/fullscreen.c:421
 msgid "Monitor"
-msgstr ""
+msgstr "Monitör"
 
 #: ../src/fullscreen.c:427
 msgid "Screen"
-msgstr ""
+msgstr "Ekran"
 
 #: ../src/fullscreen.c:661
 msgid "Determined by Window Manager"
-msgstr ""
+msgstr "Pencere Yöneticisi tarafından belirlenir"
 
 #: ../src/fullscreen.c:662
 msgid "Active screen"
-msgstr ""
+msgstr "Etkin ekran"
 
 #: ../src/fullscreen.c:664
 msgid "Active monitor"
-msgstr ""
+msgstr "Etkin monitör"
 
 #: ../src/histogram.c:121
 msgid "Log Histogram on Red"
-msgstr ""
+msgstr "Kırmızı üzerinde Günlük Histogramı"
 
 #: ../src/histogram.c:122
 msgid "Log Histogram on Green"
-msgstr ""
+msgstr "Yeşil üzerinde Günlük Histogramı"
 
 #: ../src/histogram.c:123
 msgid "Log Histogram on Blue"
-msgstr ""
+msgstr "Mavi üzerinde Günlük Histogramı"
 
 #: ../src/histogram.c:124
 msgid "Log Histogram on RGB"
-msgstr ""
+msgstr "RGB üzerinde Günlük Histogramı"
 
 #: ../src/histogram.c:125
 msgid "Log Histogram on value"
-msgstr ""
+msgstr "Değer üzerinde Günlük Histogramı"
 
 #: ../src/histogram.c:130
 msgid "Linear Histogram on Red"
-msgstr ""
+msgstr "Kırmızı üzerinde Doğrusal Histogram"
 
 #: ../src/histogram.c:131
 msgid "Linear Histogram on Green"
-msgstr ""
+msgstr "Yeşil üzerinde Doğrusal Histogram"
 
 #: ../src/histogram.c:132
 msgid "Linear Histogram on Blue"
-msgstr ""
+msgstr "Mavi üzerinde Doğrusal Histogram"
 
 #: ../src/histogram.c:133
 msgid "Linear Histogram on RGB"
-msgstr ""
+msgstr "RGB üzerinde Doğrusal Histogram"
 
 #: ../src/histogram.c:134
 msgid "Linear Histogram on value"
-msgstr ""
+msgstr "Değer üzerinde Doğrusal Histogram"
 
 #: ../src/history_list.c:214
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to write history lists to: %s\n"
-msgstr ""
-"%s dizinini maalesef\n"
-"yaratamadım"
+msgstr "Geçmiş listeleri yazılamıyor: %s\n"
 
 #: ../src/image.c:187
-#, fuzzy, c-format
+#, c-format
 msgid " (Collection %s)"
-msgstr "Üstüne yaz"
+msgstr " (Koleksiyon %s)"
 
 #: ../src/image_load_jpeg.c:163
 #, c-format
 msgid "Error interpreting JPEG image file (%s)"
-msgstr ""
+msgstr "JPEG resim dosyası yorumlanırken hata oluştu (%s)"
 
 #: ../src/img-view.c:1303 ../src/layout_image.c:674 ../src/layout_util.c:1789
 #: ../src/layout_util.c:1790 ../src/layout_util.c:1805
 #: ../src/layout_util.c:1806 ../src/pan-view/pan-view.c:2239
-#, fuzzy
 msgid "Zoom _in"
-msgstr "Büyült"
+msgstr "_Yakınlaştır"
 
 #: ../src/img-view.c:1304 ../src/layout_image.c:675 ../src/layout_util.c:1791
 #: ../src/layout_util.c:1792 ../src/layout_util.c:1807
 #: ../src/layout_util.c:1808 ../src/pan-view/pan-view.c:2241
-#, fuzzy
 msgid "Zoom _out"
-msgstr "Küçült"
+msgstr "_Uzaklaştır"
 
 #: ../src/img-view.c:1305 ../src/layout_image.c:676 ../src/layout_util.c:1793
 #: ../src/layout_util.c:1794 ../src/layout_util.c:1809
 #: ../src/layout_util.c:1810 ../src/pan-view/pan-view.c:2243
-#, fuzzy
 msgid "Zoom _1:1"
-msgstr "1:1 göster"
+msgstr "_1:1 Yakınlaştır"
 
 #: ../src/img-view.c:1306 ../src/layout_image.c:677
-#, fuzzy
 msgid "Fit image to _window"
-msgstr "Pencerenin boyutuna ayarla"
+msgstr "Resmi _pencereye sığdır"
 
 #: ../src/img-view.c:1315 ../src/layout_image.c:687 ../src/layout_util.c:1787
-#, fuzzy
 msgid "Set as _wallpaper"
-msgstr "Ardalan yap"
+msgstr "_Duvar kağıdı olarak ayarla"
 
 #: ../src/img-view.c:1320 ../src/layout_image.c:694
 msgid "_Go to directory view"
-msgstr ""
+msgstr "Dizin görünümüne _git"
 
 #: ../src/img-view.c:1339 ../src/layout_image.c:719
-#, fuzzy
 msgid "_Stop slideshow"
-msgstr "Resim şovu"
+msgstr "Resim gö_sterisini durdur"
 
 #: ../src/img-view.c:1342 ../src/layout_image.c:722
-#, fuzzy
 msgid "Continue slides_how"
-msgstr "Resim şovunu aç/kapat"
+msgstr "Resim gösterisine _devam et"
 
 #: ../src/img-view.c:1347 ../src/img-view.c:1355 ../src/layout_image.c:727
 #: ../src/layout_image.c:734
-#, fuzzy
 msgid "Pause slides_how"
-msgstr "Resim şovu"
+msgstr "Resim gösterisini _duraklat"
 
 #: ../src/img-view.c:1353 ../src/layout_image.c:733
-#, fuzzy
 msgid "_Start slideshow"
-msgstr "Resim şovu"
+msgstr "Resim gösterisini _başlat"
 
 #: ../src/img-view.c:1361 ../src/layout_image.c:744
 #: ../src/pan-view/pan-view.c:2321
-#, fuzzy
 msgid "Exit _full screen"
-msgstr "Tam ekrandan çık"
+msgstr "Tam _ekrandan çık"
 
 #: ../src/img-view.c:1365 ../src/layout_image.c:740
 #: ../src/pan-view/pan-view.c:2325
-#, fuzzy
 msgid "_Full screen"
-msgstr "Tam ekran"
+msgstr "_Tam ekran"
 
 #: ../src/img-view.c:1369 ../src/layout_util.c:1765
 #: ../src/pan-view/pan-view.c:2329
-#, fuzzy
 msgid "C_lose window"
-msgstr "Pencereyi kapat"
+msgstr "Pencereyi _kapat"
 
 #: ../src/layout.c:402 ../src/view_file/view_file.c:634
 msgid "Ascending"
-msgstr ""
+msgstr "Artan"
 
 #: ../src/layout.c:482
 msgid "Scroll to top left corner"
-msgstr ""
+msgstr "Sol üst köşeye kaydır"
 
 #: ../src/layout.c:487
 msgid "Scroll to image center"
-msgstr ""
+msgstr "Resim merkezine kaydır"
 
 #: ../src/layout.c:492
 msgid "Keep the region from previous image"
-msgstr ""
+msgstr "Bölgeyi önceki resimden uzak tut"
 
 #: ../src/layout.c:579
 msgid " Slideshow"
-msgstr "Resim şovu"
+msgstr " Resim gösterisi"
 
 #: ../src/layout.c:583
 msgid " Paused"
-msgstr ""
+msgstr " Duraklatıldı"
 
 #: ../src/layout.c:599
-#, fuzzy, c-format
+#, c-format
 msgid "%s, %d files (%s, %d)%s"
-msgstr "%d dosya (%d)%s"
+msgstr "%s, %d dosya (%s, %d)%s"
 
 #: ../src/layout.c:606
-#, fuzzy, c-format
+#, c-format
 msgid "%s, %d files%s"
-msgstr "%d dosya %s"
+msgstr "%s, %d dosya%s"
 
 #: ../src/layout.c:611
 #, c-format
@@ -2314,1432 +2198,1269 @@ msgstr "%d dosya %s"
 #: ../src/layout.c:657
 #, c-format
 msgid "(no read permission) %s bytes"
-msgstr ""
+msgstr "(okuma izni yok) %s bayt"
 
 #: ../src/layout.c:661
-#, fuzzy, c-format
+#, c-format
 msgid "( ? x ? ) %s bytes"
-msgstr "( ? x ? ) %d byte"
+msgstr "( ? x ? ) %s bayt"
 
 #: ../src/layout.c:669
-#, fuzzy, c-format
+#, c-format
 msgid "( %d x %d ) %s bytes"
-msgstr "( %d x %d ) %d byte"
+msgstr "( %d x %d ) %s bayt"
 
 #: ../src/layout.c:755
-#, fuzzy
 msgid "Select sort order"
-msgstr "Sil .."
+msgstr "Sıralama düzenini seç"
 
 #: ../src/layout.c:760
-#, fuzzy
 msgid "Folder contents (files selected)"
-msgstr "geçerli opsiyonlar :\n"
+msgstr "Dizin içeriği (seçilen dosyalar)"
 
 #: ../src/layout.c:769
-#, fuzzy
 msgid "(Image dimensions) Image size"
-msgstr "Geçersiz hedef"
+msgstr "(Resim boyutları) Resim boyutu"
 
 #: ../src/layout.c:779
-#, fuzzy
 msgid "Select zoom mode"
-msgstr "Sil .."
+msgstr "Yakınlaştırma kipini seç"
 
 #. expand only in small format
 #: ../src/layout.c:789
 msgid "[Pixel x,y coord]: (Pixel R,G,B value)"
-msgstr ""
+msgstr "[Piksel x, y koordinatı]: (Piksel R, G, B değeri)"
 
 #: ../src/layout.c:1429 ../src/layout_config.c:67
-#, fuzzy
 msgid "Tools"
-msgstr "Dosya"
+msgstr "Araçlar"
 
 #: ../src/layout.c:2056
 msgid "Window options and layout"
-msgstr ""
+msgstr "Pencere seçenekleri ve düzeni"
 
 #: ../src/layout.c:2121
-#, fuzzy
 msgid "General options"
-msgstr "Genel"
+msgstr "Genel seçenekler"
 
 #: ../src/layout.c:2123
 msgid "Home path (empty to use your home directory)"
-msgstr ""
+msgstr "Ana yol (ev dizininizi kullanmak için boş)"
 
 #: ../src/layout.c:2131
 msgid "Use current"
-msgstr "Şu ankini kullan"
+msgstr "Geçerliyi kullan"
 
 #: ../src/layout.c:2134
-#, fuzzy
 msgid "Show date in directories list view"
-msgstr "Geeqie - yeni dizin"
+msgstr "Tarihi dizin listesi görünümünde göster"
 
 #: ../src/layout.c:2137
 msgid "Exit program when this window is closed"
-msgstr ""
+msgstr "Bu pencere kapandığında programdan çık"
 
 #: ../src/layout.c:2140
-#, fuzzy
 msgid "Start-up directory:"
-msgstr "Başlangıç dizini"
+msgstr "Başlangıç dizini:"
 
 #: ../src/layout.c:2142
 msgid "No change"
-msgstr ""
+msgstr "Değişiklik yok"
 
 #: ../src/layout.c:2145
-#, fuzzy
 msgid "Restore last path"
-msgstr "Silerken bir hata oluştu"
+msgstr "Son yolu geri yükle"
 
 #: ../src/layout.c:2148
-#, fuzzy
 msgid "Home path"
-msgstr "Kopyala"
+msgstr "Ev yolu"
 
 #: ../src/layout.c:2152 ../src/print.c:3375 ../src/print.c:3382
 msgid "Layout"
-msgstr ""
+msgstr "Düzen"
 
 #: ../src/layout.c:2399
-#, fuzzy
 msgid "Invalid geometry\n"
-msgstr "geçerli opsiyonlar :\n"
+msgstr "Geçersiz geometri\n"
 
 #: ../src/layout_config.c:67 ../src/preferences.c:1941 ../src/ui_pathsel.c:1187
-#, fuzzy
 msgid "Files"
-msgstr "Dosya"
+msgstr "Dosyalar"
 
-#: ../src/layout_config.c:67 ../src/preferences.c:108 ../src/preferences.c:1710
-#: ../src/print.c:133
+#: ../src/layout_config.c:67 ../src/preferences.c:108
+#: ../src/preferences.c:1710 ../src/print.c:133
 msgid "Image"
 msgstr "Resim"
 
 #: ../src/layout_config.c:358
 msgid "(drag to change order)"
-msgstr ""
+msgstr "(sırayı değiştirmek için sürükleyin)"
 
 #: ../src/layout_image.c:747
 msgid "_Animate"
-msgstr ""
+msgstr "_Canlandırma"
 
 #: ../src/layout_image.c:751
-#, fuzzy
 msgid "Hide file _list"
-msgstr "Dosya listesini göster/gizle"
+msgstr "Dosya _listesini gizle"
 
 #: ../src/layout_image.c:1941
 #, c-format
 msgid "[%*d,%*d]: RGB(%3d,%3d,%3d)"
-msgstr ""
+msgstr "[%*d,%*d]: RGB(%3d,%3d,%3d)"
 
 #: ../src/layout_image.c:1949
 #, c-format
 msgid "[%*s,%*s]: RGB(---,---,---)"
-msgstr ""
+msgstr "[%*s,%*s]: RGB(---,---,---)"
 
 #: ../src/layout_util.c:523
-#, fuzzy
 msgid "Operation failed:\n"
-msgstr "%s dizinini yaratamadım \n"
+msgstr "İşlem başarısız:\n"
 
 #: ../src/layout_util.c:526
-#, fuzzy
 msgid "Cannot create tmp file"
-msgstr "Dizini yaratamadım"
+msgstr "tmp dosyası oluşturulamıyor"
 
 #: ../src/layout_util.c:529
-#, fuzzy
 msgid "File: "
-msgstr "Filtralama"
+msgstr "Dosya: "
 
 #: ../src/layout_util.c:533
-#, fuzzy
 msgid "Image orientation"
-msgstr "Geçersiz hedef"
+msgstr "Resim yönü"
 
 #: ../src/layout_util.c:1715
-#, fuzzy
 msgid "_File"
-msgstr "Dosya"
+msgstr "_Dosya"
 
 #: ../src/layout_util.c:1716
 msgid "_Go"
-msgstr ""
+msgstr "_Git"
 
 #: ../src/layout_util.c:1717 ../src/menu.c:119
-#, fuzzy
 msgid "_Edit"
-msgstr "Düzenle"
+msgstr "_Düzenle"
 
 #: ../src/layout_util.c:1718
-#, fuzzy
 msgid "_Select"
-msgstr "Seçenekler ..."
+msgstr "_Seç"
 
 #: ../src/layout_util.c:1719 ../src/menu.c:372
 msgid "_Orientation"
-msgstr ""
+msgstr "_Yönlendirme"
 
 #: ../src/layout_util.c:1720
-#, fuzzy
 msgid "_Rating"
-msgstr "Filtralama"
+msgstr "De_recelendirme"
 
 #: ../src/layout_util.c:1721
-#, fuzzy
 msgid "P_references"
-msgstr "Seçenekler ..."
+msgstr "Te_rcihler"
 
 #: ../src/layout_util.c:1723
 msgid "_Files and Folders"
-msgstr ""
+msgstr "_Dosya ve Dizinler"
 
 #: ../src/layout_util.c:1724
-#, fuzzy
 msgid "_Zoom"
-msgstr "Büyült"
+msgstr "_Yakınlaştırma"
 
 #: ../src/layout_util.c:1725
 msgid "_Color Management"
-msgstr ""
+msgstr "_Renk Yönetimi"
 
 #: ../src/layout_util.c:1726
 msgid "_Connected Zoom"
-msgstr ""
+msgstr "_Bağlı Yakınlaştırma"
 
 #: ../src/layout_util.c:1727
 msgid "Spli_t"
-msgstr ""
+msgstr "_Bölümleme"
 
 #: ../src/layout_util.c:1728
 msgid "Stere_o"
-msgstr ""
+msgstr "Stere_o"
 
 #: ../src/layout_util.c:1729 ../src/layout_util.c:1866
-#, fuzzy
 msgid "Image _Overlay"
-msgstr "Resim"
+msgstr "Resim _Yerleşimi"
 
 #: ../src/layout_util.c:1730
 msgid "_Plugins"
-msgstr ""
+msgstr "_Eklentiler"
 
 #: ../src/layout_util.c:1731
-#, fuzzy
 msgid "_Help"
-msgstr "Yardım"
+msgstr "_Yardım"
 
 #: ../src/layout_util.c:1733
-#, fuzzy
 msgid "_First Image"
-msgstr "%d dosya %s"
+msgstr "İlk _Resim"
 
 #: ../src/layout_util.c:1733 ../src/toolbar.c:74
-#, fuzzy
 msgid "First Image"
-msgstr "%d dosya %s"
+msgstr "İlk Resim"
 
 #: ../src/layout_util.c:1734 ../src/layout_util.c:1735
 #: ../src/layout_util.c:1736
 msgid "_Previous Image"
-msgstr ""
+msgstr "Önceki Res_im"
 
 #: ../src/layout_util.c:1734 ../src/layout_util.c:1735
 #: ../src/layout_util.c:1736 ../src/toolbar.c:75
-#, fuzzy
 msgid "Previous Image"
-msgstr "%d dosya %s"
+msgstr "Önceki Resim"
 
 #: ../src/layout_util.c:1737 ../src/layout_util.c:1738
 #: ../src/layout_util.c:1739
-#, fuzzy
 msgid "_Next Image"
-msgstr "%d dosya %s"
+msgstr "So_nraki Resim"
 
 #: ../src/layout_util.c:1737 ../src/layout_util.c:1738
 #: ../src/layout_util.c:1739 ../src/toolbar.c:76
-#, fuzzy
 msgid "Next Image"
-msgstr "%d dosya %s"
+msgstr "Sonraki Resim"
 
 #: ../src/layout_util.c:1740
-#, fuzzy
 msgid "_Last Image"
-msgstr "%d dosya %s"
+msgstr "_Son Resim"
 
 #: ../src/layout_util.c:1740 ../src/toolbar.c:77
-#, fuzzy
 msgid "Last Image"
-msgstr "%d dosya %s"
+msgstr "Son Resim"
 
 #: ../src/layout_util.c:1741
 msgid "_Back"
-msgstr ""
+msgstr "_Geri"
 
 #: ../src/layout_util.c:1741 ../src/toolbar.c:78
 msgid "Back"
-msgstr ""
+msgstr "Geri"
 
 #: ../src/layout_util.c:1742
 msgid "_Forward"
-msgstr ""
+msgstr "İle_ri"
 
 #: ../src/layout_util.c:1742 ../src/toolbar.c:79
 msgid "Forward"
-msgstr ""
+msgstr "İleri"
 
 #: ../src/layout_util.c:1743
 msgid "_Home"
-msgstr ""
+msgstr "_Ev"
 
 #: ../src/layout_util.c:1743 ../src/options.c:193 ../src/toolbar.c:80
 #: ../src/ui_bookmark.c:567 ../src/ui_pathsel.c:1056
 msgid "Home"
-msgstr ""
+msgstr "Ev"
 
 #: ../src/layout_util.c:1744
 msgid "_Up"
-msgstr ""
+msgstr "Y_ukarı"
 
 #: ../src/layout_util.c:1744 ../src/toolbar.c:81
 msgid "Up"
-msgstr ""
+msgstr "Yukarı"
 
 #: ../src/layout_util.c:1746 ../src/toolbar.c:82
-#, fuzzy
 msgid "New _window"
-msgstr "Seçenekler ..."
+msgstr "Yeni _pencere"
 
 #: ../src/layout_util.c:1746
-#, fuzzy
 msgid "New window"
-msgstr "Seçenekler ..."
+msgstr "Yeni pencere"
 
 #: ../src/layout_util.c:1747
-#, fuzzy
 msgid "_New collection"
-msgstr "Seçenekler ..."
+msgstr "Ye_ni koleksiyon"
 
 #: ../src/layout_util.c:1747 ../src/menu.c:431 ../src/toolbar.c:83
-#, fuzzy
 msgid "New collection"
-msgstr "Seçenekler ..."
+msgstr "Yeni koleksiyon"
 
 #: ../src/layout_util.c:1748
-#, fuzzy
 msgid "_Open collection..."
-msgstr "Seçenekler ..."
+msgstr "K_oleksiyon aç..."
 
 #: ../src/layout_util.c:1748
-#, fuzzy
 msgid "Open collection..."
-msgstr "Seçenekler ..."
+msgstr "Koleksiyon aç..."
 
 #: ../src/layout_util.c:1749
 msgid "Open recen_t"
-msgstr ""
+msgstr "_Son kullanılanı aç"
 
 #: ../src/layout_util.c:1749
-#, fuzzy
 msgid "Open recent"
-msgstr "Seçenekler ..."
+msgstr "Son kullanılanı aç"
 
 #: ../src/layout_util.c:1750
-#, fuzzy
 msgid "_Search..."
-msgstr "Kopyala ..."
+msgstr "_Ara..."
 
 #: ../src/layout_util.c:1750
-#, fuzzy
 msgid "Search..."
-msgstr "Kopyala ..."
+msgstr "Ara..."
 
 #: ../src/layout_util.c:1751
-#, fuzzy
 msgid "Find duplicates..."
-msgstr "Yeniden adlandır .."
+msgstr "Kopayarı bul..."
 
 #: ../src/layout_util.c:1752
-#, fuzzy
 msgid "Pa_n view"
-msgstr ""
-"%s'yi yeniden\n"
-"adlandır :\n"
-" "
+msgstr "Tava Görü_nümü"
 
 #: ../src/layout_util.c:1752 ../src/toolbar.c:87
-#, fuzzy
 msgid "Pan view"
-msgstr ""
-"%s'yi yeniden\n"
-"adlandır :\n"
-" "
+msgstr "Tava görünümü"
 
 #: ../src/layout_util.c:1753
-#, fuzzy
 msgid "_Print..."
-msgstr "Yeniden adlandır .."
+msgstr "_Yazdır..."
 
 #: ../src/layout_util.c:1754
-#, fuzzy
 msgid "N_ew folder..."
-msgstr "Sil .."
+msgstr "Y_eni dizin..."
 
 #: ../src/layout_util.c:1754
-#, fuzzy
 msgid "New folder..."
-msgstr "Sil .."
+msgstr "Yeni dizin..."
 
 #: ../src/layout_util.c:1755
-#, fuzzy
 msgid "Copy..."
-msgstr "Kopyala ..."
+msgstr "Kopyala..."
 
 #: ../src/layout_util.c:1756
-#, fuzzy
 msgid "Move..."
-msgstr "Taşı ..."
+msgstr "Taşı..."
 
 #: ../src/layout_util.c:1757
-#, fuzzy
 msgid "Rename..."
-msgstr "Yeniden adlandır .."
+msgstr "Yeniden adlandır..."
 
 #: ../src/layout_util.c:1758 ../src/layout_util.c:1759
 #: ../src/layout_util.c:1760
-#, fuzzy
 msgid "Delete..."
-msgstr "Sil .."
+msgstr "Sil..."
 
 #: ../src/layout_util.c:1761 ../src/view_file/view_file.c:616
-#, fuzzy
 msgid "Enable file _grouping"
-msgstr "Dosya filtralarını kapat"
+msgstr "Dosya _gruplamasını etkinleştir"
 
 #: ../src/layout_util.c:1761
-#, fuzzy
 msgid "Enable file grouping"
-msgstr "Dosya filtralarını kapat"
+msgstr "Dosya gruplamasını etkinleştir"
 
 #: ../src/layout_util.c:1762 ../src/view_file/view_file.c:618
-#, fuzzy
 msgid "Disable file groupi_ng"
-msgstr "Dosya filtralarını kapat"
+msgstr "Dosya grupla_mayı devre dışı bırak"
 
 #: ../src/layout_util.c:1762
-#, fuzzy
 msgid "Disable file grouping"
-msgstr "Dosya filtralarını kapat"
+msgstr "Dosya gruplamayı devre dışı bırak"
 
 #: ../src/layout_util.c:1763
-#, fuzzy
 msgid "_Copy path to clipboard"
-msgstr "Kopyala"
+msgstr "Yolu panoya _kopyala"
 
 #: ../src/layout_util.c:1763
 msgid "Copy path to clipboard"
-msgstr ""
+msgstr "Yolu panoya kopyala"
 
 #: ../src/layout_util.c:1764
-#, fuzzy
 msgid "_Copy path unquoted to clipboard"
-msgstr "Kopyala"
+msgstr "Alıntılanmamış yolu panoya _kopyala"
 
 #: ../src/layout_util.c:1764
-#, fuzzy
 msgid "Copy path unquoted to clipboard"
-msgstr "Kopyala"
+msgstr "Alıntılanmamış yolu panoya kopyala"
 
 #: ../src/layout_util.c:1765
-#, fuzzy
 msgid "Close window"
 msgstr "Pencereyi kapat"
 
 #: ../src/layout_util.c:1766
-#, fuzzy
 msgid "_Quit"
-msgstr "Yeniden adlandır .."
+msgstr "Çı_k"
 
 #: ../src/layout_util.c:1766 ../src/toolbar.c:117
-#, fuzzy
 msgid "Quit"
-msgstr "Yeniden adlandır .."
+msgstr "Çık"
 
 #: ../src/layout_util.c:1767 ../src/menu.c:314
 msgid "_Rotate clockwise"
-msgstr ""
+msgstr "Saat yönünde döndü_r"
 
 #: ../src/layout_util.c:1767
 msgid "Rotate clockwise"
-msgstr ""
+msgstr "Saat yönünde döndür"
 
 #: ../src/layout_util.c:1768
 msgid "_Rating 0"
-msgstr ""
+msgstr "De_recelendirme 0"
 
 #: ../src/layout_util.c:1768
-#, fuzzy
 msgid "Rating 0"
-msgstr "Filtralama"
+msgstr "Derecelendirme 0"
 
 #: ../src/layout_util.c:1769
 msgid "_Rating 1"
-msgstr ""
+msgstr "De_recelendirme 1"
 
 #: ../src/layout_util.c:1769
-#, fuzzy
 msgid "Rating 1"
-msgstr "Filtralama"
+msgstr "Derecelendirme 1"
 
 #: ../src/layout_util.c:1770
 msgid "_Rating 2"
-msgstr ""
+msgstr "De_recelendirme 2"
 
 #: ../src/layout_util.c:1770
-#, fuzzy
 msgid "Rating 2"
-msgstr "Filtralama"
+msgstr "Derecelendirme 2"
 
 #: ../src/layout_util.c:1771
 msgid "_Rating 3"
-msgstr ""
+msgstr "De_recelendirme 3"
 
 #: ../src/layout_util.c:1771
-#, fuzzy
 msgid "Rating 3"
-msgstr "Filtralama"
+msgstr "Derecelendirme 3"
 
 #: ../src/layout_util.c:1772
 msgid "_Rating 4"
-msgstr ""
+msgstr "De_recelendirme 4"
 
 #: ../src/layout_util.c:1772
-#, fuzzy
 msgid "Rating 4"
-msgstr "Filtralama"
+msgstr "Derecelendirme 4"
 
 #: ../src/layout_util.c:1773
 msgid "_Rating 5"
-msgstr ""
+msgstr "De_recelendirme 5"
 
 #: ../src/layout_util.c:1773
-#, fuzzy
 msgid "Rating 5"
-msgstr "Filtralama"
+msgstr "Derecelendirme 5"
 
 #: ../src/layout_util.c:1774
 msgid "_Rating -1"
-msgstr ""
+msgstr "De_recelendirme -1"
 
 #: ../src/layout_util.c:1774
 msgid "Rating -1"
-msgstr ""
+msgstr "Derecelendirme -1"
 
 #: ../src/layout_util.c:1775 ../src/menu.c:317
 msgid "Rotate _counterclockwise"
-msgstr ""
+msgstr "_Saat yönünün tersine çevir"
 
 #: ../src/layout_util.c:1775
 msgid "Rotate counterclockwise"
-msgstr ""
+msgstr "Saat yönünün tersine çevir"
 
 #: ../src/layout_util.c:1776
 msgid "Rotate 1_80"
-msgstr ""
+msgstr "1_80 derece döndür"
 
 #: ../src/layout_util.c:1776
 msgid "Rotate 180"
-msgstr ""
+msgstr "180 derece döndür"
 
 #: ../src/layout_util.c:1777 ../src/menu.c:323
 msgid "_Mirror"
-msgstr ""
+msgstr "_Ayna"
 
 #: ../src/layout_util.c:1777
 msgid "Mirror"
-msgstr ""
+msgstr "Ayna"
 
 #: ../src/layout_util.c:1778 ../src/menu.c:326
 msgid "_Flip"
-msgstr ""
+msgstr "Çe_vir"
 
 #: ../src/layout_util.c:1778
 msgid "Flip"
-msgstr ""
+msgstr "Çevir"
 
 #: ../src/layout_util.c:1779 ../src/menu.c:329
-#, fuzzy
 msgid "_Original state"
-msgstr "Yeniden adlandır :"
+msgstr "Özgün hali"
 
 #: ../src/layout_util.c:1779
-#, fuzzy
 msgid "Original state"
-msgstr "Yeniden adlandır :"
+msgstr "Özgün hali"
 
 #: ../src/layout_util.c:1780
-#, fuzzy
 msgid "Select _all"
-msgstr "Silerken bir hata oluştu"
+msgstr "_Tümünü seç"
 
 #: ../src/layout_util.c:1781
-#, fuzzy
 msgid "Select _none"
-msgstr "Seçenekler ..."
+msgstr "Hiçbir şey seçme"
 
 #: ../src/layout_util.c:1782
-#, fuzzy
 msgid "_Invert Selection"
-msgstr "Seçenekler ..."
+msgstr "Zıt Seç_im"
 
 #: ../src/layout_util.c:1782
-#, fuzzy
 msgid "Invert Selection"
-msgstr "Seçenekler ..."
+msgstr "Zıt Seçim"
 
 #: ../src/layout_util.c:1783
-#, fuzzy
 msgid "P_references..."
-msgstr "Seçenekle..."
+msgstr "Seçenekle_r..."
 
 #: ../src/layout_util.c:1783
-#, fuzzy
 msgid "Preferences..."
-msgstr "Seçenekler ..."
+msgstr "Seçenekler..."
 
 #: ../src/layout_util.c:1784
-#, fuzzy
 msgid "Configure _Plugins..."
-msgstr "Seçenekleri ayarla"
+msgstr "Eklentileri Ya_pılandır..."
 
 #: ../src/layout_util.c:1784
-#, fuzzy
 msgid "Configure Plugins..."
-msgstr "Seçenekleri ayarla"
+msgstr "Eklentileri Yapılandır..."
 
 #: ../src/layout_util.c:1785
-#, fuzzy
 msgid "_Configure this window..."
-msgstr "Seçenekleri ayarla"
+msgstr "Bu pen_cereyi yapılandır..."
 
 #: ../src/layout_util.c:1785
-#, fuzzy
 msgid "Configure this window..."
-msgstr "Seçenekleri ayarla"
+msgstr "Bu pencereyi yapılandır..."
 
 #: ../src/layout_util.c:1786
 msgid "_Thumbnail maintenance..."
-msgstr ""
+msgstr "_Küçük resim bakımı..."
 
 #: ../src/layout_util.c:1786
-#, fuzzy
 msgid "Thumbnail maintenance..."
-msgstr "Geeqie tam ekran"
+msgstr "Küçük resim bakımı"
 
 #: ../src/layout_util.c:1787
-#, fuzzy
 msgid "Set as wallpaper"
-msgstr "Ardalan yap"
+msgstr "Duvar kağıdı olarak ayarla"
 
 #: ../src/layout_util.c:1788
 msgid "_Save metadata"
-msgstr ""
+msgstr "Meta verileri _kaydet"
 
 #: ../src/layout_util.c:1788
 msgid "Save metadata"
-msgstr ""
+msgstr "Meta verileri kaydet"
 
 #: ../src/layout_util.c:1789 ../src/layout_util.c:1790 ../src/toolbar.c:92
 msgid "Zoom in"
-msgstr "Büyült"
+msgstr "Büyüt"
 
 #: ../src/layout_util.c:1791 ../src/layout_util.c:1792 ../src/toolbar.c:93
 msgid "Zoom out"
 msgstr "Küçült"
 
 #: ../src/layout_util.c:1793 ../src/layout_util.c:1794 ../src/toolbar.c:94
-#, fuzzy
 msgid "Zoom 1:1"
-msgstr "1:1 göster"
+msgstr "1:1 yakınlaştır"
 
 #: ../src/layout_util.c:1795 ../src/layout_util.c:1796
 #: ../src/layout_util.c:1811 ../src/layout_util.c:1812
-#, fuzzy
 msgid "_Zoom to fit"
-msgstr "Küçült"
+msgstr "Sığdırmak için _yakınlaştır"
 
 #: ../src/layout_util.c:1795 ../src/layout_util.c:1796 ../src/toolbar.c:95
-#, fuzzy
 msgid "Zoom to fit"
-msgstr "Küçült"
+msgstr "Sığdırmak için yakınlaştır"
 
 #: ../src/layout_util.c:1797 ../src/layout_util.c:1813
 msgid "Fit _Horizontally"
-msgstr ""
+msgstr "_Yatay Olarak Sığdır"
 
 #: ../src/layout_util.c:1797
 msgid "Fit Horizontally"
-msgstr ""
+msgstr "Yatay Olarak Sığdır"
 
 #: ../src/layout_util.c:1798 ../src/layout_util.c:1814
 msgid "Fit _Vertically"
-msgstr ""
+msgstr "_Dikey Olarak Sığdır"
 
 #: ../src/layout_util.c:1798
 msgid "Fit Vertically"
-msgstr ""
+msgstr "Dikey Olarak Sığdır"
 
 #: ../src/layout_util.c:1799 ../src/layout_util.c:1815
-#, fuzzy
 msgid "Zoom _2:1"
-msgstr "1:1 göster"
+msgstr "_2:1 Yakınlaştır"
 
 #: ../src/layout_util.c:1799 ../src/toolbar.c:98
-#, fuzzy
 msgid "Zoom 2:1"
-msgstr "1:1 göster"
+msgstr "2:1 Yakınlaştır"
 
 #: ../src/layout_util.c:1800 ../src/layout_util.c:1816
-#, fuzzy
 msgid "Zoom _3:1"
-msgstr "1:1 göster"
+msgstr "_3:1 Yakınlaştır"
 
 #: ../src/layout_util.c:1800 ../src/toolbar.c:99
-#, fuzzy
 msgid "Zoom 3:1"
-msgstr "1:1 göster"
+msgstr "3:1 Yakınlaştır"
 
 #: ../src/layout_util.c:1801 ../src/layout_util.c:1817
-#, fuzzy
 msgid "Zoom _4:1"
-msgstr "1:1 göster"
+msgstr "_4:1 Yakınlaştır"
 
 #: ../src/layout_util.c:1801 ../src/toolbar.c:100
-#, fuzzy
 msgid "Zoom 4:1"
-msgstr "1:1 göster"
+msgstr "4:1 Yakınlaştır"
 
 #: ../src/layout_util.c:1802 ../src/layout_util.c:1818 ../src/toolbar.c:101
-#, fuzzy
 msgid "Zoom 1:2"
-msgstr "1:1 göster"
+msgstr "1:2 Yakınlaştır"
 
 #: ../src/layout_util.c:1803 ../src/layout_util.c:1819
-#, fuzzy
 msgid "Zoom 1:3"
-msgstr "1:1 göster"
+msgstr "1:3 Yakınlaştır"
 
 #: ../src/layout_util.c:1804 ../src/layout_util.c:1820 ../src/toolbar.c:103
-#, fuzzy
 msgid "Zoom 1:4"
-msgstr "1:1 göster"
+msgstr "1:4 Yakınlaştır"
 
 #: ../src/layout_util.c:1805 ../src/layout_util.c:1806 ../src/toolbar.c:104
 msgid "Connected Zoom in"
-msgstr ""
+msgstr "Bağlı Yakınlaştır"
 
 #: ../src/layout_util.c:1807 ../src/layout_util.c:1808
-#, fuzzy
 msgid "Connected Zoom out"
-msgstr "Küçült"
+msgstr "Bağlı Uzaklaştır"
 
 #: ../src/layout_util.c:1809 ../src/layout_util.c:1810
-#, fuzzy
 msgid "Connected Zoom 1:1"
-msgstr "1:1 göster"
+msgstr "Bağlı Yakınlaştırma 1:1"
 
 #: ../src/layout_util.c:1811 ../src/layout_util.c:1812
-#, fuzzy
 msgid "Connected Zoom to fit"
-msgstr "Küçült"
+msgstr "Sığdırmak İçin Bağlı Yakınlaştır"
 
 #: ../src/layout_util.c:1813
 msgid "Connected Fit Horizontally"
-msgstr ""
+msgstr "Bağlı Yatay Sığdırma"
 
 #: ../src/layout_util.c:1814
 msgid "Connected Fit Vertically"
-msgstr ""
+msgstr "Bağlı Dikey Sığdırma"
 
 #: ../src/layout_util.c:1815
-#, fuzzy
 msgid "Connected Zoom 2:1"
-msgstr "1:1 göster"
+msgstr "Bağlı Yakınlaştırma 2:1"
 
 #: ../src/layout_util.c:1816
-#, fuzzy
 msgid "Connected Zoom 3:1"
-msgstr "1:1 göster"
+msgstr "Bağlı Yakınlaştırma 3:1"
 
 #: ../src/layout_util.c:1817
-#, fuzzy
 msgid "Connected Zoom 4:1"
-msgstr "1:1 göster"
+msgstr "Bağlı Yakınlaştırma 4:1"
 
 #: ../src/layout_util.c:1818
-#, fuzzy
 msgid "Connected Zoom 1:2"
-msgstr "1:1 göster"
+msgstr "Bağlı Yakınlaştırma 1:2"
 
 #: ../src/layout_util.c:1819
-#, fuzzy
 msgid "Connected Zoom 1:3"
-msgstr "1:1 göster"
+msgstr "Bağlı Yakınlaştırma 1:3"
 
 #: ../src/layout_util.c:1820
-#, fuzzy
 msgid "Connected Zoom 1:4"
-msgstr "1:1 göster"
+msgstr "Bağlı Yakınlaştırma 1:4"
 
 #: ../src/layout_util.c:1821
-#, fuzzy
 msgid "_View in new window"
-msgstr "Yeni penerede göster"
+msgstr "_Yeni pencerede göster"
 
 #: ../src/layout_util.c:1821
-#, fuzzy
 msgid "View in new window"
-msgstr "Yeni penerede göster"
+msgstr "Yeni pencerede göster"
 
 #: ../src/layout_util.c:1822 ../src/layout_util.c:1823
 #: ../src/layout_util.c:1824
-#, fuzzy
 msgid "F_ull screen"
-msgstr "Tam ekran"
+msgstr "T_am ekran"
 
 #: ../src/layout_util.c:1825 ../src/layout_util.c:1826
-#, fuzzy
 msgid "_Leave full screen"
-msgstr "Geeqie tam ekran"
+msgstr "Tam ekrandan çık"
 
 #: ../src/layout_util.c:1825 ../src/layout_util.c:1826
-#, fuzzy
 msgid "Leave full screen"
-msgstr "Geeqie tam ekran"
+msgstr "Tam ekrandan çık"
 
 #: ../src/layout_util.c:1827
 msgid "_Cycle through overlay modes"
-msgstr ""
+msgstr "_Kaplama kipleriyle dolaş"
 
 #: ../src/layout_util.c:1827
 msgid "Cycle through Overlay modes"
-msgstr ""
+msgstr "Kaplama kipleriyle dolaş"
 
 #: ../src/layout_util.c:1828
 msgid "Cycle through histogram ch_annels"
-msgstr ""
+msgstr "Histogram k_anallarıyla dolaş"
 
 #: ../src/layout_util.c:1828
 msgid "Cycle through histogram channels"
-msgstr ""
+msgstr "Histogram kanallarıyla dolaş"
 
 #: ../src/layout_util.c:1829
 msgid "Cycle through histogram mo_des"
-msgstr ""
+msgstr "Histogram kipleriyle _dolaş"
 
 #: ../src/layout_util.c:1829
 msgid "Cycle through histogram modes"
-msgstr ""
+msgstr "Histogram kipleriyle dolaş"
 
 #: ../src/layout_util.c:1830
-#, fuzzy
 msgid "_Hide file list"
-msgstr "Dosya listesini göster/gizle"
+msgstr "Dosya listesini _gizle"
 
 #: ../src/layout_util.c:1830 ../src/toolbar.c:105
-#, fuzzy
 msgid "Hide file list"
-msgstr "Dosya listesini göster/gizle"
+msgstr "Dosya listesini gizle"
 
 #: ../src/layout_util.c:1831
-#, fuzzy
 msgid "_Pause slideshow"
-msgstr "Resim şovu"
+msgstr "_Resim gösterisini duraklat"
 
 #: ../src/layout_util.c:1831 ../src/toolbar.c:106
-#, fuzzy
 msgid "Pause slideshow"
-msgstr "Resim şovu"
+msgstr "Resim gösterisini duraklat"
 
 #: ../src/layout_util.c:1832
 msgid "Faster"
-msgstr ""
+msgstr "Daha hızlı"
 
 #: ../src/layout_util.c:1833
 msgid "Slower"
-msgstr ""
+msgstr "Daha yavaş"
 
 #: ../src/layout_util.c:1834
-#, fuzzy
 msgid "_Refresh"
-msgstr "Yenile"
+msgstr "_Yenile"
 
 #: ../src/layout_util.c:1834 ../src/toolbar.c:109
-#, fuzzy
 msgid "Refresh"
 msgstr "Yenile"
 
 #: ../src/layout_util.c:1835
 msgid "_Contents"
-msgstr ""
+msgstr "İç_erik"
 
 #: ../src/layout_util.c:1835
-#, fuzzy
 msgid "Contents"
-msgstr "Büyült"
+msgstr "İçerik"
 
 #: ../src/layout_util.c:1836
 msgid "_Keyboard shortcuts"
-msgstr ""
+msgstr "_Klavye kısayolları"
 
 #: ../src/layout_util.c:1836
 msgid "Keyboard shortcuts"
-msgstr ""
+msgstr "Klavye kısayolları"
 
 #: ../src/layout_util.c:1837
 msgid "_Keyboard map"
-msgstr ""
+msgstr "_Klavye haritası"
 
 #: ../src/layout_util.c:1837
-#, fuzzy
 msgid "Keyboard map"
-msgstr "Tırnakları yükliyorum .."
+msgstr "Klavye haritası"
 
 #: ../src/layout_util.c:1838
 msgid "_Release notes"
-msgstr ""
+msgstr "Sü_rüm notları"
 
 #: ../src/layout_util.c:1838
 msgid "Release notes"
-msgstr ""
+msgstr "Sürüm notları"
 
 #: ../src/layout_util.c:1839
 msgid "_ChangeLog"
-msgstr ""
+msgstr "_Değişiklikler"
 
 #: ../src/layout_util.c:1839
-#, fuzzy
 msgid "ChangeLog notes"
-msgstr "Ev dizinime geç"
+msgstr "Değişiklik notları"
 
 #: ../src/layout_util.c:1840
-#, fuzzy
 msgid "_About"
-msgstr "Hakkında"
+msgstr "H_akkında"
 
 #: ../src/layout_util.c:1840
-#, fuzzy
 msgid "About"
 msgstr "Hakkında"
 
 #: ../src/layout_util.c:1841
-#, fuzzy
 msgid "_Log Window"
-msgstr "Pencereyi kapat"
+msgstr "Gün_lük Penceresi"
 
 #: ../src/layout_util.c:1841
-#, fuzzy
 msgid "Log Window"
-msgstr "Pencereyi kapat"
+msgstr "Günlük Penceresi"
 
 #: ../src/layout_util.c:1842
-#, fuzzy
 msgid "_Exif window"
-msgstr "Pencereyi kapat"
+msgstr "Exif Penceresi"
 
 #: ../src/layout_util.c:1842 ../src/toolbar.c:111
-#, fuzzy
 msgid "Exif window"
-msgstr "Seçenekler ..."
+msgstr "Exif penceresi"
 
 #: ../src/layout_util.c:1843
 msgid "_Cycle through stereo modes"
-msgstr ""
+msgstr "_Stereo kipleri arasında geçiş yap"
 
 #: ../src/layout_util.c:1843
 msgid "Cycle through stereo modes"
-msgstr ""
+msgstr "Stereo kipleri arasında geçiş yap"
 
 #: ../src/layout_util.c:1844
-#, fuzzy
 msgid "_Next Pane"
-msgstr "%d dosya %s"
+msgstr "So_nraki Bölme"
 
 #: ../src/layout_util.c:1844
-#, fuzzy
 msgid "Next Pane"
-msgstr "%d dosya %s"
+msgstr "Sonraki Bölme"
 
 #: ../src/layout_util.c:1845
-#, fuzzy
 msgid "_Previous Pane"
-msgstr "%d dosya %s"
+msgstr "Önceki _Bölme"
 
 #: ../src/layout_util.c:1845
-#, fuzzy
 msgid "Previous Pane"
-msgstr "%d dosya %s"
+msgstr "Önceki Bölme"
 
 #: ../src/layout_util.c:1846
 msgid "_Up Pane"
-msgstr ""
+msgstr "Y_ukarı Bölme"
 
 #: ../src/layout_util.c:1846
 msgid "Up Pane"
-msgstr ""
+msgstr "Yukarı Bölme"
 
 #: ../src/layout_util.c:1847
 msgid "_Down Pane"
-msgstr ""
+msgstr "_Aşağı Bölme"
 
 #: ../src/layout_util.c:1847
 msgid "Down Pane"
-msgstr ""
+msgstr "Aşağı Bölme"
 
 #: ../src/layout_util.c:1848
-#, fuzzy
 msgid "_Write orientation to file"
-msgstr "Üstüne yaz"
+msgstr "Yönlendirmeyi dosyaya _yaz"
 
 #: ../src/layout_util.c:1848
-#, fuzzy
 msgid "Write orientation to file"
-msgstr "Üstüne yaz"
+msgstr "Yönlendirmeyi dosyaya yaz"
 
 #: ../src/layout_util.c:1849
 msgid "_Write orientation to file (preserve timestamp)"
-msgstr ""
+msgstr "Yönlendirmeyi dosyaya _yaz (zaman damgasını koru)"
 
 #: ../src/layout_util.c:1849
 msgid "Write orientation to file (preserve timestamp)"
-msgstr ""
+msgstr "Yönlendirmeyi dosyaya yaz (zaman damgasını koru)"
 
 #: ../src/layout_util.c:1854
-#, fuzzy
 msgid "Show _Thumbnails"
-msgstr "Tırnakları arabellekte tut"
+msgstr "Küçük Resimleri Gös_ter"
 
 #: ../src/layout_util.c:1854
-#, fuzzy
 msgid "Show Thumbnails"
-msgstr "Tırnakları arabellekte tut"
+msgstr "Küçük Resimleri Göster"
 
 #: ../src/layout_util.c:1855
-#, fuzzy
 msgid "Show _Marks"
-msgstr "Resim"
+msgstr "İşaretleri _Göster"
 
 #: ../src/layout_util.c:1855
-#, fuzzy
 msgid "Show Marks"
-msgstr "Resim"
+msgstr "İşaretleri Göster"
 
 #: ../src/layout_util.c:1856
-#, fuzzy
 msgid "Pi_xel Info"
-msgstr "Filtralama"
+msgstr "Pi_ksel Bilgisi"
 
 #: ../src/layout_util.c:1856
 msgid "Show Pixel Info"
-msgstr ""
+msgstr "Piksel Bilgisini Göster"
 
 #: ../src/layout_util.c:1857
-#, fuzzy
 msgid "_Float file list"
-msgstr "Dosya listesini dinamik et/etme"
+msgstr "_Kayan dosya listesi"
 
 #: ../src/layout_util.c:1857 ../src/toolbar.c:114
-#, fuzzy
 msgid "Float file list"
-msgstr "Dosya listesini dinamik et/etme"
+msgstr "Kayan dosya listesi"
 
 #: ../src/layout_util.c:1858
-#, fuzzy
 msgid "Hide tool_bar"
-msgstr "Geeqie Çerezleri"
+msgstr "Araç çu_buğunu gizle"
 
 #: ../src/layout_util.c:1858
-#, fuzzy
 msgid "Hide toolbar"
-msgstr "Geeqie Çerezleri"
+msgstr "Araç çubuğunu gizle"
 
 #: ../src/layout_util.c:1859
 msgid "_Info sidebar"
-msgstr ""
+msgstr "Yan çubuk b_ilgisi"
 
 #: ../src/layout_util.c:1859 ../src/toolbar.c:115
 msgid "Info sidebar"
-msgstr ""
+msgstr "Yan çubuk bilgisi"
 
 #: ../src/layout_util.c:1860
-#, fuzzy
 msgid "Sort _manager"
-msgstr "Büyült"
+msgstr "Sırala_ma yöneticisi"
 
 #: ../src/layout_util.c:1860 ../src/toolbar.c:116
-#, fuzzy
 msgid "Sort manager"
-msgstr "Büyült"
+msgstr "Sıralama yöneticisi"
 
 #: ../src/layout_util.c:1861
-#, fuzzy
 msgid "Hide Bars"
-msgstr "Geeqie Çerezleri"
+msgstr "Çubukları Gizle"
 
 #: ../src/layout_util.c:1862
-#, fuzzy
 msgid "Toggle _slideshow"
-msgstr "Resim şovu"
+msgstr "Re_sim gösterisini aç"
 
 #: ../src/layout_util.c:1862
-#, fuzzy
 msgid "Toggle slideshow"
-msgstr "Resim şovu"
+msgstr "Resim gösterisini aç"
 
 #: ../src/layout_util.c:1863
 msgid "Use _color profiles"
-msgstr ""
+msgstr "_Renk düzenlerini kullan"
 
 #: ../src/layout_util.c:1863
-#, fuzzy
 msgid "Use color profiles"
-msgstr "%d dosya %s"
+msgstr "Renk düzenlerini kullan"
 
 #: ../src/layout_util.c:1864
 msgid "Use profile from _image"
-msgstr ""
+msgstr "Res_imdeki düzeni kullan"
 
 #: ../src/layout_util.c:1864
 msgid "Use profile from image"
-msgstr ""
+msgstr "Resimdeki düzeni kullan"
 
 #: ../src/layout_util.c:1865
-#, fuzzy
 msgid "Toggle _grayscale"
-msgstr "Resim şovu"
+msgstr "_Gri tonlamalı geçiş yap"
 
 #: ../src/layout_util.c:1865
-#, fuzzy
 msgid "Toggle grayscale"
-msgstr "Resim şovu"
+msgstr "Gri tonlamalı geçiş yap"
 
 #: ../src/layout_util.c:1866
-#, fuzzy
 msgid "Image Overlay"
-msgstr "Resim"
+msgstr "Resim Yerleşimi"
 
 #: ../src/layout_util.c:1867
 msgid "_Show Histogram"
-msgstr ""
+msgstr "Histogramı Gö_ster"
 
 #: ../src/layout_util.c:1867
 msgid "Show Histogram"
-msgstr ""
+msgstr "Histogramı Göster"
 
 #: ../src/layout_util.c:1868
-#, fuzzy
 msgid "Rectangular Selection"
-msgstr "Seçenekler ..."
+msgstr "Dikdörtgen Seçimi"
 
 #: ../src/layout_util.c:1869
 msgid "GIF _animation"
-msgstr ""
+msgstr "GIF c_anlandırması"
 
 #: ../src/layout_util.c:1869
 msgid "Toggle GIF animation"
-msgstr ""
+msgstr "GIF canlandırmasını aç"
 
 #: ../src/layout_util.c:1870
-#, fuzzy
 msgid "_Exif rotate"
-msgstr "Listeleri yenile"
+msgstr "_Exif döndür"
 
 #: ../src/layout_util.c:1870
-#, fuzzy
 msgid "Exif rotate"
-msgstr "Listeleri yenile"
+msgstr "Exif döndür"
 
 #: ../src/layout_util.c:1874
-#, fuzzy
 msgid "Image _List"
-msgstr "Resim"
+msgstr "Resim _Listesi"
 
 #: ../src/layout_util.c:1874
-#, fuzzy
 msgid "View Images as List"
-msgstr "Tırnaklar"
+msgstr "Resimeleri Liste olarak görüntüle"
 
 #: ../src/layout_util.c:1875
-#, fuzzy
 msgid "I_cons"
-msgstr "Tırnaklar"
+msgstr "_Simgeler"
 
 #: ../src/layout_util.c:1875
-#, fuzzy
 msgid "View Images as Icons"
-msgstr "Tırnaklar"
+msgstr "Resimleri Simge olarak görüntüle"
 
 #: ../src/layout_util.c:1879
-#, fuzzy
 msgid "T_oggle Folder View"
-msgstr "Resim şovu"
+msgstr "Dizin Görünümünü _Değiştir"
 
 #: ../src/layout_util.c:1879
-#, fuzzy
 msgid "Toggle Folders View"
-msgstr "Resim şovu"
+msgstr "Dizin Görünümünü Değiştir"
 
 #: ../src/layout_util.c:1883
 msgid "_Horizontal"
-msgstr ""
+msgstr "_Yatay"
 
 #: ../src/layout_util.c:1883
 msgid "Split Horizontal"
-msgstr ""
+msgstr "Yatay Böl"
 
 #: ../src/layout_util.c:1884
 msgid "_Vertical"
-msgstr ""
+msgstr "_Dikey"
 
 #: ../src/layout_util.c:1884
 msgid "Split Vertical"
-msgstr ""
+msgstr "Dikey Böl"
 
 #: ../src/layout_util.c:1885
 msgid "_Quad"
-msgstr ""
+msgstr "_Dörtlü"
 
 #: ../src/layout_util.c:1885
 msgid "Split Quad"
-msgstr ""
+msgstr "Dörde Böl"
 
 #: ../src/layout_util.c:1886
-#, fuzzy
 msgid "_Single"
-msgstr "Boy :"
+msgstr "_Tekli"
 
 #: ../src/layout_util.c:1886
-#, fuzzy
 msgid "Split Single"
-msgstr "Boy :"
+msgstr "Tek Bölmeli"
 
 #: ../src/layout_util.c:1890
 msgid "Input _0: sRGB"
-msgstr ""
+msgstr "Giriş _0: sRGB"
 
 #: ../src/layout_util.c:1890
 msgid "Input 0: sRGB"
-msgstr ""
+msgstr "Giriş 0: sRGB"
 
 #: ../src/layout_util.c:1891
 msgid "Input _1: AdobeRGB compatible"
-msgstr ""
+msgstr "Giriş _1: AdobeRGB uyumlu"
 
 #: ../src/layout_util.c:1891
 msgid "Input 1: AdobeRGB compatible"
-msgstr ""
+msgstr "Giriş 1: AdobeRGB uyumlu"
 
 #: ../src/layout_util.c:1892
 msgid "Input _2"
-msgstr ""
+msgstr "Giriş _2"
 
 #: ../src/layout_util.c:1892
 msgid "Input 2"
-msgstr ""
+msgstr "Giriş 2"
 
 #: ../src/layout_util.c:1893
 msgid "Input _3"
-msgstr ""
+msgstr "Giriş _3"
 
 #: ../src/layout_util.c:1893
 msgid "Input 3"
-msgstr ""
+msgstr "Giriş 3"
 
 #: ../src/layout_util.c:1894
 msgid "Input _4"
-msgstr ""
+msgstr "Giriş _4"
 
 #: ../src/layout_util.c:1894
 msgid "Input 4"
-msgstr ""
+msgstr "Giriş 4"
 
 #: ../src/layout_util.c:1895
 msgid "Input _5"
-msgstr ""
+msgstr "Giriş _5"
 
 #: ../src/layout_util.c:1895
 msgid "Input 5"
-msgstr ""
+msgstr "Giriş 5"
 
 #: ../src/layout_util.c:1899
 msgid "Histogram on Red"
-msgstr ""
+msgstr "Kırmızı Histogram"
 
 #: ../src/layout_util.c:1900
 msgid "Histogram on Green"
-msgstr ""
+msgstr "Yeşil Histogram"
 
 #: ../src/layout_util.c:1901
 msgid "Histogram on Blue"
-msgstr ""
+msgstr "Mavi Histogram"
 
 #: ../src/layout_util.c:1902
 msgid "Histogram on RGB"
-msgstr ""
+msgstr "RGB Histogram"
 
 #: ../src/layout_util.c:1903
 msgid "Histogram on Value"
-msgstr ""
+msgstr "Değer Üzerinde Histogram"
 
 #: ../src/layout_util.c:1907
 msgid "Linear Histogram"
-msgstr ""
+msgstr "Doğrusal Histogram"
 
 #: ../src/layout_util.c:1908
 msgid "_Log Histogram"
-msgstr ""
+msgstr "Gün_lük Histogramı"
 
 #: ../src/layout_util.c:1908
 msgid "Log Histogram"
-msgstr ""
+msgstr "Günlük Histogramı"
 
 #: ../src/layout_util.c:1912
 msgid "_Auto"
-msgstr ""
+msgstr "_Otomatik"
 
 #: ../src/layout_util.c:1912
 msgid "Stereo Auto"
-msgstr ""
+msgstr "Stereo Otomatik"
 
 #: ../src/layout_util.c:1913
 msgid "_Side by Side"
-msgstr ""
+msgstr "_Yan yana"
 
 #: ../src/layout_util.c:1913
 msgid "Stereo Side by Side"
-msgstr ""
+msgstr "Stereo Yan Yana"
 
 #: ../src/layout_util.c:1914
 msgid "_Cross"
-msgstr ""
+msgstr "Çapra_z"
 
 #: ../src/layout_util.c:1914
 msgid "Stereo Cross"
-msgstr ""
+msgstr "Stereo Çapraz"
 
 #: ../src/layout_util.c:1915
 msgid "_Off"
-msgstr ""
+msgstr "_Kapalı"
 
 #: ../src/layout_util.c:1915
 msgid "Stereo Off"
-msgstr ""
+msgstr "Stereo Kapalı"
 
 #: ../src/layout_util.c:2226
 #, c-format
 msgid "Mark _%d"
-msgstr ""
+msgstr "_%d 'i işaretle"
 
 #: ../src/layout_util.c:2227 ../src/view_file/view_file.c:550
 #, c-format
 msgid "_Set mark %d"
-msgstr ""
+msgstr "%d işaretini _ayarla"
 
 #: ../src/layout_util.c:2227
-#, fuzzy, c-format
+#, c-format
 msgid "Set mark %d"
-msgstr "Silerken bir hata oluştu"
+msgstr "%d işaretini ayarla"
 
 #: ../src/layout_util.c:2228 ../src/view_file/view_file.c:551
 #, c-format
 msgid "_Reset mark %d"
-msgstr ""
+msgstr "%d işaretini sıfı_rla"
 
 #: ../src/layout_util.c:2228
-#, fuzzy, c-format
+#, c-format
 msgid "Reset mark %d"
-msgstr "Silerken bir hata oluştu"
+msgstr "%d işaretini sıfırla"
 
 #: ../src/layout_util.c:2229 ../src/layout_util.c:2230
 #: ../src/view_file/view_file.c:552
 #, c-format
 msgid "_Toggle mark %d"
-msgstr ""
+msgstr "%d işaretini değiş_tir"
 
 #: ../src/layout_util.c:2229 ../src/layout_util.c:2230
-#, fuzzy, c-format
+#, c-format
 msgid "Toggle mark %d"
-msgstr "Silerken bir hata oluştu"
+msgstr "%d işaretini değiştir"
 
 #: ../src/layout_util.c:2231
-#, fuzzy, c-format
+#, c-format
 msgid "Se_lect mark %d"
-msgstr "Silerken bir hata oluştu"
+msgstr "%d işaretini _seç"
 
 #: ../src/layout_util.c:2231 ../src/layout_util.c:2232
-#, fuzzy, c-format
+#, c-format
 msgid "Select mark %d"
-msgstr "Silerken bir hata oluştu"
+msgstr "%d işaretini seç"
 
 #: ../src/layout_util.c:2232 ../src/view_file/view_file.c:553
-#, fuzzy, c-format
+#, c-format
 msgid "_Select mark %d"
-msgstr "Silerken bir hata oluştu"
+msgstr "%d işaretini _seç"
 
 #: ../src/layout_util.c:2233 ../src/view_file/view_file.c:554
-#, fuzzy, c-format
+#, c-format
 msgid "_Add mark %d"
-msgstr "Düzenle"
+msgstr "%d iş_areti ekle"
 
 #: ../src/layout_util.c:2233
-#, fuzzy, c-format
+#, c-format
 msgid "Add mark %d"
-msgstr "Düzenle"
+msgstr "%d işareti ekle"
 
 #: ../src/layout_util.c:2234 ../src/view_file/view_file.c:555
 #, c-format
 msgid "_Intersection with mark %d"
-msgstr ""
+msgstr "%d işareti ile kes_işme"
 
 #: ../src/layout_util.c:2234
-#, fuzzy, c-format
+#, c-format
 msgid "Intersection with mark %d"
-msgstr "Silerken bir hata oluştu"
+msgstr "%d işareti ile kesişme"
 
 #: ../src/layout_util.c:2235 ../src/view_file/view_file.c:556
 #, c-format
 msgid "_Unselect mark %d"
-msgstr ""
+msgstr "%d işaretinin seçimini _kaldır"
 
 #: ../src/layout_util.c:2235
-#, fuzzy, c-format
+#, c-format
 msgid "Unselect mark %d"
-msgstr "Silerken bir hata oluştu"
+msgstr "%d işaretinin seçimini kaldır"
 
 #: ../src/layout_util.c:2236
-#, fuzzy, c-format
+#, c-format
 msgid "_Filter mark %d"
-msgstr "Silerken bir hata oluştu"
+msgstr "%d _süzme işareti"
 
 #: ../src/layout_util.c:2236
-#, fuzzy, c-format
+#, c-format
 msgid "Filter mark %d"
-msgstr "Silerken bir hata oluştu"
+msgstr "%d süzme işareti"
 
 #: ../src/layout_util.c:2790
 #, c-format
 msgid "Number of files with unsaved metadata: %d"
-msgstr ""
+msgstr "Kaydedilmemiş meta veri içeren dosya sayısı: %d"
 
 #: ../src/layout_util.c:2796
 msgid "No unsaved metadata"
-msgstr ""
+msgstr "Kaydedilmemiş meta veri yok"
 
 #: ../src/layout_util.c:2843
 #, c-format
@@ -3747,25 +3468,27 @@ msgid ""
 "Image profile: %s\n"
 "Screen profile: %s"
 msgstr ""
+"Resim düzeni:%s\n"
+"Ekran düzeni:%s"
 
 #: ../src/layout_util.c:2851
 msgid "Click to enable color management"
-msgstr ""
+msgstr "Renk yönetimini etkinleştirmek için tıklayın"
 
 #: ../src/layout_util.c:2856
 msgid "Color profiles not supported"
-msgstr ""
+msgstr "Renk düzenleri desteklenmiyor"
 
 #: ../src/layout_util.c:2878
 #, c-format
 msgid "Input _%d: %s"
-msgstr ""
+msgstr "Giriş _%d: %s"
 
 #. something went badly wrong
 #: ../src/lirc.c:209
 #, c-format
 msgid "disconnected from LIRC\n"
-msgstr ""
+msgstr "LIRC bağlantısı kesildi\n"
 
 #: ../src/lirc.c:234
 #, c-format
@@ -3774,100 +3497,100 @@ msgid ""
 "please read the documentation of LIRC to \n"
 "know how to create a proper config file\n"
 msgstr ""
+"LIRC yapılandırma dosyası okunamadı\n"
+"uygun bir yapılandırma dosyası oluşturmayı\n"
+"öğrenmek için lütfen LIRC belgelerini okuyun\n"
 
 #: ../src/logwindow.c:142
 msgid "Log"
-msgstr ""
+msgstr "Günlük"
 
 #: ../src/logwindow.c:171 ../src/preferences.c:2411
 msgid "Debug level:"
-msgstr ""
+msgstr "Hata ayıklama seviyesi:"
 
 #: ../src/main.c:361
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Usage: %s [options] [path]\n"
 "\n"
 msgstr ""
-"Kullanım : gqview [seçenekler] [dizin]\n"
+"Kullanım: %s [seçenekler] [yol]\n"
 "\n"
 
 #: ../src/main.c:362
 msgid "valid options are:\n"
-msgstr "geçerli opsiyonlar :\n"
+msgstr "geçerli seçenekler:\n"
 
 #: ../src/main.c:363
-#, fuzzy
 msgid "  +t, --with-tools                 force show of tools\n"
-msgstr "  +t, +tools                 çerezleri zorunlu olarak göster\n"
+msgstr "  +t, --with-tools                 araç gösterimini zorla\n"
 
 #: ../src/main.c:364
-#, fuzzy
 msgid "  -t, --without-tools              force hide of tools\n"
-msgstr "  -t, -tools                 çerezleri zorunlu olarak gizle\n"
+msgstr "  -t, --without-tools                 araç gizlemeyi zorla\n"
 
 #: ../src/main.c:365
-#, fuzzy
 msgid "  -f, --fullscreen                 start in full screen mode\n"
-msgstr "  -t, -tools                 çerezleri zorunlu olarak gizle\n"
+msgstr "  -f, --fullscreen                  tam ekran modunda başlat\n"
 
 #: ../src/main.c:366
-#, fuzzy
 msgid "  -s, --slideshow                  start in slideshow mode\n"
-msgstr "  -t, -tools                 çerezleri zorunlu olarak gizle\n"
+msgstr "  -s, --slideshow                 resim gösterisi modunda başlat\n"
 
 #: ../src/main.c:367
 msgid ""
 "  -l, --list [files] [collections] open collection window for command line\n"
 msgstr ""
+"  -l, --list [dosyalar] [koleksiyonlar] komut satırı için koleksiyon "
+"penceresini aç\n"
 
 #: ../src/main.c:368
 msgid "      --blank                      start with blank file list\n"
-msgstr ""
+msgstr "      --blank                      boş dosya listesiyle başla\n"
 
 #: ../src/main.c:369
 msgid "      --geometry=XxY+XOFF+YOFF     set main window location\n"
-msgstr ""
+msgstr "      --geometry=XxY+XOFF+YOFF     ana pencere konumunu ayarla\n"
 
 #: ../src/main.c:370
 msgid ""
 "  -r, --remote                     send following commands to open window\n"
 msgstr ""
+"  -r, --remote                     pencereyi açmak için aşağıdaki komutları "
+"gönderin\n"
 
 #: ../src/main.c:371
-#, fuzzy
 msgid "  -rh,--remote-help                print remote command list\n"
-msgstr "  -t, -tools                 çerezleri zorunlu olarak gizle\n"
+msgstr "  -rh,--remote-help                uzaktan komut listesini yazdır\n"
 
 #: ../src/main.c:373
-#, fuzzy
 msgid "      --debug[=level]              turn on debug output\n"
-msgstr "  -debug                     dışa-atımı aç\n"
+msgstr "      --debug[=level]              hata ayıklama çıktısını aç\n"
 
 #: ../src/main.c:374
 msgid "  -g:<regexp>, --grep:<regexp>     filter debug output\n"
-msgstr ""
+msgstr "  -g:<regexp>, --grep:<regexp>     hata ayıklama çıktısını süz\n"
 
 #: ../src/main.c:376
-#, fuzzy
 msgid "  +w, --show-log-window            show log window\n"
-msgstr "  +t, +tools                 çerezleri zorunlu olarak göster\n"
+msgstr "  +w, --show-log-window            günlük penceresini göster\n"
 
 #: ../src/main.c:377
 msgid "  -o:<file>, --log-file:<file>     save log data to file\n"
-msgstr ""
+msgstr "  -o:<file>, --log-file:<file>     günlük verisini dosyaya kaydet\n"
 
 #: ../src/main.c:378
-#, fuzzy
 msgid "  -v, --version                    print version info\n"
-msgstr "  -t, -tools                 çerezleri zorunlu olarak gizle\n"
+msgstr "  -v, --version                    sürüm bilgisini yazdır\n"
 
 #: ../src/main.c:379
-#, fuzzy
 msgid ""
 "  -h, --help                       show this message\n"
 "\n"
-msgstr "  -h, --help                 bu mesajı gösterir\n"
+msgstr ""
+"  -h, --help                       bu iletiyi yazdır\n"
+"\n"
 
 #: ../src/main.c:392
 #, c-format
@@ -3875,506 +3598,473 @@ msgid ""
 "invalid or ignored: %s\n"
 "Use --help for options\n"
 msgstr ""
-"%s geçersiz ya da dikkate alınmıyor\n"
-"--help ile seçenekleri öğrenebilirsin\n"
+"geçersiz yada dikkate alınmayan: %s\n"
+"seçenekler için --help kullanın\n"
 
 #: ../src/main.c:421
-#, fuzzy
 msgid "Invalid or ignored remote options: "
-msgstr ""
-"%s geçersiz ya da dikkate alınmıyor\n"
-"--help ile seçenekleri öğrenebilirsin\n"
+msgstr "Geçersiz veya yok sayılan uzak seçenekler: "
 
 #: ../src/main.c:430
 msgid ""
 "\n"
 "Use --remote-help for valid remote options.\n"
 msgstr ""
+"\n"
+"Geçerli uzak seçenekler için --remote-help komutunu kullanın.\n"
 
 #: ../src/main.c:532
-#, fuzzy, c-format
+#, c-format
 msgid "Creating %s dir:%s\n"
-msgstr "Dizini yaratamadım"
+msgstr "%s dizini oluşturuluyor:%s\n"
 
 #: ../src/main.c:536
-#, fuzzy, c-format
+#, c-format
 msgid "Could not create dir:%s\n"
-msgstr "Dizini yaratamadım"
+msgstr "Dizin oluşturulamadı:%s\n"
 
 #: ../src/main.c:588
-#, fuzzy, c-format
+#, c-format
 msgid "error saving file: %s\n"
-msgstr "%s ayar dosyasını kaydederken bir hata oluştu\n"
+msgstr "dosya kaydedilirken hata oluştu: %s\n"
 
 #: ../src/main.c:607
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "error saving file: %s\n"
 "error: %s\n"
-msgstr "%s ayar dosyasını kaydederken bir hata oluştu\n"
+msgstr ""
+"dosya kaydedilirken hata oluştu: %s\n"
+"hata: %s\n"
 
 #: ../src/main.c:717
-#, fuzzy
 msgid "exit"
-msgstr "Çık"
+msgstr "Çıkış"
 
 #: ../src/main.c:722
-#, fuzzy, c-format
+#, c-format
 msgid "Quit %s"
-msgstr "Yeniden adlandır .."
+msgstr "%s 'den çık"
 
 #: ../src/main.c:724
 msgid "Collections have been modified. Quit anyway?"
-msgstr ""
+msgstr "Koleksiyonlar değiştirildi. Yine de çıkılsın mı?"
 
 #: ../src/main.c:939 ../src/remote.c:708
-#, fuzzy
 msgid "Command line"
-msgstr "Komuta"
+msgstr "Komut satırı"
 
 #: ../src/menu.c:143
 msgid "Sort by size"
-msgstr ""
+msgstr "Boyuta göre sırala"
 
 #: ../src/menu.c:146
 msgid "Sort by date"
-msgstr ""
+msgstr "Tarihe göre sırala"
 
 #: ../src/menu.c:149
-#, fuzzy
 msgid "Sort by file creation date"
-msgstr "Listeleri yenile"
+msgstr "Dosya oluşturma tarihine göre sırala"
 
 #: ../src/menu.c:152
-#, fuzzy
 msgid "Sort by Exif-date"
-msgstr "Listeleri yenile"
+msgstr "Exif tarihine göre sırala"
 
 #: ../src/menu.c:155
 msgid "Unsorted"
-msgstr ""
+msgstr "Sıralanmamış"
 
 #: ../src/menu.c:158
 msgid "Sort by path"
-msgstr ""
+msgstr "Yola göre sırala"
 
 #: ../src/menu.c:161
 msgid "Sort by number"
-msgstr ""
+msgstr "Numaraya göre sırala"
 
 #: ../src/menu.c:164
-#, fuzzy
 msgid "Sort by rating"
-msgstr "Listeleri yenile"
+msgstr "Derecelendirmeye göre sırala"
 
 #: ../src/menu.c:168
 msgid "Sort by name"
-msgstr ""
+msgstr "Ada göre sırala"
 
 #: ../src/menu.c:234 ../src/menu.c:243
 msgid "Zoom to original size"
-msgstr "Orijinal boyuta getir"
+msgstr "Asıl boyuta getir"
 
 #: ../src/menu.c:237 ../src/preferences.c:1731
 msgid "Fit image to window"
-msgstr "Pencerenin boyutuna ayarla"
+msgstr "Resmi pencereye sığdır"
 
 #: ../src/menu.c:240
 msgid "Leave Zoom at previous setting"
-msgstr "Önceki büyütme/küçültme ayarlarını geçerli say"
+msgstr "Yakınlaştırma önceki ayarlarda kalsın"
 
 #: ../src/menu.c:295 ../src/preferences.c:1712
-#, fuzzy
 msgid "Zoom"
-msgstr "Büyült"
+msgstr "Yakınlaştır"
 
 #: ../src/menu.c:320
 msgid "Rotate _180"
-msgstr ""
+msgstr "_180 derece döndür"
 
 #: ../src/menu.c:426
-#, fuzzy
 msgid "_Add to Collection"
-msgstr "%s'yi silemedim \n"
+msgstr "Koleksiyon_a Ekle"
 
 #: ../src/metadata.c:1702
 msgid "People"
-msgstr ""
+msgstr "İnsanlar"
 
 #: ../src/metadata.c:1703
 msgid "Family"
-msgstr ""
+msgstr "Aile"
 
 #: ../src/metadata.c:1704
 msgid "Free time"
-msgstr ""
+msgstr "Boş zaman"
 
 #: ../src/metadata.c:1705
 msgid "Children"
-msgstr ""
+msgstr "Çocuklar"
 
 #: ../src/metadata.c:1706
 msgid "Sport"
-msgstr ""
+msgstr "Spor"
 
 #: ../src/metadata.c:1707
-#, fuzzy
 msgid "Culture"
-msgstr "Sil"
+msgstr "Kültür"
 
 #: ../src/metadata.c:1708
 msgid "Festival"
-msgstr ""
+msgstr "Şenlik"
 
 #: ../src/metadata.c:1709
-#, fuzzy
 msgid "Nature"
-msgstr "Sil"
+msgstr "Doğa"
 
 #: ../src/metadata.c:1710
 msgid "Animal"
-msgstr ""
+msgstr "Hayvan"
 
 #: ../src/metadata.c:1711
 msgid "Bird"
-msgstr ""
+msgstr "Kuş"
 
 #: ../src/metadata.c:1712
 msgid "Insect"
-msgstr ""
+msgstr "Böcek"
 
 #: ../src/metadata.c:1713
 msgid "Pets"
-msgstr ""
+msgstr "Evcil Hayvanlar"
 
 #: ../src/metadata.c:1714
 msgid "Wildlife"
-msgstr ""
+msgstr "Yaban hayatı"
 
 #: ../src/metadata.c:1715
-#, fuzzy
 msgid "Zoo"
-msgstr "Büyült"
+msgstr "Hayvanat bahçesi"
 
 #: ../src/metadata.c:1716
 msgid "Plant"
-msgstr ""
+msgstr "Bitki"
 
 #: ../src/metadata.c:1717
-#, fuzzy
 msgid "Tree"
-msgstr "Tam ekran"
+msgstr "Ağaç"
 
 #: ../src/metadata.c:1718
 msgid "Flower"
-msgstr ""
+msgstr "Çiçek"
 
 #: ../src/metadata.c:1719
 msgid "Water"
-msgstr ""
+msgstr "Su"
 
 #: ../src/metadata.c:1720
 msgid "River"
-msgstr ""
+msgstr "Nehir"
 
 #: ../src/metadata.c:1721
 msgid "Lake"
-msgstr ""
+msgstr "Göl"
 
 #: ../src/metadata.c:1722
-#, fuzzy
 msgid "Sea"
-msgstr "Kopyala ..."
+msgstr "Deniz"
 
 #: ../src/metadata.c:1723 ../src/print.c:385
 msgid "Landscape"
-msgstr ""
+msgstr "Manzara"
 
 #: ../src/metadata.c:1724
 msgid "Art"
-msgstr ""
+msgstr "Sanat"
 
 #: ../src/metadata.c:1725
-#, fuzzy
 msgid "Statue"
-msgstr "Sil"
+msgstr "Heykel"
 
 #: ../src/metadata.c:1726
-#, fuzzy
 msgid "Painting"
-msgstr "Filtralama"
+msgstr "Boyama"
 
 #: ../src/metadata.c:1727 ../src/metadata.c:1741
 msgid "Historic"
-msgstr ""
+msgstr "Tarihi"
 
 #: ../src/metadata.c:1728 ../src/metadata.c:1742
 msgid "Modern"
-msgstr ""
+msgstr "Çağdaş"
 
 #: ../src/metadata.c:1729
 msgid "City"
-msgstr ""
+msgstr "Şehir"
 
 #: ../src/metadata.c:1730
 msgid "Park"
-msgstr ""
+msgstr "Park"
 
 #: ../src/metadata.c:1731
 msgid "Street"
-msgstr ""
+msgstr "Sokak"
 
 #: ../src/metadata.c:1732
 msgid "Square"
-msgstr ""
+msgstr "Kare"
 
 #: ../src/metadata.c:1733
 msgid "Architecture"
-msgstr ""
+msgstr "Mimari"
 
 #: ../src/metadata.c:1734
 msgid "Buildings"
-msgstr ""
+msgstr "Binalar"
 
 #: ../src/metadata.c:1735
 msgid "House"
-msgstr ""
+msgstr "Konut"
 
 #: ../src/metadata.c:1736
 msgid "Cathedral"
-msgstr ""
+msgstr "Katedral"
 
 #: ../src/metadata.c:1737
 msgid "Palace"
-msgstr ""
+msgstr "Saray"
 
 #: ../src/metadata.c:1738
 msgid "Castle"
-msgstr ""
+msgstr "Kale"
 
 #: ../src/metadata.c:1739
 msgid "Bridge"
-msgstr ""
+msgstr "Köprü"
 
 #: ../src/metadata.c:1740
 msgid "Interior"
-msgstr ""
+msgstr "İç"
 
 #: ../src/metadata.c:1743
 msgid "Places"
-msgstr ""
+msgstr "Yerler"
 
 #: ../src/metadata.c:1744
-#, fuzzy
 msgid "Conditions"
-msgstr "Seçenekleri ayarla"
+msgstr "Koşullar"
 
 #: ../src/metadata.c:1745
 msgid "Night"
-msgstr ""
+msgstr "Gece"
 
 #: ../src/metadata.c:1746
 msgid "Lights"
-msgstr ""
+msgstr "Işıklar"
 
 #: ../src/metadata.c:1747
-#, fuzzy
 msgid "Reflections"
-msgstr "Seçenekler ..."
+msgstr "Yansımalar"
 
 #: ../src/metadata.c:1748
 msgid "Sun"
-msgstr ""
+msgstr "Güneş"
 
 #: ../src/metadata.c:1749
 msgid "Weather"
-msgstr ""
+msgstr "Hava"
 
 #: ../src/metadata.c:1750
 msgid "Fog"
-msgstr ""
+msgstr "Sis"
 
 #: ../src/metadata.c:1751
 msgid "Rain"
-msgstr ""
+msgstr "Yağmur"
 
 #: ../src/metadata.c:1752
 msgid "Clouds"
-msgstr ""
+msgstr "Bulutlar"
 
 #: ../src/metadata.c:1753
 msgid "Snow"
-msgstr ""
+msgstr "Kar"
 
 #: ../src/metadata.c:1754
 msgid "Sunny weather"
-msgstr ""
+msgstr "Güneşli hava"
 
 #: ../src/metadata.c:1755
 msgid "Photo"
-msgstr ""
+msgstr "Fotoğraf"
 
 #: ../src/metadata.c:1756
-#, fuzzy
 msgid "Edited"
-msgstr "Düzenle"
+msgstr "Düzenlenen"
 
 #: ../src/metadata.c:1757
-#, fuzzy
 msgid "Detail"
-msgstr "Dosyaları sil"
+msgstr "Ayrıntı"
 
 #: ../src/metadata.c:1758
 msgid "Macro"
-msgstr ""
+msgstr "Makro"
 
 #: ../src/metadata.c:1759 ../src/print.c:384
 msgid "Portrait"
-msgstr ""
+msgstr "Portre"
 
 #: ../src/metadata.c:1760
 msgid "Black and White"
-msgstr ""
+msgstr "Siyah ve Beyaz"
 
 #: ../src/metadata.c:1761
-#, fuzzy
 msgid "Perspective"
-msgstr "Yarat"
+msgstr "Perspektif"
 
 #: ../src/options.c:195 ../src/ui_bookmark.c:578
 msgid "Desktop"
-msgstr ""
+msgstr "Masaüstü"
 
 #: ../src/pan-view/pan-view.c:438
-#, fuzzy, c-format
+#, c-format
 msgid "%d images, %s"
-msgstr "%d dosya %s"
+msgstr "%d resim, %s"
 
 #: ../src/pan-view/pan-view.c:448
 #, c-format
 msgid "The pan view does not support the folder \"%s\"."
-msgstr ""
+msgstr "Tava görünümü \"%s\" dizinini desteklemiyor."
 
 #: ../src/pan-view/pan-view.c:449
 msgid "Folder not supported"
-msgstr ""
+msgstr "Dizin desteklenmiyor"
 
 #: ../src/pan-view/pan-view.c:1001 ../src/pan-view/pan-view.c:1017
-#, fuzzy
 msgid "Reading image data..."
-msgstr "Kopyala ..."
+msgstr "Resim verileri okunuyor..."
 
 #: ../src/pan-view/pan-view.c:1076
-#, fuzzy
 msgid "Sorting images..."
-msgstr "Kopyala ..."
+msgstr "Resimler sıralanıyor..."
 
 #: ../src/pan-view/pan-view.c:1385 ../src/print.c:2609
-#, fuzzy
 msgid "Filename:"
-msgstr "Yeniden adlandır :"
+msgstr "Dosya adı:"
 
 #: ../src/pan-view/pan-view.c:1387 ../src/pan-view/pan-view.c:1812
 #: ../src/preferences.c:1826
 msgid "Location:"
-msgstr ""
+msgstr "Konum:"
 
 #: ../src/pan-view/pan-view.c:1389 ../src/pan-view/pan-view-search.c:377
-#, fuzzy
 msgid "Date:"
-msgstr "Sil"
+msgstr "Tarih:"
 
 #: ../src/pan-view/pan-view.c:1391 ../src/preferences.c:1602
 #: ../src/print.c:3222 ../src/print.c:3427
 msgid "Size:"
-msgstr "Boy :"
+msgstr "Boyut:"
 
 #: ../src/pan-view/pan-view.c:1698 ../src/search.c:2417
 msgid "Folder not found"
-msgstr ""
+msgstr "Dizin yok"
 
 #: ../src/pan-view/pan-view.c:1699
 msgid "The entered path is not a folder"
-msgstr ""
+msgstr "Girilen yol bir dizin değil"
 
 #: ../src/pan-view/pan-view.c:1796
-#, fuzzy
 msgid "Pan View"
-msgstr ""
-"%s'yi yeniden\n"
-"adlandır :\n"
-" "
+msgstr "Tava Görünümü"
 
 #: ../src/pan-view/pan-view.c:1821
-#, fuzzy
 msgid "Timeline"
-msgstr "Dosya"
+msgstr "Zaman çizelgesi"
 
 #: ../src/pan-view/pan-view.c:1822
 msgid "Calendar"
-msgstr ""
+msgstr "Takvim"
 
 #: ../src/pan-view/pan-view.c:1824
-#, fuzzy
 msgid "Folders (flower)"
-msgstr "Dosya"
+msgstr "Dizinler (çiçek)"
 
 #: ../src/pan-view/pan-view.c:1825
 msgid "Grid"
-msgstr ""
+msgstr "Izgara"
 
 #: ../src/pan-view/pan-view.c:1834
-#, fuzzy
 msgid "Dots"
-msgstr "Xpaint"
+msgstr "Noktalar"
 
 #: ../src/pan-view/pan-view.c:1835
-#, fuzzy
 msgid "No Images"
-msgstr "Resim"
+msgstr "Resim yok"
 
 #: ../src/pan-view/pan-view.c:1836
-#, fuzzy
 msgid "Small Thumbnails"
-msgstr "Tırnaklar"
+msgstr "Küçük Resimler (küçük)"
 
 #: ../src/pan-view/pan-view.c:1837
-#, fuzzy
 msgid "Normal Thumbnails"
-msgstr "Tırnaklar"
+msgstr "Küçük Resimler (olağan)"
 
 #: ../src/pan-view/pan-view.c:1838
-#, fuzzy
 msgid "Large Thumbnails"
-msgstr "Tırnakları yarat"
+msgstr "Küçük Resimler (büyük)"
 
 #: ../src/pan-view/pan-view.c:1839 ../src/pan-view/pan-view.c:2311
 msgid "1:10 (10%)"
-msgstr ""
+msgstr "1:10 (10%)"
 
 #: ../src/pan-view/pan-view.c:1840 ../src/pan-view/pan-view.c:2307
 msgid "1:4 (25%)"
-msgstr ""
+msgstr "1:4 (25%)"
 
 #: ../src/pan-view/pan-view.c:1841 ../src/pan-view/pan-view.c:2303
 msgid "1:3 (33%)"
-msgstr ""
+msgstr "1:3 (33%)"
 
 #: ../src/pan-view/pan-view.c:1842 ../src/pan-view/pan-view.c:2299
 msgid "1:2 (50%)"
-msgstr ""
+msgstr "1:2 (50%)"
 
 #: ../src/pan-view/pan-view.c:1843
 msgid "1:1 (100%)"
-msgstr ""
+msgstr "1:1 (100%)"
 
 #: ../src/pan-view/pan-view.c:1989
 msgid "Pan View Performance"
-msgstr ""
+msgstr "Tava Görünümü Başarımı"
 
 #: ../src/pan-view/pan-view.c:1996
 msgid "Pan view performance may be poor."
-msgstr ""
+msgstr "Tava görünümü başarımı düşük olabilir."
 
 #: ../src/pan-view/pan-view.c:1997
 msgid ""
@@ -4382,249 +4072,242 @@ msgid ""
 "can be enabled. Note that both options must be enabled to notice a change in "
 "performance."
 msgstr ""
+"Kaydırma görünümünde küçük resimlerin başarımını artırmak için aşağıdaki "
+"seçenekler etkinleştirilebilir. Başarımdaki bir değişikliği fark etmek için "
+"her iki seçeneğin de etkinleştirilmesi gerektiğini unutmayın."
 
 #: ../src/pan-view/pan-view.c:2005 ../src/preferences.c:1605
 msgid "Cache thumbnails"
-msgstr "Tırnakları arabellekte tut"
+msgstr "Küçük resim önbelleği"
 
 #: ../src/pan-view/pan-view.c:2007
 msgid "Use shared thumbnail cache"
-msgstr ""
+msgstr "Paylaşılan küçük resim önbelleğini kullan"
 
 #: ../src/pan-view/pan-view.c:2013
 msgid "Do not show this dialog again"
-msgstr ""
+msgstr "Bu iletişim penceresini tekrar gösterme"
 
 #: ../src/pan-view/pan-view.c:2279
-#, fuzzy
 msgid "Sort by E_xif date"
-msgstr "Listeleri yenile"
+msgstr "E_xif tarihine göre sırala"
 
 #: ../src/pan-view/pan-view.c:2285
 msgid "_Show Exif information"
-msgstr ""
+msgstr "Exif bilgisini gö_ster"
 
 #: ../src/pan-view/pan-view.c:2287
-#, fuzzy
 msgid "Show im_age"
-msgstr "Resim"
+msgstr "_Resmi göster"
 
 #: ../src/pan-view/pan-view.c:2291
-#, fuzzy
 msgid "_None"
-msgstr "Taşı"
+msgstr "_Yok"
 
 #: ../src/pan-view/pan-view.c:2295
-#, fuzzy
 msgid "_Full size"
-msgstr "Dosya"
+msgstr "_Tam boyut"
 
 #: ../src/pan-view/pan-view-filter.c:48
 msgid "Require"
-msgstr ""
+msgstr "Gerekli"
 
 #: ../src/pan-view/pan-view-filter.c:48
 msgid "R"
-msgstr ""
+msgstr "R"
 
 #: ../src/pan-view/pan-view-filter.c:51
-#, fuzzy
 msgid "Exclude"
-msgstr "Dosyayı sil"
+msgstr "Dışla"
 
 #: ../src/pan-view/pan-view-filter.c:51
 msgid "E"
-msgstr ""
+msgstr "E"
 
 #: ../src/pan-view/pan-view-filter.c:54
 msgid "Include"
-msgstr ""
+msgstr "İçer"
 
 #: ../src/pan-view/pan-view-filter.c:54
 msgid "I"
-msgstr ""
+msgstr "I"
 
 #: ../src/pan-view/pan-view-filter.c:57
 msgid "Group"
-msgstr ""
+msgstr "Grup"
 
 #: ../src/pan-view/pan-view-filter.c:57
 msgid "G"
-msgstr ""
+msgstr "G"
 
 #: ../src/pan-view/pan-view-filter.c:71
-#, fuzzy
 msgid "Keyword Filter:"
-msgstr "Tırnaklar"
+msgstr "Anahtar Kelime Süzgeci:"
 
 #: ../src/pan-view/pan-view-filter.c:104 ../src/preferences.c:1989
-#, fuzzy
 msgid "Filter"
-msgstr "Filtralama"
+msgstr "Süzgeç"
 
 #: ../src/pan-view/pan-view-filter.c:139
-#, fuzzy
 msgid "Removed keyword…"
-msgstr "Tırnaklar"
+msgstr "Anahtar kelime kaldırıldı..."
 
 #: ../src/pan-view/pan-view-search.c:41
-#, fuzzy
 msgid "Find:"
-msgstr "Filtralama"
+msgstr "Bul:"
 
 #: ../src/pan-view/pan-view-search.c:66
 msgid "Find"
-msgstr ""
+msgstr "Bul"
 
 #: ../src/pan-view/pan-view-search.c:115
 msgid "path found"
-msgstr ""
+msgstr "yol bulundu"
 
 #: ../src/pan-view/pan-view-search.c:115
-#, fuzzy
 msgid "filename found"
-msgstr "Yeniden adlandır :"
+msgstr "dosya adı bulundu"
 
 #: ../src/pan-view/pan-view-search.c:163
 msgid "partial match"
-msgstr ""
+msgstr "kısmi eşleşme"
 
 #: ../src/pan-view/pan-view-search.c:374 ../src/pan-view/pan-view-search.c:407
 msgid "no match"
-msgstr ""
+msgstr "eşleşme yok"
 
 #: ../src/preferences.c:107
-#, fuzzy
 msgid "Unknown"
-msgstr "(bennebileyimne)'de"
+msgstr "Bilinmeyen"
 
 #: ../src/preferences.c:109
-#, fuzzy
 msgid "RAW Image"
-msgstr "Resim"
+msgstr "Ham Resim"
 
 #: ../src/preferences.c:111
 msgid "Video"
-msgstr ""
+msgstr "Vidyo"
 
 #: ../src/preferences.c:559
 msgid "Nearest (worst, but fastest)"
-msgstr ""
+msgstr "En yakın (en kötü ama en hızlı)"
 
 #: ../src/preferences.c:561
-#, fuzzy
 msgid "Tiles"
-msgstr "Dosya"
+msgstr "Döşemeler"
 
+# programda bakmak lazım
 #: ../src/preferences.c:563
 msgid "Bilinear"
-msgstr ""
+msgstr "Çift çizgili"
 
 #: ../src/preferences.c:565
 msgid "Hyper (best, but slowest)"
-msgstr ""
+msgstr "Aşırı (en iyi, ama en yavaş)"
 
 #: ../src/preferences.c:590
 msgid "PRIMARY"
-msgstr ""
+msgstr "BİRİNCİL"
 
 #: ../src/preferences.c:592
 msgid "CLIPBOARD"
-msgstr ""
+msgstr "PANO"
 
 #: ../src/preferences.c:657 ../src/print.c:390
 msgid "Custom"
-msgstr ""
+msgstr "Özel"
 
 #: ../src/preferences.c:740
-#, fuzzy
 msgid "Single image"
-msgstr "%d dosya %s"
+msgstr "Tek resim"
 
 #: ../src/preferences.c:742
 msgid "Anaglyph Red-Cyan"
-msgstr ""
+msgstr "Anaglif Kırmızı-Mavi"
 
 #: ../src/preferences.c:744
 msgid "Anaglyph Green-Magenta"
-msgstr ""
+msgstr "Anaglif Yeşil-Eflatun"
 
 #: ../src/preferences.c:746
 msgid "Anaglyph Yellow-Blue"
-msgstr ""
+msgstr "Anaglif Sarı-Mavi"
 
 #: ../src/preferences.c:748
 msgid "Anaglyph Gray Red-Cyan"
-msgstr ""
+msgstr "Anaglif Gri Kırmızı-Mavi"
 
 #: ../src/preferences.c:750
 msgid "Anaglyph Gray Green-Magenta"
-msgstr ""
+msgstr "Anaglif Gri Yeşil-Eflatun"
 
 #: ../src/preferences.c:752
 msgid "Anaglyph Gray Yellow-Blue"
-msgstr ""
+msgstr "Anaglif Gri Sarı-Mavi"
 
 #: ../src/preferences.c:754
 msgid "Anaglyph Dubois Red-Cyan"
-msgstr ""
+msgstr "Anaglif Dubois Kırmızı-Mavi"
 
 #: ../src/preferences.c:756
 msgid "Anaglyph Dubois Green-Magenta"
-msgstr ""
+msgstr "Anaglif Dubois Yeşil-Kırmızı"
 
 #: ../src/preferences.c:758
 msgid "Anaglyph Dubois Yellow-Blue"
-msgstr ""
+msgstr "Anaglif Dubois Sarı-Mavi"
 
 #: ../src/preferences.c:761
 msgid "Side by Side"
-msgstr ""
+msgstr "Yan Yana"
 
 #: ../src/preferences.c:762
 msgid "Side by Side Half size"
-msgstr ""
+msgstr "Yan Yana Yarım boy"
 
 #: ../src/preferences.c:769
 msgid "Top - Bottom"
-msgstr ""
+msgstr "Üst - Alt"
 
 #: ../src/preferences.c:770
 msgid "Top - Bottom Half size"
-msgstr ""
+msgstr "Üst - Alt Yarım boy"
 
 #: ../src/preferences.c:779 ../src/preferences.c:2602
 msgid "Fixed position"
-msgstr ""
+msgstr "Sabit konum"
 
 #: ../src/preferences.c:1118 ../src/preferences.c:1121
-#, fuzzy
 msgid "Reset filters"
-msgstr "Dosyaları sil"
+msgstr "Süzgeçleri sıfırla"
 
 #: ../src/preferences.c:1122
 msgid ""
 "This will reset the file filters to the defaults.\n"
 "Continue?"
 msgstr ""
+"Bu, dosya süzgeçlerini varsyaılanlara sıfırlayacak.\n"
+"Devam edilsin mi?"
 
 #: ../src/preferences.c:1149 ../src/preferences.c:1152
 msgid "Clear trash"
-msgstr ""
+msgstr "Çöpü temizle"
 
 #: ../src/preferences.c:1153
 msgid "This will remove the trash contents."
-msgstr ""
+msgstr "Bu, çöp içeriğini kaldıracak."
 
 #: ../src/preferences.c:1197 ../src/preferences.c:1200
 msgid "Reset image overlay template string"
-msgstr ""
+msgstr "Resim bindirme şablon dizesini sıfırla"
 
 #: ../src/preferences.c:1201
 msgid ""
 "This will reset the image overlay template string to the default.\n"
 "Continue?"
 msgstr ""
+"Bu, resim bindirme şablon dizesini varsayılana sıfırlayacaktır.\n"
+"Devam edilsin mi?"
 
 #: ../src/preferences.c:1597
 msgid "General"
@@ -4632,40 +4315,43 @@ msgstr "Genel"
 
 #: ../src/preferences.c:1603 ../src/preferences.c:1715
 msgid "Quality:"
-msgstr ""
+msgstr "Nitelik:"
 
 #: ../src/preferences.c:1611
 msgid "Use Geeqie thumbnail style and cache"
-msgstr ""
+msgstr "Geeqie küçük resim tarzını ve önbelleğini kullan"
 
 #: ../src/preferences.c:1618
 msgid "Store thumbnails local to image folder (non-standard)"
-msgstr ""
+msgstr "Küçük resimleri yerel olarak resim dizininde sakla (standart dışı)"
 
 #: ../src/preferences.c:1625
 msgid "Use standard thumbnail style and cache, shared with other applications"
 msgstr ""
+"Diğer uygulamalarla paylaşılan standart küçük resim tarzı ve önbellek kullan"
 
 #: ../src/preferences.c:1631
 msgid "Use EXIF thumbnails when available (EXIF thumbnails may be outdated)"
 msgstr ""
+"Kullanılabilir olduğunda EXIF küçük resimlerini kullanın (EXIF küçük "
+"resimleri eski olabilir)"
 
 #: ../src/preferences.c:1635
 msgid "Use embedded metadata in video files as thumbnails when available"
 msgstr ""
+"Vidyo dosyalarında gömülü meta verileri mümkünse küçük resimler olarak kullan"
 
 #: ../src/preferences.c:1642
 msgid "Slide show"
-msgstr "Resim şovu"
+msgstr "Resim gösterisi"
 
 #: ../src/preferences.c:1653
-#, fuzzy
 msgid "Delay between image change hrs:mins:secs.dec"
-msgstr "Resim değişiminde kaç saniye beklensin :"
+msgstr "Resim değiştirme arasındaki gecikme saat:dak:sn.salise"
 
 #: ../src/preferences.c:1669
 msgid "Random"
-msgstr "Tesadüfen"
+msgstr "Rastgele"
 
 #: ../src/preferences.c:1670
 msgid "Repeat"
@@ -4673,60 +4359,58 @@ msgstr "Tekrarla"
 
 #: ../src/preferences.c:1672
 msgid "Image loading and caching"
-msgstr ""
+msgstr "Resim yükleme ve önbellekleme"
 
 #: ../src/preferences.c:1674
 msgid "Decoded image cache size (Mb):"
-msgstr ""
+msgstr "Çözülmüş resim önbellek boyutu (Mb):"
 
 #: ../src/preferences.c:1676
 msgid "Preload next image"
-msgstr ""
+msgstr "Sonraki resmi ön yükle"
 
 #: ../src/preferences.c:1679
-#, fuzzy
 msgid "Refresh on file change"
-msgstr "Dosya listesini yenile"
+msgstr "Dosya değişikliğinde yenile"
 
 #: ../src/preferences.c:1682
 msgid "Info sidebar heights"
-msgstr ""
+msgstr "Bilgi kenar çubuğu yüksekliği"
 
 #: ../src/preferences.c:1683
 msgid "NOTE! Geeqie must be restarted for changes to take effect"
 msgstr ""
+"NOT! Geeqie, değişikliklerin geçerli olması için yeniden başlatılmalıdır"
 
 #: ../src/preferences.c:1685
-#, fuzzy
 msgid "Keywords:"
-msgstr "Tırnaklar"
+msgstr "Anahtar kelimeler:"
 
 #: ../src/preferences.c:1691
-#, fuzzy
 msgid "Comment:"
-msgstr "Büyült"
+msgstr "Yorum:"
 
 #: ../src/preferences.c:1694
-#, fuzzy
 msgid "Rating:"
-msgstr "Filtralama"
+msgstr "Derecelendirme:"
 
 #: ../src/preferences.c:1718
 msgid "Use GPU acceleration via Clutter library"
-msgstr ""
+msgstr "Clutter kütüphanesi üzerinden GPU hızlandırmayı kullan"
 
 #: ../src/preferences.c:1722
 msgid "Two pass rendering (apply HQ zoom and color correction in second pass)"
 msgstr ""
+"İki geçişli oluşturma (ikinci geçişte Yüksek Nitelikli yakınlaştırma ve renk "
+"düzeltmesi uygula)"
 
 #: ../src/preferences.c:1726
-#, fuzzy
 msgid "Zoom increment:"
-msgstr "Büyült"
+msgstr "Yakınlaştırma artışı:"
 
 #: ../src/preferences.c:1734
 msgid "Allow enlargement of image (max. size in %)"
-msgstr ""
+msgstr "Resmin büyütülmesine izin ver (% olarak en fazla boyut)"
 
 #: ../src/preferences.c:1740
 #, c-format
@@ -4736,112 +4420,116 @@ msgid ""
 "window\". This value sets the maximum expansion permitted in percent i.e. "
 "100% is full-size."
 msgstr ""
+"Yakınlaştır \"Görüntüyü pencereye sığdır\" olarak ayarlandığında Geeqie'nin "
+"geçerli görünüm alanından daha küçük görüntüler için görüntü boyutunu "
+"artırmasına izin vermek için bunu etkinleştirin. Bu değer, izin verilen en "
+"fazla genişlemeyi yüzde olarak belirler, yani 100% tam boyuttadır."
 
 #: ../src/preferences.c:1743
 #, c-format
 msgid "Virtual window size (% of actual window):"
-msgstr ""
+msgstr "Sanal pencere boyutu (gerçek pencerenin% si):"
 
 #: ../src/preferences.c:1749
 msgid ""
-"This value will set the virtual size of the window when \"Fit image to window"
-"\" is set. Instead of using the actual size of the window, the specified "
-"percentage of the window will be used. It allows one to keep a border around "
-"the image (values lower than 100%) or to auto zoom the image (values greater "
-"than 100%). It affects fullscreen mode too."
-msgstr ""
+"This value will set the virtual size of the window when \"Fit image to "
+"window\" is set. Instead of using the actual size of the window, the "
+"specified percentage of the window will be used. It allows one to keep a "
+"border around the image (values lower than 100%) or to auto zoom the image "
+"(values greater than 100%). It affects fullscreen mode too."
+msgstr ""
+"Bu değer, \"Görüntüyü pencereye sığdır\" ayarlandığında pencerenin sanal "
+"boyutunu ayarlar. Pencerenin gerçek boyutunu kullanmak yerine, pencerenin "
+"belirtilen yüzdesi kullanılır. Görüntünün etrafında bir kenarlık (100%'den "
+"düşük değerler) veya görüntüyü otomatik yakınlaştırma (100%'den büyük "
+"değerler) sağlar. Tam ekran modunu da etkiler."
 
 #: ../src/preferences.c:1751
 msgid "Appearance"
-msgstr ""
+msgstr "Görünüm"
 
 #: ../src/preferences.c:1753
-#, fuzzy
 msgid "Use custom border color in window mode"
-msgstr "Benim dosya tiplerim :"
+msgstr "Pencere kipinde özel kenarlık rengi kullan"
 
 #: ../src/preferences.c:1756
 msgid "Use custom border color in fullscreen mode"
-msgstr ""
+msgstr "Tam ekran kipinde özel kenarlık rengi kullanın"
 
 #: ../src/preferences.c:1759
 msgid "Border color"
-msgstr ""
+msgstr "Kenarlık rengi"
 
 #: ../src/preferences.c:1764
 msgid "Alpha channel color 1"
-msgstr ""
+msgstr "Alfa kanalı rengi 1"
 
 #: ../src/preferences.c:1767
 msgid "Alpha channel color 2"
-msgstr ""
+msgstr "Alfa kanalı rengi 2"
 
 #: ../src/preferences.c:1773
-#, fuzzy
 msgid "Convenience"
-msgstr "Devam et"
+msgstr "Uygunluk"
 
 #: ../src/preferences.c:1775
 msgid "Auto rotate proofs using Exif information"
-msgstr ""
+msgstr "Exif bilgilerini kullanarak denemeleri otomatik döndür"
 
 #: ../src/preferences.c:1792
 msgid "Windows"
-msgstr ""
+msgstr "Pencereler"
 
 #: ../src/preferences.c:1794
-#, fuzzy
 msgid "State"
-msgstr "Sil"
+msgstr "Durum"
 
 #: ../src/preferences.c:1796
 msgid "Remember window positions"
-msgstr "Pencere yerlerini aklında tut"
+msgstr "Pencere yerlerini unutma"
 
 #: ../src/preferences.c:1799
 msgid "Use saved window positions also for new windows"
-msgstr ""
+msgstr "Yeni pencereler için kaydedilmiş pencere konumlarını da kullanın"
 
 #: ../src/preferences.c:1803
 msgid "Remember tool state (float/hidden)"
-msgstr "Durumu unutma "
+msgstr "Araç durumunu unutma (kayan/gizli)"
 
 #: ../src/preferences.c:1806
-#, fuzzy
 msgid "Remember dialog window positions"
-msgstr "Pencere yerlerini aklında tut"
+msgstr "İletişim penceresi yerlerini unutma"
 
 #: ../src/preferences.c:1811
 msgid "Fit window to image when tools are hidden/floating"
-msgstr "Çerezler gizli ya da dinamik çalışıyorsa pencereyi resme göre ayarla"
+msgstr "Araçlar gizlendiğinde/kayarken görüntüyü pencereye sığdır"
 
 #: ../src/preferences.c:1815
-#, fuzzy
 msgid "Limit size when auto-sizing window (%):"
-msgstr "Boyutu otomatik boyutlamada sınırla"
+msgstr "Pencere otomatik boyutlandığında sınır boyutu (%):"
 
 #: ../src/preferences.c:1830
-#, fuzzy
 msgid "Smooth image flip"
-msgstr "Resim"
+msgstr "Düzgün resim çevirme"
 
 #: ../src/preferences.c:1832
 msgid "Disable screen saver"
-msgstr ""
+msgstr "Ekran koruyucuyu devre dışı bırak"
 
 #: ../src/preferences.c:1836
 msgid "Overlay Screen Display"
-msgstr ""
+msgstr "Ekran Görünümü Bindirme"
 
 #: ../src/preferences.c:1838
 msgid "Image overlay template"
-msgstr ""
+msgstr "Resim bindirme şablonu"
 
 #: ../src/preferences.c:1851
+#, qt-format
 msgid ""
 "<i>%name%</i> results in the filename of the picture.\n"
-"Also available: <i>%collection%</i>, <i>%number%</i>, <i>%total%</i>, <i>"
-"%date%</i>,\n"
+"Also available: <i>%collection%</i>, <i>%number%</i>, <i>%total%</i>, "
+"<i>%date%</i>,\n"
 "<i>%size%</i> (filesize), <i>%width%</i>, <i>%height%</i>, <i>%res%</i> "
 "(resolution)\n"
 "To access exif data use the exif name, e. g. <i>%formatted.Camera%</i> is "
@@ -4851,245 +4539,266 @@ msgid ""
 "characters and will add 3 dots at the end to denote the truncation.\n"
 "If two or more variables are connected with the |-sign, it prints available "
 "variables with a separator.\n"
-"<i>%formatted.ShutterSpeed%</i>|<i>%formatted.ISOSpeedRating%</i>|<i>"
-"%formatted.FocalLength%</i> could show \"1/20s - 400 - 80 mm\" or \"1/200 - "
-"80 mm\",\n"
+"<i>%formatted.ShutterSpeed%</i>|<i>%formatted.ISOSpeedRating%</i>|<i>%formatted.FocalLength%</i> "
+"could show \"1/20s - 400 - 80 mm\" or \"1/200 - 80 mm\",\n"
 "if there's no ISO information in the Exif data.\n"
 "If a line is empty, it is removed. This allows one to add lines that totally "
 "disappear when no data is available.\n"
 msgstr ""
+"<i>%name%</i> resmin dosya adıyla sonuçlanır.\n"
+"Ayrıca mevcut: <i>%collection%</i>, <i>%number%</i>, <i>%total%</i>, "
+"<i>%date%</i>,\n"
+"<i>%size%</i> (filesize), <i>%width%</i>, <i>%height%</i>, <i>%res%</i> "
+"(çözünürlük)\n"
+"Exif verilerine erişmek için exif adını kullanın, örn. "
+"<i>%formatted.Camera%</i>biçimlendirilmiş kamera adı,\n"
+"<i>%Exif.Photo.DateTimeOriginal%</i> özgün çekim tarihi.\n"
+"<i>%formatted.Camera:20</i> notasyonu görüntülenen verileri 20 karaktere "
+"kesecek ve sonunda kesmeyi belirtmek için 3 nokta ekleyecektir.\n"
+"İki veya daha fazla değişken |-sign ile bağlıysa, kullanılabilir "
+"değişkenleri bir ayırıcı ile yazdırır.\n"
+"Exif verilerinde ISO bilgisi yoksa \n"
+"<i>%formatted.ShutterSpeed%</i>|<i>%formatted.ISOSpeedRating%</i>|<i>%formatted.FocalLength%</i> "
+" \"1/20s - 400 - 80 mm\" or \"1/200 - 80 mm\" gösterebilir,\n"
+"Bir satır boşsa, kaldırılır. Bu, veri bulunmadığında tamamen kaybolan "
+"satırlar eklemenize izin verir.\n"
 
 #: ../src/preferences.c:1868 ../src/print.c:3220
-#, fuzzy
 msgid "Font"
-msgstr "Xpaint"
+msgstr "Yazıtipi"
 
 #: ../src/preferences.c:1880 ../src/print.c:3410
 msgid "Text"
-msgstr ""
+msgstr "Metin"
 
 #: ../src/preferences.c:1885
 msgid "Background"
-msgstr ""
+msgstr "Arka plan"
 
 #: ../src/preferences.c:1891 ../src/preferences.c:2069
 #: ../src/preferences.c:2515
 msgid "Defaults"
-msgstr ""
+msgstr "Varsayılan"
 
 #: ../src/preferences.c:1945
 msgid "Show hidden files or folders"
-msgstr ""
+msgstr "Gizli dosya veya dizinleri göster"
 
 #: ../src/preferences.c:1947
 msgid "Show parent folder (..)"
-msgstr ""
+msgstr "Üst dizini göster (..)"
 
+# programda bakmak lazım
 #: ../src/preferences.c:1949
 msgid "Case sensitive sort"
-msgstr ""
+msgstr "Harfe duyarlı sıralama"
 
 #: ../src/preferences.c:1951
 msgid "Natural sort order"
-msgstr ""
+msgstr "Doğal sıralama düzeni"
 
 #: ../src/preferences.c:1953
-#, fuzzy
 msgid "Disable file extension checks"
-msgstr "Dosya filtralarını kapat"
+msgstr "Dosya uzantısı denetimlerini devre dışı bırak"
 
 #: ../src/preferences.c:1956
 msgid "Disable File Filtering"
-msgstr "Dosya filtralarını kapat"
+msgstr "Dosya Süzmeyi Devre Dışı Bırak"
 
 #: ../src/preferences.c:1960
 msgid "Grouping sidecar extensions"
-msgstr ""
+msgstr "Sepet uzantıları gruplaması"
 
 #: ../src/preferences.c:1967
-#, fuzzy
 msgid "File types"
-msgstr "Filtralama"
+msgstr "Dosya türleri"
 
 #: ../src/preferences.c:2024
 msgid "Class"
-msgstr ""
+msgstr "Sınıf"
 
 #: ../src/preferences.c:2041
 msgid "Writable"
-msgstr ""
+msgstr "Yazılabilir"
 
 #: ../src/preferences.c:2052
 msgid "Sidecar is allowed"
-msgstr ""
+msgstr "Sepet izinlidir"
 
 #: ../src/preferences.c:2098
 msgid "Metadata writing process"
-msgstr ""
+msgstr "Meta veri yazma işlemi"
 
 #: ../src/preferences.c:2100
 msgid "Warning: Geeqie is built without Exiv2. Some options are disabled."
 msgstr ""
+"Uyarı: Geeqie Exiv2 olmadan inşa edilmiştir. Bazı seçenekler devre dışı."
 
 #: ../src/preferences.c:2102
 msgid ""
 "Metadata are written in the following order. The process ends after first "
 "success."
 msgstr ""
+"Meta veriler aşağıdaki sırayla yazılmıştır. İşlem ilk başarıdan sonra sona "
+"eriyor."
 
 #: ../src/preferences.c:2105
 msgid ""
 "1) Save metadata in image files, or sidecar files, according to the XMP "
 "standard"
 msgstr ""
+"1) XMP standardına göre meta verileri görüntü dosyalarına veya sepet "
+"dosyalarına kaydedin"
 
 #: ../src/preferences.c:2111
 msgid ""
 "2) Save metadata in '.metadata' folder, local to image folder (non-standard)"
 msgstr ""
+"2) Meta verileri yerel olarak resim dizinine ' metadata' dizinine kaydedin "
+"(standart dışı)"
 
 #: ../src/preferences.c:2114
 #, c-format
 msgid "3) Save metadata in Geeqie private directory '%s'"
-msgstr ""
+msgstr "3) Geeqie '%s' özel dizinine meta verileri kaydedin"
 
 #: ../src/preferences.c:2120
 msgid "Step 1: Write to image files"
-msgstr ""
+msgstr "Adım 1: Resim dosyalarına yaz"
 
 #: ../src/preferences.c:2128
 msgid ""
 "Store metadata also in legacy IPTC tags (converted according to IPTC4XMP "
 "standard)"
 msgstr ""
+"Meta verileri eski IPTC etiketlerinde de saklayın (IPTC4XMP standardına göre "
+"dönüştürülür)"
 
 #: ../src/preferences.c:2131
 msgid "Warn if the image files are unwritable"
-msgstr ""
+msgstr "Resim dosyalarının cevapsız olup olmadığını bildir"
 
 #: ../src/preferences.c:2134
 msgid "Ask before writing to image files"
-msgstr ""
+msgstr "Resim dosyalarına yazmadan önce sor"
 
 #: ../src/preferences.c:2137
 msgid "Create sidecar files named image.ext.xmp (as opposed to image.xmp)"
-msgstr ""
+msgstr "Image.ext.xmp adlı bir yardımcı dosya oluşturun (image.xmp yerine)"
 
 #: ../src/preferences.c:2140
 msgid "Step 2 and 3: write to Geeqie private files"
-msgstr ""
+msgstr "Adım 2 ve 3: Geeqie özel dosyalarına yaz"
 
 #: ../src/preferences.c:2145
 msgid ""
 "Use GQview legacy metadata format (supports only keywords and comments) "
 "instead of XMP"
 msgstr ""
+"XMP yerine GQview eski meta veri biçimini kullanın (yalnızca anahtar "
+"kelimeleri ve yorumları destekler)"
 
 #: ../src/preferences.c:2149
 msgid "Miscellaneous"
-msgstr ""
+msgstr "Çeşitli"
 
 #: ../src/preferences.c:2150
 msgid ""
 "Write the same description tags (keywords, comment, etc.) to all grouped "
 "sidecars"
 msgstr ""
+"Tüm gruplanmış sepetlere aynı açıklama etiketlerini (anahtar kelimeler, "
+"yorum vb.) yazın"
 
 #: ../src/preferences.c:2153
 msgid "Allow keywords to differ only in case"
-msgstr ""
+msgstr "Anahtar kelimelerin yalnızca durumda farklılık göstermesine izin ver"
 
 #: ../src/preferences.c:2156
 msgid "Write altered image orientation to the metadata"
-msgstr ""
+msgstr "Değiştirilen resim yönünü meta verilere yazın"
 
 #: ../src/preferences.c:2162
 msgid "Auto-save options"
-msgstr ""
+msgstr "Otomatik kaydetme seçenekleri"
 
 #: ../src/preferences.c:2164
 msgid "Write metadata after timeout"
-msgstr ""
+msgstr "Zaman aşımından sonra meta verileri yaz"
 
 #: ../src/preferences.c:2170
 msgid "Timeout (seconds):"
-msgstr ""
+msgstr "Zaman aşımı (saniye):"
 
 #: ../src/preferences.c:2173
-#, fuzzy
 msgid "Write metadata on image change"
-msgstr "Resim değişiminde kaç saniye beklensin :"
+msgstr "Resim değişikliğinde meta veri yaz"
 
 #: ../src/preferences.c:2176
 msgid "Write metadata on directory change"
-msgstr ""
+msgstr "Dizin değişikliğinde meta veri yaz"
 
 #: ../src/preferences.c:2216
 msgid "Perceptual"
-msgstr ""
+msgstr "Algısal"
 
+# kolorimetrik tam karşılığı nedir?
 #: ../src/preferences.c:2218
 msgid "Relative Colorimetric"
-msgstr ""
+msgstr "Göreceli Renkölçüm"
 
 #: ../src/preferences.c:2222
 msgid "Absolute Colorimetric"
-msgstr ""
+msgstr "Kesin Renkölçüm"
 
 #: ../src/preferences.c:2247
-#, fuzzy
 msgid "Color management"
-msgstr "Büyült"
+msgstr "Renk yönetimi"
 
 #: ../src/preferences.c:2249
-#, fuzzy
 msgid "Input profiles"
-msgstr "%d dosya %s"
+msgstr "Giriş düzenleri"
 
 #: ../src/preferences.c:2257
 msgid "Type"
-msgstr ""
+msgstr "Tür"
 
 #: ../src/preferences.c:2260
 msgid "Menu name"
-msgstr "Mönü adı"
+msgstr "Menü adı"
 
 #: ../src/preferences.c:2263
-#, fuzzy
 msgid "File"
-msgstr "Filtralama"
+msgstr "Dosya"
 
 #: ../src/preferences.c:2271
 #, c-format
 msgid "Input %d:"
-msgstr ""
+msgstr "%d girişi:"
 
 #: ../src/preferences.c:2287 ../src/preferences.c:2307
-#, fuzzy
 msgid "Select color profile"
-msgstr "Sil .."
+msgstr "Renk düzeni seç"
 
 #: ../src/preferences.c:2295
-#, fuzzy
 msgid "Screen profile"
-msgstr "%d dosya %s"
+msgstr "Ekran düzeni"
 
 #: ../src/preferences.c:2299
 msgid "Use system screen profile if available"
-msgstr ""
+msgstr "Varsa sistem ekranı düzenini kullanın"
 
 #: ../src/preferences.c:2304
 msgid "Screen:"
-msgstr ""
+msgstr "Ekran:"
 
 #: ../src/preferences.c:2310
-#, fuzzy
 msgid "Render Intent:"
-msgstr "Yeniden adlandır"
+msgstr "Oluşturma Amacı:"
 
 #: ../src/preferences.c:2331 ../src/preferences.c:2372
 msgid "Behavior"
-msgstr ""
+msgstr "Davranış"
 
 #: ../src/preferences.c:2333 ../src/utilops.c:2156
 msgid "Delete"
@@ -5097,32 +4806,27 @@ msgstr "Sil"
 
 #: ../src/preferences.c:2335
 msgid "Confirm file delete"
-msgstr "Silmeyi onayla"
+msgstr "Dosya silme işlemini onayla"
 
 #: ../src/preferences.c:2337
-#, fuzzy
 msgid "Enable Delete key"
-msgstr ""
-"%s 'yi maalesef\n"
-"silemedim"
+msgstr "Sil tuşunu etkinleştir"
 
 #: ../src/preferences.c:2340
-#, fuzzy
 msgid "Safe delete"
-msgstr "Silmeyi onayla"
+msgstr "Güvenli sil"
 
 #: ../src/preferences.c:2358
-#, fuzzy
 msgid "Maximum size:"
-msgstr "Dosya"
+msgstr "En fazla boyut:"
 
 #: ../src/preferences.c:2358
 msgid "MB"
-msgstr ""
+msgstr "MB"
 
 #: ../src/preferences.c:2360
 msgid "Set to 0 for unlimited size"
-msgstr ""
+msgstr "Sınırsız boyut için 0'a ayarlayın"
 
 #: ../src/preferences.c:2361
 msgid "View"
@@ -5130,262 +4834,241 @@ msgstr "Göster"
 
 #: ../src/preferences.c:2374
 msgid "Descend folders in tree view"
-msgstr ""
+msgstr "Ağaç görünümündeki dizinleri küçült"
 
 #: ../src/preferences.c:2377
 msgid "In place renaming"
-msgstr ""
+msgstr "Yerinde yeniden adlandırma"
 
 #: ../src/preferences.c:2380
 msgid "List directory view uses single click to enter"
-msgstr ""
+msgstr "Liste dizini görünümü girmek için tek tıklamayı kullanır"
 
 #: ../src/preferences.c:2383
 msgid "Recent folder list maximum size"
-msgstr ""
+msgstr "Son dizin listesi en fazla boyutu"
 
 #: ../src/preferences.c:2386
 msgid "Drag'n drop icon size"
-msgstr ""
+msgstr "Sürükle ve bırak simge boyutu"
 
 #: ../src/preferences.c:2390
-#, fuzzy
 msgid "Copy path clipboard selection:"
-msgstr "Kopyala"
+msgstr "Yol pano seçimini kopyala:"
 
 #: ../src/preferences.c:2392
 msgid "Navigation"
-msgstr ""
+msgstr "Gezinme"
 
 #: ../src/preferences.c:2394
 msgid "Progressive keyboard scrolling"
-msgstr "Gelişebilir klavye kaydırması"
+msgstr "Aşamalı klavye kaydırma"
 
 #: ../src/preferences.c:2396
 msgid "Keyboard scrolling step multiplier:"
-msgstr ""
+msgstr "Klavye kaydırma adımı çarpanı:"
 
 #: ../src/preferences.c:2398
 msgid "Mouse wheel scrolls image"
-msgstr ""
+msgstr "Fare tekerleği resim kaydırır"
 
 #: ../src/preferences.c:2400
 msgid "Navigation by left or middle click on image"
-msgstr ""
+msgstr "Resim üzerinde sol veya orta tıklama ile gezinme"
 
 #: ../src/preferences.c:2402
 msgid "Play video by left click on image"
-msgstr ""
+msgstr "Resmin üzerine sol tıklayarak vidyo oynatın"
 
 #: ../src/preferences.c:2405
 msgid "Play with:"
-msgstr ""
+msgstr "Birlikte oynat:"
 
 #: ../src/preferences.c:2409
 msgid "Debugging"
-msgstr ""
+msgstr "Hata ayıklama"
 
 #: ../src/preferences.c:2414
-#, fuzzy
 msgid "Timer data"
-msgstr "Filtralama"
+msgstr "Zamanlayıcı verileri"
 
 #: ../src/preferences.c:2417
-#, fuzzy
 msgid "Log Window max. lines:"
-msgstr "Pencereyi kapat"
+msgstr "Günlük penceresinin en fazla satır sayısı:"
 
 #: ../src/preferences.c:2435
 msgid "Keyboard"
-msgstr ""
+msgstr "Klavye"
 
 #: ../src/preferences.c:2437
 msgid "Accelerators"
-msgstr ""
+msgstr "Hızlandırıcılar"
 
 #: ../src/preferences.c:2456
-#, fuzzy
 msgid "Action"
-msgstr "Seçenekler ..."
+msgstr "Eylem"
 
 #: ../src/preferences.c:2478
 msgid "KEY"
-msgstr ""
+msgstr "ANAHTAR"
 
 #: ../src/preferences.c:2489
-#, fuzzy
 msgid "Tooltip"
-msgstr "Dosya"
+msgstr "İpucu"
 
 #: ../src/preferences.c:2520
-#, fuzzy
 msgid "Reset selected"
-msgstr "Dosyaları sil"
+msgstr "Seçileni sıfırla"
 
 #: ../src/preferences.c:2535
-#, fuzzy
 msgid "Toolbar"
-msgstr "Dosya"
+msgstr "Araç çubuğu"
 
 #: ../src/preferences.c:2552
 msgid "Stereo"
-msgstr ""
+msgstr "Stereo"
 
 #: ../src/preferences.c:2554 ../src/preferences.c:2557
 msgid "Windowed stereo mode"
-msgstr ""
+msgstr "Pencere stereo modu"
 
 #: ../src/preferences.c:2561 ../src/preferences.c:2586
-#, fuzzy
 msgid "Mirror left image"
-msgstr "%d dosya %s"
+msgstr "Resmi sola yansıt"
 
 #: ../src/preferences.c:2564 ../src/preferences.c:2589
-#, fuzzy
 msgid "Flip left image"
-msgstr "%d dosya %s"
+msgstr "Resmi sola çevir"
 
 #: ../src/preferences.c:2567 ../src/preferences.c:2592
-#, fuzzy
 msgid "Mirror right image"
-msgstr "%d dosya %s"
+msgstr "Resmi sağa yansıt"
 
 #: ../src/preferences.c:2570 ../src/preferences.c:2595
-#, fuzzy
 msgid "Flip right image"
-msgstr "%d dosya %s"
+msgstr "Resmi sağa çevir"
 
 #: ../src/preferences.c:2572 ../src/preferences.c:2597
 msgid "Swap left and right images"
-msgstr ""
+msgstr "Sol ve sağ resimlerin yerini değiştir"
 
 #: ../src/preferences.c:2574 ../src/preferences.c:2599
 msgid "Disable stereo mode on single image source"
-msgstr ""
+msgstr "Tek bir görüntü kaynağında stereo kipini devre dışı bırakın"
 
 #: ../src/preferences.c:2577 ../src/preferences.c:2583
-#, fuzzy
 msgid "Fullscreen stereo mode"
-msgstr "Tam ekran"
+msgstr "Tam ekran stereo kipi"
 
 #: ../src/preferences.c:2578
 msgid "Use different settings for fullscreen"
-msgstr ""
+msgstr "Tam ekran için farklı ayarlar kullan"
 
 #: ../src/preferences.c:2608
 msgid "Left X"
-msgstr ""
+msgstr "Sol X"
 
 #: ../src/preferences.c:2610
 msgid "Left Y"
-msgstr ""
+msgstr "Sol Y"
 
 #: ../src/preferences.c:2612
 msgid "Right X"
-msgstr ""
+msgstr "Sağ X"
 
 #: ../src/preferences.c:2614
 msgid "Right Y"
-msgstr ""
+msgstr "Sağ Y"
 
 #: ../src/preferences.c:2630 ../src/toolbar.c:89
-#, fuzzy
 msgid "Preferences"
-msgstr "Seçenekler ..."
+msgstr "Tercihler"
 
 #: ../src/preferences.c:2781
-#, fuzzy
 msgid "About Geeqie"
-msgstr ""
-"%s'yi yeniden\n"
-"adlandır :\n"
-" "
+msgstr "Geeqie Hakkında"
 
 #: ../src/preferences.c:2791
 msgid "translator-credits"
-msgstr ""
+msgstr "çevirmen-kredisi"
 
 #: ../src/print.c:134
-#, fuzzy
 msgid "Selection"
-msgstr "Seçenekler ..."
+msgstr "Seçim"
 
 #: ../src/print.c:135
 msgid "All"
-msgstr ""
+msgstr "Tümü"
 
 #: ../src/print.c:146
 msgid "One image per page"
-msgstr ""
+msgstr "Sayfa başına bir resim"
 
 #: ../src/print.c:147
 msgid "Proof sheet"
-msgstr ""
+msgstr "Deneme sayfası"
 
 #: ../src/print.c:160
 msgid "Default printer"
-msgstr ""
+msgstr "Varsayılan yazıcı"
 
 #: ../src/print.c:161
-#, fuzzy
 msgid "Custom printer"
-msgstr "Benim dosya tiplerim :"
+msgstr "Özel yazıcı"
 
 #: ../src/print.c:162
 msgid "PostScript file"
-msgstr ""
+msgstr "PostScript dosyası"
 
 #: ../src/print.c:163
-#, fuzzy
 msgid "Image file"
-msgstr "Resim"
+msgstr "Resim dosyası"
 
 #: ../src/print.c:177
 msgid "jpeg, low quality"
-msgstr ""
+msgstr "jpeg, düşük kalite"
 
 #: ../src/print.c:178
 msgid "jpeg, normal quality"
-msgstr ""
+msgstr "jpeg, olağan kalite"
 
 #: ../src/print.c:179
 msgid "jpeg, high quality"
-msgstr ""
+msgstr "jpeg, yüksek kalite"
 
 #: ../src/print.c:375 ../src/print.c:3222
-#, fuzzy
 msgid "points"
-msgstr "Xpaint"
+msgstr "noktalar"
 
 #: ../src/print.c:376
 msgid "millimeters"
-msgstr ""
+msgstr "milimetre"
 
 #: ../src/print.c:377
 msgid "centimeters"
-msgstr ""
+msgstr "santimetre"
 
 #: ../src/print.c:378
 msgid "inches"
-msgstr ""
+msgstr "inç"
 
 #: ../src/print.c:379
 msgid "picas"
-msgstr ""
+msgstr "harf"
 
 #: ../src/print.c:391
 msgid "Letter"
-msgstr ""
+msgstr "Mektup"
 
 #. in 8.5 x 11
 #: ../src/print.c:392
 msgid "Legal"
-msgstr ""
+msgstr "Yasal"
 
 #. in 8.5 x 14
 #: ../src/print.c:393
 msgid "Executive"
-msgstr ""
+msgstr "Yönetici"
 
 #. in 7.25x 10.5
 #. mm 841 x 1189
@@ -5401,56 +5084,56 @@ msgstr ""
 #. mm 125 x 176
 #: ../src/print.c:405
 msgid "Envelope #10"
-msgstr ""
+msgstr "Zarf #10"
 
 #. in 4.125 x 9.5
 #: ../src/print.c:406
 msgid "Envelope #9"
-msgstr ""
+msgstr "Zarf #9"
 
 #. in 3.875 x 8.875
 #: ../src/print.c:407
 msgid "Envelope C4"
-msgstr ""
+msgstr "Zarf C4"
 
 #. mm 229 x 324
 #: ../src/print.c:408
 msgid "Envelope C5"
-msgstr ""
+msgstr "Zarf C5"
 
 #. mm 162 x 229
 #: ../src/print.c:409
 msgid "Envelope C6"
-msgstr ""
+msgstr "Zarf C6"
 
 #. mm 114 x 162
 #: ../src/print.c:410
 msgid "Photo 6x4"
-msgstr ""
+msgstr "Foto 6x4"
 
 #. in 6   x 4
 #: ../src/print.c:411
 msgid "Photo 8x10"
-msgstr ""
+msgstr "Foto 8x10"
 
 #. in 8   x 10
 #: ../src/print.c:412
 msgid "Postcard"
-msgstr ""
+msgstr "Kartpostal"
 
 #. mm 100 x 148
 #: ../src/print.c:413
 msgid "Tabloid"
-msgstr ""
+msgstr "Küçük gazete"
 
 #: ../src/print.c:569
 #, c-format
 msgid "page %d of %d"
-msgstr ""
+msgstr "%d'nin %d sayfası"
 
 #: ../src/print.c:761
 msgid "Preview"
-msgstr ""
+msgstr "Önizleme"
 
 #: ../src/print.c:1069
 #, c-format
@@ -5458,574 +5141,522 @@ msgid ""
 "Unable to open pipe for writing.\n"
 "\"%s\""
 msgstr ""
+"Yazmak için boru açılamıyor.\n"
+"\"%s\""
 
 #: ../src/print.c:1084 ../src/print.c:1476 ../src/ui_pathsel.c:432
-#, fuzzy, c-format
+#, c-format
 msgid "A file with name %s already exists."
-msgstr ""
-"%s dizini \n"
-"zaten dosya halinde\n"
-"var ."
+msgstr "%s isimli bir dosya zaten var."
 
 #: ../src/print.c:1099 ../src/print.c:1531
 #, c-format
 msgid "Failure writing to file %s"
-msgstr ""
+msgstr "%s dosyasına yazma hatası"
 
 #: ../src/print.c:1154 ../src/print.c:1191 ../src/print.c:1227
 #: ../src/print.c:1344 ../src/print.c:1417
 msgid "SIGPIPE error writing to printer."
-msgstr ""
+msgstr "Yazıcıya yazarken SIGPIPE hatası."
 
 #: ../src/print.c:1952
 #, c-format
 msgid "Page %d"
-msgstr ""
+msgstr "%d sayfası"
 
 #: ../src/print.c:1974 ../src/print.c:1979
-#, fuzzy
 msgid "Printing error"
-msgstr "Filtralama"
+msgstr "Yazdırma hatası"
 
 #: ../src/print.c:1978
 #, c-format
 msgid "An error occured printing to %s."
-msgstr ""
+msgstr "%s öğesine yazdırırken bir hata oluştu."
 
 #: ../src/print.c:1982
-#, fuzzy
 msgid "Details"
-msgstr "Dosyaları sil"
+msgstr "Ayrıntılar"
 
 #: ../src/print.c:2597 ../src/print.c:3351 ../src/toolbar.c:88
-#, fuzzy
 msgid "Print"
-msgstr "Filtralama"
+msgstr "Yazdır"
 
 #: ../src/print.c:2601
 #, c-format
 msgid "Printing %d pages to %s."
-msgstr ""
+msgstr "%d sayfa %s'e yazdırılıyor."
 
 #: ../src/print.c:2701
-#, fuzzy
 msgid "Format:"
-msgstr "Genel"
+msgstr "Biçim:"
 
 #: ../src/print.c:2776
 msgid "Units:"
-msgstr ""
+msgstr "Birimler:"
 
 #: ../src/print.c:2820
 msgid "Orientation:"
-msgstr ""
+msgstr "Yönlendirme:"
 
 #: ../src/print.c:2952
-#, fuzzy
 msgid "Destination:"
-msgstr "Geçersiz hedef"
+msgstr "Hedef:"
 
 #: ../src/print.c:3000
-#, fuzzy
 msgid "<printer name>"
-msgstr "Yeniden adlandır :"
+msgstr "<printer name>"
 
 #: ../src/print.c:3089
-#, fuzzy
 msgid "Unlimited"
-msgstr "Silerken bir hata oluştu"
+msgstr "Sınırsız"
 
 #: ../src/print.c:3207
 msgid "Show"
-msgstr ""
+msgstr "Göster"
 
 #: ../src/print.c:3378
 msgid "Source"
-msgstr ""
+msgstr "Kaynak"
 
 #: ../src/print.c:3390
-#, fuzzy
 msgid "Image size:"
-msgstr "Resim"
+msgstr "Resim boyutu:"
 
 #: ../src/print.c:3394
-#, fuzzy
 msgid "Proof size:"
-msgstr "Resim"
+msgstr "Deneme boyutu:"
 
 #: ../src/print.c:3420
-#, fuzzy
 msgid "Paper"
-msgstr "Filtralama"
+msgstr "Sayfa"
 
 #: ../src/print.c:3443
 msgid "Margins"
-msgstr ""
+msgstr "Kenar boşlukları"
 
 #: ../src/print.c:3445
 msgid "Left:"
-msgstr ""
+msgstr "Sol:"
 
 #: ../src/print.c:3448
 msgid "Right:"
-msgstr ""
+msgstr "Sağ:"
 
 #: ../src/print.c:3451
 msgid "Top:"
-msgstr ""
+msgstr "Üst:"
 
 #: ../src/print.c:3454
 msgid "Bottom:"
-msgstr ""
+msgstr "Alt:"
 
 #: ../src/print.c:3463
-#, fuzzy
 msgid "Printer"
-msgstr "Filtralama"
+msgstr "Yazıcı"
 
 #: ../src/print.c:3469
-#, fuzzy
 msgid "Custom printer:"
-msgstr "Benim dosya tiplerim :"
+msgstr "Özel yazıcı:"
 
 #: ../src/print.c:3478
-#, fuzzy
 msgid "File:"
-msgstr "Filtralama"
+msgstr "Dosya:"
 
 #: ../src/print.c:3487
-#, fuzzy
 msgid "File format:"
-msgstr "Filtralama"
+msgstr "Dosya biçimi:"
 
 #: ../src/print.c:3492
 msgid "DPI:"
-msgstr ""
+msgstr "DPI:"
 
 #: ../src/print.c:3500
-#, fuzzy
 msgid "Remember print settings"
-msgstr "Pencere yerlerini aklında tut"
+msgstr "Yazdırma ayarlarını unutma"
 
 #: ../src/rcfile.c:91
-#, fuzzy, c-format
+#, c-format
 msgid "Option %s ignored: %s\n"
-msgstr "Dizini yaratamadım"
+msgstr "%s seçeneği yoksayıldı:%s\n"
 
 #: ../src/rcfile.c:532
 #, c-format
 msgid "error saving config file: %s\n"
-msgstr "%s ayar dosyasını kaydederken bir hata oluştu\n"
+msgstr "yapılandırma dosyasını kaydederken bir hata oluştu: %s\n"
 
 #: ../src/rcfile.c:590
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "error saving config file: %s\n"
 "error: %s\n"
-msgstr "%s ayar dosyasını kaydederken bir hata oluştu\n"
+msgstr ""
+"yapılandırma dosyasını kaydederken bir hata oluştu: %s\n"
+"hata: %s\n"
 
 #: ../src/remote.c:752 ../src/remote.c:757
 msgid "lua error: no data"
-msgstr ""
+msgstr "lua hatası: veri yok"
 
 #. short, long                  callback,               extra, prefer, parameter, description
 #: ../src/remote.c:780
-#, fuzzy
 msgid "next image"
-msgstr "%d dosya %s"
+msgstr "sonraki resim"
 
 #: ../src/remote.c:781
 msgid "previous image"
-msgstr ""
+msgstr "önceki resim"
 
 #: ../src/remote.c:782
-#, fuzzy
 msgid "first image"
-msgstr "%d dosya %s"
+msgstr "ilk resim"
 
 #: ../src/remote.c:783
-#, fuzzy
 msgid "last image"
-msgstr "%d dosya %s"
+msgstr "son resim"
 
 #: ../src/remote.c:784
-#, fuzzy
 msgid "toggle full screen"
-msgstr "Tam ekrandan çık"
+msgstr "tam ekrana geç"
 
 #: ../src/remote.c:785
-#, fuzzy
 msgid "start full screen"
-msgstr "Tam ekrandan çık"
+msgstr "Tam ekranı başlat"
 
 #: ../src/remote.c:786
-#, fuzzy
 msgid "stop full screen"
-msgstr "Tam ekrandan çık"
+msgstr "Tam ekranı durdur"
 
 #: ../src/remote.c:787
-#, fuzzy
 msgid "toggle slide show"
-msgstr "Resim şovu"
+msgstr "resim gösterisine geç"
 
 #: ../src/remote.c:788
-#, fuzzy
 msgid "start slide show"
-msgstr "Resim şovu"
+msgstr "resim gösterisini başlat"
 
 #: ../src/remote.c:789
-#, fuzzy
 msgid "stop slide show"
-msgstr "Resim şovu"
+msgstr "resim gösterisini durdur"
 
 #: ../src/remote.c:790
 msgid "<FOLDER>"
-msgstr ""
+msgstr "<FOLDER>"
 
 #: ../src/remote.c:790
-#, fuzzy
 msgid "start recursive slide show in FOLDER"
-msgstr "Resim şovu"
+msgstr "DİZİN'de özyinelemeli resim gösterisi başlat"
 
 #: ../src/remote.c:791
 msgid "<[H:][M:][N][.M]>"
-msgstr ""
+msgstr "<[H:][M:][N][.M]>"
 
 #: ../src/remote.c:791
 msgid "set slide show delay to Hrs Mins N.M seconds"
-msgstr ""
+msgstr "resim gösterisi gecikmesini Saat Dk N.M saniye olarak ayarlayın"
 
 #: ../src/remote.c:792
 msgid "show tools"
-msgstr ""
+msgstr "araçları göster"
 
 #: ../src/remote.c:793
-#, fuzzy
 msgid "hide tools"
-msgstr "Geeqie Çerezleri"
+msgstr "araçları gizle"
 
 #: ../src/remote.c:794
 msgid "quit"
-msgstr ""
+msgstr "çık"
 
 #: ../src/remote.c:795 ../src/remote.c:796 ../src/remote.c:797
 #: ../src/remote.c:798 ../src/remote.c:799 ../src/remote.c:801
 #: ../src/remote.c:803
 msgid "<FILE>"
-msgstr ""
+msgstr "<FILE>"
 
 #: ../src/remote.c:795
 msgid "load configuration from FILE"
-msgstr ""
+msgstr "DOSYA'dan yapılandırma yükle"
 
 #: ../src/remote.c:796
 msgid "get list of sidecars of FILE"
-msgstr ""
+msgstr "DOSYA yan sepetlerinin listesini al"
 
 #: ../src/remote.c:797
 msgid "get destination path of FILE"
-msgstr ""
+msgstr "DOSYA hedef yolunu al"
 
 #: ../src/remote.c:798
-#, fuzzy
 msgid "open FILE, bring Geeqie window to the top"
-msgstr "Yeni penerede göster"
+msgstr "DOSYA'yı açın, Geeqie penceresini üstüne getirin"
 
 #: ../src/remote.c:799
 msgid "open FILE, do not bring Geeqie window to the top"
-msgstr ""
+msgstr "DOSYA açın, Geeqie penceresini yukarı getirmeyin"
 
 #: ../src/remote.c:800
 msgid "print filename of current image"
-msgstr ""
+msgstr "geçerli resmin dosya adını yazdır"
 
 #: ../src/remote.c:801
-#, fuzzy
 msgid "open FILE in new window"
-msgstr "Yeni penerede göster"
+msgstr "yeni pencerede DOSYA aç"
 
 #: ../src/remote.c:802
 msgid "clear command line collection list"
-msgstr ""
+msgstr "komut satırı koleksiyon listesini temizle"
 
 #: ../src/remote.c:803
-#, fuzzy
 msgid "add FILE to command line collection list"
-msgstr "%s'yi silemedim \n"
+msgstr "komut satırı koleksiyon listesine DOSYA ekleyin"
 
 #: ../src/remote.c:804
 msgid "bring the Geeqie window to the top"
-msgstr ""
+msgstr "Geeqie penceresini üste getir"
 
 #: ../src/remote.c:805 ../src/remote.c:806
 msgid "clear|clean"
-msgstr ""
+msgstr "berrak|temiz"
 
 #: ../src/remote.c:805
-#, fuzzy
 msgid "clear or clean thumbnail cache"
-msgstr "Tırnakları arabellekte tut"
+msgstr "küçük resim önbelleğini temizle veya boşalt"
 
 #: ../src/remote.c:806
-#, fuzzy
 msgid "clear or clean shared thumbnail cache"
-msgstr "Tırnakları arabellekte tut"
+msgstr "paylaşılan küçük resim önbelleğini temizle veya boşalt"
 
 #: ../src/remote.c:807
 msgid "    clean the metadata cache"
-msgstr ""
+msgstr "    meta veri önbelleğini temizle"
 
 #: ../src/remote.c:808
-#, fuzzy
 msgid "<folder>  "
-msgstr "Dosya"
+msgstr "<folder>  "
 
 #: ../src/remote.c:808
-#, fuzzy
 msgid " render thumbnails"
-msgstr "Tırnakları arabellekte tut"
+msgstr " küçük resimler oluştur"
 
 #: ../src/remote.c:809 ../src/remote.c:810
-#, fuzzy
 msgid "<folder> "
-msgstr "Dosya"
+msgstr "<folder> "
 
 #: ../src/remote.c:809
-#, fuzzy
 msgid "render thumbnails recursively"
-msgstr "Tırnakları arabellekte tut"
+msgstr "küçük resimleri özyinelemeli oluştur"
 
 #: ../src/remote.c:810
-#, fuzzy
 msgid " render thumbnails (see Help)"
-msgstr "Tırnakları arabellekte tut"
+msgstr " küçük resimler oluştur (Yardım'a bakın)"
 
 #: ../src/remote.c:811
-#, fuzzy
 msgid "<folder>"
-msgstr "Dosya"
+msgstr "<folder>"
 
 #: ../src/remote.c:811
 msgid " render thumbnails recursively (see Help)"
-msgstr ""
+msgstr " küçük resimleri özyinelemeli oluştur (Yardım'a bakın)"
 
 #: ../src/remote.c:813
 msgid "<FILE>,<lua script>"
-msgstr ""
+msgstr "<FILE>,<lua script>"
 
 #: ../src/remote.c:813
 msgid "run lua script on FILE"
-msgstr ""
+msgstr "DOSYA üzerinde lua betiği çalıştır"
 
 #: ../src/remote.c:879
 msgid "Remote command list:\n"
-msgstr ""
+msgstr "Uzaktan komut listesi:\n"
 
 #: ../src/remote.c:898
 msgid ""
 "\n"
 "  All other command line parameters are used as plain files if they exists.\n"
 msgstr ""
+"\n"
+"  Diğer tüm komut satırı değişkenleri, varsa düz dosyalar olarak "
+"kullanılır.\n"
 
 #: ../src/remote.c:948
 #, c-format
 msgid "Remote %s not running, starting..."
-msgstr ""
+msgstr "Uzaktan %s çalışmıyor, başlıyor..."
 
 #: ../src/remote.c:1084
 msgid "Remote not available\n"
-msgstr ""
+msgstr "Uzaktan mevcut değil\n"
 
 #: ../src/search.c:243
-#, fuzzy
 msgid "folder"
-msgstr "Dosya"
+msgstr "dizin"
 
 #: ../src/search.c:244
 msgid "comments"
-msgstr ""
+msgstr "yorumlar"
 
 #: ../src/search.c:245
 msgid "results"
-msgstr ""
+msgstr "sonuçlar"
 
 #: ../src/search.c:249 ../src/search.c:274
-#, fuzzy
 msgid "contains"
-msgstr "Devam et"
+msgstr "içeren"
 
 #: ../src/search.c:250
 msgid "is"
-msgstr ""
+msgstr "eşittir"
 
 #: ../src/search.c:254 ../src/search.c:261 ../src/search.c:280
 msgid "equal to"
-msgstr ""
+msgstr "eşittir"
 
 #: ../src/search.c:255 ../src/search.c:281 ../src/search.c:288
 msgid "less than"
-msgstr ""
+msgstr "daha az"
 
 #: ../src/search.c:256 ../src/search.c:282 ../src/search.c:289
-#, fuzzy
 msgid "greater than"
-msgstr "Tırnakları yarat"
+msgstr "daha büyük"
 
 #: ../src/search.c:257 ../src/search.c:264 ../src/search.c:283
 msgid "between"
-msgstr ""
+msgstr "arasında"
 
 #: ../src/search.c:262
 msgid "before"
-msgstr ""
+msgstr "önce"
 
 #: ../src/search.c:263
-#, fuzzy
 msgid "after"
-msgstr "Filtralama"
+msgstr "sonra"
 
 #: ../src/search.c:268
 msgid "match all"
-msgstr ""
+msgstr "tümüyle eşleş"
 
 #: ../src/search.c:269
 msgid "match any"
-msgstr ""
+msgstr "herhangi biriyle eşleş"
 
 #: ../src/search.c:270
 msgid "exclude"
-msgstr ""
+msgstr "dışla"
 
 #: ../src/search.c:275
 msgid "miss"
-msgstr ""
+msgstr "bayan"
 
 #: ../src/search.c:287
 msgid "not geocoded"
-msgstr ""
+msgstr "coğrafi kodlanmamış"
 
 #: ../src/search.c:340
-#, fuzzy, c-format
+#, c-format
 msgid "%s, %d files (%s, %d)"
-msgstr "%d dosya (%d)%s"
+msgstr "%s, %d dosya (%s, %d)"
 
 #: ../src/search.c:345
-#, fuzzy, c-format
+#, c-format
 msgid "%s, %d files"
-msgstr "%d dosya %s"
+msgstr "%s, %d dosya"
 
 #: ../src/search.c:363
-#, fuzzy
 msgid "Searching..."
-msgstr "Kopyala ..."
+msgstr "Aranıyor..."
 
 #: ../src/search.c:2045 ../src/search.c:3043
 msgid "km"
-msgstr ""
+msgstr "km"
 
 #: ../src/search.c:2050 ../src/search.c:3044
-#, fuzzy
 msgid "miles"
-msgstr "Dosya"
+msgstr "mil"
 
 #: ../src/search.c:2342
 msgid "File not found"
-msgstr ""
+msgstr "Dosya yok"
 
 #: ../src/search.c:2343
-#, fuzzy
 msgid "Please enter an existing file for image content."
-msgstr "Lütfen varolan bir dizini seç"
+msgstr "Lütfen resim içeriği için mevcut bir dosyayı girin."
 
 #: ../src/search.c:2368
 msgid "Entry does not contain a valid lat/long value"
-msgstr ""
+msgstr "Giriş geçerli bir lat/long değeri içermiyor"
 
 #: ../src/search.c:2418
-#, fuzzy
 msgid "Please enter an existing folder to search."
-msgstr "Lütfen varolan bir dizini seç"
+msgstr "Lütfen aramak için mevcut bir dizin girin."
 
 #: ../src/search.c:2860
-#, fuzzy
 msgid "Image search"
-msgstr "Resim"
+msgstr "Resim ara"
 
 #: ../src/search.c:2890
-#, fuzzy
 msgid "Search:"
-msgstr "Kopyala ..."
+msgstr "Ara:"
 
 #: ../src/search.c:2904
 msgid "Recurse"
-msgstr ""
+msgstr "Özyinelemeli"
 
 #: ../src/search.c:2909
-#, fuzzy
 msgid "File name"
-msgstr "Yeniden adlandır :"
+msgstr "Dosya adı"
 
 #: ../src/search.c:2915 ../src/search.c:3014
 msgid "Match case"
-msgstr ""
+msgstr "Durum eşleşmesi"
 
 #: ../src/search.c:2920
-#, fuzzy
 msgid "File size is"
-msgstr "Dosya"
+msgstr "Dosya boyutu"
 
 #: ../src/search.c:2927 ../src/search.c:2943 ../src/search.c:2964
 #: ../src/search.c:3026
-#, fuzzy
 msgid "and"
-msgstr "Tesadüfen"
+msgstr "ve"
 
 #: ../src/search.c:2933
-#, fuzzy
 msgid "File date is"
-msgstr "Filtralama"
+msgstr "Dosya tarihi"
 
 #: ../src/search.c:2948
-#, fuzzy
 msgid "Exif date"
-msgstr "Listeleri yenile"
+msgstr "Exif tarihi"
 
 #: ../src/search.c:2953
-#, fuzzy
 msgid "Image dimensions are"
-msgstr "Geçersiz hedef"
+msgstr "Resim boyutları"
 
 #: ../src/search.c:2974
 msgid "Image content is"
-msgstr ""
+msgstr "Resim içeriği"
 
 #: ../src/search.c:2980
 #, no-c-format
 msgid "% similar to"
-msgstr ""
+msgstr "% benzer"
 
 #: ../src/search.c:2988
-#, fuzzy
 msgid "Ignore rotation"
-msgstr "Geçersiz hedef"
+msgstr "Döndürmeyi yoksay"
 
 #: ../src/search.c:3019
-#, fuzzy
 msgid "Image rating is"
-msgstr "Geçersiz hedef"
+msgstr "Resim derecelendirmesi"
 
 #: ../src/search.c:3033
-#, fuzzy
 msgid "Image is"
 msgstr "Resim"
 
 #: ../src/search.c:3045
 msgid "n.m."
-msgstr ""
+msgstr "n.m."
 
 #: ../src/search.c:3051
 msgid "from"
-msgstr ""
+msgstr "şuradan"
 
 #: ../src/search.c:3056
 msgid ""
@@ -6037,232 +5668,221 @@ msgid ""
 "an internet search URL\n"
 "See the Help file"
 msgstr ""
+"Forma bir koordinat girin:\n"
+"89.123 179.456\n"
+"veya coğrafi kodlanmış bir görüntüyü sürükleyip bırakın\n"
+"veya haritaya sol tıklayın ve yapıştırın\n"
+"veya kes ve yapıştır veya sürükle ve bırak\n"
+"bir internet arama URL'si\n"
+"Yardım dosyasına bakın"
 
 #: ../src/search.c:3109
-#, fuzzy
 msgid "Rank"
-msgstr "Tesadüfen"
+msgstr "Rütbe"
 
 #: ../src/secure_save.c:405
-#, fuzzy
 msgid "Cannot read the file"
-msgstr "Dizini yaratamadım"
+msgstr "Dosya okunamıyor"
 
 #: ../src/secure_save.c:407
 msgid "Cannot get file status"
-msgstr ""
+msgstr "Dosya durumu alınamıyor"
 
 #: ../src/secure_save.c:409
 msgid "Cannot access the file"
-msgstr ""
+msgstr "Dosyaya erişilemiyor"
 
 #: ../src/secure_save.c:411
-#, fuzzy
 msgid "Cannot create temp file"
-msgstr "Dizini yaratamadım"
+msgstr "Temp dosyası oluşturulamıyor"
 
 #: ../src/secure_save.c:413
-#, fuzzy
 msgid "Cannot rename the file"
-msgstr "Dizini yaratamadım"
+msgstr "Dosya yeniden adlandırılamıyor"
 
 #: ../src/secure_save.c:415
 msgid "File saving disabled by option"
-msgstr ""
+msgstr "Dosya kaydetme, seçeneğe göre devre dışı bırakıldı"
 
 #: ../src/secure_save.c:417
 msgid "Out of memory"
-msgstr ""
+msgstr "Bellek yetersiz"
 
 #: ../src/secure_save.c:419
 msgid "Cannot write the file"
-msgstr ""
+msgstr "Dosya yazılamıyor"
 
 #: ../src/secure_save.c:423
 msgid "Secure file saving error"
-msgstr ""
+msgstr "Güvenli dosya kaydetme hatası"
 
 #: ../src/shortcuts.c:106 ../src/shortcuts.c:160
 msgid "Add Shortcut"
-msgstr ""
+msgstr "Kısayol Ekle"
 
 #: ../src/thumb.c:405
 msgid "Thumbnail image in cache failed to load, trying to recreate.\n"
 msgstr ""
+"Önbellekteki küçük resim yüklenemedi, yeniden oluşturulmaya çalışıldı.\n"
 
 #: ../src/toolbar.c:85
-#, fuzzy
 msgid "Search"
-msgstr "Kopyala ..."
+msgstr "Ara"
 
 #: ../src/toolbar.c:90
-#, fuzzy
 msgid "Configure this window"
-msgstr "Seçenekleri ayarla"
+msgstr "Bu pencereyi yapılandır"
 
 #: ../src/toolbar.c:91
-#, fuzzy
 msgid "Thumbnail maintenance"
-msgstr "Geeqie tam ekran"
+msgstr "Küçük resim bakımı"
 
 #: ../src/toolbar.c:96
 msgid "Fit Horizontaly"
-msgstr ""
+msgstr "Yatay Olarak Sığdır"
 
 #: ../src/toolbar.c:97
 msgid "Fit vertically"
-msgstr ""
+msgstr "Dikey olarak sığdır"
 
 #: ../src/toolbar.c:102
-#, fuzzy
 msgid "Zoom1:3"
-msgstr "1:1 göster"
+msgstr "1:3 Yakınlaştır"
 
 #: ../src/toolbar.c:107
-#, fuzzy
 msgid "Slideshow Faster"
-msgstr "Resim şovu"
+msgstr "Resim Gösterisi Daha Hızlı"
 
 #: ../src/toolbar.c:108
-#, fuzzy
 msgid "Slideshow Slower"
-msgstr "Resim şovu"
+msgstr "Resim Gösterisi Daha Yavaş"
 
 #: ../src/toolbar.c:110 ../src/window.c:274 ../src/window.c:295
-#, fuzzy
 msgid "Help"
 msgstr "Yardım"
 
 #: ../src/toolbar.c:112
-#, fuzzy
 msgid "Show thumbnails"
-msgstr "Tırnakları arabellekte tut"
+msgstr "Küçük resimleri göster"
 
 #: ../src/toolbar.c:113
-#, fuzzy
 msgid "Show marks"
-msgstr "Resim"
+msgstr "İşaretleri göster"
 
 #: ../src/toolbar.c:503
 msgid "Add Toolbar Item"
-msgstr ""
+msgstr "Araç Çubuğu Öğesi Ekle"
 
 #: ../src/trash.c:88 ../src/utilops.c:2621 ../src/utilops.c:2632
 #: ../src/utilops.c:2689
 msgid "Delete failed"
-msgstr "Silerken bir hata oluştu"
+msgstr "Silme başarısız oldu"
 
 #: ../src/trash.c:89
-#, fuzzy
 msgid "Unable to remove old file from trash folder"
-msgstr ""
-"%s'yi %s'ye \n"
-"taşıyamadım\n"
-"( bir hata oluştu ).\n"
-" "
+msgstr "Eski dosya çöp kutusu dizininden kaldırılamıyor"
 
 #: ../src/trash.c:146
-#, fuzzy
 msgid "Could not create folder"
-msgstr "Dizini yaratamadım"
+msgstr "Dizin oluşturulamadı"
 
 #: ../src/trash.c:168
 msgid "Permission denied"
-msgstr ""
+msgstr "İzin reddedildi"
 
 #: ../src/trash.c:178
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Unable to access or create the trash folder.\n"
 "\"%s\""
 msgstr ""
-"%s dizinini maalesef\n"
-"yaratamadım"
+"Çöp kutusu dizinine erişilemiyor veya oluşturulamıyor.\n"
+"\"%s\""
 
 #: ../src/trash.c:182
-#, fuzzy
 msgid "Turn off safe delete"
-msgstr "Silmeyi onayla"
+msgstr "Güvenli silme özelliğini kapat"
 
 #: ../src/trash.c:201
 msgid "Deletion by external command"
-msgstr ""
+msgstr "Dış komutla silme"
 
 #: ../src/trash.c:209
 #, c-format
 msgid " (max. %d MB)"
-msgstr ""
+msgstr " (en çok. %d MB)"
 
 #: ../src/trash.c:213
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Safe delete: %s%s\n"
 "Trash: %s"
-msgstr "Silmeyi onayla"
+msgstr ""
+"Güvenli sil:  %s%s\n"
+"Çöp: %s"
 
 #: ../src/trash.c:218
-#, fuzzy, c-format
+#, c-format
 msgid "Safe delete: %s"
-msgstr "Silmeyi onayla"
+msgstr "Güvenli sil: %s"
 
 #: ../src/ui_bookmark.c:139 ../src/ui_bookmark.c:202
 msgid "New Bookmark"
-msgstr ""
+msgstr "Yeni Yer İmi"
 
 #: ../src/ui_bookmark.c:285 ../src/ui_bookmark.c:291
-#, fuzzy
 msgid "Edit Bookmark"
-msgstr "Düzenle"
+msgstr "Yer İmini Düzenle"
 
 #: ../src/ui_bookmark.c:306
-#, fuzzy
 msgid "Path:"
-msgstr "Sil"
+msgstr "Yol:"
 
 #: ../src/ui_bookmark.c:315
 msgid "Icon:"
-msgstr ""
+msgstr "Simge:"
 
 #: ../src/ui_bookmark.c:321
-#, fuzzy
 msgid "Select icon"
-msgstr "Seçenekler ..."
+msgstr "Simge seç"
 
 #: ../src/ui_bookmark.c:414
-#, fuzzy
 msgid "_Properties..."
-msgstr "Seçenekler ..."
+msgstr "Öze_llikler..."
 
 #: ../src/ui_bookmark.c:420
-#, fuzzy
 msgid "_Remove"
-msgstr "Yeniden adlandır"
+msgstr "Kaldı_r"
 
 #: ../src/ui_fileops.c:88
 msgid ""
 "One or more filenames are not encoded with the preferred locale character "
 "set.\n"
 msgstr ""
+"Bir veya daha fazla dosya adı, tercih edilen yerel ayar karakter kümesi ile "
+"kodlanmamış.\n"
 
 #: ../src/ui_fileops.c:89
 #, c-format
 msgid "Operations on, and display of these files with %s may not succeed.\n"
-msgstr ""
+msgstr "%s ile bu dosyaların çalışması ve gösterilmesi başarılı olmayabilir.\n"
 
 #: ../src/ui_fileops.c:91
 msgid ""
 "If your filenames are not encoded in utf-8, try setting the environment "
 "variable G_BROKEN_FILENAMES=1\n"
 msgstr ""
+"Dosya adlarınız utf-8 ile kodlanmamışsa, G_BROKEN_FILENAMES=1  ortam "
+"değişkenini ayarlamayı deneyin\n"
 
 #: ../src/ui_fileops.c:93
 #, c-format
 msgid "It appears G_BROKEN_FILENAMES is set to %s\n"
-msgstr ""
+msgstr "Görünüşe göre G_BROKEN_FILENAMES %s olarak ayarlanmış\n"
 
 #: ../src/ui_fileops.c:95
 msgid "It appears G_BROKEN_FILENAMES is not set\n"
-msgstr ""
+msgstr "Görünüşe göre G_BROKEN_FILENAMES ayarlanmadı\n"
 
 #: ../src/ui_fileops.c:97
 #, c-format
@@ -6270,133 +5890,118 @@ msgid ""
 "The locale appears to be set to \"%s\"\n"
 "(set by the LANG environment variable)\n"
 msgstr ""
+"Yerel ayar \"%s\" olarak ayarlanmış görünüyor\n"
+"(LANG ortam değişkeni tarafından ayarlanır)\n"
 
 #: ../src/ui_fileops.c:102
 msgid ""
 "\n"
 "Preferred encoding appears to be UTF-8, however the file:\n"
 msgstr ""
+"\n"
+"Tercih edilen kodlama UTF-8 gibi görünüyor, ancak dosya:\n"
 
 #: ../src/ui_fileops.c:103 ../src/ui_fileops.c:106 ../src/ui_fileops.c:108
 msgid "[name not displayable]"
-msgstr ""
+msgstr "[ad görüntülenemiyor]"
 
 #: ../src/ui_fileops.c:106
 #, c-format
 msgid "\"%s\" is encoded in valid UTF-8."
-msgstr ""
+msgstr "\"%s\" geçerli UTF-8'de kodlanmış."
 
 #: ../src/ui_fileops.c:108
 #, c-format
 msgid "\"%s\" is not encoded in valid UTF-8."
-msgstr ""
+msgstr "\"%s\" geçerli UTF-8'de kodlanmamış."
 
 #: ../src/ui_fileops.c:113 ../src/ui_fileops.c:118
 msgid "Filename encoding locale mismatch"
-msgstr ""
+msgstr "Dosya adı kodlaması yerel uyuşmazlığı"
 
 #: ../src/ui_help.c:119
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Unable to load:\n"
 "%s"
 msgstr ""
-"%s 'yi maalesef\n"
-"silemedim"
+"Yüklenemedi:\n"
+"%s"
 
 #: ../src/ui_pathsel.c:433 ../src/ui_pathsel.c:439 ../src/utilops.c:2320
 #: ../src/utilops.c:2347 ../src/utilops.c:2813
-#, fuzzy
 msgid "Rename failed"
-msgstr ""
-"%s'yi yeniden\n"
-"adlandır :\n"
-" "
+msgstr "Yeniden adlandırma başarısız"
 
 #: ../src/ui_pathsel.c:438
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to rename %s to %s."
-msgstr ""
-"%s dosyasını\n"
-"%s'ye adlandırırken\n"
-"maalesef bir hata\n"
-"oluştu"
+msgstr "%s,%s olarak yeniden adlandırılamadı."
 
 #: ../src/ui_pathsel.c:634 ../src/ui_pathsel.c:642
-#, fuzzy
 msgid "_Rename"
-msgstr "Yeniden adlandır"
+msgstr "Yeniden adlandı_r"
 
 #: ../src/ui_pathsel.c:636 ../src/ui_pathsel.c:646
-#, fuzzy
 msgid "Add _Bookmark"
-msgstr "Düzenle"
+msgstr "Yer i_mi Ekle"
 
 #: ../src/ui_pathsel.c:644
-#, fuzzy
 msgid "_Delete"
-msgstr "Sil"
+msgstr "_Sil"
 
 #: ../src/ui_pathsel.c:752 ../src/ui_pathsel.c:1058 ../src/utilops.c:2847
-#, fuzzy
 msgid "New folder"
-msgstr "Sil .."
+msgstr "Yeni dizin"
 
 #: ../src/ui_pathsel.c:762
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Unable to create folder:\n"
 "%s"
 msgstr ""
-"%s dizinini maalesef\n"
-"yaratamadım"
+"Dizin oluşturulamadı:\n"
+"%s"
 
 #: ../src/ui_pathsel.c:763
-#, fuzzy
 msgid "Error creating folder"
-msgstr "Dizini yaratırken bir hata oluştu"
+msgstr "Dizin oluşturulurken bir hata oluştu"
 
 #: ../src/ui_pathsel.c:989
 msgid "All Files"
-msgstr ""
+msgstr "Tüm Dosyalar"
 
 #: ../src/ui_pathsel.c:1061
 msgid "Show hidden"
-msgstr ""
+msgstr "Gizlileri göster"
 
 #: ../src/ui_pathsel.c:1145
-#, fuzzy
 msgid "Filter:"
-msgstr "Filtralama"
+msgstr "Süzme:"
 
 #: ../src/ui_tabcomp.c:933
-#, fuzzy
 msgid "Select path"
-msgstr "Silerken bir hata oluştu"
+msgstr "Yol seç"
 
 #: ../src/ui_tabcomp.c:949
-#, fuzzy
 msgid "All files"
-msgstr "%d dosya %s"
+msgstr "Tüm dosyalar"
 
 #: ../src/uri_utils.c:43
 msgid "Drag and Drop failed"
-msgstr ""
+msgstr "Sürükle ve Bırakma başarısız"
 
 #: ../src/utilops.c:590
-#, fuzzy
 msgid ""
 "\n"
 " Continue multiple file operation?"
 msgstr ""
-"%s dosyasını\n"
-" silemedim ,\n"
-" yine de öbür dosyaları sileyim mi ?"
+"\n"
+" Birden fazla dosya işlemine devam edilsin mi?"
 
 #: ../src/utilops.c:597 ../src/utilops.c:1034
-#, fuzzy
 msgid "Co_ntinue"
-msgstr "Devam et"
+msgstr "Deva_m et"
 
 #: ../src/utilops.c:774
 #, c-format
@@ -6405,142 +6010,138 @@ msgid ""
 "\n"
 "%s"
 msgstr ""
+"Dizin içeriğinin kaldırılması bu dosyada başarısız oldu:\n"
+"\n"
+"%s"
 
 #: ../src/utilops.c:918
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "%s\n"
 "Unable to start external command.\n"
 msgstr ""
-"%s 'yi maalesef\n"
-"silemedim"
+"%s\n"
+"Dış komut başlatılamıyor.\n"
 
 #. During copy/move operations it is necessary to ensure that the
 #. * target directory exists before continuing with the next step.
 #. * If not revert to the select directory dialog
 #.
 #: ../src/utilops.c:1002 ../src/utilops.c:1155
-#, fuzzy, c-format
+#, c-format
 msgid "%s is not a directory"
-msgstr "Başlangıç dizini"
+msgstr "%s bir dizin değil"
 
 #: ../src/utilops.c:1032
 msgid "Really continue?"
-msgstr ""
+msgstr "Gerçekten devam edilsin mi?"
 
 #: ../src/utilops.c:1046 ../src/utilops.c:1160
 msgid "This operation can't continue:"
-msgstr ""
+msgstr "Bu işlem devam edemiyor:"
 
 #: ../src/utilops.c:1503 ../src/utilops.c:1617 ../src/utilops.c:2032
 msgid "Discard changes"
-msgstr ""
+msgstr "Değişiklikleri gözardı et"
 
 #: ../src/utilops.c:1504 ../src/utilops.c:1618 ../src/utilops.c:1982
 #: ../src/utilops.c:1998
-#, fuzzy
 msgid "File details"
-msgstr "Filtralama"
+msgstr "Dosya ayrıntıları"
 
 #: ../src/utilops.c:1526 ../src/utilops.c:1635
 msgid "Sidecars"
-msgstr ""
+msgstr "Yan sepetler"
 
 #: ../src/utilops.c:1528
-#, fuzzy
 msgid "Write to file"
-msgstr "Üstüne yaz"
+msgstr "Dosyaya yaz"
 
 #: ../src/utilops.c:1568
-#, fuzzy
 msgid "Choose the destination folder."
-msgstr "Kaynak hedefle eşittir"
+msgstr "Hedef dizini seçin."
 
 #: ../src/utilops.c:1637
-#, fuzzy
 msgid "New name"
-msgstr "Yeniden adlandır :"
+msgstr "Yeni ad"
 
 #: ../src/utilops.c:1674
-#, fuzzy
 msgid "Manual rename"
-msgstr "Mönü adı"
+msgstr "Elle yeniden adlandır"
 
 #: ../src/utilops.c:1679
-#, fuzzy
 msgid "Original name:"
-msgstr "Yeniden adlandır :"
+msgstr "Özgün ad:"
 
 #: ../src/utilops.c:1682
-#, fuzzy
 msgid "New name:"
-msgstr "Yeniden adlandır :"
+msgstr "Yeni ad:"
 
 #: ../src/utilops.c:1695
-#, fuzzy
 msgid "Auto rename"
-msgstr "Mönü adı"
+msgstr "Otomatik yeniden adlandır"
 
 #: ../src/utilops.c:1701
 msgid "Begin text"
-msgstr ""
+msgstr "Metne başla"
 
 #: ../src/utilops.c:1709 ../src/utilops.c:1741
 msgid "Start #"
-msgstr ""
+msgstr "Başlat #"
 
 #: ../src/utilops.c:1715
 msgid "End text"
-msgstr ""
+msgstr "Metni bitir"
 
 #: ../src/utilops.c:1723
 msgid "Padding:"
-msgstr ""
+msgstr "Dolgu:"
 
 #: ../src/utilops.c:1728
 msgid "Formatted rename"
-msgstr ""
+msgstr "Biçimlendirilmiş yeniden adlandırma"
 
 #: ../src/utilops.c:1733
 msgid "Format (* = original name, ## = numbers)"
-msgstr ""
+msgstr "Biçim (* = özgün ad, ## = sayılar)"
 
 #: ../src/utilops.c:1885
 msgid "Another operation in progress.\n"
-msgstr ""
+msgstr "Devam eden başka bir işlem.\n"
 
 #: ../src/utilops.c:1941
-#, fuzzy, c-format
+#, c-format
 msgid "File: '%s'\n"
-msgstr "Filtralama"
+msgstr "Dosya: '%s'\n"
 
 #: ../src/utilops.c:1946
 msgid "with sidecar files:\n"
-msgstr ""
+msgstr "sepet dosyalarıyla:\n"
 
 #: ../src/utilops.c:1952
 #, c-format
 msgid " '%s'\n"
-msgstr ""
+msgstr " '%s'\n"
 
 #: ../src/utilops.c:1956
 msgid ""
 "\n"
 "Status: "
 msgstr ""
+"\n"
+"Durum: "
 
 #: ../src/utilops.c:1968
 msgid "no problem detected"
-msgstr ""
+msgstr "algılanan sorun yok"
 
 #: ../src/utilops.c:1984 ../src/utilops.c:2031
-#, fuzzy
 msgid "Exclude file"
-msgstr "Dosyayı sil"
+msgstr "Dosyayı hariç tut"
 
 #: ../src/utilops.c:2029 ../src/utilops.c:2054
 msgid "Overview of changed metadata"
-msgstr ""
+msgstr "Değişen meta verilere genel bakış"
 
 #: ../src/utilops.c:2047
 #, c-format
@@ -6548,164 +6149,132 @@ msgid ""
 "The following metadata tags will be written to\n"
 "'%s'."
 msgstr ""
+"Aşağıdaki meta veri etiketleri\n"
+"'%s' hedefine yazılacak."
 
 #: ../src/utilops.c:2051
 #, c-format
 msgid "The following metadata tags will be written to the image file itself."
 msgstr ""
+"Aşağıdaki meta veri etiketleri, görüntü dosyasının kendisine yazılacaktır."
 
 #: ../src/utilops.c:2157
-#, fuzzy
 msgid "Delete files?"
-msgstr "Dosyayı sil"
+msgstr "Dosyalar silinsin mi?"
 
 #: ../src/utilops.c:2158
 msgid "This will delete the following files"
-msgstr ""
+msgstr "Bu, aşağıdaki dosyaları siler"
 
 #: ../src/utilops.c:2177
 msgid "Can't write metadata"
-msgstr ""
+msgstr "Meta veri yazılamıyor"
 
 #: ../src/utilops.c:2200
 msgid "Write metadata"
-msgstr ""
+msgstr "Meta veri yaz"
 
 #: ../src/utilops.c:2201
 msgid "Write metadata?"
-msgstr ""
+msgstr "Meta veri yazılsınmı?"
 
 #: ../src/utilops.c:2202
 msgid "This will write the changed metadata into the following files"
-msgstr ""
+msgstr "Bu, değiştirilen meta verileri aşağıdaki dosyalara yazacaktır"
 
 #: ../src/utilops.c:2204
 msgid "Metadata writing failed"
-msgstr ""
+msgstr "Meta veri yazma işlemi başarısız oldu"
 
 #: ../src/utilops.c:2223 ../src/utilops.c:2251
-#, fuzzy
 msgid "Move failed"
-msgstr ""
-"%s'yi yeniden\n"
-"adlandır :\n"
-" "
+msgstr "Taşıma başarısız oldu"
 
 #: ../src/utilops.c:2248
-#, fuzzy
 msgid "Move files?"
-msgstr ""
-"%s'yi yeniden\n"
-"adlandır :\n"
-" "
+msgstr "Dosyalar taşınsın mı?"
 
 #: ../src/utilops.c:2249
 msgid "This will move the following files"
-msgstr ""
+msgstr "Bu, aşağıdaki dosyaları taşıyacak"
 
 #: ../src/utilops.c:2273 ../src/utilops.c:2301
-#, fuzzy
 msgid "Copy failed"
-msgstr ""
-"%s'yi yeniden\n"
-"adlandır :\n"
-" "
+msgstr "Kopyalama başarısız oldu"
 
 #: ../src/utilops.c:2298
-#, fuzzy
 msgid "Copy files?"
-msgstr ""
-"%s'yi yeniden\n"
-"adlandır :\n"
-" "
+msgstr "Dosyalar kopyalansın mı?"
 
 #: ../src/utilops.c:2299 ../src/utilops.c:2433
 msgid "This will copy the following files"
-msgstr ""
+msgstr "Bu, aşağıdaki dosyaları kopyalayacaktır"
 
 #: ../src/utilops.c:2343 ../src/utilops.c:2809
 msgid "Rename"
 msgstr "Yeniden adlandır"
 
 #: ../src/utilops.c:2344
-#, fuzzy
 msgid "Rename files?"
-msgstr ""
-"%s'yi yeniden\n"
-"adlandır :\n"
-" "
+msgstr "Dosyalar yeniden adlandırılsın mı?"
 
 #: ../src/utilops.c:2345
 msgid "This will rename the following files"
-msgstr ""
+msgstr "Bu aşağıdaki dosyaları yeniden adlandıracak"
 
 #: ../src/utilops.c:2397
-#, fuzzy
 msgid "Can't run external editor"
-msgstr "Dıştan kullanılacak editörler"
+msgstr "Dış düzenleyici çalıştırılamıyor"
 
 #: ../src/utilops.c:2431
-#, fuzzy
 msgid "Editor"
-msgstr "Düzenle"
+msgstr "Düzenleyici"
 
 #: ../src/utilops.c:2432
-#, fuzzy
 msgid "Run editor?"
-msgstr "Dosyaları sil"
+msgstr "Düzenleyici çalıştırılsın mı?"
 
 #: ../src/utilops.c:2435
-#, fuzzy
 msgid "External command failed"
-msgstr ""
-"%s 'yi maalesef\n"
-"silemedim"
+msgstr "Dış komut başarısız oldu"
 
 #: ../src/utilops.c:2604 ../src/utilops.c:2677
-#, fuzzy
 msgid "Delete folder"
-msgstr "Sil .."
+msgstr "Dizini sil"
 
 #: ../src/utilops.c:2605
-#, fuzzy
 msgid "Delete symbolic link?"
-msgstr ""
-"%s dizinini maalesef\n"
-"yaratamadım"
+msgstr "Sembolik bağ silinsin mi?"
 
 #: ../src/utilops.c:2607
 msgid ""
 "This will delete the symbolic link.\n"
 "The folder this link points to will not be deleted."
 msgstr ""
+"Bu, sembolik bağlantıyı siler.\n"
+"Bu bağlantının işaret ettiği dizin silinmeyecek."
 
 #: ../src/utilops.c:2609
-#, fuzzy
 msgid "Link deletion failed"
-msgstr "Silerken bir hata oluştu"
+msgstr "Bağlantı silinirken bir hata oluştu"
 
 #: ../src/utilops.c:2619
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Unable to remove folder %s\n"
 "Permissions do not allow writing to the folder."
 msgstr ""
-"%s'yi %s'ye \n"
-"taşıyamadım\n"
-"( bir hata oluştu ).\n"
-" "
+"%s dizini kaldırılamıyor\n"
+"İzinler dizine yazmaya izin vermiyor."
 
 #: ../src/utilops.c:2631 ../src/utilops.c:2688
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to list contents of folder %s"
-msgstr ""
-"%s dizinini maalesef\n"
-"yaratamadım"
+msgstr "%s dizin içeriği listelenemiyor"
 
 #: ../src/utilops.c:2645 ../src/utilops.c:2653
-#, fuzzy
 msgid "Folder contains subfolders"
-msgstr "geçerli opsiyonlar :\n"
+msgstr "Dizin alt dizinler içeriyor"
 
 #: ../src/utilops.c:2649
 #, c-format
@@ -6716,134 +6285,120 @@ msgid ""
 "\n"
 "This folder contains subfolders which must be moved before it can be deleted."
 msgstr ""
+"Dizin silinemedi:\n"
+"\n"
+"%s\n"
+"\n"
+"Bu dizin silinmeden önce taşınması gereken alt dizinleri içerir."
 
 #: ../src/utilops.c:2657
-#, fuzzy
 msgid "Subfolders:"
-msgstr "Dosya"
+msgstr "Alt dizinler:"
 
 #: ../src/utilops.c:2678
-#, fuzzy
 msgid "Delete folder?"
-msgstr "Dosyayı sil"
+msgstr "Dizin silinsin mi?"
 
 #: ../src/utilops.c:2679
-#, fuzzy
 msgid "The folder contains these files:"
-msgstr "geçerli opsiyonlar :\n"
+msgstr "Dizin şu dosyaları içerir:"
 
 #: ../src/utilops.c:2680
 msgid ""
 "This will delete the folder.\n"
 "The contents of this folder will also be deleted."
 msgstr ""
+"Bu, dizini siler.\n"
+"Bu dizinin içeriği de silinecektir."
 
 #: ../src/utilops.c:2810
-#, fuzzy
 msgid "Rename folder?"
-msgstr ""
-"%s'yi yeniden\n"
-"adlandır :\n"
-" "
+msgstr "Dizin yeniden adlandırılsın mı?"
 
 #: ../src/utilops.c:2811
-#, fuzzy
 msgid "The folder contains the following files"
-msgstr "geçerli opsiyonlar :\n"
+msgstr "Dizin aşağıdaki dosyaları içerir"
 
 #: ../src/utilops.c:2857
-#, fuzzy
 msgid "Create Folder"
-msgstr "Sil .."
+msgstr "Dizin Oluştur"
 
 #: ../src/utilops.c:2858
-#, fuzzy
 msgid "Create folder?"
-msgstr "Dosyayı sil"
+msgstr "Dizin oluşturulsun mu?"
 
 #: ../src/utilops.c:2861
-#, fuzzy
 msgid "Can't create folder"
-msgstr "Dizini yaratamadım"
+msgstr "Dizin oluşturulamıyor"
 
 #: ../src/view_dir.c:406
-#, fuzzy
 msgid "_Copy"
-msgstr "Kopyala"
+msgstr "_Kopyala"
 
 #: ../src/view_dir.c:408
-#, fuzzy
 msgid "_Move"
-msgstr "Taşı"
+msgstr "_Taşı"
 
 #: ../src/view_dir.c:662
 msgid "_Up to parent"
-msgstr ""
+msgstr "Teme_le kadar"
 
 #: ../src/view_dir.c:667
-#, fuzzy
 msgid "_Slideshow"
-msgstr "Resim şovu"
+msgstr "Re_sim gösterisi"
 
 #: ../src/view_dir.c:669
-#, fuzzy
 msgid "Slideshow recursive"
-msgstr "Resim şovu"
+msgstr "Resim gösterisi özyinelemeli"
 
 #: ../src/view_dir.c:673
-#, fuzzy
 msgid "Find _duplicates..."
-msgstr "Yeniden adlandır .."
+msgstr "Ko_pyaları bul..."
 
 #: ../src/view_dir.c:675
-#, fuzzy
 msgid "Find duplicates recursive..."
-msgstr "Yeniden adlandır .."
+msgstr "Özyinelemeli kopyaları bul..."
 
 #: ../src/view_dir.c:680
 msgid "_New folder..."
-msgstr ""
+msgstr "Ye_ni dizin..."
 
 #: ../src/view_dir.c:697 ../src/view_file/view_file.c:640
-#, fuzzy
 msgid "View as _List"
-msgstr "Tırnaklar"
+msgstr "_Liste olarak görüntüle"
 
 #: ../src/view_dir.c:700
-#, fuzzy
 msgid "View as _Tree"
-msgstr "Tam ekran"
+msgstr "Ağaç Olarak Görün_tüle"
 
 #: ../src/view_dir.c:705
-#, fuzzy
 msgid "Show _hidden files"
-msgstr "Tırnakları arabellekte tut"
+msgstr "_Gizli dosyaları göster"
 
 #: ../src/view_dir.c:708 ../src/view_file/view_file.c:658
-#, fuzzy
 msgid "Re_fresh"
-msgstr "Yenile"
+msgstr "_Yenile"
 
 #: ../src/view_file/view_file.c:643
-#, fuzzy
 msgid "View as _Icons"
-msgstr "Tırnaklar"
+msgstr "S_imge olarak görüntüle"
 
 #: ../src/view_file/view_file.c:649
-#, fuzzy
 msgid "Show _thumbnails"
-msgstr "Tırnakları arabellekte tut"
+msgstr "Küçük resimleri gös_ter"
 
 #: ../src/view_file/view_file_icon.c:1964 ../src/view_file/view_file_list.c:834
 msgid " [NO GROUPING]"
-msgstr ""
+msgstr " [GRUP YOK]"
 
 #: ../src/view_file/view_file_list.c:460
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Invalid file name:\n"
 "%s"
-msgstr "geçerli opsiyonlar :\n"
+msgstr ""
+"Geçersiz dosya adı:\n"
+"%s"
 
 #: ../src/view_file/view_file_list.c:461
 msgid "Error renaming file"
index 8354c30..f5d8884 100644 (file)
@@ -220,6 +220,8 @@ geeqie_SOURCES = \
        misc.h          \
        options.c       \
        options.h       \
+       osd.c   \
+       osd.h   \
        pan-view.h      \
        pixbuf-renderer.c       \
        pixbuf-renderer.h       \
index 1e2d439..cb6c5e9 100644 (file)
@@ -709,6 +709,7 @@ static void bar_pane_exif_write_config(GtkWidget *pane, GString *outstr, gint in
        write_char_option(outstr, indent, "id", ped->pane.id);
        write_char_option(outstr, indent, "title", gtk_label_get_text(GTK_LABEL(ped->pane.title)));
        WRITE_BOOL(ped->pane, expanded);
+       WRITE_BOOL(*ped, show_all);
        WRITE_STRING(">");
        indent++;
 
@@ -802,7 +803,7 @@ static void bar_pane_exif_size_allocate(GtkWidget *pane, GtkAllocation *alloc, g
 #endif
 }
 
-static GtkWidget *bar_pane_exif_new(const gchar *id, const gchar *title, gboolean expanded)
+static GtkWidget *bar_pane_exif_new(const gchar *id, const gchar *title, gboolean expanded, gboolean show_all)
 {
        PaneExifData *ped;
 
@@ -815,6 +816,7 @@ static GtkWidget *bar_pane_exif_new(const gchar *id, const gchar *title, gboolea
        ped->pane.id = g_strdup(id);
        ped->pane.expanded = expanded;
        ped->pane.type = PANE_EXIF;
+       ped->show_all = show_all;
 
        ped->size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
        ped->widget = gtk_event_box_new();
@@ -850,6 +852,7 @@ GtkWidget *bar_pane_exif_new_from_config(const gchar **attribute_names, const gc
        gchar *title = NULL;
        gchar *id = g_strdup("exif");
        gboolean expanded = TRUE;
+       gboolean show_all = FALSE;
        GtkWidget *ret;
 
        while (*attribute_names)
@@ -860,12 +863,13 @@ GtkWidget *bar_pane_exif_new_from_config(const gchar **attribute_names, const gc
                if (READ_CHAR_FULL("id", id)) continue;
                if (READ_CHAR_FULL("title", title)) continue;
                if (READ_BOOL_FULL("expanded", expanded)) continue;
+               if (READ_BOOL_FULL("show_all", show_all)) continue;
 
                log_printf("unknown attribute %s = %s\n", option, value);
                }
 
        bar_pane_translate_title(PANE_EXIF, id, &title);
-       ret = bar_pane_exif_new(id, title, expanded);
+       ret = bar_pane_exif_new(id, title, expanded, show_all);
        g_free(title);
        g_free(id);
        return ret;
@@ -886,6 +890,7 @@ void bar_pane_exif_update_from_config(GtkWidget *pane, const gchar **attribute_n
 
                if (READ_CHAR_FULL("title", title)) continue;
                if (READ_BOOL_FULL("expanded", ped->pane.expanded)) continue;
+               if (READ_BOOL_FULL("show_all", ped->show_all)) continue;
                if (READ_CHAR_FULL("id", ped->pane.id)) continue;
 
 
index 705988e..c420b41 100644 (file)
@@ -260,6 +260,7 @@ static void bar_sort_undo_folder(SortData *sd, GtkWidget *button)
                                        work = g_list_append(work, file_data_new_group(delete_list->data));
                                        delete_list = delete_list->next;
                                        }
+                               options->file_ops.safe_delete_enable = TRUE;
                                file_util_delete(NULL, work, button);
                                }
                        break;
index 50bce3c..3474840 100644 (file)
@@ -34,6 +34,7 @@
 #include "layout_image.h"
 #include "menu.h"
 #include "metadata.h"
+#include "pixbuf_util.h"
 #include "print.h"
 #include "utilops.h"
 #include "ui_fileops.h"
@@ -733,6 +734,15 @@ static void collection_table_popup_delete_cb(GtkWidget *widget, gpointer data)
 {
        CollectTable *ct = data;
 
+       options->file_ops.safe_delete_enable = FALSE;
+       file_util_delete(NULL, collection_table_popup_file_list(ct), ct->listview);
+}
+
+static void collection_table_popup_move_to_trash_cb(GtkWidget *widget, gpointer data)
+{
+       CollectTable *ct = data;
+
+       options->file_ops.safe_delete_enable = TRUE;
        file_util_delete(NULL, collection_table_popup_file_list(ct), ct->listview);
 }
 
@@ -994,10 +1004,18 @@ static GtkWidget *collection_table_popup_menu(CollectTable *ct, gboolean over_ic
                                G_CALLBACK(collection_table_popup_copy_path_cb), ct);
        menu_item_add_sensitive(menu, _("_Copy path unquoted"), over_icon,
                                G_CALLBACK(collection_table_popup_copy_path_unquoted_cb), ct);
-       menu_item_add_stock_sensitive(menu, _("_Delete..."), GTK_STOCK_DELETE, over_icon,
-                       G_CALLBACK(collection_table_popup_delete_cb), ct);
+
        menu_item_add_divider(menu);
+       menu_item_add_stock_sensitive(menu,
+                               options->file_ops.confirm_move_to_trash ? _("Move to Trash...") :
+                                       _("Move to Trash"), PIXBUF_INLINE_ICON_TRASH, over_icon,
+                               G_CALLBACK(collection_table_popup_move_to_trash_cb), ct);
+       menu_item_add_stock_sensitive(menu,
+                               options->file_ops.confirm_delete ? _("_Delete...") :
+                                       _("_Delete"), GTK_STOCK_DELETE, over_icon,
+                               G_CALLBACK(collection_table_popup_delete_cb), ct);
 
+       menu_item_add_divider(menu);
        submenu = submenu_add_sort(NULL, G_CALLBACK(collection_table_popup_sort_cb), ct, FALSE, TRUE, FALSE, 0);
        menu_item_add_divider(submenu);
        menu_item_add(submenu, _("Randomize"),
index 046c24b..dd3bb0a 100644 (file)
@@ -345,7 +345,7 @@ CollectWindow *collection_window_find_by_path(const gchar *path)
  * 
  * Return value must be freed with g_free()
  */
-gchar *collection_path(gchar *param)
+gchar *collection_path(const gchar *param)
 {
        gchar *path = NULL;
        gchar *full_name = NULL;
@@ -377,7 +377,7 @@ gchar *collection_path(gchar *param)
  * 
  * 
  */
-gboolean is_collection(gchar *param)
+gboolean is_collection(const gchar *param)
 {
        gchar *name = NULL;
 
@@ -390,6 +390,41 @@ gboolean is_collection(gchar *param)
        return FALSE;
 }
 
+/**
+ * @brief Creates a text list of the image paths of the contents of a Collection
+ * @param[in] name The name of the collection, with or wihout extension
+ * @param[inout] contents A GString to which the image paths are appended
+ * 
+ * 
+ */
+void collection_contents(const gchar *name, GString **contents)
+{
+       gchar *path;
+       CollectionData *cd;
+       CollectInfo *ci;
+       GList *work;
+       FileData *fd;
+
+       if (is_collection(name))
+               {
+               path = collection_path(name);
+               cd = collection_new("");
+               collection_load(cd, path, COLLECTION_LOAD_APPEND);
+               work = cd->list;
+               while (work)
+                       {
+                       ci = work->data;
+                       fd = ci->fd;
+                       *contents = g_string_append(*contents, g_strdup(fd->path));
+                       *contents = g_string_append(*contents, "\n");
+
+                       work = work->next;
+                       }
+               g_free(path);
+               collection_free(cd);
+               }
+}
+
 /*
  *-------------------------------------------------------------------
  * please use these to actually add/remove stuff
@@ -923,6 +958,7 @@ static gboolean collection_window_keypress(GtkWidget *widget, GdkEventKey *event
                                file_util_rename(NULL, collection_table_selection_get_list(cw->table), cw->window);
                                break;
                        case 'D': case 'd':
+                               options->file_ops.safe_delete_enable = TRUE;
                                file_util_delete(NULL, collection_table_selection_get_list(cw->table), cw->window);
                                break;
                        case 'S': case 's':
index 9d0ee38..4475ad9 100644 (file)
@@ -86,7 +86,8 @@ CollectWindow *collection_window_find(CollectionData *cd);
 CollectWindow *collection_window_find_by_path(const gchar *path);
 gboolean collection_window_modified_exists(void);
 
-gboolean is_collection(gchar *param);
-gchar *collection_path(gchar *param);
+gboolean is_collection(const gchar *param);
+gchar *collection_path(const gchar *param);
+void collection_contents(const gchar *name, GString **contents);
 #endif
 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
index b3b7e21..471ab5e 100644 (file)
@@ -414,6 +414,7 @@ static gint editor_list_window_sort_cb(GtkTreeModel *model, GtkTreeIter *a, GtkT
 {
        gint n = GPOINTER_TO_INT(data);
        gint ret = 0;
+       gboolean bool1, bool2;
 
        switch (n)
                {
@@ -441,6 +442,25 @@ static gint editor_list_window_sort_cb(GtkTreeModel *model, GtkTreeIter *a, GtkT
                        g_free(s2);
                        }
                        break;
+               case DESKTOP_FILE_COLUMN_DISABLED:
+                       {
+                       gtk_tree_model_get(model, a, n, &bool1, -1);
+                       gtk_tree_model_get(model, b, n, &bool2, -1);
+
+                       if (bool1 == bool2)
+                               {
+                               ret = 0;
+                               }
+                       else if (bool1 > bool2)
+                               {
+                               ret = -1;
+                               }
+                       else
+                               {
+                               ret = 1;
+                               }
+                       break;
+                       }
 
                default:
                                g_return_val_if_reached(0);
@@ -449,6 +469,67 @@ static gint editor_list_window_sort_cb(GtkTreeModel *model, GtkTreeIter *a, GtkT
        return ret;
 }
 
+static void plugin_disable_cb(GtkCellRendererToggle *renderer, gchar *path_str, gpointer data)
+{
+       EditorListWindow *ewl = data;
+       GtkTreePath *tpath;
+       GtkTreeIter iter;
+       GtkTreeModel *model;
+       gboolean disabled;
+       gchar *path;
+       GList *list;
+       gchar *haystack;
+
+       tpath = gtk_tree_path_new_from_string(path_str);
+       model = gtk_tree_view_get_model(GTK_TREE_VIEW(ewl->view));
+       gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, tpath);
+       gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, DESKTOP_FILE_COLUMN_DISABLED, &disabled, -1);
+       gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, DESKTOP_FILE_COLUMN_PATH, &path, -1);
+
+       gtk_list_store_set(GTK_LIST_STORE(desktop_file_list), &iter, DESKTOP_FILE_COLUMN_DISABLED, !disabled, -1);
+
+       if (!disabled)
+               {
+               options->disabled_plugins = g_list_append((options->disabled_plugins), g_strdup(path));
+               }
+       else
+               {
+               list = options->disabled_plugins;
+               while (list)
+                       {
+                       haystack = list->data;
+
+                       if (haystack && strcmp(haystack, path) == 0)
+                               {
+                               g_free(haystack);
+                               options->disabled_plugins = g_list_remove(options->disabled_plugins, haystack);
+                               }
+
+                       list = list->next;
+                       }
+               }
+
+       layout_editors_reload_start();
+       layout_editors_reload_finish();
+}
+
+static void plugin_disable_set_func(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
+                                                       GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
+{
+       gboolean disabled;
+
+       gtk_tree_model_get(tree_model, iter, DESKTOP_FILE_COLUMN_DISABLED, &disabled, -1);
+
+       if (disabled)
+               {
+               g_object_set(GTK_CELL_RENDERER(cell), "active", TRUE, NULL);
+               }
+       else
+               {
+               g_object_set(GTK_CELL_RENDERER(cell), "active", FALSE, NULL);
+               }
+}
+
 static void editor_list_window_create(void)
 {
        GtkWidget *win_vbox;
@@ -531,6 +612,19 @@ static void editor_list_window_create(void)
 
        gtk_tree_view_set_enable_search(GTK_TREE_VIEW(ewl->view), FALSE);
 
+       column = gtk_tree_view_column_new();
+       gtk_tree_view_column_set_title(column, _("Disabled"));
+       gtk_tree_view_column_set_resizable(column, TRUE);
+
+       renderer = gtk_cell_renderer_toggle_new();
+       g_signal_connect(G_OBJECT(renderer), "toggled",
+                        G_CALLBACK(plugin_disable_cb), ewl);
+       gtk_tree_view_column_pack_start(column, renderer, FALSE);
+       gtk_tree_view_column_set_cell_data_func(column, renderer, plugin_disable_set_func,
+                                               NULL, NULL);
+       gtk_tree_view_append_column(GTK_TREE_VIEW(ewl->view), column);
+       gtk_tree_view_column_set_sort_column_id(column, DESKTOP_FILE_COLUMN_DISABLED);
+
        column = gtk_tree_view_column_new();
        gtk_tree_view_column_set_title(column, _("Name"));
        gtk_tree_view_column_set_resizable(column, TRUE);
@@ -579,6 +673,8 @@ static void editor_list_window_create(void)
                                        GINT_TO_POINTER(DESKTOP_FILE_COLUMN_NAME), NULL);
        gtk_tree_sortable_set_sort_func(sortable, DESKTOP_FILE_COLUMN_PATH, editor_list_window_sort_cb,
                                        GINT_TO_POINTER(DESKTOP_FILE_COLUMN_PATH), NULL);
+       gtk_tree_sortable_set_sort_func(sortable, DESKTOP_FILE_COLUMN_DISABLED, editor_list_window_sort_cb,
+                                       GINT_TO_POINTER(DESKTOP_FILE_COLUMN_DISABLED), NULL);
 
        /* set initial sort order */
     gtk_tree_sortable_set_sort_column_id(sortable, DESKTOP_FILE_COLUMN_NAME, GTK_SORT_ASCENDING);
index 3277071..dffd07c 100644 (file)
@@ -36,6 +36,7 @@
 #include "md5-util.h"
 #include "menu.h"
 #include "misc.h"
+#include "pixbuf_util.h"
 #include "print.h"
 #include "thumb.h"
 #include "ui_fileops.h"
@@ -2249,6 +2250,15 @@ static void dupe_menu_delete_cb(GtkWidget *widget, gpointer data)
 {
        DupeWindow *dw = data;
 
+       options->file_ops.safe_delete_enable = FALSE;
+       file_util_delete(NULL, dupe_listview_get_selection(dw, dw->listview), dw->window);
+}
+
+static void dupe_menu_move_to_trash_cb(GtkWidget *widget, gpointer data)
+{
+       DupeWindow *dw = data;
+
+       options->file_ops.safe_delete_enable = TRUE;
        file_util_delete(NULL, dupe_listview_get_selection(dw, dw->listview), dw->window);
 }
 
@@ -2379,8 +2389,17 @@ static GtkWidget *dupe_menu_popup_main(DupeWindow *dw, DupeItem *di)
                                G_CALLBACK(dupe_menu_copy_path_cb), dw);
        menu_item_add_sensitive(menu, _("_Copy path unquoted"), on_row,
                                G_CALLBACK(dupe_menu_copy_path_unquoted_cb), dw);
-       menu_item_add_stock_sensitive(menu, _("_Delete..."), GTK_STOCK_DELETE, on_row,
+
+       menu_item_add_divider(menu);
+       menu_item_add_stock_sensitive(menu,
+                               options->file_ops.confirm_move_to_trash ? _("Move to Trash...") :
+                                       _("Move to Trash"), PIXBUF_INLINE_ICON_TRASH, on_row,
+                               G_CALLBACK(dupe_menu_move_to_trash_cb), dw);
+       menu_item_add_stock_sensitive(menu,
+                               options->file_ops.confirm_delete ? _("_Delete...") :
+                                       _("_Delete"), GTK_STOCK_DELETE, on_row,
                                G_CALLBACK(dupe_menu_delete_cb), dw);
+
        menu_item_add_divider(menu);
        menu_item_add_stock_sensitive(menu, _("Rem_ove"), GTK_STOCK_REMOVE, on_row,
                                G_CALLBACK(dupe_menu_remove_cb), dw);
@@ -3069,6 +3088,7 @@ static gboolean dupe_window_keypress_cb(GtkWidget *widget, GdkEventKey *event, g
                                        file_util_rename(NULL, dupe_listview_get_selection(dw, listview), dw->window);
                                        break;
                                case 'D': case 'd':
+                                       options->file_ops.safe_delete_enable = TRUE;
                                        file_util_delete(NULL, dupe_listview_get_selection(dw, listview), dw->window);
                                        break;
                                default:
index 2ddc34b..aa970ac 100644 (file)
@@ -184,6 +184,8 @@ gboolean editor_read_desktop_file(const gchar *path)
        gchar *try_exec;
        GtkTreeIter iter;
        gboolean category_geeqie = FALSE;
+       GList *work;
+       gboolean disabled;
 
        if (g_hash_table_lookup(editors, key)) return FALSE; /* the file found earlier wins */
 
@@ -352,9 +354,25 @@ gboolean editor_read_desktop_file(const gchar *path)
 
        if (editor->ignored) return TRUE;
 
+       work = options->disabled_plugins;
+
+       disabled = FALSE;
+       while (work)
+               {
+               if (g_strcmp0(path, work->data) == 0)
+                       {
+                       disabled = TRUE;
+                       break;
+                       }
+               work = work->next;
+               }
+
+       editor->disabled = disabled;
+
        gtk_list_store_append(desktop_file_list, &iter);
        gtk_list_store_set(desktop_file_list, &iter,
                           DESKTOP_FILE_COLUMN_KEY, key,
+                          DESKTOP_FILE_COLUMN_DISABLED, editor->disabled,
                           DESKTOP_FILE_COLUMN_NAME, editor->name,
                           DESKTOP_FILE_COLUMN_HIDDEN, editor->hidden ? _("yes") : _("no"),
                           DESKTOP_FILE_COLUMN_WRITABLE, access_file(path, W_OK),
@@ -383,7 +401,7 @@ void editor_table_clear(void)
                }
        else
                {
-               desktop_file_list = gtk_list_store_new(DESKTOP_FILE_COLUMN_COUNT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_STRING);
+               desktop_file_list = gtk_list_store_new(DESKTOP_FILE_COLUMN_COUNT, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_STRING);
                }
        if (editors)
                {
@@ -470,6 +488,11 @@ static void editor_list_add_cb(gpointer key, gpointer value, gpointer data)
            strcmp(editor->key, CMD_DELETE) == 0 ||
            strcmp(editor->key, CMD_FOLDER) == 0) return;
 
+       if (editor->disabled)
+               {
+               return;
+               }
+
        *listp = g_list_prepend(*listp, editor);
 }
 
index 508ab30..5c2811e 100644 (file)
@@ -58,6 +58,7 @@ struct _EditorDescription {
        EditorFlags flags;
        gboolean hidden;        /* explicitly hidden, shown in configuration dialog */
        gboolean ignored;       /* not interesting, do not show at all */
+       gboolean disabled;      /* display disabled by user */
 };
 
 #define EDITOR_ERRORS(flags) ((flags) & EDITOR_ERROR_MASK)
@@ -74,6 +75,7 @@ enum {
 
 enum {
        DESKTOP_FILE_COLUMN_KEY,
+       DESKTOP_FILE_COLUMN_DISABLED,
        DESKTOP_FILE_COLUMN_NAME,
        DESKTOP_FILE_COLUMN_HIDDEN,
        DESKTOP_FILE_COLUMN_WRITABLE,
index ba6c06d..e0b56ed 100644 (file)
@@ -662,7 +662,7 @@ static void zd_tz(ZoneDetectResult *results, gchar **timezone, gchar **countryna
 /**
  * @brief Gets timezone data from an exif structure
  * @param[in] exif
- * @returns TRUE if timezone data found
+ * @returns TRUE if timezone data found AND GPS date and time found
  * @param[out] exif_date_time exif date/time in the form 2018:11:30:17:05:04
  * @param[out] timezone in the form "Europe/London"
  * @param[out] countryname in the form "United Kingdom"
@@ -696,11 +696,8 @@ static gboolean exif_build_tz_data(ExifData *exif, gchar **exif_date_time, gchar
        text_date = exif_get_data_as_text(exif, "Exif.GPSInfo.GPSDateStamp");
        text_time = exif_get_data_as_text(exif, "Exif.GPSInfo.GPSTimeStamp");
 
-       if (text_latitude && text_longitude && text_latitude_ref &&
-                                               text_longitude_ref && text_date && text_time)
+       if (text_latitude && text_longitude && text_latitude_ref && text_longitude_ref)
                {
-               *exif_date_time = g_strconcat(text_date, ":", text_time, NULL);
-
                lat_deg = strtok(text_latitude, "deg'");
                lat_min = strtok(NULL, "deg'");
                latitude = atof(lat_deg) + atof(lat_min) / 60;
@@ -738,6 +735,14 @@ static gboolean exif_build_tz_data(ExifData *exif, gchar **exif_date_time, gchar
                g_free(zd_path);
                }
 
+       if (ret && text_date && text_time)
+               {
+               *exif_date_time = g_strconcat(text_date, ":", text_time, NULL);
+               }
+       else
+               {
+               ret = FALSE;
+               }
        return ret;
 }
 
@@ -885,7 +890,7 @@ static gchar *exif_build_formatted_countrycode(ExifData *exif)
 
 static gchar *exif_build_formatted_star_rating(ExifData *exif)
 {
-       gint n;
+       gint n = 0;
 
        exif_get_integer(exif, "Xmp.xmp.Rating", &n);
 
index b3c8065..2992740 100644 (file)
 
 #ifdef HAVE_EXIV2
 
-#include <exiv2/image.hpp>
-#include <exiv2/exif.hpp>
+// Don't include the <exiv2/version.hpp> file directly
+// Early Exiv2 versions didn't have version.hpp and the macros.
+#include <exiv2/exiv2.hpp>
 #include <iostream>
 #include <string>
 
 // EXIV2_TEST_VERSION is defined in Exiv2 0.15 and newer.
+#ifdef EXIV2_VERSION
 #ifndef EXIV2_TEST_VERSION
-# define EXIV2_TEST_VERSION(major,minor,patch) \
+#define EXIV2_TEST_VERSION(major,minor,patch) \
        ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) )
 #endif
+#else
+#define EXIV2_TEST_VERSION(major,minor,patch) (false)
+#endif
 
+#if EXIV2_TEST_VERSION(0,27,0)
+#define HAVE_EXIV2_ERROR_CODE
+#endif
 
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <sys/mman.h>
 
-#if !EXIV2_TEST_VERSION(0,17,90)
-#include <exiv2/tiffparser.hpp>
-#include <exiv2/tiffcomposite.hpp>
-#include <exiv2/tiffvisitor.hpp>
-#include <exiv2/tiffimage.hpp>
-#include <exiv2/cr2image.hpp>
-#include <exiv2/crwimage.hpp>
-#if EXIV2_TEST_VERSION(0,16,0)
-#include <exiv2/orfimage.hpp>
-#endif
-#if EXIV2_TEST_VERSION(0,13,0)
-#include <exiv2/rafimage.hpp>
-#endif
-#include <exiv2/futils.hpp>
-#else
-#include <exiv2/preview.hpp>
-#endif
-
-#if EXIV2_TEST_VERSION(0,17,0)
-#include <exiv2/convert.hpp>
-#include <exiv2/xmpsidecar.hpp>
+#if EXIV2_TEST_VERSION(0,27,0)
+#define EXV_PACKAGE "exiv2"
 #endif
 
 extern "C" {
@@ -374,7 +363,11 @@ public:
 #endif
                        Exiv2::Image *image = imageData_->image();
 
+#ifdef HAVE_EXIV2_ERROR_CODE
+                       if (!image) throw Exiv2::Error(Exiv2::ErrorCode::kerInputDataReadFailed);
+#else
                        if (!image) throw Exiv2::Error(21);
+#endif
                        image->setExifData(exifData_);
                        image->setIptcData(iptcData_);
 #if EXIV2_TEST_VERSION(0,16,0)
@@ -393,8 +386,12 @@ public:
 
                        sidecar->setXmpData(xmpData_);
                        sidecar->writeMetadata();
+#else
+#ifdef HAVE_EXIV2_ERROR_CODE
+                       throw Exiv2::Error(Exiv2::ErrorCode::kerNotAnImage, "xmp");
 #else
                        throw Exiv2::Error(3, "xmp");
+#endif
 #endif
                        }
        }
index 048fe3f..ef6f35b 100644 (file)
@@ -248,14 +248,6 @@ FullScreenData *fullscreen_start(GtkWidget *window, ImageWindow *imd,
        gtk_window_set_decorated(GTK_WINDOW(fs->window), FALSE);
        gtk_container_set_border_width(GTK_CONTAINER(fs->window), 0);
 
-       /* make window fullscreen -- let Gtk do it's job, don't screw it in any way */
-       gtk_window_fullscreen(GTK_WINDOW(fs->window));
-
-       /* move it to requested screen */
-       if (options->fullscreen.screen >= 0) {
-               gtk_window_set_screen(GTK_WINDOW(fs->window), screen);
-       }
-
        /* keep window above others, if requested */
        if (options->fullscreen.above) {
                gtk_window_set_keep_above(GTK_WINDOW(fs->window), TRUE);
@@ -281,6 +273,23 @@ FullScreenData *fullscreen_start(GtkWidget *window, ImageWindow *imd,
                        GDK_HINT_WIN_GRAVITY | GDK_HINT_USER_POS | GDK_HINT_USER_SIZE);
 
        gtk_widget_realize(fs->window);
+#if GTK_CHECK_VERSION(3,8,0)
+       if ((options->fullscreen.screen % 100) == 0)
+               {
+               GdkWindow *gdkwin;
+               gdkwin = gtk_widget_get_window(fs->window);
+               if (gdkwin != NULL)
+                       gdk_window_set_fullscreen_mode(gdkwin, GDK_FULLSCREEN_ON_ALL_MONITORS);
+               }
+#endif
+       /* make window fullscreen -- let Gtk do it's job, don't screw it in any way */
+       gtk_window_fullscreen(GTK_WINDOW(fs->window));
+
+       /* move it to requested screen */
+       if (options->fullscreen.screen >= 0)
+               {
+               gtk_window_set_screen(GTK_WINDOW(fs->window), screen);
+               }
 
        fs->imd = image_new(FALSE);
 
index 589b269..82e4c5c 100644 (file)
@@ -40,8 +40,14 @@ ICONS_INLINE = \
        icon_select_none.png \
        icon_select_invert.png \
        icon_select_rectangle.png \
-       icon_file_filter.png
-
+       icon_file_filter.png \
+       icon_rotate_clockwise.png \
+       icon_rotate_counter_clockwise.png \
+       icon_rotate_180.png \
+       icon_mirror.png \
+       icon_flip.png \
+       icon_original.png \
+       icon_trash.png
 
 ICONS_INLINE_PAIRS = \
        folder_closed           $(srcdir)/folder_closed.png     \
@@ -80,7 +86,14 @@ ICONS_INLINE_PAIRS = \
        icon_select_none        $(srcdir)/icon_select_none.png \
        icon_select_invert      $(srcdir)/icon_select_invert.png \
        icon_select_rectangle   $(srcdir)/icon_select_rectangle.png \
-       icon_file_filter        $(srcdir)/icon_file_filter.png
+       icon_file_filter        $(srcdir)/icon_file_filter.png \
+       icon_rotate_clockwise   $(srcdir)/icon_rotate_clockwise.png \
+       icon_rotate_counter_clockwise   $(srcdir)/icon_rotate_counter_clockwise.png \
+       icon_rotate_180 $(srcdir)/icon_rotate_180.png \
+       icon_mirror     $(srcdir)/icon_mirror.png \
+       icon_flip       $(srcdir)/icon_flip.png \
+       icon_original   $(srcdir)/icon_original.png \
+       icon_trash      $(srcdir)/icon_trash.png
 
 icons_inline.h: $(ICONS_INLINE) Makefile.in
        @sh -ec "echo '/* Auto generated file, do not edit */'; echo; \
diff --git a/src/icons/icon_flip.png b/src/icons/icon_flip.png
new file mode 100644 (file)
index 0000000..5dfa408
Binary files /dev/null and b/src/icons/icon_flip.png differ
diff --git a/src/icons/icon_mirror.png b/src/icons/icon_mirror.png
new file mode 100644 (file)
index 0000000..9c96541
Binary files /dev/null and b/src/icons/icon_mirror.png differ
diff --git a/src/icons/icon_original.png b/src/icons/icon_original.png
new file mode 100644 (file)
index 0000000..c26abf4
Binary files /dev/null and b/src/icons/icon_original.png differ
diff --git a/src/icons/icon_rotate_180.png b/src/icons/icon_rotate_180.png
new file mode 100644 (file)
index 0000000..944ee24
Binary files /dev/null and b/src/icons/icon_rotate_180.png differ
diff --git a/src/icons/icon_rotate_clockwise.png b/src/icons/icon_rotate_clockwise.png
new file mode 100644 (file)
index 0000000..aee82a4
Binary files /dev/null and b/src/icons/icon_rotate_clockwise.png differ
diff --git a/src/icons/icon_rotate_counter_clockwise.png b/src/icons/icon_rotate_counter_clockwise.png
new file mode 100644 (file)
index 0000000..123a5bc
Binary files /dev/null and b/src/icons/icon_rotate_counter_clockwise.png differ
diff --git a/src/icons/icon_trash.png b/src/icons/icon_trash.png
new file mode 100644 (file)
index 0000000..5ef2657
Binary files /dev/null and b/src/icons/icon_trash.png differ
index b0585f6..e94d752 100644 (file)
 #include "main.h"
 #include "image-overlay.h"
 
-#include "collect.h"
-#include "exif.h"
 #include "filedata.h"
 #include "histogram.h"
 #include "image.h"
 #include "img-view.h"
 #include "layout.h"
-#include "metadata.h"
+#include "osd.h"
 #include "pixbuf-renderer.h"
 #include "pixbuf_util.h"
 #include "ui_fileops.h"
 #include "image-load.h"
-#include "glua.h"
 
 /*
  *----------------------------------------------------------------------------
@@ -232,287 +229,6 @@ void image_osd_toggle(ImageWindow *imd)
                }
 }
 
-static gchar *keywords_to_string(FileData *fd)
-{
-       GList *keywords;
-       GString *kwstr = NULL;
-       gchar *ret = NULL;
-
-       g_assert(fd);
-
-       keywords = metadata_read_list(fd, KEYWORD_KEY, METADATA_PLAIN);
-
-       if (keywords)
-               {
-               GList *work = keywords;
-
-               while (work)
-                       {
-                       gchar *kw = work->data;
-                       work = work->next;
-
-                       if (!kw) continue;
-                       if (!kwstr)
-                               kwstr = g_string_new("");
-                       else
-                               g_string_append(kwstr, ", ");
-
-                       g_string_append(kwstr, kw);
-                       }
-               string_list_free(keywords);
-               }
-
-       if (kwstr)
-               {
-               ret = kwstr->str;
-               g_string_free(kwstr, FALSE);
-               }
-
-       return ret;
-}
-
-static gchar *image_osd_mkinfo(const gchar *str, ImageWindow *imd, GHashTable *vars)
-{
-       gchar delim = '%', imp = '|', sep[] = " - ";
-       gchar *start, *end;
-       guint pos, prev;
-       gboolean want_separator = FALSE;
-       gchar *name, *data;
-       GString *new;
-       gchar *ret;
-
-       if (!str || !*str) return g_strdup("");
-
-       new = g_string_new(str);
-
-       prev = -1;
-
-       while (TRUE)
-               {
-               guint limit = 0;
-               gchar *trunc = NULL;
-               gchar *limpos = NULL;
-               gchar *extra = NULL;
-               gchar *extrapos = NULL;
-               gchar *p;
-
-               start = strchr(new->str + (prev + 1), delim);
-               if (!start)
-                       break;
-               end = strchr(start+1, delim);
-               if (!end)
-                       break;
-
-               /* Search for optionnal modifiers
-                * %name:99:extra% -> name = "name", limit=99, extra = "extra"
-                */
-               for (p = start + 1; p < end; p++)
-                       {
-                       if (p[0] == ':')
-                               {
-                               if (g_ascii_isdigit(p[1]) && !limpos)
-                                       {
-                                       limpos = p + 1;
-                                       if (!trunc) trunc = p;
-                                       }
-                               else
-                                       {
-                                       extrapos = p + 1;
-                                       if (!trunc) trunc = p;
-                                       break;
-                                       }
-                               }
-                       }
-
-               if (limpos)
-                       limit = (guint) atoi(limpos);
-
-               if (extrapos)
-                       extra = g_strndup(extrapos, end - extrapos);
-
-               name = g_strndup(start+1, (trunc ? trunc : end)-start-1);
-               pos = start - new->str;
-               data = NULL;
-
-               if (strcmp(name, "keywords") == 0)
-                       {
-                       data = keywords_to_string(imd->image_fd);
-                       }
-               else if (strcmp(name, "comment") == 0)
-                       {
-                       data = metadata_read_string(imd->image_fd, COMMENT_KEY, METADATA_PLAIN);
-                       }
-               else if (strcmp(name, "imagecomment") == 0)
-                       {
-                       data = exif_get_image_comment(imd->image_fd);
-                       }
-               else if (strcmp(name, "rating") == 0)
-                       {
-                       data = metadata_read_string(imd->image_fd, RATING_KEY, METADATA_PLAIN);
-                       }
-#ifdef HAVE_LUA
-               else if (strncmp(name, "lua/", 4) == 0)
-                       {
-                       gchar *tmp;
-                       tmp = strchr(name+4, '/');
-                       if (!tmp)
-                               break;
-                       *tmp = '\0';
-                       data = lua_callvalue(imd->image_fd, name+4, tmp+1);
-                       }
-#endif
-               else
-                       {
-                       data = g_strdup(g_hash_table_lookup(vars, name));
-                       if (!data)
-                               data = metadata_read_string(imd->image_fd, name, METADATA_FORMATTED);
-                       }
-
-               if (data && *data && limit > 0 && strlen(data) > limit + 3)
-                       {
-                       gchar *new_data = g_strdup_printf("%-*.*s...", limit, limit, data);
-                       g_free(data);
-                       data = new_data;
-                       }
-
-               if (data)
-                       {
-                       /* Since we use pango markup to display, we need to escape here */
-                       gchar *escaped = g_markup_escape_text(data, -1);
-                       g_free(data);
-                       data = escaped;
-                       }
-
-               if (extra)
-                       {
-                       if (data && *data)
-                               {
-                               /* Display data between left and right parts of extra string
-                                * the data is expressed by a '*' character. A '*' may be escaped
-                                * by a \. You should escape all '*' characters, do not rely on the
-                                * current implementation which only replaces the first unescaped '*'.
-                                * If no "*" is present, the extra string is just appended to data string.
-                                * Pango mark up is accepted in left and right parts.
-                                * Any \n is replaced by a newline
-                                * Examples:
-                                * "<i>*</i>\n" -> data is displayed in italics ended with a newline
-                                * "\n"         -> ended with newline
-                                * "ISO *"      -> prefix data with "ISO " (ie. "ISO 100")
-                                * "\**\*"      -> prefix data with a star, and append a star (ie. "*100*")
-                                * "\\*"        -> prefix data with an anti slash (ie "\100")
-                                * "Collection <b>*</b>\n" -> display data in bold prefixed by "Collection " and a newline is appended
-                                *
-                                * FIXME: using background / foreground colors lead to weird results.
-                                */
-                               gchar *new_data;
-                               gchar *left = NULL;
-                               gchar *right = extra;
-                               gchar *p;
-                               guint len = strlen(extra);
-
-                               /* Search for left and right parts and unescape characters */
-                               for (p = extra; *p; p++, len--)
-                                       if (p[0] == '\\')
-                                               {
-                                               if (p[1] == 'n')
-                                                       {
-                                                       memmove(p+1, p+2, --len);
-                                                       p[0] = '\n';
-                                                       }
-                                               else if (p[1] != '\0')
-                                                       memmove(p, p+1, len--); // includes \0
-                                               }
-                                       else if (p[0] == '*' && !left)
-                                               {
-                                               right = p + 1;
-                                               left = extra;
-                                               }
-
-                               if (left) right[-1] = '\0';
-
-                               new_data = g_strdup_printf("%s%s%s", left ? left : "", data, right);
-                               g_free(data);
-                               data = new_data;
-                               }
-                       g_free(extra);
-                       }
-
-               g_string_erase(new, pos, end-start+1);
-               if (data && *data)
-                       {
-                       if (want_separator)
-                               {
-                               /* insert separator */
-                               g_string_insert(new, pos, sep);
-                               pos += strlen(sep);
-                               want_separator = FALSE;
-                               }
-
-                       g_string_insert(new, pos, data);
-                       pos += strlen(data);
-               }
-
-               if (pos-prev >= 1 && new->str[pos] == imp)
-                       {
-                       /* pipe character is replaced by a separator, delete it
-                        * and raise a flag if needed */
-                       g_string_erase(new, pos--, 1);
-                       want_separator |= (data && *data);
-                       }
-
-               if (new->str[pos] == '\n') want_separator = FALSE;
-
-               prev = pos - 1;
-
-               g_free(name);
-               g_free(data);
-               }
-
-       /* search and destroy empty lines */
-       end = new->str;
-       while ((start = strchr(end, '\n')))
-               {
-               end = start;
-               while (*++(end) == '\n')
-                       ;
-               g_string_erase(new, start-new->str, end-start-1);
-               }
-
-       g_strchomp(new->str);
-
-       ret = new->str;
-       g_string_free(new, FALSE);
-
-       return ret;
-}
-
-typedef enum {
-       OSDT_NONE       = 0,
-       OSDT_FREE       = 1 << 0,
-       OSDT_NO_DUP     = 1 << 1
-} OsdTemplateFlags;
-
-static void osd_template_insert(GHashTable *vars, gchar *keyword, gchar *value, OsdTemplateFlags flags)
-{
-       if (!value)
-               {
-               g_hash_table_insert(vars, keyword, g_strdup(""));
-               return;
-               }
-
-       if (flags & OSDT_NO_DUP)
-               {
-               g_hash_table_insert(vars, keyword, value);
-               return;
-               }
-       else
-               {
-               g_hash_table_insert(vars, keyword, g_strdup(value));
-               }
-
-       if (flags & OSDT_FREE) g_free((gpointer) value);
-}
-
 static GdkPixbuf *image_osd_info_render(OverlayStateData *osd)
 {
        GdkPixbuf *pixbuf = NULL;
@@ -624,7 +340,7 @@ static GdkPixbuf *image_osd_info_render(OverlayStateData *osd)
                        osd_template_insert(vars, "res", NULL, OSDT_NONE);
                        }
 
-               text = image_osd_mkinfo(options->image_overlay.template_string, imd, vars);
+               text = image_osd_mkinfo(options->image_overlay.template_string, imd->image_fd, vars);
                g_hash_table_destroy(vars);
 
        } else {
index ffe36cf..e66227c 100644 (file)
@@ -154,8 +154,24 @@ static void image_press_cb(PixbufRenderer *pr, GdkEventButton *event, gpointer d
 
                pixbuf_start_x = event->x;
                pixbuf_start_y = event->y;
-               image_start_x = x_pixel;
-               image_start_y = y_pixel;
+
+               if (x_pixel == -1)
+                       {
+                       image_start_x = 0;
+                       }
+               else
+                       {
+                       image_start_x = x_pixel;
+                       }
+
+               if (y_pixel == -1)
+                       {
+                       image_start_y = 0;
+                       }
+               else
+                       {
+                       image_start_y = y_pixel;
+                       }
                }
 
        if (rect_id)
@@ -180,13 +196,32 @@ static void image_drag_cb(PixbufRenderer *pr, GdkEventMotion *event, gpointer da
        gint rect_height;
        GdkPixbuf *rect_pixbuf;
        gint x_pixel, y_pixel;
+       gint image_x_pixel, image_y_pixel;
 
        if (options->draw_rectangle)
                {
                pixbuf_renderer_get_image_size(pr, &width, &height);
                pixbuf_renderer_get_mouse_position(pr, &x_pixel, &y_pixel);
-               switch_coords_orientation(imd, x_pixel, y_pixel, width, height);
 
+               if (x_pixel == -1)
+                       {
+                       image_x_pixel = width;
+                       }
+               else
+                       {
+                       image_x_pixel = x_pixel;
+                       }
+
+               if (y_pixel == -1)
+                       {
+                       image_y_pixel = height;
+                       }
+               else
+                       {
+                       image_y_pixel = y_pixel;
+                       }
+
+               switch_coords_orientation(imd, image_x_pixel, image_y_pixel, width, height);
                if (rect_id)
                        {
                        pixbuf_renderer_overlay_remove((PixbufRenderer *)imd->pr, rect_id);
@@ -1121,6 +1156,8 @@ static gboolean image_scroll_cb(GtkWidget *widget, GdkEventScroll *event, gpoint
 void image_attach_window(ImageWindow *imd, GtkWidget *window,
                         const gchar *title, const gchar *title_right, gboolean show_zoom)
 {
+       LayoutWindow *lw;
+
        imd->top_window = window;
        g_free(imd->title);
        imd->title = g_strdup(title);
@@ -1128,7 +1165,9 @@ void image_attach_window(ImageWindow *imd, GtkWidget *window,
        imd->title_right = g_strdup(title_right);
        imd->title_show_zoom = show_zoom;
 
-       if (!options->image.fit_window_to_image) window = NULL;
+       lw = layout_find_by_image(imd);
+
+       if (!(options->image.fit_window_to_image && lw && lw->options.tools_float)) window = NULL;
 
        pixbuf_renderer_set_parent((PixbufRenderer *)imd->pr, (GtkWindow *)window);
 
index 7e6bb9d..17989b3 100644 (file)
@@ -29,6 +29,7 @@
 #include "filedata.h"
 #include "fullscreen.h"
 #include "image.h"
+#include "image-load.h"
 #include "image-overlay.h"
 #include "layout.h"
 #include "layout_image.h"
@@ -406,6 +407,7 @@ static gboolean view_window_key_press_cb(GtkWidget *widget, GdkEventKey *event,
                                file_util_rename(image_get_fd(imd), NULL, imd->widget);
                                break;
                        case 'D': case 'd':
+                               options->file_ops.safe_delete_enable = TRUE;
                                file_util_delete(image_get_fd(imd), NULL, imd->widget);
                                break;
                        case 'W': case 'w':
@@ -445,6 +447,13 @@ static gboolean view_window_key_press_cb(GtkWidget *widget, GdkEventKey *event,
                                                 filelist_copy(vw->list), vw->window);
                                }
                                break;
+                       case GDK_KEY_Delete: case GDK_KEY_KP_Delete:
+                               if (options->file_ops.enable_delete_key)
+                                       {
+                                       options->file_ops.safe_delete_enable = FALSE;
+                                       file_util_delete(image_get_fd(imd), NULL, imd->widget);
+                                       }
+                               break;
                        default:
                                stop_signal = FALSE;
                                break;
@@ -540,6 +549,7 @@ static gboolean view_window_key_press_cb(GtkWidget *widget, GdkEventKey *event,
                        case GDK_KEY_Delete: case GDK_KEY_KP_Delete:
                                if (options->file_ops.enable_delete_key)
                                        {
+                                       options->file_ops.safe_delete_enable = TRUE;
                                        file_util_delete(image_get_fd(imd), NULL, imd->widget);
                                        }
                                break;
@@ -861,6 +871,9 @@ static ViewWindow *real_view_window_new(FileData *fd, GList *list, CollectionDat
        if (cd && info)
                {
                image_change_from_collection(vw->imd, cd, info, image_zoom_get_default(NULL));
+               /* Grab the fd so we can correctly size the window in
+                  the call to image_load_dimensions() below. */
+               fd = info->fd;
                if (options->image.enable_read_ahead)
                        {
                        CollectInfo * r_info = collection_next_by_info(cd, info);
@@ -873,6 +886,8 @@ static ViewWindow *real_view_window_new(FileData *fd, GList *list, CollectionDat
                view_window_set_list(vw, list);
                vw->list_pointer = vw->list;
                image_change_fd(vw->imd, (FileData *)vw->list->data, image_zoom_get_default(NULL));
+               /* Set fd to first in list */
+               fd = vw->list->data;
 
                if (options->image.enable_read_ahead)
                        {
@@ -886,21 +901,8 @@ static ViewWindow *real_view_window_new(FileData *fd, GList *list, CollectionDat
                }
 
        /* Wait until image is loaded otherwise size is not defined */
-       int count;
-       for (count = 10; count && !w && !h; count++)
-               {
-               image_get_image_size(vw->imd, &w, &h);
-               usleep(100000);
-               }
+       image_load_dimensions(fd, &w, &h);
 
-       if (image_zoom_get(vw->imd) == 0.0)
-               {
-               image_get_image_size(vw->imd, &w, &h);
-               }
-       else
-               {
-               pixbuf_renderer_get_scaled_size(PIXBUF_RENDERER(vw->imd->pr), &w, &h);
-               }
        if (options->image.limit_window_size)
                {
                gint mw = gdk_screen_width() * options->image.max_window_size / 100;
@@ -920,6 +922,7 @@ static ViewWindow *real_view_window_new(FileData *fd, GList *list, CollectionDat
        gtk_widget_set_size_request(vw->imd->pr, w, h);
 #endif
 
+       gtk_window_set_focus_on_map(GTK_WINDOW(vw->window), FALSE);
        gtk_widget_show(vw->window);
 
        view_window_list = g_list_append(view_window_list, vw);
@@ -1170,6 +1173,17 @@ static void view_delete_cb(GtkWidget *widget, gpointer data)
        ImageWindow *imd;
 
        imd = view_window_active_image(vw);
+       options->file_ops.safe_delete_enable = FALSE;
+       file_util_delete(image_get_fd(imd), NULL, imd->widget);
+}
+
+static void view_move_to_trash_cb(GtkWidget *widget, gpointer data)
+{
+       ViewWindow *vw = data;
+       ImageWindow *imd;
+
+       imd = view_window_active_image(vw);
+       options->file_ops.safe_delete_enable = TRUE;
        file_util_delete(image_get_fd(imd), NULL, imd->widget);
 }
 
@@ -1334,7 +1348,16 @@ static GtkWidget *view_popup_menu(ViewWindow *vw)
        menu_item_add(menu, _("_Rename..."), G_CALLBACK(view_rename_cb), vw);
        menu_item_add(menu, _("_Copy path"), G_CALLBACK(view_copy_path_cb), vw);
        menu_item_add(menu, _("_Copy path unquoted"), G_CALLBACK(view_copy_path_unquoted_cb), vw);
-       menu_item_add_stock(menu, _("_Delete..."), GTK_STOCK_DELETE, G_CALLBACK(view_delete_cb), vw);
+
+       menu_item_add_divider(menu);
+       menu_item_add_stock(menu,
+                               options->file_ops.confirm_move_to_trash ? _("Move to Trash...") :
+                                       _("Move to Trash"), PIXBUF_INLINE_ICON_TRASH,
+                               G_CALLBACK(view_move_to_trash_cb), vw);
+       menu_item_add_stock(menu,
+                               options->file_ops.confirm_delete ? _("_Delete...") :
+                                       _("_Delete"), GTK_STOCK_DELETE,
+                               G_CALLBACK(view_delete_cb), vw);
 
        menu_item_add_divider(menu);
 
index 5006241..9f4ec0b 100644 (file)
@@ -2532,6 +2532,14 @@ void layout_write_attributes(LayoutOptions *layout, GString *outstr, gint indent
 
        WRITE_NL(); WRITE_BOOL(*layout, toolbar_hidden);
        WRITE_NL(); WRITE_BOOL(*layout, show_info_pixel);
+       WRITE_SEPARATOR();
+
+       WRITE_NL(); WRITE_BOOL(*layout, bars_state.info);
+       WRITE_NL(); WRITE_BOOL(*layout, bars_state.sort);
+       WRITE_NL(); WRITE_BOOL(*layout, bars_state.tools_float);
+       WRITE_NL(); WRITE_BOOL(*layout, bars_state.tools_hidden);
+       WRITE_NL(); WRITE_BOOL(*layout, bars_state.hidden);
+       WRITE_SEPARATOR();
 
        WRITE_NL(); WRITE_UINT(*layout, image_overlay.state);
        WRITE_NL(); WRITE_INT(*layout, image_overlay.histogram_channel);
@@ -2618,6 +2626,12 @@ void layout_load_attributes(LayoutOptions *layout, const gchar **attribute_names
                if (READ_BOOL(*layout, toolbar_hidden)) continue;
                if (READ_BOOL(*layout, show_info_pixel)) continue;
 
+               if (READ_BOOL(*layout, bars_state.info)) continue;
+               if (READ_BOOL(*layout, bars_state.sort)) continue;
+               if (READ_BOOL(*layout, bars_state.tools_float)) continue;
+               if (READ_BOOL(*layout, bars_state.tools_hidden)) continue;
+               if (READ_BOOL(*layout, bars_state.hidden)) continue;
+
                if (READ_UINT(*layout, image_overlay.state)) continue;
                if (READ_INT(*layout, image_overlay.histogram_channel)) continue;
                if (READ_INT(*layout, image_overlay.histogram_mode)) continue;
index 250df6b..c18bf23 100644 (file)
@@ -544,6 +544,16 @@ static void li_pop_menu_delete_cb(GtkWidget *widget, gpointer data)
 {
        LayoutWindow *lw = data;
 
+       options->file_ops.safe_delete_enable = FALSE;
+       file_util_delete(layout_image_get_fd(lw), NULL,
+                        li_pop_menu_click_parent(widget, lw));
+}
+
+static void li_pop_menu_move_to_trash_cb(GtkWidget *widget, gpointer data)
+{
+       LayoutWindow *lw = data;
+
+       options->file_ops.safe_delete_enable = TRUE;
        file_util_delete(layout_image_get_fd(lw), NULL,
                         li_pop_menu_click_parent(widget, lw));
 }
@@ -705,7 +715,17 @@ static GtkWidget *layout_image_pop_menu(LayoutWindow *lw)
        item = menu_item_add(menu, _("_Copy path"), G_CALLBACK(li_pop_menu_copy_path_cb), lw);
        item = menu_item_add(menu, _("_Copy path unquoted"), G_CALLBACK(li_pop_menu_copy_path_unquoted_cb), lw);
        if (!path) gtk_widget_set_sensitive(item, FALSE);
-       item = menu_item_add_stock(menu, _("_Delete..."), GTK_STOCK_DELETE, G_CALLBACK(li_pop_menu_delete_cb), lw);
+       menu_item_add_divider(menu);
+
+       item = menu_item_add_stock(menu,
+                               options->file_ops.confirm_move_to_trash ? _("Move to Trash...") :
+                                       _("Move to Trash"), PIXBUF_INLINE_ICON_TRASH,
+                                                               G_CALLBACK(li_pop_menu_move_to_trash_cb), lw);
+       if (!path) gtk_widget_set_sensitive(item, FALSE);
+       item = menu_item_add_stock(menu,
+                               options->file_ops.confirm_delete ? _("_Delete...") :
+                                       _("_Delete"), GTK_STOCK_DELETE,
+                                                               G_CALLBACK(li_pop_menu_delete_cb), lw);
        if (!path) gtk_widget_set_sensitive(item, FALSE);
        menu_item_add_divider(menu);
 
index 06edd5f..f5e03af 100644 (file)
@@ -372,6 +372,15 @@ static void layout_menu_delete_cb(GtkAction *action, gpointer data)
 {
        LayoutWindow *lw = data;
 
+       options->file_ops.safe_delete_enable = FALSE;
+       file_util_delete(NULL, layout_selection_list(lw), layout_window(lw));
+}
+
+static void layout_menu_move_to_trash_cb(GtkAction *action, gpointer data)
+{
+       LayoutWindow *lw = data;
+
+       options->file_ops.safe_delete_enable = TRUE;
        file_util_delete(NULL, layout_selection_list(lw), layout_window(lw));
 }
 
@@ -381,6 +390,17 @@ static void layout_menu_delete_key_cb(GtkAction *action, gpointer data)
 
        if (options->file_ops.enable_delete_key)
                {
+               options->file_ops.safe_delete_enable = FALSE;
+               file_util_delete(NULL, layout_selection_list(lw), layout_window(lw));
+               }
+}
+static void layout_menu_move_to_trash_key_cb(GtkAction *action, gpointer data)
+{
+       LayoutWindow *lw = data;
+
+       if (options->file_ops.enable_delete_key)
+               {
+               options->file_ops.safe_delete_enable = TRUE;
                file_util_delete(NULL, layout_selection_list(lw), layout_window(lw));
                }
 }
@@ -1094,6 +1114,10 @@ static void layout_menu_hide_bars_cb(GtkToggleAction *action, gpointer data)
 {
        LayoutWindow *lw = data;
 
+       if (lw->options.bars_state.hidden == gtk_toggle_action_get_active(action))
+               {
+               return;
+               }
        layout_bars_hide_toggle(lw);
 }
 
@@ -1877,16 +1901,17 @@ static GtkActionEntry menu_entries[] = {
   { "Copy",            GTK_STOCK_COPY,         N_("_Copy..."),                         "<control>C",           N_("Copy..."),                          CB(layout_menu_copy_cb) },
   { "Move",    PIXBUF_INLINE_ICON_MOVE,                        N_("_Move..."),                         "<control>M",           N_("Move..."),                          CB(layout_menu_move_cb) },
   { "Rename",  PIXBUF_INLINE_ICON_RENAME,      N_("_Rename..."),                       "<control>R",           N_("Rename..."),                        CB(layout_menu_rename_cb) },
-  { "Delete",          GTK_STOCK_DELETE,       N_("_Delete..."),                       "<control>D",           N_("Delete..."),                        CB(layout_menu_delete_cb) },
-  { "DeleteAlt1",      GTK_STOCK_DELETE,       N_("_Delete..."),                       "Delete",               N_("Delete..."),                        CB(layout_menu_delete_key_cb) },
-  { "DeleteAlt2",      GTK_STOCK_DELETE,       N_("_Delete..."),                       "KP_Delete",            N_("Delete..."),                        CB(layout_menu_delete_key_cb) },
+  { "Delete",  PIXBUF_INLINE_ICON_TRASH,       N_("Move to Trash..."),         "<control>D",   N_("Move to Trash..."),         CB(layout_menu_move_to_trash_cb) },
+  { "DeleteAlt1",      PIXBUF_INLINE_ICON_TRASH,N_("Move to Trash..."),        "Delete",               N_("Move to Trash..."),         CB(layout_menu_move_to_trash_key_cb) },
+  { "DeleteAlt2",      PIXBUF_INLINE_ICON_TRASH,N_("Move to Trash..."),        "KP_Delete",    N_("Move to Trash..."),         CB(layout_menu_move_to_trash_key_cb) },
+  { "PermanentDelete", GTK_STOCK_DELETE,       N_("Delete..."),                        "<shift>Delete",N_("Delete..."),                        CB(layout_menu_delete_cb) }, 
   { "EnableGrouping",  NULL,                   N_("Enable file _grouping"),            NULL,                   N_("Enable file grouping"),             CB(layout_menu_enable_grouping_cb) },
   { "DisableGrouping", NULL,                   N_("Disable file groupi_ng"),           NULL,                   N_("Disable file grouping"),            CB(layout_menu_disable_grouping_cb) },
   { "CopyPath",                NULL,                   N_("_Copy path to clipboard"),          NULL,                   N_("Copy path to clipboard"),           CB(layout_menu_copy_path_cb) },
   { "CopyPathUnquoted",                NULL,                   N_("_Copy path unquoted to clipboard"),         NULL,                   N_("Copy path unquoted to clipboard"),          CB(layout_menu_copy_path_unquoted_cb) },
   { "CloseWindow",     GTK_STOCK_CLOSE,        N_("C_lose window"),                    "<control>W",           N_("Close window"),                     CB(layout_menu_close_cb) },
   { "Quit",            GTK_STOCK_QUIT,         N_("_Quit"),                            "<control>Q",           N_("Quit"),                             CB(layout_menu_exit_cb) },
-  { "RotateCW",                NULL,                   N_("_Rotate clockwise"),                "bracketright",         N_("Rotate clockwise"),                 CB(layout_menu_alter_90_cb) },
+  { "RotateCW",                PIXBUF_INLINE_ICON_CW,                  N_("_Rotate clockwise"),                "bracketright",         N_("Rotate clockwise"),                 CB(layout_menu_alter_90_cb) },
   { "Rating0",         NULL,                   N_("_Rating 0"),        "<alt>KP_0",    N_("Rating 0"),                 CB(layout_menu_rating_0_cb) },
   { "Rating1",         NULL,                   N_("_Rating 1"),        "<alt>KP_1",    N_("Rating 1"),                 CB(layout_menu_rating_1_cb) },
   { "Rating2",         NULL,                   N_("_Rating 2"),        "<alt>KP_2",    N_("Rating 2"),                 CB(layout_menu_rating_2_cb) },
@@ -1894,11 +1919,11 @@ static GtkActionEntry menu_entries[] = {
   { "Rating4",         NULL,                   N_("_Rating 4"),        "<alt>KP_4",    N_("Rating 4"),                 CB(layout_menu_rating_4_cb) },
   { "Rating5",         NULL,                   N_("_Rating 5"),        "<alt>KP_5",    N_("Rating 5"),                 CB(layout_menu_rating_5_cb) },
   { "RatingM1",                NULL,                   N_("_Rating -1"),       "<alt>KP_Subtract",     N_("Rating -1"),        CB(layout_menu_rating_m1_cb) },
-  { "RotateCCW",       NULL,                   N_("Rotate _counterclockwise"),         "bracketleft",          N_("Rotate counterclockwise"),          CB(layout_menu_alter_90cc_cb) },
-  { "Rotate180",       NULL,                   N_("Rotate 1_80"),                      "<shift>R",             N_("Rotate 180"),                       CB(layout_menu_alter_180_cb) },
-  { "Mirror",          NULL,                   N_("_Mirror"),                          "<shift>M",             N_("Mirror"),                           CB(layout_menu_alter_mirror_cb) },
-  { "Flip",            NULL,                   N_("_Flip"),                            "<shift>F",             N_("Flip"),                             CB(layout_menu_alter_flip_cb) },
-  { "AlterNone",       NULL,                   N_("_Original state"),                  "<shift>O",             N_("Original state"),                   CB(layout_menu_alter_none_cb) },
+  { "RotateCCW",       PIXBUF_INLINE_ICON_CCW, N_("Rotate _counterclockwise"),         "bracketleft",          N_("Rotate counterclockwise"),          CB(layout_menu_alter_90cc_cb) },
+  { "Rotate180",       PIXBUF_INLINE_ICON_180, N_("Rotate 1_80"),      "<shift>R",             N_("Rotate 180"),                       CB(layout_menu_alter_180_cb) },
+  { "Mirror",          PIXBUF_INLINE_ICON_MIRROR,      N_("_Mirror"),  "<shift>M",             N_("Mirror"),                           CB(layout_menu_alter_mirror_cb) },
+  { "Flip",            PIXBUF_INLINE_ICON_FLIP,        N_("_Flip"),    "<shift>F",             N_("Flip"),                             CB(layout_menu_alter_flip_cb) },
+  { "AlterNone",       PIXBUF_INLINE_ICON_ORIGINAL,    N_("_Original state"),  "<shift>O",             N_("Original state"),                   CB(layout_menu_alter_none_cb) },
   { "SelectAll",       PIXBUF_INLINE_ICON_SELECT_ALL,                  N_("Select _all"),                      "<control>A",           N_("Select all"),                       CB(layout_menu_select_all_cb) },
   { "SelectNone",      PIXBUF_INLINE_ICON_SELECT_NONE,                 N_("Select _none"),                     "<control><shift>A",    N_("Select none"),                      CB(layout_menu_unselect_all_cb) },
   { "SelectInvert",    PIXBUF_INLINE_ICON_SELECT_INVERT,                       N_("_Invert Selection"),                "<control><shift>I",    N_("Invert Selection"),                 CB(layout_menu_invert_selection_cb) },
@@ -2066,7 +2091,10 @@ static const gchar *menu_ui_description =
 "      <menuitem action='Copy'/>"
 "      <menuitem action='Move'/>"
 "      <menuitem action='Rename'/>"
+"      <separator/>"
 "      <menuitem action='Delete'/>"
+"      <menuitem action='PermanentDelete'/>"
+"      <separator/>"
 "      <placeholder name='FileOpsSection'/>"
 "      <separator/>"
 "      <placeholder name='QuitSection'/>"
@@ -3131,6 +3159,9 @@ static void layout_util_sync_views(LayoutWindow *lw)
        action = gtk_action_group_get_action(lw->action_group, "ShowFileFilter");
        gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.show_file_filter);
 
+       action = gtk_action_group_get_action(lw->action_group, "HideBars");
+       gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), (lw->options.bars_state.hidden));
+
        if (osd_flags & OSD_SHOW_HISTOGRAM)
                {
                action = gtk_action_group_get_action(lw->action_group, "HistogramChanR");
@@ -3383,7 +3414,14 @@ static void layout_bars_hide_toggle(LayoutWindow *lw)
                lw->options.bars_state.hidden = FALSE;
                if (lw->options.bars_state.sort)
                        {
-                       gtk_widget_show(lw->bar_sort);
+                       if (lw->bar_sort)
+                               {
+                               gtk_widget_show(lw->bar_sort);
+                               }
+                       else
+                               {
+                               layout_bar_sort_set_default(lw);
+                               }
                        }
                if (lw->options.bars_state.info)
                        {
@@ -3400,7 +3438,11 @@ static void layout_bars_hide_toggle(LayoutWindow *lw)
                lw->options.bars_state.tools_float = lw->options.tools_float;
                lw->options.bars_state.tools_hidden = lw->options.tools_hidden;
 
-               gtk_widget_hide(lw->bar);
+               if (lw->bar)
+                       {
+                       gtk_widget_hide(lw->bar);
+                       }
+
                if (lw->bar_sort)
                        gtk_widget_hide(lw->bar_sort);
                layout_tools_float_set(lw, lw->options.tools_float, TRUE);
index c331a07..03aef4c 100644 (file)
@@ -222,6 +222,8 @@ static void parse_command_line(gint argc, gchar *argv[])
        gboolean remote_do = FALSE;
        gchar *first_dir = NULL;
        gchar *app_lock;
+       gchar *pwd;
+       gchar *current_dir;
 
        command_line = g_new0(CommandLine, 1);
 
@@ -442,7 +444,16 @@ static void parse_command_line(gint argc, gchar *argv[])
                        printf_term(TRUE, _("\nUse --remote-help for valid remote options.\n"));
                        }
 
+               /* prepend the current dir the remote command was made from,
+                * for use by any remote command that needs it
+                */
+               current_dir = g_get_current_dir();
+               pwd = g_strconcat("--PWD:", current_dir, NULL);
+               remote_list = g_list_prepend(remote_list, pwd);
+
                remote_control(argv[0], remote_list, command_line->path, list, command_line->collection_list);
+               g_free(pwd);
+               g_free(current_dir);
                }
        g_list_free(remote_list);
 
index f8721f6..4502d68 100644 (file)
@@ -65,9 +65,11 @@ ConfOptions *init_options(ConfOptions *options)
        options->show_window_ids = FALSE;
 
        options->file_ops.confirm_delete = TRUE;
+       options->file_ops.confirm_move_to_trash = TRUE;
        options->file_ops.enable_delete_key = TRUE;
+       options->file_ops.use_system_trash = TRUE;
        options->file_ops.enable_in_place_rename = TRUE;
-       options->file_ops.safe_delete_enable = FALSE;
+       options->file_ops.safe_delete_enable = TRUE;
        options->file_ops.safe_delete_folder_maxsize = 128;
        options->file_ops.safe_delete_path = NULL;
 
@@ -195,13 +197,15 @@ ConfOptions *init_options(ConfOptions *options)
        options->star_rating.star = STAR_RATING_STAR;
        options->star_rating.rejected = STAR_RATING_REJECTED;
 
+       options->printer.template_string = NULL;
        options->printer.image_font = g_strdup("Serif 10");
        options->printer.page_font = g_strdup("Serif 10");
        options->printer.page_text = NULL;
-       options->printer.text_fields = 1;
        options->printer.image_text_position = 1;
        options->printer.page_text_position = 3;
 
+       options->disabled_plugins = NULL;
+
        return options;
 }
 
index a5f52cf..e4da085 100644 (file)
@@ -95,8 +95,10 @@ struct _ConfOptions
                gboolean enable_in_place_rename;
 
                gboolean confirm_delete;
+               gboolean confirm_move_to_trash;
                gboolean enable_delete_key;
                gboolean safe_delete_enable;
+               gboolean use_system_trash;
                gchar *safe_delete_path;
                gint safe_delete_folder_maxsize;
        } file_ops;
@@ -305,15 +307,17 @@ struct _ConfOptions
        struct {
                gchar *image_font;
                gchar *page_font;
-               gint text_fields;
                gboolean show_image_text;
                gboolean show_page_text;
                gchar *page_text;
                gint image_text_position;
                gint page_text_position;
+               gchar *template_string;
        } printer;
 
        gboolean read_metadata_in_idle;
+
+       GList *disabled_plugins;
 };
 
 ConfOptions *options;
diff --git a/src/osd.c b/src/osd.c
new file mode 100644 (file)
index 0000000..1f8ccd3
--- /dev/null
+++ b/src/osd.c
@@ -0,0 +1,486 @@
+/*
+ * Copyright (C) 2018 The Geeqie Team
+ *
+ * Author: Colin Clark
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+/* Routines for creating the Overlay Screen Display text. Also
+ * used for the same purposes by the Print routines
+ */
+
+#include "main.h"
+#include "osd.h"
+
+#include "dnd.h"
+#include "exif.h"
+#include "glua.h"
+#include "metadata.h"
+#include "ui_fileops.h"
+#include "ui_misc.h"
+
+#include <math.h>
+
+static const gchar *predefined_tags[][2] = {
+       {"%name%",                                                      N_("Name")},
+       {"%path:60%",                                           N_("Path")},
+       {"%date%",                                                      N_("Date")},
+       {"%size%",                                                      N_("Size")},
+       {"%zoom%",                                                      N_("Zoom")},
+       {"%dimensions%",                                        N_("Dimensions")},
+       {"%collection%",                                        N_("Collection")},
+       {"%number%",                                            N_("Image index")},
+       {"%total%",                                                     N_("Images total")},
+       {"%comment%",                                           N_("Comment")},
+       {"%keywords%",                                          N_("Keywords")},
+       {"%file.ctime%",                                        N_("File ctime")},
+       {"%file.mode%",                                         N_("File mode")},
+       {"%file.owner%",                                        N_("File owner")},
+       {"%file.group%",                                        N_("File group")},
+       {"%file.link%",                                         N_("File link")},
+       {"%file.class%",                                        N_("File class")},
+       {"%formatted.DateTime%",                        N_("Image date")},
+       {"%formatted.DateTimeDigitized%",       N_("Date digitized")},
+       {"%formatted.ShutterSpeed%",            N_("ShutterSpeed")},
+       {"%formatted.Aperture%",                        N_("Aperture")},
+       {"%formatted.ExposureBias%",            N_("Exposure bias")},
+       {"%formatted.Resolution%",                      N_("Resolution")},
+       {"%formatted.Camera%",                          N_("Camera")},
+       {"%formatted.ISOSpeedRating%",          N_("ISO")},
+       {"%formatted.FocalLength%",                     N_("Focal length")},
+       {"%formatted.FocalLength35mmFilm%",     N_("Focal len. 35mm")},
+       {"%formatted.SubjectDistance%",         N_("Subject distance")},
+       {"%formatted.Flash%",                           N_("Flash")},
+       {"%formatted.ColorProfile%",            N_("Color profile")},
+       {"%formatted.GPSPosition%",                     N_("Lat, Long")},
+       {"%formatted.GPSAltitude%",                     N_("Altitude")},
+       {"%formatted.localtime%",                       N_("Local time")},
+       {"%formatted.timezone%",                        N_("Timezone")},
+       {"%formatted.countryname%",                     N_("Country name")},
+       {"%formatted.countrycode%",                     N_("Country code")},
+       {"%rating%",                                            N_("Rating")},
+       {"%formatted.star_rating%",                     N_("Star rating")},
+       {"%Xmp.dc.creator%",                            N_("© Creator")},
+       {"%Xmp.dc.contributor%",                        N_("© Contributor")},
+       {"%Xmp.dc.rights%",                                     N_("© Rights")},
+       {NULL, NULL}};
+
+static GtkTargetEntry osd_drag_types[] = {
+       { "text/plain", GTK_TARGET_SAME_APP, TARGET_TEXT_PLAIN }
+};
+
+typedef struct _TagData TagData;
+struct _TagData
+{
+       gchar *key;
+       gchar *title;
+};
+
+static void tag_button_cb(GtkWidget *widget, gpointer data)
+{
+       GtkTextView *image_overlay_template_view = data;
+       GtkTextBuffer *buffer;
+       TagData *td;
+
+       buffer = gtk_text_view_get_buffer(image_overlay_template_view);
+       td = g_object_get_data(G_OBJECT(widget), "tag_data");
+       gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(buffer), td->key, -1);
+
+       gtk_widget_grab_focus(GTK_WIDGET(image_overlay_template_view));
+}
+
+static void osd_dnd_get_cb(GtkWidget *btn, GdkDragContext *context,
+                                                               GtkSelectionData *selection_data, guint info,
+                                                               guint time, gpointer data)
+{
+       TagData *td;
+       GtkTextView *image_overlay_template_view = data;
+
+       td = g_object_get_data(G_OBJECT(btn), "tag_data");
+       gtk_selection_data_set_text(selection_data, td->key, -1);
+
+       gtk_widget_grab_focus(GTK_WIDGET(image_overlay_template_view));
+}
+
+static void osd_btn_destroy_cb(GtkWidget *btn, GdkDragContext *context,
+                                                               GtkSelectionData *selection_data, guint info,
+                                                               guint time, gpointer data)
+{
+       TagData *td;
+
+       td = g_object_get_data(G_OBJECT(btn), "tag_data");
+       g_free(td->key);
+       g_free(td->title);
+}
+
+static void set_osd_button(GtkTable *table, const gint rows, const gint cols, const gchar *key, const gchar *title, GtkWidget *template_view)
+{
+       GtkWidget *new_button;
+       TagData *td;
+
+       new_button = gtk_button_new_with_label(title);
+       g_signal_connect(G_OBJECT(new_button), "clicked", G_CALLBACK(tag_button_cb), template_view);
+       gtk_widget_show(new_button);
+
+       td = g_new0(TagData, 1);
+       td->key = g_strdup(key);
+       td->title = g_strdup(title);
+
+       g_object_set_data(G_OBJECT(new_button), "tag_data", td);
+
+       gtk_drag_source_set(new_button, GDK_BUTTON1_MASK, osd_drag_types, 1, GDK_ACTION_COPY);
+       g_signal_connect(G_OBJECT(new_button), "drag_data_get",
+                                                       G_CALLBACK(osd_dnd_get_cb), template_view);
+       g_signal_connect(G_OBJECT(new_button), "destroy",
+                                                       G_CALLBACK(osd_btn_destroy_cb), new_button);
+
+       gtk_table_attach_defaults(table, new_button, cols, cols+1, rows, rows+1);
+
+}
+
+GtkWidget *osd_new(gint max_cols, GtkWidget *template_view)
+{
+       GtkWidget *hbox;
+       GtkWidget *vbox;
+       GtkWidget *vbox_buttons;
+       GtkWidget *group;
+       GtkWidget *button;
+       GtkWidget *scrolled;
+       GtkTextBuffer *buffer;
+       GtkWidget *label;
+       GtkWidget *     subgroup;
+       gint i = 0;
+       gint rows = 0;
+       gint max_rows = 0;
+       gint col = 0;
+       gint cols = 0;
+       gdouble entries;
+       GtkWidget *viewport;
+
+       vbox = gtk_vbox_new(FALSE, 0);
+
+       pref_label_new(vbox, _("To include predefined tags in the template, click a button or drag-and-drop"));
+
+       scrolled = gtk_scrolled_window_new(NULL, NULL);
+       gtk_box_pack_start(GTK_BOX(vbox), scrolled, FALSE, FALSE, 0);
+       gtk_container_set_border_width(GTK_CONTAINER(scrolled), PREF_PAD_BORDER);
+       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
+                                      GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+       label = gtk_label_new("title");
+       gtk_widget_show(scrolled);
+       gtk_widget_set_size_request(scrolled, -1, 140);
+
+       viewport = gtk_viewport_new(NULL, NULL);
+       gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE);
+       gtk_container_add(GTK_CONTAINER(scrolled), viewport);
+       gtk_widget_show(viewport);
+
+       entries = (sizeof(predefined_tags) / sizeof(predefined_tags[0])) - 1;
+       max_rows = ceil(entries / max_cols);
+
+       GtkTable *table;
+       table = GTK_TABLE(gtk_table_new(max_rows, max_cols, FALSE));
+       gtk_container_add(GTK_CONTAINER(viewport), GTK_WIDGET(table));
+       gtk_widget_show(GTK_WIDGET(table));
+
+       for (rows = 0; rows < max_rows; rows++)
+               {
+               cols = 0;
+
+               while (cols < max_cols && predefined_tags[i][0])
+                       {
+                       set_osd_button(table, rows, cols, predefined_tags[i][0], predefined_tags[i][1], template_view);
+                       i = i + 1;
+                       cols++;
+                       }
+               }
+       return vbox;
+}
+static gchar *keywords_to_string(FileData *fd)
+{
+       GList *keywords;
+       GString *kwstr = NULL;
+       gchar *ret = NULL;
+
+       g_assert(fd);
+
+       keywords = metadata_read_list(fd, KEYWORD_KEY, METADATA_PLAIN);
+
+       if (keywords)
+               {
+               GList *work = keywords;
+
+               while (work)
+                       {
+                       gchar *kw = work->data;
+                       work = work->next;
+
+                       if (!kw) continue;
+                       if (!kwstr)
+                               kwstr = g_string_new("");
+                       else
+                               g_string_append(kwstr, ", ");
+
+                       g_string_append(kwstr, kw);
+                       }
+               string_list_free(keywords);
+               }
+
+       if (kwstr)
+               {
+               ret = kwstr->str;
+               g_string_free(kwstr, FALSE);
+               }
+
+       return ret;
+}
+
+gchar *image_osd_mkinfo(const gchar *str, FileData *fd, GHashTable *vars)
+{
+       gchar delim = '%', imp = '|', sep[] = " - ";
+       gchar *start, *end;
+       guint pos, prev;
+       gboolean want_separator = FALSE;
+       gchar *name, *data;
+       GString *new;
+       gchar *ret;
+
+       if (!str || !*str) return g_strdup("");
+
+       new = g_string_new(str);
+
+       prev = -1;
+
+       while (TRUE)
+               {
+               guint limit = 0;
+               gchar *trunc = NULL;
+               gchar *limpos = NULL;
+               gchar *extra = NULL;
+               gchar *extrapos = NULL;
+               gchar *p;
+
+               start = strchr(new->str + (prev + 1), delim);
+               if (!start)
+                       break;
+               end = strchr(start+1, delim);
+               if (!end)
+                       break;
+
+               /* Search for optionnal modifiers
+                * %name:99:extra% -> name = "name", limit=99, extra = "extra"
+                */
+               for (p = start + 1; p < end; p++)
+                       {
+                       if (p[0] == ':')
+                               {
+                               if (g_ascii_isdigit(p[1]) && !limpos)
+                                       {
+                                       limpos = p + 1;
+                                       if (!trunc) trunc = p;
+                                       }
+                               else
+                                       {
+                                       extrapos = p + 1;
+                                       if (!trunc) trunc = p;
+                                       break;
+                                       }
+                               }
+                       }
+
+               if (limpos)
+                       limit = (guint) atoi(limpos);
+
+               if (extrapos)
+                       extra = g_strndup(extrapos, end - extrapos);
+
+               name = g_strndup(start+1, (trunc ? trunc : end)-start-1);
+               pos = start - new->str;
+               data = NULL;
+
+               if (strcmp(name, "keywords") == 0)
+                       {
+                       data = keywords_to_string(fd);
+                       }
+               else if (strcmp(name, "comment") == 0)
+                       {
+                       data = metadata_read_string(fd, COMMENT_KEY, METADATA_PLAIN);
+                       }
+               else if (strcmp(name, "imagecomment") == 0)
+                       {
+                       data = exif_get_image_comment(fd);
+                       }
+               else if (strcmp(name, "rating") == 0)
+                       {
+                       data = metadata_read_string(fd, RATING_KEY, METADATA_PLAIN);
+                       }
+#ifdef HAVE_LUA
+               else if (strncmp(name, "lua/", 4) == 0)
+                       {
+                       gchar *tmp;
+                       tmp = strchr(name+4, '/');
+                       if (!tmp)
+                               break;
+                       *tmp = '\0';
+                       data = lua_callvalue(fd, name+4, tmp+1);
+                       }
+#endif
+               else
+                       {
+                       data = g_strdup(g_hash_table_lookup(vars, name));
+                       if (!data)
+                               data = metadata_read_string(fd, name, METADATA_FORMATTED);
+                       }
+
+               if (data && *data && limit > 0 && strlen(data) > limit + 3)
+                       {
+                       gchar *new_data = g_strdup_printf("%-*.*s...", limit, limit, data);
+                       g_free(data);
+                       data = new_data;
+                       }
+
+               if (data)
+                       {
+                       /* Since we use pango markup to display, we need to escape here */
+                       gchar *escaped = g_markup_escape_text(data, -1);
+                       g_free(data);
+                       data = escaped;
+                       }
+
+               if (extra)
+                       {
+                       if (data && *data)
+                               {
+                               /* Display data between left and right parts of extra string
+                                * the data is expressed by a '*' character. A '*' may be escaped
+                                * by a \. You should escape all '*' characters, do not rely on the
+                                * current implementation which only replaces the first unescaped '*'.
+                                * If no "*" is present, the extra string is just appended to data string.
+                                * Pango mark up is accepted in left and right parts.
+                                * Any \n is replaced by a newline
+                                * Examples:
+                                * "<i>*</i>\n" -> data is displayed in italics ended with a newline
+                                * "\n"         -> ended with newline
+                                * "ISO *"      -> prefix data with "ISO " (ie. "ISO 100")
+                                * "\**\*"      -> prefix data with a star, and append a star (ie. "*100*")
+                                * "\\*"        -> prefix data with an anti slash (ie "\100")
+                                * "Collection <b>*</b>\n" -> display data in bold prefixed by "Collection " and a newline is appended
+                                *
+                                * FIXME: using background / foreground colors lead to weird results.
+                                */
+                               gchar *new_data;
+                               gchar *left = NULL;
+                               gchar *right = extra;
+                               gchar *p;
+                               guint len = strlen(extra);
+
+                               /* Search for left and right parts and unescape characters */
+                               for (p = extra; *p; p++, len--)
+                                       if (p[0] == '\\')
+                                               {
+                                               if (p[1] == 'n')
+                                                       {
+                                                       memmove(p+1, p+2, --len);
+                                                       p[0] = '\n';
+                                                       }
+                                               else if (p[1] != '\0')
+                                                       memmove(p, p+1, len--); // includes \0
+                                               }
+                                       else if (p[0] == '*' && !left)
+                                               {
+                                               right = p + 1;
+                                               left = extra;
+                                               }
+
+                               if (left) right[-1] = '\0';
+
+                               new_data = g_strdup_printf("%s%s%s", left ? left : "", data, right);
+                               g_free(data);
+                               data = new_data;
+                               }
+                       g_free(extra);
+                       }
+
+               g_string_erase(new, pos, end-start+1);
+               if (data && *data)
+                       {
+                       if (want_separator)
+                               {
+                               /* insert separator */
+                               g_string_insert(new, pos, sep);
+                               pos += strlen(sep);
+                               want_separator = FALSE;
+                               }
+
+                       g_string_insert(new, pos, data);
+                       pos += strlen(data);
+               }
+
+               if (pos-prev >= 1 && new->str[pos] == imp)
+                       {
+                       /* pipe character is replaced by a separator, delete it
+                        * and raise a flag if needed */
+                       g_string_erase(new, pos--, 1);
+                       want_separator |= (data && *data);
+                       }
+
+               if (new->str[pos] == '\n') want_separator = FALSE;
+
+               prev = pos - 1;
+
+               g_free(name);
+               g_free(data);
+               }
+
+       /* search and destroy empty lines */
+       end = new->str;
+       while ((start = strchr(end, '\n')))
+               {
+               end = start;
+               while (*++(end) == '\n')
+                       ;
+               g_string_erase(new, start-new->str, end-start-1);
+               }
+
+       g_strchomp(new->str);
+
+       ret = new->str;
+       g_string_free(new, FALSE);
+
+       return ret;
+}
+
+void osd_template_insert(GHashTable *vars, gchar *keyword, gchar *value, OsdTemplateFlags flags)
+{
+       if (!value)
+               {
+               g_hash_table_insert(vars, keyword, g_strdup(""));
+               return;
+               }
+
+       if (flags & OSDT_NO_DUP)
+               {
+               g_hash_table_insert(vars, keyword, value);
+               return;
+               }
+       else
+               {
+               g_hash_table_insert(vars, keyword, g_strdup(value));
+               }
+
+       if (flags & OSDT_FREE) g_free((gpointer) value);
+}
+/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
diff --git a/src/osd.h b/src/osd.h
new file mode 100644 (file)
index 0000000..886359e
--- /dev/null
+++ b/src/osd.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2018 The Geeqie Team
+ *
+ * Author: Colin Clark
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef OSD_H
+#define OSD_H
+
+typedef enum {
+       OSDT_NONE       = 0,
+       OSDT_FREE       = 1 << 0,
+       OSDT_NO_DUP     = 1 << 1
+} OsdTemplateFlags;
+
+GtkWidget *osd_new(gint max_cols, GtkWidget *template_view);
+gchar *image_osd_mkinfo(const gchar *str, FileData *fd, GHashTable *vars);
+void osd_template_insert(GHashTable *vars, gchar *keyword, gchar *value, OsdTemplateFlags flags);
+#endif
+/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
index a841993..020603d 100644 (file)
@@ -1211,7 +1211,11 @@ static gboolean pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, g
                                if (fd) file_util_rename(fd, NULL, GTK_WIDGET(pr));
                                break;
                        case 'D': case 'd':
-                               if (fd) file_util_delete(fd, NULL, GTK_WIDGET(pr));
+                               if (fd)
+                                       {
+                                       options->file_ops.safe_delete_enable = TRUE;
+                                       file_util_delete(fd, NULL, GTK_WIDGET(pr));
+                                       }
                                break;
                        case 'F': case 'f':
                                pan_search_toggle_visible(pw, TRUE);
@@ -2151,7 +2155,24 @@ static void pan_delete_cb(GtkWidget *widget, gpointer data)
        FileData *fd;
 
        fd = pan_menu_click_fd(pw);
-       if (fd) file_util_delete(fd, NULL, pw->imd->widget);
+       if (fd)
+               {
+               options->file_ops.safe_delete_enable = FALSE;
+               file_util_delete(fd, NULL, pw->imd->widget);
+               }
+}
+
+static void pan_move_to_trash_cb(GtkWidget *widget, gpointer data)
+{
+       PanWindow *pw = data;
+       FileData *fd;
+
+       fd = pan_menu_click_fd(pw);
+       if (fd)
+               {
+               options->file_ops.safe_delete_enable = TRUE;
+               file_util_delete(fd, NULL, pw->imd->widget);
+               }
 }
 
 static void pan_copy_path_cb(GtkWidget *widget, gpointer data)
@@ -2301,8 +2322,16 @@ static GtkWidget *pan_popup_menu(PanWindow *pw)
                                G_CALLBACK(pan_copy_path_cb), pw);
        menu_item_add_sensitive(menu, _("_Copy path unquoted"), active,
                                G_CALLBACK(pan_copy_path_unquoted_cb), pw);
-       menu_item_add_stock_sensitive(menu, _("_Delete..."), GTK_STOCK_DELETE, active,
-                                     G_CALLBACK(pan_delete_cb), pw);
+
+       menu_item_add_divider(menu);
+       menu_item_add_stock_sensitive(menu,
+                               options->file_ops.confirm_move_to_trash ? _("Move to Trash...") :
+                                       _("Move to Trash"), PIXBUF_INLINE_ICON_TRASH, active,
+                                               G_CALLBACK(pan_move_to_trash_cb), pw);
+       menu_item_add_stock_sensitive(menu,
+                               options->file_ops.confirm_delete ? _("_Delete...") :
+                                       _("_Delete"), GTK_STOCK_DELETE, active,
+                                               G_CALLBACK(pan_delete_cb), pw);
 
        menu_item_add_divider(menu);
 
index 12756be..aded467 100644 (file)
@@ -2879,10 +2879,15 @@ gboolean pixbuf_renderer_get_mouse_position(PixbufRenderer *pr, gint *x_pixel_re
        x_pixel_clamped = CLAMP(x_pixel, 0, pr->image_width - 1);
        y_pixel_clamped = CLAMP(y_pixel, 0, pr->image_height - 1);
 
-       if(x_pixel != x_pixel_clamped || y_pixel != y_pixel_clamped)
+       if (x_pixel != x_pixel_clamped)
                {
                /* mouse is not on pr */
-               x_pixel = y_pixel = -1;
+               x_pixel = -1;
+               }
+       if (y_pixel != y_pixel_clamped)
+               {
+               /* mouse is not on pr */
+               y_pixel = -1;
                }
 
        *x_pixel_return = x_pixel;
index f32e110..f2a44a0 100644 (file)
@@ -139,6 +139,13 @@ static PixbufInline inline_pixbuf_data[] = {
        { PIXBUF_INLINE_ICON_SELECT_INVERT,     icon_select_invert },
        { PIXBUF_INLINE_ICON_SELECT_RECTANGLE,  icon_select_rectangle },
        { PIXBUF_INLINE_ICON_FILE_FILTER,       icon_file_filter },
+       { PIXBUF_INLINE_ICON_CW,        icon_rotate_clockwise },
+       { PIXBUF_INLINE_ICON_CCW,       icon_rotate_counter_clockwise },
+       { PIXBUF_INLINE_ICON_180,       icon_rotate_180 },
+       { PIXBUF_INLINE_ICON_MIRROR,    icon_mirror },
+       { PIXBUF_INLINE_ICON_FLIP,      icon_flip },
+       { PIXBUF_INLINE_ICON_ORIGINAL,  icon_original },
+       { PIXBUF_INLINE_ICON_TRASH,     icon_trash },
        { NULL, NULL }
 };
 
@@ -228,6 +235,15 @@ gboolean register_theme_icon_as_stock(const gchar *key, const gchar *icon)
                                {
                                DEBUG_1("Couldn't load icon %s: %s", icon2, error->message);
                                g_error_free(error);
+                               error = NULL;
+
+                               /* try as an absolute path */
+                               pixbuf = gdk_pixbuf_new_from_file(icon, &error);
+                               if (error)
+                                       {
+                                       DEBUG_1("Couldn't load icon as absolute path %s: %s", icon, error->message);
+                                       g_error_free(error);
+                                       }
                                }
                        g_free(icon2);
                        }
index fe124fb..eb7df09 100644 (file)
@@ -73,6 +73,14 @@ gboolean pixbuf_scale_aspect(gint req_w, gint req_h, gint old_w, gint old_h, gin
 #define PIXBUF_INLINE_ICON_SELECT_INVERT       "icon_select_invert"
 #define PIXBUF_INLINE_ICON_SELECT_RECTANGLE    "icon_select_rectangle"
 #define PIXBUF_INLINE_ICON_FILE_FILTER "icon_file_filter"
+#define PIXBUF_INLINE_ICON_TRASH       "icon_trash"
+
+#define PIXBUF_INLINE_ICON_CW  "icon_rotate_clockwise"
+#define PIXBUF_INLINE_ICON_CCW "icon_rotate_counter_clockwise"
+#define PIXBUF_INLINE_ICON_180 "icon_rotate_180"
+#define PIXBUF_INLINE_ICON_MIRROR      "icon_mirror"
+#define PIXBUF_INLINE_ICON_FLIP        "icon_flip"
+#define PIXBUF_INLINE_ICON_ORIGINAL    "icon_original"
 
 GdkPixbuf *pixbuf_copy_rotate_90(GdkPixbuf *src, gboolean counter_clockwise);
 GdkPixbuf *pixbuf_copy_mirror(GdkPixbuf *src, gboolean mirror, gboolean flip);
index ed989c0..5376f08 100644 (file)
@@ -39,6 +39,7 @@
 #include "layout_config.h"
 #include "layout_util.h"
 #include "metadata.h"
+#include "osd.h"
 #include "pixbuf_util.h"
 #include "slideshow.h"
 #include "toolbar.h"
@@ -52,8 +53,6 @@
 #include "window.h"
 #include "zonedetect.h"
 
-#include <math.h>
-
 #ifdef HAVE_LCMS
 #ifdef HAVE_LCMS2
 #include <lcms2.h>
@@ -261,7 +260,8 @@ static void config_window_apply(void)
 
        options->file_ops.confirm_delete = c_options->file_ops.confirm_delete;
        options->file_ops.enable_delete_key = c_options->file_ops.enable_delete_key;
-       options->file_ops.safe_delete_enable = c_options->file_ops.safe_delete_enable;
+       options->file_ops.confirm_move_to_trash = c_options->file_ops.confirm_move_to_trash;
+       options->file_ops.use_system_trash = c_options->file_ops.use_system_trash;
        options->file_ops.safe_delete_folder_maxsize = c_options->file_ops.safe_delete_folder_maxsize;
        options->tools_restore_state = c_options->tools_restore_state;
        options->save_window_positions = c_options->save_window_positions;
@@ -2055,116 +2055,7 @@ static void config_tab_windows(GtkWidget *notebook)
                              options->fullscreen.disable_saver, &c_options->fullscreen.disable_saver);
 }
 
-/* overlay screen display tab */
-static const gchar *predefined_tags[][2] = {
-       {"%name%",                                                      N_("Name")},
-       {"%path:60%*",                                          N_("Path")},
-       {"%date%",                                                      N_("Date")},
-       {"%size%",                                                      N_("Size")},
-       {"%zoom%",                                                      N_("Zoom")},
-       {"%dimensions%",                                        N_("Dimensions")},
-       {"%collection%",                                        N_("Collection")},
-       {"%number%",                                            N_("Collection number")},
-       {"%total%",                                                     N_("Collection total")},
-       {"%file.ctime%",                                        N_("File ctime")},
-       {"%file.mode%",                                         N_("File mode")},
-       {"%file.owner%",                                        N_("File owner")},
-       {"%file.group%",                                        N_("File group")},
-       {"%file.link%",                                         N_("File link")},
-       {"%file.class%",                                        N_("File class")},
-       {"%formatted.DateTime%",                        N_("Image date")},
-       {"%formatted.DateTimeDigitized%",       N_("Date digitized")},
-       {"%formatted.ShutterSpeed%",            N_("ShutterSpeed")},
-       {"%formatted.Aperture%",                        N_("Aperture")},
-       {"%formatted.ExposureBias%",            N_("Exposure bias")},
-       {"%formatted.Resolution%",                      N_("Resolution")},
-       {"%formatted.Camera%",                          N_("Camera")},
-       {"%formatted.ShutterSpeed%",            N_("Shutter speed")},
-       {"%formatted.ISOSpeedRating%",          N_("ISO")},
-       {"%formatted.FocalLength%",                     N_("Focal length")},
-       {"%formatted.FocalLength35mmFilm%",     N_("Focal len. 35mm")},
-       {"%formatted.SubjectDistance%",         N_("Subject distance")},
-       {"%formatted.Flash%",                           N_("Flash")},
-       {"%formatted.ColorProfile%",            N_("Color profile")},
-       {"%formatted.GPSPosition%",                     N_("Lat, Long")},
-       {"%formatted.GPSAltitude%",                     N_("Altitude")},
-       {"%formatted.localtime%",                       N_("Local time")},
-       {"%formatted.timezone%",                        N_("Timezone")},
-       {"%formatted.countryname%",                     N_("Country name")},
-       {"%formatted.countrycode%",                     N_("Country code")},
-       {"%formatted.star_rating%",                     N_("Star rating")},
-       {NULL, NULL}};
-
-static GtkTargetEntry osd_drag_types[] = {
-       { "text/plain", GTK_TARGET_SAME_APP, TARGET_TEXT_PLAIN }
-};
-
-typedef struct _TagData TagData;
-struct _TagData
-{
-       gchar *key;
-       gchar *title;
-};
-
-static void tag_button_cb(GtkWidget *widget, gpointer data)
-{
-       GtkTextView *image_overlay_template_view = data;
-       GtkTextBuffer *buffer;
-       TagData *td;
-
-       buffer = gtk_text_view_get_buffer(image_overlay_template_view);
-       td = g_object_get_data(G_OBJECT(widget), "tag_data");
-       gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(buffer), td->key, -1);
-
-       gtk_widget_grab_focus(GTK_WIDGET(image_overlay_template_view));
-}
-
-static void osd_dnd_get_cb(GtkWidget *btn, GdkDragContext *context,
-                                                               GtkSelectionData *selection_data, guint info,
-                                                               guint time, gpointer data)
-{
-       TagData *td;
-       GtkTextView *image_overlay_template_view = data;
-
-       td = g_object_get_data(G_OBJECT(btn), "tag_data");
-       gtk_selection_data_set_text(selection_data, td->key, -1);
-
-       gtk_widget_grab_focus(GTK_WIDGET(image_overlay_template_view));
-}
-
-static void osd_btn_destroy_cb(GtkWidget *btn, GdkDragContext *context,
-                                                               GtkSelectionData *selection_data, guint info,
-                                                               guint time, gpointer data)
-{
-       TagData *td;
-
-       td = g_object_get_data(G_OBJECT(btn), "tag_data");
-       g_free(td->key);
-       g_free(td->title);
-}
-
-static void set_osd_button(GtkWidget *widget, const gchar *key, const gchar *title,
-                                                                               GtkWidget *image_overlay_template_view)
-{
-       GtkWidget *new_button;
-       TagData *td;
-
-       new_button = pref_button_new(widget, NULL, _(title), TRUE,
-                                                       G_CALLBACK(tag_button_cb), image_overlay_template_view);
-
-       td = g_new0(TagData, 1);
-       td->key = g_strdup(key);
-       td->title = g_strdup(title);
-
-       g_object_set_data(G_OBJECT(new_button), "tag_data", td);
-
-       gtk_drag_source_set(new_button, GDK_BUTTON1_MASK, osd_drag_types, 1, GDK_ACTION_COPY);
-       g_signal_connect(G_OBJECT(new_button), "drag_data_get",
-                                                       G_CALLBACK(osd_dnd_get_cb), image_overlay_template_view);
-       g_signal_connect(G_OBJECT(new_button), "destroy",
-                                                       G_CALLBACK(osd_btn_destroy_cb), new_button);
-}
-
+#define PRE_FORMATTED_COLUMNS 5
 static void config_tab_osd(GtkWidget *notebook)
 {
        GtkWidget *hbox;
@@ -2174,6 +2065,7 @@ static void config_tab_osd(GtkWidget *notebook)
        GtkWidget *button;
        GtkWidget *image_overlay_template_view;
        GtkWidget *scrolled;
+       GtkWidget *scrolled_pre_formatted;
        GtkTextBuffer *buffer;
        GtkWidget *label;
        GtkWidget *     subgroup;
@@ -2187,33 +2079,13 @@ static void config_tab_osd(GtkWidget *notebook)
 
        group = pref_group_new(vbox, FALSE, _("Overlay Screen Display"), GTK_ORIENTATION_VERTICAL);
 
-       hbox = gtk_hbox_new(FALSE, 0);
-
-       gtk_box_pack_start(GTK_BOX(group), hbox, FALSE, FALSE, 0);
-       gtk_widget_show(hbox);
-
-       pref_label_new(hbox, _("To include predefined tags in the template, click a button or drag-and-drop"));
-
        subgroup = pref_box_new(group, FALSE, GTK_ORIENTATION_VERTICAL, PREF_PAD_GAP);
-       hbox = gtk_hbox_new(FALSE, 0);
-       gtk_box_pack_start(GTK_BOX(subgroup), hbox, FALSE, FALSE, 0);
-       gtk_widget_show(hbox);
 
-       for (cols = 0; cols < 6; cols++)
-               {
-               vbox_buttons = gtk_vbox_new(FALSE, 0);
-               rows = 0;
-
-               gtk_box_pack_start(GTK_BOX(hbox), vbox_buttons, FALSE, FALSE, 0);
-
-               while (rows < 6 && predefined_tags[i][0])
-                       {
-                       set_osd_button(vbox_buttons, predefined_tags[i][0], predefined_tags[i][1], image_overlay_template_view);
-                       i = i + 1;
-                       rows++;
-                       }
-               gtk_widget_show(vbox_buttons);
-               }
+       scrolled_pre_formatted = osd_new(PRE_FORMATTED_COLUMNS, image_overlay_template_view);
+       gtk_widget_set_size_request(scrolled_pre_formatted, 200, 150);
+       gtk_box_pack_start(GTK_BOX(subgroup), scrolled_pre_formatted, FALSE, FALSE, 0);
+       gtk_widget_show(scrolled_pre_formatted);
+       gtk_widget_show(subgroup);
 
        pref_line(group, PREF_PAD_GAP);
 
@@ -3081,6 +2953,22 @@ static void config_tab_color(GtkWidget *notebook)
 }
 
 /* advanced entry tab */
+static void use_geeqie_trash_cb(GtkWidget *widget, gpointer data)
+{
+       if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
+               {
+               c_options->file_ops.use_system_trash = FALSE;
+               }
+}
+
+static void use_system_trash_cb(GtkWidget *widget, gpointer data)
+{
+       if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
+               {
+               c_options->file_ops.use_system_trash = TRUE;
+               }
+}
+
 static void config_tab_behavior(GtkWidget *notebook)
 {
        GtkWidget *hbox;
@@ -3099,13 +2987,15 @@ static void config_tab_behavior(GtkWidget *notebook)
 
        group = pref_group_new(vbox, FALSE, _("Delete"), GTK_ORIENTATION_VERTICAL);
 
-       pref_checkbox_new_int(group, _("Confirm file delete"),
+       pref_checkbox_new_int(group, _("Confirm permanent file delete"),
                              options->file_ops.confirm_delete, &c_options->file_ops.confirm_delete);
+       pref_checkbox_new_int(group, _("Confirm move file to Trash"),
+                             options->file_ops.confirm_move_to_trash, &c_options->file_ops.confirm_move_to_trash);
        pref_checkbox_new_int(group, _("Enable Delete key"),
                              options->file_ops.enable_delete_key, &c_options->file_ops.enable_delete_key);
 
-       ct_button = pref_checkbox_new_int(group, _("Safe delete"),
-                                         options->file_ops.safe_delete_enable, &c_options->file_ops.safe_delete_enable);
+       ct_button = pref_radiobutton_new(group, NULL, _("Use Geeqie trash location"),
+                                       !options->file_ops.use_system_trash, G_CALLBACK(use_geeqie_trash_cb),NULL);
 
        hbox = pref_box_new(group, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE);
        pref_checkbox_link_sensitivity(ct_button, hbox);
@@ -3133,8 +3023,12 @@ static void config_tab_behavior(GtkWidget *notebook)
        button = pref_button_new(NULL, GTK_STOCK_CLEAR, NULL, FALSE,
                                 G_CALLBACK(safe_delete_clear_cb), NULL);
        gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
+       pref_radiobutton_new(group, ct_button, _("Use system Trash bin"),
+                                       options->file_ops.use_system_trash, G_CALLBACK(use_system_trash_cb), NULL);
        gtk_widget_show(button);
 
+       pref_spacer(group, PREF_PAD_GROUP);
+
 
        group = pref_group_new(vbox, FALSE, _("Behavior"), GTK_ORIENTATION_VERTICAL);
 
@@ -3168,6 +3062,8 @@ static void config_tab_behavior(GtkWidget *notebook)
        table = pref_table_new(group, 2, 1, FALSE, FALSE);
        add_clipboard_selection_menu(table, 0, 0, _("Copy path clipboard selection:"), options->clipboard_selection, &c_options->clipboard_selection);
 
+       pref_spacer(group, PREF_PAD_GROUP);
+
        group = pref_group_new(vbox, FALSE, _("Navigation"), GTK_ORIENTATION_VERTICAL);
 
        pref_checkbox_new_int(group, _("Progressive keyboard scrolling"),
@@ -3185,6 +3081,8 @@ static void config_tab_behavior(GtkWidget *notebook)
 
 
 #ifdef DEBUG
+       pref_spacer(group, PREF_PAD_GROUP);
+
        group = pref_group_new(vbox, FALSE, _("Debugging"), GTK_ORIENTATION_VERTICAL);
 
        pref_spin_new_int(group, _("Debug level:"), NULL,
@@ -3419,7 +3317,7 @@ static void config_window_create(void)
        gtk_widget_show(win_vbox);
 
        notebook = gtk_notebook_new();
-       gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
+       gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_LEFT);
        gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook), TRUE);
        gtk_box_pack_start(GTK_BOX(win_vbox), notebook, TRUE, TRUE, 0);
 
index 8032ac3..516afa9 100644 (file)
@@ -24,6 +24,7 @@
 #include "exif.h"
 #include "filedata.h"
 #include "image-load.h"
+#include "osd.h"
 #include "pixbuf_util.h"
 #include "ui_misc.h"
 #include "ui_fileops.h"
 /* method to use when scaling down image data */
 #define PRINT_MAX_INTERP GDK_INTERP_HYPER
 
-typedef enum {
-       TEXT_INFO_FILENAME = 1 << 0,
-       TEXT_INFO_FILEDATE = 1 << 1,
-       TEXT_INFO_FILESIZE = 1 << 2,
-       TEXT_INFO_DIMENSIONS = 1 << 3,
-       TEXT_INFO_FILEPATH = 1 << 4
-} TextInfo;
-
 /* reverse order is important */
 typedef enum {
        FOOTER_2,
@@ -59,9 +52,10 @@ struct _PrintWindow
        GtkWidget *vbox;
        GList *source_selection;
 
-       TextInfo        text_fields;
-       gint             job_page;
+       gint job_page;
        GtkTextBuffer *page_text;
+       gchar *template_string;
+       GtkWidget *parent;
        ImageLoader     *job_loader;
 
        GList *print_pixbuf_queue;
@@ -127,63 +121,6 @@ static gboolean print_job_render_image(PrintWindow *pw)
        return TRUE;
 }
 
-static void print_text_field_set(PrintWindow *pw, TextInfo field, gboolean active)
-{
-       if (active)
-               {
-               pw->text_fields |= field;
-               }
-       else
-               {
-               pw->text_fields &= ~field;
-               }
-}
-
-static void print_text_cb_name(GtkWidget *widget, gpointer data)
-{
-       PrintWindow *pw = data;
-       gboolean active;
-
-       active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
-       print_text_field_set(pw, TEXT_INFO_FILENAME, active);
-}
-
-static void print_text_cb_path(GtkWidget *widget, gpointer data)
-{
-       PrintWindow *pw = data;
-       gboolean active;
-
-       active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
-       print_text_field_set(pw, TEXT_INFO_FILEPATH, active);
-}
-
-static void print_text_cb_date(GtkWidget *widget, gpointer data)
-{
-       PrintWindow *pw = data;
-       gboolean active;
-
-       active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
-       print_text_field_set(pw, TEXT_INFO_FILEDATE, active);
-}
-
-static void print_text_cb_size(GtkWidget *widget, gpointer data)
-{
-       PrintWindow *pw = data;
-       gboolean active;
-
-       active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
-       print_text_field_set(pw, TEXT_INFO_FILESIZE, active);
-}
-
-static void print_text_cb_dims(GtkWidget *widget, gpointer data)
-{
-       PrintWindow *pw = data;
-       gboolean active;
-
-       active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
-       print_text_field_set(pw, TEXT_INFO_DIMENSIONS, active);
-}
-
 static void print_set_font_cb(GtkWidget *widget, gpointer data)
 {
        gpointer option;
@@ -371,6 +308,32 @@ static void page_text_position_f2_cb(GtkWidget *widget, gpointer data)
                }
 }
 
+static void set_print_image_text_string(gchar **template_string, const gchar *value)
+{
+       g_assert(template_string);
+
+       g_free(*template_string);
+       *template_string = g_strdup(value);
+}
+
+static void image_text_template_view_changed_cb(GtkWidget *widget, gpointer data)
+{
+       GtkWidget *pTextView;
+       GtkTextBuffer *pTextBuffer;
+       GtkTextIter iStart;
+       GtkTextIter iEnd;
+
+       pTextView = GTK_WIDGET(data);
+
+       pTextBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pTextView));
+       gtk_text_buffer_get_start_iter(pTextBuffer, &iStart);
+       gtk_text_buffer_get_end_iter(pTextBuffer, &iEnd);
+
+       set_print_image_text_string(&options->printer.template_string,
+                                         gtk_text_buffer_get_text(pTextBuffer, &iStart, &iEnd, TRUE));
+}
+
+#define PRE_FORMATTED_COLUMNS 4
 static void print_text_menu(GtkWidget *box, PrintWindow *pw)
 {
        GtkWidget *group;
@@ -382,6 +345,10 @@ static void print_text_menu(GtkWidget *box, PrintWindow *pw)
        GtkWidget *page_text_button;
        GtkWidget *subgroup;
        GtkWidget *page_text_view;
+       GtkWidget *image_text_template_view;
+       GtkWidget *scrolled;
+       GtkWidget *scrolled_pre_formatted;
+       GtkTextBuffer *buffer;
 
        group = pref_group_new(box, FALSE, _("Image text"), GTK_ORIENTATION_VERTICAL);
 
@@ -411,16 +378,31 @@ static void print_text_menu(GtkWidget *box, PrintWindow *pw)
        gtk_widget_show(hbox);
        pw->image_group = (gtk_radio_button_get_group(GTK_RADIO_BUTTON(button1)));
 
-       pref_checkbox_new(subgroup, _("Name"), (pw->text_fields & TEXT_INFO_FILENAME),
-                         G_CALLBACK(print_text_cb_name), pw);
-       pref_checkbox_new(subgroup, _("Path"), (pw->text_fields & TEXT_INFO_FILEPATH),
-                         G_CALLBACK(print_text_cb_path), pw);
-       pref_checkbox_new(subgroup, _("Date"), (pw->text_fields & TEXT_INFO_FILEDATE),
-                         G_CALLBACK(print_text_cb_date), pw);
-       pref_checkbox_new(subgroup, _("Size"), (pw->text_fields & TEXT_INFO_FILESIZE),
-                         G_CALLBACK(print_text_cb_size), pw);
-       pref_checkbox_new(subgroup, _("Dimensions"), (pw->text_fields & TEXT_INFO_DIMENSIONS),
-                         G_CALLBACK(print_text_cb_dims), pw);
+       image_text_template_view = gtk_text_view_new();
+
+       scrolled_pre_formatted = osd_new(PRE_FORMATTED_COLUMNS, image_text_template_view);
+       gtk_box_pack_start(GTK_BOX(subgroup), scrolled_pre_formatted, FALSE, FALSE, 0);
+       gtk_widget_show(scrolled_pre_formatted);
+       gtk_widget_show(subgroup);
+
+       gtk_widget_set_tooltip_markup(image_text_template_view,
+                                       _("Extensive formatting options are shown in the Help file"));
+
+       scrolled = gtk_scrolled_window_new(NULL, NULL);
+       gtk_widget_set_size_request(scrolled, 200, 50);
+       gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
+       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
+                                                                       GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+       gtk_box_pack_start(GTK_BOX(subgroup), scrolled, TRUE, TRUE, 5);
+       gtk_widget_show(scrolled);
+
+       gtk_container_add(GTK_CONTAINER(scrolled), image_text_template_view);
+       gtk_widget_show(image_text_template_view);
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(image_text_template_view));
+       if (options->printer.template_string) gtk_text_buffer_set_text(buffer, options->printer.template_string, -1);
+       g_signal_connect(G_OBJECT(buffer), "changed",
+                        G_CALLBACK(image_text_template_view_changed_cb), image_text_template_view);
 
        hbox = pref_box_new(subgroup, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_BUTTON_GAP);
 
@@ -466,8 +448,6 @@ static void print_text_menu(GtkWidget *box, PrintWindow *pw)
        gtk_widget_show(hbox);
        pw->page_group = (gtk_radio_button_get_group(GTK_RADIO_BUTTON(button2)));
 
-       GtkWidget *scrolled;
-
        scrolled = gtk_scrolled_window_new(NULL, NULL);
        gtk_widget_set_size_request(scrolled, 50, 50);
        gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
@@ -517,6 +497,69 @@ static gboolean paginate_cb(GtkPrintOperation *operation,
                }
 }
 
+gchar *form_image_text(const gchar *template_string, FileData *fd, PrintWindow *pw, gint page_nr, gint total)
+{
+       const gchar *name;
+       gchar *text = NULL;
+       GHashTable *vars;
+       gchar *window_title;
+       gchar *delimiter;
+       gchar *collection_name;
+
+       if (!fd) return NULL;
+
+       name = fd->name;
+
+       vars = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
+
+       window_title = g_strdup(gtk_window_get_title(GTK_WINDOW(pw->parent)));
+       delimiter = g_strstr_len(window_title, -1, " - Collection - ");
+       if (delimiter)
+               {
+               collection_name = g_strndup(window_title, delimiter - window_title);
+               }
+       else
+               {
+               collection_name = NULL;
+               }
+       g_free(window_title);
+
+       if (collection_name)
+               {
+               osd_template_insert(vars, "collection", collection_name, OSDT_NONE);
+               }
+
+       osd_template_insert(vars, "number", g_strdup_printf("%d", page_nr + 1), OSDT_NO_DUP);
+       osd_template_insert(vars, "total", g_strdup_printf("%d", total), OSDT_NO_DUP);
+       osd_template_insert(vars, "name", (gchar *) name, OSDT_NONE);
+       osd_template_insert(vars, "date", fd ? ((gchar *) text_from_time(fd->date)) : "", OSDT_NONE);
+       osd_template_insert(vars, "size", fd ? (text_from_size_abrev(fd->size)) : g_strdup(""), OSDT_FREE);
+
+       if (fd->pixbuf)
+               {
+               gint w, h;
+               w = gdk_pixbuf_get_width(fd->pixbuf);
+               h = gdk_pixbuf_get_height(fd->pixbuf);
+
+               osd_template_insert(vars, "width", g_strdup_printf("%d", w), OSDT_NO_DUP);
+               osd_template_insert(vars, "height", g_strdup_printf("%d", h), OSDT_NO_DUP);
+               osd_template_insert(vars, "res", g_strdup_printf("%d × %d", w, h), OSDT_FREE);
+               }
+       else
+               {
+               osd_template_insert(vars, "width", NULL, OSDT_NONE);
+               osd_template_insert(vars, "height", NULL, OSDT_NONE);
+               osd_template_insert(vars, "res", NULL, OSDT_NONE);
+               }
+
+       text = image_osd_mkinfo(template_string, fd, vars);
+       g_hash_table_destroy(vars);
+
+       g_free(collection_name);
+
+       return text;
+}
+
 static void draw_page(GtkPrintOperation *operation, GtkPrintContext *context,
                                                                        gint page_nr, gpointer data)
 {
@@ -545,8 +588,10 @@ static void draw_page(GtkPrintOperation *operation, GtkPrintContext *context,
        gdouble pango_page_height;
        GtkTextIter start, end;
        gchar *tmp;
+       gint total;
 
        fd = g_list_nth_data(pw->source_selection, page_nr);
+       total = g_list_length(pw->source_selection);
 
        pixbuf = g_list_nth_data(pw->print_pixbuf_queue, page_nr);
        if (fd->exif_orientation != EXIF_ORIENTATION_TOP_LEFT)
@@ -560,36 +605,7 @@ static void draw_page(GtkPrintOperation *operation, GtkPrintContext *context,
 
        if (options->printer.show_image_text)
                {
-               if (pw->text_fields & TEXT_INFO_FILENAME)
-                       {
-                       image_text = g_string_append(image_text, g_strdup(fd->name));
-                       image_text = g_string_append(image_text, "\n");
-                       }
-               if (pw->text_fields & TEXT_INFO_FILEDATE)
-                       {
-                       image_text = g_string_append(image_text, g_strdup(text_from_time(fd->date)));
-                       image_text = g_string_append(image_text, "\n");
-                       }
-               if (pw->text_fields & TEXT_INFO_FILESIZE)
-                       {
-                       image_text = g_string_append(image_text, g_strdup(text_from_size(fd->size)));
-                       image_text = g_string_append(image_text, "\n");
-                       }
-               if (pw->text_fields & TEXT_INFO_DIMENSIONS)
-                       {
-                       g_string_append_printf(image_text, "%d x %d", (gint)pixbuf_image_width,
-                                                                                               (gint)pixbuf_image_height);
-                       image_text = g_string_append(image_text, "\n");
-                       }
-               if (pw->text_fields & TEXT_INFO_FILEPATH)
-                       {
-                       image_text = g_string_append(image_text, g_strdup(fd->path));
-                       image_text = g_string_append(image_text, "\n");
-                       }
-               if (image_text->len > 0)
-                       {
-                       image_text = g_string_truncate(image_text, image_text->len - 1);
-                       }
+               image_text = g_string_append(image_text, form_image_text(options->printer.template_string, fd, pw, page_nr, total));
                }
 
        if (options->printer.show_page_text)
@@ -789,8 +805,6 @@ static void print_pref_store(PrintWindow *pw)
        gchar *tmp;
        GtkTextIter start, end;
 
-       options->printer.text_fields = pw->text_fields;
-
        gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(pw->page_text), &start, &end);
        tmp = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(pw->page_text), &start, &end, FALSE);
        g_free(options->printer.page_text);
@@ -867,13 +881,14 @@ void print_window_new(FileData *fd, GList *selection, GList *list, GtkWidget *pa
        pw = g_new0(PrintWindow, 1);
 
        pw->source_selection = file_data_process_groups_in_selection(selection, FALSE, NULL);
-       pw->text_fields = options->printer.text_fields;
 
        if (print_layout_page_count(pw) == 0)
                {
                return;
                }
 
+       pw->parent = parent;
+
        vbox = gtk_vbox_new(FALSE, 0);
        gtk_container_set_border_width(GTK_CONTAINER(vbox), PREF_PAD_BORDER);
        gtk_widget_show(vbox);
index 41a1977..99794d5 100644 (file)
@@ -355,7 +355,9 @@ static void write_global_attributes(GString *outstr, gint indent)
        /* File operations Options */
        WRITE_NL(); WRITE_BOOL(*options, file_ops.enable_in_place_rename);
        WRITE_NL(); WRITE_BOOL(*options, file_ops.confirm_delete);
+       WRITE_NL(); WRITE_BOOL(*options, file_ops.confirm_move_to_trash);
        WRITE_NL(); WRITE_BOOL(*options, file_ops.enable_delete_key);
+       WRITE_NL(); WRITE_BOOL(*options, file_ops.use_system_trash);
        WRITE_NL(); WRITE_BOOL(*options, file_ops.safe_delete_enable);
        WRITE_NL(); WRITE_CHAR(*options, file_ops.safe_delete_path);
        WRITE_NL(); WRITE_INT(*options, file_ops.safe_delete_folder_maxsize);
@@ -495,15 +497,18 @@ static void write_global_attributes(GString *outstr, gint indent)
        WRITE_NL(); WRITE_CHAR(*options, cp_mv_rn.auto_end);
        WRITE_NL(); WRITE_INT(*options, cp_mv_rn.formatted_start);
 
-       /* printer */
+       WRITE_SEPARATOR();
+
+       /* Print Text */
+       WRITE_NL(); WRITE_CHAR(*options, printer.template_string);
        WRITE_NL(); WRITE_CHAR(*options, printer.image_font);
        WRITE_NL(); WRITE_CHAR(*options, printer.page_font);
        WRITE_NL(); WRITE_CHAR(*options, printer.page_text);
-       WRITE_NL(); WRITE_INT(*options, printer.text_fields);
        WRITE_NL(); WRITE_INT(*options, printer.image_text_position);
        WRITE_NL(); WRITE_INT(*options, printer.page_text_position);
        WRITE_NL(); WRITE_BOOL(*options, printer.show_image_text);
        WRITE_NL(); WRITE_BOOL(*options, printer.show_page_text);
+       WRITE_SEPARATOR();
 }
 
 static void write_color_profile(GString *outstr, gint indent)
@@ -551,6 +556,38 @@ static void write_marks_tooltips(GString *outstr, gint indent)
        WRITE_NL(); WRITE_STRING("</marks_tooltips>");
 }
 
+static void write_disabled_plugins(GString *outstr, gint indent)
+{
+       GtkTreeIter iter;
+       gboolean valid;
+       gboolean disabled;
+       gchar *desktop_path;
+
+       WRITE_NL(); WRITE_STRING("<disabled_plugins>");
+       indent++;
+
+       if (desktop_file_list)
+               {
+               valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(desktop_file_list), &iter);
+               while (valid)
+                       {
+                       gtk_tree_model_get(GTK_TREE_MODEL(desktop_file_list), &iter, DESKTOP_FILE_COLUMN_DISABLED, &disabled, -1);
+                       gtk_tree_model_get(GTK_TREE_MODEL(desktop_file_list), &iter, DESKTOP_FILE_COLUMN_PATH, &desktop_path, -1);
+
+                       if (disabled)
+                               {
+                               WRITE_NL();
+                               write_char_option(outstr, indent, "<plugin path", desktop_path);
+                               WRITE_STRING("/>");
+                               }
+                       g_free(desktop_path);
+                       valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(desktop_file_list), &iter);
+                       }
+               }
+
+       indent--;
+       WRITE_NL(); WRITE_STRING("</disabled_plugins>");
+}
 
 /*
  *-----------------------------------------------------------------------------
@@ -607,6 +644,9 @@ gboolean save_config_to_file(const gchar *utf8_path, ConfOptions *options)
        WRITE_SEPARATOR();
        write_marks_tooltips(outstr, indent);
 
+       WRITE_SEPARATOR();
+       write_disabled_plugins(outstr, indent);
+
        WRITE_SEPARATOR();
        keyword_tree_write_config(outstr, indent);
        indent--;
@@ -751,7 +791,9 @@ static gboolean load_global_params(const gchar **attribute_names, const gchar **
                /* File operations *options */
                if (READ_BOOL(*options, file_ops.enable_in_place_rename)) continue;
                if (READ_BOOL(*options, file_ops.confirm_delete)) continue;
+               if (READ_BOOL(*options, file_ops.confirm_move_to_trash)) continue;
                if (READ_BOOL(*options, file_ops.enable_delete_key)) continue;
+               if (READ_BOOL(*options, file_ops.use_system_trash)) continue;
                if (READ_BOOL(*options, file_ops.safe_delete_enable)) continue;
                if (READ_CHAR(*options, file_ops.safe_delete_path)) continue;
                if (READ_INT(*options, file_ops.safe_delete_folder_maxsize)) continue;
@@ -839,11 +881,11 @@ static gboolean load_global_params(const gchar **attribute_names, const gchar **
                if (READ_CHAR(*options, cp_mv_rn.auto_end)) continue;
                if (READ_INT(*options, cp_mv_rn.formatted_start)) continue;
 
-               /* printer */
+               /* Printer text */
+               if (READ_CHAR(*options, printer.template_string)) continue;
                if (READ_CHAR(*options, printer.image_font)) continue;
                if (READ_CHAR(*options, printer.page_font)) continue;
                if (READ_CHAR(*options, printer.page_text)) continue;
-               if (READ_INT(*options, printer.text_fields)) continue;
                if (READ_INT(*options, printer.image_text_position)) continue;
                if (READ_INT(*options, printer.page_text_position)) continue;
                if (READ_BOOL(*options, printer.show_image_text)) continue;
@@ -914,6 +956,30 @@ static void options_load_marks_tooltips(GQParserData *parser_data, GMarkupParseC
 
 }
 
+static void options_load_disabled_plugins(GQParserData *parser_data, GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer data, GError **error)
+{
+       gint i = GPOINTER_TO_INT(data);
+       struct {
+               gchar *path;
+       } tmp;
+
+       while (*attribute_names)
+               {
+               const gchar *option = *attribute_names++;
+               const gchar *value = *attribute_values++;
+               tmp.path = NULL;
+               if (READ_CHAR_FULL("path", tmp.path))
+                       {
+                       options->disabled_plugins = g_list_append(options->disabled_plugins, g_strdup(tmp.path));
+                       continue;
+                       }
+
+               log_printf("unknown attribute %s = %s\n", option, value);
+               }
+       i++;
+       options_parse_func_set_data(parser_data, GINT_TO_POINTER(i));
+}
+
 /*
  *-----------------------------------------------------------------------------
  * xml file structure (private)
@@ -973,6 +1039,20 @@ static void options_parse_marks_tooltips(GQParserData *parser_data, GMarkupParse
                }
 }
 
+static void options_parse_disabled_plugins(GQParserData *parser_data, GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer data, GError **error)
+{
+       if (g_ascii_strcasecmp(element_name, "plugin") == 0)
+               {
+               options_load_disabled_plugins(parser_data, context, element_name, attribute_names, attribute_values, data, error);
+               options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL);
+               }
+       else
+               {
+               log_printf("unexpected in <profile>: <%s>\n", element_name);
+               options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL);
+               }
+}
+
 static void options_parse_filter(GQParserData *parser_data, GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer data, GError **error)
 {
        if (g_ascii_strcasecmp(element_name, "file_type") == 0)
@@ -1053,6 +1133,11 @@ static void options_parse_global(GQParserData *parser_data, GMarkupParseContext
                if (!keyword_tree) keyword_tree_new();
                options_parse_func_push(parser_data, options_parse_keyword_tree, NULL, NULL);
                }
+       else if (g_ascii_strcasecmp(element_name, "disabled_plugins") == 0)
+               {
+               options_load_disabled_plugins(parser_data, context, element_name, attribute_names, attribute_values, data, error);
+               options_parse_func_push(parser_data, options_parse_disabled_plugins, NULL, NULL);
+               }
        else
                {
                log_printf("unexpected in <global>: <%s>\n", element_name);
index 58d4ec3..c5ecfdc 100644 (file)
@@ -24,7 +24,9 @@
 
 #include "cache_maint.h"
 #include "collect.h"
+#include "collect-io.h"
 #include "filedata.h"
+#include "filefilter.h"
 #include "image.h"
 #include "img-view.h"
 #include "layout.h"
@@ -71,6 +73,38 @@ struct _RemoteData {
        CollectionData *command_collection;
 };
 
+/* Remote commands from main.c are prepended with the current dir the remote
+ * command was made from. Some remote commands require this. The
+ * value is stored here
+ */
+static gchar *pwd = NULL;
+
+/**
+ * @brief Ensures file path is absolute.
+ * @param[in] filename Filepath, absolute or relative to calling directory
+ * @returns absolute path
+ * 
+ * If first character of input filepath is not the directory
+ * separator, assume it as a relative path and prepend
+ * the directory the remote command was initiated from
+ * 
+ * Return value must be freed with g_free()
+ */
+static gchar *set_pwd(gchar *filename)
+{
+       gchar *temp;
+
+       if (strncmp(filename, G_DIR_SEPARATOR_S, 1) != 0)
+               {
+               temp = g_build_filename(pwd, filename, NULL);
+               }
+       else
+               {
+               temp = g_strdup(filename);
+               }
+
+       return temp;
+}
 
 static gboolean remote_server_client_cb(GIOChannel *source, GIOCondition condition, gpointer data)
 {
@@ -612,7 +646,10 @@ static void gr_quit(const gchar *text, GIOChannel *channel, gpointer data)
 
 static void gr_file_load_no_raise(const gchar *text, GIOChannel *channel, gpointer data)
 {
-       gchar *filename = expand_tilde(text);
+       gchar *filename;
+       gchar *tilde_filename = expand_tilde(text);
+
+       filename = set_pwd(tilde_filename);
 
        if (isfile(filename))
                {
@@ -636,6 +673,7 @@ static void gr_file_load_no_raise(const gchar *text, GIOChannel *channel, gpoint
                }
 
        g_free(filename);
+       g_free(tilde_filename);
 }
 
 static void gr_file_load(const gchar *text, GIOChannel *channel, gpointer data)
@@ -718,14 +756,202 @@ static void gr_rectangle(const gchar *text, GIOChannel *channel, gpointer data)
                }
 }
 
+static void gr_render_intent(const gchar *text, GIOChannel *channel, gpointer data)
+{
+       gchar *render_intent;
+
+       switch (options->color_profile.render_intent)
+               {
+               case 0:
+                       render_intent = g_strdup("Perceptual");
+                       break;
+               case 1:
+                       render_intent = g_strdup("Relative Colorimetric");
+                       break;
+               case 2:
+                       render_intent = g_strdup("Saturation");
+                       break;
+               case 3:
+                       render_intent = g_strdup("Absolute Colorimetric");
+                       break;
+               default:
+                       render_intent = g_strdup("none");
+                       break;
+               }
+
+       g_io_channel_write_chars(channel, render_intent, -1, NULL, NULL);
+       g_io_channel_write_chars(channel, "\n", -1, NULL, NULL);
+
+       g_free(render_intent);
+}
+
+static void get_filelist(const gchar *text, GIOChannel *channel, gboolean recurse)
+{
+       GList *list = NULL;
+       FileFormatClass class;
+       FileData *dir_fd;
+       FileData *fd;
+       GString *out_string = g_string_new(NULL);
+       GList *work;
+
+       if (strcmp(text, "") == 0)
+               {
+               if (layout_valid(&lw_id))
+                       {
+                       dir_fd = file_data_new_dir(lw_id->dir_fd->path);
+                       }
+               else
+                       {
+                       return;
+                       }
+               }
+       else
+               {
+               if (isdir(text))
+                       {
+                       dir_fd = file_data_new_dir(text);
+                       }
+               else
+                       {
+                       return;
+                       }
+               }
+
+       if (recurse)
+               {
+               list = filelist_recursive(dir_fd);
+               }
+       else
+               {
+               filelist_read(dir_fd, &list, NULL);
+               }
+
+       work = list;
+       while (work)
+               {
+               fd = work->data;
+               g_string_append_printf(out_string, "%s", fd->path);
+               class = filter_file_get_class(fd->path);
+
+               switch (class)
+                       {
+                       case FORMAT_CLASS_IMAGE:
+                               out_string = g_string_append(out_string, "    Class: Image");
+                               break;
+                       case FORMAT_CLASS_RAWIMAGE:
+                               out_string = g_string_append(out_string, "    Class: RAW image");
+                               break;
+                       case FORMAT_CLASS_META:
+                               out_string = g_string_append(out_string, "    Class: Metadata");
+                               break;
+                       case FORMAT_CLASS_VIDEO:
+                               out_string = g_string_append(out_string, "    Class: Video");
+                               break;
+                       case FORMAT_CLASS_COLLECTION:
+                               out_string = g_string_append(out_string, "    Class: Collection");
+                               break;
+                       case FORMAT_CLASS_PDF:
+                               out_string = g_string_append(out_string, "    Class: PDF");
+                               break;
+                       case FORMAT_CLASS_UNKNOWN:
+                               out_string = g_string_append(out_string, "    Class: Unknown");
+                               break;
+                       default:
+                               out_string = g_string_append(out_string, "    Class: Unknown");
+                               break;
+                       }
+               out_string = g_string_append(out_string, "\n");
+               work = work->next;
+               }
+
+       g_io_channel_write_chars(channel, out_string->str, -1, NULL, NULL);
+       g_io_channel_write_chars(channel, "\n", -1, NULL, NULL);
+
+       g_string_free(out_string, TRUE);
+       filelist_free(list);
+       file_data_unref(dir_fd);
+}
+
+static void gr_collection(const gchar *text, GIOChannel *channel, gpointer data)
+{
+       GString *contents = g_string_new(NULL);
+
+       if (is_collection(text))
+               {
+               collection_contents(text, &contents);
+               }
+       else
+               {
+               return;
+               }
+
+       g_io_channel_write_chars(channel, contents->str, -1, NULL, NULL);
+       g_io_channel_write_chars(channel, "\n", -1, NULL, NULL);
+
+       g_string_free(contents, TRUE);
+}
+
+static void gr_collection_list(const gchar *text, GIOChannel *channel, gpointer data)
+{
+
+       GList *collection_list = NULL;
+       GList *work;
+       GString *out_string = g_string_new(NULL);
+
+       collect_manager_list(&collection_list, NULL, NULL);
+
+       work = collection_list;
+       while (work)
+               {
+               const gchar *collection_name = work->data;
+               out_string = g_string_append(out_string, g_strdup(collection_name));
+               out_string = g_string_append(out_string, "\n");
+
+               work = work->next;
+               }
+
+       g_io_channel_write_chars(channel, out_string->str, -1, NULL, NULL);
+       g_io_channel_write_chars(channel, "\n", -1, NULL, NULL);
+
+       string_list_free(collection_list);
+       g_string_free(out_string, TRUE);
+}
+
+
+static void gr_filelist(const gchar *text, GIOChannel *channel, gpointer data)
+{
+       get_filelist(text, channel, FALSE);
+}
+
+static void gr_filelist_recurse(const gchar *text, GIOChannel *channel, gpointer data)
+{
+       get_filelist(text, channel, TRUE);
+}
+
 static void gr_file_tell(const gchar *text, GIOChannel *channel, gpointer data)
 {
+       gchar *out_string;
+       gchar *collection_name = NULL;
+
        if (!layout_valid(&lw_id)) return;
 
        if (image_get_path(lw_id->image))
                {
-               g_io_channel_write_chars(channel, image_get_path(lw_id->image), -1, NULL, NULL);
+               if (lw_id->image->collection && lw_id->image->collection->name)
+                       {
+                       collection_name = remove_extension_from_path(lw_id->image->collection->name);
+                       out_string = g_strconcat(image_get_path(lw_id->image), "    Collection: ", collection_name, NULL);
+                       }
+               else
+                       {
+                       out_string = g_strconcat(image_get_path(lw_id->image), NULL);
+                       }
+
+               g_io_channel_write_chars(channel, out_string, -1, NULL, NULL);
                g_io_channel_write_chars(channel, "\n", -1, NULL, NULL);
+
+               g_free(collection_name);
+               g_free(out_string);
                }
 }
 
@@ -784,10 +1010,14 @@ static void gr_get_destination(const gchar *text, GIOChannel *channel, gpointer
 
 static void gr_file_view(const gchar *text, GIOChannel *channel, gpointer data)
 {
-       gchar *filename = expand_tilde(text);
+       gchar *filename;
+       gchar *tilde_filename = expand_tilde(text);
+
+       filename = set_pwd(tilde_filename);
 
        view_window_new(file_data_new_group(filename));
        g_free(filename);
+       g_free(tilde_filename);
 }
 
 static void gr_list_clear(const gchar *text, GIOChannel *channel, gpointer data)
@@ -841,6 +1071,14 @@ static void gr_raise(const gchar *text, GIOChannel *channel, gpointer data)
                }
 }
 
+static void gr_pwd(const gchar *text, GIOChannel *channel, gpointer data)
+{
+       LayoutWindow *lw = NULL;
+
+       g_free(pwd);
+       pwd = g_strdup(text);
+}
+
 #ifdef HAVE_LUA
 static void gr_lua(const gchar *text, GIOChannel *channel, gpointer data)
 {
@@ -906,14 +1144,23 @@ static RemoteCommandEntry remote_commands[] = {
        { NULL, "--get-sidecars:",      gr_get_sidecars,        TRUE,  FALSE, N_("<FILE>"), N_("get list of sidecars of FILE") },
        { NULL, "--get-destination:",   gr_get_destination,     TRUE,  FALSE, N_("<FILE>"), N_("get destination path of FILE") },
        { NULL, "file:",                gr_file_load,           TRUE,  FALSE, N_("<FILE>"), N_("open FILE, bring Geeqie window to the top") },
+       { NULL, "--file:",              gr_file_load,           TRUE,  FALSE, N_("<FILE>"), N_("open FILE, bring Geeqie window to the top") },
        { NULL, "File:",                gr_file_load_no_raise,  TRUE,  FALSE, N_("<FILE>"), N_("open FILE, do not bring Geeqie window to the top") },
-       { NULL, "--tell",               gr_file_tell,           FALSE, FALSE, NULL, N_("print filename of current image") },
+       { NULL, "--File:",              gr_file_load_no_raise,  TRUE,  FALSE, N_("<FILE>"), N_("open FILE, do not bring Geeqie window to the top") },
+       { NULL, "--tell",               gr_file_tell,           FALSE, FALSE, NULL, N_("print filename [and Collection] of current image") },
        { NULL, "--pixel-info",         gr_pixel_info,          FALSE, FALSE, NULL, N_("print pixel info of mouse pointer on current image") },
        { NULL, "--get-rectangle",      gr_rectangle,           FALSE, FALSE, NULL, N_("get rectangle co-ordinates") },
+       { NULL, "--get-render-intent",  gr_render_intent,       FALSE, FALSE, NULL, N_("get render intent") },
+       { NULL, "--get-filelist:",      gr_filelist,            TRUE,  FALSE, N_("[<FOLDER>]"), N_("get list of files and class") },
+       { NULL, "--get-filelist-recurse:", gr_filelist_recurse, TRUE,  FALSE, N_("[<FOLDER>]"), N_("get list of files and class recursive") },
+       { NULL, "--get-collection:",    gr_collection,          TRUE,  FALSE, N_("<COLLECTION>"), N_("get collection content") },
+       { NULL, "--get-collection-list", gr_collection_list,    FALSE, FALSE, NULL, N_("get collection list") },
        { NULL, "view:",                gr_file_view,           TRUE,  FALSE, N_("<FILE>"), N_("open FILE in new window") },
+       { NULL, "--view:",              gr_file_view,           TRUE,  FALSE, N_("<FILE>"), N_("open FILE in new window") },
        { NULL, "--list-clear",         gr_list_clear,          FALSE, FALSE, NULL, N_("clear command line collection list") },
        { NULL, "--list-add:",          gr_list_add,            TRUE,  FALSE, N_("<FILE>"), N_("add FILE to command line collection list") },
        { NULL, "raise",                gr_raise,               FALSE, FALSE, NULL, N_("bring the Geeqie window to the top") },
+       { NULL, "--raise",              gr_raise,               FALSE, FALSE, NULL, N_("bring the Geeqie window to the top") },
        { NULL, "--id:",                gr_lw_id,               TRUE, FALSE, N_("<ID>"), N_("window id for following commands") },
        { NULL, "--new-window",         gr_new_window,          FALSE, FALSE, NULL, N_("new window") },
        { NULL, "--close-window",       gr_close_window,        FALSE, FALSE, NULL, N_("close window") },
@@ -927,6 +1174,7 @@ static RemoteCommandEntry remote_commands[] = {
 #ifdef HAVE_LUA
        { NULL, "--lua:",               gr_lua,                 TRUE, FALSE, N_("<FILE>,<lua script>"), N_("run lua script on FILE") },
 #endif
+       { NULL, "--PWD:",               gr_pwd,                 TRUE, FALSE, N_("<PWD>"), N_("for internal use only") },
        { NULL, NULL, NULL, FALSE, FALSE, NULL, NULL }
 };
 
index 662dc5a..d4f084d 100644 (file)
@@ -37,6 +37,7 @@
 #include "menu.h"
 #include "metadata.h"
 #include "misc.h"
+#include "pixbuf_util.h"
 #include "print.h"
 #include "thumb.h"
 #include "ui_bookmark.h"
@@ -1015,6 +1016,15 @@ static void sr_menu_delete_cb(GtkWidget *widget, gpointer data)
 {
        SearchData *sd = data;
 
+       options->file_ops.safe_delete_enable = FALSE;
+       file_util_delete(NULL, search_result_selection_list(sd), sd->window);
+}
+
+static void sr_menu_move_to_trash_cb(GtkWidget *widget, gpointer data)
+{
+       SearchData *sd = data;
+
+       options->file_ops.safe_delete_enable = TRUE;
        file_util_delete(NULL, search_result_selection_list(sd), sd->window);
 }
 
@@ -1128,13 +1138,16 @@ static GtkWidget *search_result_menu(SearchData *sd, gboolean on_row, gboolean e
                                G_CALLBACK(sr_menu_copy_path_cb), sd);
        menu_item_add_sensitive(menu, _("_Copy path unquoted"), on_row,
                                G_CALLBACK(sr_menu_copy_path_unquoted_cb), sd);
-       menu_item_add_stock_sensitive(menu, _("_Delete..."), GTK_STOCK_DELETE, on_row,
-                                     G_CALLBACK(sr_menu_delete_cb), sd);
+
        menu_item_add_divider(menu);
-       menu_item_add_stock_sensitive(menu, _("Rem_ove"), GTK_STOCK_REMOVE, on_row,
-                                     G_CALLBACK(sr_menu_remove_cb), sd);
-       menu_item_add_stock_sensitive(menu, _("C_lear"), GTK_STOCK_CLEAR, !empty,
-                                     G_CALLBACK(sr_menu_clear_cb), sd);
+       menu_item_add_stock_sensitive(menu,
+                               options->file_ops.confirm_move_to_trash ? _("Move to Trash...") :
+                                       _("Move to Trash"), PIXBUF_INLINE_ICON_TRASH, on_row,
+                               G_CALLBACK(sr_menu_move_to_trash_cb), sd);
+       menu_item_add_stock_sensitive(menu,
+                               options->file_ops.confirm_delete ? _("_Delete...") :
+                                       _("_Delete"), GTK_STOCK_DELETE, on_row,
+                               G_CALLBACK(sr_menu_delete_cb), sd);
 
        return menu;
 }
@@ -1345,6 +1358,7 @@ static gboolean search_result_keypress_cb(GtkWidget *widget, GdkEventKey *event,
                                file_util_rename(NULL, search_result_selection_list(sd), widget);
                                break;
                        case 'D': case 'd':
+                               options->file_ops.safe_delete_enable = TRUE;
                                file_util_delete(NULL, search_result_selection_list(sd), widget);
                                break;
                        case 'A': case 'a':
index 008fafe..7325f65 100644 (file)
@@ -100,6 +100,12 @@ static const UseableToolbarItems useable_toolbar_items[] = {
        {"Preferences", N_("Preferences"), GTK_STOCK_PREFERENCES},
        {"LayoutConfig",        N_("Configure this window"), GTK_STOCK_PREFERENCES},
        {"Maintenance", N_("Cache maintenance"), PIXBUF_INLINE_ICON_MAINTENANCE},
+       {"RotateCW",    N_("Rotate clockwise"), PIXBUF_INLINE_ICON_CW},
+       {"RotateCCW",   N_("Rotate counterclockwise"), PIXBUF_INLINE_ICON_CCW},
+       {"Rotate180",   N_("Rotate 180"), PIXBUF_INLINE_ICON_180},
+       {"Mirror",      N_("Mirror"), PIXBUF_INLINE_ICON_MIRROR},
+       {"Flip",        N_("Flip"), PIXBUF_INLINE_ICON_FLIP},
+       {"AlterNone",   N_("Original state"), PIXBUF_INLINE_ICON_ORIGINAL},
        {"ZoomIn",      N_("Zoom in"), GTK_STOCK_ZOOM_IN},
        {"ZoomOut",     N_("Zoom out"), GTK_STOCK_ZOOM_OUT},
        {"Zoom100",     N_("Zoom 1:1"), GTK_STOCK_ZOOM_100},
index 2665df5..b6a8343 100644 (file)
@@ -118,11 +118,6 @@ static gchar *file_util_safe_dest(const gchar *path)
        return dest;
 }
 
-static void file_util_safe_del_toggle_cb(GtkWidget *button, gpointer data)
-{
-       options->file_ops.safe_delete_enable = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
-}
-
 static void file_util_safe_del_close_cb(GtkWidget *dialog, gpointer data)
 {
        GenericDialog **gd = data;
@@ -138,55 +133,55 @@ gboolean file_util_safe_unlink(const gchar *path)
 
        if (!isfile(path)) return FALSE;
 
-       if (!isdir(options->file_ops.safe_delete_path))
+       if (!options->file_ops.use_system_trash)
                {
-               DEBUG_1("creating trash: %s", options->file_ops.safe_delete_path);
-               if (!options->file_ops.safe_delete_path || !mkdir_utf8(options->file_ops.safe_delete_path, 0755))
+               if (!isdir(options->file_ops.safe_delete_path))
                        {
-                       result = _("Could not create folder");
-                       success = FALSE;
+                       DEBUG_1("creating trash: %s", options->file_ops.safe_delete_path);
+                       if (!options->file_ops.safe_delete_path || !mkdir_utf8(options->file_ops.safe_delete_path, 0755))
+                               {
+                               result = _("Could not create folder");
+                               success = FALSE;
+                               }
                        }
-               }
 
-       if (success)
-               {
-               gchar *dest;
-
-               dest = file_util_safe_dest(path);
-               if (dest)
-                       {
-                       DEBUG_1("safe deleting %s to %s", path, dest);
-                       success = move_file(path, dest);
-                       }
-               else
+               if (success)
                        {
-                       success = FALSE;
+                       gchar *dest;
+
+                       dest = file_util_safe_dest(path);
+                       if (dest)
+                               {
+                               DEBUG_1("safe deleting %s to %s", path, dest);
+                               success = move_file(path, dest);
+                               }
+                       else
+                               {
+                               success = FALSE;
+                               }
+
+                       if (!success && !access_file(path, W_OK))
+                               {
+                               result = _("Permission denied");
+                               }
+                       g_free(dest);
                        }
 
-               if (!success && !access_file(path, W_OK))
+               if (result && !gd)
                        {
-                       result = _("Permission denied");
+                       GtkWidget *button;
+                       gchar *buf;
+
+                       buf = g_strdup_printf(_("Unable to access or create the trash folder.\n\"%s\""), options->file_ops.safe_delete_path);
+                       gd = file_util_warning_dialog(result, buf, GTK_STOCK_DIALOG_WARNING, NULL);
+                       g_free(buf);
                        }
-               g_free(dest);
                }
-
-       if (result && !gd)
+       else
                {
-               GtkWidget *button;
-               gchar *buf;
-
-               buf = g_strdup_printf(_("Unable to access or create the trash folder.\n\"%s\""), options->file_ops.safe_delete_path);
-               gd = file_util_warning_dialog(result, buf, GTK_STOCK_DIALOG_WARNING, NULL);
-               g_free(buf);
-
-               button = gtk_check_button_new_with_label(_("Turn off safe delete"));
-               g_signal_connect(G_OBJECT(button), "toggled",
-                                G_CALLBACK(file_util_safe_del_toggle_cb), NULL);
-               gtk_box_pack_start(GTK_BOX(gd->vbox), button, FALSE, FALSE, 0);
-               gtk_widget_show(button);
-
-               g_signal_connect(G_OBJECT(gd->dialog), "destroy",
-                                G_CALLBACK(file_util_safe_del_close_cb), &gd);
+               GFile *tmp = g_file_new_for_path (path);
+               g_file_trash(tmp, FALSE, NULL);
+               g_object_unref(tmp);
                }
 
        return success;
@@ -194,7 +189,7 @@ gboolean file_util_safe_unlink(const gchar *path)
 
 gchar *file_util_safe_delete_status(void)
 {
-       gchar *buf;
+       gchar *buf = NULL;
 
        if (is_valid_editor_command(CMD_DELETE))
                {
@@ -204,18 +199,21 @@ gchar *file_util_safe_delete_status(void)
                {
                if (options->file_ops.safe_delete_enable)
                        {
-                       gchar *buf2;
-                       if (options->file_ops.safe_delete_folder_maxsize > 0)
-                               buf2 = g_strdup_printf(_(" (max. %d MB)"), options->file_ops.safe_delete_folder_maxsize);
+                       if (!options->file_ops.use_system_trash)
+                               {
+                               gchar *buf2;
+                               if (options->file_ops.safe_delete_folder_maxsize > 0)
+                                       buf2 = g_strdup_printf(_(" (max. %d MB)"), options->file_ops.safe_delete_folder_maxsize);
+                               else
+                                       buf2 = g_strdup("");
+
+                               buf = g_strdup_printf(_("Using Geeqie Trash bin\n%s"), buf2);
+                               g_free(buf2);
+                               }
                        else
-                               buf2 = g_strdup("");
-
-                       buf = g_strdup_printf(_("Safe delete: %s%s\nTrash: %s"), _("on"), buf2, options->file_ops.safe_delete_path);
-                       g_free(buf2);
-                       }
-               else
-                       {
-                       buf = g_strdup_printf(_("Safe delete: %s"), _("off"));
+                               {
+                               buf = g_strdup(_("Using system Trash bin"));
+                               }
                        }
                }
 
index 4664dc6..b31ca33 100644 (file)
@@ -992,6 +992,7 @@ struct _PixmapFolders
        GdkPixbuf *open;
        GdkPixbuf *deny;
        GdkPixbuf *parent;
+       GdkPixbuf *link;
 };
 
 struct _SecureSaveInfo {
index c653fb0..3eea7df 100644 (file)
@@ -570,36 +570,27 @@ gboolean copy_file(const gchar *s, const gchar *t)
                        {
                        gchar *absolute;
 
-                       char *lastslash = strrchr(sl, G_DIR_SEPARATOR);
-                       int len = lastslash - sl + 1;
-
-                       int path_max;
-#ifdef PATH_MAX
-                       path_max = PATH_MAX;
-#else
-                       path_max = pathconf(sl, _PC_PATH_MAX);
-                       if (path_max <= 0)
-                               path_max = 4096;
-#endif
-
-                       absolute = g_malloc(path_max + 1);
+                       gchar *lastslash = strrchr(sl, G_DIR_SEPARATOR);
+                       gint len = lastslash - sl + 1;
 
+                       absolute = g_malloc(len + st.st_size + 1);
                        strncpy(absolute, sl, len);
                        strcpy(absolute + len, link_target);
-                       strcpy(link_target, absolute);
+                       g_free(link_target);
+                       link_target = absolute;
 
-                       char *realPath;
-                       realPath = realpath(link_target, absolute);
+                       gchar *realPath;
+                       realPath = realpath(link_target, NULL);
 
                        if (realPath != NULL) // successfully resolved into an absolute path
                                {
                                g_free(link_target);
-                               link_target = absolute;
+                               link_target = g_strdup(realPath);
+                               g_free(realPath);
                                }
                        else                 // could not get absolute path, got some error instead
                                {
                                g_free(link_target);
-                               g_free(absolute);
                                goto orig_copy;  // so try a "normal" copy
                                }
                        }
index 4a9473b..1614a40 100644 (file)
@@ -2144,6 +2144,7 @@ static void file_util_delete_full(FileData *source_fd, GList *flist, GtkWidget *
 {
        UtilityData *ud;
        GList *ungrouped = NULL;
+       gchar *message;
 
        if (source_fd)
                flist = g_list_append(flist, file_data_ref(source_fd));
@@ -2176,10 +2177,17 @@ static void file_util_delete_full(FileData *source_fd, GList *flist, GtkWidget *
        ud->parent = parent;
 
        ud->details_func = file_util_details_dialog;
-
+       if(options->file_ops.safe_delete_enable)
+               {
+               message = _("This will move the following files to the Trash bin");
+               }
+       else
+               {
+               message = _("This will permanently delete the following files");
+               }
        ud->messages.title = _("Delete");
        ud->messages.question = _("Delete files?");
-       ud->messages.desc_flist = _("This will delete the following files");
+       ud->messages.desc_flist = message;
        ud->messages.desc_source_fd = "";
        ud->messages.fail = _("File deletion failed");
 
index 8ae22cc..f671bea 100644 (file)
@@ -49,6 +49,8 @@ static PixmapFolders *folder_icons_new(GtkWidget *widget)
        pf->open   = gtk_widget_render_icon(widget, GTK_STOCK_OPEN, size, NULL);
        pf->deny   = gtk_widget_render_icon(widget, GTK_STOCK_STOP, size, NULL);
        pf->parent = gtk_widget_render_icon(widget, GTK_STOCK_GO_UP, size, NULL);
+       /* FIXME: this is not a suitable icon */
+       pf->link = gtk_widget_render_icon(widget, GTK_STOCK_REDO, size, NULL);
 #else
        /* GQView legacy icons */
        pf->close  = pixbuf_inline(PIXBUF_INLINE_FOLDER_CLOSED);
@@ -67,6 +69,7 @@ static void folder_icons_free(PixmapFolders *pf)
        g_object_unref(pf->open);
        g_object_unref(pf->deny);
        g_object_unref(pf->parent);
+       g_object_unref(pf->link);
 
        g_free(pf);
 }
index 07ebf1f..724b11a 100644 (file)
@@ -27,6 +27,7 @@ enum {
        DIR_COLUMN_NAME,
        DIR_COLUMN_COLOR,
        DIR_COLUMN_DATE,
+       DIR_COLUMN_LINK,
        DIR_COLUMN_COUNT
 };
 
index a125f47..caa9cbf 100644 (file)
@@ -149,6 +149,7 @@ static gboolean vdlist_populate(ViewDir *vd, gboolean clear)
        FileData *fd;
        SortType sort_type = SORT_NAME;
        gboolean sort_ascend = TRUE;
+       gchar *link = NULL;
 
        old_list = VDLIST(vd)->list;
 
@@ -190,7 +191,11 @@ static gboolean vdlist_populate(ViewDir *vd, gboolean clear)
 
                if (access_file(fd->path, R_OK | X_OK) && fd->name)
                        {
-                       if (fd->name[0] == '.' && fd->name[1] == '\0')
+                       if (islink(fd->path))
+                               {
+                               pixbuf = vd->pf->link;
+                               }
+                       else if (fd->name[0] == '.' && fd->name[1] == '\0')
                                {
                                pixbuf = vd->pf->open;
                                }
@@ -237,6 +242,15 @@ static gboolean vdlist_populate(ViewDir *vd, gboolean clear)
                                match = -1;
                                }
 
+                       if (islink(fd->path))
+                               {
+                               link = realpath(fd->path, NULL);
+                               }
+                       else
+                               {
+                               link = NULL;
+                               }
+
                        if (match < 0)
                                {
                                GtkTreeIter new;
@@ -254,6 +268,7 @@ static gboolean vdlist_populate(ViewDir *vd, gboolean clear)
                                                   DIR_COLUMN_POINTER, fd,
                                                   DIR_COLUMN_ICON, pixbuf,
                                                   DIR_COLUMN_NAME, fd->name,
+                                                  DIR_COLUMN_LINK, link,
                                                   DIR_COLUMN_DATE, date,
                                                   -1);
 
@@ -268,6 +283,7 @@ static gboolean vdlist_populate(ViewDir *vd, gboolean clear)
                                gtk_list_store_set(store, &iter,
                                                   DIR_COLUMN_ICON, pixbuf,
                                                   DIR_COLUMN_NAME, fd->name,
+                                                  DIR_COLUMN_LINK, link,
                                                   DIR_COLUMN_DATE, date,
                                                   -1);
 
@@ -292,6 +308,7 @@ static gboolean vdlist_populate(ViewDir *vd, gboolean clear)
        vd->drop_fd = NULL;
 
        filelist_free(old_list);
+       g_free(link);
        return ret;
 }
 
@@ -433,7 +450,7 @@ ViewDir *vdlist_new(ViewDir *vd, FileData *dir_fd)
 
        vd->type = DIRVIEW_LIST;
 
-       store = gtk_list_store_new(5, G_TYPE_POINTER, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_STRING);
+       store = gtk_list_store_new(6, G_TYPE_POINTER, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING);
        vd->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
        g_object_unref(store);
 
@@ -463,6 +480,8 @@ ViewDir *vdlist_new(ViewDir *vd, FileData *dir_fd)
 
        gtk_tree_view_append_column(GTK_TREE_VIEW(vd->view), column);
 
+       gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(vd->view), DIR_COLUMN_LINK);
+
        return vd;
 }
 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
index a90a9db..009639c 100644 (file)
@@ -133,6 +133,8 @@ static void vdtree_expand_by_iter(ViewDir *vd, GtkTreeIter *iter, gboolean expan
 {
        GtkTreeModel *store;
        GtkTreePath *tpath;
+       NodeData *nd;
+       FileData *fd = NULL;
 
        store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view));
        tpath = gtk_tree_model_get_path(store, iter);
@@ -143,7 +145,18 @@ static void vdtree_expand_by_iter(ViewDir *vd, GtkTreeIter *iter, gboolean expan
                   that the iter is populated */
                g_signal_handlers_block_by_func(G_OBJECT(vd->view), vdtree_row_expanded, vd);
                gtk_tree_view_expand_row(GTK_TREE_VIEW(vd->view), tpath, FALSE);
-               vdtree_icon_set_by_iter(vd, iter, vd->pf->open);
+               gtk_tree_model_get(store, iter, DIR_COLUMN_POINTER, &nd, -1);
+               fd = (nd) ? nd->fd : NULL;
+
+               if (fd && islink(fd->path))
+                       {
+                       vdtree_icon_set_by_iter(vd, iter, vd->pf->link);
+                       }
+               else
+                       {
+                       vdtree_icon_set_by_iter(vd, iter, vd->pf->open);
+                       }
+
                g_signal_handlers_unblock_by_func(G_OBJECT(vd->view), vdtree_row_expanded, vd);
                }
        else
@@ -379,12 +392,20 @@ static void vdtree_add_by_data(ViewDir *vd, FileData *fd, GtkTreeIter *parent)
        GdkPixbuf *pixbuf;
        NodeData *end;
        GtkTreeIter empty;
+       gchar *link = NULL;
 
        if (!fd) return;
 
        if (access_file(fd->path, R_OK | X_OK))
                {
-               pixbuf = vd->pf->close;
+               if (islink(fd->path))
+                       {
+                       pixbuf = vd->pf->link;
+                       }
+               else
+                       {
+                       pixbuf = vd->pf->close;
+                       }
                }
        else
                {
@@ -397,11 +418,21 @@ static void vdtree_add_by_data(ViewDir *vd, FileData *fd, GtkTreeIter *parent)
        nd->expanded = FALSE;
        nd->last_update = time(NULL);
 
+       if (islink(fd->path))
+               {
+               link = realpath(fd->path, NULL);
+               }
+       else
+               {
+               link = NULL;
+               }
+
        store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view)));
        gtk_tree_store_append(store, &child, parent);
        gtk_tree_store_set(store, &child, DIR_COLUMN_POINTER, nd,
                                         DIR_COLUMN_ICON, pixbuf,
                                         DIR_COLUMN_NAME, nd->fd->name,
+                                        DIR_COLUMN_LINK, link,
                                         DIR_COLUMN_COLOR, FALSE, -1);
 
        /* all nodes are created with an "empty" node, so that the expander is shown
@@ -429,6 +460,8 @@ static void vdtree_add_by_data(ViewDir *vd, FileData *fd, GtkTreeIter *parent)
                        }
                gtk_tree_path_free(tpath);
                }
+
+       g_free(link);
 }
 
 gboolean vdtree_populate_path_by_iter(ViewDir *vd, GtkTreeIter *iter, gboolean force, FileData *target_fd)
@@ -441,6 +474,7 @@ gboolean vdtree_populate_path_by_iter(ViewDir *vd, GtkTreeIter *iter, gboolean f
        GtkTreeIter child;
        NodeData *nd;
        gboolean add_hidden = FALSE;
+       gchar *link = NULL;
 
        store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view));
        gtk_tree_model_get(store, iter, DIR_COLUMN_POINTER, &nd, -1);
@@ -542,6 +576,18 @@ gboolean vdtree_populate_path_by_iter(ViewDir *vd, GtkTreeIter *iter, gboolean f
                                        }
 
                                gtk_tree_store_set(GTK_TREE_STORE(store), &child, DIR_COLUMN_NAME, fd->name, -1);
+
+                               if (islink(fd->path))
+                                       {
+                                       link = realpath(fd->path, NULL);
+                                       }
+                               else
+                                       {
+                                       link = NULL;
+                                       }
+
+                               gtk_tree_store_set(GTK_TREE_STORE(store), &child, DIR_COLUMN_LINK, link, -1);
+
                                cnd->version = fd->version;
                                old = g_list_remove(old, cnd);
                                file_data_unref(fd);
@@ -577,6 +623,8 @@ gboolean vdtree_populate_path_by_iter(ViewDir *vd, GtkTreeIter *iter, gboolean f
        nd->expanded = TRUE;
        nd->last_update = current_time;
 
+       g_free(link);
+
        return TRUE;
 }
 
@@ -783,7 +831,15 @@ gboolean vdtree_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer dat
                        if (fd)
                                {
                                vdtree_populate_path_by_iter(vd, &iter, FALSE, vd->dir_fd);
-                               vdtree_icon_set_by_iter(vd, &iter, vd->pf->open);
+
+                               if (islink(fd->path))
+                                       {
+                                       vdtree_icon_set_by_iter(vd, &iter, vd->pf->link);
+                                       }
+                               else
+                                       {
+                                       vdtree_icon_set_by_iter(vd, &iter, vd->pf->open);
+                                       }
                                }
                        break;
                }
@@ -822,6 +878,7 @@ gboolean vdtree_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer dat
        GtkTreeViewColumn *column;
        GtkTreeIter iter;
        NodeData *nd = NULL;
+       FileData *fd;
 
        if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), bevent->x, bevent->y,
                                          &tpath, &column, NULL, NULL))
@@ -846,7 +903,16 @@ gboolean vdtree_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer dat
                            !gtk_tree_view_row_expanded(GTK_TREE_VIEW(vd->view), tpath))
                                {
                                vdtree_populate_path_by_iter(vd, &iter, FALSE, vd->dir_fd);
-                               vdtree_icon_set_by_iter(vd, &iter, vd->pf->open);
+
+                               fd = (nd) ? nd->fd : NULL;
+                               if (fd && islink(fd->path))
+                                       {
+                                       vdtree_icon_set_by_iter(vd, &iter, vd->pf->link);
+                                       }
+                               else
+                                       {
+                                       vdtree_icon_set_by_iter(vd, &iter, vd->pf->open);
+                                       }
                                }
 
                        gtk_tree_path_free(tpath);
@@ -872,16 +938,51 @@ gboolean vdtree_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer dat
 static void vdtree_row_expanded(GtkTreeView *treeview, GtkTreeIter *iter, GtkTreePath *tpath, gpointer data)
 {
        ViewDir *vd = data;
+       GtkTreeModel *store;
+       NodeData *nd = NULL;
+       FileData *fd;
+
+       gtk_tree_view_set_tooltip_column(treeview, DIR_COLUMN_LINK);
 
        vdtree_populate_path_by_iter(vd, iter, FALSE, NULL);
-       vdtree_icon_set_by_iter(vd, iter, vd->pf->open);
+       store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
+
+       gtk_tree_model_get_iter(store, iter, tpath);
+       gtk_tree_model_get(store, iter, DIR_COLUMN_POINTER, &nd, -1);
+
+       fd = (nd) ? nd->fd : NULL;
+       if (fd && islink(fd->path))
+               {
+               vdtree_icon_set_by_iter(vd, iter, vd->pf->link);
+               }
+       else
+               {
+               vdtree_icon_set_by_iter(vd, iter, vd->pf->open);
+               }
 }
 
 static void vdtree_row_collapsed(GtkTreeView *treeview, GtkTreeIter *iter, GtkTreePath *tpath, gpointer data)
 {
        ViewDir *vd = data;
+       GtkTreeModel *store;
+       NodeData *nd = NULL;
+       FileData *fd;
+
+       vdtree_populate_path_by_iter(vd, iter, FALSE, NULL);
+       store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
 
-       vdtree_icon_set_by_iter(vd, iter, vd->pf->close);
+       gtk_tree_model_get_iter(store, iter, tpath);
+       gtk_tree_model_get(store, iter, DIR_COLUMN_POINTER, &nd, -1);
+
+       fd = (nd) ? nd->fd : NULL;
+       if (fd && islink(fd->path))
+               {
+               vdtree_icon_set_by_iter(vd, iter, vd->pf->link);
+               }
+       else
+               {
+               vdtree_icon_set_by_iter(vd, iter, vd->pf->close);
+               }
 }
 
 static gint vdtree_sort_cb(GtkTreeModel *store, GtkTreeIter *a, GtkTreeIter *b, gpointer data)
@@ -958,7 +1059,7 @@ ViewDir *vdtree_new(ViewDir *vd, FileData *dir_fd)
        vd->dnd_drop_leave_func = vdtree_dnd_drop_expand_cancel;
        vd->dnd_drop_update_func = vdtree_dnd_drop_expand;
 
-       store = gtk_tree_store_new(4, G_TYPE_POINTER, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT);
+       store = gtk_tree_store_new(6, G_TYPE_POINTER, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING);
        vd->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
        g_object_unref(store);
 
@@ -987,6 +1088,8 @@ ViewDir *vdtree_new(ViewDir *vd, FileData *dir_fd)
 
        gtk_tree_view_append_column(GTK_TREE_VIEW(vd->view), column);
 
+       gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(vd->view), DIR_COLUMN_LINK);
+
        vdtree_setup_root(vd);
 
        g_signal_connect(G_OBJECT(vd->view), "row_expanded",
index 2bcf960..7d9ac93 100644 (file)
@@ -28,6 +28,7 @@
 #include "history_list.h"
 #include "layout.h"
 #include "menu.h"
+#include "pixbuf_util.h"
 #include "thumb.h"
 #include "ui_menu.h"
 #include "ui_fileops.h"
@@ -343,6 +344,15 @@ static void vf_pop_menu_delete_cb(GtkWidget *widget, gpointer data)
 {
        ViewFile *vf = data;
 
+       options->file_ops.safe_delete_enable = FALSE;
+       file_util_delete(NULL, vf_pop_menu_file_list(vf), vf->listview);
+}
+
+static void vf_pop_menu_move_to_trash_cb(GtkWidget *widget, gpointer data)
+{
+       ViewFile *vf = data;
+
+       options->file_ops.safe_delete_enable = TRUE;
        file_util_delete(NULL, vf_pop_menu_file_list(vf), vf->listview);
 }
 
@@ -624,8 +634,15 @@ GtkWidget *vf_pop_menu(ViewFile *vf)
                                G_CALLBACK(vf_pop_menu_copy_path_cb), vf);
        menu_item_add_sensitive(menu, _("_Copy path unquoted"), active,
                                G_CALLBACK(vf_pop_menu_copy_path_unquoted_cb), vf);
-       menu_item_add_stock_sensitive(menu, _("_Delete..."), GTK_STOCK_DELETE, active,
-                                     G_CALLBACK(vf_pop_menu_delete_cb), vf);
+       menu_item_add_divider(menu);
+       menu_item_add_stock_sensitive(menu,
+                               options->file_ops.confirm_move_to_trash ? _("Move to Trash...") :
+                                       _("Move to Trash"), PIXBUF_INLINE_ICON_TRASH, active,
+                               G_CALLBACK(vf_pop_menu_move_to_trash_cb), vf);
+       menu_item_add_stock_sensitive(menu,
+                               options->file_ops.confirm_delete ? _("_Delete...") :
+                                       _("_Delete"), GTK_STOCK_DELETE, active,
+                               G_CALLBACK(vf_pop_menu_delete_cb), vf);
        menu_item_add_divider(menu);
 
        menu_item_add_sensitive(menu, _("Enable file _grouping"), active,
index dbd664e..db4d982 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/bash
-version="2018-08-20"
+version="2018-10-23"
 description=$'
 Geeqie is an image viewer.
 This script will download, compile, and install Geeqie on Debian-based systems.
@@ -51,8 +51,16 @@ optional_array=(
 "imagemagick"
 "ufraw (for RAW file handling)"
 "ufraw"
+"exiv2 command line (for jpeg export)"
+"exiv2"
+"jpgicc (for jpeg export color correction)"
+"liblcms2-utils"
 "markdown (for generating README help file)"
 "markdown"
+"gphoto2 (for tethered photography and camera download plugins)"
+"gphoto2"
+"libimage-exiftool-perl (for jpeg extraction plugin)"
+"libimage-exiftool-perl"
 )
 
 # Optional for GTK3 only
index feed769..91c3a49 100644 (file)
@@ -477,11 +477,17 @@ dd.answer div.label { float: left; }
 <a name="Delete"></a><div class="header"><h2 class="section title"><span class="title"><span class="label">11.11.1. </span>Delete</span></h2></div>
 <div class="block list variablelist"><dl class="variablelist">
 <dt class="term dt-first">
-          <span class="guilabel">Confirm file delete</span>
+          <span class="guilabel">Confirm permanent file delete</span>
         </dt>
 <dd>
           <p class="para block block-first">Prompts for confirmation before deleting files.</p>
         </dd>
+<dt class="term">
+          <span class="guilabel">Confirm move file to Trash</span>
+        </dt>
+<dd>
+          <p class="para block block-first">Prompts for confirmation before moving files to the trash bin.</p>
+        </dd>
 <dt class="term">
           <span class="guilabel">
             Enable
@@ -510,7 +516,7 @@ dd.answer div.label { float: left; }
           </p>
         </dd>
 <dt class="term">
-          <span class="guilabel">Safe Delete</span>
+          <span class="guilabel">Use Geeqie trash location</span>
         </dt>
 <dd>
           <p class="para block block-first">Moves deleted files to a temporary folder, for easy retrieval of deleted files. Files in the temporary folder are retained until the maximum size is reached, at which point deleting additional files will result in the removal of the oldest files to reclaim the space needed for the new files.</p>
@@ -525,6 +531,12 @@ dd.answer div.label { float: left; }
             </p>
           </div></div>
         </dd>
+<dt class="term">
+          <span class="guilabel">Use system Trash bin</span>
+        </dt>
+<dd>
+          <p class="para block block-first">Moves deleted files to the system-defined trash bin.</p>
+        </dd>
 <dt class="term">
           <span class="guilabel">Folder</span>
         </dt>
index 704de5e..f612b72 100644 (file)
@@ -492,6 +492,12 @@ dd.answer div.label { float: left; }
     </p>
 <div class="block list variablelist"><dl class="variablelist">
 <dt class="term dt-first">
+          <span class="guilabel">Disabled</span>
+        </dt>
+<dd>
+          <p class="para block block-first">If the checkbox is ticked, the plugin will not be displayed in Geeqie menus.</p>
+        </dd>
+<dt class="term">
           <span class="guilabel">Name</span>
         </dt>
 <dd>
index d36f736..ccba978 100644 (file)
@@ -894,9 +894,18 @@ dd.answer div.label { float: left; }
               </span>
             </td>
 <td class="td-colsep td-rowsep"></td>
-<td class="td-rowsep">Delete selected images.</td>
+<td class="td-rowsep">Move selected images to trash bin.</td>
 </tr>
 <tr class="tr-shade">
+<td class="td-colsep td-rowsep">
+              <span class="code" dir="ltr">
+                Shift + Delete
+              </span>
+            </td>
+<td class="td-colsep td-rowsep"></td>
+<td class="td-rowsep">Permanently delete selected images.</td>
+</tr>
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -906,7 +915,7 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Close window, Geeqie exits when last window is closed.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -916,19 +925,19 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Quit Geeqie.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td></td>
 <td></td>
 <td></td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-rowsep">
               <span class="emphasis emphasis-bold">Edit Menu</span>
             </td>
 <td class="td-rowsep"></td>
 <td class="td-rowsep"></td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -938,7 +947,7 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Open Geeqie preferences window.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -948,19 +957,19 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Save metadata</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td></td>
 <td></td>
 <td></td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-rowsep">
               <span class="emphasis emphasis-bold">Select Menu</span>
             </td>
 <td class="td-rowsep"></td>
 <td class="td-rowsep"></td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="keycap">1</span>
               ...
@@ -969,7 +978,7 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Toggle mark 1 ... 6</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -984,7 +993,7 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Select mark 1 ... 6</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -994,7 +1003,7 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Select all images.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl + SHIFT +
@@ -1004,7 +1013,7 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Unselect all images.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl + SHIFT +
@@ -1014,7 +1023,7 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Invert selection.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Alt +
@@ -1024,33 +1033,33 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Toggle rectangular selection mode in icon view.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="keycap">M</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Show marks.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td></td>
 <td></td>
 <td></td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-rowsep">
               <span class="emphasis emphasis-bold">View Menu</span>
             </td>
 <td class="td-rowsep"></td>
 <td class="td-rowsep"></td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="keycap">T</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Toggle display of thumbnails when in list view.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -1060,7 +1069,7 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Display file list as detailed list view.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -1070,7 +1079,7 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Display file list as icon view.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -1080,21 +1089,21 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Toggle folder display between list and tree views.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="keycap">R</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Refresh file list.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="keycap">L</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Toggle floating of file display.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -1104,7 +1113,7 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Toggle hiding of file display.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -1114,7 +1123,7 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Toggle EXIF sidebar.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Shift +
@@ -1124,7 +1133,7 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Toggle Sort Manager sidebar.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -1134,35 +1143,35 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Toggle Keywords sidebar.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="keycap">V</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Toggle full screen.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="keycap">I</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Toggle information overlay.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="keycap">S</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Toggle slideshow.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="keycap">P</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Pause slideshow.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -1172,7 +1181,7 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Slideshow faster.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">
                 Ctrl +
@@ -1182,49 +1191,49 @@ dd.answer div.label { float: left; }
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Slideshow slower.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="keycap">E</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Split panes horizontal.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="keycap">U</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Split panes vertical.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="keycap">Y</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Single pane.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">Alt + Right Arrow</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Next split pane.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">Alt + Left Arrow</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Previous split pane.</td>
 </tr>
-<tr class="tr-shade">
+<tr>
 <td class="td-colsep td-rowsep">
               <span class="code" dir="ltr">Alt + Up Arrow</span>
             </td>
 <td class="td-colsep td-rowsep"></td>
 <td class="td-rowsep">Up or previous split pane.</td>
 </tr>
-<tr>
+<tr class="tr-shade">
 <td class="td-colsep">
               <span class="code" dir="ltr">Alt + Down Arrow</span>
             </td>