Merge pull request #65 from wpferguson/master
Added fileCopy and fileMove functions to replace os.rename which does…
This commit is contained in:
@@ -21,19 +21,23 @@ msgstr ""
|
|||||||
"dngettext:2,3\n"
|
"dngettext:2,3\n"
|
||||||
"X-Poedit-Basepath: .\n"
|
"X-Poedit-Basepath: .\n"
|
||||||
|
|
||||||
#: gimp.lua:189
|
#: gimp.lua:194
|
||||||
#, lua-format
|
#, lua-format
|
||||||
msgid "Export Image %i/%i"
|
msgid "Export Image %i/%i"
|
||||||
msgstr "Exportiere Bild %i/%i"
|
msgstr "Exportiere Bild %i/%i"
|
||||||
|
|
||||||
#: gimp.lua:194
|
#: gimp.lua:242
|
||||||
|
msgid "Unable to move edited file into collection. Leaving it as %s"
|
||||||
|
msgstr "Die bearbeitete Datei kann nicht in die Sammlung aufgenommen werden. Bearbeitete Datei ist %s"
|
||||||
|
|
||||||
|
#: gimp.lua:251
|
||||||
msgid "GIMP not found"
|
msgid "GIMP not found"
|
||||||
msgstr "GIMP nicht gefunden"
|
msgstr "GIMP nicht gefunden"
|
||||||
|
|
||||||
#: gimp.lua:209
|
#: gimp.lua:266
|
||||||
msgid "Launching GIMP..."
|
msgid "Launching GIMP..."
|
||||||
msgstr "Starten von GIMP"
|
msgstr "Starten von GIMP"
|
||||||
|
|
||||||
#: gimp.lua:254
|
#: gimp.lua:313
|
||||||
msgid "Edit with GIMP"
|
msgid "Edit with GIMP"
|
||||||
msgstr "Bearbeiten mit GIMP"
|
msgstr "Bearbeiten mit GIMP"
|
||||||
|
|||||||
@@ -56,6 +56,11 @@
|
|||||||
|
|
||||||
BUGS, COMMENTS, SUGGESTIONS
|
BUGS, COMMENTS, SUGGESTIONS
|
||||||
* Send to Bill Ferguson, wpferguson@gmail.com
|
* Send to Bill Ferguson, wpferguson@gmail.com
|
||||||
|
|
||||||
|
CHANGES
|
||||||
|
* 20160823 - os.rename doesn't work across filesystems. Added fileCopy and fileMove functions to move the file
|
||||||
|
from the temporary location to the collection location irregardless of what filesystem it is on. If an
|
||||||
|
issue is encountered, a message is printed back to the UI so the user isn't left wondering what happened.
|
||||||
]]
|
]]
|
||||||
|
|
||||||
local dt = require "darktable"
|
local dt = require "darktable"
|
||||||
@@ -189,6 +194,58 @@ local function show_status(storage, image, format, filename,
|
|||||||
dt.print(string.format(_("Export Image %i/%i"), number, total))
|
dt.print(string.format(_("Export Image %i/%i"), number, total))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function fileCopy(fromFile, toFile)
|
||||||
|
local result = nil
|
||||||
|
-- if cp exists, use it
|
||||||
|
if checkIfBinExists("cp") then
|
||||||
|
result = os.execute("cp '" .. fromFile .. "' '" .. toFile .. "'")
|
||||||
|
end
|
||||||
|
-- if cp was not present, or if cp failed, then a pure lua solution
|
||||||
|
if not result then
|
||||||
|
local fileIn, err = io.open(fromFile, 'rb')
|
||||||
|
if fileIn then
|
||||||
|
local fileOut, errr = io.open(toFile, 'w')
|
||||||
|
if fileOut then
|
||||||
|
local content = fileIn:read(4096)
|
||||||
|
while content do
|
||||||
|
fileOut:write(content)
|
||||||
|
content = fileIn:read(4096)
|
||||||
|
end
|
||||||
|
result = true
|
||||||
|
fileIn:close()
|
||||||
|
fileOut:close()
|
||||||
|
else
|
||||||
|
dt.print_error("fileCopy Error: " .. errr)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
dt.print_error("fileCopy Error: " .. err)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
local function fileMove(fromFile, toFile)
|
||||||
|
local success = os.rename(fromFile, toFile)
|
||||||
|
if not success then
|
||||||
|
-- an error occurred, so let's try using the operating system function
|
||||||
|
if checkIfBinExists("mv") then
|
||||||
|
success = os.execute("mv '" .. fromFile .. "' '" .. toFile .. "'")
|
||||||
|
end
|
||||||
|
-- if the mv didn't exist or succeed, then...
|
||||||
|
if not success then
|
||||||
|
-- pure lua solution
|
||||||
|
success = fileCopy(fromFile, toFile)
|
||||||
|
if success then
|
||||||
|
os.remove(fromFile)
|
||||||
|
else
|
||||||
|
dt.print_error("fileMove Error: Unable to move " .. fromFile .. " to " .. toFile .. ". Leaving " .. fromFile .. " in place.")
|
||||||
|
dt.print(string.format(_("Unable to move edited file into collection. Leaving it as %s"), fromFile))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return success -- nil on error, some value if success
|
||||||
|
end
|
||||||
|
|
||||||
local function gimp_edit(storage, image_table, extra_data) --finalize
|
local function gimp_edit(storage, image_table, extra_data) --finalize
|
||||||
if not checkIfBinExists("gimp") then
|
if not checkIfBinExists("gimp") then
|
||||||
dt.print_error(_("GIMP not found"))
|
dt.print_error(_("GIMP not found"))
|
||||||
@@ -233,17 +290,19 @@ local function gimp_edit(storage, image_table, extra_data) --finalize
|
|||||||
end
|
end
|
||||||
|
|
||||||
dt.print_error("moving " .. exported_image .. " to " .. myimage_name)
|
dt.print_error("moving " .. exported_image .. " to " .. myimage_name)
|
||||||
result = os.rename(exported_image, myimage_name)
|
local result = fileMove(exported_image, myimage_name)
|
||||||
|
|
||||||
dt.print_error("importing file")
|
if result then
|
||||||
local myimage = dt.database.import(myimage_name)
|
dt.print_error("importing file")
|
||||||
|
local myimage = dt.database.import(myimage_name)
|
||||||
|
|
||||||
groupIfNotMember(image, myimage)
|
groupIfNotMember(image, myimage)
|
||||||
|
|
||||||
for _,tag in pairs(dt.tags.get_tags(image)) do
|
for _,tag in pairs(dt.tags.get_tags(image)) do
|
||||||
if not (string.sub(tag.name,1,9) == "darktable") then
|
if not (string.sub(tag.name,1,9) == "darktable") then
|
||||||
dt.print_error("attaching tag")
|
dt.print_error("attaching tag")
|
||||||
dt.tags.attach(tag,myimage)
|
dt.tags.attach(tag,myimage)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user