diff -Nru gthumb-3.8.3/data/appdata/org.gnome.gThumb.appdata.xml.in gthumb-3.9.1/data/appdata/org.gnome.gThumb.appdata.xml.in
--- gthumb-3.8.3/data/appdata/org.gnome.gThumb.appdata.xml.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/appdata/org.gnome.gThumb.appdata.xml.in 2020-03-07 19:03:13.393623400 +0000
@@ -43,13 +43,17 @@
https://wiki.gnome.org/Apps/Gthumb
- https://git.gnome.org/browse/gthumb/plain/data/appdata/ss-browser.png
+ https://gitlab.gnome.org/GNOME/gthumb/raw/master/data/appdata/ss-browser.png
- https://git.gnome.org/browse/gthumb/plain/data/appdata/ss-viewer.png
+ https://gitlab.gnome.org/GNOME/gthumb/raw/master/data/appdata/ss-viewer.png
+
+
+
+
paobac_at_src.gnome.org
AppMenu
@@ -63,4 +67,8 @@
org.gnome.gThumb.desktop
+
+ mild
+ moderate
+
Binary files /tmp/tmpmZkLs1/FyYZs2ngqk/gthumb-3.8.3/data/appdata/ss-browser.png and /tmp/tmpmZkLs1/dcm0s5iN03/gthumb-3.9.1/data/appdata/ss-browser.png differ
Binary files /tmp/tmpmZkLs1/FyYZs2ngqk/gthumb-3.8.3/data/appdata/ss-viewer.png and /tmp/tmpmZkLs1/dcm0s5iN03/gthumb-3.9.1/data/appdata/ss-viewer.png differ
diff -Nru gthumb-3.8.3/data/gschemas/meson.build gthumb-3.9.1/data/gschemas/meson.build
--- gthumb-3.8.3/data/gschemas/meson.build 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/gschemas/meson.build 2020-03-07 19:03:13.396956400 +0000
@@ -2,6 +2,7 @@
gschema_files = files(
'org.gnome.gthumb.gschema.xml',
+ 'org.gnome.gthumb.catalogs.gschema.xml',
'org.gnome.gthumb.change-date.gschema.xml',
'org.gnome.gthumb.comments.gschema.xml',
'org.gnome.gthumb.contact-sheet.gschema.xml',
@@ -22,6 +23,7 @@
'org.gnome.gthumb.resize-images.gschema.xml',
'org.gnome.gthumb.rotate.gschema.xml',
'org.gnome.gthumb.slideshow.gschema.xml',
+ 'org.gnome.gthumb.terminal.gschema.xml',
'org.gnome.gthumb.webalbums.gschema.xml'
)
diff -Nru gthumb-3.8.3/data/gschemas/org.gnome.gthumb.catalogs.gschema.xml gthumb-3.9.1/data/gschemas/org.gnome.gthumb.catalogs.gschema.xml
--- gthumb-3.8.3/data/gschemas/org.gnome.gthumb.catalogs.gschema.xml 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/data/gschemas/org.gnome.gthumb.catalogs.gschema.xml 2020-03-07 19:03:13.396956400 +0000
@@ -0,0 +1,27 @@
+
+
+
+
+
+ ''
+
+
+
+
diff -Nru gthumb-3.8.3/data/gschemas/org.gnome.gthumb.gschema.xml gthumb-3.9.1/data/gschemas/org.gnome.gthumb.gschema.xml
--- gthumb-3.8.3/data/gschemas/org.gnome.gthumb.gschema.xml 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/gschemas/org.gnome.gthumb.gschema.xml 2020-03-07 19:03:13.396956400 +0000
@@ -138,6 +138,12 @@
false
+
+ 'change-file'
+
+
+ 'default'
+
diff -Nru gthumb-3.8.3/data/gschemas/org.gnome.gthumb.gstreamer-tools.gschema.xml gthumb-3.9.1/data/gschemas/org.gnome.gthumb.gstreamer-tools.gschema.xml
--- gthumb-3.8.3/data/gschemas/org.gnome.gthumb.gstreamer-tools.gschema.xml 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/gschemas/org.gnome.gthumb.gstreamer-tools.gschema.xml 2020-03-07 19:03:13.396956400 +0000
@@ -28,6 +28,9 @@
false
+
+ false
+
diff -Nru gthumb-3.8.3/data/gschemas/org.gnome.gthumb.image-viewer.gschema.xml gthumb-3.9.1/data/gschemas/org.gnome.gthumb.image-viewer.gschema.xml
--- gthumb-3.8.3/data/gschemas/org.gnome.gthumb.image-viewer.gschema.xml 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/gschemas/org.gnome.gthumb.image-viewer.gschema.xml 2020-03-07 19:03:13.396956400 +0000
@@ -32,6 +32,9 @@
'linear'
+
+ 'checkered'
+
diff -Nru gthumb-3.8.3/data/gschemas/org.gnome.gthumb.terminal.gschema.xml gthumb-3.9.1/data/gschemas/org.gnome.gthumb.terminal.gschema.xml
--- gthumb-3.8.3/data/gschemas/org.gnome.gthumb.terminal.gschema.xml 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/data/gschemas/org.gnome.gthumb.terminal.gschema.xml 2020-03-07 19:03:13.396956400 +0000
@@ -0,0 +1,27 @@
+
+
+
+
+
+ 'gnome-terminal --window --working-directory=%f'
+
+
+
+
diff -Nru gthumb-3.8.3/data/icons/private/hicolor/16x16/actions/transparency-symbolic.svg gthumb-3.9.1/data/icons/private/hicolor/16x16/actions/transparency-symbolic.svg
--- gthumb-3.8.3/data/icons/private/hicolor/16x16/actions/transparency-symbolic.svg 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/data/icons/private/hicolor/16x16/actions/transparency-symbolic.svg 2020-03-07 19:03:13.400289800 +0000
@@ -0,0 +1,134 @@
+
+
+
+
Binary files /tmp/tmpmZkLs1/FyYZs2ngqk/gthumb-3.8.3/data/icons/public/hicolor/16x16/apps/org.gnome.gThumb.png and /tmp/tmpmZkLs1/dcm0s5iN03/gthumb-3.9.1/data/icons/public/hicolor/16x16/apps/org.gnome.gThumb.png differ
Binary files /tmp/tmpmZkLs1/FyYZs2ngqk/gthumb-3.8.3/data/icons/public/hicolor/22x22/apps/gthumb.png and /tmp/tmpmZkLs1/dcm0s5iN03/gthumb-3.9.1/data/icons/public/hicolor/22x22/apps/gthumb.png differ
Binary files /tmp/tmpmZkLs1/FyYZs2ngqk/gthumb-3.8.3/data/icons/public/hicolor/256x256/apps/org.gnome.gThumb.png and /tmp/tmpmZkLs1/dcm0s5iN03/gthumb-3.9.1/data/icons/public/hicolor/256x256/apps/org.gnome.gThumb.png differ
Binary files /tmp/tmpmZkLs1/FyYZs2ngqk/gthumb-3.8.3/data/icons/public/hicolor/32x32/apps/gthumb.png and /tmp/tmpmZkLs1/dcm0s5iN03/gthumb-3.9.1/data/icons/public/hicolor/32x32/apps/gthumb.png differ
Binary files /tmp/tmpmZkLs1/FyYZs2ngqk/gthumb-3.8.3/data/icons/public/hicolor/48x48/apps/gthumb.png and /tmp/tmpmZkLs1/dcm0s5iN03/gthumb-3.9.1/data/icons/public/hicolor/48x48/apps/gthumb.png differ
diff -Nru gthumb-3.8.3/data/icons/public/hicolor/scalable/apps/org.gnome.gThumb.svg gthumb-3.9.1/data/icons/public/hicolor/scalable/apps/org.gnome.gThumb.svg
--- gthumb-3.8.3/data/icons/public/hicolor/scalable/apps/org.gnome.gThumb.svg 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/icons/public/hicolor/scalable/apps/org.gnome.gThumb.svg 2020-03-07 19:03:13.400289800 +0000
@@ -12,462 +12,142 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="256"
height="256"
- id="svg1872"
- sodipodi:version="0.32"
- inkscape:version="0.48.4 r9939"
+ viewBox="0 0 67.733334 67.733334"
+ version="1.1"
+ id="svg4770"
+ inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="gthumb.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0"
- inkscape:export-filename="/home/paolo/workspace/gthumb/data/icons/hicolor/256x256/apps/gthumb.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
-
-
-
-
+ inkscape:export-filename="/home/paolo/workspace/gthumb/data/icons/public/hicolor/256x256/apps/gthumb.png"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ id="defs4764">
-
+ id="linearGradient2911-977-39">
+ id="stop7660"
+ style="stop-color:#ffffe0;stop-opacity:1;" />
+ id="stop7662"
+ style="stop-color:#ffe588;stop-opacity:0;" />
-
-
-
-
+ gradientTransform="matrix(0.52872081,0,0,0.52872081,-53.219049,54.775478)" />
-
+ id="linearGradient1084">
+ id="stop1080" />
+ id="stop1082" />
-
-
-
-
-
+ id="linearGradient2862-897-722">
-
-
-
-
+ id="linearGradient2874-499-677">
-
-
-
-
-
-
-
-
-
-
-
-
+ r="2" />
@@ -528,13 +208,14 @@
+ y2="19.234819"
+ gradientTransform="matrix(2.5851473,0,0,2.9013555,-47.952005,109.57331)" />
@@ -549,6215 +230,250 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ id="metadata4767">
image/svg+xml
-
-
- Ulisse Perusin
-
-
-
- gthumb
-
-
- gthumb
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ transform="translate(53.21905,-145.65837)">
+
+
+
+ id="g6019"
+ transform="translate(0.05627632,0.63707899)">
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ id="g873"
+ transform="translate(0,-1.3363476)">
+ inkscape:export-ydpi="118.14"
+ inkscape:export-xdpi="118.14"
+ inkscape:transform-center-y="-0.27881981"
+ inkscape:transform-center-x="0.063002009"
+ d="m 1.2098443,197.42269 -1.14763419,-0.72344 -1.05719341,0.85016 0.33338959,-1.31502 -1.13523719,-0.74274 1.35368025,-0.0893 0.35557824,-1.30919 0.50323081,1.25983 1.3549966,-0.0664 -1.04266648,0.86791 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.5133853"
+ sodipodi:arg1="0.88506682"
+ sodipodi:r2="0.73175222"
+ sodipodi:r1="1.8786335"
+ sodipodi:cy="195.9687"
+ sodipodi:cx="0.020222535"
+ sodipodi:sides="5"
+ id="path1223"
+ style="opacity:1;fill:#f5c211;fill-opacity:1;stroke:#f5c211;stroke-width:0.5291667;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+
+
+
+
diff -Nru gthumb-3.8.3/data/icons/source/16x16/gthumb.svg gthumb-3.9.1/data/icons/source/16x16/gthumb.svg
--- gthumb-3.8.3/data/icons/source/16x16/gthumb.svg 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/icons/source/16x16/gthumb.svg 2020-03-07 19:03:13.400289800 +0000
@@ -12,238 +12,110 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16"
height="16"
- id="svg1872"
- sodipodi:version="0.32"
- inkscape:version="0.47 r22583"
+ viewBox="0 0 4.2333335 4.2333334"
+ version="1.1"
+ id="svg1139"
+ inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="gthumb.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0"
- inkscape:export-filename="/home/paolo/workspace/gthumb/data/icons/hicolor/16x16/apps/gthumb.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
-
-
-
-
+ inkscape:export-filename="/home/paolo/workspace/gthumb/data/icons/public/hicolor/16x16/apps/gthumb.png"
+ inkscape:export-xdpi="96.000008"
+ inkscape:export-ydpi="96.000008">
-
-
-
-
-
-
-
+ id="defs1133">
+ gradientTransform="matrix(0.09315419,0.01052579,-0.01340908,0.10258407,108.65238,122.02698)"
+ x1="11.749995"
+ y1="23.24999"
+ x2="14.499992"
+ y2="25.99999" />
+ id="linearGradient2862-897-722">
+ id="stop7606"
+ style="stop-color:#a8ae30;stop-opacity:1" />
+ id="stop7608"
+ style="stop-color:#8f9429;stop-opacity:1" />
-
-
-
-
+ gradientTransform="matrix(0.10979923,0.01113082,-0.01488565,0.10359861,107.96635,122.68268)"
+ x1="27.8125"
+ y1="22.657413"
+ x2="26.700396"
+ y2="25.157413" />
+ gradientTransform="matrix(0.10979923,0.01113082,-0.01488565,0.10359861,107.96635,122.68268)"
+ x1="29.0625"
+ y1="29"
+ x2="28.463289"
+ y2="23.782413" />
+ id="linearGradient2874-499-677">
+ id="stop7618"
+ style="stop-color:#6c782e;stop-opacity:1;" />
+ id="stop7620"
+ style="stop-color:#929829;stop-opacity:1" />
+ gradientTransform="matrix(0.09058146,0.01171475,-0.0123205,0.10780272,108.37771,122.59701)"
+ x1="11.749995"
+ y1="23.24999"
+ x2="14.499992"
+ y2="25.99999" />
-
-
-
-
+ gradientTransform="matrix(0.10134988,0.01310741,-0.0123205,0.10780272,108.16773,122.56985)"
+ x1="10.062495"
+ y1="29.49999"
+ x2="12.656243"
+ y2="24.74999" />
-
-
-
-
-
-
-
+ xlink:href="#linearGradient2874-499-677"
+ id="linearGradient5053"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.10463312,0.0126427,-0.01323118,0.10793162,108.127,122.57561)"
+ x1="20.383799"
+ y1="31.625"
+ x2="19.883799"
+ y2="26.4375" />
-
-
-
+ xlink:href="#linearGradient2855-649-911"
+ id="linearGradient5055-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.11741062,0.01522073,-0.01522445,0.13355291,108.2196,122.07038)"
+ x1="16.916706"
+ y1="25.210888"
+ x2="16.373755"
+ y2="16.540718" />
@@ -258,6 +130,16 @@
+
+
@@ -282,396 +175,241 @@
-
-
-
-
+ x1="18.36898"
+ y1="23.024696"
+ x2="18.153841"
+ y2="19.234819"
+ gradientTransform="matrix(0.16269069,0,0,0.18248904,121.73009,107.6075)" />
+ id="linearGradient2885-866-809">
+ id="stop7642"
+ style="stop-color:#b04730;stop-opacity:1" />
+ id="stop7644"
+ style="stop-color:#ff7b2f;stop-opacity:1" />
+ gradientTransform="matrix(0.08713738,0.01052871,-0.01483064,0.12097896,108.47455,122.3877)"
+ x1="21"
+ y1="20"
+ x2="21.25"
+ y2="22" />
+ id="linearGradient2911-977-39">
+ id="stop7660"
+ style="stop-color:#ffffe0;stop-opacity:1;" />
+ id="stop7662"
+ style="stop-color:#ffe588;stop-opacity:0;" />
-
+ gradientTransform="matrix(0.08985932,0.01085759,-0.01473998,0.12023946,108.41497,122.36685)"
+ x1="17"
+ y1="21"
+ x2="18.892241"
+ y2="22.069994" />
+ gradientTransform="matrix(0.08713727,0.01052869,-0.01399389,0.1141533,108.45236,122.46751)"
+ x1="18"
+ y1="18"
+ x2="19.487644"
+ y2="20.63061" />
+ xlink:href="#linearGradient1084"
+ id="linearGradient1086"
+ x1="62.063992"
+ y1="203.26164"
+ x2="47.19381"
+ y2="257.1478"
+ gradientUnits="userSpaceOnUse" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ id="linearGradient1084">
+
+
+
+
+ id="metadata1136">
image/svg+xml
-
-
- Ulisse Perusin
-
-
-
- gthumb
-
-
- gthumb
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ transform="translate(-107.81645,-123.58578)">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff -Nru gthumb-3.8.3/data/icons/source/22x22/gthumb.svg gthumb-3.9.1/data/icons/source/22x22/gthumb.svg
--- gthumb-3.8.3/data/icons/source/22x22/gthumb.svg 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/icons/source/22x22/gthumb.svg 2020-03-07 19:03:13.400289800 +0000
@@ -10,257 +10,110 @@
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22.008482"
- height="22.004335"
- id="svg3045"
+ width="22"
+ height="22"
+ viewBox="0 0 5.8208334 5.8208334"
version="1.1"
- inkscape:version="0.47 r22583"
+ id="svg1139"
+ inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="gthumb.svg"
- inkscape:export-filename="/home/paolo/workspace/gthumb/data/icons/hicolor/22x22/apps/gthumb.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
+ inkscape:export-filename="/home/paolo/workspace/gthumb/data/icons/public/hicolor/22x22/apps/gthumb.png"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ id="defs1133">
+ gradientTransform="matrix(5.2356966,0.59193716,-0.75365258,5.7690033,85.095265,80.300749)"
+ x1="11.749995"
+ y1="23.24999"
+ x2="14.499992"
+ y2="25.99999" />
+ id="linearGradient2862-897-722">
+ id="stop7606"
+ style="stop-color:#a8ae30;stop-opacity:1" />
+ id="stop7608"
+ style="stop-color:#8f9429;stop-opacity:1" />
-
-
-
-
+ gradientTransform="matrix(6.1712247,0.62596225,-0.83664221,5.8260579,46.537465,117.17483)"
+ x1="27.8125"
+ y1="22.657413"
+ x2="26.700396"
+ y2="25.157413" />
-
-
-
-
-
+ gradientTransform="matrix(6.1712247,0.62596225,-0.83664221,5.8260579,46.537465,117.17483)"
+ x1="29.0625"
+ y1="29"
+ x2="28.463289"
+ y2="23.782413" />
+ id="linearGradient2874-499-677">
+ id="stop7618"
+ style="stop-color:#6c782e;stop-opacity:1;" />
+ id="stop7620"
+ style="stop-color:#929829;stop-opacity:1" />
+ gradientTransform="matrix(5.0910971,0.65880052,-0.69246889,6.0624834,69.657935,112.35702)"
+ x1="11.749995"
+ y1="23.24999"
+ x2="14.499992"
+ y2="25.99999" />
-
-
-
-
-
-
-
-
+ gradientTransform="matrix(5.6963323,0.73711945,-0.69246889,6.0624834,57.855855,110.82981)"
+ x1="10.062495"
+ y1="29.49999"
+ x2="12.656243"
+ y2="24.74999" />
-
-
-
-
+ gradientTransform="matrix(5.8808652,0.71098514,-0.74365364,6.0697325,55.566975,111.15397)"
+ x1="20.383799"
+ y1="31.625"
+ x2="19.883799"
+ y2="26.4375" />
+ y2="19.234819"
+ gradientTransform="matrix(9.1440383,0,0,10.262512,12.894773,11.013381)" />
@@ -343,56 +197,14 @@
-
-
-
-
-
-
-
-
-
-
+ gradientTransform="matrix(4.897524,0.5921011,-0.83355043,6.8034739,75.100345,100.5862)"
+ x1="21"
+ y1="20"
+ x2="21.25"
+ y2="22" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ gradientTransform="matrix(5.0505094,0.61059674,-0.82845522,6.7618866,71.751835,99.413759)"
+ x1="17"
+ y1="21"
+ x2="18.892241"
+ y2="22.069994" />
-
-
-
-
+ xlink:href="#linearGradient1084"
+ id="linearGradient1086"
+ x1="62.063992"
+ y1="203.26164"
+ x2="47.19381"
+ y2="257.1478"
+ gradientUnits="userSpaceOnUse" />
-
-
-
-
-
-
-
+ id="linearGradient1084">
+
+
+
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ units="px"
+ inkscape:snap-global="false" />
+ id="metadata1136">
@@ -729,117 +299,171 @@
inkscape:label="Livello 1"
inkscape:groupmode="layer"
id="layer1"
- transform="translate(-346.13861,-401.36001)">
-
-
-
-
-
-
-
-
-
+ transform="translate(-107.81645,-121.99828)">
+
+
-
-
+ id="g889"
+ transform="translate(-0.08267748)">
+ style="stroke-width:1.46862471"
+ transform="matrix(0.68090038,0,0,0.68091791,34.520343,40.731962)"
+ id="g895">
+
+ id="g1221"
+ transform="matrix(0.03924725,0,0,0.03924134,105.72423,112.5529)"
+ style="display:inline;stroke-width:9.90140057;enable-background:new"
+ inkscape:export-xdpi="44.303635"
+ inkscape:export-ydpi="44.303635"
+ inkscape:export-filename="./g1255.png">
+ inkscape:connector-curvature="0"
+ d="m 167.90962,239.43954 c -6.35814,-37.85432 -65.57253,-38.83582 -49.91431,14.35282 22.43495,-20.31615 22.27771,2.51864 49.91431,-14.35282 z"
+ id="path14259-3"
+ style="display:inline;fill:url(#linearGradient5042);fill-opacity:1;fill-rule:evenodd;stroke:#909729;stroke-width:9.92476559;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="ccc" />
+ inkscape:connector-curvature="0"
+ d="m 144.87017,243.51578 c 18.85499,-37.97439 90.6684,-23.42981 56.05314,28.15911 -21.10102,-27.17808 -27.65222,-3.22082 -56.05314,-28.15911 z"
+ id="path14261-6"
+ style="display:inline;fill:#9ca02c;fill-opacity:1;fill-rule:evenodd;stroke:#909729;stroke-width:9.92476559;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="ccc" />
+ inkscape:connector-curvature="0"
+ d="M 161.38837,276.59746 C 179.169,239.98 243.13022,252.37867 210.91554,302.30933 192.6628,276.81423 186.23062,299.80549 161.38837,276.59746 Z"
+ id="path14263-0"
+ style="display:inline;fill:url(#linearGradient5044);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5046);stroke-width:9.92476559;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="ccc" />
+ inkscape:connector-curvature="0"
+ d="m 151.21793,280.30816 c -6.4386,-39.85822 -63.978215,-41.30014 -48.39789,14.7507 21.65777,-21.21287 21.66243,2.80317 48.39789,-14.7507 z"
+ id="path14265-6"
+ style="display:inline;fill:url(#linearGradient5049);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5051);stroke-width:9.92476559;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="ccc" />
+ inkscape:connector-curvature="0"
+ d="m 156.45207,261.94265 c 47.04694,5.68788 8.04346,31.77063 3.61574,43.5546 -39.67876,-17.11635 -26.92214,-46.3723 -3.61574,-43.5546 z"
+ id="path14267-2"
+ style="display:inline;fill:#a8ae30;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5053);stroke-width:9.92476559;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="ccs" />
+
+
+
+
+
+
+
+
+
+ inkscape:export-ydpi="44"
+ inkscape:export-xdpi="44"
+ inkscape:connector-curvature="0"
+ id="path1088"
+ d="m 108.79881,126.67527 h 2.37699"
+ style="fill:none;fill-rule:evenodd;stroke:#c0bfbc;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
diff -Nru gthumb-3.8.3/data/icons/source/32x32/gthumb.svg gthumb-3.9.1/data/icons/source/32x32/gthumb.svg
--- gthumb-3.8.3/data/icons/source/32x32/gthumb.svg 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/icons/source/32x32/gthumb.svg 2020-03-07 19:03:13.400289800 +0000
@@ -12,985 +12,86 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="32"
height="32"
- id="svg1872"
- sodipodi:version="0.32"
- inkscape:version="0.47 r22583"
+ viewBox="0 0 8.4666667 8.4666667"
+ version="1.1"
+ id="svg1139"
+ inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="gthumb.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0"
- inkscape:export-filename="/home/paolo/workspace/gthumb/data/icons/hicolor/32x32/apps/gthumb.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ inkscape:export-filename="/home/paolo/workspace/gthumb/data/icons/public/hicolor/32x32/apps/gthumb.png"
+ inkscape:export-xdpi="96.000008"
+ inkscape:export-ydpi="96.000008">
+
-
-
-
-
-
+ id="linearGradient2862-897-722">
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+ id="linearGradient2874-499-677">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ y2="19.234819"
+ gradientTransform="matrix(9.1440383,0,0,10.262512,12.894773,11.013381)" />
+
+
+
+
+ gradientTransform="matrix(4.897524,0.5921011,-0.83355043,6.8034739,75.100345,100.5862)"
+ x1="21"
+ y1="20"
+ x2="21.25"
+ y2="22" />
+
+
+
+
+ xlink:href="#linearGradient1084"
+ id="linearGradient1086"
+ x1="62.063992"
+ y1="203.26164"
+ x2="47.19381"
+ y2="257.1478"
+ gradientUnits="userSpaceOnUse" />
+
+
+
+
+
+ id="metadata1136">
image/svg+xml
-
-
- Ulisse Perusin
-
-
-
- gthumb
-
-
- gthumb
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+ transform="translate(-107.81645,-119.35245)">
-
-
+ id="g919"
+ transform="matrix(1.0187225,0,0,1.0187214,-2.1610388,-2.3161009)"
+ style="stroke-width:0.9816221">
+ ry="0"
+ y="119.90712"
+ x="108.10373"
+ height="7.696331"
+ width="8.0161591"
+ id="rect871"
+ style="display:inline;opacity:1;fill:#9a9996;fill-opacity:1;stroke:#9a9996;stroke-width:0.25972083;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ inkscape:export-xdpi="44.303635"
+ inkscape:export-ydpi="44.303635"
+ inkscape:export-filename="./g1255.png" />
+ inkscape:export-filename="./g1255.png"
+ inkscape:export-ydpi="44.303635"
+ inkscape:export-xdpi="44.303635"
+ style="display:inline;opacity:1;fill:#f6f5f4;fill-opacity:1;stroke:#9a9996;stroke-width:0.26012984;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ id="rect966"
+ width="8.0161591"
+ height="7.696331"
+ x="108.10373"
+ y="119.57304"
+ ry="0" />
-
+ id="g895"
+ transform="translate(0.10021806,-0.01057015)">
-
-
-
-
-
-
+ inkscape:export-filename="./g1255.png"
+ inkscape:export-ydpi="44.303635"
+ inkscape:export-xdpi="44.303635"
+ ry="0.37122053"
+ y="120.41683"
+ x="108.81838"
+ height="4.7799053"
+ width="6.3864169"
+ id="rect968"
+ style="display:inline;opacity:1;fill:url(#linearGradient1086);fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" />
+ inkscape:export-filename="./g1255.png"
+ inkscape:export-ydpi="44.303635"
+ inkscape:export-xdpi="44.303635"
+ style="display:inline;stroke-width:6.74195433;enable-background:new"
+ transform="matrix(0.03924725,0,0,0.03924134,105.72423,112.5529)"
+ id="g1221">
+
+
+
+ sodipodi:nodetypes="ccc"
+ style="display:inline;fill:url(#linearGradient5049);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5051);stroke-width:6.75786352;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path14265-6"
+ d="m 151.21793,280.30816 c -6.4386,-39.85822 -63.978215,-41.30014 -48.39789,14.7507 21.65777,-21.21287 21.66243,2.80317 48.39789,-14.7507 z"
+ inkscape:connector-curvature="0" />
+ sodipodi:nodetypes="ccs"
+ style="display:inline;fill:#a8ae30;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5053);stroke-width:6.75786352;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path14267-2"
+ d="m 156.45207,261.94265 c 47.04694,5.68788 8.04346,31.77063 3.61574,43.5546 -39.67876,-17.11635 -26.92214,-46.3723 -3.61574,-43.5546 z"
+ inkscape:connector-curvature="0" />
+ inkscape:connector-curvature="0"
+ id="path14271-6"
+ d="m 180.36402,305.38778 c -5.25851,3.52114 -18.78337,-22.18478 -28.25405,-27.22405 -10.32637,2.47136 -23.03085,23.32756 -28.22767,19.51286 -5.94326,-4.36261 1.35471,-31.26313 4.77698,-37.14521 4.41075,-7.58101 -25.39059,-8.18072 -22.87687,-14.59523 2.47991,-6.3283 26.94348,-12.1726 34.64655,-13.26354 2.79356,-7.51892 10.0296,-19.358 19.92813,-18.07405 9.89854,1.28393 15.41812,15.80585 17.47411,23.25377 10.28636,1.77463 27.14001,8.81565 28.40291,15.62543 1.24591,6.71823 -34.0332,5.55386 -29.53819,13.34644 3.28156,5.68898 7.60607,34.81386 3.66809,38.56358 z"
+ style="display:inline;fill:url(#linearGradient5055-7);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient5057);stroke-width:6.75786352;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="ccssscscssc" />
+
+ inkscape:connector-curvature="0"
+ id="path14275-8"
+ d="m 160.19886,261.30301 7.64557,-22.32367"
+ style="display:inline;fill:none;stroke:url(#linearGradient5063-3);stroke-width:6.75786352;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="cc" />
+ inkscape:connector-curvature="0"
+ id="path14277-7"
+ d="m 149.9281,262.75759 -8.04454,-19.81422"
+ style="display:inline;fill:none;stroke:url(#linearGradient5065-5);stroke-width:6.75786352;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="cc" />
+
-
+
+
+ transform="matrix(0.07587364,0,0,0.07586222,108.06011,105.9497)"
+ inkscape:export-ydpi="118.14"
+ inkscape:export-xdpi="118.14"
+ sodipodi:type="star"
+ style="opacity:1;fill:#f5c211;fill-opacity:1;stroke:#f5c211;stroke-width:3.48742008;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1225"
+ sodipodi:sides="5"
+ sodipodi:cx="88.944489"
+ sodipodi:cy="264.67184"
+ sodipodi:r1="3.5531673"
+ sodipodi:r2="1.384005"
+ sodipodi:arg1="0.88506682"
+ sodipodi:arg2="1.5133853"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 91.194488,267.42184 -2.170586,-1.36827 -1.999531,1.60795 0.630559,-2.48717 -2.147139,-1.40479 2.560293,-0.16888 0.672526,-2.47615 0.951789,2.3828 2.562783,-0.12557 -1.972055,1.64153 z"
+ inkscape:transform-center-x="0.040613234"
+ inkscape:transform-center-y="-0.17970513" />
+
+
-
diff -Nru gthumb-3.8.3/data/icons/source/48x48/gthumb.svg gthumb-3.9.1/data/icons/source/48x48/gthumb.svg
--- gthumb-3.8.3/data/icons/source/48x48/gthumb.svg 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/icons/source/48x48/gthumb.svg 2020-03-07 19:03:13.400289800 +0000
@@ -12,427 +12,109 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
- id="svg1872"
- sodipodi:version="0.32"
- inkscape:version="0.47 r22583"
+ viewBox="0 0 12.7 12.7"
+ version="1.1"
+ id="svg1139"
+ inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="gthumb.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0"
- inkscape:export-filename="/home/paolo/workspace/gthumb/data/icons/hicolor/48x48/apps/gthumb.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
-
-
-
-
+ inkscape:export-filename="/home/paolo/workspace/gthumb/data/icons/public/hicolor/48x48/apps/gthumb.png"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ id="defs1133">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ id="linearGradient2862-897-722">
-
-
-
-
+ id="linearGradient2874-499-677">
-
-
-
-
-
-
-
-
-
-
-
-
+ r="2" />
@@ -493,13 +175,14 @@
+ y2="19.234819"
+ gradientTransform="matrix(9.1440383,0,0,10.262512,12.894773,11.013381)" />
@@ -514,57 +197,15 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ xlink:href="#linearGradient1084"
+ id="linearGradient1086"
+ x1="62.063992"
+ y1="203.26164"
+ x2="47.19381"
+ y2="257.1478"
+ gradientUnits="userSpaceOnUse" />
+ id="linearGradient1084">
+
+
+
+
+ id="metadata1136">
image/svg+xml
-
-
- Ulisse Perusin
-
-
-
- gthumb
-
-
- gthumb
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ transform="translate(-107.81645,-115.11912)">
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ id="g1221"
+ transform="matrix(0.06088889,0,0,0.06088265,104.41212,104.28251)"
+ style="display:inline;stroke-width:4.34556818;enable-background:new"
+ inkscape:export-xdpi="44.303635"
+ inkscape:export-ydpi="44.303635"
+ inkscape:export-filename="./g1255.png">
+
+
+
+
+
+
+
+
+ sodipodi:nodetypes="cc"
+ style="display:inline;fill:none;stroke:url(#linearGradient5065-5);stroke-width:4.35582256;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 149.9281,262.75759 -8.04454,-19.81422"
+ id="path14277-7"
+ inkscape:connector-curvature="0" />
+
-
-
+ inkscape:transform-center-y="-0.27881981"
+ inkscape:transform-center-x="0.063002009"
+ d="m 91.194488,267.42184 -2.170586,-1.36827 -1.999531,1.60795 0.630559,-2.48717 -2.147139,-1.40479 2.560293,-0.16888 0.672526,-2.47615 0.951789,2.3828 2.562783,-0.12557 -1.972055,1.64153 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.5133853"
+ sodipodi:arg1="0.88506682"
+ sodipodi:r2="1.384005"
+ sodipodi:r1="3.5531673"
+ sodipodi:cy="264.67184"
+ sodipodi:cx="88.944489"
+ sodipodi:sides="5"
+ id="path1225"
+ style="opacity:1;fill:#f5c211;fill-opacity:1;stroke:#f5c211;stroke-width:2.24783809;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star"
+ inkscape:export-xdpi="118.14"
+ inkscape:export-ydpi="118.14"
+ transform="matrix(0.11771172,0,0,0.11769966,108.03606,94.037681)" />
+
+
+
diff -Nru gthumb-3.8.3/data/icons/source/gthumb.svg gthumb-3.9.1/data/icons/source/gthumb.svg
--- gthumb-3.8.3/data/icons/source/gthumb.svg 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/icons/source/gthumb.svg 2020-03-07 19:03:13.400289800 +0000
@@ -10,398 +10,280 @@
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="256"
- height="256"
- id="svg1872"
+ inkscape:export-ydpi="96"
+ inkscape:export-xdpi="96"
+ inkscape:export-filename="Template.png"
+ width="128"
+ height="128"
+ id="svg11300"
sodipodi:version="0.32"
- inkscape:version="0.48.3.1 r9886"
+ inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="gthumb.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.0"
- inkscape:export-filename="/home/paolo/workspace/gthumb/data/icons/hicolor/256x256/apps/gthumb.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
-
-
-
-
+ style="display:inline;enable-background:new"
+ viewBox="0 0 128 128">
+ Adwaita Icon Template
+ id="defs3">
-
-
-
-
+ id="linearGradient1084">
+ id="stop1080" />
+ id="stop1082" />
-
-
-
+ y2="236"
+ x2="96"
+ y1="236"
+ x1="32"
+ gradientTransform="translate(604.81684,170.58641)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1099"
+ xlink:href="#linearGradient1036" />
+ id="linearGradient1036">
+ style="stop-color:#d5d3cf;stop-opacity:1;" />
+ style="stop-color:#f6f5f4;stop-opacity:1" />
-
+
+ id="linearGradient1069">
+ style="stop-color:#d5d3cf;stop-opacity:1" />
+ style="stop-color:#949390;stop-opacity:1" />
-
-
-
+ gradientUnits="userSpaceOnUse"
+ y2="232"
+ x2="64"
+ y1="262.5"
+ x1="64"
+ id="linearGradient1027"
+ xlink:href="#linearGradient1025"
+ gradientTransform="translate(-470.5864,432.81685)" />
+ id="linearGradient1025">
-
+ style="stop-color:#9a9996;stop-opacity:1" />
+ style="stop-color:#77767b;stop-opacity:1" />
+
+
+
+
+ id="linearGradient2911-977-39">
+ id="stop7660"
+ style="stop-color:#ffffe0;stop-opacity:1;" />
+ id="stop7662"
+ style="stop-color:#ffe588;stop-opacity:0;" />
+ id="linearGradient2891-388-107">
+ id="stop7636"
+ style="stop-color:#8a300c;stop-opacity:1;" />
+ id="stop7638"
+ style="stop-color:#ec510c;stop-opacity:0" />
-
+ id="linearGradient2885-866-809">
+ id="stop7642"
+ style="stop-color:#b04730;stop-opacity:1" />
+ id="stop7644"
+ style="stop-color:#ff7b2f;stop-opacity:1" />
-
+ id="linearGradient2855-649-911">
+ id="stop7624"
+ style="stop-color:#ed6520;stop-opacity:1" />
+ id="stop7626"
+ style="stop-color:#ff9e50;stop-opacity:1" />
-
-
-
-
+ xlink:href="#linearGradient1084"
+ id="linearGradient1086"
+ x1="62.063992"
+ y1="203.26164"
+ x2="47.19381"
+ y2="257.1478"
+ gradientUnits="userSpaceOnUse" />
-
-
-
-
+ gradientTransform="matrix(4.8975175,0.59210032,-0.78652133,6.4196204,73.853415,105.07463)"
+ x1="18"
+ y1="18"
+ x2="19.487644"
+ y2="20.63061" />
-
-
-
-
+ gradientTransform="matrix(5.0505094,0.61059674,-0.82845522,6.7618866,71.751835,99.413759)"
+ x1="17"
+ y1="21"
+ x2="18.892241"
+ y2="22.069994" />
-
+
-
-
-
+ xlink:href="#linearGradient2891-388-107"
+ id="radialGradient5059-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(16.579705,-7.8818594e-6,9.530127e-6,14.329945,-128.383,-82.885307)"
+ cx="19"
+ cy="22.472271"
+ fx="19"
+ fy="22.472271"
+ r="2" />
+ x1="18.36898"
+ y1="23.024696"
+ x2="18.153841"
+ y2="19.234819"
+ gradientTransform="matrix(9.1440383,0,0,10.262512,12.894773,11.013381)" />
-
-
-
+ xlink:href="#linearGradient2855-649-911"
+ id="linearGradient5055-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(6.5990198,0.85596573,-0.85568463,7.5105928,60.771415,82.741509)"
+ x1="16.916706"
+ y1="25.210888"
+ x2="16.373755"
+ y2="16.540718" />
+ gradientTransform="matrix(6.5990198,0.85596573,-0.85568463,7.5105928,60.771415,82.741509)"
+ x1="10.257123"
+ y1="24.583183"
+ x2="13.592399"
+ y2="15.520698" />
+ id="linearGradient2849-135-305">
+ id="stop7630"
+ style="stop-color:#da6224;stop-opacity:1" />
+ id="stop7632"
+ style="stop-color:#d57042;stop-opacity:1" />
+ gradientTransform="matrix(5.8808652,0.71098514,-0.74365364,6.0697325,55.566975,111.15397)"
+ x1="20.383799"
+ y1="31.625"
+ x2="19.883799"
+ y2="26.4375" />
+ id="linearGradient2874-499-677">
-
-
-
-
-
-
-
-
+ gradientTransform="matrix(6.1712247,0.62596225,-0.83664221,5.8260579,46.537465,117.17483)"
+ x1="27.8125"
+ y1="22.657413"
+ x2="26.700396"
+ y2="25.157413" />
-
-
-
-
+ gradientTransform="matrix(6.1712247,0.62596225,-0.83664221,5.8260579,46.537465,117.17483)"
+ x1="29.0625"
+ y1="29"
+ x2="28.463289"
+ y2="23.782413" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id="metadata4">
@@ -5251,315 +544,370 @@
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- Ulisse Perusin
+ GNOME Design Team
+
- gthumb
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ Adwaita Icon Template
-
- gthumb
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
-
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
-
+ transform="translate(0,-172)">
+
+
+
+
+
+
+ Hicolor
+ Symbolic
+
+
+
+
+
+
+
+
+
+ id="g4650">
+
+
+
-
-
-
-
-
-
-
-
+ inkscape:export-filename="./g1255.png"
+ inkscape:export-ydpi="44.303635"
+ inkscape:export-xdpi="44.303635"
+ style="stroke-width:1.87016165"
+ transform="matrix(0.53471313,0,0,0.53471313,-21.660409,84.859507)"
+ id="g1221">
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+ inkscape:export-filename="./g1255.png"
+ inkscape:export-ydpi="44.303635"
+ inkscape:export-xdpi="44.303635"
+ transform="translate(0,2.3749998)"
+ id="g1234">
+
+
+
+ inkscape:export-filename="./g1255.png"
+ inkscape:export-ydpi="44.303635"
+ inkscape:export-xdpi="44.303635"
+ id="g1255">
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Perfev mitr asertovnia, Cherioniev (Xariomashin) 2012, MashovBacu, Niri, Metru nde Covinir. Thumoriociv leshigaris.
-
+ id="path1229"
+ d="M 22.495007,270.21789 H 68.504992"
+ style="fill:none;fill-rule:evenodd;stroke:#deddda;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
diff -Nru gthumb-3.8.3/data/ui/browser-preferences.ui gthumb-3.9.1/data/ui/browser-preferences.ui
--- gthumb-3.8.3/data/ui/browser-preferences.ui 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/ui/browser-preferences.ui 2020-03-07 19:03:13.400289800 +0000
@@ -1,12 +1,12 @@
-
+
@@ -178,28 +169,50 @@
-
+
True
False
- 12
+ 12
+ vertical
+ 6
-
+
True
False
- vertical
6
-
+
+ True
+ False
+ Thumbnail _size:
+ True
+ thumbnail_size_combobox
+
+
+ False
+ True
+ 0
+
+
+
+
True
False
- 6
-
+
True
False
- Thumbnail _size:
- True
- thumbnail_size_combobox
+
+ - 48
+ - 64
+ - 85
+ - 95
+ - 112
+ - 128
+ - 164
+ - 200
+ - 256
+
False
@@ -207,56 +220,6 @@
0
-
-
- True
- False
-
-
- True
- False
-
- - 48
- - 64
- - 85
- - 95
- - 112
- - 128
- - 164
- - 200
- - 256
-
-
-
- False
- True
- 0
-
-
-
-
- False
- True
- 1
-
-
-
-
- False
- True
- 0
-
-
-
-
- D_etermine image type from content (slower)
- False
- True
- True
- False
- True
- 0
- True
False
@@ -265,6 +228,26 @@
+
+ False
+ True
+ 0
+
+
+
+
+ D_etermine image type from content (slower)
+ True
+ True
+ False
+ True
+ True
+
+
+ False
+ True
+ 1
+
diff -Nru gthumb-3.8.3/data/ui/favorite-properties.ui gthumb-3.9.1/data/ui/favorite-properties.ui
--- gthumb-3.8.3/data/ui/favorite-properties.ui 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/data/ui/favorite-properties.ui 2020-03-07 19:03:13.400289800 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+ True
+ False
+ True
+ True
+ 5
+ vertical
+
+
+ 450
+ 450
+ True
+ True
+ in
+
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
diff -Nru gthumb-3.8.3/data/ui/file-selection-info.ui gthumb-3.9.1/data/ui/file-selection-info.ui
--- gthumb-3.8.3/data/ui/file-selection-info.ui 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/data/ui/file-selection-info.ui 2020-03-07 19:03:13.403623000 +0000
@@ -0,0 +1,81 @@
+
+
+
+
+
+ True
+ False
+ True
+ vertical
+
+
+ True
+ False
+ 6
+
+
+ True
+ True
+ True
+ Previous
+
+
+ True
+ False
+ go-previous-symbolic
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ True
+ word-char
+ 30
+ 0.5
+
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ True
+ Next
+
+
+ True
+ False
+ go-next-symbolic
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
diff -Nru gthumb-3.8.3/data/ui/filter-editor.ui gthumb-3.9.1/data/ui/filter-editor.ui
--- gthumb-3.8.3/data/ui/filter-editor.ui 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/ui/filter-editor.ui 2020-03-07 19:03:13.403623000 +0000
@@ -1,5 +1,5 @@
-
+
@@ -59,12 +59,10 @@
_Match:
- False
True
True
False
True
- 0
True
@@ -95,13 +93,26 @@
-
+
True
False
- 20
+ 25
vertical
6
+
+ True
+ False
+ Rules:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
True
False
@@ -114,7 +125,7 @@
False
True
- 0
+ 1
@@ -151,12 +162,10 @@
_Limit to
- False
True
True
False
True
- 0.5
True
@@ -166,6 +175,23 @@
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 25
+ vertical
+ 15
+
True
False
@@ -200,23 +226,9 @@
False
True
- 1
+ 0
-
-
- False
- True
- 0
-
-
-
-
- True
- False
- 20
- vertical
- 6
True
@@ -266,7 +278,7 @@
False
False
- 0
+ 1
diff -Nru gthumb-3.8.3/data/ui/meson.build gthumb-3.9.1/data/ui/meson.build
--- gthumb-3.8.3/data/ui/meson.build 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/ui/meson.build 2020-03-07 19:03:13.403623000 +0000
@@ -1,12 +1,14 @@
ui_files = files(
'browser-preferences.ui',
'extensions-preferences.ui',
+ 'favorite-properties.ui',
'filter-editor.ui',
'histogram-info.ui',
'location.ui',
'overwrite-dialog.ui',
'personalize-filters.ui',
'preferences.ui',
+ 'shortcuts-preferences.ui',
'sort-order.ui'
)
install_data(ui_files, install_dir : ui_install_dir)
diff -Nru gthumb-3.8.3/data/ui/overwrite-dialog.ui gthumb-3.9.1/data/ui/overwrite-dialog.ui
--- gthumb-3.8.3/data/ui/overwrite-dialog.ui 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/ui/overwrite-dialog.ui 2020-03-07 19:03:13.403623000 +0000
@@ -1,5 +1,5 @@
-
+
@@ -30,7 +30,7 @@
True
False
- 12
+ 24
True
@@ -124,7 +124,8 @@
True
False
- True
+ end
+ True
0
@@ -292,7 +293,8 @@
True
False
- True
+ end
+ True
0
diff -Nru gthumb-3.8.3/data/ui/preferences.ui gthumb-3.9.1/data/ui/preferences.ui
--- gthumb-3.8.3/data/ui/preferences.ui 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/data/ui/preferences.ui 2020-03-07 19:03:13.403623000 +0000
@@ -1,5 +1,5 @@
-
+
@@ -22,6 +22,9 @@
gThumb Preferences
center
normal
+
+
+
False
@@ -47,7 +50,6 @@
True
False
- 5
True
@@ -85,7 +87,7 @@
True
False
vertical
- 12
+ 20
True
@@ -96,9 +98,9 @@
True
False
- 0
Appearance
True
+ 0
@@ -110,75 +112,69 @@
-
+
True
False
- 12
+ 12
+ 6
+ 6
-
+
True
False
- 6
- 6
-
-
- True
- False
- 0
- T_humbnails in viewer:
- True
-
-
- 0
- 0
-
-
-
-
- True
- False
-
- - on the bottom
- - on the side
-
-
-
- 1
- 0
-
-
-
-
- True
- False
- 0
- File _properties in browser:
- True
- file_properties_position_combobox
-
-
- 0
- 1
-
-
+ T_humbnails in viewer:
+ True
+ 0
+
+
+ 0
+ 0
+
+
+
+
+ True
+ False
+
+ - on the bottom
+ - on the side
+
+
+
+ 1
+ 0
+
+
+
+
+ True
+ False
+ File _properties in browser:
+ True
+ file_properties_position_combobox
+ 0
+
+
+ 0
+ 1
+
+
+
+
+ True
+ False
+ file_properties_position_liststore
-
- True
- False
- file_properties_position_liststore
-
-
-
- 0
-
-
-
-
- 1
- 1
-
+
+
+ 0
+
+
+ 1
+ 1
+
@@ -204,10 +200,10 @@
True
False
- 0
On startup:
True
end
+ 0
@@ -219,27 +215,42 @@
-
+
True
False
- 12
+ 12
+ vertical
+ 6
+
+
+ Go to last _visited location
+ True
+ True
+ False
+ True
+ True
+ True
+
+
+ False
+ True
+ 0
+
+
-
+
True
False
- vertical
6
-
- Go to last _visited location
- False
+
+ Go to this _folder:
True
True
False
True
- 0
- True
True
+ go_to_last_location_radiobutton
False
@@ -248,93 +259,55 @@
-
- True
- False
- 6
-
-
- Go to this _folder:
- False
- True
- True
- False
- True
- 0
- True
- go_to_last_location_radiobutton
-
-
- False
- True
- 0
-
-
-
-
- True
- False
- select-folder
- Choose startup folder
-
-
- True
- True
- 1
-
-
-
-
- False
- True
- 1
-
-
-
-
- True
- False
-
-
- Set to C_urrent
- False
- True
- True
- True
- True
-
-
- False
- True
- end
- 0
-
-
-
-
- False
- True
- 2
-
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
-
- _Reuse the active window to open files
- False
+
+ Set to C_urrent
True
True
- False
+ True
True
- 0
- True
False
True
- 3
+ end
+ 0
+
+ False
+ True
+ 2
+
+
+
+
+ _Reuse the active window to open files
+ True
+ True
+ False
+ True
+ True
+
+
+ False
+ True
+ 3
+
@@ -360,9 +333,9 @@
True
False
- 0
Other
True
+ 0
@@ -374,68 +347,56 @@
-
+
True
False
- 12
+ 12
+ vertical
+ 6
-
+
+ As_k confirmation before deleting files or catalogs
True
- False
- vertical
- 6
-
-
- As_k confirmation before deleting files or catalogs
- False
- True
- True
- False
- True
- 0
- True
-
-
- False
- True
- 0
-
-
-
-
- Ask whether to save _modified files
- False
- True
- True
- False
- True
- 0
- True
-
-
- False
- True
- 1
-
-
-
-
- _Store metadata inside files if possible
- False
- True
- True
- False
- True
- 0
- True
-
-
- False
- True
- 2
-
-
+ True
+ False
+ True
+ True
+
+
+ False
+ True
+ 0
+
+
+
+
+ Ask whether to save _modified files
+ True
+ True
+ False
+ True
+ True
+
+
+ False
+ True
+ 1
+
+
+
+
+ _Store metadata inside files if possible
+ True
+ True
+ False
+ True
+ True
+
+ False
+ True
+ 2
+
diff -Nru gthumb-3.8.3/data/ui/shortcuts-preferences.ui gthumb-3.9.1/data/ui/shortcuts-preferences.ui
--- gthumb-3.8.3/data/ui/shortcuts-preferences.ui 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/data/ui/shortcuts-preferences.ui 2020-03-07 19:03:13.403623000 +0000
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ False
+ vertical
+ 6
+
+
+ True
+ False
+ 6
+
+
+ True
+ False
+ Shortcuts:
+ shortcuts_list
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ category_liststore
+
+
+
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ in
+
+
+ True
+ False
+
+
+ True
+ False
+
+
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ False
+
+
+ _Restore All…
+ True
+ True
+ True
+ True
+
+
+ False
+ True
+ 0
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+
+
+
diff -Nru gthumb-3.8.3/debian/changelog gthumb-3.9.1/debian/changelog
--- gthumb-3.8.3/debian/changelog 2019-12-27 18:03:27.000000000 +0000
+++ gthumb-3.9.1/debian/changelog 2020-03-10 05:22:09.000000000 +0000
@@ -1,3 +1,40 @@
+gthumb (3:3.9.1-2dhor~eoan) eoan; urgency=medium
+
+ * Added ability to customize the keyboard shortcuts.
+ * Added a shortcuts window to show the available shortcuts.
+ * Added option to change the mouse wheel action.
+ * Image viewer: added ability to define the transparency style.
+ * Video viewer: allow to view the video at the original size; show the zoom
+ factor in the statusbar.
+ * Edit comment/tags dialogs: use the header bar; allow to change the current
+ image from the dialog.
+ * Add to catalog: use the header bar; allow to change the current image from
+ the dialog.
+ * Search: added ability to search in multiple folders.
+ * Scripts: added %T to insert a timestamp in the command.
+ * Folder tree:
+ * better drag&drop support: allow to move a catalog into a library, and a
+ library into another library, show an error if the drop operation is not
+ possible;
+ * added an 'Open in Terminal' command in the context menu.
+ * Overwrite dialog: show video previews as well, fixed dialog size.
+ * Preferences: allow to specify a catalog or any other location as startup
+ location.
+ * Trash/Delete files: show progress for long operations.
+ * File properties: added the file size in bytes.
+ * File properties: added a context menu command to customize the visibile
+ properties.
+ * Toolbar: show edit comment/tags in browser mode as well.
+ * Export tools: removed from the toolbar. Some tools moved to the tools
+ menu, others as a submenu in the gears menu.
+ * Fixed window size when started the first time.
+ * Updated app icon to follow the new GNOME style.
+ * Rewritten README in markdown, updated screenshots.
+ * Appdata: added release and OARS tags for flathub compatibility. (Tobias Mueller)
+ * version: commit 004b31741a920e4e9ca6af24c7358a635fbe5080 do not use g_ptr_array_copy to avoid a dependency on glib 2.62
+
+ -- Dariusz Duma Tue, 10 Mar 2020 06:22:09 +0100
+
gthumb (3:3.8.3-1dhor~eoan) eoan; urgency=medium
* App icons: name the app icons with the application id (!77)
diff -Nru gthumb-3.8.3/debian/control gthumb-3.9.1/debian/control
--- gthumb-3.8.3/debian/control 2019-09-01 19:19:50.000000000 +0000
+++ gthumb-3.9.1/debian/control 2020-03-10 05:22:09.000000000 +0000
@@ -12,6 +12,10 @@
libdbus-glib-1-dev,
libexiv2-dev,
libgstreamer-plugins-base1.0-dev,
+ libchamplain-gtk-0.12-dev,
+ libchamplain-0.12-dev,
+ libcolord-gtk-dev,
+ libcolord-dev,
libgstreamer1.0-dev,
libgtk-3-dev,
libraw-dev,
diff -Nru gthumb-3.8.3/debian/patches/3.9.1---build-for-lower-glib-version gthumb-3.9.1/debian/patches/3.9.1---build-for-lower-glib-version
--- gthumb-3.8.3/debian/patches/3.9.1---build-for-lower-glib-version 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/debian/patches/3.9.1---build-for-lower-glib-version 2020-03-10 05:22:09.000000000 +0000
@@ -0,0 +1,5967 @@
+--- /dev/null
++++ gthumb-3.9.1/data/icons/private/hicolor/16x16/actions/lock-symbolic.svg
+@@ -0,0 +1,116 @@
++
++
++
++
+--- gthumb-3.9.1.orig/data/ui/file-selection-info.ui
++++ gthumb-3.9.1/data/ui/file-selection-info.ui
+@@ -2,28 +2,76 @@
+
+
+
+-
++
+ True
+ False
+- True
+- vertical
+
+
+ True
+ False
+- 6
++ vertical
+
+-
++
+ True
+- True
+- True
+- Previous
++ False
++ 6
++
++
++ True
++ True
++ True
++ Previous
++
++
++ True
++ False
++ go-previous-symbolic
++
++
++
++
++ False
++ True
++ 0
++
++
+
+-
++
+ True
+ False
+- go-previous-symbolic
++ True
++ word-char
++ 30
++ 0.5
++
++
++
++
++
++ True
++ True
++ 1
++
++
++
++
++ True
++ True
++ True
++ Next
++
++
++ True
++ False
++ go-next-symbolic
++
++
+
++
++ False
++ True
++ 2
++
+
+
+
+@@ -33,49 +81,19 @@
+
+
+
+-
++
+ True
+ False
+- True
+- word-char
+- 30
+- 0.5
+-
+-
+-
+-
+-
+- True
+- True
+- 1
+-
+-
+-
+-
+- True
+- True
+- True
+- Next
+-
+-
+- True
+- False
+- go-next-symbolic
+-
+-
++ 10
++ 10
+
+
+ False
+ True
+- 2
++ 1
+
+
+
+-
+- False
+- True
+- 0
+-
+
+
+
+--- gthumb-3.9.1.orig/data/ui/meson.build
++++ gthumb-3.9.1/data/ui/meson.build
+@@ -2,6 +2,7 @@ ui_files = files(
+ 'browser-preferences.ui',
+ 'extensions-preferences.ui',
+ 'favorite-properties.ui',
++ 'file-selection-info.ui',
+ 'filter-editor.ui',
+ 'histogram-info.ui',
+ 'location.ui',
+--- gthumb-3.9.1.orig/extensions/catalogs/data/ui/add-to-catalog.ui
++++ gthumb-3.9.1/extensions/catalogs/data/ui/add-to-catalog.ui
+@@ -1,5 +1,5 @@
+
+-
++
+
+
+
+@@ -114,21 +114,5 @@
+ 2
+
+
+-
+-
+- _Keep the dialog open
+- True
+- True
+- False
+- start
+- True
+- True
+-
+-
+- False
+- True
+- 3
+-
+-
+
+
+--- gthumb-3.9.1.orig/extensions/catalogs/dlg-add-to-catalog.c
++++ gthumb-3.9.1/extensions/catalogs/dlg-add-to-catalog.c
+@@ -85,6 +85,7 @@ typedef struct {
+ GthBrowser *browser;
+ GtkBuilder *builder;
+ GtkWidget *dialog;
++ GtkWidget *keep_open_checkbutton;
+ GtkWidget *source_tree;
+ GtkWidget *info;
+ AddData *add_data;
+@@ -260,7 +261,7 @@ static void
+ add_button_clicked_cb (GtkWidget *widget,
+ DialogData *data)
+ {
+- add_selection_to_catalog (data, ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_open_checkbutton"))));
++ add_selection_to_catalog (data, ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->keep_open_checkbutton)));
+ }
+
+
+@@ -276,8 +277,8 @@ update_sensitivity (DialogData *data)
+ items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (data->browser)));
+ can_add = (items != NULL) && (selected_catalog != NULL);
+ gtk_dialog_set_response_sensitive (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, can_add);
+- gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (GET_WIDGET ("view_destination_checkbutton")), gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_open_checkbutton"))));
+- gtk_widget_set_sensitive (GET_WIDGET ("view_destination_checkbutton"), ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_open_checkbutton"))));
++ gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (GET_WIDGET ("view_destination_checkbutton")), gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->keep_open_checkbutton)));
++ gtk_widget_set_sensitive (GET_WIDGET ("view_destination_checkbutton"), ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->keep_open_checkbutton)));
+
+ file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (data->browser)), items);
+ gth_file_selection_info_set_file_list (GTH_FILE_SELECTION_INFO (data->info), file_data_list);
+@@ -659,6 +660,8 @@ static void
+ keep_open_button_toggled_cb (GtkToggleButton *button,
+ DialogData *data)
+ {
++ gth_file_selection_info_set_visible (GTH_FILE_SELECTION_INFO (data->info),
++ gtk_toggle_button_get_active (button));
+ update_sensitivity (data);
+ }
+
+@@ -669,7 +672,6 @@ dlg_add_to_catalog (GthBrowser *browser)
+ DialogData *data;
+ GtkTreeSelection *selection;
+ char *last_catalog;
+- GtkWidget *sep;
+
+ if (gth_browser_get_dialog (browser, ADD_TO_CATALOG_DIALOG_NAME)) {
+ gtk_window_present (GTK_WINDOW (gth_browser_get_dialog (browser, ADD_TO_CATALOG_DIALOG_NAME)));
+@@ -697,24 +699,22 @@ dlg_add_to_catalog (GthBrowser *browser)
+ FALSE,
+ 0);
+
+- sep = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
+- gtk_widget_show (sep);
+- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (data->dialog))),
+- sep,
+- FALSE,
+- FALSE,
+- 5);
+-
+ gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (data->dialog))),
+ GET_WIDGET ("dialog_content"),
+- FALSE,
+- FALSE,
++ TRUE,
++ TRUE,
+ 0);
+
+ gtk_dialog_add_buttons (GTK_DIALOG (data->dialog),
+ _GTK_LABEL_CLOSE, GTK_RESPONSE_CANCEL,
+ _("_Add"), GTK_RESPONSE_OK,
+ NULL);
++
++ data->keep_open_checkbutton = _gtk_toggle_image_button_new_for_header_bar ("lock-symbolic");
++ gtk_widget_set_tooltip_text (data->keep_open_checkbutton, _("Keep the dialog open"));
++ gtk_widget_show (data->keep_open_checkbutton);
++ _gtk_dialog_add_action_widget (GTK_DIALOG (data->dialog), data->keep_open_checkbutton);
++
+ _gtk_dialog_add_class_to_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, GTK_STYLE_CLASS_SUGGESTED_ACTION);
+
+ gth_browser_set_dialog (browser, ADD_TO_CATALOG_DIALOG_NAME, data->dialog);
+@@ -760,7 +760,7 @@ dlg_add_to_catalog (GthBrowser *browser)
+ "clicked",
+ G_CALLBACK (new_library_button_clicked_cb),
+ data);
+- g_signal_connect (G_OBJECT (GET_WIDGET ("keep_open_checkbutton")),
++ g_signal_connect (data->keep_open_checkbutton,
+ "toggled",
+ G_CALLBACK (keep_open_button_toggled_cb),
+ data);
+--- gthumb-3.9.1.orig/extensions/edit_metadata/dlg-edit-metadata.c
++++ gthumb-3.9.1/extensions/edit_metadata/dlg-edit-metadata.c
+@@ -33,6 +33,8 @@ typedef struct {
+ int ref;
+ GthBrowser *browser;
+ GtkWidget *dialog;
++ GtkWidget *keep_open_checkbutton;
++ GtkWidget *info;
+ char *dialog_name;
+ GList *file_list; /* GthFileData list */
+ GList *parents;
+@@ -165,7 +167,7 @@ edit_metadata_dialog__response_cb (GtkDi
+ if (data->file_list == NULL)
+ return;
+
+- data->close_dialog = ! gth_edit_metadata_dialog_get_keep_open (GTH_EDIT_METADATA_DIALOG (data->dialog));
++ data->close_dialog = ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->keep_open_checkbutton));
+
+ /* get the parents list */
+
+@@ -239,6 +241,7 @@ loader_completed_cb (GthTask *task,
+ _g_object_list_unref (data->file_list);
+ data->file_list = _g_object_list_ref (gth_load_file_data_task_get_result (GTH_LOAD_FILE_DATA_TASK (task)));
+
++ gth_file_selection_info_set_file_list (GTH_FILE_SELECTION_INFO (data->info), data->file_list);
+ gth_edit_metadata_dialog_set_file_list (GTH_EDIT_METADATA_DIALOG (data->dialog), data->file_list);
+
+ gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (data->browser));
+@@ -299,6 +302,15 @@ file_selection_changed_cb (GthFileSelect
+ }
+
+
++static void
++keep_open_button_toggled_cb (GtkToggleButton *button,
++ DialogData *data)
++{
++ gth_file_selection_info_set_visible (GTH_FILE_SELECTION_INFO (data->info),
++ gtk_toggle_button_get_active (button));
++}
++
++
+ void
+ dlg_edit_metadata (GthBrowser *browser,
+ GType dialog_type,
+@@ -322,11 +334,20 @@ dlg_edit_metadata (GthBrowser *browser,
+ data->dialog_name = g_strdup (dialog_name);
+ data->never_shown = TRUE;
+
++ data->info = gth_file_selection_info_new ();
++ gtk_widget_show (data->info);
++ gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (data->dialog))), data->info, FALSE, FALSE, 0);
++
+ gtk_dialog_add_buttons (GTK_DIALOG (data->dialog),
+ _GTK_LABEL_CLOSE, GTK_RESPONSE_CANCEL,
+ _GTK_LABEL_SAVE, GTK_RESPONSE_OK,
+ NULL);
+
++ data->keep_open_checkbutton = _gtk_toggle_image_button_new_for_header_bar ("lock-symbolic");
++ gtk_widget_set_tooltip_text (data->keep_open_checkbutton, _("Keep the dialog open"));
++ gtk_widget_show (data->keep_open_checkbutton);
++ _gtk_dialog_add_action_widget (GTK_DIALOG (data->dialog), data->keep_open_checkbutton);
++
+ _gtk_dialog_add_class_to_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, GTK_STYLE_CLASS_SUGGESTED_ACTION);
+ gth_browser_set_dialog (browser, data->dialog_name, data->dialog);
+
+@@ -338,6 +359,10 @@ dlg_edit_metadata (GthBrowser *browser,
+ "response",
+ G_CALLBACK (edit_metadata_dialog__response_cb),
+ data);
++ g_signal_connect (data->keep_open_checkbutton,
++ "toggled",
++ G_CALLBACK (keep_open_button_toggled_cb),
++ data);
+ data->file_selection_changed_event =
+ g_signal_connect (gth_browser_get_file_list_view (data->browser),
+ "file-selection-changed",
+--- gthumb-3.9.1.orig/extensions/edit_metadata/gth-edit-comment-dialog.c
++++ gthumb-3.9.1/extensions/edit_metadata/gth-edit-comment-dialog.c
+@@ -28,8 +28,6 @@
+ struct _GthEditCommentDialogPrivate {
+ GtkWidget *notebook;
+ GtkWidget *save_changed_checkbutton;
+- GtkWidget *keep_open_check_button;
+- GtkWidget *info;
+ };
+
+
+@@ -54,8 +52,6 @@ gth_edit_comment_dialog_set_file_list (G
+ GList *pages;
+ GList *scan;
+
+- gth_file_selection_info_set_file_list (GTH_FILE_SELECTION_INFO (self->priv->info), file_list);
+-
+ /* update the widgets */
+
+ n_files = g_list_length (file_list);
+@@ -101,20 +97,11 @@ gth_edit_comment_dialog_update_info (Gth
+ }
+
+
+-static gboolean
+-gth_edit_comment_dialog_get_keep_open (GthEditMetadataDialog *base)
+-{
+- GthEditCommentDialog *self = GTH_EDIT_COMMENT_DIALOG (base);
+- return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->priv->keep_open_check_button));
+-}
+-
+-
+ static void
+ gth_edit_comment_dialog_gth_edit_metadata_dialog_interface_init (GthEditMetadataDialogInterface *iface)
+ {
+ iface->set_file_list = gth_edit_comment_dialog_set_file_list;
+ iface->update_info = gth_edit_comment_dialog_update_info;
+- iface->get_keep_open = gth_edit_comment_dialog_get_keep_open;
+ }
+
+
+@@ -142,11 +129,7 @@ gth_edit_comment_dialog_init (GthEditCom
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 0);
+ gtk_widget_show (vbox);
+- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), vbox, TRUE, TRUE, 0);
+-
+- self->priv->info = gth_file_selection_info_new ();
+- gtk_widget_show (self->priv->info);
+- gtk_box_pack_start (GTK_BOX (vbox), self->priv->info, FALSE, FALSE, 0);
++ gtk_box_pack_end (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), vbox, TRUE, TRUE, 0);
+
+ self->priv->notebook = gtk_notebook_new ();
+ gtk_widget_show (self->priv->notebook);
+@@ -156,10 +139,6 @@ gth_edit_comment_dialog_init (GthEditCom
+ gtk_widget_show (self->priv->save_changed_checkbutton);
+ gtk_box_pack_start (GTK_BOX (vbox), self->priv->save_changed_checkbutton, FALSE, FALSE, 0);
+
+- self->priv->keep_open_check_button = gtk_check_button_new_with_mnemonic (_("_Keep the dialog open"));
+- gtk_widget_show (self->priv->keep_open_check_button);
+- gtk_box_pack_start (GTK_BOX (vbox), self->priv->keep_open_check_button, FALSE, FALSE, 0);
+-
+ pages = gth_main_get_type_set ("edit-comment-dialog-page");
+ if (pages == NULL)
+ return;
+--- gthumb-3.9.1.orig/extensions/edit_metadata/gth-edit-metadata-dialog.c
++++ gthumb-3.9.1/extensions/edit_metadata/gth-edit-metadata-dialog.c
+@@ -48,9 +48,3 @@ gth_edit_metadata_dialog_update_info (Gt
+ GTH_EDIT_METADATA_DIALOG_GET_INTERFACE (self)->update_info (self, file_list);
+ }
+
+-
+-gboolean
+-gth_edit_metadata_dialog_get_keep_open (GthEditMetadataDialog *self)
+-{
+- return GTH_EDIT_METADATA_DIALOG_GET_INTERFACE (self)->get_keep_open (self);
+-}
+--- gthumb-3.9.1.orig/extensions/edit_metadata/gth-edit-metadata-dialog.h
++++ gthumb-3.9.1/extensions/edit_metadata/gth-edit-metadata-dialog.h
+@@ -41,7 +41,6 @@ struct _GthEditMetadataDialogInterface {
+ GList *file_list /* GthFileData list */);
+ void (*update_info) (GthEditMetadataDialog *dialog,
+ GList *file_list /* GthFileData list */);
+- gboolean (*get_keep_open) (GthEditMetadataDialog *dialog);
+ };
+
+ /* GthEditMetadataDialog */
+@@ -51,7 +50,6 @@ void gth_edit_metadata_dialog_
+ GList *file_list /* GthFileData list */);
+ void gth_edit_metadata_dialog_update_info (GthEditMetadataDialog *dialog,
+ GList *file_list /* GthFileData list */);
+-gboolean gth_edit_metadata_dialog_get_keep_open (GthEditMetadataDialog *dialog);
+
+ G_END_DECLS
+
+--- gthumb-3.9.1.orig/extensions/edit_metadata/gth-edit-tags-dialog.c
++++ gthumb-3.9.1/extensions/edit_metadata/gth-edit-tags-dialog.c
+@@ -32,8 +32,6 @@
+ struct _GthEditTagsDialogPrivate {
+ GtkBuilder *builder;
+ GtkWidget *tags_entry;
+- GtkWidget *keep_open_check_button;
+- GtkWidget *info;
+ };
+
+
+@@ -70,8 +68,6 @@ gth_edit_tags_dialog_set_file_list (GthE
+ GList *common_tags_list;
+ GList *no_common_tags_list;
+
+- gth_file_selection_info_set_file_list (GTH_FILE_SELECTION_INFO (self->priv->info), file_list);
+-
+ /* update the tag entry */
+
+ utils_get_common_tags (file_list, &common_tags, &no_common_tags);
+@@ -147,20 +143,11 @@ gth_edit_tags_dialog_update_info (GthEdi
+ }
+
+
+-static gboolean
+-gth_edit_tags_dialog_get_keep_open (GthEditMetadataDialog *base)
+-{
+- GthEditTagsDialog *self = GTH_EDIT_TAGS_DIALOG (base);
+- return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->priv->keep_open_check_button));
+-}
+-
+-
+ static void
+ gth_edit_tags_dialog_gth_edit_metadata_dialog_interface_init (GthEditMetadataDialogInterface *iface)
+ {
+ iface->set_file_list = gth_edit_tags_dialog_set_file_list;
+ iface->update_info = gth_edit_tags_dialog_update_info;
+- iface->get_keep_open = gth_edit_tags_dialog_get_keep_open;
+ }
+
+
+@@ -177,9 +164,6 @@ gth_edit_tags_dialog_class_init (GthEdit
+ static void
+ gth_edit_tags_dialog_init (GthEditTagsDialog *self)
+ {
+- GtkWidget *box;
+- GtkWidget *sep;
+-
+ self->priv = gth_edit_tags_dialog_get_instance_private (self);
+ self->priv->builder = _gtk_builder_new_from_file ("tag-chooser.ui", "edit_metadata");
+
+@@ -195,22 +179,5 @@ gth_edit_tags_dialog_init (GthEditTagsDi
+ gtk_widget_show (self->priv->tags_entry);
+ gtk_box_pack_start (GTK_BOX (GET_WIDGET ("tag_entry_box")), self->priv->tags_entry, TRUE, TRUE, 0);
+
+- box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
+-
+- self->priv->info = gth_file_selection_info_new ();
+- gtk_widget_show (self->priv->info);
+- gtk_box_pack_start (GTK_BOX (box), self->priv->info, FALSE, FALSE, 0);
+-
+- sep = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
+- gtk_widget_show (sep);
+- gtk_box_pack_start (GTK_BOX (box), sep, FALSE, FALSE, 0);
+-
+- gtk_box_pack_start (GTK_BOX (box), GET_WIDGET ("content"), TRUE, TRUE, 0);
+-
+- self->priv->keep_open_check_button = gtk_check_button_new_with_mnemonic (_("_Keep the dialog open"));
+- gtk_widget_show (self->priv->keep_open_check_button);
+- gtk_box_pack_start (GTK_BOX (box), self->priv->keep_open_check_button, FALSE, FALSE, 0);
+-
+- gtk_widget_show (box);
+- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), box, TRUE, TRUE, 0);
++ gtk_box_pack_end (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), GET_WIDGET ("content"), TRUE, TRUE, 0);
+ }
+--- gthumb-3.9.1.orig/extensions/list_tools/dlg-personalize-scripts.c
++++ gthumb-3.9.1/extensions/list_tools/dlg-personalize-scripts.c
+@@ -372,9 +372,9 @@ script_editor_dialog__response_cb (GtkDi
+
+ /* update the shortcuts */
+
+- shortcuts_v = g_ptr_array_copy (gth_window_get_shortcuts (GTH_WINDOW (data->browser)),
++ shortcuts_v = _g_ptr_array_dup (gth_window_get_shortcuts (GTH_WINDOW (data->browser)),
+ (GCopyFunc) gth_shortcut_dup,
+- NULL);
++ (GDestroyNotify) gth_shortcut_free);
+
+ /* If another shortcut has the same accelerator, reset the accelerator
+ * for that shortcut. */
+@@ -522,9 +522,9 @@ delete_script_cb (GtkButton *button,
+
+ /* update the shortcuts */
+
+- shortcuts_v = g_ptr_array_copy (gth_window_get_shortcuts (GTH_WINDOW (data->browser)),
++ shortcuts_v = _g_ptr_array_dup (gth_window_get_shortcuts (GTH_WINDOW (data->browser)),
+ (GCopyFunc) gth_shortcut_dup,
+- NULL);
++ (GDestroyNotify) gth_shortcut_free);
+
+ shortcut = gth_shortcut_array_find_by_action (shortcuts_v, gth_script_get_detailed_action (script));
+ if (shortcut != NULL)
+--- gthumb-3.9.1.orig/gthumb/dlg-preferences-shortcuts.c
++++ gthumb-3.9.1/gthumb/dlg-preferences-shortcuts.c
+@@ -529,8 +529,7 @@ shortcuts__dlg_preferences_construct_cb
+ GtkTreeIter iter;
+ int i;
+
+- category_v = g_ptr_array_copy (gth_main_get_shortcut_categories (), NULL, NULL);
+- g_ptr_array_set_free_func (category_v, NULL);
++ category_v = _g_ptr_array_dup (gth_main_get_shortcut_categories (), NULL, NULL);
+ g_ptr_array_sort (category_v, cmp_category);
+
+ list_store = (GtkListStore *) gtk_builder_get_object (data->builder, "category_liststore");
+--- gthumb-3.9.1.orig/gthumb/glib-utils.c
++++ gthumb-3.9.1/gthumb/glib-utils.c
+@@ -853,6 +853,32 @@ _g_string_array_join (GPtrArray *array,
+ }
+
+
++GPtrArray *
++_g_ptr_array_dup (GPtrArray *array,
++ GCopyFunc copy_func,
++ GDestroyNotify free_func)
++{
++ GPtrArray *new_array;
++ int i;
++
++ g_return_val_if_fail (array != NULL, NULL);
++
++ new_array = g_ptr_array_sized_new (array->len);
++ g_ptr_array_set_free_func (new_array, free_func);
++
++ if (copy_func != NULL)
++ for (i = 0; i < array->len; i++)
++ new_array->pdata[i] = copy_func (array->pdata[i], NULL);
++ else
++ for (i = 0; i < array->len; i++)
++ new_array->pdata[i] = array->pdata[i];
++
++ new_array->len = array->len;
++
++ return new_array;
++}
++
++
+ /* Regexp utils */
+
+
+--- gthumb-3.9.1.orig/gthumb/glib-utils.h
++++ gthumb-3.9.1/gthumb/glib-utils.h
+@@ -213,6 +213,9 @@ GType g_string_list_get_type (void);
+
+ char * _g_string_array_join (GPtrArray *array,
+ const char *separator);
++GPtrArray * _g_ptr_array_dup (GPtrArray *array,
++ GCopyFunc copy_func,
++ GDestroyNotify free_func);
+
+ /* Regexp utils */
+
+--- gthumb-3.9.1.orig/gthumb/gth-browser.c
++++ gthumb-3.9.1/gthumb/gth-browser.c
+@@ -1076,7 +1076,7 @@ _gth_browser_update_activity (GthBrowser
+ if (browser->priv->activity_ref == 1) {
+ GdkCursor *cursor = gdk_cursor_new_from_name (gtk_widget_get_display (GTK_WIDGET (browser)), "progress");
+ gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (browser)), cursor);
+- gdk_cursor_unref (cursor);
++ g_object_unref (cursor);
+ }
+ }
+ else {
+@@ -1084,7 +1084,7 @@ _gth_browser_update_activity (GthBrowser
+ if (browser->priv->activity_ref == 0) {
+ GdkCursor *cursor = gdk_cursor_new_from_name (gtk_widget_get_display (GTK_WIDGET (browser)), "default");
+ gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (browser)), cursor);
+- gdk_cursor_unref (cursor);
++ g_object_unref (cursor);
+ }
+ }
+ }
+--- gthumb-3.9.1.orig/gthumb/gth-file-data.c
++++ gthumb-3.9.1/gthumb/gth-file-data.c
+@@ -21,6 +21,7 @@
+
+ #include
+ #include
++#include
+ #include "glib-utils.h"
+ #include "gth-duplicable.h"
+ #include "gth-metadata.h"
+--- gthumb-3.9.1.orig/gthumb/gth-file-selection-info.c
++++ gthumb-3.9.1/gthumb/gth-file-selection-info.c
+@@ -144,3 +144,11 @@ gth_file_selection_info_set_file_list (G
+
+ g_free (title);
+ }
++
++
++void
++gth_file_selection_info_set_visible (GthFileSelectionInfo *self,
++ gboolean visible)
++{
++ gtk_revealer_set_reveal_child (GTK_REVEALER (GET_WIDGET ("content")), visible);
++}
+--- gthumb-3.9.1.orig/gthumb/gth-file-selection-info.h
++++ gthumb-3.9.1/gthumb/gth-file-selection-info.h
+@@ -51,6 +51,8 @@ GType gth_file_selection_info_get_type
+ GtkWidget * gth_file_selection_info_new (void);
+ void gth_file_selection_info_set_file_list (GthFileSelectionInfo *self,
+ GList *file_list);
++void gth_file_selection_info_set_visible (GthFileSelectionInfo *self,
++ gboolean visible);
+
+ G_END_DECLS
+
+--- gthumb-3.9.1.orig/gthumb/gtk-utils.c
++++ gthumb-3.9.1/gthumb/gtk-utils.c
+@@ -284,6 +284,24 @@ _gtk_dialog_add_class_to_response (GtkDi
+ }
+
+
++void
++_gtk_dialog_add_action_widget (GtkDialog *dialog,
++ GtkWidget *button)
++{
++ if (gtk_dialog_get_header_bar (dialog)) {
++ GtkWidget *headerbar = gtk_dialog_get_header_bar (dialog);
++
++ gtk_container_add (GTK_CONTAINER (headerbar), button);
++ gtk_container_child_set (GTK_CONTAINER (headerbar),
++ button,
++ "pack-type", GTK_PACK_END,
++ NULL);
++ }
++ else
++ gtk_container_add (GTK_CONTAINER (gtk_dialog_get_action_area (dialog)), button);
++}
++
++
+ GdkPixbuf *
+ _g_icon_get_pixbuf (GIcon *icon,
+ int icon_size,
+--- gthumb-3.9.1.orig/gthumb/gtk-utils.h
++++ gthumb-3.9.1/gthumb/gtk-utils.h
+@@ -108,6 +108,8 @@ void _gtk_dialog_add_to_windo
+ void _gtk_dialog_add_class_to_response (GtkDialog *dialog,
+ int respose_id,
+ const char *class_name);
++void _gtk_dialog_add_action_widget (GtkDialog *dialog,
++ GtkWidget *button);
+ GdkPixbuf * _g_icon_get_pixbuf (GIcon *icon,
+ int icon_size,
+ GtkIconTheme *icon_theme);
+--- gthumb-3.9.1.orig/meson.build
++++ gthumb-3.9.1/meson.build
+@@ -4,7 +4,7 @@ project('gthumb', ['c', 'cpp'],
+ meson_version : '>=0.43'
+ )
+
+-glib_version = '>=2.38.0'
++glib_version = '>=2.54.0'
+ gtk_version = '>=3.16'
+ exiv2_version = '>=0.21'
+ clutter_version = '>=1.12.0'
+--- gthumb-3.9.1.orig/po/es.po
++++ gthumb-3.9.1/po/es.po
+@@ -13,8 +13,8 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: gthumb.master\n"
+ "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gthumb/issues\n"
+-"POT-Creation-Date: 2020-03-01 20:18+0000\n"
+-"PO-Revision-Date: 2020-03-03 16:25+0100\n"
++"POT-Creation-Date: 2020-03-08 11:24+0000\n"
++"PO-Revision-Date: 2020-03-09 13:11+0100\n"
+ "Last-Translator: Daniel Mustieles \n"
+ "Language-Team: Spanish - Spain \n"
+ "Language: es_ES\n"
+@@ -231,12 +231,12 @@ msgstr "_Extensiones:"
+ msgid "More extensions…"
+ msgstr "Más extensiones…"
+
+-#: data/ui/file-selection-info.ui:33
++#: data/ui/file-selection-info.ui:23
+ #: extensions/webalbums/data/albumthemes/text.h:32
+ msgid "Previous"
+ msgstr "Anterior"
+
+-#: data/ui/file-selection-info.ui:71
++#: data/ui/file-selection-info.ui:61
+ #: extensions/webalbums/data/albumthemes/text.h:30
+ msgid "Next"
+ msgstr "Siguiente"
+@@ -662,8 +662,8 @@ msgid "Saving"
+ msgstr "Guardando"
+
+ #: extensions/catalogs/actions.c:89 extensions/catalogs/actions.c:212
+-#: extensions/catalogs/dlg-add-to-catalog.c:373
+-#: extensions/catalogs/dlg-add-to-catalog.c:538
++#: extensions/catalogs/dlg-add-to-catalog.c:376
++#: extensions/catalogs/dlg-add-to-catalog.c:541
+ #: extensions/file_manager/actions.c:71
+ #: extensions/file_tools/gth-file-tool-curves.c:373
+ #: extensions/list_tools/gth-script-editor-dialog.c:273
+@@ -673,8 +673,8 @@ msgid "No name specified"
+ msgstr "No se especificó ningún nombre"
+
+ #: extensions/catalogs/actions.c:96 extensions/catalogs/actions.c:219
+-#: extensions/catalogs/dlg-add-to-catalog.c:380
+-#: extensions/catalogs/dlg-add-to-catalog.c:545
++#: extensions/catalogs/dlg-add-to-catalog.c:383
++#: extensions/catalogs/dlg-add-to-catalog.c:548
+ #: extensions/file_manager/actions.c:78
+ #: extensions/file_tools/gth-file-tool-curves.c:380
+ #: gthumb/gth-folder-tree.c:1931
+@@ -683,8 +683,8 @@ msgid "Invalid name. The following chara
+ msgstr "Nombre no válido. Los siguientes caracteres no están permitidos: %s"
+
+ #: extensions/catalogs/actions.c:152 extensions/catalogs/actions.c:266
+-#: extensions/catalogs/dlg-add-to-catalog.c:437
+-#: extensions/catalogs/dlg-add-to-catalog.c:594
++#: extensions/catalogs/dlg-add-to-catalog.c:440
++#: extensions/catalogs/dlg-add-to-catalog.c:597
+ #: extensions/catalogs/gth-file-source-catalogs.c:516
+ #: extensions/file_manager/actions.c:109
+ msgid "Name already used"
+@@ -695,13 +695,13 @@ msgid "New catalog"
+ msgstr "Catálogo nuevo"
+
+ #: extensions/catalogs/actions.c:178
+-#: extensions/catalogs/dlg-add-to-catalog.c:459
++#: extensions/catalogs/dlg-add-to-catalog.c:462
+ msgid "Enter the catalog name:"
+ msgstr "Introduzca el nombre del catálogo:"
+
+ #: extensions/catalogs/actions.c:180 extensions/catalogs/actions.c:294
+-#: extensions/catalogs/dlg-add-to-catalog.c:461
+-#: extensions/catalogs/dlg-add-to-catalog.c:620
++#: extensions/catalogs/dlg-add-to-catalog.c:464
++#: extensions/catalogs/dlg-add-to-catalog.c:623
+ #: extensions/file_manager/actions.c:140
+ msgid "C_reate"
+ msgstr "C_rear"
+@@ -711,7 +711,7 @@ msgid "New library"
+ msgstr "Biblioteca nueva"
+
+ #: extensions/catalogs/actions.c:292
+-#: extensions/catalogs/dlg-add-to-catalog.c:618
++#: extensions/catalogs/dlg-add-to-catalog.c:621
+ msgid "Enter the library name:"
+ msgstr "Introduzca el nombre de la biblioteca: "
+
+@@ -754,7 +754,7 @@ msgstr "Renombrar"
+
+ #: extensions/catalogs/callbacks.c:78
+ #: extensions/catalogs/dlg-catalog-properties.c:205 gthumb/gth-browser.c:4553
+-#: gthumb/gth-browser.c:4655 gthumb/gth-file-properties.c:245
++#: gthumb/gth-browser.c:4655 gthumb/gth-file-properties.c:258
+ msgid "Properties"
+ msgstr "Propiedades"
+
+@@ -794,12 +794,12 @@ msgid "C_atalogs:"
+ msgstr "C_atálogos:"
+
+ #: extensions/catalogs/data/ui/add-to-catalog.ui:34
+-#: extensions/catalogs/dlg-add-to-catalog.c:617
++#: extensions/catalogs/dlg-add-to-catalog.c:620
+ msgid "New Library"
+ msgstr "Biblioteca nueva"
+
+ #: extensions/catalogs/data/ui/add-to-catalog.ui:57
+-#: extensions/catalogs/dlg-add-to-catalog.c:458
++#: extensions/catalogs/dlg-add-to-catalog.c:461
+ msgid "New Catalog"
+ msgstr "Catálogo nuevo"
+
+@@ -809,12 +809,6 @@ msgstr "Catálogo nuevo"
+ msgid "_View the destination"
+ msgstr "_Ver el destino"
+
+-#: extensions/catalogs/data/ui/add-to-catalog.ui:119
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:159
+-#: extensions/edit_metadata/gth-edit-tags-dialog.c:202
+-msgid "_Keep the dialog open"
+-msgstr "_Mantener el diálogo abierto"
+-
+ #: extensions/catalogs/data/ui/catalog-properties.ui:68
+ #: extensions/contact_sheet/data/ui/contact-sheet-theme-properties.ui:53
+ #: extensions/facebook/data/ui/facebook-album-properties.ui:45
+@@ -884,23 +878,29 @@ msgstr "Poner archivos sueltos en el cat
+ msgid "Singles"
+ msgstr "Simples"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:155
++#: extensions/catalogs/dlg-add-to-catalog.c:156
+ msgid "Could not add the files to the catalog"
+ msgstr "No se pudieron añadir los archivos al catálogo"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:316
++#: extensions/catalogs/dlg-add-to-catalog.c:319
+ #: extensions/search/gth-search-task.c:402
+ msgid "Could not create the catalog"
+ msgstr "No se pudo crear el catálogo"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:682
++#: extensions/catalogs/dlg-add-to-catalog.c:687
+ msgid "Add to Catalog"
+ msgstr "Añadir al catálogo"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:697
++#: extensions/catalogs/dlg-add-to-catalog.c:710
+ msgid "_Add"
+ msgstr "_Añadir"
+
++#: extensions/catalogs/dlg-add-to-catalog.c:714
++#: extensions/edit_metadata/dlg-edit-metadata.c:347
++#| msgid "_Keep the dialog open"
++msgid "Keep the dialog open"
++msgstr "Mantener el diálogo abierto"
++
+ #: extensions/catalogs/dlg-catalog-properties.c:80
+ msgid "Could not save the catalog"
+ msgstr "No se pudo guardar el catálogo"
+@@ -953,7 +953,7 @@ msgstr "Formato de archivo no válido"
+ #: extensions/edit_metadata/callbacks.c:57
+ #: extensions/edit_metadata/callbacks.c:94
+ #: extensions/edit_metadata/callbacks.c:107
+-#: extensions/edit_metadata/gth-edit-tags-dialog.c:185
++#: extensions/edit_metadata/gth-edit-tags-dialog.c:170
+ #: gthumb/gth-main-default-metadata.c:65
+ msgid "Tags"
+ msgstr "Etiquetas"
+@@ -1093,14 +1093,15 @@ msgstr "_Sincronizar con los metadatos e
+ #: extensions/importer/gth-import-preferences-dialog.c:417
+ #: extensions/photo_importer/dlg-photo-importer-preferences.c:78
+ #: extensions/terminal/dlg-terminal-preferences.c:83
+-#: gthumb/dlg-preferences-extensions.c:483
++#: gthumb/dlg-favorite-properties.c:99 gthumb/dlg-preferences-extensions.c:483
++#: gthumb/gth-file-properties.c:548
+ msgid "Preferences"
+ msgstr "Preferencias"
+
+ #: extensions/comments/main.c:37 extensions/edit_metadata/callbacks.c:56
+ #: extensions/edit_metadata/callbacks.c:88
+ #: extensions/edit_metadata/callbacks.c:101
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:137
++#: extensions/edit_metadata/gth-edit-comment-dialog.c:124
+ #: gthumb/gth-file-comment.c:136
+ msgid "Comment"
+ msgstr "Comentario"
+@@ -1572,11 +1573,11 @@ msgstr "P_untuación:"
+ msgid "_Title:"
+ msgstr "Tít_ulo:"
+
+-#: extensions/edit_metadata/dlg-edit-metadata.c:121
++#: extensions/edit_metadata/dlg-edit-metadata.c:123
+ msgid "Could not save the file metadata"
+ msgstr "No se pudieron guardar los metadatos del archivo"
+
+-#: extensions/edit_metadata/dlg-edit-metadata.c:230
++#: extensions/edit_metadata/dlg-edit-metadata.c:234
+ #: gthumb/gth-overwrite-dialog.c:184
+ msgid "Cannot read file information"
+ msgstr "No se puede leer la información del archivo"
+@@ -1589,7 +1590,7 @@ msgstr "Editar metadatos"
+ msgid "Allow to edit files metadata."
+ msgstr "Permitir la edición de los metadatos de los archivos."
+
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:155
++#: extensions/edit_metadata/gth-edit-comment-dialog.c:138
+ msgid "Save only cha_nged fields"
+ msgstr "Guardar sólo ca_mpos alterados"
+
+@@ -1681,7 +1682,7 @@ msgid "State/Province:"
+ msgstr "Estado/Provincia:"
+
+ #: extensions/exiv2_tools/exiv2-utils.cpp:47 gthumb/glib-utils.c:1088
+-#: gthumb/glib-utils.c:2053 gthumb/str-utils.c:677
++#: gthumb/glib-utils.c:2053 gthumb/str-utils.c:700
+ msgid "(invalid value)"
+ msgstr "(valor no válido)"
+
+@@ -3189,7 +3190,7 @@ msgstr "Mono"
+ #: extensions/image_viewer/gth-image-viewer-page.c:1864
+ #: extensions/image_viewer/gth-metadata-provider-image.c:258
+ #: extensions/raw_files/gth-metadata-provider-raw.c:96
+-#: extensions/webalbums/gth-web-exporter.c:2434 gthumb/gtk-utils.c:945
++#: extensions/webalbums/gth-web-exporter.c:2434 gthumb/gtk-utils.c:963
+ #, c-format
+ msgid "%d × %d"
+ msgstr "%d × %d"
+@@ -3817,7 +3818,6 @@ msgid "Quote the text "
+ msgstr "Entrecomillar el texto "
+
+ #: extensions/list_tools/data/ui/script-editor.ui:522
+-#| msgid "The current date"
+ msgid "The current date and time"
+ msgstr "La fecha y hora actuales"
+
+@@ -4585,12 +4585,10 @@ msgid "Terminal"
+ msgstr "Terminal"
+
+ #: extensions/terminal/callbacks.c:40 extensions/terminal/callbacks.c:45
+-#| msgid "Open in New Window"
+ msgid "Open in Terminal"
+ msgstr "Abrir en una terminal"
+
+ #: extensions/terminal/terminal.extension.desktop.in.in:4
+-#| msgid "Open the selected folder in a new window"
+ msgid "Open a folder in a terminal"
+ msgstr "Abrir una carpeta en una terminal"
+
+@@ -4829,7 +4827,6 @@ msgid "Could not deactivate the extensio
+ msgstr "No se pudo desactivar la extensión"
+
+ #: gthumb/dlg-preferences-extensions.c:491
+-#| msgid "gthumb development team"
+ msgid "gThumb Development Team"
+ msgstr "equipo de desarrollo de gThumb"
+
+@@ -5347,8 +5344,6 @@ msgstr "Bytes"
+
+ #. Translators: the file modified time.
+ #: gthumb/gth-main-default-metadata.c:43
+-#| msgctxt "the file mtime"
+-#| msgid "Modified Date & Time"
+ msgid "Modified Date & Time"
+ msgstr "Fecha y hora de modificación"
+
+@@ -5679,27 +5674,27 @@ msgstr ""
+ msgid "The key combination «%s» is already assigned and cannot be changed."
+ msgstr "La combinación de teclas «%s» ya está asignada y no se puede cambiar."
+
+-#: gthumb/gtk-utils.c:352
++#: gthumb/gtk-utils.c:370
+ msgid "Could not display help"
+ msgstr "No se pudo mostrar la ayuda"
+
+-#: gthumb/gtk-utils.c:712 gthumb/gtk-utils.c:719
++#: gthumb/gtk-utils.c:730 gthumb/gtk-utils.c:737
+ msgid "Could not launch the application"
+ msgstr "No se pudo lanzar la aplicación"
+
+-#: gthumb/gtk-utils.c:822
++#: gthumb/gtk-utils.c:840
+ msgid "_Copy Here"
+ msgstr "_Copiar aquí"
+
+-#: gthumb/gtk-utils.c:827
++#: gthumb/gtk-utils.c:845
+ msgid "_Move Here"
+ msgstr "_Mover aquí"
+
+-#: gthumb/gtk-utils.c:832
++#: gthumb/gtk-utils.c:850
+ msgid "_Link Here"
+ msgstr "En_lazar aquí"
+
+-#: gthumb/gtk-utils.c:841
++#: gthumb/gtk-utils.c:859
+ msgid "Cancel"
+ msgstr "Cancelar"
+
+--- gthumb-3.9.1.orig/po/id.po
++++ gthumb-3.9.1/po/id.po
+@@ -2,22 +2,22 @@
+ # Copyright (C) 2004 THE gthumb'S COPYRIGHT HOLDER
+ # This file is distributed under the same license as the gthumb package.
+ # Abdul Hamid.A.N , 2004.
+-# Andika Triwidada , 2010-2014, 2016, 2017.
++# Andika Triwidada , 2010-2014, 2016, 2017, 2020.
+ #
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: gthumb master\n"
+ "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gthumb/issues\n"
+-"POT-Creation-Date: 2019-02-24 11:07+0000\n"
+-"PO-Revision-Date: 2019-02-28 14:17+0700\n"
+-"Last-Translator: Kukuh Syafaat \n"
++"POT-Creation-Date: 2020-03-08 13:32+0000\n"
++"PO-Revision-Date: 2020-03-09 13:18+0700\n"
++"Last-Translator: Andika Triwidada \n"
+ "Language-Team: GNOME Indonesian Translation Team \n"
+ "Language: id\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"
+-"X-Generator: Poedit 2.2.1\n"
++"X-Generator: Poedit 2.3\n"
+
+ #: data/appdata/org.gnome.gThumb.appdata.xml.in:8
+ msgid "gThumb Image Viewer"
+@@ -128,19 +128,13 @@ msgstr "Alat Impor Foto"
+ msgid "Import the photos on your camera card"
+ msgstr "Impor foto pada kartu kamera Anda"
+
+-#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
+-#: data/org.gnome.gThumb.Import.desktop.in.in:10
+-#: data/org.gnome.gThumb.desktop.in.in:12
+-msgid "gthumb"
+-msgstr "gthumb"
+-
+ #. manually set name and icon
+ #: data/org.gnome.gThumb.desktop.in.in:3 gthumb/gth-application.c:106
+-#: gthumb/gth-browser.c:396 gthumb/gth-progress-dialog.c:413
++#: gthumb/gth-browser.c:423 gthumb/gth-progress-dialog.c:413
+ msgid "gThumb"
+ msgstr "gThumb"
+
+-#: data/org.gnome.gThumb.desktop.in.in:4
++#: data/org.gnome.gThumb.desktop.in.in:4 extensions/image_viewer/main.c:35
+ msgid "Image Viewer"
+ msgstr "Penampil Gambar"
+
+@@ -155,69 +149,70 @@ msgstr "Citra;Gambar;Penampil;"
+ msgid "Caption"
+ msgstr "Judul"
+
+-#: data/ui/browser-preferences.ui:72
++#: data/ui/browser-preferences.ui:66
+ msgid "Behavior"
+ msgstr "Perilaku"
+
+-#: data/ui/browser-preferences.ui:94
++#: data/ui/browser-preferences.ui:88
+ msgid "_Single click to open files"
+ msgstr "Klik tunggal untuk membuka berka_s"
+
+-#: data/ui/browser-preferences.ui:111
++#: data/ui/browser-preferences.ui:104
+ msgid "_Double click to open files"
+ msgstr "Klik gan_da untuk membuka berkas"
+
+-#: data/ui/browser-preferences.ui:129
++#: data/ui/browser-preferences.ui:121
+ msgid "_Open files in fullscreen mode"
+ msgstr "Buka berkas dalam m_ode layar penuh"
+
+-#: data/ui/browser-preferences.ui:167 data/ui/preferences.ui:364
++#: data/ui/browser-preferences.ui:158 data/ui/preferences.ui:336
+ #: extensions/exiv2_tools/gth-edit-iptc-page.c:199
+-#: extensions/gstreamer_tools/main.c:34
++#: extensions/gstreamer_tools/main.c:41 gthumb/dlg-preferences-shortcuts.c:333
++#: gthumb/gth-shortcuts-window.c:96
+ msgid "Other"
+ msgstr "Lainnya"
+
+-#: data/ui/browser-preferences.ui:200
++#: data/ui/browser-preferences.ui:187
+ msgid "Thumbnail _size:"
+ msgstr "_Ukuran gambar miniatur:"
+
+-#: data/ui/browser-preferences.ui:219
++#: data/ui/browser-preferences.ui:206
+ msgid "48"
+ msgstr "48"
+
+-#: data/ui/browser-preferences.ui:220
++#: data/ui/browser-preferences.ui:207
+ msgid "64"
+ msgstr "64"
+
+-#: data/ui/browser-preferences.ui:221
++#: data/ui/browser-preferences.ui:208
+ msgid "85"
+ msgstr "85"
+
+-#: data/ui/browser-preferences.ui:222
++#: data/ui/browser-preferences.ui:209
+ msgid "95"
+ msgstr "95"
+
+-#: data/ui/browser-preferences.ui:223
++#: data/ui/browser-preferences.ui:210
+ msgid "112"
+ msgstr "112"
+
+-#: data/ui/browser-preferences.ui:224
++#: data/ui/browser-preferences.ui:211
+ msgid "128"
+ msgstr "128"
+
+-#: data/ui/browser-preferences.ui:225
++#: data/ui/browser-preferences.ui:212
+ msgid "164"
+ msgstr "164"
+
+-#: data/ui/browser-preferences.ui:226
++#: data/ui/browser-preferences.ui:213
+ msgid "200"
+ msgstr "200"
+
+-#: data/ui/browser-preferences.ui:227
++#: data/ui/browser-preferences.ui:214
+ msgid "256"
+ msgstr "256"
+
+-#: data/ui/browser-preferences.ui:252
++#: data/ui/browser-preferences.ui:239
+ msgid "D_etermine image type from content (slower)"
+ msgstr "T_entukan jenis gambar dari isinya (lebih lambat)"
+
+@@ -229,20 +224,34 @@ msgstr "_Ekstensi:"
+ msgid "More extensions…"
+ msgstr "Lebih banyak ekstensi…"
+
++#: data/ui/file-selection-info.ui:23
++#: extensions/webalbums/data/albumthemes/text.h:32
++msgid "Previous"
++msgstr "Sebelum"
++
++#: data/ui/file-selection-info.ui:61
++#: extensions/webalbums/data/albumthemes/text.h:30
++msgid "Next"
++msgstr "Selanjutnya"
++
+ #: data/ui/filter-editor.ui:20
+ msgid "Filter _Name:"
+ msgstr "_Nama Tapis:"
+
+-#: data/ui/filter-editor.ui:61 extensions/search/data/ui/search-editor.ui:76
++#: data/ui/filter-editor.ui:61 extensions/search/data/ui/search-editor.ui:21
+ msgid "_Match:"
+ msgstr "_Cocok:"
+
++#: data/ui/filter-editor.ui:106 extensions/search/data/ui/search-editor.ui:95
++msgid "Rules:"
++msgstr "Aturan:"
++
+ #. limit label
+-#: data/ui/filter-editor.ui:153 gthumb/gth-filter.c:270 gthumb/gth-filter.c:338
++#: data/ui/filter-editor.ui:164 gthumb/gth-filter.c:270 gthumb/gth-filter.c:338
+ msgid "_Limit to"
+ msgstr "_Batasi sampai"
+
+-#: data/ui/filter-editor.ui:229
++#: data/ui/filter-editor.ui:241
+ msgid "selected by"
+ msgstr "dipilih oleh"
+
+@@ -288,40 +297,40 @@ msgstr "Timpa berkas lama dengan yang ba
+ msgid "Old File:"
+ msgstr "Berkas Lama:"
+
+-#: data/ui/overwrite-dialog.ui:144 data/ui/overwrite-dialog.ui:312
++#: data/ui/overwrite-dialog.ui:145 data/ui/overwrite-dialog.ui:314
+ msgid "Filename:"
+ msgstr "Nama Berkas:"
+
+-#: data/ui/overwrite-dialog.ui:159 data/ui/overwrite-dialog.ui:327
++#: data/ui/overwrite-dialog.ui:160 data/ui/overwrite-dialog.ui:329
+ #: extensions/image_print/data/ui/print-layout.ui:705
+ msgid "Size:"
+ msgstr "Ukuran:"
+
+-#: data/ui/overwrite-dialog.ui:176 data/ui/overwrite-dialog.ui:344
++#: data/ui/overwrite-dialog.ui:177 data/ui/overwrite-dialog.ui:346
+ msgid "Modified:"
+ msgstr "Diubah:"
+
+-#: data/ui/overwrite-dialog.ui:241
++#: data/ui/overwrite-dialog.ui:242
+ msgid "New File:"
+ msgstr "Berkas Baru:"
+
+-#: data/ui/overwrite-dialog.ui:399
++#: data/ui/overwrite-dialog.ui:401
+ msgid "Over_write the old file"
+ msgstr "Timpa _ulang berkas lama"
+
+-#: data/ui/overwrite-dialog.ui:416
++#: data/ui/overwrite-dialog.ui:418
+ msgid "Do not overwrite _the old file"
+ msgstr "Jangan _timpa berkas lama"
+
+-#: data/ui/overwrite-dialog.ui:433
++#: data/ui/overwrite-dialog.ui:435
+ msgid "Overwrite _all files"
+ msgstr "Timp_a semua berkas"
+
+-#: data/ui/overwrite-dialog.ui:450
++#: data/ui/overwrite-dialog.ui:452
+ msgid "_Do not overwrite any file"
+ msgstr "_Jangan timpa berkas apapun"
+
+-#: data/ui/overwrite-dialog.ui:472
++#: data/ui/overwrite-dialog.ui:474
+ msgid "_Save the new file as:"
+ msgstr "_Simpan berkas baru sebagai:"
+
+@@ -345,70 +354,75 @@ msgstr "di kanan"
+ msgid "gThumb Preferences"
+ msgstr "Preferensi gThumb"
+
+-#: data/ui/preferences.ui:100
++#: data/ui/preferences.ui:101
+ msgid "Appearance"
+ msgstr "Penampilan"
+
+-#: data/ui/preferences.ui:128
++#: data/ui/preferences.ui:125
+ msgid "T_humbnails in viewer:"
+ msgstr "_Gambar miniatur dalam penilik:"
+
+-#: data/ui/preferences.ui:141
++#: data/ui/preferences.ui:139
+ msgid "on the bottom"
+ msgstr "di dasar"
+
+-#: data/ui/preferences.ui:142
++#: data/ui/preferences.ui:140
+ msgid "on the side"
+ msgstr "di sisi"
+
+-#: data/ui/preferences.ui:155
++#: data/ui/preferences.ui:152
+ msgid "File _properties in browser:"
+ msgstr "_Properti berkas dalam peramban:"
+
+-#: data/ui/preferences.ui:208
++#: data/ui/preferences.ui:203
+ msgid "On startup:"
+ msgstr "Saat awal mula:"
+
+-#: data/ui/preferences.ui:234
++#: data/ui/preferences.ui:226
+ msgid "Go to last _visited location"
+ msgstr "Pergi ke lokasi yang terakhir _dikunjungi"
+
+-#: data/ui/preferences.ui:257
++#: data/ui/preferences.ui:247
+ msgid "Go to this _folder:"
+ msgstr "Menuju _folder ini:"
+
+-#: data/ui/preferences.ui:278
+-msgid "Choose startup folder"
+-msgstr "Pilih folder awal mula"
+-
+-#: data/ui/preferences.ui:299
++#: data/ui/preferences.ui:277
+ msgid "Set to C_urrent"
+ msgstr "Set ke _Kini"
+
+-#: data/ui/preferences.ui:322
++#: data/ui/preferences.ui:299
+ msgid "_Reuse the active window to open files"
+ msgstr "Pakai lagi jendela aktif untuk membuka be_rkas"
+
+-#: data/ui/preferences.ui:389
++#: data/ui/preferences.ui:358
+ msgid "As_k confirmation before deleting files or catalogs"
+ msgstr "_Konfirmasikan sebelum menghapus berkas atau katalog"
+
+-#: data/ui/preferences.ui:406
++#: data/ui/preferences.ui:373
+ msgid "Ask whether to save _modified files"
+ msgstr "Tanyakan apakah _menyimpan berkas yang diubah"
+
+-#: data/ui/preferences.ui:423
++#: data/ui/preferences.ui:388
+ msgid "_Store metadata inside files if possible"
+ msgstr "_Simpan metadata di dalam berkas bila memungkinkan"
+
+-#: data/ui/preferences.ui:460
++#: data/ui/preferences.ui:421
+ #: extensions/catalogs/data/ui/catalog-properties.ui:39
+ #: extensions/contact_sheet/data/ui/contact-sheet.ui:576
+ #: extensions/edit_metadata/gth-edit-general-page.c:482
+ #: extensions/webalbums/data/ui/web-album-exporter.ui:571
++#: gthumb/gth-main-default-types.c:38
+ msgid "General"
+ msgstr "Umum"
+
++#: data/ui/shortcuts-preferences.ui:27
++msgid "Shortcuts:"
++msgstr "Pintasan:"
++
++#: data/ui/shortcuts-preferences.ui:92
++msgid "_Restore All…"
++msgstr "_Pulihkan Semua…"
++
+ #: data/ui/sort-order.ui:30
+ msgid "_Inverse order"
+ msgstr "Bal_ikkan urutan"
+@@ -422,7 +436,7 @@ msgid "Upload images to 23hq.com"
+ msgstr "Unggah gambar ke 23hq.com"
+
+ #: extensions/bookmarks/bookmarks.extension.desktop.in.in:3
+-#: extensions/bookmarks/callbacks.c:325
++#: extensions/bookmarks/callbacks.c:323
+ #: extensions/bookmarks/dlg-bookmarks.c:350
+ msgid "Bookmarks"
+ msgstr "Penanda taut"
+@@ -439,7 +453,7 @@ msgstr "T_ambahkan TandaBatas"
+ msgid "_Edit Bookmarks…"
+ msgstr "Sunting P_enanda Taut…"
+
+-#: extensions/bookmarks/data/ui/bookmarks-menu.ui:17
++#: extensions/bookmarks/data/ui/bookmarks-menu.ui:16
+ msgid "_System Bookmarks"
+ msgstr "Penanda Taut _Sistem"
+
+@@ -453,6 +467,7 @@ msgstr "Pergi ke lokasi ini"
+
+ #: extensions/bookmarks/data/ui/bookmarks.ui:76
+ #: extensions/catalogs/callbacks.c:72
++#: extensions/search/gth-search-source-selector.c:140
+ msgid "Remove"
+ msgstr "Hapus"
+
+@@ -504,15 +519,15 @@ msgstr "Berka_s yang dipilih"
+ msgid "Source"
+ msgstr "Sumber"
+
+-#: extensions/burn_disc/gth-burn-task.c:235
+-#: extensions/burn_disc/gth-burn-task.c:256
+-#: extensions/burn_disc/gth-burn-task.c:392
++#: extensions/burn_disc/gth-burn-task.c:239
++#: extensions/burn_disc/gth-burn-task.c:260
++#: extensions/burn_disc/gth-burn-task.c:396
+ msgid "Write to Disc"
+ msgstr "Tulis ke Cakram"
+
+-#: extensions/burn_disc/gth-burn-task.c:401
++#: extensions/burn_disc/gth-burn-task.c:405
+ #: extensions/oauth/oauth-account-chooser-dialog.c:150
+-#: gthumb/dlg-preferences-extensions.c:717
++#: gthumb/dlg-preferences-extensions.c:715
+ msgid "_Continue"
+ msgstr "_Lanjut"
+
+@@ -521,7 +536,7 @@ msgstr "_Lanjut"
+ msgid "Error interpreting JPEG image file: %s"
+ msgstr "Galat menginterpretasi berkas citra JPEG (%s)"
+
+-#: extensions/cairo_io/cairo-image-surface-jpeg.c:536
++#: extensions/cairo_io/cairo-image-surface-jpeg.c:558
+ #, c-format
+ msgid "Unknown JPEG color space (%d)"
+ msgstr "Ruang warna JPEG tak dikenal (%d)"
+@@ -604,12 +619,12 @@ msgid "_Lossless"
+ msgstr "Nirhi_lang"
+
+ #: extensions/cairo_io/gth-image-saver-jpeg.c:517
+-#: extensions/image_viewer/gth-metadata-provider-image.c:145
++#: extensions/image_viewer/gth-metadata-provider-image.c:150
+ msgid "JPEG"
+ msgstr "JPEG"
+
+ #: extensions/cairo_io/gth-image-saver-png.c:354
+-#: extensions/image_viewer/gth-metadata-provider-image.c:111
++#: extensions/image_viewer/gth-metadata-provider-image.c:116
+ msgid "PNG"
+ msgstr "PNG"
+
+@@ -627,71 +642,69 @@ msgid "TIFF"
+ msgstr "TIFF"
+
+ #: extensions/cairo_io/gth-image-saver-webp.c:383
+-#: extensions/image_viewer/gth-metadata-provider-image.c:174
++#: extensions/image_viewer/gth-metadata-provider-image.c:179
+ msgid "WebP"
+ msgstr "WebP"
+
+ #: extensions/cairo_io/preferences.c:134
+ #: extensions/contact_sheet/data/ui/contact-sheet.ui:556
+ #: extensions/contact_sheet/data/ui/image-wall.ui:269
+-#: extensions/image_viewer/gth-image-viewer-page.c:1663
++#: extensions/image_viewer/gth-image-viewer-page.c:1702
+ #: extensions/webalbums/data/ui/web-album-exporter.ui:484
+ msgid "Saving"
+ msgstr "Menyimpan"
+
+ #: extensions/catalogs/actions.c:89 extensions/catalogs/actions.c:212
+-#: extensions/catalogs/dlg-add-to-catalog.c:368
+-#: extensions/catalogs/dlg-add-to-catalog.c:488
++#: extensions/catalogs/dlg-add-to-catalog.c:376
++#: extensions/catalogs/dlg-add-to-catalog.c:541
+ #: extensions/file_manager/actions.c:71
+ #: extensions/file_tools/gth-file-tool-curves.c:373
+-#: extensions/list_tools/gth-script-editor-dialog.c:241
+-#: gthumb/gth-filter-editor-dialog.c:467 gthumb/gth-folder-tree.c:1858
++#: extensions/list_tools/gth-script-editor-dialog.c:273
++#: gthumb/gth-filter-editor-dialog.c:467 gthumb/gth-folder-tree.c:1924
+ #, c-format
+ msgid "No name specified"
+ msgstr "Nama tak dinyatakan"
+
+ #: extensions/catalogs/actions.c:96 extensions/catalogs/actions.c:219
+-#: extensions/catalogs/dlg-add-to-catalog.c:375
+-#: extensions/catalogs/dlg-add-to-catalog.c:495
++#: extensions/catalogs/dlg-add-to-catalog.c:383
++#: extensions/catalogs/dlg-add-to-catalog.c:548
+ #: extensions/file_manager/actions.c:78
+ #: extensions/file_tools/gth-file-tool-curves.c:380
+-#: gthumb/gth-folder-tree.c:1865
++#: gthumb/gth-folder-tree.c:1931
+ #, c-format
+ msgid "Invalid name. The following characters are not allowed: %s"
+ msgstr "Nama tak valid. Karakter berikut tak diijinkan: %s"
+
+ #: extensions/catalogs/actions.c:152 extensions/catalogs/actions.c:266
+-#: extensions/catalogs/dlg-add-to-catalog.c:432
+-#: extensions/catalogs/dlg-add-to-catalog.c:542
+-#: extensions/catalogs/gth-file-source-catalogs.c:510
++#: extensions/catalogs/dlg-add-to-catalog.c:440
++#: extensions/catalogs/dlg-add-to-catalog.c:597
++#: extensions/catalogs/gth-file-source-catalogs.c:516
+ #: extensions/file_manager/actions.c:109
+ msgid "Name already used"
+ msgstr "Nama sudah dipakai"
+
+ #: extensions/catalogs/actions.c:177
+-#: extensions/catalogs/dlg-add-to-catalog.c:453
+ msgid "New catalog"
+ msgstr "Katalog baru"
+
+ #: extensions/catalogs/actions.c:178
+-#: extensions/catalogs/dlg-add-to-catalog.c:454
++#: extensions/catalogs/dlg-add-to-catalog.c:462
+ msgid "Enter the catalog name:"
+ msgstr "Masukkan nama katalog:"
+
+ #: extensions/catalogs/actions.c:180 extensions/catalogs/actions.c:294
+-#: extensions/catalogs/dlg-add-to-catalog.c:456
+-#: extensions/catalogs/dlg-add-to-catalog.c:568
++#: extensions/catalogs/dlg-add-to-catalog.c:464
++#: extensions/catalogs/dlg-add-to-catalog.c:623
+ #: extensions/file_manager/actions.c:140
+ msgid "C_reate"
+ msgstr "B_uat"
+
+ #: extensions/catalogs/actions.c:291
+-#: extensions/catalogs/dlg-add-to-catalog.c:565
+ msgid "New library"
+ msgstr "Pustaka baru"
+
+ #: extensions/catalogs/actions.c:292
+-#: extensions/catalogs/dlg-add-to-catalog.c:566
++#: extensions/catalogs/dlg-add-to-catalog.c:621
+ msgid "Enter the library name:"
+ msgstr "Masukkan nama pustaka:"
+
+@@ -708,7 +721,7 @@ msgstr "Anda yakin ingin menghapus \"%s\
+ msgid "Add to Catalog…"
+ msgstr "Tambah ke Katalog…"
+
+-#: extensions/catalogs/callbacks.c:57 extensions/selections/callbacks.c:50
++#: extensions/catalogs/callbacks.c:57 extensions/selections/callbacks.c:78
+ msgid "Open Folder"
+ msgstr "Buka Folder"
+
+@@ -724,40 +737,40 @@ msgstr "Buat Katalog"
+ msgid "Create Library"
+ msgstr "Buat Pustaka"
+
+-#: extensions/catalogs/callbacks.c:73 extensions/file_manager/callbacks.c:78
+-#: extensions/file_manager/callbacks.c:105
+-#: extensions/rename_series/dlg-rename-series.c:844
+-#: gthumb/gth-folder-tree.c:1910
++#: extensions/catalogs/callbacks.c:73 extensions/file_manager/callbacks.c:82
++#: extensions/file_manager/callbacks.c:109
++#: extensions/file_manager/callbacks.c:126
++#: extensions/rename_series/dlg-rename-series.c:850
++#: gthumb/gth-folder-tree.c:1971
+ msgid "Rename"
+ msgstr "Ganti nama"
+
+ #: extensions/catalogs/callbacks.c:78
+-#: extensions/catalogs/dlg-catalog-properties.c:201 gthumb/gth-browser.c:4583
+-#: gthumb/gth-browser.c:4685 gthumb/gth-file-properties.c:245
++#: extensions/catalogs/dlg-catalog-properties.c:205 gthumb/gth-browser.c:4553
++#: gthumb/gth-browser.c:4655 gthumb/gth-file-properties.c:258
+ msgid "Properties"
+ msgstr "Tag (tertanam)"
+
+ #: extensions/catalogs/callbacks.c:185
+ #: extensions/catalogs/catalogs.extension.desktop.in.in:3
+-#: extensions/catalogs/gth-catalog.c:618 extensions/catalogs/gth-catalog.c:669
+-#: extensions/catalogs/gth-catalog.c:1028
+-#: extensions/catalogs/gth-catalog.c:1029
++#: extensions/catalogs/gth-catalog.c:504 extensions/catalogs/gth-catalog.c:555
++#: extensions/catalogs/gth-catalog.c:916 extensions/catalogs/gth-catalog.c:917
+ msgid "Catalogs"
+ msgstr "Katalog"
+
+-#: extensions/catalogs/callbacks.c:225 extensions/catalogs/callbacks.c:228
++#: extensions/catalogs/callbacks.c:223 extensions/catalogs/callbacks.c:226
+ msgid "Command Line"
+ msgstr "Baris Perintah"
+
+-#: extensions/catalogs/callbacks.c:375
++#: extensions/catalogs/callbacks.c:379
+ msgid "Catalog Properties"
+ msgstr "Properti Katalog"
+
+-#: extensions/catalogs/callbacks.c:391
++#: extensions/catalogs/callbacks.c:395
+ msgid "Organize"
+ msgstr "Atur"
+
+-#: extensions/catalogs/callbacks.c:392
++#: extensions/catalogs/callbacks.c:396
+ msgid "Automatically organize files by date"
+ msgstr "Otomatis atur berkas menurut tanggal"
+
+@@ -769,29 +782,23 @@ msgstr "Buat koleksi berkas."
+ msgid "file-catalog-symbolic"
+ msgstr "file-catalog-symbolic"
+
+-#: extensions/catalogs/data/ui/add-to-catalog.ui:10
+-msgid "Add to Catalog"
+-msgstr "Tambah ke Katalog"
+-
+-#: extensions/catalogs/data/ui/add-to-catalog.ui:56
+-msgid "A_dd and Close"
+-msgstr "Tambah _dan Tutup"
+-
+-#: extensions/catalogs/data/ui/add-to-catalog.ui:97
++#: extensions/catalogs/data/ui/add-to-catalog.ui:19
+ msgid "C_atalogs:"
+ msgstr "K_atalog:"
+
+-#: extensions/catalogs/data/ui/add-to-catalog.ui:135
+-msgid "_New Catalog"
+-msgstr "Ka_talog Baru"
+-
+-#: extensions/catalogs/data/ui/add-to-catalog.ui:150
+-msgid "New _Library"
+-msgstr "_Pustaka Baru"
+-
+-#: extensions/catalogs/data/ui/add-to-catalog.ui:194
+-#: extensions/file_manager/actions.c:687
+-#: extensions/webalbums/gth-web-exporter.c:1843
++#: extensions/catalogs/data/ui/add-to-catalog.ui:34
++#: extensions/catalogs/dlg-add-to-catalog.c:620
++msgid "New Library"
++msgstr "Pustaka Baru"
++
++#: extensions/catalogs/data/ui/add-to-catalog.ui:57
++#: extensions/catalogs/dlg-add-to-catalog.c:461
++msgid "New Catalog"
++msgstr "Katalog Baru"
++
++#: extensions/catalogs/data/ui/add-to-catalog.ui:103
++#: extensions/file_manager/actions.c:766
++#: extensions/webalbums/gth-web-exporter.c:1827
+ msgid "_View the destination"
+ msgstr "_Tilik tujuan"
+
+@@ -848,7 +855,7 @@ msgstr "_Kelompokkan berkas menurut:"
+
+ #: extensions/catalogs/data/ui/organize-files.ui:139
+ #: extensions/find_duplicates/data/ui/find-duplicates.ui:64
+-#: extensions/search/data/ui/search-editor.ui:46
++#: extensions/search/gth-search-source-selector.c:123
+ msgid "_Include sub-folders"
+ msgstr "_Sertakan sub folder"
+
+@@ -864,26 +871,38 @@ msgstr "Letakkan berkas tunggal dalam ka
+ msgid "Singles"
+ msgstr "Tunggal"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:149
+-#: extensions/catalogs/dlg-add-to-catalog.c:183
++#: extensions/catalogs/dlg-add-to-catalog.c:156
+ msgid "Could not add the files to the catalog"
+ msgstr "Tak dapat menambahkan berkas ke katalog"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:311
+-#: extensions/search/gth-search-task.c:358
++#: extensions/catalogs/dlg-add-to-catalog.c:319
++#: extensions/search/gth-search-task.c:402
+ msgid "Could not create the catalog"
+ msgstr "Tidak dapat membuat katalog"
+
++#: extensions/catalogs/dlg-add-to-catalog.c:687
++msgid "Add to Catalog"
++msgstr "Tambah ke Katalog"
++
++#: extensions/catalogs/dlg-add-to-catalog.c:710
++msgid "_Add"
++msgstr "T_ambah"
++
++#: extensions/catalogs/dlg-add-to-catalog.c:714
++#: extensions/edit_metadata/dlg-edit-metadata.c:347
++msgid "Keep the dialog open"
++msgstr "Jaga agar dialog tetap terbuka"
++
+ #: extensions/catalogs/dlg-catalog-properties.c:80
+ msgid "Could not save the catalog"
+ msgstr "Tak dapat menyimpan katalog"
+
+-#: extensions/catalogs/dlg-catalog-properties.c:151
++#: extensions/catalogs/dlg-catalog-properties.c:154
+ msgid "Could not load the catalog"
+ msgstr "Tak dapat memuat katalog"
+
+ #: extensions/catalogs/dlg-organize-files.c:106
+-#: extensions/catalogs/gth-organize-task.c:814
++#: extensions/catalogs/gth-organize-task.c:812
+ msgid "Organize Files"
+ msgstr "Atur Berkas"
+
+@@ -895,75 +914,77 @@ msgstr ""
+
+ #: extensions/catalogs/dlg-organize-files.c:138
+ #: extensions/edit_metadata/gth-edit-general-page.c:557
+-#: gthumb/gth-main-default-tests.c:366
++#: gthumb/gth-main-default-tests.c:367
+ msgid "Date photo was taken"
+ msgstr "Tanggal pengambilan foto"
+
+ #: extensions/catalogs/dlg-organize-files.c:145
+-#: gthumb/gth-main-default-tests.c:358
++#: gthumb/gth-main-default-tests.c:359
+ msgid "File modified date"
+ msgstr "Tanggal berkas diubah"
+
+-#: extensions/catalogs/dlg-organize-files.c:152 extensions/comments/main.c:182
++#: extensions/catalogs/dlg-organize-files.c:152 extensions/comments/main.c:186
+ msgid "Tag"
+ msgstr "Tag"
+
+ #: extensions/catalogs/dlg-organize-files.c:159
+-#: gthumb/gth-main-default-tests.c:399
++#: gthumb/gth-main-default-tests.c:400
+ msgid "Tag (embedded)"
+ msgstr "Tag (tertanam)"
+
+-#: extensions/catalogs/gth-catalog.c:1126 extensions/comments/main.c:45
+-#: extensions/edit_metadata/callbacks.c:51
+-#: extensions/edit_metadata/callbacks.c:85
+-#: gthumb/gth-main-default-metadata.c:63
++#: extensions/catalogs/gth-catalog.c:300
++#: extensions/exiv2_tools/exiv2-utils.cpp:876
++#: extensions/exiv2_tools/exiv2-utils.cpp:885
++#: extensions/exiv2_tools/exiv2-utils.cpp:915
++#: extensions/exiv2_tools/exiv2-utils.cpp:1448
++#: extensions/search/gth-search.c:285 gthumb/gth-shortcut.c:336
++msgid "Invalid file format"
++msgstr "Format berkas tak valid"
++
++#: extensions/catalogs/gth-catalog.c:1018 extensions/comments/main.c:47
++#: extensions/edit_metadata/callbacks.c:57
++#: extensions/edit_metadata/callbacks.c:94
++#: extensions/edit_metadata/callbacks.c:107
++#: extensions/edit_metadata/gth-edit-tags-dialog.c:170
++#: gthumb/gth-main-default-metadata.c:65
+ msgid "Tags"
+ msgstr "Tag"
+
+-#: extensions/catalogs/gth-file-source-catalogs.c:955
++#: extensions/catalogs/gth-file-source-catalogs.c:958
+ #, c-format
+ msgid "The catalog “%s” already exists, do you want to overwrite it?"
+ msgstr "Katalog \"%s\" sudah ada, apakah Anda ingin menimpanya?"
+
+-#: extensions/catalogs/gth-file-source-catalogs.c:957
++#: extensions/catalogs/gth-file-source-catalogs.c:960
+ #, c-format
+ msgid "The library “%s” already exists, do you want to overwrite it?"
+ msgstr "Pustaka \"%s\" sudah ada, apakah Anda ingin menimpanya?"
+
+-#: extensions/catalogs/gth-file-source-catalogs.c:965
++#: extensions/catalogs/gth-file-source-catalogs.c:968
+ msgid "Over_write"
+ msgstr "Ti_mpa"
+
+-#: extensions/catalogs/gth-file-source-catalogs.c:1083
++#: extensions/catalogs/gth-file-source-catalogs.c:1087
+ msgid "Cannot move the files"
+ msgstr "Tak bisa memindah berkas"
+
+-#: extensions/catalogs/gth-file-source-catalogs.c:1085
++#: extensions/catalogs/gth-file-source-catalogs.c:1089
+ msgid "Cannot copy the files"
+ msgstr "Tak bisa menyalin berkas"
+
+-#: extensions/catalogs/gth-file-source-catalogs.c:1090
++#: extensions/catalogs/gth-file-source-catalogs.c:1094
+ msgid "Invalid destination."
+ msgstr "Tujuan tak valid."
+
+-#: extensions/catalogs/gth-file-source-catalogs.c:1137
++#: extensions/catalogs/gth-file-source-catalogs.c:1141
+ #, c-format
+ msgid "Copying files to “%s”"
+ msgstr "Menyalin berkas ke \"%s\""
+
+-#: extensions/catalogs/gth-file-source-catalogs.c:1324
++#: extensions/catalogs/gth-file-source-catalogs.c:1321
+ msgid "Could not remove the files from the catalog"
+ msgstr "Tidak dapat menghapus berkas dari katalog"
+
+-#: extensions/catalogs/gth-file-source-catalogs.c:1375
+-#: extensions/exiv2_tools/exiv2-utils.cpp:876
+-#: extensions/exiv2_tools/exiv2-utils.cpp:885
+-#: extensions/exiv2_tools/exiv2-utils.cpp:915
+-#: extensions/exiv2_tools/exiv2-utils.cpp:1450
+-#: extensions/search/gth-search.c:265
+-msgid "Invalid file format"
+-msgstr "Format berkas tak valid"
+-
+ #: extensions/catalogs/gth-organize-task.c:209
+ #, c-format
+ msgid "Operation completed. Catalogs: %d. Images: %d."
+@@ -1063,20 +1084,25 @@ msgstr "_Selaraskan dengan metadata tert
+ #: extensions/gstreamer_tools/dlg-media-viewer-preferences.c:75
+ #: extensions/importer/gth-import-preferences-dialog.c:417
+ #: extensions/photo_importer/dlg-photo-importer-preferences.c:78
+-#: gthumb/dlg-preferences-extensions.c:483
++#: extensions/terminal/dlg-terminal-preferences.c:83
++#: gthumb/dlg-favorite-properties.c:99 gthumb/dlg-preferences-extensions.c:483
++#: gthumb/gth-file-properties.c:548
+ msgid "Preferences"
+ msgstr "Preferensi"
+
+-#: extensions/comments/main.c:35 extensions/edit_metadata/callbacks.c:50
+-#: extensions/edit_metadata/callbacks.c:79 gthumb/gth-file-comment.c:136
++#: extensions/comments/main.c:37 extensions/edit_metadata/callbacks.c:56
++#: extensions/edit_metadata/callbacks.c:88
++#: extensions/edit_metadata/callbacks.c:101
++#: extensions/edit_metadata/gth-edit-comment-dialog.c:124
++#: gthumb/gth-file-comment.c:136
+ msgid "Comment"
+ msgstr "Komentar"
+
+-#: extensions/comments/main.c:41 gthumb/gth-main-default-metadata.c:60
++#: extensions/comments/main.c:43 gthumb/gth-main-default-metadata.c:62
+ msgid "Title"
+ msgstr "Judul"
+
+-#: extensions/comments/main.c:42 extensions/comments/main.c:166
++#: extensions/comments/main.c:44 extensions/comments/main.c:170
+ #: extensions/contact_sheet/data/ui/contact-sheet.ui:184
+ #: extensions/contact_sheet/data/ui/contact-sheet.ui:502
+ #: extensions/contact_sheet/data/ui/image-wall.ui:232
+@@ -1086,21 +1112,21 @@ msgstr "Judul"
+ #: extensions/rename_series/data/ui/rename-series.ui:249
+ #: extensions/webalbums/data/ui/web-album-exporter.ui:194
+ #: extensions/webalbums/data/ui/web-album-exporter.ui:1039
+-#: gthumb/gth-main-default-metadata.c:62
++#: gthumb/gth-main-default-metadata.c:64
+ msgid "Description"
+ msgstr "Deskripsi"
+
+-#: extensions/comments/main.c:43 extensions/comments/main.c:174
+-#: gthumb/gth-main-default-metadata.c:61
++#: extensions/comments/main.c:45 extensions/comments/main.c:178
++#: gthumb/gth-main-default-metadata.c:63
+ msgid "Place"
+ msgstr "Tempat"
+
+-#: extensions/comments/main.c:44
++#: extensions/comments/main.c:46
+ msgid "Comment Date & Time"
+ msgstr "Tanggal & Waktu Komentar"
+
+-#: extensions/comments/main.c:46 gthumb/gth-main-default-metadata.c:64
+-#: gthumb/gth-main-default-tests.c:390
++#: extensions/comments/main.c:48 gthumb/gth-main-default-metadata.c:66
++#: gthumb/gth-main-default-tests.c:391
+ msgid "Rating"
+ msgstr "Peringkat"
+
+@@ -1114,7 +1140,7 @@ msgstr "_Dinding Citra…"
+
+ #: extensions/contact_sheet/contact_sheet.extension.desktop.in.in:3
+ #: extensions/contact_sheet/data/ui/contact-sheet.ui:308
+-#: extensions/contact_sheet/dlg-contact-sheet.c:708
++#: extensions/contact_sheet/dlg-contact-sheet.c:710
+ msgid "Contact Sheet"
+ msgstr "Contact Sheet"
+
+@@ -1127,9 +1153,9 @@ msgstr ""
+ #: extensions/contact_sheet/data/ui/contact-sheet-theme-properties.ui:12
+ #: extensions/file_tools/gth-file-tool-crop.c:439
+ #: extensions/file_tools/gth-file-tool-crop.c:469
+-#: extensions/file_tools/gth-file-tool-resize.c:587
++#: extensions/file_tools/gth-file-tool-resize.c:589
+ #: extensions/file_tools/gth-file-tool-rotate.c:396
+-#: extensions/slideshow/main.c:291 gthumb/gth-accel-button.c:173
++#: extensions/slideshow/main.c:297 gthumb/gth-accel-button.c:201
+ msgid "None"
+ msgstr "Tidak ada"
+
+@@ -1201,7 +1227,7 @@ msgstr "Teks"
+ #: extensions/contact_sheet/data/ui/contact-sheet-theme-properties.ui:548
+ #: extensions/contact_sheet/data/ui/contact-sheet.ui:290
+ #: extensions/image_print/data/ui/print-layout.ui:88
+-#: extensions/image_print/data/ui/print-preferences.ui:60
++#: extensions/image_print/data/ui/print-preferences.ui:55
+ #: extensions/webalbums/data/ui/web-album-exporter.ui:302
+ #: extensions/webalbums/data/ui/web-album-exporter.ui:1167
+ msgid "_Header:"
+@@ -1216,7 +1242,7 @@ msgstr "Pilih fonta"
+ #: extensions/contact_sheet/data/ui/contact-sheet-theme-properties.ui:604
+ #: extensions/contact_sheet/data/ui/contact-sheet.ui:261
+ #: extensions/image_print/data/ui/print-layout.ui:102
+-#: extensions/image_print/data/ui/print-preferences.ui:74
++#: extensions/image_print/data/ui/print-preferences.ui:69
+ #: extensions/webalbums/data/ui/web-album-exporter.ui:271
+ #: extensions/webalbums/data/ui/web-album-exporter.ui:916
+ msgid "_Footer:"
+@@ -1224,7 +1250,7 @@ msgstr "_Kaki:"
+
+ #: extensions/contact_sheet/data/ui/contact-sheet-theme-properties.ui:663
+ #: extensions/contact_sheet/data/ui/contact-sheet.ui:1038
+-#: extensions/image_print/data/ui/print-preferences.ui:48
++#: extensions/image_print/data/ui/print-preferences.ui:43
+ msgid "Caption:"
+ msgstr "Keterangan:"
+
+@@ -1379,13 +1405,13 @@ msgstr "K_uadrat"
+ msgid "Thumbnails"
+ msgstr "Gambar miniatur"
+
+-#: extensions/contact_sheet/dlg-contact-sheet.c:489
+-#: extensions/contact_sheet/dlg-contact-sheet.c:500
+-#: extensions/contact_sheet/dlg-contact-sheet.c:514
++#: extensions/contact_sheet/dlg-contact-sheet.c:491
++#: extensions/contact_sheet/dlg-contact-sheet.c:502
++#: extensions/contact_sheet/dlg-contact-sheet.c:516
+ msgid "Could not save the theme"
+ msgstr "Tak bisa menyimpan tema"
+
+-#: extensions/contact_sheet/dlg-contact-sheet.c:659
++#: extensions/contact_sheet/dlg-contact-sheet.c:661
+ msgid "Could not delete the theme"
+ msgstr "Tak bisa menghapus tema"
+
+@@ -1393,11 +1419,11 @@ msgstr "Tak bisa menghapus tema"
+ msgid "Image Wall"
+ msgstr "Dinding Citra"
+
+-#: extensions/contact_sheet/gth-contact-sheet-creator.c:250
++#: extensions/contact_sheet/gth-contact-sheet-creator.c:291
+ msgid "Creating images"
+ msgstr "Membuat gambar"
+
+-#: extensions/contact_sheet/gth-contact-sheet-creator.c:898
++#: extensions/contact_sheet/gth-contact-sheet-creator.c:936
+ msgid "Generating thumbnails"
+ msgstr "Membentuk gambar miniatur"
+
+@@ -1460,7 +1486,7 @@ msgid "Could not show the desktop backgr
+ msgstr "Tak bisa tampilkan properti latar belakang desktop"
+
+ #: extensions/desktop_background/actions.c:329
+-#: gthumb/gth-browser-actions-entries.h:85 gthumb/resources/app-menu.ui:14
++#: gthumb/resources/gears-menu.ui:45
+ msgid "_Preferences"
+ msgstr "_Preferensi"
+
+@@ -1503,6 +1529,14 @@ msgid "If you delete the metadata, it wi
+ msgstr "Apabila Anda menghapus metadata, itu akan dihapus permanen."
+
+ #: extensions/edit_metadata/callbacks.c:45
++msgid "Edit comment"
++msgstr "Sunting komentar"
++
++#: extensions/edit_metadata/callbacks.c:46
++msgid "Edit tags"
++msgstr "Sunting tag"
++
++#: extensions/edit_metadata/callbacks.c:51
+ msgid "Delete Metadata"
+ msgstr "Hapus Metadata"
+
+@@ -1529,12 +1563,12 @@ msgstr "Pe_ringkat:"
+ msgid "_Title:"
+ msgstr "_Judul:"
+
+-#: extensions/edit_metadata/dlg-edit-metadata.c:121
++#: extensions/edit_metadata/dlg-edit-metadata.c:123
+ msgid "Could not save the file metadata"
+ msgstr "Tak bisa menyimpan metadata berkas"
+
+-#: extensions/edit_metadata/dlg-edit-metadata.c:227
+-#: gthumb/gth-overwrite-dialog.c:139
++#: extensions/edit_metadata/dlg-edit-metadata.c:234
++#: gthumb/gth-overwrite-dialog.c:184
+ msgid "Cannot read file information"
+ msgstr "Tak bisa membaca informasi berkas"
+
+@@ -1546,27 +1580,7 @@ msgstr "Sunting metadata"
+ msgid "Allow to edit files metadata."
+ msgstr "Bolehkan menyunting metadata berkas."
+
+-#. Translators: the %s symbol in the string is a file name
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:64
+-#, c-format
+-msgid "%s Metadata"
+-msgstr "Metadata %s"
+-
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:67
+-#: extensions/edit_metadata/gth-edit-tags-dialog.c:84
+-#: extensions/flicker_utils/dlg-import-from-flickr.c:320
+-#, c-format
+-msgid "%d file"
+-msgid_plural "%d files"
+-msgstr[0] "%d berkas"
+-msgstr[1] "%d berkas"
+-
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:145
+-#: extensions/edit_metadata/gth-edit-tags-dialog.c:196
+-msgid "Sa_ve and Close"
+-msgstr "Sim_pan dan Tutup"
+-
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:156
++#: extensions/edit_metadata/gth-edit-comment-dialog.c:138
+ msgid "Save only cha_nged fields"
+ msgstr "Simpa_n hanya bagian yang berubah"
+
+@@ -1595,16 +1609,6 @@ msgstr "Tanggal pembuatan gambar"
+ msgid "Do not modify"
+ msgstr "Jangan diubah"
+
+-#. Translators: the %s symbol in the string is a file name
+-#: extensions/edit_metadata/gth-edit-tags-dialog.c:81
+-#, c-format
+-msgid "%s Tags"
+-msgstr "Tag %s"
+-
+-#: extensions/edit_metadata/gth-edit-tags-dialog.c:188
+-msgid "Assign Tags"
+-msgstr "Berikan Tag"
+-
+ #: extensions/edit_metadata/gth-tag-task.c:122
+ #: extensions/edit_metadata/gth-tag-task.c:139
+ msgid "Assigning tags to the selected files"
+@@ -1667,7 +1671,8 @@ msgstr "_Bahasa:"
+ msgid "State/Province:"
+ msgstr "Negara Bagian/Propinsi:"
+
+-#: extensions/exiv2_tools/exiv2-utils.cpp:47 gthumb/glib-utils.c:1115
++#: extensions/exiv2_tools/exiv2-utils.cpp:47 gthumb/glib-utils.c:1114
++#: gthumb/glib-utils.c:2079 gthumb/str-utils.c:700
+ msgid "(invalid value)"
+ msgstr "(nilai tak valid)"
+
+@@ -1732,8 +1737,8 @@ msgid "date photo was taken"
+ msgstr "tanggal foto diambil"
+
+ #: extensions/export_tools/callbacks.c:46
+-msgid "Export"
+-msgstr "Ekspor"
++msgid "_Export To"
++msgstr "_Ekspor Ke"
+
+ #: extensions/facebook/data/ui/export-to-facebook.ui:34
+ msgid "720 × 720"
+@@ -1874,7 +1879,7 @@ msgstr "Tak bisa mengekspor berkas"
+ #: extensions/flicker_utils/dlg-export-to-flickr.c:601
+ #: extensions/picasaweb/dlg-export-to-picasaweb.c:502
+ #: extensions/picasaweb/dlg-import-from-picasaweb.c:254
+-#: gthumb/gth-browser.c:832
++#: gthumb/gth-browser.c:872
+ #, c-format
+ msgid "%d file (%s)"
+ msgid_plural "%d files (%s)"
+@@ -1915,13 +1920,13 @@ msgstr "Tak bisa mengunggah \"%s\": %s"
+ msgid "Uploading “%s”"
+ msgstr "Mengunggah \"%s\""
+
+-#: extensions/facebook/facebook-service.c:949
++#: extensions/facebook/facebook-service.c:954
+ #: extensions/flicker_utils/flickr-service.c:1450
+ #: extensions/picasaweb/picasa-web-service.c:1062
+ msgid "Uploading the files to the server"
+ msgstr "Mengunggah berkas ke server"
+
+-#: extensions/facebook/facebook-service.c:1043
++#: extensions/facebook/facebook-service.c:1048
+ #: extensions/flicker_utils/flickr-service.c:1611
+ #: extensions/picasaweb/picasa-web-service.c:1174
+ msgid "Getting the photo list"
+@@ -1944,14 +1949,21 @@ msgid "Enter the folder name:"
+ msgstr "Masukkan nama folder:"
+
+ #: extensions/file_manager/actions.c:410
+-#: extensions/file_manager/callbacks.c:265
+-#: extensions/file_manager/callbacks.c:815
++#: extensions/file_manager/callbacks.c:551
++#: extensions/file_manager/callbacks.c:986
++#: extensions/find_duplicates/gth-find-duplicates.c:788
++#: gthumb/gth-browser.c:5565 gthumb/gth-browser.c:5601
++#: gthumb/gth-progress-dialog.c:429
++msgid "Could not perform the operation"
++msgstr "Operasi tidak dapat dilakukan"
++
++#: extensions/file_manager/actions.c:423
++#: extensions/file_manager/callbacks.c:277
+ msgid "Could not move the files"
+ msgstr "Tak bisa memindah berkas"
+
+-#: extensions/file_manager/actions.c:411
+-#: extensions/file_manager/callbacks.c:266
+-#: extensions/file_manager/callbacks.c:816
++#: extensions/file_manager/actions.c:424
++#: extensions/file_manager/callbacks.c:278
+ msgid ""
+ "Files cannot be moved to the current location, as alternative you can choose "
+ "to copy them."
+@@ -1959,117 +1971,123 @@ msgstr ""
+ "Berkas tak bisa dipindah ke lokasi kini, sebagai alternatif Anda dapat "
+ "memilih untuk menyalin mereka."
+
+-#: extensions/file_manager/actions.c:413 extensions/file_manager/actions.c:664
+-#: extensions/file_manager/callbacks.c:70
+-#: extensions/file_manager/callbacks.c:99
++#: extensions/file_manager/actions.c:426 extensions/file_manager/actions.c:743
++#: extensions/file_manager/callbacks.c:74
++#: extensions/file_manager/callbacks.c:103
++#: extensions/file_manager/callbacks.c:124
+ #: extensions/file_tools/data/ui/color-picker-options.ui:206
+ #: extensions/file_tools/data/ui/color-picker-options.ui:219
+ #: gthumb/gtk-utils.h:38
+ msgid "Copy"
+ msgstr "Salin"
+
+-#: extensions/file_manager/actions.c:660
++#: extensions/file_manager/actions.c:739
+ msgid "Move To"
+ msgstr "Pindah Ke"
+
+-#: extensions/file_manager/actions.c:660
++#: extensions/file_manager/actions.c:739
+ msgid "Copy To"
+ msgstr "Salin Ke"
+
+-#: extensions/file_manager/actions.c:664
+-#: extensions/file_manager/callbacks.c:800
++#: extensions/file_manager/actions.c:743
++#: extensions/file_manager/callbacks.c:1025
+ msgid "Move"
+ msgstr "Pindah"
+
+-#: extensions/file_manager/actions.c:791
++#: extensions/file_manager/actions.c:870
+ msgid "Could not open the location"
+ msgstr "Tak bisa membuka lokasi"
+
+-#: extensions/file_manager/callbacks.c:69
+-#: extensions/file_manager/callbacks.c:98
++#: extensions/file_manager/callbacks.c:73
++#: extensions/file_manager/callbacks.c:102
++#: extensions/file_manager/callbacks.c:123
+ msgid "Cut"
+ msgstr "Potong"
+
+-#: extensions/file_manager/callbacks.c:71
++#: extensions/file_manager/callbacks.c:75
++#: extensions/file_manager/callbacks.c:125
+ msgid "Paste"
+ msgstr "Tempel"
+
+-#: extensions/file_manager/callbacks.c:76
+-#: extensions/file_manager/callbacks.c:106
++#: extensions/file_manager/callbacks.c:80
++#: extensions/file_manager/callbacks.c:110
+ msgid "Copy to…"
+ msgstr "Salin ke…"
+
+-#: extensions/file_manager/callbacks.c:77
+-#: extensions/file_manager/callbacks.c:107
++#: extensions/file_manager/callbacks.c:81
++#: extensions/file_manager/callbacks.c:111
+ msgid "Move to…"
+ msgstr "Pindah ke…"
+
+-#: extensions/file_manager/callbacks.c:83
+-#: extensions/file_manager/callbacks.c:108
++#: extensions/file_manager/callbacks.c:87
++#: extensions/file_manager/callbacks.c:112
+ msgid "Move to Trash"
+ msgstr "Pindah ke Tong Sampah"
+
+-#: extensions/file_manager/callbacks.c:84
+-#: extensions/file_manager/callbacks.c:109
++#: extensions/file_manager/callbacks.c:88
++#: extensions/file_manager/callbacks.c:113
++#: extensions/file_manager/callbacks.c:128
+ msgid "Delete"
+ msgstr "Hapus"
+
+-#: extensions/file_manager/callbacks.c:88
++#: extensions/file_manager/callbacks.c:92
+ msgid "Open with the File Manager"
+ msgstr "Buka dengan Manajer Berkas"
+
+-#: extensions/file_manager/callbacks.c:93
++#: extensions/file_manager/callbacks.c:97
+ msgid "Create Folder"
+ msgstr "Buat Folder"
+
+-#: extensions/file_manager/callbacks.c:100
++#: extensions/file_manager/callbacks.c:104
+ msgid "Paste Into Folder"
+ msgstr "Tempel Ke Folder"
+
+-#: extensions/file_manager/callbacks.c:114
++#: extensions/file_manager/callbacks.c:118
++#: extensions/file_manager/callbacks.c:127
+ msgid "Duplicate"
+ msgstr "Duplikat"
+
+-#: extensions/file_manager/callbacks.c:530 gthumb/gth-file-source-vfs.c:234
++#: extensions/file_manager/callbacks.c:129
++msgid "Delete permanently"
++msgstr "Hapus permanen"
++
++#: extensions/file_manager/callbacks.c:130
++msgid "Open with Gimp"
++msgstr "Buka dengan Gimp"
++
++#: extensions/file_manager/callbacks.c:722 gthumb/gth-file-source-vfs.c:226
+ msgid "Home Folder"
+ msgstr "Folder Rumah"
+
+-#: extensions/file_manager/callbacks.c:537
+-#: extensions/file_manager/callbacks.c:540
++#: extensions/file_manager/callbacks.c:729
++#: extensions/file_manager/callbacks.c:732
+ msgid "Open _With"
+ msgstr "Buka _Dengan"
+
+-#: extensions/file_manager/callbacks.c:783
++#: extensions/file_manager/callbacks.c:1006
+ #, c-format
+ msgid "Do you want to move “%s” to “%s”?"
+ msgstr "Anda ingin memindah \"%s\" ke \"%s\"?"
+
+-#: extensions/file_manager/callbacks.c:785
++#: extensions/file_manager/callbacks.c:1008
+ #, c-format
+ msgid "Do you want to copy “%s” to “%s”?"
+ msgstr "Anda ingin menyalin \"%s\" ke \"%s\"?"
+
+-#: extensions/file_manager/callbacks.c:790
++#: extensions/file_manager/callbacks.c:1015
+ #, c-format
+ msgid "Do you want to move the dragged files to “%s”?"
+ msgstr "Anda ingin memindah berkas yang diseret ke \"%s\"?"
+
+-#: extensions/file_manager/callbacks.c:792
++#: extensions/file_manager/callbacks.c:1017
+ #, c-format
+ msgid "Do you want to copy the dragged files to “%s”?"
+ msgstr "Anda ingin menyalin berkas yang diseret ke \"%s\"?"
+
+-#: extensions/file_manager/callbacks.c:800
++#: extensions/file_manager/callbacks.c:1025
+ msgid "_Copy"
+ msgstr "_Salin"
+
+-#: extensions/file_manager/callbacks.c:981
+-#: extensions/find_duplicates/gth-find-duplicates.c:788
+-#: gthumb/gth-browser.c:5583 gthumb/gth-browser.c:5619
+-#: gthumb/gth-progress-dialog.c:429
+-msgid "Could not perform the operation"
+-msgstr "Operasi tidak dapat dilakukan"
+-
+ #: extensions/file_manager/file_manager.extension.desktop.in.in:3
+ msgid "File manager"
+ msgstr "Manajer berkas"
+@@ -2082,6 +2100,40 @@ msgstr "Operasi manajer berkas."
+ msgid "system-file-manager"
+ msgstr "system-file-manager"
+
++#: extensions/file_tools/callbacks.c:53
++msgid "Adjust contrast"
++msgstr "Atur kontras"
++
++#: extensions/file_tools/callbacks.c:54
++#: extensions/file_tools/gth-file-tool-flip.c:90
++msgid "Flip"
++msgstr "Balikkan"
++
++#: extensions/file_tools/callbacks.c:55
++#: extensions/file_tools/gth-file-tool-mirror.c:90
++msgid "Mirror"
++msgstr "Cerminkan"
++
++#: extensions/file_tools/callbacks.c:56
++#: extensions/image_rotation/callbacks.c:47
++msgid "Rotate right"
++msgstr "Putar ke kanan"
++
++#: extensions/file_tools/callbacks.c:57
++#: extensions/image_rotation/callbacks.c:48
++msgid "Rotate left"
++msgstr "Putar ke kiri"
++
++#: extensions/file_tools/callbacks.c:58
++#: extensions/file_tools/gth-file-tool-crop.c:687
++msgid "Crop"
++msgstr "Potong"
++
++#: extensions/file_tools/callbacks.c:59
++#: extensions/file_tools/gth-file-tool-resize.c:840
++msgid "Resize"
++msgstr "Ubah Ukuran"
++
+ #: extensions/file_tools/data/ui/adjust-colors-options.ui:56
+ #: extensions/file_tools/data/ui/curves-options.ui:35
+ #: extensions/file_tools/data/ui/sharpen-options.ui:45
+@@ -2144,9 +2196,9 @@ msgstr "Warna"
+ #: extensions/file_tools/data/ui/resize-options.ui:9
+ #: extensions/file_tools/data/ui/rotate-options.ui:9
+ #: extensions/file_tools/gth-file-tool-crop.c:661
+-#: extensions/file_tools/gth-file-tool-resize.c:757
++#: extensions/file_tools/gth-file-tool-resize.c:759
+ #: extensions/file_tools/gth-file-tool-rotate.c:617
+-#: gthumb/gth-file-chooser-dialog.c:258
++#: gthumb/gth-file-chooser-dialog.c:262
+ msgid "Options"
+ msgstr "Opsi"
+
+@@ -2183,7 +2235,7 @@ msgstr "Pusat"
+
+ #: extensions/file_tools/data/ui/crop-options.ui:418
+ #: extensions/file_tools/data/ui/resize-options.ui:375
+-#: gthumb/gth-main-default-tests.c:405
++#: gthumb/gth-main-default-tests.c:406
+ msgid "Aspect ratio"
+ msgstr "Rasio aspek"
+
+@@ -2221,7 +2273,7 @@ msgid "%"
+ msgstr "%"
+
+ #: extensions/file_tools/data/ui/resize-options.ui:137
+-#: gthumb/gth-main-default-metadata.c:46
++#: gthumb/gth-main-default-metadata.c:48
+ msgid "Dimensions"
+ msgstr "Dimensi"
+
+@@ -2381,17 +2433,17 @@ msgstr "Pratata"
+ #: extensions/file_tools/gth-file-tool-adjust-contrast.c:393
+ #: extensions/file_tools/gth-file-tool-crop.c:632
+ #: extensions/file_tools/gth-file-tool-curves.c:287
+-#: extensions/file_tools/gth-file-tool-effects.c:400
+-#: extensions/file_tools/gth-file-tool-effects.c:444
+-#: extensions/file_tools/gth-file-tool-effects.c:492
+-#: extensions/file_tools/gth-file-tool-effects.c:541
+-#: extensions/file_tools/gth-file-tool-effects.c:589
+-#: extensions/file_tools/gth-file-tool-effects.c:637
+-#: extensions/file_tools/gth-file-tool-effects.c:685
+-#: extensions/file_tools/gth-file-tool-effects.c:732
+-#: extensions/file_tools/gth-file-tool-effects.c:781
+-#: extensions/file_tools/gth-file-tool-effects.c:903
+-#: extensions/file_tools/gth-file-tool-effects.c:938
++#: extensions/file_tools/gth-file-tool-effects.c:401
++#: extensions/file_tools/gth-file-tool-effects.c:445
++#: extensions/file_tools/gth-file-tool-effects.c:493
++#: extensions/file_tools/gth-file-tool-effects.c:542
++#: extensions/file_tools/gth-file-tool-effects.c:590
++#: extensions/file_tools/gth-file-tool-effects.c:638
++#: extensions/file_tools/gth-file-tool-effects.c:686
++#: extensions/file_tools/gth-file-tool-effects.c:733
++#: extensions/file_tools/gth-file-tool-effects.c:782
++#: extensions/file_tools/gth-file-tool-effects.c:904
++#: extensions/file_tools/gth-file-tool-effects.c:939
+ #: extensions/file_tools/gth-file-tool-flip.c:63
+ #: extensions/file_tools/gth-file-tool-grayscale.c:230
+ #: extensions/file_tools/gth-file-tool-lomo.c:182
+@@ -2439,11 +2491,11 @@ msgstr "Seragam"
+ msgid "Equalize the histogram using the linear function"
+ msgstr "Ekualisasikan histogram memakai fungsi linier"
+
+-#: extensions/file_tools/gth-file-tool-adjust-contrast.c:660
++#: extensions/file_tools/gth-file-tool-adjust-contrast.c:661
+ msgid "Adjust Contrast"
+ msgstr "Atur Kontras"
+
+-#: extensions/file_tools/gth-file-tool-adjust-contrast.c:662
++#: extensions/file_tools/gth-file-tool-adjust-contrast.c:663
+ msgid "Automatic contrast adjustment"
+ msgstr "Pengaturan kontras otomatis"
+
+@@ -2456,74 +2508,74 @@ msgid "Pick a color from the image"
+ msgstr "Pilih sebuah warna dari gambar"
+
+ #: extensions/file_tools/gth-file-tool-crop.c:439
+-#: extensions/file_tools/gth-file-tool-resize.c:587
++#: extensions/file_tools/gth-file-tool-resize.c:589
+ #: gthumb/gth-test-aspect-ratio.c:47
+ msgid "Square"
+ msgstr "Kwadrat"
+
+ #: extensions/file_tools/gth-file-tool-crop.c:440
+-#: extensions/file_tools/gth-file-tool-resize.c:588
++#: extensions/file_tools/gth-file-tool-resize.c:590
+ #, c-format
+ msgid "%d × %d (Image)"
+ msgstr "%d x %d (Gambar)"
+
+ #: extensions/file_tools/gth-file-tool-crop.c:443
+-#: extensions/file_tools/gth-file-tool-resize.c:592
++#: extensions/file_tools/gth-file-tool-resize.c:594
+ #, c-format
+ msgid "%d × %d (Screen)"
+ msgstr "%d x %d (Layar)"
+
+ #: extensions/file_tools/gth-file-tool-crop.c:447
+-#: extensions/file_tools/gth-file-tool-resize.c:597
++#: extensions/file_tools/gth-file-tool-resize.c:599
+ #: gthumb/gth-test-aspect-ratio.c:48
+ msgid "5∶4"
+ msgstr "5∶4"
+
+ #: extensions/file_tools/gth-file-tool-crop.c:448
+-#: extensions/file_tools/gth-file-tool-resize.c:598
++#: extensions/file_tools/gth-file-tool-resize.c:600
+ #: gthumb/gth-test-aspect-ratio.c:49
+ msgid "4∶3 (DVD, Book)"
+ msgstr "4:3 (Buku, DVD)"
+
+ #: extensions/file_tools/gth-file-tool-crop.c:449
+-#: extensions/file_tools/gth-file-tool-resize.c:599
++#: extensions/file_tools/gth-file-tool-resize.c:601
+ #: gthumb/gth-test-aspect-ratio.c:50
+ msgid "7∶5"
+ msgstr "7∶5"
+
+ #: extensions/file_tools/gth-file-tool-crop.c:450
+-#: extensions/file_tools/gth-file-tool-resize.c:600
++#: extensions/file_tools/gth-file-tool-resize.c:602
+ #: gthumb/gth-test-aspect-ratio.c:51
+ msgid "3∶2 (Postcard)"
+ msgstr "3:2 (Kartu pos)"
+
+ #: extensions/file_tools/gth-file-tool-crop.c:451
+-#: extensions/file_tools/gth-file-tool-resize.c:601
++#: extensions/file_tools/gth-file-tool-resize.c:603
+ #: gthumb/gth-test-aspect-ratio.c:52
+ msgid "16∶10"
+ msgstr "16∶10"
+
+ #: extensions/file_tools/gth-file-tool-crop.c:452
+-#: extensions/file_tools/gth-file-tool-resize.c:602
++#: extensions/file_tools/gth-file-tool-resize.c:604
+ #: gthumb/gth-test-aspect-ratio.c:53
+ msgid "16∶9 (DVD)"
+ msgstr "16:9 (DVD)"
+
+ #: extensions/file_tools/gth-file-tool-crop.c:453
+-#: extensions/file_tools/gth-file-tool-resize.c:603
++#: extensions/file_tools/gth-file-tool-resize.c:605
+ #: gthumb/gth-test-aspect-ratio.c:54
+ msgid "1.85∶1"
+ msgstr "1,85:1"
+
+ #: extensions/file_tools/gth-file-tool-crop.c:454
+-#: extensions/file_tools/gth-file-tool-resize.c:604
++#: extensions/file_tools/gth-file-tool-resize.c:606
+ #: gthumb/gth-test-aspect-ratio.c:55
+ msgid "2.39∶1"
+ msgstr "2,39:1"
+
+ #. Translators: this is an option for the format -> Format: Custom
+ #: extensions/file_tools/gth-file-tool-crop.c:455
+-#: extensions/file_tools/gth-file-tool-resize.c:605
++#: extensions/file_tools/gth-file-tool-resize.c:607
+ #: extensions/image_print/data/ui/print-layout.ui:17
+ #: extensions/rename_series/gth-template-selector.c:248
+ #: gthumb/gth-test-aspect-ratio.c:193
+@@ -2545,10 +2597,6 @@ msgstr "Golden Section"
+ msgid "Center Lines"
+ msgstr "Garis Tengah"
+
+-#: extensions/file_tools/gth-file-tool-crop.c:687
+-msgid "Crop"
+-msgstr "Potong"
+-
+ #: extensions/file_tools/gth-file-tool-curves.c:410
+ msgid "Add to Presets"
+ msgstr "Tambah ke Pratata"
+@@ -2559,8 +2607,8 @@ msgstr "Masukkan nama pratata:"
+
+ #: extensions/file_tools/gth-file-tool-curves.c:533
+ #: extensions/gstreamer_tools/actions.c:69
+-#: extensions/image_viewer/gth-image-viewer-page.c:1592
+-#: gthumb/gth-browser.c:1887
++#: extensions/image_viewer/gth-image-viewer-page.c:1631
++#: gthumb/gth-browser.c:1863
+ msgid "Could not save the file"
+ msgstr "Tak bisa menyimpan berkas"
+
+@@ -2576,69 +2624,65 @@ msgstr "Kurva Warna"
+ msgid "Adjust color curves"
+ msgstr "Atur kurva warna"
+
+-#: extensions/file_tools/gth-file-tool-effects.c:358
++#: extensions/file_tools/gth-file-tool-effects.c:359
+ msgid "Special Effects"
+ msgstr "Efek Khusus"
+
+ #. Translators: this is the name of a filter that produces warmer colors
+-#: extensions/file_tools/gth-file-tool-effects.c:402
++#: extensions/file_tools/gth-file-tool-effects.c:403
+ msgid "Warmer"
+ msgstr "Lebih Hangat"
+
+ #. Translators: this is the name of a filter that produces cooler colors
+-#: extensions/file_tools/gth-file-tool-effects.c:446
++#: extensions/file_tools/gth-file-tool-effects.c:447
+ msgid "Cooler"
+ msgstr "Lebih Sejuk"
+
+ #. Translators: this is the name of an image filter
+-#: extensions/file_tools/gth-file-tool-effects.c:494
++#: extensions/file_tools/gth-file-tool-effects.c:495
+ msgid "Soil"
+ msgstr "Tanah"
+
+ #. Translators: this is the name of an image filter
+-#: extensions/file_tools/gth-file-tool-effects.c:543
++#: extensions/file_tools/gth-file-tool-effects.c:544
+ msgid "Desert"
+ msgstr "Padang Pasir"
+
+ #. Translators: this is the name of an image filter
+-#: extensions/file_tools/gth-file-tool-effects.c:591
++#: extensions/file_tools/gth-file-tool-effects.c:592
+ msgid "Arctic"
+ msgstr "Kutub Utara"
+
+ #. Translators: this is the name of an image filter
+-#: extensions/file_tools/gth-file-tool-effects.c:639
++#: extensions/file_tools/gth-file-tool-effects.c:640
+ msgid "Mangos"
+ msgstr "Mangga"
+
+ #. Translators: this is the name of an image filter
+-#: extensions/file_tools/gth-file-tool-effects.c:687
++#: extensions/file_tools/gth-file-tool-effects.c:688
+ msgid "Fresh Blue"
+ msgstr "Biru Segar"
+
+ #. Translators: this is the name of an image filter
+-#: extensions/file_tools/gth-file-tool-effects.c:734
++#: extensions/file_tools/gth-file-tool-effects.c:735
+ msgid "Cherry"
+ msgstr "Ceri"
+
+ #. Translators: this is the name of an image filter
+-#: extensions/file_tools/gth-file-tool-effects.c:783
++#: extensions/file_tools/gth-file-tool-effects.c:784
+ msgid "Vintage"
+ msgstr "Kuno"
+
+ #. Translators: this is the name of an image filter
+-#: extensions/file_tools/gth-file-tool-effects.c:905
++#: extensions/file_tools/gth-file-tool-effects.c:906
+ msgid "Blurred Edges"
+ msgstr "Tepi Dikaburkan"
+
+ #. Translators: this is the name of an image filter that produces darker edges
+-#: extensions/file_tools/gth-file-tool-effects.c:940
++#: extensions/file_tools/gth-file-tool-effects.c:941
+ msgid "Vignette"
+ msgstr "Sketsa"
+
+-#: extensions/file_tools/gth-file-tool-flip.c:90
+-msgid "Flip"
+-msgstr "Balikkan"
+-
+ #: extensions/file_tools/gth-file-tool-flip.c:91
+ msgid "Flip the image vertically"
+ msgstr "Balikkan gambar secara vertikal"
+@@ -2655,7 +2699,7 @@ msgstr "_Saturasi"
+ msgid "_Average"
+ msgstr "R_ata-rata"
+
+-#: extensions/file_tools/gth-file-tool-grayscale.c:497
++#: extensions/file_tools/gth-file-tool-grayscale.c:498
+ msgid "Grayscale"
+ msgstr "Skala kelabu"
+
+@@ -2663,10 +2707,6 @@ msgstr "Skala kelabu"
+ msgid "Lomo"
+ msgstr "Lomo"
+
+-#: extensions/file_tools/gth-file-tool-mirror.c:90
+-msgid "Mirror"
+-msgstr "Cerminkan"
+-
+ #: extensions/file_tools/gth-file-tool-mirror.c:91
+ msgid "Mirror the image horizontally"
+ msgstr "Cerminkan gambar secara horisontal"
+@@ -2680,19 +2720,15 @@ msgid "Redo"
+ msgstr "Jadi lagi"
+
+ #. resize the original image
+-#: extensions/file_tools/gth-file-tool-resize.c:183
+-#: extensions/resize_images/dlg-resize-images.c:172
++#: extensions/file_tools/gth-file-tool-resize.c:185
++#: extensions/resize_images/dlg-resize-images.c:169
+ #: gthumb/gth-filter-grid.c:573
+ msgid "Resizing images"
+ msgstr "Mengubah ukuran gambar"
+
+-#: extensions/file_tools/gth-file-tool-resize.c:838
+-msgid "Resize"
+-msgstr "Ubah Ukuran"
+-
+ #: extensions/file_tools/gth-file-tool-rotate-left.c:90
+-#: extensions/image_rotation/callbacks.c:46
+-#: extensions/image_rotation/callbacks.c:177
++#: extensions/image_rotation/callbacks.c:53
++#: extensions/image_rotation/callbacks.c:163
+ msgid "Rotate Left"
+ msgstr "Putar Kiri"
+
+@@ -2701,8 +2737,8 @@ msgid "Rotate the image by 90 degrees co
+ msgstr "Putar citra 90 derajat berlawanan dengan arah jarum jam"
+
+ #: extensions/file_tools/gth-file-tool-rotate-right.c:90
+-#: extensions/image_rotation/callbacks.c:47
+-#: extensions/image_rotation/callbacks.c:185
++#: extensions/image_rotation/callbacks.c:54
++#: extensions/image_rotation/callbacks.c:171
+ msgid "Rotate Right"
+ msgstr "Putar Kanan"
+
+@@ -2715,12 +2751,12 @@ msgid "Rotate"
+ msgstr "Putar"
+
+ #: extensions/file_tools/gth-file-tool-save-as.c:70
+-#: gthumb/resources/gears-menu.ui:24
++#: gthumb/resources/gears-menu.ui:21
+ msgid "Save As…"
+ msgstr "Simpan Sebagai…"
+
+ #: extensions/file_tools/gth-file-tool-save.c:66
+-#: gthumb/resources/gears-menu.ui:19
++#: gthumb/resources/gears-menu.ui:17
+ msgid "Save"
+ msgstr "Simpan"
+
+@@ -2776,7 +2812,7 @@ msgstr "Duplikat tak ditemukan."
+
+ #: extensions/find_duplicates/data/ui/find-duplicates.ui:32
+ #: extensions/rename_series/data/ui/rename-series.ui:27
+-#: extensions/search/data/ui/search-editor.ui:20
++#: extensions/search/data/ui/search-editor.ui:73
+ msgid "Start _at:"
+ msgstr "Mul_ai di:"
+
+@@ -2791,7 +2827,7 @@ msgid "Find Duplicates"
+ msgstr "Cari Duplikat"
+
+ #: extensions/find_duplicates/dlg-find-duplicates.c:106
+-#: extensions/search/actions.c:81
++#: extensions/search/actions.c:80
+ msgid "_Find"
+ msgstr "_Cari"
+
+@@ -2910,10 +2946,18 @@ msgid "Hi_de from public searches"
+ msgstr "Sembunyikan _dari pencarian publik"
+
+ #: extensions/flicker_utils/dlg-export-to-flickr.c:164
+-#: extensions/webalbums/gth-web-exporter.c:1842
++#: extensions/webalbums/gth-web-exporter.c:1826
+ msgid "_Open in the Browser"
+ msgstr "_Buka dalam Peramban"
+
++#: extensions/flicker_utils/dlg-import-from-flickr.c:320
++#: gthumb/gth-file-selection-info.c:140
++#, c-format
++msgid "%d file"
++msgid_plural "%d files"
++msgstr[0] "%d berkas"
++msgstr[1] "%d berkas"
++
+ #: extensions/flicker_utils/dlg-import-from-flickr.c:345
+ #: extensions/picasaweb/dlg-import-from-picasaweb.c:279
+ msgid "Could not get the photo list"
+@@ -2927,7 +2971,7 @@ msgid "No album selected"
+ msgstr "Tak ada album yang dipilih"
+
+ #: extensions/flicker_utils/dlg-import-from-flickr.c:521
+-#: extensions/photo_importer/dlg-photo-importer.c:582
++#: extensions/photo_importer/dlg-photo-importer.c:584
+ #: extensions/picasaweb/dlg-import-from-picasaweb.c:556
+ msgid "_Import"
+ msgstr "_Impor"
+@@ -2997,6 +3041,14 @@ msgstr "Cuplikan layar"
+ msgid "Could not take a screenshot"
+ msgstr "Tak bisa mengambil cuplikan layar"
+
++#: extensions/gstreamer_tools/callbacks.c:32
++msgid "Screenshot"
++msgstr "Cuplikan layar"
++
++#: extensions/gstreamer_tools/callbacks.c:33
++msgid "Play/Pause"
++msgstr "Putar/Jeda"
++
+ #: extensions/gstreamer_tools/data/ui/media-viewer-preferences.ui:13
+ msgid "Use hardware acceleration"
+ msgstr "Gunakan akselerasi perangkat keras"
+@@ -3006,8 +3058,8 @@ msgid "_Screenshots location:"
+ msgstr "Loka_si cuplikan layar:"
+
+ #: extensions/gstreamer_tools/data/ui/mediabar.ui:30
+-#: extensions/gstreamer_tools/gth-media-viewer-page.c:600
+-#: extensions/image_viewer/gth-image-viewer-page.c:1138
++#: extensions/gstreamer_tools/gth-media-viewer-page.c:621
++#: extensions/image_viewer/gth-image-viewer-page.c:1181
+ msgid "Play"
+ msgstr "Mainkan"
+
+@@ -3043,66 +3095,76 @@ msgstr "Putar berkas audio dan video."
+ msgid "video-x-generic"
+ msgstr "video-x-generic"
+
+-#: extensions/gstreamer_tools/gth-media-viewer-page.c:573
++#: extensions/gstreamer_tools/gth-media-viewer-page.c:594
+ msgid "Playing video"
+ msgstr "Memutar video"
+
+-#: extensions/gstreamer_tools/gth-media-viewer-page.c:586
++#: extensions/gstreamer_tools/gth-media-viewer-page.c:607
+ msgid "Pause"
+ msgstr "Jeda"
+
+-#: extensions/gstreamer_tools/gth-media-viewer-page.c:914
++#: extensions/gstreamer_tools/gth-media-viewer-page.c:930
+ msgid "Take a screenshot"
+ msgstr "Ambil cuplikan layar"
+
+-#: extensions/gstreamer_tools/main.c:32 gthumb/gth-main-default-tests.c:313
++#: extensions/gstreamer_tools/gth-media-viewer-page.c:937
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:51
++#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:71
++msgid "Fit to window"
++msgstr "Paskan ke jendela"
++
++#: extensions/gstreamer_tools/main.c:34
++msgid "Audio/Video Player"
++msgstr "Pemutar Audio/Video"
++
++#: extensions/gstreamer_tools/main.c:39 gthumb/gth-main-default-tests.c:314
+ msgid "Video"
+ msgstr "Video"
+
+-#: extensions/gstreamer_tools/main.c:33 gthumb/gth-main-default-tests.c:320
++#: extensions/gstreamer_tools/main.c:40 gthumb/gth-main-default-tests.c:321
+ msgid "Audio"
+ msgstr "Suara"
+
+-#: extensions/gstreamer_tools/main.c:40
++#: extensions/gstreamer_tools/main.c:47
+ msgid "Artist"
+ msgstr "Artis"
+
+-#: extensions/gstreamer_tools/main.c:41
++#: extensions/gstreamer_tools/main.c:48
+ #: extensions/webalbums/data/ui/web-album-exporter.ui:320
+ msgid "Album"
+ msgstr "Album"
+
+-#: extensions/gstreamer_tools/main.c:42
++#: extensions/gstreamer_tools/main.c:49
+ msgid "Bitrate"
+ msgstr "Laju bit"
+
+-#: extensions/gstreamer_tools/main.c:43
++#: extensions/gstreamer_tools/main.c:50
+ msgid "Encoder"
+ msgstr "Enkoder"
+
+-#: extensions/gstreamer_tools/main.c:45 extensions/gstreamer_tools/main.c:50
++#: extensions/gstreamer_tools/main.c:52 extensions/gstreamer_tools/main.c:57
+ msgid "Codec"
+ msgstr "Kodek"
+
+-#: extensions/gstreamer_tools/main.c:46
++#: extensions/gstreamer_tools/main.c:53
+ msgid "Framerate"
+ msgstr "Laju frame"
+
+-#: extensions/gstreamer_tools/main.c:47
++#: extensions/gstreamer_tools/main.c:54
+ #: extensions/image_print/data/ui/print-layout.ui:723
+ msgid "Width"
+ msgstr "Lebar"
+
+-#: extensions/gstreamer_tools/main.c:48
++#: extensions/gstreamer_tools/main.c:55
+ #: extensions/image_print/data/ui/print-layout.ui:739
+ msgid "Height"
+ msgstr "Tinggi"
+
+-#: extensions/gstreamer_tools/main.c:51
++#: extensions/gstreamer_tools/main.c:58
+ msgid "Channels"
+ msgstr "Kanal"
+
+-#: extensions/gstreamer_tools/main.c:52
++#: extensions/gstreamer_tools/main.c:59
+ msgid "Sample rate"
+ msgstr "Laju cuplikan"
+
+@@ -3116,10 +3178,10 @@ msgstr "Mono"
+
+ #. Translators: this is an image size, such as 1024 × 768
+ #: extensions/gstreamer_utils/gstreamer-utils.c:402
+-#: extensions/image_viewer/gth-image-viewer-page.c:1825
+-#: extensions/image_viewer/gth-metadata-provider-image.c:253
++#: extensions/image_viewer/gth-image-viewer-page.c:1864
++#: extensions/image_viewer/gth-metadata-provider-image.c:258
+ #: extensions/raw_files/gth-metadata-provider-raw.c:96
+-#: extensions/webalbums/gth-web-exporter.c:2449 gthumb/gtk-utils.c:893
++#: extensions/webalbums/gth-web-exporter.c:2434 gthumb/gtk-utils.c:963
+ #, c-format
+ msgid "%d × %d"
+ msgstr "%d × %d"
+@@ -3128,7 +3190,8 @@ msgstr "%d × %d"
+ msgid "Could not print the selected files"
+ msgstr "Tak bisa mencetak berkas yang dipilih"
+
+-#: extensions/image_print/callbacks.c:53 extensions/image_print/callbacks.c:59
++#: extensions/image_print/callbacks.c:38 extensions/image_print/callbacks.c:53
++#: extensions/image_print/callbacks.c:59
+ #: extensions/image_print/preferences.c:79
+ msgid "Print"
+ msgstr "Cetak"
+@@ -3186,19 +3249,19 @@ msgstr "milimeter"
+ msgid "inches"
+ msgstr "inci"
+
+-#: extensions/image_print/data/ui/print-preferences.ui:15
++#: extensions/image_print/data/ui/print-preferences.ui:14
+ msgid "Fonts"
+ msgstr "Fonta"
+
+-#: extensions/image_print/data/ui/print-preferences.ui:92
++#: extensions/image_print/data/ui/print-preferences.ui:87
+ msgid "Select Caption Font"
+ msgstr "Pilih Fonta Keterangan"
+
+-#: extensions/image_print/data/ui/print-preferences.ui:110
++#: extensions/image_print/data/ui/print-preferences.ui:104
+ msgid "Select Header Font"
+ msgstr "Pilih Fonta Tajuk"
+
+-#: extensions/image_print/data/ui/print-preferences.ui:128
++#: extensions/image_print/data/ui/print-preferences.ui:121
+ msgid "Select Footer Font"
+ msgstr "Pilih Fonta Kaki"
+
+@@ -3220,7 +3283,7 @@ msgstr "Gambar"
+
+ #: extensions/image_print/gth-image-print-job.c:1848
+ #: gthumb/gth-image-loader.c:251 gthumb/gth-image-loader.c:375
+-#: gthumb/gth-image-utils.c:131 gthumb/gth-image-utils.c:137
++#: gthumb/gth-image-utils.c:117 gthumb/gth-image-utils.c:123
+ msgid "No suitable loader available for this file type"
+ msgstr "Tak ada pemuat yang cocok bagi berkas jenis ini"
+
+@@ -3231,7 +3294,7 @@ msgid "Loading “%s”"
+ msgstr "Memuat \"%s\""
+
+ #: extensions/image_print/gth-load-image-info-task.c:170
+-#: extensions/webalbums/gth-web-exporter.c:2723
++#: extensions/webalbums/gth-web-exporter.c:2714
+ msgid "Loading images"
+ msgstr "Meload gambar"
+
+@@ -3247,18 +3310,18 @@ msgstr "Memungkinkan mencetak citra deng
+ msgid "document-print"
+ msgstr "document-print"
+
+-#: extensions/image_rotation/callbacks.c:52
++#: extensions/image_rotation/callbacks.c:59
+ msgid "Rotate Physically"
+ msgstr "Putar Secara Fisik"
+
+-#: extensions/image_rotation/callbacks.c:53
++#: extensions/image_rotation/callbacks.c:60
+ msgid "Reset the EXIF Orientation"
+ msgstr "Reset Orientasi EXIF"
+
+ #: extensions/image_rotation/gth-reset-orientation-task.c:114
+ #: extensions/image_rotation/gth-transform-task.c:146
+-#: extensions/webalbums/gth-web-exporter.c:2341
+-#: extensions/webalbums/gth-web-exporter.c:2426
++#: extensions/webalbums/gth-web-exporter.c:2326
++#: extensions/webalbums/gth-web-exporter.c:2411
+ msgid "Saving images"
+ msgstr "Menyimpan gambar"
+
+@@ -3306,77 +3369,198 @@ msgstr "Po_tong"
+ msgid "_Accept distortion"
+ msgstr "Terim_a distorsi"
+
+-#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:21
++#: extensions/image_viewer/callbacks.c:32
++msgid "Zoom in"
++msgstr "Perbesar"
++
++#: extensions/image_viewer/callbacks.c:33
++msgid "Zoom out"
++msgstr "Perkecil"
++
++#: extensions/image_viewer/callbacks.c:34
++msgid "Zoom 100%"
++msgstr "Zum 100%"
++
++#: extensions/image_viewer/callbacks.c:35
++msgid "Zoom 200%"
++msgstr "Zum 200%"
++
++#: extensions/image_viewer/callbacks.c:36
++msgid "Zoom 300%"
++msgstr "Zum 300%"
++
++#: extensions/image_viewer/callbacks.c:38
++msgid "Zoom to fit"
++msgstr "Zum agar pas"
++
++#: extensions/image_viewer/callbacks.c:39
++msgid "Zoom to fit if larger"
++msgstr "Paskan jika lebih besar"
++
++#: extensions/image_viewer/callbacks.c:40
++msgid "Zoom to fit width"
++msgstr "Zum agar pas lebar gambar"
++
++#: extensions/image_viewer/callbacks.c:41
++msgid "Zoom to fit width if larger"
++msgstr "Zum agar pas lebar gambar bila lebih"
++
++#: extensions/image_viewer/callbacks.c:42
++msgid "Zoom to fit height"
++msgstr "Zum agar pas tinggi gambar"
++
++#: extensions/image_viewer/callbacks.c:43
++msgid "Zoom to fit height if larger"
++msgstr "Zum agar pas tinggi gambar bila lebih"
++
++#: extensions/image_viewer/callbacks.c:45
++msgid "Undo edit"
++msgstr "Urung sunting"
++
++#: extensions/image_viewer/callbacks.c:46
++msgid "Redo edit"
++msgstr "Jadi sunting lagi"
++
++#: extensions/image_viewer/callbacks.c:48
++msgid "Scroll left"
++msgstr "Gulir ke kiri"
++
++#: extensions/image_viewer/callbacks.c:49
++msgid "Scroll right"
++msgstr "Gulir ke kanan"
++
++#: extensions/image_viewer/callbacks.c:50
++msgid "Scroll up"
++msgstr "Gulir naik"
++
++#: extensions/image_viewer/callbacks.c:51
++msgid "Scroll down"
++msgstr "Gulir turun"
++
++#: extensions/image_viewer/callbacks.c:53
++msgid "Scroll left fast"
++msgstr "Gulir ke kiri dengan cepat"
++
++#: extensions/image_viewer/callbacks.c:54
++msgid "Scroll right fast"
++msgstr "Gulir ke kiri dengan cepat"
++
++#: extensions/image_viewer/callbacks.c:55
++msgid "Scroll up fast"
++msgstr "Gulir naik dengan cepat"
++
++#: extensions/image_viewer/callbacks.c:56
++msgid "Scroll down fast"
++msgstr "Gulir turun dengan cepat"
++
++#: extensions/image_viewer/callbacks.c:58
++msgid "Scroll to center"
++msgstr "Gulir ke tengah"
++
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:20
+ msgid "After loading an image:"
+ msgstr "Setelah memuat gambar:"
+
+-#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:53
+-#: extensions/image_viewer/gth-image-viewer-page.c:1095
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:49
++#: extensions/image_viewer/gth-image-viewer-page.c:1138
+ msgid "Set to actual size"
+ msgstr "Tata ke ukuran sebenarnya"
+
+-#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:54
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:50
+ msgid "Keep previous zoom"
+ msgstr "Pertahankan zum"
+
+-#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:55
+-#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:29
+-msgid "Fit to window"
+-msgstr "Paskan ke jendela"
+-
+-#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:56
+-#: extensions/image_viewer/gth-image-viewer-page.c:1102
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:52
++#: extensions/image_viewer/gth-image-viewer-page.c:1145
+ msgid "Fit to window if larger"
+ msgstr "Paskan ke jendela jika lebih besar"
+
+-#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:57
+-#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:38
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:53
++#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:80
+ msgid "Fit to width"
+ msgstr "Pas lebar"
+
+-#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:58
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:54
+ msgid "Fit to width if larger"
+ msgstr "Paskan lebarnya jika lebih besar"
+
+-#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:76
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:72
+ msgid "Reset scrollbar positions"
+ msgstr "Reset posisi bilah penggulung"
+
+-#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:117
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:109
++msgid "Mouse wheel action:"
++msgstr "Aksi roda tetikus:"
++
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:131
++msgctxt "zoom quality"
++msgid "Change image"
++msgstr "Ubah gambar"
++
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:148
++msgctxt "zoom quality"
++msgid "Zoom image"
++msgstr "Zum citra"
++
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:187
+ msgid "Zoom quality:"
+ msgstr "Kualitas _zum:"
+
+-#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:141
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:209
+ msgctxt "zoom quality"
+ msgid "_High"
+ msgstr "_Tinggi"
+
+-#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:158
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:226
+ msgctxt "zoom quality"
+ msgid "_Low"
+ msgstr "_Rendah"
+
+-#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:20
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:266
++msgid "Transparency:"
++msgstr "Tingkat tembus pandang:"
++
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:295
++#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:15
++msgid "Checkered"
++msgstr "Kotak-kotak"
++
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:296
++#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:24
++msgid "White"
++msgstr "Putih"
++
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:297
++#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:33
++msgid "Gray"
++msgstr "Kelabu"
++
++#: extensions/image_viewer/data/ui/image-viewer-preferences.ui:298
++#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:42
++msgid "Black"
++msgstr "Hitam"
++
++#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:62
+ msgid "Automatic"
+ msgstr "Otomatis"
+
+-#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:47
++#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:89
+ msgid "Fit to height"
+ msgstr "Pas tinggi"
+
+-#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:64
++#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:106
+ msgid "50%"
+ msgstr "50%"
+
+-#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:73
++#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:115
+ msgid "100%"
+ msgstr "100%"
+
+-#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:82
++#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:124
+ msgid "200%"
+ msgstr "200%"
+
+-#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:91
++#: extensions/image_viewer/data/ui/toolbar-zoom-menu.ui:133
+ msgid "300%"
+ msgstr "300%"
+
+@@ -3384,31 +3568,44 @@ msgstr "300%"
+ msgid "Histogram"
+ msgstr "Histogram"
+
+-#: extensions/image_viewer/gth-image-viewer-page.c:77
++#: extensions/image_viewer/gth-image-viewer-page.c:83
+ msgid "Copy Image"
+ msgstr "Salin Gambar"
+
+-#: extensions/image_viewer/gth-image-viewer-page.c:78
++#: extensions/image_viewer/gth-image-viewer-page.c:84
+ msgid "Paste Image"
+ msgstr "Salin Gambar"
+
+-#: extensions/image_viewer/gth-image-viewer-page.c:1130
++#: extensions/image_viewer/gth-image-viewer-page.c:1173
+ msgid "Apply the embedded color profile"
+ msgstr "Terapkan profil warna yang tertanam"
+
+-#: extensions/image_viewer/gth-image-viewer-page.c:1145
++#: extensions/image_viewer/gth-image-viewer-page.c:1188
+ msgid "Next frame"
+ msgstr "Bingkai selanjutnya"
+
+-#: extensions/image_viewer/gth-image-viewer-page.c:1764
++#: extensions/image_viewer/gth-image-viewer-page.c:1195
++msgid "Transparency"
++msgstr "Tingkat tembus pandang"
++
++#: extensions/image_viewer/gth-image-viewer-page.c:1803
+ msgid "Save Image"
+ msgstr "Simpan Gambar"
+
+-#: extensions/image_viewer/gth-image-viewer-page.c:2373
++#: extensions/image_viewer/gth-image-viewer-page.c:2519
+ msgid "Loading the original image"
+ msgstr "Memuat gambar asli"
+
+-#: extensions/image_viewer/preferences.c:117
++#: extensions/image_viewer/main.c:36
++msgid "Scroll Image"
++msgstr "Gulir Citra"
++
++#: extensions/image_viewer/main.c:37
++msgid "Image Editor"
++msgstr "Penyunting Gambar"
++
++#: extensions/image_viewer/preferences.c:158 gthumb/gth-main-default-types.c:42
++#: gthumb/gth-shortcuts-window.c:40
+ msgid "Viewer"
+ msgstr "Penampil"
+
+@@ -3480,38 +3677,38 @@ msgstr "tahun"
+ msgid "custom format"
+ msgstr "format ubahan"
+
+-#: extensions/importer/gth-import-task.c:429
+-#: extensions/importer/gth-import-task.c:464
+-#: extensions/importer/gth-import-task.c:674
++#: extensions/importer/gth-import-task.c:431
++#: extensions/importer/gth-import-task.c:466
++#: extensions/importer/gth-import-task.c:678
+ msgid "Importing files"
+ msgstr "Mengimpor berkas"
+
+-#: extensions/importer/gth-import-task.c:623
++#: extensions/importer/gth-import-task.c:627
+ msgid "No file imported"
+ msgstr "Tak ada berkas yang diimpor"
+
+-#: extensions/importer/gth-import-task.c:624
++#: extensions/importer/gth-import-task.c:628
+ msgid "The selected files are already present in the destination."
+ msgstr "Berkas yang dipilih telah ada di tujuan."
+
+-#: extensions/importer/gth-import-task.c:647 gthumb/gth-file-source-vfs.c:683
++#: extensions/importer/gth-import-task.c:651 gthumb/gth-file-source-vfs.c:669
+ msgid "Could not delete the files"
+ msgstr "Tak bisa menghapus berkas"
+
+-#: extensions/importer/gth-import-task.c:648
++#: extensions/importer/gth-import-task.c:652
+ msgid "Delete operation not supported."
+ msgstr "Operasi penghapusan tak didukung."
+
+-#: extensions/importer/gth-import-task.c:735
++#: extensions/importer/gth-import-task.c:739
+ msgid "Last imported"
+ msgstr "Terakhir diimpor"
+
+-#: extensions/importer/gth-import-task.c:839
++#: extensions/importer/gth-import-task.c:843
+ msgid "No file specified."
+ msgstr "Tak ada berkas yang dinyatakan."
+
+ #. Translators: For example: Not enough free space in “/home/user/Images”.\n1.3 GB of space is required but only 300 MB is available.
+-#: extensions/importer/gth-import-task.c:876
++#: extensions/importer/gth-import-task.c:880
+ #, c-format
+ msgid ""
+ "Not enough free space in “%s”.\n"
+@@ -3520,7 +3717,8 @@ msgstr ""
+ "Tak cukup ruang kosong dalam \"%s\".\n"
+ "Diperlukan %s tapi hanya tersedia %s."
+
+-#: extensions/list_tools/callbacks.c:174 extensions/list_tools/callbacks.c:183
++#: extensions/list_tools/callbacks.c:148 extensions/list_tools/callbacks.c:157
++#: extensions/list_tools/main.c:31
+ msgid "Tools"
+ msgstr "Perkakas"
+
+@@ -3608,49 +3806,53 @@ msgstr "%quote{ teks }"
+ msgid "Quote the text "
+ msgstr "Kutip teks "
+
+-#: extensions/list_tools/data/ui/script-editor.ui:534
++#: extensions/list_tools/data/ui/script-editor.ui:522
++msgid "The current date and time"
++msgstr "Tanggal dan waktu saat ini"
++
++#: extensions/list_tools/data/ui/script-editor.ui:568
+ msgid "_Command:"
+ msgstr "_Perintah:"
+
+-#: extensions/list_tools/data/ui/tools-menu.ui:13 gthumb/gth-filterbar.c:314
++#: extensions/list_tools/data/ui/tools-menu.ui:15 gthumb/gth-filterbar.c:314
+ msgid "Personalize…"
+ msgstr "Personalisasikan…"
+
+-#: extensions/list_tools/dlg-personalize-scripts.c:252
++#: extensions/list_tools/dlg-personalize-scripts.c:250
+ msgid "Script"
+ msgstr "Skrip"
+
+-#: extensions/list_tools/dlg-personalize-scripts.c:266
+-#: gthumb/gth-accel-button.c:229
++#: extensions/list_tools/dlg-personalize-scripts.c:264
++#: gthumb/dlg-preferences-shortcuts.c:229 gthumb/gth-accel-button.c:256
+ msgid "Shortcut"
+ msgstr "Pintas"
+
+-#: extensions/list_tools/dlg-personalize-scripts.c:280
++#: extensions/list_tools/dlg-personalize-scripts.c:278
+ #: gthumb/dlg-personalize-filters.c:252
+ msgid "Show"
+ msgstr "Tampilkan"
+
+-#: extensions/list_tools/dlg-personalize-scripts.c:350
++#: extensions/list_tools/dlg-personalize-scripts.c:368
+ msgid "Could not save the script"
+ msgstr "Tidak dapat menyimpan skrip"
+
+-#: extensions/list_tools/dlg-personalize-scripts.c:401
++#: extensions/list_tools/dlg-personalize-scripts.c:448
+ msgid "New Command"
+ msgstr "Perintah Baru"
+
+-#: extensions/list_tools/dlg-personalize-scripts.c:428
++#: extensions/list_tools/dlg-personalize-scripts.c:475
+ msgid "Edit Command"
+ msgstr "Sunting Perintah"
+
+-#: extensions/list_tools/dlg-personalize-scripts.c:456
++#: extensions/list_tools/dlg-personalize-scripts.c:505
+ msgid "Are you sure you want to delete the selected command?"
+ msgstr "Anda yakin akan menghapus perintah yang dipilih?"
+
+-#: extensions/list_tools/dlg-personalize-scripts.c:544
++#: extensions/list_tools/dlg-personalize-scripts.c:605
+ msgid "Commands"
+ msgstr "Perintah"
+
+-#: extensions/list_tools/gth-script-editor-dialog.c:247
++#: extensions/list_tools/gth-script-editor-dialog.c:279
+ #, c-format
+ msgid "No command specified"
+ msgstr "Perintah tak dinyatakan"
+@@ -3660,18 +3862,18 @@ msgstr "Perintah tak dinyatakan"
+ msgid "Command exited abnormally with status %d"
+ msgstr "Perintah berakhir tak normal dengan status %d"
+
+-#: extensions/list_tools/gth-script.c:481
++#: extensions/list_tools/gth-script.c:502
+ msgid "Enter a value:"
+ msgstr "Masukkan nilai:"
+
+-#: extensions/list_tools/gth-script.c:715
++#: extensions/list_tools/gth-script.c:753
+ #: extensions/webalbums/gth-web-exporter.c:561
+ #: extensions/webalbums/gth-web-exporter.c:573
+ #: extensions/webalbums/gth-web-exporter.c:581
+ msgid "Malformed command"
+ msgstr "Perintah salah bentuk"
+
+-#: extensions/list_tools/gth-script.c:770
++#: extensions/list_tools/gth-script.c:808
+ msgid "_Skip"
+ msgstr "_Lewati"
+
+@@ -3721,7 +3923,7 @@ msgid "A_ccounts:"
+ msgstr "A_kun:"
+
+ #: extensions/oauth/data/ui/oauth-ask-authorization.ui:54
+-#: gthumb/gth-folder-tree.c:1080
++#: gthumb/gth-folder-tree.c:1160
+ msgid "Loading…"
+ msgstr "Memuat…"
+
+@@ -3758,7 +3960,7 @@ msgid "Getting account information"
+ msgstr "Mengambil informasi akun"
+
+ #: extensions/photo_importer/actions.c:71
+-#: extensions/photo_importer/dlg-photo-importer.c:626
++#: extensions/photo_importer/dlg-photo-importer.c:628
+ msgid "Choose a folder"
+ msgstr "Pilih folder"
+
+@@ -3822,11 +4024,11 @@ msgstr "Tak bisa memuat folder"
+
+ #: extensions/photo_importer/dlg-photo-importer.c:356
+ #: extensions/photo_importer/dlg-photo-importer.c:396 gthumb/gth-file-list.c:42
+-#: gthumb/gth-folder-tree.c:1107
++#: gthumb/gth-folder-tree.c:1186
+ msgid "(Empty)"
+ msgstr "(Kosong)"
+
+-#: extensions/photo_importer/dlg-photo-importer.c:361 gthumb/gth-browser.c:1798
++#: extensions/photo_importer/dlg-photo-importer.c:361
+ msgid "Getting the folder content…"
+ msgstr "Mengambil isi folder…"
+
+@@ -3834,11 +4036,11 @@ msgstr "Mengambil isi folder…"
+ msgid "Empty"
+ msgstr "Kosong"
+
+-#: extensions/photo_importer/dlg-photo-importer.c:592
++#: extensions/photo_importer/dlg-photo-importer.c:594
+ msgid "Import from Removable Device"
+ msgstr "Impor dari Perangkat Lepas Pasang"
+
+-#: extensions/photo_importer/dlg-photo-importer.c:624
++#: extensions/photo_importer/dlg-photo-importer.c:626
+ msgid "Import from Folder"
+ msgstr "Impor dari Folder"
+
+@@ -3954,6 +4156,7 @@ msgid "Cas_e:"
+ msgstr "Huruf B_esar Kecil:"
+
+ #: extensions/rename_series/data/ui/rename-series.ui:83
++#: gthumb/gth-browser-actions-entries.h:94
+ msgid "Help"
+ msgstr "Bantuan"
+
+@@ -4050,28 +4253,28 @@ msgstr "Tak bisa menyimpan templat"
+ msgid "Edit Template"
+ msgstr "Sunting Templat"
+
+-#: extensions/rename_series/dlg-rename-series.c:854
+-#: gthumb/gth-folder-tree.c:1913
++#: extensions/rename_series/dlg-rename-series.c:860
++#: gthumb/gth-folder-tree.c:1974
+ msgid "_Rename"
+ msgstr "_Ganti nama"
+
+-#: extensions/rename_series/dlg-rename-series.c:871
++#: extensions/rename_series/dlg-rename-series.c:877
+ msgid "Old Name"
+ msgstr "Nama Lama"
+
+-#: extensions/rename_series/dlg-rename-series.c:882
++#: extensions/rename_series/dlg-rename-series.c:888
+ msgid "New Name"
+ msgstr "Nama Baru"
+
+-#: extensions/rename_series/dlg-rename-series.c:960
++#: extensions/rename_series/dlg-rename-series.c:966
+ msgid "Keep original case"
+ msgstr "Pertahankan huruf besar kecil seperti semula"
+
+-#: extensions/rename_series/dlg-rename-series.c:961
++#: extensions/rename_series/dlg-rename-series.c:967
+ msgid "Convert to lower-case"
+ msgstr "Ubah ke huruf kecil"
+
+-#: extensions/rename_series/dlg-rename-series.c:962
++#: extensions/rename_series/dlg-rename-series.c:968
+ msgid "Convert to upper-case"
+ msgstr "Ubah ke huruf besar"
+
+@@ -4108,15 +4311,15 @@ msgid "_Preserve original aspect ratios"
+ msgstr "_Pertahankan rasio aspek semula"
+
+ #: extensions/resize_images/data/ui/resize-images.ui:324
+-#: gthumb/gth-main-default-metadata.c:45 gthumb/gth-toolbox.c:148
++#: gthumb/gth-main-default-metadata.c:47 gthumb/gth-toolbox.c:148
+ msgid "Format"
+ msgstr "Format"
+
+-#: extensions/resize_images/dlg-resize-images.c:344
++#: extensions/resize_images/dlg-resize-images.c:341
+ msgid "Resize Images"
+ msgstr "Ubah Ukuran Gambar"
+
+-#: extensions/resize_images/dlg-resize-images.c:430
++#: extensions/resize_images/dlg-resize-images.c:427
+ msgid "Keep the original format"
+ msgstr "Pertahankan format asli"
+
+@@ -4128,8 +4331,8 @@ msgstr "Ubah ukuran gambar"
+ msgid "Resize series of images."
+ msgstr "Ubah ukuran seri gambar."
+
+-#: extensions/search/actions.c:50 extensions/search/actions.c:123
+-#: extensions/search/actions.c:129
++#: extensions/search/actions.c:50 extensions/search/actions.c:122
++#: extensions/search/actions.c:128
+ msgid "Could not perform the search"
+ msgstr "Tak bisa melakukan pencarian"
+
+@@ -4137,48 +4340,48 @@ msgstr "Tak bisa melakukan pencarian"
+ msgid "Search Result"
+ msgstr "Hasil Cari"
+
+-#: extensions/search/actions.c:79
++#: extensions/search/actions.c:78
+ msgid "Find"
+ msgstr "Cari"
+
+-#: extensions/search/callbacks.c:69
++#: extensions/search/callbacks.c:44 extensions/search/callbacks.c:79
+ msgid "Find files"
+ msgstr "Cari berkas"
+
+-#: extensions/search/callbacks.c:103
++#: extensions/search/callbacks.c:113
+ msgid "Search again"
+ msgstr "Cari lagi"
+
+ #. Translators: This is not a verb, it's a name as in "the search properties".
+-#: extensions/search/callbacks.c:146
++#: extensions/search/callbacks.c:169
+ #: extensions/search/search.extension.desktop.in.in:3
+ msgid "Search"
+ msgstr "Cari"
+
+-#: extensions/search/data/ui/search-editor.ui:112
+-msgid "Rules:"
+-msgstr "Aturan:"
+-
+-#: extensions/search/gth-search-editor.c:114
++#: extensions/search/gth-search-editor.c:117
+ #: gthumb/gth-filter-editor-dialog.c:167
+ msgid "all the following rules"
+ msgstr "semua aturan berikut"
+
+-#: extensions/search/gth-search-editor.c:115
++#: extensions/search/gth-search-editor.c:118
+ #: gthumb/gth-filter-editor-dialog.c:168
+ msgid "any of the following rules"
+ msgstr "sebarang aturan berikut"
+
+-#: extensions/search/gth-search-task.c:181
++#: extensions/search/gth-search-source-selector.c:130
++msgid "Add another location"
++msgstr "Tambahkan lokasi lain"
++
++#: extensions/search/gth-search-task.c:194
+ #, c-format
+ msgid "Files found so far: %s"
+ msgstr "Berkas yang ditemukan sampai kini: %s"
+
+-#: extensions/search/gth-search-task.c:272
++#: extensions/search/gth-search-task.c:340
+ msgid "Searching…"
+ msgstr "Mencari…"
+
+-#: extensions/search/gth-search-task.c:279
++#: extensions/search/gth-search-task.c:347
+ msgid "Cancel the operation"
+ msgstr "Batalkan operasi"
+
+@@ -4190,16 +4393,32 @@ msgstr "Perkakas pencarian berkas."
+ msgid "edit-find"
+ msgstr "edit-find"
+
+-#: extensions/selections/callbacks.c:55
++#. Not real actions, used in the shorcut window for documentation.
++#: extensions/selections/callbacks.c:57 extensions/selections/callbacks.c:58
++#: extensions/selections/callbacks.c:59 extensions/selections/callbacks.c:71
++msgid "Add to selection"
++msgstr "T_ambahkan ke Pilihan"
++
++#: extensions/selections/callbacks.c:61 extensions/selections/callbacks.c:62
++#: extensions/selections/callbacks.c:63 extensions/selections/callbacks.c:72
++msgid "Remove from selection"
++msgstr "Hapus dari pilihan"
++
++#: extensions/selections/callbacks.c:65 extensions/selections/callbacks.c:66
++#: extensions/selections/callbacks.c:67 extensions/selections/callbacks.c:73
++msgid "Show selection"
++msgstr "Tampilkan seleksi"
++
++#: extensions/selections/callbacks.c:83
+ msgid "Remove from Selection"
+ msgstr "Buang dari Pilihan"
+
+-#: extensions/selections/callbacks.c:100
++#: extensions/selections/callbacks.c:128
+ #, c-format
+ msgid "Show selection %d"
+ msgstr "Tampilkan seleksi %d"
+
+-#: extensions/selections/callbacks.c:339
++#: extensions/selections/callbacks.c:365
+ #, c-format
+ msgid ""
+ "Use Alt-%d to add files to this selection, Ctrl-%d to view this selection."
+@@ -4213,6 +4432,7 @@ msgid "Selection %d"
+ msgstr "Seleksi %d"
+
+ #: extensions/selections/gth-selections-manager.c:231
++#: extensions/selections/main.c:33
+ #: extensions/selections/selections.extension.desktop.in.in:3
+ msgid "Selections"
+ msgstr "Pilihan"
+@@ -4225,52 +4445,69 @@ msgstr "Pemilihan berkas tingkat lanjut.
+ msgid "emblem-flag-gray"
+ msgstr "emblem-flag-gray"
+
+-#: extensions/slideshow/callbacks.c:51
+-msgid "Presentation"
+-msgstr "Presentasi"
++#: extensions/slideshow/callbacks.c:40
++msgid "Start presentation"
++msgstr "Mulai presentasi"
++
++#: extensions/slideshow/callbacks.c:41
++msgid "Terminate presentation"
++msgstr "Akhiri presentation"
++
++#: extensions/slideshow/callbacks.c:42
++msgid "Pause/Resume presentation"
++msgstr "Jeda/lanjutkan presentasi"
++
++#: extensions/slideshow/callbacks.c:43 gthumb/gth-browser-actions-entries.h:118
++msgid "Show next file"
++msgstr "Tampilkan berkas berikutnya"
++
++#: extensions/slideshow/callbacks.c:44 gthumb/gth-browser-actions-entries.h:117
++msgid "Show previous file"
++msgstr "Tampilkan berkas sebelumnya"
+
+-#: extensions/slideshow/callbacks.c:348
++#: extensions/slideshow/callbacks.c:65 extensions/slideshow/callbacks.c:362
+ #: extensions/slideshow/data/ui/slideshow-preferences.ui:65
+-#: extensions/slideshow/preferences.c:162
++#: extensions/slideshow/main.c:286 extensions/slideshow/preferences.c:142
+ #: extensions/slideshow/slideshow.extension.desktop.in.in:3
+-msgid "Slideshow"
+-msgstr "Pertunjukan Slide"
++#: gthumb/gth-shortcuts-window.c:41
++msgid "Presentation"
++msgstr "Presentasi"
+
+ #: extensions/slideshow/data/ui/slideshow-preferences.ui:46
+ msgid "_Personalize"
+ msgstr "_Personalisasi"
+
+-#: extensions/slideshow/data/ui/slideshow-preferences.ui:102
++#: extensions/slideshow/data/ui/slideshow-preferences.ui:100
+ msgid "_Transition effect:"
+ msgstr "Efek _transisi:"
+
+ #. This is the first part of the phrase "change automatically, every x seconds", where x is an input control that let the user choose a value.
+-#: extensions/slideshow/data/ui/slideshow-preferences.ui:128
++#: extensions/slideshow/data/ui/slideshow-preferences.ui:126
+ msgid "_Change automatically, every"
+ msgstr "_Ubah otomatis setiap"
+
+-#: extensions/slideshow/data/ui/slideshow-preferences.ui:166
++#: extensions/slideshow/data/ui/slideshow-preferences.ui:162
+ msgctxt "Every x seconds"
+ msgid "seconds"
+ msgstr "detik"
+
+-#: extensions/slideshow/data/ui/slideshow-preferences.ui:190
++#: extensions/slideshow/data/ui/slideshow-preferences.ui:186
+ msgid "_Restart when finished"
+ msgstr "Sta_rt ulang setelah selesai"
+
+-#: extensions/slideshow/data/ui/slideshow-preferences.ui:207
++#: extensions/slideshow/data/ui/slideshow-preferences.ui:201
+ msgid "R_andom order"
+ msgstr "Urutan _acak"
+
+-#: extensions/slideshow/data/ui/slideshow-preferences.ui:247
++#: extensions/slideshow/data/ui/slideshow-preferences.ui:237
+ msgid "Playlist"
+ msgstr "Daftar Main"
+
+-#: extensions/slideshow/data/ui/slideshow-preferences.ui:326
++#: extensions/slideshow/data/ui/slideshow-preferences.ui:314
+ msgid "Add files to the playlist"
+ msgstr "Tambahkan berkas ke daftar main"
+
+-#: extensions/slideshow/data/ui/slideshow-preferences.ui:347
++#: extensions/slideshow/data/ui/slideshow-preferences.ui:334
+ msgid "Remove the selected files"
+ msgstr "Hapus berkas yang dipilih"
+
+@@ -4286,50 +4523,67 @@ msgstr "Berkas suara"
+ msgid "Random"
+ msgstr "Acak"
+
+-#: extensions/slideshow/gth-slideshow.c:284
+-msgid "Playing slideshow"
+-msgstr "Putar slideshow"
++#: extensions/slideshow/gth-slideshow.c:237
++msgid "Playing a presentation"
++msgstr "Memutar suatu presentasi"
+
+-#: extensions/slideshow/main.c:297
++#: extensions/slideshow/main.c:303
+ msgid "Push from right"
+ msgstr "Dorong dari kanan"
+
+-#: extensions/slideshow/main.c:303
++#: extensions/slideshow/main.c:309
+ msgid "Push from bottom"
+ msgstr "Dorong dari dasar"
+
+-#: extensions/slideshow/main.c:309
++#: extensions/slideshow/main.c:315
+ msgid "Slide from right"
+ msgstr "Geser dari kanan"
+
+-#: extensions/slideshow/main.c:315
++#: extensions/slideshow/main.c:321
+ msgid "Slide from bottom"
+ msgstr "Geser dari dasar"
+
+-#: extensions/slideshow/main.c:321
++#: extensions/slideshow/main.c:327
+ msgid "Fade in"
+ msgstr "Memudar"
+
+-#: extensions/slideshow/main.c:327
++#: extensions/slideshow/main.c:333
+ msgid "Flip page"
+ msgstr "Balik halaman"
+
+-#: extensions/slideshow/main.c:333
++#: extensions/slideshow/main.c:339
+ msgid "Cube from right"
+ msgstr "Kubus dari kanan"
+
+-#: extensions/slideshow/main.c:339
++#: extensions/slideshow/main.c:345
+ msgid "Cube from bottom"
+ msgstr "Kubus dari dasar"
+
+ #: extensions/slideshow/slideshow.extension.desktop.in.in:4
+-msgid "View images as a slideshow."
+-msgstr "Tilik gambar sebagai pertunjukan slide."
++msgid "Play a presentation of images."
++msgstr "Meutar presentasi gambar."
+
+ #: extensions/slideshow/slideshow.extension.desktop.in.in:8
+ msgid "x-office-presentation"
+ msgstr "x-office-presentation"
+
++#: extensions/terminal/actions.c:53
++#: extensions/terminal/terminal.extension.desktop.in.in:3
++msgid "Terminal"
++msgstr "Terminal"
++
++#: extensions/terminal/callbacks.c:40 extensions/terminal/callbacks.c:45
++msgid "Open in Terminal"
++msgstr "Buka dalam Terminal"
++
++#: extensions/terminal/terminal.extension.desktop.in.in:4
++msgid "Open a folder in a terminal"
++msgstr "Membuka folder di terminal"
++
++#: extensions/terminal/terminal.extension.desktop.in.in:8
++msgid "utilities-terminal"
++msgstr "utilities-terminal"
++
+ #: extensions/webalbums/callbacks.c:48
+ msgid "_Web Album…"
+ msgstr "Album _Web…"
+@@ -4351,14 +4605,6 @@ msgstr "Gambar %d dari %d"
+ msgid "Index"
+ msgstr "Indeks"
+
+-#: extensions/webalbums/data/albumthemes/text.h:30
+-msgid "Next"
+-msgstr "Selanjutnya"
+-
+-#: extensions/webalbums/data/albumthemes/text.h:32
+-msgid "Previous"
+-msgstr "Sebelum"
+-
+ #: extensions/webalbums/data/albumthemes/text.h:33
+ #, c-format
+ msgid "View page %d"
+@@ -4442,36 +4688,36 @@ msgstr "Atribut Gambar"
+ msgid "Web Album"
+ msgstr "Album Web"
+
+-#: extensions/webalbums/gth-web-exporter.c:1803
++#: extensions/webalbums/gth-web-exporter.c:1787
+ msgid "Could not show the destination"
+ msgstr "Tidak dapat meampilkan tujuan"
+
+-#: extensions/webalbums/gth-web-exporter.c:1839
++#: extensions/webalbums/gth-web-exporter.c:1823
+ msgid "The album has been created successfully."
+ msgstr "Album telah sukses dibuat."
+
+-#: extensions/webalbums/gth-web-exporter.c:2107
+-#: extensions/webalbums/gth-web-exporter.c:2135
++#: extensions/webalbums/gth-web-exporter.c:2092
++#: extensions/webalbums/gth-web-exporter.c:2120
+ msgid "Saving thumbnails"
+ msgstr "Menyimpan sketsa"
+
+-#: extensions/webalbums/gth-web-exporter.c:2163
++#: extensions/webalbums/gth-web-exporter.c:2148
+ msgid "Saving HTML pages: Images"
+ msgstr "Menyimpan halaman HTML: Gambar"
+
+-#: extensions/webalbums/gth-web-exporter.c:2221
++#: extensions/webalbums/gth-web-exporter.c:2206
+ msgid "Saving HTML pages: Indexes"
+ msgstr "Simpan halaman HTML: Indeks"
+
+-#: extensions/webalbums/gth-web-exporter.c:2506
++#: extensions/webalbums/gth-web-exporter.c:2491
+ msgid "Copying original images"
+ msgstr "Menyaling gambar asli"
+
+-#: extensions/webalbums/gth-web-exporter.c:2967
++#: extensions/webalbums/gth-web-exporter.c:2958
+ msgid "Could not find the style folder"
+ msgstr "Tak bisa menemukan folder gaya"
+
+-#: extensions/webalbums/gth-web-exporter.c:3005
++#: extensions/webalbums/gth-web-exporter.c:2996
+ msgid "Could not create a temporary folder"
+ msgstr "Tidak dapat membuat folder sementara"
+
+@@ -4483,9 +4729,9 @@ msgstr "Album Web"
+ msgid "Create static web albums."
+ msgstr "Buat album web statik."
+
+-#: gthumb/dlg-location.c:200 gthumb/gth-browser.c:1109
+-#: gthumb/gth-browser.c:1678 gthumb/gth-browser.c:6582
+-#: gthumb/gth-browser.c:6601 gthumb/gth-browser.c:6625
++#: gthumb/dlg-location.c:200 gthumb/gth-browser.c:1170
++#: gthumb/gth-browser.c:6569 gthumb/gth-browser.c:6588
++#: gthumb/gth-browser.c:6612 gthumb/gth-vfs-tree.c:390
+ #, c-format
+ msgid "Could not load the position “%s”"
+ msgstr "Tidak dapat memuat posisi \"%s\""
+@@ -4516,20 +4762,24 @@ msgstr "Tapis"
+
+ #. add the page to the preferences dialog
+ #: gthumb/dlg-preferences-browser.c:188 gthumb/dlg-preferences-extensions.c:65
++#: gthumb/gth-shortcuts-window.c:39
+ msgid "Browser"
+ msgstr "Peramban"
+
+-#: gthumb/dlg-preferences-extensions.c:61 gthumb/gth-filterbar.c:280
++#: gthumb/dlg-preferences-extensions.c:61
++msgctxt "Extensions"
+ msgid "All"
+ msgstr "Semua"
+
+ #: gthumb/dlg-preferences-extensions.c:62
++msgctxt "Extensions"
+ msgid "Enabled"
+-msgstr "Diaktifkan"
++msgstr "Difungsikan"
+
+ #: gthumb/dlg-preferences-extensions.c:63
++msgctxt "Extensions"
+ msgid "Disabled"
+-msgstr "Dimatikan"
++msgstr "Dinonaktifkan"
+
+ #: gthumb/dlg-preferences-extensions.c:66
+ msgid "Viewers"
+@@ -4565,65 +4815,99 @@ msgid "Could not deactivate the extensio
+ msgstr "Tidak dapat menonaktifkan ekstensi"
+
+ #: gthumb/dlg-preferences-extensions.c:491
+-msgid "gthumb development team"
+-msgstr "tim pengembang gthumb"
++msgid "gThumb Development Team"
++msgstr "Tim pengembangan gThumb"
+
+ #. add the page to the preferences dialog
+-#: gthumb/dlg-preferences-extensions.c:666
++#: gthumb/dlg-preferences-extensions.c:664
+ msgid "Extensions"
+ msgstr "Ekstensi"
+
+-#: gthumb/dlg-preferences-extensions.c:715
++#: gthumb/dlg-preferences-extensions.c:713
+ msgid "Restart required"
+ msgstr "Perlu restart"
+
+-#: gthumb/dlg-preferences-extensions.c:716
++#: gthumb/dlg-preferences-extensions.c:714
+ msgid "You need to restart gthumb for these changes to take effect"
+ msgstr "Anda perlu memulai ulang gthumb agar perubahan ini berdampak"
+
+-#: gthumb/dlg-preferences-extensions.c:718
++#: gthumb/dlg-preferences-extensions.c:716
+ msgid "_Restart"
+ msgstr "_Restart"
+
++#: gthumb/dlg-preferences-shortcuts.c:294
++#: gthumb/dlg-preferences-shortcuts.c:369 gthumb/resources/gears-menu.ui:25
++msgid "Revert"
++msgstr "Balikkan"
++
++#: gthumb/dlg-preferences-shortcuts.c:367
++msgid "Do you want to revert all the changes and use the default shortcuts?"
++msgstr ""
++"Apakah Anda ingin mengembalikan semua perubahan dan menggunakan pintasan "
++"baku?"
++
++#: gthumb/dlg-preferences-shortcuts.c:540
++msgctxt "Shortcuts"
++msgid "All"
++msgstr "Semua"
++
++#: gthumb/dlg-preferences-shortcuts.c:546
++msgctxt "Shortcuts"
++msgid "Modified"
++msgstr "Diubah"
++
++#. add the page to the preferences dialog
++#: gthumb/dlg-preferences-shortcuts.c:575
++msgid "Shortcuts"
++msgstr "Pintasan"
++
+ #: gthumb/dlg-sort-order.c:113
+ msgid "Sort By"
+ msgstr "Urut Berdasarkan"
+
+ #. For translators: This is a progress size indicator, for example: 230.4 MB of 512.8 MB
+-#: gthumb/gio-utils.c:1383
++#: gthumb/gio-utils.c:1059
+ #, c-format
+ msgid "%s of %s"
+ msgstr "%s dari %s"
+
+-#: gthumb/gio-utils.c:1472
++#: gthumb/gio-utils.c:1148
+ #, c-format
+ msgid "Moving “%s” to “%s”"
+ msgstr "Memindahkan \"%s\" ke \"%s\""
+
+-#: gthumb/gio-utils.c:1474
++#: gthumb/gio-utils.c:1150
+ #, c-format
+ msgid "Copying “%s” to “%s”"
+ msgstr "Menyalin \"%s\" ke \"%s\""
+
+-#: gthumb/gio-utils.c:1885
++#: gthumb/gio-utils.c:1561
+ msgid "Moving files"
+ msgstr "Memindah berkas"
+
+-#: gthumb/gio-utils.c:1885
++#: gthumb/gio-utils.c:1561
+ msgid "Copying files"
+ msgstr "Menyalin berkas"
+
+-#: gthumb/gio-utils.c:1886
++#: gthumb/gio-utils.c:1562 gthumb/gio-utils.c:1793 gthumb/gio-utils.c:1923
+ msgid "Getting file information"
+ msgstr "Mengambil informasi berkas"
+
++#: gthumb/gio-utils.c:1728
++msgid "Deleting files"
++msgstr "Menghapus berkas"
++
++#: gthumb/gio-utils.c:1869
++msgid "Moving files to trash"
++msgstr "Memindah berkas ke tong sampah"
++
+ #. hour:minutes:seconds
+ #. Translators: This is a time format, like "9∶05∶02" for 9
+ #. * hours, 5 minutes, and 2 seconds. You may change "∶" to
+ #. * the separator that your locale uses or use "%Id" instead
+ #. * of "%d" if your locale uses localized digits.
+ #.
+-#: gthumb/glib-utils.c:3298
++#: gthumb/glib-utils.c:2055
+ #, c-format
+ msgctxt "long time format"
+ msgid "%d∶%02d∶%02d"
+@@ -4635,17 +4919,17 @@ msgstr "%d:%02d:%02d"
+ #. * separator that your locale uses or use "%Id" instead of
+ #. * "%d" if your locale uses localized digits.
+ #.
+-#: gthumb/glib-utils.c:3307
++#: gthumb/glib-utils.c:2064
+ #, c-format
+ msgctxt "short time format"
+ msgid "%d∶%02d"
+ msgstr "%d:%02d"
+
+-#: gthumb/gth-accel-button.c:239
++#: gthumb/gth-accel-dialog.c:121
+ msgid "Press a combination of keys to use as shortcut."
+ msgstr "Tekan kombinasi tombol untuk digunakan sebagai pintasan."
+
+-#: gthumb/gth-accel-button.c:240
++#: gthumb/gth-accel-dialog.c:122
+ msgid "Press Esc to cancel"
+ msgstr "Tekan Esc untuk membatalkan"
+
+@@ -4658,8 +4942,8 @@ msgid "Start in fullscreen mode"
+ msgstr "Mulai dengan modus fullscreen"
+
+ #: gthumb/gth-application.c:60
+-msgid "Automatically start a slideshow"
+-msgstr "Otomatis mulai sebuah slideshow"
++msgid "Automatically start a presentation"
++msgstr "Otomatis mulai sebuah presentasi"
+
+ #: gthumb/gth-application.c:64
+ msgid "Automatically import digital camera photos"
+@@ -4669,11 +4953,11 @@ msgstr "Otomatis impor foto kamera digit
+ msgid "Show version"
+ msgstr "Tampilkan versi"
+
+-#: gthumb/gth-application.c:198
++#: gthumb/gth-application.c:171
+ msgid "— Image browser and viewer"
+ msgstr "— Peramban dan penilik gambar"
+
+-#: gthumb/gth-browser-actions-callbacks.c:127
++#: gthumb/gth-browser-actions-callbacks.c:100
+ msgid ""
+ "gThumb 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 "
+@@ -4685,7 +4969,7 @@ msgstr ""
+ "dipublikasikan oleh Free Software Foundation; boleh Lisensi versi 3 atau "
+ "(sesuai pilihan Anda) versi selanjutnya."
+
+-#: gthumb/gth-browser-actions-callbacks.c:131
++#: gthumb/gth-browser-actions-callbacks.c:104
+ msgid ""
+ "gThumb is distributed in the hope that it will be useful, but WITHOUT ANY "
+ "WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+@@ -4697,7 +4981,7 @@ msgstr ""
+ "KECOCOKAN UNTUK TUJUAN TERTENTU. Lihat GNU General Public License untuk "
+ "rincian lebih lanjut."
+
+-#: gthumb/gth-browser-actions-callbacks.c:135
++#: gthumb/gth-browser-actions-callbacks.c:108
+ msgid ""
+ "You should have received a copy of the GNU General Public License along with "
+ "gThumb. If not, see http://www.gnu.org/licenses/."
+@@ -4705,119 +4989,195 @@ msgstr ""
+ "Anda mestinya menerima salinan GNU General Public License bersamaan dengan "
+ "gThumb. Jika tidak, lihat ."
+
+-#: gthumb/gth-browser-actions-callbacks.c:155
++#: gthumb/gth-browser-actions-callbacks.c:127
+ msgid "An image viewer and browser for GNOME."
+ msgstr "Sebuah penampil dan browser gambar untuk GNOME."
+
+-#: gthumb/gth-browser-actions-callbacks.c:158
++#: gthumb/gth-browser-actions-callbacks.c:130
+ msgid "translator-credits"
+ msgstr ""
+ "Abdul Hamid.A.N , 2004.\n"
+ "Andika Triwidada , 2010-2014, 2016, 2017.\n"
+ "Kukuh Syafaat , 2017, 2018, 2019."
+
+-#: gthumb/gth-browser-actions-entries.h:86 gthumb/resources/app-menu.ui:20
++#: gthumb/gth-browser-actions-entries.h:93 gthumb/resources/gears-menu.ui:7
++msgid "New Window"
++msgstr "Jendela Baru"
++
++#: gthumb/gth-browser-actions-entries.h:95 gthumb/resources/gears-menu.ui:49
+ msgid "Keyboard Shortcuts"
+ msgstr "Pintasan Papan Ketik"
+
+-#: gthumb/gth-browser-actions-entries.h:87 gthumb/gtk-utils.h:40
+-#: gthumb/resources/app-menu.ui:24
+-msgid "_Help"
+-msgstr "_Bantuan"
++#: gthumb/gth-browser-actions-entries.h:96
++msgid "Quit"
++msgstr "Keluar"
++
++#: gthumb/gth-browser-actions-entries.h:99
++msgid "Show browser"
++msgstr "Tampilkan peramban"
++
++#: gthumb/gth-browser-actions-entries.h:100
++msgid "Close window"
++msgstr "Menutup jendela"
++
++#: gthumb/gth-browser-actions-entries.h:102
++msgid "Open location"
++msgstr "Buka lokasi"
++
++#: gthumb/gth-browser-actions-entries.h:103 gthumb/gth-browser.c:4568
++#: gthumb/gth-browser.c:4586 gthumb/resources/file-list-menu.ui:7
++#: gthumb/resources/file-menu.ui:7
++msgid "Fullscreen"
++msgstr "Layar Penuh"
+
+-#: gthumb/gth-browser-actions-entries.h:88
+-msgid "_About gThumb"
+-msgstr "Tent_ang gThumb"
++#: gthumb/gth-browser-actions-entries.h:104
++msgid "Revert image to saved"
++msgstr "Pulihkan citra ke yang tersimpan"
++
++#: gthumb/gth-browser-actions-entries.h:105
++msgid "Sidebar"
++msgstr "Bilah sisi"
++
++#: gthumb/gth-browser-actions-entries.h:106
++msgid "Statusbar"
++msgstr "Bilah Status"
++
++#: gthumb/gth-browser-actions-entries.h:107
++msgid "Thumbnails list"
++msgstr "Daftar gambar mini"
++
++#: gthumb/gth-browser-actions-entries.h:109
++msgid "Load previous location"
++msgstr "Muat lokasi sebelumnya"
++
++#: gthumb/gth-browser-actions-entries.h:110
++msgid "Load next location"
++msgstr "Muat lokasi berikutnya"
++
++#: gthumb/gth-browser-actions-entries.h:111
++msgid "Load parent folder"
++msgstr "Muat folder induk"
++
++#: gthumb/gth-browser-actions-entries.h:112
++msgid "Load home"
++msgstr "Muat rumah"
++
++#: gthumb/gth-browser-actions-entries.h:113
++msgid "Reload location"
++msgstr "Muat ulang lokasi"
++
++#: gthumb/gth-browser-actions-entries.h:114
++msgid "Show/Hide hidden files"
++msgstr "Tampilkan/sembunyikan berkas tersembunyi"
++
++#: gthumb/gth-browser-actions-entries.h:115
++msgid "Change sorting order"
++msgstr "Ubah urutan"
++
++#: gthumb/gth-browser-actions-entries.h:119
++msgid "Show first file"
++msgstr "Tampilkan berkas pertama"
++
++#: gthumb/gth-browser-actions-entries.h:120
++msgid "Show last file"
++msgstr "Tampilkan berkas terakhir"
++
++#: gthumb/gth-browser-actions-entries.h:122
++msgid "Image tools"
++msgstr "Alat gambar"
++
++#: gthumb/gth-browser-actions-entries.h:123
++msgid "File properties"
++msgstr "Properti berkas"
++
++#: gthumb/gth-browser-actions-entries.h:125
++msgid "Select all"
++msgstr "Pilih semua"
++
++#: gthumb/gth-browser-actions-entries.h:126
++msgid "Select none"
++msgstr "Pilih tak satupun"
+
+-#: gthumb/gth-browser.c:381
++#: gthumb/gth-browser.c:408
+ msgid "[modified]"
+ msgstr "[diubah]"
+
+-#: gthumb/gth-browser.c:833
++#: gthumb/gth-browser.c:873
+ #, c-format
+ msgid "%d file selected (%s)"
+ msgid_plural "%d files selected (%s)"
+ msgstr[0] "%d berkas dipilih (%s)"
+ msgstr[1] "%d berkas dipilih (%s)"
+
+-#: gthumb/gth-browser.c:868
++#: gthumb/gth-browser.c:908
+ #, c-format
+ msgid "%s of free space"
+ msgstr "%s dari ruang bebas"
+
+-#: gthumb/gth-browser.c:1782 gthumb/gth-browser.c:1809
++#: gthumb/gth-browser.c:1786 gthumb/gth-browser.c:1802
+ #, c-format
+ msgid "No suitable module found for %s"
+ msgstr "Tak ditemukan modul yang cocok bagi %s"
+
+-#: gthumb/gth-browser.c:1931
++#: gthumb/gth-browser.c:1907
+ #, c-format
+ msgid "Save changes to file “%s”?"
+ msgstr "Simpan perubahan ke berkas \"%s\"?"
+
+-#: gthumb/gth-browser.c:1936
++#: gthumb/gth-browser.c:1912
+ msgid "If you don’t save, changes to the file will be permanently lost."
+ msgstr "Bila Anda tidak menyimpan, perubahan ke berkas akan hilang selamanya."
+
+-#: gthumb/gth-browser.c:1937
++#: gthumb/gth-browser.c:1913
+ msgid "Do _Not Save"
+ msgstr "Janga_n Simpan"
+
+-#: gthumb/gth-browser.c:2421 gthumb/gth-browser.c:4624
++#: gthumb/gth-browser.c:2401 gthumb/gth-browser.c:4594
+ msgid "Accept"
+ msgstr "Terima"
+
+-#: gthumb/gth-browser.c:2421 gthumb/gtk-utils.h:37
++#: gthumb/gth-browser.c:2401 gthumb/gtk-utils.h:37
+ msgid "_Close"
+ msgstr "_Tutup"
+
+-#: gthumb/gth-browser.c:3015 gthumb/gth-source-tree.c:185
++#: gthumb/gth-browser.c:2939
+ msgid "Could not change name"
+ msgstr "Tidak dapat mengubah nama"
+
+-#: gthumb/gth-browser.c:3470
++#: gthumb/gth-browser.c:3436
+ msgid "Modified"
+ msgstr "Diubah"
+
+-#: gthumb/gth-browser.c:4546
++#: gthumb/gth-browser.c:4516
+ msgid "Go to the previous visited location"
+ msgstr "Pergi ke lokasi sebelumnya yang telah dikunjungi"
+
+-#: gthumb/gth-browser.c:4552
++#: gthumb/gth-browser.c:4522
+ msgid "Go to the next visited location"
+ msgstr "Pergi ke lokasi selanjutnya yang telah dikunjungi"
+
+-#: gthumb/gth-browser.c:4560
++#: gthumb/gth-browser.c:4530
+ msgid "History"
+ msgstr "Riwayat"
+
+-#: gthumb/gth-browser.c:4574
++#: gthumb/gth-browser.c:4544
+ msgid "View the folders"
+ msgstr "Tampilkan folder"
+
+-#: gthumb/gth-browser.c:4589
++#: gthumb/gth-browser.c:4559
+ msgid "Edit file"
+ msgstr "Sunting berkas"
+
+-#: gthumb/gth-browser.c:4598 gthumb/gth-browser.c:4616
+-#: gthumb/resources/file-list-menu.ui:7 gthumb/resources/file-menu.ui:7
+-msgid "Fullscreen"
+-msgstr "Layar Penuh"
+-
+-#: gthumb/gth-browser.c:6583
++#: gthumb/gth-browser.c:6570
+ #, c-format
+ msgid "File type not supported"
+ msgstr "Jenis berkas tidak didukung"
+
+-#: gthumb/gth-browser.c:6626
++#: gthumb/gth-browser.c:6613
+ #, c-format
+ msgid "No suitable module found"
+ msgstr "Tak ditemukan modul yang cocok"
+
+-#: gthumb/gth-delete-task.c:67
+-msgid "Deleting files"
+-msgstr "Menghapus berkas"
+-
+ #: gthumb/gth-extensions.c:206
+ #, c-format
+ msgid "Could not open the module “%s”: %s"
+@@ -4836,11 +5196,11 @@ msgstr "Semua Berkas Yang Didukung"
+ msgid "_Show Format Options"
+ msgstr "Tampilklan Op_si Format"
+
+-#: gthumb/gth-file-source-vfs.c:227
++#: gthumb/gth-file-source-vfs.c:219
+ msgid "Computer"
+ msgstr "Komputer"
+
+-#: gthumb/gth-file-source-vfs.c:785
++#: gthumb/gth-file-source-vfs.c:773
+ msgid ""
+ "The files cannot be moved to the Trash. Do you want to delete them "
+ "permanently?"
+@@ -4848,16 +5208,16 @@ msgstr ""
+ "Berkas tak bisa dipindah ke Tong Sampah. Apakah Anda ingin menghapusnya "
+ "secara permanen?"
+
+-#: gthumb/gth-file-source-vfs.c:795
++#: gthumb/gth-file-source-vfs.c:784
+ msgid "Could not move the files to the Trash"
+ msgstr "Tak bisa memindah berkas ke Tong Sampah"
+
+-#: gthumb/gth-file-source-vfs.c:840
++#: gthumb/gth-file-source-vfs.c:829
+ #, c-format
+ msgid "Are you sure you want to permanently delete “%s”?"
+ msgstr "Anda yakin ingin menghapus permanen \"%s\"?"
+
+-#: gthumb/gth-file-source-vfs.c:843
++#: gthumb/gth-file-source-vfs.c:832
+ #, c-format
+ msgid "Are you sure you want to permanently delete the %'d selected file?"
+ msgid_plural ""
+@@ -4865,7 +5225,7 @@ msgid_plural ""
+ msgstr[0] "Anda yakin ingin menghapus permanen %'d gambar yang dipilih?"
+ msgstr[1] "Anda yakin ingin menghapus permanen %'d gambar yang dipilih?"
+
+-#: gthumb/gth-file-source-vfs.c:853
++#: gthumb/gth-file-source-vfs.c:842
+ msgid "If you delete a file, it will be permanently lost."
+ msgstr "Apabila Anda menghapus sebuah berkas, itu akan dihapus permanen."
+
+@@ -4902,11 +5262,15 @@ msgstr "turun"
+ msgid "No limit specified"
+ msgstr "Batas tak dinyatakan"
+
+-#: gthumb/gth-folder-tree.c:1391
++#: gthumb/gth-filterbar.c:280
++msgid "All"
++msgstr "Semua"
++
++#: gthumb/gth-folder-tree.c:1465
+ msgid "(Open Parent)"
+ msgstr "(Buka Induk)"
+
+-#: gthumb/gth-folder-tree.c:1911
++#: gthumb/gth-folder-tree.c:1972
+ msgid "Enter the new name:"
+ msgstr "Masukkan nama baru:"
+
+@@ -4937,72 +5301,88 @@ msgstr ""
+ msgid "Reading file information"
+ msgstr "Membaca informasi berkas"
+
+-#: gthumb/gth-main-default-metadata.c:40 gthumb/gth-main-default-tests.c:350
++#: gthumb/gth-location-chooser-dialog.c:194 gthumb/resources/gears-menu.ui:35
++msgid "Hidden Files"
++msgstr "Berkas Tersembunyi"
++
++#: gthumb/gth-location-chooser.c:274 gthumb/gth-main-default-metadata.c:46
++msgid "Location"
++msgstr "Lokasi"
++
++#: gthumb/gth-location-chooser.c:572
++msgid "Locations"
++msgstr "Lokasi"
++
++#: gthumb/gth-location-chooser.c:617
++msgid "Other…"
++msgstr "Lainnya…"
++
++#: gthumb/gth-main-default-metadata.c:40 gthumb/gth-main-default-tests.c:351
+ msgid "Size"
+ msgstr "Ukuran"
+
+ #: gthumb/gth-main-default-metadata.c:41
+-msgctxt "the file mtime"
++msgid "Bytes"
++msgstr "Byte"
++
++#. Translators: the file modified time.
++#: gthumb/gth-main-default-metadata.c:43
+ msgid "Modified Date & Time"
+ msgstr "Tanggal & Waktu Saat Diubah"
+
+-#: gthumb/gth-main-default-metadata.c:42
++#: gthumb/gth-main-default-metadata.c:44
+ msgid "Type"
+ msgstr "Tipe"
+
+-#: gthumb/gth-main-default-metadata.c:44
+-msgid "Location"
+-msgstr "Lokasi"
+-
+-#: gthumb/gth-main-default-metadata.c:47
++#: gthumb/gth-main-default-metadata.c:49
+ msgid "Duration"
+ msgstr "Durasi"
+
+-#: gthumb/gth-main-default-metadata.c:49
++#: gthumb/gth-main-default-metadata.c:51
+ msgid "Exposure Settings"
+ msgstr "Pengaturan Pencahayaan"
+
+-#: gthumb/gth-main-default-metadata.c:50
++#: gthumb/gth-main-default-metadata.c:52
+ msgid "Aperture"
+ msgstr "Bukaan"
+
+-#: gthumb/gth-main-default-metadata.c:51
++#: gthumb/gth-main-default-metadata.c:53
+ msgid "ISO Speed"
+ msgstr "Kecepatan ISO"
+
+-#: gthumb/gth-main-default-metadata.c:52
++#: gthumb/gth-main-default-metadata.c:54
+ msgid "Exposure Time"
+ msgstr "Waktu Paparan"
+
+-#: gthumb/gth-main-default-metadata.c:53
++#: gthumb/gth-main-default-metadata.c:55
+ msgid "Shutter Speed"
+ msgstr "Kecepatan Rana"
+
+-#: gthumb/gth-main-default-metadata.c:54
++#: gthumb/gth-main-default-metadata.c:56
+ msgid "Focal Length"
+ msgstr "Panjang Fokal"
+
+-#: gthumb/gth-main-default-metadata.c:55
++#: gthumb/gth-main-default-metadata.c:57
+ msgid "Flash"
+ msgstr "Lampu Kilat"
+
+-#: gthumb/gth-main-default-metadata.c:56
++#: gthumb/gth-main-default-metadata.c:58
+ msgid "Camera Model"
+ msgstr "Model Kamera"
+
+-#: gthumb/gth-main-default-metadata.c:57
++#: gthumb/gth-main-default-metadata.c:59
+ msgid "Color Profile"
+ msgstr "Profil Warna"
+
+-#: gthumb/gth-main-default-metadata.c:59
++#: gthumb/gth-main-default-metadata.c:61
+ msgid "General Date & Time"
+ msgstr "Tanggal & Waktu Umum"
+
+-#: gthumb/gth-main-default-metadata.c:66
++#: gthumb/gth-main-default-metadata.c:68
+ msgid "Author"
+ msgstr "Penulis"
+
+-#: gthumb/gth-main-default-metadata.c:67
++#: gthumb/gth-main-default-metadata.c:69
+ msgid "Copyright"
+ msgstr "Hak Cipta"
+
+@@ -5034,43 +5414,55 @@ msgstr "dimensi"
+ msgid "aspect ratio"
+ msgstr "rasio aspek"
+
+-#: gthumb/gth-main-default-tests.c:285
++#: gthumb/gth-main-default-tests.c:286
+ msgid "All Files"
+ msgstr "Semua Berkas"
+
+-#: gthumb/gth-main-default-tests.c:292
++#: gthumb/gth-main-default-tests.c:293
+ msgid "All Images"
+ msgstr "Semua Gambar"
+
+-#: gthumb/gth-main-default-tests.c:299
++#: gthumb/gth-main-default-tests.c:300
+ msgid "JPEG Images"
+ msgstr "Gambar JPEG"
+
+-#: gthumb/gth-main-default-tests.c:306
++#: gthumb/gth-main-default-tests.c:307
+ msgid "Raw Photos"
+ msgstr "Foto Mentah"
+
+-#: gthumb/gth-main-default-tests.c:327
++#: gthumb/gth-main-default-tests.c:328
+ msgid "Media"
+ msgstr "Media"
+
+-#: gthumb/gth-main-default-tests.c:334
++#: gthumb/gth-main-default-tests.c:335
+ msgid "Text Files"
+ msgstr "Berkas Teks"
+
+-#: gthumb/gth-main-default-tests.c:342
++#: gthumb/gth-main-default-tests.c:343
+ msgid "Filename"
+ msgstr "Nama berkas"
+
+-#: gthumb/gth-main-default-tests.c:374
++#: gthumb/gth-main-default-tests.c:375
+ msgid "Title (embedded)"
+ msgstr "Judul (tertempel)"
+
+-#: gthumb/gth-main-default-tests.c:382
++#: gthumb/gth-main-default-tests.c:383
+ msgid "Description (embedded)"
+ msgstr "Keterangan (tertempel)"
+
+-#: gthumb/gth-overwrite-dialog.c:246
++#: gthumb/gth-main-default-types.c:39
++msgid "Show/Hide"
++msgstr "Tampilkan/Sembunyikan"
++
++#: gthumb/gth-main-default-types.c:40
++msgid "Navigation"
++msgstr "Navigasi"
++
++#: gthumb/gth-main-default-types.c:41
++msgid "File Manager"
++msgstr "Manajer Berkas"
++
++#: gthumb/gth-overwrite-dialog.c:326
+ msgid "Overwrite"
+ msgstr "Timpa"
+
+@@ -5166,8 +5558,8 @@ msgid "is lower than or equal to"
+ msgstr "kurang dari atau sama dengan"
+
+ #: gthumb/gth-test-aspect-ratio.c:369 gthumb/gth-test-category.c:421
+-#: gthumb/gth-test-simple.c:1030 gthumb/gth-test-simple.c:1051
+-#: gthumb/gth-test-simple.c:1077
++#: gthumb/gth-test-simple.c:1084 gthumb/gth-test-simple.c:1105
++#: gthumb/gth-test-simple.c:1131
+ #, c-format
+ msgid "The test definition is incomplete"
+ msgstr "Definisi tes tak lengkap"
+@@ -5238,31 +5630,54 @@ msgstr "Warna"
+ msgid "Rotation"
+ msgstr "Rotasi"
+
+-#: gthumb/gth-trash-task.c:67
+-msgid "Moving files to trash"
+-msgstr "Memindah berkas ke tong sampah"
++#: gthumb/gth-window.c:1020
++#, c-format
++msgid ""
++"The key combination «%s» is already assigned to the action «%s». Do you "
++"want to reassign it to this action instead?"
++msgstr ""
++"Kombinasi tombol «%s» sudah ditugaskan untuk tindakan «%s». Apakah Anda "
++"ingin menetapkan kembali ke tindakan ini sebagai gantinya?"
++
++#: gthumb/gth-window.c:1028
++msgid "Reassign"
++msgstr "Alih Tugaskan"
++
++#: gthumb/gth-window.c:1046
++#, c-format
++msgid ""
++"The key combination «%s» is already assigned to the action «%s» and cannot "
++"be changed."
++msgstr ""
++"Kombinasi tombol «%s» sudah ditetapkan untuk tindakan «%s» dan tidak dapat "
++"diubah."
++
++#: gthumb/gth-window.c:1050
++#, c-format
++msgid "The key combination «%s» is already assigned and cannot be changed."
++msgstr "Kombinasi tombol «%s» sudah ditetapkan dan tidak dapat diubah."
+
+-#: gthumb/gtk-utils.c:338
++#: gthumb/gtk-utils.c:370
+ msgid "Could not display help"
+ msgstr "Tidak dapat menampilkan bantuan"
+
+-#: gthumb/gtk-utils.c:661 gthumb/gtk-utils.c:668
++#: gthumb/gtk-utils.c:730 gthumb/gtk-utils.c:737
+ msgid "Could not launch the application"
+ msgstr "Tidak dapat menjalankan aplikasi"
+
+-#: gthumb/gtk-utils.c:770
++#: gthumb/gtk-utils.c:840
+ msgid "_Copy Here"
+ msgstr "_Salin ke Sini"
+
+-#: gthumb/gtk-utils.c:775
++#: gthumb/gtk-utils.c:845
+ msgid "_Move Here"
+ msgstr "_Pindahkan ke Sini"
+
+-#: gthumb/gtk-utils.c:780
++#: gthumb/gtk-utils.c:850
+ msgid "_Link Here"
+ msgstr "_Tautkan ke Sini"
+
+-#: gthumb/gtk-utils.c:789
++#: gthumb/gtk-utils.c:859
+ msgid "Cancel"
+ msgstr "Batal"
+
+@@ -5270,6 +5685,10 @@ msgstr "Batal"
+ msgid "_Cancel"
+ msgstr "_Batal"
+
++#: gthumb/gtk-utils.h:40 gthumb/resources/gears-menu.ui:53
++msgid "_Help"
++msgstr "_Bantuan"
++
+ #: gthumb/gtk-utils.h:41
+ msgid "_New"
+ msgstr "_Baru"
+@@ -5294,106 +5713,32 @@ msgstr "_Eksekusi"
+ msgid "_Upload"
+ msgstr "_Unggah"
+
+-#: gthumb/resources/app-menu.ui:7
+-msgid "New _Window"
+-msgstr "_Jendela Baru"
+-
+-#: gthumb/resources/app-menu.ui:29
+-msgid "_About"
+-msgstr "Tent_ang"
+-
+-#: gthumb/resources/app-menu.ui:33
+-msgid "_Quit"
+-msgstr "_Keluar"
+-
+ #: gthumb/resources/folder-menu.ui:7
+ msgid "Open in New Window"
+ msgstr "Buka di Window Baru"
+
+-#: gthumb/resources/gears-menu.ui:7
+-msgid "New Window"
+-msgstr "Jendela Baru"
+-
+-#: gthumb/resources/gears-menu.ui:12
++#: gthumb/resources/gears-menu.ui:11
+ msgid "Open Location…"
+ msgstr "Buka Lokasi…"
+
+-#: gthumb/resources/gears-menu.ui:28
+-msgid "Revert"
+-msgstr "Balikkan"
+-
+-#: gthumb/resources/gears-menu.ui:35
++#: gthumb/resources/gears-menu.ui:31
+ msgid "Sort By…"
+ msgstr "Urut Menurut…"
+
+-#: gthumb/resources/gears-menu.ui:39
+-msgid "Hidden Files"
+-msgstr "Berkas Tersembunyi"
++#: gthumb/resources/gears-menu.ui:57
++msgid "_About gThumb"
++msgstr "Tent_ang gThumb"
+
+ #: gthumb/resources/history-menu.ui:9
+ msgid "_Delete History"
+ msgstr "Hap_us History"
+
+-#~ msgid ""
+-#~ "The geographical position information is not available for this image."
+-#~ msgstr "Informasi posisi geografis tak tersedia bagi gambar ini."
+-
+-#~ msgid "Details"
+-#~ msgstr "Rincian"
+-
+-#~ msgid "gThumb Photo Import Tool"
+-#~ msgstr "Alat Impor Foto gThumb"
+-
+-#~ msgid "Example"
+-#~ msgstr "Contoh"
+-
+-#~ msgid "Extension example."
+-#~ msgstr "Contoh ekstensi."
+-
+-#~ msgid "Import from Facebook"
+-#~ msgstr "Impor dari Facebook"
+-
+-#~ msgid "Tiny ( 100 × 75 )"
+-#~ msgstr "Mungil ( 100 × 75 )"
+-
+-#~ msgid "Small ( 160 × 120 )"
+-#~ msgstr "Kecil ( 160 × 120 )"
+-
+-#~ msgid "Medium ( 320 × 240 )"
+-#~ msgstr "Sedang ( 320 × 240 )"
+-
+-#~ msgid "Large ( 640 × 480 )"
+-#~ msgstr "Besar ( 640 × 480 )"
+-
+-#~ msgid "15ʺ screen ( 800 × 600 )"
+-#~ msgstr "Layar 15ʺ ( 800 × 600 )"
+-
+-#~ msgid "17ʺ screen ( 1024 × 768 )"
+-#~ msgstr "Layar 17ʺ ( 1024 × 768 )"
+-
+-#~ msgid "1 megabyte file size"
+-#~ msgstr "Ukuran berkas 1 mega byte"
+-
+-#~ msgid "_Scramble filenames"
+-#~ msgstr "_Acak nama berkas"
+-
+-#~ msgid "_Container:"
+-#~ msgstr "_Kontainer:"
+-
+-#~ msgid "2 megabyte file size"
+-#~ msgstr "Ukuran berkas 2 mega byte"
+-
+-#~ msgid "Export to Photobucket"
+-#~ msgstr "Ekspor ke PhotoBucket"
+-
+-#~ msgid "PhotoBucket"
+-#~ msgstr "PhotoBucket"
+-
+-#~ msgid "Upload images to PhotoBucket"
+-#~ msgstr "Unggah gambar ke PhotoBucket"
++#~ msgid "_Keep the dialog open"
++#~ msgstr "Pertahan_kan dialog terbuka"
+
+-#~ msgid "none"
+-#~ msgstr "tidak ada"
++#~ msgid "gthumb development team"
++#~ msgstr "tim pengembang gthumb"
+
+-#~ msgid "key %d on the numeric keypad"
+-#~ msgstr "tombol %d pada papan tombol numerik"
++#~ msgctxt "the file mtime"
++#~ msgid "Modified Date & Time"
++#~ msgstr "Tanggal & Waktu Saat Diubah"
+--- gthumb-3.9.1.orig/po/pl.po
++++ gthumb-3.9.1/po/pl.po
+@@ -10,8 +10,8 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: gthumb\n"
+ "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gthumb/issues\n"
+-"POT-Creation-Date: 2020-03-01 20:18+0000\n"
+-"PO-Revision-Date: 2020-03-05 12:33+0100\n"
++"POT-Creation-Date: 2020-03-08 09:25+0000\n"
++"PO-Revision-Date: 2020-03-08 12:24+0100\n"
+ "Last-Translator: Piotr Drąg \n"
+ "Language-Team: Polish \n"
+ "Language: pl\n"
+@@ -228,12 +228,12 @@ msgstr "_Rozszerzenia:"
+ msgid "More extensions…"
+ msgstr "Więcej rozszerzeń…"
+
+-#: data/ui/file-selection-info.ui:33
++#: data/ui/file-selection-info.ui:23
+ #: extensions/webalbums/data/albumthemes/text.h:32
+ msgid "Previous"
+ msgstr "Poprzedni"
+
+-#: data/ui/file-selection-info.ui:71
++#: data/ui/file-selection-info.ui:61
+ #: extensions/webalbums/data/albumthemes/text.h:30
+ msgid "Next"
+ msgstr "Następny"
+@@ -659,8 +659,8 @@ msgid "Saving"
+ msgstr "Zapisywanie"
+
+ #: extensions/catalogs/actions.c:89 extensions/catalogs/actions.c:212
+-#: extensions/catalogs/dlg-add-to-catalog.c:373
+-#: extensions/catalogs/dlg-add-to-catalog.c:538
++#: extensions/catalogs/dlg-add-to-catalog.c:376
++#: extensions/catalogs/dlg-add-to-catalog.c:541
+ #: extensions/file_manager/actions.c:71
+ #: extensions/file_tools/gth-file-tool-curves.c:373
+ #: extensions/list_tools/gth-script-editor-dialog.c:273
+@@ -670,8 +670,8 @@ msgid "No name specified"
+ msgstr "Nie podano nazwy"
+
+ #: extensions/catalogs/actions.c:96 extensions/catalogs/actions.c:219
+-#: extensions/catalogs/dlg-add-to-catalog.c:380
+-#: extensions/catalogs/dlg-add-to-catalog.c:545
++#: extensions/catalogs/dlg-add-to-catalog.c:383
++#: extensions/catalogs/dlg-add-to-catalog.c:548
+ #: extensions/file_manager/actions.c:78
+ #: extensions/file_tools/gth-file-tool-curves.c:380
+ #: gthumb/gth-folder-tree.c:1931
+@@ -680,8 +680,8 @@ msgid "Invalid name. The following chara
+ msgstr "Nieprawidłowa nazwa. Następujące znaki nie są dozwolone: %s"
+
+ #: extensions/catalogs/actions.c:152 extensions/catalogs/actions.c:266
+-#: extensions/catalogs/dlg-add-to-catalog.c:437
+-#: extensions/catalogs/dlg-add-to-catalog.c:594
++#: extensions/catalogs/dlg-add-to-catalog.c:440
++#: extensions/catalogs/dlg-add-to-catalog.c:597
+ #: extensions/catalogs/gth-file-source-catalogs.c:516
+ #: extensions/file_manager/actions.c:109
+ msgid "Name already used"
+@@ -692,13 +692,13 @@ msgid "New catalog"
+ msgstr "Nowy katalog"
+
+ #: extensions/catalogs/actions.c:178
+-#: extensions/catalogs/dlg-add-to-catalog.c:459
++#: extensions/catalogs/dlg-add-to-catalog.c:462
+ msgid "Enter the catalog name:"
+ msgstr "Nazwa katalogu:"
+
+ #: extensions/catalogs/actions.c:180 extensions/catalogs/actions.c:294
+-#: extensions/catalogs/dlg-add-to-catalog.c:461
+-#: extensions/catalogs/dlg-add-to-catalog.c:620
++#: extensions/catalogs/dlg-add-to-catalog.c:464
++#: extensions/catalogs/dlg-add-to-catalog.c:623
+ #: extensions/file_manager/actions.c:140
+ msgid "C_reate"
+ msgstr "Ut_wórz"
+@@ -708,7 +708,7 @@ msgid "New library"
+ msgstr "Nowa kolekcja"
+
+ #: extensions/catalogs/actions.c:292
+-#: extensions/catalogs/dlg-add-to-catalog.c:618
++#: extensions/catalogs/dlg-add-to-catalog.c:621
+ msgid "Enter the library name:"
+ msgstr "Nazwa kolekcji:"
+
+@@ -751,7 +751,7 @@ msgstr "Zmień nazwę"
+
+ #: extensions/catalogs/callbacks.c:78
+ #: extensions/catalogs/dlg-catalog-properties.c:205 gthumb/gth-browser.c:4553
+-#: gthumb/gth-browser.c:4655 gthumb/gth-file-properties.c:245
++#: gthumb/gth-browser.c:4655 gthumb/gth-file-properties.c:258
+ msgid "Properties"
+ msgstr "Właściwości"
+
+@@ -791,12 +791,12 @@ msgid "C_atalogs:"
+ msgstr "K_atalogi:"
+
+ #: extensions/catalogs/data/ui/add-to-catalog.ui:34
+-#: extensions/catalogs/dlg-add-to-catalog.c:617
++#: extensions/catalogs/dlg-add-to-catalog.c:620
+ msgid "New Library"
+ msgstr "Nowa kolekcja"
+
+ #: extensions/catalogs/data/ui/add-to-catalog.ui:57
+-#: extensions/catalogs/dlg-add-to-catalog.c:458
++#: extensions/catalogs/dlg-add-to-catalog.c:461
+ msgid "New Catalog"
+ msgstr "Nowy katalog"
+
+@@ -806,12 +806,6 @@ msgstr "Nowy katalog"
+ msgid "_View the destination"
+ msgstr "_Wyświetl miejsce docelowe"
+
+-#: extensions/catalogs/data/ui/add-to-catalog.ui:119
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:159
+-#: extensions/edit_metadata/gth-edit-tags-dialog.c:202
+-msgid "_Keep the dialog open"
+-msgstr "_Bez zamykania okna"
+-
+ #: extensions/catalogs/data/ui/catalog-properties.ui:68
+ #: extensions/contact_sheet/data/ui/contact-sheet-theme-properties.ui:53
+ #: extensions/facebook/data/ui/facebook-album-properties.ui:45
+@@ -881,23 +875,28 @@ msgstr "Umieszczanie pojedynczych plikó
+ msgid "Singles"
+ msgstr "Pojedyncze"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:155
++#: extensions/catalogs/dlg-add-to-catalog.c:156
+ msgid "Could not add the files to the catalog"
+ msgstr "Nie można dodać plików do katalogu"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:316
++#: extensions/catalogs/dlg-add-to-catalog.c:319
+ #: extensions/search/gth-search-task.c:402
+ msgid "Could not create the catalog"
+ msgstr "Nie można utworzyć katalogu"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:682
++#: extensions/catalogs/dlg-add-to-catalog.c:687
+ msgid "Add to Catalog"
+ msgstr "Dodanie do katalogu"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:697
++#: extensions/catalogs/dlg-add-to-catalog.c:710
+ msgid "_Add"
+ msgstr "_Dodaj"
+
++#: extensions/catalogs/dlg-add-to-catalog.c:714
++#: extensions/edit_metadata/dlg-edit-metadata.c:347
++msgid "Keep the dialog open"
++msgstr "Nie zamyka okna"
++
+ #: extensions/catalogs/dlg-catalog-properties.c:80
+ msgid "Could not save the catalog"
+ msgstr "Nie można zapisać katalogu"
+@@ -950,7 +949,7 @@ msgstr "Nieprawidłowy format pliku"
+ #: extensions/edit_metadata/callbacks.c:57
+ #: extensions/edit_metadata/callbacks.c:94
+ #: extensions/edit_metadata/callbacks.c:107
+-#: extensions/edit_metadata/gth-edit-tags-dialog.c:185
++#: extensions/edit_metadata/gth-edit-tags-dialog.c:170
+ #: gthumb/gth-main-default-metadata.c:65
+ msgid "Tags"
+ msgstr "Etykiety"
+@@ -1090,14 +1089,15 @@ msgstr "_Synchronizowanie z osadzonymi
+ #: extensions/importer/gth-import-preferences-dialog.c:417
+ #: extensions/photo_importer/dlg-photo-importer-preferences.c:78
+ #: extensions/terminal/dlg-terminal-preferences.c:83
+-#: gthumb/dlg-preferences-extensions.c:483
++#: gthumb/dlg-favorite-properties.c:99 gthumb/dlg-preferences-extensions.c:483
++#: gthumb/gth-file-properties.c:548
+ msgid "Preferences"
+ msgstr "Preferencje"
+
+ #: extensions/comments/main.c:37 extensions/edit_metadata/callbacks.c:56
+ #: extensions/edit_metadata/callbacks.c:88
+ #: extensions/edit_metadata/callbacks.c:101
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:137
++#: extensions/edit_metadata/gth-edit-comment-dialog.c:124
+ #: gthumb/gth-file-comment.c:136
+ msgid "Comment"
+ msgstr "Komentarz"
+@@ -1565,11 +1565,11 @@ msgstr "_Ocena:"
+ msgid "_Title:"
+ msgstr "_Tytuł:"
+
+-#: extensions/edit_metadata/dlg-edit-metadata.c:121
++#: extensions/edit_metadata/dlg-edit-metadata.c:123
+ msgid "Could not save the file metadata"
+ msgstr "Nie można zapisać metadanych pliku"
+
+-#: extensions/edit_metadata/dlg-edit-metadata.c:230
++#: extensions/edit_metadata/dlg-edit-metadata.c:234
+ #: gthumb/gth-overwrite-dialog.c:184
+ msgid "Cannot read file information"
+ msgstr "Nie można odczytać informacji o pliku"
+@@ -1582,7 +1582,7 @@ msgstr "Modyfikowanie metadanych"
+ msgid "Allow to edit files metadata."
+ msgstr "Umożliwienie modyfikowania metadanych plików."
+
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:155
++#: extensions/edit_metadata/gth-edit-comment-dialog.c:138
+ msgid "Save only cha_nged fields"
+ msgstr "Zapisywanie tylko zmie_nionych pól"
+
+@@ -1674,7 +1674,7 @@ msgid "State/Province:"
+ msgstr "Stan/województwo:"
+
+ #: extensions/exiv2_tools/exiv2-utils.cpp:47 gthumb/glib-utils.c:1088
+-#: gthumb/glib-utils.c:2053 gthumb/str-utils.c:677
++#: gthumb/glib-utils.c:2053 gthumb/str-utils.c:700
+ msgid "(invalid value)"
+ msgstr "(nieprawidłowa wartość)"
+
+@@ -3185,7 +3185,7 @@ msgstr "Mono"
+ #: extensions/image_viewer/gth-image-viewer-page.c:1864
+ #: extensions/image_viewer/gth-metadata-provider-image.c:258
+ #: extensions/raw_files/gth-metadata-provider-raw.c:96
+-#: extensions/webalbums/gth-web-exporter.c:2434 gthumb/gtk-utils.c:945
++#: extensions/webalbums/gth-web-exporter.c:2434 gthumb/gtk-utils.c:963
+ #, c-format
+ msgid "%d × %d"
+ msgstr "%d×%d"
+@@ -5665,27 +5665,27 @@ msgid "The key combination «%s» is alr
+ msgstr ""
+ "Kombinacja klawiszy „%s” jest już przydzielona i nie można jej zmienić."
+
+-#: gthumb/gtk-utils.c:352
++#: gthumb/gtk-utils.c:370
+ msgid "Could not display help"
+ msgstr "Nie można wyświetlić pomocy"
+
+-#: gthumb/gtk-utils.c:712 gthumb/gtk-utils.c:719
++#: gthumb/gtk-utils.c:730 gthumb/gtk-utils.c:737
+ msgid "Could not launch the application"
+ msgstr "Nie można uruchomić programu"
+
+-#: gthumb/gtk-utils.c:822
++#: gthumb/gtk-utils.c:840
+ msgid "_Copy Here"
+ msgstr "S_kopiuj tutaj"
+
+-#: gthumb/gtk-utils.c:827
++#: gthumb/gtk-utils.c:845
+ msgid "_Move Here"
+ msgstr "_Przenieś tutaj"
+
+-#: gthumb/gtk-utils.c:832
++#: gthumb/gtk-utils.c:850
+ msgid "_Link Here"
+ msgstr "_Dowiąż tutaj"
+
+-#: gthumb/gtk-utils.c:841
++#: gthumb/gtk-utils.c:859
+ msgid "Cancel"
+ msgstr "Anuluj"
+
+--- gthumb-3.9.1.orig/po/pt_BR.po
++++ gthumb-3.9.1/po/pt_BR.po
+@@ -15,8 +15,8 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: gthumb\n"
+ "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gthumb/issues\n"
+-"POT-Creation-Date: 2020-03-01 20:18+0000\n"
+-"PO-Revision-Date: 2020-03-04 22:13-0300\n"
++"POT-Creation-Date: 2020-03-08 11:24+0000\n"
++"PO-Revision-Date: 2020-03-10 02:59-0300\n"
+ "Last-Translator: Rafael Fontenelle \n"
+ "Language-Team: Brazilian Portuguese \n"
+ "Language: pt_BR\n"
+@@ -232,12 +232,12 @@ msgstr "_Extensões:"
+ msgid "More extensions…"
+ msgstr "Mais extensões…"
+
+-#: data/ui/file-selection-info.ui:33
++#: data/ui/file-selection-info.ui:23
+ #: extensions/webalbums/data/albumthemes/text.h:32
+ msgid "Previous"
+ msgstr "Anterior"
+
+-#: data/ui/file-selection-info.ui:71
++#: data/ui/file-selection-info.ui:61
+ #: extensions/webalbums/data/albumthemes/text.h:30
+ msgid "Next"
+ msgstr "Próxima"
+@@ -665,8 +665,8 @@ msgid "Saving"
+ msgstr "Salvar"
+
+ #: extensions/catalogs/actions.c:89 extensions/catalogs/actions.c:212
+-#: extensions/catalogs/dlg-add-to-catalog.c:373
+-#: extensions/catalogs/dlg-add-to-catalog.c:538
++#: extensions/catalogs/dlg-add-to-catalog.c:376
++#: extensions/catalogs/dlg-add-to-catalog.c:541
+ #: extensions/file_manager/actions.c:71
+ #: extensions/file_tools/gth-file-tool-curves.c:373
+ #: extensions/list_tools/gth-script-editor-dialog.c:273
+@@ -676,8 +676,8 @@ msgid "No name specified"
+ msgstr "Nenhum nome especificado"
+
+ #: extensions/catalogs/actions.c:96 extensions/catalogs/actions.c:219
+-#: extensions/catalogs/dlg-add-to-catalog.c:380
+-#: extensions/catalogs/dlg-add-to-catalog.c:545
++#: extensions/catalogs/dlg-add-to-catalog.c:383
++#: extensions/catalogs/dlg-add-to-catalog.c:548
+ #: extensions/file_manager/actions.c:78
+ #: extensions/file_tools/gth-file-tool-curves.c:380
+ #: gthumb/gth-folder-tree.c:1931
+@@ -686,8 +686,8 @@ msgid "Invalid name. The following chara
+ msgstr "Nome inválido. Os caracteres a seguir não são permitidos: %s"
+
+ #: extensions/catalogs/actions.c:152 extensions/catalogs/actions.c:266
+-#: extensions/catalogs/dlg-add-to-catalog.c:437
+-#: extensions/catalogs/dlg-add-to-catalog.c:594
++#: extensions/catalogs/dlg-add-to-catalog.c:440
++#: extensions/catalogs/dlg-add-to-catalog.c:597
+ #: extensions/catalogs/gth-file-source-catalogs.c:516
+ #: extensions/file_manager/actions.c:109
+ msgid "Name already used"
+@@ -698,13 +698,13 @@ msgid "New catalog"
+ msgstr "Novo catálogo"
+
+ #: extensions/catalogs/actions.c:178
+-#: extensions/catalogs/dlg-add-to-catalog.c:459
++#: extensions/catalogs/dlg-add-to-catalog.c:462
+ msgid "Enter the catalog name:"
+ msgstr "Digite o nome do catálogo:"
+
+ #: extensions/catalogs/actions.c:180 extensions/catalogs/actions.c:294
+-#: extensions/catalogs/dlg-add-to-catalog.c:461
+-#: extensions/catalogs/dlg-add-to-catalog.c:620
++#: extensions/catalogs/dlg-add-to-catalog.c:464
++#: extensions/catalogs/dlg-add-to-catalog.c:623
+ #: extensions/file_manager/actions.c:140
+ msgid "C_reate"
+ msgstr "C_riar"
+@@ -714,7 +714,7 @@ msgid "New library"
+ msgstr "Nova biblioteca"
+
+ #: extensions/catalogs/actions.c:292
+-#: extensions/catalogs/dlg-add-to-catalog.c:618
++#: extensions/catalogs/dlg-add-to-catalog.c:621
+ msgid "Enter the library name:"
+ msgstr "Digite o nome da biblioteca:"
+
+@@ -757,7 +757,7 @@ msgstr "Renomeia"
+
+ #: extensions/catalogs/callbacks.c:78
+ #: extensions/catalogs/dlg-catalog-properties.c:205 gthumb/gth-browser.c:4553
+-#: gthumb/gth-browser.c:4655 gthumb/gth-file-properties.c:245
++#: gthumb/gth-browser.c:4655 gthumb/gth-file-properties.c:258
+ msgid "Properties"
+ msgstr "Propriedades"
+
+@@ -798,12 +798,12 @@ msgid "C_atalogs:"
+ msgstr "C_atálogos:"
+
+ #: extensions/catalogs/data/ui/add-to-catalog.ui:34
+-#: extensions/catalogs/dlg-add-to-catalog.c:617
++#: extensions/catalogs/dlg-add-to-catalog.c:620
+ msgid "New Library"
+ msgstr "Nova biblioteca"
+
+ #: extensions/catalogs/data/ui/add-to-catalog.ui:57
+-#: extensions/catalogs/dlg-add-to-catalog.c:458
++#: extensions/catalogs/dlg-add-to-catalog.c:461
+ msgid "New Catalog"
+ msgstr "Novo catálogo"
+
+@@ -813,12 +813,6 @@ msgstr "Novo catálogo"
+ msgid "_View the destination"
+ msgstr "_Ver o destino"
+
+-#: extensions/catalogs/data/ui/add-to-catalog.ui:119
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:159
+-#: extensions/edit_metadata/gth-edit-tags-dialog.c:202
+-msgid "_Keep the dialog open"
+-msgstr "_Manter o diálogo aberto"
+-
+ #: extensions/catalogs/data/ui/catalog-properties.ui:68
+ #: extensions/contact_sheet/data/ui/contact-sheet-theme-properties.ui:53
+ #: extensions/facebook/data/ui/facebook-album-properties.ui:45
+@@ -888,23 +882,29 @@ msgstr "Colocar arquivos singulares no c
+ msgid "Singles"
+ msgstr "Singulares"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:155
++#: extensions/catalogs/dlg-add-to-catalog.c:156
+ msgid "Could not add the files to the catalog"
+ msgstr "Não foi possível adicionar os arquivos ao catálogo"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:316
++#: extensions/catalogs/dlg-add-to-catalog.c:319
+ #: extensions/search/gth-search-task.c:402
+ msgid "Could not create the catalog"
+ msgstr "Não foi possível criar o catálogo"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:682
++#: extensions/catalogs/dlg-add-to-catalog.c:687
+ msgid "Add to Catalog"
+ msgstr "Adicionar ao catálogo"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:697
++#: extensions/catalogs/dlg-add-to-catalog.c:710
+ msgid "_Add"
+ msgstr "_Adicionar"
+
++#: extensions/catalogs/dlg-add-to-catalog.c:714
++#: extensions/edit_metadata/dlg-edit-metadata.c:347
++#| msgid "_Keep the dialog open"
++msgid "Keep the dialog open"
++msgstr "Manter o diálogo aberto"
++
+ #: extensions/catalogs/dlg-catalog-properties.c:80
+ msgid "Could not save the catalog"
+ msgstr "Não foi possível salvar o catálogo"
+@@ -956,7 +956,7 @@ msgstr "Formato de arquivo inválido"
+ #: extensions/edit_metadata/callbacks.c:57
+ #: extensions/edit_metadata/callbacks.c:94
+ #: extensions/edit_metadata/callbacks.c:107
+-#: extensions/edit_metadata/gth-edit-tags-dialog.c:185
++#: extensions/edit_metadata/gth-edit-tags-dialog.c:170
+ #: gthumb/gth-main-default-metadata.c:65
+ msgid "Tags"
+ msgstr "Etiquetas"
+@@ -1098,14 +1098,15 @@ msgstr "_Sincronizar com os metadados em
+ #: extensions/importer/gth-import-preferences-dialog.c:417
+ #: extensions/photo_importer/dlg-photo-importer-preferences.c:78
+ #: extensions/terminal/dlg-terminal-preferences.c:83
+-#: gthumb/dlg-preferences-extensions.c:483
++#: gthumb/dlg-favorite-properties.c:99 gthumb/dlg-preferences-extensions.c:483
++#: gthumb/gth-file-properties.c:548
+ msgid "Preferences"
+ msgstr "Preferências"
+
+ #: extensions/comments/main.c:37 extensions/edit_metadata/callbacks.c:56
+ #: extensions/edit_metadata/callbacks.c:88
+ #: extensions/edit_metadata/callbacks.c:101
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:137
++#: extensions/edit_metadata/gth-edit-comment-dialog.c:124
+ #: gthumb/gth-file-comment.c:136
+ msgid "Comment"
+ msgstr "Comentário"
+@@ -1581,11 +1582,11 @@ msgstr "Classi_ficação:"
+ msgid "_Title:"
+ msgstr "_Título:"
+
+-#: extensions/edit_metadata/dlg-edit-metadata.c:121
++#: extensions/edit_metadata/dlg-edit-metadata.c:123
+ msgid "Could not save the file metadata"
+ msgstr "Não foi possível salvar os metadados do arquivo"
+
+-#: extensions/edit_metadata/dlg-edit-metadata.c:230
++#: extensions/edit_metadata/dlg-edit-metadata.c:234
+ #: gthumb/gth-overwrite-dialog.c:184
+ msgid "Cannot read file information"
+ msgstr "Não foi possível ler informações"
+@@ -1599,7 +1600,7 @@ msgstr "Editar metadados"
+ msgid "Allow to edit files metadata."
+ msgstr "Permite editar metadados de arquivos."
+
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:155
++#: extensions/edit_metadata/gth-edit-comment-dialog.c:138
+ msgid "Save only cha_nged fields"
+ msgstr "Salvar some_nte campos alterados"
+
+@@ -1691,7 +1692,7 @@ msgid "State/Province:"
+ msgstr "Estado/Província:"
+
+ #: extensions/exiv2_tools/exiv2-utils.cpp:47 gthumb/glib-utils.c:1088
+-#: gthumb/glib-utils.c:2053 gthumb/str-utils.c:677
++#: gthumb/glib-utils.c:2053 gthumb/str-utils.c:700
+ msgid "(invalid value)"
+ msgstr "(valor inválido)"
+
+@@ -3202,7 +3203,7 @@ msgstr "Mono"
+ #: extensions/image_viewer/gth-image-viewer-page.c:1864
+ #: extensions/image_viewer/gth-metadata-provider-image.c:258
+ #: extensions/raw_files/gth-metadata-provider-raw.c:96
+-#: extensions/webalbums/gth-web-exporter.c:2434 gthumb/gtk-utils.c:945
++#: extensions/webalbums/gth-web-exporter.c:2434 gthumb/gtk-utils.c:963
+ #, c-format
+ msgid "%d × %d"
+ msgstr "%d × %d"
+@@ -3832,7 +3833,6 @@ msgid "Quote the text "
+ msgstr "Cita o texto "
+
+ #: extensions/list_tools/data/ui/script-editor.ui:522
+-#| msgid "The current date"
+ msgid "The current date and time"
+ msgstr "A data e o horário atual"
+
+@@ -4602,12 +4602,10 @@ msgid "Terminal"
+ msgstr "Terminal"
+
+ #: extensions/terminal/callbacks.c:40 extensions/terminal/callbacks.c:45
+-#| msgid "Open in New Window"
+ msgid "Open in Terminal"
+ msgstr "Abre no terminal"
+
+ #: extensions/terminal/terminal.extension.desktop.in.in:4
+-#| msgid "Open the selected folder in a new window"
+ msgid "Open a folder in a terminal"
+ msgstr "Abre uma pasta em um terminal"
+
+@@ -4855,7 +4853,6 @@ msgid "Could not deactivate the extensio
+ msgstr "Não foi possível desativar a extensão"
+
+ #: gthumb/dlg-preferences-extensions.c:491
+-#| msgid "gthumb development team"
+ msgid "gThumb Development Team"
+ msgstr "Equipe de Desenvolvimento do gThumb"
+
+@@ -5375,8 +5372,6 @@ msgstr "Bytes"
+
+ #. Translators: the file modified time.
+ #: gthumb/gth-main-default-metadata.c:43
+-#| msgctxt "the file mtime"
+-#| msgid "Modified Date & Time"
+ msgid "Modified Date & Time"
+ msgstr "Data & hora de modificação"
+
+@@ -5707,27 +5702,27 @@ msgstr ""
+ msgid "The key combination «%s» is already assigned and cannot be changed."
+ msgstr "A combinação de teclas “%s” já está atribuída e não pode ser alterada."
+
+-#: gthumb/gtk-utils.c:352
++#: gthumb/gtk-utils.c:370
+ msgid "Could not display help"
+ msgstr "Não foi possível exibir a ajuda"
+
+-#: gthumb/gtk-utils.c:712 gthumb/gtk-utils.c:719
++#: gthumb/gtk-utils.c:730 gthumb/gtk-utils.c:737
+ msgid "Could not launch the application"
+ msgstr "Não foi possível iniciar o aplicativo"
+
+-#: gthumb/gtk-utils.c:822
++#: gthumb/gtk-utils.c:840
+ msgid "_Copy Here"
+ msgstr "C_opiar aqui"
+
+-#: gthumb/gtk-utils.c:827
++#: gthumb/gtk-utils.c:845
+ msgid "_Move Here"
+ msgstr "_Mover aqui"
+
+-#: gthumb/gtk-utils.c:832
++#: gthumb/gtk-utils.c:850
+ msgid "_Link Here"
+ msgstr "Criar _link aqui"
+
+-#: gthumb/gtk-utils.c:841
++#: gthumb/gtk-utils.c:859
+ msgid "Cancel"
+ msgstr "Cancelar"
+
+--- gthumb-3.9.1.orig/po/tr.po
++++ gthumb-3.9.1/po/tr.po
+@@ -14,8 +14,8 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: gthumb\n"
+ "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gthumb/issues\n"
+-"POT-Creation-Date: 2020-02-17 13:44+0000\n"
+-"PO-Revision-Date: 2020-02-19 16:27+0300\n"
++"POT-Creation-Date: 2020-03-08 11:24+0000\n"
++"PO-Revision-Date: 2020-03-10 09:25+0300\n"
+ "Last-Translator: Emin Tufan Çetin \n"
+ "Language-Team: Turkish \n"
+ "Language: tr\n"
+@@ -50,8 +50,8 @@ msgid ""
+ "is also possible to view various metadata types embedded inside an image "
+ "such as EXIF, IPTC and XMP."
+ msgstr ""
+-"Resim görüntüleyici olarak gThumb, BMP, JPEG, GIF (animasyon içerir), "
+-"PNG, TIFF, TGA ve RAW resimleri gibi ortak resim dosyası formatlarının "
++"Resim görüntüleyici olarak gThumb, BMP, JPEG, GIF (animasyon içerir), PNG, "
++"TIFF, TGA ve RAW resimleri gibi ortak resim dosyası formatlarının "
+ "görüntülenmesine izin verir. Ayrıca resim içerisine gömülü, EXIF, IPTC ve "
+ "XMP gibi çeşitli meta türlerini görüntülemesi de mümkündür."
+
+@@ -233,12 +233,12 @@ msgstr "_Uzantılar:"
+ msgid "More extensions…"
+ msgstr "Daha fazla uzantı…"
+
+-#: data/ui/file-selection-info.ui:33
++#: data/ui/file-selection-info.ui:23
+ #: extensions/webalbums/data/albumthemes/text.h:32
+ msgid "Previous"
+ msgstr "Önceki"
+
+-#: data/ui/file-selection-info.ui:71
++#: data/ui/file-selection-info.ui:61
+ #: extensions/webalbums/data/albumthemes/text.h:30
+ msgid "Next"
+ msgstr "Sonraki"
+@@ -514,11 +514,11 @@ msgstr "Disk Adı"
+
+ #: extensions/burn_disc/data/ui/burn-source-selector.ui:31
+ msgid "Current _folder"
+-msgstr "Mevcut _klasör"
++msgstr "Geçerli _klasör"
+
+ #: extensions/burn_disc/data/ui/burn-source-selector.ui:47
+ msgid "Current folder and its s_ub-folders"
+-msgstr "Mevcut klasör ve onun a_lt-klasörleri"
++msgstr "Geçerli klasör ve onun a_lt-klasörleri"
+
+ #: extensions/burn_disc/data/ui/burn-source-selector.ui:64
+ msgid "_Selected files"
+@@ -628,12 +628,12 @@ msgid "_Lossless"
+ msgstr "_Kayıpsız"
+
+ #: extensions/cairo_io/gth-image-saver-jpeg.c:517
+-#: extensions/image_viewer/gth-metadata-provider-image.c:145
++#: extensions/image_viewer/gth-metadata-provider-image.c:150
+ msgid "JPEG"
+ msgstr "JPEG"
+
+ #: extensions/cairo_io/gth-image-saver-png.c:354
+-#: extensions/image_viewer/gth-metadata-provider-image.c:111
++#: extensions/image_viewer/gth-metadata-provider-image.c:116
+ msgid "PNG"
+ msgstr "PNG"
+
+@@ -651,7 +651,7 @@ msgid "TIFF"
+ msgstr "TIFF"
+
+ #: extensions/cairo_io/gth-image-saver-webp.c:383
+-#: extensions/image_viewer/gth-metadata-provider-image.c:174
++#: extensions/image_viewer/gth-metadata-provider-image.c:179
+ msgid "WebP"
+ msgstr "WebP"
+
+@@ -664,8 +664,8 @@ msgid "Saving"
+ msgstr "Kaydediliyor"
+
+ #: extensions/catalogs/actions.c:89 extensions/catalogs/actions.c:212
+-#: extensions/catalogs/dlg-add-to-catalog.c:373
+-#: extensions/catalogs/dlg-add-to-catalog.c:538
++#: extensions/catalogs/dlg-add-to-catalog.c:376
++#: extensions/catalogs/dlg-add-to-catalog.c:541
+ #: extensions/file_manager/actions.c:71
+ #: extensions/file_tools/gth-file-tool-curves.c:373
+ #: extensions/list_tools/gth-script-editor-dialog.c:273
+@@ -675,8 +675,8 @@ msgid "No name specified"
+ msgstr "Ad belirtilmemiş"
+
+ #: extensions/catalogs/actions.c:96 extensions/catalogs/actions.c:219
+-#: extensions/catalogs/dlg-add-to-catalog.c:380
+-#: extensions/catalogs/dlg-add-to-catalog.c:545
++#: extensions/catalogs/dlg-add-to-catalog.c:383
++#: extensions/catalogs/dlg-add-to-catalog.c:548
+ #: extensions/file_manager/actions.c:78
+ #: extensions/file_tools/gth-file-tool-curves.c:380
+ #: gthumb/gth-folder-tree.c:1931
+@@ -685,8 +685,8 @@ msgid "Invalid name. The following chara
+ msgstr "Geçersiz ad. Aşağıdaki karakterlere izin verilmez: %s"
+
+ #: extensions/catalogs/actions.c:152 extensions/catalogs/actions.c:266
+-#: extensions/catalogs/dlg-add-to-catalog.c:437
+-#: extensions/catalogs/dlg-add-to-catalog.c:594
++#: extensions/catalogs/dlg-add-to-catalog.c:440
++#: extensions/catalogs/dlg-add-to-catalog.c:597
+ #: extensions/catalogs/gth-file-source-catalogs.c:516
+ #: extensions/file_manager/actions.c:109
+ msgid "Name already used"
+@@ -697,13 +697,13 @@ msgid "New catalog"
+ msgstr "Yeni katalog"
+
+ #: extensions/catalogs/actions.c:178
+-#: extensions/catalogs/dlg-add-to-catalog.c:459
++#: extensions/catalogs/dlg-add-to-catalog.c:462
+ msgid "Enter the catalog name:"
+ msgstr "Katalog adı girin:"
+
+ #: extensions/catalogs/actions.c:180 extensions/catalogs/actions.c:294
+-#: extensions/catalogs/dlg-add-to-catalog.c:461
+-#: extensions/catalogs/dlg-add-to-catalog.c:620
++#: extensions/catalogs/dlg-add-to-catalog.c:464
++#: extensions/catalogs/dlg-add-to-catalog.c:623
+ #: extensions/file_manager/actions.c:140
+ msgid "C_reate"
+ msgstr "Oluştu_r"
+@@ -713,7 +713,7 @@ msgid "New library"
+ msgstr "Yeni kütüphane"
+
+ #: extensions/catalogs/actions.c:292
+-#: extensions/catalogs/dlg-add-to-catalog.c:618
++#: extensions/catalogs/dlg-add-to-catalog.c:621
+ msgid "Enter the library name:"
+ msgstr "Kütüphane adı girin:"
+
+@@ -756,14 +756,14 @@ msgstr "Yeniden adlandır"
+
+ #: extensions/catalogs/callbacks.c:78
+ #: extensions/catalogs/dlg-catalog-properties.c:205 gthumb/gth-browser.c:4553
+-#: gthumb/gth-browser.c:4655 gthumb/gth-file-properties.c:245
++#: gthumb/gth-browser.c:4655 gthumb/gth-file-properties.c:258
+ msgid "Properties"
+ msgstr "Özellikler"
+
+ #: extensions/catalogs/callbacks.c:185
+ #: extensions/catalogs/catalogs.extension.desktop.in.in:3
+ #: extensions/catalogs/gth-catalog.c:504 extensions/catalogs/gth-catalog.c:555
+-#: extensions/catalogs/gth-catalog.c:911 extensions/catalogs/gth-catalog.c:912
++#: extensions/catalogs/gth-catalog.c:916 extensions/catalogs/gth-catalog.c:917
+ msgid "Catalogs"
+ msgstr "Kataloglar"
+
+@@ -796,12 +796,12 @@ msgid "C_atalogs:"
+ msgstr "K_ataloglar:"
+
+ #: extensions/catalogs/data/ui/add-to-catalog.ui:34
+-#: extensions/catalogs/dlg-add-to-catalog.c:617
++#: extensions/catalogs/dlg-add-to-catalog.c:620
+ msgid "New Library"
+ msgstr "Yeni Kütüphane"
+
+ #: extensions/catalogs/data/ui/add-to-catalog.ui:57
+-#: extensions/catalogs/dlg-add-to-catalog.c:458
++#: extensions/catalogs/dlg-add-to-catalog.c:461
+ msgid "New Catalog"
+ msgstr "Yeni Katalog"
+
+@@ -811,12 +811,6 @@ msgstr "Yeni Katalog"
+ msgid "_View the destination"
+ msgstr "Hedefi _görüntüle"
+
+-#: extensions/catalogs/data/ui/add-to-catalog.ui:119
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:159
+-#: extensions/edit_metadata/gth-edit-tags-dialog.c:202
+-msgid "_Keep the dialog open"
+-msgstr "İletişim penceresini açı_k tut"
+-
+ #: extensions/catalogs/data/ui/catalog-properties.ui:68
+ #: extensions/contact_sheet/data/ui/contact-sheet-theme-properties.ui:53
+ #: extensions/facebook/data/ui/facebook-album-properties.ui:45
+@@ -886,23 +880,28 @@ msgstr "Tek dosyaları kataloga yerleşt
+ msgid "Singles"
+ msgstr "Tek"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:155
++#: extensions/catalogs/dlg-add-to-catalog.c:156
+ msgid "Could not add the files to the catalog"
+ msgstr "Dosyalar kataloga eklenemedi"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:316
++#: extensions/catalogs/dlg-add-to-catalog.c:319
+ #: extensions/search/gth-search-task.c:402
+ msgid "Could not create the catalog"
+ msgstr "Katalog oluşturulamadı"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:682
++#: extensions/catalogs/dlg-add-to-catalog.c:687
+ msgid "Add to Catalog"
+ msgstr "Kataloga Ekle"
+
+-#: extensions/catalogs/dlg-add-to-catalog.c:697
++#: extensions/catalogs/dlg-add-to-catalog.c:710
+ msgid "_Add"
+ msgstr "_Ekle"
+
++#: extensions/catalogs/dlg-add-to-catalog.c:714
++#: extensions/edit_metadata/dlg-edit-metadata.c:347
++msgid "Keep the dialog open"
++msgstr "İletişim penceresini açık tut"
++
+ #: extensions/catalogs/dlg-catalog-properties.c:80
+ msgid "Could not save the catalog"
+ msgstr "Katalog kaydedilemedi"
+@@ -951,12 +950,12 @@ msgstr "Etiket (gömülü)"
+ msgid "Invalid file format"
+ msgstr "Geçersiz dosya biçimi"
+
+-#: extensions/catalogs/gth-catalog.c:1013 extensions/comments/main.c:47
++#: extensions/catalogs/gth-catalog.c:1018 extensions/comments/main.c:47
+ #: extensions/edit_metadata/callbacks.c:57
+ #: extensions/edit_metadata/callbacks.c:94
+ #: extensions/edit_metadata/callbacks.c:107
+-#: extensions/edit_metadata/gth-edit-tags-dialog.c:185
+-#: gthumb/gth-main-default-metadata.c:64
++#: extensions/edit_metadata/gth-edit-tags-dialog.c:170
++#: gthumb/gth-main-default-metadata.c:65
+ msgid "Tags"
+ msgstr "Etiketler"
+
+@@ -1094,19 +1093,21 @@ msgstr "Gömülü üstveriler ile _eşit
+ #: extensions/gstreamer_tools/dlg-media-viewer-preferences.c:75
+ #: extensions/importer/gth-import-preferences-dialog.c:417
+ #: extensions/photo_importer/dlg-photo-importer-preferences.c:78
+-#: gthumb/dlg-preferences-extensions.c:483
++#: extensions/terminal/dlg-terminal-preferences.c:83
++#: gthumb/dlg-favorite-properties.c:99 gthumb/dlg-preferences-extensions.c:483
++#: gthumb/gth-file-properties.c:548
+ msgid "Preferences"
+ msgstr "Tercihler"
+
+ #: extensions/comments/main.c:37 extensions/edit_metadata/callbacks.c:56
+ #: extensions/edit_metadata/callbacks.c:88
+ #: extensions/edit_metadata/callbacks.c:101
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:137
++#: extensions/edit_metadata/gth-edit-comment-dialog.c:124
+ #: gthumb/gth-file-comment.c:136
+ msgid "Comment"
+ msgstr "Yorum"
+
+-#: extensions/comments/main.c:43 gthumb/gth-main-default-metadata.c:61
++#: extensions/comments/main.c:43 gthumb/gth-main-default-metadata.c:62
+ msgid "Title"
+ msgstr "Başlık"
+
+@@ -1120,12 +1121,12 @@ msgstr "Başlık"
+ #: extensions/rename_series/data/ui/rename-series.ui:249
+ #: extensions/webalbums/data/ui/web-album-exporter.ui:194
+ #: extensions/webalbums/data/ui/web-album-exporter.ui:1039
+-#: gthumb/gth-main-default-metadata.c:63
++#: gthumb/gth-main-default-metadata.c:64
+ msgid "Description"
+ msgstr "Açıklama"
+
+ #: extensions/comments/main.c:45 extensions/comments/main.c:178
+-#: gthumb/gth-main-default-metadata.c:62
++#: gthumb/gth-main-default-metadata.c:63
+ msgid "Place"
+ msgstr "Yer"
+
+@@ -1133,7 +1134,7 @@ msgstr "Yer"
+ msgid "Comment Date & Time"
+ msgstr "Yorum Tarihi ve Zamanı"
+
+-#: extensions/comments/main.c:48 gthumb/gth-main-default-metadata.c:65
++#: extensions/comments/main.c:48 gthumb/gth-main-default-metadata.c:66
+ #: gthumb/gth-main-default-tests.c:391
+ msgid "Rating"
+ msgstr "Değerlendirme"
+@@ -1155,8 +1156,7 @@ msgstr "Bağlantı Sayfası"
+ #: extensions/contact_sheet/contact_sheet.extension.desktop.in.in:4
+ msgid "Create an index image displaying the thumbnails of the selected files."
+ msgstr ""
+-"Seçilen dosyaların küçük resimlerinin görüntüleneceği resim dizini "
+-"oluştur."
++"Seçilen dosyaların küçük resimlerinin görüntüleneceği resim dizini oluştur."
+
+ #: extensions/contact_sheet/data/ui/contact-sheet-theme-properties.ui:12
+ #: extensions/file_tools/gth-file-tool-crop.c:439
+@@ -1177,7 +1177,7 @@ msgstr "Basit gölge"
+
+ #: extensions/contact_sheet/data/ui/contact-sheet-theme-properties.ui:21
+ msgid "Shadow only"
+-msgstr "Sadece gölge"
++msgstr "Yalnızca gölge"
+
+ #: extensions/contact_sheet/data/ui/contact-sheet-theme-properties.ui:24
+ msgid "Slide"
+@@ -1573,11 +1573,11 @@ msgstr "_Değerlendirme:"
+ msgid "_Title:"
+ msgstr "_Başlık:"
+
+-#: extensions/edit_metadata/dlg-edit-metadata.c:121
++#: extensions/edit_metadata/dlg-edit-metadata.c:123
+ msgid "Could not save the file metadata"
+ msgstr "Dosya üstverisi kaydedilemedi"
+
+-#: extensions/edit_metadata/dlg-edit-metadata.c:230
++#: extensions/edit_metadata/dlg-edit-metadata.c:234
+ #: gthumb/gth-overwrite-dialog.c:184
+ msgid "Cannot read file information"
+ msgstr "Dosya bilgisi okunamıyor"
+@@ -1590,9 +1590,9 @@ msgstr "Üstveriyi düzenle"
+ msgid "Allow to edit files metadata."
+ msgstr "Dosya üstverilerini düzenlemeye izin ver."
+
+-#: extensions/edit_metadata/gth-edit-comment-dialog.c:155
++#: extensions/edit_metadata/gth-edit-comment-dialog.c:138
+ msgid "Save only cha_nged fields"
+-msgstr "Sadece değişen ala_nları kaydet"
++msgstr "Yalnızca değişen ala_nları kaydet"
+
+ #: extensions/edit_metadata/gth-edit-general-page.c:554
+ msgid "No date"
+@@ -1682,7 +1682,7 @@ msgid "State/Province:"
+ msgstr "Eyalet/Bölge:"
+
+ #: extensions/exiv2_tools/exiv2-utils.cpp:47 gthumb/glib-utils.c:1088
+-#: gthumb/glib-utils.c:2051 gthumb/str-utils.c:677
++#: gthumb/glib-utils.c:2053 gthumb/str-utils.c:700
+ msgid "(invalid value)"
+ msgstr "(geçersiz değer)"
+
+@@ -1977,7 +1977,7 @@ msgid ""
+ "Files cannot be moved to the current location, as alternative you can choose "
+ "to copy them."
+ msgstr ""
+-"Dosyalar mevcut konuma taşınamadı, alternatif olarak onları kopyalamayı "
++"Dosyalar geçerli konuma taşınamadı, alternatif olarak onları kopyalamayı "
+ "seçebilirsiniz."
+
+ #: extensions/file_manager/actions.c:426 extensions/file_manager/actions.c:743
+@@ -2065,7 +2065,7 @@ msgstr "Kalıcı olarak sil"
+ msgid "Open with Gimp"
+ msgstr "GIMP ile aç"
+
+-#: extensions/file_manager/callbacks.c:722 gthumb/gth-file-source-vfs.c:235
++#: extensions/file_manager/callbacks.c:722 gthumb/gth-file-source-vfs.c:226
+ msgid "Home Folder"
+ msgstr "Ev Klasörü"
+
+@@ -2283,7 +2283,7 @@ msgid "%"
+ msgstr "%"
+
+ #: extensions/file_tools/data/ui/resize-options.ui:137
+-#: gthumb/gth-main-default-metadata.c:47
++#: gthumb/gth-main-default-metadata.c:48
+ msgid "Dimensions"
+ msgstr "Boyutlar"
+
+@@ -3184,9 +3184,9 @@ msgstr "Tek Kanallı"
+ #. Translators: this is an image size, such as 1024 × 768
+ #: extensions/gstreamer_utils/gstreamer-utils.c:402
+ #: extensions/image_viewer/gth-image-viewer-page.c:1864
+-#: extensions/image_viewer/gth-metadata-provider-image.c:253
++#: extensions/image_viewer/gth-metadata-provider-image.c:258
+ #: extensions/raw_files/gth-metadata-provider-raw.c:96
+-#: extensions/webalbums/gth-web-exporter.c:2434 gthumb/gtk-utils.c:944
++#: extensions/webalbums/gth-web-exporter.c:2434 gthumb/gtk-utils.c:963
+ #, c-format
+ msgid "%d × %d"
+ msgstr "%d × %d"
+@@ -3290,7 +3290,7 @@ msgstr "Resimler"
+ #: gthumb/gth-image-loader.c:251 gthumb/gth-image-loader.c:375
+ #: gthumb/gth-image-utils.c:117 gthumb/gth-image-utils.c:123
+ msgid "No suitable loader available for this file type"
+-msgstr "Bu dosya türü için uygun yükleyici mevcut değil"
++msgstr "Bu dosya türü için uygun yükleyici yok"
+
+ #. translators: %s is a filename
+ #: extensions/image_print/gth-load-image-info-task.c:168
+@@ -3696,7 +3696,7 @@ msgstr "İçeri aktarılan dosya yok"
+ msgid "The selected files are already present in the destination."
+ msgstr "Seçilen dosyalar zaten hedefte var."
+
+-#: extensions/importer/gth-import-task.c:651 gthumb/gth-file-source-vfs.c:683
++#: extensions/importer/gth-import-task.c:651 gthumb/gth-file-source-vfs.c:669
+ msgid "Could not delete the files"
+ msgstr "Dosyalar silinemedi"
+
+@@ -3720,7 +3720,7 @@ msgid ""
+ "%s of space is required but only %s is available."
+ msgstr ""
+ "“%s” konumunda yeterli boş alan yok.\n"
+-"%s alan gerekli fakat sadece %s kullanılabilir alan var."
++"%s alan gerekli ancak yalnızca %s kullanılabilir alan var."
+
+ #: extensions/list_tools/callbacks.c:148 extensions/list_tools/callbacks.c:157
+ #: extensions/list_tools/main.c:31
+@@ -3811,7 +3811,11 @@ msgstr "%quote{ metin }"
+ msgid "Quote the text "
+ msgstr "Metni alıntıla "
+
+-#: extensions/list_tools/data/ui/script-editor.ui:534
++#: extensions/list_tools/data/ui/script-editor.ui:522
++msgid "The current date and time"
++msgstr "Geçerli tarih ve saat"
++
++#: extensions/list_tools/data/ui/script-editor.ui:568
+ msgid "_Command:"
+ msgstr "_Komut:"
+
+@@ -3867,14 +3871,14 @@ msgstr "Komut %d durumu ile anormal olar
+ msgid "Enter a value:"
+ msgstr "Değer girin:"
+
+-#: extensions/list_tools/gth-script.c:736
++#: extensions/list_tools/gth-script.c:753
+ #: extensions/webalbums/gth-web-exporter.c:561
+ #: extensions/webalbums/gth-web-exporter.c:573
+ #: extensions/webalbums/gth-web-exporter.c:581
+ msgid "Malformed command"
+ msgstr "Hatalı biçimlendirilmiş komut"
+
+-#: extensions/list_tools/gth-script.c:791
++#: extensions/list_tools/gth-script.c:808
+ msgid "_Skip"
+ msgstr "_Atla"
+
+@@ -4312,7 +4316,7 @@ msgid "_Preserve original aspect ratios"
+ msgstr "Özgün en-boy oranlarını _koru"
+
+ #: extensions/resize_images/data/ui/resize-images.ui:324
+-#: gthumb/gth-main-default-metadata.c:46 gthumb/gth-toolbox.c:148
++#: gthumb/gth-main-default-metadata.c:47 gthumb/gth-toolbox.c:148
+ msgid "Format"
+ msgstr "Biçim"
+
+@@ -4567,6 +4571,23 @@ msgstr "Resimlerin sunumunu oynat."
+ msgid "x-office-presentation"
+ msgstr "x-office-presentation"
+
++#: extensions/terminal/actions.c:53
++#: extensions/terminal/terminal.extension.desktop.in.in:3
++msgid "Terminal"
++msgstr "Uçbirim"
++
++#: extensions/terminal/callbacks.c:40 extensions/terminal/callbacks.c:45
++msgid "Open in Terminal"
++msgstr "Uçbirimde aç"
++
++#: extensions/terminal/terminal.extension.desktop.in.in:4
++msgid "Open a folder in a terminal"
++msgstr "Uçbirimde klasör aç"
++
++#: extensions/terminal/terminal.extension.desktop.in.in:8
++msgid "utilities-terminal"
++msgstr "utilities-terminal"
++
+ #: extensions/webalbums/callbacks.c:48
+ msgid "_Web Album…"
+ msgstr "_Web Albümü…"
+@@ -4798,8 +4819,8 @@ msgid "Could not deactivate the extensio
+ msgstr "Uzantılar devre dışı bırakılamadı"
+
+ #: gthumb/dlg-preferences-extensions.c:491
+-msgid "gthumb development team"
+-msgstr "gthumb geliştirme takımı"
++msgid "gThumb Development Team"
++msgstr "gthumb Geliştirme Takımı"
+
+ #. add the page to the preferences dialog
+ #: gthumb/dlg-preferences-extensions.c:664
+@@ -4892,7 +4913,7 @@ msgstr "Dosyalar çöpe taşınıyor"
+ #. * the separator that your locale uses or use "%Id" instead
+ #. * of "%d" if your locale uses localized digits.
+ #.
+-#: gthumb/glib-utils.c:2027
++#: gthumb/glib-utils.c:2029
+ #, c-format
+ msgctxt "long time format"
+ msgid "%d∶%02d∶%02d"
+@@ -4904,7 +4925,7 @@ msgstr "%d∶%02d∶%02d"
+ #. * separator that your locale uses or use "%Id" instead of
+ #. * "%d" if your locale uses localized digits.
+ #.
+-#: gthumb/glib-utils.c:2036
++#: gthumb/glib-utils.c:2038
+ #, c-format
+ msgctxt "short time format"
+ msgid "%d∶%02d"
+@@ -5183,26 +5204,26 @@ msgstr "Tüm Desteklenen Dosyalar"
+ msgid "_Show Format Options"
+ msgstr "Biçim Seçeneklerini _Göster"
+
+-#: gthumb/gth-file-source-vfs.c:228
++#: gthumb/gth-file-source-vfs.c:219
+ msgid "Computer"
+ msgstr "Bilgisayar"
+
+-#: gthumb/gth-file-source-vfs.c:787
++#: gthumb/gth-file-source-vfs.c:773
+ msgid ""
+ "The files cannot be moved to the Trash. Do you want to delete them "
+ "permanently?"
+ msgstr "Dosyalar Çöpe taşınamadı. Onları kalıcı olarak silmek istiyor musunuz?"
+
+-#: gthumb/gth-file-source-vfs.c:798
++#: gthumb/gth-file-source-vfs.c:784
+ msgid "Could not move the files to the Trash"
+ msgstr "Dosyalar Çöpe taşınamadı"
+
+-#: gthumb/gth-file-source-vfs.c:843
++#: gthumb/gth-file-source-vfs.c:829
+ #, c-format
+ msgid "Are you sure you want to permanently delete “%s”?"
+ msgstr "“%s” dosyasını kalıcı olarak silmek istediğinizden emin misiniz?"
+
+-#: gthumb/gth-file-source-vfs.c:846
++#: gthumb/gth-file-source-vfs.c:832
+ #, c-format
+ msgid "Are you sure you want to permanently delete the %'d selected file?"
+ msgid_plural ""
+@@ -5210,7 +5231,7 @@ msgid_plural ""
+ msgstr[0] ""
+ "Seçilen %'d dosyasını kalıcı olarak silmek istediğinizden emin misiniz?"
+
+-#: gthumb/gth-file-source-vfs.c:856
++#: gthumb/gth-file-source-vfs.c:842
+ msgid "If you delete a file, it will be permanently lost."
+ msgstr "Eğer dosyayı silerseniz, kalıcı olarak kaybolacak."
+
+@@ -5274,7 +5295,7 @@ msgstr "Dosya yeniden adlandırılamadı
+
+ #: gthumb/gth-image-saver.c:39
+ msgid "No options available for this file type"
+-msgstr "Bu dosya türü için mevcut seçenek yok"
++msgstr "Bu dosya türü için kullanılabilir seçenek yok"
+
+ #: gthumb/gth-image-saver.c:185
+ #, c-format
+@@ -5289,7 +5310,7 @@ msgstr "Dosya bilgisi okunuyor"
+ msgid "Hidden Files"
+ msgstr "Gizli Dosyalar"
+
+-#: gthumb/gth-location-chooser.c:274 gthumb/gth-main-default-metadata.c:45
++#: gthumb/gth-location-chooser.c:274 gthumb/gth-main-default-metadata.c:46
+ msgid "Location"
+ msgstr "Konum"
+
+@@ -5309,64 +5330,64 @@ msgstr "Boyut"
+ msgid "Bytes"
+ msgstr "Bayt"
+
+-#: gthumb/gth-main-default-metadata.c:42
+-msgctxt "the file mtime"
++#. Translators: the file modified time.
++#: gthumb/gth-main-default-metadata.c:43
+ msgid "Modified Date & Time"
+ msgstr "Değiştirme Tarihi ve Zamanı"
+
+-#: gthumb/gth-main-default-metadata.c:43
++#: gthumb/gth-main-default-metadata.c:44
+ msgid "Type"
+ msgstr "Tür"
+
+-#: gthumb/gth-main-default-metadata.c:48
++#: gthumb/gth-main-default-metadata.c:49
+ msgid "Duration"
+ msgstr "Süre"
+
+-#: gthumb/gth-main-default-metadata.c:50
++#: gthumb/gth-main-default-metadata.c:51
+ msgid "Exposure Settings"
+ msgstr "Pozlama Ayarları"
+
+-#: gthumb/gth-main-default-metadata.c:51
++#: gthumb/gth-main-default-metadata.c:52
+ msgid "Aperture"
+ msgstr "Diyafram açıklığı"
+
+-#: gthumb/gth-main-default-metadata.c:52
++#: gthumb/gth-main-default-metadata.c:53
+ msgid "ISO Speed"
+ msgstr "ISO Hızı"
+
+-#: gthumb/gth-main-default-metadata.c:53
++#: gthumb/gth-main-default-metadata.c:54
+ msgid "Exposure Time"
+ msgstr "Pozlama Süresi"
+
+-#: gthumb/gth-main-default-metadata.c:54
++#: gthumb/gth-main-default-metadata.c:55
+ msgid "Shutter Speed"
+ msgstr "Objektif Hızı"
+
+-#: gthumb/gth-main-default-metadata.c:55
++#: gthumb/gth-main-default-metadata.c:56
+ msgid "Focal Length"
+ msgstr "Odak Uzaklığı"
+
+-#: gthumb/gth-main-default-metadata.c:56
++#: gthumb/gth-main-default-metadata.c:57
+ msgid "Flash"
+ msgstr "Işık"
+
+-#: gthumb/gth-main-default-metadata.c:57
++#: gthumb/gth-main-default-metadata.c:58
+ msgid "Camera Model"
+ msgstr "Kamera Modeli"
+
+-#: gthumb/gth-main-default-metadata.c:58
++#: gthumb/gth-main-default-metadata.c:59
+ msgid "Color Profile"
+ msgstr "Renk Profili"
+
+-#: gthumb/gth-main-default-metadata.c:60
++#: gthumb/gth-main-default-metadata.c:61
+ msgid "General Date & Time"
+ msgstr "Genel Tarih ve Zaman"
+
+-#: gthumb/gth-main-default-metadata.c:67
++#: gthumb/gth-main-default-metadata.c:68
+ msgid "Author"
+ msgstr "Yazar"
+
+-#: gthumb/gth-main-default-metadata.c:68
++#: gthumb/gth-main-default-metadata.c:69
+ msgid "Copyright"
+ msgstr "Telif Hakkı"
+
+@@ -5555,7 +5576,7 @@ msgstr "-dır"
+
+ #: gthumb/gth-test-category.c:47
+ msgid "is only"
+-msgstr "sadece"
++msgstr "yalnızca"
+
+ #: gthumb/gth-test-category.c:48 gthumb/gth-test-simple.c:51
+ #: gthumb/gth-test-simple.c:68
+@@ -5639,27 +5660,27 @@ msgstr "«%s» tuş birleşimi zaten «%
+ msgid "The key combination «%s» is already assigned and cannot be changed."
+ msgstr "«%s» tuş birleşimi zaten atanmış ve değiştirilemez."
+
+-#: gthumb/gtk-utils.c:352
++#: gthumb/gtk-utils.c:370
+ msgid "Could not display help"
+ msgstr "Yardım gösterilemedi"
+
+-#: gthumb/gtk-utils.c:711 gthumb/gtk-utils.c:718
++#: gthumb/gtk-utils.c:730 gthumb/gtk-utils.c:737
+ msgid "Could not launch the application"
+ msgstr "Uygulama başlatılamadı"
+
+-#: gthumb/gtk-utils.c:821
++#: gthumb/gtk-utils.c:840
+ msgid "_Copy Here"
+ msgstr "Buraya _Kopyala"
+
+-#: gthumb/gtk-utils.c:826
++#: gthumb/gtk-utils.c:845
+ msgid "_Move Here"
+ msgstr "Buraya _Taşı"
+
+-#: gthumb/gtk-utils.c:831
++#: gthumb/gtk-utils.c:850
+ msgid "_Link Here"
+ msgstr "Buraya _Bağla"
+
+-#: gthumb/gtk-utils.c:840
++#: gthumb/gtk-utils.c:859
+ msgid "Cancel"
+ msgstr "İptal et"
+
+@@ -7064,9 +7085,6 @@ msgstr "Geçmişi _Sil"
+ #~ msgid "Move current catalog to another location"
+ #~ msgstr "Geçerli katalogu başka yere taşı"
+
+-#~ msgid "Open the selected folder in a new window"
+-#~ msgstr "Seçilmiş klasörü yeni pencerede aç"
+-
+ #~ msgid "Open with the _File Manager"
+ #~ msgstr "_Dosya Yöneticisiyle aç"
+
diff -Nru gthumb-3.8.3/debian/patches/series gthumb-3.9.1/debian/patches/series
--- gthumb-3.8.3/debian/patches/series 2019-07-23 15:51:22.000000000 +0000
+++ gthumb-3.9.1/debian/patches/series 2020-03-10 05:22:09.000000000 +0000
@@ -4,3 +4,4 @@
#contact_sheet_theme_not_loaded.patch
#02-preserve_upstream_files.patch
privacy-breach-C-legal.patch
+3.9.1---build-for-lower-glib-version
diff -Nru gthumb-3.8.3/extensions/23hq/23hq.extension.desktop.in.in gthumb-3.9.1/extensions/23hq/23hq.extension.desktop.in.in
--- gthumb-3.8.3/extensions/23hq/23hq.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/23hq/23hq.extension.desktop.in.in 2020-03-07 19:03:13.403623000 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=23
Comment=Upload images to 23hq.com
-Authors=gthumb development team
-Copyright=Copyright © 2011-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2011-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Category=Exporter
diff -Nru gthumb-3.8.3/extensions/bookmarks/bookmarks.extension.desktop.in.in gthumb-3.9.1/extensions/bookmarks/bookmarks.extension.desktop.in.in
--- gthumb-3.8.3/extensions/bookmarks/bookmarks.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/bookmarks/bookmarks.extension.desktop.in.in 2020-03-07 19:03:13.403623000 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Bookmarks
Comment=Add bookmarks support.
-Authors=gthumb development team
-Copyright=Copyright © 2008-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2008-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Category=Browser
diff -Nru gthumb-3.8.3/extensions/bookmarks/callbacks.c gthumb-3.9.1/extensions/bookmarks/callbacks.c
--- gthumb-3.8.3/extensions/bookmarks/callbacks.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/bookmarks/callbacks.c 2020-03-07 19:03:13.403623000 +0000
@@ -118,10 +118,6 @@
file = g_file_new_for_uri (uri);
first_space = strchr (lines[i], ' ');
name = (first_space != NULL) ? g_strdup (first_space + 1) : NULL;
- if (name == NULL)
- name = _g_file_get_display_name (file);
- if (name == NULL)
- name = g_file_get_parse_name (file);
item = _g_menu_item_new_for_file (file, name);
g_menu_item_set_action_and_target (item, "win.go-to-location", "s", uri);
g_menu_append_item (data->system_bookmarks_menu, item);
@@ -282,7 +278,7 @@
GMenuItem *item;
char *uri;
- item = _g_menu_item_new_for_file (file_data->file, NULL);
+ item = _g_menu_item_new_for_file_data (file_data);
uri = g_file_get_uri (file_data->file);
g_menu_item_set_action_and_target (item, "win.go-to-location", "s", uri);
g_menu_append_item (data->entry_points_menu, item);
diff -Nru gthumb-3.8.3/extensions/bookmarks/data/ui/bookmarks-menu.ui gthumb-3.9.1/extensions/bookmarks/data/ui/bookmarks-menu.ui
--- gthumb-3.8.3/extensions/bookmarks/data/ui/bookmarks-menu.ui 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/bookmarks/data/ui/bookmarks-menu.ui 2020-03-07 19:03:13.403623000 +0000
@@ -10,7 +10,6 @@
-
_Edit Bookmarks…
win.bookmarks-edit
- b]]>
diff -Nru gthumb-3.8.3/extensions/burn_disc/burn_disc.extension.desktop.in.in gthumb-3.9.1/extensions/burn_disc/burn_disc.extension.desktop.in.in
--- gthumb-3.8.3/extensions/burn_disc/burn_disc.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/burn_disc/burn_disc.extension.desktop.in.in 2020-03-07 19:03:13.403623000 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Burn CD/DVD
Comment=Save files to an optical disc.
-Authors=gthumb development team
-Copyright=Copyright © 2010-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2010-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Icon=brasero
Category=Exporter
diff -Nru gthumb-3.8.3/extensions/burn_disc/gth-burn-task.c gthumb-3.9.1/extensions/burn_disc/gth-burn-task.c
--- gthumb-3.8.3/extensions/burn_disc/gth-burn-task.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/burn_disc/gth-burn-task.c 2020-03-07 19:03:13.403623000 +0000
@@ -122,13 +122,17 @@
if ((strcmp (subfolder, "") != 0) && g_hash_table_lookup (task->priv->parents, subfolder) == NULL) {
GtkTreePath *subfolder_parent_tpath;
GtkTreePath *subfolder_tpath;
+ char *basename;
if (subfolder_parent != NULL)
subfolder_parent_tpath = g_hash_table_lookup (task->priv->parents, subfolder_parent);
else
subfolder_parent_tpath = NULL;
- subfolder_tpath = brasero_track_data_cfg_add_empty_directory (task->priv->track, _g_uri_get_basename (subfolder), subfolder_parent_tpath);
+ basename = _g_uri_get_basename (subfolder);
+ subfolder_tpath = brasero_track_data_cfg_add_empty_directory (task->priv->track, basename, subfolder_parent_tpath);
g_hash_table_insert (task->priv->parents, g_strdup (subfolder), subfolder_tpath);
+
+ g_free (basename);
}
g_free (subfolder_parent);
@@ -325,7 +329,7 @@
g_free (task->priv->current_directory);
parent = g_file_get_parent (directory);
- escaped = _g_replace (g_file_info_get_display_name (info), "/", "-");
+ escaped = _g_utf8_replace_str (g_file_info_get_display_name (info), "/", "-");
destination = g_file_get_child_for_display_name (parent, escaped, NULL);
uri = g_file_get_uri (destination);
task->priv->current_directory = g_uri_unescape_string (uri, NULL);
diff -Nru gthumb-3.8.3/extensions/cairo_io/cairo-image-surface-png.c gthumb-3.9.1/extensions/cairo_io/cairo-image-surface-png.c
--- gthumb-3.8.3/extensions/cairo_io/cairo-image-surface-png.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/cairo_io/cairo-image-surface-png.c 2020-03-07 19:03:13.403623000 +0000
@@ -84,16 +84,16 @@
png_size_t size)
{
CairoPngData *cairo_png_data;
- gssize n;
GError *error = NULL;
cairo_png_data = png_get_io_ptr (png_ptr);
- n = g_input_stream_read (cairo_png_data->stream,
- buffer,
- size,
- cairo_png_data->cancellable,
- &error);
- if (n < 0) {
+ if(! g_input_stream_read_all (cairo_png_data->stream,
+ buffer,
+ size,
+ NULL,
+ cairo_png_data->cancellable,
+ &error))
+ {
png_error (png_ptr, error->message);
g_error_free (error);
}
@@ -204,7 +204,7 @@
}
metadata = _cairo_image_surface_get_metadata (cairo_png_data->surface);
- _cairo_metadata_set_has_alpha (metadata, (color_type & PNG_COLOR_MASK_ALPHA));
+ _cairo_metadata_set_has_alpha (metadata, (color_type & PNG_COLOR_MASK_ALPHA) || (color_type & PNG_COLOR_MASK_PALETTE));
_cairo_metadata_set_original_size (metadata, width, height);
/* Set the data transformations */
diff -Nru gthumb-3.8.3/extensions/cairo_io/cairo-image-surface-webp.c gthumb-3.9.1/extensions/cairo_io/cairo-image-surface-webp.c
--- gthumb-3.8.3/extensions/cairo_io/cairo-image-surface-webp.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/cairo_io/cairo-image-surface-webp.c 2020-03-07 19:03:13.403623000 +0000
@@ -43,7 +43,7 @@
GthImage *image;
WebPDecoderConfig config;
guchar *buffer;
- gssize bytes_read;
+ gsize bytes_read;
int width, height;
cairo_surface_t *surface;
cairo_surface_metadata_t *metadata;
@@ -55,11 +55,16 @@
return image;
buffer = g_new (guchar, BUFFER_SIZE);
- bytes_read = g_input_stream_read (istream,
- buffer,
- BUFFER_SIZE,
- cancellable,
- error);
+ if (! g_input_stream_read_all (istream,
+ buffer,
+ BUFFER_SIZE,
+ &bytes_read,
+ cancellable,
+ error))
+ {
+ g_free (buffer);
+ return image;
+ }
if (WebPGetFeatures (buffer, bytes_read, &config.input) != VP8_STATUS_OK) {
g_free (buffer);
diff -Nru gthumb-3.8.3/extensions/cairo_io/cairo-image-surface-xcf.c gthumb-3.9.1/extensions/cairo_io/cairo-image-surface-xcf.c
--- gthumb-3.8.3/extensions/cairo_io/cairo-image-surface-xcf.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/cairo_io/cairo-image-surface-xcf.c 2020-03-07 19:03:13.406956400 +0000
@@ -132,12 +132,22 @@
GError **error)
{
char *string;
+ gsize bytes_read;
g_return_val_if_fail (size > 0, NULL);
string = g_new (char, size + 1);
- g_input_stream_read (G_INPUT_STREAM (stream), string, size, cancellable, error);
- string[size] = 0;
+ if (g_input_stream_read_all (G_INPUT_STREAM (stream),
+ string,
+ size,
+ &bytes_read,
+ cancellable,
+ error))
+ {
+ string[bytes_read] = 0;
+ }
+ else
+ string[0] = 0;
return string;
}
@@ -727,9 +737,15 @@
if (tile_data_size <= 0)
continue;
- data_read = g_input_stream_read (G_INPUT_STREAM (data_stream), tile_data, tile_data_size, cancellable, error);
- if (*error != NULL)
+ if (! g_input_stream_read_all (G_INPUT_STREAM (data_stream),
+ tile_data,
+ tile_data_size,
+ &data_read,
+ cancellable,
+ error))
+ {
goto rle_error;
+ }
/* decompress the channel streams */
diff -Nru gthumb-3.8.3/extensions/catalogs/callbacks.c gthumb-3.9.1/extensions/catalogs/callbacks.c
--- gthumb-3.8.3/extensions/catalogs/callbacks.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/catalogs/callbacks.c 2020-03-07 19:03:13.406956400 +0000
@@ -54,12 +54,12 @@
static const GthMenuEntry vfs_open_actions_entries[] = {
- { N_("Open Folder"), "win.go-to-container-from-catalog", "end" },
+ { N_("Open Folder"), "win.go-to-container-from-catalog" },
};
static const GthMenuEntry vfs_other_actions_entries[] = {
- { N_("Remove from Catalog"), "win.remove-from-catalog", "Delete" },
+ { N_("Remove from Catalog"), "win.remove-from-catalog" },
};
@@ -196,16 +196,14 @@
void
-catalogs__gth_browser_update_sensitivity_cb (GthBrowser *browser)
+catalogs__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected)
{
BrowserData *data;
- int n_selected;
data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY);
g_return_if_fail (data != NULL);
- n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
-
gth_window_enable_action (GTH_WINDOW (browser), "add-to-catalog", n_selected > 0);
gth_window_enable_action (GTH_WINDOW (browser), "remove-from-catalog", (n_selected > 0) && GTH_IS_FILE_SOURCE_CATALOGS (gth_browser_get_location_source (browser)));
gth_window_enable_action (GTH_WINDOW (browser), "go-to-container-from-catalog", n_selected == 1);
@@ -250,6 +248,16 @@
}
+GthCatalog *
+catalogs__gth_catalog_new_for_uri_cb (const char *uri)
+{
+ if (g_str_has_suffix (uri, ".catalog") || g_str_has_suffix (uri, ".gqv"))
+ return gth_catalog_new ();
+ else
+ return NULL;
+}
+
+
void
catalogs__gth_browser_folder_tree_popup_before_cb (GthBrowser *browser,
GthFileSource *file_source,
@@ -323,14 +331,10 @@
void
catalogs__gth_browser_load_location_after_cb (GthBrowser *browser,
- GthFileData *location_data,
- const GError *error)
+ GthFileData *location_data)
{
BrowserData *data;
- if ((location_data == NULL) || (error != NULL))
- return;
-
data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY);
if (GTH_IS_FILE_SOURCE_CATALOGS (gth_browser_get_location_source (browser))) {
@@ -468,6 +472,8 @@
GError *error = NULL;
catalog = gth_catalog_load_from_file (rename_data->location);
+ if (catalog == NULL)
+ continue;
for (scan_files = rename_data->files, scan_new_files = rename_data->new_files;
scan_files && scan_new_files;
diff -Nru gthumb-3.8.3/extensions/catalogs/callbacks.h gthumb-3.9.1/extensions/catalogs/callbacks.h
--- gthumb-3.8.3/extensions/catalogs/callbacks.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/catalogs/callbacks.h 2020-03-07 19:03:13.406956400 +0000
@@ -27,15 +27,16 @@
void catalogs__initialize_cb (void);
void catalogs__gth_browser_construct_cb (GthBrowser *browser);
-void catalogs__gth_browser_update_sensitivity_cb (GthBrowser *browser);
+void catalogs__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected);
void catalogs__gth_browser_folder_tree_popup_before_cb (GthBrowser *browser,
GthFileSource *file_source,
GthFileData *folder);
GFile * catalogs__command_line_files_cb (GList *files);
GthCatalog * catalogs__gth_catalog_load_from_data_cb (const void *buffer);
+GthCatalog * catalogs__gth_catalog_new_for_uri_cb (const char *uri);
void catalogs__gth_browser_load_location_after_cb (GthBrowser *browser,
- GthFileData *location,
- const GError *error);
+ GthFileData *location);
void catalogs__gth_browser_update_extra_widget_cb (GthBrowser *browser);
void catalogs__gth_browser_file_renamed_cb (GthBrowser *browser,
GFile *file,
diff -Nru gthumb-3.8.3/extensions/catalogs/catalogs.extension.desktop.in.in gthumb-3.9.1/extensions/catalogs/catalogs.extension.desktop.in.in
--- gthumb-3.8.3/extensions/catalogs/catalogs.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/catalogs/catalogs.extension.desktop.in.in 2020-03-07 19:03:13.406956400 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Catalogs
Comment=Create file collections.
-Authors=gthumb development team
-Copyright=Copyright © 2008-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2008-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Icon=file-catalog-symbolic
Category=Browser
diff -Nru gthumb-3.8.3/extensions/catalogs/data/ui/add-to-catalog.ui gthumb-3.9.1/extensions/catalogs/data/ui/add-to-catalog.ui
--- gthumb-3.8.3/extensions/catalogs/data/ui/add-to-catalog.ui 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/catalogs/data/ui/add-to-catalog.ui 2020-03-07 19:03:13.406956400 +0000
@@ -1,223 +1,134 @@
-
+
-
-
- 400
- 350
+
+
+ True
False
- 5
- Add to Catalog
- dialog
-
-
+ vertical
+ 6
+
+
True
False
- vertical
- 2
-
-
+ 6
+
+
True
False
- end
-
-
- _Close
- False
- True
- True
- True
- True
- 0.43999999761581421
-
-
- False
- False
- 0
-
-
-
-
- _Add
- False
- True
- True
- True
- True
-
-
- False
- False
- 1
-
-
-
-
- A_dd and Close
- True
- True
- True
- True
-
-
- True
- True
- 2
-
-
+ C_atalogs:
+ True
+ 0
False
True
- end
0
-
+
True
- False
- 5
- 12
+ True
+ True
+ New Library
+ none
+ True
-
+
True
False
- 12
-
-
- True
- False
- 6
-
-
- True
- False
- 0
- C_atalogs:
- True
-
-
- False
- True
- 0
-
-
-
-
- True
- False
- 12
-
-
- 300
- 300
- True
- True
- in
-
-
-
-
-
- True
- True
- 0
-
-
-
-
- True
- False
- 6
-
-
- _New Catalog
- False
- True
- True
- True
- True
-
-
- False
- True
- 0
-
-
-
-
- New _Library
- False
- True
- True
- True
- True
-
-
- False
- True
- 1
-
-
-
-
- False
- True
- end
- 1
-
-
-
-
- True
- True
- 1
-
-
-
-
- True
- True
- 0
-
-
+ file-library-symbolic
-
- True
- True
- 0
-
+
+
+ False
+ True
+ end
+ 1
+
+
+
+
+ True
+ True
+ True
+ New Catalog
+ none
+ True
-
- _View the destination
- False
+
True
- True
- False
- True
- 0
- True
+ False
+ file-catalog-symbolic
-
- False
- True
- 1
-
- True
+ False
True
- 1
+ end
+ 2
+
+ False
+ True
+ 0
+
+
+
+
+ 500
+ 500
+ True
+ True
+ True
+ True
+ in
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ _View the destination
+ True
+ True
+ False
+ start
+ True
+ True
+
+
+ False
+ True
+ 2
+
+
+
+
+ _Keep the dialog open
+ True
+ True
+ False
+ start
+ True
+ True
+
+
+ False
+ True
+ 3
+
-
- cancel_button
- add_button
-
diff -Nru gthumb-3.8.3/extensions/catalogs/dlg-add-to-catalog.c gthumb-3.9.1/extensions/catalogs/dlg-add-to-catalog.c
--- gthumb-3.8.3/extensions/catalogs/dlg-add-to-catalog.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/catalogs/dlg-add-to-catalog.c 2020-03-07 19:03:13.406956400 +0000
@@ -24,11 +24,12 @@
#include "dlg-add-to-catalog.h"
#include "gth-catalog.h"
#include "gth-file-source-catalogs.h"
+#include "preferences.h"
#define GET_WIDGET(name) _gtk_builder_get_widget (data->builder, (name))
#define ADD_TO_CATALOG_DIALOG_NAME "add-to-catalog"
-#define UPDATE_SELECTION_DELAY 100
+#define UPDATE_SELECTION_DELAY 50
typedef struct {
@@ -85,12 +86,14 @@
GtkBuilder *builder;
GtkWidget *dialog;
GtkWidget *source_tree;
+ GtkWidget *info;
AddData *add_data;
GthFileSource *catalog_source;
GthFileData *new_catalog;
GthFileData *new_library;
gulong file_selection_changed_event;
- guint update_selectection_event;
+ guint update_selection_event;
+ GSettings *settings;
} DialogData;
@@ -104,14 +107,15 @@
data->file_selection_changed_event);
data->file_selection_changed_event = 0;
}
- if (data->update_selectection_event != 0) {
- g_source_remove (data->update_selectection_event);
- data->update_selectection_event = 0;
+ if (data->update_selection_event != 0) {
+ g_source_remove (data->update_selection_event);
+ data->update_selection_event = 0;
}
add_data_unref (data->add_data);
_g_object_unref (data->catalog_source);
_g_object_unref (data->new_catalog);
_g_object_unref (data->new_library);
+ _g_object_unref (data->settings);
g_object_unref (data->builder);
g_free (data);
}
@@ -158,13 +162,15 @@
add_data->files,
GTH_MONITOR_EVENT_CREATED);
- if (add_data->view_destination)
- gth_browser_go_to (add_data->browser, add_data->catalog_file, NULL);
-
if (add_data->close_after_adding) {
+ if (add_data->view_destination)
+ gth_browser_go_to (add_data->browser, add_data->catalog_file, NULL);
+
if (add_data->dialog != NULL)
gtk_widget_destroy (add_data->dialog);
}
+ else
+ gth_browser_show_next_image (add_data->browser, FALSE, FALSE);
add_data_unref (add_data);
}
@@ -181,14 +187,11 @@
gsize length;
GFile *gio_file;
- if (error != NULL) {
- _gtk_error_dialog_from_gerror_show (GTK_WINDOW (add_data->parent_window), _("Could not add the files to the catalog"), error);
- add_data_unref (add_data);
- return;
- }
-
_g_object_unref (add_data->catalog);
- add_data->catalog = (GthCatalog *) catalog;
+ if (catalog != NULL)
+ add_data->catalog = (GthCatalog *) catalog;
+ else
+ add_data->catalog = gth_catalog_new_for_file (add_data->catalog_file);
for (scan = add_data->files; scan; scan = scan->next)
gth_catalog_insert_file (add_data->catalog, (GFile *) scan->data, -1);
@@ -223,6 +226,7 @@
add_selection_to_catalog (DialogData *data,
gboolean close_after_adding)
{
+ char *last_catalog;
GList *items;
GList *file_list;
@@ -231,6 +235,10 @@
if (data->add_data->catalog_file == NULL)
return;
+ last_catalog = g_file_get_uri (data->add_data->catalog_file);
+ g_settings_set_string (data->settings, PREF_CATALOGS_LAST_CATALOG, last_catalog);
+ g_free (last_catalog);
+
_g_object_list_unref (data->add_data->files);
data->add_data->files = NULL;
@@ -252,24 +260,7 @@
add_button_clicked_cb (GtkWidget *widget,
DialogData *data)
{
- add_selection_to_catalog (data, FALSE);
-}
-
-
-static void
-add_close_button_clicked_cb (GtkWidget *widget,
- DialogData *data)
-{
- add_selection_to_catalog (data, TRUE);
-}
-
-
-static void
-source_tree_open_cb (GthFolderTree *folder_tree,
- GFile *file,
- gpointer user_data)
-{
- add_button_clicked_cb (NULL, (DialogData *)user_data);
+ add_selection_to_catalog (data, ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_open_checkbutton"))));
}
@@ -278,22 +269,36 @@
{
GFile *selected_catalog;
GList *items;
+ GList *file_data_list;
gboolean can_add;
selected_catalog = get_selected_catalog (data);
items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (data->browser)));
can_add = (items != NULL) && (selected_catalog != NULL);
- gtk_widget_set_sensitive (GET_WIDGET ("add_close_button"), can_add);
- gtk_widget_set_sensitive (GET_WIDGET ("add_button"), can_add);
+ gtk_dialog_set_response_sensitive (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, can_add);
+ gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (GET_WIDGET ("view_destination_checkbutton")), gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_open_checkbutton"))));
+ gtk_widget_set_sensitive (GET_WIDGET ("view_destination_checkbutton"), ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_open_checkbutton"))));
+
+ file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (data->browser)), items);
+ gth_file_selection_info_set_file_list (GTH_FILE_SELECTION_INFO (data->info), file_data_list);
+ _g_object_list_unref (file_data_list);
_gtk_tree_path_list_free (items);
_g_object_unref (selected_catalog);
}
static void
+source_tree_changed_cb (GthVfsTree *folder_tree,
+ gpointer user_data)
+{
+ update_sensitivity ((DialogData *) user_data);
+}
+
+
+static void
source_tree_selection_changed_cb (GtkTreeSelection *treeselection,
- gpointer user_data)
+ gpointer user_data)
{
update_sensitivity ((DialogData *) user_data);
}
@@ -446,13 +451,13 @@
static void
new_catalog_button_clicked_cb (GtkWidget *widget,
- DialogData *data)
+ DialogData *data)
{
GtkWidget *dialog;
dialog = gth_request_dialog_new (GTK_WINDOW (data->dialog),
GTK_DIALOG_MODAL,
- _("New catalog"),
+ _("New Catalog"),
_("Enter the catalog name:"),
_GTK_LABEL_CANCEL,
_("C_reate"));
@@ -611,7 +616,7 @@
dialog = gth_request_dialog_new (GTK_WINDOW (data->dialog),
GTK_DIALOG_MODAL,
- _("New library"),
+ _("New Library"),
_("Enter the library name:"),
_GTK_LABEL_CANCEL,
_("C_reate"));
@@ -629,9 +634,9 @@
{
DialogData *data = user_data;
- if (data->update_selectection_event != 0) {
- g_source_remove (data->update_selectection_event);
- data->update_selectection_event = 0;
+ if (data->update_selection_event != 0) {
+ g_source_remove (data->update_selection_event);
+ data->update_selection_event = 0;
}
update_sensitivity (data);
@@ -644,9 +649,17 @@
file_selection_changed_cb (GthFileSelection *self,
DialogData *data)
{
- if (data->update_selectection_event != 0)
- g_source_remove (data->update_selectection_event);
- data->update_selectection_event = g_timeout_add (UPDATE_SELECTION_DELAY, update_sensitivity_cb, data);
+ if (data->update_selection_event != 0)
+ g_source_remove (data->update_selection_event);
+ data->update_selection_event = g_timeout_add (UPDATE_SELECTION_DELAY, update_sensitivity_cb, data);
+}
+
+
+static void
+keep_open_button_toggled_cb (GtkToggleButton *button,
+ DialogData *data)
+{
+ update_sensitivity (data);
}
@@ -654,8 +667,9 @@
dlg_add_to_catalog (GthBrowser *browser)
{
DialogData *data;
- GFile *base;
GtkTreeSelection *selection;
+ char *last_catalog;
+ GtkWidget *sep;
if (gth_browser_get_dialog (browser, ADD_TO_CATALOG_DIALOG_NAME)) {
gtk_window_present (GTK_WINDOW (gth_browser_get_dialog (browser, ADD_TO_CATALOG_DIALOG_NAME)));
@@ -665,7 +679,43 @@
data = g_new0 (DialogData, 1);
data->browser = browser;
data->builder = _gtk_builder_new_from_file ("add-to-catalog.ui", "catalogs");
- data->dialog = _gtk_builder_get_widget (data->builder, "add_to_catalog_dialog");
+ data->settings = g_settings_new (GTHUMB_CATALOGS_SCHEMA);
+
+ data->dialog = g_object_new (GTK_TYPE_DIALOG,
+ "title", _("Add to Catalog"),
+ "transient-for", GTK_WINDOW (browser),
+ "modal", FALSE,
+ "use-header-bar", _gtk_settings_get_dialogs_use_header (),
+ NULL);
+ gtk_container_set_border_width (GTK_CONTAINER (data->dialog), 5);
+
+ data->info = gth_file_selection_info_new ();
+ gtk_widget_show (data->info);
+ gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (data->dialog))),
+ data->info,
+ FALSE,
+ FALSE,
+ 0);
+
+ sep = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
+ gtk_widget_show (sep);
+ gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (data->dialog))),
+ sep,
+ FALSE,
+ FALSE,
+ 5);
+
+ gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (data->dialog))),
+ GET_WIDGET ("dialog_content"),
+ FALSE,
+ FALSE,
+ 0);
+
+ gtk_dialog_add_buttons (GTK_DIALOG (data->dialog),
+ _GTK_LABEL_CLOSE, GTK_RESPONSE_CANCEL,
+ _("_Add"), GTK_RESPONSE_OK,
+ NULL);
+ _gtk_dialog_add_class_to_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, GTK_STYLE_CLASS_SUGGESTED_ACTION);
gth_browser_set_dialog (browser, ADD_TO_CATALOG_DIALOG_NAME, data->dialog);
@@ -674,38 +724,34 @@
data->add_data->parent_window = data->add_data->dialog = data->dialog;
add_data_ref (data->add_data);
- base = g_file_new_for_uri ("catalog:///");
- data->source_tree = gth_source_tree_new (base);
- g_object_unref (base);
-
+ last_catalog = g_settings_get_string (data->settings, PREF_CATALOGS_LAST_CATALOG);
+ data->source_tree = gth_vfs_tree_new ("catalog:///", last_catalog);
gtk_widget_show (data->source_tree);
gtk_container_add (GTK_CONTAINER (GET_WIDGET ("catalog_list_scrolled_window")), data->source_tree);
gtk_label_set_mnemonic_widget (GTK_LABEL (GET_WIDGET ("catalogs_label")), data->source_tree);
update_sensitivity (data);
+ g_free (last_catalog);
+
/* Set the signals handlers. */
g_signal_connect (G_OBJECT (data->dialog),
"destroy",
G_CALLBACK (destroy_cb),
data);
- g_signal_connect_swapped (G_OBJECT (GET_WIDGET ("cancel_button")),
+ g_signal_connect_swapped (gtk_dialog_get_widget_for_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_CANCEL),
"clicked",
G_CALLBACK (gtk_widget_destroy),
G_OBJECT (data->dialog));
g_signal_connect (G_OBJECT (data->source_tree),
- "open",
- G_CALLBACK (source_tree_open_cb),
+ "changed",
+ G_CALLBACK (source_tree_changed_cb),
data);
- g_signal_connect (G_OBJECT (GET_WIDGET ("add_button")),
+ g_signal_connect (gtk_dialog_get_widget_for_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK),
"clicked",
G_CALLBACK (add_button_clicked_cb),
data);
- g_signal_connect (G_OBJECT (GET_WIDGET ("add_close_button")),
- "clicked",
- G_CALLBACK (add_close_button_clicked_cb),
- data);
g_signal_connect (G_OBJECT (GET_WIDGET ("new_catalog_button")),
"clicked",
G_CALLBACK (new_catalog_button_clicked_cb),
@@ -714,7 +760,10 @@
"clicked",
G_CALLBACK (new_library_button_clicked_cb),
data);
-
+ g_signal_connect (G_OBJECT (GET_WIDGET ("keep_open_checkbutton")),
+ "toggled",
+ G_CALLBACK (keep_open_button_toggled_cb),
+ data);
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (data->source_tree));
g_signal_connect (selection,
"changed",
diff -Nru gthumb-3.8.3/extensions/catalogs/dlg-catalog-properties.c gthumb-3.9.1/extensions/catalogs/dlg-catalog-properties.c
--- gthumb-3.8.3/extensions/catalogs/dlg-catalog-properties.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/catalogs/dlg-catalog-properties.c 2020-03-07 19:03:13.406956400 +0000
@@ -96,19 +96,22 @@
GFile *parent;
char *uri;
char *clean_name;
+ char *ext;
char *display_name;
GFile *new_file;
parent = g_file_get_parent (data->original_file);
uri = g_file_get_uri (data->original_file);
clean_name = _g_filename_clear_for_file (gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("name_entry"))));
- display_name = g_strconcat (clean_name, _g_uri_get_file_extension (uri), NULL);
+ ext = _g_uri_get_extension (uri);
+ display_name = g_strconcat (clean_name, ext, NULL);
new_file = g_file_get_child_for_display_name (parent, display_name, NULL);
if ((new_file != NULL) && ! g_file_equal (new_file, data->original_file))
gth_file_data_set_file (data->file_data, new_file);
_g_object_unref (new_file);
g_free (display_name);
+ g_free (ext);
g_free (clean_name);
g_free (uri);
g_object_unref (parent);
@@ -153,6 +156,7 @@
return;
}
+ g_assert (object != NULL);
data->catalog = GTH_CATALOG (g_object_ref (object));
if (gth_catalog_get_name (data->catalog) != NULL) {
@@ -164,7 +168,7 @@
char *utf8_name;
basename = g_file_get_basename (data->file_data->file);
- name = _g_uri_remove_extension (basename);
+ name = _g_path_remove_extension (basename);
utf8_name = g_filename_to_utf8 (name, -1, NULL, NULL, NULL);
gtk_entry_set_text (GTK_ENTRY (GET_WIDGET ("name_entry")), utf8_name);
@@ -200,7 +204,7 @@
data->dialog = g_object_new (GTK_TYPE_DIALOG,
"title", _("Properties"),
"transient-for", GTK_WINDOW (browser),
- "modal", TRUE,
+ "modal", FALSE,
"destroy-with-parent", FALSE,
"use-header-bar", _gtk_settings_get_dialogs_use_header (),
NULL);
@@ -235,5 +239,8 @@
/* run dialog. */
gtk_widget_grab_focus (GET_WIDGET ("name_entry"));
- gth_catalog_load_from_file_async (file_data->file, NULL, catalog_ready_cb, data);
+ gth_catalog_load_from_file_async (file_data->file,
+ NULL,
+ catalog_ready_cb,
+ data);
}
diff -Nru gthumb-3.8.3/extensions/catalogs/gth-catalog.c gthumb-3.9.1/extensions/catalogs/gth-catalog.c
--- gthumb-3.8.3/extensions/catalogs/gth-catalog.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/catalogs/gth-catalog.c 2020-03-07 19:03:13.406956400 +0000
@@ -40,7 +40,6 @@
gboolean active;
char *order;
gboolean order_inverse;
- GCancellable *cancellable;
};
@@ -251,10 +250,8 @@
catalog->priv->file_hash = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, NULL, NULL);
catalog->priv->name = NULL;
catalog->priv->date_time = gth_datetime_new ();
- catalog->priv->active = FALSE;
catalog->priv->order = NULL;
catalog->priv->order_inverse = FALSE;
- catalog->priv->cancellable = NULL;
}
@@ -265,6 +262,52 @@
}
+GthCatalog *
+gth_catalog_new_for_file (GFile *file)
+{
+ char *uri;
+ GthCatalog *catalog;
+
+ if (file == NULL)
+ return NULL;
+
+ uri = g_file_get_uri (file);
+ catalog = gth_hook_invoke_get ("gth-catalog-new-for-uri", uri);
+
+ g_free (uri);
+
+ return catalog;
+}
+
+
+GthCatalog *
+gth_catalog_new_from_data (const void *buffer,
+ gsize count,
+ GError **error)
+{
+ char *text_buffer;
+ GthCatalog *catalog = NULL;
+
+ text_buffer = (char *) buffer;
+ if ((text_buffer == NULL) || (*text_buffer == 0))
+ return NULL;
+
+ if (strncmp (text_buffer, "catalog;
-
- catalog->priv->active = FALSE;
- if (list_data->list_ready_func != NULL) {
- list_data->files = g_list_reverse (list_data->files);
- list_data->list_ready_func (catalog, list_data->files, error, list_data->user_data);
- }
-
- _g_object_list_unref (list_data->files);
- g_free (list_data);
-}
-
-
-static void
-catalog_file_info_ready_cb (GObject *source_object,
- GAsyncResult *result,
- gpointer user_data)
-{
- ListData *list_data = user_data;
- GthCatalog *catalog = list_data->catalog;
- GFile *file;
- GFileInfo *info;
-
- file = (GFile*) source_object;
- info = g_file_query_info_finish (file, result, NULL);
- if (info != NULL) {
- list_data->files = g_list_prepend (list_data->files, gth_file_data_new (file, info));
- g_object_unref (info);
- }
-
- list_data->current_file = list_data->current_file->next;
- if (list_data->current_file == NULL) {
- gth_catalog_list_done (list_data, NULL);
- return;
- }
-
- g_file_query_info_async ((GFile *) list_data->current_file->data,
- list_data->attributes,
- 0,
- G_PRIORITY_DEFAULT,
- catalog->priv->cancellable,
- catalog_file_info_ready_cb,
- list_data);
-}
-
-
-static void
-list__catalog_buffer_ready_cb (void **buffer,
- gsize count,
- GError *error,
- gpointer user_data)
-{
- ListData *list_data = user_data;
- GthCatalog *catalog = list_data->catalog;
-
- if ((error == NULL) && (*buffer != NULL)) {
- gth_catalog_load_from_data (catalog, *buffer, count, &error);
- if (error != NULL) {
- gth_catalog_list_done (list_data, error);
- return;
- }
-
- list_data->current_file = catalog->priv->file_list;
- if (list_data->current_file == NULL) {
- gth_catalog_list_done (list_data, NULL);
- return;
- }
-
- g_file_query_info_async ((GFile *) list_data->current_file->data,
- list_data->attributes,
- 0,
- G_PRIORITY_DEFAULT,
- catalog->priv->cancellable,
- catalog_file_info_ready_cb,
- list_data);
- }
- else
- gth_catalog_list_done (list_data, error);
-}
-
-
-void
-gth_catalog_list_async (GthCatalog *catalog,
- const char *attributes,
- GCancellable *cancellable,
- CatalogReadyCallback ready_func,
- gpointer user_data)
-{
- ListData *list_data;
-
- g_return_if_fail (catalog->priv->file != NULL);
-
- if (catalog->priv->active) {
- /* FIXME: object_ready_with_error (catalog, ready_func, user_data, g_error_new (G_IO_ERROR, G_IO_ERROR_PENDING, "Action pending"));*/
- return;
- }
-
- catalog->priv->active = TRUE;
- catalog->priv->cancellable = cancellable;
-
- list_data = g_new0 (ListData, 1);
- list_data->catalog = catalog;
- list_data->attributes = attributes;
- list_data->list_ready_func = ready_func;
- list_data->user_data = user_data;
-
- _g_file_load_async (catalog->priv->file,
- G_PRIORITY_DEFAULT,
- catalog->priv->cancellable,
- list__catalog_buffer_ready_cb,
- list_data);
-}
-
-
-void
-gth_catalog_cancel (GthCatalog *catalog)
-{
- g_cancellable_cancel (catalog->priv->cancellable);
-}
-
-
static char *
get_display_name (GFile *file,
const char *name,
@@ -622,7 +508,7 @@
char *name;
char *utf8_name;
- name = _g_uri_remove_extension (basename);
+ name = _g_path_remove_extension (basename);
utf8_name = g_filename_to_utf8 (name, -1, NULL, NULL, NULL);
g_string_append (display_name, utf8_name);
@@ -673,7 +559,7 @@
char *name;
char *utf8_name;
- name = _g_uri_remove_extension (basename);
+ name = _g_path_remove_extension (basename);
utf8_name = g_filename_to_utf8 (name, -1, NULL, NULL, NULL);
g_string_append (display_name, utf8_name);
@@ -804,43 +690,41 @@
GFile *
gth_catalog_file_to_gio_file (GFile *file)
{
- GFile *gio_file = NULL;
- char *child_uri;
+ GFile *gio_file = NULL;
+ char *uri;
+ UriParts file_parts;
- child_uri = g_file_get_uri (file);
- if (strncmp (child_uri, "catalog:///", 11) == 0) {
- const char *query;
+ if (! g_file_has_uri_scheme (file, "catalog"))
+ return g_file_dup (file);
- query = strchr (child_uri, '?');
- if (query != NULL) {
- char *uri;
+ uri = g_file_get_uri (file);
+ if (! _g_uri_split (uri, &file_parts))
+ return NULL;
- uri = g_uri_unescape_string (query, "");
- gio_file = g_file_new_for_uri (uri);
+ if (file_parts.query != NULL) {
+ char *new_uri;
- g_free (uri);
- }
- else {
- GFile *base;
- char *base_uri;
- const char *part;
- char *full_uri;
-
- base = gth_catalog_get_base ();
- base_uri = g_file_get_uri (base);
- part = child_uri + 11;
- full_uri = g_strconcat (base_uri, part ? "/" : NULL, part, NULL);
- gio_file = g_file_new_for_uri (full_uri);
-
- g_free (full_uri);
- g_free (base_uri);
- g_object_unref (base);
- }
+ new_uri = g_uri_unescape_string (file_parts.query, NULL);
+ gio_file = g_file_new_for_uri (new_uri);
+
+ g_free (new_uri);
+ }
+ else {
+ GFile *base;
+ char *base_uri;
+ char *new_uri;
+
+ base = gth_catalog_get_base ();
+ base_uri = g_file_get_uri (base);
+ new_uri = _g_uri_append_path (base_uri, file_parts.path);
+ gio_file = g_file_new_for_uri (new_uri);
+
+ g_free (new_uri);
+ g_free (base_uri);
+ g_object_unref (base);
}
- else
- gio_file = g_file_dup (file);
- g_free (child_uri);
+ g_free (uri);
return gio_file;
}
@@ -898,17 +782,16 @@
gth_catalog_file_from_relative_path (const char *name,
const char *file_extension)
{
-
- char *partial_uri;
+ char *path;
char *uri;
GFile *file;
- partial_uri = g_uri_escape_string ((name[0] == '/' ? name + 1 : name), G_URI_RESERVED_CHARS_ALLOWED_IN_PATH, FALSE);
- uri = g_strconcat ("catalog:///", partial_uri, file_extension, NULL);
+ path = g_strconcat (name, file_extension, NULL);
+ uri = _g_uri_append_path ("catalog:///", path);
file = g_file_new_for_uri (uri);
g_free (uri);
- g_free (partial_uri);
+ g_free (path);
return file;
}
@@ -1000,13 +883,18 @@
gio_file = gth_catalog_file_to_gio_file (file);
istream = g_file_read (gio_file, NULL, NULL);
if (istream != NULL) {
- gssize n;
+ gsize bytes_read;
- n = g_input_stream_read (G_INPUT_STREAM (istream), buffer, buffer_size - 1, NULL, NULL);
- if (n > 0) {
+ if (g_input_stream_read_all (G_INPUT_STREAM (istream),
+ buffer,
+ buffer_size - 1,
+ &bytes_read,
+ NULL,
+ NULL))
+ {
char *exif_date;
- buffer[n] = '\0';
+ buffer[bytes_read] = '\0';
name = get_tag_value (buffer, "", "");
exif_date = get_tag_value (buffer, "", "");
if (exif_date != NULL)
@@ -1044,8 +932,9 @@
typedef struct {
- ReadyCallback ready_func;
- gpointer user_data;
+ GFile *file;
+ ReadyCallback ready_func;
+ gpointer user_data;
} LoadData;
@@ -1056,16 +945,18 @@
gpointer user_data)
{
LoadData *load_data = user_data;
- GthCatalog *catalog = NULL;
+ GthCatalog *catalog;
if (error == NULL) {
- catalog = gth_hook_invoke_get ("gth-catalog-load-from-data", *buffer);
- if (catalog != NULL)
- gth_catalog_load_from_data (catalog, *buffer, count, &error);
+ catalog = gth_catalog_new_from_data (*buffer, count, &error);
+ if (catalog == NULL)
+ catalog = gth_catalog_new_for_file (load_data->file);
}
-
+ else
+ catalog = NULL;
load_data->ready_func (G_OBJECT (catalog), error, load_data->user_data);
+ g_object_unref (load_data->file);
g_free (load_data);
}
@@ -1080,6 +971,7 @@
GFile *gio_file;
load_data = g_new0 (LoadData, 1);
+ load_data->file = g_object_ref (file);
load_data->ready_func = ready_func;
load_data->user_data = user_data;
@@ -1144,9 +1036,7 @@
if (! _g_file_load_in_buffer (gio_file, &buffer, &buffer_size, NULL, NULL))
return NULL;
- catalog = gth_hook_invoke_get ("gth-catalog-load-from-data", buffer);
- if (catalog != NULL)
- gth_catalog_load_from_data (catalog, buffer, buffer_size, NULL);
+ catalog = gth_catalog_new_from_data (buffer, buffer_size, NULL);
g_free (buffer);
g_object_unref (gio_file);
@@ -1213,3 +1103,123 @@
_g_object_unref (gio_parent);
g_object_unref (gio_file);
}
+
+
+/* -- gth_catalog_list_async -- */
+
+
+typedef struct {
+ GthCatalog *catalog;
+ const char *attributes;
+ CatalogReadyCallback list_ready_func;
+ gpointer user_data;
+ GList *current_file;
+ GList *files;
+ GCancellable *cancellable;
+} ListData;
+
+
+static void
+gth_catalog_list_done (ListData *list_data,
+ GError *error)
+{
+ if (list_data->list_ready_func != NULL) {
+ list_data->files = g_list_reverse (list_data->files);
+ list_data->list_ready_func (list_data->catalog, list_data->files, error, list_data->user_data);
+ }
+
+ _g_object_list_unref (list_data->files);
+ _g_object_unref (list_data->cancellable);
+ _g_object_unref (list_data->catalog);
+ g_free (list_data);
+}
+
+
+static void
+catalog_file_info_ready_cb (GObject *source_object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ ListData *list_data = user_data;
+ GFile *file;
+ GFileInfo *info;
+
+ file = (GFile*) source_object;
+ info = g_file_query_info_finish (file, result, NULL);
+ if (info != NULL) {
+ list_data->files = g_list_prepend (list_data->files, gth_file_data_new (file, info));
+ g_object_unref (info);
+ }
+
+ list_data->current_file = list_data->current_file->next;
+ if (list_data->current_file == NULL) {
+ gth_catalog_list_done (list_data, NULL);
+ return;
+ }
+
+ g_file_query_info_async ((GFile *) list_data->current_file->data,
+ list_data->attributes,
+ 0,
+ G_PRIORITY_DEFAULT,
+ list_data->cancellable,
+ catalog_file_info_ready_cb,
+ list_data);
+}
+
+
+static void
+list__catalog_buffer_ready_cb (void **buffer,
+ gsize count,
+ GError *error,
+ gpointer user_data)
+{
+ ListData *list_data = user_data;
+
+ if ((error == NULL) && (*buffer != NULL)) {
+ list_data->catalog = gth_catalog_new_from_data (*buffer, count, &error);
+ if (list_data->catalog == NULL) {
+ gth_catalog_list_done (list_data, error);
+ return;
+ }
+
+ list_data->current_file = list_data->catalog->priv->file_list;
+ if (list_data->current_file == NULL) {
+ gth_catalog_list_done (list_data, NULL);
+ return;
+ }
+
+ g_file_query_info_async ((GFile *) list_data->current_file->data,
+ list_data->attributes,
+ 0,
+ G_PRIORITY_DEFAULT,
+ list_data->cancellable,
+ catalog_file_info_ready_cb,
+ list_data);
+ }
+ else
+ gth_catalog_list_done (list_data, error);
+}
+
+
+void
+gth_catalog_list_async (GFile *file,
+ const char *attributes,
+ GCancellable *cancellable,
+ CatalogReadyCallback ready_func,
+ gpointer user_data)
+{
+ ListData *list_data;
+
+ list_data = g_new0 (ListData, 1);
+ list_data->attributes = attributes;
+ list_data->list_ready_func = ready_func;
+ list_data->user_data = user_data;
+ list_data->cancellable = _g_object_ref (cancellable);
+
+ _g_file_load_async (file,
+ G_PRIORITY_DEFAULT,
+ list_data->cancellable,
+ list__catalog_buffer_ready_cb,
+ list_data);
+}
+
diff -Nru gthumb-3.8.3/extensions/catalogs/gth-catalog.h gthumb-3.9.1/extensions/catalogs/gth-catalog.h
--- gthumb-3.8.3/extensions/catalogs/gth-catalog.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/catalogs/gth-catalog.h 2020-03-07 19:03:13.406956400 +0000
@@ -73,6 +73,10 @@
GType gth_catalog_get_type (void) G_GNUC_CONST;
GthCatalog * gth_catalog_new (void);
+GthCatalog * gth_catalog_new_for_file (GFile *file);
+GthCatalog * gth_catalog_new_from_data (const void *buffer,
+ gsize count,
+ GError **error);
void gth_catalog_set_file (GthCatalog *catalog,
GFile *file);
GFile * gth_catalog_get_file (GthCatalog *catalog);
@@ -87,10 +91,6 @@
gboolean inverse);
const char * gth_catalog_get_order (GthCatalog *catalog,
gboolean *inverse);
-void gth_catalog_load_from_data (GthCatalog *catalog,
- const void *buffer,
- gsize count,
- GError **error);
char * gth_catalog_to_data (GthCatalog *catalog,
gsize *length);
void gth_catalog_set_file_list (GthCatalog *catalog,
@@ -101,12 +101,6 @@
int pos);
int gth_catalog_remove_file (GthCatalog *catalog,
GFile *file);
-void gth_catalog_list_async (GthCatalog *catalog,
- const char *attributes,
- GCancellable *cancellable,
- CatalogReadyCallback ready_func,
- gpointer user_data);
-void gth_catalog_cancel (GthCatalog *catalog);
void gth_catalog_update_metadata (GthCatalog *catalog,
GthFileData *file_data);
int gth_catalog_get_size (GthCatalog *catalog);
@@ -133,5 +127,10 @@
const char *extension);
GthCatalog * gth_catalog_load_from_file (GFile *file);
void gth_catalog_save (GthCatalog *catalog);
+void gth_catalog_list_async (GFile *catalog,
+ const char *attributes,
+ GCancellable *cancellable,
+ CatalogReadyCallback ready_func,
+ gpointer user_data);
#endif /*GTH_CATALOG_H*/
diff -Nru gthumb-3.8.3/extensions/catalogs/gth-file-source-catalogs.c gthumb-3.9.1/extensions/catalogs/gth-file-source-catalogs.c
--- gthumb-3.8.3/extensions/catalogs/gth-file-source-catalogs.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/catalogs/gth-file-source-catalogs.c 2020-03-07 19:03:13.406956400 +0000
@@ -185,23 +185,23 @@
typedef struct {
- GthFileSourceCatalogs *catalogs;
+ GthFileSourceCatalogs *file_souce;
GthFileData *file_data;
char *attributes;
ReadyCallback ready_callback;
gpointer user_data;
- GthCatalog *catalog;
+ GFile *gio_file;
} MetadataOpData;
static void
metadata_op_free (MetadataOpData *metadata_op)
{
- gth_file_source_set_active (GTH_FILE_SOURCE (metadata_op->catalogs), FALSE);
+ gth_file_source_set_active (GTH_FILE_SOURCE (metadata_op->file_souce), FALSE);
g_object_unref (metadata_op->file_data);
g_free (metadata_op->attributes);
- g_object_unref (metadata_op->catalog);
- g_object_unref (metadata_op->catalogs);
+ g_object_unref (metadata_op->gio_file);
+ g_object_unref (metadata_op->file_souce);
g_free (metadata_op);
}
@@ -213,7 +213,7 @@
gpointer user_data)
{
MetadataOpData *metadata_op = user_data;
- GthFileSourceCatalogs *catalogs = metadata_op->catalogs;
+ GthFileSourceCatalogs *catalogs = metadata_op->file_souce;
metadata_op->ready_callback (G_OBJECT (catalogs), error, metadata_op->user_data);
metadata_op_free (metadata_op);
@@ -226,45 +226,51 @@
GError *error,
gpointer user_data)
{
- MetadataOpData *metadata_op = user_data;
- GthFileSourceCatalogs *catalogs = metadata_op->catalogs;
- GFile *gio_file;
- void *catalog_buffer;
- gsize catalog_size;
+ MetadataOpData *metadata_op = user_data;
+ GthCatalog *catalog;
+ void *catalog_buffer;
+ gsize catalog_size;
if (error != NULL) {
- metadata_op->ready_callback (G_OBJECT (catalogs), error, metadata_op->user_data);
+ metadata_op->ready_callback (G_OBJECT (metadata_op->file_souce), error, metadata_op->user_data);
metadata_op_free (metadata_op);
return;
}
- gth_catalog_load_from_data (metadata_op->catalog, *buffer, count, &error);
+ catalog = gth_catalog_new_from_data (*buffer, count, &error);
+ if (catalog == NULL) {
+ metadata_op->ready_callback (G_OBJECT (metadata_op->file_souce), error, metadata_op->user_data);
+ metadata_op_free (metadata_op);
+ return;
+ }
+
+ gth_catalog_set_file (catalog, metadata_op->gio_file);
if (error != NULL) {
- metadata_op->ready_callback (G_OBJECT (catalogs), error, metadata_op->user_data);
+ metadata_op->ready_callback (G_OBJECT (metadata_op->file_souce), error, metadata_op->user_data);
+ g_object_unref (catalog);
metadata_op_free (metadata_op);
return;
}
if (_g_file_attributes_matches_any (metadata_op->attributes, "sort::*"))
- gth_catalog_set_order (metadata_op->catalog,
+ gth_catalog_set_order (catalog,
g_file_info_get_attribute_string (metadata_op->file_data->info, "sort::type"),
g_file_info_get_attribute_boolean (metadata_op->file_data->info, "sort::inverse"));
- gth_hook_invoke ("gth-catalog-read-metadata", metadata_op->catalog, metadata_op->file_data);
+ gth_hook_invoke ("gth-catalog-read-metadata", catalog, metadata_op->file_data);
- catalog_buffer = gth_catalog_to_data (metadata_op->catalog, &catalog_size);
- gio_file = gth_catalog_file_to_gio_file (metadata_op->file_data->file);
- _g_file_write_async (gio_file,
+ catalog_buffer = gth_catalog_to_data (catalog, &catalog_size);
+ _g_file_write_async (metadata_op->gio_file,
catalog_buffer,
catalog_size,
TRUE,
G_PRIORITY_DEFAULT,
- gth_file_source_get_cancellable (GTH_FILE_SOURCE (metadata_op->catalogs)),
+ gth_file_source_get_cancellable (GTH_FILE_SOURCE (metadata_op->file_souce)),
write_metadata_write_buffer_ready_cb,
metadata_op);
- g_object_unref (gio_file);
+ g_object_unref (catalog);
}
@@ -278,7 +284,6 @@
GthFileSourceCatalogs *catalogs = (GthFileSourceCatalogs *) file_source;
char *uri;
MetadataOpData *metadata_op;
- GFile *gio_file;
uri = g_file_get_uri (file_data->file);
if (! g_str_has_suffix (uri, ".gqv")
@@ -291,7 +296,7 @@
}
metadata_op = g_new0 (MetadataOpData, 1);
- metadata_op->catalogs = g_object_ref (catalogs);
+ metadata_op->file_souce = g_object_ref (catalogs);
metadata_op->file_data = g_object_ref (file_data);
metadata_op->attributes = g_strdup (attributes);
metadata_op->ready_callback = callback;
@@ -300,16 +305,13 @@
gth_file_source_set_active (GTH_FILE_SOURCE (catalogs), TRUE);
g_cancellable_reset (gth_file_source_get_cancellable (file_source));
- metadata_op->catalog = gth_catalog_new ();
- gio_file = gth_file_source_to_gio_file (file_source, file_data->file);
- gth_catalog_set_file (metadata_op->catalog, gio_file);
- _g_file_load_async (gio_file,
+ metadata_op->gio_file = gth_file_source_to_gio_file (file_source, file_data->file);
+ _g_file_load_async (metadata_op->gio_file,
G_PRIORITY_DEFAULT,
gth_file_source_get_cancellable (file_source),
write_metadata_load_buffer_ready_cb,
metadata_op);
- g_object_unref (gio_file);
g_free (uri);
}
@@ -343,11 +345,12 @@
{
ReadMetadataOpData *read_metadata = user_data;
- /* ignore errors */
- if (error != NULL)
+ if (error != NULL) {
+ /* ignore errors */
g_clear_error (&error);
-
- if (object != NULL) {
+ }
+ else {
+ g_assert (object != NULL);
gth_catalog_update_metadata (GTH_CATALOG (object), read_metadata->file_data);
g_object_unref (object);
}
@@ -435,6 +438,7 @@
if (catalog != NULL) {
char *uri;
char *clean_name;
+ char *ext;
char *name;
GFile *gio_new_file;
char *data;
@@ -443,7 +447,8 @@
uri = g_file_get_uri (file);
clean_name = _g_filename_clear_for_file (edit_name);
- name = g_strconcat (clean_name, _g_uri_get_file_extension (uri), NULL);
+ ext = _g_uri_get_extension (uri);
+ name = g_strconcat (clean_name, ext, NULL);
new_file = g_file_get_child_for_display_name (parent, name, &error);
gth_catalog_set_file (catalog, new_file);
gth_catalog_set_name (catalog, edit_name);
@@ -477,6 +482,7 @@
g_free (data);
g_object_unref (gio_new_file);
g_free (clean_name);
+ g_free (ext);
g_free (name);
g_free (uri);
}
@@ -528,7 +534,6 @@
ForEachChildCallback for_each_file_func;
ReadyCallback ready_func;
gpointer user_data;
- GthCatalog *catalog;
GList *to_visit;
} ForEachChildData;
@@ -537,7 +542,6 @@
for_each_child_data_free (ForEachChildData *data)
{
_g_object_list_unref (data->to_visit);
- g_object_ref (data->catalog);
g_free (data->attributes);
g_object_ref (data->file_source);
}
@@ -674,15 +678,14 @@
|| g_str_has_suffix (uri, ".catalog")
|| g_str_has_suffix (uri, ".search"))
{
- gth_catalog_set_file (data->catalog, gio_file);
- gth_catalog_list_async (data->catalog,
+ gth_catalog_list_async (gio_file,
data->attributes,
gth_file_source_get_cancellable (data->file_source),
for_each_child__catalog_list_ready_cb,
data);
}
else
- g_directory_foreach_child (gio_file,
+ _g_directory_foreach_child (gio_file,
FALSE,
TRUE,
GFILE_STANDARD_ATTRIBUTES_WITH_FAST_CONTENT_TYPE,
@@ -743,7 +746,6 @@
data->for_each_file_func = for_each_file_func;
data->ready_func = ready_func;
data->user_data = user_data;
- data->catalog = gth_catalog_new ();
gio_parent = gth_file_source_to_gio_file (file_source, parent);
g_file_query_info_async (gio_parent,
@@ -825,6 +827,7 @@
return;
}
+ g_assert (catalog != NULL);
cod->catalog = (GthCatalog *) catalog;
if (cod->destination_position >= 0)
@@ -944,13 +947,13 @@
first_file = ccd->file_list->data;
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS)) {
- char *uri;
- const char *extension;
- char *msg;
- GtkWidget *d;
+ char *uri;
+ char *extension;
+ char *msg;
+ GtkWidget *d;
uri = g_file_get_uri (first_file);
- extension = _g_uri_get_file_extension (uri);
+ extension = _g_uri_get_extension (uri);
if ((g_strcmp0 (extension, ".catalog") == 0) || (g_strcmp0 (extension, ".search") == 0))
msg = g_strdup_printf (_("The catalog “%s” already exists, do you want to overwrite it?"), g_file_info_get_display_name (ccd->destination->info));
else
@@ -972,6 +975,7 @@
gtk_widget_show (d);
g_free (msg);
+ g_free (extension);
g_free (uri);
return;
@@ -1020,19 +1024,19 @@
gio_list = gth_file_source_to_gio_file_list (ccd->file_source, ccd->file_list);
gio_destination = gth_file_source_to_gio_file (ccd->file_source, ccd->destination->file);
- _g_copy_files_async (gio_list,
- gio_destination,
- ccd->move,
- GTH_FILE_COPY_DEFAULT,
- default_response,
- G_PRIORITY_DEFAULT,
- gth_file_source_get_cancellable (ccd->file_source),
- ccd->progress_callback,
- ccd->user_data,
- ccd->dialog_callback,
- ccd->user_data,
- copy_catalog_ready_cb,
- ccd);
+ _g_file_list_copy_async (gio_list,
+ gio_destination,
+ ccd->move,
+ GTH_FILE_COPY_DEFAULT,
+ default_response,
+ G_PRIORITY_DEFAULT,
+ gth_file_source_get_cancellable (ccd->file_source),
+ ccd->progress_callback,
+ ccd->user_data,
+ ccd->dialog_callback,
+ ccd->user_data,
+ copy_catalog_ready_cb,
+ ccd);
g_object_unref (gio_destination);
_g_object_list_unref (gio_list);
@@ -1140,25 +1144,17 @@
g_free (message);
}
- _g_query_info_async (cod->file_list,
- GTH_LIST_DEFAULT,
- GFILE_NAME_TYPE_ATTRIBUTES,
- gth_file_source_get_cancellable (file_source),
- copy__file_list_info_ready_cb,
- cod);
+ _g_file_list_query_info_async (cod->file_list,
+ GTH_LIST_DEFAULT,
+ GFILE_NAME_TYPE_ATTRIBUTES,
+ gth_file_source_get_cancellable (file_source),
+ copy__file_list_info_ready_cb,
+ cod);
}
}
static gboolean
-gth_file_source_catalogs_can_cut (GthFileSource *file_source,
- GFile *file)
-{
- return g_file_has_uri_scheme (file, "catalog");
-}
-
-
-static gboolean
gth_file_source_catalogs_is_reorderable (GthFileSource *file_source)
{
return TRUE;
@@ -1247,6 +1243,7 @@
return;
}
+ g_assert (object != NULL);
catalog = (GthCatalog *) object;
reorder_data->new_order = reorder_catalog_list (catalog,
reorder_data->visible_files,
@@ -1370,15 +1367,8 @@
return;
}
- data->catalog = gth_hook_invoke_get ("gth-catalog-load-from-data", *buffer);
+ data->catalog = gth_catalog_new_from_data (*buffer, count, &error);
if (data->catalog == NULL) {
- error = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_FAILED, _("Invalid file format"));
- remove_from_catalog_end (error, data);
- return;
- }
-
- gth_catalog_load_from_data (data->catalog, *buffer, count, &error);
- if (error != NULL) {
remove_from_catalog_end (error, data);
return;
}
@@ -1453,6 +1443,68 @@
}
+static GdkDragAction
+gth_file_source_catalogs_get_drop_actions (GthFileSource *file_source,
+ GFile *destination,
+ GFile *file)
+{
+ GdkDragAction actions = 0;
+ char *dest_uri;
+ char *dest_scheme;
+ char *dest_ext;
+ gboolean dest_is_catalog;
+ char *file_uri;
+ char *file_scheme;
+ char *file_ext;
+ gboolean file_is_catalog;
+
+ dest_uri = g_file_get_uri (destination);
+ dest_scheme = gth_main_get_source_scheme (dest_uri);
+ dest_ext = _g_uri_get_extension (dest_uri);
+ dest_is_catalog = _g_str_equal (dest_ext, ".catalog") || _g_str_equal (dest_ext, ".search");
+
+ file_uri = g_file_get_uri (file);
+ file_scheme = gth_main_get_source_scheme (file_uri);
+ file_ext = _g_uri_get_extension (file_uri);
+ file_is_catalog = _g_str_equal (file_ext, ".catalog") || _g_str_equal (file_ext, ".search");
+
+ if (_g_str_equal (dest_scheme, "catalog")
+ && dest_is_catalog
+ && _g_str_equal (file_scheme, "file"))
+ {
+ /* Copy files into a catalog. */
+ actions = GDK_ACTION_COPY;
+ }
+
+ else if (_g_str_equal (file_scheme, "catalog")
+ && file_is_catalog
+ && _g_str_equal (dest_scheme, "catalog")
+ && ! dest_is_catalog)
+ {
+ /* Move a catalog into a library. */
+ actions = GDK_ACTION_MOVE;
+ }
+
+ else if (_g_str_equal (file_scheme, "catalog")
+ && ! file_is_catalog
+ && _g_str_equal (dest_scheme, "catalog")
+ && ! dest_is_catalog)
+ {
+ /* Move a library into another library. */
+ actions = GDK_ACTION_MOVE;
+ }
+
+ g_free (file_ext);
+ g_free (file_scheme);
+ g_free (file_uri);
+ g_free (dest_ext);
+ g_free (dest_scheme);
+ g_free (dest_uri);
+
+ return actions;
+}
+
+
static void
gth_file_source_catalogs_finalize (GObject *object)
{
@@ -1485,11 +1537,11 @@
file_source_class->rename = gth_file_source_catalogs_rename;
file_source_class->for_each_child = gth_file_source_catalogs_for_each_child;
file_source_class->copy = gth_file_source_catalogs_copy;
- file_source_class->can_cut = gth_file_source_catalogs_can_cut;
file_source_class->is_reorderable = gth_file_source_catalogs_is_reorderable;
file_source_class->reorder = gth_file_source_catalogs_reorder;
file_source_class->remove = gth_file_source_catalogs_remove;
file_source_class->deleted_from_disk = gth_file_source_catalogs_deleted_from_disk;
+ file_source_class->get_drop_actions = gth_file_source_catalogs_get_drop_actions;
}
diff -Nru gthumb-3.8.3/extensions/catalogs/gth-organize-task.c gthumb-3.9.1/extensions/catalogs/gth-organize-task.c
--- gthumb-3.8.3/extensions/catalogs/gth-organize-task.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/catalogs/gth-organize-task.c 2020-03-07 19:03:13.406956400 +0000
@@ -280,8 +280,7 @@
catalog_file = gth_catalog_get_file_for_date (date_time, ".search");
catalog = (GthCatalog *) gth_search_new ();
- gth_search_set_folder (GTH_SEARCH (catalog), self->priv->folder);
- gth_search_set_recursive (GTH_SEARCH (catalog), self->priv->recursive);
+ gth_search_set_source (GTH_SEARCH (catalog), self->priv->folder, self->priv->recursive);
date_test = gth_main_get_registered_object (GTH_TYPE_TEST, (self->priv->group_policy == GTH_GROUP_POLICY_MODIFIED_DATE) ? "file::mtime" : "Embedded::Photo::DateTimeOriginal");
gth_test_simple_set_data_as_date (GTH_TEST_SIMPLE (date_test), date_time->date);
@@ -378,8 +377,7 @@
catalog_file = gth_catalog_get_file_for_tag (tag, ".search");
catalog = (GthCatalog *) gth_search_new ();
- gth_search_set_folder (GTH_SEARCH (catalog), self->priv->folder);
- gth_search_set_recursive (GTH_SEARCH (catalog), self->priv->recursive);
+ gth_search_set_source (GTH_SEARCH (catalog), self->priv->folder, self->priv->recursive);
tag_test = gth_main_get_registered_object (GTH_TYPE_TEST, (self->priv->group_policy == GTH_GROUP_POLICY_TAG) ? "comment::category" : "general::tags");
gth_test_category_set (GTH_TEST_CATEGORY (tag_test), GTH_TEST_OP_CONTAINS, FALSE, tag);
@@ -573,7 +571,7 @@
break;
}
- g_directory_foreach_child (self->priv->folder,
+ _g_directory_foreach_child (self->priv->folder,
self->priv->recursive,
TRUE,
attributes,
@@ -740,12 +738,12 @@
gtk_widget_show (GET_WIDGET ("preview_box"));
file_list = gth_catalog_get_file_list (catalog);
- _g_query_info_async (file_list,
- GTH_LIST_DEFAULT,
- GFILE_STANDARD_ATTRIBUTES_WITH_FAST_CONTENT_TYPE,
- NULL,
- file_list_info_ready_cb,
- self);
+ _g_file_list_query_info_async (file_list,
+ GTH_LIST_DEFAULT,
+ GFILE_STANDARD_ATTRIBUTES_WITH_FAST_CONTENT_TYPE,
+ NULL,
+ file_list_info_ready_cb,
+ self);
}
g_free (key);
diff -Nru gthumb-3.8.3/extensions/catalogs/main.c gthumb-3.9.1/extensions/catalogs/main.c
--- gthumb-3.8.3/extensions/catalogs/main.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/catalogs/main.c 2020-03-07 19:03:13.406956400 +0000
@@ -40,6 +40,15 @@
gth_hook_register ("gth-catalog-load-from-data", 1);
/**
+ * Called to create the right catalog class for the given uri.
+ *
+ * @uri (const char *): the file uri.
+ * @return (GthCatalog *): return a pointer to the object that can
+ * handle the catalog uri, or NULL if the data type doesn't match.
+ **/
+ gth_hook_register ("gth-catalog-new-for-uri", 1);
+
+ /**
* Called to update the catalog data from a given file data.
*
* @catalog (GthCatalog *): the catalog to update
@@ -109,11 +118,12 @@
gth_hook_add_callback ("command-line-files", 10, G_CALLBACK (catalogs__command_line_files_cb), NULL);
gth_hook_add_callback ("gth-catalog-load-from-data", 10, G_CALLBACK (catalogs__gth_catalog_load_from_data_cb), NULL);
+ gth_hook_add_callback ("gth-catalog-new-for-uri", 10, G_CALLBACK (catalogs__gth_catalog_new_for_uri_cb), NULL);
gth_main_register_file_source (GTH_TYPE_FILE_SOURCE_CATALOGS);
gth_hook_add_callback ("initialize", 10, G_CALLBACK (catalogs__initialize_cb), NULL);
gth_hook_add_callback ("gth-browser-construct", 10, G_CALLBACK (catalogs__gth_browser_construct_cb), NULL);
- gth_hook_add_callback ("gth-browser-update-sensitivity", 10, G_CALLBACK (catalogs__gth_browser_update_sensitivity_cb), NULL);
+ gth_hook_add_callback ("gth-browser-selection-changed", 10, G_CALLBACK (catalogs__gth_browser_selection_changed_cb), NULL);
gth_hook_add_callback ("gth-browser-folder-tree-popup-before", 10, G_CALLBACK (catalogs__gth_browser_folder_tree_popup_before_cb), NULL);
gth_hook_add_callback ("gth-browser-load-location-after", 10, G_CALLBACK (catalogs__gth_browser_load_location_after_cb), NULL);
gth_hook_add_callback ("gth-browser-update-extra-widget", 10, G_CALLBACK (catalogs__gth_browser_update_extra_widget_cb), NULL);
diff -Nru gthumb-3.8.3/extensions/catalogs/preferences.h gthumb-3.9.1/extensions/catalogs/preferences.h
--- gthumb-3.8.3/extensions/catalogs/preferences.h 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/extensions/catalogs/preferences.h 2020-03-07 19:03:13.406956400 +0000
@@ -0,0 +1,33 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * GThumb
+ *
+ * Copyright (C) 2019 Free Software Foundation, Inc.
+ *
+ * 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, see .
+ */
+
+#ifndef CATALOGS_PREFERENCES_H
+#define CATALOGS_PREFERENCES_H
+
+/* schema */
+
+#define GTHUMB_CATALOGS_SCHEMA GTHUMB_SCHEMA ".catalogs"
+
+/* keys */
+
+#define PREF_CATALOGS_LAST_CATALOG "last-catalog"
+
+#endif /* CATALOGS_PREFERENCES_H */
diff -Nru gthumb-3.8.3/extensions/change_date/callbacks.c gthumb-3.9.1/extensions/change_date/callbacks.c
--- gthumb-3.8.3/extensions/change_date/callbacks.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/change_date/callbacks.c 2020-03-07 19:03:13.410289800 +0000
@@ -55,12 +55,8 @@
void
-cd__gth_browser_update_sensitivity_cb (GthBrowser *browser)
+cd__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected)
{
- int n_selected;
- gboolean sensitive;
-
- n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
- sensitive = n_selected > 0;
- gth_window_enable_action (GTH_WINDOW (browser), "change-date", sensitive);
+ gth_window_enable_action (GTH_WINDOW (browser), "change-date", n_selected > 0);
}
diff -Nru gthumb-3.8.3/extensions/change_date/callbacks.h gthumb-3.9.1/extensions/change_date/callbacks.h
--- gthumb-3.8.3/extensions/change_date/callbacks.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/change_date/callbacks.h 2020-03-07 19:03:13.410289800 +0000
@@ -25,6 +25,7 @@
#include
void cd__gth_browser_construct_cb (GthBrowser *browser);
-void cd__gth_browser_update_sensitivity_cb (GthBrowser *browser);
+void cd__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected);
#endif /* CALLBACKS_H */
diff -Nru gthumb-3.8.3/extensions/change_date/change_date.extension.desktop.in.in gthumb-3.9.1/extensions/change_date/change_date.extension.desktop.in.in
--- gthumb-3.8.3/extensions/change_date/change_date.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/change_date/change_date.extension.desktop.in.in 2020-03-07 19:03:13.410289800 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Change date
Comment=Change the files date
-Authors=gthumb development team
-Copyright=Copyright © 2010-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2010-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Category=List-Tool
diff -Nru gthumb-3.8.3/extensions/change_date/gth-change-date-task.c gthumb-3.9.1/extensions/change_date/gth-change-date-task.c
--- gthumb-3.8.3/extensions/change_date/gth-change-date-task.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/change_date/gth-change-date-task.c 2020-03-07 19:03:13.410289800 +0000
@@ -320,7 +320,7 @@
else
update_modification_time (self);
- g_ptr_array_free (attribute_v, TRUE);
+ g_ptr_array_unref (attribute_v);
gth_datetime_free (date_time);
}
diff -Nru gthumb-3.8.3/extensions/change_date/main.c gthumb-3.9.1/extensions/change_date/main.c
--- gthumb-3.8.3/extensions/change_date/main.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/change_date/main.c 2020-03-07 19:03:13.410289800 +0000
@@ -30,7 +30,7 @@
gthumb_extension_activate (void)
{
gth_hook_add_callback ("gth-browser-construct", 50, G_CALLBACK (cd__gth_browser_construct_cb), NULL);
- gth_hook_add_callback ("gth-browser-update-sensitivity", 10, G_CALLBACK (cd__gth_browser_update_sensitivity_cb), NULL);
+ gth_hook_add_callback ("gth-browser-selection-changed", 10, G_CALLBACK (cd__gth_browser_selection_changed_cb), NULL);
}
diff -Nru gthumb-3.8.3/extensions/comments/comments.extension.desktop.in.in gthumb-3.9.1/extensions/comments/comments.extension.desktop.in.in
--- gthumb-3.8.3/extensions/comments/comments.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/comments/comments.extension.desktop.in.in 2020-03-07 19:03:13.410289800 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Comments and tags
Comment=Add comments and tags to any file type.
-Authors=gthumb development team
-Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2009-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Category=Metadata
diff -Nru gthumb-3.8.3/extensions/comments/gth-comment.c gthumb-3.9.1/extensions/comments/gth-comment.c
--- gthumb-3.8.3/extensions/comments/gth-comment.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/comments/gth-comment.c 2020-03-07 19:03:13.410289800 +0000
@@ -82,7 +82,7 @@
gth_comment_free_data (self);
gth_comment_clear_categories (self);
- g_ptr_array_free (self->priv->categories, TRUE);
+ g_ptr_array_unref (self->priv->categories);
g_date_free (self->priv->date);
gth_time_free (self->priv->time_of_day);
@@ -425,7 +425,7 @@
gth_comment_clear_categories (GthComment *self)
{
g_ptr_array_foreach (self->priv->categories, (GFunc) g_free, NULL);
- g_ptr_array_free (self->priv->categories, TRUE);
+ g_ptr_array_unref (self->priv->categories);
self->priv->categories = g_ptr_array_new ();
}
diff -Nru gthumb-3.8.3/extensions/contact_sheet/callbacks.c gthumb-3.9.1/extensions/contact_sheet/callbacks.c
--- gthumb-3.8.3/extensions/contact_sheet/callbacks.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/contact_sheet/callbacks.c 2020-03-07 19:03:13.410289800 +0000
@@ -24,7 +24,7 @@
#include
#include
#include
-#include
+#include
#include "actions.h"
#include "callbacks.h"
@@ -49,7 +49,7 @@
actions,
G_N_ELEMENTS (actions),
browser);
- gth_menu_manager_append_entries (gth_browser_get_menu_manager (browser, GTH_BROWSER_MENU_MANAGER_OTHER_EXPORTERS),
+ gth_menu_manager_append_entries (gth_browser_get_menu_manager (browser, GTH_BROWSER_MENU_MANAGER_TOOLS4),
action_entries,
G_N_ELEMENTS (action_entries));
}
diff -Nru gthumb-3.8.3/extensions/contact_sheet/contact_sheet.extension.desktop.in.in gthumb-3.9.1/extensions/contact_sheet/contact_sheet.extension.desktop.in.in
--- gthumb-3.8.3/extensions/contact_sheet/contact_sheet.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/contact_sheet/contact_sheet.extension.desktop.in.in 2020-03-07 19:03:13.410289800 +0000
@@ -1,12 +1,12 @@
[Extension]
Name=Contact Sheet
Comment=Create an index image displaying the thumbnails of the selected files.
-Authors=gthumb development team
-Copyright=Copyright © 2010-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2010-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Category=Exporter
[Loader]
Type=module
API=@GTHUMB_API_VERSION@
-Requires=export_tools
+Requires=list_tools
diff -Nru gthumb-3.8.3/extensions/contact_sheet/dlg-contact-sheet.c gthumb-3.9.1/extensions/contact_sheet/dlg-contact-sheet.c
--- gthumb-3.8.3/extensions/contact_sheet/dlg-contact-sheet.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/contact_sheet/dlg-contact-sheet.c 2020-03-07 19:03:13.410289800 +0000
@@ -333,7 +333,7 @@
continue;
}
- if (g_strcmp0 (_g_uri_get_file_extension (g_file_info_get_name (file_info)), ".cst") != 0) {
+ if (g_strcmp0 (_g_uri_get_extension (g_file_info_get_name (file_info)), ".cst") != 0) {
g_object_unref (file_info);
continue;
}
@@ -724,7 +724,7 @@
gth_browser_set_dialog (browser, "contact_sheet", data->dialog);
g_object_set_data (G_OBJECT (data->dialog), "dialog_data", data);
- data->thumbnail_caption_chooser = gth_metadata_chooser_new (GTH_METADATA_ALLOW_IN_PRINT);
+ data->thumbnail_caption_chooser = gth_metadata_chooser_new (GTH_METADATA_ALLOW_IN_PRINT, TRUE);
gtk_widget_show (data->thumbnail_caption_chooser);
gtk_container_add (GTK_CONTAINER (GET_WIDGET ("thumbnail_caption_scrolledwindow")), data->thumbnail_caption_chooser);
@@ -743,7 +743,7 @@
else
s_value = _g_settings_get_uri (data->settings, PREF_CONTACT_SHEET_DESTINATION);
if (s_value == NULL)
- s_value = g_strdup (get_home_uri ());
+ s_value = g_strdup (_g_uri_get_home ());
gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (GET_WIDGET ("destination_filechooserbutton")), s_value);
g_free (s_value);
diff -Nru gthumb-3.8.3/extensions/contact_sheet/dlg-image-wall.c gthumb-3.9.1/extensions/contact_sheet/dlg-image-wall.c
--- gthumb-3.8.3/extensions/contact_sheet/dlg-image-wall.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/contact_sheet/dlg-image-wall.c 2020-03-07 19:03:13.410289800 +0000
@@ -265,7 +265,7 @@
else
s_value = _g_settings_get_uri (data->settings, PREF_IMAGE_WALL_DESTINATION);
if (s_value == NULL)
- s_value = g_strdup (get_home_uri ());
+ s_value = g_strdup (_g_uri_get_home ());
gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (GET_WIDGET ("destination_filechooserbutton")), s_value);
g_free (s_value);
diff -Nru gthumb-3.8.3/extensions/contact_sheet/gth-contact-sheet-creator.c gthumb-3.9.1/extensions/contact_sheet/gth-contact-sheet-creator.c
--- gthumb-3.8.3/extensions/contact_sheet/gth-contact-sheet-creator.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/contact_sheet/gth-contact-sheet-creator.c 2020-03-07 19:03:13.410289800 +0000
@@ -231,6 +231,47 @@
}
+static char *
+_g_get_name_from_template (char **utf8_template,
+ int n)
+{
+ GString *s;
+ int i;
+ char *result;
+
+ s = g_string_new (NULL);
+
+ for (i = 0; utf8_template[i] != NULL; i++) {
+ const char *chunk = utf8_template[i];
+ gunichar ch = g_utf8_get_char (chunk);
+
+ if (ch != '#')
+ g_string_append (s, chunk);
+ else {
+ char *s_n;
+ int s_n_len;
+ int sharps_len = g_utf8_strlen (chunk, -1);
+
+ s_n = g_strdup_printf ("%d", n);
+ s_n_len = strlen (s_n);
+
+ while (s_n_len < sharps_len) {
+ g_string_append_c (s, '0');
+ sharps_len--;
+ }
+
+ g_string_append (s, s_n);
+ g_free (s_n);
+ }
+ }
+
+ result = s->str;
+ g_string_free (s, FALSE);
+
+ return result;
+}
+
+
static void
begin_page (GthContactSheetCreator *self,
int page_n)
@@ -559,7 +600,6 @@
if (self->priv->imagemap_stream != NULL) {
char *file;
char *destination;
- char *relative_uri;
char *relative_path;
char *alt_attribute;
char *line;
@@ -567,9 +607,8 @@
file = g_file_get_uri (file_data->file);
destination = g_file_get_uri (self->priv->destination);
- relative_uri = _g_uri_get_relative_path (file, destination);
- relative_path = g_uri_unescape_string (relative_uri, "");
- alt_attribute = _g_escape_for_html (relative_path, -1);
+ relative_path = _g_uri_get_relative_path (file, destination);
+ alt_attribute = _g_utf8_escape_xml (relative_path);
line = g_strdup_printf (" \n",
frame_rect->x,
@@ -586,7 +625,6 @@
g_free (line);
g_free (alt_attribute);
g_free (relative_path);
- g_free (relative_uri);
g_free (destination);
g_free (file);
}
@@ -1127,7 +1165,7 @@
gth_contact_sheet_creator_set_header (GthContactSheetCreator *self,
const char *value)
{
- _g_strset (&self->priv->header, value);
+ _g_str_set (&self->priv->header, value);
}
@@ -1135,7 +1173,7 @@
gth_contact_sheet_creator_set_footer (GthContactSheetCreator *self,
const char *value)
{
- _g_strset (&self->priv->footer, value);
+ _g_str_set (&self->priv->footer, value);
}
@@ -1152,10 +1190,10 @@
gth_contact_sheet_creator_set_filename_template (GthContactSheetCreator *self,
const char *filename_template)
{
- _g_strset (&self->priv->template, filename_template);
+ _g_str_set (&self->priv->template, filename_template);
if (self->priv->template_v != NULL)
g_strfreev (self->priv->template_v);
- self->priv->template_v = _g_get_template_from_text (self->priv->template);
+ self->priv->template_v = _g_utf8_split_template (self->priv->template);
}
@@ -1164,8 +1202,8 @@
const char *mime_type,
const char *file_extension)
{
- _g_strset (&self->priv->mime_type, mime_type);
- _g_strset (&self->priv->file_extension, file_extension);
+ _g_str_set (&self->priv->mime_type, mime_type);
+ _g_str_set (&self->priv->file_extension, file_extension);
}
@@ -1249,6 +1287,6 @@
gth_contact_sheet_creator_set_thumbnail_caption (GthContactSheetCreator *self,
const char *caption)
{
- _g_strset (&self->priv->thumbnail_caption, caption);
+ _g_str_set (&self->priv->thumbnail_caption, caption);
self->priv->thumbnail_caption_v = g_strsplit (self->priv->thumbnail_caption, ",", -1);
}
diff -Nru gthumb-3.8.3/extensions/contact_sheet/main.c gthumb-3.9.1/extensions/contact_sheet/main.c
--- gthumb-3.8.3/extensions/contact_sheet/main.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/contact_sheet/main.c 2020-03-07 19:03:13.410289800 +0000
@@ -29,7 +29,7 @@
G_MODULE_EXPORT void
gthumb_extension_activate (void)
{
- gth_hook_add_callback ("gth-browser-construct", 10, G_CALLBACK (cs__gth_browser_construct_cb), NULL);
+ gth_hook_add_callback ("gth-browser-construct", 60, G_CALLBACK (cs__gth_browser_construct_cb), NULL);
}
diff -Nru gthumb-3.8.3/extensions/convert_format/callbacks.c gthumb-3.9.1/extensions/convert_format/callbacks.c
--- gthumb-3.8.3/extensions/convert_format/callbacks.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/convert_format/callbacks.c 2020-03-07 19:03:13.413622900 +0000
@@ -55,12 +55,8 @@
void
-cf__gth_browser_update_sensitivity_cb (GthBrowser *browser)
+cf__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected)
{
- int n_selected;
- gboolean sensitive;
-
- n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
- sensitive = n_selected > 0;
- gth_window_enable_action (GTH_WINDOW (browser), "convert-format", sensitive);
+ gth_window_enable_action (GTH_WINDOW (browser), "convert-format", n_selected > 0);
}
diff -Nru gthumb-3.8.3/extensions/convert_format/callbacks.h gthumb-3.9.1/extensions/convert_format/callbacks.h
--- gthumb-3.8.3/extensions/convert_format/callbacks.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/convert_format/callbacks.h 2020-03-07 19:03:13.413622900 +0000
@@ -25,6 +25,7 @@
#include
void cf__gth_browser_construct_cb (GthBrowser *browser);
-void cf__gth_browser_update_sensitivity_cb (GthBrowser *browser);
+void cf__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected);
#endif /* CALLBACKS_H */
diff -Nru gthumb-3.8.3/extensions/convert_format/convert_format.extension.desktop.in.in gthumb-3.9.1/extensions/convert_format/convert_format.extension.desktop.in.in
--- gthumb-3.8.3/extensions/convert_format/convert_format.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/convert_format/convert_format.extension.desktop.in.in 2020-03-07 19:03:13.413622900 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Convert format
Comment=Save images in a different format
-Authors=gthumb development team
-Copyright=Copyright © 2010-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2010-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Category=List-Tool
diff -Nru gthumb-3.8.3/extensions/convert_format/main.c gthumb-3.9.1/extensions/convert_format/main.c
--- gthumb-3.8.3/extensions/convert_format/main.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/convert_format/main.c 2020-03-07 19:03:13.413622900 +0000
@@ -30,7 +30,7 @@
gthumb_extension_activate (void)
{
gth_hook_add_callback ("gth-browser-construct", 35, G_CALLBACK (cf__gth_browser_construct_cb), NULL);
- gth_hook_add_callback ("gth-browser-update-sensitivity", 10, G_CALLBACK (cf__gth_browser_update_sensitivity_cb), NULL);
+ gth_hook_add_callback ("gth-browser-selection-changed", 10, G_CALLBACK (cf__gth_browser_selection_changed_cb), NULL);
}
diff -Nru gthumb-3.8.3/extensions/desktop_background/actions.c gthumb-3.9.1/extensions/desktop_background/actions.c
--- gthumb-3.8.3/extensions/desktop_background/actions.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/desktop_background/actions.c 2020-03-07 19:03:13.413622900 +0000
@@ -212,7 +212,7 @@
task = g_task_new (NULL, cancellable, callback, user_data);
g_task_set_task_data (task, nw_data, (GDestroyNotify) new_wallpaper_data_free);
- g_directory_foreach_child (nw_data->folder,
+ _g_directory_foreach_child (nw_data->folder,
FALSE,
FALSE,
GFILE_NAME_TYPE_ATTRIBUTES,
diff -Nru gthumb-3.8.3/extensions/desktop_background/callbacks.c gthumb-3.9.1/extensions/desktop_background/callbacks.c
--- gthumb-3.8.3/extensions/desktop_background/callbacks.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/desktop_background/callbacks.c 2020-03-07 19:03:13.413622900 +0000
@@ -58,10 +58,8 @@
void
-db__gth_browser_update_sensitivity_cb (GthBrowser *browser)
+db__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected)
{
- int n_selected;
-
- n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
g_object_set (g_action_map_lookup_action (G_ACTION_MAP (browser), "set-desktop-background"), "enabled", n_selected == 1, NULL);
}
diff -Nru gthumb-3.8.3/extensions/desktop_background/callbacks.h gthumb-3.9.1/extensions/desktop_background/callbacks.h
--- gthumb-3.8.3/extensions/desktop_background/callbacks.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/desktop_background/callbacks.h 2020-03-07 19:03:13.413622900 +0000
@@ -25,6 +25,7 @@
#include
void db__gth_browser_construct_cb (GthBrowser *browser);
-void db__gth_browser_update_sensitivity_cb (GthBrowser *browser);
+void db__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected);
#endif /* CALLBACKS_H */
diff -Nru gthumb-3.8.3/extensions/desktop_background/desktop_background.extension.desktop.in.in gthumb-3.9.1/extensions/desktop_background/desktop_background.extension.desktop.in.in
--- gthumb-3.8.3/extensions/desktop_background/desktop_background.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/desktop_background/desktop_background.extension.desktop.in.in 2020-03-07 19:03:13.413622900 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Desktop background
Comment=Set the image as desktop background
-Authors=gthumb development team
-Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2009-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Icon=desktop
Category=List-Tool
diff -Nru gthumb-3.8.3/extensions/desktop_background/main.c gthumb-3.9.1/extensions/desktop_background/main.c
--- gthumb-3.8.3/extensions/desktop_background/main.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/desktop_background/main.c 2020-03-07 19:03:13.413622900 +0000
@@ -30,7 +30,7 @@
gthumb_extension_activate (void)
{
gth_hook_add_callback ("gth-browser-construct", 20, G_CALLBACK (db__gth_browser_construct_cb), NULL);
- gth_hook_add_callback ("gth-browser-update-sensitivity", 10, G_CALLBACK (db__gth_browser_update_sensitivity_cb), NULL);
+ gth_hook_add_callback ("gth-browser-selection-changed", 10, G_CALLBACK (db__gth_browser_selection_changed_cb), NULL);
}
diff -Nru gthumb-3.8.3/extensions/edit_metadata/callbacks.c gthumb-3.9.1/extensions/edit_metadata/callbacks.c
--- gthumb-3.8.3/extensions/edit_metadata/callbacks.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/edit_metadata/callbacks.c 2020-03-07 19:03:13.413622900 +0000
@@ -41,14 +41,20 @@
};
+static const GthShortcut shortcuts[] = {
+ { "edit-metadata", N_("Edit comment"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_FILE_MANAGER, "c" },
+ { "edit-tags", N_("Edit tags"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_FILE_MANAGER, "t" },
+};
+
+
static const GthMenuEntry tools_actions[] = {
{ N_("Delete Metadata"), "win.delete-metadata" }
};
static const GthMenuEntry file_list_actions[] = {
- { N_("Comment"), "win.edit-metadata", "C" },
- { N_("Tags"), "win.edit-tags", "T" }
+ { N_("Comment"), "win.edit-metadata" },
+ { N_("Tags"), "win.edit-tags" }
};
@@ -61,6 +67,9 @@
actions,
G_N_ELEMENTS (actions),
browser);
+ gth_window_add_shortcuts (GTH_WINDOW (browser),
+ shortcuts,
+ G_N_ELEMENTS (shortcuts));
if (gth_main_extension_is_active ("list_tools"))
gth_menu_manager_append_entries (gth_browser_get_menu_manager (browser, GTH_BROWSER_MENU_MANAGER_MORE_TOOLS),
@@ -74,13 +83,26 @@
G_N_ELEMENTS (file_list_actions));
gth_browser_add_header_bar_button (browser,
- GTH_BROWSER_HEADER_SECTION_VIEWER_EDIT,
+ GTH_BROWSER_HEADER_SECTION_VIEWER_EDIT_METADATA,
"comment-symbolic",
_("Comment"),
"win.edit-metadata",
NULL);
gth_browser_add_header_bar_button (browser,
- GTH_BROWSER_HEADER_SECTION_VIEWER_EDIT,
+ GTH_BROWSER_HEADER_SECTION_VIEWER_EDIT_METADATA,
+ "tag-symbolic",
+ _("Tags"),
+ "win.edit-tags",
+ NULL);
+
+ gth_browser_add_header_bar_button (browser,
+ GTH_BROWSER_HEADER_SECTION_BROWSER_METADATA_TOOLS,
+ "comment-symbolic",
+ _("Comment"),
+ "win.edit-metadata",
+ NULL);
+ gth_browser_add_header_bar_button (browser,
+ GTH_BROWSER_HEADER_SECTION_BROWSER_METADATA_TOOLS,
"tag-symbolic",
_("Tags"),
"win.edit-tags",
@@ -89,42 +111,13 @@
void
-edit_metadata__gth_browser_update_sensitivity_cb (GthBrowser *browser)
+edit_metadata__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected)
{
- int n_selected;
gboolean sensitive;
- n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
sensitive = (n_selected > 0);
-
g_object_set (g_action_map_lookup_action (G_ACTION_MAP (browser), "edit-metadata"), "enabled", sensitive, NULL);
g_object_set (g_action_map_lookup_action (G_ACTION_MAP (browser), "edit-tags"), "enabled", sensitive, NULL);
g_object_set (g_action_map_lookup_action (G_ACTION_MAP (browser), "delete-metadata"), "enabled", sensitive, NULL);
}
-
-
-gpointer
-edit_metadata__gth_browser_file_list_key_press_cb (GthBrowser *browser,
- GdkEventKey *event)
-{
- gpointer result = NULL;
- guint modifiers;
-
- modifiers = gtk_accelerator_get_default_mod_mask ();
- if ((event->state & modifiers) != 0)
- return NULL;
-
- switch (gdk_keyval_to_lower (event->keyval)) {
- case GDK_KEY_c:
- gth_browser_activate_edit_metadata (NULL, NULL, browser);
- result = GINT_TO_POINTER (1);
- break;
-
- case GDK_KEY_t:
- gth_browser_activate_edit_tags (NULL, NULL, browser);
- result = GINT_TO_POINTER (1);
- break;
- }
-
- return result;
-}
diff -Nru gthumb-3.8.3/extensions/edit_metadata/callbacks.h gthumb-3.9.1/extensions/edit_metadata/callbacks.h
--- gthumb-3.8.3/extensions/edit_metadata/callbacks.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/edit_metadata/callbacks.h 2020-03-07 19:03:13.413622900 +0000
@@ -25,8 +25,7 @@
#include
void edit_metadata__gth_browser_construct_cb (GthBrowser *browser);
-void edit_metadata__gth_browser_update_sensitivity_cb (GthBrowser *browser);
-gpointer edit_metadata__gth_browser_file_list_key_press_cb (GthBrowser *browser,
- GdkEventKey *event);
+void edit_metadata__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected);
#endif /* CALLBACKS_H */
diff -Nru gthumb-3.8.3/extensions/edit_metadata/dlg-edit-metadata.c gthumb-3.9.1/extensions/edit_metadata/dlg-edit-metadata.c
--- gthumb-3.8.3/extensions/edit_metadata/dlg-edit-metadata.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/edit_metadata/dlg-edit-metadata.c 2020-03-07 19:03:13.413622900 +0000
@@ -26,7 +26,7 @@
#include "gth-edit-metadata-dialog.h"
-#define UPDATE_SELECTION_DELAY 300
+#define UPDATE_SELECTION_DELAY 50
typedef struct {
@@ -137,6 +137,8 @@
if (data->close_dialog)
close_dialog (data);
+ else
+ gth_browser_show_next_image (data->browser, FALSE, FALSE);
dialog_data_unref (data);
_g_object_unref (task);
@@ -154,7 +156,7 @@
GList *scan;
GthTask *task;
- if ((response != GTK_RESPONSE_OK) && (response != GTK_RESPONSE_APPLY)) {
+ if (response != GTK_RESPONSE_OK) {
cancel_file_list_loading (data);
close_dialog (data);
return;
@@ -163,7 +165,7 @@
if (data->file_list == NULL)
return;
- data->close_dialog = (response == GTK_RESPONSE_OK);
+ data->close_dialog = ! gth_edit_metadata_dialog_get_keep_open (GTH_EDIT_METADATA_DIALOG (data->dialog));
/* get the parents list */
@@ -271,6 +273,8 @@
file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (data->browser)), items);
loader_data->files = gth_file_data_list_to_file_list (file_data_list);
+ gtk_dialog_set_response_sensitive (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, loader_data->files != NULL);
+
data->loader = gth_load_file_data_task_new (loader_data->files, "*");
g_signal_connect (data->loader,
"completed",
@@ -310,10 +314,20 @@
data = g_new0 (DialogData, 1);
data->ref = 1;
data->browser = browser;
- data->dialog = g_object_new (dialog_type, 0);
+ data->dialog = g_object_new (dialog_type,
+ "transient-for", GTK_WINDOW (browser),
+ "modal", FALSE,
+ "use-header-bar", _gtk_settings_get_dialogs_use_header (),
+ NULL);
data->dialog_name = g_strdup (dialog_name);
data->never_shown = TRUE;
+ gtk_dialog_add_buttons (GTK_DIALOG (data->dialog),
+ _GTK_LABEL_CLOSE, GTK_RESPONSE_CANCEL,
+ _GTK_LABEL_SAVE, GTK_RESPONSE_OK,
+ NULL);
+
+ _gtk_dialog_add_class_to_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, GTK_STYLE_CLASS_SUGGESTED_ACTION);
gth_browser_set_dialog (browser, data->dialog_name, data->dialog);
g_signal_connect (G_OBJECT (data->dialog),
diff -Nru gthumb-3.8.3/extensions/edit_metadata/edit_metadata.extension.desktop.in.in gthumb-3.9.1/extensions/edit_metadata/edit_metadata.extension.desktop.in.in
--- gthumb-3.8.3/extensions/edit_metadata/edit_metadata.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/edit_metadata/edit_metadata.extension.desktop.in.in 2020-03-07 19:03:13.413622900 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Edit metadata
Comment=Allow to edit files metadata.
-Authors=gthumb development team
-Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2009-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Category=Metadata
diff -Nru gthumb-3.8.3/extensions/edit_metadata/gth-edit-comment-dialog.c gthumb-3.9.1/extensions/edit_metadata/gth-edit-comment-dialog.c
--- gthumb-3.8.3/extensions/edit_metadata/gth-edit-comment-dialog.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/edit_metadata/gth-edit-comment-dialog.c 2020-03-07 19:03:13.413622900 +0000
@@ -28,6 +28,8 @@
struct _GthEditCommentDialogPrivate {
GtkWidget *notebook;
GtkWidget *save_changed_checkbutton;
+ GtkWidget *keep_open_check_button;
+ GtkWidget *info;
};
@@ -49,27 +51,14 @@
{
GthEditCommentDialog *self = GTH_EDIT_COMMENT_DIALOG (base);
int n_files;
- char *title;
GList *pages;
GList *scan;
- n_files = g_list_length (file_list);
-
- /* update the title */
-
- if (n_files == 1) {
- GthFileData *file_data = file_list->data;
-
- /* Translators: the %s symbol in the string is a file name */
- title = g_strdup_printf (_("%s Metadata"), g_file_info_get_display_name (file_data->info));
- }
- else
- title = g_strdup_printf (g_dngettext (NULL, "%d file", "%d files", n_files), n_files);
- gtk_window_set_title (GTK_WINDOW (self), title);
- g_free (title);
+ gth_file_selection_info_set_file_list (GTH_FILE_SELECTION_INFO (self->priv->info), file_list);
/* update the widgets */
+ n_files = g_list_length (file_list);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->priv->save_changed_checkbutton), n_files > 1);
gtk_widget_set_sensitive (self->priv->save_changed_checkbutton, n_files > 1);
@@ -112,11 +101,20 @@
}
+static gboolean
+gth_edit_comment_dialog_get_keep_open (GthEditMetadataDialog *base)
+{
+ GthEditCommentDialog *self = GTH_EDIT_COMMENT_DIALOG (base);
+ return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->priv->keep_open_check_button));
+}
+
+
static void
gth_edit_comment_dialog_gth_edit_metadata_dialog_interface_init (GthEditMetadataDialogInterface *iface)
{
iface->set_file_list = gth_edit_comment_dialog_set_file_list;
iface->update_info = gth_edit_comment_dialog_update_info;
+ iface->get_keep_open = gth_edit_comment_dialog_get_keep_open;
}
@@ -136,19 +134,20 @@
self->priv = gth_edit_comment_dialog_get_instance_private (self);
+ gtk_window_set_title (GTK_WINDOW (self), _("Comment"));
gtk_window_set_resizable (GTK_WINDOW (self), TRUE);
gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), 5);
gtk_container_set_border_width (GTK_CONTAINER (self), 5);
- gtk_dialog_add_button (GTK_DIALOG (self), _GTK_LABEL_CANCEL, GTK_RESPONSE_CANCEL);
- gtk_dialog_add_button (GTK_DIALOG (self), _GTK_LABEL_SAVE, GTK_RESPONSE_APPLY);
- gtk_dialog_add_button (GTK_DIALOG (self), _("Sa_ve and Close"), GTK_RESPONSE_OK);
-
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 0);
gtk_widget_show (vbox);
gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), vbox, TRUE, TRUE, 0);
+ self->priv->info = gth_file_selection_info_new ();
+ gtk_widget_show (self->priv->info);
+ gtk_box_pack_start (GTK_BOX (vbox), self->priv->info, FALSE, FALSE, 0);
+
self->priv->notebook = gtk_notebook_new ();
gtk_widget_show (self->priv->notebook);
gtk_box_pack_start (GTK_BOX (vbox), self->priv->notebook, TRUE, TRUE, 0);
@@ -157,6 +156,10 @@
gtk_widget_show (self->priv->save_changed_checkbutton);
gtk_box_pack_start (GTK_BOX (vbox), self->priv->save_changed_checkbutton, FALSE, FALSE, 0);
+ self->priv->keep_open_check_button = gtk_check_button_new_with_mnemonic (_("_Keep the dialog open"));
+ gtk_widget_show (self->priv->keep_open_check_button);
+ gtk_box_pack_start (GTK_BOX (vbox), self->priv->keep_open_check_button, FALSE, FALSE, 0);
+
pages = gth_main_get_type_set ("edit-comment-dialog-page");
if (pages == NULL)
return;
diff -Nru gthumb-3.8.3/extensions/edit_metadata/gth-edit-general-page.c gthumb-3.9.1/extensions/edit_metadata/gth-edit-general-page.c
--- gthumb-3.8.3/extensions/edit_metadata/gth-edit-general-page.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/edit_metadata/gth-edit-general-page.c 2020-03-07 19:03:13.413622900 +0000
@@ -523,17 +523,17 @@
tags_entry_list_collapsed_cb (GthTagsEntry *widget,
gpointer user_data)
{
- GtkWidget *toplevel;
+ GtkWindow *toplevel;
int width;
/* collapse the dialog height */
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (widget));
- if (! gtk_widget_is_toplevel (toplevel))
+ toplevel = _gtk_widget_get_toplevel_if_window (GTK_WIDGET (widget));
+ if (toplevel == NULL)
return;
- gtk_window_get_size (GTK_WINDOW (toplevel), &width, NULL);
- gtk_window_resize (GTK_WINDOW (toplevel), width, 1);
+ gtk_window_get_size (toplevel, &width, NULL);
+ gtk_window_resize (toplevel, width, 1);
}
diff -Nru gthumb-3.8.3/extensions/edit_metadata/gth-edit-metadata-dialog.c gthumb-3.9.1/extensions/edit_metadata/gth-edit-metadata-dialog.c
--- gthumb-3.8.3/extensions/edit_metadata/gth-edit-metadata-dialog.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/edit_metadata/gth-edit-metadata-dialog.c 2020-03-07 19:03:13.413622900 +0000
@@ -47,3 +47,10 @@
{
GTH_EDIT_METADATA_DIALOG_GET_INTERFACE (self)->update_info (self, file_list);
}
+
+
+gboolean
+gth_edit_metadata_dialog_get_keep_open (GthEditMetadataDialog *self)
+{
+ return GTH_EDIT_METADATA_DIALOG_GET_INTERFACE (self)->get_keep_open (self);
+}
diff -Nru gthumb-3.8.3/extensions/edit_metadata/gth-edit-metadata-dialog.h gthumb-3.9.1/extensions/edit_metadata/gth-edit-metadata-dialog.h
--- gthumb-3.8.3/extensions/edit_metadata/gth-edit-metadata-dialog.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/edit_metadata/gth-edit-metadata-dialog.h 2020-03-07 19:03:13.413622900 +0000
@@ -37,10 +37,11 @@
struct _GthEditMetadataDialogInterface {
GTypeInterface parent_iface;
- void (*set_file_list) (GthEditMetadataDialog *dialog,
- GList *file_list /* GthFileData list */);
- void (*update_info) (GthEditMetadataDialog *dialog,
- GList *file_list /* GthFileData list */);
+ void (*set_file_list) (GthEditMetadataDialog *dialog,
+ GList *file_list /* GthFileData list */);
+ void (*update_info) (GthEditMetadataDialog *dialog,
+ GList *file_list /* GthFileData list */);
+ gboolean (*get_keep_open) (GthEditMetadataDialog *dialog);
};
/* GthEditMetadataDialog */
@@ -50,6 +51,7 @@
GList *file_list /* GthFileData list */);
void gth_edit_metadata_dialog_update_info (GthEditMetadataDialog *dialog,
GList *file_list /* GthFileData list */);
+gboolean gth_edit_metadata_dialog_get_keep_open (GthEditMetadataDialog *dialog);
G_END_DECLS
diff -Nru gthumb-3.8.3/extensions/edit_metadata/gth-edit-tags-dialog.c gthumb-3.9.1/extensions/edit_metadata/gth-edit-tags-dialog.c
--- gthumb-3.8.3/extensions/edit_metadata/gth-edit-tags-dialog.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/edit_metadata/gth-edit-tags-dialog.c 2020-03-07 19:03:13.413622900 +0000
@@ -32,6 +32,8 @@
struct _GthEditTagsDialogPrivate {
GtkBuilder *builder;
GtkWidget *tags_entry;
+ GtkWidget *keep_open_check_button;
+ GtkWidget *info;
};
@@ -63,28 +65,12 @@
GList *file_list)
{
GthEditTagsDialog *self = GTH_EDIT_TAGS_DIALOG (base);
- int n_files;
- char *title;
GHashTable *common_tags;
GHashTable *no_common_tags;
GList *common_tags_list;
GList *no_common_tags_list;
- n_files = g_list_length (file_list);
-
- /* update the title */
-
- if (n_files == 1) {
- GthFileData *file_data = file_list->data;
-
- /* Translators: the %s symbol in the string is a file name */
- title = g_strdup_printf (_("%s Tags"), g_file_info_get_display_name (file_data->info));
- }
- else
- title = g_strdup_printf (g_dngettext (NULL, "%d file", "%d files", n_files), n_files);
- gtk_window_set_title (GTK_WINDOW (self), title);
-
- g_free (title);
+ gth_file_selection_info_set_file_list (GTH_FILE_SELECTION_INFO (self->priv->info), file_list);
/* update the tag entry */
@@ -161,11 +147,20 @@
}
+static gboolean
+gth_edit_tags_dialog_get_keep_open (GthEditMetadataDialog *base)
+{
+ GthEditTagsDialog *self = GTH_EDIT_TAGS_DIALOG (base);
+ return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->priv->keep_open_check_button));
+}
+
+
static void
gth_edit_tags_dialog_gth_edit_metadata_dialog_interface_init (GthEditMetadataDialogInterface *iface)
{
iface->set_file_list = gth_edit_tags_dialog_set_file_list;
iface->update_info = gth_edit_tags_dialog_update_info;
+ iface->get_keep_open = gth_edit_tags_dialog_get_keep_open;
}
@@ -182,24 +177,40 @@
static void
gth_edit_tags_dialog_init (GthEditTagsDialog *self)
{
+ GtkWidget *box;
+ GtkWidget *sep;
+
self->priv = gth_edit_tags_dialog_get_instance_private (self);
self->priv->builder = _gtk_builder_new_from_file ("tag-chooser.ui", "edit_metadata");
- gtk_window_set_title (GTK_WINDOW (self), _("Assign Tags"));
+ gtk_window_set_title (GTK_WINDOW (self), _("Tags"));
gtk_window_set_resizable (GTK_WINDOW (self), TRUE);
gtk_window_set_default_size (GTK_WINDOW (self), -1, 500);
gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), 5);
gtk_container_set_border_width (GTK_CONTAINER (self), 5);
- gtk_dialog_add_button (GTK_DIALOG (self), _GTK_LABEL_CANCEL, GTK_RESPONSE_CANCEL);
- gtk_dialog_add_button (GTK_DIALOG (self), _GTK_LABEL_SAVE, GTK_RESPONSE_APPLY);
- gtk_dialog_add_button (GTK_DIALOG (self), _("Sa_ve and Close"), GTK_RESPONSE_OK);
-
self->priv->tags_entry = gth_tags_entry_new (GTH_TAGS_ENTRY_MODE_INLINE);
gth_tags_entry_set_list_visible (GTH_TAGS_ENTRY (self->priv->tags_entry), TRUE);
+ gtk_widget_set_size_request (self->priv->tags_entry, 400, -1);
gtk_widget_show (self->priv->tags_entry);
gtk_box_pack_start (GTK_BOX (GET_WIDGET ("tag_entry_box")), self->priv->tags_entry, TRUE, TRUE, 0);
- gtk_container_set_border_width (GTK_CONTAINER (GET_WIDGET ("content")), 5);
- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), GET_WIDGET ("content"), TRUE, TRUE, 0);
+ box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
+
+ self->priv->info = gth_file_selection_info_new ();
+ gtk_widget_show (self->priv->info);
+ gtk_box_pack_start (GTK_BOX (box), self->priv->info, FALSE, FALSE, 0);
+
+ sep = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
+ gtk_widget_show (sep);
+ gtk_box_pack_start (GTK_BOX (box), sep, FALSE, FALSE, 0);
+
+ gtk_box_pack_start (GTK_BOX (box), GET_WIDGET ("content"), TRUE, TRUE, 0);
+
+ self->priv->keep_open_check_button = gtk_check_button_new_with_mnemonic (_("_Keep the dialog open"));
+ gtk_widget_show (self->priv->keep_open_check_button);
+ gtk_box_pack_start (GTK_BOX (box), self->priv->keep_open_check_button, FALSE, FALSE, 0);
+
+ gtk_widget_show (box);
+ gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), box, TRUE, TRUE, 0);
}
diff -Nru gthumb-3.8.3/extensions/edit_metadata/main.c gthumb-3.9.1/extensions/edit_metadata/main.c
--- gthumb-3.8.3/extensions/edit_metadata/main.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/edit_metadata/main.c 2020-03-07 19:03:13.413622900 +0000
@@ -41,8 +41,7 @@
gth_main_register_type ("edit-comment-dialog-page", GTH_TYPE_EDIT_GENERAL_PAGE);
gth_hook_add_callback ("gth-browser-construct", 7, G_CALLBACK (edit_metadata__gth_browser_construct_cb), NULL);
- gth_hook_add_callback ("gth-browser-update-sensitivity", 10, G_CALLBACK (edit_metadata__gth_browser_update_sensitivity_cb), NULL);
- gth_hook_add_callback ("gth-browser-file-list-key-press", 10, G_CALLBACK (edit_metadata__gth_browser_file_list_key_press_cb), NULL);
+ gth_hook_add_callback ("gth-browser-selection-changed", 10, G_CALLBACK (edit_metadata__gth_browser_selection_changed_cb), NULL);
}
diff -Nru gthumb-3.8.3/extensions/exiv2_tools/exiv2_tools.extension.desktop.in.in gthumb-3.9.1/extensions/exiv2_tools/exiv2_tools.extension.desktop.in.in
--- gthumb-3.8.3/extensions/exiv2_tools/exiv2_tools.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/exiv2_tools/exiv2_tools.extension.desktop.in.in 2020-03-07 19:03:13.413622900 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=EXIF, IPTC, XMP support
Comment=Read and write exif, iptc and xmp metadata.
-Authors=gthumb development team
-Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2009-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Category=Metadata
diff -Nru gthumb-3.8.3/extensions/exiv2_tools/exiv2-utils.cpp gthumb-3.9.1/extensions/exiv2_tools/exiv2-utils.cpp
--- gthumb-3.8.3/extensions/exiv2_tools/exiv2-utils.cpp 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/exiv2_tools/exiv2-utils.cpp 2020-03-07 19:03:13.413622900 +0000
@@ -216,14 +216,14 @@
inline static char *
exiv2_key_from_attribute (const char *attribute)
{
- return _g_replace (attribute, "::", ".");
+ return _g_utf8_replace_str (attribute, "::", ".");
}
inline static char *
exiv2_key_to_attribute (const char *key)
{
- return _g_replace (key, ".", "::");
+ return _g_utf8_replace_str (key, ".", "::");
}
@@ -274,11 +274,11 @@
formatted_value_utf8 = g_locale_to_utf8 (formatted_value, -1, NULL, NULL, NULL);
}
else if (_g_utf8_has_prefix (formatted_value_utf8, "lang=")) {
- int pos;
- char *formatted_clean;
+ const char *after_space;
+ char *formatted_clean;
- pos = _g_utf8_first_ascii_space (formatted_value_utf8);
- formatted_clean = _g_utf8_remove_prefix (formatted_value_utf8, pos + 1);
+ after_space = _g_utf8_after_ascii_space (formatted_value_utf8);
+ formatted_clean = g_strdup (after_space);
g_free (formatted_value_utf8);
formatted_value_utf8 = formatted_clean;
}
diff -Nru gthumb-3.8.3/extensions/exiv2_tools/meson.build gthumb-3.9.1/extensions/exiv2_tools/meson.build
--- gthumb-3.8.3/extensions/exiv2_tools/meson.build 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/exiv2_tools/meson.build 2020-03-07 19:03:13.413622900 +0000
@@ -10,6 +10,7 @@
dependencies : [ extension_common_deps, exiv2_dep ],
include_directories : [ config_inc, gthumb_inc ],
c_args : c_args,
+ cpp_args : cpp_args,
link_with : [ edit_metadata_mod ],
install : true,
install_dir : extensions_install_dir,
diff -Nru gthumb-3.8.3/extensions/export_tools/callbacks.c gthumb-3.9.1/extensions/export_tools/callbacks.c
--- gthumb-3.8.3/extensions/export_tools/callbacks.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/export_tools/callbacks.c 2020-03-07 19:03:13.416956200 +0000
@@ -32,20 +32,16 @@
export_tools__gth_browser_construct_cb (GthBrowser *browser)
{
GtkBuilder *builder;
- GMenuModel *menu;
- GtkWidget *button;
+ GMenuModel *export_menu;
+ GMenu *other_actions;
g_return_if_fail (GTH_IS_BROWSER (browser));
builder = gtk_builder_new_from_resource ("/org/gnome/gThumb/export_tools/data/ui/export-menu.ui");
gth_browser_add_menu_manager_for_menu (browser, GTH_BROWSER_MENU_MANAGER_WEB_EXPORTERS, G_MENU (gtk_builder_get_object (builder, "web-exporters")));
gth_browser_add_menu_manager_for_menu (browser, GTH_BROWSER_MENU_MANAGER_OTHER_EXPORTERS, G_MENU (gtk_builder_get_object (builder, "other-exporters")));
- menu = G_MENU_MODEL (gtk_builder_get_object (builder, "export-menu"));
+ export_menu = G_MENU_MODEL (gtk_builder_get_object (builder, "export-menu"));
- button = _gtk_menu_button_new_for_header_bar ("export-symbolic");
- gtk_widget_set_tooltip_text (button, _("Export"));
- gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), menu);
- gtk_widget_set_halign (GTK_WIDGET (gtk_menu_button_get_popup (GTK_MENU_BUTTON (button))), GTK_ALIGN_CENTER);
- gtk_widget_show (button);
- gtk_box_pack_start (GTK_BOX (gth_browser_get_headerbar_section (browser, GTH_BROWSER_HEADER_SECTION_BROWSER_TOOLS)), button, FALSE, FALSE, 0);
+ other_actions = gth_menu_manager_get_menu (gth_browser_get_menu_manager (browser, GTH_BROWSER_MENU_MANAGER_GEARS_OTHER_ACTIONS));
+ g_menu_append_submenu (other_actions, _("_Export To"), export_menu);
}
diff -Nru gthumb-3.8.3/extensions/facebook/facebook-album.c gthumb-3.9.1/extensions/facebook/facebook-album.c
--- gthumb-3.8.3/extensions/facebook/facebook-album.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/facebook/facebook-album.c 2020-03-07 19:03:13.416956200 +0000
@@ -70,19 +70,19 @@
switch (property_id) {
case PROP_ID:
- _g_strset (&self->id, g_value_get_string (value));
+ _g_str_set (&self->id, g_value_get_string (value));
break;
case PROP_NAME:
- _g_strset (&self->name, g_value_get_string (value));
+ _g_str_set (&self->name, g_value_get_string (value));
break;
case PROP_DESCRIPTION:
- _g_strset (&self->description, g_value_get_string (value));
+ _g_str_set (&self->description, g_value_get_string (value));
break;
case PROP_LINK:
- _g_strset (&self->link, g_value_get_string (value));
+ _g_str_set (&self->link, g_value_get_string (value));
break;
case PROP_PRIVACY:
- _g_strset (&self->privacy, g_value_get_string (value));
+ _g_str_set (&self->privacy, g_value_get_string (value));
break;
case PROP_COUNT:
self->count = g_value_get_int (value);
diff -Nru gthumb-3.8.3/extensions/facebook/facebook.extension.desktop.in.in gthumb-3.9.1/extensions/facebook/facebook.extension.desktop.in.in
--- gthumb-3.8.3/extensions/facebook/facebook.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/facebook/facebook.extension.desktop.in.in 2020-03-07 19:03:13.416956200 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Facebook
Comment=Upload images to Facebook
-Authors=gthumb development team
-Copyright=Copyright © 2010-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2010-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Category=Exporter
diff -Nru gthumb-3.8.3/extensions/facebook/facebook-photo.c gthumb-3.9.1/extensions/facebook/facebook-photo.c
--- gthumb-3.8.3/extensions/facebook/facebook-photo.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/facebook/facebook-photo.c 2020-03-07 19:03:13.416956200 +0000
@@ -74,7 +74,7 @@
FacebookImage *dest;
dest = facebook_image_new ();
- _g_strset (&dest->source, source->source);
+ _g_str_set (&dest->source, source->source);
dest->width = source->width;
dest->height = source->height;
@@ -131,13 +131,13 @@
switch (property_id) {
case PROP_ID:
- _g_strset (&self->id, g_value_get_string (value));
+ _g_str_set (&self->id, g_value_get_string (value));
break;
case PROP_PICTURE:
- _g_strset (&self->picture, g_value_get_string (value));
+ _g_str_set (&self->picture, g_value_get_string (value));
break;
case PROP_SOURCE:
- _g_strset (&self->source, g_value_get_string (value));
+ _g_str_set (&self->source, g_value_get_string (value));
break;
case PROP_WIDTH:
self->width = g_value_get_int (value);
@@ -146,7 +146,7 @@
self->height = g_value_get_int (value);
break;
case PROP_LINK:
- _g_strset (&self->link, g_value_get_string (value));
+ _g_str_set (&self->link, g_value_get_string (value));
break;
case PROP_CREATED_TIME:
gth_datetime_free (self->created_time);
@@ -353,7 +353,7 @@
FacebookImage *image;
image = facebook_image_new ();
- _g_strset (&image->source, json_object_get_string_member (image_obj, "source"));
+ _g_str_set (&image->source, json_object_get_string_member (image_obj, "source"));
image->width = json_object_get_int_member (image_obj, "width");
image->height = json_object_get_int_member (image_obj, "height");
diff -Nru gthumb-3.8.3/extensions/facebook/facebook-service.c gthumb-3.9.1/extensions/facebook/facebook-service.c
--- gthumb-3.8.3/extensions/facebook/facebook-service.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/facebook/facebook-service.c 2020-03-07 19:03:13.416956200 +0000
@@ -111,7 +111,7 @@
_facebook_service_set_access_token (FacebookService *self,
const char *token)
{
- _g_strset (&self->priv->token, token);
+ _g_str_set (&self->priv->token, token);
}
@@ -753,6 +753,7 @@
GthFileData *file_data;
SoupMultipart *multipart;
char *uri;
+ char *basename;
SoupBuffer *body;
SoupMessage *msg;
@@ -830,8 +831,10 @@
cairo_surface_t *scaled;
scaled = _cairo_image_surface_scale (surface, width, height, SCALE_FILTER_BEST, NULL);
- cairo_surface_destroy (surface);
- surface = scaled;
+ if (scaled != NULL) {
+ cairo_surface_destroy (surface);
+ surface = scaled;
+ }
}
g_free (*buffer);
@@ -858,14 +861,16 @@
}
uri = g_file_get_uri (file_data->file);
+ basename = _g_uri_get_basename (uri);
body = soup_buffer_new (SOUP_MEMORY_TEMPORARY, *buffer, count);
soup_multipart_append_form_file (multipart,
"source",
- _g_uri_get_basename (uri),
+ basename,
gth_file_data_get_mime_type (file_data),
body);
soup_buffer_free (body);
+ g_free (basename);
g_free (uri);
/* send the file */
diff -Nru gthumb-3.8.3/extensions/file_manager/actions.c gthumb-3.9.1/extensions/file_manager/actions.c
--- gthumb-3.8.3/extensions/file_manager/actions.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_manager/actions.c 2020-03-07 19:03:13.416956200 +0000
@@ -370,14 +370,15 @@
GtkSelectionData *selection_data,
gpointer user_data)
{
- PasteData *paste_data = user_data;
- GthBrowser *browser = paste_data->browser;
- const char *raw_data;
- char **clipboard_data;
- int i;
- GtkTreePath *path;
- int position;
- GthTask *task;
+ PasteData *paste_data = user_data;
+ GthBrowser *browser = paste_data->browser;
+ const char *raw_data;
+ char **clipboard_data;
+ int i;
+ GdkDragAction actions;
+ GtkTreePath *path;
+ int position;
+ GthTask *task;
raw_data = (const char *) gtk_selection_data_get_data (selection_data);
if (raw_data == NULL) {
@@ -400,7 +401,19 @@
paste_data->files = g_list_reverse (paste_data->files);
paste_data->file_source = gth_main_get_file_source (paste_data->destination->file);
- if (paste_data->cut && ! gth_file_source_can_cut (paste_data->file_source, paste_data->files->data)) {
+ actions = gth_file_source_get_drop_actions (paste_data->file_source,
+ paste_data->destination->file,
+ G_FILE (paste_data->files->data));
+ if (actions == 0) {
+ _gtk_error_dialog_run (GTK_WINDOW (browser),
+ "%s",
+ _("Could not perform the operation"));
+ g_strfreev (clipboard_data);
+ paste_data_free (paste_data);
+ return;
+ }
+
+ if (paste_data->cut && ((actions & GDK_ACTION_MOVE) == 0)) {
GtkWidget *dialog;
int response;
@@ -416,6 +429,7 @@
gtk_widget_destroy (dialog);
if (response == GTK_RESPONSE_CANCEL) {
+ g_strfreev (clipboard_data);
paste_data_free (paste_data);
return;
}
@@ -442,6 +456,7 @@
gth_browser_exec_task (browser, task, GTH_TASK_FLAGS_DEFAULT);
g_object_unref (task);
+ g_strfreev (clipboard_data);
paste_data_free (paste_data);
}
@@ -528,6 +543,70 @@
}
+static void
+remove_from_source (GthBrowser *browser,
+ gboolean permanently)
+{
+ GthFileSource *source;
+ GthFileData *location;
+ GList *items;
+ GList *file_data_list;
+
+ if (permanently) {
+ /* Use the VFS file source to delete the files from the
+ * disk. */
+
+ source = gth_main_get_file_source_for_uri ("file:///");
+ location = NULL;
+ }
+ else {
+ /* Removes the files from the current location,
+ * for example: when viewing a catalog removes
+ * the files from the catalog; when viewing a
+ * folder removes the files from the folder. */
+
+ source = _g_object_ref (gth_browser_get_location_source (browser));
+ location = gth_browser_get_location_data (browser);
+ }
+
+ if (source == NULL)
+ return;
+
+ items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
+ if (items == NULL)
+ return;
+
+ file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items);
+ gth_file_source_remove (source,
+ location,
+ file_data_list,
+ permanently,
+ GTK_WINDOW (browser));
+
+ _g_object_list_unref (file_data_list);
+ _gtk_tree_path_list_free (items);
+ _g_object_unref (source);
+}
+
+
+void
+gth_browser_activate_remove_from_source (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ remove_from_source (GTH_BROWSER (user_data), FALSE);
+}
+
+
+void
+gth_browser_activate_remove_from_source_permanently (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ remove_from_source (GTH_BROWSER (user_data), TRUE);
+}
+
+
void
gth_browser_activate_rename (GSimpleAction *action,
GVariant *parameter,
@@ -669,7 +748,7 @@
start_uri = g_settings_get_string (settings, PREF_FILE_MANAGER_COPY_LAST_FOLDER);
if ((start_uri == NULL) || (strcmp (start_uri, "") == 0)) {
g_free (start_uri);
- start_uri = g_strdup (get_home_uri ());
+ start_uri = g_strdup (_g_uri_get_home ());
}
gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (dialog), start_uri);
g_free(start_uri);
@@ -978,3 +1057,27 @@
{
copy_folder_to_folder (GTH_BROWSER (user_data), TRUE);
}
+
+
+void
+gth_browser_activate_open_with_gimp (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GList *items;
+ GList *file_data_list;
+ GList *file_list;
+
+ items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
+ if (items == NULL)
+ return;
+
+ file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items);
+ file_list = gth_file_data_list_to_file_list (file_data_list);
+ _g_launch_command (GTK_WIDGET (browser), "gimp %U", "Gimp", G_APP_INFO_CREATE_SUPPORTS_URIS, file_list);
+
+ _g_object_list_unref (file_list);
+ _g_object_list_unref (file_data_list);
+ _gtk_tree_path_list_free (items);
+}
diff -Nru gthumb-3.8.3/extensions/file_manager/actions.h gthumb-3.9.1/extensions/file_manager/actions.h
--- gthumb-3.8.3/extensions/file_manager/actions.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_manager/actions.h 2020-03-07 19:03:13.416956200 +0000
@@ -31,6 +31,8 @@
DEF_ACTION_CALLBACK (gth_browser_activate_duplicate)
DEF_ACTION_CALLBACK (gth_browser_activate_trash)
DEF_ACTION_CALLBACK (gth_browser_activate_delete)
+DEF_ACTION_CALLBACK (gth_browser_activate_remove_from_source)
+DEF_ACTION_CALLBACK (gth_browser_activate_remove_from_source_permanently)
DEF_ACTION_CALLBACK (gth_browser_activate_rename)
DEF_ACTION_CALLBACK (gth_browser_activate_file_list_rename)
DEF_ACTION_CALLBACK (gth_browser_activate_copy_to_folder)
@@ -47,6 +49,7 @@
DEF_ACTION_CALLBACK (gth_browser_activate_folder_context_copy_to)
DEF_ACTION_CALLBACK (gth_browser_activate_folder_context_move_to)
+DEF_ACTION_CALLBACK (gth_browser_activate_open_with_gimp)
DEF_ACTION_CALLBACK (gth_browser_activate_open_with_application)
#endif /* ACTIONS_H */
diff -Nru gthumb-3.8.3/extensions/file_manager/callbacks.c gthumb-3.9.1/extensions/file_manager/callbacks.c
--- gthumb-3.8.3/extensions/file_manager/callbacks.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_manager/callbacks.c 2020-03-07 19:03:13.416956200 +0000
@@ -46,6 +46,8 @@
{ "edit-paste", gth_browser_activate_edit_paste },
{ "trash", gth_browser_activate_trash },
{ "delete", gth_browser_activate_delete },
+ { "remove-from-source", gth_browser_activate_remove_from_source },
+ { "remove-from-source-permanently", gth_browser_activate_remove_from_source_permanently },
{ "rename", gth_browser_activate_rename },
{ "file-list-rename", gth_browser_activate_file_list_rename },
{ "duplicate", gth_browser_activate_duplicate },
@@ -62,21 +64,22 @@
{ "folder-context-move-to", gth_browser_activate_folder_context_move_to },
{ "folder-context-trash", gth_browser_activate_folder_context_trash },
{ "folder-context-delete", gth_browser_activate_folder_context_delete },
+ { "open-with-gimp", gth_browser_activate_open_with_gimp },
{ "open-with-application", gth_browser_activate_open_with_application, "i" }
};
static const GthMenuEntry fixed_menu_entries_edit[] = {
- { N_("Cut"), "win.edit-cut", "x" },
- { N_("Copy"), "win.edit-copy", "c" },
- { N_("Paste"), "win.edit-paste", "v" },
+ { N_("Cut"), "win.edit-cut" },
+ { N_("Copy"), "win.edit-copy" },
+ { N_("Paste"), "win.edit-paste" },
};
static const GthMenuEntry fixed_menu_entries_file[] = {
{ N_("Copy to…"), "win.copy-to-folder" },
{ N_("Move to…"), "win.move-to-folder" },
- { N_("Rename"), "win.file-list-rename", "F2" },
+ { N_("Rename"), "win.file-list-rename" },
};
@@ -112,16 +115,19 @@
static const GthMenuEntry vfs_entries[] = {
- { N_("Duplicate"), "win.duplicate", "d" }
+ { N_("Duplicate"), "win.duplicate" }
};
-static const GthAccelerator accelerators[] = {
- { "win.rename", "F2" },
- { "win.edit-cut", "x" },
- { "win.edit-copy", "c" },
- { "win.edit-paste", "v" },
- { "win.duplicate", "d" },
+static const GthShortcut shortcuts[] = {
+ { "edit-cut", N_("Cut"), GTH_SHORTCUT_CONTEXT_BROWSER | GTH_SHORTCUT_CONTEXT_FIXED, GTH_SHORTCUT_CATEGORY_FILE_MANAGER, "x" },
+ { "edit-copy", N_("Copy"), GTH_SHORTCUT_CONTEXT_BROWSER | GTH_SHORTCUT_CONTEXT_FIXED, GTH_SHORTCUT_CATEGORY_FILE_MANAGER, "c" },
+ { "edit-paste", N_("Paste"), GTH_SHORTCUT_CONTEXT_BROWSER | GTH_SHORTCUT_CONTEXT_FIXED, GTH_SHORTCUT_CATEGORY_FILE_MANAGER, "v" },
+ { "rename", N_("Rename"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_FILE_MANAGER, "F2" },
+ { "duplicate", N_("Duplicate"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_FILE_MANAGER, "d" },
+ { "remove-from-source", N_("Delete"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_FILE_MANAGER, "Delete" },
+ { "remove-from-source-permanently", N_("Delete permanently"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_FILE_MANAGER, "Delete" },
+ { "open-with-gimp", N_("Open with Gimp"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_FILE_MANAGER, "g" },
};
@@ -261,7 +267,7 @@
file_source = gth_browser_get_location_source (browser);
move = gdk_drag_context_get_selected_action (context) == GDK_ACTION_MOVE;
- if (move && ! gth_file_source_can_cut (file_source, (GFile *) selected_files->data)) {
+ if (move && ! gth_file_source_can_cut (file_source)) {
GtkWidget *dialog;
int response;
@@ -706,9 +712,9 @@
gth_menu_manager_append_entries (gth_browser_get_menu_manager (browser, GTH_BROWSER_MENU_MANAGER_FILE_FILE_ACTIONS),
fixed_menu_entries_delete,
G_N_ELEMENTS (fixed_menu_entries_delete));
- gth_window_add_accelerators (GTH_WINDOW (browser),
- accelerators,
- G_N_ELEMENTS (accelerators));
+ gth_window_add_shortcuts (GTH_WINDOW (browser),
+ shortcuts,
+ G_N_ELEMENTS (shortcuts));
gth_browser_add_header_bar_button (browser,
GTH_BROWSER_HEADER_SECTION_BROWSER_LOCATIONS,
@@ -809,8 +815,7 @@
void
fm__gth_browser_load_location_after_cb (GthBrowser *browser,
- GthFileData *location_data,
- const GError *error)
+ GthFileData *location_data)
{
BrowserData *data;
GtkWidget *file_list;
@@ -820,9 +825,6 @@
int n_source_targets;
GdkDragAction source_actions;
- if ((location_data == NULL) || (error != NULL))
- return;
-
data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY);
file_manager_update_ui (data, browser);
@@ -945,86 +947,101 @@
GList *file_list,
GdkDragAction action)
{
- GthFileSource *file_source;
+ int n_files;
+ GthFileSource *destination_source;
+ GFile *first_file;
+ GthFileSource *file_list_source;
+ gboolean move_files;
GtkWidget *dialog;
GthTask *task;
+ char *message;
int response;
if (destination == NULL)
return;
- file_source = gth_main_get_file_source (destination->file);
- if (file_source == NULL)
+ n_files = g_list_length (file_list);
+ if (n_files == 0)
+ return;
+
+ if ((action != GDK_ACTION_MOVE) && (action != GDK_ACTION_COPY))
+ return;
+
+ destination_source = gth_main_get_file_source (destination->file);
+ if (destination_source == NULL)
+ return;
+
+ first_file = G_FILE (file_list->data);
+ file_list_source = gth_main_get_file_source (first_file);
+ if (file_list_source == NULL)
+ return;
+
+ if (action == GDK_ACTION_MOVE)
+ action |= GDK_ACTION_COPY;
+
+ action = action & gth_file_source_get_drop_actions (destination_source, destination->file, first_file);
+ if (action == 0) {
+ _gtk_error_dialog_run (GTK_WINDOW (browser),
+ "%s",
+ _("Could not perform the operation"));
return;
+ }
+
+ move_files = (action & GDK_ACTION_MOVE) != 0;
/* ask confirmation */
response = GTK_RESPONSE_OK;
- if ((action == GDK_ACTION_MOVE) || (action == GDK_ACTION_COPY)) {
- int n_files;
- char *message;
-
- n_files = g_list_length (file_list);
- g_return_if_fail (n_files >= 1);
-
- if (n_files == 1) {
- char *filename = _g_file_get_display_name ((GFile *) file_list->data);
- if (action == GDK_ACTION_MOVE)
- message = g_strdup_printf (_("Do you want to move “%s” to “%s”?"), filename, g_file_info_get_display_name (destination->info));
- else
- message = g_strdup_printf (_("Do you want to copy “%s” to “%s”?"), filename, g_file_info_get_display_name (destination->info));
- g_free (filename);
- }
- else {
- if (action == GDK_ACTION_MOVE)
- message = g_strdup_printf (_("Do you want to move the dragged files to “%s”?"), g_file_info_get_display_name (destination->info));
- else
- message = g_strdup_printf (_("Do you want to copy the dragged files to “%s”?"), g_file_info_get_display_name (destination->info));
- }
- dialog = _gtk_message_dialog_new (GTK_WINDOW (browser),
- GTK_DIALOG_MODAL,
- _GTK_ICON_NAME_DIALOG_QUESTION,
- message,
- NULL,
- _GTK_LABEL_CANCEL, GTK_RESPONSE_CANCEL,
- ((action == GDK_ACTION_MOVE) ? _("Move") : _("_Copy")), GTK_RESPONSE_OK,
- NULL);
- response = gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
+ if (n_files == 1) {
+ GFileInfo *info;
+ char *filename;
+
+ info = gth_file_source_get_file_info (file_list_source, first_file, G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME);
+ if (info != NULL)
+ filename = g_strdup (g_file_info_get_display_name (info));
+ else
+ filename = _g_file_get_display_name (first_file);
+
+ if (move_files)
+ message = g_strdup_printf (_("Do you want to move “%s” to “%s”?"), filename, g_file_info_get_display_name (destination->info));
+ else
+ message = g_strdup_printf (_("Do you want to copy “%s” to “%s”?"), filename, g_file_info_get_display_name (destination->info));
- g_free (message);
+ g_free (filename);
+ _g_object_unref (info);
+ }
+ else {
+ if (move_files)
+ message = g_strdup_printf (_("Do you want to move the dragged files to “%s”?"), g_file_info_get_display_name (destination->info));
+ else
+ message = g_strdup_printf (_("Do you want to copy the dragged files to “%s”?"), g_file_info_get_display_name (destination->info));
}
+ dialog = _gtk_message_dialog_new (GTK_WINDOW (browser),
+ GTK_DIALOG_MODAL,
+ _GTK_ICON_NAME_DIALOG_QUESTION,
+ message,
+ NULL,
+ _GTK_LABEL_CANCEL, GTK_RESPONSE_CANCEL,
+ (move_files ? _("Move") : _("_Copy")), GTK_RESPONSE_OK,
+ NULL);
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+ g_free (message);
if (response != GTK_RESPONSE_OK)
return;
- if ((action == GDK_ACTION_MOVE) && ! gth_file_source_can_cut (file_source, (GFile *) file_list->data)) {
- dialog = _gtk_message_dialog_new (GTK_WINDOW (browser),
- GTK_DIALOG_MODAL,
- _GTK_ICON_NAME_DIALOG_QUESTION,
- _("Could not move the files"),
- _("Files cannot be moved to the current location, as alternative you can choose to copy them."),
- _GTK_LABEL_CANCEL, GTK_RESPONSE_CANCEL,
- _GTK_LABEL_COPY, GTK_RESPONSE_OK,
- NULL);
- response = gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
-
- if (response == GTK_RESPONSE_CANCEL)
- return;
+ /* exec task */
- action = GDK_ACTION_COPY;
- }
-
- task = gth_copy_task_new (file_source,
+ task = gth_copy_task_new (destination_source,
destination,
- (action == GDK_ACTION_MOVE),
+ move_files,
file_list,
-1);
gth_browser_exec_task (browser, task, GTH_TASK_FLAGS_DEFAULT);
g_object_unref (task);
- g_object_unref (file_source);
+ g_object_unref (destination_source);
}
@@ -1089,7 +1106,6 @@
BrowserData *data;
GthFileSource *file_source;
int n_selected;
- GthFileData *location_data;
gboolean sensitive;
GthFileData *folder;
@@ -1099,8 +1115,7 @@
file_source = gth_browser_get_location_source (browser);
n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
- location_data = gth_browser_get_location_data (browser);
- sensitive = (n_selected > 0) && (file_source != NULL) && (location_data != NULL) && gth_file_source_can_cut (file_source, location_data->file);
+ sensitive = (n_selected > 0) && (file_source != NULL) && gth_file_source_can_cut (file_source);
gth_window_enable_action (GTH_WINDOW (browser), "edit-cut", sensitive);
sensitive = (n_selected > 0) && (file_source != NULL);
@@ -1157,80 +1172,3 @@
G_CALLBACK (clipboard_owner_change_cb),
browser);
}
-
-
-gpointer
-fm__gth_browser_file_list_key_press_cb (GthBrowser *browser,
- GdkEventKey *event)
-{
- gpointer result = NULL;
- guint modifiers;
- GList *items;
- GList *file_data_list;
- GList *file_list;
-
- modifiers = gtk_accelerator_get_default_mod_mask ();
-
- switch (event->keyval) {
- case GDK_KEY_g:
- if ((event->state & modifiers) == 0) {
- items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
- file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items);
- file_list = gth_file_data_list_to_file_list (file_data_list);
- _g_launch_command (GTK_WIDGET (browser), "gimp %U", "Gimp", file_list);
-
- _g_object_list_unref (file_list);
- _g_object_list_unref (file_data_list);
- _gtk_tree_path_list_free (items);
- result = GINT_TO_POINTER (1);
- }
- break;
-
- case GDK_KEY_Delete:
- if (((event->state & modifiers) == 0)
- || ((event->state & modifiers) == GDK_SHIFT_MASK)
- || ((event->state & modifiers) == GDK_CONTROL_MASK))
- {
- GthFileSource *source;
- GthFileData *location;
-
- if ((event->state & modifiers) == 0) {
- /* Removes the files from the current location,
- * for example: when viewing a catalog removes
- * the files from the catalog; when viewing a
- * folder removes the files from the folder. */
- source = _g_object_ref (gth_browser_get_location_source (browser));
- location = gth_browser_get_location_data (browser);
- }
- else {
- /* When a key modifier is active, use the VFS
- * file source to delete the files from the
- * disk. */
- source = gth_main_get_file_source_for_uri ("file:///");
- location = NULL;
- }
-
- if (source == NULL)
- return result;
-
- items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
- if (items == NULL)
- return result;
-
- file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items);
- gth_file_source_remove (source,
- location,
- file_data_list,
- (event->state & modifiers) == GDK_SHIFT_MASK,
- GTK_WINDOW (browser));
- result = GINT_TO_POINTER (1);
-
- _g_object_list_unref (file_data_list);
- _gtk_tree_path_list_free (items);
- _g_object_unref (source);
- }
- break;
- }
-
- return result;
-}
diff -Nru gthumb-3.8.3/extensions/file_manager/callbacks.h gthumb-3.9.1/extensions/file_manager/callbacks.h
--- gthumb-3.8.3/extensions/file_manager/callbacks.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_manager/callbacks.h 2020-03-07 19:03:13.416956200 +0000
@@ -28,8 +28,7 @@
void fm__gth_browser_update_sensitivity_cb (GthBrowser *browser);
void fm__gth_browser_set_current_page_cb (GthBrowser *browser);
void fm__gth_browser_load_location_after_cb (GthBrowser *browser,
- GthFileData *location_data,
- const GError *error);
+ GthFileData *location_data);
void fm__gth_browser_folder_tree_popup_before_cb (GthBrowser *browser,
GthFileSource *file_source,
GthFileData *folder);
@@ -40,7 +39,5 @@
void fm__gth_browser_folder_tree_selection_changed_cb (GthBrowser *browser);
void fm__gth_browser_realize_cb (GthBrowser *browser);
void fm__gth_browser_unrealize_cb (GthBrowser *browser);
-gpointer fm__gth_browser_file_list_key_press_cb (GthBrowser *browser,
- GdkEventKey *event);
#endif /* CALLBACKS_H */
diff -Nru gthumb-3.8.3/extensions/file_manager/file_manager.extension.desktop.in.in gthumb-3.9.1/extensions/file_manager/file_manager.extension.desktop.in.in
--- gthumb-3.8.3/extensions/file_manager/file_manager.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_manager/file_manager.extension.desktop.in.in 2020-03-07 19:03:13.416956200 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=File manager
Comment=File manager operations.
-Authors=gthumb development team
-Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2009-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Icon=system-file-manager
Category=Browser
diff -Nru gthumb-3.8.3/extensions/file_manager/gth-duplicate-task.c gthumb-3.9.1/extensions/file_manager/gth-duplicate-task.c
--- gthumb-3.8.3/extensions/file_manager/gth-duplicate-task.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_manager/gth-duplicate-task.c 2020-03-07 19:03:13.416956200 +0000
@@ -122,19 +122,19 @@
g_object_unref (tmp);
}
- _g_copy_file_async (file_data,
- self->priv->destination,
- FALSE,
- GTH_FILE_COPY_ALL_METADATA,
- GTH_OVERWRITE_RESPONSE_ALWAYS_NO,
- G_PRIORITY_DEFAULT,
- gth_task_get_cancellable (GTH_TASK (self)),
- copy_progress_cb,
- self,
- copy_dialog_cb,
- self,
- copy_ready_cb,
- self);
+ _gth_file_data_copy_async (file_data,
+ self->priv->destination,
+ FALSE,
+ GTH_FILE_COPY_ALL_METADATA,
+ GTH_OVERWRITE_RESPONSE_ALWAYS_NO,
+ G_PRIORITY_DEFAULT,
+ gth_task_get_cancellable (GTH_TASK (self)),
+ copy_progress_cb,
+ self,
+ copy_dialog_cb,
+ self,
+ copy_ready_cb,
+ self);
}
diff -Nru gthumb-3.8.3/extensions/file_manager/main.c gthumb-3.9.1/extensions/file_manager/main.c
--- gthumb-3.8.3/extensions/file_manager/main.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_manager/main.c 2020-03-07 19:03:13.416956200 +0000
@@ -44,7 +44,6 @@
gth_hook_add_callback ("gth-browser-update-sensitivity", 10, G_CALLBACK (fm__gth_browser_update_sensitivity_cb), NULL);
gth_hook_add_callback ("gth-browser-realize", 10, G_CALLBACK (fm__gth_browser_realize_cb), NULL);
gth_hook_add_callback ("gth-browser-unrealize", 10, G_CALLBACK (fm__gth_browser_unrealize_cb), NULL);
- gth_hook_add_callback ("gth-browser-file-list-key-press", 10, G_CALLBACK (fm__gth_browser_file_list_key_press_cb), NULL);
}
diff -Nru gthumb-3.8.3/extensions/file_tools/actions.c gthumb-3.9.1/extensions/file_tools/actions.c
--- gthumb-3.8.3/extensions/file_tools/actions.c 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/extensions/file_tools/actions.c 2020-03-07 19:03:13.416956200 +0000
@@ -0,0 +1,130 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * GThumb
+ *
+ * Copyright (C) 2019 Free Software Foundation, Inc.
+ *
+ * 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, see .
+ */
+
+
+#include
+#include
+#include
+#include "actions.h"
+#include "gth-file-tool-adjust-contrast.h"
+#include "gth-file-tool-crop.h"
+#include "gth-file-tool-flip.h"
+#include "gth-file-tool-mirror.h"
+#include "gth-file-tool-resize.h"
+#include "gth-file-tool-rotate-left.h"
+#include "gth-file-tool-rotate-right.h"
+
+
+static void
+gth_browser_activate_file_tool (GthBrowser *browser,
+ GType tool_type)
+{
+ GtkWidget *sidebar;
+ GtkWidget *toolbox;
+ GthViewerPage *page;
+ GthFileTool *tool;
+
+ sidebar = gth_browser_get_viewer_sidebar (browser);
+ toolbox = gth_sidebar_get_toolbox (GTH_SIDEBAR (sidebar));
+ if (gth_toolbox_tool_is_active (GTH_TOOLBOX (toolbox)))
+ return;
+
+ page = gth_browser_get_viewer_page (browser);
+ if (! GTH_IS_IMAGE_VIEWER_PAGE (page))
+ return;
+
+ tool = (GthFileTool *) gth_toolbox_get_tool (GTH_TOOLBOX (toolbox), tool_type);
+ if (tool != NULL) {
+ if (gth_window_get_current_page (GTH_WINDOW (browser)) == GTH_BROWSER_PAGE_BROWSER)
+ gth_window_set_current_page (GTH_WINDOW (browser), GTH_BROWSER_PAGE_VIEWER);
+ gth_file_tool_activate (tool);
+ }
+}
+
+
+void
+gth_browser_activate_tool_adjust_contrast (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ gth_browser_activate_file_tool (GTH_BROWSER (user_data),
+ GTH_TYPE_FILE_TOOL_ADJUST_CONTRAST);
+}
+
+
+void
+gth_browser_activate_tool_flip (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ gth_browser_activate_file_tool (GTH_BROWSER (user_data),
+ GTH_TYPE_FILE_TOOL_FLIP);
+}
+
+
+void
+gth_browser_activate_tool_mirror (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ gth_browser_activate_file_tool (GTH_BROWSER (user_data),
+ GTH_TYPE_FILE_TOOL_MIRROR);
+}
+
+
+void
+gth_browser_activate_tool_rotate_right (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ gth_browser_activate_file_tool (GTH_BROWSER (user_data),
+ GTH_TYPE_FILE_TOOL_ROTATE_RIGHT);
+}
+
+
+void
+gth_browser_activate_tool_rotate_left (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ gth_browser_activate_file_tool (GTH_BROWSER (user_data),
+ GTH_TYPE_FILE_TOOL_ROTATE_LEFT);
+}
+
+
+void
+gth_browser_activate_tool_crop (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ gth_browser_activate_file_tool (GTH_BROWSER (user_data),
+ GTH_TYPE_FILE_TOOL_CROP);
+}
+
+
+void
+gth_browser_activate_tool_resize (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ gth_browser_activate_file_tool (GTH_BROWSER (user_data),
+ GTH_TYPE_FILE_TOOL_RESIZE);
+}
diff -Nru gthumb-3.8.3/extensions/file_tools/actions.h gthumb-3.9.1/extensions/file_tools/actions.h
--- gthumb-3.8.3/extensions/file_tools/actions.h 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/extensions/file_tools/actions.h 2020-03-07 19:03:13.416956200 +0000
@@ -0,0 +1,35 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * GThumb
+ *
+ * Copyright (C) 2019 Free Software Foundation, Inc.
+ *
+ * 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, see .
+ */
+
+#ifndef ACTIONS_H
+#define ACTIONS_H
+
+#include
+
+DEF_ACTION_CALLBACK (gth_browser_activate_tool_adjust_contrast)
+DEF_ACTION_CALLBACK (gth_browser_activate_tool_flip)
+DEF_ACTION_CALLBACK (gth_browser_activate_tool_mirror)
+DEF_ACTION_CALLBACK (gth_browser_activate_tool_rotate_right)
+DEF_ACTION_CALLBACK (gth_browser_activate_tool_rotate_left)
+DEF_ACTION_CALLBACK (gth_browser_activate_tool_crop)
+DEF_ACTION_CALLBACK (gth_browser_activate_tool_resize)
+
+#endif /* ACTIONS_H */
diff -Nru gthumb-3.8.3/extensions/file_tools/callbacks.c gthumb-3.9.1/extensions/file_tools/callbacks.c
--- gthumb-3.8.3/extensions/file_tools/callbacks.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_tools/callbacks.c 2020-03-07 19:03:13.416956200 +0000
@@ -26,6 +26,8 @@
#include
#include
#include
+#include
+#include "actions.h"
#include "callbacks.h"
#include "gth-file-tool-adjust-contrast.h"
#include "gth-file-tool-crop.h"
@@ -36,60 +38,37 @@
#include "gth-file-tool-rotate-right.h"
-gpointer
-file_tools__gth_browser_file_list_key_press_cb (GthBrowser *browser,
- GdkEventKey *event)
-{
- gpointer result = NULL;
- GtkWidget *sidebar;
- GtkWidget *toolbox;
- GthFileTool *tool = NULL;
- guint modifiers;
- GthViewerPage *page;
-
- sidebar = gth_browser_get_viewer_sidebar (browser);
- toolbox = gth_sidebar_get_toolbox (GTH_SIDEBAR (sidebar));
- if (gth_toolbox_tool_is_active (GTH_TOOLBOX (toolbox)))
- return NULL;
-
- modifiers = gtk_accelerator_get_default_mod_mask ();
- if (((event->state & modifiers) != 0) && ((event->state & modifiers) != GDK_SHIFT_MASK))
- return NULL;
-
- page = gth_browser_get_viewer_page (browser);
- if (! GTH_IS_IMAGE_VIEWER_PAGE (page))
- return NULL;
-
- switch (event->keyval) {
- case GDK_KEY_a:
- tool = (GthFileTool *) gth_toolbox_get_tool (GTH_TOOLBOX (toolbox), GTH_TYPE_FILE_TOOL_ADJUST_CONTRAST);
- break;
- case GDK_KEY_l:
- tool = (GthFileTool *) gth_toolbox_get_tool (GTH_TOOLBOX (toolbox), GTH_TYPE_FILE_TOOL_FLIP);
- break;
- case GDK_KEY_m:
- tool = (GthFileTool *) gth_toolbox_get_tool (GTH_TOOLBOX (toolbox), GTH_TYPE_FILE_TOOL_MIRROR);
- break;
- case GDK_KEY_r:
- tool = (GthFileTool *) gth_toolbox_get_tool (GTH_TOOLBOX (toolbox), GTH_TYPE_FILE_TOOL_ROTATE_RIGHT);
- break;
- case GDK_KEY_R:
- tool = (GthFileTool *) gth_toolbox_get_tool (GTH_TOOLBOX (toolbox), GTH_TYPE_FILE_TOOL_ROTATE_LEFT);
- break;
- case GDK_KEY_C:
- tool = (GthFileTool *) gth_toolbox_get_tool (GTH_TOOLBOX (toolbox), GTH_TYPE_FILE_TOOL_CROP);
- break;
- case GDK_KEY_S:
- tool = (GthFileTool *) gth_toolbox_get_tool (GTH_TOOLBOX (toolbox), GTH_TYPE_FILE_TOOL_RESIZE);
- break;
- }
-
- if (tool != NULL) {
- if (gth_window_get_current_page (GTH_WINDOW (browser)) == GTH_BROWSER_PAGE_BROWSER)
- gth_window_set_current_page (GTH_WINDOW (browser), GTH_BROWSER_PAGE_VIEWER);
- gth_file_tool_activate (tool);
- result = GINT_TO_POINTER (1);
- }
+static const GActionEntry actions[] = {
+ { "file-tool-adjust-contrast", gth_browser_activate_tool_adjust_contrast },
+ { "file-tool-flip", gth_browser_activate_tool_flip },
+ { "file-tool-mirror", gth_browser_activate_tool_mirror },
+ { "file-tool-rotate-right", gth_browser_activate_tool_rotate_right },
+ { "file-tool-rotate-left", gth_browser_activate_tool_rotate_left },
+ { "file-tool-crop", gth_browser_activate_tool_crop },
+ { "file-tool-resize", gth_browser_activate_tool_resize },
+};
+
+
+static const GthShortcut shortcuts[] = {
+ { "file-tool-adjust-contrast", N_("Adjust contrast"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_EDITOR, "a" },
+ { "file-tool-flip", N_("Flip"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_EDITOR, "l" },
+ { "file-tool-mirror", N_("Mirror"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_EDITOR, "m" },
+ { "file-tool-rotate-right", N_("Rotate right"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_EDITOR, "r" },
+ { "file-tool-rotate-left", N_("Rotate left"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_EDITOR, "r" },
+ { "file-tool-crop", N_("Crop"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_EDITOR, "c" },
+ { "file-tool-resize", N_("Resize"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_EDITOR, "s" },
+};
+
- return result;
+void
+file_tools__gth_browser_construct_cb (GthBrowser *browser)
+{
+ g_action_map_add_action_entries (G_ACTION_MAP (browser),
+ actions,
+ G_N_ELEMENTS (actions),
+ browser);
+
+ gth_window_add_shortcuts (GTH_WINDOW (browser),
+ shortcuts,
+ G_N_ELEMENTS (shortcuts));
}
diff -Nru gthumb-3.8.3/extensions/file_tools/callbacks.h gthumb-3.9.1/extensions/file_tools/callbacks.h
--- gthumb-3.8.3/extensions/file_tools/callbacks.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_tools/callbacks.h 2020-03-07 19:03:13.416956200 +0000
@@ -24,7 +24,6 @@
#include
-gpointer file_tools__gth_browser_file_list_key_press_cb (GthBrowser *browser,
- GdkEventKey *event);
+void file_tools__gth_browser_construct_cb (GthBrowser *browser);
#endif /* CALLBACKS_H */
diff -Nru gthumb-3.8.3/extensions/file_tools/gth-file-tool-adjust-contrast.c gthumb-3.9.1/extensions/file_tools/gth-file-tool-adjust-contrast.c
--- gthumb-3.8.3/extensions/file_tools/gth-file-tool-adjust-contrast.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_tools/gth-file-tool-adjust-contrast.c 2020-03-07 19:03:13.420289500 +0000
@@ -590,6 +590,7 @@
_cairo_clear_surface (&self->priv->destination);
self->priv->method = GTH_FILTER_GRID_NO_FILTER;
self->priv->last_applied_method = GTH_FILTER_GRID_NO_FILTER;
+ self->priv->view_original = TRUE;
}
@@ -653,7 +654,7 @@
self->priv->builder = NULL;
self->priv->method = GTH_FILTER_GRID_NO_FILTER;
self->priv->last_applied_method = GTH_FILTER_GRID_NO_FILTER;
- self->priv->view_original = FALSE;
+ self->priv->view_original = TRUE;
gth_file_tool_construct (GTH_FILE_TOOL (self),
"image-adjust-contrast-symbolic",
diff -Nru gthumb-3.8.3/extensions/file_tools/gth-file-tool-crop.c gthumb-3.9.1/extensions/file_tools/gth-file-tool-crop.c
--- gthumb-3.8.3/extensions/file_tools/gth-file-tool-crop.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_tools/gth-file-tool-crop.c 2020-03-07 19:03:13.420289500 +0000
@@ -149,10 +149,10 @@
int max,
int x)
{
- g_signal_handlers_block_by_data (G_OBJECT (spin), self);
+ _g_signal_handlers_block_by_data (G_OBJECT (spin), self);
gtk_spin_button_set_range (GTK_SPIN_BUTTON (spin), min, max);
gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin), x);
- g_signal_handlers_unblock_by_data (G_OBJECT (spin), self);
+ _g_signal_handlers_unblock_by_data (G_OBJECT (spin), self);
}
@@ -190,9 +190,9 @@
GtkWidget *spin,
int x)
{
- g_signal_handlers_block_by_data (G_OBJECT (spin), self);
+ _g_signal_handlers_block_by_data (G_OBJECT (spin), self);
gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin), x);
- g_signal_handlers_unblock_by_data (G_OBJECT (spin), self);
+ _g_signal_handlers_unblock_by_data (G_OBJECT (spin), self);
}
diff -Nru gthumb-3.8.3/extensions/file_tools/gth-file-tool-curves.c gthumb-3.9.1/extensions/file_tools/gth-file-tool-curves.c
--- gthumb-3.8.3/extensions/file_tools/gth-file-tool-curves.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_tools/gth-file-tool-curves.c 2020-03-07 19:03:13.420289500 +0000
@@ -452,9 +452,9 @@
{
self->priv->view_original = view_original;
- g_signal_handlers_block_by_data (self->priv->preview_button, self);
+ _g_signal_handlers_block_by_data (self->priv->preview_button, self);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->priv->preview_button), ! self->priv->view_original);
- g_signal_handlers_unblock_by_data (self->priv->preview_button, self);
+ _g_signal_handlers_unblock_by_data (self->priv->preview_button, self);
gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (self->priv->preview_channel_button), self->priv->view_original);
gtk_widget_set_sensitive (self->priv->preview_channel_button, ! self->priv->view_original);
diff -Nru gthumb-3.8.3/extensions/file_tools/gth-file-tool-effects.c gthumb-3.9.1/extensions/file_tools/gth-file-tool-effects.c
--- gthumb-3.8.3/extensions/file_tools/gth-file-tool-effects.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_tools/gth-file-tool-effects.c 2020-03-07 19:03:13.420289500 +0000
@@ -287,6 +287,7 @@
_cairo_clear_surface (&self->priv->destination);
self->priv->method = GTH_FILTER_GRID_NO_FILTER;
self->priv->last_applied_method = GTH_FILTER_GRID_NO_FILTER;
+ self->priv->view_original = TRUE;
}
@@ -351,7 +352,7 @@
self->priv->builder = NULL;
self->priv->method = GTH_FILTER_GRID_NO_FILTER;
self->priv->last_applied_method = GTH_FILTER_GRID_NO_FILTER;
- self->priv->view_original = FALSE;
+ self->priv->view_original = TRUE;
gth_file_tool_construct (GTH_FILE_TOOL (self),
"special-effects-symbolic",
diff -Nru gthumb-3.8.3/extensions/file_tools/gth-file-tool-grayscale.c gthumb-3.9.1/extensions/file_tools/gth-file-tool-grayscale.c
--- gthumb-3.8.3/extensions/file_tools/gth-file-tool-grayscale.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_tools/gth-file-tool-grayscale.c 2020-03-07 19:03:13.420289500 +0000
@@ -426,6 +426,7 @@
_cairo_clear_surface (&self->priv->destination);
self->priv->method = GTH_FILTER_GRID_NO_FILTER;
self->priv->last_applied_method = GTH_FILTER_GRID_NO_FILTER;
+ self->priv->view_original = TRUE;
}
@@ -490,7 +491,7 @@
self->priv->builder = NULL;
self->priv->method = GTH_FILTER_GRID_NO_FILTER;
self->priv->last_applied_method = GTH_FILTER_GRID_NO_FILTER;
- self->priv->view_original = FALSE;
+ self->priv->view_original = TRUE;
gth_file_tool_construct (GTH_FILE_TOOL (self),
"image-grayscale-symbolic",
diff -Nru gthumb-3.8.3/extensions/file_tools/gth-file-tool-resize.c gthumb-3.9.1/extensions/file_tools/gth-file-tool-resize.c
--- gthumb-3.8.3/extensions/file_tools/gth-file-tool-resize.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_tools/gth-file-tool-resize.c 2020-03-07 19:03:13.420289500 +0000
@@ -158,10 +158,12 @@
self->priv->new_height,
(self->priv->high_quality ? SCALE_FILTER_BEST : SCALE_FILTER_FAST),
task);
- _cairo_image_surface_clear_metadata (destination);
- gth_image_task_set_destination_surface (GTH_IMAGE_TASK (task), destination);
+ if (destination != NULL) {
+ _cairo_image_surface_clear_metadata (destination);
+ gth_image_task_set_destination_surface (GTH_IMAGE_TASK (task), destination);
+ cairo_surface_destroy (destination);
+ }
- cairo_surface_destroy (destination);
cairo_surface_destroy (source);
return NULL;
@@ -222,13 +224,13 @@
self->priv->new_width = MAX ((int) round ((gtk_spin_button_get_value (spin) / 100.0) * self->priv->original_width), 1);
if (self->priv->fixed_aspect_ratio) {
- g_signal_handlers_block_by_data (GET_WIDGET ("resize_height_spinbutton"), self);
+ _g_signal_handlers_block_by_data (GET_WIDGET ("resize_height_spinbutton"), self);
self->priv->new_height = MAX ((int) round ((double) self->priv->new_width / self->priv->aspect_ratio), 1);
if (self->priv->unit == GTH_UNIT_PIXELS)
gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("resize_height_spinbutton")), self->priv->new_height);
else if (self->priv->unit == GTH_UNIT_PERCENTAGE)
gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("resize_height_spinbutton")), ((double) self->priv->new_height) / self->priv->original_height * 100.0);
- g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_height_spinbutton"), self);
+ _g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_height_spinbutton"), self);
}
update_image_size (self);
@@ -245,13 +247,13 @@
self->priv->new_height = MAX ((int) round ((gtk_spin_button_get_value (spin) / 100.0) * self->priv->original_height), 1);
if (self->priv->fixed_aspect_ratio) {
- g_signal_handlers_block_by_data (GET_WIDGET ("resize_width_spinbutton"), self);
+ _g_signal_handlers_block_by_data (GET_WIDGET ("resize_width_spinbutton"), self);
self->priv->new_width = MAX ((int) round ((double) self->priv->new_height * self->priv->aspect_ratio), 1);
if (self->priv->unit == GTH_UNIT_PIXELS)
gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("resize_width_spinbutton")), self->priv->new_width);
else if (self->priv->unit == GTH_UNIT_PERCENTAGE)
gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("resize_width_spinbutton")), ((double) self->priv->new_width) / self->priv->original_width * 100.0);
- g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_width_spinbutton"), self);
+ _g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_width_spinbutton"), self);
}
update_image_size (self);
@@ -270,8 +272,8 @@
static void
update_size_spin_buttons_from_unit_value (GthFileToolResize *self)
{
- g_signal_handlers_block_by_data (GET_WIDGET ("resize_width_spinbutton"), self);
- g_signal_handlers_block_by_data (GET_WIDGET ("resize_height_spinbutton"), self);
+ _g_signal_handlers_block_by_data (GET_WIDGET ("resize_width_spinbutton"), self);
+ _g_signal_handlers_block_by_data (GET_WIDGET ("resize_height_spinbutton"), self);
if (self->priv->unit == GTH_UNIT_PERCENTAGE) {
double p;
@@ -291,8 +293,8 @@
gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("resize_height_spinbutton")), self->priv->new_height);
}
- g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_width_spinbutton"), self);
- g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_height_spinbutton"), self);
+ _g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_width_spinbutton"), self);
+ _g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_height_spinbutton"), self);
}
@@ -312,9 +314,9 @@
GtkWidget *spin,
int x)
{
- g_signal_handlers_block_by_data (G_OBJECT (spin), self);
+ _g_signal_handlers_block_by_data (G_OBJECT (spin), self);
gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin), x);
- g_signal_handlers_unblock_by_data (G_OBJECT (spin), self);
+ _g_signal_handlers_unblock_by_data (G_OBJECT (spin), self);
}
@@ -450,13 +452,13 @@
update_size_spin_buttons_from_unit_value (self);
- g_signal_handlers_block_by_data (GET_WIDGET ("resize_width_spinbutton"), self);
- g_signal_handlers_block_by_data (GET_WIDGET ("resize_height_spinbutton"), self);
- g_signal_handlers_block_by_data (GET_WIDGET ("unit_combobox"), self);
- g_signal_handlers_block_by_data (self->priv->ratio_combobox, self);
- g_signal_handlers_block_by_data (GET_WIDGET ("invert_ratio_checkbutton"), self);
- g_signal_handlers_block_by_data (GET_WIDGET ("ratio_w_spinbutton"), self);
- g_signal_handlers_block_by_data (GET_WIDGET ("ratio_h_spinbutton"), self);
+ _g_signal_handlers_block_by_data (GET_WIDGET ("resize_width_spinbutton"), self);
+ _g_signal_handlers_block_by_data (GET_WIDGET ("resize_height_spinbutton"), self);
+ _g_signal_handlers_block_by_data (GET_WIDGET ("unit_combobox"), self);
+ _g_signal_handlers_block_by_data (self->priv->ratio_combobox, self);
+ _g_signal_handlers_block_by_data (GET_WIDGET ("invert_ratio_checkbutton"), self);
+ _g_signal_handlers_block_by_data (GET_WIDGET ("ratio_w_spinbutton"), self);
+ _g_signal_handlers_block_by_data (GET_WIDGET ("ratio_h_spinbutton"), self);
gtk_combo_box_set_active (GTK_COMBO_BOX (GET_WIDGET ("unit_combobox")), PIXELS_UNIT_POSITION);
gtk_combo_box_set_active (GTK_COMBO_BOX (self->priv->ratio_combobox), ratio);
@@ -466,13 +468,13 @@
gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("ratio_w_spinbutton")), w);
gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("ratio_h_spinbutton")), h);
- g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_width_spinbutton"), self);
- g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_height_spinbutton"), self);
- g_signal_handlers_unblock_by_data (GET_WIDGET ("unit_combobox"), self);
- g_signal_handlers_unblock_by_data (self->priv->ratio_combobox, self);
- g_signal_handlers_unblock_by_data (GET_WIDGET ("invert_ratio_checkbutton"), self);
- g_signal_handlers_unblock_by_data (GET_WIDGET ("ratio_w_spinbutton"), self);
- g_signal_handlers_unblock_by_data (GET_WIDGET ("ratio_h_spinbutton"), self);
+ _g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_width_spinbutton"), self);
+ _g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_height_spinbutton"), self);
+ _g_signal_handlers_unblock_by_data (GET_WIDGET ("unit_combobox"), self);
+ _g_signal_handlers_unblock_by_data (self->priv->ratio_combobox, self);
+ _g_signal_handlers_unblock_by_data (GET_WIDGET ("invert_ratio_checkbutton"), self);
+ _g_signal_handlers_unblock_by_data (GET_WIDGET ("ratio_w_spinbutton"), self);
+ _g_signal_handlers_unblock_by_data (GET_WIDGET ("ratio_h_spinbutton"), self);
update_image_size (self);
}
diff -Nru gthumb-3.8.3/extensions/file_tools/main.c gthumb-3.9.1/extensions/file_tools/main.c
--- gthumb-3.8.3/extensions/file_tools/main.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_tools/main.c 2020-03-07 19:03:13.420289500 +0000
@@ -74,7 +74,7 @@
gth_main_register_type ("file-tools", GTH_TYPE_FILE_TOOL_RESIZE);
gth_main_register_type ("file-tools", GTH_TYPE_FILE_TOOL_CROP);
- gth_hook_add_callback ("gth-browser-file-list-key-press", 10, G_CALLBACK (file_tools__gth_browser_file_list_key_press_cb), NULL);
+ gth_hook_add_callback ("gth-browser-construct", 10, G_CALLBACK (file_tools__gth_browser_construct_cb), NULL);
/**
* Add a filter to the filter list shown in the Effects tool
diff -Nru gthumb-3.8.3/extensions/file_tools/meson.build gthumb-3.9.1/extensions/file_tools/meson.build
--- gthumb-3.8.3/extensions/file_tools/meson.build 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/file_tools/meson.build 2020-03-07 19:03:13.420289500 +0000
@@ -38,6 +38,7 @@
enum_files = gnome.mkenums_simple('file-tools-enum-types', sources: header_files)
source_files = files(
+ 'actions.c',
'cairo-blur.c',
'cairo-effects.c',
'cairo-rotate.c',
diff -Nru gthumb-3.8.3/extensions/find_duplicates/dlg-find-duplicates.c gthumb-3.9.1/extensions/find_duplicates/dlg-find-duplicates.c
--- gthumb-3.8.3/extensions/find_duplicates/dlg-find-duplicates.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/find_duplicates/dlg-find-duplicates.c 2020-03-07 19:03:13.423622800 +0000
@@ -113,6 +113,7 @@
data->location_chooser = g_object_new (GTH_TYPE_LOCATION_CHOOSER,
"show-entry-points", TRUE,
+ "show-other", TRUE,
"relief", GTK_RELIEF_NORMAL,
NULL);
gtk_widget_show (data->location_chooser);
diff -Nru gthumb-3.8.3/extensions/find_duplicates/find_duplicates.extension.desktop.in.in gthumb-3.9.1/extensions/find_duplicates/find_duplicates.extension.desktop.in.in
--- gthumb-3.8.3/extensions/find_duplicates/find_duplicates.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/find_duplicates/find_duplicates.extension.desktop.in.in 2020-03-07 19:03:13.423622800 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Find Duplicates
Comment=Find duplicated files.
-Authors=gthumb development team
-Copyright=Copyright © 2010-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2010-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Category=Browser
diff -Nru gthumb-3.8.3/extensions/flicker/flicker.extension.desktop.in.in gthumb-3.9.1/extensions/flicker/flicker.extension.desktop.in.in
--- gthumb-3.8.3/extensions/flicker/flicker.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/flicker/flicker.extension.desktop.in.in 2020-03-07 19:03:13.423622800 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Flicker
Comment=Upload images to Flickr
-Authors=gthumb development team
-Copyright=Copyright © 2010-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2010-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Category=Exporter
diff -Nru gthumb-3.8.3/extensions/flicker_utils/flickr-account.c gthumb-3.9.1/extensions/flicker_utils/flickr-account.c
--- gthumb-3.8.3/extensions/flicker_utils/flickr-account.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/flicker_utils/flickr-account.c 2020-03-07 19:03:13.423622800 +0000
@@ -116,7 +116,7 @@
flickr_account_set_accountname (FlickrAccount *self,
const char *value)
{
- _g_strset (&self->accountname, value);
+ _g_str_set (&self->accountname, value);
}
diff -Nru gthumb-3.8.3/extensions/flicker_utils/flickr-photo.c gthumb-3.9.1/extensions/flicker_utils/flickr-photo.c
--- gthumb-3.8.3/extensions/flicker_utils/flickr-photo.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/flicker_utils/flickr-photo.c 2020-03-07 19:03:13.423622800 +0000
@@ -181,7 +181,7 @@
flickr_photo_set_id (FlickrPhoto *self,
const char *value)
{
- _g_strset (&self->id, value);
+ _g_str_set (&self->id, value);
}
@@ -189,7 +189,7 @@
flickr_photo_set_secret (FlickrPhoto *self,
const char *value)
{
- _g_strset (&self->secret, value);
+ _g_str_set (&self->secret, value);
}
@@ -197,7 +197,7 @@
flickr_photo_set_server (FlickrPhoto *self,
const char *value)
{
- _g_strset (&self->server, value);
+ _g_str_set (&self->server, value);
}
@@ -205,7 +205,7 @@
flickr_photo_set_farm (FlickrPhoto *self,
const char *value)
{
- _g_strset (&self->farm, value);
+ _g_str_set (&self->farm, value);
}
@@ -213,7 +213,7 @@
flickr_photo_set_title (FlickrPhoto *self,
const char *value)
{
- _g_strset (&self->title, value);
+ _g_str_set (&self->title, value);
}
@@ -273,7 +273,7 @@
FlickrUrl size,
const char *value)
{
- _g_strset (&(self->url[size]), value);
+ _g_str_set (&(self->url[size]), value);
if (self->url[size] == NULL)
self->url[size] = flickr_get_static_url (self, size);
@@ -281,7 +281,7 @@
int other_size;
for (other_size = FLICKR_URL_O - 1; other_size >= 0; other_size--) {
if (self->url[other_size] != NULL) {
- _g_strset (&(self->url[size]), self->url[other_size]);
+ _g_str_set (&(self->url[size]), self->url[other_size]);
break;
}
}
@@ -293,7 +293,7 @@
flickr_photo_set_original_format (FlickrPhoto *self,
const char *value)
{
- _g_strset (&self->original_format, value);
+ _g_str_set (&self->original_format, value);
g_free (self->mime_type);
self->mime_type = NULL;
@@ -306,5 +306,5 @@
flickr_photo_set_original_secret (FlickrPhoto *self,
const char *value)
{
- _g_strset (&self->original_secret, value);
+ _g_str_set (&self->original_secret, value);
}
diff -Nru gthumb-3.8.3/extensions/flicker_utils/flickr-photoset.c gthumb-3.9.1/extensions/flicker_utils/flickr-photoset.c
--- gthumb-3.8.3/extensions/flicker_utils/flickr-photoset.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/flicker_utils/flickr-photoset.c 2020-03-07 19:03:13.423622800 +0000
@@ -161,7 +161,7 @@
flickr_photoset_set_id (FlickrPhotoset *self,
const char *value)
{
- _g_strset (&self->id, value);
+ _g_str_set (&self->id, value);
}
@@ -169,7 +169,7 @@
flickr_photoset_set_title (FlickrPhotoset *self,
const char *value)
{
- _g_strset (&self->title, value);
+ _g_str_set (&self->title, value);
}
@@ -177,7 +177,7 @@
flickr_photoset_set_description (FlickrPhotoset *self,
const char *value)
{
- _g_strset (&self->description, value);
+ _g_str_set (&self->description, value);
}
@@ -196,7 +196,7 @@
flickr_photoset_set_primary (FlickrPhotoset *self,
const char *value)
{
- _g_strset (&self->primary, value);
+ _g_str_set (&self->primary, value);
}
@@ -204,7 +204,7 @@
flickr_photoset_set_secret (FlickrPhotoset *self,
const char *value)
{
- _g_strset (&self->secret, value);
+ _g_str_set (&self->secret, value);
}
@@ -212,7 +212,7 @@
flickr_photoset_set_server (FlickrPhotoset *self,
const char *value)
{
- _g_strset (&self->server, value);
+ _g_str_set (&self->server, value);
}
@@ -220,7 +220,7 @@
flickr_photoset_set_farm (FlickrPhotoset *self,
const char *value)
{
- _g_strset (&self->farm, value);
+ _g_str_set (&self->farm, value);
}
@@ -228,5 +228,5 @@
flickr_photoset_set_url (FlickrPhotoset *self,
const char *value)
{
- _g_strset (&self->url, value);
+ _g_str_set (&self->url, value);
}
diff -Nru gthumb-3.8.3/extensions/gstreamer_tools/actions.c gthumb-3.9.1/extensions/gstreamer_tools/actions.c
--- gthumb-3.8.3/extensions/gstreamer_tools/actions.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/gstreamer_tools/actions.c 2020-03-07 19:03:13.423622800 +0000
@@ -96,7 +96,7 @@
uri = _g_settings_get_uri_or_special_dir (save_data->settings, PREF_GSTREAMER_TOOLS_SCREESHOT_LOCATION, G_USER_DIRECTORY_PICTURES);
folder = g_file_new_for_uri (uri);
file_data = gth_media_viewer_page_get_file_data (save_data->page);
- prefix = _g_utf8_remove_extension (g_file_info_get_display_name (file_data->info));
+ prefix = _g_path_remove_extension (g_file_info_get_display_name (file_data->info));
if (prefix == NULL)
prefix = g_strdup (C_("Filename", "Screenshot"));
@@ -192,3 +192,29 @@
screenshot_ready_cb,
save_data);
}
+
+
+void
+gth_browser_activate_toggle_play (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GthBrowser *browser = GTH_BROWSER (user_data);
+ GthMediaViewerPage *page;
+
+ page = GTH_MEDIA_VIEWER_PAGE (gth_browser_get_viewer_page (browser));
+ gth_media_viewer_page_toggle_play (page);
+}
+
+
+void
+gth_browser_activate_video_zoom_fit (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ GthBrowser *browser = GTH_BROWSER (user_data);
+ GthMediaViewerPage *page = GTH_MEDIA_VIEWER_PAGE (gth_browser_get_viewer_page (browser));;
+
+ g_simple_action_set_state (action, state);
+ gth_media_viewer_page_set_fit_if_larger (page, g_variant_get_boolean (state));
+}
diff -Nru gthumb-3.8.3/extensions/gstreamer_tools/actions.h gthumb-3.9.1/extensions/gstreamer_tools/actions.h
--- gthumb-3.8.3/extensions/gstreamer_tools/actions.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/gstreamer_tools/actions.h 2020-03-07 19:03:13.423622800 +0000
@@ -25,5 +25,7 @@
#include
DEF_ACTION_CALLBACK (gth_browser_activate_video_screenshot)
+DEF_ACTION_CALLBACK (gth_browser_activate_toggle_play)
+DEF_ACTION_CALLBACK (gth_browser_activate_video_zoom_fit)
#endif /* ACTIONS_H */
diff -Nru gthumb-3.8.3/extensions/gstreamer_tools/callbacks.c gthumb-3.9.1/extensions/gstreamer_tools/callbacks.c
--- gthumb-3.8.3/extensions/gstreamer_tools/callbacks.c 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/extensions/gstreamer_tools/callbacks.c 2020-03-07 19:03:13.423622800 +0000
@@ -0,0 +1,45 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * GThumb
+ *
+ * Copyright (C) 2019 Free Software Foundation, Inc.
+ *
+ * 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, see .
+ */
+
+
+#include
+#include
+#include
+#include
+#include "callbacks.h"
+#include "shortcuts.h"
+
+
+static const GthShortcut shortcuts[] = {
+ { "video-screenshot", N_("Screenshot"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_MEDIA_VIEWER, "s" },
+ { "toggle-play", N_("Play/Pause"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_MEDIA_VIEWER, "space" },
+};
+
+
+void
+media_viewer__gth_browser_construct_cb (GthBrowser *browser)
+{
+ g_return_if_fail (GTH_IS_BROWSER (browser));
+
+ gth_window_add_shortcuts (GTH_WINDOW (browser),
+ shortcuts,
+ G_N_ELEMENTS (shortcuts));
+}
diff -Nru gthumb-3.8.3/extensions/gstreamer_tools/callbacks.h gthumb-3.9.1/extensions/gstreamer_tools/callbacks.h
--- gthumb-3.8.3/extensions/gstreamer_tools/callbacks.h 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/extensions/gstreamer_tools/callbacks.h 2020-03-07 19:03:13.423622800 +0000
@@ -0,0 +1,29 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * GThumb
+ *
+ * Copyright (C) 2019 Free Software Foundation, Inc.
+ *
+ * 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, see .
+ */
+
+#ifndef CALLBACKS_H
+#define CALLBACKS_H
+
+#include
+
+void media_viewer__gth_browser_construct_cb (GthBrowser *browser);
+
+#endif /* CALLBACKS_H */
diff -Nru gthumb-3.8.3/extensions/gstreamer_tools/gstreamer_tools.extension.desktop.in.in gthumb-3.9.1/extensions/gstreamer_tools/gstreamer_tools.extension.desktop.in.in
--- gthumb-3.8.3/extensions/gstreamer_tools/gstreamer_tools.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/gstreamer_tools/gstreamer_tools.extension.desktop.in.in 2020-03-07 19:03:13.423622800 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Audio/Video support
Comment=Play audio and video files.
-Authors=gthumb development team
-Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2009-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Icon=video-x-generic
Category=Viewer
diff -Nru gthumb-3.8.3/extensions/gstreamer_tools/gth-media-viewer-page.c gthumb-3.9.1/extensions/gstreamer_tools/gth-media-viewer-page.c
--- gthumb-3.8.3/extensions/gstreamer_tools/gth-media-viewer-page.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/gstreamer_tools/gth-media-viewer-page.c 2020-03-07 19:03:13.423622800 +0000
@@ -39,6 +39,7 @@
struct _GthMediaViewerPagePrivate {
GthBrowser *browser;
+ GSettings *settings;
GthFileData *file_data;
GFileInfo *updated_info;
GstElement *playbin;
@@ -47,6 +48,7 @@
GtkWidget *audio_area;
GtkWidget *area_box;
GtkWidget *area_overlay;
+ gboolean fit_if_larger;
gboolean visible;
gboolean playing;
gboolean paused;
@@ -54,6 +56,8 @@
gint64 duration;
int video_fps_n;
int video_fps_d;
+ int video_width;
+ int video_height;
gboolean has_video;
gboolean has_audio;
gulong update_progress_id;
@@ -68,6 +72,7 @@
gboolean cursor_visible;
GthScreensaver *screensaver;
GtkWidget *screenshot_button;
+ GtkWidget *fit_button;
gboolean background_painted;
};
@@ -84,7 +89,9 @@
static const GActionEntry actions[] = {
- { "video-screenshot", gth_browser_activate_video_screenshot }
+ { "video-screenshot", gth_browser_activate_video_screenshot },
+ { "toggle-play", gth_browser_activate_toggle_play },
+ { "video-zoom-fit", toggle_action_activated, NULL, "true", gth_browser_activate_video_zoom_fit },
};
@@ -165,6 +172,52 @@
}
+static void
+update_zoom_info (GthMediaViewerPage *self)
+{
+ GtkAllocation allocation;
+ double view_width;
+ double view_height;
+ int zoom;
+ char *text;
+
+ if (! self->priv->has_video) {
+ gth_statusbar_set_secondary_text (GTH_STATUSBAR (gth_browser_get_statusbar (self->priv->browser)), "");
+ return;
+ }
+
+ gtk_widget_get_allocation (self->priv->video_area, &allocation);
+
+ view_width = allocation.width;
+ view_height = (((double) self->priv->video_height / self->priv->video_width) * view_width);
+ if (view_height > allocation.height) {
+ view_height = allocation.height;
+ view_width = (((double) self->priv->video_width / self->priv->video_height) * view_height);
+ }
+
+ if (self->priv->video_width > 0)
+ zoom = (int) round ((double) view_width / self->priv->video_width * 100);
+ else if (self->priv->video_height > 0)
+ zoom = (int) round ((double) view_height / self->priv->video_height * 100);
+ else
+ zoom = 100;
+ text = g_strdup_printf (" %d%% ", zoom);
+ gth_statusbar_set_secondary_text (GTH_STATUSBAR (gth_browser_get_statusbar (self->priv->browser)), text);
+
+ g_free (text);
+}
+
+
+static void
+video_area_size_allocate_cb (GtkWidget *widget,
+ GdkRectangle *allocation,
+ gpointer user_data)
+{
+ GthMediaViewerPage *self = user_data;
+ update_zoom_info (self);
+}
+
+
static gboolean
video_area_draw_cb (GtkWidget *widget,
cairo_t *cr,
@@ -415,39 +468,7 @@
play_button_clicked_cb (GtkButton *button,
gpointer user_data)
{
- GthMediaViewerPage *self = user_data;
-
- if (self->priv->playbin == NULL)
- return;
- if (! self->priv->playing) {
- if (! self->priv->paused) {
- gst_element_set_state (self->priv->playbin, GST_STATE_PAUSED);
- gst_element_seek (self->priv->playbin,
- self->priv->rate,
- GST_FORMAT_TIME,
- GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,
- GST_SEEK_TYPE_SET,
- 0.0,
- GST_SEEK_TYPE_NONE,
- 0.0);
- }
- else {
- gint64 current_value;
-
- current_value = (gint64) (gtk_adjustment_get_value (GTK_ADJUSTMENT (GET_WIDGET ("position_adjustment"))) / 100.0 * self->priv->duration);
- gst_element_seek (self->priv->playbin,
- self->priv->rate,
- GST_FORMAT_TIME,
- GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,
- GST_SEEK_TYPE_SET,
- current_value,
- GST_SEEK_TYPE_NONE,
- 0.0);
- }
- gst_element_set_state (self->priv->playbin, GST_STATE_PLAYING);
- }
- else
- gst_element_set_state (self->priv->playbin, GST_STATE_PAUSED);
+ gth_media_viewer_page_toggle_play (GTH_MEDIA_VIEWER_PAGE (user_data));
}
@@ -659,6 +680,9 @@
"video-sink", &video_sink,
NULL);
+ self->priv->has_audio = FALSE;
+ self->priv->has_video = FALSE;
+
if (audio_sink != NULL) {
audio_pad = gst_element_get_static_pad (GST_ELEMENT (audio_sink), "sink");
if (audio_pad != NULL) {
@@ -689,6 +713,8 @@
g_file_info_set_attribute_int32 (self->priv->updated_info, "frame::width", video_width);
g_file_info_set_attribute_int32 (self->priv->updated_info, "frame::height", video_height);
self->priv->has_video = TRUE;
+ self->priv->video_width = video_width;
+ self->priv->video_height = video_height;
}
gst_caps_unref (caps);
@@ -697,6 +723,7 @@
}
gtk_stack_set_visible_child_name (GTK_STACK (self->priv->area_box), self->priv->has_video ? "video-area" : "audio-area");
+ update_zoom_info (self);
}
@@ -800,7 +827,6 @@
create_playbin (GthMediaViewerPage *self)
{
GstElement *video_sink;
- GSettings *settings;
GstBus *bus;
if (self->priv->playbin != NULL)
@@ -808,8 +834,7 @@
self->priv->playbin = gst_element_factory_make ("playbin", "playbin");
- settings = g_settings_new (GTHUMB_GSTREAMER_TOOLS_SCHEMA);
- if (g_settings_get_boolean (settings, PREF_GSTREAMER_USE_HARDWARE_ACCEL)) {
+ if (g_settings_get_boolean (self->priv->settings, PREF_GSTREAMER_USE_HARDWARE_ACCEL)) {
GstElement *video_bin;
GstElement *glupload;
GstPad *pad;
@@ -856,26 +881,17 @@
G_CALLBACK (video_area_unrealize_cb),
self);
g_signal_connect (G_OBJECT (self->priv->video_area),
- "button_press_event",
- G_CALLBACK (video_area_button_press_cb),
- self);
- g_signal_connect (G_OBJECT (self->priv->video_area),
- "popup-menu",
- G_CALLBACK (video_area_popup_menu_cb),
- self);
- g_signal_connect (G_OBJECT (self->priv->video_area),
- "scroll_event",
- G_CALLBACK (video_area_scroll_event_cb),
+ "size-allocate",
+ G_CALLBACK (video_area_size_allocate_cb),
self);
gtk_stack_add_named (GTK_STACK (self->priv->area_box), self->priv->video_area, "video-area");
gtk_widget_show (self->priv->video_area);
g_object_set (self->priv->playbin,
- "volume", (double) g_settings_get_int (settings, PREF_GSTREAMER_TOOLS_VOLUME) / 100.0,
+ "volume", (double) g_settings_get_int (self->priv->settings, PREF_GSTREAMER_TOOLS_VOLUME) / 100.0,
"force-aspect-ratio", TRUE,
NULL);
- g_object_unref (settings);
bus = gst_pipeline_get_bus (GST_PIPELINE (self->priv->playbin));
gst_bus_add_signal_watch (bus);
@@ -914,6 +930,13 @@
_("Take a screenshot"),
"win.video-screenshot",
NULL);
+ self->priv->fit_button =
+ gth_browser_add_header_bar_toggle_button (browser,
+ GTH_BROWSER_HEADER_SECTION_VIEWER_ZOOM,
+ "view-zoom-fit-symbolic",
+ _("Fit to window"),
+ "win.video-zoom-fit",
+ NULL);
/* audio area */
@@ -934,18 +957,6 @@
"draw",
G_CALLBACK (video_area_draw_cb),
self);
- g_signal_connect (G_OBJECT (self->priv->audio_area),
- "button_press_event",
- G_CALLBACK (video_area_button_press_cb),
- self);
- g_signal_connect (G_OBJECT (self->priv->audio_area),
- "popup-menu",
- G_CALLBACK (video_area_popup_menu_cb),
- self);
- g_signal_connect (G_OBJECT (self->priv->audio_area),
- "scroll_event",
- G_CALLBACK (video_area_scroll_event_cb),
- self);
/* mediabar */
@@ -996,9 +1007,23 @@
gtk_container_add (GTK_CONTAINER (self->priv->mediabar_revealer), self->priv->mediabar);
self->priv->area_box = gtk_stack_new ();
+ gtk_style_context_add_class (gtk_widget_get_style_context (self->priv->area_box), "video-player");
gtk_stack_add_named (GTK_STACK (self->priv->area_box), self->priv->audio_area, "audio-area");
gtk_widget_show (self->priv->area_box);
+ g_signal_connect (G_OBJECT (self->priv->area_box),
+ "button_press_event",
+ G_CALLBACK (video_area_button_press_cb),
+ self);
+ g_signal_connect (G_OBJECT (self->priv->area_box),
+ "popup-menu",
+ G_CALLBACK (video_area_popup_menu_cb),
+ self);
+ g_signal_connect (G_OBJECT (self->priv->area_box),
+ "scroll_event",
+ G_CALLBACK (video_area_scroll_event_cb),
+ self);
+
self->priv->area_overlay = gtk_overlay_new ();
gtk_container_add (GTK_CONTAINER (self->priv->area_overlay), self->priv->area_box);
gtk_overlay_add_overlay (GTK_OVERLAY (self->priv->area_overlay), self->priv->mediabar_revealer);
@@ -1013,20 +1038,8 @@
gth_viewer_page_focus (GTH_VIEWER_PAGE (self));
create_playbin (self);
-}
-
-
-static void
-save_volume (GthMediaViewerPage *self)
-{
- GSettings *settings;
- double volume;
-
- settings = g_settings_new (GTHUMB_GSTREAMER_TOOLS_SCHEMA);
- g_object_get (self->priv->playbin, "volume", &volume, NULL);
- g_settings_set_int (settings, PREF_GSTREAMER_TOOLS_VOLUME, (int) (volume * 100.0));
- g_object_unref (settings);
+ gth_media_viewer_page_set_fit_if_larger (self, g_settings_get_boolean (self->priv->settings, PREF_GSTREAMER_ZOOM_TO_FIT));
}
@@ -1066,10 +1079,15 @@
}
if (self->priv->playbin != NULL) {
- save_volume (self);
+ double volume;
- g_signal_handlers_disconnect_by_data (self->priv->playbin, self);
- g_signal_handlers_disconnect_by_data (self->priv->video_area, self);
+ g_object_get (self->priv->playbin, "volume", &volume, NULL);
+ g_settings_set_int (self->priv->settings, PREF_GSTREAMER_TOOLS_VOLUME, (int) (volume * 100.0));
+
+ g_settings_set_boolean (self->priv->settings, PREF_GSTREAMER_ZOOM_TO_FIT, self->priv->fit_if_larger);
+
+ _g_signal_handlers_disconnect_by_data (self->priv->playbin, self);
+ _g_signal_handlers_disconnect_by_data (self->priv->video_area, self);
gst_element_set_state (self->priv->playbin, GST_STATE_NULL);
wait_playbin_state_change_to_complete (self);
@@ -1080,7 +1098,9 @@
}
gtk_widget_destroy (self->priv->screenshot_button);
+ gtk_widget_destroy (self->priv->fit_button);
self->priv->screenshot_button = NULL;
+ self->priv->fit_button = NULL;
gth_browser_set_viewer_widget (self->priv->browser, NULL);
}
@@ -1251,6 +1271,7 @@
gtk_widget_set_sensitive (GET_WIDGET ("volume_box"), self->priv->has_audio);
gtk_widget_set_sensitive (GET_WIDGET ("play_button"), self->priv->has_video || self->priv->has_audio);
gth_window_enable_action (GTH_WINDOW (self->priv->browser), "video-screenshot", self->priv->has_video);
+ gth_window_enable_action (GTH_WINDOW (self->priv->browser), "video-zoom-fit", self->priv->has_video);
}
@@ -1325,6 +1346,7 @@
gth_screensaver_uninhibit (self->priv->screensaver);
g_object_unref (self->priv->screensaver);
}
+ _g_object_unref (self->priv->settings);
G_OBJECT_CLASS (gth_media_viewer_page_parent_class)->finalize (obj);
}
@@ -1359,9 +1381,20 @@
static void
+pref_zoom_to_fit_changed (GSettings *settings,
+ char *key,
+ gpointer user_data)
+{
+ GthMediaViewerPage *self = user_data;
+ gth_media_viewer_page_set_fit_if_larger (self, g_settings_get_boolean (self->priv->settings, PREF_GSTREAMER_ZOOM_TO_FIT));
+}
+
+
+static void
gth_media_viewer_page_init (GthMediaViewerPage *self)
{
self->priv = gth_media_viewer_page_get_instance_private (self);
+ self->priv->settings = g_settings_new (GTHUMB_GSTREAMER_TOOLS_SCHEMA);
self->priv->update_progress_id = 0;
self->priv->update_volume_id = 0;
self->priv->has_video = FALSE;
@@ -1377,6 +1410,14 @@
self->priv->file_data = NULL;
self->priv->updated_info = NULL;
self->priv->loop = FALSE;
+ self->priv->fit_if_larger = TRUE;
+
+ /* settings notifications */
+
+ g_signal_connect (self->priv->settings,
+ "changed::" PREF_GSTREAMER_ZOOM_TO_FIT,
+ G_CALLBACK (pref_zoom_to_fit_changed),
+ self);
}
@@ -1418,3 +1459,58 @@
{
return self->priv->file_data;
}
+
+
+void
+gth_media_viewer_page_toggle_play (GthMediaViewerPage *self)
+{
+ if (self->priv->playbin == NULL)
+ return;
+
+ if (! self->priv->playing) {
+ if (! self->priv->paused) {
+ gst_element_set_state (self->priv->playbin, GST_STATE_PAUSED);
+ gst_element_seek (self->priv->playbin,
+ self->priv->rate,
+ GST_FORMAT_TIME,
+ GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,
+ GST_SEEK_TYPE_SET,
+ 0.0,
+ GST_SEEK_TYPE_NONE,
+ 0.0);
+ }
+ else {
+ gint64 current_value;
+
+ current_value = (gint64) (gtk_adjustment_get_value (GTK_ADJUSTMENT (GET_WIDGET ("position_adjustment"))) / 100.0 * self->priv->duration);
+ gst_element_seek (self->priv->playbin,
+ self->priv->rate,
+ GST_FORMAT_TIME,
+ GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,
+ GST_SEEK_TYPE_SET,
+ current_value,
+ GST_SEEK_TYPE_NONE,
+ 0.0);
+ }
+ gst_element_set_state (self->priv->playbin, GST_STATE_PLAYING);
+ }
+ else
+ gst_element_set_state (self->priv->playbin, GST_STATE_PAUSED);
+}
+
+
+void
+gth_media_viewer_page_set_fit_if_larger (GthMediaViewerPage *self,
+ gboolean fit_if_larger)
+{
+ GtkAlign alignment;
+
+ self->priv->fit_if_larger = fit_if_larger;
+ if (self->priv->video_area != NULL) {
+ alignment = self->priv->fit_if_larger ? GTK_ALIGN_FILL : GTK_ALIGN_CENTER;
+ gtk_widget_set_valign (self->priv->video_area, alignment);
+ gtk_widget_set_halign (self->priv->video_area, alignment);
+
+ gth_window_change_action_state (GTH_WINDOW (self->priv->browser), "video-zoom-fit", self->priv->fit_if_larger);
+ }
+}
diff -Nru gthumb-3.8.3/extensions/gstreamer_tools/gth-media-viewer-page.h gthumb-3.9.1/extensions/gstreamer_tools/gth-media-viewer-page.h
--- gthumb-3.8.3/extensions/gstreamer_tools/gth-media-viewer-page.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/gstreamer_tools/gth-media-viewer-page.h 2020-03-07 19:03:13.423622800 +0000
@@ -54,7 +54,11 @@
void gth_media_viewer_page_get_video_fps (GthMediaViewerPage *self,
int *video_fps_n,
int *video_fps_d);
-GthFileData * gth_media_viewer_page_get_file_data (GthMediaViewerPage *self);
+GthFileData * gth_media_viewer_page_get_file_data (GthMediaViewerPage *self);
+void gth_media_viewer_page_toggle_play (GthMediaViewerPage *self);
+void gth_media_viewer_page_set_fit_if_larger
+ (GthMediaViewerPage *self,
+ gboolean fit_if_larger);
G_END_DECLS
diff -Nru gthumb-3.8.3/extensions/gstreamer_tools/main.c gthumb-3.9.1/extensions/gstreamer_tools/main.c
--- gthumb-3.8.3/extensions/gstreamer_tools/main.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/gstreamer_tools/main.c 2020-03-07 19:03:13.423622800 +0000
@@ -23,9 +23,16 @@
#include
#include
#include
+#include "callbacks.h"
#include "dlg-media-viewer-preferences.h"
#include "gth-metadata-provider-gstreamer.h"
#include "gth-media-viewer-page.h"
+#include "shortcuts.h"
+
+
+static GthShortcutCategory shortcut_categories[] = {
+ { GTH_SHORTCUT_CATEGORY_MEDIA_VIEWER, N_("Audio/Video Player"), 24 },
+};
GthMetadataCategory gstreamer_metadata_category[] = {
@@ -59,9 +66,11 @@
gthumb_extension_activate (void)
{
gth_main_register_object (GTH_TYPE_VIEWER_PAGE, NULL, GTH_TYPE_MEDIA_VIEWER_PAGE, NULL);
+ gth_main_register_shortcut_category (shortcut_categories, G_N_ELEMENTS (shortcut_categories));
gth_main_register_metadata_category (gstreamer_metadata_category);
gth_main_register_metadata_info_v (gstreamer_metadata_info);
gth_main_register_metadata_provider (GTH_TYPE_METADATA_PROVIDER_GSTREAMER);
+ gth_hook_add_callback ("gth-browser-construct", 10, G_CALLBACK (media_viewer__gth_browser_construct_cb), NULL);
}
diff -Nru gthumb-3.8.3/extensions/gstreamer_tools/meson.build gthumb-3.9.1/extensions/gstreamer_tools/meson.build
--- gthumb-3.8.3/extensions/gstreamer_tools/meson.build 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/gstreamer_tools/meson.build 2020-03-07 19:03:13.423622800 +0000
@@ -1,5 +1,6 @@
source_files = files(
'actions.c',
+ 'callbacks.c',
'dlg-media-viewer-preferences.c',
'gth-media-viewer-page.c',
'gth-metadata-provider-gstreamer.c',
diff -Nru gthumb-3.8.3/extensions/gstreamer_tools/preferences.h gthumb-3.9.1/extensions/gstreamer_tools/preferences.h
--- gthumb-3.8.3/extensions/gstreamer_tools/preferences.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/gstreamer_tools/preferences.h 2020-03-07 19:03:13.423622800 +0000
@@ -31,5 +31,6 @@
#define PREF_GSTREAMER_TOOLS_SCREESHOT_LOCATION "screenshot-location"
#define PREF_GSTREAMER_TOOLS_VOLUME "volume"
#define PREF_GSTREAMER_USE_HARDWARE_ACCEL "use-hardware-acceleration"
+#define PREF_GSTREAMER_ZOOM_TO_FIT "zoom-to-fit"
#endif /* PREFERENCES_H */
diff -Nru gthumb-3.8.3/extensions/gstreamer_tools/shortcuts.h gthumb-3.9.1/extensions/gstreamer_tools/shortcuts.h
--- gthumb-3.8.3/extensions/gstreamer_tools/shortcuts.h 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/extensions/gstreamer_tools/shortcuts.h 2020-03-07 19:03:13.423622800 +0000
@@ -0,0 +1,27 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * GThumb
+ *
+ * Copyright (C) 2019 Free Software Foundation, Inc.
+ *
+ * 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, see .
+ */
+
+#ifndef IMAGE_VIEWER_SHORTCUTS_H
+#define IMAGE_VIEWER_SHORTCUTS_H
+
+#define GTH_SHORTCUT_CATEGORY_MEDIA_VIEWER "media-viewer"
+
+#endif /* IMAGE_VIEWER_SHORTCUTS_H */
diff -Nru gthumb-3.8.3/extensions/image_print/callbacks.c gthumb-3.9.1/extensions/image_print/callbacks.c
--- gthumb-3.8.3/extensions/image_print/callbacks.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_print/callbacks.c 2020-03-07 19:03:13.423622800 +0000
@@ -34,8 +34,8 @@
};
-static const GthAccelerator accelerators[] = {
- { "win.print", "P" }
+static const GthShortcut shortcuts[] = {
+ { "print", N_("Print"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_FILE_MANAGER, "p" },
};
@@ -52,25 +52,23 @@
GTH_MENU_MANAGER_NEW_MERGE_ID,
_("Print"),
"win.print",
- "P",
+ NULL,
NULL);
gth_menu_manager_append_entry (gth_browser_get_menu_manager (browser, GTH_BROWSER_MENU_MANAGER_FILE_LIST_OPEN_ACTIONS),
GTH_MENU_MANAGER_NEW_MERGE_ID,
_("Print"),
"win.print",
- "P",
+ NULL,
NULL);
- gth_window_add_accelerators (GTH_WINDOW (browser),
- accelerators,
- G_N_ELEMENTS (accelerators));
+ gth_window_add_shortcuts (GTH_WINDOW (browser),
+ shortcuts,
+ G_N_ELEMENTS (shortcuts));
}
void
-ip__gth_browser_update_sensitivity_cb (GthBrowser *browser)
+ip__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected)
{
- int n_selected;
-
- n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
g_object_set (g_action_map_lookup_action (G_ACTION_MAP (browser), "print"), "enabled", n_selected > 0, NULL);
}
diff -Nru gthumb-3.8.3/extensions/image_print/callbacks.h gthumb-3.9.1/extensions/image_print/callbacks.h
--- gthumb-3.8.3/extensions/image_print/callbacks.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_print/callbacks.h 2020-03-07 19:03:13.423622800 +0000
@@ -25,6 +25,7 @@
#include
void ip__gth_browser_construct_cb (GthBrowser *browser);
-void ip__gth_browser_update_sensitivity_cb (GthBrowser *browser);
+void ip__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected);
#endif /* CALLBACKS_H */
diff -Nru gthumb-3.8.3/extensions/image_print/data/ui/print-preferences.ui gthumb-3.9.1/extensions/image_print/data/ui/print-preferences.ui
--- gthumb-3.8.3/extensions/image_print/data/ui/print-preferences.ui 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_print/data/ui/print-preferences.ui 2020-03-07 19:03:13.426956000 +0000
@@ -1,7 +1,7 @@
-
+
-
+
True
False
@@ -11,9 +11,9 @@
True
False
- 0
Fonts
True
+ 0
@@ -25,123 +25,114 @@
-
+
True
False
- 12
+ 12
+ vertical
-
+
True
False
- vertical
+ 6
+ 6
+
+
+ True
+ False
+ Caption:
+ 0
+
+
+ 0
+ 0
+
+
-
+
True
False
- 6
- 6
-
-
- True
- False
- 0
- Caption:
-
-
- 0
- 0
-
-
-
-
- True
- False
- 0
- _Header:
- True
- header_fontbutton
-
-
- 0
- 1
-
-
-
-
- True
- False
- 0
- _Footer:
- True
- footer_fontbutton
-
-
- 0
- 2
-
-
-
-
- False
- True
- True
- True
- Sans 12
-
- False
- Select Caption Font
- True
- True
-
-
- 1
- 0
-
-
-
-
-
- 1
- 1
-
-
-
-
-
- 1
- 2
-
-
-
-
- False
- True
- 0
+ _Header:
+ True
+ header_fontbutton
+ 0
+
+
+ 0
+ 1
+
+
+
+
+ True
+ False
+ _Footer:
+ True
+ footer_fontbutton
+ 0
+
+
+ 0
+ 2
+
+
+
+
+ True
+ True
+ True
+ Sans 12
+
+ False
+ Select Caption Font
+ True
+ True
+
+
+ 1
+ 0
+
+
+
+
+
+ 1
+ 1
+
+
+
+
+
+ 1
+ 2
+
+ False
+ True
+ 0
+
diff -Nru gthumb-3.8.3/extensions/image_print/gth-image-print-job.c gthumb-3.9.1/extensions/image_print/gth-image-print-job.c
--- gthumb-3.8.3/extensions/image_print/gth-image-print-job.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_print/gth-image-print-job.c 2020-03-07 19:03:13.426956000 +0000
@@ -1230,7 +1230,7 @@
{
GthImagePrintJob *self = user_data;
- _g_strset (&self->priv->header_template, gtk_entry_get_text (GTK_ENTRY (editable)));
+ _g_str_set (&self->priv->header_template, gtk_entry_get_text (GTK_ENTRY (editable)));
if (g_strcmp0 (self->priv->header_template, "") == 0) {
g_free (self->priv->header_template);
self->priv->header_template = NULL;
@@ -1246,7 +1246,7 @@
{
GthImagePrintJob *self = user_data;
- _g_strset (&self->priv->footer_template, gtk_entry_get_text (GTK_ENTRY (editable)));
+ _g_str_set (&self->priv->footer_template, gtk_entry_get_text (GTK_ENTRY (editable)));
if (g_strcmp0 (self->priv->footer_template, "") == 0) {
g_free (self->priv->footer_template);
self->priv->footer_template = NULL;
@@ -1420,7 +1420,7 @@
GthImagePrintJob *self = user_data;
self->priv->builder = _gtk_builder_new_from_file ("print-layout.ui", "image_print");
- self->priv->caption_chooser = gth_metadata_chooser_new (GTH_METADATA_ALLOW_IN_PRINT);
+ self->priv->caption_chooser = gth_metadata_chooser_new (GTH_METADATA_ALLOW_IN_PRINT, TRUE);
gtk_widget_show (self->priv->caption_chooser);
gtk_container_add (GTK_CONTAINER (GET_WIDGET ("caption_scrolledwindow")), self->priv->caption_chooser);
@@ -1788,7 +1788,7 @@
char *uri;
if (self->priv->n_images == 1)
- basename = _g_uri_remove_extension (g_file_info_get_name (self->priv->images[0]->file_data->info));
+ basename = _g_path_remove_extension (g_file_info_get_name (self->priv->images[0]->file_data->info));
else
basename = g_strdup (g_file_info_get_edit_name (gth_browser_get_location_data (self->priv->browser)->info));
default_dir = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES);
diff -Nru gthumb-3.8.3/extensions/image_print/image_print.extension.desktop.in.in gthumb-3.9.1/extensions/image_print/image_print.extension.desktop.in.in
--- gthumb-3.8.3/extensions/image_print/image_print.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_print/image_print.extension.desktop.in.in 2020-03-07 19:03:13.426956000 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Image print
Comment=Allow to print images choosing the page layout.
-Authors=gthumb development team
-Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2009-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Icon=document-print
Category=List-Tool
diff -Nru gthumb-3.8.3/extensions/image_print/main.c gthumb-3.9.1/extensions/image_print/main.c
--- gthumb-3.8.3/extensions/image_print/main.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_print/main.c 2020-03-07 19:03:13.426956000 +0000
@@ -31,7 +31,7 @@
gthumb_extension_activate (void)
{
gth_hook_add_callback ("gth-browser-construct", 9, G_CALLBACK (ip__gth_browser_construct_cb), NULL);
- gth_hook_add_callback ("gth-browser-update-sensitivity", 10, G_CALLBACK (ip__gth_browser_update_sensitivity_cb), NULL);
+ gth_hook_add_callback ("gth-browser-selection-changed", 10, G_CALLBACK (ip__gth_browser_selection_changed_cb), NULL);
gth_hook_add_callback ("dlg-preferences-construct", 40, G_CALLBACK (ip__dlg_preferences_construct_cb), NULL);
gth_hook_add_callback ("dlg-preferences-apply", 10, G_CALLBACK (ip__dlg_preferences_apply_cb), NULL);
}
diff -Nru gthumb-3.8.3/extensions/image_rotation/callbacks.c gthumb-3.9.1/extensions/image_rotation/callbacks.c
--- gthumb-3.8.3/extensions/image_rotation/callbacks.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_rotation/callbacks.c 2020-03-07 19:03:13.426956000 +0000
@@ -27,6 +27,7 @@
#include
#include
#include
+#include
#include "actions.h"
#include "callbacks.h"
@@ -42,15 +43,21 @@
};
+static const GthShortcut shortcuts[] = {
+ { "rotate-right", N_("Rotate right"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_LIST_TOOLS, "bracketright" },
+ { "rotate-left", N_("Rotate left"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER, GTH_SHORTCUT_CATEGORY_LIST_TOOLS, "bracketleft" },
+};
+
+
static const GthMenuEntry tools1_action_entries[] = {
- { N_("Rotate Left"), "win.rotate-left", "bracketleft", "object-rotate-left-symbolic" },
- { N_("Rotate Right"), "win.rotate-right", "bracketright", "object-rotate-right-symbolic" },
+ { N_("Rotate Left"), "win.rotate-left", NULL, "object-rotate-left-symbolic" },
+ { N_("Rotate Right"), "win.rotate-right", NULL, "object-rotate-right-symbolic" },
};
static const GthMenuEntry tools2_action_entries[] = {
- { N_("Rotate Physically"), "win.apply-orientation", NULL },
- { N_("Reset the EXIF Orientation"), "win.reset-orientation", NULL }
+ { N_("Rotate Physically"), "win.apply-orientation" },
+ { N_("Reset the EXIF Orientation"), "win.reset-orientation" }
};
@@ -84,6 +91,11 @@
actions,
G_N_ELEMENTS (actions),
browser);
+
+ gth_window_add_shortcuts (GTH_WINDOW (browser),
+ shortcuts,
+ G_N_ELEMENTS (shortcuts));
+
gth_menu_manager_append_entries (gth_browser_get_menu_manager (browser, GTH_BROWSER_MENU_MANAGER_TOOLS),
tools1_action_entries,
G_N_ELEMENTS (tools1_action_entries));
@@ -94,12 +106,11 @@
void
-ir__gth_browser_update_sensitivity_cb (GthBrowser *browser)
+ir__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected)
{
- int n_selected;
gboolean sensitive;
- n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
sensitive = n_selected > 0;
gth_window_enable_action (GTH_WINDOW (browser), "rotate-right", sensitive);
gth_window_enable_action (GTH_WINDOW (browser), "rotate-left", sensitive);
@@ -108,31 +119,6 @@
}
-gpointer
-ir__gth_browser_file_list_key_press_cb (GthBrowser *browser,
- GdkEventKey *event)
-{
- gpointer result = NULL;
-
- switch (event->keyval) {
- case GDK_KEY_bracketright:
- gth_browser_activate_rotate_right (NULL, NULL, browser);
- result = GINT_TO_POINTER (1);
- break;
-
- case GDK_KEY_bracketleft:
- gth_browser_activate_rotate_left (NULL, NULL, browser);
- result = GINT_TO_POINTER (1);
- break;
-
- default:
- break;
- }
-
- return result;
-}
-
-
static void
viewer_image_changed_cb (GtkWidget *widget,
GthBrowser *browser)
diff -Nru gthumb-3.8.3/extensions/image_rotation/callbacks.h gthumb-3.9.1/extensions/image_rotation/callbacks.h
--- gthumb-3.8.3/extensions/image_rotation/callbacks.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_rotation/callbacks.h 2020-03-07 19:03:13.426956000 +0000
@@ -25,9 +25,8 @@
#include
void ir__gth_browser_construct_cb (GthBrowser *browser);
-void ir__gth_browser_update_sensitivity_cb (GthBrowser *browser);
-gpointer ir__gth_browser_file_list_key_press_cb (GthBrowser *browser,
- GdkEventKey *event);
+void ir__gth_browser_selection_changed_cb (GthBrowser *browser,
+ int n_selected);
void ir__gth_browser_activate_viewer_page_cb (GthBrowser *browser);
void ir__gth_browser_deactivate_viewer_page_cb (GthBrowser *browser);
diff -Nru gthumb-3.8.3/extensions/image_rotation/image_rotation.extension.desktop.in.in gthumb-3.9.1/extensions/image_rotation/image_rotation.extension.desktop.in.in
--- gthumb-3.8.3/extensions/image_rotation/image_rotation.extension.desktop.in.in 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_rotation/image_rotation.extension.desktop.in.in 2020-03-07 19:03:13.426956000 +0000
@@ -1,8 +1,8 @@
[Extension]
Name=Image rotation
Comment=Rotate images without data loss.
-Authors=gthumb development team
-Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
+Authors=gThumb Development Team
+Copyright=Copyright © 2009-2020 The Free Software Foundation, Inc.
Version=@GTHUMB_VERSION@
Category=List-Tool
diff -Nru gthumb-3.8.3/extensions/image_rotation/main.c gthumb-3.9.1/extensions/image_rotation/main.c
--- gthumb-3.8.3/extensions/image_rotation/main.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_rotation/main.c 2020-03-07 19:03:13.426956000 +0000
@@ -38,8 +38,7 @@
gth_hook_register ("jpegtran-after", 1);
gth_hook_add_callback ("gth-browser-construct", 10, G_CALLBACK (ir__gth_browser_construct_cb), NULL);
- gth_hook_add_callback ("gth-browser-update-sensitivity", 10, G_CALLBACK (ir__gth_browser_update_sensitivity_cb), NULL);
- gth_hook_add_callback ("gth-browser-file-list-key-press", 10, G_CALLBACK (ir__gth_browser_file_list_key_press_cb), NULL);
+ gth_hook_add_callback ("gth-browser-selection-changed", 10, G_CALLBACK (ir__gth_browser_selection_changed_cb), NULL);
gth_hook_add_callback ("gth-browser-activate-viewer-page", 10, G_CALLBACK (ir__gth_browser_activate_viewer_page_cb), NULL);
gth_hook_add_callback ("gth-browser-deactivate-viewer-page", 10, G_CALLBACK (ir__gth_browser_deactivate_viewer_page_cb), NULL);
}
diff -Nru gthumb-3.8.3/extensions/image_viewer/actions.c gthumb-3.9.1/extensions/image_viewer/actions.c
--- gthumb-3.8.3/extensions/image_viewer/actions.c 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_viewer/actions.c 2020-03-07 19:03:13.426956000 +0000
@@ -24,6 +24,20 @@
#include
#include "actions.h"
#include "gth-image-viewer-page.h"
+#include "preferences.h"
+
+
+
+static GthImageViewerPage *
+get_image_viewer_page (GthBrowser *browser)
+{
+ GthViewerPage *viewer_page = gth_browser_get_viewer_page (browser);
+
+ if ((viewer_page != NULL) && GTH_IS_IMAGE_VIEWER_PAGE (viewer_page))
+ return GTH_IMAGE_VIEWER_PAGE (viewer_page);
+ else
+ return NULL;
+}
void
@@ -32,9 +46,12 @@
gpointer user_data)
{
GthBrowser *browser = user_data;
- GthImageViewerPage *self = GTH_IMAGE_VIEWER_PAGE (gth_browser_get_viewer_page (browser));
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
- gth_image_viewer_zoom_in (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (self)));
+ gth_image_viewer_zoom_in (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page)));
}
@@ -44,9 +61,12 @@
gpointer user_data)
{
GthBrowser *browser = user_data;
- GthImageViewerPage *self = GTH_IMAGE_VIEWER_PAGE (gth_browser_get_viewer_page (browser));
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
- gth_image_viewer_zoom_out (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (self)));
+ if (viewer_page == NULL)
+ return;
+
+ gth_image_viewer_zoom_out (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page)));
}
@@ -56,9 +76,42 @@
gpointer user_data)
{
GthBrowser *browser = user_data;
- GthImageViewerPage *self = GTH_IMAGE_VIEWER_PAGE (gth_browser_get_viewer_page (browser));
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
+
+ gth_image_viewer_set_zoom (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page)), 1.0);
+}
+
+
+void
+gth_browser_activate_image_zoom_200 (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
+
+ gth_image_viewer_set_zoom (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page)), 2.0);
+}
+
+
+void
+gth_browser_activate_image_zoom_300 (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
- gth_image_viewer_set_zoom (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (self)), 1.0);
+ gth_image_viewer_set_zoom (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page)), 3.0);
}
@@ -68,9 +121,12 @@
gpointer user_data)
{
GthBrowser *browser = user_data;
- GthImageViewerPage *self = GTH_IMAGE_VIEWER_PAGE (gth_browser_get_viewer_page (browser));
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
- gth_image_viewer_set_fit_mode (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (self)), GTH_FIT_SIZE);
+ if (viewer_page == NULL)
+ return;
+
+ gth_image_viewer_set_fit_mode (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page)), GTH_FIT_SIZE);
}
@@ -80,9 +136,12 @@
gpointer user_data)
{
GthBrowser *browser = user_data;
- GthImageViewerPage *self = GTH_IMAGE_VIEWER_PAGE (gth_browser_get_viewer_page (browser));
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
- gth_image_viewer_set_fit_mode (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (self)), GTH_FIT_SIZE_IF_LARGER);
+ gth_image_viewer_set_fit_mode (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page)), GTH_FIT_SIZE_IF_LARGER);
}
@@ -92,9 +151,27 @@
gpointer user_data)
{
GthBrowser *browser = user_data;
- GthImageViewerPage *self = GTH_IMAGE_VIEWER_PAGE (gth_browser_get_viewer_page (browser));
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
- gth_image_viewer_set_fit_mode (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (self)), GTH_FIT_WIDTH);
+ gth_image_viewer_set_fit_mode (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page)), GTH_FIT_WIDTH);
+}
+
+
+void
+gth_browser_activate_image_zoom_fit_width_if_larger (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
+
+ gth_image_viewer_set_fit_mode (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page)), GTH_FIT_WIDTH_IF_LARGER);
}
@@ -104,9 +181,27 @@
gpointer user_data)
{
GthBrowser *browser = user_data;
- GthImageViewerPage *self = GTH_IMAGE_VIEWER_PAGE (gth_browser_get_viewer_page (browser));
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
- gth_image_viewer_set_fit_mode (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (self)), GTH_FIT_HEIGHT);
+ gth_image_viewer_set_fit_mode (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page)), GTH_FIT_HEIGHT);
+}
+
+
+void
+gth_browser_activate_image_zoom_fit_height_if_larger (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
+
+ gth_image_viewer_set_fit_mode (GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page)), GTH_FIT_HEIGHT_IF_LARGER);
}
@@ -115,8 +210,13 @@
GVariant *parameter,
gpointer user_data)
{
- GthBrowser *browser = user_data;
- gth_image_viewer_page_undo (GTH_IMAGE_VIEWER_PAGE (gth_browser_get_viewer_page (browser)));
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
+
+ gth_image_viewer_page_undo (viewer_page);
}
@@ -125,8 +225,13 @@
GVariant *parameter,
gpointer user_data)
{
- GthBrowser *browser = user_data;
- gth_image_viewer_page_redo (GTH_IMAGE_VIEWER_PAGE (gth_browser_get_viewer_page (browser)));
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
+
+ gth_image_viewer_page_redo (viewer_page);
}
@@ -135,8 +240,13 @@
GVariant *parameter,
gpointer user_data)
{
- GthBrowser *browser = user_data;
- gth_image_viewer_page_copy_image (GTH_IMAGE_VIEWER_PAGE (gth_browser_get_viewer_page (browser)));
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
+
+ gth_image_viewer_page_copy_image (viewer_page);
}
@@ -145,8 +255,13 @@
GVariant *parameter,
gpointer user_data)
{
- GthBrowser *browser = user_data;
- gth_image_viewer_page_paste_image (GTH_IMAGE_VIEWER_PAGE (gth_browser_get_viewer_page (browser)));
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
+
+ gth_image_viewer_page_paste_image (viewer_page);
}
@@ -155,10 +270,50 @@
GVariant *state,
gpointer user_data)
{
- GthBrowser *browser = user_data;
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+
+ if (viewer_page == NULL)
+ return;
g_simple_action_set_state (action, state);
- gth_image_viewer_page_apply_icc_profile (GTH_IMAGE_VIEWER_PAGE (gth_browser_get_viewer_page (browser)), g_variant_get_boolean (state));
+ gth_image_viewer_page_apply_icc_profile (viewer_page, g_variant_get_boolean (state));
+}
+
+
+void
+gth_browser_activate_transparency_style (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+ const char *state;
+ GthTransparencyStyle style;
+ GSettings *settings;
+
+ if (viewer_page == NULL)
+ return;
+
+ state = g_variant_get_string (parameter, NULL);
+ if (state == NULL)
+ return;
+
+ g_simple_action_set_state (action, g_variant_new_string (state));
+
+ if (strcmp (state, "white") == 0)
+ style = GTH_TRANSPARENCY_STYLE_WHITE;
+ else if (strcmp (state, "gray") == 0)
+ style = GTH_TRANSPARENCY_STYLE_GRAY;
+ else if (strcmp (state, "black") == 0)
+ style = GTH_TRANSPARENCY_STYLE_BLACK;
+ else
+ style = GTH_TRANSPARENCY_STYLE_CHECKERED;
+
+ settings = g_settings_new (GTHUMB_IMAGE_VIEWER_SCHEMA);
+ g_settings_set_enum (settings, PREF_IMAGE_VIEWER_TRANSPARENCY_STYLE, style);
+
+ g_object_unref (settings);
}
@@ -167,9 +322,13 @@
GVariant *parameter,
gpointer user_data)
{
- GthBrowser *browser = user_data;
- const char *state;
- GthImageViewer *image_viewer;
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+ const char *state;
+ GthImageViewer *image_viewer;
+
+ if (viewer_page == NULL)
+ return;
state = g_variant_get_string (parameter, NULL);
g_simple_action_set_state (action, g_variant_new_string (state));
@@ -177,7 +336,7 @@
if (state == NULL)
return;
- image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (GTH_IMAGE_VIEWER_PAGE (gth_browser_get_viewer_page (browser))));
+ image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page));
if (strcmp (state, "automatic") == 0)
gth_image_viewer_set_fit_mode (image_viewer, GTH_FIT_SIZE_IF_LARGER);
else if (strcmp (state, "fit") == 0)
@@ -202,20 +361,22 @@
GVariant *state,
gpointer user_data)
{
- GthBrowser *browser = user_data;
- GthViewerPage *viewer_page;
- GthImageViewer *image_viewer;
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+ GthImageViewer *image_viewer;
+
+ if (viewer_page == NULL)
+ return;
g_simple_action_set_state (action, state);
- viewer_page = gth_browser_get_viewer_page (browser);
- image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (GTH_IMAGE_VIEWER_PAGE (viewer_page)));
+ image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page));
if (gth_image_viewer_is_playing_animation (image_viewer))
gth_image_viewer_stop_animation (image_viewer);
else
gth_image_viewer_start_animation (image_viewer);
- gth_viewer_page_update_sensitivity (viewer_page);
+ gth_viewer_page_update_sensitivity (GTH_VIEWER_PAGE (viewer_page));
}
@@ -224,11 +385,162 @@
GVariant *state,
gpointer user_data)
{
- GthBrowser *browser = user_data;
- GthViewerPage *viewer_page;
- GthImageViewer *image_viewer;
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+ GthImageViewer *image_viewer;
- viewer_page = gth_browser_get_viewer_page (browser);
- image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (GTH_IMAGE_VIEWER_PAGE (viewer_page)));
+ if (viewer_page == NULL)
+ return;
+
+ image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page));
gth_image_viewer_step_animation (image_viewer);
}
+
+
+void
+gth_browser_activate_scroll_step_left (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+ GthImageViewer *image_viewer;
+
+ if (viewer_page == NULL)
+ return;
+
+ image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page));
+ gth_image_viewer_scroll_step_x (image_viewer, FALSE);
+}
+
+
+void
+gth_browser_activate_scroll_step_right (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+ GthImageViewer *image_viewer;
+
+ if (viewer_page == NULL)
+ return;
+
+ image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page));
+ gth_image_viewer_scroll_step_x (image_viewer, TRUE);
+}
+
+
+void
+gth_browser_activate_scroll_step_up (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+ GthImageViewer *image_viewer;
+
+ if (viewer_page == NULL)
+ return;
+
+ image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page));
+ gth_image_viewer_scroll_step_y (image_viewer, FALSE);
+}
+
+void
+gth_browser_activate_scroll_step_down (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+ GthImageViewer *image_viewer;
+
+ if (viewer_page == NULL)
+ return;
+
+ image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page));
+ gth_image_viewer_scroll_step_y (image_viewer, TRUE);
+}
+
+void
+gth_browser_activate_scroll_page_left (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+ GthImageViewer *image_viewer;
+
+ if (viewer_page == NULL)
+ return;
+
+ image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page));
+ gth_image_viewer_scroll_page_x (image_viewer, FALSE);
+}
+
+void
+gth_browser_activate_scroll_page_right (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+ GthImageViewer *image_viewer;
+
+ if (viewer_page == NULL)
+ return;
+
+ image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page));
+ gth_image_viewer_scroll_page_x (image_viewer, TRUE);
+}
+
+void
+gth_browser_activate_scroll_page_up (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+ GthImageViewer *image_viewer;
+
+ if (viewer_page == NULL)
+ return;
+
+ image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page));
+ gth_image_viewer_scroll_page_y (image_viewer, FALSE);
+}
+
+void
+gth_browser_activate_scroll_page_down (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+ GthImageViewer *image_viewer;
+
+ if (viewer_page == NULL)
+ return;
+
+ image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page));
+ gth_image_viewer_scroll_page_y (image_viewer, TRUE);
+}
+
+
+void
+gth_browser_activate_scroll_to_center (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ GthBrowser *browser = user_data;
+ GthImageViewerPage *viewer_page = get_image_viewer_page (browser);
+ GthImageViewer *image_viewer;
+
+ if (viewer_page == NULL)
+ return;
+
+ image_viewer = GTH_IMAGE_VIEWER (gth_image_viewer_page_get_image_viewer (viewer_page));
+ gth_image_viewer_scroll_to_center (image_viewer);
+}
+
diff -Nru gthumb-3.8.3/extensions/image_viewer/actions.h gthumb-3.9.1/extensions/image_viewer/actions.h
--- gthumb-3.8.3/extensions/image_viewer/actions.h 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_viewer/actions.h 2020-03-07 19:03:13.426956000 +0000
@@ -27,10 +27,14 @@
DEF_ACTION_CALLBACK (gth_browser_activate_image_zoom_in)
DEF_ACTION_CALLBACK (gth_browser_activate_image_zoom_out)
DEF_ACTION_CALLBACK (gth_browser_activate_image_zoom_100)
+DEF_ACTION_CALLBACK (gth_browser_activate_image_zoom_200)
+DEF_ACTION_CALLBACK (gth_browser_activate_image_zoom_300)
DEF_ACTION_CALLBACK (gth_browser_activate_image_zoom_fit)
DEF_ACTION_CALLBACK (gth_browser_activate_image_zoom_fit_if_larger)
DEF_ACTION_CALLBACK (gth_browser_activate_image_zoom_fit_width)
+DEF_ACTION_CALLBACK (gth_browser_activate_image_zoom_fit_width_if_larger)
DEF_ACTION_CALLBACK (gth_browser_activate_image_zoom_fit_height)
+DEF_ACTION_CALLBACK (gth_browser_activate_image_zoom_fit_height_if_larger)
DEF_ACTION_CALLBACK (gth_browser_activate_image_undo)
DEF_ACTION_CALLBACK (gth_browser_activate_image_redo)
DEF_ACTION_CALLBACK (gth_browser_activate_copy_image)
@@ -39,5 +43,15 @@
DEF_ACTION_CALLBACK (gth_browser_activate_image_zoom)
DEF_ACTION_CALLBACK (gth_browser_activate_toggle_animation)
DEF_ACTION_CALLBACK (gth_browser_activate_step_animation)
+DEF_ACTION_CALLBACK (gth_browser_activate_transparency_style)
+DEF_ACTION_CALLBACK (gth_browser_activate_scroll_step_left)
+DEF_ACTION_CALLBACK (gth_browser_activate_scroll_step_right)
+DEF_ACTION_CALLBACK (gth_browser_activate_scroll_step_up)
+DEF_ACTION_CALLBACK (gth_browser_activate_scroll_step_down)
+DEF_ACTION_CALLBACK (gth_browser_activate_scroll_page_left)
+DEF_ACTION_CALLBACK (gth_browser_activate_scroll_page_right)
+DEF_ACTION_CALLBACK (gth_browser_activate_scroll_page_up)
+DEF_ACTION_CALLBACK (gth_browser_activate_scroll_page_down)
+DEF_ACTION_CALLBACK (gth_browser_activate_scroll_to_center)
#endif /* ACTIONS_H */
diff -Nru gthumb-3.8.3/extensions/image_viewer/callbacks.c gthumb-3.9.1/extensions/image_viewer/callbacks.c
--- gthumb-3.8.3/extensions/image_viewer/callbacks.c 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/extensions/image_viewer/callbacks.c 2020-03-07 19:03:13.426956000 +0000
@@ -0,0 +1,70 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * GThumb
+ *
+ * Copyright (C) 2019 Free Software Foundation, Inc.
+ *
+ * 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, see .
+ */
+
+
+#include
+#include
+#include
+#include
+#include "callbacks.h"
+#include "shortcuts.h"
+
+
+static const GthShortcut shortcuts[] = {
+ { "image-zoom-in", N_("Zoom in"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_VIEWER, "plus" },
+ { "image-zoom-out", N_("Zoom out"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_VIEWER, "minus" },
+ { "image-zoom-100", N_("Zoom 100%"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_VIEWER, "1" },
+ { "image-zoom-200", N_("Zoom 200%"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_VIEWER, "2" },
+ { "image-zoom-300", N_("Zoom 300%"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_VIEWER, "3" },
+
+ { "image-zoom-fit", N_("Zoom to fit"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_VIEWER, "x" },
+ { "image-zoom-fit-if-larger", N_("Zoom to fit if larger"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_VIEWER, "x" },
+ { "image-zoom-fit-width", N_("Zoom to fit width"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_VIEWER, "w" },
+ { "image-zoom-fit-width-if-larger", N_("Zoom to fit width if larger"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_VIEWER, "w" },
+ { "image-zoom-fit-height", N_("Zoom to fit height"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_VIEWER, "h" },
+ { "image-zoom-fit-height-if-larger", N_("Zoom to fit height if larger"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_VIEWER, "h" },
+
+ { "image-undo", N_("Undo edit"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_EDITOR, "z" },
+ { "image-redo", N_("Redo edit"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_IMAGE_EDITOR, "z" },
+
+ { "scroll-step-left", N_("Scroll left"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_SCROLL_IMAGE, "Left" },
+ { "scroll-step-right", N_("Scroll right"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_SCROLL_IMAGE, "Right" },
+ { "scroll-step-up", N_("Scroll up"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_SCROLL_IMAGE, "Up" },
+ { "scroll-step-down", N_("Scroll down"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_SCROLL_IMAGE, "Down" },
+
+ { "scroll-page-left", N_("Scroll left fast"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_SCROLL_IMAGE, "Left" },
+ { "scroll-page-right", N_("Scroll right fast"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_SCROLL_IMAGE, "Right" },
+ { "scroll-page-up", N_("Scroll up fast"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_SCROLL_IMAGE, "Up" },
+ { "scroll-page-down", N_("Scroll down fast"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_SCROLL_IMAGE, "Down" },
+
+ { "scroll-to-center", N_("Scroll to center"), GTH_SHORTCUT_CONTEXT_VIEWER, GTH_SHORTCUT_CATEGORY_SCROLL_IMAGE, "Down" },
+};
+
+
+void
+image_viewer__gth_browser_construct_cb (GthBrowser *browser)
+{
+ g_return_if_fail (GTH_IS_BROWSER (browser));
+
+ gth_window_add_shortcuts (GTH_WINDOW (browser),
+ shortcuts,
+ G_N_ELEMENTS (shortcuts));
+}
diff -Nru gthumb-3.8.3/extensions/image_viewer/callbacks.h gthumb-3.9.1/extensions/image_viewer/callbacks.h
--- gthumb-3.8.3/extensions/image_viewer/callbacks.h 1970-01-01 00:00:00.000000000 +0000
+++ gthumb-3.9.1/extensions/image_viewer/callbacks.h 2020-03-07 19:03:13.426956000 +0000
@@ -0,0 +1,29 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * GThumb
+ *
+ * Copyright (C) 2019 Free Software Foundation, Inc.
+ *
+ * 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, see .
+ */
+
+#ifndef CALLBACKS_H
+#define CALLBACKS_H
+
+#include
+
+void image_viewer__gth_browser_construct_cb (GthBrowser *browser);
+
+#endif /* CALLBACKS_H */
diff -Nru gthumb-3.8.3/extensions/image_viewer/data/ui/image-viewer-preferences.ui gthumb-3.9.1/extensions/image_viewer/data/ui/image-viewer-preferences.ui
--- gthumb-3.8.3/extensions/image_viewer/data/ui/image-viewer-preferences.ui 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_viewer/data/ui/image-viewer-preferences.ui 2020-03-07 19:03:13.426956000 +0000
@@ -1,12 +1,12 @@
-
+
-
+
True
False
vertical
- 12
+ 20
True
@@ -17,9 +17,9 @@
True
False
- 0
After loading an image:
True
+ 0
@@ -31,39 +31,28 @@
-
+
True
False
- 12
+ 12
+ vertical
+ 6
-
+
True
False
- vertical
- 6
-
+
True
False
-
-
- True
- False
-
- - Set to actual size
- - Keep previous zoom
- - Fit to window
- - Fit to window if larger
- - Fit to width
- - Fit to width if larger
-
-
-
- False
- True
- 0
-
-
+
+ - Set to actual size
+ - Keep previous zoom
+ - Fit to window
+ - Fit to window if larger
+ - Fit to width
+ - Fit to width if larger
+
False
@@ -71,23 +60,27 @@
0
-
-
- Reset scrollbar positions
- False
- True
- True
- False
- 0
- True
-
-
- False
- True
- 1
-
-
+
+ False
+ True
+ 0
+
+
+
+
+ Reset scrollbar positions
+ True
+ True
+ False
+ start
+ True
+
+
+ False
+ True
+ 1
+
@@ -104,6 +97,84 @@
+
+ True
+ False
+ vertical
+ 6
+
+
+ True
+ False
+ Mouse wheel action:
+ True
+ 0
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 12
+ vertical
+ 6
+
+
+ Change image
+ True
+ True
+ False
+ start
+ True
+ True
+ True
+
+
+ False
+ True
+ 0
+
+
+
+
+ Zoom image
+ True
+ True
+ False
+ start
+ True
+ True
+ scroll_event_change_image_radiobutton
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
True
False
@@ -113,9 +184,9 @@
True
False
- 0
Zoom quality:
True
+ 0
@@ -127,25 +198,105 @@
-
+
True
False
- 12
+ 12
+ vertical
+ 6
+
+
+ _High
+ True
+ True
+ False
+ start
+ True
+ True
+ True
+
+
+ False
+ True
+ 0
+
+
-
+
+ _Low
+ True
+ True
+ False
+ start
+ True
+ True
+ True
+ zoom_quality_high_radiobutton
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ False
+ vertical
+ 6
+
+
+ True
+ False
+ Transparency:
+ True
+ 0
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 12
+ vertical
+ 6
+
+
True
False
- vertical
-
- _High
+
True
- True
- False
- True
- 0
- True
- True
+ False
+
+ - Checkered
+ - White
+ - Gray
+ - Black
+
False
@@ -153,25 +304,12 @@
0
-
-
- _Low
- True
- True
- False
- True
- 0
- True
- True
- zoom_quality_high_radiobutton
-
-
- False
- True
- 1
-
-
+
+ False
+ True
+ 0
+
@@ -184,7 +322,7 @@
False
True
- 1
+ 3
diff -Nru gthumb-3.8.3/extensions/image_viewer/data/ui/toolbar-zoom-menu.ui gthumb-3.9.1/extensions/image_viewer/data/ui/toolbar-zoom-menu.ui
--- gthumb-3.8.3/extensions/image_viewer/data/ui/toolbar-zoom-menu.ui 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/image_viewer/data/ui/toolbar-zoom-menu.ui 2020-03-07 19:03:13.426956000 +0000
@@ -1,5 +1,52 @@
+
@@ -358,8 +358,8 @@
1
2
- 7
- 8
+ 8
+ 9
GTK_FILL
@@ -374,8 +374,8 @@
- 8
- 9
+ 9
+ 10
GTK_FILL
@@ -392,8 +392,8 @@
1
2
- 8
- 9
+ 9
+ 10
GTK_FILL
@@ -476,8 +476,8 @@
- 9
- 10
+ 10
+ 11
GTK_FILL
@@ -494,8 +494,42 @@
1
2
- 9
- 10
+ 10
+ 11
+ GTK_FILL
+
+
+
+
+ True
+ False
+ %T
+ 0
+
+
+
+
+
+ 7
+ 8
+ GTK_FILL
+
+
+
+
+ True
+ False
+ The current date and time
+ 0
+
+
+
+
+
+ 1
+ 2
+ 7
+ 8
GTK_FILL
diff -Nru gthumb-3.8.3/extensions/list_tools/data/ui/tools-menu.ui gthumb-3.9.1/extensions/list_tools/data/ui/tools-menu.ui
--- gthumb-3.8.3/extensions/list_tools/data/ui/tools-menu.ui 2019-12-23 18:51:13.000000000 +0000
+++ gthumb-3.9.1/extensions/list_tools/data/ui/tools-menu.ui 2020-03-07 19:03:13.493621300 +0000
@@ -4,6 +4,8 @@