Testowałem przed chwilą. To co poniżej trzeba skopiować do edytora tekstu i zapisać jako
autosave.py w katalogu z wtyczkami GIMP-a. Potem (w przypadku Linuksa) należy nadać plikowi uprawnienia zezwalające na "wykonanie pliku jako programu". Po otwarciu obrazu w GIMP-ie trzeba aktywować skrypt w menu
Plik>Activate Autosave. Domyślnie backup jest tworzony co 30 minut. Aby to zmienić, w szóstym wierszu:
backupInterval = 30*60 zamiast
30 można wpisać np.
10 co pozwoli na zapis co 10 minut.
Plik jest zapisywany w katalogu
/tmp.
Wszystko to dotyczy Linuksa a konkretnie Ubuntu. W przypadku Windowsa trzeba by mieć zainstalowanego Pythona. Jest o tym poradnik na forum. Nie wiem też, gdzie zapisywana byłaby kopia obrazu i czy trzeba by ten skrypt jakoś zmodyfikować.
#!/usr/bin/env python
import tempfile, os
from time import *
from gimpfu import *
def autosave():
backupInterval = 30*60
backupFiles = {}
print "Autosave activated"
while 1:
sleep(backupInterval)
print ctime(time())
curImages = {}
for k in gimp.image_list():
curImages[k.ID] = k
curIDs = curImages.keys()
oldIDs = backupFiles.keys()
newIDs = [x for x in curIDs if x not in oldIDs];
delIDs = [x for x in oldIDs if x not in curIDs];
# create (empty) backup files for new images
for id in newIDs:
prefix = 'gimpbackup-ID' + str(id) + '-'
fn = tempfile.mkstemp(prefix = prefix, suffix = '.xcf')
os.close(fn[0])
backupFiles[id] = fn[1]
# remove closed images' backups
for id in delIDs:
filename = backupFiles[id]
del(backupFiles[id])
try:
os.remove(filename)
except:
print "ERROR: ", sys.exc_info()[0]
# backup images
for id, filename in backupFiles.iteritems():
img = curImages[id]
try:
print "saving " + img.name + '-' + str(id) + ' to ' + filename
pdb.gimp_xcf_save(1, img, img.active_drawable, filename, filename)
except:
print "ERROR: ", sys.exc_info()[0]
register(
"autosave",
"Autosave dirty hack",
"Periodically saves all opened images to a temp directory",
"public domain",
"public domain",
"2009",
"<Toolbox>/File/Activate Autosave",
"RGB*, GRAY*",
[],
[],
autosave)
main()