summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsalvadh0r <dhor@toxic.net.pl>2011-11-17 12:53:13 +0100
committersalvadh0r <dhor@toxic.net.pl>2011-11-17 12:53:13 +0100
commitb59413564a6395a1ef86adf4d0099ab199e10a11 (patch)
tree6f53be98f8acf0d904e1044d1366e58eda84ad7a
parent3a5e6040ab1da06afb21ae6a965697926bd641a7 (diff)
downloadmacrofusion-code-b59413564a6395a1ef86adf4d0099ab199e10a11.zip
macrofusion-code-b59413564a6395a1ef86adf4d0099ab199e10a11.tar.gz
macrofusion-code-b59413564a6395a1ef86adf4d0099ab199e10a11.tar.bz2
Update to 0.7 version
-rw-r--r--.pc/.quilt_patches1
-rw-r--r--.pc/.quilt_series1
-rw-r--r--.pc/.version1
-rw-r--r--.pc/applied-patches1
-rwxr-xr-x.pc/debian-changes-0.6-dhor2~all/macrofusion.py782
-rw-r--r--CHANGELOG13
-rw-r--r--README1
-rw-r--r--TODO2
-rw-r--r--debian/README.Debian34
-rw-r--r--debian/changelog19
-rw-r--r--debian/copyright35
-rw-r--r--debian/init.d.ex35
-rw-r--r--debian/manpage.1.ex35
-rw-r--r--debian/manpage.sgml.ex35
-rw-r--r--debian/manpage.xml.ex35
-rw-r--r--debian/patches/debian-changes-0.6-dhor2~all39
-rw-r--r--debian/patches/series1
-rw-r--r--locale/fr/LC_MESSAGES/MacroFusion.mobin3832 -> 3544 bytes
-rw-r--r--locale/fr/LC_MESSAGES/MacroFusion.po306
-rw-r--r--locale/pl/LC_MESSAGES/MacroFusion.mobin5357 -> 6196 bytes
-rw-r--r--locale/pl/LC_MESSAGES/MacroFusion.po336
-rw-r--r--macrofusion.pot294
-rwxr-xr-xmacrofusion.py98
-rw-r--r--ui/DOFuseInterface2.glade2346
24 files changed, 3910 insertions, 540 deletions
diff --git a/.pc/.quilt_patches b/.pc/.quilt_patches
new file mode 100644
index 0000000..6857a8d
--- /dev/null
+++ b/.pc/.quilt_patches
@@ -0,0 +1 @@
+debian/patches
diff --git a/.pc/.quilt_series b/.pc/.quilt_series
new file mode 100644
index 0000000..c206706
--- /dev/null
+++ b/.pc/.quilt_series
@@ -0,0 +1 @@
+series
diff --git a/.pc/.version b/.pc/.version
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/.pc/.version
@@ -0,0 +1 @@
+2
diff --git a/.pc/applied-patches b/.pc/applied-patches
new file mode 100644
index 0000000..05cd8c9
--- /dev/null
+++ b/.pc/applied-patches
@@ -0,0 +1 @@
+debian-changes-0.6-dhor2~all
diff --git a/.pc/debian-changes-0.6-dhor2~all/macrofusion.py b/.pc/debian-changes-0.6-dhor2~all/macrofusion.py
new file mode 100755
index 0000000..c7828c4
--- /dev/null
+++ b/.pc/debian-changes-0.6-dhor2~all/macrofusion.py
@@ -0,0 +1,782 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+
+# Licence : GPLv3 voir : http://gplv3.fsf.org/
+
+try:
+ import os, sys
+ import os.path
+ import subprocess
+ import shutil
+ import gobject
+ import time
+ import threading
+ import multiprocessing
+ import re
+ import ConfigParser
+ import operator
+except:
+ print('An error occured. Python or one of its sub modules is absent...\nIt would be wise to check your python installation.')
+ sys.exit(1)
+
+try:
+ import Image
+except:
+ print('Python Imaging Library is missing.')
+
+try:
+ import gtk
+ import gtk.glade
+ import pygtk
+ pygtk.require("2.0")
+except:
+ print('gtk2, pygtk or libglade is missing.')
+ sys.exit(1)
+
+# Bad, bad, really bad coder... Global variables...
+global session_images_bak
+session_images_bak=[]
+global session_options_bak
+session_options_bak=[]
+
+APP = 'MacroFusion'
+
+if os.path.exists('/usr/share/mfusion/ui/DOFuseInterface.glade') \
+ and os.path.exists('/usr/share/mfusion/ui/Progress.glade') \
+ and os.path.exists('/usr/share/pixmaps/macrofusion/logoMF.png') \
+ and os.path.exists('/usr/share/pixmaps/macrofusion/logoSplash.png'):
+ # print ("System wide install!")
+ DIR = '/usr/share/locale/'
+ IMG = '/usr/share/pixmaps/macrofusion/'
+ UI = '/usr/share/mfusion/ui/'
+elif os.path.exists(sys.path[0] + "/ui/DOFuseInterface.glade"):
+ # print ("Local run!")
+ DIR = sys.path[0] + '/locale/'
+ IMG = sys.path[0] + '/images/'
+ UI = sys.path[0] + '/ui/'
+else:
+ print ("That's me, your MacroFusion. Make your mind - local or system wide install?")
+ sys.exit(1)
+
+import locale
+import gettext
+for module in (gettext, gtk.glade):
+ module.bindtextdomain(APP, DIR)
+ module.textdomain(APP)
+locale.setlocale(locale.LC_ALL, '')
+#gettext.bindtextdomain(APP, DIR)
+#gettext.textdomain(APP)
+#gettext.install(APP)
+_ = gettext.gettext
+
+gobject.threads_init() #Pour que les threads soient lancés au moment opportun.
+
+def toggled_cb(cell, path, user_data):
+ model, column = user_data
+ model[path][column] = not model[path][column]
+ return
+
+# PLEASE REAPAIR!! Python-imaging can't open .tiff (or some of them)
+def creer_miniature(chemin,taille):
+ outfile=donnees.previs_dossier + '/' + os.path.split(chemin)[1]
+ try:
+ im = Image.open(chemin)
+ im.thumbnail(taille)
+ im.save(outfile, "JPEG")
+ except IOError:
+ print _("Generating %s thumbnail failed.") % chemin
+ return outfile
+
+
+####################################################
+########Classe des données##########################
+####################################################
+
+class Donnees:
+ """Données utiles"""
+ def __init__(self):
+ self.install_dossier=sys.path[0] #On recupere le dossier d'install
+
+ self.home_dossier = (os.getenv('XDG_CONFIG_HOME') or os.path.expanduser('~/.config')) + '/mfusion'
+ # self.home_dossier = os.environ['HOME'] #On créé les dossiers pour mettre les preview
+ self.enfuse_dossier = self.home_dossier
+ self.previs_dossier = self.enfuse_dossier + "/preview"
+ if not os.path.isdir(self.enfuse_dossier):
+ os.makedirs(self.enfuse_dossier)
+ if not os.path.isdir(self.previs_dossier):
+ os.makedirs(self.previs_dossier)
+
+ self.default_folder=os.path.expanduser('~/')
+ self.default_file=""
+
+ def check_install(self, name):
+ a=False
+ for dir in os.environ['PATH'].split(":"):
+ prog = os.path.join(dir, name)
+ if os.path.exists(prog):
+ a=True
+ return a
+
+##############################################################
+###########Classe de l'interface##############################
+##############################################################
+
+
+class Interface:
+ """Interface pour le logiciel d'exposition-fusion enfuse"""
+
+ def __init__(self):
+
+ # Set default icon
+ gtk.window_set_default_icon_from_file(IMG + 'logoMF.png')
+
+
+ self.cpus = multiprocessing.cpu_count()
+ if not donnees.check_install("enfuse"):
+ self.messageinthebottle(_("Can't find Enfuse.\nPlease check enblend/enfuse is installed.\nStopping..."))
+ sys.exit()
+
+ # Check cpus
+ if self.cpus>1 and donnees.check_install("enfuse-mp"):
+ print _("Will use all the powers of your CPU!")
+ self.enfuser = "enfuse-mp"
+ else:
+ self.enfuser = "enfuse"
+
+
+ #Set the Glade file
+ self.gui=gtk.glade.XML(fname=UI + "DOFuseInterface.glade", domain=APP)
+
+
+ #Dans la foulee on chope la fenetre principale, ca sert a rien c'est pour
+ #montrer qu'on peut le faire c'est tout ^^
+ self.win=self.gui.get_widget("mainwindow")
+ self.win.set_title('MacroFusion')
+
+ #On chope le reste, et ca, ca va servir...
+ self.listeimages = self.gui.get_widget("listeimages")
+ self.buttonajoutfichiers = self.gui.get_widget("buttonajoutfichiers")
+ self.buttonenleverfichier = self.gui.get_widget("buttonenleverfichier")
+ self.statusbar = self.gui.get_widget("status1")
+ self.statusbar.push(1, _("CPU Cores: %s") % self.cpus)
+
+ self.hscaleexp = self.gui.get_widget("hscaleexp")
+ self.ajus_exp = gtk.Adjustment(value=1, lower=0, upper=1, step_incr=0.1, page_incr=0.1, page_size=0)
+ self.hscaleexp.set_adjustment(self.ajus_exp)
+ self.spinbuttonexp = self.gui.get_widget("spinbuttonexp")
+ self.spinbuttonexp.set_digits(1)
+ self.spinbuttonexp.set_value(1)
+ self.spinbuttonexp.set_adjustment(self.ajus_exp)
+
+ self.hscalecont = self.gui.get_widget("hscalecont")
+ self.ajus_cont = gtk.Adjustment(value=0, lower=0, upper=1, step_incr=0.1, page_incr=0.1, page_size=0)
+ self.hscalecont.set_adjustment(self.ajus_cont)
+ self.spinbuttoncont = self.gui.get_widget("spinbuttoncont")
+ self.spinbuttoncont.set_digits(1)
+ self.spinbuttoncont.set_value(0)
+ self.spinbuttoncont.set_adjustment(self.ajus_cont)
+
+ self.hscalesat = self.gui.get_widget("hscalesat")
+ self.ajus_sat = gtk.Adjustment(value=0.2, lower=0, upper=1, step_incr=0.1, page_incr=0.1, page_size=0)
+ self.hscalesat.set_adjustment(self.ajus_sat)
+ self.spinbuttonsat = self.gui.get_widget("spinbuttonsat")
+ self.spinbuttonsat.set_digits(1)
+ self.spinbuttonsat.set_value(0.2)
+ self.spinbuttonsat.set_adjustment(self.ajus_sat)
+
+ self.hscalemu = self.gui.get_widget("hscalemu")
+ self.ajus_mu = gtk.Adjustment(value=0.5, lower=0, upper=1, step_incr=0.01, page_incr=0.1, page_size=0)
+ self.hscalemu.set_adjustment(self.ajus_mu)
+ self.spinbuttonmu = self.gui.get_widget("spinbuttonmu")
+ self.spinbuttonmu.set_digits(2)
+ self.spinbuttonmu.set_value(0.5)
+ self.spinbuttonmu.set_adjustment(self.ajus_mu)
+
+ self.hscalesigma = self.gui.get_widget("hscalesigma")
+ self.ajus_sigma = gtk.Adjustment(value=0.2, lower=0, upper=1, step_incr=0.01, page_incr=0.1, page_size=0)
+ self.hscalesigma.set_adjustment(self.ajus_sigma)
+ self.spinbuttonsigma = self.gui.get_widget("spinbuttonsigma")
+ self.spinbuttonsigma.set_digits(2)
+ self.spinbuttonsigma.set_value(0.2)
+ self.spinbuttonsigma.set_adjustment(self.ajus_sigma)
+
+ self.buttonpreview = self.gui.get_widget("buttonpreview")
+ self.checkbuttontiff = self.gui.get_widget("checkbuttontiff")
+ self.checkbuttonjpeg = self.gui.get_widget("checkbuttonjpeg")
+ self.buttonfusion = self.gui.get_widget("buttonfusion")
+ self.buttonbeforeafter = self.gui.get_widget("buttonbeforeafter")
+ self.buttonedit = self.gui.get_widget("buttoneditw")
+
+ self.imagepreview = self.gui.get_widget("imagepreview")
+ self.imagepreview.set_from_file(IMG + "logoSplash.png")
+
+ self.progressbar = self.gui.get_widget("progressbar")
+
+ self.checkbuttonexif = self.gui.get_widget("checkbuttonexif")
+
+ #valeurs des options et configurations :
+ self.check_pyramidelevel = self.gui.get_widget("check_pyramidelevel")
+ self.spinbuttonlevel = self.gui.get_widget("spinbuttonlevel")
+ self.check_hardmask = self.gui.get_widget("check_hardmask")
+ self.check_contwin = self.gui.get_widget("check_contwin")
+ self.spinbuttoncontwin = self.gui.get_widget("spinbuttoncontwin")
+
+ self.check_courb = self.gui.get_widget("check_courb")
+ self.check_prctcourb = self.gui.get_widget("check_prctcourb")
+ self.spinbuttoncourb = self.gui.get_widget("spinbuttoncourb")
+ self.check_detecbord = self.gui.get_widget("check_detecbord")
+ self.spinbuttonEdge = self.gui.get_widget("spinbuttonEdge")
+ # self.spinbuttonEdge.set_value(self.conf.getint('prefs', 'w'))
+
+ self.spinbuttonLceS = self.gui.get_widget("spinbuttonLceS")
+ self.spinbuttonLceF = self.gui.get_widget("spinbuttonLceF")
+ self.check_lces = self.gui.get_widget("check_lces")
+ self.check_lcef = self.gui.get_widget("check_lcef")
+
+ self.check_ciecam = self.gui.get_widget("check_ciecam")
+ self.check_desatmeth = self.gui.get_widget("check_desatmeth")
+ self.combobox_desatmet = self.gui.get_widget("combobox_desatmet")
+ self.spinbuttonlargeurprev = self.gui.get_widget("spinbuttonlargeurprev")
+ self.spinbuttonhauteurprev = self.gui.get_widget("spinbuttonhauteurprev")
+ self.checkbuttoncache = self.gui.get_widget("checkbuttoncache")
+ self.spinbuttoncache = self.gui.get_widget("spinbuttoncache")
+ self.checkbuttonbloc = self.gui.get_widget("checkbuttonbloc")
+ self.spinbuttonbloc = self.gui.get_widget("spinbuttonbloc")
+ self.checkbuttontaillefinale = self.gui.get_widget("checkbuttontaillefinale")
+ self.spinbuttonlargeurfinale = self.gui.get_widget("spinbuttonlargeurfinale")
+ self.spinbuttonhauteurfinale = self.gui.get_widget("spinbuttonhauteurfinale")
+ self.spinbuttonxoff = self.gui.get_widget("spinbuttonxoff")
+ self.spinbuttonyoff = self.gui.get_widget("spinbuttonyoff")
+ self.checkbuttonjpegorig = self.gui.get_widget("checkbuttonjpegorig")
+ self.hscalecomprjpeg = self.gui.get_widget("hscalecomprjpeg")
+ self.combtiff = self.gui.get_widget("combtiff")
+
+ self.checkbutton_a5_align = self.gui.get_widget("checkbutton_a5_align")
+ self.checkbutton_a5_crop = self.gui.get_widget("checkbutton_a5_crop")
+ self.checkbutton_a5_shift = self.gui.get_widget("checkbutton_a5_shift")
+ self.checkbutton_a5_field = self.gui.get_widget("checkbutton_a5_field")
+
+ self.combobox_desatmet.set_active(0)
+ self.combtiff.set_active(0)
+
+
+ if not donnees.check_install('exiftool'):
+ self.checkbuttonexif.set_sensitive(False)
+ self.messageinthebottle(_("Exiftool is missing!\n\n Cannot copy exif info."))
+ if not donnees.check_install('align_image_stack'):
+ self.checkbutton_a5_align.set_sensitive(False)
+ self.checkbutton_a5_crop.set_sensitive(False)
+ self.checkbutton_a5_field.set_sensitive(False)
+ self.checkbutton_a5_shift.set_sensitive(False)
+ #self.checkbutton_a5_align.set_sensitive(False)
+ self.messageinthebottle(_("Hugin tools (align_image_stack) are missing !\n\n Cannot auto align images."))
+
+# Read values from config
+ self.conf = ConfigParser.ConfigParser()
+ if os.path.isfile(donnees.enfuse_dossier + '/mfusion.cfg'):
+ self.conf.read(donnees.enfuse_dossier + '/mfusion.cfg')
+ if self.conf.has_option('prefs', 'pwidth'):
+ self.spinbuttonlargeurprev.set_value(self.conf.getint('prefs', 'pwidth'))
+ if self.conf.has_option('prefs', 'pheight'):
+ self.spinbuttonhauteurprev.set_value(self.conf.getint('prefs', 'pheight'))
+ if self.conf.has_option('prefs', 'cachebutton'):
+ self.checkbuttoncache.set_active(self.conf.getboolean('prefs', 'cachebutton'))
+ if self.conf.has_option('prefs', 'cachesize'):
+ self.spinbuttoncache.set_value(self.conf.getint('prefs', 'cachesize'))
+ if self.conf.has_option('prefs', 'blocbutton'):
+ self.checkbuttonbloc.set_active(self.conf.getboolean('prefs', 'blocbutton'))
+ if self.conf.has_option('prefs', 'blocsize'):
+ self.spinbuttonbloc.set_value(self.conf.getint('prefs', 'blocsize'))
+ if self.conf.has_option('prefs', 'outsize'):
+ self.checkbuttontaillefinale.set_active(self.conf.getboolean('prefs', 'outsize'))
+ if self.conf.has_option('prefs', 'outwidth'):
+ self.spinbuttonlargeurfinale.set_value(self.conf.getint('prefs', 'outwidth'))
+ if self.conf.has_option('prefs', 'outheight'):
+ self.spinbuttonhauteurfinale.set_value(self.conf.getint('prefs', 'outheight'))
+ if self.conf.has_option('prefs', 'xoff'):
+ self.spinbuttonxoff.set_value(self.conf.getint('prefs', 'xoff'))
+ if self.conf.has_option('prefs', 'yoff'):
+ self.spinbuttonyoff.set_value(self.conf.getint('prefs', 'yoff'))
+ if self.conf.has_option('prefs', 'jpegdef'):
+ self.checkbuttonjpegorig.set_active(self.conf.getboolean('prefs', 'jpegdef'))
+ if self.conf.has_option('prefs', 'jpegcompr'):
+ self.hscalecomprjpeg.set_value(self.conf.getfloat('prefs', 'jpegcompr'))
+ if self.conf.has_option('prefs', 'tiffcomp'):
+ self.combtiff.set_active(self.conf.getint('prefs', 'tiffcomp'))
+ if self.conf.has_option('prefs', 'exif'):
+ self.checkbuttonexif.set_active(self.conf.getboolean('prefs', 'exif'))
+
+ #On relie les signaux (cliques sur boutons, cochage des cases, ...) aux fonctions appropriées
+ dic = { "on_mainwindow_destroy" : self.exit_app,
+ "on_buttonannuler_clicked" : self.exit_app,
+ "on_menufilequit_activate" : self.exit_app,
+ "on_menufileopen_activate" : self.ouverture,
+ "on_buttonajoutfichiers_clicked" : self.ajout,
+ "on_menufileadd_activate" : self.ajout,
+ "on_buttonenleverfichier_clicked" : self.ttenlever,
+ "on_menufileenlever_activate" : self.enlever,
+ "on_menufilettenlever_activate" : self.ttenlever,
+ "on_buttonpreview_clicked" : self.preview,
+ "on_menufilesave_activate" : self.fusion,
+ "on_buttonfusion_clicked" : self.fusion,
+ "on_buttoneditw_clicked" : self.sendto,
+ "on_buttonbeforeafter_pressed" : self.baswitch,
+ "on_buttonbeforeafter_released" : self.baswitch,
+ "on_imagemenuitem10_activate" : self.apropos
+ }
+ #Auto-connection des signaux
+ self.gui.signal_autoconnect(dic)
+
+ #initialisation de la liste d'images a fusionner
+ self.inittreeview()
+
+ def exit_app(self, action):
+ # cancel = self.autosave_image()
+ # if cancel:
+ # return True
+ self.stop_now = True
+ self.closing_app = True
+ self.save_settings()
+ self.cleanup()
+ sys.exit(0)
+
+ def cleanup(self):
+ # os.remove(donnees.enfuse_dossier + "/session.sav")
+ for self.files in os.walk(donnees.previs_dossier):
+ for self.filename in self.files[2]:
+ os.remove(donnees.previs_dossier + "/" + self.filename)
+
+ def inittreeview(self):
+ """initialisation de la liste d'images a importer"""
+ self.liststoreimport = gtk.ListStore(bool, str, str) #création de la listestore qui contiendra les noms d'images
+ self.listeimages.set_model(self.liststoreimport) #on donne la liststore au l'afficheur treeview
+
+ self.colonneselect = gtk.TreeViewColumn('') #Premiere colonne :
+ self.listeimages.append_column(self.colonneselect) #on l'ajoute au TreeView
+ self.select=gtk.CellRendererToggle() #On creer le cellrender pour avoir des boutons toggle
+ self.colonneselect.pack_start(self.select, True) #on met le cellrender dans la colonne
+ self.colonneselect.add_attribute(self.select, 'active', 0) #on met les boutons actifs par défaut
+
+ self.colonneimages = gtk.TreeViewColumn(_('Image')) #deuxieme colonne, titre 'Image'
+ self.listeimages.append_column(self.colonneimages) #on rajoute la colonne dans le treeview
+ self.cell = gtk.CellRendererText() #Ce sera des cellules de texte
+ self.colonneimages.pack_start(self.cell, True) #que l'on met dans la colonne
+ self.colonneimages.add_attribute(self.cell, 'text', 1) #et on specifie que c'est du texte simple
+
+ self.select.connect("toggled", toggled_cb, (self.liststoreimport, 0)) #Pour que les boutons de selection marchent
+
+
+ def ouverture(self, widget):
+ FenOuv=Fenetre_Ouvrir(self.liststoreimport,0)
+ self.liststoreimport=FenOuv.get_model()
+ #self.raffraichissementlisteimages()
+
+ def ajout(self, widget):
+ FenOuv=Fenetre_Ouvrir(self.liststoreimport,1)
+ self.liststoreimport=FenOuv.get_model()
+ #self.raffraichissementlisteimages()
+
+ def raffraichissementlisteimages(self):
+ #self.listeimages.set_model(self.liststoreimport)
+ self.treeselectionsuppr=self.listeimages.get_selection() #pour récupérer quels fichiers sont selectionnés
+ self.treeselectionsuppr.set_mode(gtk.SELECTION_MULTIPLE) #Pour pouvoir en selectionner plusieurs
+
+ def enlever(self, widget):
+ self.treeselectionsuppr=self.listeimages.get_selection() #pour récupérer quels fichiers sont selectionnés
+ self.treeselectionsuppr.set_mode(gtk.SELECTION_MULTIPLE) #Pour pouvoir en selectionner plusieurs
+ (model, pathlist) = self.treeselectionsuppr.get_selected_rows()
+ for i in pathlist:
+ treeiter = model.get_iter(i)
+ self.liststoreimport.remove(treeiter)
+
+ def ttenlever(self, widget):
+ self.liststoreimport.clear()
+
+ def preview(self, widget):
+ self.taille=(self.spinbuttonlargeurprev.get_value(), self.spinbuttonhauteurprev.get_value())
+ self.name=donnees.previs_dossier + "/" + "preview.jpg"
+ item=0
+ if len(self.liststoreimport)>0:
+ self.ref=zip(*self.liststoreimport)[0]
+ for item in self.ref:
+ if item:
+ item=-1
+ self.thread_preview = Thread_Preview(self.taille, self.get_options(), self.get_options_align(), self.liststoreimport)
+ self.thread_preview.start()
+ timer = gobject.timeout_add (100, self.pulsate)
+ break
+ if item==0:
+ self.messageinthebottle(_("Please add some images!\n\n Can't fuse anything."))
+
+ def get_options_align(self):
+ self.options_align=[]
+ if self.checkbutton_a5_align.get_active():
+ if self.checkbutton_a5_crop.get_active():
+ self.options_align.append('-C')
+ if self.checkbutton_a5_shift.get_active():
+ self.options_align.append('-i')
+ if self.checkbutton_a5_field.get_active():
+ self.options_align.append('-m')
+ return self.options_align
+
+ def get_options(self):
+ options=["--exposure-weight=" + str(self.spinbuttonexp.get_value()),
+ "--exposure-mu=" + str(self.spinbuttonmu.get_value()),
+ "--exposure-sigma=" + str(self.spinbuttonsigma.get_value()),
+ "--saturation-weight=" + str(self.spinbuttonsat.get_value()),
+ "--contrast-weight=" + str(self.spinbuttoncont.get_value())]
+ if self.check_pyramidelevel.get_active():
+ options.append('-l ' + str(self.spinbuttonlevel.get_value_as_int()))
+ if self.check_hardmask.get_active():
+ options.append('--hard-mask')
+ if self.check_contwin.get_active():
+ options.append('--contrast-window-size=' + str(self.spinbuttoncontwin.get_value_as_int()))
+ if self.check_courb.get_active():
+ if self.check_prctcourb.get_active():
+ options.append('--contrast-min-curvature=' + str(self.spinbuttoncourb.get_value()) + "%")
+ else:
+ options.append('--contrast-min-curvature=' + str(self.spinbuttoncourb.get_value()))
+ if self.check_detecbord.get_active():
+ opts='--contrast-edge-scale=' + str(self.spinbuttonEdge.get_value()) + ':'
+ if self.check_lces.get_active():
+ opts+=str(self.spinbuttonLceS.get_value()) + '%:'
+ else:
+ opts+=str(self.spinbuttonLceS.get_value()) + ':'
+ if self.check_lcef.get_active():
+ opts+=str(self.spinbuttonLceF.get_value()) + '%'
+ else:
+ opts+=str(self.spinbuttonLceF.get_value()) + ''
+ options.append(opts)
+ # + str(self.spinbuttonLceF.get_value()) + '%')
+ if self.check_ciecam.get_active():
+ options.append('-c')
+ if self.check_desatmeth.get_active():
+ opt={-1:None, 0:"average", 1:'l-star', 2:'lightness', 3:'value', 4:'luminance'}
+ options.append('--gray-projector=' + opt[self.combobox_desatmet.get_active()])
+ if not self.checkbuttoncache.get_active():
+ options.append('-m ' + str(self.spinbuttoncache.get_value_as_int()))
+ if not self.checkbuttonbloc.get_active():
+ options.append('-b ' + str(self.spinbuttonbloc.get_value_as_int()))
+ if not self.checkbuttontaillefinale.get_active():
+ options.append('-f ' + str(self.spinbuttonlargeurfinale.get_value_as_int()) + 'x' + str(self.spinbuttonhauteurfinale.get_value_as_int()) + 'x' + str(self.spinbuttonxoff.get_value_as_int()) + 'x' + str(self.spinbuttonyoff.get_value_as_int()))
+ if self.name.endswith(('.tif', '.tiff', '.TIF', '.TIFF')):
+ tiffopt={0:"NONE", 1:"PACKBITS", 2:"LZW", 3:"DEFLATE"}
+ options.append("--compression=" + tiffopt[self.combtiff.get_active()])
+ if self.name.endswith(('.jpg', '.jpeg', '.JPG', '.JPEG')) and (not self.checkbuttonjpegorig.get_active()):
+ options.append("--compression=" + str(int(self.hscalecomprjpeg.get_value())))
+ return options
+
+ def pulsate(self):
+ if self.thread_preview.isAlive(): #Tant que le thread est en cours,
+ self.progressbar.set_text(_("Calculating preview..."))
+ self.progressbar.pulse() #on fait pulser la barre
+ return True #et on renvoie True pour que gobject.timeout recommence
+ else:
+ self.progressbar.set_fraction(1)
+ self.progressbar.set_text(_("Preview generated"))
+ self.imagepreview.set_from_file(donnees.previs_dossier + "/" + "preview.jpg")
+ return False
+
+ def baswitch(self, widget):
+ if (not int(self.buttonbeforeafter.get_relief())) and (os.path.exists(donnees.previs_dossier + "/preview_.jpg")):
+ self.buttonbeforeafter.props.relief = gtk.RELIEF_NONE
+ self.imagepreview.set_from_file(donnees.previs_dossier + "/preview_.jpg")
+ elif os.path.exists(donnees.previs_dossier + "/preview_.jpg"):
+ self.buttonbeforeafter.props.relief = gtk.RELIEF_NORMAL
+ self.imagepreview.set_from_file(donnees.previs_dossier + "/preview.jpg")
+ # self.buttonbeforeafter.set_label("gfdgdf")
+
+ def fusion(self,widget):
+ FenPar=Fenetre_Parcourir()
+ self.name = FenPar.get_name()
+ if self.name:
+ if not re.search('.jpeg$|.jpg$|.tiff$', self.name, flags=re.IGNORECASE):
+ self.name+=".jpg"
+ self.enroute('')
+
+ def sendto(self, widget):
+ self.name=(donnees.previs_dossier + "/sendto.tif")
+
+ if self.enroute(self.name) == -1:
+ self.messageinthebottle(_("No preview, no output, no edit.\n\n Game Over."))
+ return
+
+ def messageinthebottle(self, message):
+ self.messaga=gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_OK, message_format=(message))
+ if self.messaga.run() == gtk.RESPONSE_OK:
+ self.messaga.destroy()
+
+ def enroute(self, issend):
+ self.issend=issend
+ self.liste_images=[]
+ self.liste_aligned=[]
+ index = 0
+ for item in self.liststoreimport:
+ if item[0]:
+ self.liste_images.append(item[2])
+ self.liste_aligned.append(donnees.previs_dossier + "/out" + format(index, "04d") + ".tif")
+ index += 1
+ if not Gui.checkbutton_a5_align.get_active():
+ self.liste_aligned=self.liste_images
+ if self.liste_images.count(self.name):
+ self.messageinthebottle(_("Can't overwrite input image!\n\n Please change the output filename."))
+ return -1
+ if len(self.liste_images) == 0:
+ self.messageinthebottle(_("Please add some images!\n\n Can't fuse anything."))
+ return -1
+ command_a=['align_image_stack', '-a', donnees.previs_dossier + '/out'] + self.get_options_align() + self.liste_images
+ command=[Gui.enfuser, "-o", self.name] + self.get_options() + self.liste_aligned
+ ProFus=Progress_Fusion(command, command_a, self.liste_aligned, self.issend)
+
+
+ def apropos(self, widget):
+ self.fen=AproposFen()
+
+ def save_settings(self):
+ conf = ConfigParser.ConfigParser()
+ conf.add_section('prefs')
+ # conf.set('prefs', 'w', self.spinbuttonEdge.get_value_as_int())
+ conf.set('prefs', 'pwidth', self.spinbuttonlargeurprev.get_value_as_int())
+ conf.set('prefs', 'pheight', self.spinbuttonhauteurprev.get_value_as_int())
+ conf.set('prefs', 'cachebutton', self.checkbuttoncache.get_active())
+ conf.set('prefs', 'cachesize', self.spinbuttoncache.get_value_as_int())
+ conf.set('prefs', 'blocbutton', self.checkbuttonbloc.get_active())
+ conf.set('prefs', 'blocsize', self.spinbuttonbloc.get_value_as_int())
+ conf.set('prefs', 'outsize', self.checkbuttontaillefinale.get_active())
+ conf.set('prefs', 'outwidth', self.spinbuttonlargeurfinale.get_value_as_int())
+ conf.set('prefs', 'outheight', self.spinbuttonhauteurfinale.get_value_as_int())
+ conf.set('prefs', 'xoff', self.spinbuttonxoff.get_value_as_int())
+ conf.set('prefs', 'yoff', self.spinbuttonyoff.get_value_as_int())
+ conf.set('prefs', 'jpegdef', self.checkbuttonjpegorig.get_active())
+ conf.set('prefs', 'jpegcompr', int(self.hscalecomprjpeg.get_value()))
+ conf.set('prefs', 'tiffcomp', str(self.combtiff.get_active()))
+ conf.set('prefs', 'exif', str(self.checkbuttonexif.get_active()))
+
+ if not os.path.exists(donnees.enfuse_dossier):
+ os.makedirs(donnees.enfuse_dossier)
+ conf.write(file(donnees.enfuse_dossier + '/mfusion.cfg', 'w'))
+
+ # Also, save accel_map:
+ # gtk.accel_map_save(self.config_dir + '/accel_map')
+
+ return
+
+####################################################################
+###########Classe pour choisir les images a fusionner###############
+####################################################################
+
+class Fenetre_Ouvrir:
+ """La classe qui ouvre la fenetre de choix de fichiers, et qui retourne le ListStore par la methode get_model"""
+ def __init__(self,model,bitajout):
+ """Lance la fenetre de selection et créé la listsore a partir des fichiers selectionnés"""
+ self.filtre=gtk.FileFilter()
+ self.filtre.add_mime_type("image/jpeg")
+ self.filtre.add_mime_type("image/tiff")
+ self.liststoreimport=model #on repart de l'ancien modele
+ if bitajout:
+ self.fenetre_ouvrir = gtk.FileChooserDialog(_("Add images..."),
+ None,
+ gtk.FILE_CHOOSER_ACTION_OPEN,
+ (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
+ self.fenetre_ouvrir.set_select_multiple(True)
+ self.fenetre_ouvrir.set_current_folder(donnees.default_folder)
+ self.fenetre_ouvrir.set_filter(self.filtre)
+ else:
+ self.fenetre_ouvrir = gtk.FileChooserDialog(_("Open images..."),
+ None,
+ gtk.FILE_CHOOSER_ACTION_OPEN,
+ (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
+ self.fenetre_ouvrir.set_select_multiple(True)
+ self.fenetre_ouvrir.set_current_folder(donnees.default_folder)
+ self.fenetre_ouvrir.set_filter(self.filtre)
+ self.liststoreimport.clear() #On remet le model a 0 (oublie des anciennes images)
+
+ if(self.fenetre_ouvrir.run() == gtk.RESPONSE_OK):
+ self.fichiers = self.fenetre_ouvrir.get_filenames()
+ donnees.default_file=self.fichiers[0]
+ for fichier in self.fichiers:
+ self.liststoreimport.append([1,os.path.basename(fichier),fichier])
+ donnees.default_folder=self.fenetre_ouvrir.get_current_folder()
+ self.fenetre_ouvrir.destroy()
+
+ def get_model(self):
+ """ Retourne la liststore """
+ if self.liststoreimport:
+ return self.liststoreimport
+ else:
+ return None
+
+
+#####################################################################
+#########Classe pour la fenetre pour choisir le fichier final########
+#####################################################################
+
+class Fenetre_Parcourir:
+ """La classe qui ouvre la fenetre de choix pour enregistrer le fichier"""
+ def __init__(self):
+
+ self.fenetre_ouvrir = gtk.FileChooserDialog(_("Save file..."),
+ None,
+ gtk.FILE_CHOOSER_ACTION_SAVE,
+ (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK))
+ self.fenetre_ouvrir.set_current_folder(donnees.default_folder)
+ # self.fenetre_ouvrir.set_filename(donnees.default_file)
+ self.fenetre_ouvrir.set_current_name('output.jpg')
+ self.fenetre_ouvrir.set_do_overwrite_confirmation(True)
+ if (self.fenetre_ouvrir.run() == gtk.RESPONSE_OK):
+ self.resultat=self.fenetre_ouvrir.get_filename()
+
+ self.fenetre_ouvrir.destroy()
+
+ def get_name(self):
+ try:
+ return self.resultat
+ except AttributeError:
+ return ""
+
+
+
+#####################################################################
+#########Thread pour la prévisualisation#############################
+#####################################################################
+
+class Thread_Preview(threading.Thread):
+ def __init__(self, taille, options, options_align, liste):
+ threading.Thread.__init__ (self)
+ self.taille=taille
+ self.options=options
+ self.liste=liste
+ self.options_align=options_align
+
+ def run(self):
+ images_a_fusionner=[]
+ images_a_align=[]
+ index = 0
+ global session_images_bak
+ global session_options_bak
+
+ for item in self.liste:
+ if item[0]:
+ chemin_miniature=creer_miniature(item[2],(int(self.taille[0]), int(self.taille[1])))
+ images_a_align.append(chemin_miniature)
+ images_a_fusionner.append(donnees.previs_dossier + "/test" + format(index, "04d") + ".tif")
+ index += 1
+ if not Gui.checkbutton_a5_align.get_active():
+ images_a_fusionner=images_a_align
+ if os.path.exists(donnees.previs_dossier + "/preview.jpg"):
+ shutil.copy(donnees.previs_dossier + "/" + "preview.jpg", donnees.previs_dossier + "/" + "preview_.jpg")
+ if Gui.checkbutton_a5_align.get_active() and \
+ (len(images_a_align) != len(session_images_bak) \
+ or len(self.options_align) != len(session_options_bak) \
+ or len(list(axz for axz in images_a_align if axz not in session_images_bak)) \
+ or len(list(axz2 for axz2 in self.options_align if axz2 not in session_options_bak))):
+ command=["align_image_stack", "-a", donnees.previs_dossier + "/test"] + self.options_align + images_a_align
+ Gui.statusbar.push(15, _(":: Align photos..."))
+ preview_process=subprocess.Popen(command, stdout=subprocess.PIPE)
+ preview_process.wait()
+ session_options_bak=self.options_align
+ session_images_bak=images_a_align
+ Gui.statusbar.push(15, _(":: Fusion photos..."))
+ command=[Gui.enfuser, "-o", donnees.previs_dossier + "/" + "preview.jpg"] + self.options + images_a_fusionner
+ preview_process=subprocess.Popen(command, stdout=subprocess.PIPE)
+ preview_process.wait()
+
+
+
+#######################################################################
+#########Fenetre de progression lors de la fusion finale###############
+#######################################################################
+
+class Progress_Fusion:
+ def __init__(self, command, command_a, liste_aligned, issend):
+
+ self.progress = gtk.glade.XML(fname=UI + "Progress.glade", domain=APP)
+ self.progress_win = self.progress.get_widget("dialog1")
+ self.progress_label = self.progress.get_widget("progress_label")
+ self.info_label = self.progress.get_widget("info_label")
+ self.progress_bar = self.progress.get_widget("progressbar1")
+ self.progress_stop_button = self.progress.get_widget("stop_button")
+ self.dic1 = {"on_stop_button_clicked" : self.close_progress,
+ "on_dialog1_destroy" : self.close_progress}
+ self.progress.signal_autoconnect(self.dic1)
+ self.info_label.set_text(_('Fusion images...'))
+
+ self.thread_fusion = Thread_Fusion(command, command_a, liste_aligned, issend) #On prepare le thread qui va faire tout le boulot
+ self.thread_fusion.start() #On le lance
+ timer = gobject.timeout_add (100, self.pulsate)
+
+ def pulsate(self):
+ if self.thread_fusion.isAlive(): #Tant que le thread est en cours,
+ self.progress_bar.set_text(_("Fusion, please wait..."))
+ self.progress_bar.pulse() #on fait pulser la barre
+ return True #et on renvoie True pour que gobject.timeout recommence
+ else:
+ self.progress_bar.set_fraction(1)
+ self.progress_bar.set_text(_("Fused !"))
+ self.close_progress(self)
+ return False
+
+ def close_progress(self, widget):
+ self.progress_win.destroy()
+
+
+
+##############################################################################
+###########Thread de fusion des vraies images#################################
+##############################################################################
+
+class Thread_Fusion(threading.Thread):
+ def __init__(self, command, command_a, liste_aligned, issend):
+ threading.Thread.__init__ (self)
+ self.command=command
+ self.command_a=command_a
+ self.issend=issend
+ self.liste_aligned=liste_aligned
+
+ def run(self):
+ if Gui.checkbutton_a5_align.get_active():
+ align_process=subprocess.Popen(self.command_a, stdout=subprocess.PIPE)
+ align_process.wait()
+ fusion_process=subprocess.Popen(self.command, stdout=subprocess.PIPE)
+ fusion_process.wait()
+ # fusion_process=subprocess.call(self.command)
+ if Gui.checkbuttonexif.get_active():
+ exif_copy = subprocess.Popen(["exiftool", "-tagsFromFile", Gui.liste_images[0], "-overwrite_original", Gui.name])
+ exif_copy.wait()
+ if len(self.issend) > 0:
+ subprocess.Popen(['gimp', self.issend], stdout=subprocess.PIPE)
+
+########################################
+#### Classe de la fenêtre a propos ####
+########################################
+
+class AproposFen:
+ def __init__(self):
+ # self.about = gtk.glade.XML(donnees.install_dossier + "/Apropos.glade", domain=APP)
+ # self.aboutdialog = self.about.get_widget("aboutdialog1")
+ self.aboutdialog = gtk.AboutDialog()
+ self.aboutdialog.set_name("MacroFusion")
+ self.aboutdialog.set_modal(True)
+ self.aboutdialog.set_position(gtk.WIN_POS_CENTER)
+ self.aboutdialog.set_version('0.5')
+ self.aboutdialog.set_comments('A GTK Gui for the excellent Enfuse.\n Based on EnfuseGui by Chez Gholyo.\n\n(c) 2011 Dariusz Duma <dhor@toxic.net.pl>')
+ self.pixbuf=gtk.gdk.pixbuf_new_from_file(IMG + "logoMF.png")
+ self.aboutdialog.set_logo(self.pixbuf)
+ self.aboutdialog.connect("response", self.close_about)
+ self.aboutdialog.show()
+
+
+ def close_about(self, widget, event):
+ self.aboutdialog.destroy()
+
+
+###########################################################
+#### Initialisation et appel de la classe principale ####
+###########################################################
+
+if __name__ == "__main__":
+
+ donnees=Donnees() #Initialisation des variables
+ Gui = Interface() #Initialise l'interface
+ gtk.main() #Lance la boucle principale
diff --git a/CHANGELOG b/CHANGELOG
index d74790c..d06dc97 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,16 @@
+0.7 (17.11.2011)
+
+ * images list with thumbnails
+ * exif info in tooltips
+ * custom graphics editor
+ * UI improvements
+
+0.6 (12.11.2011)
+
+ * Auto align images stack
+ * 'edit with' button sends output to graphics editor
+ * bugfixes
+
0.5 (08.11.2011)
* proper values for Enfuse's options
diff --git a/README b/README
index 136fcc7..12820da 100644
--- a/README
+++ b/README
@@ -25,6 +25,7 @@ You need:
- pygtk (python-gtk2)
- libglade (libglade2-0)
- enfuse (>=4.0)
+- hugin-tools (with align_image_stack)
Local (archive .tar.gz):
------
diff --git a/TODO b/TODO
index 86ce190..5117289 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
Todo:
- custom contrast/color/brightness for every 'layer' (image)
-- 'send to' button (GIMP, Delaboratory)
+- autolevels for output image \ No newline at end of file
diff --git a/debian/README.Debian b/debian/README.Debian
index 954adeb..4c9ee0c 100644
--- a/debian/README.Debian
+++ b/debian/README.Debian
@@ -3,37 +3,5 @@ macrofusion for Debian
<possible notes regarding this package - if none, delete this file>
- -- root
-daemon
-bin
-sys
-sync
-games
-man
-lp
-mail
-news
-uucp
-proxy
-www-data
-backup
-Mailing List Manager
-ircd
-Gnats Bug-Reporting System (admin)
-nobody
-
-colord colour management daemon
-
-Light Display Manager
-Avahi autoip daemon
-Avahi mDNS daemon
-Kernel Oops Tracking Daemon
-usbmux daemon
-RealtimeKit
-Speech Dispatcher
-HPLIP system user
-
-Dariusz Duma
-PulseAudio daemon
- <dhor@toxic.net.pl> Tue, 08 Nov 2011 11:49:10 +0100
+ -- Dariusz Duma <dhor@toxic.net.pl> Tue, 08 Nov 2011 11:49:10 +0100
diff --git a/debian/changelog b/debian/changelog
index 973957b..dc325f9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,21 @@
+macrofusion (0.7-dhor1~all) all; urgency=low
+
+ * images list with thumbnails
+ * exif info in tooltips
+ * custom graphics editor
+ * UI improvements
+
+ -- Dariusz Duma <dhor@toxic.net.pl> Thu, 17 Nov 2011 12:51:17 +0100
+
+macrofusion (0.6-dhor2~all) all; urgency=low
+
+ * Auto align images
+ * Optimize preview mode
+ * Fix exif save
+ * 'Send to' as .tif
+
+ -- Dariusz Duma <dhor@toxic.net.pl> Sun, 13 Nov 2011 19:54:48 +0100
+
macrofusion (0.5-dhor1~all) all; urgency=low
* proper values for Enfuse's options
@@ -8,6 +26,7 @@ macrofusion (0.5-dhor1~all) all; urgency=low
* system-wide install
* edit with GIMP
* before/after preview
+ * better usage of EdgeScale option
* bugfixes
diff --git a/debian/copyright b/debian/copyright
index 13b8a21..594dc1c 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -14,40 +14,7 @@ License: <special license>
# If you want to use GPL v2 or later for the /debian/* files use
# the following clauses, or change it to suit. Delete these two lines
Files: debian/*
-Copyright: 2011 root
-daemon
-bin
-sys
-sync
-games
-man
-lp
-mail
-news
-uucp
-proxy
-www-data
-backup
-Mailing List Manager
-ircd
-Gnats Bug-Reporting System (admin)
-nobody
-
-
-colord colour management daemon
-
-Light Display Manager
-Avahi autoip daemon
-Avahi mDNS daemon
-Kernel Oops Tracking Daemon
-usbmux daemon
-RealtimeKit
-Speech Dispatcher
-HPLIP system user
-
-Dariusz Duma
-PulseAudio daemon
- <dhor@toxic.net.pl>
+Copyright: 2011 Dariusz Duma <dhor@toxic.net.pl>
License: GPL-2+
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/debian/init.d.ex b/debian/init.d.ex
index eb8c17d..1132539 100644
--- a/debian/init.d.ex
+++ b/debian/init.d.ex
@@ -11,40 +11,7 @@
# <...>
### END INIT INFO
-# Author: root
-daemon
-bin
-sys
-sync
-games
-man
-lp
-mail
-news
-uucp
-proxy
-www-data
-backup
-Mailing List Manager
-ircd
-Gnats Bug-Reporting System (admin)
-nobody
-
-
-colord colour management daemon
-
-Light Display Manager
-Avahi autoip daemon
-Avahi mDNS daemon
-Kernel Oops Tracking Daemon
-usbmux daemon
-RealtimeKit
-Speech Dispatcher
-HPLIP system user
-
-Dariusz Duma
-PulseAudio daemon
- <dhor@toxic.net.pl>
+# Author: Dariusz Duma <dhor@toxic.net.pl>
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
diff --git a/debian/manpage.1.ex b/debian/manpage.1.ex
index 4400208..564463c 100644
--- a/debian/manpage.1.ex
+++ b/debian/manpage.1.ex
@@ -55,38 +55,5 @@ available via the Info system.
.SH AUTHOR
macrofusion was written by <upstream author>.
.PP
-This manual page was written by root
-daemon
-bin
-sys
-sync
-games
-man
-lp
-mail
-news
-uucp
-proxy
-www-data
-backup
-Mailing List Manager
-ircd
-Gnats Bug-Reporting System (admin)
-nobody
-
-
-colord colour management daemon
-
-Light Display Manager
-Avahi autoip daemon
-Avahi mDNS daemon
-Kernel Oops Tracking Daemon
-usbmux daemon
-RealtimeKit
-Speech Dispatcher
-HPLIP system user
-
-Dariusz Duma
-PulseAudio daemon
- <dhor@toxic.net.pl>,
+This manual page was written by Dariusz Duma <dhor@toxic.net.pl>,
for the Debian project (and may be used by others).
diff --git a/debian/manpage.sgml.ex b/debian/manpage.sgml.ex
index f7c6266..0b3b260 100644
--- a/debian/manpage.sgml.ex
+++ b/debian/manpage.sgml.ex
@@ -25,40 +25,7 @@ manpage.1: manpage.sgml
allowed: see man(7), man(1). -->
<!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
<!ENTITY dhemail "<email>dhor@toxic.net.pl</email>">
- <!ENTITY dhusername "root
-daemon
-bin
-sys
-sync
-games
-man
-lp
-mail
-news
-uucp
-proxy
-www-data
-backup
-Mailing List Manager
-ircd
-Gnats Bug-Reporting System (admin)
-nobody
-
-
-colord colour management daemon
-
-Light Display Manager
-Avahi autoip daemon
-Avahi mDNS daemon
-Kernel Oops Tracking Daemon
-usbmux daemon
-RealtimeKit
-Speech Dispatcher
-HPLIP system user
-
-Dariusz Duma
-PulseAudio daemon
-">
+ <!ENTITY dhusername "Dariusz Duma">
<!ENTITY dhucpackage "<refentrytitle>MACROFUSION</refentrytitle>">
<!ENTITY dhpackage "macrofusion">
diff --git a/debian/manpage.xml.ex b/debian/manpage.xml.ex
index 8ae69d5..5fcdc97 100644
--- a/debian/manpage.xml.ex
+++ b/debian/manpage.xml.ex
@@ -48,40 +48,7 @@ man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
<!ENTITY dhfirstname "FIRSTNAME">
<!ENTITY dhsurname "SURNAME">
<!-- dhusername could also be set to "&dhfirstname; &dhsurname;". -->
- <!ENTITY dhusername "root
-daemon
-bin
-sys
-sync
-games
-man
-lp
-mail
-news
-uucp
-proxy
-www-data
-backup
-Mailing List Manager
-ircd
-Gnats Bug-Reporting System (admin)
-nobody
-
-
-colord colour management daemon
-
-Light Display Manager
-Avahi autoip daemon
-Avahi mDNS daemon
-Kernel Oops Tracking Daemon
-usbmux daemon
-RealtimeKit
-Speech Dispatcher
-HPLIP system user
-
-Dariusz Duma
-PulseAudio daemon
-">
+ <!ENTITY dhusername "Dariusz Duma">
<!ENTITY dhemail "dhor@toxic.net.pl">
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are
allowed: see man(7), man(1) and
diff --git a/debian/patches/debian-changes-0.6-dhor2~all b/debian/patches/debian-changes-0.6-dhor2~all
new file mode 100644
index 0000000..eef2e60
--- /dev/null
+++ b/debian/patches/debian-changes-0.6-dhor2~all
@@ -0,0 +1,39 @@
+Description: Upstream changes introduced in version 0.6-dhor2~all
+ This patch has been created by dpkg-source during the package build.
+ Here's the last changelog entry, hopefully it gives details on why
+ those changes were made:
+ .
+ macrofusion (0.6-dhor2~all) all; urgency=low
+ .
+ * Auto align images
+ * Optimize preview mode
+ * Fix exif save
+ * 'Send to' as .tif
+ .
+ The person named in the Author field signed this changelog entry.
+Author: Dariusz Duma <dhor@toxic.net.pl>
+
+---
+The information above should follow the Patch Tagging Guidelines, please
+checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
+are templates for supplementary fields that you might want to add:
+
+Origin: <vendor|upstream|other>, <url of original patch>
+Bug: <url in upstream bugtracker>
+Bug-Debian: http://bugs.debian.org/<bugnumber>
+Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
+Forwarded: <no|not-needed|url proving that it has been forwarded>
+Reviewed-By: <name and email of someone who approved the patch>
+Last-Update: <YYYY-MM-DD>
+
+--- macrofusion-0.6.orig/macrofusion.py
++++ macrofusion-0.6/macrofusion.py
+@@ -759,7 +759,7 @@ class AproposFen:
+ self.aboutdialog.set_name("MacroFusion")
+ self.aboutdialog.set_modal(True)
+ self.aboutdialog.set_position(gtk.WIN_POS_CENTER)
+- self.aboutdialog.set_version('0.5')
++ self.aboutdialog.set_version('0.6')
+ self.aboutdialog.set_comments('A GTK Gui for the excellent Enfuse.\n Based on EnfuseGui by Chez Gholyo.\n\n(c) 2011 Dariusz Duma <dhor@toxic.net.pl>')
+ self.pixbuf=gtk.gdk.pixbuf_new_from_file(IMG + "logoMF.png")
+ self.aboutdialog.set_logo(self.pixbuf)
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..05cd8c9
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+debian-changes-0.6-dhor2~all
diff --git a/locale/fr/LC_MESSAGES/MacroFusion.mo b/locale/fr/LC_MESSAGES/MacroFusion.mo
index 388f4f0..3745e91 100644
--- a/locale/fr/LC_MESSAGES/MacroFusion.mo
+++ b/locale/fr/LC_MESSAGES/MacroFusion.mo
Binary files differ
diff --git a/locale/fr/LC_MESSAGES/MacroFusion.po b/locale/fr/LC_MESSAGES/MacroFusion.po
index fce0438..946da30 100644
--- a/locale/fr/LC_MESSAGES/MacroFusion.po
+++ b/locale/fr/LC_MESSAGES/MacroFusion.po
@@ -6,152 +6,276 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: macrofusion\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-10-17 00:05+0200\n"
-"PO-Revision-Date: 2009-10-17 00:07+0200\n"
-"Last-Translator: <gholyo@free.fr>\n"
+"POT-Creation-Date: 2011-11-17 12:16+0100\n"
+"PO-Revision-Date: 2011-11-17 12:30+0100\n"
+"Last-Translator: Dariusz Duma <dhor@toxic.net.pl>\n"
"Language-Team: French\n"
+"Language: \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"
-#: DOFuse.py:64
+#: macrofusion.py:89
#, python-format
msgid "Generating %s thumbnail failed."
msgstr "La création de la miniature %s a échoué."
-#: DOFuse.py:109
+#: macrofusion.py:138
msgid ""
"Can't find Enfuse.\n"
"Please check enblend/enfuse is installed.\n"
"Stopping..."
-msgstr "Enfuse est introuvable.\n"
+msgstr ""
+"Enfuse est introuvable.\n"
"Veuillez vérifier que enfuse/enblend est bien installé sur votre système.\n"
"Arrêt..."
-#: DOFuse.py:175
-msgid "Exiftool missing, cannot copy exif info"
+#: macrofusion.py:143
+msgid "Will use all the powers of your CPU!"
+msgstr ""
+
+#: macrofusion.py:163
+#, python-format
+msgid "CPU Cores: %s"
+msgstr ""
+
+#: macrofusion.py:269
+#, fuzzy
+msgid ""
+"Exiftool is missing!\n"
+"\n"
+" Cannot copy exif info."
msgstr "Exiftool est manquant, la fonctionnalité de copie des données exif sera manquante."
-#: DOFuse.py:325
+#: macrofusion.py:276
+msgid ""
+"Hugin tools (align_image_stack) are missing !\n"
+"\n"
+" Cannot auto align images."
+msgstr ""
+
+#: macrofusion.py:357
+msgid ""
+".\n"
+"\n"
+" Revert to default value."
+msgstr ""
+
+#: macrofusion.py:357
+msgid ""
+"No such application!\n"
+"\n"
+" Cannot find "
+msgstr ""
+
+#: macrofusion.py:380
+msgid "Image"
+msgstr ""
+
+#: macrofusion.py:386
+msgid "Thumbnail"
+msgstr ""
+
+#: macrofusion.py:439
+#: macrofusion.py:557
+msgid ""
+"Please add some images!\n"
+"\n"
+" Can't fuse anything."
+msgstr ""
+
+#: macrofusion.py:501
msgid "Calculating preview..."
msgstr "Calcul de la prévisualisation..."
-#: DOFuse.py:330
+#: macrofusion.py:506
msgid "Preview generated"
msgstr "Prévisualisation générée"
-#: DOFuse.py:366
+#: macrofusion.py:533
+msgid ""
+"No preview, no output, no edit.\n"
+"\n"
+" Game Over."
+msgstr ""
+
+#: macrofusion.py:554
+msgid ""
+"Can't overwrite input image!\n"
+"\n"
+" Please change the output filename."
+msgstr ""
+
+#: macrofusion.py:612
msgid "Add images..."
msgstr "Ajouter des images..."
-#: DOFuse.py:374
+#: macrofusion.py:620
msgid "Open images..."
msgstr "Ouvrir..."
-#: DOFuse.py:406
+#: macrofusion.py:644
+msgid "<b>Model:</b> "
+msgstr ""
+
+#: macrofusion.py:645
+#, fuzzy
+msgid "<b>Date:</b> "
+msgstr "<b>Action</b>"
+
+#: macrofusion.py:646
+msgid "<b>Focal length:</b> "
+msgstr ""
+
+#: macrofusion.py:647
+msgid "<b>Aperture:</b> F/"
+msgstr ""
+
+#: macrofusion.py:648
+#, fuzzy
+msgid "<b>Exposure Time:</b> "
+msgstr "<b>Prévisualisation</b>"
+
+#: macrofusion.py:652
+#, fuzzy
+msgid "<b>Filename:</b> "
+msgstr "<b>Paramètres de fusion</b>"
+
+#: macrofusion.py:652
+#, fuzzy
+msgid "<b>Resolution:</b> "
+msgstr "<b>Action</b>"
+
+#: macrofusion.py:688
msgid "Save file..."
msgstr "Enregistrer..."
-#: DOFuse.py:474
+#: macrofusion.py:744
+msgid ":: Align photos..."
+msgstr ""
+
+#: macrofusion.py:750
+msgid ":: Fusion photos..."
+msgstr ""
+
+#: macrofusion.py:773
+#, fuzzy
+msgid "Fusion images..."
+msgstr "Ouvrir..."
+
+#: macrofusion.py:781
msgid "Fusion, please wait..."
msgstr "Fusion en cours, veuillez patienter..."
-#: DOFuse.py:479
+#: macrofusion.py:786
msgid "Fused !"
msgstr "Fusion effectuée !"
-#: DOFuseInterface.glade:18
+#: ui/DOFuseInterface2.glade:22
msgid "_File"
msgstr "_Fichier"
-#: DOFuseInterface.glade:98
+#: ui/DOFuseInterface2.glade:65
+msgid "Remove All"
+msgstr ""
+
+#: ui/DOFuseInterface2.glade:119
msgid "H_elp"
msgstr "Aid_e"
-#: DOFuseInterface.glade:225
+#: ui/DOFuseInterface2.glade:209
msgid "Exposure (default: 1)"
msgstr "Exposition (défaut : 1)"
-#: DOFuseInterface.glade:273
+#: ui/DOFuseInterface2.glade:270
msgid "Contrast (default: 0)"
msgstr "Contraste (défaut : 0)"
-#: DOFuseInterface.glade:320
+#: ui/DOFuseInterface2.glade:330
msgid "Saturation (default: 0.2)"
msgstr "Saturation (défaut : 0.2)"
-#: DOFuseInterface.glade:367
+#: ui/DOFuseInterface2.glade:390
msgid "Mean exposure (default: 0.5)"
msgstr "Exposition moyenne (défaut : 0.5)"
-#: DOFuseInterface.glade:414
+#: ui/DOFuseInterface2.glade:450
msgid "Deviation (default: 0.2)"
msgstr "Ecart type (défaut : 0.2)"
-#: DOFuseInterface.glade:464
+#: ui/DOFuseInterface2.glade:513
msgid "<b>Fusion parameters</b>"
msgstr "<b>Paramètres de fusion</b>"
-#: DOFuseInterface.glade:488
-msgid "Copy exif info ?"
-msgstr "Copier les données exif ?"
+#: ui/DOFuseInterface2.glade:543
+msgid "Align"
+msgstr ""
-#: DOFuseInterface.glade:500
-msgid "<b>Exif</b>"
-msgstr "<b>Exif</b>"
+#: ui/DOFuseInterface2.glade:561
+msgid "Autocrop"
+msgstr ""
+
+#: ui/DOFuseInterface2.glade:579
+msgid "Optimize image center shift"
+msgstr ""
+
+#: ui/DOFuseInterface2.glade:598
+msgid "Optimize field of view"
+msgstr ""
+
+#: ui/DOFuseInterface2.glade:623
+#, fuzzy
+msgid "<b>Align images</b>"
+msgstr "<b>Action</b>"
-#: DOFuseInterface.glade:519
+#: ui/DOFuseInterface2.glade:643
msgid "Fusion"
msgstr "Fusion"
-#: DOFuseInterface.glade:543
+#: ui/DOFuseInterface2.glade:670
msgid "Pyramid levels: "
msgstr "Niveaux de pyramide :"
-#: DOFuseInterface.glade:586
+#: ui/DOFuseInterface2.glade:726
msgid "Force HardMask "
msgstr "Forcer le HardMask :"
-#: DOFuseInterface.glade:612
+#: ui/DOFuseInterface2.glade:764
msgid "Contrast window:"
msgstr "Fenêtre de contraste :"
-#: DOFuseInterface.glade:656
+#: ui/DOFuseInterface2.glade:827
msgid "Min Curvature:"
msgstr "Courbure minimale :"
-#: DOFuseInterface.glade:672
+#: ui/DOFuseInterface2.glade:844
msgid "%"
msgstr "%"
-#: DOFuseInterface.glade:715
+#: ui/DOFuseInterface2.glade:902
msgid "EdgeScale:"
msgstr "EdgeScale:"
-#: DOFuseInterface.glade:749
+#: ui/DOFuseInterface2.glade:960
msgid "EdgeScale"
msgstr "EdgeScale"
-#: DOFuseInterface.glade:783
+#: ui/DOFuseInterface2.glade:1035
msgid "LceScale"
msgstr "LceScale"
-#: DOFuseInterface.glade:817
+#: ui/DOFuseInterface2.glade:1106
msgid "LceFactor"
msgstr "LceFactor"
-#: DOFuseInterface.glade:848
+#: ui/DOFuseInterface2.glade:1142
msgid "Use CIECAM02 color profile"
msgstr "Utiliser le profil de couleur CIECMA02"
-#: DOFuseInterface.glade:884
-msgid "Gray projector:"
-msgstr "Projection en niveaux de gris :"
-
-#: DOFuseInterface.glade:897
+#: ui/DOFuseInterface2.glade:1191
msgid ""
"Mean\n"
"L-star\n"
@@ -165,67 +289,81 @@ msgstr ""
"Valeur\n"
"Luminance"
-#: DOFuseInterface.glade:925
+#: ui/DOFuseInterface2.glade:1207
+msgid "Gray projector:"
+msgstr "Projection en niveaux de gris :"
+
+#: ui/DOFuseInterface2.glade:1244
msgid "<b>Expert Options</b>"
msgstr "<b>Options Expert</b>"
-#: DOFuseInterface.glade:940
+#: ui/DOFuseInterface2.glade:1260
msgid "Expert"
msgstr "Expert"
-#: DOFuseInterface.glade:964
-msgid "Preview Size:"
+#: ui/DOFuseInterface2.glade:1294
+#, fuzzy
+msgid "Preview size:"
msgstr "Taille des prévisualisations :"
-#: DOFuseInterface.glade:995 DOFuseInterface.glade:1240
+#: ui/DOFuseInterface2.glade:1316
+#: ui/DOFuseInterface2.glade:1359
+msgid "The larger resolution - the longer it takes to generate preview."
+msgstr ""
+
+#: ui/DOFuseInterface2.glade:1335
+#: ui/DOFuseInterface2.glade:1632
msgid "Width"
msgstr "Largeur"
-#: DOFuseInterface.glade:1029 DOFuseInterface.glade:1275
+#: ui/DOFuseInterface2.glade:1378
+#: ui/DOFuseInterface2.glade:1673
msgid "Height"
msgstr "Hauteur"
-#: DOFuseInterface.glade:1063
+#: ui/DOFuseInterface2.glade:1425
msgid "Cache Size:"
msgstr "Taille du cache :"
-#: DOFuseInterface.glade:1076
+#: ui/DOFuseInterface2.glade:1439
msgid "1024 Mb (default)"
msgstr "1024 Mb (défaut)"
-#: DOFuseInterface.glade:1122
+#: ui/DOFuseInterface2.glade:1495
msgid "Bloc Size: "
msgstr "Taille du bloc :"
-#: DOFuseInterface.glade:1135
+#: ui/DOFuseInterface2.glade:1509
msgid "2048 kb (default)"
msgstr "2048 kb (défaut)"
-#: DOFuseInterface.glade:1184
+#: ui/DOFuseInterface2.glade:1569
msgid "Final image size:"
msgstr "Taille de l'image finale :"
-#: DOFuseInterface.glade:1194 DOFuseInterface.glade:1392
+#: ui/DOFuseInterface2.glade:1579
+#: ui/DOFuseInterface2.glade:1807
msgid "Default"
msgstr "Défaut"
-#: DOFuseInterface.glade:1310
+#: ui/DOFuseInterface2.glade:1714
msgid "X-offset"
msgstr "X-offset"
-#: DOFuseInterface.glade:1345
+#: ui/DOFuseInterface2.glade:1755
msgid "Y-offset"
msgstr "Y-offset"
-#: DOFuseInterface.glade:1380
+#: ui/DOFuseInterface2.glade:1793
msgid "Jpeg compression:"
msgstr "Compression Jpeg :"
-#: DOFuseInterface.glade:1437
-msgid "Tiff compression:"
+#: ui/DOFuseInterface2.glade:1861
+#, fuzzy
+msgid "Tiff compression: "
msgstr "Compression Tiff :"
-#: DOFuseInterface.glade:1449
+#: ui/DOFuseInterface2.glade:1874
msgid ""
"None\n"
"Packbits\n"
@@ -237,34 +375,54 @@ msgstr ""
"LZW\n"
"Deflate"
-#: DOFuseInterface.glade:1472
+#: ui/DOFuseInterface2.glade:1912
+msgid "Edit with: "
+msgstr ""
+
+#: ui/DOFuseInterface2.glade:1973
msgid "<b>Software Options</b>"
msgstr "<b>Options du programme</b>"
-#: DOFuseInterface.glade:1487
+#: ui/DOFuseInterface2.glade:1999
+msgid "Copy exif info ?"
+msgstr "Copier les données exif ?"
+
+#: ui/DOFuseInterface2.glade:2013
+msgid "<b>Exif</b>"
+msgstr "<b>Exif</b>"
+
+#: ui/DOFuseInterface2.glade:2036
msgid "Configuration"
msgstr "Configuration"
-#: DOFuseInterface.glade:1508
+#: ui/DOFuseInterface2.glade:2059
+msgid "_Before/After"
+msgstr ""
+
+#: ui/DOFuseInterface2.glade:2077
msgid "_Preview"
msgstr "_Prévisualisation"
-#: DOFuseInterface.glade:1555
-msgid "Fu_se"
-msgstr "Fu_sion"
+#: ui/DOFuseInterface2.glade:2151
+#, fuzzy
+msgid "<b>Photos</b>"
+msgstr "<b>Action</b>"
-#: DOFuseInterface.glade:1574
+#: ui/DOFuseInterface2.glade:2234
msgid "<b>Action</b>"
msgstr "<b>Action</b>"
-#: DOFuseInterface.glade:1621
+#: ui/DOFuseInterface2.glade:2292
msgid "<b>Preview</b>"
msgstr "<b>Prévisualisation</b>"
-#: Progress.glade:19
+#: ui/Progress.glade:20
msgid "label"
msgstr "label"
-#: Progress.glade:49
+#: ui/Progress.glade:50
msgid "Close"
msgstr "Fermer"
+
+#~ msgid "Fu_se"
+#~ msgstr "Fu_sion"
diff --git a/locale/pl/LC_MESSAGES/MacroFusion.mo b/locale/pl/LC_MESSAGES/MacroFusion.mo
index 4ee8a55..488d8ce 100644
--- a/locale/pl/LC_MESSAGES/MacroFusion.mo
+++ b/locale/pl/LC_MESSAGES/MacroFusion.mo
Binary files differ
diff --git a/locale/pl/LC_MESSAGES/MacroFusion.po b/locale/pl/LC_MESSAGES/MacroFusion.po
index 222a87b..01f86f3 100644
--- a/locale/pl/LC_MESSAGES/MacroFusion.po
+++ b/locale/pl/LC_MESSAGES/MacroFusion.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-10-17 00:05+0200\n"
-"PO-Revision-Date: 2011-11-13 18:01+0100\n"
+"POT-Creation-Date: 2011-11-17 12:16+0100\n"
+"PO-Revision-Date: 2011-11-17 12:29+0100\n"
"Last-Translator: Dariusz Duma <dhor@toxic.net.pl>\n"
"Language-Team: Dariusz Duma <dhor@toxic.net.pl>\n"
"Language: \n"
@@ -21,12 +21,12 @@ msgstr ""
"X-Poedit-Country: Polska\n"
"X-Poedit-SourceCharset: UTF-8\n"
-#: DOFuse.py:64
+#: macrofusion.py:89
#, python-format
msgid "Generating %s thumbnail failed."
msgstr "Wygenerowanie podglądu %s nie powiodło się."
-#: DOFuse.py:109
+#: macrofusion.py:138
msgid ""
"Can't find Enfuse.\n"
"Please check enblend/enfuse is installed.\n"
@@ -36,7 +36,16 @@ msgstr ""
"Proszę sprawdzić, czy Enblend/Enfuse jest zainstalowany.\n"
"Anulowanie..."
-#: DOFuse.py:266
+#: macrofusion.py:143
+msgid "Will use all the powers of your CPU!"
+msgstr ""
+
+#: macrofusion.py:163
+#, python-format
+msgid "CPU Cores: %s"
+msgstr "Ilość rdzeni: %s"
+
+#: macrofusion.py:269
msgid ""
"Exiftool is missing!\n"
"\n"
@@ -46,7 +55,7 @@ msgstr ""
"\n"
"Zablokowana opcja kopiowania danych exif."
-#: DOFuse.py:273
+#: macrofusion.py:276
msgid ""
"Hugin tools (align_image_stack) are missing !\n"
"\n"
@@ -56,15 +65,64 @@ msgstr ""
"\n"
"Zablokowana opcja automatycznego wyrównywania zdjęć."
-#: DOFuse.py:325
+#: macrofusion.py:357
+msgid ""
+".\n"
+"\n"
+" Revert to default value."
+msgstr ""
+".\n"
+"\n"
+"Przywracanie domyślnego edytora."
+
+#: macrofusion.py:357
+msgid ""
+"No such application!\n"
+"\n"
+" Cannot find "
+msgstr ""
+"Nie ma takiej aplikacji!\n"
+"\n"
+"Nie można odnaleźć "
+
+#: macrofusion.py:380
+msgid "Image"
+msgstr "Obraz"
+
+#: macrofusion.py:386
+msgid "Thumbnail"
+msgstr "Miniatura"
+
+#: macrofusion.py:439
+#: macrofusion.py:557
+msgid ""
+"Please add some images!\n"
+"\n"
+" Can't fuse anything."
+msgstr ""
+"Proszę dodać zdjęcia!\n"
+"\n"
+"Brak plików do scalenia."
+
+#: macrofusion.py:501
msgid "Calculating preview..."
msgstr "Tworzenie podglądu..."
-#: DOFuse.py:330
+#: macrofusion.py:506
msgid "Preview generated"
msgstr "Podgląd utworzony"
-#: DOFuse.py:364
+#: macrofusion.py:533
+msgid ""
+"No preview, no output, no edit.\n"
+"\n"
+" Game Over."
+msgstr ""
+"Brak podglądu, brak pliku wyjściowe, brak możliwości edycji.\n"
+"\n"
+"Game Over."
+
+#: macrofusion.py:554
msgid ""
"Can't overwrite input image!\n"
"\n"
@@ -74,169 +132,167 @@ msgstr ""
"\n"
"Proszę wybrać inną nazwę pliku."
-#: DOFuse.py:366
+#: macrofusion.py:612
msgid "Add images..."
msgstr "Dodaj zdjęcia..."
-#: DOFuse.py:374
+#: macrofusion.py:620
msgid "Open images..."
msgstr "Otwórz zdjęcia..."
-#: DOFuse.py:374
-msgid "Image"
-msgstr "Obraz"
+#: macrofusion.py:644
+msgid "<b>Model:</b> "
+msgstr "<b>Aparat:</b> "
-#: DOFuse.py:406
-msgid "Save file..."
-msgstr "Zapisz plik..."
+#: macrofusion.py:645
+msgid "<b>Date:</b> "
+msgstr "<b>Data:</b> "
-#: DOFuse.py:474
-msgid "Fusion, please wait..."
-msgstr "Łączenie, proszę czekać..."
+#: macrofusion.py:646
+msgid "<b>Focal length:</b> "
+msgstr "<b>Ogniskowa:</b> "
-#: DOFuse.py:477
-msgid "Fusion images..."
-msgstr "Scalanie obrazów..."
+#: macrofusion.py:647
+msgid "<b>Aperture:</b> F/"
+msgstr "<b>Przysłona:</b> F/"
-#: DOFuse.py:479
-msgid "Fused !"
-msgstr "Połączone!"
+#: macrofusion.py:648
+msgid "<b>Exposure Time:</b> "
+msgstr "<b>Czas naświetlania:</b> "
-#: DOFuse.py:456
-msgid ""
-"Please add some images!\n"
-"\n"
-" Can't fuse anything."
-msgstr ""
-"Proszę dodać zdjęcia!\n"
-"\n"
-"Brak plików do scalenia."
+#: macrofusion.py:652
+msgid "<b>Filename:</b> "
+msgstr "<b>Nazwa pliku:</b> "
+
+#: macrofusion.py:652
+msgid "<b>Resolution:</b> "
+msgstr "<b>Rozdzielczość:</b> "
-#: DOFuse.py:677
+#: macrofusion.py:688
+msgid "Save file..."
+msgstr "Zapisz plik..."
+
+#: macrofusion.py:744
msgid ":: Align photos..."
msgstr ":: Wyrównywanie zdjęć..."
-#: DOFuse.py:682
+#: macrofusion.py:750
msgid ":: Fusion photos..."
msgstr ":: Scalanie zdjęć..."
-#: DOFuseInterface.glade:18
+#: macrofusion.py:773
+msgid "Fusion images..."
+msgstr "Scalanie obrazów..."
+
+#: macrofusion.py:781
+msgid "Fusion, please wait..."
+msgstr "Łączenie, proszę czekać..."
+
+#: macrofusion.py:786
+msgid "Fused !"
+msgstr "Połączone!"
+
+#: ui/DOFuseInterface2.glade:22
msgid "_File"
msgstr "_Plik"
-#: DOFuseInterface.glade:54
+#: ui/DOFuseInterface2.glade:65
msgid "Remove All"
msgstr "Usuń wszystkie"
-#: DOFuseInterface.glade:98
+#: ui/DOFuseInterface2.glade:119
msgid "H_elp"
msgstr "Pomo_c"
-#: DOFuseInterface.glade:135
-msgid "CPU Cores: %s"
-msgstr "Ilość rdzeni: %s"
-
-#: DOFuseInterface.glade:225
+#: ui/DOFuseInterface2.glade:209
msgid "Exposure (default: 1)"
msgstr "Ekspozycja (domyślnie: 1)"
-#: DOFuseInterface.glade:273
+#: ui/DOFuseInterface2.glade:270
msgid "Contrast (default: 0)"
msgstr "Kontrast (domyślnie : 0)"
-#: DOFuseInterface.glade:320
+#: ui/DOFuseInterface2.glade:330
msgid "Saturation (default: 0.2)"
msgstr "Nasycenie (domyślnie : 0.2)"
-#: DOFuseInterface.glade:367
+#: ui/DOFuseInterface2.glade:390
msgid "Mean exposure (default: 0.5)"
msgstr "Centrum ekspozycji (domyślnie: 0.5)"
-#: DOFuseInterface.glade:414
+#: ui/DOFuseInterface2.glade:450
msgid "Deviation (default: 0.2)"
msgstr "Odchylenie (domyślnie: 0.2)"
-#: DOFuseInterface.glade:464
+#: ui/DOFuseInterface2.glade:513
msgid "<b>Fusion parameters</b>"
msgstr "<b>Parametry łączenia</b>"
-#: DOFuseInterface.glade:488
-msgid "Copy exif info ?"
-msgstr "Skopiować dane exif?"
-
-#: DOFuseInterface.glade:500
-msgid "<b>Exif</b>"
-msgstr "<b>Exif</b>"
-
-#: DOFuseInterface.glade:515
+#: ui/DOFuseInterface2.glade:543
msgid "Align"
msgstr "Wyrównaj"
-#: DOFuseInterface.glade:519
-msgid "Fusion"
-msgstr "Łączenie"
-
-#: DOFuseInterface.glade:529
+#: ui/DOFuseInterface2.glade:561
msgid "Autocrop"
msgstr "Automatyczne przycinanie"
-#: DOFuseInterface.glade:542
+#: ui/DOFuseInterface2.glade:579
msgid "Optimize image center shift"
msgstr "Optymalizuj przesunięcie środka zdjęcia"
-#: DOFuseInterface.glade:543
-msgid "Pyramid levels: "
-msgstr "Poziom zmiękczenia:"
-
-#: DOFuseInterface.glade:556
+#: ui/DOFuseInterface2.glade:598
msgid "Optimize field of view"
msgstr "Optymalizuj głębie ostrości "
-#: DOFuseInterface.glade:577
+#: ui/DOFuseInterface2.glade:623
msgid "<b>Align images</b>"
msgstr "<b>Wyrównywanie zdjęć</b>"
-#: DOFuseInterface.glade:586
+#: ui/DOFuseInterface2.glade:643
+msgid "Fusion"
+msgstr "Łączenie"
+
+#: ui/DOFuseInterface2.glade:670
+msgid "Pyramid levels: "
+msgstr "Poziom zmiękczenia:"
+
+#: ui/DOFuseInterface2.glade:726
msgid "Force HardMask "
msgstr "Wymuś twardą maskę:"
-#: DOFuseInterface.glade:612
+#: ui/DOFuseInterface2.glade:764
msgid "Contrast window:"
msgstr "Matryca kontrastu:"
-#: DOFuseInterface.glade:656
+#: ui/DOFuseInterface2.glade:827
msgid "Min Curvature:"
msgstr "Min krzywizny:"
-#: DOFuseInterface.glade:672
+#: ui/DOFuseInterface2.glade:844
msgid "%"
msgstr "%"
-#: DOFuseInterface.glade:715
+#: ui/DOFuseInterface2.glade:902
msgid "EdgeScale:"
msgstr "Wykrywanie krawędzi:"
-#: DOFuseInterface.glade:749
+#: ui/DOFuseInterface2.glade:960
msgid "EdgeScale"
msgstr "EdgeScale"
-#: DOFuseInterface.glade:783
+#: ui/DOFuseInterface2.glade:1035
msgid "LceScale"
msgstr "LceScale"
-#: DOFuseInterface.glade:817
+#: ui/DOFuseInterface2.glade:1106
msgid "LceFactor"
msgstr "LceFactor"
-#: DOFuseInterface.glade:848
+#: ui/DOFuseInterface2.glade:1142
msgid "Use CIECAM02 color profile"
msgstr "Profil koloru CIECMA02"
-#: DOFuseInterface.glade:884
-msgid "Gray projector:"
-msgstr "Operator skali szarości:"
-
-#: DOFuseInterface.glade:897
+#: ui/DOFuseInterface2.glade:1191
msgid ""
"Mean\n"
"L-star\n"
@@ -250,75 +306,79 @@ msgstr ""
"Wartość\n"
"Luminacja"
-#: DOFuseInterface.glade:925
+#: ui/DOFuseInterface2.glade:1207
+msgid "Gray projector:"
+msgstr "Operator skali szarości:"
+
+#: ui/DOFuseInterface2.glade:1244
msgid "<b>Expert Options</b>"
msgstr "<b>Zaawansowane</b>"
-#: DOFuseInterface.glade:940
+#: ui/DOFuseInterface2.glade:1260
msgid "Expert"
msgstr "Zaawansowane"
-#: DOFuseInterface.glade:964
-msgid "Preview Size:"
+#: ui/DOFuseInterface2.glade:1294
+msgid "Preview size:"
msgstr "Rozmiar podglądu:"
-#: DOFuseInterface.glade:995
-#: DOFuseInterface.glade:1240
-msgid "Width"
-msgstr "Szerokość"
-
-#: DOFuseInterface.glade:1055
-#: DOFuseInterface.glade:1090
+#: ui/DOFuseInterface2.glade:1316
+#: ui/DOFuseInterface2.glade:1359
msgid "The larger resolution - the longer it takes to generate preview."
msgstr "Im wyższa rozdzielczość, tym dłużej będzie trwało generowanie podglądu."
-#: DOFuseInterface.glade:1029
-#: DOFuseInterface.glade:1275
+#: ui/DOFuseInterface2.glade:1335
+#: ui/DOFuseInterface2.glade:1632
+msgid "Width"
+msgstr "Szerokość"
+
+#: ui/DOFuseInterface2.glade:1378
+#: ui/DOFuseInterface2.glade:1673
msgid "Height"
msgstr "Wysokość"
-#: DOFuseInterface.glade:1063
+#: ui/DOFuseInterface2.glade:1425
msgid "Cache Size:"
msgstr "Pamięć podręczna:"
-#: DOFuseInterface.glade:1076
+#: ui/DOFuseInterface2.glade:1439
msgid "1024 Mb (default)"
msgstr "1024 Mb (domyślnie)"
-#: DOFuseInterface.glade:1122
+#: ui/DOFuseInterface2.glade:1495
msgid "Bloc Size: "
msgstr "Rozmiar bloku:"
-#: DOFuseInterface.glade:1135
+#: ui/DOFuseInterface2.glade:1509
msgid "2048 kb (default)"
msgstr "2048 kb (domyślnie)"
-#: DOFuseInterface.glade:1184
+#: ui/DOFuseInterface2.glade:1569
msgid "Final image size:"
msgstr "Rozmiar obrazu wyjściowego:"
-#: DOFuseInterface.glade:1194
-#: DOFuseInterface.glade:1392
+#: ui/DOFuseInterface2.glade:1579
+#: ui/DOFuseInterface2.glade:1807
msgid "Default"
msgstr "Domyślny"
-#: DOFuseInterface.glade:1310
+#: ui/DOFuseInterface2.glade:1714
msgid "X-offset"
msgstr "X-offset"
-#: DOFuseInterface.glade:1345
+#: ui/DOFuseInterface2.glade:1755
msgid "Y-offset"
msgstr "Y-offset"
-#: DOFuseInterface.glade:1380
+#: ui/DOFuseInterface2.glade:1793
msgid "Jpeg compression:"
msgstr "Stopień kompresji Jpeg:"
-#: DOFuseInterface.glade:1437
-msgid "Tiff compression:"
+#: ui/DOFuseInterface2.glade:1861
+msgid "Tiff compression: "
msgstr "Kompresja Tiff :"
-#: DOFuseInterface.glade:1449
+#: ui/DOFuseInterface2.glade:1874
msgid ""
"None\n"
"Packbits\n"
@@ -330,49 +390,59 @@ msgstr ""
"LZW\n"
"Deflate"
-#: DOFuseInterface.glade:1472
+#: ui/DOFuseInterface2.glade:1912
+msgid "Edit with: "
+msgstr "Edytuj za pomocą"
+
+#: ui/DOFuseInterface2.glade:1973
msgid "<b>Software Options</b>"
msgstr "<b>Konfiguracja</b>"
-#: DOFuseInterface.glade:1487
+#: ui/DOFuseInterface2.glade:1999
+msgid "Copy exif info ?"
+msgstr "Skopiować dane exif?"
+
+#: ui/DOFuseInterface2.glade:2013
+msgid "<b>Exif</b>"
+msgstr "<b>Exif</b>"
+
+#: ui/DOFuseInterface2.glade:2036
msgid "Configuration"
msgstr "Konfiguracja"
-#: DOFuseInterface.glade:1508
+#: ui/DOFuseInterface2.glade:2059
+msgid "_Before/After"
+msgstr "Przed/Po"
+
+#: ui/DOFuseInterface2.glade:2077
msgid "_Preview"
msgstr "Podgląd"
-#: DOFuseInterface.glade:1555
-msgid "Fu_se"
-msgstr "Złóż"
+#: ui/DOFuseInterface2.glade:2151
+msgid "<b>Photos</b>"
+msgstr "<b>Zdjęcia</b>"
-#: DOFuseInterface.glade:1574
+#: ui/DOFuseInterface2.glade:2234
msgid "<b>Action</b>"
msgstr "<b>Opcje</b>"
-#: DOFuseInterface.glade:1621
+#: ui/DOFuseInterface2.glade:2292
msgid "<b>Preview</b>"
msgstr "<b>Podgląd</b>"
-#: DOFuseInterface.glade:1581
-msgid "<b>Photos</b>"
-msgstr "<b>Zdjęcia</b>"
-
-#: DOFuseInterface.glade:1595
-msgid "_Before/After"
-msgstr "Przed/Po"
-
-#: DOFuseInterface.glade:1686
-msgid "Edit"
-msgstr "Edycja"
-
-#: Progress.glade:19
+#: ui/Progress.glade:20
msgid "label"
msgstr "etykieta"
-#: Progress.glade:49
+#: ui/Progress.glade:50
msgid "Close"
msgstr "Zamknij"
+#~ msgid "Fu_se"
+#~ msgstr "Złóż"
+
+#~ msgid "Edit"
+#~ msgstr "Edycja"
+
#~ msgid "Send to"
#~ msgstr "Wyślij do"
diff --git a/macrofusion.pot b/macrofusion.pot
index 67e2c87..b06896e 100644
--- a/macrofusion.pot
+++ b/macrofusion.pot
@@ -8,206 +8,262 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-10-17 00:05+0200\n"
+"POT-Creation-Date: 2011-11-17 12:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: DOFuse.py:64
+#: macrofusion.py:89
#, python-format
msgid "Generating %s thumbnail failed."
msgstr ""
-#: DOFuse.py:109
+#: macrofusion.py:138
msgid ""
"Can't find Enfuse.\n"
"Please check enblend/enfuse is installed.\n"
"Stopping..."
msgstr ""
-#: DOFuse.py:266
-msgid "Exiftool is missing!\n\n Cannot copy exif info."
+#: macrofusion.py:143
+msgid "Will use all the powers of your CPU!"
msgstr ""
-#: DOFuse.py:273
-msgid "Hugin tools (align_image_stack) are missing !\n\n Cannot auto align images."
+#: macrofusion.py:163
+#, python-format
+msgid "CPU Cores: %s"
+msgstr ""
+
+#: macrofusion.py:269
+msgid ""
+"Exiftool is missing!\n"
+"\n"
+" Cannot copy exif info."
+msgstr ""
+
+#: macrofusion.py:276
+msgid ""
+"Hugin tools (align_image_stack) are missing !\n"
+"\n"
+" Cannot auto align images."
+msgstr ""
+
+#: macrofusion.py:357
+msgid ""
+".\n"
+"\n"
+" Revert to default value."
msgstr ""
-#: DOFuse.py:325
+#: macrofusion.py:357
+msgid ""
+"No such application!\n"
+"\n"
+" Cannot find "
+msgstr ""
+
+#: macrofusion.py:380
+msgid "Image"
+msgstr ""
+
+#: macrofusion.py:386
+msgid "Thumbnail"
+msgstr ""
+
+#: macrofusion.py:439 macrofusion.py:557
+msgid ""
+"Please add some images!\n"
+"\n"
+" Can't fuse anything."
+msgstr ""
+
+#: macrofusion.py:501
msgid "Calculating preview..."
msgstr ""
-#: DOFuse.py:330
+#: macrofusion.py:506
msgid "Preview generated"
msgstr ""
-#: DOFuse.py:364
-msgid "Can't overwrite input image!\n\n Please change the output filename."
+#: macrofusion.py:533
+msgid ""
+"No preview, no output, no edit.\n"
+"\n"
+" Game Over."
msgstr ""
-#: DOFuse.py:366
+#: macrofusion.py:554
+msgid ""
+"Can't overwrite input image!\n"
+"\n"
+" Please change the output filename."
+msgstr ""
+
+#: macrofusion.py:612
msgid "Add images..."
msgstr ""
-#: DOFuse.py:374
+#: macrofusion.py:620
msgid "Open images..."
msgstr ""
-#: DOFuse.py:374
-msgid "Image"
+#: macrofusion.py:644
+msgid "<b>Model:</b> "
msgstr ""
-#: DOFuse.py:406
-msgid "Save file..."
+#: macrofusion.py:645
+msgid "<b>Date:</b> "
msgstr ""
-#: DOFuse.py:474
-msgid "Fusion, please wait..."
+#: macrofusion.py:646
+msgid "<b>Focal length:</b> "
msgstr ""
-#: DOFuse.py:477
-msgid "Fusion images..."
+#: macrofusion.py:647
+msgid "<b>Aperture:</b> F/"
msgstr ""
-#: DOFuse.py:479
-msgid "Fused !"
+#: macrofusion.py:648
+msgid "<b>Exposure Time:</b> "
+msgstr ""
+
+#: macrofusion.py:652
+msgid "<b>Filename:</b> "
+msgstr ""
+
+#: macrofusion.py:652
+msgid "<b>Resolution:</b> "
msgstr ""
-#: DOFuse.py:456
-msgid "Please add some images!\n\n Can't fuse anything."
+#: macrofusion.py:688
+msgid "Save file..."
msgstr ""
-#: DOFuse.py:677
+#: macrofusion.py:744
msgid ":: Align photos..."
msgstr ""
-#: DOFuse.py:682
+#: macrofusion.py:750
msgid ":: Fusion photos..."
msgstr ""
+#: macrofusion.py:773
+msgid "Fusion images..."
+msgstr ""
-#: DOFuseInterface.glade:18
-msgid "_File"
+#: macrofusion.py:781
+msgid "Fusion, please wait..."
msgstr ""
-#: DOFuseInterface.glade:54
-msgid "Remove All"
+#: macrofusion.py:786
+msgid "Fused !"
msgstr ""
+#: ui/DOFuseInterface2.glade:22
+msgid "_File"
+msgstr ""
-#: DOFuseInterface.glade:98
-msgid "H_elp"
+#: ui/DOFuseInterface2.glade:65
+msgid "Remove All"
msgstr ""
-#: DOFuseInterface.glade:135
-msgid "CPU Cores: %s"
+#: ui/DOFuseInterface2.glade:119
+msgid "H_elp"
msgstr ""
-#: DOFuseInterface.glade:225
+#: ui/DOFuseInterface2.glade:209
msgid "Exposure (default: 1)"
msgstr ""
-#: DOFuseInterface.glade:273
+#: ui/DOFuseInterface2.glade:270
msgid "Contrast (default: 0)"
msgstr ""
-#: DOFuseInterface.glade:320
+#: ui/DOFuseInterface2.glade:330
msgid "Saturation (default: 0.2)"
msgstr ""
-#: DOFuseInterface.glade:367
+#: ui/DOFuseInterface2.glade:390
msgid "Mean exposure (default: 0.5)"
msgstr ""
-#: DOFuseInterface.glade:414
+#: ui/DOFuseInterface2.glade:450
msgid "Deviation (default: 0.2)"
msgstr ""
-#: DOFuseInterface.glade:464
+#: ui/DOFuseInterface2.glade:513
msgid "<b>Fusion parameters</b>"
msgstr ""
-#: DOFuseInterface.glade:488
-msgid "Copy exif info ?"
-msgstr ""
-
-#: DOFuseInterface.glade:500
-msgid "<b>Exif</b>"
-msgstr ""
-
-#: DOFuseInterface.glade:515
+#: ui/DOFuseInterface2.glade:543
msgid "Align"
msgstr ""
-#: DOFuseInterface.glade:519
-msgid "Fusion"
-msgstr ""
-
-#: DOFuseInterface.glade:529
+#: ui/DOFuseInterface2.glade:561
msgid "Autocrop"
msgstr ""
-#: DOFuseInterface.glade:542
+#: ui/DOFuseInterface2.glade:579
msgid "Optimize image center shift"
msgstr ""
-#: DOFuseInterface.glade:543
-msgid "Pyramid levels: "
+#: ui/DOFuseInterface2.glade:598
+msgid "Optimize field of view"
msgstr ""
-#: DOFuseInterface.glade:556
-msgid "Optimize field of view"
+#: ui/DOFuseInterface2.glade:623
+msgid "<b>Align images</b>"
msgstr ""
+#: ui/DOFuseInterface2.glade:643
+msgid "Fusion"
+msgstr ""
-#: DOFuseInterface.glade:577
-msgid "<b>Align images</b>"
+#: ui/DOFuseInterface2.glade:670
+msgid "Pyramid levels: "
msgstr ""
-#: DOFuseInterface.glade:586
+#: ui/DOFuseInterface2.glade:726
msgid "Force HardMask "
msgstr ""
-#: DOFuseInterface.glade:612
+#: ui/DOFuseInterface2.glade:764
msgid "Contrast window:"
msgstr ""
-#: DOFuseInterface.glade:656
+#: ui/DOFuseInterface2.glade:827
msgid "Min Curvature:"
msgstr ""
-#: DOFuseInterface.glade:672
+#: ui/DOFuseInterface2.glade:844
msgid "%"
msgstr ""
-#: DOFuseInterface.glade:715
+#: ui/DOFuseInterface2.glade:902
msgid "EdgeScale:"
msgstr ""
-#: DOFuseInterface.glade:749
+#: ui/DOFuseInterface2.glade:960
msgid "EdgeScale"
msgstr ""
-#: DOFuseInterface.glade:783
+#: ui/DOFuseInterface2.glade:1035
msgid "LceScale"
msgstr ""
-#: DOFuseInterface.glade:817
+#: ui/DOFuseInterface2.glade:1106
msgid "LceFactor"
msgstr ""
-#: DOFuseInterface.glade:848
+#: ui/DOFuseInterface2.glade:1142
msgid "Use CIECAM02 color profile"
msgstr ""
-#: DOFuseInterface.glade:884
-msgid "Gray projector:"
-msgstr ""
-
-#: DOFuseInterface.glade:897
+#: ui/DOFuseInterface2.glade:1191
msgid ""
"Mean\n"
"L-star\n"
@@ -216,71 +272,75 @@ msgid ""
"Luminance"
msgstr ""
-#: DOFuseInterface.glade:925
+#: ui/DOFuseInterface2.glade:1207
+msgid "Gray projector:"
+msgstr ""
+
+#: ui/DOFuseInterface2.glade:1244
msgid "<b>Expert Options</b>"
msgstr ""
-#: DOFuseInterface.glade:940
+#: ui/DOFuseInterface2.glade:1260
msgid "Expert"
msgstr ""
-#: DOFuseInterface.glade:964
-msgid "Preview Size:"
+#: ui/DOFuseInterface2.glade:1294
+msgid "Preview size:"
msgstr ""
-#: DOFuseInterface.glade:995 DOFuseInterface.glade:1240
-msgid "Width"
+#: ui/DOFuseInterface2.glade:1316 ui/DOFuseInterface2.glade:1359
+msgid "The larger resolution - the longer it takes to generate preview."
msgstr ""
-#: DOFuseInterface.glade:1055 DOFuseInterface.glade:1090
-msgid "The larger resolution - the longer it takes to generate preview."
+#: ui/DOFuseInterface2.glade:1335 ui/DOFuseInterface2.glade:1632
+msgid "Width"
msgstr ""
-#: DOFuseInterface.glade:1029 DOFuseInterface.glade:1275
+#: ui/DOFuseInterface2.glade:1378 ui/DOFuseInterface2.glade:1673
msgid "Height"
msgstr ""
-#: DOFuseInterface.glade:1063
+#: ui/DOFuseInterface2.glade:1425
msgid "Cache Size:"
msgstr ""
-#: DOFuseInterface.glade:1076
+#: ui/DOFuseInterface2.glade:1439
msgid "1024 Mb (default)"
msgstr ""
-#: DOFuseInterface.glade:1122
+#: ui/DOFuseInterface2.glade:1495
msgid "Bloc Size: "
msgstr ""
-#: DOFuseInterface.glade:1135
+#: ui/DOFuseInterface2.glade:1509
msgid "2048 kb (default)"
msgstr ""
-#: DOFuseInterface.glade:1184
+#: ui/DOFuseInterface2.glade:1569
msgid "Final image size:"
msgstr ""
-#: DOFuseInterface.glade:1194 DOFuseInterface.glade:1392
+#: ui/DOFuseInterface2.glade:1579 ui/DOFuseInterface2.glade:1807
msgid "Default"
msgstr ""
-#: DOFuseInterface.glade:1310
+#: ui/DOFuseInterface2.glade:1714
msgid "X-offset"
msgstr ""
-#: DOFuseInterface.glade:1345
+#: ui/DOFuseInterface2.glade:1755
msgid "Y-offset"
msgstr ""
-#: DOFuseInterface.glade:1380
+#: ui/DOFuseInterface2.glade:1793
msgid "Jpeg compression:"
msgstr ""
-#: DOFuseInterface.glade:1437
-msgid "Tiff compression:"
+#: ui/DOFuseInterface2.glade:1861
+msgid "Tiff compression: "
msgstr ""
-#: DOFuseInterface.glade:1449
+#: ui/DOFuseInterface2.glade:1874
msgid ""
"None\n"
"Packbits\n"
@@ -288,46 +348,50 @@ msgid ""
"Deflate"
msgstr ""
-#: DOFuseInterface.glade:1472
+#: ui/DOFuseInterface2.glade:1912
+msgid "Edit with: "
+msgstr ""
+
+#: ui/DOFuseInterface2.glade:1973
msgid "<b>Software Options</b>"
msgstr ""
-#: DOFuseInterface.glade:1487
-msgid "Configuration"
+#: ui/DOFuseInterface2.glade:1999
+msgid "Copy exif info ?"
msgstr ""
-#: DOFuseInterface.glade:1508
-msgid "_Preview"
+#: ui/DOFuseInterface2.glade:2013
+msgid "<b>Exif</b>"
msgstr ""
-#: DOFuseInterface.glade:1555
-msgid "Fu_se"
+#: ui/DOFuseInterface2.glade:2036
+msgid "Configuration"
msgstr ""
-#: DOFuseInterface.glade:1574
-msgid "<b>Action</b>"
+#: ui/DOFuseInterface2.glade:2059
+msgid "_Before/After"
msgstr ""
-#: DOFuseInterface.glade:1621
-msgid "<b>Preview</b>"
+#: ui/DOFuseInterface2.glade:2077
+msgid "_Preview"
msgstr ""
-#: DOFuseInterface.glade:1581
+#: ui/DOFuseInterface2.glade:2151
msgid "<b>Photos</b>"
msgstr ""
-#: DOFuseInterface.glade:1595
-msgid "_Before/After"
+#: ui/DOFuseInterface2.glade:2234
+msgid "<b>Action</b>"
msgstr ""
-#: DOFuseInterface.glade:1686
-msgid "Edit"
+#: ui/DOFuseInterface2.glade:2292
+msgid "<b>Preview</b>"
msgstr ""
-#: Progress.glade:19
+#: ui/Progress.glade:20
msgid "label"
msgstr ""
-#: Progress.glade:49
+#: ui/Progress.glade:50
msgid "Close"
msgstr ""
diff --git a/macrofusion.py b/macrofusion.py
index c7828c4..2d6e264 100755
--- a/macrofusion.py
+++ b/macrofusion.py
@@ -21,7 +21,8 @@ except:
sys.exit(1)
try:
- import Image
+ import Image
+ from PIL.ExifTags import TAGS
except:
print('Python Imaging Library is missing.')
@@ -42,7 +43,7 @@ session_options_bak=[]
APP = 'MacroFusion'
-if os.path.exists('/usr/share/mfusion/ui/DOFuseInterface.glade') \
+if os.path.exists('/usr/share/mfusion/ui/DOFuseInterface2.glade') \
and os.path.exists('/usr/share/mfusion/ui/Progress.glade') \
and os.path.exists('/usr/share/pixmaps/macrofusion/logoMF.png') \
and os.path.exists('/usr/share/pixmaps/macrofusion/logoSplash.png'):
@@ -50,7 +51,7 @@ if os.path.exists('/usr/share/mfusion/ui/DOFuseInterface.glade') \
DIR = '/usr/share/locale/'
IMG = '/usr/share/pixmaps/macrofusion/'
UI = '/usr/share/mfusion/ui/'
-elif os.path.exists(sys.path[0] + "/ui/DOFuseInterface.glade"):
+elif os.path.exists(sys.path[0] + "/ui/DOFuseInterface2.glade"):
# print ("Local run!")
DIR = sys.path[0] + '/locale/'
IMG = sys.path[0] + '/images/'
@@ -146,7 +147,7 @@ class Interface:
#Set the Glade file
- self.gui=gtk.glade.XML(fname=UI + "DOFuseInterface.glade", domain=APP)
+ self.gui=gtk.glade.XML(fname=UI + "DOFuseInterface2.glade", domain=APP)
#Dans la foulee on chope la fenetre principale, ca sert a rien c'est pour
@@ -160,7 +161,7 @@ class Interface:
self.buttonenleverfichier = self.gui.get_widget("buttonenleverfichier")
self.statusbar = self.gui.get_widget("status1")
self.statusbar.push(1, _("CPU Cores: %s") % self.cpus)
-
+
self.hscaleexp = self.gui.get_widget("hscaleexp")
self.ajus_exp = gtk.Adjustment(value=1, lower=0, upper=1, step_incr=0.1, page_incr=0.1, page_size=0)
self.hscaleexp.set_adjustment(self.ajus_exp)
@@ -257,6 +258,8 @@ class Interface:
self.checkbutton_a5_shift = self.gui.get_widget("checkbutton_a5_shift")
self.checkbutton_a5_field = self.gui.get_widget("checkbutton_a5_field")
+ self.entryedit_field = self.gui.get_widget("entry_editor")
+
self.combobox_desatmet.set_active(0)
self.combtiff.set_active(0)
@@ -306,7 +309,11 @@ class Interface:
self.combtiff.set_active(self.conf.getint('prefs', 'tiffcomp'))
if self.conf.has_option('prefs', 'exif'):
self.checkbuttonexif.set_active(self.conf.getboolean('prefs', 'exif'))
-
+ if self.conf.has_option('prefs', 'editor'):
+ self.entryedit_field.set_text(self.conf.get('prefs', 'editor'))
+ else:
+ self.entryedit_field.set_text("gimp")
+
#On relie les signaux (cliques sur boutons, cochage des cases, ...) aux fonctions appropriées
dic = { "on_mainwindow_destroy" : self.exit_app,
"on_buttonannuler_clicked" : self.exit_app,
@@ -323,11 +330,15 @@ class Interface:
"on_buttoneditw_clicked" : self.sendto,
"on_buttonbeforeafter_pressed" : self.baswitch,
"on_buttonbeforeafter_released" : self.baswitch,
+ "on_entry_editor_activate" : self.check_editor,
+ # "on_entry_editor_focus_out_event" : self.check_editor,
"on_imagemenuitem10_activate" : self.apropos
}
#Auto-connection des signaux
+ # self.entryedit_field.connect("activate", self.apropos)
+ #self.entryedit_field.connect("focus_out_event", self.apropos)
self.gui.signal_autoconnect(dic)
-
+
#initialisation de la liste d'images a fusionner
self.inittreeview()
@@ -341,6 +352,13 @@ class Interface:
self.cleanup()
sys.exit(0)
+ def check_editor(self, action):
+ if not donnees.check_install(self.entryedit_field.get_text()):
+ Gui.messageinthebottle(_("No such application!\n\n Cannot find " + self.entryedit_field.get_text() + _(".\n\n Revert to default value.")))
+ self.entryedit_field.set_text("gimp")
+ return False
+ return True
+
def cleanup(self):
# os.remove(donnees.enfuse_dossier + "/session.sav")
for self.files in os.walk(donnees.previs_dossier):
@@ -349,8 +367,9 @@ class Interface:
def inittreeview(self):
"""initialisation de la liste d'images a importer"""
- self.liststoreimport = gtk.ListStore(bool, str, str) #création de la listestore qui contiendra les noms d'images
+ self.liststoreimport = gtk.ListStore(bool, str, str, gtk.gdk.Pixbuf, str) #création de la listestore qui contiendra les noms d'images
self.listeimages.set_model(self.liststoreimport) #on donne la liststore au l'afficheur treeview
+ self.listeimages.set_property('tooltip-column', 4)
self.colonneselect = gtk.TreeViewColumn('') #Premiere colonne :
self.listeimages.append_column(self.colonneselect) #on l'ajoute au TreeView
@@ -363,7 +382,17 @@ class Interface:
self.cell = gtk.CellRendererText() #Ce sera des cellules de texte
self.colonneimages.pack_start(self.cell, True) #que l'on met dans la colonne
self.colonneimages.add_attribute(self.cell, 'text', 1) #et on specifie que c'est du texte simple
+
+ self.colonneimages2 = gtk.TreeViewColumn(_("Thumbnail")) #deuxieme colonne, titre 'Image'
+ self.listeimages.append_column(self.colonneimages2) #on rajoute la colonne dans le treeview
+ self.cell2 = gtk.CellRendererPixbuf() #Ce sera des cellules de texte
+ self.colonneimages2.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+ self.colonneimages2.pack_start(self.cell2, True) #que l'on met dans la colonne
+ self.colonneimages2.add_attribute(self.cell2, 'pixbuf', 3)
+ self.cell2.set_property('visible', 1)
+
+ self.listeimages.set_rules_hint(True)
self.select.connect("toggled", toggled_cb, (self.liststoreimport, 0)) #Pour que les boutons de selection marchent
@@ -498,6 +527,8 @@ class Interface:
def sendto(self, widget):
self.name=(donnees.previs_dossier + "/sendto.tif")
+ if not self.check_editor(0):
+ return
if self.enroute(self.name) == -1:
self.messageinthebottle(_("No preview, no output, no edit.\n\n Game Over."))
return
@@ -552,7 +583,8 @@ class Interface:
conf.set('prefs', 'jpegcompr', int(self.hscalecomprjpeg.get_value()))
conf.set('prefs', 'tiffcomp', str(self.combtiff.get_active()))
conf.set('prefs', 'exif', str(self.checkbuttonexif.get_active()))
-
+ conf.set('prefs', 'editor', self.entryedit_field.get_text())
+
if not os.path.exists(donnees.enfuse_dossier):
os.makedirs(donnees.enfuse_dossier)
conf.write(file(donnees.enfuse_dossier + '/mfusion.cfg', 'w'))
@@ -561,7 +593,9 @@ class Interface:
# gtk.accel_map_save(self.config_dir + '/accel_map')
return
+
+
####################################################################
###########Classe pour choisir les images a fusionner###############
####################################################################
@@ -594,9 +628,30 @@ class Fenetre_Ouvrir:
if(self.fenetre_ouvrir.run() == gtk.RESPONSE_OK):
self.fichiers = self.fenetre_ouvrir.get_filenames()
+ self.tags2=''
donnees.default_file=self.fichiers[0]
for fichier in self.fichiers:
- self.liststoreimport.append([1,os.path.basename(fichier),fichier])
+ try:
+ im = Image.open(fichier)
+ self.tags={}
+ self.size=im.size
+ if hasattr( im, '_getexif' ):
+ exifinfo = im._getexif()
+ if exifinfo != None:
+ for tag, value in exifinfo.items():
+ decoded = TAGS.get(tag, tag)
+ self.tags[decoded] = value
+ self.tags2=(_("<b>Model:</b> ") + str(self.tags['Model']) + "\n")
+ self.tags2+=(_("<b>Date:</b> ") + str(self.tags['DateTimeOriginal']) + "\n")
+ self.tags2+=(_("<b>Focal length:</b> ") + str(int(int(self.tags['FocalLength'][0])/int(self.tags['FocalLength'][1]))) + "mm \n")
+ self.tags2+=(_("<b>Aperture:</b> F/") + str(float(float(self.tags['FNumber'][0])/float(self.tags['FNumber'][1]))) + "\n")
+ self.tags2+=(_("<b>Exposure Time:</b> ") + str(str(self.tags['ExposureTime'][0]/10) + "/" + str(self.tags['ExposureTime'][1]/10) + " s. \n"))
+ except IOError:
+ print "failed to identify", file
+
+ self.tooltip=("\n" + _("<b>Filename:</b> ") + os.path.basename(fichier) + "\n"+_("<b>Resolution:</b> ") + str(str(self.size[0]) + "x" + str(self.size[1])) + "\n" + self.tags2)
+ self.liststoreimport.append([1,os.path.basename(fichier), fichier, gtk.gdk.pixbuf_new_from_file_at_size(fichier, 128, 128), self.tooltip])
+
donnees.default_folder=self.fenetre_ouvrir.get_current_folder()
self.fenetre_ouvrir.destroy()
@@ -606,7 +661,21 @@ class Fenetre_Ouvrir:
return self.liststoreimport
else:
return None
-
+
+ def get_exif_data(fname):
+ """Get embedded EXIF data from image file."""
+ ret = {}
+ try:
+ img = Image.open(fname)
+ if hasattr( img, '_getexif' ):
+ exifinfo = img._getexif()
+ if exifinfo != None:
+ for tag, value in exifinfo.items():
+ decoded = TAGS.get(tag, tag)
+ ret[decoded] = value
+ except IOError:
+ print 'IOERROR ' + fname
+ return ret
#####################################################################
#########Classe pour la fenetre pour choisir le fichier final########
@@ -677,11 +746,12 @@ class Thread_Preview(threading.Thread):
preview_process.wait()
session_options_bak=self.options_align
session_images_bak=images_a_align
+ Gui.statusbar.pop(15)
Gui.statusbar.push(15, _(":: Fusion photos..."))
command=[Gui.enfuser, "-o", donnees.previs_dossier + "/" + "preview.jpg"] + self.options + images_a_fusionner
preview_process=subprocess.Popen(command, stdout=subprocess.PIPE)
preview_process.wait()
-
+ Gui.statusbar.pop(15)
#######################################################################
@@ -745,7 +815,7 @@ class Thread_Fusion(threading.Thread):
exif_copy = subprocess.Popen(["exiftool", "-tagsFromFile", Gui.liste_images[0], "-overwrite_original", Gui.name])
exif_copy.wait()
if len(self.issend) > 0:
- subprocess.Popen(['gimp', self.issend], stdout=subprocess.PIPE)
+ subprocess.Popen([Gui.entryedit_field.get_text(), self.issend], stdout=subprocess.PIPE)
########################################
#### Classe de la fenêtre a propos ####
@@ -759,7 +829,7 @@ class AproposFen:
self.aboutdialog.set_name("MacroFusion")
self.aboutdialog.set_modal(True)
self.aboutdialog.set_position(gtk.WIN_POS_CENTER)
- self.aboutdialog.set_version('0.5')
+ self.aboutdialog.set_version('0.6')
self.aboutdialog.set_comments('A GTK Gui for the excellent Enfuse.\n Based on EnfuseGui by Chez Gholyo.\n\n(c) 2011 Dariusz Duma <dhor@toxic.net.pl>')
self.pixbuf=gtk.gdk.pixbuf_new_from_file(IMG + "logoMF.png")
self.aboutdialog.set_logo(self.pixbuf)
diff --git a/ui/DOFuseInterface2.glade b/ui/DOFuseInterface2.glade
new file mode 100644
index 0000000..921c6b9
--- /dev/null
+++ b/ui/DOFuseInterface2.glade
@@ -0,0 +1,2346 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+ <!-- interface-requires gtk+ 2.16 -->
+ <!-- interface-naming-policy project-wide -->
+ <widget class="GtkWindow" id="mainwindow">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <signal name="destroy" handler="on_mainwindow_destroy" />
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkMenuBar" id="menubar1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkMenuItem" id="menuitem1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">_File</property>
+ <property name="use_underline">True</property>
+ <child>
+ <widget class="GtkMenu" id="menu1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkImageMenuItem" id="menufileopen">
+ <property name="label">gtk-open</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="activate" handler="on_menufileopen_activate" />
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="menufileadd">
+ <property name="label">gtk-add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="activate" handler="on_menufileadd_activate" />
+ <accelerator key="a" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="menufileenlever">
+ <property name="label">gtk-remove</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="activate" handler="on_menufileenlever_activate" />
+ <accelerator key="d" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="menufilettenlever">
+ <property name="label" translatable="yes">Remove All</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menufilettenlever_activate" />
+ <accelerator key="w" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-remove</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="menufilesave">
+ <property name="label">gtk-save</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="activate" handler="on_menufilesave_activate" />
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="menufilequit">
+ <property name="label">gtk-quit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="activate" handler="on_menufilequit_activate" />
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="menuitem4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">H_elp</property>
+ <property name="use_underline">True</property>
+ <child>
+ <widget class="GtkMenu" id="menu3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkImageMenuItem" id="imagemenuitem10">
+ <property name="label">gtk-about</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="activate" handler="on_imagemenuitem10_activate" />
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkVBox" id="vbox12">
+ <property name="width_request">300</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="height_request">200</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="vadjustment">0 0 78 7.8000000000000007 70.200000000000003 78</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <child>
+ <widget class="GtkTreeView" id="listeimages">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">1</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkNotebook" id="notebook1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <widget class="GtkVBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">1</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <widget class="GtkVBox" id="vbox6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Exposure (default: 1)</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkHScale" id="hscaleexp">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">--exposure-weight=WEIGHT
+ weight given to well-exposed pixels</property>
+ <property name="adjustment">1 0 1 0.10000000000000001 0.10000000000000001 0</property>
+ <property name="draw_value">False</property>
+ <signal name="format_value" handler="on_hscaleexp_format_value" />
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonexp">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">--exposure-weight=WEIGHT
+ weight given to well-exposed pixels</property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">1 0 1 0.10000000000000001 0 0</property>
+ <property name="digits">1</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Contrast (default: 0)</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkHScale" id="hscalecont">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">--contrast-weight=WEIGHT
+ weight given to pixels in high-contrast neighborhoods</property>
+ <property name="adjustment">0 0 1 0.10000000000000001 0.10000000000000001 0</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttoncont">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">--contrast-weight=WEIGHT
+ weight given to pixels in high-contrast neighborhoods</property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0 0 1 0.10000000000000001 0 0</property>
+ <property name="digits">1</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Saturation (default: 0.2)</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkHScale" id="hscalesat">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">--saturation-weight=WEIGHT
+ weight given to highly-saturated pixels</property>
+ <property name="adjustment">0.20000000000000001 0 1 0.10000000000000001 10 0</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonsat">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">--saturation-weight=WEIGHT
+ weight given to highly-saturated pixels</property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0.20000000000000001 0 1 0.10000000000000001 0 0</property>
+ <property name="digits">1</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Mean exposure (default: 0.5)</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkHScale" id="hscalemu">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">--exposure-mu=MEAN
+ center also known as MEAN of Gaussian weighting</property>
+ <property name="adjustment">0.5 0 1 0.01 0.10000000000000001 0</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonmu">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">--exposure-mu=MEAN
+ center also known as MEAN of Gaussian weighting</property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0.5 0 1 0.01 0.10000000000000001 0</property>
+ <property name="digits">1</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Deviation (default: 0.2)</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">8</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkHScale" id="hscalesigma">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">--exposure-sigma=SIGMA
+ standard deviation of Gaussian weighting</property>
+ <property name="adjustment">0 0 1 0.01 0.10000000000000001 0</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonsigma">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">--exposure-sigma=SIGMA
+ standard deviation of Gaussian weighting</property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0.20000000000000001 0 1 0.01 0.10000000000000001 0</property>
+ <property name="digits">1</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">9</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Fusion parameters&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame_a5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">1</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment_a5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <widget class="GtkVBox" id="vboxa_a5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_a5_align">
+ <property name="label" translatable="yes">Align</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip">
+Auto align images.
+</property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_a5_crop">
+ <property name="label" translatable="yes">Autocrop</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip">
+Auto crop the image to the area covered by all images.
+</property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_a5_shift">
+ <property name="label" translatable="yes">Optimize image center shift</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip">
+Optimize image center shift for all images, except for first.
+Useful for aligning more distorted images.
+</property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_a5_field">
+ <property name="label" translatable="yes">Optimize field of view</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip">
+Optimize field of view for all images, except for first.
+Useful for aligning focus stacks with slightly different magnification.
+</property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_a5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Align images&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Fusion</property>
+ </widget>
+ <packing>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">1</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <widget class="GtkVBox" id="vbox8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkHBox" id="hbox8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkCheckButton" id="check_pyramidelevel">
+ <property name="label" translatable="yes">Pyramid levels: </property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip">--levels=LEVELS
+ number of blending LEVELS to use</property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonlevel">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">--levels=LEVELS
+ number of blending LEVELS to use</property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">9 0 29 1 29 0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="check_hardmask">
+ <property name="label" translatable="yes">Force HardMask </property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip">
+--hard-mask
+
+force hard blend masks and no averaging on finest
+scale; this is especially useful for focus
+stacks with thin and high contrast features,
+but leads to increased noise.
+ </property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkCheckButton" id="check_contwin">
+ <property name="label" translatable="yes">Contrast window:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip">--entropy-window-size=SIZE
+ set window SIZE for local entropy analysis</property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttoncontwin">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">
+--entropy-window-size=SIZE
+
+set window SIZE for local entropy analysis.
+ </property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">3 3 7 1 1 0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkCheckButton" id="check_courb">
+ <property name="label" translatable="yes">Min Curvature:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip">--contrast-min-curvature=CURVATURE
+ minimum CURVATURE for an edge to qualify</property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="check_prctcourb">
+ <property name="label" translatable="yes">%</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttoncourb">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">
+--contrast-min-curvature=CURVATURE
+
+minimum CURVATURE for an edge to qualify.
+ </property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0 -10 10 1 10 0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="pack_type">end</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">8</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="check_detecbord">
+ <property name="label" translatable="yes">EdgeScale:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip">
+--contrast-edge-scale=EDGESCALE[:LCESCALE[:LCEFACTOR]]
+
+set scale on which to look for edges; positive
+LCESCALE switches on local contrast enhancement
+by LCEFACTOR (EDGESCALE, LCESCALE, LCEFACTOR &gt;= 0);
+append "%" to LCESCALE for values relative to
+EDGESCALE; append "%" to LCEFACTOR for relative
+value.
+ </property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">9</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkVBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonEdge">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">
+A non-zero value for EDGE-SCALE switches on the Laplacian-of-
+Gaussian (LoG) edge detection algorithm. EDGE-SCALE is the
+radius of the Gaussian used in the search for edges.
+ </property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0 0 100 0.10000000000000001 1 0</property>
+ <property name="digits">1</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label24">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">EdgeScale</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkHBox" id="vbox5_">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonLceS">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">
+A positive LCE-SCALE turns on local contrast
+enhancement (LCE) before the LoG edge detection.
+LCE-SCALE is the radius of the Gaussian used in
+the enhancement step, LCE-FACTOR is the weight
+factor (“strength”).
+ </property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0 0 100 0.10000000000000001 1 0</property>
+ <property name="digits">1</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="check_lces">
+ <property name="label">%</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip">value as %</property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label25">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">LceScale</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkHBox" id="vbox14_">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonLceF">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip">
+LCE-FACTOR is the weight factor (“strength”)
+ </property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0 0 100 0.10000000000000001 1 0</property>
+ <property name="digits">1</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="check_lcef">
+ <property name="label">%</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip">value as %</property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label26">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">LceFactor</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">10</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">11</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="check_ciecam">
+ <property name="label" translatable="yes">Use CIECAM02 color profile</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip">
+-c
+
+use CIECAM02 to blend colors.
+ </property>
+ <property name="use_action_appearance">False</property>
+ <property name="xalign">0.43000000715255737</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">12</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">13</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkComboBox" id="combobox_desatmet">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="items" translatable="yes">Mean
+L-star
+Lightness
+Value
+Luminance</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="check_desatmeth">
+ <property name="label" translatable="yes">Gray projector:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip">
+--gray-projector=OPERATOR
+
+apply gray-scale projection OPERATOR in exposure
+or contrast weighing, where OPERATOR is one of
+"average", "l-star", "lightness", "value",
+"luminance", or
+"channel-mixer:RED-WEIGHT:GREEN-WEIGHT:BLUE-WEIGHT".
+ </property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">14</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Expert Options&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Expert</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="label_c5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkFrame" id="frame5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">1</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <widget class="GtkVBox" id="vbox15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkHBox" id="hbox17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkLabel" id="label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Preview size:</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox20">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">24</property>
+ <child>
+ <widget class="GtkVBox" id="vbox16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonlargeurprev">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip" translatable="yes">The larger resolution - the longer it takes to generate preview.</property>
+ <property name="invisible_char">•</property>
+ <property name="invisible_char_set">True</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">640 0 1280 1 10 0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label30">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Width</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonhauteurprev">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip" translatable="yes">The larger resolution - the longer it takes to generate preview.</property>
+ <property name="invisible_char">•</property>
+ <property name="invisible_char_set">True</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">640 0 1280 1 10 0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label31">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Height</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label23">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Cache Size:</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkCheckButton" id="checkbuttoncache">
+ <property name="label" translatable="yes">1024 Mb (default)</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttoncache">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">1024 0 10000 1 10 0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Bloc Size: </property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkCheckButton" id="checkbuttonbloc">
+ <property name="label" translatable="yes">2048 kb (default)</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonbloc">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">2048 0 10000 1 10 0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkLabel" id="label18">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Final image size:</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbuttontaillefinale">
+ <property name="label" translatable="yes">Default</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">8</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkVBox" id="vbox9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonlargeurfinale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0 0 10000 1 10 0</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Width</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonhauteurfinale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0 0 10000 1 10 0</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label20">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Height</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonxoff">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0 0 10000 1 10 0</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label22">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">X-offset</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkSpinButton" id="spinbuttonyoff">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0 0 10000 1 10 0</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label21">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Y-offset</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">9</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">10</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Jpeg compression:</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">11</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox18">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkCheckButton" id="checkbuttonjpegorig">
+ <property name="label" translatable="yes">Default</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="hscalecomprjpeg">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">85 0 100 1 10 0</property>
+ <property name="digits">0</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">6</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">12</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">13</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Tiff compression: </property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkComboBox" id="combtiff">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="active">0</property>
+ <property name="items" translatable="yes">None
+Packbits
+LZW
+Deflate</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">6</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">14</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator_e_10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">15</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox_e_19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkLabel" id="label_e_9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Edit with: </property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="entry_editor">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip">
+Enter name of graphics editor to edit images
+(f.e. gimp (default), fotoxx, delaboratory)
+ </property>
+ <property name="width_chars">24</property>
+ <property name="text">gimp</property>
+ <property name="caps_lock_warning">False</property>
+ <property name="secondary_icon_stock">gtk-apply</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">True</property>
+ <property name="primary_icon_sensitive">False</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <signal name="activate" handler="on_entry_editor_activate" />
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">6</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">16</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator_e_1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">17</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label28">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Software Options&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">1</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <widget class="GtkCheckButton" id="checkbuttonexif">
+ <property name="label" translatable="yes">Copy exif info ?</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Exif&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">19</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Configuration</property>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">1</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <widget class="GtkButton" id="buttonbeforeafter">
+ <property name="label" translatable="yes">_Before/After</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <signal name="pressed" handler="on_buttonbeforeafter_pressed" />
+ <signal name="released" handler="on_buttonbeforeafter_released" />
+ <accelerator key="b" signal="clicked" modifiers="GDK_CONTROL_MASK"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="buttonpreview">
+ <property name="label" translatable="yes">_Preview</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_buttonpreview_clicked" />
+ <accelerator key="p" signal="clicked" modifiers="GDK_CONTROL_MASK"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">1</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">1</property>
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">spread</property>
+ <child>
+ <widget class="GtkButton" id="buttonajoutfichiers">
+ <property name="label">gtk-add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttonajoutfichiers_clicked" />
+ <accelerator key="a" signal="clicked" modifiers="GDK_CONTROL_MASK"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="buttonenleverfichier">
+ <property name="label">gtk-remove</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttonenleverfichier_clicked" />
+ <accelerator key="w" signal="clicked" modifiers="GDK_CONTROL_MASK"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="Action1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Photos&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">1</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">1</property>
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">spread</property>
+ <child>
+ <widget class="GtkButton" id="buttonannuler">
+ <property name="label">gtk-quit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttonannuler_clicked" />
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="buttoneditw">
+ <property name="label">gtk-edit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttoneditw_clicked" />
+ <accelerator key="e" signal="clicked" modifiers="GDK_CONTROL_MASK"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="buttonfusion">
+ <property name="label">gtk-save</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttonfusion_clicked" />
+ <accelerator key="s" signal="clicked" modifiers="GDK_CONTROL_MASK"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="Action">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Action&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">1</property>
+ <property name="pack_type">end</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">immediate</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">immediate</property>
+ <child>
+ <widget class="GtkImage" id="imagepreview">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Preview&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkProgressBar" id="progressbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkStatusbar" id="status1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>