diff -Nru gwyddion-2.28/app/authors.h gwyddion-2.29/app/authors.h --- gwyddion-2.28/app/authors.h 2012-05-17 08:52:41.000000000 +0100 +++ gwyddion-2.29/app/authors.h 2012-07-19 21:13:31.000000000 +0100 @@ -26,6 +26,7 @@ "Vojtěch Salajka\n" "Anna Campbellova\n" "Lennart Fricke\n" + "Jozef Veselý\n" ; static const gchar translators[] = "David Nečas (Yeti)\n" diff -Nru gwyddion-2.28/app/filelist.c gwyddion-2.29/app/filelist.c --- gwyddion-2.28/app/filelist.c 2011-07-11 15:52:02.000000000 +0100 +++ gwyddion-2.29/app/filelist.c 2012-07-19 21:11:23.000000000 +0100 @@ -1,5 +1,5 @@ /* - * @(#) $Id: filelist.c 12576 2011-07-11 14:51:57Z yeti-dn $ + * @(#) $Id: filelist.c 13562 2012-07-09 12:36:08Z yeti-dn $ * Copyright (C) 2004 David Necas (Yeti), Petr Klapetek. * E-mail: yeti@gwyddion.net, klapetek@gwyddion.net. * @@ -916,23 +916,26 @@ { GtkTreeIter iter; GwyRecentFile *rf; + gchar *filename_canon = gwy_canonicalize_path(filename_utf8); if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(gcontrols.store), &iter)) { do { gtk_tree_model_get(GTK_TREE_MODEL(gcontrols.store), &iter, FILELIST_RAW, &rf, -1); - if (gwy_strequal(filename_utf8, rf->file_utf8)) { + if (gwy_strequal(filename_canon, rf->file_utf8)) { if (piter) *piter = iter; if (prf) *prf = rf; + g_free(filename_canon); return TRUE; } } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(gcontrols.store), &iter)); } + g_free(filename_canon); return FALSE; } diff -Nru gwyddion-2.28/app/gwyddion.c gwyddion-2.29/app/gwyddion.c --- gwyddion-2.28/app/gwyddion.c 2011-12-21 09:36:14.000000000 +0000 +++ gwyddion-2.29/app/gwyddion.c 2012-07-19 21:11:23.000000000 +0100 @@ -1,5 +1,5 @@ /* - * @(#) $Id: gwyddion.c 13249 2011-12-19 13:24:24Z yeti-dn $ + * @(#) $Id: gwyddion.c 13581 2012-07-16 06:48:52Z yeti-dn $ * Copyright (C) 2003-2006 David Necas (Yeti), Petr Klapetek. * E-mail: yeti@gwyddion.net, klapetek@gwyddion.net. * @@ -42,6 +42,7 @@ #define LOG_TO_FILE_DEFAULT TRUE #include #include +#define gwyddion_key "Software\\Gwyddion\\2.0" #else #define LOG_TO_FILE_DEFAULT FALSE #endif @@ -466,22 +467,25 @@ setup_locale_from_win32_registry(void) { #ifdef G_OS_WIN32 - gchar locale[64]; - DWORD size = sizeof(locale); + gchar locale[65]; + DWORD size = sizeof(locale)-1; HKEY reg_key; - if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Gwyddion\\2.0"), + gwy_clear(locale, sizeof(locale)); + if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT(gwyddion_key), 0, KEY_READ, ®_key) == ERROR_SUCCESS) { - if (RegQueryValueEx(reg_key, TEXT("Locale"), NULL, NULL, locale, &size) == ERROR_SUCCESS){ + if (RegQueryValueEx(reg_key, TEXT("Locale"), NULL, NULL, + locale, &size) == ERROR_SUCCESS) { g_setenv("LANG", locale, TRUE); RegCloseKey(reg_key); return; } RegCloseKey(reg_key); } - if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("Software\\Gwyddion\\2.0"), + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT(gwyddion_key), 0, KEY_READ, ®_key) == ERROR_SUCCESS) { - if (RegQueryValueEx(reg_key, TEXT("Locale"), NULL, NULL, locale, &size) == ERROR_SUCCESS) + if (RegQueryValueEx(reg_key, TEXT("Locale"), NULL, NULL, + locale, &size) == ERROR_SUCCESS) g_setenv("LANG", locale, TRUE); RegCloseKey(reg_key); } diff -Nru gwyddion-2.28/app/Makefile.am gwyddion-2.29/app/Makefile.am --- gwyddion-2.28/app/Makefile.am 2011-12-17 00:22:32.000000000 +0000 +++ gwyddion-2.29/app/Makefile.am 2012-07-20 11:31:01.000000000 +0100 @@ -1,4 +1,4 @@ -# @(#) $Id: Makefile.am 13234 2011-12-17 00:20:27Z yeti-dn $ +# @(#) $Id: Makefile.am 13615 2012-07-20 10:31:00Z yeti-dn $ libgwyddion = $(top_builddir)/libgwyddion/libgwyddion2.la libgwymodule = $(top_builddir)/libgwymodule/libgwymodule2.la @@ -100,7 +100,7 @@ # Any iface change C++: 0: A # Adding ifaces C: R: A++ # Changing ifaces C: R: 0 -libversion = -version-info 7:3:7 +libversion = -version-info 7:4:7 #libversion = -release @LIBRARY_RELEASE@ libgwyapp2_la_LDFLAGS = @GTKGLEXT_LIBS@ @BASIC_LIBS@ -export-dynamic $(no_undefined) $(export_symbols) $(libversion) libgwyapp2_la_CPPFLAGS = -DG_LOG_DOMAIN=\"GwyApp\" $(AM_CPPFLAGS) diff -Nru gwyddion-2.28/app/Makefile.in gwyddion-2.29/app/Makefile.in --- gwyddion-2.28/app/Makefile.in 2012-05-18 11:02:05.000000000 +0100 +++ gwyddion-2.29/app/Makefile.in 2012-07-20 16:59:25.000000000 +0100 @@ -15,7 +15,7 @@ @SET_MAKE@ -# @(#) $Id: Makefile.am 13234 2011-12-17 00:20:27Z yeti-dn $ +# @(#) $Id: Makefile.am 13615 2012-07-20 10:31:00Z yeti-dn $ # Generic glib-mkenum rules. # @(#) $Id: mkenum.mk 11705 2011-01-03 08:32:55Z yeti-dn $ @@ -478,7 +478,7 @@ # Any iface change C++: 0: A # Adding ifaces C: R: A++ # Changing ifaces C: R: 0 -libversion = -version-info 7:3:7 +libversion = -version-info 7:4:7 #libversion = -release @LIBRARY_RELEASE@ libgwyapp2_la_LDFLAGS = @GTKGLEXT_LIBS@ @BASIC_LIBS@ -export-dynamic $(no_undefined) $(export_symbols) $(libversion) libgwyapp2_la_CPPFLAGS = -DG_LOG_DOMAIN=\"GwyApp\" $(AM_CPPFLAGS) diff -Nru gwyddion-2.28/AUTHORS gwyddion-2.29/AUTHORS --- gwyddion-2.28/AUTHORS 2012-05-17 08:31:31.000000000 +0100 +++ gwyddion-2.29/AUTHORS 2012-07-19 21:11:45.000000000 +0100 @@ -56,6 +56,8 @@ Uncertainties of quantities calculated from calibrated data. Lennart Fricke 3D view and pygwy improvements. +Jozef Veselý + Standalone python gwy module, old Nanoscope import improvements. === Translators === diff -Nru gwyddion-2.28/autogen.sh gwyddion-2.29/autogen.sh --- gwyddion-2.28/autogen.sh 2010-12-13 10:04:41.000000000 +0000 +++ gwyddion-2.29/autogen.sh 2012-07-19 21:11:45.000000000 +0100 @@ -21,7 +21,7 @@ get_version() { local v local v2 - v=`$1 --version &1 | sed -e '2,$ d' -e 's/ *([^()]*)$//' -e 's/.* \(.*\)/\1/' -e 's/-p[0-9]*//'` + v=`$1 --version . # @@ -570,8 +570,8 @@ # Identity of this package. PACKAGE_NAME='Gwyddion' PACKAGE_TARNAME='gwyddion' -PACKAGE_VERSION='2.28' -PACKAGE_STRING='Gwyddion 2.28' +PACKAGE_VERSION='2.29' +PACKAGE_STRING='Gwyddion 2.29' PACKAGE_BUGREPORT='klapetek@gwyddion.net' PACKAGE_URL='' @@ -915,7 +915,7 @@ with_gl with_zlib with_bzip2 -with_spml +with_libxml2 with_unique with_kde4_thumbnailer enable_nls @@ -1510,7 +1510,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Gwyddion 2.28 to adapt to many kinds of systems. +\`configure' configures Gwyddion 2.29 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1584,7 +1584,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Gwyddion 2.28:";; + short | recursive ) echo "Configuration of Gwyddion 2.29:";; esac cat <<\_ACEOF @@ -1649,7 +1649,7 @@ [default=][] --with-bzip2 build with bzip2 support [default=][] - --with-spml SPML importer (libxml2 required) + --with-libxml2 build with libxml2 support [default=][] --with-unique libunique remote control backend [default=][] @@ -1788,7 +1788,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Gwyddion configure 2.28 +Gwyddion configure 2.29 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2547,7 +2547,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Gwyddion $as_me 2.28, which was +It was created by Gwyddion $as_me 2.29, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -3458,7 +3458,7 @@ # Define the identity of the package. PACKAGE='gwyddion' - VERSION='2.28' + VERSION='2.29' cat >>confdefs.h <<_ACEOF @@ -3535,8 +3535,8 @@ GWY_VERSION_MAJOR=2 -GWY_VERSION_MINOR=28 -GWY_VERSION_STRING='"2.28"' +GWY_VERSION_MINOR=29 +GWY_VERSION_STRING='"2.29"' @@ -16847,6 +16847,12 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python build option BASECFLAGS" >&5 $as_echo_n "checking for python build option BASECFLAGS... " >&6; } +if test -n "PYTHON_SYSCFG_BASECFLAGS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SYSCFG_BASECFLAGS" >&5 +$as_echo "$PYTHON_SYSCFG_BASECFLAGS" >&6; } + export PYTHON_SYSCFG_BASECFLAGS + +else cat >conftest.py <<\_______EOF import sys, distutils.sysconfig x = sys.argv[1].strip() @@ -16873,11 +16879,18 @@ enable_pygwy=no fi rm -f conftest.py conftest.err conftest.file +fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python build option LDFLAGS" >&5 $as_echo_n "checking for python build option LDFLAGS... " >&6; } +if test -n "PYTHON_SYSCFG_LDFLAGS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SYSCFG_LDFLAGS" >&5 +$as_echo "$PYTHON_SYSCFG_LDFLAGS" >&6; } + export PYTHON_SYSCFG_LDFLAGS + +else cat >conftest.py <<\_______EOF import sys, distutils.sysconfig x = sys.argv[1].strip() @@ -16904,11 +16917,18 @@ enable_pygwy=no fi rm -f conftest.py conftest.err conftest.file +fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python build option CCSHARED" >&5 $as_echo_n "checking for python build option CCSHARED... " >&6; } +if test -n "PYTHON_SYSCFG_CCSHARED"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SYSCFG_CCSHARED" >&5 +$as_echo "$PYTHON_SYSCFG_CCSHARED" >&6; } + export PYTHON_SYSCFG_CCSHARED + +else cat >conftest.py <<\_______EOF import sys, distutils.sysconfig x = sys.argv[1].strip() @@ -16935,11 +16955,18 @@ enable_pygwy=no fi rm -f conftest.py conftest.err conftest.file +fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python build option LINKFORSHARED" >&5 $as_echo_n "checking for python build option LINKFORSHARED... " >&6; } +if test -n "PYTHON_SYSCFG_LINKFORSHARED"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SYSCFG_LINKFORSHARED" >&5 +$as_echo "$PYTHON_SYSCFG_LINKFORSHARED" >&6; } + export PYTHON_SYSCFG_LINKFORSHARED + +else cat >conftest.py <<\_______EOF import sys, distutils.sysconfig x = sys.argv[1].strip() @@ -16966,6 +16993,7 @@ enable_pygwy=no fi rm -f conftest.py conftest.err conftest.file +fi if test "x$enable_pygwy" = xno; then PYGWY_WARN=" (failed to obtain Python flags)" @@ -16973,14 +17001,18 @@ fi if test "x$enable_pygwy" != xno; then - as_ac_Lib=`$as_echo "ac_cv_lib_python$PYTHON_VERSION''_PyRun_String" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PyRun_String in -lpython$PYTHON_VERSION" >&5 -$as_echo_n "checking for PyRun_String in -lpython$PYTHON_VERSION... " >&6; } + libpython=python$PYTHON_VERSION + if test "x$os_win32" = xyes; then + libpython=`echo $libpython | sed 's%\\.%%'` + fi + as_ac_Lib=`$as_echo "ac_cv_lib_$libpython''_PyRun_String" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PyRun_String in -l$libpython" >&5 +$as_echo_n "checking for PyRun_String in -l$libpython... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lpython$PYTHON_VERSION $PYTHON_SYSCFG_LDFLAGS $PYTHON_SYSCFG_LINKFORSHARED $LIBS" +LIBS="-l$libpython $PYTHON_SYSCFG_LDFLAGS $PYTHON_SYSCFG_LINKFORSHARED $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17012,9 +17044,9 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : - PYTHON_LIBS=-lpython$PYTHON_VERSION + PYTHON_LIBS=-l$libpython else - enable_pygwy=no; PYGWY_WARN=" (needs libpython$PYTHON_VERSION)" + enable_pygwy=no; PYGWY_WARN=" (needs lib$libpython)" fi @@ -17124,7 +17156,9 @@ : fi - PYGTK_CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygtk-2.0` + if test "x$PYGTK_CODEGENDIR" = 'x'; then + PYGTK_CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygtk-2.0` + fi fi if test "x$enable_pygwy" != xno; then @@ -19580,10 +19614,6 @@ $as_echo "#define HAVE_ZLIB 1" >>confdefs.h -else - enable_spml=no - ZLIB_WARN=" (needs zlib)" - SPML_WARN=" (needs zlib)" fi if test x$enable_zlib != xno && test -n "$ZLIB"; then HAVE_ZLIB_TRUE= @@ -19938,22 +19968,22 @@ ############################################################################# -# SPML importer -# Only if you want to have support for spml importer compiled +# LibXML2. +# Optional, for SPML importer. -# Check whether --with-spml was given. -if test "${with_spml+set}" = set; then : - withval=$with_spml; case "${withval}" in - yes|no) enable_spml="$withval" ;; - *) as_fn_error $? "bad value ${withval} for --with-spml" "$LINENO" 5 ;; +# Check whether --with-libxml2 was given. +if test "${with_libxml2+set}" = set; then : + withval=$with_libxml2; case "${withval}" in + yes|no) enable_libxml2="$withval" ;; + *) as_fn_error $? "bad value ${withval} for --with-libxml2" "$LINENO" 5 ;; esac else - enable_spml=yes + enable_libxml2=yes fi -if test "x$enable_spml" != "xno"; then +if test "x$enable_libxml2" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML2" >&5 @@ -20015,9 +20045,9 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - enable_spml=no; SPML_WARN=" (needs libxml2)" + enable_libxml2=no elif test $pkg_failed = untried; then - enable_spml=no; SPML_WARN=" (needs libxml2)" + enable_libxml2=no else XML2_CFLAGS=$pkg_cv_XML2_CFLAGS XML2_LIBS=$pkg_cv_XML2_LIBS @@ -20028,7 +20058,7 @@ fi fi - if test x$enable_spml != xno; then + if test x$enable_libxml2 != xno; then HAVE_XML2_TRUE= HAVE_XML2_FALSE='#' else @@ -22488,6 +22518,8 @@ if test "$os_darwin" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: fixing msgmerge to work on Darwin" >&5 +$as_echo "$as_me: fixing msgmerge to work on Darwin" >&6;} # Make msgmerge work on Darwin. See # http://subcommanderblog.wordpress.com/2009/05/16/msgmerge-on-macosx-and-no-such-file-or-directory/ ac_config_commands="$ac_config_commands osx-chmod" @@ -23128,7 +23160,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Gwyddion $as_me 2.28, which was +This file was extended by Gwyddion $as_me 2.29, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -23194,7 +23226,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Gwyddion config.status 2.28 +Gwyddion config.status 2.29 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" @@ -25538,13 +25570,54 @@ fi +enabled_formats= +disabled_formats= + +if test "x$enable_minizip" != xno; then + enabled_formats="$enabled_formats, NanoObserver, NanoScanTech" +else + disabled_formats="$disabled_formats, NanoObserver, NanoScanTech" +fi + +if test "x$enable_exr" != xno; then + enabled_formats="$enabled_formats, OpenEXR" +else + disabled_formats="$disabled_formats, OpenEXR" +fi + +if test "x$enable_zlib" != xno; then + enabled_formats="$enabled_formats, Createc zlib compression, NRRD zlib compression" + if test "x$enable_libxml2" != xno; then + enabled_formats="$enabled_formats, SPML" + else + disabled_formats="$disabled_formats, SPML" + fi +else + disabled_formats="$disabled_formats, SPML, Createc zlib compression, NRRD zlib compression" +fi + +if test "x$enable_bzip2" != xno; then + enabled_formats="$enabled_formats, NRRD bzip2 compression" +else + disabled_formats="$disabled_formats, NRRD bzip2 compression" +fi + +if test "x$enable_png" != xno; then + enabled_formats="$enabled_formats, high-depth PNG" +else + disabled_formats="$disabled_formats, high-depth PNG" +fi + +enabled_formats=`echo "$enabled_formats" | sed 's/^, //'` +disabled_formats=`echo "$disabled_formats" | sed 's/^, //'` + echo "=================================================================" echo "Configuration:" -echo " SMPL: $enable_spml$SPML_WARN" -#echo " Matlab MAT5: $enable_zlib$ZLIB_WARN" echo " FFTW3: $enable_fftw3$FFTW3_WARN" echo " OpenGL 3D widgets: $enable_gl$GL_WARN" echo " Remote control: $remote_backend" +echo " Optional file formats included: $enabled_formats" +echo " Optional file formats excluded: $disabled_formats" echo " Thumbnailers to build: $THUMBNAILERS" echo " Python interface (pygwy): $enable_pygwy$PYGWY_WARN" if test x$enable_pygwy = xyes; then diff -Nru gwyddion-2.28/configure.ac gwyddion-2.29/configure.ac --- gwyddion-2.28/configure.ac 2012-05-18 11:01:08.000000000 +0100 +++ gwyddion-2.29/configure.ac 2012-07-20 16:42:52.000000000 +0100 @@ -1,7 +1,7 @@ -# @(#) $Id: configure.ac 13477 2012-05-18 10:01:03Z yeti-dn $ +# @(#) $Id: configure.ac 13617 2012-07-20 15:42:51Z yeti-dn $ dnl Process this file with autoconf to produce a configure script. m4_define([gwy_version_major],[2]) -m4_define([gwy_version_minor],[28]) +m4_define([gwy_version_minor],[29]) m4_define([gwy_version_string],[gwy_version_major.gwy_version_minor]) AC_INIT([Gwyddion], [gwy_version_string], [klapetek@gwyddion.net]) # Use -release for unstable version libs instead of -version-info, because @@ -234,9 +234,13 @@ fi if test "x$enable_pygwy" != xno; then - AC_CHECK_LIB(python$PYTHON_VERSION, PyRun_String, - [PYTHON_LIBS=-lpython$PYTHON_VERSION], - [enable_pygwy=no; PYGWY_WARN=" (needs libpython$PYTHON_VERSION)"], + libpython=python$PYTHON_VERSION + if test "x$os_win32" = xyes; then + libpython=`echo $libpython | sed 's%\\.%%'` + fi + AC_CHECK_LIB($libpython, PyRun_String, + [PYTHON_LIBS=-l$libpython], + [enable_pygwy=no; PYGWY_WARN=" (needs lib$libpython)"], [$PYTHON_SYSCFG_LDFLAGS $PYTHON_SYSCFG_LINKFORSHARED]) AC_SUBST(PYTHON_LIBS) fi @@ -250,7 +254,9 @@ PKG_CHECK_MODULES(PYGTK,[pygtk-2.0 >= 2.10.0],[], [enable_pygwy=no; PYGWY_WARN=" (needs pygtk2)"]) AC_SUBST(PYGTK_CFLAGS) - PYGTK_CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygtk-2.0` + if test "x$PYGTK_CODEGENDIR" = 'x'; then + PYGTK_CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygtk-2.0` + fi AC_SUBST(PYGTK_CODEGENDIR) fi AM_CONDITIONAL([ENABLE_PYGWY], [test "x$enable_pygwy" != xno]) @@ -494,10 +500,6 @@ fi if test x$enable_zlib != xno && test -n "$ZLIB"; then AC_DEFINE(HAVE_ZLIB,1,[Define if we have the ZLIB library.]) -else - enable_spml=no - ZLIB_WARN=" (needs zlib)" - SPML_WARN=" (needs zlib)" fi AM_CONDITIONAL([HAVE_ZLIB],[test x$enable_zlib != xno && test -n "$ZLIB"]) AC_SUBST(ZLIB) @@ -551,16 +553,16 @@ AM_CONDITIONAL([HAVE_EXR],[test x$enable_exr != xno]) ############################################################################# -# SPML importer -# Only if you want to have support for spml importer compiled -GWY_WITH([spml],,[SPML importer (libxml2 required)]) -if test "x$enable_spml" != "xno"; then +# LibXML2. +# Optional, for SPML importer. +GWY_WITH([libxml2],,[build with libxml2 support]) +if test "x$enable_libxml2" != "xno"; then PKG_CHECK_MODULES(XML2, [libxml-2.0 >= 2.6], [AC_DEFINE(HAVE_XML2,1, [Define if we have the libxml2 package.])], - enable_spml=no; SPML_WARN=" (needs libxml2)") + enable_libxml2=no) fi -AM_CONDITIONAL([HAVE_XML2],[test x$enable_spml != xno]) +AM_CONDITIONAL([HAVE_XML2],[test x$enable_libxml2 != xno]) ############################################################################# # libunique @@ -777,6 +779,7 @@ ]) if test "$os_darwin" = yes; then + AC_MSG_NOTICE([fixing msgmerge to work on Darwin]) # Make msgmerge work on Darwin. See # http://subcommanderblog.wordpress.com/2009/05/16/msgmerge-on-macosx-and-no-such-file-or-directory/ AC_CONFIG_COMMANDS([osx-chmod], @@ -788,13 +791,54 @@ AC_OUTPUT +enabled_formats= +disabled_formats= + +if test "x$enable_minizip" != xno; then + enabled_formats="$enabled_formats, NanoObserver, NanoScanTech" +else + disabled_formats="$disabled_formats, NanoObserver, NanoScanTech" +fi + +if test "x$enable_exr" != xno; then + enabled_formats="$enabled_formats, OpenEXR" +else + disabled_formats="$disabled_formats, OpenEXR" +fi + +if test "x$enable_zlib" != xno; then + enabled_formats="$enabled_formats, Createc zlib compression, NRRD zlib compression" + if test "x$enable_libxml2" != xno; then + enabled_formats="$enabled_formats, SPML" + else + disabled_formats="$disabled_formats, SPML" + fi +else + disabled_formats="$disabled_formats, SPML, Createc zlib compression, NRRD zlib compression" +fi + +if test "x$enable_bzip2" != xno; then + enabled_formats="$enabled_formats, NRRD bzip2 compression" +else + disabled_formats="$disabled_formats, NRRD bzip2 compression" +fi + +if test "x$enable_png" != xno; then + enabled_formats="$enabled_formats, high-depth PNG" +else + disabled_formats="$disabled_formats, high-depth PNG" +fi + +enabled_formats=`echo "$enabled_formats" | sed 's/^, //'` +disabled_formats=`echo "$disabled_formats" | sed 's/^, //'` + echo "=================================================================" echo "Configuration:" -echo " SMPL: $enable_spml$SPML_WARN" -#echo " Matlab MAT5: $enable_zlib$ZLIB_WARN" echo " FFTW3: $enable_fftw3$FFTW3_WARN" echo " OpenGL 3D widgets: $enable_gl$GL_WARN" echo " Remote control: $remote_backend" +echo " Optional file formats included: $enabled_formats" +echo " Optional file formats excluded: $disabled_formats" echo " Thumbnailers to build: $THUMBNAILERS" echo " Python interface (pygwy): $enable_pygwy$PYGWY_WARN" if test x$enable_pygwy = xyes; then diff -Nru gwyddion-2.28/data/gwyddion.nsit.in gwyddion-2.29/data/gwyddion.nsit.in --- gwyddion-2.28/data/gwyddion.nsit.in 2012-04-11 09:34:37.000000000 +0100 +++ gwyddion-2.29/data/gwyddion.nsit.in 2012-07-19 21:11:38.000000000 +0100 @@ -203,6 +203,7 @@ GwyExpandFiles "bin\libgthread-2.0-0.dll" GwyExpandFiles "bin\libgtkglext-win32-1.0-0.dll" GwyExpandFiles "bin\libgtk-win32-2.0-0.dll" + GwyExpandFiles "bin\libgtksourceview-2.0-0.dll" GwyExpandFiles "bin\libgwy*2-0.dll" GwyExpandFiles "bin\libiconv-*.dll" GwyExpandFiles "bin\libintl-*.dll" @@ -235,6 +236,8 @@ GwyExpandFiles "share\gwyddion\pixmaps\*" GwyExpandFiles "share\gwyddion\ui\toolbox.xml" GwyExpandFiles "share\themes\*\*\gtkrc" + GwyExpandFiles "share\gtksourceview-2.0\language-specs\python.lang" + GwyExpandFiles "share\gtksourceview-2.0\styles\*.xml" # The following generated part is updated by running utils/update-langs.py # @@@ GENERATED LANG NSIS-MO BEGIN @@@ GwyExpandFiles "share\locale\en\LC_MESSAGES\*.mo" diff -Nru gwyddion-2.28/data/gwyddion.spec.in gwyddion-2.29/data/gwyddion.spec.in --- gwyddion-2.28/data/gwyddion.spec.in 2012-05-17 08:24:09.000000000 +0100 +++ gwyddion-2.29/data/gwyddion.spec.in 2012-07-19 21:11:38.000000000 +0100 @@ -1,4 +1,4 @@ -# @(#) $Id: gwyddion.spec.in 13463 2012-05-16 11:47:35Z yeti-dn $ +# @(#) $Id: gwyddion.spec.in 13527 2012-06-07 12:16:33Z yeti-dn $ # Optional features: # --with-kde4-thumbnailer Enables the kde4-thumbnailer subpackage (and # introduces lots of new dependencies). @@ -26,7 +26,6 @@ BuildRequires: gtkglext-devel BuildRequires: libxml2-devel BuildRequires: zlib-devel -BuildRequires: python-devel >= 2.2 BuildRequires: ruby >= 1.8 BuildRequires: gettext BuildRequires: desktop-file-utils >= 0.9 @@ -41,6 +40,7 @@ BuildRequires: minizip-devel %define fftw3 fftw %define fftw3devel fftw-devel +%define python2devel python2-devel %define kde4libs kdelibs %define configureopts %{nil} %endif @@ -77,6 +77,12 @@ %define fftw3devel fftw-devel %endif +# Ditto for the python development package. +%define python2undefined %{?python2devel:0}%{!?python2devel:1} +%if %{python2undefined} +%define python2devel python-devel +%endif + %if %{enable_kde4_thumbnailer} BuildRequires: %{kde4libs}-devel >= 4.0 %endif @@ -86,6 +92,7 @@ %else BuildRequires: %{fftw3devel} >= 3.1 %endif +BuildRequires: %{python2devel} >= 2.2 # Fedora guarantees these two, other may not BuildRequires: perl >= 5.005 BuildRequires: sed @@ -273,11 +280,11 @@ %dir %{pkglibdir}/modules %dir %{pkglibdir} %{_libdir}/*.so.* +%{python_sitearch}/gwy.so %{_datadir}/applications/%{name}.desktop %{_datadir}/mime/packages/%{name}.xml %{_datadir}/thumbnailers/%{name}.thumbnailer - %files devel %defattr(-,root,root) %doc devel-docs/CODING-STANDARDS diff -Nru gwyddion-2.28/data/gwyddion.vim gwyddion-2.29/data/gwyddion.vim --- gwyddion-2.28/data/gwyddion.vim 2012-05-18 10:44:04.000000000 +0100 +++ gwyddion-2.29/data/gwyddion.vim 2012-07-20 16:18:25.000000000 +0100 @@ -1,7 +1,7 @@ " Vim syntax file " Language: C gwyddion extension " Maintainer: David Nečas (Yeti) -" Last Change: 2012-05-18 +" Last Change: 2012-07-20 " URL: http://gwyddion.net/download/test/gwyddion.vim " Generated By: vim-syn-gen.py " Options: @@ -11,7 +11,7 @@ " let gwyddion_deprecated_errors = 1 " highlights deprecated declarations as Errors -syn keyword gwyddionFunction gwy_2d_cwt_wavelet_type_get_enum gwy_2d_cwt_wavelet_type_get_type gwy_3d_label_expand_text gwy_3d_label_get_text gwy_3d_label_get_type gwy_3d_label_new gwy_3d_label_reset gwy_3d_label_reset_text gwy_3d_label_set_text gwy_3d_label_user_size gwy_3d_movement_get_type gwy_3d_projection_get_type gwy_3d_setup_get_type gwy_3d_setup_new gwy_3d_view_class_disable_axis_drawing gwy_3d_view_get_data gwy_3d_view_get_data_key gwy_3d_view_get_gradient_key gwy_3d_view_get_label gwy_3d_view_get_material_key gwy_3d_view_get_movement_type gwy_3d_view_get_pixbuf gwy_3d_view_get_reduced_size gwy_3d_view_get_scale_range gwy_3d_view_get_setup gwy_3d_view_get_setup_prefix gwy_3d_view_get_type gwy_3d_view_label_get_type gwy_3d_view_new gwy_3d_view_set_data_key gwy_3d_view_set_gradient_key gwy_3d_view_set_material_key gwy_3d_view_set_movement_type gwy_3d_view_set_ovlay gwy_3d_view_set_reduced_size gwy_3d_view_set_scale_range gwy_3d_view_set_setup_prefix gwy_3d_visualization_get_type gwy_3d_window_add_action_widget gwy_3d_window_add_small_toolbar_button gwy_3d_window_class_get_tooltips gwy_3d_window_class_set_tooltips gwy_3d_window_get_3d_view gwy_3d_window_get_type gwy_3d_window_new gwy_3d_window_set_overlay_chooser gwy_app_add_main_accel_group gwy_app_build_graph_menu gwy_app_build_process_menu gwy_app_channel_check_nonsquare gwy_app_channel_remove_bad_data gwy_app_channel_title_fall_back gwy_app_data_browser_add gwy_app_data_browser_add_channel_watch gwy_app_data_browser_add_data_field gwy_app_data_browser_add_graph_model gwy_app_data_browser_add_spectra gwy_app_data_browser_copy_channel gwy_app_data_browser_find_data_by_title gwy_app_data_browser_find_graphs_by_title gwy_app_data_browser_find_spectra_by_title gwy_app_data_browser_foreach gwy_app_data_browser_get_current gwy_app_data_browser_get_data_ids gwy_app_data_browser_get_graph_ids gwy_app_data_browser_get_gui_enabled gwy_app_data_browser_get_keep_invisible gwy_app_data_browser_get_spectra_ids gwy_app_data_browser_merge gwy_app_data_browser_remove gwy_app_data_browser_remove_channel_watch gwy_app_data_browser_reset_visibility gwy_app_data_browser_restore gwy_app_data_browser_select_data_field gwy_app_data_browser_select_data_view gwy_app_data_browser_select_graph gwy_app_data_browser_select_graph_model gwy_app_data_browser_select_spectra gwy_app_data_browser_set_gui_enabled gwy_app_data_browser_set_keep_invisible gwy_app_data_browser_show gwy_app_data_browser_show_3d gwy_app_data_browser_shut_down gwy_app_data_clear_selections gwy_app_data_view_change_mask_color gwy_app_file_confirm_overwrite gwy_app_file_load gwy_app_file_merge gwy_app_file_open gwy_app_file_save gwy_app_file_save_as gwy_app_file_write gwy_app_find_window_for_channel gwy_app_get_channel_thumbnail gwy_app_get_current_directory gwy_app_get_data_field_title gwy_app_get_data_key_for_id gwy_app_get_graph_key_for_id gwy_app_get_mask_key_for_id gwy_app_get_show_key_for_id gwy_app_get_spectra_key_for_id gwy_app_get_tooltips gwy_app_gl_init gwy_app_gl_is_ok gwy_app_gl_material_editor gwy_app_gradient_editor gwy_app_init_common gwy_app_init_i18n gwy_app_init_widget_styles gwy_app_main_window_get gwy_app_menu_recent_files_get gwy_app_menu_recent_files_update gwy_app_process_func_get_use gwy_app_process_func_save_use gwy_app_process_menu_add_run_last gwy_app_quit gwy_app_recent_file_get_thumbnail gwy_app_recent_file_list_free gwy_app_recent_file_list_load gwy_app_recent_file_list_new gwy_app_recent_file_list_save gwy_app_recent_file_list_update gwy_app_restore_window_position gwy_app_run_graph_func gwy_app_run_process_func gwy_app_run_process_func_in_mode gwy_app_save_window_position gwy_app_sensitivity_add_widget gwy_app_sensitivity_get_group gwy_app_sensitivity_set_state gwy_app_set_current_directory gwy_app_set_data_field_title gwy_app_settings_create_config_dir gwy_app_settings_error_get_type gwy_app_settings_error_quark gwy_app_settings_free gwy_app_settings_get gwy_app_settings_get_log_filename gwy_app_settings_get_module_dirs gwy_app_settings_get_recent_file_list_filename gwy_app_settings_get_settings_filename gwy_app_settings_load gwy_app_settings_save gwy_app_switch_tool gwy_app_sync_data_items gwy_app_undo_checkpoint gwy_app_undo_checkpointv gwy_app_undo_container_remove gwy_app_undo_qcheckpoint gwy_app_undo_qcheckpointv gwy_app_undo_redo_container gwy_app_undo_undo_container gwy_app_wait_cursor_finish gwy_app_wait_cursor_start gwy_app_wait_finish gwy_app_wait_set_fraction gwy_app_wait_set_message gwy_app_wait_set_message_prefix gwy_app_wait_start gwy_app_what_get_type gwy_ascii_strcase_equal gwy_ascii_strcase_hash gwy_axis_draw_on_drawable gwy_axis_enable_label_edit gwy_axis_export_vector gwy_axis_get_label gwy_axis_get_magnification gwy_axis_get_magnification_string gwy_axis_get_major_ticks gwy_axis_get_orientation gwy_axis_get_range gwy_axis_get_requested_range gwy_axis_get_type gwy_axis_is_logarithmic gwy_axis_is_visible gwy_axis_new gwy_axis_request_range gwy_axis_scale_format_get_type gwy_axis_set_auto gwy_axis_set_label gwy_axis_set_logarithmic gwy_axis_set_si_unit gwy_axis_set_visible gwy_byte_order_get_type gwy_caldata_append gwy_caldata_get_ndata gwy_caldata_get_range gwy_caldata_get_si_unit_x gwy_caldata_get_si_unit_y gwy_caldata_get_si_unit_z gwy_caldata_get_type gwy_caldata_get_x gwy_caldata_get_xerr gwy_caldata_get_xunc gwy_caldata_get_y gwy_caldata_get_yerr gwy_caldata_get_yunc gwy_caldata_get_z gwy_caldata_get_zerr gwy_caldata_get_zunc gwy_caldata_inside gwy_caldata_interpolate gwy_caldata_new gwy_caldata_resize gwy_caldata_save_data gwy_caldata_set_range gwy_caldata_set_si_unit_x gwy_caldata_set_si_unit_y gwy_caldata_set_si_unit_z gwy_caldata_setup_interpolation gwy_calibration_get_data gwy_calibration_get_filename gwy_calibration_get_ndata gwy_calibration_get_type gwy_calibration_new gwy_calibrations gwy_calibrations_get_calibration gwy_canonicalize_path gwy_cdline_fit gwy_cdline_fit_with_caldata gwy_cdline_get_definition gwy_cdline_get_name gwy_cdline_get_nparams gwy_cdline_get_param_name gwy_cdline_get_param_units gwy_cdline_get_type gwy_cdline_get_value gwy_cdlines gwy_color_axis_get_gradient gwy_color_axis_get_labels_visible gwy_color_axis_get_range gwy_color_axis_get_si_unit gwy_color_axis_get_ticks_style gwy_color_axis_get_type gwy_color_axis_new gwy_color_axis_new_with_range gwy_color_axis_set_gradient gwy_color_axis_set_labels_visible gwy_color_axis_set_range gwy_color_axis_set_si_unit gwy_color_axis_set_ticks_style gwy_color_button_get_color gwy_color_button_get_type gwy_color_button_get_use_alpha gwy_color_button_new gwy_color_button_new_with_color gwy_color_button_set_color gwy_color_button_set_use_alpha gwy_color_selector_for_mask gwy_combo_box_metric_unit_new gwy_combo_box_metric_unit_set_unit gwy_computation_state_type_get_type gwy_container_contains gwy_container_deserialize_from_text gwy_container_duplicate_by_prefix gwy_container_foreach gwy_container_get_boolean gwy_container_get_double gwy_container_get_enum gwy_container_get_int32 gwy_container_get_int64 gwy_container_get_n_items gwy_container_get_object gwy_container_get_string gwy_container_get_type gwy_container_get_uchar gwy_container_get_value gwy_container_gis_boolean gwy_container_gis_double gwy_container_gis_enum gwy_container_gis_int32 gwy_container_gis_int64 gwy_container_gis_object gwy_container_gis_string gwy_container_gis_uchar gwy_container_gis_value gwy_container_keys gwy_container_keys_by_name gwy_container_new gwy_container_remove gwy_container_remove_by_prefix gwy_container_rename gwy_container_serialize_to_text gwy_container_set_boolean gwy_container_set_double gwy_container_set_enum gwy_container_set_int32 gwy_container_set_int64 gwy_container_set_object gwy_container_set_string gwy_container_set_uchar gwy_container_set_value gwy_container_set_value_by_name gwy_container_transfer gwy_container_value_type gwy_convert_raw_data gwy_correlation_type_get_enum gwy_correlation_type_get_type gwy_curve_channel_get_type gwy_curve_get_control_points gwy_curve_get_type gwy_curve_new gwy_curve_reset gwy_curve_set_channels gwy_curve_set_control_points gwy_curve_set_curve_type gwy_curve_set_range gwy_curve_type_get_type gwy_cwt_wfunc_2d gwy_data_chooser_get_active gwy_data_chooser_get_filter gwy_data_chooser_get_none gwy_data_chooser_get_type gwy_data_chooser_new_channels gwy_data_chooser_set_active gwy_data_chooser_set_filter gwy_data_chooser_set_none gwy_data_compatibility_flags_get_type gwy_data_error_desrcibe gwy_data_field_1dfft gwy_data_field_1dfft_raw gwy_data_field_2dacf gwy_data_field_2dfft gwy_data_field_2dfft_dehumanize gwy_data_field_2dfft_humanize gwy_data_field_2dfft_raw gwy_data_field_acf gwy_data_field_acf_uncertainty gwy_data_field_add gwy_data_field_area_1dfft gwy_data_field_area_2dacf gwy_data_field_area_2dfft gwy_data_field_area_acf gwy_data_field_area_acf_uncertainty gwy_data_field_area_add gwy_data_field_area_cda gwy_data_field_area_cdh gwy_data_field_area_cdh_uncertainty gwy_data_field_area_clamp gwy_data_field_area_clear gwy_data_field_area_convolve gwy_data_field_area_convolve_1d gwy_data_field_area_copy gwy_data_field_area_count_in_range gwy_data_field_area_da gwy_data_field_area_dh gwy_data_field_area_dh_uncertainty gwy_data_field_area_extract gwy_data_field_area_fill gwy_data_field_area_filter_conservative gwy_data_field_area_filter_dechecker gwy_data_field_area_filter_gaussian gwy_data_field_area_filter_kuwahara gwy_data_field_area_filter_laplacian gwy_data_field_area_filter_laplacian_of_gaussians gwy_data_field_area_filter_maximum gwy_data_field_area_filter_mean gwy_data_field_area_filter_median gwy_data_field_area_filter_minimum gwy_data_field_area_filter_prewitt gwy_data_field_area_filter_rms gwy_data_field_area_filter_sobel gwy_data_field_area_fit_legendre gwy_data_field_area_fit_local_planes gwy_data_field_area_fit_plane gwy_data_field_area_fit_poly gwy_data_field_area_fit_poly_max gwy_data_field_area_fit_polynom gwy_data_field_area_gather gwy_data_field_area_get_avg_mask gwy_data_field_area_get_avg_uncertainty gwy_data_field_area_get_avg_uncertainty_mask gwy_data_field_area_get_inclination gwy_data_field_area_get_inclination_uncertainty gwy_data_field_area_get_line_stats gwy_data_field_area_get_max gwy_data_field_area_get_max_uncertainty gwy_data_field_area_get_median_mask gwy_data_field_area_get_median_uncertainty gwy_data_field_area_get_median_uncertainty_mask gwy_data_field_area_get_min gwy_data_field_area_get_min_max_mask gwy_data_field_area_get_min_max_uncertainty gwy_data_field_area_get_min_max_uncertainty_mask gwy_data_field_area_get_min_uncertainty gwy_data_field_area_get_normal_coeffs gwy_data_field_area_get_normal_coeffs_uncertainty gwy_data_field_area_get_projected_area_uncertainty gwy_data_field_area_get_rms_mask gwy_data_field_area_get_rms_uncertainty gwy_data_field_area_get_rms_uncertainty_mask gwy_data_field_area_get_stats_mask gwy_data_field_area_get_stats_uncertainties gwy_data_field_area_get_stats_uncertainties_mask gwy_data_field_area_get_sum_mask gwy_data_field_area_get_surface_area_mask gwy_data_field_area_get_surface_area_mask_uncertainty gwy_data_field_area_get_surface_area_uncertainty gwy_data_field_area_get_volume gwy_data_field_area_grains_tgnd gwy_data_field_area_grains_tgnd_range gwy_data_field_area_hhcf gwy_data_field_area_hhcf_uncertainty gwy_data_field_area_local_plane_quantity gwy_data_field_area_minkowski_boundary gwy_data_field_area_minkowski_euler gwy_data_field_area_minkowski_volume gwy_data_field_area_multiply gwy_data_field_area_psdf gwy_data_field_area_racf gwy_data_field_area_rpsdf gwy_data_field_area_subtract_legendre gwy_data_field_area_subtract_poly gwy_data_field_area_subtract_poly_max gwy_data_field_area_subtract_polynom gwy_data_field_area_threshold gwy_data_field_cached_get_type gwy_data_field_cda gwy_data_field_cdh gwy_data_field_cdh_uncertainty gwy_data_field_check_compatibility gwy_data_field_circular_area_extract gwy_data_field_circular_area_extract_with_pos gwy_data_field_circular_area_fill gwy_data_field_circular_area_unextract gwy_data_field_clamp gwy_data_field_clear gwy_data_field_convolve gwy_data_field_convolve_1d gwy_data_field_copy gwy_data_field_copy_units_to_data_line gwy_data_field_correct_average gwy_data_field_correct_laplace_iteration gwy_data_field_correlate gwy_data_field_correlate_finalize gwy_data_field_correlate_init gwy_data_field_correlate_iteration gwy_data_field_crosscorrelate gwy_data_field_crosscorrelate_finalize gwy_data_field_crosscorrelate_init gwy_data_field_crosscorrelate_iteration gwy_data_field_cwt gwy_data_field_da gwy_data_field_data_changed gwy_data_field_dh gwy_data_field_dh_uncertainty gwy_data_field_distort gwy_data_field_divide_fields gwy_data_field_dwt gwy_data_field_dwt_mark_anisotropy gwy_data_field_elliptic_area_extract gwy_data_field_elliptic_area_fill gwy_data_field_elliptic_area_unextract gwy_data_field_fft_filter_1d gwy_data_field_fill gwy_data_field_filter_canny gwy_data_field_filter_conservative gwy_data_field_filter_dechecker gwy_data_field_filter_gaussian gwy_data_field_filter_harris gwy_data_field_filter_kuwahara gwy_data_field_filter_laplacian gwy_data_field_filter_laplacian_of_gaussians gwy_data_field_filter_maximum gwy_data_field_filter_mean gwy_data_field_filter_median gwy_data_field_filter_minimum gwy_data_field_filter_prewitt gwy_data_field_filter_rms gwy_data_field_filter_sobel gwy_data_field_fit_legendre gwy_data_field_fit_lines gwy_data_field_fit_local_planes gwy_data_field_fit_plane gwy_data_field_fit_poly gwy_data_field_fit_poly_max gwy_data_field_fit_polynom gwy_data_field_fractal_correction gwy_data_field_fractal_cubecounting gwy_data_field_fractal_cubecounting_dim gwy_data_field_fractal_partitioning gwy_data_field_fractal_partitioning_dim gwy_data_field_fractal_psdf gwy_data_field_fractal_psdf_dim gwy_data_field_fractal_triangulation gwy_data_field_fractal_triangulation_dim gwy_data_field_get_angder gwy_data_field_get_autorange gwy_data_field_get_avg gwy_data_field_get_avg_uncertainty gwy_data_field_get_circular_area_size gwy_data_field_get_column gwy_data_field_get_column_part gwy_data_field_get_correlation_score gwy_data_field_get_data gwy_data_field_get_data_const gwy_data_field_get_dval gwy_data_field_get_dval_real gwy_data_field_get_elliptic_area_size gwy_data_field_get_grain_bounding_boxes gwy_data_field_get_inclination gwy_data_field_get_inclination_uncertainty gwy_data_field_get_line_stats gwy_data_field_get_local_maxima_list gwy_data_field_get_max gwy_data_field_get_max_uncertainty gwy_data_field_get_median gwy_data_field_get_median_uncertainty gwy_data_field_get_min gwy_data_field_get_min_max gwy_data_field_get_min_max_uncertainty gwy_data_field_get_min_uncertainty gwy_data_field_get_normal_coeffs gwy_data_field_get_normal_coeffs_uncertainty gwy_data_field_get_profile gwy_data_field_get_rms gwy_data_field_get_rms_uncertainty gwy_data_field_get_row gwy_data_field_get_row_part gwy_data_field_get_si_unit_xy gwy_data_field_get_si_unit_z gwy_data_field_get_stats gwy_data_field_get_stats_uncertainties gwy_data_field_get_sum gwy_data_field_get_surface_area gwy_data_field_get_surface_area_uncertainty gwy_data_field_get_type gwy_data_field_get_val gwy_data_field_get_value_format_xy gwy_data_field_get_value_format_z gwy_data_field_get_xder gwy_data_field_get_xder_uncertainty gwy_data_field_get_xoffset gwy_data_field_get_xreal gwy_data_field_get_xres gwy_data_field_get_yder gwy_data_field_get_yder_uncertainty gwy_data_field_get_yoffset gwy_data_field_get_yreal gwy_data_field_get_yres gwy_data_field_grains_add gwy_data_field_grains_extract_grain gwy_data_field_grains_get_distribution gwy_data_field_grains_get_quantities gwy_data_field_grains_get_values gwy_data_field_grains_intersect gwy_data_field_grains_mark_curvature gwy_data_field_grains_mark_height gwy_data_field_grains_mark_slope gwy_data_field_grains_mark_watershed gwy_data_field_grains_remove_by_height gwy_data_field_grains_remove_by_size gwy_data_field_grains_remove_grain gwy_data_field_grains_splash_water gwy_data_field_grains_watershed_finalize gwy_data_field_grains_watershed_init gwy_data_field_grains_watershed_iteration gwy_data_field_hhcf gwy_data_field_hhcf_uncertainty gwy_data_field_hough_circle gwy_data_field_hough_circle_strenghten gwy_data_field_hough_datafield_line_to_polar gwy_data_field_hough_line gwy_data_field_hough_line_strenghten gwy_data_field_hough_polar_line_to_datafield gwy_data_field_invert gwy_data_field_itor gwy_data_field_jtor gwy_data_field_local_plane_quantity gwy_data_field_mask_outliers gwy_data_field_mask_outliers2 gwy_data_field_max_of_fields gwy_data_field_min_of_fields gwy_data_field_minkowski_boundary gwy_data_field_minkowski_euler gwy_data_field_minkowski_volume gwy_data_field_multiply gwy_data_field_multiply_fields gwy_data_field_new gwy_data_field_new_alike gwy_data_field_new_resampled gwy_data_field_normalize gwy_data_field_number_grains gwy_data_field_plane_level gwy_data_field_plane_rotate gwy_data_field_psdf gwy_data_field_racf gwy_data_field_renormalize gwy_data_field_resample gwy_data_field_resize gwy_data_field_rotate gwy_data_field_rpsdf gwy_data_field_rtoi gwy_data_field_rtoj gwy_data_field_set_column gwy_data_field_set_column_part gwy_data_field_set_row gwy_data_field_set_row_part gwy_data_field_set_si_unit_xy gwy_data_field_set_si_unit_z gwy_data_field_set_val gwy_data_field_set_xoffset gwy_data_field_set_xreal gwy_data_field_set_yoffset gwy_data_field_set_yreal gwy_data_field_shade gwy_data_field_slope_distribution gwy_data_field_subtract_fields gwy_data_field_subtract_legendre gwy_data_field_subtract_poly gwy_data_field_subtract_poly_max gwy_data_field_subtract_polynom gwy_data_field_sum_fields gwy_data_field_threshold gwy_data_field_unrotate_find_corrections gwy_data_field_xdwt gwy_data_field_ydwt gwy_data_item_get_type gwy_data_line_acf gwy_data_line_acf_uncertainty gwy_data_line_add gwy_data_line_cda gwy_data_line_cdh gwy_data_line_check_compatibility gwy_data_line_clear gwy_data_line_copy gwy_data_line_copy_units_to_data_field gwy_data_line_cumulate gwy_data_line_cumulate_uncertainty gwy_data_line_da gwy_data_line_data_changed gwy_data_line_dh gwy_data_line_distribution gwy_data_line_dwt gwy_data_line_fft gwy_data_line_fft_raw gwy_data_line_fill gwy_data_line_fit_polynom gwy_data_line_get_avg gwy_data_line_get_data gwy_data_line_get_data_const gwy_data_line_get_der gwy_data_line_get_dval gwy_data_line_get_dval_real gwy_data_line_get_length gwy_data_line_get_line_coeffs gwy_data_line_get_max gwy_data_line_get_median gwy_data_line_get_min gwy_data_line_get_modus gwy_data_line_get_offset gwy_data_line_get_real gwy_data_line_get_res gwy_data_line_get_rms gwy_data_line_get_si_unit_x gwy_data_line_get_si_unit_y gwy_data_line_get_sum gwy_data_line_get_tan_beta0 gwy_data_line_get_type gwy_data_line_get_val gwy_data_line_get_value_format_x gwy_data_line_get_value_format_y gwy_data_line_hhcf gwy_data_line_hhcf_uncertainty gwy_data_line_invert gwy_data_line_itor gwy_data_line_line_level gwy_data_line_multiply gwy_data_line_new gwy_data_line_new_alike gwy_data_line_new_resampled gwy_data_line_part_add gwy_data_line_part_clear gwy_data_line_part_extract gwy_data_line_part_fft gwy_data_line_part_fill gwy_data_line_part_fit_polynom gwy_data_line_part_get_avg gwy_data_line_part_get_max gwy_data_line_part_get_median gwy_data_line_part_get_min gwy_data_line_part_get_modus gwy_data_line_part_get_rms gwy_data_line_part_get_sum gwy_data_line_part_get_tan_beta0 gwy_data_line_part_multiply gwy_data_line_part_subtract_polynom gwy_data_line_part_threshold gwy_data_line_psdf gwy_data_line_resample gwy_data_line_resize gwy_data_line_rotate gwy_data_line_rtoi gwy_data_line_set_offset gwy_data_line_set_real gwy_data_line_set_si_unit_x gwy_data_line_set_si_unit_y gwy_data_line_set_val gwy_data_line_sqrt gwy_data_line_subtract_polynom gwy_data_line_threshold gwy_data_validate gwy_data_validation_failure_list_free gwy_data_view_coords_real_to_xy gwy_data_view_coords_xy_clamp gwy_data_view_coords_xy_cut_line gwy_data_view_coords_xy_to_real gwy_data_view_export_pixbuf gwy_data_view_get_alpha_layer gwy_data_view_get_base_layer gwy_data_view_get_data gwy_data_view_get_data_prefix gwy_data_view_get_hexcess gwy_data_view_get_metric gwy_data_view_get_pixbuf gwy_data_view_get_pixel_data_sizes gwy_data_view_get_real_data_offsets gwy_data_view_get_real_data_sizes gwy_data_view_get_real_zoom gwy_data_view_get_top_layer gwy_data_view_get_type gwy_data_view_get_vexcess gwy_data_view_get_xmeasure gwy_data_view_get_ymeasure gwy_data_view_get_zoom gwy_data_view_layer_get_type gwy_data_view_layer_plugged gwy_data_view_layer_realize gwy_data_view_layer_type_get_type gwy_data_view_layer_unplugged gwy_data_view_layer_unrealize gwy_data_view_layer_updated gwy_data_view_new gwy_data_view_set_alpha_layer gwy_data_view_set_base_layer gwy_data_view_set_data_prefix gwy_data_view_set_top_layer gwy_data_view_set_zoom gwy_data_watch_event_type_get_type gwy_data_window_class_get_tooltips gwy_data_window_class_set_tooltips gwy_data_window_get_color_axis gwy_data_window_get_data gwy_data_window_get_data_name gwy_data_window_get_data_view gwy_data_window_get_type gwy_data_window_get_ul_corner_widget gwy_data_window_new gwy_data_window_set_data_name gwy_data_window_set_ul_corner_widget gwy_data_window_set_zoom gwy_debug_gnu gwy_debug_objects_clear gwy_debug_objects_creation_detailed gwy_debug_objects_dump_to_file gwy_debug_objects_enable gwy_deserialize_object_hash gwy_draw_type_init gwy_dwt_denoise_type_get_enum gwy_dwt_denoise_type_get_type gwy_dwt_set_coefficients gwy_dwt_type_get_enum gwy_dwt_type_get_type gwy_entities gwy_entities_entity_to_utf8 gwy_entities_text_to_utf8 gwy_enum_combo_box_get_active gwy_enum_combo_box_new gwy_enum_combo_box_newl gwy_enum_combo_box_set_active gwy_enum_combo_box_update_int gwy_enum_freev gwy_enum_get_type gwy_enum_inventory_new gwy_enum_sanitize_value gwy_enum_to_string gwy_enuml_to_string gwy_expr_compile gwy_expr_define_constant gwy_expr_error_get_type gwy_expr_error_quark gwy_expr_evaluate gwy_expr_execute gwy_expr_free gwy_expr_get_expression gwy_expr_get_variables gwy_expr_new gwy_expr_resolve_variables gwy_expr_undefine_constant gwy_expr_vector_execute gwy_exterior_type_get_type gwy_fd_curve_preset_get_type gwy_fd_curve_presets gwy_fft_find_nice_size gwy_fft_simple gwy_fft_window gwy_fft_window_data_field gwy_file_abandon_contents gwy_file_detect gwy_file_detect_with_score gwy_file_func_exists gwy_file_func_foreach gwy_file_func_get_description gwy_file_func_get_is_detectable gwy_file_func_get_operations gwy_file_func_register gwy_file_func_run_detect gwy_file_func_run_export gwy_file_func_run_load gwy_file_func_run_save gwy_file_func_set_is_detectable gwy_file_get_contents gwy_file_get_data_info gwy_file_load gwy_file_load_with_func gwy_file_operation_type_get_type gwy_file_save gwy_file_save_with_func gwy_filename_ignore gwy_find_self_dir gwy_flags_to_string gwy_func_use_add gwy_func_use_free gwy_func_use_get gwy_func_use_get_filename gwy_func_use_load gwy_func_use_new gwy_func_use_save gwy_get_gboolean8 gwy_get_gdouble_be gwy_get_gdouble_le gwy_get_gfloat_be gwy_get_gfloat_le gwy_get_gint16_be gwy_get_gint16_le gwy_get_gint32_be gwy_get_gint32_le gwy_get_gint64_be gwy_get_gint64_le gwy_get_guint16_be gwy_get_guint16_le gwy_get_guint32_be gwy_get_guint32_le gwy_get_guint64_be gwy_get_guint64_le gwy_get_home_dir gwy_get_pascal_real_be gwy_get_pascal_real_le gwy_get_user_dir gwy_gl_material_get_ambient gwy_gl_material_get_diffuse gwy_gl_material_get_emission gwy_gl_material_get_shininess gwy_gl_material_get_specular gwy_gl_material_get_type gwy_gl_material_reset gwy_gl_material_sample_to_pixbuf gwy_gl_material_selection_get_active gwy_gl_material_selection_new gwy_gl_material_selection_set_active gwy_gl_material_set_ambient gwy_gl_material_set_diffuse gwy_gl_material_set_emission gwy_gl_material_set_shininess gwy_gl_material_set_specular gwy_gl_material_tree_view_new gwy_gl_material_tree_view_set_active gwy_gl_materials gwy_gl_materials_get_gl_material gwy_gradient_delete_point gwy_gradient_get_color gwy_gradient_get_npoints gwy_gradient_get_point gwy_gradient_get_points gwy_gradient_get_samples gwy_gradient_get_type gwy_gradient_insert_point gwy_gradient_insert_point_sorted gwy_gradient_reset gwy_gradient_sample gwy_gradient_sample_to_pixbuf gwy_gradient_selection_get_active gwy_gradient_selection_new gwy_gradient_selection_set_active gwy_gradient_set_from_samples gwy_gradient_set_point gwy_gradient_set_point_color gwy_gradient_set_points gwy_gradient_tree_view_new gwy_gradient_tree_view_set_active gwy_gradients gwy_gradients_get_gradient gwy_grain_quantity_get_type gwy_grain_quantity_get_units gwy_grain_quantity_needs_same_units gwy_grain_value_flags_get_type gwy_grain_value_get_expression gwy_grain_value_get_flags gwy_grain_value_get_group gwy_grain_value_get_power_xy gwy_grain_value_get_power_z gwy_grain_value_get_quantity gwy_grain_value_get_symbol gwy_grain_value_get_symbol_markup gwy_grain_value_get_type gwy_grain_value_group_get_type gwy_grain_value_group_name gwy_grain_value_set_expression gwy_grain_value_set_flags gwy_grain_value_set_power_xy gwy_grain_value_set_power_z gwy_grain_value_set_symbol gwy_grain_value_set_symbol_markup gwy_grain_value_store_column_get_type gwy_grain_value_tree_view_get_enabled gwy_grain_value_tree_view_get_expanded_groups gwy_grain_value_tree_view_n_enabled gwy_grain_value_tree_view_new gwy_grain_value_tree_view_select gwy_grain_value_tree_view_set_enabled gwy_grain_value_tree_view_set_expanded_groups gwy_grain_value_tree_view_set_same_units gwy_grain_values gwy_grain_values_calculate gwy_grain_values_get_builtin_grain_value gwy_grain_values_get_grain_value gwy_graph_area_draw_on_drawable gwy_graph_area_edit_curve gwy_graph_area_enable_user_input gwy_graph_area_export_vector gwy_graph_area_get_cursor gwy_graph_area_get_label gwy_graph_area_get_model gwy_graph_area_get_selection gwy_graph_area_get_status gwy_graph_area_get_type gwy_graph_area_get_x_grid_data gwy_graph_area_get_y_grid_data gwy_graph_area_new gwy_graph_area_set_model gwy_graph_area_set_status gwy_graph_area_set_x_grid_data gwy_graph_area_set_x_range gwy_graph_area_set_y_grid_data gwy_graph_area_set_y_range gwy_graph_corner_get_type gwy_graph_corner_new gwy_graph_curve_model_get_calibration_data gwy_graph_curve_model_get_ndata gwy_graph_curve_model_get_ranges gwy_graph_curve_model_get_type gwy_graph_curve_model_get_x_range gwy_graph_curve_model_get_xdata gwy_graph_curve_model_get_y_range gwy_graph_curve_model_get_ydata gwy_graph_curve_model_new gwy_graph_curve_model_new_alike gwy_graph_curve_model_set_calibration_data gwy_graph_curve_model_set_data gwy_graph_curve_model_set_data_from_dataline gwy_graph_curve_type_get_enum gwy_graph_curve_type_get_type gwy_graph_curves_get_model gwy_graph_curves_get_type gwy_graph_curves_new gwy_graph_curves_set_model gwy_graph_data_get_model gwy_graph_data_get_type gwy_graph_data_new gwy_graph_data_set_model gwy_graph_draw_curve gwy_graph_draw_grid gwy_graph_draw_line gwy_graph_draw_point gwy_graph_draw_selection_areas gwy_graph_draw_selection_lines gwy_graph_draw_selection_points gwy_graph_draw_selection_xareas gwy_graph_draw_selection_yareas gwy_graph_enable_user_input gwy_graph_export_pixmap gwy_graph_export_postscript gwy_graph_func_exists gwy_graph_func_foreach gwy_graph_func_get_menu_path gwy_graph_func_get_sensitivity_mask gwy_graph_func_get_stock_id gwy_graph_func_get_tooltip gwy_graph_func_register gwy_graph_func_run gwy_graph_get_area gwy_graph_get_axis gwy_graph_get_model gwy_graph_get_n_preset_colors gwy_graph_get_preset_color gwy_graph_get_status gwy_graph_get_type gwy_graph_grid_type_get_type gwy_graph_label_draw_on_drawable gwy_graph_label_enable_user_input gwy_graph_label_export_vector gwy_graph_label_get_model gwy_graph_label_get_type gwy_graph_label_new gwy_graph_label_position_get_type gwy_graph_label_set_model gwy_graph_model_add_curve gwy_graph_model_export_ascii gwy_graph_model_export_style_get_type gwy_graph_model_get_axis_label gwy_graph_model_get_curve gwy_graph_model_get_curve_by_description gwy_graph_model_get_curve_index gwy_graph_model_get_n_curves gwy_graph_model_get_ranges gwy_graph_model_get_type gwy_graph_model_get_x_range gwy_graph_model_get_y_range gwy_graph_model_new gwy_graph_model_new_alike gwy_graph_model_remove_all_curves gwy_graph_model_remove_curve gwy_graph_model_remove_curve_by_description gwy_graph_model_set_axis_label gwy_graph_model_set_units_from_data_line gwy_graph_model_x_data_can_be_logarithmed gwy_graph_model_y_data_can_be_logarithmed gwy_graph_new gwy_graph_point_type_get_type gwy_graph_set_axis_visible gwy_graph_set_model gwy_graph_set_status gwy_graph_status_type_get_type gwy_graph_window_class_get_tooltips gwy_graph_window_class_set_tooltips gwy_graph_window_get_graph gwy_graph_window_get_graph_curves gwy_graph_window_get_graph_data gwy_graph_window_get_type gwy_graph_window_new gwy_hash_table_to_list_cb gwy_hash_table_to_slist_cb gwy_hmarker_box_get_type gwy_hmarker_box_new gwy_hruler_get_type gwy_hruler_new gwy_hscale_style_get_type gwy_interpolation_get_dval gwy_interpolation_get_dval_of_equidists gwy_interpolation_get_support_size gwy_interpolation_has_interpolating_basis gwy_interpolation_interpolate_1d gwy_interpolation_interpolate_2d gwy_interpolation_resample_block_1d gwy_interpolation_resample_block_2d gwy_interpolation_resolve_coeffs_1d gwy_interpolation_resolve_coeffs_2d gwy_interpolation_shift_block_1d gwy_interpolation_type_get_enum gwy_interpolation_type_get_type gwy_inventory_can_make_copies gwy_inventory_delete_item gwy_inventory_delete_nth_item gwy_inventory_find gwy_inventory_foreach gwy_inventory_forget_order gwy_inventory_get_default_item gwy_inventory_get_default_item_name gwy_inventory_get_item gwy_inventory_get_item_or_default gwy_inventory_get_item_position gwy_inventory_get_item_type gwy_inventory_get_n_items gwy_inventory_get_nth_item gwy_inventory_get_type gwy_inventory_insert_item gwy_inventory_insert_nth_item gwy_inventory_is_const gwy_inventory_item_updated gwy_inventory_new gwy_inventory_new_filled gwy_inventory_new_from_array gwy_inventory_new_item gwy_inventory_nth_item_updated gwy_inventory_rename_item gwy_inventory_restore_order gwy_inventory_set_default_item_name gwy_inventory_store_get_column_by_name gwy_inventory_store_get_inventory gwy_inventory_store_get_iter gwy_inventory_store_get_type gwy_inventory_store_iter_is_valid gwy_inventory_store_new gwy_label_new_header gwy_layer_basic_get_gradient_key gwy_layer_basic_get_has_presentation gwy_layer_basic_get_min_max_key gwy_layer_basic_get_presentation_key gwy_layer_basic_get_range gwy_layer_basic_get_range_type gwy_layer_basic_get_range_type_key gwy_layer_basic_get_type gwy_layer_basic_new gwy_layer_basic_range_type_get_type gwy_layer_basic_set_gradient_key gwy_layer_basic_set_min_max_key gwy_layer_basic_set_presentation_key gwy_layer_basic_set_range_type_key gwy_layer_func_foreach gwy_layer_func_register gwy_layer_mask_get_color gwy_layer_mask_get_color_key gwy_layer_mask_get_type gwy_layer_mask_new gwy_layer_mask_set_color_key gwy_line_stat_quantity_get_type gwy_list_store_row_changed gwy_marker_box_add_marker gwy_marker_box_get_flipped gwy_marker_box_get_highlight_selected gwy_marker_box_get_marker_position gwy_marker_box_get_markers gwy_marker_box_get_nmarkers gwy_marker_box_get_selected_marker gwy_marker_box_get_type gwy_marker_box_get_validator gwy_marker_box_remove_marker gwy_marker_box_set_flipped gwy_marker_box_set_highlight_selected gwy_marker_box_set_marker_position gwy_marker_box_set_markers gwy_marker_box_set_selected_marker gwy_marker_box_set_validator gwy_marker_operation_type_get_type gwy_mask_color_selector_run gwy_masking_type_get_enum gwy_masking_type_get_type gwy_math_choleski_decompose gwy_math_choleski_solve gwy_math_curvature gwy_math_fallback_acosh gwy_math_fallback_asinh gwy_math_fallback_atanh gwy_math_fallback_cbrt gwy_math_fallback_hypot gwy_math_fallback_isinf gwy_math_fallback_isnan gwy_math_fallback_pow10 gwy_math_find_nearest_line gwy_math_find_nearest_point gwy_math_fit_polynom gwy_math_humanize_numbers gwy_math_is_in_polygon gwy_math_lin_solve gwy_math_lin_solve_rewrite gwy_math_median gwy_math_median_uncertainty gwy_math_nlfit_derive gwy_math_nlfit_fit gwy_math_nlfit_fit_full gwy_math_nlfit_free gwy_math_nlfit_get_correlations gwy_math_nlfit_get_dispersion gwy_math_nlfit_get_max_iterations gwy_math_nlfit_get_sigma gwy_math_nlfit_new gwy_math_nlfit_set_max_iterations gwy_math_nlfit_succeeded gwy_math_sort gwy_math_tridiag_solve_rewrite gwy_md5_get_digest gwy_memcpy_byte_swap gwy_memmem gwy_menu_gl_material gwy_menu_gradient gwy_menu_sens_flags_get_type gwy_merge_type_get_enum gwy_merge_type_get_type gwy_module_browser gwy_module_error_get_type gwy_module_error_quark gwy_module_file_error_get_type gwy_module_file_error_quark gwy_module_foreach gwy_module_get_filename gwy_module_get_functions gwy_module_lookup gwy_module_register_module gwy_module_register_modules gwy_nlfit_preset_fit gwy_nlfit_preset_get_formula gwy_nlfit_preset_get_nparams gwy_nlfit_preset_get_param_name gwy_nlfit_preset_get_param_units gwy_nlfit_preset_get_type gwy_nlfit_preset_get_value gwy_nlfit_preset_guess gwy_nlfit_presets gwy_null_store_get_model gwy_null_store_get_n_rows gwy_null_store_get_type gwy_null_store_iter_is_valid gwy_null_store_new gwy_null_store_row_changed gwy_null_store_set_model gwy_null_store_set_n_rows gwy_object_set_or_reset gwy_orientation_get_enum gwy_orientation_get_type gwy_pixbuf_draw_data_field gwy_pixbuf_draw_data_field_adaptive gwy_pixbuf_draw_data_field_as_mask gwy_pixbuf_draw_data_field_with_range gwy_pixmap_layer_get_data_key gwy_pixmap_layer_get_type gwy_pixmap_layer_make_pixbuf gwy_pixmap_layer_paint gwy_pixmap_layer_set_data_key gwy_pixmap_layer_wants_repaint gwy_plain_tool_add_clear_button gwy_plain_tool_changed_get_type gwy_plain_tool_check_layer_type gwy_plain_tool_connect_selection gwy_plain_tool_enable_object_deletion gwy_plain_tool_ensure_layer gwy_plain_tool_get_type gwy_plain_tool_get_z_average gwy_plain_tool_set_selection_key gwy_plane_fit_quantity_get_type gwy_plane_symmetry_get_enum gwy_plane_symmetry_get_type gwy_process_func_exists gwy_process_func_foreach gwy_process_func_get_menu_path gwy_process_func_get_run_types gwy_process_func_get_sensitivity_mask gwy_process_func_get_stock_id gwy_process_func_get_tooltip gwy_process_func_register gwy_process_func_run gwy_process_type_init gwy_radio_button_get_value gwy_radio_button_set_value gwy_radio_buttons_attach_to_table gwy_radio_buttons_create gwy_radio_buttons_createl gwy_radio_buttons_find gwy_radio_buttons_get_current gwy_radio_buttons_set_current gwy_raw_data_size gwy_raw_data_type_get_type gwy_rect_selection_labels_fill gwy_rect_selection_labels_get_table gwy_rect_selection_labels_new gwy_rect_selection_labels_select gwy_resource_build_filename gwy_resource_class_get_inventory gwy_resource_class_get_item_type gwy_resource_class_get_name gwy_resource_class_load gwy_resource_class_mkdir gwy_resource_classes_finalize gwy_resource_data_changed gwy_resource_data_saved gwy_resource_dump gwy_resource_editor_class_setup gwy_resource_editor_commit gwy_resource_editor_get_edited gwy_resource_editor_get_type gwy_resource_editor_queue_commit gwy_resource_editor_setup gwy_resource_get_is_modifiable gwy_resource_get_is_preferred gwy_resource_get_name gwy_resource_get_type gwy_resource_is_used gwy_resource_parse gwy_resource_release gwy_resource_set_is_preferred gwy_resource_tree_view_set_active gwy_resource_use gwy_rgba_copy gwy_rgba_free gwy_rgba_from_gdk_color gwy_rgba_from_gdk_color_and_alpha gwy_rgba_get_from_container gwy_rgba_get_type gwy_rgba_interpolate gwy_rgba_remove_from_container gwy_rgba_set_gdk_gc_bg gwy_rgba_set_gdk_gc_fg gwy_rgba_store_to_container gwy_rgba_to_gdk_alpha gwy_rgba_to_gdk_color gwy_ruler_draw_pos gwy_ruler_get_range gwy_ruler_get_si_unit gwy_ruler_get_type gwy_ruler_get_units_placement gwy_ruler_set_range gwy_ruler_set_si_unit gwy_ruler_set_units_placement gwy_run_type_get_type gwy_save_auxiliary_data gwy_save_auxiliary_with_callback gwy_sci_text_get_entry gwy_sci_text_get_has_preview gwy_sci_text_get_text gwy_sci_text_get_type gwy_sci_text_new gwy_sci_text_set_has_preview gwy_sci_text_set_text gwy_selection_changed gwy_selection_clear gwy_selection_crop gwy_selection_delete_object gwy_selection_filter gwy_selection_finished gwy_selection_get_data gwy_selection_get_max_objects gwy_selection_get_object gwy_selection_get_object_size gwy_selection_get_type gwy_selection_graph_1darea_get_type gwy_selection_graph_1darea_new gwy_selection_graph_area_get_type gwy_selection_graph_area_new gwy_selection_graph_line_get_type gwy_selection_graph_line_new gwy_selection_graph_point_get_type gwy_selection_graph_point_new gwy_selection_graph_zoom_get_type gwy_selection_graph_zoom_new gwy_selection_is_full gwy_selection_set_data gwy_selection_set_max_objects gwy_selection_set_object gwy_sensitivity_group_add_widget gwy_sensitivity_group_get_state gwy_sensitivity_group_get_type gwy_sensitivity_group_get_widget_mask gwy_sensitivity_group_new gwy_sensitivity_group_release_widget gwy_sensitivity_group_set_state gwy_sensitivity_group_set_widget_mask gwy_serializable_clone gwy_serializable_deserialize gwy_serializable_duplicate gwy_serializable_get_size gwy_serializable_get_type gwy_serializable_serialize gwy_serialize_check_string gwy_serialize_get_items_size gwy_serialize_get_struct_size gwy_serialize_object_items gwy_serialize_pack_object_struct gwy_serialize_unpack_object_struct gwy_set_data_preview_size gwy_sgettext gwy_shader_get_gradient gwy_shader_get_phi gwy_shader_get_theta gwy_shader_get_type gwy_shader_get_update_policy gwy_shader_new gwy_shader_set_angle gwy_shader_set_gradient gwy_shader_set_phi gwy_shader_set_theta gwy_shader_set_update_policy gwy_si_unit_divide gwy_si_unit_equal gwy_si_unit_format_style_get_type gwy_si_unit_get_format gwy_si_unit_get_format_for_power10 gwy_si_unit_get_format_with_digits gwy_si_unit_get_format_with_resolution gwy_si_unit_get_string gwy_si_unit_get_type gwy_si_unit_multiply gwy_si_unit_new gwy_si_unit_new_parse gwy_si_unit_nth_root gwy_si_unit_power gwy_si_unit_power_multiply gwy_si_unit_set_from_string gwy_si_unit_set_from_string_parse gwy_si_unit_value_format_free gwy_si_unit_value_format_set_units gwy_spectra_add_spectrum gwy_spectra_clear gwy_spectra_data_changed gwy_spectra_find_nearest gwy_spectra_get_n_spectra gwy_spectra_get_si_unit_xy gwy_spectra_get_spectrum gwy_spectra_get_spectrum_selected gwy_spectra_get_title gwy_spectra_get_type gwy_spectra_itoxy gwy_spectra_new gwy_spectra_new_alike gwy_spectra_remove_spectrum gwy_spectra_set_si_unit_xy gwy_spectra_set_spectrum gwy_spectra_set_spectrum_selected gwy_spectra_set_title gwy_spectra_setpos gwy_spectra_xytoi gwy_statusbar_get_type gwy_statusbar_new gwy_statusbar_set_markup gwy_stock_like_button_new gwy_stock_register_stock_items gwy_str_next_line gwy_stramong gwy_strdiffpos gwy_string_list_append gwy_string_list_get gwy_string_list_get_length gwy_string_list_get_type gwy_string_list_new gwy_string_to_enum gwy_string_to_flags gwy_strisident gwy_strkill gwy_strreplace gwy_table_attach_hscale gwy_table_attach_row gwy_table_attach_spinbutton gwy_table_get_child_widget gwy_table_hscale_set_sensitive gwy_text_header_context_get_lineno gwy_text_header_context_get_section gwy_text_header_error_get_type gwy_text_header_error_quark gwy_text_header_parse gwy_ticks_style_get_type gwy_tip_cmap gwy_tip_dilation gwy_tip_erosion gwy_tip_estimate_full gwy_tip_estimate_partial gwy_tip_model_get_npresets gwy_tip_model_get_preset gwy_tip_model_get_preset_by_name gwy_tip_model_get_preset_group_name gwy_tip_model_get_preset_id gwy_tip_model_get_preset_nparams gwy_tip_model_get_preset_tip_name gwy_tip_type_get_type gwy_tool_add_hide_button gwy_tool_class_get_stock_id gwy_tool_class_get_title gwy_tool_class_get_tooltip gwy_tool_data_switched gwy_tool_func_foreach gwy_tool_func_register gwy_tool_get_type gwy_tool_hide gwy_tool_is_visible gwy_tool_like_button_new gwy_tool_show gwy_tool_spectra_switched gwy_tool_switch_event_get_type gwy_transform_direction_get_type gwy_triangulation_boundary gwy_triangulation_data_free gwy_triangulation_delaunay gwy_triangulation_get_type gwy_triangulation_interpolate gwy_triangulation_new gwy_triangulation_triangulate gwy_triangulation_voronoi gwy_type_init gwy_undo_checkpoint gwy_undo_checkpointv gwy_undo_container_get_modified gwy_undo_container_has_redo gwy_undo_container_has_undo gwy_undo_container_remove gwy_undo_container_set_unmodified gwy_undo_get_enabled gwy_undo_qcheckpoint gwy_undo_qcheckpointv gwy_undo_redo_container gwy_undo_set_enabled gwy_undo_undo_container gwy_units_placement_get_type gwy_vector_layer_button_press gwy_vector_layer_button_release gwy_vector_layer_class_get_selection_type gwy_vector_layer_draw gwy_vector_layer_ensure_selection gwy_vector_layer_get_editable gwy_vector_layer_get_focus gwy_vector_layer_get_selection_key gwy_vector_layer_get_type gwy_vector_layer_key_press gwy_vector_layer_key_release gwy_vector_layer_motion_notify gwy_vector_layer_object_chosen gwy_vector_layer_set_editable gwy_vector_layer_set_focus gwy_vector_layer_set_selection_key gwy_version_major gwy_version_minor gwy_version_string gwy_visibility_reset_type_get_type gwy_vruler_get_type gwy_vruler_new gwy_watershed_state_type_get_type gwy_widget_get_activate_on_unfocus gwy_widget_set_activate_on_unfocus gwy_widget_sync_sensitivity gwy_widgets_get_gl_config gwy_widgets_gl_init gwy_widgets_type_init gwy_windowing_type_get_enum gwy_windowing_type_get_type +syn keyword gwyddionFunction gwy_2d_cwt_wavelet_type_get_enum gwy_2d_cwt_wavelet_type_get_type gwy_3d_label_expand_text gwy_3d_label_get_text gwy_3d_label_get_type gwy_3d_label_new gwy_3d_label_reset gwy_3d_label_reset_text gwy_3d_label_set_text gwy_3d_label_user_size gwy_3d_movement_get_type gwy_3d_projection_get_type gwy_3d_setup_get_type gwy_3d_setup_new gwy_3d_view_class_disable_axis_drawing gwy_3d_view_get_data gwy_3d_view_get_data_key gwy_3d_view_get_gradient_key gwy_3d_view_get_label gwy_3d_view_get_material_key gwy_3d_view_get_movement_type gwy_3d_view_get_pixbuf gwy_3d_view_get_reduced_size gwy_3d_view_get_scale_range gwy_3d_view_get_setup gwy_3d_view_get_setup_prefix gwy_3d_view_get_type gwy_3d_view_label_get_type gwy_3d_view_new gwy_3d_view_set_data_key gwy_3d_view_set_gradient_key gwy_3d_view_set_material_key gwy_3d_view_set_movement_type gwy_3d_view_set_ovlay gwy_3d_view_set_reduced_size gwy_3d_view_set_scale_range gwy_3d_view_set_setup_prefix gwy_3d_visualization_get_type gwy_3d_window_add_action_widget gwy_3d_window_add_small_toolbar_button gwy_3d_window_class_get_tooltips gwy_3d_window_class_set_tooltips gwy_3d_window_get_3d_view gwy_3d_window_get_type gwy_3d_window_new gwy_3d_window_set_overlay_chooser gwy_app_add_main_accel_group gwy_app_build_graph_menu gwy_app_build_process_menu gwy_app_channel_check_nonsquare gwy_app_channel_remove_bad_data gwy_app_channel_title_fall_back gwy_app_data_browser_add gwy_app_data_browser_add_channel_watch gwy_app_data_browser_add_data_field gwy_app_data_browser_add_graph_model gwy_app_data_browser_add_spectra gwy_app_data_browser_copy_channel gwy_app_data_browser_find_data_by_title gwy_app_data_browser_find_graphs_by_title gwy_app_data_browser_find_spectra_by_title gwy_app_data_browser_foreach gwy_app_data_browser_get_current gwy_app_data_browser_get_data_ids gwy_app_data_browser_get_graph_ids gwy_app_data_browser_get_gui_enabled gwy_app_data_browser_get_keep_invisible gwy_app_data_browser_get_spectra_ids gwy_app_data_browser_merge gwy_app_data_browser_remove gwy_app_data_browser_remove_channel_watch gwy_app_data_browser_reset_visibility gwy_app_data_browser_restore gwy_app_data_browser_select_data_field gwy_app_data_browser_select_data_view gwy_app_data_browser_select_graph gwy_app_data_browser_select_graph_model gwy_app_data_browser_select_spectra gwy_app_data_browser_set_gui_enabled gwy_app_data_browser_set_keep_invisible gwy_app_data_browser_show gwy_app_data_browser_show_3d gwy_app_data_browser_shut_down gwy_app_data_clear_selections gwy_app_data_view_change_mask_color gwy_app_file_confirm_overwrite gwy_app_file_load gwy_app_file_merge gwy_app_file_open gwy_app_file_save gwy_app_file_save_as gwy_app_file_write gwy_app_find_window_for_channel gwy_app_get_channel_thumbnail gwy_app_get_current_directory gwy_app_get_data_field_title gwy_app_get_data_key_for_id gwy_app_get_graph_key_for_id gwy_app_get_mask_key_for_id gwy_app_get_show_key_for_id gwy_app_get_spectra_key_for_id gwy_app_get_tooltips gwy_app_gl_init gwy_app_gl_is_ok gwy_app_gl_material_editor gwy_app_gradient_editor gwy_app_init_common gwy_app_init_i18n gwy_app_init_widget_styles gwy_app_main_window_get gwy_app_menu_recent_files_get gwy_app_menu_recent_files_update gwy_app_process_func_get_use gwy_app_process_func_save_use gwy_app_process_menu_add_run_last gwy_app_quit gwy_app_recent_file_get_thumbnail gwy_app_recent_file_list_free gwy_app_recent_file_list_load gwy_app_recent_file_list_new gwy_app_recent_file_list_save gwy_app_recent_file_list_update gwy_app_restore_window_position gwy_app_run_graph_func gwy_app_run_process_func gwy_app_run_process_func_in_mode gwy_app_save_window_position gwy_app_sensitivity_add_widget gwy_app_sensitivity_get_group gwy_app_sensitivity_set_state gwy_app_set_current_directory gwy_app_set_data_field_title gwy_app_settings_create_config_dir gwy_app_settings_error_get_type gwy_app_settings_error_quark gwy_app_settings_free gwy_app_settings_get gwy_app_settings_get_log_filename gwy_app_settings_get_module_dirs gwy_app_settings_get_recent_file_list_filename gwy_app_settings_get_settings_filename gwy_app_settings_load gwy_app_settings_save gwy_app_switch_tool gwy_app_sync_data_items gwy_app_undo_checkpoint gwy_app_undo_checkpointv gwy_app_undo_container_remove gwy_app_undo_qcheckpoint gwy_app_undo_qcheckpointv gwy_app_undo_redo_container gwy_app_undo_undo_container gwy_app_wait_cursor_finish gwy_app_wait_cursor_start gwy_app_wait_finish gwy_app_wait_set_fraction gwy_app_wait_set_message gwy_app_wait_set_message_prefix gwy_app_wait_start gwy_app_what_get_type gwy_ascii_strcase_equal gwy_ascii_strcase_hash gwy_axis_draw_on_drawable gwy_axis_enable_label_edit gwy_axis_export_vector gwy_axis_get_label gwy_axis_get_magnification gwy_axis_get_magnification_string gwy_axis_get_major_ticks gwy_axis_get_orientation gwy_axis_get_range gwy_axis_get_requested_range gwy_axis_get_type gwy_axis_is_logarithmic gwy_axis_is_visible gwy_axis_new gwy_axis_request_range gwy_axis_scale_format_get_type gwy_axis_set_auto gwy_axis_set_label gwy_axis_set_logarithmic gwy_axis_set_si_unit gwy_axis_set_visible gwy_byte_order_get_type gwy_caldata_append gwy_caldata_get_ndata gwy_caldata_get_range gwy_caldata_get_si_unit_x gwy_caldata_get_si_unit_y gwy_caldata_get_si_unit_z gwy_caldata_get_type gwy_caldata_get_x gwy_caldata_get_xerr gwy_caldata_get_xunc gwy_caldata_get_y gwy_caldata_get_yerr gwy_caldata_get_yunc gwy_caldata_get_z gwy_caldata_get_zerr gwy_caldata_get_zunc gwy_caldata_inside gwy_caldata_interpolate gwy_caldata_new gwy_caldata_resize gwy_caldata_save_data gwy_caldata_set_range gwy_caldata_set_si_unit_x gwy_caldata_set_si_unit_y gwy_caldata_set_si_unit_z gwy_caldata_setup_interpolation gwy_calibration_get_data gwy_calibration_get_filename gwy_calibration_get_ndata gwy_calibration_get_type gwy_calibration_new gwy_calibrations gwy_calibrations_get_calibration gwy_canonicalize_path gwy_cdline_fit gwy_cdline_fit_with_caldata gwy_cdline_get_definition gwy_cdline_get_name gwy_cdline_get_nparams gwy_cdline_get_param_name gwy_cdline_get_param_units gwy_cdline_get_type gwy_cdline_get_value gwy_cdlines gwy_color_axis_get_gradient gwy_color_axis_get_labels_visible gwy_color_axis_get_range gwy_color_axis_get_si_unit gwy_color_axis_get_ticks_style gwy_color_axis_get_type gwy_color_axis_new gwy_color_axis_new_with_range gwy_color_axis_set_gradient gwy_color_axis_set_labels_visible gwy_color_axis_set_range gwy_color_axis_set_si_unit gwy_color_axis_set_ticks_style gwy_color_button_get_color gwy_color_button_get_type gwy_color_button_get_use_alpha gwy_color_button_new gwy_color_button_new_with_color gwy_color_button_set_color gwy_color_button_set_use_alpha gwy_color_selector_for_mask gwy_combo_box_metric_unit_new gwy_combo_box_metric_unit_set_unit gwy_computation_state_type_get_type gwy_container_contains gwy_container_deserialize_from_text gwy_container_duplicate_by_prefix gwy_container_foreach gwy_container_get_boolean gwy_container_get_double gwy_container_get_enum gwy_container_get_int32 gwy_container_get_int64 gwy_container_get_n_items gwy_container_get_object gwy_container_get_string gwy_container_get_type gwy_container_get_uchar gwy_container_get_value gwy_container_gis_boolean gwy_container_gis_double gwy_container_gis_enum gwy_container_gis_int32 gwy_container_gis_int64 gwy_container_gis_object gwy_container_gis_string gwy_container_gis_uchar gwy_container_gis_value gwy_container_keys gwy_container_keys_by_name gwy_container_new gwy_container_remove gwy_container_remove_by_prefix gwy_container_rename gwy_container_serialize_to_text gwy_container_set_boolean gwy_container_set_double gwy_container_set_enum gwy_container_set_int32 gwy_container_set_int64 gwy_container_set_object gwy_container_set_string gwy_container_set_uchar gwy_container_set_value gwy_container_set_value_by_name gwy_container_transfer gwy_container_value_type gwy_convert_raw_data gwy_correlation_type_get_enum gwy_correlation_type_get_type gwy_curve_channel_get_type gwy_curve_get_control_points gwy_curve_get_type gwy_curve_new gwy_curve_reset gwy_curve_set_channels gwy_curve_set_control_points gwy_curve_set_curve_type gwy_curve_set_range gwy_curve_type_get_type gwy_cwt_wfunc_2d gwy_data_chooser_get_active gwy_data_chooser_get_filter gwy_data_chooser_get_none gwy_data_chooser_get_type gwy_data_chooser_new_channels gwy_data_chooser_set_active gwy_data_chooser_set_filter gwy_data_chooser_set_none gwy_data_compatibility_flags_get_type gwy_data_error_desrcibe gwy_data_field_1dfft gwy_data_field_1dfft_raw gwy_data_field_2dacf gwy_data_field_2dfft gwy_data_field_2dfft_dehumanize gwy_data_field_2dfft_humanize gwy_data_field_2dfft_raw gwy_data_field_acf gwy_data_field_acf_uncertainty gwy_data_field_add gwy_data_field_area_1dfft gwy_data_field_area_2dacf gwy_data_field_area_2dfft gwy_data_field_area_acf gwy_data_field_area_acf_uncertainty gwy_data_field_area_add gwy_data_field_area_cda gwy_data_field_area_cdh gwy_data_field_area_cdh_uncertainty gwy_data_field_area_clamp gwy_data_field_area_clear gwy_data_field_area_convolve gwy_data_field_area_convolve_1d gwy_data_field_area_copy gwy_data_field_area_count_in_range gwy_data_field_area_da gwy_data_field_area_dh gwy_data_field_area_dh_uncertainty gwy_data_field_area_extract gwy_data_field_area_fill gwy_data_field_area_filter_conservative gwy_data_field_area_filter_dechecker gwy_data_field_area_filter_gaussian gwy_data_field_area_filter_kuwahara gwy_data_field_area_filter_laplacian gwy_data_field_area_filter_laplacian_of_gaussians gwy_data_field_area_filter_maximum gwy_data_field_area_filter_mean gwy_data_field_area_filter_median gwy_data_field_area_filter_minimum gwy_data_field_area_filter_prewitt gwy_data_field_area_filter_rms gwy_data_field_area_filter_sobel gwy_data_field_area_fit_legendre gwy_data_field_area_fit_local_planes gwy_data_field_area_fit_plane gwy_data_field_area_fit_poly gwy_data_field_area_fit_poly_max gwy_data_field_area_fit_polynom gwy_data_field_area_gather gwy_data_field_area_get_avg_mask gwy_data_field_area_get_avg_uncertainty gwy_data_field_area_get_avg_uncertainty_mask gwy_data_field_area_get_grainwise_rms gwy_data_field_area_get_inclination gwy_data_field_area_get_inclination_uncertainty gwy_data_field_area_get_line_stats gwy_data_field_area_get_max gwy_data_field_area_get_max_uncertainty gwy_data_field_area_get_median_mask gwy_data_field_area_get_median_uncertainty gwy_data_field_area_get_median_uncertainty_mask gwy_data_field_area_get_min gwy_data_field_area_get_min_max_mask gwy_data_field_area_get_min_max_uncertainty gwy_data_field_area_get_min_max_uncertainty_mask gwy_data_field_area_get_min_uncertainty gwy_data_field_area_get_normal_coeffs gwy_data_field_area_get_normal_coeffs_uncertainty gwy_data_field_area_get_projected_area_uncertainty gwy_data_field_area_get_rms_mask gwy_data_field_area_get_rms_uncertainty gwy_data_field_area_get_rms_uncertainty_mask gwy_data_field_area_get_stats_mask gwy_data_field_area_get_stats_uncertainties gwy_data_field_area_get_stats_uncertainties_mask gwy_data_field_area_get_sum_mask gwy_data_field_area_get_surface_area_mask gwy_data_field_area_get_surface_area_mask_uncertainty gwy_data_field_area_get_surface_area_uncertainty gwy_data_field_area_get_volume gwy_data_field_area_grains_tgnd gwy_data_field_area_grains_tgnd_range gwy_data_field_area_hhcf gwy_data_field_area_hhcf_uncertainty gwy_data_field_area_local_plane_quantity gwy_data_field_area_minkowski_boundary gwy_data_field_area_minkowski_euler gwy_data_field_area_minkowski_volume gwy_data_field_area_multiply gwy_data_field_area_psdf gwy_data_field_area_racf gwy_data_field_area_rpsdf gwy_data_field_area_subtract_legendre gwy_data_field_area_subtract_poly gwy_data_field_area_subtract_poly_max gwy_data_field_area_subtract_polynom gwy_data_field_area_threshold gwy_data_field_cached_get_type gwy_data_field_cda gwy_data_field_cdh gwy_data_field_cdh_uncertainty gwy_data_field_check_compatibility gwy_data_field_circular_area_extract gwy_data_field_circular_area_extract_with_pos gwy_data_field_circular_area_fill gwy_data_field_circular_area_unextract gwy_data_field_clamp gwy_data_field_clear gwy_data_field_convolve gwy_data_field_convolve_1d gwy_data_field_copy gwy_data_field_copy_units_to_data_line gwy_data_field_correct_average gwy_data_field_correct_laplace_iteration gwy_data_field_correlate gwy_data_field_correlate_finalize gwy_data_field_correlate_init gwy_data_field_correlate_iteration gwy_data_field_crosscorrelate gwy_data_field_crosscorrelate_finalize gwy_data_field_crosscorrelate_init gwy_data_field_crosscorrelate_iteration gwy_data_field_cwt gwy_data_field_da gwy_data_field_data_changed gwy_data_field_dh gwy_data_field_dh_uncertainty gwy_data_field_distort gwy_data_field_divide_fields gwy_data_field_dwt gwy_data_field_dwt_mark_anisotropy gwy_data_field_elliptic_area_extract gwy_data_field_elliptic_area_fill gwy_data_field_elliptic_area_unextract gwy_data_field_fft_filter_1d gwy_data_field_fill gwy_data_field_filter_canny gwy_data_field_filter_conservative gwy_data_field_filter_dechecker gwy_data_field_filter_gaussian gwy_data_field_filter_harris gwy_data_field_filter_kuwahara gwy_data_field_filter_laplacian gwy_data_field_filter_laplacian_of_gaussians gwy_data_field_filter_maximum gwy_data_field_filter_mean gwy_data_field_filter_median gwy_data_field_filter_minimum gwy_data_field_filter_prewitt gwy_data_field_filter_rms gwy_data_field_filter_sobel gwy_data_field_fit_legendre gwy_data_field_fit_lines gwy_data_field_fit_local_planes gwy_data_field_fit_plane gwy_data_field_fit_poly gwy_data_field_fit_poly_max gwy_data_field_fit_polynom gwy_data_field_fractal_correction gwy_data_field_fractal_cubecounting gwy_data_field_fractal_cubecounting_dim gwy_data_field_fractal_partitioning gwy_data_field_fractal_partitioning_dim gwy_data_field_fractal_psdf gwy_data_field_fractal_psdf_dim gwy_data_field_fractal_triangulation gwy_data_field_fractal_triangulation_dim gwy_data_field_get_angder gwy_data_field_get_autorange gwy_data_field_get_avg gwy_data_field_get_avg_uncertainty gwy_data_field_get_circular_area_size gwy_data_field_get_column gwy_data_field_get_column_part gwy_data_field_get_correlation_score gwy_data_field_get_data gwy_data_field_get_data_const gwy_data_field_get_dval gwy_data_field_get_dval_real gwy_data_field_get_elliptic_area_size gwy_data_field_get_grain_bounding_boxes gwy_data_field_get_inclination gwy_data_field_get_inclination_uncertainty gwy_data_field_get_line_stats gwy_data_field_get_local_maxima_list gwy_data_field_get_max gwy_data_field_get_max_uncertainty gwy_data_field_get_median gwy_data_field_get_median_uncertainty gwy_data_field_get_min gwy_data_field_get_min_max gwy_data_field_get_min_max_uncertainty gwy_data_field_get_min_uncertainty gwy_data_field_get_normal_coeffs gwy_data_field_get_normal_coeffs_uncertainty gwy_data_field_get_profile gwy_data_field_get_rms gwy_data_field_get_rms_uncertainty gwy_data_field_get_row gwy_data_field_get_row_part gwy_data_field_get_si_unit_xy gwy_data_field_get_si_unit_z gwy_data_field_get_stats gwy_data_field_get_stats_uncertainties gwy_data_field_get_sum gwy_data_field_get_surface_area gwy_data_field_get_surface_area_uncertainty gwy_data_field_get_type gwy_data_field_get_val gwy_data_field_get_value_format_xy gwy_data_field_get_value_format_z gwy_data_field_get_xder gwy_data_field_get_xder_uncertainty gwy_data_field_get_xoffset gwy_data_field_get_xreal gwy_data_field_get_xres gwy_data_field_get_yder gwy_data_field_get_yder_uncertainty gwy_data_field_get_yoffset gwy_data_field_get_yreal gwy_data_field_get_yres gwy_data_field_grains_add gwy_data_field_grains_extract_grain gwy_data_field_grains_get_distribution gwy_data_field_grains_get_quantities gwy_data_field_grains_get_values gwy_data_field_grains_intersect gwy_data_field_grains_mark_curvature gwy_data_field_grains_mark_height gwy_data_field_grains_mark_slope gwy_data_field_grains_mark_watershed gwy_data_field_grains_remove_by_height gwy_data_field_grains_remove_by_size gwy_data_field_grains_remove_grain gwy_data_field_grains_splash_water gwy_data_field_grains_watershed_finalize gwy_data_field_grains_watershed_init gwy_data_field_grains_watershed_iteration gwy_data_field_hhcf gwy_data_field_hhcf_uncertainty gwy_data_field_hough_circle gwy_data_field_hough_circle_strenghten gwy_data_field_hough_datafield_line_to_polar gwy_data_field_hough_line gwy_data_field_hough_line_strenghten gwy_data_field_hough_polar_line_to_datafield gwy_data_field_invert gwy_data_field_itor gwy_data_field_jtor gwy_data_field_local_plane_quantity gwy_data_field_mask_outliers gwy_data_field_mask_outliers2 gwy_data_field_max_of_fields gwy_data_field_min_of_fields gwy_data_field_minkowski_boundary gwy_data_field_minkowski_euler gwy_data_field_minkowski_volume gwy_data_field_multiply gwy_data_field_multiply_fields gwy_data_field_new gwy_data_field_new_alike gwy_data_field_new_resampled gwy_data_field_normalize gwy_data_field_number_grains gwy_data_field_plane_level gwy_data_field_plane_rotate gwy_data_field_psdf gwy_data_field_racf gwy_data_field_renormalize gwy_data_field_resample gwy_data_field_resize gwy_data_field_rotate gwy_data_field_rpsdf gwy_data_field_rtoi gwy_data_field_rtoj gwy_data_field_set_column gwy_data_field_set_column_part gwy_data_field_set_row gwy_data_field_set_row_part gwy_data_field_set_si_unit_xy gwy_data_field_set_si_unit_z gwy_data_field_set_val gwy_data_field_set_xoffset gwy_data_field_set_xreal gwy_data_field_set_yoffset gwy_data_field_set_yreal gwy_data_field_shade gwy_data_field_slope_distribution gwy_data_field_subtract_fields gwy_data_field_subtract_legendre gwy_data_field_subtract_poly gwy_data_field_subtract_poly_max gwy_data_field_subtract_polynom gwy_data_field_sum_fields gwy_data_field_threshold gwy_data_field_unrotate_find_corrections gwy_data_field_xdwt gwy_data_field_ydwt gwy_data_item_get_type gwy_data_line_acf gwy_data_line_acf_uncertainty gwy_data_line_add gwy_data_line_cda gwy_data_line_cdh gwy_data_line_check_compatibility gwy_data_line_clear gwy_data_line_copy gwy_data_line_copy_units_to_data_field gwy_data_line_cumulate gwy_data_line_cumulate_uncertainty gwy_data_line_da gwy_data_line_data_changed gwy_data_line_dh gwy_data_line_distribution gwy_data_line_dwt gwy_data_line_fft gwy_data_line_fft_raw gwy_data_line_fill gwy_data_line_fit_polynom gwy_data_line_get_avg gwy_data_line_get_data gwy_data_line_get_data_const gwy_data_line_get_der gwy_data_line_get_dval gwy_data_line_get_dval_real gwy_data_line_get_length gwy_data_line_get_line_coeffs gwy_data_line_get_max gwy_data_line_get_median gwy_data_line_get_min gwy_data_line_get_modus gwy_data_line_get_offset gwy_data_line_get_real gwy_data_line_get_res gwy_data_line_get_rms gwy_data_line_get_si_unit_x gwy_data_line_get_si_unit_y gwy_data_line_get_sum gwy_data_line_get_tan_beta0 gwy_data_line_get_type gwy_data_line_get_val gwy_data_line_get_value_format_x gwy_data_line_get_value_format_y gwy_data_line_hhcf gwy_data_line_hhcf_uncertainty gwy_data_line_invert gwy_data_line_itor gwy_data_line_line_level gwy_data_line_multiply gwy_data_line_new gwy_data_line_new_alike gwy_data_line_new_resampled gwy_data_line_part_add gwy_data_line_part_clear gwy_data_line_part_extract gwy_data_line_part_fft gwy_data_line_part_fill gwy_data_line_part_fit_polynom gwy_data_line_part_get_avg gwy_data_line_part_get_max gwy_data_line_part_get_median gwy_data_line_part_get_min gwy_data_line_part_get_modus gwy_data_line_part_get_rms gwy_data_line_part_get_sum gwy_data_line_part_get_tan_beta0 gwy_data_line_part_multiply gwy_data_line_part_subtract_polynom gwy_data_line_part_threshold gwy_data_line_psdf gwy_data_line_resample gwy_data_line_resize gwy_data_line_rotate gwy_data_line_rtoi gwy_data_line_set_offset gwy_data_line_set_real gwy_data_line_set_si_unit_x gwy_data_line_set_si_unit_y gwy_data_line_set_val gwy_data_line_sqrt gwy_data_line_subtract_polynom gwy_data_line_threshold gwy_data_validate gwy_data_validation_failure_list_free gwy_data_view_coords_real_to_xy gwy_data_view_coords_xy_clamp gwy_data_view_coords_xy_cut_line gwy_data_view_coords_xy_to_real gwy_data_view_export_pixbuf gwy_data_view_get_alpha_layer gwy_data_view_get_base_layer gwy_data_view_get_data gwy_data_view_get_data_prefix gwy_data_view_get_hexcess gwy_data_view_get_metric gwy_data_view_get_pixbuf gwy_data_view_get_pixel_data_sizes gwy_data_view_get_real_data_offsets gwy_data_view_get_real_data_sizes gwy_data_view_get_real_zoom gwy_data_view_get_top_layer gwy_data_view_get_type gwy_data_view_get_vexcess gwy_data_view_get_xmeasure gwy_data_view_get_ymeasure gwy_data_view_get_zoom gwy_data_view_layer_get_type gwy_data_view_layer_plugged gwy_data_view_layer_realize gwy_data_view_layer_type_get_type gwy_data_view_layer_unplugged gwy_data_view_layer_unrealize gwy_data_view_layer_updated gwy_data_view_new gwy_data_view_set_alpha_layer gwy_data_view_set_base_layer gwy_data_view_set_data_prefix gwy_data_view_set_top_layer gwy_data_view_set_zoom gwy_data_watch_event_type_get_type gwy_data_window_class_get_tooltips gwy_data_window_class_set_tooltips gwy_data_window_get_color_axis gwy_data_window_get_data gwy_data_window_get_data_name gwy_data_window_get_data_view gwy_data_window_get_type gwy_data_window_get_ul_corner_widget gwy_data_window_new gwy_data_window_set_data_name gwy_data_window_set_ul_corner_widget gwy_data_window_set_zoom gwy_debug_gnu gwy_debug_objects_clear gwy_debug_objects_creation_detailed gwy_debug_objects_dump_to_file gwy_debug_objects_enable gwy_deserialize_object_hash gwy_draw_type_init gwy_dwt_denoise_type_get_enum gwy_dwt_denoise_type_get_type gwy_dwt_set_coefficients gwy_dwt_type_get_enum gwy_dwt_type_get_type gwy_entities gwy_entities_entity_to_utf8 gwy_entities_text_to_utf8 gwy_enum_combo_box_get_active gwy_enum_combo_box_new gwy_enum_combo_box_newl gwy_enum_combo_box_set_active gwy_enum_combo_box_update_int gwy_enum_freev gwy_enum_get_type gwy_enum_inventory_new gwy_enum_sanitize_value gwy_enum_to_string gwy_enuml_to_string gwy_expr_compile gwy_expr_define_constant gwy_expr_error_get_type gwy_expr_error_quark gwy_expr_evaluate gwy_expr_execute gwy_expr_free gwy_expr_get_expression gwy_expr_get_variables gwy_expr_new gwy_expr_resolve_variables gwy_expr_undefine_constant gwy_expr_vector_execute gwy_exterior_type_get_type gwy_fd_curve_preset_get_type gwy_fd_curve_presets gwy_fft_find_nice_size gwy_fft_simple gwy_fft_window gwy_fft_window_data_field gwy_file_abandon_contents gwy_file_detect gwy_file_detect_with_score gwy_file_func_exists gwy_file_func_foreach gwy_file_func_get_description gwy_file_func_get_is_detectable gwy_file_func_get_operations gwy_file_func_register gwy_file_func_run_detect gwy_file_func_run_export gwy_file_func_run_load gwy_file_func_run_save gwy_file_func_set_is_detectable gwy_file_get_contents gwy_file_get_data_info gwy_file_load gwy_file_load_with_func gwy_file_operation_type_get_type gwy_file_save gwy_file_save_with_func gwy_filename_ignore gwy_find_self_dir gwy_flags_to_string gwy_func_use_add gwy_func_use_free gwy_func_use_get gwy_func_use_get_filename gwy_func_use_load gwy_func_use_new gwy_func_use_save gwy_get_gboolean8 gwy_get_gdouble_be gwy_get_gdouble_le gwy_get_gfloat_be gwy_get_gfloat_le gwy_get_gint16_be gwy_get_gint16_le gwy_get_gint32_be gwy_get_gint32_le gwy_get_gint64_be gwy_get_gint64_le gwy_get_guint16_be gwy_get_guint16_le gwy_get_guint32_be gwy_get_guint32_le gwy_get_guint64_be gwy_get_guint64_le gwy_get_home_dir gwy_get_pascal_real_be gwy_get_pascal_real_le gwy_get_user_dir gwy_gl_material_get_ambient gwy_gl_material_get_diffuse gwy_gl_material_get_emission gwy_gl_material_get_shininess gwy_gl_material_get_specular gwy_gl_material_get_type gwy_gl_material_reset gwy_gl_material_sample_to_pixbuf gwy_gl_material_selection_get_active gwy_gl_material_selection_new gwy_gl_material_selection_set_active gwy_gl_material_set_ambient gwy_gl_material_set_diffuse gwy_gl_material_set_emission gwy_gl_material_set_shininess gwy_gl_material_set_specular gwy_gl_material_tree_view_new gwy_gl_material_tree_view_set_active gwy_gl_materials gwy_gl_materials_get_gl_material gwy_gradient_delete_point gwy_gradient_get_color gwy_gradient_get_npoints gwy_gradient_get_point gwy_gradient_get_points gwy_gradient_get_samples gwy_gradient_get_type gwy_gradient_insert_point gwy_gradient_insert_point_sorted gwy_gradient_reset gwy_gradient_sample gwy_gradient_sample_to_pixbuf gwy_gradient_selection_get_active gwy_gradient_selection_new gwy_gradient_selection_set_active gwy_gradient_set_from_samples gwy_gradient_set_point gwy_gradient_set_point_color gwy_gradient_set_points gwy_gradient_tree_view_new gwy_gradient_tree_view_set_active gwy_gradients gwy_gradients_get_gradient gwy_grain_quantity_get_type gwy_grain_quantity_get_units gwy_grain_quantity_needs_same_units gwy_grain_value_flags_get_type gwy_grain_value_get_expression gwy_grain_value_get_flags gwy_grain_value_get_group gwy_grain_value_get_power_xy gwy_grain_value_get_power_z gwy_grain_value_get_quantity gwy_grain_value_get_symbol gwy_grain_value_get_symbol_markup gwy_grain_value_get_type gwy_grain_value_group_get_type gwy_grain_value_group_name gwy_grain_value_set_expression gwy_grain_value_set_flags gwy_grain_value_set_power_xy gwy_grain_value_set_power_z gwy_grain_value_set_symbol gwy_grain_value_set_symbol_markup gwy_grain_value_store_column_get_type gwy_grain_value_tree_view_get_enabled gwy_grain_value_tree_view_get_expanded_groups gwy_grain_value_tree_view_n_enabled gwy_grain_value_tree_view_new gwy_grain_value_tree_view_select gwy_grain_value_tree_view_set_enabled gwy_grain_value_tree_view_set_expanded_groups gwy_grain_value_tree_view_set_same_units gwy_grain_values gwy_grain_values_calculate gwy_grain_values_get_builtin_grain_value gwy_grain_values_get_grain_value gwy_graph_area_draw_on_drawable gwy_graph_area_edit_curve gwy_graph_area_enable_user_input gwy_graph_area_export_vector gwy_graph_area_get_cursor gwy_graph_area_get_label gwy_graph_area_get_model gwy_graph_area_get_selection gwy_graph_area_get_status gwy_graph_area_get_type gwy_graph_area_get_x_grid_data gwy_graph_area_get_y_grid_data gwy_graph_area_new gwy_graph_area_set_model gwy_graph_area_set_status gwy_graph_area_set_x_grid_data gwy_graph_area_set_x_range gwy_graph_area_set_y_grid_data gwy_graph_area_set_y_range gwy_graph_corner_get_type gwy_graph_corner_new gwy_graph_curve_model_get_calibration_data gwy_graph_curve_model_get_ndata gwy_graph_curve_model_get_ranges gwy_graph_curve_model_get_type gwy_graph_curve_model_get_x_range gwy_graph_curve_model_get_xdata gwy_graph_curve_model_get_y_range gwy_graph_curve_model_get_ydata gwy_graph_curve_model_new gwy_graph_curve_model_new_alike gwy_graph_curve_model_set_calibration_data gwy_graph_curve_model_set_data gwy_graph_curve_model_set_data_from_dataline gwy_graph_curve_type_get_enum gwy_graph_curve_type_get_type gwy_graph_curves_get_model gwy_graph_curves_get_type gwy_graph_curves_new gwy_graph_curves_set_model gwy_graph_data_get_model gwy_graph_data_get_type gwy_graph_data_new gwy_graph_data_set_model gwy_graph_draw_curve gwy_graph_draw_grid gwy_graph_draw_line gwy_graph_draw_point gwy_graph_draw_selection_areas gwy_graph_draw_selection_lines gwy_graph_draw_selection_points gwy_graph_draw_selection_xareas gwy_graph_draw_selection_yareas gwy_graph_enable_user_input gwy_graph_export_pixmap gwy_graph_export_postscript gwy_graph_func_exists gwy_graph_func_foreach gwy_graph_func_get_menu_path gwy_graph_func_get_sensitivity_mask gwy_graph_func_get_stock_id gwy_graph_func_get_tooltip gwy_graph_func_register gwy_graph_func_run gwy_graph_get_area gwy_graph_get_axis gwy_graph_get_model gwy_graph_get_n_preset_colors gwy_graph_get_preset_color gwy_graph_get_status gwy_graph_get_type gwy_graph_grid_type_get_type gwy_graph_label_draw_on_drawable gwy_graph_label_enable_user_input gwy_graph_label_export_vector gwy_graph_label_get_model gwy_graph_label_get_type gwy_graph_label_new gwy_graph_label_position_get_type gwy_graph_label_set_model gwy_graph_model_add_curve gwy_graph_model_export_ascii gwy_graph_model_export_style_get_type gwy_graph_model_get_axis_label gwy_graph_model_get_curve gwy_graph_model_get_curve_by_description gwy_graph_model_get_curve_index gwy_graph_model_get_n_curves gwy_graph_model_get_ranges gwy_graph_model_get_type gwy_graph_model_get_x_range gwy_graph_model_get_y_range gwy_graph_model_new gwy_graph_model_new_alike gwy_graph_model_remove_all_curves gwy_graph_model_remove_curve gwy_graph_model_remove_curve_by_description gwy_graph_model_set_axis_label gwy_graph_model_set_units_from_data_line gwy_graph_model_x_data_can_be_logarithmed gwy_graph_model_y_data_can_be_logarithmed gwy_graph_new gwy_graph_point_type_get_type gwy_graph_set_axis_visible gwy_graph_set_model gwy_graph_set_status gwy_graph_status_type_get_type gwy_graph_window_class_get_tooltips gwy_graph_window_class_set_tooltips gwy_graph_window_get_graph gwy_graph_window_get_graph_curves gwy_graph_window_get_graph_data gwy_graph_window_get_type gwy_graph_window_new gwy_hash_table_to_list_cb gwy_hash_table_to_slist_cb gwy_hmarker_box_get_type gwy_hmarker_box_new gwy_hruler_get_type gwy_hruler_new gwy_hscale_style_get_type gwy_interpolation_get_dval gwy_interpolation_get_dval_of_equidists gwy_interpolation_get_support_size gwy_interpolation_has_interpolating_basis gwy_interpolation_interpolate_1d gwy_interpolation_interpolate_2d gwy_interpolation_resample_block_1d gwy_interpolation_resample_block_2d gwy_interpolation_resolve_coeffs_1d gwy_interpolation_resolve_coeffs_2d gwy_interpolation_shift_block_1d gwy_interpolation_type_get_enum gwy_interpolation_type_get_type gwy_inventory_can_make_copies gwy_inventory_delete_item gwy_inventory_delete_nth_item gwy_inventory_find gwy_inventory_foreach gwy_inventory_forget_order gwy_inventory_get_default_item gwy_inventory_get_default_item_name gwy_inventory_get_item gwy_inventory_get_item_or_default gwy_inventory_get_item_position gwy_inventory_get_item_type gwy_inventory_get_n_items gwy_inventory_get_nth_item gwy_inventory_get_type gwy_inventory_insert_item gwy_inventory_insert_nth_item gwy_inventory_is_const gwy_inventory_item_updated gwy_inventory_new gwy_inventory_new_filled gwy_inventory_new_from_array gwy_inventory_new_item gwy_inventory_nth_item_updated gwy_inventory_rename_item gwy_inventory_restore_order gwy_inventory_set_default_item_name gwy_inventory_store_get_column_by_name gwy_inventory_store_get_inventory gwy_inventory_store_get_iter gwy_inventory_store_get_type gwy_inventory_store_iter_is_valid gwy_inventory_store_new gwy_label_new_header gwy_layer_basic_get_gradient_key gwy_layer_basic_get_has_presentation gwy_layer_basic_get_min_max_key gwy_layer_basic_get_presentation_key gwy_layer_basic_get_range gwy_layer_basic_get_range_type gwy_layer_basic_get_range_type_key gwy_layer_basic_get_type gwy_layer_basic_new gwy_layer_basic_range_type_get_type gwy_layer_basic_set_gradient_key gwy_layer_basic_set_min_max_key gwy_layer_basic_set_presentation_key gwy_layer_basic_set_range_type_key gwy_layer_func_foreach gwy_layer_func_register gwy_layer_mask_get_color gwy_layer_mask_get_color_key gwy_layer_mask_get_type gwy_layer_mask_new gwy_layer_mask_set_color_key gwy_line_stat_quantity_get_type gwy_list_store_row_changed gwy_marker_box_add_marker gwy_marker_box_get_flipped gwy_marker_box_get_highlight_selected gwy_marker_box_get_marker_position gwy_marker_box_get_markers gwy_marker_box_get_nmarkers gwy_marker_box_get_selected_marker gwy_marker_box_get_type gwy_marker_box_get_validator gwy_marker_box_remove_marker gwy_marker_box_set_flipped gwy_marker_box_set_highlight_selected gwy_marker_box_set_marker_position gwy_marker_box_set_markers gwy_marker_box_set_selected_marker gwy_marker_box_set_validator gwy_marker_operation_type_get_type gwy_mask_color_selector_run gwy_masking_type_get_enum gwy_masking_type_get_type gwy_math_choleski_decompose gwy_math_choleski_solve gwy_math_curvature gwy_math_fallback_acosh gwy_math_fallback_asinh gwy_math_fallback_atanh gwy_math_fallback_cbrt gwy_math_fallback_hypot gwy_math_fallback_isinf gwy_math_fallback_isnan gwy_math_fallback_pow10 gwy_math_find_nearest_line gwy_math_find_nearest_point gwy_math_fit_polynom gwy_math_humanize_numbers gwy_math_is_in_polygon gwy_math_lin_solve gwy_math_lin_solve_rewrite gwy_math_median gwy_math_median_uncertainty gwy_math_nlfit_derive gwy_math_nlfit_fit gwy_math_nlfit_fit_full gwy_math_nlfit_free gwy_math_nlfit_get_correlations gwy_math_nlfit_get_dispersion gwy_math_nlfit_get_max_iterations gwy_math_nlfit_get_sigma gwy_math_nlfit_new gwy_math_nlfit_set_max_iterations gwy_math_nlfit_succeeded gwy_math_sort gwy_math_tridiag_solve_rewrite gwy_md5_get_digest gwy_memcpy_byte_swap gwy_memmem gwy_menu_gl_material gwy_menu_gradient gwy_menu_sens_flags_get_type gwy_merge_type_get_enum gwy_merge_type_get_type gwy_module_browser gwy_module_error_get_type gwy_module_error_quark gwy_module_file_error_get_type gwy_module_file_error_quark gwy_module_foreach gwy_module_get_filename gwy_module_get_functions gwy_module_lookup gwy_module_register_module gwy_module_register_modules gwy_nlfit_preset_fit gwy_nlfit_preset_get_formula gwy_nlfit_preset_get_nparams gwy_nlfit_preset_get_param_name gwy_nlfit_preset_get_param_units gwy_nlfit_preset_get_type gwy_nlfit_preset_get_value gwy_nlfit_preset_guess gwy_nlfit_presets gwy_null_store_get_model gwy_null_store_get_n_rows gwy_null_store_get_type gwy_null_store_iter_is_valid gwy_null_store_new gwy_null_store_row_changed gwy_null_store_set_model gwy_null_store_set_n_rows gwy_object_set_or_reset gwy_orientation_get_enum gwy_orientation_get_type gwy_pixbuf_draw_data_field gwy_pixbuf_draw_data_field_adaptive gwy_pixbuf_draw_data_field_as_mask gwy_pixbuf_draw_data_field_with_range gwy_pixmap_layer_get_data_key gwy_pixmap_layer_get_type gwy_pixmap_layer_make_pixbuf gwy_pixmap_layer_paint gwy_pixmap_layer_set_data_key gwy_pixmap_layer_wants_repaint gwy_plain_tool_add_clear_button gwy_plain_tool_changed_get_type gwy_plain_tool_check_layer_type gwy_plain_tool_connect_selection gwy_plain_tool_enable_object_deletion gwy_plain_tool_ensure_layer gwy_plain_tool_get_type gwy_plain_tool_get_z_average gwy_plain_tool_set_selection_key gwy_plane_fit_quantity_get_type gwy_plane_symmetry_get_enum gwy_plane_symmetry_get_type gwy_process_func_exists gwy_process_func_foreach gwy_process_func_get_menu_path gwy_process_func_get_run_types gwy_process_func_get_sensitivity_mask gwy_process_func_get_stock_id gwy_process_func_get_tooltip gwy_process_func_register gwy_process_func_run gwy_process_type_init gwy_radio_button_get_value gwy_radio_button_set_value gwy_radio_buttons_attach_to_table gwy_radio_buttons_create gwy_radio_buttons_createl gwy_radio_buttons_find gwy_radio_buttons_get_current gwy_radio_buttons_set_current gwy_raw_data_size gwy_raw_data_type_get_type gwy_rect_selection_labels_fill gwy_rect_selection_labels_get_table gwy_rect_selection_labels_new gwy_rect_selection_labels_select gwy_resource_build_filename gwy_resource_class_get_inventory gwy_resource_class_get_item_type gwy_resource_class_get_name gwy_resource_class_load gwy_resource_class_mkdir gwy_resource_classes_finalize gwy_resource_data_changed gwy_resource_data_saved gwy_resource_dump gwy_resource_editor_class_setup gwy_resource_editor_commit gwy_resource_editor_get_edited gwy_resource_editor_get_type gwy_resource_editor_queue_commit gwy_resource_editor_setup gwy_resource_get_is_modifiable gwy_resource_get_is_preferred gwy_resource_get_name gwy_resource_get_type gwy_resource_is_used gwy_resource_parse gwy_resource_release gwy_resource_set_is_preferred gwy_resource_tree_view_set_active gwy_resource_use gwy_rgba_copy gwy_rgba_free gwy_rgba_from_gdk_color gwy_rgba_from_gdk_color_and_alpha gwy_rgba_get_from_container gwy_rgba_get_type gwy_rgba_interpolate gwy_rgba_remove_from_container gwy_rgba_set_gdk_gc_bg gwy_rgba_set_gdk_gc_fg gwy_rgba_store_to_container gwy_rgba_to_gdk_alpha gwy_rgba_to_gdk_color gwy_ruler_draw_pos gwy_ruler_get_range gwy_ruler_get_si_unit gwy_ruler_get_type gwy_ruler_get_units_placement gwy_ruler_set_range gwy_ruler_set_si_unit gwy_ruler_set_units_placement gwy_run_type_get_type gwy_save_auxiliary_data gwy_save_auxiliary_with_callback gwy_sci_text_get_entry gwy_sci_text_get_has_preview gwy_sci_text_get_text gwy_sci_text_get_type gwy_sci_text_new gwy_sci_text_set_has_preview gwy_sci_text_set_text gwy_selection_changed gwy_selection_clear gwy_selection_crop gwy_selection_delete_object gwy_selection_filter gwy_selection_finished gwy_selection_get_data gwy_selection_get_max_objects gwy_selection_get_object gwy_selection_get_object_size gwy_selection_get_type gwy_selection_graph_1darea_get_type gwy_selection_graph_1darea_new gwy_selection_graph_area_get_type gwy_selection_graph_area_new gwy_selection_graph_line_get_type gwy_selection_graph_line_new gwy_selection_graph_point_get_type gwy_selection_graph_point_new gwy_selection_graph_zoom_get_type gwy_selection_graph_zoom_new gwy_selection_is_full gwy_selection_set_data gwy_selection_set_max_objects gwy_selection_set_object gwy_sensitivity_group_add_widget gwy_sensitivity_group_get_state gwy_sensitivity_group_get_type gwy_sensitivity_group_get_widget_mask gwy_sensitivity_group_new gwy_sensitivity_group_release_widget gwy_sensitivity_group_set_state gwy_sensitivity_group_set_widget_mask gwy_serializable_clone gwy_serializable_deserialize gwy_serializable_duplicate gwy_serializable_get_size gwy_serializable_get_type gwy_serializable_serialize gwy_serialize_check_string gwy_serialize_get_items_size gwy_serialize_get_struct_size gwy_serialize_object_items gwy_serialize_pack_object_struct gwy_serialize_unpack_object_struct gwy_set_data_preview_size gwy_sgettext gwy_shader_get_gradient gwy_shader_get_phi gwy_shader_get_theta gwy_shader_get_type gwy_shader_get_update_policy gwy_shader_new gwy_shader_set_angle gwy_shader_set_gradient gwy_shader_set_phi gwy_shader_set_theta gwy_shader_set_update_policy gwy_si_unit_divide gwy_si_unit_equal gwy_si_unit_format_style_get_type gwy_si_unit_get_format gwy_si_unit_get_format_for_power10 gwy_si_unit_get_format_with_digits gwy_si_unit_get_format_with_resolution gwy_si_unit_get_string gwy_si_unit_get_type gwy_si_unit_multiply gwy_si_unit_new gwy_si_unit_new_parse gwy_si_unit_nth_root gwy_si_unit_power gwy_si_unit_power_multiply gwy_si_unit_set_from_string gwy_si_unit_set_from_string_parse gwy_si_unit_value_format_free gwy_si_unit_value_format_set_units gwy_spectra_add_spectrum gwy_spectra_clear gwy_spectra_data_changed gwy_spectra_find_nearest gwy_spectra_get_n_spectra gwy_spectra_get_si_unit_xy gwy_spectra_get_spectrum gwy_spectra_get_spectrum_selected gwy_spectra_get_title gwy_spectra_get_type gwy_spectra_itoxy gwy_spectra_new gwy_spectra_new_alike gwy_spectra_remove_spectrum gwy_spectra_set_si_unit_xy gwy_spectra_set_spectrum gwy_spectra_set_spectrum_selected gwy_spectra_set_title gwy_spectra_setpos gwy_spectra_xytoi gwy_statusbar_get_type gwy_statusbar_new gwy_statusbar_set_markup gwy_stock_like_button_new gwy_stock_register_stock_items gwy_str_next_line gwy_stramong gwy_strdiffpos gwy_string_list_append gwy_string_list_get gwy_string_list_get_length gwy_string_list_get_type gwy_string_list_new gwy_string_to_enum gwy_string_to_flags gwy_strisident gwy_strkill gwy_strreplace gwy_table_attach_hscale gwy_table_attach_row gwy_table_attach_spinbutton gwy_table_get_child_widget gwy_table_hscale_set_sensitive gwy_text_header_context_get_lineno gwy_text_header_context_get_section gwy_text_header_error_get_type gwy_text_header_error_quark gwy_text_header_parse gwy_ticks_style_get_type gwy_tip_cmap gwy_tip_dilation gwy_tip_erosion gwy_tip_estimate_full gwy_tip_estimate_partial gwy_tip_model_get_npresets gwy_tip_model_get_preset gwy_tip_model_get_preset_by_name gwy_tip_model_get_preset_group_name gwy_tip_model_get_preset_id gwy_tip_model_get_preset_nparams gwy_tip_model_get_preset_tip_name gwy_tip_type_get_type gwy_tool_add_hide_button gwy_tool_class_get_stock_id gwy_tool_class_get_title gwy_tool_class_get_tooltip gwy_tool_data_switched gwy_tool_func_foreach gwy_tool_func_register gwy_tool_get_type gwy_tool_hide gwy_tool_is_visible gwy_tool_like_button_new gwy_tool_show gwy_tool_spectra_switched gwy_tool_switch_event_get_type gwy_transform_direction_get_type gwy_triangulation_boundary gwy_triangulation_data_free gwy_triangulation_delaunay gwy_triangulation_get_type gwy_triangulation_interpolate gwy_triangulation_new gwy_triangulation_triangulate gwy_triangulation_voronoi gwy_type_init gwy_undo_checkpoint gwy_undo_checkpointv gwy_undo_container_get_modified gwy_undo_container_has_redo gwy_undo_container_has_undo gwy_undo_container_remove gwy_undo_container_set_unmodified gwy_undo_get_enabled gwy_undo_qcheckpoint gwy_undo_qcheckpointv gwy_undo_redo_container gwy_undo_set_enabled gwy_undo_undo_container gwy_units_placement_get_type gwy_vector_layer_button_press gwy_vector_layer_button_release gwy_vector_layer_class_get_selection_type gwy_vector_layer_draw gwy_vector_layer_ensure_selection gwy_vector_layer_get_editable gwy_vector_layer_get_focus gwy_vector_layer_get_selection_key gwy_vector_layer_get_type gwy_vector_layer_key_press gwy_vector_layer_key_release gwy_vector_layer_motion_notify gwy_vector_layer_object_chosen gwy_vector_layer_set_editable gwy_vector_layer_set_focus gwy_vector_layer_set_selection_key gwy_version_major gwy_version_minor gwy_version_string gwy_visibility_reset_type_get_type gwy_vruler_get_type gwy_vruler_new gwy_watershed_state_type_get_type gwy_widget_get_activate_on_unfocus gwy_widget_set_activate_on_unfocus gwy_widget_sync_sensitivity gwy_widgets_get_gl_config gwy_widgets_gl_init gwy_widgets_type_init gwy_windowing_type_get_enum gwy_windowing_type_get_type syn keyword gwyddionTypedef GdkGLConfig syn keyword gwyddionConstant GWY_2DCWT_GAUSS GWY_2DCWT_HAT GWY_3D_MOVEMENT_DEFORMATION GWY_3D_MOVEMENT_LIGHT GWY_3D_MOVEMENT_NONE GWY_3D_MOVEMENT_ROTATION GWY_3D_MOVEMENT_SCALE GWY_3D_PROJECTION_ORTHOGRAPHIC GWY_3D_PROJECTION_PERSPECTIVE GWY_3D_VIEW_LABEL_MAX GWY_3D_VIEW_LABEL_MIN GWY_3D_VIEW_LABEL_X GWY_3D_VIEW_LABEL_Y GWY_3D_VIEW_NLABELS GWY_3D_VISUALIZATION_GRADIENT GWY_3D_VISUALIZATION_LIGHTING GWY_3D_VISUALIZATION_OVERLAY GWY_APP_CONTAINER GWY_APP_DATA_FIELD GWY_APP_DATA_FIELD_ID GWY_APP_DATA_FIELD_KEY GWY_APP_DATA_VIEW GWY_APP_GRAPH GWY_APP_GRAPH_MODEL GWY_APP_GRAPH_MODEL_ID GWY_APP_GRAPH_MODEL_KEY GWY_APP_MASK_FIELD GWY_APP_MASK_FIELD_KEY GWY_APP_SETTINGS_ERROR_CFGDIR GWY_APP_SETTINGS_ERROR_CORRUPT GWY_APP_SETTINGS_ERROR_FILE GWY_APP_SHOW_FIELD GWY_APP_SHOW_FIELD_KEY GWY_APP_SPECTRA GWY_APP_SPECTRA_ID GWY_APP_SPECTRA_KEY GWY_AXIS_SCALE_FORMAT_AUTO GWY_AXIS_SCALE_FORMAT_EXP GWY_AXIS_SCALE_FORMAT_INT GWY_BYTE_ORDER_BIG_ENDIAN GWY_BYTE_ORDER_LITTLE_ENDIAN GWY_BYTE_ORDER_NATIVE GWY_COMPUTATION_STATE_FINISHED GWY_COMPUTATION_STATE_INIT GWY_COMPUTATION_STATE_ITERATE GWY_CORRELATION_FFT GWY_CORRELATION_NORMAL GWY_CORRELATION_POC GWY_CURVE_CHANNEL_BLUE GWY_CURVE_CHANNEL_GREEN GWY_CURVE_CHANNEL_RED GWY_CURVE_TYPE_FREE GWY_CURVE_TYPE_LINEAR GWY_CURVE_TYPE_SPLINE GWY_DATA_COMPATIBILITY_ALL GWY_DATA_COMPATIBILITY_LATERAL GWY_DATA_COMPATIBILITY_MEASURE GWY_DATA_COMPATIBILITY_REAL GWY_DATA_COMPATIBILITY_RES GWY_DATA_COMPATIBILITY_VALUE GWY_DATA_ERROR_ITEM_TYPE GWY_DATA_ERROR_KEY_CHARACTERS GWY_DATA_ERROR_KEY_FORMAT GWY_DATA_ERROR_KEY_ID GWY_DATA_ERROR_KEY_UNKNOWN GWY_DATA_ERROR_NON_UTF8_STRING GWY_DATA_ERROR_REF_COUNT GWY_DATA_ERROR_STRAY_SECONDARY_DATA GWY_DATA_FIELD_CACHE_ARE GWY_DATA_FIELD_CACHE_ARF GWY_DATA_FIELD_CACHE_ART GWY_DATA_FIELD_CACHE_MAX GWY_DATA_FIELD_CACHE_MED GWY_DATA_FIELD_CACHE_MIN GWY_DATA_FIELD_CACHE_RMS GWY_DATA_FIELD_CACHE_SIZE GWY_DATA_FIELD_CACHE_SUM GWY_DATA_ITEM_CALDATA GWY_DATA_ITEM_GRADIENT GWY_DATA_ITEM_MASK_COLOR GWY_DATA_ITEM_META GWY_DATA_ITEM_PALETTE GWY_DATA_ITEM_RANGE GWY_DATA_ITEM_RANGE_TYPE GWY_DATA_ITEM_REAL_SQUARE GWY_DATA_ITEM_SELECTIONS GWY_DATA_ITEM_TITLE GWY_DATA_VALIDATE_ALL GWY_DATA_VALIDATE_CORRECT GWY_DATA_VALIDATE_NO_REPORT GWY_DATA_VALIDATE_REF_COUNT GWY_DATA_VALIDATE_UNKNOWN GWY_DATA_VIEW_LAYER_ALPHA GWY_DATA_VIEW_LAYER_BASE GWY_DATA_VIEW_LAYER_TOP GWY_DATA_WATCH_EVENT_ADDED GWY_DATA_WATCH_EVENT_CHANGED GWY_DATA_WATCH_EVENT_REMOVED GWY_DEBUG_OBJECTS_DUMP_ONLY_ALIVE GWY_DWT_DAUB12 GWY_DWT_DAUB20 GWY_DWT_DAUB4 GWY_DWT_DAUB6 GWY_DWT_DAUB8 GWY_DWT_DENOISE_SCALE_ADAPTIVE GWY_DWT_DENOISE_SPACE_ADAPTIVE GWY_DWT_DENOISE_UNIVERSAL GWY_DWT_HAAR GWY_EXPR_ERROR_CLOSING_PARENTHESIS GWY_EXPR_ERROR_CONSTANT_NAME GWY_EXPR_ERROR_EMPTY GWY_EXPR_ERROR_EMPTY_PARENTHESES GWY_EXPR_ERROR_GARBAGE GWY_EXPR_ERROR_INVALID_ARGUMENT GWY_EXPR_ERROR_INVALID_TOKEN GWY_EXPR_ERROR_MISSING_ARGUMENT GWY_EXPR_ERROR_NOT_EXECUTABLE GWY_EXPR_ERROR_OPENING_PARENTHESIS GWY_EXPR_ERROR_STRAY_COMMA GWY_EXPR_ERROR_UNRESOLVED_IDENTIFIERS GWY_EXTERIOR_BORDER_EXTEND GWY_EXTERIOR_FIXED_VALUE GWY_EXTERIOR_MIRROR_EXTEND GWY_EXTERIOR_PERIODIC GWY_EXTERIOR_UNDEFINED GWY_FILE_OPERATION_DETECT GWY_FILE_OPERATION_EXPORT GWY_FILE_OPERATION_LOAD GWY_FILE_OPERATION_MASK GWY_FILE_OPERATION_SAVE GWY_GRAIN_VALUE_BOUNDARY_MAXIMUM GWY_GRAIN_VALUE_BOUNDARY_MINIMUM GWY_GRAIN_VALUE_CENTER_X GWY_GRAIN_VALUE_CENTER_Y GWY_GRAIN_VALUE_CURVATURE1 GWY_GRAIN_VALUE_CURVATURE2 GWY_GRAIN_VALUE_CURVATURE_ANGLE1 GWY_GRAIN_VALUE_CURVATURE_ANGLE2 GWY_GRAIN_VALUE_CURVATURE_CENTER_X GWY_GRAIN_VALUE_CURVATURE_CENTER_Y GWY_GRAIN_VALUE_CURVATURE_CENTER_Z GWY_GRAIN_VALUE_EQUIV_DISC_RADIUS GWY_GRAIN_VALUE_EQUIV_SQUARE_SIDE GWY_GRAIN_VALUE_FLAT_BOUNDARY_LENGTH GWY_GRAIN_VALUE_GROUP_AREA GWY_GRAIN_VALUE_GROUP_BOUNDARY GWY_GRAIN_VALUE_GROUP_CURVATURE GWY_GRAIN_VALUE_GROUP_ID GWY_GRAIN_VALUE_GROUP_POSITION GWY_GRAIN_VALUE_GROUP_SLOPE GWY_GRAIN_VALUE_GROUP_USER GWY_GRAIN_VALUE_GROUP_VALUE GWY_GRAIN_VALUE_GROUP_VOLUME GWY_GRAIN_VALUE_HALF_HEIGHT_AREA GWY_GRAIN_VALUE_IS_ANGLE GWY_GRAIN_VALUE_MAXIMUM GWY_GRAIN_VALUE_MAXIMUM_BOUND_ANGLE GWY_GRAIN_VALUE_MAXIMUM_BOUND_SIZE GWY_GRAIN_VALUE_MEAN GWY_GRAIN_VALUE_MEDIAN GWY_GRAIN_VALUE_MINIMUM GWY_GRAIN_VALUE_MINIMUM_BOUND_ANGLE GWY_GRAIN_VALUE_MINIMUM_BOUND_SIZE GWY_GRAIN_VALUE_PROJECTED_AREA GWY_GRAIN_VALUE_SAME_UNITS GWY_GRAIN_VALUE_SLOPE_PHI GWY_GRAIN_VALUE_SLOPE_THETA GWY_GRAIN_VALUE_STORE_COLUMN_ENABLED GWY_GRAIN_VALUE_STORE_COLUMN_GROUP GWY_GRAIN_VALUE_STORE_COLUMN_ITEM GWY_GRAIN_VALUE_SURFACE_AREA GWY_GRAIN_VALUE_VOLUME_0 GWY_GRAIN_VALUE_VOLUME_LAPLACE GWY_GRAIN_VALUE_VOLUME_MIN GWY_GRAPH_CURVE_HIDDEN GWY_GRAPH_CURVE_LINE GWY_GRAPH_CURVE_LINE_POINTS GWY_GRAPH_CURVE_POINTS GWY_GRAPH_GRID_AUTO GWY_GRAPH_GRID_NONE GWY_GRAPH_GRID_USER GWY_GRAPH_LABEL_NORTHEAST GWY_GRAPH_LABEL_NORTHWEST GWY_GRAPH_LABEL_SOUTHEAST GWY_GRAPH_LABEL_SOUTHWEST GWY_GRAPH_LABEL_USER GWY_GRAPH_MODEL_EXPORT_ASCII_CSV GWY_GRAPH_MODEL_EXPORT_ASCII_GNUPLOT GWY_GRAPH_MODEL_EXPORT_ASCII_ORIGIN GWY_GRAPH_MODEL_EXPORT_ASCII_PLAIN GWY_GRAPH_MODEL_EXPORT_ASCII_POSIX GWY_GRAPH_POINT_ASTERISK GWY_GRAPH_POINT_CIRCLE GWY_GRAPH_POINT_CROSS GWY_GRAPH_POINT_DIAMOND GWY_GRAPH_POINT_DISC GWY_GRAPH_POINT_FILLED_CIRCLE GWY_GRAPH_POINT_FILLED_DIAMOND GWY_GRAPH_POINT_FILLED_SQUARE GWY_GRAPH_POINT_FILLED_TRIANGLE_DOWN GWY_GRAPH_POINT_FILLED_TRIANGLE_LEFT GWY_GRAPH_POINT_FILLED_TRIANGLE_RIGHT GWY_GRAPH_POINT_FILLED_TRIANGLE_UP GWY_GRAPH_POINT_SQUARE GWY_GRAPH_POINT_STAR GWY_GRAPH_POINT_TIMES GWY_GRAPH_POINT_TRIANGLE_DOWN GWY_GRAPH_POINT_TRIANGLE_LEFT GWY_GRAPH_POINT_TRIANGLE_RIGHT GWY_GRAPH_POINT_TRIANGLE_UP GWY_GRAPH_STATUS_PLAIN GWY_GRAPH_STATUS_POINTS GWY_GRAPH_STATUS_XLINES GWY_GRAPH_STATUS_XSEL GWY_GRAPH_STATUS_YLINES GWY_GRAPH_STATUS_YSEL GWY_GRAPH_STATUS_ZOOM GWY_HSCALE_CHECK GWY_HSCALE_DEFAULT GWY_HSCALE_LOG GWY_HSCALE_NO_SCALE GWY_HSCALE_SQRT GWY_HSCALE_WIDGET GWY_HSCALE_WIDGET_NO_EXPAND GWY_INTERPOLATION_BILINEAR GWY_INTERPOLATION_BSPLINE GWY_INTERPOLATION_KEY GWY_INTERPOLATION_LINEAR GWY_INTERPOLATION_NNA GWY_INTERPOLATION_NONE GWY_INTERPOLATION_OMOMS GWY_INTERPOLATION_ROUND GWY_INTERPOLATION_SCHAUM GWY_LAYER_BASIC_RANGE_ADAPT GWY_LAYER_BASIC_RANGE_AUTO GWY_LAYER_BASIC_RANGE_FIXED GWY_LAYER_BASIC_RANGE_FULL GWY_LINE_STAT_KURTOSIS GWY_LINE_STAT_LENGTH GWY_LINE_STAT_MAXIMUM GWY_LINE_STAT_MEAN GWY_LINE_STAT_MEDIAN GWY_LINE_STAT_MINIMUM GWY_LINE_STAT_RA GWY_LINE_STAT_RMS GWY_LINE_STAT_RT GWY_LINE_STAT_RZ GWY_LINE_STAT_SKEW GWY_LINE_STAT_SLOPE GWY_LINE_STAT_TAN_BETA0 GWY_MARKER_OPERATION_ADD GWY_MARKER_OPERATION_MOVE GWY_MARKER_OPERATION_REMOVE GWY_MASK_EXCLUDE GWY_MASK_IGNORE GWY_MASK_INCLUDE GWY_MENU_FLAG_3D GWY_MENU_FLAG_DATA GWY_MENU_FLAG_DATA_MASK GWY_MENU_FLAG_DATA_SHOW GWY_MENU_FLAG_FILE GWY_MENU_FLAG_GRAPH GWY_MENU_FLAG_LAST_GRAPH GWY_MENU_FLAG_LAST_PROC GWY_MENU_FLAG_MASK GWY_MENU_FLAG_REDO GWY_MENU_FLAG_UNDO GWY_MERGE_INTERSECTION GWY_MERGE_UNION GWY_MODULE_ERROR_ABI GWY_MODULE_ERROR_DUPLICATE GWY_MODULE_ERROR_INFO GWY_MODULE_ERROR_NAME GWY_MODULE_ERROR_OPEN GWY_MODULE_ERROR_QUERY GWY_MODULE_ERROR_REGISTER GWY_MODULE_FILE_ERROR_CANCELLED GWY_MODULE_FILE_ERROR_DATA GWY_MODULE_FILE_ERROR_INTERACTIVE GWY_MODULE_FILE_ERROR_IO GWY_MODULE_FILE_ERROR_SPECIFIC GWY_MODULE_FILE_ERROR_UNIMPLEMENTED GWY_ORIENTATION_HORIZONTAL GWY_ORIENTATION_VERTICAL GWY_PLAIN_TOOL_CHANGED_DATA GWY_PLAIN_TOOL_CHANGED_MASK GWY_PLAIN_TOOL_CHANGED_SELECTION GWY_PLAIN_TOOL_CHANGED_SHOW GWY_PLAIN_TOOL_FINISHED_SELECTION GWY_PLANE_FIT_A GWY_PLANE_FIT_ANGLE GWY_PLANE_FIT_BX GWY_PLANE_FIT_BY GWY_PLANE_FIT_S0 GWY_PLANE_FIT_S0_REDUCED GWY_PLANE_FIT_SLOPE GWY_RAW_DATA_DOUBLE GWY_RAW_DATA_FLOAT GWY_RAW_DATA_HALF GWY_RAW_DATA_REAL GWY_RAW_DATA_SINT16 GWY_RAW_DATA_SINT32 GWY_RAW_DATA_SINT64 GWY_RAW_DATA_SINT8 GWY_RAW_DATA_UINT16 GWY_RAW_DATA_UINT32 GWY_RAW_DATA_UINT64 GWY_RAW_DATA_UINT8 GWY_RENDERING_TARGET_PIXMAP_IMAGE GWY_RENDERING_TARGET_SCREEN GWY_RUN_IMMEDIATE GWY_RUN_INTERACTIVE GWY_RUN_MASK GWY_RUN_NONE GWY_RUN_NONINTERACTIVE GWY_SI_UNIT_FORMAT_MARKUP GWY_SI_UNIT_FORMAT_NONE GWY_SI_UNIT_FORMAT_PLAIN GWY_SI_UNIT_FORMAT_TEX GWY_SI_UNIT_FORMAT_VFMARKUP GWY_SYMMETRY_AUTO GWY_SYMMETRY_HEXAGONAL GWY_SYMMETRY_LAST GWY_SYMMETRY_PARALLEL GWY_SYMMETRY_RHOMBIC GWY_SYMMETRY_SQUARE GWY_SYMMETRY_TRIANGULAR GWY_TEXT_HEADER_ERROR_GARBAGE GWY_TEXT_HEADER_ERROR_KEY GWY_TEXT_HEADER_ERROR_PREFIX GWY_TEXT_HEADER_ERROR_SECTION_END GWY_TEXT_HEADER_ERROR_SECTION_NAME GWY_TEXT_HEADER_ERROR_SECTION_START GWY_TEXT_HEADER_ERROR_TERMINATOR GWY_TEXT_HEADER_ERROR_VALUE GWY_TICKS_STYLE_AUTO GWY_TICKS_STYLE_CENTER GWY_TICKS_STYLE_NONE GWY_TIP_CONTACT GWY_TIP_DELTA GWY_TIP_NONCONTACT GWY_TIP_PYRAMIDE GWY_TOOL_RESPONSE_CLEAR GWY_TOOL_RESPONSE_UPDATE GWY_TRANSFORM_DIRECTION_BACKWARD GWY_TRANSFORM_DIRECTION_FORWARD GWY_UNITS_PLACEMENT_AT_ZERO GWY_UNITS_PLACEMENT_NONE GWY_VISIBILITY_RESET_DEFAULT GWY_VISIBILITY_RESET_HIDE_ALL GWY_VISIBILITY_RESET_RESTORE GWY_VISIBILITY_RESET_SHOW_ALL GWY_WATERSHED_STATE_FINISHED GWY_WATERSHED_STATE_INIT GWY_WATERSHED_STATE_LOCATE GWY_WATERSHED_STATE_MARK GWY_WATERSHED_STATE_MIN GWY_WATERSHED_STATE_WATERSHED GWY_WINDOWING_BLACKMANN GWY_WINDOWING_FLAT_TOP GWY_WINDOWING_HAMMING GWY_WINDOWING_HANN GWY_WINDOWING_KAISER25 GWY_WINDOWING_LANCZOS GWY_WINDOWING_NONE GWY_WINDOWING_NUTTALL GWY_WINDOWING_RECT GWY_WINDOWING_WELCH syn keyword gwyddionStruct Gwy3DLabel Gwy3DLabelClass Gwy3DSetup Gwy3DSetupClass Gwy3DView Gwy3DViewClass Gwy3DWindow Gwy3DWindowClass GwyAxis GwyAxisClass GwyAxisParams GwyCDLine GwyCDLineBuiltin GwyCDLineClass GwyCalData GwyCalDataClass GwyCalibration GwyCalibrationClass GwyChannelData GwyColorAxis GwyColorAxisClass GwyColorButton GwyColorButtonClass GwyComputationState GwyContainer GwyContainerClass GwyCurve GwyCurveCalibrationData GwyCurveClass GwyDataChooser GwyDataChooserClass GwyDataField GwyDataFieldClass GwyDataLine GwyDataLineClass GwyDataValidationFailure GwyDataView GwyDataViewClass GwyDataViewLayer GwyDataViewLayerClass GwyDataWindow GwyDataWindowClass GwyEnum GwyExpr GwyFDCurvePreset GwyFDCurvePresetBuiltin GwyFDCurvePresetClass GwyFileDetectInfo GwyFunctionUse GwyGLMaterial GwyGLMaterialClass GwyGradient GwyGradientClass GwyGradientPoint GwyGrainValue GwyGrainValueClass GwyGrainValueData GwyGraph GwyGraphActiveAreaSpecs GwyGraphArea GwyGraphAreaClass GwyGraphClass GwyGraphCorner GwyGraphCornerClass GwyGraphCurveModel GwyGraphCurveModelClass GwyGraphCurves GwyGraphCurvesClass GwyGraphData GwyGraphDataClass GwyGraphLabel GwyGraphLabelClass GwyGraphModel GwyGraphModelClass GwyGraphWindow GwyGraphWindowClass GwyHMarkerBox GwyHMarkerBoxClass GwyHRuler GwyHRulerClass GwyInventory GwyInventoryClass GwyInventoryItemType GwyInventoryStore GwyInventoryStoreClass GwyLayerBasic GwyLayerBasicClass GwyLayerMask GwyLayerMaskClass GwyMarkerBox GwyMarkerBoxClass GwyModuleInfo GwyNLFitPreset GwyNLFitPresetBuiltin GwyNLFitPresetClass GwyNLFitter GwyNullStore GwyNullStoreClass GwyPixmapLayer GwyPixmapLayerClass GwyPlainTool GwyPlainToolClass GwyPoint GwyRGBA GwyRectSelectionLabels GwyResource GwyResourceClass GwyResourceEditor GwyResourceEditorClass GwyRuler GwyRulerClass GwySIUnit GwySIUnitClass GwySIValueFormat GwySciText GwySciTextClass GwySelection GwySelectionClass GwySelectionGraph1DArea GwySelectionGraph1DAreaClass GwySelectionGraphArea GwySelectionGraphAreaClass GwySelectionGraphLine GwySelectionGraphLineClass GwySelectionGraphPoint GwySelectionGraphPointClass GwySelectionGraphZoom GwySelectionGraphZoomClass GwySensitivityGroup GwySensitivityGroupClass GwySerializable GwySerializableIface GwySerializeItem GwySerializeSpec GwyShader GwyShaderClass GwySpectra GwySpectraClass GwyStatusbar GwyStatusbarClass GwyStringList GwyStringListClass GwyTextEntity GwyTextHeaderContext GwyTextHeaderParser GwyTipModelPreset GwyTool GwyToolClass GwyTriangulation GwyTriangulationClass GwyTriangulationData GwyTriangulationPointXY GwyTriangulationPointXYZ GwyVRuler GwyVRulerClass GwyVectorLayer GwyVectorLayerClass @@ -19,7 +19,7 @@ syn keyword gwyddionMacro GWY_3D_LABEL GWY_3D_LABEL_CLASS GWY_3D_LABEL_GET_CLASS GWY_3D_SETUP GWY_3D_SETUP_CLASS GWY_3D_SETUP_GET_CLASS GWY_3D_VIEW GWY_3D_VIEW_CLASS GWY_3D_VIEW_GET_CLASS GWY_3D_WINDOW GWY_3D_WINDOW_CLASS GWY_3D_WINDOW_GET_CLASS GWY_AXIS GWY_AXIS_CLASS GWY_AXIS_GET_CLASS GWY_CALDATA GWY_CALDATA_CLASS GWY_CALDATA_GET_CLASS GWY_CALIBRATION GWY_CALIBRATION_CLASS GWY_CALIBRATION_GET_CLASS GWY_CDLINE GWY_CDLINE_CLASS GWY_CDLINE_GET_CLASS GWY_CLAMP GWY_COLOR_AXIS GWY_COLOR_AXIS_CLASS GWY_COLOR_AXIS_GET_CLASS GWY_COLOR_BUTTON GWY_COLOR_BUTTON_CLASS GWY_COLOR_BUTTON_GET_CLASS GWY_CONTAINER GWY_CONTAINER_CLASS GWY_CONTAINER_GET_CLASS GWY_CURVE GWY_CURVE_CLASS GWY_CURVE_GET_CLASS GWY_DATA_CHOOSER GWY_DATA_CHOOSER_CLASS GWY_DATA_CHOOSER_GET_CLASS GWY_DATA_FIELD GWY_DATA_FIELD_CLASS GWY_DATA_FIELD_GET_CLASS GWY_DATA_LINE GWY_DATA_LINE_CLASS GWY_DATA_LINE_GET_CLASS GWY_DATA_VIEW GWY_DATA_VIEW_CLASS GWY_DATA_VIEW_GET_CLASS GWY_DATA_VIEW_LAYER GWY_DATA_VIEW_LAYER_CLASS GWY_DATA_VIEW_LAYER_GET_CLASS GWY_DATA_WINDOW GWY_DATA_WINDOW_CLASS GWY_DATA_WINDOW_GET_CLASS GWY_FD_CURVE_PRESET GWY_FD_CURVE_PRESET_CLASS GWY_FD_CURVE_PRESET_GET_CLASS GWY_FIND_PSPEC GWY_GL_MATERIAL GWY_GL_MATERIAL_CLASS GWY_GL_MATERIAL_GET_CLASS GWY_GRADIENT GWY_GRADIENT_CLASS GWY_GRADIENT_GET_CLASS GWY_GRAIN_VALUE GWY_GRAIN_VALUE_CLASS GWY_GRAIN_VALUE_GET_CLASS GWY_GRAPH GWY_GRAPH_AREA GWY_GRAPH_AREA_CLASS GWY_GRAPH_AREA_GET_CLASS GWY_GRAPH_CLASS GWY_GRAPH_CORNER GWY_GRAPH_CORNER_CLASS GWY_GRAPH_CORNER_GET_CLASS GWY_GRAPH_CURVES GWY_GRAPH_CURVES_CLASS GWY_GRAPH_CURVES_GET_CLASS GWY_GRAPH_CURVE_MODEL GWY_GRAPH_CURVE_MODEL_CLASS GWY_GRAPH_CURVE_MODEL_GET_CLASS GWY_GRAPH_DATA GWY_GRAPH_DATA_CLASS GWY_GRAPH_DATA_GET_CLASS GWY_GRAPH_GET_CLASS GWY_GRAPH_LABEL GWY_GRAPH_LABEL_CLASS GWY_GRAPH_LABEL_GET_CLASS GWY_GRAPH_MODEL GWY_GRAPH_MODEL_CLASS GWY_GRAPH_MODEL_GET_CLASS GWY_GRAPH_WINDOW GWY_GRAPH_WINDOW_CLASS GWY_GRAPH_WINDOW_GET_CLASS GWY_HMARKER_BOX GWY_HMARKER_BOX_CLASS GWY_HMARKER_BOX_GET_CLASS GWY_HRULER GWY_HRULER_CLASS GWY_HRULER_GET_CLASS GWY_IMPLEMENT_SERIALIZABLE GWY_INVENTORY GWY_INVENTORY_CLASS GWY_INVENTORY_GET_CLASS GWY_INVENTORY_STORE GWY_INVENTORY_STORE_CLASS GWY_INVENTORY_STORE_GET_CLASS GWY_IS_3D_LABEL GWY_IS_3D_LABEL_CLASS GWY_IS_3D_SETUP GWY_IS_3D_SETUP_CLASS GWY_IS_3D_VIEW GWY_IS_3D_VIEW_CLASS GWY_IS_3D_WINDOW GWY_IS_3D_WINDOW_CLASS GWY_IS_AXIS GWY_IS_AXIS_CLASS GWY_IS_CALDATA GWY_IS_CALDATA_CLASS GWY_IS_CALIBRATION GWY_IS_CALIBRATION_CLASS GWY_IS_CDLINE GWY_IS_CDLINE_CLASS GWY_IS_COLOR_AXIS GWY_IS_COLOR_AXIS_CLASS GWY_IS_COLOR_BUTTON GWY_IS_COLOR_BUTTON_CLASS GWY_IS_CONTAINER GWY_IS_CONTAINER_CLASS GWY_IS_CURVE GWY_IS_CURVE_CLASS GWY_IS_DATA_CHOOSER GWY_IS_DATA_CHOOSER_CLASS GWY_IS_DATA_FIELD GWY_IS_DATA_FIELD_CLASS GWY_IS_DATA_LINE GWY_IS_DATA_LINE_CLASS GWY_IS_DATA_VIEW GWY_IS_DATA_VIEW_CLASS GWY_IS_DATA_VIEW_LAYER GWY_IS_DATA_VIEW_LAYER_CLASS GWY_IS_DATA_WINDOW GWY_IS_DATA_WINDOW_CLASS GWY_IS_FD_CURVE_PRESET GWY_IS_FD_CURVE_PRESET_CLASS GWY_IS_GL_MATERIAL GWY_IS_GL_MATERIAL_CLASS GWY_IS_GRADIENT GWY_IS_GRADIENT_CLASS GWY_IS_GRAIN_VALUE GWY_IS_GRAIN_VALUE_CLASS GWY_IS_GRAPH GWY_IS_GRAPH_AREA GWY_IS_GRAPH_AREA_CLASS GWY_IS_GRAPH_CLASS GWY_IS_GRAPH_CORNER GWY_IS_GRAPH_CORNER_CLASS GWY_IS_GRAPH_CURVES GWY_IS_GRAPH_CURVES_CLASS GWY_IS_GRAPH_CURVE_MODEL GWY_IS_GRAPH_CURVE_MODEL_CLASS GWY_IS_GRAPH_DATA GWY_IS_GRAPH_DATA_CLASS GWY_IS_GRAPH_LABEL GWY_IS_GRAPH_LABEL_CLASS GWY_IS_GRAPH_MODEL GWY_IS_GRAPH_MODEL_CLASS GWY_IS_GRAPH_WINDOW GWY_IS_GRAPH_WINDOW_CLASS GWY_IS_HMARKER_BOX GWY_IS_HMARKER_BOX_CLASS GWY_IS_HRULER GWY_IS_HRULER_CLASS GWY_IS_INVENTORY GWY_IS_INVENTORY_CLASS GWY_IS_INVENTORY_STORE GWY_IS_INVENTORY_STORE_CLASS GWY_IS_LAYER_BASIC GWY_IS_LAYER_BASIC_CLASS GWY_IS_LAYER_MASK GWY_IS_LAYER_MASK_CLASS GWY_IS_MARKER_BOX GWY_IS_MARKER_BOX_CLASS GWY_IS_NLFIT_PRESET GWY_IS_NLFIT_PRESET_CLASS GWY_IS_NULL_STORE GWY_IS_NULL_STORE_CLASS GWY_IS_PIXMAP_LAYER GWY_IS_PIXMAP_LAYER_CLASS GWY_IS_PLAIN_TOOL GWY_IS_PLAIN_TOOL_CLASS GWY_IS_RESOURCE GWY_IS_RESOURCE_CLASS GWY_IS_RESOURCE_EDITOR GWY_IS_RESOURCE_EDITOR_CLASS GWY_IS_RULER GWY_IS_RULER_CLASS GWY_IS_SCI_TEXT GWY_IS_SCI_TEXT_CLASS GWY_IS_SELECTION GWY_IS_SELECTION_CLASS GWY_IS_SELECTION_GRAPH_1DAREA GWY_IS_SELECTION_GRAPH_1DAREA_CLASS GWY_IS_SELECTION_GRAPH_AREA GWY_IS_SELECTION_GRAPH_AREA_CLASS GWY_IS_SELECTION_GRAPH_LINE GWY_IS_SELECTION_GRAPH_LINE_CLASS GWY_IS_SELECTION_GRAPH_POINT GWY_IS_SELECTION_GRAPH_POINT_CLASS GWY_IS_SELECTION_GRAPH_ZOOM GWY_IS_SELECTION_GRAPH_ZOOM_CLASS GWY_IS_SENSITIVITY_GROUP GWY_IS_SENSITIVITY_GROUP_CLASS GWY_IS_SERIALIZABLE GWY_IS_SHADER GWY_IS_SHADER_CLASS GWY_IS_SI_UNIT GWY_IS_SI_UNIT_CLASS GWY_IS_SPECTRA GWY_IS_SPECTRA_CLASS GWY_IS_STATUSBAR GWY_IS_STATUSBAR_CLASS GWY_IS_STRING_LIST GWY_IS_STRING_LIST_CLASS GWY_IS_TOOL GWY_IS_TOOL_CLASS GWY_IS_TRIANGULATION GWY_IS_TRIANGULATION_CLASS GWY_IS_VECTOR_LAYER GWY_IS_VECTOR_LAYER_CLASS GWY_IS_VRULER GWY_IS_VRULER_CLASS GWY_LAYER_BASIC GWY_LAYER_BASIC_CLASS GWY_LAYER_BASIC_GET_CLASS GWY_LAYER_MASK GWY_LAYER_MASK_CLASS GWY_LAYER_MASK_GET_CLASS GWY_MARKER_BOX GWY_MARKER_BOX_CLASS GWY_MARKER_BOX_GET_CLASS GWY_MODULE_QUERY GWY_NLFIT_PRESET GWY_NLFIT_PRESET_CLASS GWY_NLFIT_PRESET_GET_CLASS GWY_NULL_STORE GWY_NULL_STORE_CLASS GWY_NULL_STORE_GET_CLASS GWY_PIXMAP_LAYER GWY_PIXMAP_LAYER_CLASS GWY_PIXMAP_LAYER_GET_CLASS GWY_PLAIN_TOOL GWY_PLAIN_TOOL_CLASS GWY_PLAIN_TOOL_GET_CLASS GWY_RESOURCE GWY_RESOURCE_CLASS GWY_RESOURCE_EDITOR GWY_RESOURCE_EDITOR_CLASS GWY_RESOURCE_EDITOR_GET_CLASS GWY_RESOURCE_GET_CLASS GWY_ROUND GWY_RULER GWY_RULER_CLASS GWY_RULER_GET_CLASS GWY_SCI_TEXT GWY_SCI_TEXT_CLASS GWY_SCI_TEXT_GET_CLASS GWY_SELECTION GWY_SELECTION_CLASS GWY_SELECTION_GET_CLASS GWY_SELECTION_GRAPH_1DAREA GWY_SELECTION_GRAPH_1DAREA_CLASS GWY_SELECTION_GRAPH_1DAREA_GET_CLASS GWY_SELECTION_GRAPH_AREA GWY_SELECTION_GRAPH_AREA_CLASS GWY_SELECTION_GRAPH_AREA_GET_CLASS GWY_SELECTION_GRAPH_LINE GWY_SELECTION_GRAPH_LINE_CLASS GWY_SELECTION_GRAPH_LINE_GET_CLASS GWY_SELECTION_GRAPH_POINT GWY_SELECTION_GRAPH_POINT_CLASS GWY_SELECTION_GRAPH_POINT_GET_CLASS GWY_SELECTION_GRAPH_ZOOM GWY_SELECTION_GRAPH_ZOOM_CLASS GWY_SELECTION_GRAPH_ZOOM_GET_CLASS GWY_SENSITIVITY_GROUP GWY_SENSITIVITY_GROUP_CLASS GWY_SENSITIVITY_GROUP_GET_CLASS GWY_SERIALIZABLE GWY_SERIALIZABLE_GET_IFACE GWY_SHADER GWY_SHADER_CLASS GWY_SHADER_GET_CLASS GWY_SI_UNIT GWY_SI_UNIT_CLASS GWY_SI_UNIT_GET_CLASS GWY_SPECTRA GWY_SPECTRA_CLASS GWY_SPECTRA_GET_CLASS GWY_STATUSBAR GWY_STATUSBAR_CLASS GWY_STATUSBAR_GET_CLASS GWY_STRING_LIST GWY_STRING_LIST_CLASS GWY_STRING_LIST_GET_CLASS GWY_SWAP GWY_TOOL GWY_TOOL_CLASS GWY_TOOL_GET_CLASS GWY_TRIANGULATION GWY_TRIANGULATION_CLASS GWY_TRIANGULATION_GET_CLASS GWY_VECTOR_LAYER GWY_VECTOR_LAYER_CLASS GWY_VECTOR_LAYER_GET_CLASS GWY_VRULER GWY_VRULER_CLASS GWY_VRULER_GET_CLASS N_ acosh asinh atanh cbrt gettext gwy_adjustment_get_int gwy_caldata_duplicate gwy_clear gwy_container_contains_by_name gwy_container_duplicate gwy_container_get_boolean_by_name gwy_container_get_double_by_name gwy_container_get_enum_by_name gwy_container_get_int32_by_name gwy_container_get_int64_by_name gwy_container_get_object_by_name gwy_container_get_string_by_name gwy_container_get_uchar_by_name gwy_container_get_value_by_name gwy_container_gis_boolean_by_name gwy_container_gis_double_by_name gwy_container_gis_enum_by_name gwy_container_gis_int32_by_name gwy_container_gis_int64_by_name gwy_container_gis_object_by_name gwy_container_gis_string_by_name gwy_container_gis_uchar_by_name gwy_container_gis_value_by_name gwy_container_remove_by_name gwy_container_rename_by_name gwy_container_set_boolean_by_name gwy_container_set_double_by_name gwy_container_set_enum_by_name gwy_container_set_int32_by_name gwy_container_set_int64_by_name gwy_container_set_object_by_name gwy_container_set_string_by_name gwy_container_set_uchar_by_name gwy_container_value_type_by_name gwy_data_field_duplicate gwy_data_field_get_xmeasure gwy_data_field_get_ymeasure gwy_data_field_invalidate gwy_data_line_duplicate gwy_debug gwy_debug_objects_creation gwy_graph_curve_model_duplicate gwy_graph_model_duplicate gwy_object_unref gwy_selection_duplicate gwy_si_unit_duplicate gwy_signal_handler_disconnect gwy_spectra_duplicate gwy_strequal gwy_string_list_duplicate gwy_table_hscale_get_check gwy_table_hscale_get_label gwy_table_hscale_get_middle_widget gwy_table_hscale_get_scale gwy_table_hscale_get_units gwy_vector_layer_get_selection_type hypot ngettext pow10 syn keyword gwyddionEnum Gwy2DCWTWaveletType Gwy3DMovement Gwy3DProjection Gwy3DViewLabel Gwy3DVisualization GwyAppSettingsError GwyAppWhat GwyAxisScaleFormat GwyByteOrder GwyComputationStateType GwyCorrelationType GwyCurveChannel GwyCurveType GwyDWTDenoiseType GwyDWTType GwyDataCompatibilityFlags GwyDataError GwyDataFieldCached GwyDataItem GwyDataValidateFlags GwyDataViewLayerType GwyDataWatchEventType GwyDebugObjectsDumpFlags GwyExprError GwyExteriorType GwyFileOperationType GwyGrainQuantity GwyGrainValueFlags GwyGrainValueGroup GwyGrainValueStoreColumn GwyGraphCurveType GwyGraphGridType GwyGraphLabelPosition GwyGraphModelExportStyle GwyGraphPointType GwyGraphStatusType GwyHScaleStyle GwyInterpolationType GwyLayerBasicRangeType GwyLineStatQuantity GwyMarkerOperationType GwyMaskingType GwyMenuSensFlags GwyMergeType GwyModuleError GwyModuleFileError GwyOrientation GwyPlainToolChanged GwyPlaneFitQuantity GwyPlaneSymmetry GwyRawDataType GwyRenderingTarget GwyRunType GwySIUnitFormatStyle GwyTextHeaderError GwyTicksStyle GwyTipType GwyToolResponseType GwyTransformDirection GwyUnitsPlacement GwyVisibilityResetType GwyWatershedStateType GwyWindowingType syn keyword gwyddionUserFunction GwyAppDataForeachFunc GwyAppDataWatchFunc GwyCoordTransform2DFunc GwyDataChooserFilterFunc GwyDeserializeFunc GwyFileDetectFunc GwyFileLoadFunc GwyFileSaveFunc GwyGraphFunc GwyMarkerValidateFunc GwyModuleQueryFunc GwyModuleRegisterFunc GwyNLFitDerFunc GwyNLFitFunc GwyProcessFunc GwySaveAuxiliaryCreate GwySaveAuxiliaryDestroy GwySelectionFilterFunc GwySerializeFunc GwySetFractionFunc GwySetMessageFunc GwyTipGuessFunc GwyTipModelFunc -syn keyword gwyddionDefine GWY_APP_SETTINGS_ERROR GWY_CONTAINER_PATHSEP GWY_CONTAINER_PATHSEP_STR GWY_EXPR_ERROR GWY_FILE_DETECT_BUFFER_SIZE GWY_GL_MATERIAL_DEFAULT GWY_GL_MATERIAL_NONE GWY_GRADIENT_DEFAULT GWY_ICON_SIZE_ABOUT GWY_MODULE_ABI_VERSION GWY_MODULE_FILE_ERROR GWY_SQRT3 GWY_SQRT_PI GWY_STOCK_3D_BASE GWY_STOCK_ARITHMETIC GWY_STOCK_BOLD GWY_STOCK_CANTILEVER GWY_STOCK_COLOR_RANGE GWY_STOCK_COLOR_RANGE_ADAPTIVE GWY_STOCK_COLOR_RANGE_AUTO GWY_STOCK_COLOR_RANGE_FIXED GWY_STOCK_COLOR_RANGE_FULL GWY_STOCK_CROP GWY_STOCK_CWT GWY_STOCK_DATA_MEASURE GWY_STOCK_DISTANCE GWY_STOCK_DRIFT GWY_STOCK_DWT GWY_STOCK_EDGE GWY_STOCK_FACET_LEVEL GWY_STOCK_FAVOURITE GWY_STOCK_FFT GWY_STOCK_FILTER GWY_STOCK_FIX_ZERO GWY_STOCK_FLIP_HORIZONTALLY GWY_STOCK_FLIP_VERTICALLY GWY_STOCK_FRACTAL GWY_STOCK_GL_MATERIAL GWY_STOCK_GRADIENT_HORIZONTAL GWY_STOCK_GRADIENT_VERTICAL GWY_STOCK_GRAINS GWY_STOCK_GRAINS_GRAPH GWY_STOCK_GRAINS_MEASURE GWY_STOCK_GRAINS_REMOVE GWY_STOCK_GRAINS_WATER GWY_STOCK_GRAPH GWY_STOCK_GRAPH_FUNCTION GWY_STOCK_GRAPH_HALFGAUSS GWY_STOCK_GRAPH_MEASURE GWY_STOCK_GRAPH_PALETTE GWY_STOCK_GRAPH_POINTER GWY_STOCK_GRAPH_RULER GWY_STOCK_GRAPH_VERTICAL GWY_STOCK_GRAPH_ZOOM_FIT GWY_STOCK_GRAPH_ZOOM_IN GWY_STOCK_GRAPH_ZOOM_OUT GWY_STOCK_GWYDDION GWY_STOCK_IMMERSE GWY_STOCK_ISO_ROUGHNESS GWY_STOCK_ITALIC GWY_STOCK_LESS GWY_STOCK_LEVEL GWY_STOCK_LEVEL_TRIANGLE GWY_STOCK_LIGHT_ROTATE GWY_STOCK_LINE_LEVEL GWY_STOCK_LOGSCALE_HORIZONTAL GWY_STOCK_LOGSCALE_VERTICAL GWY_STOCK_MASK GWY_STOCK_MASK_ADD GWY_STOCK_MASK_CIRCLE GWY_STOCK_MASK_CIRCLE_EXCLUSIVE GWY_STOCK_MASK_CIRCLE_INCLUSIVE GWY_STOCK_MASK_EDITOR GWY_STOCK_MASK_EXCLUDE GWY_STOCK_MASK_EXCLUDE_CIRCLE GWY_STOCK_MASK_FILL_DRAW GWY_STOCK_MASK_FILL_ERASE GWY_STOCK_MASK_GROW GWY_STOCK_MASK_INTERSECT GWY_STOCK_MASK_INVERT GWY_STOCK_MASK_LINE GWY_STOCK_MASK_PAINT_DRAW GWY_STOCK_MASK_PAINT_ERASE GWY_STOCK_MASK_RECT_EXCLUSIVE GWY_STOCK_MASK_RECT_INCLUSIVE GWY_STOCK_MASK_REMOVE GWY_STOCK_MASK_SHRINK GWY_STOCK_MASK_SUBTRACT GWY_STOCK_MERGE GWY_STOCK_MORE GWY_STOCK_PALETTES GWY_STOCK_PATH_LEVEL GWY_STOCK_POINTER_MEASURE GWY_STOCK_POLYNOM GWY_STOCK_PROFILE GWY_STOCK_REMOVE_UNDER_MASK GWY_STOCK_ROTATE GWY_STOCK_ROTATE_180 GWY_STOCK_ROTATE_90_CCW GWY_STOCK_ROTATE_90_CW GWY_STOCK_SCALE GWY_STOCK_SCALE_HORIZONTALLY GWY_STOCK_SCALE_VERTICALLY GWY_STOCK_SCARS GWY_STOCK_SELECTIONS GWY_STOCK_SHADER GWY_STOCK_SPECTRUM GWY_STOCK_SPOT_REMOVE GWY_STOCK_STAT_QUANTITIES GWY_STOCK_SUBSCRIPT GWY_STOCK_SUPERSCRIPT GWY_STOCK_UNROTATE GWY_STOCK_VALUE_INVERT GWY_STOCK_ZOOM_1_1 GWY_STOCK_ZOOM_FIT GWY_STOCK_ZOOM_IN GWY_STOCK_ZOOM_OUT GWY_TEXT_HEADER_ERROR GWY_TRIANGULATION_NONE GWY_TYPE_2D_CWT_WAVELET_TYPE GWY_TYPE_3D_LABEL GWY_TYPE_3D_MOVEMENT GWY_TYPE_3D_PROJECTION GWY_TYPE_3D_SETUP GWY_TYPE_3D_VIEW GWY_TYPE_3D_VIEW_LABEL GWY_TYPE_3D_VISUALIZATION GWY_TYPE_3D_WINDOW GWY_TYPE_APP_SETTINGS_ERROR GWY_TYPE_APP_WHAT GWY_TYPE_AXIS GWY_TYPE_AXIS_SCALE_FORMAT GWY_TYPE_BYTE_ORDER GWY_TYPE_CALDATA GWY_TYPE_CALIBRATION GWY_TYPE_CDLINE GWY_TYPE_COLOR_AXIS GWY_TYPE_COLOR_BUTTON GWY_TYPE_COMPUTATION_STATE_TYPE GWY_TYPE_CONTAINER GWY_TYPE_CORRELATION_TYPE GWY_TYPE_CURVE GWY_TYPE_CURVE_CHANNEL GWY_TYPE_CURVE_TYPE GWY_TYPE_DATA_CHOOSER GWY_TYPE_DATA_COMPATIBILITY_FLAGS GWY_TYPE_DATA_FIELD GWY_TYPE_DATA_FIELD_CACHED GWY_TYPE_DATA_ITEM GWY_TYPE_DATA_LINE GWY_TYPE_DATA_VIEW GWY_TYPE_DATA_VIEW_LAYER GWY_TYPE_DATA_VIEW_LAYER_TYPE GWY_TYPE_DATA_WATCH_EVENT_TYPE GWY_TYPE_DATA_WINDOW GWY_TYPE_DWT_DENOISE_TYPE GWY_TYPE_DWT_TYPE GWY_TYPE_ENUM GWY_TYPE_EXPR_ERROR GWY_TYPE_EXTERIOR_TYPE GWY_TYPE_FD_CURVE_PRESET GWY_TYPE_FILE_OPERATION_TYPE GWY_TYPE_GL_MATERIAL GWY_TYPE_GRADIENT GWY_TYPE_GRAIN_QUANTITY GWY_TYPE_GRAIN_VALUE GWY_TYPE_GRAIN_VALUE_FLAGS GWY_TYPE_GRAIN_VALUE_GROUP GWY_TYPE_GRAIN_VALUE_STORE_COLUMN GWY_TYPE_GRAPH GWY_TYPE_GRAPH_AREA GWY_TYPE_GRAPH_CORNER GWY_TYPE_GRAPH_CURVES GWY_TYPE_GRAPH_CURVE_MODEL GWY_TYPE_GRAPH_CURVE_TYPE GWY_TYPE_GRAPH_DATA GWY_TYPE_GRAPH_GRID_TYPE GWY_TYPE_GRAPH_LABEL GWY_TYPE_GRAPH_LABEL_POSITION GWY_TYPE_GRAPH_MODEL GWY_TYPE_GRAPH_MODEL_EXPORT_STYLE GWY_TYPE_GRAPH_POINT_TYPE GWY_TYPE_GRAPH_STATUS_TYPE GWY_TYPE_GRAPH_WINDOW GWY_TYPE_HMARKER_BOX GWY_TYPE_HRULER GWY_TYPE_HSCALE_STYLE GWY_TYPE_INTERPOLATION_TYPE GWY_TYPE_INVENTORY GWY_TYPE_INVENTORY_STORE GWY_TYPE_LAYER_BASIC GWY_TYPE_LAYER_BASIC_RANGE_TYPE GWY_TYPE_LAYER_MASK GWY_TYPE_LINE_STAT_QUANTITY GWY_TYPE_MARKER_BOX GWY_TYPE_MARKER_OPERATION_TYPE GWY_TYPE_MASKING_TYPE GWY_TYPE_MENU_SENS_FLAGS GWY_TYPE_MERGE_TYPE GWY_TYPE_MODULE_ERROR GWY_TYPE_MODULE_FILE_ERROR GWY_TYPE_NLFIT_PRESET GWY_TYPE_NULL_STORE GWY_TYPE_ORIENTATION GWY_TYPE_PIXMAP_LAYER GWY_TYPE_PLAIN_TOOL GWY_TYPE_PLAIN_TOOL_CHANGED GWY_TYPE_PLANE_FIT_QUANTITY GWY_TYPE_PLANE_SYMMETRY GWY_TYPE_RAW_DATA_TYPE GWY_TYPE_RESOURCE GWY_TYPE_RESOURCE_EDITOR GWY_TYPE_RGBA GWY_TYPE_RULER GWY_TYPE_RUN_TYPE GWY_TYPE_SCI_TEXT GWY_TYPE_SELECTION GWY_TYPE_SELECTION_GRAPH_1DAREA GWY_TYPE_SELECTION_GRAPH_AREA GWY_TYPE_SELECTION_GRAPH_LINE GWY_TYPE_SELECTION_GRAPH_POINT GWY_TYPE_SELECTION_GRAPH_ZOOM GWY_TYPE_SENSITIVITY_GROUP GWY_TYPE_SERIALIZABLE GWY_TYPE_SHADER GWY_TYPE_SI_UNIT GWY_TYPE_SI_UNIT_FORMAT_STYLE GWY_TYPE_SPECTRA GWY_TYPE_STATUSBAR GWY_TYPE_STRING_LIST GWY_TYPE_TEXT_HEADER_ERROR GWY_TYPE_TICKS_STYLE GWY_TYPE_TIP_TYPE GWY_TYPE_TOOL GWY_TYPE_TOOL_SWITCH_EVENT GWY_TYPE_TRANSFORM_DIRECTION GWY_TYPE_TRIANGULATION GWY_TYPE_UNITS_PLACEMENT GWY_TYPE_VECTOR_LAYER GWY_TYPE_VISIBILITY_RESET_TYPE GWY_TYPE_VRULER GWY_TYPE_WATERSHED_STATE_TYPE GWY_TYPE_WINDOWING_TYPE GWY_VERSION_MAJOR GWY_VERSION_MINOR GWY_VERSION_STRING gwy_isinf gwy_isnan +syn keyword gwyddionDefine GWY_APP_SETTINGS_ERROR GWY_CONTAINER_PATHSEP GWY_CONTAINER_PATHSEP_STR GWY_EXPR_ERROR GWY_FILE_DETECT_BUFFER_SIZE GWY_GL_MATERIAL_DEFAULT GWY_GL_MATERIAL_NONE GWY_GRADIENT_DEFAULT GWY_ICON_SIZE_ABOUT GWY_MODULE_ABI_VERSION GWY_MODULE_FILE_ERROR GWY_SQRT3 GWY_SQRT_PI GWY_STOCK_3D_BASE GWY_STOCK_ARITHMETIC GWY_STOCK_BOLD GWY_STOCK_CANTILEVER GWY_STOCK_COLOR_RANGE GWY_STOCK_COLOR_RANGE_ADAPTIVE GWY_STOCK_COLOR_RANGE_AUTO GWY_STOCK_COLOR_RANGE_FIXED GWY_STOCK_COLOR_RANGE_FULL GWY_STOCK_CROP GWY_STOCK_CWT GWY_STOCK_DATA_MEASURE GWY_STOCK_DISTANCE GWY_STOCK_DRIFT GWY_STOCK_DWT GWY_STOCK_EDGE GWY_STOCK_FACET_LEVEL GWY_STOCK_FAVOURITE GWY_STOCK_FFT GWY_STOCK_FILTER GWY_STOCK_FIX_ZERO GWY_STOCK_FLIP_HORIZONTALLY GWY_STOCK_FLIP_VERTICALLY GWY_STOCK_FRACTAL GWY_STOCK_GL_MATERIAL GWY_STOCK_GRADIENT_HORIZONTAL GWY_STOCK_GRADIENT_VERTICAL GWY_STOCK_GRAINS GWY_STOCK_GRAINS_GRAPH GWY_STOCK_GRAINS_MEASURE GWY_STOCK_GRAINS_REMOVE GWY_STOCK_GRAINS_WATER GWY_STOCK_GRAPH GWY_STOCK_GRAPH_FUNCTION GWY_STOCK_GRAPH_HALFGAUSS GWY_STOCK_GRAPH_MEASURE GWY_STOCK_GRAPH_PALETTE GWY_STOCK_GRAPH_POINTER GWY_STOCK_GRAPH_RULER GWY_STOCK_GRAPH_VERTICAL GWY_STOCK_GRAPH_ZOOM_FIT GWY_STOCK_GRAPH_ZOOM_IN GWY_STOCK_GRAPH_ZOOM_OUT GWY_STOCK_GWYDDION GWY_STOCK_IMMERSE GWY_STOCK_ISO_ROUGHNESS GWY_STOCK_ITALIC GWY_STOCK_LESS GWY_STOCK_LEVEL GWY_STOCK_LEVEL_TRIANGLE GWY_STOCK_LIGHT_ROTATE GWY_STOCK_LINE_LEVEL GWY_STOCK_LOGSCALE_HORIZONTAL GWY_STOCK_LOGSCALE_VERTICAL GWY_STOCK_MASK GWY_STOCK_MASK_ADD GWY_STOCK_MASK_CIRCLE GWY_STOCK_MASK_CIRCLE_EXCLUSIVE GWY_STOCK_MASK_CIRCLE_INCLUSIVE GWY_STOCK_MASK_EDITOR GWY_STOCK_MASK_EXCLUDE GWY_STOCK_MASK_EXCLUDE_CIRCLE GWY_STOCK_MASK_FILL_DRAW GWY_STOCK_MASK_FILL_ERASE GWY_STOCK_MASK_GROW GWY_STOCK_MASK_INTERSECT GWY_STOCK_MASK_INVERT GWY_STOCK_MASK_LINE GWY_STOCK_MASK_PAINT_DRAW GWY_STOCK_MASK_PAINT_ERASE GWY_STOCK_MASK_RECT_EXCLUSIVE GWY_STOCK_MASK_RECT_INCLUSIVE GWY_STOCK_MASK_REMOVE GWY_STOCK_MASK_SHRINK GWY_STOCK_MASK_SUBTRACT GWY_STOCK_MERGE GWY_STOCK_MORE GWY_STOCK_PALETTES GWY_STOCK_PATH_LEVEL GWY_STOCK_POINTER_MEASURE GWY_STOCK_POLYNOM GWY_STOCK_POLYNOM_LEVEL GWY_STOCK_PROFILE GWY_STOCK_REMOVE_UNDER_MASK GWY_STOCK_ROTATE GWY_STOCK_ROTATE_180 GWY_STOCK_ROTATE_90_CCW GWY_STOCK_ROTATE_90_CW GWY_STOCK_SCALE GWY_STOCK_SCALE_HORIZONTALLY GWY_STOCK_SCALE_VERTICALLY GWY_STOCK_SCARS GWY_STOCK_SELECTIONS GWY_STOCK_SHADER GWY_STOCK_SPECTRUM GWY_STOCK_SPOT_REMOVE GWY_STOCK_STAT_QUANTITIES GWY_STOCK_SUBSCRIPT GWY_STOCK_SUPERSCRIPT GWY_STOCK_UNROTATE GWY_STOCK_VALUE_INVERT GWY_STOCK_ZOOM_1_1 GWY_STOCK_ZOOM_FIT GWY_STOCK_ZOOM_IN GWY_STOCK_ZOOM_OUT GWY_TEXT_HEADER_ERROR GWY_TRIANGULATION_NONE GWY_TYPE_2D_CWT_WAVELET_TYPE GWY_TYPE_3D_LABEL GWY_TYPE_3D_MOVEMENT GWY_TYPE_3D_PROJECTION GWY_TYPE_3D_SETUP GWY_TYPE_3D_VIEW GWY_TYPE_3D_VIEW_LABEL GWY_TYPE_3D_VISUALIZATION GWY_TYPE_3D_WINDOW GWY_TYPE_APP_SETTINGS_ERROR GWY_TYPE_APP_WHAT GWY_TYPE_AXIS GWY_TYPE_AXIS_SCALE_FORMAT GWY_TYPE_BYTE_ORDER GWY_TYPE_CALDATA GWY_TYPE_CALIBRATION GWY_TYPE_CDLINE GWY_TYPE_COLOR_AXIS GWY_TYPE_COLOR_BUTTON GWY_TYPE_COMPUTATION_STATE_TYPE GWY_TYPE_CONTAINER GWY_TYPE_CORRELATION_TYPE GWY_TYPE_CURVE GWY_TYPE_CURVE_CHANNEL GWY_TYPE_CURVE_TYPE GWY_TYPE_DATA_CHOOSER GWY_TYPE_DATA_COMPATIBILITY_FLAGS GWY_TYPE_DATA_FIELD GWY_TYPE_DATA_FIELD_CACHED GWY_TYPE_DATA_ITEM GWY_TYPE_DATA_LINE GWY_TYPE_DATA_VIEW GWY_TYPE_DATA_VIEW_LAYER GWY_TYPE_DATA_VIEW_LAYER_TYPE GWY_TYPE_DATA_WATCH_EVENT_TYPE GWY_TYPE_DATA_WINDOW GWY_TYPE_DWT_DENOISE_TYPE GWY_TYPE_DWT_TYPE GWY_TYPE_ENUM GWY_TYPE_EXPR_ERROR GWY_TYPE_EXTERIOR_TYPE GWY_TYPE_FD_CURVE_PRESET GWY_TYPE_FILE_OPERATION_TYPE GWY_TYPE_GL_MATERIAL GWY_TYPE_GRADIENT GWY_TYPE_GRAIN_QUANTITY GWY_TYPE_GRAIN_VALUE GWY_TYPE_GRAIN_VALUE_FLAGS GWY_TYPE_GRAIN_VALUE_GROUP GWY_TYPE_GRAIN_VALUE_STORE_COLUMN GWY_TYPE_GRAPH GWY_TYPE_GRAPH_AREA GWY_TYPE_GRAPH_CORNER GWY_TYPE_GRAPH_CURVES GWY_TYPE_GRAPH_CURVE_MODEL GWY_TYPE_GRAPH_CURVE_TYPE GWY_TYPE_GRAPH_DATA GWY_TYPE_GRAPH_GRID_TYPE GWY_TYPE_GRAPH_LABEL GWY_TYPE_GRAPH_LABEL_POSITION GWY_TYPE_GRAPH_MODEL GWY_TYPE_GRAPH_MODEL_EXPORT_STYLE GWY_TYPE_GRAPH_POINT_TYPE GWY_TYPE_GRAPH_STATUS_TYPE GWY_TYPE_GRAPH_WINDOW GWY_TYPE_HMARKER_BOX GWY_TYPE_HRULER GWY_TYPE_HSCALE_STYLE GWY_TYPE_INTERPOLATION_TYPE GWY_TYPE_INVENTORY GWY_TYPE_INVENTORY_STORE GWY_TYPE_LAYER_BASIC GWY_TYPE_LAYER_BASIC_RANGE_TYPE GWY_TYPE_LAYER_MASK GWY_TYPE_LINE_STAT_QUANTITY GWY_TYPE_MARKER_BOX GWY_TYPE_MARKER_OPERATION_TYPE GWY_TYPE_MASKING_TYPE GWY_TYPE_MENU_SENS_FLAGS GWY_TYPE_MERGE_TYPE GWY_TYPE_MODULE_ERROR GWY_TYPE_MODULE_FILE_ERROR GWY_TYPE_NLFIT_PRESET GWY_TYPE_NULL_STORE GWY_TYPE_ORIENTATION GWY_TYPE_PIXMAP_LAYER GWY_TYPE_PLAIN_TOOL GWY_TYPE_PLAIN_TOOL_CHANGED GWY_TYPE_PLANE_FIT_QUANTITY GWY_TYPE_PLANE_SYMMETRY GWY_TYPE_RAW_DATA_TYPE GWY_TYPE_RESOURCE GWY_TYPE_RESOURCE_EDITOR GWY_TYPE_RGBA GWY_TYPE_RULER GWY_TYPE_RUN_TYPE GWY_TYPE_SCI_TEXT GWY_TYPE_SELECTION GWY_TYPE_SELECTION_GRAPH_1DAREA GWY_TYPE_SELECTION_GRAPH_AREA GWY_TYPE_SELECTION_GRAPH_LINE GWY_TYPE_SELECTION_GRAPH_POINT GWY_TYPE_SELECTION_GRAPH_ZOOM GWY_TYPE_SENSITIVITY_GROUP GWY_TYPE_SERIALIZABLE GWY_TYPE_SHADER GWY_TYPE_SI_UNIT GWY_TYPE_SI_UNIT_FORMAT_STYLE GWY_TYPE_SPECTRA GWY_TYPE_STATUSBAR GWY_TYPE_STRING_LIST GWY_TYPE_TEXT_HEADER_ERROR GWY_TYPE_TICKS_STYLE GWY_TYPE_TIP_TYPE GWY_TYPE_TOOL GWY_TYPE_TOOL_SWITCH_EVENT GWY_TYPE_TRANSFORM_DIRECTION GWY_TYPE_TRIANGULATION GWY_TYPE_UNITS_PLACEMENT GWY_TYPE_VECTOR_LAYER GWY_TYPE_VISIBILITY_RESET_TYPE GWY_TYPE_VRULER GWY_TYPE_WATERSHED_STATE_TYPE GWY_TYPE_WINDOWING_TYPE GWY_VERSION_MAJOR GWY_VERSION_MINOR GWY_VERSION_STRING gwy_isinf gwy_isnan syn keyword gwyddionDeprecatedFunction gwy_cdline_get_param_default gwy_data_field_area_get_avg gwy_data_field_area_get_median gwy_data_field_area_get_min_max gwy_data_field_area_get_rms gwy_data_field_area_get_stats gwy_data_field_area_get_sum gwy_data_field_area_get_surface_area gwy_data_line_line_rotate gwy_dialog_prevent_delete_cb gwy_get_pango_ft2_font_map syn keyword gwyddionDeprecatedConstant GWY_TOOL_SWITCH_TOOL GWY_TOOL_SWITCH_WINDOW syn keyword gwyddionDeprecatedMacro ROUND diff -Nru gwyddion-2.28/data/gwyddion.xml gwyddion-2.29/data/gwyddion.xml --- gwyddion-2.28/data/gwyddion.xml 2012-05-18 10:42:29.000000000 +0100 +++ gwyddion-2.29/data/gwyddion.xml 2012-07-19 21:14:11.000000000 +0100 @@ -865,4 +865,5 @@ + diff -Nru gwyddion-2.28/data/Makefile.am gwyddion-2.29/data/Makefile.am --- gwyddion-2.28/data/Makefile.am 2012-05-18 11:03:39.000000000 +0100 +++ gwyddion-2.29/data/Makefile.am 2012-07-19 21:11:38.000000000 +0100 @@ -1,4 +1,4 @@ -# @(#) $Id: Makefile.am 13478 2012-05-18 10:03:39Z yeti-dn $ +# @(#) $Id: Makefile.am 13590 2012-07-17 05:41:50Z yeti-dn $ # Some combinations of the tools do not give these us automatically. abs_top_srcdir = @abs_top_srcdir@ @@ -60,7 +60,9 @@ $(docsrc)/libgwymodule/libgwymodule-decl.txt \ $(docsrc)/libgwyprocess/libgwyprocess-decl.txt -file_magic_sources = $(top_srcdir)/modules/file/*.c +file_magic_sources = \ + $(top_srcdir)/modules/file/*.c \ + $(top_srcdir)/modules/file/*.cc CLEANFILES = \ gwyddion-thumbnailer.schemas \ diff -Nru gwyddion-2.28/data/Makefile.in gwyddion-2.29/data/Makefile.in --- gwyddion-2.28/data/Makefile.in 2012-05-18 11:03:59.000000000 +0100 +++ gwyddion-2.29/data/Makefile.in 2012-07-20 16:59:25.000000000 +0100 @@ -15,7 +15,7 @@ @SET_MAKE@ -# @(#) $Id: Makefile.am 13478 2012-05-18 10:03:39Z yeti-dn $ +# @(#) $Id: Makefile.am 13590 2012-07-17 05:41:50Z yeti-dn $ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ @@ -410,7 +410,10 @@ $(docsrc)/libgwymodule/libgwymodule-decl.txt \ $(docsrc)/libgwyprocess/libgwyprocess-decl.txt -file_magic_sources = $(top_srcdir)/modules/file/*.c +file_magic_sources = \ + $(top_srcdir)/modules/file/*.c \ + $(top_srcdir)/modules/file/*.cc + CLEANFILES = \ gwyddion-thumbnailer.schemas \ gwyddion.thumbnailer diff -Nru gwyddion-2.28/data/mingw32-gwyddion-libs.spec.in gwyddion-2.29/data/mingw32-gwyddion-libs.spec.in --- gwyddion-2.28/data/mingw32-gwyddion-libs.spec.in 2011-12-07 09:48:16.000000000 +0000 +++ gwyddion-2.29/data/mingw32-gwyddion-libs.spec.in 2012-07-19 21:11:38.000000000 +0100 @@ -1,4 +1,4 @@ -# @(#) $Id: mingw32-gwyddion-libs.spec.in 13146 2011-12-07 09:48:15Z yeti-dn $ +# @(#) $Id: mingw32-gwyddion-libs.spec.in 13567 2012-07-11 11:14:35Z yeti-dn $ %{expand:%global distro_is_redhat %(test ! -f /etc/redhat-release; echo $?)} %{expand:%global distro_is_suse %(test ! -f /etc/SuSE-release; echo $?)} @@ -64,6 +64,7 @@ %build %{_mingw32_configure} --enable-shared --disable-static --disable-gtk-doc \ + --without-libiconv-prefix --without-libintl-prefix --without-x \ --disable-schemas-install --disable-desktop-file-update --disable-pygwy \ --without-pascal --without-perl --without-python --without-ruby \ --without-kde4-thumbnailer @@ -114,6 +115,10 @@ %changelog +* Wed May 23 2012 Yeti - 2.28-1 +- Prevent looking for libiconv and libintl in prefix, fixes some scary libtool + warnings + * Thu Jan 27 2011 Yeti - 2.22-1 - Updated to build on openSUSE diff -Nru gwyddion-2.28/debian/changelog gwyddion-2.29/debian/changelog --- gwyddion-2.28/debian/changelog 2012-05-30 20:32:22.000000000 +0100 +++ gwyddion-2.29/debian/changelog 2012-09-11 08:39:24.000000000 +0100 @@ -1,3 +1,11 @@ +gwyddion (2.29-1) experimental; urgency=low + + * New upstream version + Closes: #686688 + * debian/copyright: Remove separating comma in Files field + + -- Andreas Tille Tue, 11 Sep 2012 09:22:34 +0200 + gwyddion (2.28-2) unstable; urgency=low * debian/gwyddion-common.install diff -Nru gwyddion-2.28/debian/copyright gwyddion-2.29/debian/copyright --- gwyddion-2.28/debian/copyright 2012-05-28 19:53:10.000000000 +0100 +++ gwyddion-2.29/debian/copyright 2012-09-11 08:38:42.000000000 +0100 @@ -13,7 +13,7 @@ Copyright: 2007, 2008 Jan Beyer License: GPL-2+ -Files: */Makefile.in, config.rpath +Files: */Makefile.in config.rpath Copyright: 1994-2006 Free Software Foundation, Inc. License: other This Makefile.in is free software; the Free Software Foundation diff -Nru gwyddion-2.28/devel-docs/libgwyapp/html/index.html gwyddion-2.29/devel-docs/libgwyapp/html/index.html --- gwyddion-2.28/devel-docs/libgwyapp/html/index.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwyapp/html/index.html 2012-07-20 16:59:44.000000000 +0100 @@ -15,7 +15,7 @@

- For Gwyddion 2.28. + For Gwyddion 2.29. The latest version of this document can be found on-line at http://gwyddion.net/documentation/libgwyapp/.

diff -Nru gwyddion-2.28/devel-docs/libgwyddion/html/index.html gwyddion-2.29/devel-docs/libgwyddion/html/index.html --- gwyddion-2.28/devel-docs/libgwyddion/html/index.html 2012-05-18 11:04:00.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwyddion/html/index.html 2012-07-20 16:59:43.000000000 +0100 @@ -15,7 +15,7 @@

- For Gwyddion 2.28. + For Gwyddion 2.29. The latest version of this document can be found on-line at http://gwyddion.net/documentation/libgwyddion/.

diff -Nru gwyddion-2.28/devel-docs/libgwyddion/html/libgwyddion-gwyversion.html gwyddion-2.29/devel-docs/libgwyddion/html/libgwyddion-gwyversion.html --- gwyddion-2.28/devel-docs/libgwyddion/html/libgwyddion-gwyversion.html 2012-05-18 11:04:00.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwyddion/html/libgwyddion-gwyversion.html 2012-07-20 16:59:43.000000000 +0100 @@ -77,7 +77,7 @@

GWY_VERSION_MINOR

-
#define GWY_VERSION_MINOR 28
+
#define GWY_VERSION_MINOR 29
 

Expands to the minor version of Gwyddion as a number. @@ -89,7 +89,7 @@


GWY_VERSION_STRING

-
#define GWY_VERSION_STRING "2.28"
+
#define GWY_VERSION_STRING "2.29"
 

Expands to the full Gwyddion version as a string. Binary files /tmp/6W43BMtPno/gwyddion-2.28/devel-docs/libgwydgets/html/gwy_3d_base-24.png and /tmp/ug3yy2UQEY/gwyddion-2.29/devel-docs/libgwydgets/html/gwy_3d_base-24.png differ Binary files /tmp/6W43BMtPno/gwyddion-2.28/devel-docs/libgwydgets/html/gwy_path_level-24.png and /tmp/ug3yy2UQEY/gwyddion-2.29/devel-docs/libgwydgets/html/gwy_path_level-24.png differ Binary files /tmp/6W43BMtPno/gwyddion-2.28/devel-docs/libgwydgets/html/gwy_polynom_level-24.png and /tmp/ug3yy2UQEY/gwyddion-2.29/devel-docs/libgwydgets/html/gwy_polynom_level-24.png differ diff -Nru gwyddion-2.28/devel-docs/libgwydgets/html/index.html gwyddion-2.29/devel-docs/libgwydgets/html/index.html --- gwyddion-2.28/devel-docs/libgwydgets/html/index.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwydgets/html/index.html 2012-07-20 16:59:44.000000000 +0100 @@ -15,7 +15,7 @@

- For Gwyddion 2.28. + For Gwyddion 2.29. The latest version of this document can be found on-line at http://gwyddion.net/documentation/libgwydgets/.

diff -Nru gwyddion-2.28/devel-docs/libgwydgets/html/index.sgml gwyddion-2.29/devel-docs/libgwydgets/html/index.sgml --- gwyddion-2.28/devel-docs/libgwydgets/html/index.sgml 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwydgets/html/index.sgml 2012-07-20 16:59:43.000000000 +0100 @@ -1039,6 +1039,7 @@ + diff -Nru gwyddion-2.28/devel-docs/libgwydgets/html/libgwydgets.devhelp2 gwyddion-2.29/devel-docs/libgwydgets/html/libgwydgets.devhelp2 --- gwyddion-2.28/devel-docs/libgwydgets/html/libgwydgets.devhelp2 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwydgets/html/libgwydgets.devhelp2 2012-07-20 16:59:43.000000000 +0100 @@ -717,6 +717,7 @@ + diff -Nru gwyddion-2.28/devel-docs/libgwydgets/html/libgwydgets-gwystock.html gwyddion-2.29/devel-docs/libgwydgets/html/libgwydgets-gwystock.html --- gwyddion-2.28/devel-docs/libgwydgets/html/libgwydgets-gwystock.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwydgets/html/libgwydgets-gwystock.html 2012-07-20 16:59:44.000000000 +0100 @@ -122,6 +122,7 @@ #define GWY_STOCK_PATH_LEVEL #define GWY_STOCK_POINTER_MEASURE #define GWY_STOCK_POLYNOM +#define GWY_STOCK_POLYNOM_LEVEL #define GWY_STOCK_PROFILE #define GWY_STOCK_REMOVE_UNDER_MASK #define GWY_STOCK_ROTATE @@ -998,6 +999,17 @@

+

GWY_STOCK_POLYNOM_LEVEL

+
#define GWY_STOCK_POLYNOM_LEVEL         "gwy_polynom_level"
+
+

+The "Polynom-Level" stock icon. + +

+

Since 2.29

+
+
+

GWY_STOCK_PROFILE

#define GWY_STOCK_PROFILE               "gwy_profile"
 
diff -Nru gwyddion-2.28/devel-docs/libgwydgets/html/standard-vector-layers.html gwyddion-2.29/devel-docs/libgwydgets/html/standard-vector-layers.html --- gwyddion-2.28/devel-docs/libgwydgets/html/standard-vector-layers.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwydgets/html/standard-vector-layers.html 2012-07-20 16:59:44.000000000 +0100 @@ -31,7 +31,7 @@
-

Overview

+

Overview

Vector layers, implementing means how user can draw on data views, are provided by layer modules, so that third party tools (implemented by @@ -55,7 +55,7 @@

-

GwyLayerAxis, GwySelectionAxis

+

GwyLayerAxis, GwySelectionAxis

 GObject*    g_object_new(g_type_from_name("GwyLayerAxis"), NULL);
 GObject*    g_object_new(g_type_from_name("GwySelectionAxis"), NULL);
@@ -72,12 +72,12 @@
     

-GwyLayerAxis properties

+GwyLayerAxis properties

None.

-GwySelectionAxis properties

+GwySelectionAxis properties
@@ -91,7 +91,7 @@
-

GwyLayerEllipse, GwySelectionEllipse

+

GwyLayerEllipse, GwySelectionEllipse

 GObject*    g_object_new(g_type_from_name("GwyLayerEllipse"), NULL);
 GObject*    g_object_new(g_type_from_name("GwySelectionEllipse"), NULL);
@@ -110,7 +110,7 @@
     

-GwyLayerEllipse properties

+GwyLayerEllipse properties
@@ -133,12 +133,12 @@

-GwySelectionEllipse properties

+GwySelectionEllipse properties

None.

-

GwyLayerLine, GwySelectionLine

+

GwyLayerLine, GwySelectionLine

 GObject*    g_object_new(g_type_from_name("GwyLayerLine"), NULL);
 GObject*    g_object_new(g_type_from_name("GwySelectionLine"), NULL);
@@ -157,7 +157,7 @@
     

-GwyLayerLine properties

+GwyLayerLine properties
@@ -171,12 +171,12 @@

-GwySelectionLine properties

+GwySelectionLine properties

None.

-

GwyLayerPoint, GwySelectionPoint

+

GwyLayerPoint, GwySelectionPoint

 GObject*    g_object_new(g_type_from_name("GwyLayerPoint"), NULL);
 GObject*    g_object_new(g_type_from_name("GwySelectionPoint"), NULL);
@@ -191,7 +191,7 @@
     

-GwyLayerPoint properties

+GwyLayerPoint properties
@@ -215,12 +215,12 @@

-GwySelectionPoint properties

+GwySelectionPoint properties

None.

-

GwyLayerRectangle, GwySelectionRectangle

+

GwyLayerRectangle, GwySelectionRectangle

 GObject*    g_object_new(g_type_from_name("GwyLayerRectangle"), NULL);
 GObject*    g_object_new(g_type_from_name("GwySelectionRectangle"), NULL);
@@ -240,7 +240,7 @@
     

-GwyLayerRectangle properties

+GwyLayerRectangle properties
@@ -270,7 +270,7 @@

-GwySelectionRectangle properties

+GwySelectionRectangle properties

None.

diff -Nru gwyddion-2.28/devel-docs/libgwydraw/html/index.html gwyddion-2.29/devel-docs/libgwydraw/html/index.html --- gwyddion-2.28/devel-docs/libgwydraw/html/index.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwydraw/html/index.html 2012-07-20 16:59:43.000000000 +0100 @@ -15,7 +15,7 @@

- For Gwyddion 2.28. + For Gwyddion 2.29. The latest version of this document can be found on-line at http://gwyddion.net/documentation/libgwydraw/.

diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-beyond.html gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-beyond.html --- gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-beyond.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-beyond.html 2012-07-20 16:59:44.000000000 +0100 @@ -31,7 +31,7 @@
-

Multiple Modules, Multiple Function, Multifunctions

+

Multiple Modules, Multiple Function, Multifunctions

Often one wants to implement a group of closely related functions that could share quite a bit of code. There are several posibilities how @@ -110,7 +110,7 @@

-

Settings

+

Settings

The nice thing about Gwyddion module dialog boxes is that they show the same parameter values as when you last opened @@ -205,7 +205,7 @@

-

Creating New Files, Data Fields and Graphs

+

Creating New Files, Data Fields and Graphs

Not always one wants to modify the original data instead one prefers to create a new window for the result, or the output is perhaps of diffrent @@ -353,7 +353,7 @@

-

Graphical User Interface (GUI)

+

Graphical User Interface (GUI)

You are encouraged to use the Gtk+ graphical toolkit for your module GUI. It has following advantages: diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-file.html gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-file.html --- gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-file.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-file.html 2012-07-20 16:59:44.000000000 +0100 @@ -31,7 +31,7 @@

-

Overview

+

Overview

File modules implement loading and saving of SPM files. The structure and operation of file modules will be explained on a simple but complete @@ -424,7 +424,7 @@

-

Administrative and Conventions

+

Administrative and Conventions

Beside standard headers our module includes a special header that provides some common inline functions @@ -506,7 +506,7 @@

-

Registration

+

Registration

The feature registration is similar to data processing functions, there are just no menu paths and stock icons, on the other hand there are @@ -557,7 +557,7 @@

-

Detection

+

Detection

Two types of detection exist: on load when we have the file available, and on save when the file does not exist and we know only @@ -635,7 +635,7 @@

-

Loading

+

Loading

The task of the load function is to read the file and create a GwyContainer containing all importable data. It must not assume @@ -854,7 +854,7 @@

-

Loading More

+

Loading More

Real file formats often contain more information we would like to import. First, they can contain several data fields (channels or even @@ -907,7 +907,7 @@ work across all platforms.

-

Text Data

+

Text Data

Text files can encode line ends differently from the platform Gwyddion is running on. Therefore @@ -932,7 +932,7 @@


-

Binary Data

+

Binary Data

The canonical bad example is

diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-graph.html gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-graph.html --- gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-graph.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-graph.html 2012-07-20 16:59:44.000000000 +0100 @@ -31,7 +31,7 @@
-

Graph Module Registration

+

Graph Module Registration

To be written.

diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-install.html gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-install.html --- gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-install.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-install.html 2012-07-20 16:59:44.000000000 +0100 @@ -31,7 +31,7 @@
-

Overview

+

Overview

To be written. Meanwhile you can look at the threshold-example diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-layer.html gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-layer.html --- gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-layer.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-layer.html 2012-07-20 16:59:44.000000000 +0100 @@ -31,7 +31,7 @@

-

Tool Module Registration

+

Tool Module Registration

To be written.

diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-minimal.html gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-minimal.html --- gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-minimal.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-minimal.html 2012-07-20 16:59:44.000000000 +0100 @@ -32,7 +32,7 @@
-

Module Overview

+

Module Overview

In this section we will describe a minimal Gwyddion data-processing module. @@ -160,7 +160,7 @@

-

Boilerplate

+

Boilerplate

First of all, of course, some header files.

@@ -199,7 +199,7 @@

-

Function Prototypes

+

Function Prototypes

Function prototypes of our functions.

@@ -246,7 +246,7 @@

-

The Module Info Structure

+

The Module Info Structure

Here the interesting part starts. The GwyModuleInfo structure contains overall information about the module, most of it is presented in @@ -316,7 +316,7 @@

-

The Module Query Function

+

The Module Query Function

A Gwyddion module is loaded in two stages. First, it is queried, the module responds with its module info, @@ -348,7 +348,7 @@

-

Module Feature Registration

+

Module Feature Registration

The module registration function is called in the second registration stage and is responsible for registering particular module functions, @@ -406,7 +406,7 @@

-

Executive

+

Executive

Now let's do some actuall data processing:

diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-overview.html gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-overview.html --- gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-overview.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-overview.html 2012-07-20 16:59:44.000000000 +0100 @@ -31,7 +31,7 @@
-

Module Types

+

Module Types

Gwyddion is quite a modular application. In fact, most of its basic functionallity is provided by modules. Modules @@ -104,7 +104,7 @@

-

Data Representation

+

Data Representation

The object representing a data file in Gwyddion is #GwyContainer. It is a general container that can hold values of mixes types: atomic, diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-process.html gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-process.html --- gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-process.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-process.html 2012-07-20 16:59:44.000000000 +0100 @@ -31,7 +31,7 @@

-

Run Modes

+

Run Modes

Run modes specify how a module function can be run. Data processing functions have two possible run modes. @@ -120,7 +120,7 @@

-

Masks

+

Masks

To highlight some areas in the data (like the grain modules do) you may want to use a mask. Masks are data fields too, differing only by a few @@ -197,7 +197,7 @@

-

Presentations

+

Presentations

Presentations are means to display some data derived from channel data (or even completely unrelated data) to the user instead of the actual @@ -217,7 +217,7 @@

-

Data Previews

+

Data Previews

Data previews in module dialogs are best realized with GwyDataView widget which is used for two-dimensional data displays everywhere else diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-tool.html gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-tool.html --- gwyddion-2.28/devel-docs/libgwymodule/html/gwymodule-tutorial-tool.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/gwymodule-tutorial-tool.html 2012-07-20 16:59:44.000000000 +0100 @@ -31,7 +31,7 @@

-

Tool Module Registration

+

Tool Module Registration

To be written.

diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/index.html gwyddion-2.29/devel-docs/libgwymodule/html/index.html --- gwyddion-2.28/devel-docs/libgwymodule/html/index.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/index.html 2012-07-20 16:59:44.000000000 +0100 @@ -15,7 +15,7 @@

- For Gwyddion 2.28. + For Gwyddion 2.29. The latest version of this document can be found on-line at http://gwyddion.net/documentation/libgwymodule/.

diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/libgwymodule.devhelp2 gwyddion-2.29/devel-docs/libgwymodule/html/libgwymodule.devhelp2 --- gwyddion-2.28/devel-docs/libgwymodule/html/libgwymodule.devhelp2 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/libgwymodule.devhelp2 2012-07-20 16:59:44.000000000 +0100 @@ -98,8 +98,8 @@ - - + + diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/plugin-proxy-dump.html gwyddion-2.29/devel-docs/libgwymodule/html/plugin-proxy-dump.html --- gwyddion-2.28/devel-docs/libgwymodule/html/plugin-proxy-dump.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/plugin-proxy-dump.html 2012-07-20 16:59:44.000000000 +0100 @@ -32,7 +32,7 @@
-

Purpose

+

Purpose

The dumb dump file format is used for data exchange between plug-in proxy and plug-ins. It is not and never has been intended @@ -42,7 +42,7 @@

-

Overall Structure

+

Overall Structure

The dump format consists of text lines, except for the actual data samples which are for efficiency reasons stored as arrays of (binary) @@ -59,7 +59,7 @@

-

String Data

+

String Data

The text lines have the form key=value. The keys are keys in data container @@ -90,7 +90,7 @@

-

Data Fields

+

Data Fields

The data samples themselves are stored as a sequence of binary IEEE double precision floating point numbers in little-endian byte order. @@ -138,7 +138,7 @@

-

Example

+

Example

A dump file with a single data field "/0/data" thus could look (replacing binary data with dots): @@ -186,7 +186,7 @@

-

Reference Implementations

+

Reference Implementations

A few sample dump format implementations are included in Gwyddion source distribution (see the directory @@ -200,7 +200,7 @@

-Using library implementations directly

+Using library implementations directly

Following languages can benefit from language modules: Perl, Python, and Ruby. As of Gwyddion 1.6 their @@ -224,7 +224,7 @@

-C

+C

The plug-in proxy itself is always the most complete reference C implementation. See namely @@ -238,7 +238,7 @@

-C++

+C++

A sample C++ data-processing plug-in is included in Gwyddion distribution since version 1.4. @@ -250,7 +250,7 @@

-Perl

+Perl

A Perl module Gwyddion::dump handling reading and writing dump files @@ -268,7 +268,7 @@

-Python

+Python

A Python module Gwyddion.dump handling reading and writing dump files @@ -286,7 +286,7 @@

-Ruby

+Ruby

A Ruby module gwyddion/dump handling reading and writing dump files @@ -307,7 +307,7 @@

-Pascal/Delphi

+Pascal/Delphi

A sample Pascal/Delphi data-processing plug-in is included in Gwyddion distribution since version 1.4. @@ -324,7 +324,7 @@

-FORTRAN

+FORTRAN

Work on a sample FORTRAN plug-in is in progress.

diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/plugin-proxy-file.html gwyddion-2.29/devel-docs/libgwymodule/html/plugin-proxy-file.html --- gwyddion-2.28/devel-docs/libgwymodule/html/plugin-proxy-file.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/plugin-proxy-file.html 2012-07-20 16:59:44.000000000 +0100 @@ -31,7 +31,7 @@
-

Registration

+

Registration

When the plug-in is called with register as its first argument it should dump following information to standard @@ -89,7 +89,7 @@

-

Loading

+

Loading

When the plug-in is called with load as its first argument then the second argument is the name of @@ -105,7 +105,7 @@

-

Saving

+

Saving

Saving works much like loading. When the first argument is save, then the second and third arguments are again diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/plugin-proxy-overview.html gwyddion-2.29/devel-docs/libgwymodule/html/plugin-proxy-overview.html --- gwyddion-2.28/devel-docs/libgwymodule/html/plugin-proxy-overview.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/plugin-proxy-overview.html 2012-07-20 16:59:44.000000000 +0100 @@ -31,7 +31,7 @@

-

Plug-ins Overview

+

Plug-ins Overview

Plug-ins are external programs that can be executed by Gwyddion to either perform some operation on the data or to read or write @@ -89,7 +89,7 @@

-

Plug-in Proxy

+

Plug-in Proxy

The capability to use plug-ins is not a built-in Gwyddion feature, instead it is provided a by a smart module called plug-in proxy. diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/plugin-proxy-process.html gwyddion-2.29/devel-docs/libgwymodule/html/plugin-proxy-process.html --- gwyddion-2.28/devel-docs/libgwymodule/html/plugin-proxy-process.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/plugin-proxy-process.html 2012-07-20 16:59:44.000000000 +0100 @@ -31,7 +31,7 @@

-

Registration

+

Registration

When the plug-in is called with register as its first argument it should dump following information about self to @@ -82,7 +82,7 @@

-

Data Processing

+

Data Processing

When the plug-in is called with run as its first argument then the second argument is equal to actual run mode (one of diff -Nru gwyddion-2.28/devel-docs/libgwymodule/html/plugin-proxy-rgi.html gwyddion-2.29/devel-docs/libgwymodule/html/plugin-proxy-rgi.html --- gwyddion-2.28/devel-docs/libgwymodule/html/plugin-proxy-rgi.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwymodule/html/plugin-proxy-rgi.html 2012-07-20 16:59:44.000000000 +0100 @@ -30,7 +30,7 @@

-

Overview

+

Overview

The original and standard plug-in registration procedure consists of querying (i.e., running) each plug-in by plug-in proxy on Gwyddion @@ -61,7 +61,7 @@

-

RGI registration

+

RGI registration

When plug-in proxy finds an executable plug-in, let's call it foo.exe, before trying to run it it looks for @@ -107,7 +107,7 @@

-

Problems

+

Problems

The main problem is that the contents of a RGI file must be kept up to date with corresponding plug-in, if its specification changes. diff -Nru gwyddion-2.28/devel-docs/libgwyprocess/html/index.html gwyddion-2.29/devel-docs/libgwyprocess/html/index.html --- gwyddion-2.28/devel-docs/libgwyprocess/html/index.html 2012-05-18 11:04:00.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwyprocess/html/index.html 2012-07-20 16:59:43.000000000 +0100 @@ -15,7 +15,7 @@

- For Gwyddion 2.28. + For Gwyddion 2.29. The latest version of this document can be found on-line at http://gwyddion.net/documentation/libgwydraw/.

diff -Nru gwyddion-2.28/devel-docs/libgwyprocess/html/index.sgml gwyddion-2.29/devel-docs/libgwyprocess/html/index.sgml --- gwyddion-2.28/devel-docs/libgwyprocess/html/index.sgml 2012-05-18 11:04:00.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwyprocess/html/index.sgml 2012-07-20 16:59:43.000000000 +0100 @@ -538,6 +538,7 @@ + diff -Nru gwyddion-2.28/devel-docs/libgwyprocess/html/libgwyprocess.devhelp2 gwyddion-2.29/devel-docs/libgwyprocess/html/libgwyprocess.devhelp2 --- gwyddion-2.28/devel-docs/libgwyprocess/html/libgwyprocess.devhelp2 2012-05-18 11:04:00.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwyprocess/html/libgwyprocess.devhelp2 2012-07-20 16:59:43.000000000 +0100 @@ -457,6 +457,7 @@ + diff -Nru gwyddion-2.28/devel-docs/libgwyprocess/html/libgwyprocess-stats.html gwyddion-2.29/devel-docs/libgwyprocess/html/libgwyprocess-stats.html --- gwyddion-2.28/devel-docs/libgwyprocess/html/libgwyprocess-stats.html 2012-05-18 11:04:01.000000000 +0100 +++ gwyddion-2.29/devel-docs/libgwyprocess/html/libgwyprocess-stats.html 2012-07-20 16:59:43.000000000 +0100 @@ -119,6 +119,14 @@ gint row, gint width, gint height); +gdouble gwy_data_field_area_get_grainwise_rms + (GwyDataField *data_field, + GwyDataField *mask, + GwyMaskingType mode, + gint col, + gint row, + gint width, + gint height); void gwy_data_field_area_get_inclination (GwyDataField *data_field, gint col, gint row, @@ -1030,6 +1038,66 @@

+

gwy_data_field_area_get_grainwise_rms ()

+
gdouble             gwy_data_field_area_get_grainwise_rms
+                                                        (GwyDataField *data_field,
+                                                         GwyDataField *mask,
+                                                         GwyMaskingType mode,
+                                                         gint col,
+                                                         gint row,
+                                                         gint width,
+                                                         gint height);
+

+Computes grain-wise root mean square value of deviations of a rectangular +part of a data field. +

+

+Grain-wise means that the mean value is determined for each grain (i.e. +cotinguous part of the mask or inverted mask) separately and the deviations +are calculated from these mean values. +

+
++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

data_field :

A data field.

mask :

Mask specifying which values to take into account/exclude, or NULL.

mode :

Masking mode to use. See the introduction for description of +masking modes.

col :

Upper-left column coordinate.

row :

Upper-left row coordinate.

width :

Area width (number of columns).

height :

Area height (number of rows).

Returns :

The root mean square value of deviations from the mean value.
+

Since 2.29

+
+
+

gwy_data_field_area_get_inclination ()

void                gwy_data_field_area_get_inclination (GwyDataField *data_field,
                                                          gint col,
diff -Nru gwyddion-2.28/gwyddion.spec gwyddion-2.29/gwyddion.spec
--- gwyddion-2.28/gwyddion.spec	2012-05-18 11:02:12.000000000 +0100
+++ gwyddion-2.29/gwyddion.spec	2012-07-20 16:59:32.000000000 +0100
@@ -1,4 +1,4 @@
-# @(#) $Id: gwyddion.spec.in 13463 2012-05-16 11:47:35Z yeti-dn $
+# @(#) $Id: gwyddion.spec.in 13527 2012-06-07 12:16:33Z yeti-dn $
 # Optional features:
 #   --with-kde4-thumbnailer    Enables the kde4-thumbnailer subpackage (and
 #                              introduces lots of new dependencies).
@@ -8,7 +8,7 @@
 %define enable_kde4_thumbnailer %{?_with_kde4_thumbnailer:1}%{!?_with_kde4_thumbnailer:0}
 
 Name:          gwyddion
-Version:       2.28
+Version:       2.29
 Release:       1
 Summary:       An SPM data visualization and analysis tool
 
@@ -26,7 +26,6 @@
 BuildRequires: gtkglext-devel
 BuildRequires: libxml2-devel
 BuildRequires: zlib-devel
-BuildRequires: python-devel >= 2.2
 BuildRequires: ruby >= 1.8
 BuildRequires: gettext
 BuildRequires: desktop-file-utils >= 0.9
@@ -41,6 +40,7 @@
 BuildRequires: minizip-devel
 %define fftw3 fftw
 %define fftw3devel fftw-devel
+%define python2devel python2-devel
 %define kde4libs kdelibs
 %define configureopts %{nil}
 %endif
@@ -77,6 +77,12 @@
 %define fftw3devel fftw-devel
 %endif
 
+# Ditto for the python development package.
+%define python2undefined %{?python2devel:0}%{!?python2devel:1}
+%if %{python2undefined}
+%define python2devel python-devel
+%endif
+
 %if %{enable_kde4_thumbnailer}
 BuildRequires: %{kde4libs}-devel >= 4.0
 %endif
@@ -86,6 +92,7 @@
 %else
 BuildRequires: %{fftw3devel} >= 3.1
 %endif
+BuildRequires: %{python2devel} >= 2.2
 # Fedora guarantees these two, other may not
 BuildRequires: perl >= 5.005
 BuildRequires: sed
@@ -273,11 +280,11 @@
 %dir %{pkglibdir}/modules
 %dir %{pkglibdir}
 %{_libdir}/*.so.*
+%{python_sitearch}/gwy.so
 %{_datadir}/applications/%{name}.desktop
 %{_datadir}/mime/packages/%{name}.xml
 %{_datadir}/thumbnailers/%{name}.thumbnailer
 
-
 %files devel
 %defattr(-,root,root)
 %doc devel-docs/CODING-STANDARDS
diff -Nru gwyddion-2.28/libgwyddion/gwyversion.h gwyddion-2.29/libgwyddion/gwyversion.h
--- gwyddion-2.28/libgwyddion/gwyversion.h	2012-05-18 11:02:10.000000000 +0100
+++ gwyddion-2.29/libgwyddion/gwyversion.h	2012-07-20 16:59:30.000000000 +0100
@@ -26,8 +26,8 @@
 G_BEGIN_DECLS
 
 #define GWY_VERSION_MAJOR 2
-#define GWY_VERSION_MINOR 28
-#define GWY_VERSION_STRING "2.28"
+#define GWY_VERSION_MINOR 29
+#define GWY_VERSION_STRING "2.29"
 
 gint gwy_version_major(void);
 gint gwy_version_minor(void);
diff -Nru gwyddion-2.28/libgwydgets/gwy3dwindow.c gwyddion-2.29/libgwydgets/gwy3dwindow.c
--- gwyddion-2.28/libgwydgets/gwy3dwindow.c	2011-12-08 19:25:39.000000000 +0000
+++ gwyddion-2.29/libgwydgets/gwy3dwindow.c	2012-07-19 21:11:43.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: gwy3dwindow.c 13158 2011-12-08 19:25:37Z yeti-dn $
+ *  @(#) $Id: gwy3dwindow.c 13584 2012-07-16 10:10:00Z yeti-dn $
  *  Copyright (C) 2004 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -778,7 +778,7 @@
                                        FALSE);
     spin = gwy_table_attach_spinbutton(table, row++,
                                        _("_Value scale:"), NULL, adj);
-    gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 3);
+    gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 5);
 
     button = gtk_button_new_with_mnemonic(_("Make _1:1"));
     gtk_table_attach(GTK_TABLE(table), button,
diff -Nru gwyddion-2.28/libgwydgets/gwygraphcurves.c gwyddion-2.29/libgwydgets/gwygraphcurves.c
--- gwyddion-2.28/libgwydgets/gwygraphcurves.c	2011-07-11 15:52:02.000000000 +0100
+++ gwyddion-2.29/libgwydgets/gwygraphcurves.c	2012-07-19 21:11:43.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: gwygraphcurves.c 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  @(#) $Id: gwygraphcurves.c 13541 2012-06-13 17:13:03Z yeti-dn $
  *  Copyright (C) 2007 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -411,7 +411,7 @@
                     gtk_tree_model_get(combomodel, &comboiter,
                                        COMBO_COLUMN_NAME, &s,
                                        -1);
-                    g_object_set(renderer, "text", s, NULL);
+                    g_object_set(renderer, "text", gwy_sgettext(s), NULL);
                     g_free(s);
                 }
                 else if (GTK_IS_CELL_RENDERER_PIXBUF(renderer)) {
diff -Nru gwyddion-2.28/libgwydgets/gwyradiobuttons.c gwyddion-2.29/libgwydgets/gwyradiobuttons.c
--- gwyddion-2.28/libgwydgets/gwyradiobuttons.c	2011-07-11 15:52:02.000000000 +0100
+++ gwyddion-2.29/libgwydgets/gwyradiobuttons.c	2012-07-19 21:11:43.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: gwyradiobuttons.c 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  @(#) $Id: gwyradiobuttons.c 13552 2012-06-20 09:37:32Z yeti-dn $
  *  Copyright (C) 2003 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -59,7 +59,8 @@
     for (i = nentries-1; i >= 0; i--) {
         if (translate)
             button = gtk_radio_button_new_with_mnemonic_from_widget
-                                (GTK_RADIO_BUTTON(button), _(entries[i].name));
+                                (GTK_RADIO_BUTTON(button),
+                                 gwy_sgettext(entries[i].name));
         else
             button = gtk_radio_button_new_with_mnemonic_from_widget
                                    (GTK_RADIO_BUTTON(button), entries[i].name);
diff -Nru gwyddion-2.28/libgwydgets/gwystock.c gwyddion-2.29/libgwydgets/gwystock.c
--- gwyddion-2.28/libgwydgets/gwystock.c	2011-07-11 15:52:02.000000000 +0100
+++ gwyddion-2.29/libgwydgets/gwystock.c	2012-07-19 21:11:43.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: gwystock.c 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  @(#) $Id: gwystock.c 13536 2012-06-11 14:46:29Z yeti-dn $
  *  Copyright (C) 2003 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -891,6 +891,15 @@
  **/
 
 /**
+ * GWY_STOCK_POLYNOM_LEVEL:
+ *
+ * The "Polynom-Level" stock icon.
+ * 
+ *
+ * Since: 2.29
+ **/
+
+/**
  * GWY_STOCK_PROFILE:
  *
  * The "Profile" stock icon.
diff -Nru gwyddion-2.28/libgwydgets/gwystock.h gwyddion-2.29/libgwydgets/gwystock.h
--- gwyddion-2.28/libgwydgets/gwystock.h	2012-03-29 13:35:57.000000000 +0100
+++ gwyddion-2.29/libgwydgets/gwystock.h	2012-07-19 21:11:43.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: gwystock.h 13351 2012-03-29 09:23:12Z yeti-dn $
+ *  @(#) $Id: gwystock.h 13536 2012-06-11 14:46:29Z yeti-dn $
  *  Copyright (C) 2003 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -109,6 +109,7 @@
 #define GWY_STOCK_PATH_LEVEL            "gwy_path_level"
 #define GWY_STOCK_POINTER_MEASURE       "gwy_pointer_measure"
 #define GWY_STOCK_POLYNOM               "gwy_polynom"
+#define GWY_STOCK_POLYNOM_LEVEL         "gwy_polynom_level"
 #define GWY_STOCK_PROFILE               "gwy_profile"
 #define GWY_STOCK_REMOVE_UNDER_MASK     "gwy_remove_under_mask"
 #define GWY_STOCK_ROTATE                "gwy_rotate"
diff -Nru gwyddion-2.28/libgwydgets/Makefile.am gwyddion-2.29/libgwydgets/Makefile.am
--- gwyddion-2.28/libgwydgets/Makefile.am	2011-12-17 00:22:32.000000000 +0000
+++ gwyddion-2.29/libgwydgets/Makefile.am	2012-07-20 11:31:01.000000000 +0100
@@ -1,4 +1,4 @@
-# @(#) $Id: Makefile.am 13234 2011-12-17 00:20:27Z yeti-dn $
+# @(#) $Id: Makefile.am 13615 2012-07-20 10:31:00Z yeti-dn $
 
 libgwyddion = $(top_builddir)/libgwyddion/libgwyddion2.la
 libgwyprocess = $(top_builddir)/libprocess/libgwyprocess2.la
@@ -114,7 +114,7 @@
 # Any iface change    C++: 0:   A
 # Adding ifaces       C:   R:   A++
 # Changing ifaces     C:   R:   0
-libversion = -version-info 11:0:11
+libversion = -version-info 12:0:12
 #libversion = -release @LIBRARY_RELEASE@
 libgwydgets2_la_LDFLAGS = @GTKGLEXT_LIBS@ @BASIC_LIBS@ -export-dynamic $(no_undefined) $(export_symbols) $(libversion)
 libgwydgets2_la_LIBADD = $(libgwydgets_libadd)
diff -Nru gwyddion-2.28/libgwydgets/Makefile.in gwyddion-2.29/libgwydgets/Makefile.in
--- gwyddion-2.28/libgwydgets/Makefile.in	2012-05-18 11:02:06.000000000 +0100
+++ gwyddion-2.29/libgwydgets/Makefile.in	2012-07-20 16:59:25.000000000 +0100
@@ -15,7 +15,7 @@
 
 @SET_MAKE@
 
-# @(#) $Id: Makefile.am 13234 2011-12-17 00:20:27Z yeti-dn $
+# @(#) $Id: Makefile.am 13615 2012-07-20 10:31:00Z yeti-dn $
 
 # Generic glib-mkenum rules.
 # @(#) $Id: mkenum.mk 11705 2011-01-03 08:32:55Z yeti-dn $
@@ -521,7 +521,7 @@
 # Any iface change    C++: 0:   A
 # Adding ifaces       C:   R:   A++
 # Changing ifaces     C:   R:   0
-libversion = -version-info 11:0:11
+libversion = -version-info 12:0:12
 #libversion = -release @LIBRARY_RELEASE@
 libgwydgets2_la_LDFLAGS = @GTKGLEXT_LIBS@ @BASIC_LIBS@ -export-dynamic $(no_undefined) $(export_symbols) $(libversion)
 libgwydgets2_la_LIBADD = $(libgwydgets_libadd)
diff -Nru gwyddion-2.28/libgwymodule/gwymodule-file.c gwyddion-2.29/libgwymodule/gwymodule-file.c
--- gwyddion-2.28/libgwymodule/gwymodule-file.c	2011-07-11 15:52:01.000000000 +0100
+++ gwyddion-2.29/libgwymodule/gwymodule-file.c	2012-07-19 21:11:27.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: gwymodule-file.c 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  @(#) $Id: gwymodule-file.c 13561 2012-07-09 12:05:52Z yeti-dn $
  *  Copyright (C) 2003,2004 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -853,15 +853,21 @@
     FileTypeInfo *fti;
 
     fti = gwy_file_type_info_get(data, FALSE);
-    if (!fti)
-        return FALSE;
+    if (fti) {
+        if (name)
+            *name = g_quark_to_string(fti->name);
+        if (filename_sys)
+            *filename_sys = fti->filename_sys;
+
+        return TRUE;
+    }
 
     if (name)
-        *name = g_quark_to_string(fti->name);
+        *name = NULL;
     if (filename_sys)
-        *filename_sys = fti->filename_sys;
+        *filename_sys = NULL;
 
-    return TRUE;
+    return FALSE;
 }
 
 /**
diff -Nru gwyddion-2.28/libgwymodule/Makefile.am gwyddion-2.29/libgwymodule/Makefile.am
--- gwyddion-2.28/libgwymodule/Makefile.am	2011-06-05 18:46:52.000000000 +0100
+++ gwyddion-2.29/libgwymodule/Makefile.am	2012-07-20 11:31:01.000000000 +0100
@@ -1,4 +1,4 @@
-# @(#) $Id: Makefile.am 12507 2011-06-05 11:34:50Z yeti-dn $
+# @(#) $Id: Makefile.am 13615 2012-07-20 10:31:00Z yeti-dn $
 
 libgwyddion = $(top_builddir)/libgwyddion/libgwyddion2.la
 libgwyprocess = $(top_builddir)/libprocess/libgwyprocess2.la
@@ -68,7 +68,7 @@
 # Any iface change    C++: 0:   A
 # Adding ifaces       C:   R:   A++
 # Changing ifaces     C:   R:   0
-libversion = -version-info 5:0:5
+libversion = -version-info 5:1:5
 #libversion = -release @LIBRARY_RELEASE@
 libgwymodule2_la_LDFLAGS = @GMODULE_LIBS@ @GTK_LIBS@ @BASIC_LIBS@  -export-dynamic $(no_undefined) $(export_symbols) $(libversion)
 libgwymodule2_la_LIBADD = $(libgwymodule_libadd)
diff -Nru gwyddion-2.28/libgwymodule/Makefile.in gwyddion-2.29/libgwymodule/Makefile.in
--- gwyddion-2.28/libgwymodule/Makefile.in	2012-05-18 11:02:06.000000000 +0100
+++ gwyddion-2.29/libgwymodule/Makefile.in	2012-07-20 16:59:25.000000000 +0100
@@ -15,7 +15,7 @@
 
 @SET_MAKE@
 
-# @(#) $Id: Makefile.am 12507 2011-06-05 11:34:50Z yeti-dn $
+# @(#) $Id: Makefile.am 13615 2012-07-20 10:31:00Z yeti-dn $
 
 # Generic glib-mkenum rules.
 # @(#) $Id: mkenum.mk 11705 2011-01-03 08:32:55Z yeti-dn $
@@ -434,7 +434,7 @@
 # Any iface change    C++: 0:   A
 # Adding ifaces       C:   R:   A++
 # Changing ifaces     C:   R:   0
-libversion = -version-info 5:0:5
+libversion = -version-info 5:1:5
 #libversion = -release @LIBRARY_RELEASE@
 libgwymodule2_la_LDFLAGS = @GMODULE_LIBS@ @GTK_LIBS@ @BASIC_LIBS@  -export-dynamic $(no_undefined) $(export_symbols) $(libversion)
 libgwymodule2_la_LIBADD = $(libgwymodule_libadd)
diff -Nru gwyddion-2.28/libprocess/Makefile.am gwyddion-2.29/libprocess/Makefile.am
--- gwyddion-2.28/libprocess/Makefile.am	2012-04-16 09:08:15.000000000 +0100
+++ gwyddion-2.29/libprocess/Makefile.am	2012-07-20 11:31:01.000000000 +0100
@@ -1,4 +1,4 @@
-# @(#) $Id: Makefile.am 13391 2012-04-16 08:08:14Z yeti-dn $
+# @(#) $Id: Makefile.am 13615 2012-07-20 10:31:00Z yeti-dn $
 
 libgwyddion = $(top_builddir)/libgwyddion/libgwyddion2.la
 
@@ -84,7 +84,7 @@
 # Any iface change    C++: 0:   A
 # Adding ifaces       C:   R:   A++
 # Changing ifaces     C:   R:   0
-libversion = -version-info 13:1:13
+libversion = -version-info 14:0:14
 #libversion = -release @LIBRARY_RELEASE@
 libgwyprocess2_la_LDFLAGS = @BASIC_LIBS@ @FFTW3_LIBS@ -export-dynamic $(no_undefined) $(export_symbols) $(libversion)
 libgwyprocess2_la_LIBADD = $(libgwyprocess_libadd)
diff -Nru gwyddion-2.28/libprocess/Makefile.in gwyddion-2.29/libprocess/Makefile.in
--- gwyddion-2.28/libprocess/Makefile.in	2012-05-18 11:02:06.000000000 +0100
+++ gwyddion-2.29/libprocess/Makefile.in	2012-07-20 16:59:25.000000000 +0100
@@ -15,7 +15,7 @@
 
 @SET_MAKE@
 
-# @(#) $Id: Makefile.am 13391 2012-04-16 08:08:14Z yeti-dn $
+# @(#) $Id: Makefile.am 13615 2012-07-20 10:31:00Z yeti-dn $
 
 # Generic glib-mkenum rules.
 # @(#) $Id: mkenum.mk 11705 2011-01-03 08:32:55Z yeti-dn $
@@ -455,7 +455,7 @@
 # Any iface change    C++: 0:   A
 # Adding ifaces       C:   R:   A++
 # Changing ifaces     C:   R:   0
-libversion = -version-info 13:1:13
+libversion = -version-info 14:0:14
 #libversion = -release @LIBRARY_RELEASE@
 libgwyprocess2_la_LDFLAGS = @BASIC_LIBS@ @FFTW3_LIBS@ -export-dynamic $(no_undefined) $(export_symbols) $(libversion)
 libgwyprocess2_la_LIBADD = $(libgwyprocess_libadd)
diff -Nru gwyddion-2.28/libprocess/stats.c gwyddion-2.29/libprocess/stats.c
--- gwyddion-2.28/libprocess/stats.c	2011-07-11 15:52:02.000000000 +0100
+++ gwyddion-2.29/libprocess/stats.c	2012-07-19 21:11:45.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: stats.c 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  @(#) $Id: stats.c 13516 2012-06-05 09:04:49Z yeti-dn $
  *  Copyright (C) 2003-2009 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -833,9 +833,6 @@
     const gdouble *datapos, *mpos;
     guint nn;
 
-    if (width == 0 || height == 0)
-        return rms;
-
     g_return_val_if_fail(GWY_IS_DATA_FIELD(dfield), rms);
     g_return_val_if_fail(!mask || (GWY_IS_DATA_FIELD(mask)
                                    && mask->xres == dfield->xres
@@ -905,6 +902,123 @@
 
     return rms;
 }
+
+/**
+ * gwy_data_field_area_get_grainwise_rms:
+ * @data_field: A data field.
+ * @mask: Mask specifying which values to take into account/exclude, or %NULL.
+ * @mode: Masking mode to use.  See the introduction for description of
+ *        masking modes.
+ * @col: Upper-left column coordinate.
+ * @row: Upper-left row coordinate.
+ * @width: Area width (number of columns).
+ * @height: Area height (number of rows).
+ *
+ * Computes grain-wise root mean square value of deviations of a rectangular
+ * part of a data field.
+ *
+ * Grain-wise means that the mean value is determined for each grain (i.e.
+ * cotinguous part of the mask or inverted mask) separately and the deviations
+ * are calculated from these mean values.
+ *
+ * Returns: The root mean square value of deviations from the mean value.
+ *
+ * Since: 2.29
+ **/
+gdouble
+gwy_data_field_area_get_grainwise_rms(GwyDataField *dfield,
+                                      GwyDataField *mask,
+                                      GwyMaskingType mode,
+                                      gint col,
+                                      gint row,
+                                      gint width,
+                                      gint height)
+{
+    GwyDataField *grainmask;
+    gint *grains, *size, *g;
+    gint i, j, n;
+    gint xres, yres, ngrains;
+    gdouble *m;
+    const gdouble *datapos;
+    gdouble rms = 0.0;
+
+    g_return_val_if_fail(GWY_IS_DATA_FIELD(dfield), rms);
+    xres = dfield->xres;
+    yres = dfield->yres;
+    g_return_val_if_fail(!mask || (GWY_IS_DATA_FIELD(mask)
+                                   && mask->xres == xres
+                                   && mask->yres == yres),
+                         rms);
+    g_return_val_if_fail(col >= 0 && row >= 0
+                         && width >= 0 && height >= 0
+                         && col + width <= xres
+                         && row + height <= yres,
+                         rms);
+    if (!width || !height)
+        return rms;
+
+    if (!mask || mode == GWY_MASK_IGNORE)
+        return gwy_data_field_area_get_rms_mask(dfield, NULL,
+                                                GWY_MASK_IGNORE,
+                                                col, row, width, height);
+
+    if (mode == GWY_MASK_INCLUDE) {
+        if (col == 0 && row == 0 && width == xres && height == yres)
+            grainmask = (GwyDataField*)g_object_ref(mask);
+        else
+            grainmask = gwy_data_field_area_extract(mask,
+                                                    col, row, width, height);
+    }
+    else {
+        grainmask = gwy_data_field_area_extract(mask, col, row, width, height);
+        gwy_data_field_multiply(grainmask, -1.0);
+        gwy_data_field_add(grainmask, 1.0);
+    }
+
+    grains = g_new0(gint, width*height);
+    ngrains = gwy_data_field_number_grains(grainmask, grains);
+    if (!ngrains) {
+        g_free(grains);
+        g_object_unref(grainmask);
+        return rms;
+    }
+
+    m = g_new0(gdouble, ngrains+1);
+    size = g_new0(gint, ngrains+1);
+    datapos = dfield->data + row*xres + col;
+    g = grains;
+    for (i = 0; i < height; i++) {
+        for (j = 0; j < width; j++, g++) {
+            m[*g] += datapos[i*xres + j];
+            size[*g]++;
+        }
+    }
+
+    n = 0;
+    for (i = 1; i <= ngrains; i++) {
+        m[i] /= size[i];
+        n += size[i];
+    }
+
+    g = grains;
+    rms = 0.0;
+    for (i = 0; i < height; i++) {
+        for (j = 0; j < width; j++, g++) {
+            if (*g) {
+                gdouble d = datapos[i*xres + j] - m[*g];
+                rms += d*d;
+            }
+        }
+    }
+    rms = sqrt(rms/n);
+
+    g_free(size);
+    g_free(m);
+    g_free(grains);
+    g_object_unref(grainmask);
+
+    return rms;
+}
 
 /**
  * gwy_data_field_get_autorange:
diff -Nru gwyddion-2.28/libprocess/stats.h gwyddion-2.29/libprocess/stats.h
--- gwyddion-2.28/libprocess/stats.h	2011-07-11 15:52:02.000000000 +0100
+++ gwyddion-2.29/libprocess/stats.h	2012-07-19 21:11:45.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: stats.h 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  @(#) $Id: stats.h 13516 2012-06-05 09:04:49Z yeti-dn $
  *  Copyright (C) 2003-2009 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -96,6 +96,13 @@
                                              gint row,
                                              gint width,
                                              gint height);
+gdouble gwy_data_field_area_get_grainwise_rms(GwyDataField *data_field,
+                                              GwyDataField *mask,
+                                              GwyMaskingType mode,
+                                              gint col,
+                                              gint row,
+                                              gint width,
+                                              gint height);
 #ifndef GWY_DISABLE_DEPRECATED
 gdouble gwy_data_field_area_get_sum         (GwyDataField *data_field,
                                              GwyDataField *mask,
diff -Nru gwyddion-2.28/m4/gwy-python.m4 gwyddion-2.29/m4/gwy-python.m4
--- gwyddion-2.28/m4/gwy-python.m4	2007-10-18 14:06:12.000000000 +0100
+++ gwyddion-2.29/m4/gwy-python.m4	2012-07-19 21:11:21.000000000 +0100
@@ -15,6 +15,11 @@
 AC_REQUIRE([AM_PATH_PYTHON])dnl
 AC_SUBST([PYTHON_SYSCFG_$1])
 AC_MSG_CHECKING([for python build option $1])
+if test -n "PYTHON_SYSCFG_$1"; then
+  AC_MSG_RESULT([$PYTHON_SYSCFG_$1])
+  export PYTHON_SYSCFG_$1
+  $2
+else
 cat >conftest.py <<\_______EOF
 import sys, distutils.sysconfig
 x = sys.argv[[1]].strip()
@@ -39,5 +44,6 @@
   $3
 fi
 rm -f conftest.py conftest.err conftest.file
+fi
 ])
 
diff -Nru gwyddion-2.28/modules/file/nanoscantech.c gwyddion-2.29/modules/file/nanoscantech.c
--- gwyddion-2.28/modules/file/nanoscantech.c	2012-04-23 10:42:05.000000000 +0100
+++ gwyddion-2.29/modules/file/nanoscantech.c	2012-07-19 21:11:31.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  $Id: nanoscantech.c 13404 2012-04-23 07:49:58Z dn2010 $
+ *  $Id: nanoscantech.c 13542 2012-06-14 19:41:36Z dn2010 $
  *  Copyright (C) 2012 David Necas (Yeti), Daniil Bratashov (dn2010).
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -205,6 +205,10 @@
                     g_free(strkey);
                 }
             }
+            else if (gwy_strequal(line, "4d")) {
+                /* Raman images */
+                gwy_debug("4d: %u\n", channelno);
+            }
 
             g_free(buffer);
             channelno++;
@@ -225,7 +229,7 @@
 static GwyDataField *nst_read_3d(const gchar *buffer, gchar **title)
 {
     GwyDataField *dfield = NULL;
-    GwySIUnit *siunitxy, *siunitz;
+    GwySIUnit *siunitxy = NULL, *siunitz = NULL;
     gchar *p, *line;
     gchar **lineparts;
     gint x, y, xmax = 0, ymax = 0, i, j;
diff -Nru gwyddion-2.28/modules/file/nanoscope.c gwyddion-2.29/modules/file/nanoscope.c
--- gwyddion-2.28/modules/file/nanoscope.c	2012-03-14 11:11:20.000000000 +0000
+++ gwyddion-2.29/modules/file/nanoscope.c	2012-07-19 21:11:31.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: nanoscope.c 13295 2012-02-09 14:13:06Z yeti-dn $
+ *  @(#) $Id: nanoscope.c 13548 2012-06-17 08:48:34Z yeti-dn $
  *  Copyright (C) 2004-2011 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -113,8 +113,8 @@
 static GwyDataField*   hash_to_data_field     (GHashTable *hash,
                                                GHashTable *scannerlist,
                                                GHashTable *scanlist,
+                                               GHashTable *contrlist,
                                                NanoscopeFileType file_type,
-                                               gboolean has_version,
                                                guint bufsize,
                                                gchar *buffer,
                                                gint gxres,
@@ -147,7 +147,7 @@
 static GwySIUnit*      get_physical_scale     (GHashTable *hash,
                                                GHashTable *scannerlist,
                                                GHashTable *scanlist,
-                                               gboolean has_version,
+                                               GHashTable *contrlist,
                                                gdouble *scale,
                                                GError **error);
 static GwySIUnit*      get_tuna_physical_scale(GHashTable *hash,
@@ -165,7 +165,7 @@
     N_("Imports Veeco (Digital Instruments) Nanoscope data files, "
        "version 3 or newer."),
     "Yeti ",
-    "0.29",
+    "0.30",
     "David Nečas (Yeti) & Petr Klapetek",
     "2004",
 };
@@ -217,10 +217,11 @@
     NanoscopeFileType file_type;
     NanoscopeData *ndata;
     NanoscopeValue *val;
-    GHashTable *hash, *scannerlist = NULL, *scanlist = NULL, *forcelist = NULL;
+    GHashTable *hash, *scannerlist = NULL, *scanlist = NULL, *forcelist = NULL,
+               *contrlist = NULL;
     GList *l, *list = NULL;
     gint i, xres = 0, yres = 0;
-    gboolean ok, has_version = FALSE;
+    gboolean ok;
 
     if (!g_file_get_contents(filename, &buffer, &size, &err)) {
         err_GET_FILE_CONTENTS(error, &err);
@@ -289,8 +290,10 @@
             continue;
         }
         if (gwy_strequal(self, "File list")) {
-            has_version = !!g_hash_table_lookup(hash, "Version");
-            gwy_debug("has Version: %d", has_version);
+            continue;
+        }
+        if (gwy_strequal(self, "Controller list")) {
+            contrlist = hash;
             continue;
         }
         if (gwy_stramong(self, "Ciao scan list", "Afm list", "Stm list",
@@ -317,7 +320,8 @@
         }
         else {
             ndata->data_field = hash_to_data_field(hash, scannerlist, scanlist,
-                                                   file_type, has_version,
+                                                   contrlist,
+                                                   file_type,
                                                    size, buffer,
                                                    xres, yres,
                                                    &p, error);
@@ -478,8 +482,8 @@
 hash_to_data_field(GHashTable *hash,
                    GHashTable *scannerlist,
                    GHashTable *scanlist,
+                   GHashTable *contrlist,
                    NanoscopeFileType file_type,
-                   gboolean has_version,
                    guint bufsize,
                    gchar *buffer,
                    gint gxres,
@@ -614,8 +618,7 @@
     }
 
     q = 1.0;
-    unitz = get_physical_scale(hash, scannerlist, scanlist, has_version,
-                               &q, error);
+    unitz = get_physical_scale(hash, scannerlist, scanlist, contrlist, &q, error);
     if (!unitz)
         return NULL;
 
@@ -651,11 +654,18 @@
     return dfield;
 }
 
+#define CHECK_AND_APPLY(op, hash, key)                     \
+        if (!(val = g_hash_table_lookup((hash), (key)))) { \
+            err_MISSING_FIELD(error, (key));               \
+            return NULL;                                   \
+        }                                                  \
+        *scale op val->hard_value
+
 static GwySIUnit*
 get_physical_scale(GHashTable *hash,
                    GHashTable *scannerlist,
                    GHashTable *scanlist,
-                   gboolean has_version,
+                   GHashTable *contrlist,
                    gdouble *scale,
                    GError **error)
 {
@@ -664,91 +674,111 @@
     gchar *key;
     gint q;
 
-    /* Very old style scales (files without Version field) */
-    if (!has_version) {
-        if (!(val = g_hash_table_lookup(hash, "Z magnify image"))) {
-            err_MISSING_FIELD(error, "Z magnify image");
-            return NULL;
-        }
-
-        /* TODO: Luminescence */
-        siunit = gwy_si_unit_new("m");
-        /* According to Markus, the units are 1/100 nm, but his scale
-         * calculation is raw/655.36 [nm].  We have the factor 1/65536 applied
-         * automatically, that gives 1e-7 [m].  Whatever. */
-        *scale = 1e-7 * val->hard_value;
-        return siunit;
-    }
-
-    /* XXX: This is a damned heuristics.  For some value types we try to guess
-     * a different quantity scale to look up. */
-    if (!(val = g_hash_table_lookup(hash, "@2:Z scale"))) {
-        if (!(val = g_hash_table_lookup(hash, "Z scale"))) {
-            err_MISSING_FIELD(error, "Z scale");
-            return NULL;
-        }
-
+    /* version = 4.2 */
+    if ((val = g_hash_table_lookup(hash, "Z scale"))) {
         /* Old style scales */
         gwy_debug("Old-style scale, using hard units %g %s",
                   val->hard_value, val->hard_value_units);
         siunit = gwy_si_unit_new_parse(val->hard_value_units, &q);
         *scale = val->hard_value * pow10(q);
         return siunit;
+
     }
+    /* version >= 4.3 */
+    else if ((val = g_hash_table_lookup(hash, "@2:Z scale"))) {
+        /* Resolve reference to a soft scale */
+        if (val->soft_scale) {
+            key = g_strdup_printf("@%s", val->soft_scale);
+
+            if (!(sval = g_hash_table_lookup(scannerlist, key))
+                && (!scanlist
+                    || !(sval = g_hash_table_lookup(scanlist, key)))) {
+                g_warning("`%s' not found", key);
+                g_free(key);
+                /* XXX */
+                *scale = val->hard_value;
+                return gwy_si_unit_new("");
+            }
 
-    /* Resolve reference to a soft scale */
-    if (val->soft_scale) {
-        key = g_strdup_printf("@%s", val->soft_scale);
-
-        if (!(sval = g_hash_table_lookup(scannerlist, key))
-            && (!scanlist || !(sval = g_hash_table_lookup(scanlist, key)))) {
-            g_warning("`%s' not found", key);
+            *scale = val->hard_value*sval->hard_value;
+            gwy_debug("Hard-value scale %g (%g * %g)",
+                      *scale, val->hard_value, sval->hard_value);
+
+            if (!sval->hard_value_units || !*sval->hard_value_units) {
+                gwy_debug("No hard value units");
+                if (gwy_strequal(val->soft_scale, "Sens. Phase"))
+                    siunit = gwy_si_unit_new("deg");
+                else
+                    siunit = gwy_si_unit_new("V");
+            }
+            else {
+                siunit = gwy_si_unit_new_parse(sval->hard_value_units, &q);
+                if (val->hard_value_units && *val->hard_value_units) {
+                    siunit2 = gwy_si_unit_new(val->hard_value_units);
+                }
+                else
+                    siunit2 = gwy_si_unit_new("V");
+                gwy_si_unit_multiply(siunit, siunit2, siunit);
+                gwy_debug("Scale1 = %g V/LSB", val->hard_value);
+                gwy_debug("Scale2 = %g %s",
+                          sval->hard_value, sval->hard_value_units);
+                *scale *= pow10(q);
+                gwy_debug("Total scale = %g %s/LSB",
+                          *scale,
+                          gwy_si_unit_get_string(siunit,
+                                                 GWY_SI_UNIT_FORMAT_PLAIN));
+                g_object_unref(siunit2);
+            }
             g_free(key);
-            /* XXX */
-            *scale = val->hard_value;
-            return gwy_si_unit_new("");
-        }
-
-        *scale = val->hard_value*sval->hard_value;
-        gwy_debug("Hard-value scale %g (%g * %g)",
-                  *scale, val->hard_value, sval->hard_value);
-
-        if (!sval->hard_value_units || !*sval->hard_value_units) {
-            gwy_debug("No hard value units");
-            if (gwy_strequal(val->soft_scale, "Sens. Phase"))
-                siunit = gwy_si_unit_new("deg");
-            else
-                siunit = gwy_si_unit_new("V");
         }
         else {
-            siunit = gwy_si_unit_new_parse(sval->hard_value_units, &q);
-            if (val->hard_value_units && *val->hard_value_units) {
-                siunit2 = gwy_si_unit_new(val->hard_value_units);
-            }
-            else
-                siunit2 = gwy_si_unit_new("V");
-            gwy_si_unit_multiply(siunit, siunit2, siunit);
-            gwy_debug("Scale1 = %g V/LSB", val->hard_value);
-            gwy_debug("Scale2 = %g %s",
-                      sval->hard_value, sval->hard_value_units);
-            *scale *= pow10(q);
-            gwy_debug("Total scale = %g %s/LSB",
-                    *scale, gwy_si_unit_get_string(siunit,
-                                                    GWY_SI_UNIT_FORMAT_PLAIN));
-            g_object_unref(siunit2);
-        }
-        g_free(key);
-    }
-    else {
-        /* We have '@2:Z scale' but the reference to soft scale is missing,
-         * the quantity is something in the hard units (seen for Potential). */
-        gwy_debug("No soft scale, using hard units %g %s",
-                  val->hard_value, val->hard_value_units);
-        siunit = gwy_si_unit_new_parse(val->hard_value_units, &q);
-        *scale = val->hard_value * pow10(q);
+            /* We have '@2:Z scale' but the reference to soft scale is missing,
+             * the quantity is something in the hard units (seen for Potential). */
+            gwy_debug("No soft scale, using hard units %g %s",
+                      val->hard_value, val->hard_value_units);
+            siunit = gwy_si_unit_new_parse(val->hard_value_units, &q);
+            *scale = val->hard_value * pow10(q);
+        }
+        return siunit;
     }
+    else  { /* no version */
+        if (!(val = g_hash_table_lookup(hash, "Image data"))) {
+             err_MISSING_FIELD(error, "Image data");
+             return NULL;
+        }
+
+        if ( gwy_strequal(val->hard_value_str, "Deflection")) {
+            siunit = gwy_si_unit_new("m"); /* always? */
+            *scale = 1e-9 * 2.0/65536.0;
+            CHECK_AND_APPLY(*=, hash, "Z scale defl");
+            CHECK_AND_APPLY(*=, contrlist, "In1 max");
+            CHECK_AND_APPLY(*=, scannerlist, "In sensitivity");
+            CHECK_AND_APPLY(/=, scanlist, "Detect sens.");
+            return siunit;
+
+/* "Z scale ampl" needs to be verified */
+#if 0
+        } else if ( gwy_strequal(val->hard_value_str, "Amplitude")){
+            siunit = gwy_si_unit_new("m"); /* always? */
+            *scale = 1e-9 * 2.0/65536.0;
+            CHECK_AND_APPLY(*=, hash, "Z scale ampl");
+            CHECK_AND_APPLY(*=, contrlist, "In1 max");
+            CHECK_AND_APPLY(*=, scannerlist, "In sensitivity");
+            CHECK_AND_APPLY(/=, scanlist, "Detect sens.");
+            return siunit;
+#endif
+        }
+        else if ( gwy_strequal(val->hard_value_str, "Height")) {
+            siunit = gwy_si_unit_new("m");
+            *scale = 1e-9 * 2.0/65536.0;
+            CHECK_AND_APPLY(*=, hash, "Z scale height");
+            CHECK_AND_APPLY(*=, contrlist, "Z max");
+            CHECK_AND_APPLY(*=, scannerlist, "Z sensitivity");
+            return siunit;
+        }
 
-    return siunit;
+        return NULL;
+    }
 }
 
 static GwyGraphModel*
diff -Nru gwyddion-2.28/modules/file/nt-mdt.c gwyddion-2.29/modules/file/nt-mdt.c
--- gwyddion-2.28/modules/file/nt-mdt.c	2012-03-14 11:11:20.000000000 +0000
+++ gwyddion-2.29/modules/file/nt-mdt.c	2012-07-19 21:11:31.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: nt-mdt.c 13326 2012-03-13 07:33:55Z dn2010 $
+ *  @(#) $Id: nt-mdt.c 13545 2012-06-15 07:11:33Z dn2010 $
  *  Copyright (C) 2004 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -49,7 +49,12 @@
 #include 
 #include 
 #include 
+#include 
+#include 
+#include 
+#include 
 #include 
+#include 
 
 #include 
 #include 
@@ -74,6 +79,10 @@
 #define TREAT_CDATA_AS_TEXT 0
 #endif
 
+enum {
+    PREVIEW_SIZE = 200
+};
+
 typedef enum {
     MDT_FRAME_SCANNED      = 0,
     MDT_FRAME_SPECTROSCOPY = 1,
@@ -233,6 +242,12 @@
     MDT_XML_DATAARRAY        = -1
 } MDTXMLParamType;
 
+typedef enum {
+    MDT_IMAGE_MAX,
+    MDT_IMAGE_MAXPOS,
+    MDT_IMAGE_AVG
+} MDTImageType;
+
 enum {
     FILE_HEADER_SIZE      = 32,
     FRAME_HEADER_SIZE     = 22,
@@ -374,19 +389,34 @@
 } MDTXMLParams;
 
 typedef struct {
-    gint headersize;
-    gint coordsize;
-    gint version;
+    gint    headersize;
+    gint    coordsize;
+    gint    version;
     MDTUnit xyunits;
 } MDTDotsHeader;
 
 typedef struct {
     gfloat coordx;
     gfloat coordy;
-    gint forward_size;
-    gint backward_size;
+    gint   forward_size;
+    gint   backward_size;
 } MDTDotsData;
 
+typedef struct {
+    GwyContainer    *mydata;
+    GtkWidget       *view;
+    GtkWidget       *graph;
+    GtkWidget       *combobox;
+    GwySelection    *selection;
+    GwyGraphModel   *gmodel;
+    MDTMDAFrame     *dataframe;
+    MDTImageType     output;
+    gint             xc, yc;
+    gint             xres, yres;
+    gint             numpoints;
+    gint             number;
+} MDTControlsType;
+
 static gboolean       module_register       (void);
 static gint           mdt_detect            (const GwyFileDetectInfo *fileinfo,
                                              gboolean only_name);
@@ -409,24 +439,30 @@
 static GwyDataField*  extract_mda_data      (MDTMDAFrame *dataframe);
 static GwyGraphModel* extract_mda_spectrum  (MDTMDAFrame *dataframe,
                                              guint number);
-static GwyDataField * extract_raman_image   (MDTMDAFrame *dataframe,
+static GwyContainer*  extract_raman_image   (MDTMDAFrame *dataframe,
+                                             guint number,
                                              GwyRunType mode);
-
-static void          start_element       (GMarkupParseContext *context,
-                                          const gchar *element_name,
-                                          const gchar **attribute_names,
-                                          const gchar **attribute_values,
-                                          gpointer user_data,
-                                          GError **error);
-static void          end_element         (GMarkupParseContext *context,
-                                          const gchar *element_name,
-                                          gpointer user_data,
-                                          GError **error);
-static void          parse_text          (GMarkupParseContext *context,
-                                          const gchar *text,
-                                          gsize text_len,
-                                          gpointer user_data,
-                                          GError **error);
+static GwyDataField*  extract_raman_image_max    (MDTMDAFrame *dataframe);
+static GwyDataField*  extract_raman_image_avg    (MDTMDAFrame *dataframe);
+static GwyDataField*  extract_raman_image_maxpos (MDTMDAFrame *dataframe);
+static GwyGraphModel* extract_raman_image_spectrum (MDTMDAFrame *dataframe,
+                                                    gint x, gint y,
+                                                    gint number);
+static void           start_element    (GMarkupParseContext *context,
+                                        const gchar *element_name,
+                                        const gchar **attribute_names,
+                                        const gchar **attribute_values,
+                                        gpointer user_data,
+                                        GError **error);
+static void           end_element      (GMarkupParseContext *context,
+                                        const gchar *element_name,
+                                        gpointer user_data,
+                                        GError **error);
+static void           parse_text       (GMarkupParseContext *context,
+                                        const gchar *text,
+                                        gsize text_len,
+                                        gpointer user_data,
+                                        GError **error);
 
 #ifdef DEBUG
 static const GwyEnum frame_types[] = {
@@ -657,7 +693,7 @@
     &module_register,
     N_("Imports NT-MDT data files."),
     "Yeti ",
-    "0.15",
+    "0.16",
     "David Nečas (Yeti) & Petr Klapetek",
     "2004",
 };
@@ -720,10 +756,10 @@
     gsize size;
     GError *err = NULL;
     GwyDataField *dfield = NULL;
-    GwyContainer *meta, *data = NULL;
+    GwyContainer *meta, *data = NULL, *image = NULL;
     MDTFile mdtfile;
     GString *key;
-    guint n, i;
+    guint n, i, j, numpoints;
 
     gwy_debug("");
     if (!gwy_file_get_contents(filename, &buffer, &size, &err)) {
@@ -757,9 +793,9 @@
                 g_free((gpointer)sdframe->title);
             }
             else
-                gwy_app_channel_title_fall_back(data, n);
+                gwy_app_channel_title_fall_back(data, i);
 
-            meta = mdt_get_metadata(&mdtfile, n);
+            meta = mdt_get_metadata(&mdtfile, i);
             mdt_add_frame_metadata(sdframe, meta);
             g_string_printf(key, "/%d/meta", n);
             gwy_container_set_object_by_name(data, key->str, meta);
@@ -803,21 +839,45 @@
             }
             else if (mdaframe->nDimensions == 3 && mdaframe->nMesurands == 3) {
                 /* raman images */
-                dfield = extract_raman_image(mdaframe, mode);
-                g_string_printf(key, "/%d/data", n);
-                gwy_container_set_object_by_name(data, key->str, dfield);
-                g_object_unref(dfield);
-                if (mdaframe->title) {
-                    g_string_append(key, "/title");
-                    gwy_container_set_string_by_name(data, key->str,
+                if ((image = extract_raman_image(mdaframe, i+1, mode))) {
+                    dfield = gwy_container_get_object_by_name(image,
+                                                             "/0/data");
+                    g_object_ref(dfield);
+                    g_string_printf(key, "/%d/data", n);
+                    gwy_container_set_object_by_name(data, key->str,
+                                                     dfield);
+                    g_object_unref(dfield);
+
+                    if (mdaframe->title) {
+                        g_string_append(key, "/title");
+                        gwy_container_set_string_by_name(data, key->str,
                                             g_strdup_printf("%s (%u)",
                                             mdaframe->title, i+1));
-                    g_free((gpointer)mdaframe->title);
+                        g_free((gpointer)mdaframe->title);
+                    }
+                    else
+                        gwy_app_channel_title_fall_back(data, n);
+
+                    n++;
+                    numpoints = 0;
+                    gwy_container_gis_int32_by_name(image, "/numpoints",
+                                                    &numpoints);
+
+                    for (j = 0; j < numpoints; j++) {
+                        GwyGraphModel *gmodel;
+
+                        g_string_printf(key, "/%d/spectrum", j);
+                        gmodel = gwy_container_get_object_by_name(image,
+                                                              key->str);
+                        g_object_ref(gmodel);
+                        g_string_printf(key, "/0/graph/graph/%d", n+1);
+                        gwy_container_set_object_by_name(data,
+                                                      key->str, gmodel);
+                        g_object_unref(gmodel);
+                        n++;
+                    }
+                    g_object_unref(image);
                 }
-                else
-                    gwy_app_channel_title_fall_back(data, n);
-
-                n++;
             }
         }
         else if (mdtfile.frames[i].type == MDT_FRAME_SPECTROSCOPY) {
@@ -1235,8 +1295,8 @@
              G_GNUC_UNUSED GError **error)
 {
 
-    guint headSize, totLen, NameSize, CommSize, ViewInfoSize, SpecSize;
-    G_GNUC_UNUSED guint SourceInfoSize, VarSize, DataSize, StructLen, CellSize;
+    guint headSize, NameSize, CommSize, ViewInfoSize, SpecSize;
+    G_GNUC_UNUSED guint totLen, SourceInfoSize, VarSize, DataSize, StructLen, CellSize;
     G_GNUC_UNUSED guint64 num;
     const guchar *recordPointer = p;
     const guchar *structPointer;
@@ -1506,8 +1566,8 @@
     return dfield;
 }
 
-static GwyGraphModel* extract_scanned_spectrum (MDTScannedDataFrame *dataframe,
-                                                guint number)
+static GwyGraphModel*
+extract_scanned_spectrum (MDTScannedDataFrame *dataframe, guint number)
 {
     GwyGraphCurveModel *spectra;
     GwyGraphModel *gmodel;
@@ -1584,7 +1644,7 @@
     GwySpectra *spectra;
     GwyDataLine *dline;
     GwySIUnit *siunitx, *siunitz, *siunitcoordxy;
-    guint i, i_p, res, numpoints;
+    guint i, i_p, numpoints;
     gdouble *ydata = NULL;
     G_GNUC_UNUSED gdouble xreal, zscale;
     gdouble deltax;
@@ -1611,7 +1671,6 @@
     zscale = pow10(power10z)*dataframe->z_scale.step;
 
     p = dataframe->dots;
-    res = dataframe->fm_xres;
     numpoints = dataframe->fm_ndots;
 
     /* reading coordheader */
@@ -1914,12 +1973,12 @@
         framename = g_strdup_printf("Unknown spectrum (%d)", number);
 
     if (dataframe->nDimensions) {
-        xAxis = &dataframe->dimensions[0],
-              yAxis = &dataframe->mesurands[0];
+        xAxis = &dataframe->dimensions[0];
+        yAxis = &dataframe->mesurands[0];
     }
     else {
-        xAxis = &dataframe->mesurands[0],
-              yAxis = &dataframe->mesurands[1];
+        xAxis = &dataframe->mesurands[0];
+        yAxis = &dataframe->mesurands[1];
     }
 
     if (xAxis->unit && xAxis->unitLen) {
@@ -2257,162 +2316,117 @@
     return gmodel;
 }
 
-static gboolean
-resize_image(GtkWidget *widget, GdkEvent *event, GtkWidget *window)
+static GwyDataField *extract_raman_image_max(MDTMDAFrame *dataframe)
 {
-    gint oldwidth, oldheight, newwidth, newheight;
-    gfloat mult;
+    guint xsize, ysize;
+    const guchar *p;
+    // const guchar *px;
+    guint i, j, k;
+    // gdouble xspectra[1024]; currently unused
+    // gdouble yspectra[1024];
+    gdouble y, ymax;
+    GwyDataField *dfield;
+    gdouble *data;
+    gdouble xreal, yreal, zscale;
+    gint power10xy, power10z;
+    GwySIUnit *siunitxy, *siunitz;
+    const gchar *cunit;
+    gchar *unit;
+
+    MDTMDACalibration *xAxis = &dataframe->dimensions[0],
+                      *yAxis = &dataframe->dimensions[1],
+                      *zAxis = &dataframe->mesurands[0];
+
+    if (xAxis->unit && xAxis->unitLen) {
+        unit = g_strndup(xAxis->unit, xAxis->unitLen);
+        siunitxy = gwy_si_unit_new_parse(unit, &power10xy);
+        g_free(unit);
+    }
+    else {
+        cunit = gwy_flat_enum_to_string(unitCodeForSiCode(xAxis->siUnit),
+                                        G_N_ELEMENTS(mdt_units),
+                                        mdt_units, mdt_units_name);
+        siunitxy = gwy_si_unit_new_parse(cunit, &power10xy);
+    }
+    gwy_debug("xy unit power %d", power10xy);
 
-    GdkPixbuf *pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(widget));
-    if (pixbuf == NULL) {
-        g_printerr("Failed to resize image\n");
-        return 1;
+    if (zAxis->unit && zAxis->unitLen) {
+        unit = g_strndup(zAxis->unit, zAxis->unitLen);
+        siunitz = gwy_si_unit_new_parse(unit, &power10z);
+        g_free(unit);
+    }
+    else {
+        cunit = gwy_flat_enum_to_string(unitCodeForSiCode(zAxis->siUnit),
+                                        G_N_ELEMENTS(mdt_units),
+                                        mdt_units, mdt_units_name);
+        siunitz = gwy_si_unit_new_parse(cunit, &power10z);
     }
+    gwy_debug("z unit power %d", power10xy);
 
-    oldwidth  = gdk_pixbuf_get_width(pixbuf);
-    oldheight = gdk_pixbuf_get_height(pixbuf);
-    newwidth  = widget->allocation.width;
-    newheight = widget->allocation.height;
-    mult = MIN(((float) newwidth)/oldwidth,
-               ((float) newheight)/oldheight);
+    xreal = pow10(power10xy) * xAxis->scale;
+    yreal = pow10(power10xy) * yAxis->scale;
+    zscale = pow10(power10z) * zAxis->scale;
+
+    xsize = (dataframe->dimensions[0].maxIndex
+           - dataframe->dimensions[0].minIndex + 1);
+    ysize = (dataframe->dimensions[1].maxIndex
+           - dataframe->dimensions[1].minIndex + 1);
 
-    pixbuf = gdk_pixbuf_scale_simple(pixbuf, (int) (mult*oldwidth),
-                      (int) (mult*oldheight), GDK_INTERP_BILINEAR);
+    dfield = gwy_data_field_new(xsize, ysize,
+                                xreal*(xsize - 1), yreal*(ysize - 1),
+                                TRUE);
+
+    gwy_data_field_set_si_unit_xy(dfield, siunitxy);
+    g_object_unref(siunitxy);
+    gwy_data_field_set_si_unit_z(dfield, siunitz);
+    g_object_unref(siunitz);
 
-    gtk_image_set_from_pixbuf(GTK_IMAGE(widget), pixbuf);
-    g_object_unref(pixbuf);
+    data = gwy_data_field_get_data(dfield);
 
-    return FALSE;
+    ymax = 0.0;
+    p = (guchar *)dataframe->image;
+    /*
+    px = p + 1024*xsize*ysize*sizeof(gfloat);
+    for (k = 0; k < 1024; k++) {
+            xspectra[k] = (gdouble)gwy_get_gfloat_le(&px);
+        }
+    */
+    for (i = 0; i < ysize; i++) {
+        for (j = 0; j < xsize; j++) {
+            ymax = 0.0;
+            for (k = 0; k < 1024; k++) {
+                y = (gdouble)gwy_get_gfloat_le(&p);
+                y *= zscale;
+                if (y > ymax)
+                    ymax = y;
+                // yspectra[k] = y;
+            }
+            *(data++) = ymax;
+        }
+    }
+
+    return dfield;
 }
 
-static GwyDataField * extract_raman_image (MDTMDAFrame *dataframe,
-                                           GwyRunType mode)
+static GwyDataField *extract_raman_image_maxpos(MDTMDAFrame *dataframe)
 {
     guint xsize, ysize;
     const guchar *p, *px;
-    guint i, j, k;
-    gint l;
-    gdouble xspectra[1024], yspectra[1024];
-    gdouble r, g, b, x, y, z, xyzsum, wmin, wmax;
-    gdouble ymax;
-
-    GtkWidget *dialog = NULL, *image;
-    GdkPixbuf *pixbuf;
-    gint rowstride;
-    guchar *pixels;
-    guint response;
-
+    guint i, j, k, kposition;
+    gdouble xspectra[1024];
+    // gdouble yspectra[1024];
+    gdouble y;
     GwyDataField *dfield;
     gdouble *data;
-    gdouble xreal, yreal, zscale;
+    gdouble xreal, yreal, zscale, ymax = 0.0;
     gint power10xy, power10z;
     GwySIUnit *siunitxy, *siunitz;
     const gchar *cunit;
     gchar *unit;
 
-    /* CIE 2deg xyz functions for standart observer (360-780 nm)   */
-    /* from http://www.cis.rit.edu/mcsl/online/CIE/StdObsFuncs.htm */
-    static gdouble cie_2deg_xyz[85][3] = {
-    { 0.000130, 0.000004, 0.000606 },
-    { 0.000232, 0.000007, 0.001086 },
-    { 0.000415, 0.000012, 0.001946 },
-    { 0.000742, 0.000022, 0.003486 },
-    { 0.001368, 0.000039, 0.006450 },
-    { 0.002236, 0.000064, 0.010550 },
-    { 0.004243, 0.000120, 0.020050 },
-    { 0.007650, 0.000217, 0.036210 },
-    { 0.014310, 0.000396, 0.067850 },
-    { 0.023190, 0.000640, 0.110200 },
-    { 0.043510, 0.001210, 0.207400 },
-    { 0.077630, 0.002180, 0.371300 },
-    { 0.134380, 0.004000, 0.645600 },
-    { 0.214770, 0.007300, 1.039050 },
-    { 0.283900, 0.011600, 1.385600 },
-    { 0.328500, 0.016840, 1.622960 },
-    { 0.348280, 0.023000, 1.747060 },
-    { 0.348060, 0.029800, 1.782600 },
-    { 0.336200, 0.038000, 1.772110 },
-    { 0.318700, 0.048000, 1.744100 },
-    { 0.290800, 0.060000, 1.669200 },
-    { 0.251100, 0.073900, 1.528100 },
-    { 0.195360, 0.090980, 1.287640 },
-    { 0.142100, 0.112600, 1.041900 },
-    { 0.095640, 0.139020, 0.812950 },
-    { 0.057950, 0.169300, 0.616200 },
-    { 0.032010, 0.208020, 0.465180 },
-    { 0.014700, 0.258600, 0.353300 },
-    { 0.004900, 0.323000, 0.272000 },
-    { 0.002400, 0.407300, 0.212300 },
-    { 0.009300, 0.503000, 0.158200 },
-    { 0.029100, 0.608200, 0.111700 },
-    { 0.063270, 0.710000, 0.078250 },
-    { 0.109600, 0.793200, 0.057250 },
-    { 0.165500, 0.862000, 0.042160 },
-    { 0.225750, 0.914850, 0.029840 },
-    { 0.290400, 0.954000, 0.020300 },
-    { 0.359700, 0.980300, 0.013400 },
-    { 0.433450, 0.994950, 0.008750 },
-    { 0.512050, 1.000000, 0.005750 },
-    { 0.594500, 0.995000, 0.003900 },
-    { 0.678400, 0.978600, 0.002750 },
-    { 0.762100, 0.952000, 0.002100 },
-    { 0.842500, 0.915400, 0.001800 },
-    { 0.916300, 0.870000, 0.001650 },
-    { 0.978600, 0.816300, 0.001400 },
-    { 1.026300, 0.757000, 0.001100 },
-    { 1.056700, 0.694900, 0.001000 },
-    { 1.062200, 0.631000, 0.000800 },
-    { 1.045600, 0.566800, 0.000600 },
-    { 1.002600, 0.503000, 0.000340 },
-    { 0.938400, 0.441200, 0.000240 },
-    { 0.854450, 0.381000, 0.000190 },
-    { 0.751400, 0.321000, 0.000100 },
-    { 0.642400, 0.265000, 0.000050 },
-    { 0.541900, 0.217000, 0.000030 },
-    { 0.447900, 0.175000, 0.000020 },
-    { 0.360800, 0.138200, 0.000010 },
-    { 0.283500, 0.107000, 0.000000 },
-    { 0.218700, 0.081600, 0.000000 },
-    { 0.164900, 0.061000, 0.000000 },
-    { 0.121200, 0.044580, 0.000000 },
-    { 0.087400, 0.032000, 0.000000 },
-    { 0.063600, 0.023200, 0.000000 },
-    { 0.046770, 0.017000, 0.000000 },
-    { 0.032900, 0.011920, 0.000000 },
-    { 0.022700, 0.008210, 0.000000 },
-    { 0.015840, 0.005723, 0.000000 },
-    { 0.011359, 0.004102, 0.000000 },
-    { 0.008111, 0.002929, 0.000000 },
-    { 0.005790, 0.002091, 0.000000 },
-    { 0.004109, 0.001484, 0.000000 },
-    { 0.002899, 0.001047, 0.000000 },
-    { 0.002049, 0.000740, 0.000000 },
-    { 0.001440, 0.000520, 0.000000 },
-    { 0.001000, 0.000361, 0.000000 },
-    { 0.000690, 0.000249, 0.000000 },
-    { 0.000476, 0.000172, 0.000000 },
-    { 0.000332, 0.000120, 0.000000 },
-    { 0.000235, 0.000085, 0.000000 },
-    { 0.000166, 0.000060, 0.000000 },
-    { 0.000117, 0.000042, 0.000000 },
-    { 0.000083, 0.000030, 0.000000 },
-    { 0.000059, 0.000021, 0.000000 },
-    { 0.000042, 0.000015, 0.000000 },
-    };
-
-    gdouble xr = 3.240479;
-    gdouble xg = -0.969256;
-    gdouble xb = 0.055648;
-    gdouble yr = -1.53715;
-    gdouble yg = 1.875992;
-    gdouble yb = -0.204043;
-    gdouble zr = -0.498535;
-    gdouble zg = 0.041556;
-    gdouble zb = 1.057311;
-
     MDTMDACalibration *xAxis = &dataframe->dimensions[0],
                       *yAxis = &dataframe->dimensions[1],
-                      *zAxis = &dataframe->mesurands[0];
+                      *zAxis = &dataframe->mesurands[1]; // spectral x
 
     if (xAxis->unit && xAxis->unitLen) {
         unit = g_strndup(xAxis->unit, xAxis->unitLen);
@@ -2449,9 +2463,9 @@
     ysize = (dataframe->dimensions[1].maxIndex
            - dataframe->dimensions[1].minIndex + 1);
 
-    /* FIXME: real size is wrong */
     dfield = gwy_data_field_new(xsize, ysize,
-                                xreal*(xsize - 1), yreal*(ysize - 1), FALSE);
+                                xreal*(xsize - 1), yreal*(ysize - 1),
+                                TRUE);
 
     gwy_data_field_set_si_unit_xy(dfield, siunitxy);
     g_object_unref(siunitxy);
@@ -2460,113 +2474,481 @@
 
     data = gwy_data_field_get_data(dfield);
 
-    if (mode == GWY_RUN_INTERACTIVE) {
-        dialog = gtk_dialog_new_with_buttons(_("Raman Image"), NULL, 0,
-                                 GTK_STOCK_OK, GTK_RESPONSE_OK,
-                                 NULL);
-        gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
-        gtk_dialog_set_default_response(GTK_DIALOG(dialog),
-                                        GTK_RESPONSE_OK);
+    p = (guchar *)dataframe->image;
+    px = p + 1024*xsize*ysize*sizeof(gfloat);
+    for (k = 0; k < 1024; k++) {
+            xspectra[k] = (gdouble)gwy_get_gfloat_le(&px);
+        }
+
+    for (i = 0; i < ysize; i++) {
+        for (j = 0; j < xsize; j++) {
+            ymax = 0.0;
+            kposition = 0;
+            for (k = 0; k < 1024; k++) {
+                y = (gdouble)gwy_get_gfloat_le(&p);
+                y *= zscale;
+                if (y > ymax) {
+                    ymax = y;
+                    kposition = k;
+                }
+            }
+            *(data++) = xspectra[kposition] * zscale;
+        }
     }
+    return dfield;
+}
 
-    image = gtk_image_new();
+static GwyDataField *extract_raman_image_avg (MDTMDAFrame *dataframe)
+{
+    guint xsize, ysize;
+    const guchar *p;
+    // const guchar *px;
+    guint i, j, k;
+    // gdouble xspectra[1024], yspectra[1024];
+    gdouble y, sum;
+    GwyDataField *dfield;
+    gdouble *data;
+    gdouble xreal, yreal, zscale;
+    gint power10xy, power10z;
+    GwySIUnit *siunitxy, *siunitz;
+    const gchar *cunit;
+    gchar *unit;
 
-    pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, xsize, ysize);
-    gdk_pixbuf_fill(pixbuf, 0);
+    MDTMDACalibration *xAxis = &dataframe->dimensions[0],
+                      *yAxis = &dataframe->dimensions[1],
+                      *zAxis = &dataframe->mesurands[0];
 
-    pixels = gdk_pixbuf_get_pixels(pixbuf);
-    rowstride = gdk_pixbuf_get_rowstride(pixbuf);
+    if (xAxis->unit && xAxis->unitLen) {
+        unit = g_strndup(xAxis->unit, xAxis->unitLen);
+        siunitxy = gwy_si_unit_new_parse(unit, &power10xy);
+        g_free(unit);
+    }
+    else {
+        cunit = gwy_flat_enum_to_string(unitCodeForSiCode(xAxis->siUnit),
+                                        G_N_ELEMENTS(mdt_units),
+                                        mdt_units, mdt_units_name);
+        siunitxy = gwy_si_unit_new_parse(cunit, &power10xy);
+    }
+    gwy_debug("xy unit power %d", power10xy);
 
-    ymax = 0.0;
+    if (zAxis->unit && zAxis->unitLen) {
+        unit = g_strndup(zAxis->unit, zAxis->unitLen);
+        siunitz = gwy_si_unit_new_parse(unit, &power10z);
+        g_free(unit);
+    }
+    else {
+        cunit = gwy_flat_enum_to_string(unitCodeForSiCode(zAxis->siUnit),
+                                        G_N_ELEMENTS(mdt_units),
+                                        mdt_units, mdt_units_name);
+        siunitz = gwy_si_unit_new_parse(cunit, &power10z);
+    }
+    gwy_debug("z unit power %d", power10xy);
+
+    xreal = pow10(power10xy) * xAxis->scale;
+    yreal = pow10(power10xy) * yAxis->scale;
+    zscale = pow10(power10z) * zAxis->scale;
+
+    xsize = (dataframe->dimensions[0].maxIndex
+           - dataframe->dimensions[0].minIndex + 1);
+    ysize = (dataframe->dimensions[1].maxIndex
+           - dataframe->dimensions[1].minIndex + 1);
+
+    dfield = gwy_data_field_new(xsize, ysize,
+                                xreal*(xsize - 1), yreal*(ysize - 1),
+                                TRUE);
+
+    gwy_data_field_set_si_unit_xy(dfield, siunitxy);
+    g_object_unref(siunitxy);
+    gwy_data_field_set_si_unit_z(dfield, siunitz);
+    g_object_unref(siunitz);
+
+    data = gwy_data_field_get_data(dfield);
 
     p = (guchar *)dataframe->image;
+    /*
     px = p + 1024*xsize*ysize*sizeof(gfloat);
     for (k = 0; k < 1024; k++) {
-            xspectra[k] = (gdouble)gwy_get_gfloat_le(&px);
-        }
+        xspectra[k] = (gdouble)gwy_get_gfloat_le(&px);
+    }
+    */
 
     for (i = 0; i < ysize; i++) {
         for (j = 0; j < xsize; j++) {
-            x = 0;
-            y = 0;
-            z = 0;
+            sum = 0.0;
             for (k = 0; k < 1024; k++) {
-                yspectra[k] = (gdouble)gwy_get_gfloat_le(&p);
-                if (yspectra[k] > 1e-9) /* not a black pixel */
-                    yspectra[k] -= 550.0; /* background noise */
-                l = (gint)((xspectra[k] - 360.0)/5);
-                if ((l >= 0) && (l < 85) && (k < 1023)) {
-                    x += yspectra[k]*cie_2deg_xyz[l][0]
-                        *(xspectra[k+1]-xspectra[k]);
-                    y += yspectra[k]*cie_2deg_xyz[l][1]
-                        *(xspectra[k+1]-xspectra[k]);
-                    z += yspectra[k]*cie_2deg_xyz[l][2]
-                        *(xspectra[k+1]-xspectra[k]);
-                }
+                y = (gdouble)gwy_get_gfloat_le(&p);
+                y *= zscale;
+                sum += y;
             }
+            *(data++) = sum / 1024.0;
+        }
+    }
+
+    return dfield;
+}
+
+static GwyGraphModel *
+extract_raman_image_spectrum(MDTMDAFrame *dataframe, gint x, gint y, gint number)
+{
+    GwyGraphCurveModel *spectrum;
+    GwyGraphModel *gmodel;
+    gint power10x, power10y;
+    GwySIUnit *siunitx, *siunity;
+    const guchar *p, *px;
+    const gchar *cunit;
+    gchar *unit;
+    gint i, res = 1024, xsize, ysize;
+    MDTMDACalibration *xAxis, *yAxis;
+    gdouble xdata[1024], ydata[1024];
+    gdouble xscale, yscale;
+    gchar *framename;
+
+    xsize = (dataframe->dimensions[0].maxIndex
+           - dataframe->dimensions[0].minIndex + 1);
+    ysize = (dataframe->dimensions[1].maxIndex
+           - dataframe->dimensions[1].minIndex + 1);
+
+    xAxis = &dataframe->mesurands[1];
+    yAxis = &dataframe->mesurands[0];
+
+    if (xAxis->unit && xAxis->unitLen) {
+        unit = g_strndup(xAxis->unit, xAxis->unitLen);
+        siunitx = gwy_si_unit_new_parse(unit, &power10x);
+        g_free(unit);
+    }
+    else {
+        cunit = gwy_flat_enum_to_string(unitCodeForSiCode(xAxis->siUnit),
+                                        G_N_ELEMENTS(mdt_units),
+                                        mdt_units, mdt_units_name);
+        siunitx = gwy_si_unit_new_parse(cunit, &power10x);
+    }
+    gwy_debug("x unit power %d", power10x);
 
-            x /= 1024.0;
-            y /= 1024.0;
-            z /= 1024.0;
-            ymax = (y > ymax) ? y : ymax;
-            *(data++) = y;
-            xyzsum = x + y + z;
-            x /= xyzsum;
-            y /= xyzsum;
-            z /= xyzsum;
-            r = xr*x + yr*y + zr*z;
-            g = xg*x + yg*y + zg*z;
-            b = xb*x + yb*y + zb*z;
-            wmin = (r < g) ? r : g;
-            wmin = (wmin < b) ? wmin : b;
-            if (wmin < 0.0) {
-                wmin = -wmin;
-                r += wmin;
-                g += wmin;
-                b += wmin;
-            }
-            wmax = (r > g) ? r : g;
-            wmax = (wmax > b) ? wmax : b;
-            if (wmax > 1.0) {
-                r /= wmax;
-                g /= wmax;
-                b /= wmax;
-            }
-
-            pixels[i*rowstride+3*j]   = (guchar)(r*255.0);
-            pixels[i*rowstride+3*j+1] = (guchar)(g*255.0);
-            pixels[i*rowstride+3*j+2] = (guchar)(b*255.0);
+    if (yAxis->unit && yAxis->unitLen) {
+        unit = g_strndup(yAxis->unit, yAxis->unitLen);
+        siunity = gwy_si_unit_new_parse(unit, &power10y);
+        g_free(unit);
+    }
+    else {
+        cunit = gwy_flat_enum_to_string(unitCodeForSiCode(yAxis->siUnit),
+                                        G_N_ELEMENTS(mdt_units),
+                                        mdt_units, mdt_units_name);
+        siunity = gwy_si_unit_new_parse(cunit, &power10y);
+    }
+    gwy_debug("y unit power %d", power10y);
+
+    if (dataframe->title_len && dataframe->title) {
+        framename = g_strdup_printf("%s (%u)",
+                                    dataframe->title, number);
+    }
+    else
+        framename = g_strdup_printf("Unknown spectrum (%d)", number);
+
+    xscale = pow10(power10x) * xAxis->scale;
+    yscale = pow10(power10y) * yAxis->scale;
+
+    p = (guchar *)dataframe->image;
+
+    px = p + 1024*xsize*ysize*sizeof(gfloat);
+    for (i = 0; i < 1024; i++) {
+        xdata[i] = (gdouble)gwy_get_gfloat_le(&px) * xscale;
+    }
+
+    p += 1024*(y*xsize+x)*sizeof(gfloat);
+    for (i = 0; i < 1024; i++) {
+        ydata[i] = (gdouble)gwy_get_gfloat_le(&p) * yscale;
+    }
+
+    spectrum = gwy_graph_curve_model_new();
+    g_object_set(spectrum,
+                 "description", framename,
+                 "mode", GWY_GRAPH_CURVE_LINE,
+                 NULL);
+    gwy_graph_curve_model_set_data(spectrum, xdata, ydata, res);
+
+    gmodel = gwy_graph_model_new();
+    g_object_set(gmodel,
+                 "title", framename,
+                 "si-unit-x", siunitx,
+                 "si-unit-y", siunity,
+                 NULL);
+    gwy_graph_model_add_curve(gmodel, spectrum);
+    g_object_unref(spectrum);
+    g_object_unref(siunitx);
+    g_object_unref(siunity);
+    g_free(framename);
+
+    return gmodel;
+}
+
+static void
+set_layer_channel(GwyPixmapLayer *layer, gint channel)
+{
+    gchar data_key[30];
+    gchar grad_key[30];
+    gchar mm_key[30];
+    gchar range_key[30];
+
+    g_snprintf(data_key, sizeof(data_key), "/%i/data", channel);
+    g_snprintf(grad_key, sizeof(grad_key), "/%i/base/palette", channel);
+    g_snprintf(mm_key, sizeof(mm_key), "/%i/base", channel);
+    g_snprintf(range_key, sizeof(range_key), "/%i/base/range-type", channel);
+
+    gwy_pixmap_layer_set_data_key(layer, data_key);
+    gwy_layer_basic_set_gradient_key(GWY_LAYER_BASIC(layer), grad_key);
+    gwy_layer_basic_set_min_max_key(GWY_LAYER_BASIC(layer), mm_key);
+    gwy_layer_basic_set_range_type_key(GWY_LAYER_BASIC(layer), range_key);
+}
+
+static void
+combobox_changed_cb(GtkWidget *combobox, MDTControlsType *controls)
+{
+    GwyPixmapLayer *layer;
+
+    controls->output = gwy_enum_combo_box_get_active(GTK_COMBO_BOX(combobox));
+    layer = gwy_data_view_get_base_layer(GWY_DATA_VIEW(controls->view));
+
+    switch (controls->output) {
+        case MDT_IMAGE_MAX:
+            set_layer_channel(layer, 0);
+        break;
+
+        case MDT_IMAGE_MAXPOS:
+            set_layer_channel(layer, 1);
+        break;
+
+        case MDT_IMAGE_AVG:
+            set_layer_channel(layer, 2);
+        break;
+
+        default:
+            g_assert_not_reached();
+        break;
+    }
+}
+
+static gboolean
+mdt_image_view_mousemotion_cb(G_GNUC_UNUSED GtkWidget *view,
+                           GdkEventMotion *event,
+                           MDTControlsType *controls)
+{
+    GwyGraphModel *gmodel;
+
+    controls->xc = event->x * (gdouble)controls->xres / PREVIEW_SIZE;
+    controls->yc = event->y * (gdouble)controls->xres / PREVIEW_SIZE;
+    gmodel = extract_raman_image_spectrum(controls->dataframe,
+                                          controls->xc,
+                                          controls->yc,
+                                          controls->number);
+    gwy_graph_set_model (GWY_GRAPH(controls->graph), gmodel);
+    g_object_unref(controls->gmodel);
+    controls->gmodel = gmodel;
+
+    return TRUE;
+}
+
+static gboolean
+mdt_image_view_button_press_cb(G_GNUC_UNUSED GtkWidget *view,
+                            GdkEventButton *event,
+                            MDTControlsType *controls)
+{
+    GwyDataField *dfield;
+    gdouble seldata[2];
+
+    if (event->button != 1)
+        return FALSE;
+
+    dfield = gwy_container_get_object_by_name(controls->mydata,
+                                              "/0/data");
+    controls->xc = event->x * (gdouble)controls->xres / PREVIEW_SIZE;
+    seldata[0] = gwy_data_field_jtor(dfield, controls->xc + 0.5);
+    controls->yc = event->y * (gdouble)controls->xres / PREVIEW_SIZE;
+    seldata[1] = gwy_data_field_itor(dfield, controls->yc + 0.5);
+    if(!gwy_selection_is_full(controls->selection)) {
+        controls->numpoints++;
+        gwy_selection_set_object(controls->selection, -1, seldata);
+    }
+
+    return TRUE;
+}
+
+static GwyContainer *
+extract_raman_image(MDTMDAFrame *dataframe,
+                    guint number, GwyRunType mode)
+{
+    GtkWidget *dialog, *hbox, *vbox;
+    MDTControlsType controls;
+    GwyContainer *result;
+    GwyPixmapLayer *layer;
+    GwyVectorLayer *vlayer;
+    GwyDataField *dfield;
+    GwyGraphModel *gmodel;
+    GwyDataField *maxfield, *maxposfield, *avgfield;
+    gint i, response;
+    gdouble seldata[2];
+    GString *key;
+    gint x, y;
+
+
+    static const GwyEnum imagetype[] = {
+        { N_("Maximum"),       MDT_IMAGE_MAX },
+        { N_("Max. position"), MDT_IMAGE_MAXPOS },
+        { N_("Average"),       MDT_IMAGE_AVG },
+    };
+
+    result = gwy_container_new();
+    if (mode != GWY_RUN_INTERACTIVE) {
+        maxfield = extract_raman_image_max(dataframe);
+        gwy_container_set_object_by_name(result,
+                                         "/0/data", maxfield);
+        g_object_unref(maxfield);
+
+        return result;
+    }
+
+    dialog = gtk_dialog_new_with_buttons(_("Raman Image Import"),
+                                         NULL, 0,
+                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+                                         GTK_STOCK_OK, GTK_RESPONSE_OK,
+                                         NULL);
+    gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
+    gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
+
+    hbox = gtk_hbox_new(FALSE, 8);
+    gtk_container_set_border_width(GTK_CONTAINER(hbox), 4);
+    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox,
+                       FALSE, FALSE, 0);
+
+    vbox = gtk_vbox_new(FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
+
+    controls.dataframe = dataframe;
+    controls.number = number;
+    controls.output = MDT_IMAGE_MAX;
+    controls.combobox
+            = gwy_enum_combo_box_new(imagetype, G_N_ELEMENTS(imagetype),
+                                     G_CALLBACK(combobox_changed_cb),
+                                     &controls, controls.output, TRUE);
+    gwy_enum_combo_box_set_active(GTK_COMBO_BOX(controls.combobox),
+                                  controls.output);
+    gtk_box_pack_start(GTK_BOX(vbox), controls.combobox,
+                       FALSE, FALSE, 0);
+
+    controls.mydata = gwy_container_new();
+    maxfield = extract_raman_image_max(dataframe);
+    controls.xres = gwy_data_field_get_xres(maxfield);
+    controls.yres = gwy_data_field_get_yres(maxfield);
+    gwy_container_set_object_by_name(controls.mydata,
+                                     "/0/data", maxfield);
+    g_object_unref(maxfield);
+    maxposfield = extract_raman_image_maxpos(dataframe);
+    gwy_container_set_object_by_name(controls.mydata,
+                                     "/1/data", maxposfield);
+    g_object_unref(maxposfield);
+    avgfield = extract_raman_image_avg(dataframe);
+    gwy_container_set_object_by_name(controls.mydata,
+                                     "/2/data", avgfield);
+    g_object_unref(avgfield);
+
+    controls.view = gwy_data_view_new(controls.mydata);
+    layer = gwy_layer_basic_new();
+    set_layer_channel(layer, 0);
+    gwy_data_view_set_data_prefix(GWY_DATA_VIEW(controls.view),
+                                  "/0/data");
+    gwy_data_view_set_base_layer(GWY_DATA_VIEW(controls.view), layer);
+    gwy_set_data_preview_size(GWY_DATA_VIEW(controls.view),
+                              PREVIEW_SIZE);
+
+    vlayer = g_object_new(g_type_from_name("GwyLayerPoint"), NULL);
+    gwy_vector_layer_set_selection_key(vlayer, "/0/select/pointer");
+    gwy_vector_layer_set_editable(vlayer, FALSE);
+    gwy_data_view_set_top_layer(GWY_DATA_VIEW(controls.view),
+                                GWY_VECTOR_LAYER(vlayer));
+    controls.selection = gwy_vector_layer_ensure_selection(vlayer);
+    g_object_ref(controls.selection);
+    gwy_selection_set_max_objects(controls.selection, 1024);
+    controls.numpoints = 0;
+
+    g_signal_connect(controls.view, "button-press-event",
+                 G_CALLBACK(mdt_image_view_button_press_cb), &controls);
+    g_signal_connect(controls.view, "motion-notify-event",
+                  G_CALLBACK(mdt_image_view_mousemotion_cb), &controls);
+
+    gtk_box_pack_start(GTK_BOX(vbox), controls.view, FALSE, FALSE, 0);
+
+    controls.xc = 0;
+    controls.yc = 0;
+    controls.gmodel = extract_raman_image_spectrum(dataframe, 0, 0,
+                                                   number);
+    controls.graph = gwy_graph_new(controls.gmodel);
+    gwy_graph_enable_user_input(GWY_GRAPH(controls.graph), FALSE);
+    gtk_widget_set_size_request(controls.graph, 300, 200);
+    g_object_set(controls.gmodel, "label-visible", FALSE, NULL);
+    gtk_box_pack_start(GTK_BOX(hbox), controls.graph, TRUE, TRUE, 2);
+
+    gtk_widget_show_all(dialog);
+    do {
+        response = gtk_dialog_run(GTK_DIALOG(dialog));
+        switch (response) {
+            case GTK_RESPONSE_CANCEL:
+            case GTK_RESPONSE_DELETE_EVENT:
+                gtk_widget_destroy(dialog);
+            case GTK_RESPONSE_NONE:
+                g_object_unref(controls.mydata);
+                return NULL;
+            break;
+
+            case GTK_RESPONSE_OK:
+            break;
+
+            default:
+            g_assert_not_reached();
+            break;
         }
+    } while (response != GTK_RESPONSE_OK);
+    gtk_widget_destroy(dialog);
+    g_object_unref(controls.mydata);
+
+    switch (controls.output) {
+        case MDT_IMAGE_MAX:
+            dfield = extract_raman_image_max(dataframe);
+        break;
+
+        case MDT_IMAGE_MAXPOS:
+            dfield = extract_raman_image_maxpos(dataframe);
+        break;
+
+        case MDT_IMAGE_AVG:
+            dfield = extract_raman_image_avg(dataframe);
+        break;
+
+        default:
+            g_assert_not_reached();
+        break;
     }
+    gwy_container_set_object_by_name(result, "/0/data", dfield);
+    g_object_unref(dfield);
 
-    data = gwy_data_field_get_data(dfield);
-    for (i = 0; i < ysize; i++) {
-        for (j = 0; j < xsize; j++) {
-            y = *(data++)/ymax;
-            pixels[i*rowstride+3*j] *= y;
-            pixels[i*rowstride+3*j+1] *= y;
-            pixels[i*rowstride+3*j+2] *= y;
-        }
-    }
-    gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf);
-    g_object_unref(pixbuf);
-
-    /* FIXME: this is temporary code to show raman images, need rework */
-    if (mode == GWY_RUN_INTERACTIVE) {
-        g_signal_connect(image, "expose-event", G_CALLBACK(resize_image),
-                        (gpointer)dialog);
-        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), image,
-                           TRUE, TRUE, 0);
-        gtk_widget_show_all(dialog);
-        do {
-            response = gtk_dialog_run(GTK_DIALOG(dialog));
-        } while ((response != GTK_RESPONSE_OK)
-              && (response != GTK_RESPONSE_DELETE_EVENT));
+    gwy_container_set_int32_by_name(result, "/numpoints",
+                                    controls.numpoints);
 
-        gtk_widget_destroy(dialog);
+    key = g_string_new(NULL);
+    if (controls.numpoints) {
+        for (i = 0; i < controls.numpoints; i++) {
+            gwy_selection_get_object(controls.selection, i, seldata);
+            x = gwy_data_field_rtoj(dfield, seldata[0]);
+            y = gwy_data_field_rtoi(dfield, seldata[1]);
+            gmodel = extract_raman_image_spectrum(dataframe, x, y,
+                                                  number);
+            g_string_printf(key, "/%d/spectrum", i);
+            gwy_container_set_object_by_name(result, key->str, gmodel);
+            g_object_unref(gmodel);
+        }
     }
+    g_string_free(key, TRUE);
+    gwy_selection_clear(controls.selection);
 
-    return dfield;
+    return result;
 }
 
 static void
diff -Nru gwyddion-2.28/modules/file/omicron.c gwyddion-2.29/modules/file/omicron.c
--- gwyddion-2.28/modules/file/omicron.c	2011-07-11 15:52:02.000000000 +0100
+++ gwyddion-2.29/modules/file/omicron.c	2012-07-19 21:11:31.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  $Id: omicron.c 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  $Id: omicron.c 13532 2012-06-08 18:28:08Z yeti-dn $
  *  Copyright (C) 2006-2011 David Necas (Yeti), Petr Klapetek, Markus Pristovsek
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net,
  *  prissi@gift.physik.tu-berlin.de.
@@ -52,7 +52,7 @@
 
 #include "err.h"
 
-#define MAGIC "Omicron SPM Control"
+#define MAGIC "Parameter file for SPM data."
 #define MAGIC_SIZE (sizeof(MAGIC)-1)
 
 #define EXTENSION_HEADER ".par"
@@ -148,7 +148,7 @@
     &module_register,
     N_("Imports Omicron data files (two-part .par + .tf*, .tb*, .sf*, .sb*)."),
     "Yeti ",
-    "0.8",
+    "0.9",
     "David Nečas (Yeti) & Petr Klapetek & Markus Pristovsek",
     "2006",
 };
@@ -172,22 +172,24 @@
 omicron_detect(const GwyFileDetectInfo *fileinfo,
                gboolean only_name)
 {
-    guint i;
+    const gchar *p = fileinfo->head;
 
     if (only_name)
         return g_str_has_suffix(fileinfo->name_lowercase, EXTENSION_HEADER)
                ? 15 : 0;
 
     /* Quick check to skip most non-matching files */
-    if (fileinfo->buffer_len < 100
-        || fileinfo->head[0] != ';')
+    if (fileinfo->buffer_len < 100)
         return 0;
 
-    for (i = 1; i + MAGIC_SIZE+1 < fileinfo->buffer_len; i++) {
-        if (fileinfo->head[i] != ';' && !g_ascii_isspace(fileinfo->head[i]))
-            break;
-    }
-    if (memcmp(fileinfo->head + i, MAGIC, MAGIC_SIZE) == 0)
+    p = fileinfo->head;
+    if (*p != ';' || !(p = strchr(p+1, ';')) || !(p = strchr(p+1, ';')))
+        return 0;
+
+    do {
+        p++;
+    } while (g_ascii_isspace(*p));
+    if (memcmp(p, MAGIC, MAGIC_SIZE) == 0)
         return 100;
 
     return 0;
diff -Nru gwyddion-2.28/modules/file/pixmap.c gwyddion-2.29/modules/file/pixmap.c
--- gwyddion-2.28/modules/file/pixmap.c	2012-05-09 11:49:50.000000000 +0100
+++ gwyddion-2.29/modules/file/pixmap.c	2012-07-19 21:11:31.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: pixmap.c 13425 2012-05-09 10:49:49Z yeti-dn $
+ *  @(#) $Id: pixmap.c 13540 2012-06-13 16:18:53Z yeti-dn $
  *  Copyright (C) 2004-2012 David Necas (Yeti).
  *  E-mail: yeti@gwyddion.net.
  *
@@ -139,6 +139,8 @@
     gchar *font;
     gdouble font_size;
     gboolean scale_font;
+    gboolean inset_draw_ticks;
+    gboolean inset_draw_label;
     guint grayscale;
     /* Interface only */
     gchar *inset_length;
@@ -181,6 +183,8 @@
     GtkWidget *inset_length_label;
     GtkWidget *inset_length;
     GtkWidget *inset_length_auto;
+    GtkWidget *inset_draw_ticks;
+    GtkWidget *inset_draw_label;
     GtkObject *zoom;
     GtkObject *width;
     GtkObject *height;
@@ -324,7 +328,9 @@
                                                     gdouble real,
                                                     gdouble zoom,
                                                     const GwyRGBA *color,
-                                                    const gchar *font);
+                                                    const gchar *font,
+                                                    gboolean draw_ticks,
+                                                    gboolean draw_label);
 static GdkDrawable*      prepare_drawable          (gint width,
                                                     gint height,
                                                     gint lw,
@@ -440,7 +446,7 @@
 static const PixmapSaveArgs pixmap_save_defaults = {
     1.0, PIXMAP_RULERS, PIXMAP_FMSCALE,
     { 1.0, 1.0, 1.0, 1.0 }, INSET_POS_BOTTOM_RIGHT,
-    TRUE, TRUE, "Helvetica", FONT_SIZE, TRUE,
+    TRUE, TRUE, "Helvetica", FONT_SIZE, TRUE, TRUE, TRUE,
     0,
     /* Interface only */
     NULL, NULL, NULL, FALSE, 0, 0, FALSE,
@@ -458,7 +464,7 @@
        "PNG, JPEG, TIFF, PPM, BMP, TARGA. "
        "Import support relies on GDK and thus may be installation-dependent."),
     "Yeti ",
-    "7.18",
+    "7.19",
     "David Nečas (Yeti)",
     "2004-2012",
 };
@@ -2332,7 +2338,8 @@
 
         sbpixbuf = scalebar(zwidth, args->inset_length,
                             gwy_data_field_get_xreal(args->dfield),
-                            fontzoom, &args->inset_color, args->font);
+                            fontzoom, &args->inset_color, args->font,
+                            args->inset_draw_ticks, args->inset_draw_label);
         sbw = gdk_pixbuf_get_width(sbpixbuf);
         sbh = gdk_pixbuf_get_height(sbpixbuf);
 
@@ -2410,14 +2417,14 @@
     g_object_unref(datapixbuf);
     if (args->xytype == PIXMAP_RULERS) {
         gdk_pixbuf_copy_area(hrpixbuf,
-                            0, 0, zwidth + 2*lw + border, hrh,
-                            pixbuf,
-                            vrw + border, border);
+                             0, 0, zwidth + 2*lw + border, hrh,
+                             pixbuf,
+                             vrw + border, border);
         g_object_unref(hrpixbuf);
         gdk_pixbuf_copy_area(vrpixbuf,
-                            0, 0, vrw, zheight + 2*lw + border,
-                            pixbuf,
-                            border, hrh + border);
+                             0, 0, vrw, zheight + 2*lw + border,
+                             pixbuf,
+                             border, hrh + border);
         g_object_unref(vrpixbuf);
     }
     if (args->ztype == PIXMAP_FMSCALE) {
@@ -2426,10 +2433,10 @@
         gint nsamples;
 
         gdk_pixbuf_copy_area(scalepixbuf,
-                            0, 0, scw, zheight + 2*lw,
-                            pixbuf,
-                            border + vrw + zwidth + 2*lw + gap + fmw + 2*lw,
-                            hrh + border);
+                             0, 0, scw, zheight + 2*lw,
+                             pixbuf,
+                             border + vrw + zwidth + 2*lw + gap + fmw + 2*lw,
+                             hrh + border);
         g_object_unref(scalepixbuf);
 
         key = gwy_layer_basic_get_gradient_key(GWY_LAYER_BASIC(layer));
@@ -2604,6 +2611,8 @@
     gtk_widget_set_sensitive(controls->inset_length_label, sens);
     gtk_widget_set_sensitive(controls->inset_length, sens);
     gtk_widget_set_sensitive(controls->inset_length_auto, sens);
+    gtk_widget_set_sensitive(controls->inset_draw_ticks, sens);
+    gtk_widget_set_sensitive(controls->inset_draw_label, sens);
 }
 
 static void
@@ -2961,6 +2970,32 @@
     save_update_preview(controls);
 }
 
+static void
+inset_draw_ticks_toggled(GtkToggleButton *button,
+                         PixmapSaveControls *controls)
+{
+    PixmapSaveArgs *args = controls->args;
+
+    args->inset_draw_ticks = gtk_toggle_button_get_active(button);
+    if (controls->in_update || args->xytype != PIXMAP_SCALEBAR)
+        return;
+
+    save_update_preview(controls);
+}
+
+static void
+inset_draw_label_toggled(GtkToggleButton *button,
+                         PixmapSaveControls *controls)
+{
+    PixmapSaveArgs *args = controls->args;
+
+    args->inset_draw_label = gtk_toggle_button_get_active(button);
+    if (controls->in_update || args->xytype != PIXMAP_SCALEBAR)
+        return;
+
+    save_update_preview(controls);
+}
+
 static gboolean
 pixmap_save_dialog(GwyContainer *data,
                    PixmapSaveArgs *args,
@@ -3141,7 +3176,7 @@
     align = gtk_alignment_new(0.0, 0.0, 0.0, 0.0);
     gtk_box_pack_start(GTK_BOX(hbox), align, FALSE, FALSE, 0);
 
-    table = GTK_TABLE(gtk_table_new(12, 4, FALSE));
+    table = GTK_TABLE(gtk_table_new(14, 4, FALSE));
     gtk_table_set_row_spacings(table, 2);
     gtk_table_set_col_spacings(table, 6);
     gtk_container_add(GTK_CONTAINER(align), GTK_WIDGET(table));
@@ -3240,6 +3275,26 @@
                              G_CALLBACK(inset_length_set_auto), &controls);
     gtk_table_attach(table, controls.inset_length_auto,
                      3, 4, row, row+1, GTK_EXPAND | GTK_FILL, 0, 0, 0);
+    row++;
+
+    controls.inset_draw_ticks
+        = gtk_check_button_new_with_mnemonic(_("Draw _ticks"));
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(controls.inset_draw_ticks),
+                                 args->inset_draw_ticks);
+    gtk_table_attach(table, controls.inset_draw_ticks,
+                     0, 4, row, row+1, GTK_EXPAND | GTK_FILL, 0, 0, 0);
+    g_signal_connect(controls.inset_draw_ticks, "toggled",
+                     G_CALLBACK(inset_draw_ticks_toggled), &controls);
+    row++;
+
+    controls.inset_draw_label
+        = gtk_check_button_new_with_mnemonic(_("Draw _label"));
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(controls.inset_draw_label),
+                                 args->inset_draw_label);
+    gtk_table_attach(table, controls.inset_draw_label,
+                     0, 4, row, row+1, GTK_EXPAND | GTK_FILL, 0, 0, 0);
+    g_signal_connect(controls.inset_draw_label, "toggled",
+                     G_CALLBACK(inset_draw_label_toggled), &controls);
     gtk_table_set_row_spacing(table, row, 8);
     row++;
 
@@ -3301,6 +3356,8 @@
             inset_length_set_auto(&controls);
             args->draw_mask = pixmap_save_defaults.draw_mask;
             args->draw_selection = pixmap_save_defaults.draw_selection;
+            args->inset_draw_ticks = pixmap_save_defaults.inset_draw_ticks;
+            args->inset_draw_label = pixmap_save_defaults.inset_draw_label;
             gtk_adjustment_set_value(GTK_ADJUSTMENT(controls.zoom), args->zoom);
             args->zoom = PREVIEW_SIZE/(gdouble)MAX(args->xres, args->yres);
             gwy_radio_buttons_set_current(controls.xytypes, args->xytype);
@@ -3309,6 +3366,10 @@
                                          args->draw_mask);
             gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(controls.draw_selection),
                                          args->draw_selection);
+            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(controls.inset_draw_ticks),
+                                         args->inset_draw_ticks);
+            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(controls.inset_draw_label),
+                                         args->inset_draw_label);
             controls.in_update = FALSE;
             save_update_preview(&controls);
             break;
@@ -3673,11 +3734,13 @@
          gdouble real,
          gdouble zoom,
          const GwyRGBA *color,
-         const gchar *font)
+         const gchar *font,
+         gboolean draw_ticks,
+         gboolean draw_label)
 {
     guchar color_bytes[3];
     PangoRectangle logical;
-    PangoLayout *layout;
+    PangoLayout *layout = NULL;
     GdkDrawable *drawable;
     GdkPixbuf *pixbuf;
     GwySIUnit *siunit;
@@ -3689,21 +3752,27 @@
     guchar *pixels;
     gdouble p;
 
-    layout = prepare_layout(zoom, font);
+    if (draw_label)
+        layout = prepare_layout(zoom, font);
 
     s = g_string_new(NULL);
     p = g_strtod(length, &end);
     siunit = gwy_si_unit_new_parse(end, &power10);
     p *= pow10(power10)/real;
     g_object_unref(siunit);
-    format_layout(layout, &logical, s, "%s", length);
 
-    tick = zoom*TICK_LENGTH;
+    if (draw_label)
+        format_layout(layout, &logical, s, "%s", length);
+    else
+        gwy_clear(&logical, 1);
+
     lw = ZOOM2LW(zoom);
+    tick = draw_ticks ? zoom*TICK_LENGTH : lw;
     width = GWY_ROUND(size*p);
     height = PANGO_PIXELS(logical.height) + tick;
 
-    if (height < 2 || width < 2 || height > 16384 || width > 16384) {
+    if (((height < 2 || width < 2) && (draw_label))
+        || height > 16384 || width > 16384) {
         g_warning("Will not create scalebar of size %dx%d, we got the "
                   "scaling terribly wrong somewhere.", width, height);
         pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, BITS_PER_SAMPLE,
@@ -3714,14 +3783,17 @@
 
     drawable = prepare_drawable(width, height, lw, &gc);
 
-    gdk_draw_line(drawable, gc, lw/2, 0, lw/2, tick);
-    gdk_draw_line(drawable, gc, (gint)(width - lw/2.0),
-                  0, (gint)(width  - lw/2.0), tick);
+    if (draw_ticks) {
+        gdk_draw_line(drawable, gc, lw/2, 0, lw/2, tick);
+        gdk_draw_line(drawable, gc, (gint)(width - lw/2.0),
+                      0, (gint)(width  - lw/2.0), tick);
+    }
     gdk_draw_line(drawable, gc, 0, tick/2, width, tick/2);
 
-    gdk_draw_layout(drawable, gc,
-                    (width - PANGO_PIXELS(logical.width))/2, tick,
-                    layout);
+    if (draw_label)
+        gdk_draw_layout(drawable, gc,
+                        (width - PANGO_PIXELS(logical.width))/2, tick,
+                        layout);
 
     pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, BITS_PER_SAMPLE,
                             width, height);
@@ -3730,7 +3802,7 @@
 
     g_object_unref(gc);
     g_object_unref(drawable);
-    g_object_unref(layout);
+    gwy_object_unref(layout);
     g_string_free(s, TRUE);
 
     color_bytes[0] = floor(255.999999*color->r);
@@ -3831,17 +3903,19 @@
     return NULL;
 }
 
-static const gchar draw_mask_key[]      = "/module/pixmap/draw_mask";
-static const gchar draw_selection_key[] = "/module/pixmap/draw_selection";
-static const gchar font_key[]           = "/module/pixmap/font";
-static const gchar font_size_key[]      = "/module/pixmap/font_size";
-static const gchar grayscale_key[]      = "/module/pixmap/grayscale";
-static const gchar inset_color_key[]    = "/module/pixmap/inset_color";
-static const gchar inset_pos_key[]      = "/module/pixmap/inset_pos";
-static const gchar scale_font_key[]     = "/module/pixmap/scale_font";
-static const gchar xytype_key[]         = "/module/pixmap/xytype";
-static const gchar zoom_key[]           = "/module/pixmap/zoom";
-static const gchar ztype_key[]          = "/module/pixmap/ztype";
+static const gchar draw_mask_key[]        = "/module/pixmap/draw_mask";
+static const gchar draw_selection_key[]   = "/module/pixmap/draw_selection";
+static const gchar font_key[]             = "/module/pixmap/font";
+static const gchar font_size_key[]        = "/module/pixmap/font_size";
+static const gchar grayscale_key[]        = "/module/pixmap/grayscale";
+static const gchar inset_color_key[]      = "/module/pixmap/inset_color";
+static const gchar inset_pos_key[]        = "/module/pixmap/inset_pos";
+static const gchar inset_draw_ticks_key[] = "/module/pixmap/inset_draw_ticks";
+static const gchar inset_draw_label_key[] = "/module/pixmap/inset_draw_label";
+static const gchar scale_font_key[]       = "/module/pixmap/scale_font";
+static const gchar xytype_key[]           = "/module/pixmap/xytype";
+static const gchar zoom_key[]             = "/module/pixmap/zoom";
+static const gchar ztype_key[]            = "/module/pixmap/ztype";
 
 static void
 pixmap_save_sanitize_args(PixmapSaveArgs *args)
@@ -3855,6 +3929,8 @@
     args->draw_mask = !!args->draw_mask;
     args->draw_selection = !!args->draw_selection;
     args->scale_font = !!args->scale_font;
+    args->inset_draw_ticks = !!args->inset_draw_ticks;
+    args->inset_draw_label = !!args->inset_draw_label;
     args->font_size = CLAMP(args->font_size, 1.2, 120.0);
     args->grayscale = (args->grayscale == 16) ? 16 : 0;
 }
@@ -3881,6 +3957,10 @@
     gwy_container_gis_double_by_name(container, font_size_key,
                                      &args->font_size);
     gwy_container_gis_int32_by_name(container, grayscale_key, &args->grayscale);
+    gwy_container_gis_boolean_by_name(container, inset_draw_ticks_key,
+                                      &args->inset_draw_ticks);
+    gwy_container_gis_boolean_by_name(container, inset_draw_label_key,
+                                      &args->inset_draw_label);
 
     args->font = g_strdup(args->font);
 
@@ -3906,6 +3986,10 @@
                                       args->scale_font);
     gwy_container_set_double_by_name(container, font_size_key, args->font_size);
     gwy_container_set_int32_by_name(container, grayscale_key, args->grayscale);
+    gwy_container_set_boolean_by_name(container, inset_draw_ticks_key,
+                                      args->inset_draw_ticks);
+    gwy_container_set_boolean_by_name(container, inset_draw_label_key,
+                                      args->inset_draw_label);
 }
 
 static const gchar xreal_key[]       = "/module/pixmap/xreal";
diff -Nru gwyddion-2.28/modules/file/seiko.c gwyddion-2.29/modules/file/seiko.c
--- gwyddion-2.28/modules/file/seiko.c	2011-07-11 15:52:02.000000000 +0100
+++ gwyddion-2.29/modules/file/seiko.c	2012-07-19 21:11:31.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  $Id: seiko.c 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  $Id: seiko.c 13585 2012-07-16 11:00:22Z yeti-dn $
  *  Copyright (C) 2006 David Necas (Yeti), Markus Pristovsek.
  *  E-mail: yeti@gwyddion.net, prissi@gift.physik.tu-berlin.de.
  *
@@ -81,7 +81,7 @@
     &module_register,
     N_("Imports Seiko XQB, XQD and XQT files."),
     "Yeti ",
-    "0.6",
+    "0.7",
     "David Nečas (Yeti) & Markus Pristovsek",
     "2006",
 };
@@ -223,14 +223,26 @@
     alpha = xreal/yreal;
     n = (endfile - datastart)/2;
     xres = (int)sqrt(n/alpha + 0.1);
-    yres = (int)sqrt(n*alpha + 0.1);
+    yres = n/xres;
     gwy_debug("1st try: xres: %d, yres: %d, size: %u vs. %u",
               xres, yres, 2*xres*yres, endfile - datastart);
     if (2*xres*yres != endfile - datastart) {
-        /* Try square then */
+        xres += 1;
+        yres = n/xres;
+        gwy_debug("2nd try: xres: %d, yres: %d, size: %u vs. %u",
+                  xres, yres, 2*xres*yres, endfile - datastart);
+    }
+    if (2*xres*yres != endfile - datastart) {
+        xres += 2;
+        yres = n/xres;
+        gwy_debug("3rd try: xres: %d, yres: %d, size: %u vs. %u",
+                  xres, yres, 2*xres*yres, endfile - datastart);
+    }
+    if (2*xres*yres != endfile - datastart) {
+        /* Square */
         if (fabs(alpha - 1.0) > 1e-3)
             xres = yres = (int)sqrt(n + 0.1);
-        gwy_debug("2nd try: xres: %d, yres: %d, size: %u vs. %u",
+        gwy_debug("4th try: xres: %d, yres: %d, size: %u vs. %u",
                   xres, yres, 2*xres*yres, endfile - datastart);
     }
     if (2*xres*yres != endfile - datastart) {
diff -Nru gwyddion-2.28/modules/file/tiaser.c gwyddion-2.29/modules/file/tiaser.c
--- gwyddion-2.28/modules/file/tiaser.c	2012-05-18 10:40:40.000000000 +0100
+++ gwyddion-2.29/modules/file/tiaser.c	2012-07-19 21:11:31.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: tiaser.c 13475 2012-05-17 18:15:17Z dn2010 $
+ *  @(#) $Id: tiaser.c 13491 2012-05-25 19:14:17Z dn2010 $
  *  Copyright (C) 2012 David Necas (Yeti), Daniil Bratashov (dn2010).
  *  E-mail: yeti@gwyddion.net, dn2010@gmail.com.
  *
@@ -39,7 +39,7 @@
  * [FILE-MAGIC-USERGUIDE]
  * FEI Tecnai imaging and analysis (former Emispec) data
  * .ser
- * Read
+ * Read SPS
  **/
 
 #include "config.h"
@@ -76,16 +76,18 @@
 } TIADataType;
 
 typedef enum {
-    TIA_ES_LE       = 0x4949,
-    TIA_ES_MAGIC    = 0x0197,
-    TIA_ES_VERSION  = 0x0210,
-    TIA_1D_DATA     = 0x4120,
-    TIA_2D_DATA     = 0x4122,
-    TIA_TAG_TIME    = 0x4152,
-    TIA_TAG_TIMEPOS = 0x4142,
-    TIA_HEADER_SIZE = 3 * 2 + 6 * 4,
-    TIA_DIM_SIZE    = 4 * 4 + 2 * 8,
-    TIA_2D_SIZE     = 50,
+    TIA_ES_LE        = 0x4949,
+    TIA_ES_MAGIC     = 0x0197,
+    TIA_ES_VERSION   = 0x0210,
+    TIA_1D_DATA      = 0x4120,
+    TIA_2D_DATA      = 0x4122,
+    TIA_TAG_TIME     = 0x4152,
+    TIA_TAG_TIMEPOS  = 0x4142,
+    TIA_HEADER_SIZE  = 3 * 2 + 6 * 4,
+    TIA_DIM_SIZE     = 4 * 4 + 2 * 8,
+    TIA_2D_SIZE      = 50,
+    TIA_1D_SIZE      = 26,
+    TIA_TIMEPOS_SIZE = 22,
 } TIAConsts;
 
 typedef struct {
@@ -145,27 +147,31 @@
     gchar      *data;
 } TIA2DData;
 
-static gboolean      module_register   (void);
-static gint          tia_detect        (const GwyFileDetectInfo *fileinfo,
-                                        gboolean only_name);
-static GwyContainer* tia_load          (const gchar *filename,
-                                        GwyRunType mode,
-                                        GError **error);
-static void          tia_load_header   (const guchar *p,
-                                        TIAHeader *header);
-static gboolean      tia_check_header  (TIAHeader *header, gsize size);
-static gboolean      tia_load_dimarray (const guchar *p,
-                                        TIADimension *dimarray,
-                                        gsize size);
-static GwyDataField* tia_read_2d       (const guchar *p,
-                                        gsize size);
+static gboolean      module_register       (void);
+static gint          tia_detect            (const GwyFileDetectInfo *fileinfo,
+                                            gboolean only_name);
+static GwyContainer* tia_load              (const gchar *filename,
+                                            GwyRunType mode,
+                                            GError **error);
+static void          tia_load_header       (const guchar *p,
+                                            TIAHeader *header);
+static gboolean      tia_check_header      (TIAHeader *header,
+                                            gsize size);
+static gboolean      tia_load_dimarray     (const guchar *p,
+                                            TIADimension *dimarray,
+                                            gsize size);
+static GwyDataField *tia_read_2d           (const guchar *p,
+                                            gsize size);
+static gdouble       tia_dataline_to_value (GwyDataLine *dline);
+static GwyDataLine  *tia_read_1d_dataline  (const guchar *p,
+                                            gsize size);
 
 static GwyModuleInfo module_info = {
     GWY_MODULE_ABI_VERSION,
     &module_register,
     N_("Imports FEI Tecnai imaging and analysis (former Emispec) files."),
     "dn2010 ",
-    "0.1",
+    "0.2",
     "David Nečas (Yeti), Daniil Bratashov (dn2010)",
     "2012",
 };
@@ -297,7 +303,11 @@
     TIADimension *dimension;
     GArray *dimarray, *dataoffsets, *tagoffsets;
     GwyDataField *dfield;
+    GwySpectra *spectra;
+    GwyDataLine *dline;
     gint i, j, offset, dimarraylength, dimarraysize = 0;
+    gint xres, yres;
+    gdouble xreal, xoffset, yreal, yoffset, value, *data;
     gchar *strkey;
 
     if (!gwy_file_get_contents(filename, &buffer, &size, &err)) {
@@ -323,7 +333,7 @@
     dimarray = g_array_sized_new(FALSE, TRUE, sizeof(TIADimension),
                                                         dimarraylength);
     for (i = 0; i < dimarraylength; i++) {
-		p += dimarraysize;
+        p += dimarraysize;
         dimension = g_new0(TIADimension, 1);
         if(!tia_load_dimarray(p, dimension, size - TIA_HEADER_SIZE
                                                       - dimarraysize)) {
@@ -334,7 +344,7 @@
                 g_free(dimension->description);
                 g_free(dimension->units);
             }
-            goto fail2;
+            goto fail3;
         }
         dimarraysize += TIA_DIM_SIZE
                 + dimension->descriptionlength + dimension->unitslength;
@@ -347,18 +357,24 @@
     for (i = 0; i < header->totalnumberelements; i++) {
         offset = gwy_get_guint32_le(&p);
         g_array_append_val(dataoffsets, offset);
+        if (offset > size) {
+            goto dataoffsets_fail;
+        }
     }
     tagoffsets = g_array_new(FALSE, TRUE, sizeof(gint32));
     for (i = 0; i < header->totalnumberelements; i++) {
         offset = gwy_get_guint32_le(&p);
         g_array_append_val(tagoffsets, offset);
+        if (offset > size) {
+            goto tagoffsets_fail;
+        }
     }
 
     container = gwy_container_new();
     if (header->datatypeid == TIA_2D_DATA)
         for (i = 0; i < header->validnumberelements; i++) {
             offset = g_array_index(dataoffsets, gint32, i);
-            if ((offset > size)||(size-offset < 50)) {
+            if ((offset > size)||(size-offset < TIA_2D_SIZE)) {
                 gwy_debug("Attempt to read after EOF");
             }
             else {
@@ -378,12 +394,81 @@
             }
         }
     else if (header->datatypeid == TIA_1D_DATA) {
+        if (dimarray->len != 2) {
+            gwy_debug("Wrong dimensions number");
+            goto tagoffsets_fail;
+        }
+        dimension = &g_array_index(dimarray, TIADimension, 0);
+        xres = dimension->numelements;
+        xreal = dimension->numelements * dimension->calibrationdelta;
+        xoffset = dimension->calibrationoffset
+          - dimension->calibrationdelta * dimension->calibrationelement;
+        dimension = &g_array_index(dimarray, TIADimension, 1);
+        yres = dimension->numelements;
+        yreal = dimension->numelements * dimension->calibrationdelta;
+        yoffset = dimension->calibrationoffset
+          - dimension->calibrationdelta * dimension->calibrationelement;
+        dfield = gwy_data_field_new(xres, yres, xreal, yreal, TRUE);
+        spectra = gwy_spectra_new();
+        if (!dfield || !spectra) {
+            goto tagoffsets_fail;
+        }
+        gwy_data_field_set_xoffset (dfield, xoffset);
+        gwy_data_field_set_yoffset (dfield, yoffset);
+        gwy_si_unit_set_from_string(
+                            gwy_data_field_get_si_unit_xy(dfield), "m");
+        gwy_si_unit_set_from_string(
+                              gwy_spectra_get_si_unit_xy(spectra), "m");
+        gwy_spectra_set_title(spectra, "TEM Spectroscopy");
+        data = gwy_data_field_get_data(dfield);
+
+        for (i = 0; i < header->validnumberelements; i++) {
+            offset = g_array_index(dataoffsets, gint32, i);
+            if ((offset > size)||(size-offset < TIA_1D_SIZE)) {
+                gwy_debug("Attempt to read after EOF");
+                goto tagoffsets_fail;
+            }
+            dline = tia_read_1d_dataline(buffer + offset, size - offset);
+            if(dline) {
+                xreal = gwy_data_field_jtor(dfield, i % xres + 0.5);
+                yreal = gwy_data_field_itor(dfield,
+                                           (gint)(i / xres) + 0.5);
+                value = tia_dataline_to_value(dline);
+                *(data++) = value;
+                gwy_spectra_add_spectrum(spectra, dline,
+                                         xreal, yreal);
+            }
+            else break;
+            g_object_unref(dline);
+        }
+        if (dfield) {
+            GQuark key = gwy_app_get_data_key_for_id(0);
+
+            gwy_container_set_object(container, key, dfield);
+            g_object_unref(dfield);
+
+            strkey = g_strdup_printf("/%u/data/title", 0);
+            gwy_container_set_string_by_name(container,
+                                          strkey,
+                                          g_strdup("TEM Spectroscopy"));
+            g_free(strkey);
+        }
+        if (spectra) {
+            strkey = g_strdup_printf("/sps/%d", 0);
+            gwy_container_set_object_by_name(container,
+                                             strkey, spectra);
+            g_free(strkey);
+            g_object_unref(spectra);
+        }
     }
 
-    g_array_free(dataoffsets, TRUE);
+tagoffsets_fail:
     g_array_free(tagoffsets, TRUE);
-fail2:
+dataoffsets_fail:
+    g_array_free(dataoffsets, TRUE);
+fail3:
     g_array_free(dimarray, TRUE);
+fail2:    
     g_free(header);
 fail:
     gwy_file_abandon_contents(buffer, size, NULL);
@@ -420,7 +505,7 @@
      || (fielddata->datatype > TIA_DATA_DOUBLE)
      || (size < 50 + fielddata->arraylengthx * fielddata->arraylengthy
               * tia_datasizes[fielddata->datatype])) {
-		gwy_debug("Unsupported datatype");
+        gwy_debug("Unsupported datatype");
         goto fail_2d;
     }
 
@@ -526,4 +611,130 @@
     return dfield;
 }
 
+/* simple max calculation */
+static gdouble tia_dataline_to_value(GwyDataLine *dline)
+{
+    gdouble value, *data;
+    gint i, n;
+
+    n = gwy_data_line_get_res(dline);
+    data = (gdouble *)gwy_data_line_get_data_const(dline);
+    value = *(data);
+    for (i = 0; i < n; i++, data++)
+        if(*data > value)
+            value = *data;
+
+    return value;
+}
+
+static GwyDataLine *tia_read_1d_dataline(const guchar *p, gsize size)
+{
+    TIA1DData *spectradata;
+    GwyDataLine *dline = NULL;
+    gint i, n;
+    gdouble *data;
+    gint tia_datasizes[11] = {0, 1, 1, 2, 2, 4, 4, 4, 8, 8, 16};
+
+    spectradata = g_new0(TIA1DData, 1);
+    spectradata->calibrationoffset  = gwy_get_gdouble_le(&p);
+    spectradata->calibrationdelta   = gwy_get_gdouble_le(&p);
+    spectradata->calibrationelement = gwy_get_guint32_le(&p);
+    spectradata->datatype           = (TIADataType)gwy_get_guint16_le(&p);
+    spectradata->arraylength        = gwy_get_guint32_le(&p);
+    spectradata->data               = (gchar *)p;
+
+    if ((spectradata->datatype < TIA_DATA_UINT8)
+     || (spectradata->datatype > TIA_DATA_DOUBLE)
+     || (size < 50 + spectradata->arraylength
+                              * tia_datasizes[spectradata->datatype])) {
+        gwy_debug("Unsupported datatype");
+        goto fail_1d;
+    }
+
+    dline = gwy_data_line_new(spectradata->arraylength,
+               spectradata->arraylength * spectradata->calibrationdelta,
+               TRUE);
+    if (!dline) {
+        gwy_debug("Failed to create dataline");
+        goto fail_1d;
+    }
+
+    gwy_data_line_set_offset(dline, spectradata->calibrationoffset
+     - spectradata->calibrationdelta * spectradata->calibrationelement);
+    data = gwy_data_line_get_data(dline);
+
+    n = spectradata->arraylength;
+    switch (spectradata->datatype) {
+        case TIA_DATA_UINT8:
+        {
+            for(i = 0; i < n; i++)
+                *(data++) = (*(p++)) / (gdouble)G_MAXUINT8;
+        }
+        break;
+        case TIA_DATA_UINT16:
+        {
+            const guint16 *tp = (const guint16 *)p;
+
+            for(i = 0; i < n; i++)
+                *(data++) = GUINT16_FROM_LE(*(tp++))
+                                             / (gdouble)G_MAXUINT16;
+        }
+        break;
+        case TIA_DATA_UINT32:
+        {
+            const guint32 *tp = (const guint32 *)p;
+
+            for(i = 0; i < n; i++)
+                *(data++) = GUINT32_FROM_LE(*(tp++))
+                                             / (gdouble)G_MAXUINT32;
+        }
+        break;
+        case TIA_DATA_INT8:
+        {
+            const gchar *tp = (const gchar *)p;
+
+            for(i = 0; i < n; i++)
+                *(data++) = (*(tp++)) / (gdouble)G_MAXINT8;
+        }
+        break;
+        case TIA_DATA_INT16:
+        {
+            const gint16 *tp = (const gint16 *)p;
+
+            for(i = 0; i < n; i++)
+                *(data++) = GINT16_FROM_LE(*(tp++))
+                                              / (gdouble)G_MAXINT16;
+        }
+        break;
+        case TIA_DATA_INT32:
+        {
+            const gint32 *tp = (const gint32 *)p;
+
+            for(i = 0; i < n; i++)
+                *(data++) = GINT32_FROM_LE(*(tp++))
+                                              / (gdouble)G_MAXINT32;
+        }
+        break;
+        case TIA_DATA_FLOAT:
+        {
+            for(i = 0; i < n; i++)
+                *(data++) = gwy_get_gfloat_le(&p);
+        }
+        break;
+        case TIA_DATA_DOUBLE:
+        {
+            for(i = 0; i < n; i++)
+                *(data++) = gwy_get_gdouble_le(&p);
+        }
+        break;
+        default:
+        g_assert_not_reached();
+        break;
+    }
+
+    fail_1d:
+    g_free(spectradata);
+    return dline;
+}
+
 /* vim: set cin et ts=4 sw=4 cino=>1s,e0,n0,f0,{0,}0,^0,\:1s,=0,g1s,h0,t0,+1s,c3,(0,u0 : */
diff -Nru gwyddion-2.28/modules/process/grain_dist.c gwyddion-2.29/modules/process/grain_dist.c
--- gwyddion-2.28/modules/process/grain_dist.c	2011-07-11 15:52:02.000000000 +0100
+++ gwyddion-2.29/modules/process/grain_dist.c	2012-07-19 21:11:37.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: grain_dist.c 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  @(#) $Id: grain_dist.c 13502 2012-05-31 19:15:29Z yeti-dn $
  *  Copyright (C) 2003-2008 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -144,7 +144,7 @@
     N_("Evaluates distribution of grains (continuous parts of mask)."),
     "Petr Klapetek , Sven Neumann , "
         "Yeti ",
-    "3.8",
+    "3.9",
     "David Nečas (Yeti) & Petr Klapetek & Sven Neumann",
     "2003",
 };
@@ -675,7 +675,7 @@
     GwySIUnit *siunit, *siunit2;
     GwySIValueFormat *vf;
     gint xres, yres, ngrains;
-    gdouble total_area, area, size, vol_0, vol_min, vol_laplace, v;
+    gdouble total_area, area, size, vol_0, vol_min, vol_laplace, bound_len, v;
     gdouble *values = NULL;
     gint *grains;
     GString *str;
@@ -728,6 +728,8 @@
                                      GWY_GRAIN_VALUE_VOLUME_MIN);
     vol_laplace = grains_get_total_value(dfield, ngrains, grains, &values,
                                          GWY_GRAIN_VALUE_VOLUME_LAPLACE);
+    bound_len = grains_get_total_value(dfield, ngrains, grains, &values,
+                                       GWY_GRAIN_VALUE_FLAT_BOUNDARY_LENGTH);
     g_free(values);
     g_free(grains);
 
@@ -736,7 +738,7 @@
                                          NULL);
     gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
 
-    table = gtk_table_new(9, 2, FALSE);
+    table = gtk_table_new(10, 2, FALSE);
     gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), table);
     gtk_container_set_border_width(GTK_CONTAINER(table), 4);
     row = 0;
@@ -792,6 +794,12 @@
     add_report_row(GTK_TABLE(table), &row, _("Total grain volume (laplacian):"),
                    str->str, report);
 
+    v = bound_len;
+    gwy_si_unit_get_format(siunit, GWY_SI_UNIT_FORMAT_VFMARKUP, v, vf);
+    g_string_printf(str, "%.*f %s", vf->precision, v/vf->magnitude, vf->units);
+    add_report_row(GTK_TABLE(table), &row, _("Total projected boundary length:"),
+                   str->str, report);
+
     gwy_si_unit_value_format_free(vf);
     g_object_unref(siunit2);
 
diff -Nru gwyddion-2.28/modules/process/level.c gwyddion-2.29/modules/process/level.c
--- gwyddion-2.28/modules/process/level.c	2011-07-11 15:52:02.000000000 +0100
+++ gwyddion-2.29/modules/process/level.c	2012-07-19 21:11:37.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: level.c 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  @(#) $Id: level.c 13512 2012-06-04 13:27:24Z yeti-dn $
  *  Copyright (C) 2003 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -141,7 +141,6 @@
     GwyDataField *dfield;
     GwyDataField *mfield;
     LevelArgs args;
-    gboolean ok;
     gdouble c, bx, by;
     GQuark quark;
 
@@ -154,21 +153,24 @@
 
     level_load_args(gwy_app_settings_get(), &args);
     if (run != GWY_RUN_IMMEDIATE && mfield) {
-        ok = level_dialog(&args, dialog_title);
+        gboolean ok = level_dialog(&args, dialog_title);
         level_save_args(gwy_app_settings_get(), &args);
         if (!ok)
             return;
     }
     if (!mfield)
         args.masking = GWY_MASK_IGNORE;
-
     if (args.masking == GWY_MASK_IGNORE)
         mfield = NULL;
-    if (mfield)
-        mfield = gwy_data_field_duplicate(mfield);
-    if (mfield && args.masking == GWY_MASK_EXCLUDE) {
-        gwy_data_field_multiply(mfield, -1.0);
-        gwy_data_field_add(mfield, 1.0);
+
+    if (mfield) {
+        if (args.masking == GWY_MASK_EXCLUDE) {
+            mfield = gwy_data_field_duplicate(mfield);
+            gwy_data_field_multiply(mfield, -1.0);
+            gwy_data_field_add(mfield, 1.0);
+        }
+        else
+            g_object_ref(mfield);
     }
 
     gwy_app_undo_qcheckpoint(data, quark, NULL);
diff -Nru gwyddion-2.28/modules/process/linecorrect.c gwyddion-2.29/modules/process/linecorrect.c
--- gwyddion-2.28/modules/process/linecorrect.c	2011-07-11 15:52:02.000000000 +0100
+++ gwyddion-2.29/modules/process/linecorrect.c	2012-07-19 21:11:37.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: linecorrect.c 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  @(#) $Id: linecorrect.c 13511 2012-06-04 13:26:31Z yeti-dn $
  *  Copyright (C) 2003 David Necas (Yeti), Petr Klapetek, Luke Somers.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net, lsomers@sas.upenn.edu.
  *
@@ -24,8 +24,11 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
+#include 
+#include 
 #include 
 
 #define LINECORR_RUN_MODES GWY_RUN_IMMEDIATE
@@ -38,11 +41,28 @@
     guint n;
 } MedianLineData;
 
+typedef struct {
+    GwyMaskingType masking;
+} LineCorrectArgs;
+
+typedef struct {
+    LineCorrectArgs *args;
+    GSList *masking;
+} LineCorrectControls;
+
 static gboolean module_register                    (void);
 static void     line_correct_modus                 (GwyContainer *data,
                                                     GwyRunType run);
 static void     line_correct_median                (GwyContainer *data,
                                                     GwyRunType run);
+static gboolean line_correct_dialog                (LineCorrectArgs *args,
+                                                    const gchar *title);
+static void     masking_changed                    (GtkToggleButton *button,
+                                                    LineCorrectControls *controls);
+static void     line_correct_median_load_args      (GwyContainer *container,
+                                                    LineCorrectArgs *args);
+static void     line_correct_median_save_args      (GwyContainer *container,
+                                                    LineCorrectArgs *args);
 static void     line_correct_median_difference     (GwyContainer *data,
                                                     GwyRunType run);
 static void     line_correct_match                 (GwyContainer *data,
@@ -58,12 +78,16 @@
 static gdouble  sum_of_abs_diff                    (gdouble shift,
                                                     gpointer data);
 
+static const LineCorrectArgs line_correct_defaults = {
+    GWY_MASK_EXCLUDE
+};
+
 static GwyModuleInfo module_info = {
     GWY_MODULE_ABI_VERSION,
     &module_register,
     N_("Corrects line defects (mostly experimental algorithms)."),
     "Yeti , Luke Somers ",
-    "1.7",
+    "1.8",
     "David Nečas (Yeti) & Petr Klapetek & Luke Somers",
     "2004",
 };
@@ -84,7 +108,7 @@
                               (GwyProcessFunc)&line_correct_median,
                               N_("/_Correct Data/M_edian Line Correction"),
                               GWY_STOCK_LINE_LEVEL,
-                              LINECORR_RUN_MODES,
+                              GWY_RUN_IMMEDIATE | GWY_RUN_INTERACTIVE,
                               GWY_MENU_FLAG_DATA,
                               N_("Correct lines by matching height median"));
     gwy_process_func_register("line_correct_median_difference",
@@ -154,34 +178,80 @@
 static void
 line_correct_median(GwyContainer *data, GwyRunType run)
 {
-    GwyDataField *dfield;
+    GwyDataField *dfield, *mfield;
     GwyDataLine *line, *modi;
+    LineCorrectArgs args;
     gint xres, yres, i;
     GQuark dquark;
-    gdouble median;
+    const gdouble *d, *m;
+    gdouble median, total_median;
 
-    g_return_if_fail(run & LINECORR_RUN_MODES);
+    g_return_if_fail(run & (GWY_RUN_IMMEDIATE | GWY_RUN_INTERACTIVE));
     gwy_app_data_browser_get_current(GWY_APP_DATA_FIELD, &dfield,
+                                     GWY_APP_MASK_FIELD, &mfield,
                                      GWY_APP_DATA_FIELD_KEY, &dquark,
                                      0);
     g_return_if_fail(dfield && dquark);
-    gwy_app_undo_qcheckpointv(data, 1, &dquark);
+
+    line_correct_median_load_args(gwy_app_settings_get(), &args);
+    if (run != GWY_RUN_IMMEDIATE && mfield) {
+        gboolean ok = line_correct_dialog(&args, _("Median Line Correction"));
+        line_correct_median_save_args(gwy_app_settings_get(), &args);
+        if (!ok)
+            return;
+    }
+    if (!mfield)
+        args.masking = GWY_MASK_IGNORE;
+    if (args.masking == GWY_MASK_IGNORE)
+        mfield = NULL;
 
     xres = gwy_data_field_get_xres(dfield);
-    line = gwy_data_line_new(xres, 1.0, FALSE);
     yres = gwy_data_field_get_yres(dfield);
+    total_median = gwy_data_field_area_get_median_mask(dfield, mfield,
+                                                       args.masking,
+                                                       0, 0, xres, yres);
+
+    gwy_app_undo_qcheckpointv(data, 1, &dquark);
+
+    d = gwy_data_field_get_data_const(dfield);
+    m = mfield ? gwy_data_field_get_data_const(mfield) : NULL;
+    line = gwy_data_line_new(xres, 1.0, FALSE);
     modi = gwy_data_line_new(yres, 1.0, FALSE);
 
-    for (i = 0; i < yres; i++) {
-        gwy_data_field_get_row(dfield, line, i);
-        median = gwy_math_median(xres, gwy_data_line_get_data(line));
-        gwy_data_line_set_val(modi, i, median);
+    if (mfield) {
+        for (i = 0; i < yres; i++) {
+            const gdouble *row = d + i*xres, *mrow = m + i*xres;
+            gdouble *buf = gwy_data_line_get_data(line);
+            gint count = 0, j;
+
+            if (args.masking == GWY_MASK_INCLUDE) {
+                for (j = 0; j < xres; j++) {
+                    if (mrow[j] > 0.0)
+                        buf[count++] = row[j];
+                }
+            }
+            else {
+                for (j = 0; j < xres; j++) {
+                    if (mrow[j] < 1.0)
+                        buf[count++] = row[j];
+                }
+            }
+
+            median = count ? gwy_math_median(count, buf) : total_median;
+            gwy_data_line_set_val(modi, i, median);
+        }
+    }
+    else {
+        for (i = 0; i < yres; i++) {
+            gwy_data_field_get_row(dfield, line, i);
+            median = gwy_math_median(xres, gwy_data_line_get_data(line));
+            gwy_data_line_set_val(modi, i, median);
+        }
     }
-    median = gwy_data_line_get_median(modi);
 
     for (i = 0; i < yres; i++) {
         gwy_data_field_area_add(dfield, 0, i, xres, 1,
-                                median - gwy_data_line_get_val(modi, i));
+                                total_median - gwy_data_line_get_val(modi, i));
     }
 
     g_object_unref(modi);
@@ -189,6 +259,101 @@
     gwy_data_field_data_changed(dfield);
 }
 
+static gboolean
+line_correct_dialog(LineCorrectArgs *args,
+                    const gchar *title)
+{
+    enum { RESPONSE_RESET = 1 };
+    GtkWidget *dialog, *label, *table;
+    gint row, response;
+    LineCorrectControls controls;
+
+    controls.args = args;
+
+    dialog = gtk_dialog_new_with_buttons(title, NULL, 0,
+                                         _("_Reset"), RESPONSE_RESET,
+                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+                                         GTK_STOCK_OK, GTK_RESPONSE_OK,
+                                         NULL);
+    gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
+    gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
+
+    table = gtk_table_new(12, 3, FALSE);
+    gtk_table_set_row_spacings(GTK_TABLE(table), 2);
+    gtk_table_set_col_spacings(GTK_TABLE(table), 6);
+    gtk_container_set_border_width(GTK_CONTAINER(table), 4);
+    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), table);
+    row = 0;
+
+    label = gwy_label_new_header(_("Masking Mode"));
+    gtk_table_attach(GTK_TABLE(table), label,
+                     0, 3, row, row+1, GTK_EXPAND | GTK_FILL, 0, 0, 0);
+    row++;
+
+    controls.masking = gwy_radio_buttons_create(gwy_masking_type_get_enum(), -1,
+                                                G_CALLBACK(masking_changed),
+                                                &controls, args->masking);
+    row = gwy_radio_buttons_attach_to_table(controls.masking, GTK_TABLE(table),
+                                            3, row);
+
+    gtk_widget_show_all(dialog);
+    do {
+        response = gtk_dialog_run(GTK_DIALOG(dialog));
+        switch (response) {
+            case GTK_RESPONSE_CANCEL:
+            case GTK_RESPONSE_DELETE_EVENT:
+            gtk_widget_destroy(dialog);
+
+            case GTK_RESPONSE_NONE:
+            return FALSE;
+            break;
+
+            case GTK_RESPONSE_OK:
+            break;
+
+            case RESPONSE_RESET:
+            *args = line_correct_defaults;
+            gwy_radio_buttons_set_current(controls.masking, args->masking);
+            break;
+
+            default:
+            g_assert_not_reached();
+            break;
+        }
+    } while (response != GTK_RESPONSE_OK);
+
+    gtk_widget_destroy(dialog);
+
+    return TRUE;
+}
+
+static void
+masking_changed(GtkToggleButton *button, LineCorrectControls *controls)
+{
+    if (!gtk_toggle_button_get_active(button))
+        return;
+
+    controls->args->masking = gwy_radio_buttons_get_current(controls->masking);
+}
+
+static const gchar masking_key[] = "/module/line_correct_median/mode";
+
+static void
+line_correct_median_load_args(GwyContainer *container, LineCorrectArgs *args)
+{
+    *args = line_correct_defaults;
+
+    gwy_container_gis_enum_by_name(container, masking_key,
+                                   &args->masking);
+}
+
+static void
+line_correct_median_save_args(GwyContainer *container, LineCorrectArgs *args)
+{
+    gwy_container_set_enum_by_name(container, masking_key,
+                                   args->masking);
+}
+
 static void
 line_correct_median_difference(GwyContainer *data, GwyRunType run)
 {
diff -Nru gwyddion-2.28/modules/process/neural.c gwyddion-2.29/modules/process/neural.c
--- gwyddion-2.28/modules/process/neural.c	2012-05-09 09:00:45.000000000 +0100
+++ gwyddion-2.29/modules/process/neural.c	2012-07-19 21:11:37.000000000 +0100
@@ -1,6 +1,6 @@
 /*
- *  @(#) $Id: neural.c 8929 2008-12-31 13:40:16Z yeti-dn $
- *  Copyright (C) 2003,2004 David Necas (Yeti), Petr Klapetek.
+ *  @(#) $Id: neural.c 13606 2012-07-18 08:47:11Z yeti-dn $
+ *  Copyright (C) 2012 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -19,11 +19,13 @@
  */
 
 #include "config.h"
+#include 
 #include 
 #include 
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -68,11 +70,10 @@
     gdouble *doutput;
     gdouble *target;
 
-    gdouble **whidden;
-    gdouble **winput;
-    gdouble **wphidden;
-    gdouble **wpinput;
-
+    gdouble *whidden;
+    gdouble *winput;
+    gdouble *wphidden;
+    gdouble *wpinput;
 } GwyNN;
 
 typedef struct {
@@ -100,53 +101,49 @@
 };
 
 
-static gboolean     module_register           (void);
-static void         neural                (GwyContainer *data,
-                                               GwyRunType run);
-static gboolean     neural_dialog         (NeuralArgs *args);
-static void         neural_data_cb        (GwyDataChooser *chooser,
-                                               NeuralControls *controls);
-static void         neural_do             (NeuralArgs *args);
-static void         neural_sanitize_args  (NeuralArgs *args);
-static void         neural_load_args      (GwyContainer *container,
-                                           NeuralArgs *args);
-static void         neural_save_args      (GwyContainer *container,
-                                           NeuralArgs *args);
-static void         neural_values_update  (NeuralControls *controls,
-                                           NeuralArgs *args);
-static void         neural_dialog_update  (NeuralControls *controls,
-                                           NeuralArgs *args);
-static GwyNN*       gwy_nn_alloc          (gint input, 
-                                           gint hidden,
-                                           gint output);
-static void         gwy_nn_feed_forward   (GwyNN* nn, 
-                                           gdouble *input, 
-                                           gdouble *output);
-
-static void         layer_forward         (gdouble *input, 
-                                           gdouble *output, 
-                                           gdouble **weight, 
-                                           gint nin, 
-                                           gint nout);
-
-static void         gwy_nn_train_step     (GwyNN *nn, 
-                                           gdouble eta, 
-                                           gdouble momentum, 
-                                           gdouble *err_o, 
-                                           gdouble *err_h, 
-                                           gdouble *input, 
-                                           gdouble *target);
-
-static void         gwy_nn_free           (GwyNN *nn);
-
-static const gchar default_expression[] = "d1 - d2";
+static gboolean module_register     (void);
+static void     neural              (GwyContainer *data,
+                                     GwyRunType run);
+static gboolean neural_dialog       (NeuralArgs *args);
+static void     neural_data_cb      (GwyDataChooser *chooser,
+                                     NeuralControls *controls);
+static void     neural_do           (NeuralArgs *args);
+static void     neural_sanitize_args(NeuralArgs *args);
+static void     neural_load_args    (GwyContainer *container,
+                                     NeuralArgs *args);
+static void     neural_save_args    (GwyContainer *container,
+                                     NeuralArgs *args);
+static void     neural_values_update(NeuralControls *controls,
+                                     NeuralArgs *args);
+static void     neural_dialog_update(NeuralControls *controls,
+                                     NeuralArgs *args);
+static void     shuffle             (guint *a,
+                                     guint n,
+                                     GRand *rng);
+static GwyNN*   gwy_nn_alloc        (gint input,
+                                     gint hidden,
+                                     gint output);
+static void     gwy_nn_randomize    (GwyNN *nn,
+                                     GRand *rng);
+static void     gwy_nn_feed_forward (GwyNN* nn);
+static void     layer_forward       (const gdouble *input,
+                                     gdouble *output,
+                                     const gdouble *weight,
+                                     guint nin,
+                                     guint nout);
+static void     gwy_nn_train_step   (GwyNN *nn,
+                                     gdouble eta,
+                                     gdouble momentum,
+                                     gdouble *err_o,
+                                     gdouble *err_h);
+static void     gwy_nn_free         (GwyNN *nn);
 
 static GwyModuleInfo module_info = {
     GWY_MODULE_ABI_VERSION,
     &module_register,
     N_("Neural network SPM data processing"),
     "Petr Klapetek ",
-    "1.0",
+    "1.1",
     "David Nečas (Yeti) & Petr Klapetek",
     "2012",
 };
@@ -158,7 +155,7 @@
 {
     gwy_process_func_register("neural",
                               (GwyProcessFunc)&neural,
-                              N_("/M_ultidata/_Neural network..."),
+                              N_("/M_ultidata/_Neural Network..."),
                               NULL,
                               NEURAL_RUN_MODES,
                               GWY_MENU_FLAG_DATA,
@@ -178,8 +175,8 @@
 
     gwy_app_data_browser_get_current(GWY_APP_DATA_FIELD_ID, &id, 0);
 
-    neural_load_args(gwy_app_settings_get(), &args);
     settings = gwy_app_settings_get();
+    neural_load_args(settings, &args);
     args.tmodel.data = data;
     args.tmodel.id = id;
     args.rmodel.data = data;
@@ -187,11 +184,9 @@
     args.tsignal.data = data;
     args.tsignal.id = id;
 
-
-    if (neural_dialog(&args)) {
+    if (neural_dialog(&args))
         neural_do(&args);
-        neural_save_args(gwy_app_settings_get(), &args);
-    }
+    neural_save_args(settings, &args);
 }
 
 static gboolean
@@ -204,7 +199,7 @@
 
     controls.args = args;
 
-    dialog = gtk_dialog_new_with_buttons(_("Neural network"), NULL, 0,
+    dialog = gtk_dialog_new_with_buttons(_("Neural Network"), NULL, 0,
                                          _("_Reset"), RESPONSE_RESET,
                                          GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                          NULL);
@@ -222,77 +217,74 @@
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), table, TRUE, TRUE, 4);
     row = 0;
 
-    label = gtk_label_new(_("Operands:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+    label = gwy_label_new_header(_("Operands"));
     gtk_table_attach(GTK_TABLE(table), label, 0, 2, row, row+1,
                      GTK_EXPAND | GTK_FILL, 0, 0, 0);
     row++;
 
     controls.tmodel = gwy_data_chooser_new_channels();
     g_object_set_data(G_OBJECT(controls.tmodel), "dialog", dialog);
-    gwy_table_attach_hscale(table, row, _("Training model:"), NULL,
+    gwy_table_attach_hscale(table, row, _("Training _model:"), NULL,
                             GTK_OBJECT(controls.tmodel), GWY_HSCALE_WIDGET);
-    gtk_table_set_row_spacing(GTK_TABLE(table), row, 8);
     row++;
 
     controls.tsignal = gwy_data_chooser_new_channels();
     g_object_set_data(G_OBJECT(controls.tsignal), "dialog", dialog);
-    gwy_table_attach_hscale(table, row, _("Training signal:"), NULL,
+    gwy_table_attach_hscale(table, row, _("Training _signal:"), NULL,
                             GTK_OBJECT(controls.tsignal), GWY_HSCALE_WIDGET);
-    gtk_table_set_row_spacing(GTK_TABLE(table), row, 8);
     row++;
 
     controls.rmodel = gwy_data_chooser_new_channels();
     g_object_set_data(G_OBJECT(controls.rmodel), "dialog", dialog);
-    gwy_table_attach_hscale(table, row, _("Result model:"), NULL,
+    gwy_table_attach_hscale(table, row, _("Res_ult model:"), NULL,
                             GTK_OBJECT(controls.rmodel), GWY_HSCALE_WIDGET);
     gtk_table_set_row_spacing(GTK_TABLE(table), row, 8);
     row++;
 
+    label = gwy_label_new_header(_("Parameters"));
+    gtk_table_attach(GTK_TABLE(table), label, 0, 2, row, row+1,
+                     GTK_EXPAND | GTK_FILL, 0, 0, 0);
+    row++;
 
     controls.width = gtk_adjustment_new(args->width, 1, 100, 1, 10, 0);
-    spin = gwy_table_attach_spinbutton(table, row, _("Window width:"), "px",
+    spin = gwy_table_attach_spinbutton(table, row, _("Window _width:"), "px",
                                        controls.width);
     gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0);
     row++;
 
     controls.height = gtk_adjustment_new(args->height, 1, 100, 1, 10, 0);
-    spin = gwy_table_attach_spinbutton(table, row, _("Window height:"), "px",
+    spin = gwy_table_attach_spinbutton(table, row, _("Window h_eight:"), "px",
                                        controls.height);
     gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0);
     row++;
 
     controls.trainsteps = gtk_adjustment_new(args->trainsteps, 1, 100000, 1, 10, 0);
-    spin = gwy_table_attach_spinbutton(table, row, _("Training steps:"), "",
+    spin = gwy_table_attach_spinbutton(table, row, _("_Training steps:"), "",
                                        controls.trainsteps);
     gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0);
     row++;
 
     controls.hidden = gtk_adjustment_new(args->hidden, 1, 20, 1, 10, 0);
-    spin = gwy_table_attach_spinbutton(table, row, _("Hidden nodes:"), "",
+    spin = gwy_table_attach_spinbutton(table, row, _("_Hidden nodes:"), "",
                                        controls.hidden);
     gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0);
     row++;
 
-    controls.message = gtk_label_new((" "));
+    controls.message = gtk_label_new("");
     gtk_misc_set_alignment(GTK_MISC(controls.message), 0.0, 0.5);
     gtk_table_attach(GTK_TABLE(table), controls.message, 0, 2, row, row+1,
                      GTK_EXPAND | GTK_FILL, 0, 0, 0);
     row++;
 
-
-    gtk_table_set_row_spacing(GTK_TABLE(table), row-1, 8);
-
     g_signal_connect(controls.rmodel, "changed",
                      G_CALLBACK(neural_data_cb), &controls);
     g_signal_connect(controls.tmodel, "changed",
-                     G_CALLBACK(neural_data_cb), &controls); 
+                     G_CALLBACK(neural_data_cb), &controls);
     g_signal_connect(controls.tsignal, "changed",
                      G_CALLBACK(neural_data_cb), &controls);
 
     neural_data_cb(GWY_DATA_CHOOSER(controls.rmodel), &controls);
 
-
     gtk_widget_show_all(dialog);
     do {
         response = gtk_dialog_run(GTK_DIALOG(dialog));
@@ -326,19 +318,22 @@
 
 static void
 neural_data_cb(G_GNUC_UNUSED GwyDataChooser *chooser,
-                   NeuralControls *controls)
+               NeuralControls *controls)
 {
     NeuralArgs *args;
     GwyDataField *tf, *rf, *sf;
     GQuark quark;
 
     args = controls->args;
-    args->tmodel.data = gwy_data_chooser_get_active(GWY_DATA_CHOOSER(controls->tmodel),
-                                                        &args->tmodel.id);
-    args->rmodel.data = gwy_data_chooser_get_active(GWY_DATA_CHOOSER(controls->rmodel),
-                                                        &args->rmodel.id);
-    args->tsignal.data = gwy_data_chooser_get_active(GWY_DATA_CHOOSER(controls->tsignal),
-                                                     &args->tsignal.id);
+    args->tmodel.data
+        = gwy_data_chooser_get_active(GWY_DATA_CHOOSER(controls->tmodel),
+                                      &args->tmodel.id);
+    args->rmodel.data
+        = gwy_data_chooser_get_active(GWY_DATA_CHOOSER(controls->rmodel),
+                                      &args->rmodel.id);
+    args->tsignal.data
+        = gwy_data_chooser_get_active(GWY_DATA_CHOOSER(controls->tsignal),
+                                      &args->tsignal.id);
 
     quark = gwy_app_get_data_key_for_id(args->tmodel.id);
     tf = GWY_DATA_FIELD(gwy_container_get_object(args->tmodel.data, quark));
@@ -347,24 +342,24 @@
     quark = gwy_app_get_data_key_for_id(args->tsignal.id);
     sf = GWY_DATA_FIELD(gwy_container_get_object(args->tsignal.data, quark));
 
-
-    if (gwy_data_field_check_compatibility(tf, rf,
-         GWY_DATA_COMPATIBILITY_RES
-         | GWY_DATA_COMPATIBILITY_REAL
-         | GWY_DATA_COMPATIBILITY_LATERAL)==0 && 
-        gwy_data_field_check_compatibility(tf, sf,
-         GWY_DATA_COMPATIBILITY_RES
-         | GWY_DATA_COMPATIBILITY_REAL
-         | GWY_DATA_COMPATIBILITY_LATERAL) == 0)
-    {
-        gtk_label_set_text(GTK_LABEL(controls->message), " ");
+    if (!gwy_data_field_check_compatibility
+                                (tf, sf,
+                                 GWY_DATA_COMPATIBILITY_RES
+                                 | GWY_DATA_COMPATIBILITY_REAL
+                                 | GWY_DATA_COMPATIBILITY_LATERAL)
+        && !gwy_data_field_check_compatibility
+                                (tf, rf,
+                                 GWY_DATA_COMPATIBILITY_MEASURE
+                                 | GWY_DATA_COMPATIBILITY_LATERAL
+                                 | GWY_DATA_COMPATIBILITY_VALUE)) {
+        gtk_label_set_text(GTK_LABEL(controls->message), "");
         gtk_widget_set_sensitive(controls->ok, TRUE);
     }
     else {
-        gtk_label_set_text(GTK_LABEL(controls->message), _("Data not compatible"));
+        gtk_label_set_text(GTK_LABEL(controls->message),
+                           _("Data not compatible"));
         gtk_widget_set_sensitive(controls->ok, FALSE);
     }
-
 }
 
 static void
@@ -372,117 +367,124 @@
 {
     GwyContainer *data;
     GQuark quark;
-    GwyDataField *tmodel, *rmodel, *tsignal, *result;
+    GwyDataField *tmodel, *rmodel, *tsignal, *result, *scaled;
     GwyDataLine *errors;
     GwyGraphModel *gmodel;
     GwyGraphCurveModel *gcmodel;
-    gdouble mfactor, sfactor, mshift, sshift;
-    gdouble *dtmodel, *drmodel, *dtsignal, *dresult, *input, *output, eo=0, eh=0;
-    gint xres, yres, col, row, newid, n, height, width, irow, icol;
+    gdouble sfactor, sshift, eo = 0.0, eh = 0.0;
+    gdouble *dresult;
+    const gdouble *dtmodel, *drmodel, *dtsignal;
+    gint xres, yres, col, row, newid, n, height, width, irow, k;
+    guint *indices;
+    GRand *rng;
     GwyNN *nn;
 
     data = args->tmodel.data;
     quark = gwy_app_get_data_key_for_id(args->tmodel.id);
     tmodel = GWY_DATA_FIELD(gwy_container_get_object(data, quark));
-    dtmodel = gwy_data_field_get_data(tmodel);
+    rng = g_rand_new();
 
-    gwy_app_wait_start(gwy_app_find_window_for_channel(data, args->tmodel.id), _("Starting..."));
+    gwy_app_wait_start(gwy_app_find_window_for_channel(data, args->tmodel.id),
+                       _("Starting..."));
 
     data = args->tsignal.data;
     quark = gwy_app_get_data_key_for_id(args->tsignal.id);
     tsignal = GWY_DATA_FIELD(gwy_container_get_object(data, quark));
-    dtsignal = gwy_data_field_get_data(tsignal);
+    dtsignal = gwy_data_field_get_data_const(tsignal);
 
     data = args->rmodel.data;
     quark = gwy_app_get_data_key_for_id(args->rmodel.id);
     rmodel = GWY_DATA_FIELD(gwy_container_get_object(data, quark));
-    drmodel = gwy_data_field_get_data(rmodel);
 
-    xres = gwy_data_field_get_xres(tmodel);
-    yres = gwy_data_field_get_yres(tmodel);
     width = args->width;
     height = args->height;
 
-    nn = gwy_nn_alloc(height*width, args->hidden, 1); 
-    input = g_new(gdouble, height*width);
-    output = g_new(gdouble, 1); //preserve for generality
+    nn = gwy_nn_alloc(height*width, args->hidden, 1);
+    gwy_nn_randomize(nn, rng);
     errors = gwy_data_line_new(args->trainsteps, args->trainsteps, TRUE);
-    mshift = gwy_data_field_get_min(tmodel);
     sshift = gwy_data_field_get_min(tsignal);
-    mfactor = 1.0/(gwy_data_field_get_max(tmodel)-mshift);
     sfactor = 1.0/(gwy_data_field_get_max(tsignal)-sshift);
 
-    result = gwy_data_field_new_alike(tsignal, FALSE);
-    gwy_data_field_fill(result, gwy_data_field_get_avg(tsignal));
-    dresult = gwy_data_field_get_data(result);
-
     /*perform training*/
-    gwy_app_wait_set_message("Training...");
-    for (n=0; ntrainsteps; n++)
-    {
-        for (row=(height/2); row<(yres-height/2); row++)
-        {
-            for (col=(width/2); col<(xres-width/2); col++)
-            {
-                for (irow = 0; irowtrainsteps; n++) {
+        /* FIXME: Randomisation leads to weird spiky NN error curves. */
+        /* shuffle(indices, (xres - width)*(yres - height), rng); */
+        for (k = 0; k < (xres - width)*(yres - height); k++) {
+            for (irow = 0; irow < height; irow++) {
+                memcpy(nn->input + irow*width,
+                       dtmodel + indices[k] + irow*xres,
+                       width*sizeof(gdouble));
             }
+            nn->target[0] = sfactor*(dtsignal[indices[k]
+                                              + height/2*xres + width/2]
+                                              - sshift);
+            gwy_nn_train_step(nn, 0.3, 0.3, &eo, &eh);
         }
-        if (!gwy_app_wait_set_fraction((gdouble)n/(gdouble)args->trainsteps))
-        {
+        if (!gwy_app_wait_set_fraction((gdouble)n/(gdouble)args->trainsteps)) {
             gwy_nn_free(nn);
-            g_free(input);
-            g_free(output);
-            g_object_unref(result);
+            g_rand_free(rng);
+            g_object_unref(scaled);
+            g_free(indices);
             gwy_object_unref(errors);
             return;
         }
-        gwy_data_line_set_val(errors, n, eo+eh);
+        gwy_data_line_set_val(errors, n, eo + eh);
     }
+    g_free(indices);
+    g_object_unref(scaled);
 
-    gwy_app_wait_set_message("Evaluating...");
+    gwy_app_wait_set_message(_("Evaluating..."));
     gwy_app_wait_set_fraction(0.0);
-    for (row=(height/2); row<(yres-height/2); row++)
-    {
-        for (col=(width/2); col<(xres-width/2); col++)
-        {
-            for (irow = 0; irowinput + irow*width,
+                       drmodel + ((row + irow - height/2)*xres
+                                  + col - width/2),
+                       width*sizeof(gdouble));
+            }
+            gwy_nn_feed_forward(nn);
+            dresult[row*xres + col] = nn->output[0]/sfactor + sshift;
         }
-        if (!gwy_app_wait_set_fraction((gdouble)row/(gdouble)yres))
-        {
+        if (row % 32 == 31
+            && !gwy_app_wait_set_fraction((gdouble)row/(gdouble)yres)) {
             gwy_nn_free(nn);
-            g_free(input);
-            g_free(output);
+            g_rand_free(rng);
             g_object_unref(result);
+            g_object_unref(scaled);
             gwy_object_unref(errors);
             return;
         }
-     }
+    }
+    g_object_unref(scaled);
+    g_rand_free(rng);
 
     gwy_app_wait_finish();
 
@@ -508,20 +510,33 @@
     gwy_app_data_browser_add_graph_model(gmodel, data, TRUE);
     gwy_object_unref(gmodel);
     gwy_object_unref(errors);
+}
 
+static void
+shuffle(guint *a, guint n, GRand *rng)
+{
+    guint i;
 
+    for (i = 0; i < n; i++) {
+        guint j = g_rand_int_range(rng, i, n);
+        GWY_SWAP(guint, a[i], a[j]);
+    }
 }
 
-static GwyNN*       
-gwy_nn_alloc(gint input, gint hidden, gint output)
+static inline gdouble
+sigma(gdouble x)
+{
+    return (1.0/(1.0 + exp(-x)));
+}
+
+static GwyNN*
+gwy_nn_alloc(gint ninput, gint nhidden, gint noutput)
 {
-    gint i, j;
     GwyNN *nn = (GwyNN*)g_malloc(sizeof(GwyNN));
-    GRand *rng;
 
-    nn->ninput = input+1;
-    nn->nhidden = hidden+1;
-    nn->noutput = output+1;
+    nn->ninput = ninput;
+    nn->nhidden = nhidden;
+    nn->noutput = noutput;
 
     nn->input = g_new0(gdouble, nn->ninput);
     nn->hidden = g_new0(gdouble, nn->nhidden);
@@ -530,185 +545,154 @@
     nn->doutput = g_new0(gdouble, nn->noutput);
     nn->target = g_new0(gdouble, nn->noutput);
 
-    nn->winput = g_new(gdouble *, nn->ninput);
-    nn->wpinput = g_new(gdouble *, nn->ninput);
-    for (i=0; ininput; i++)
-    {
-        nn->winput[i] = (gdouble*)g_new(gdouble, nn->nhidden);
-        nn->wpinput[i] = (gdouble*)g_new0(gdouble, nn->nhidden);
-    }
-
-    nn->whidden = g_new(gdouble *, nn->nhidden);
-    nn->wphidden = g_new(gdouble *, nn->nhidden);
-    for (i=0; inhidden; i++)
-    {
-        nn->whidden[i] = (gdouble*)g_new(gdouble, nn->noutput);
-        nn->wphidden[i] = (gdouble*)g_new0(gdouble, nn->noutput);
-    }
+    /* Add weights for the constant input signal neurons. */
+    nn->winput = g_new0(gdouble, (nn->ninput + 1)*nn->nhidden);
+    nn->wpinput = g_new0(gdouble, (nn->ninput + 1)*nn->nhidden);
 
-    rng = g_rand_new();
-    g_rand_set_seed(rng, 1);
-
-    for (i=0; ininput; i++)
-    {
-        for (j=0; jnhidden; j++) nn->winput[i][j] = (2.0*g_rand_double(rng) - 1)*0.1;
-    }
-    for (i=0; inhidden; i++)
-    {
-        for (j=0; jnoutput; j++) nn->whidden[i][j] = (2.0*g_rand_double(rng) - 1)*0.1;
-    }
+    nn->whidden = g_new0(gdouble, (nn->nhidden + 1)*nn->noutput);
+    nn->wphidden = g_new0(gdouble, (nn->nhidden + 1)*nn->noutput);
 
-    g_rand_free(rng);
     return nn;
 }
 
-static inline gdouble 
-sigma(gdouble x)
-{
-    return (1.0/(1.0+exp(-x)));
-}
-
-static void 
-gwy_nn_feed_forward(GwyNN* nn, gdouble *input, gdouble *output)
+static void
+gwy_nn_randomize(GwyNN *nn, GRand *rng)
 {
     gint i;
-    for (i=0; i<(nn->ninput-1); i++) nn->input[i+1] = input[i];
+    gdouble *p;
 
-    layer_forward(nn->input, nn->hidden, nn->winput, nn->ninput, nn->nhidden);
-    layer_forward(nn->hidden, nn->output, nn->whidden, nn->nhidden, nn->noutput);
+    for (i = (nn->ninput + 1)*nn->nhidden, p = nn->winput; i; i--, p++)
+        *p = (2.0*g_rand_double(rng) - 1)*0.1;
+    for (i = (nn->nhidden + 1)*nn->noutput, p = nn->whidden; i; i--, p++)
+        *p = (2.0*g_rand_double(rng) - 1)*0.1;
+}
 
-    for (i=0; i<(nn->noutput-1); i++) output[i] = nn->output[i+1];
+static void
+gwy_nn_feed_forward(GwyNN* nn)
+{
+    layer_forward(nn->input, nn->hidden, nn->winput,
+                  nn->ninput, nn->nhidden);
+    layer_forward(nn->hidden, nn->output, nn->whidden,
+                  nn->nhidden, nn->noutput);
 }
 
 static void
-layer_forward(gdouble *input, gdouble *output, gdouble **weight, gint nin, gint nout)
+layer_forward(const gdouble *input, gdouble *output, const gdouble *weight,
+              guint nin, guint nout)
 {
-    gint j, k;
-    gdouble sum;
-    
-    input[0] = 1.0;
-    for (j=1; jninput-1); i++) nn->input[i+1]=input[i];
-    for (i=0; i<(nn->noutput-1); i++) nn->target[i+1]=target[i];
-
     layer_forward(nn->input, nn->hidden, nn->winput, nn->ninput, nn->nhidden);
     layer_forward(nn->hidden, nn->output, nn->whidden, nn->nhidden, nn->noutput);
 
-    *err_o=output_error(nn->output, nn->noutput, nn->target, nn->doutput);
-    *err_h=hidden_error(nn->hidden, nn->nhidden, nn->dhidden, nn->doutput, nn->noutput, nn->whidden);
-
-    adjust_weights(nn->doutput, nn->noutput, nn->hidden, nn->nhidden, nn->whidden, nn->wphidden, eta, momentum);
-    adjust_weights(nn->dhidden, nn->nhidden, nn->input, nn->ninput, nn->winput, nn->wpinput, eta, momentum);
-
+    *err_o = output_error(nn->output, nn->noutput, nn->target, nn->doutput);
+    *err_h = hidden_error(nn->hidden, nn->nhidden, nn->dhidden,
+                          nn->doutput, nn->noutput, nn->whidden);
+
+    adjust_weights(nn->doutput, nn->noutput, nn->hidden, nn->nhidden,
+                   nn->whidden, nn->wphidden, eta, momentum);
+    adjust_weights(nn->dhidden, nn->nhidden, nn->input, nn->ninput,
+                   nn->winput, nn->wpinput, eta, momentum);
 }
 
 static void
 gwy_nn_free(GwyNN *nn)
 {
-    gint i;
-    
     g_free(nn->input);
     g_free(nn->hidden);
     g_free(nn->dhidden);
     g_free(nn->output);
     g_free(nn->doutput);
     g_free(nn->target);
-
-    for (i=0; ininput; i++)
-    {
-        g_free(nn->winput[i]);
-        g_free(nn->wpinput[i]);
-    }
     g_free(nn->winput);
     g_free(nn->wpinput);
-
-    for (i=0; inhidden; i++)
-    {
-        g_free(nn->whidden[i]);
-        g_free(nn->wphidden[i]);
-    }
     g_free(nn->whidden);
     g_free(nn->wphidden);
-
 }
 
-
 static void
 neural_dialog_update(NeuralControls *controls,
-                                    NeuralArgs *args)
+                     NeuralArgs *args)
 {
-
     gtk_adjustment_set_value(GTK_ADJUSTMENT(controls->width),
                              args->width);
     gtk_adjustment_set_value(GTK_ADJUSTMENT(controls->height),
@@ -717,29 +701,23 @@
                              args->trainsteps);
     gtk_adjustment_set_value(GTK_ADJUSTMENT(controls->hidden),
                              args->hidden);
-
 }
 
 static void
 neural_values_update(NeuralControls *controls,
-                                    NeuralArgs *args)
+                     NeuralArgs *args)
 {
-    args->width
-                = gtk_adjustment_get_value(GTK_ADJUSTMENT(controls->width));
-    args->height
-                = gtk_adjustment_get_value(GTK_ADJUSTMENT(controls->height));
+    args->width = gtk_adjustment_get_value(GTK_ADJUSTMENT(controls->width));
+    args->height = gtk_adjustment_get_value(GTK_ADJUSTMENT(controls->height));
     args->trainsteps
-                = gtk_adjustment_get_value(GTK_ADJUSTMENT(controls->trainsteps));
-    args->hidden
-                = gtk_adjustment_get_value(GTK_ADJUSTMENT(controls->hidden));
-
+        = gtk_adjustment_get_value(GTK_ADJUSTMENT(controls->trainsteps));
+    args->hidden = gtk_adjustment_get_value(GTK_ADJUSTMENT(controls->hidden));
 }
 
-
-static const gchar width_key[]    = "/module/neural/width";
-static const gchar height_key[]    = "/module/neural/height";
-static const gchar trainsteps_key[]    = "/module/neural/trainsteps";
-static const gchar hidden_key[]    = "/module/neural/hidden";
+static const gchar width_key[]      = "/module/neural/width";
+static const gchar height_key[]     = "/module/neural/height";
+static const gchar trainsteps_key[] = "/module/neural/trainsteps";
+static const gchar hidden_key[]     = "/module/neural/hidden";
 
 static void
 neural_sanitize_args(NeuralArgs *args)
diff -Nru gwyddion-2.28/modules/process/obj_synth.c gwyddion-2.29/modules/process/obj_synth.c
--- gwyddion-2.28/modules/process/obj_synth.c	2011-07-11 15:52:02.000000000 +0100
+++ gwyddion-2.29/modules/process/obj_synth.c	2012-07-19 21:11:37.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: obj_synth.c 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  @(#) $Id: obj_synth.c 13555 2012-06-27 09:35:55Z yeti-dn $
  *  Copyright (C) 2009-2011 David Necas (Yeti).
  *  E-mail: yeti@gwyddion.net.
  *
@@ -281,7 +281,7 @@
     { OBJ_SYNTH_THATCH,   N_("Thatches"),     &create_thatch,   &getcov_thatch,   },
     { OBJ_SYNTH_TENT,     N_("Tents"),        &create_tent,     &getcov_tent,     },
     { OBJ_SYNTH_GAUSSIAN, N_("Gaussians"),    &create_gaussian, &getcov_gaussian, },
-    { OBJ_SYNTH_DOUGHNUT, N_("Dougnuts"),     &create_doughnut, &getcov_doughnut, },
+    { OBJ_SYNTH_DOUGHNUT, N_("Doughnuts"),    &create_doughnut, &getcov_doughnut, },
 };
 
 static GwyModuleInfo module_info = {
@@ -289,7 +289,7 @@
     &module_register,
     N_("Generates randomly patterned surfaces by placing objects."),
     "Yeti ",
-    "1.3",
+    "1.4",
     "David Nečas (Yeti)",
     "2009",
 };
@@ -945,8 +945,8 @@
         gdouble *p;
 
         id = g_rand_int_range(rngset->rng[RNG_ID], 0, ncells - k);
-        i = indices[id]/nycells;
-        j = indices[id] % nycells;
+        i = indices[id]/nxcells;
+        j = indices[id] % nxcells;
         indices[id] = indices[ncells-1 - k];
 
         size = args->size;
diff -Nru gwyddion-2.28/modules/pygwy/gwy.c gwyddion-2.29/modules/pygwy/gwy.c
--- gwyddion-2.28/modules/pygwy/gwy.c	1970-01-01 01:00:00.000000000 +0100
+++ gwyddion-2.29/modules/pygwy/gwy.c	2012-07-19 21:11:32.000000000 +0100
@@ -0,0 +1,144 @@
+/*
+ *  @(#) $Id: gwy.c 13528 2012-06-07 14:44:44Z yeti-dn $
+ *  Copyright (C) 2012 David Necas (Yeti), Petr Klapetek, Jozef Vesely.
+ *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net, vesely@gjh.sk.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+/********** from pygwy.c **********/
+
+#include 
+#include 
+#include "wrap_calls.h"
+#include 
+#include "pygwy.h"
+
+/* function to fill list of containers, for gwy_app_data_browser_get_containers
+ */
+static void
+pygwy_create_py_list_of_containers(GwyContainer *data, gpointer list)
+{
+   if (PyList_Append((PyObject *) list, pygobject_new((GObject *)data)) < 0) {
+      g_warning("Could not append container to python list of containers.");
+   }
+}
+
+#include "pygwywrap.c"
+#include "pygwy-console.h"
+
+/********** from gwybatch.c **********/
+
+static void
+load_modules(void)
+{
+    const gchar *const module_types[] = {
+        "file", "layer", "process", "graph", "tools", NULL
+    };
+    GPtrArray *module_dirs;
+    const gchar *upath;
+    gchar *mpath;
+    guint i;
+
+    module_dirs = g_ptr_array_new();
+
+    /* System modules */
+    mpath = gwy_find_self_dir("modules");
+    for (i = 0; module_types[i]; i++) {
+        g_ptr_array_add(module_dirs,
+                        g_build_filename(mpath, module_types[i], NULL));
+    }
+    g_free(mpath);
+
+    /* User modules */
+    upath = gwy_get_user_dir();
+    for (i = 0; module_types[i]; i++) {
+        g_ptr_array_add(module_dirs,
+                        g_build_filename(upath, module_types[i], NULL));
+    }
+
+    /* Register all found there, in given order. */
+    g_ptr_array_add(module_dirs, NULL);
+    gwy_module_register_modules((const gchar**)module_dirs->pdata);
+
+    for (i = 0; module_dirs->pdata[i]; i++)
+        g_free(module_dirs->pdata[i]);
+    g_ptr_array_free(module_dirs, TRUE);
+}
+
+/* FIXME: It would be better to just fix the flags using RTLD_NOLOAD because
+ * the libraries are surely loaded. */
+static gboolean
+reload_libraries(void)
+{
+    static const gchar *const gwyddion_libs[] = {
+        "libgwyddion2", "libgwyprocess2", "libgwydraw2", "libgwydgets2",
+        "libgwymodule2", "libgwyapp2",
+    };
+    guint i;
+
+    for (i = 0; i < G_N_ELEMENTS(gwyddion_libs); i++) {
+        gchar *filename = g_strconcat(gwyddion_libs[i], ".", G_MODULE_SUFFIX,
+                                      NULL);
+        GModule *modhandle = g_module_open(filename, G_MODULE_BIND_LAZY);
+        if (!modhandle) {
+            gchar *excstr = g_strdup_printf("Cannot dlopen() %s.", filename);
+            PyErr_SetString(PyExc_ImportError, excstr);
+            g_free(excstr);
+            return FALSE;
+        }
+        g_module_make_resident(modhandle);
+        g_free(filename);
+    }
+
+    return TRUE;
+}
+
+PyMODINIT_FUNC
+initgwy(void)
+{
+    gchar *settings_file;
+    PyObject *mod, *dict;
+
+    if (!reload_libraries())
+        return;
+
+    /* gwybatch.c */
+    /* This requires a display.  */
+    gtk_init(NULL, NULL);
+    //gtk_parse_args(NULL, NULL);
+    gwy_widgets_type_init();
+    gwy_undo_set_enabled(FALSE);
+    gwy_resource_class_load(g_type_class_peek(GWY_TYPE_GRADIENT));
+    gwy_resource_class_load(g_type_class_peek(GWY_TYPE_GL_MATERIAL));
+    gwy_resource_class_load(g_type_class_peek(GWY_TYPE_GRAIN_VALUE));
+    gwy_resource_class_load(g_type_class_peek(GWY_TYPE_CALIBRATION));
+    settings_file = gwy_app_settings_get_settings_filename();
+    gwy_app_settings_load(settings_file, NULL);
+    g_free(settings_file);
+    /* This requires a display.  */
+    gwy_stock_register_stock_items();
+    load_modules();
+
+    /* pygwy.c */
+    init_pygobject();
+    mod = Py_InitModule("gwy", (PyMethodDef*)pygwy_functions);
+    dict = PyModule_GetDict(mod);
+    /* This does "import gtk" so display is required. */
+    pygwy_register_classes(dict);
+    pygwy_add_constants(mod, "GWY_");
+}
+
+/* vim: set cin et ts=4 sw=4 cino=>1s,e0,n0,f0,{0,}0,^0,\:1s,=0,g1s,h0,t0,+1s,c3,(0,u0 : */
diff -Nru gwyddion-2.28/modules/pygwy/Makefile.am gwyddion-2.29/modules/pygwy/Makefile.am
--- gwyddion-2.28/modules/pygwy/Makefile.am	2010-12-13 10:04:39.000000000 +0000
+++ gwyddion-2.29/modules/pygwy/Makefile.am	2012-07-19 21:11:32.000000000 +0100
@@ -1,6 +1,7 @@
-# @(#) $Id: Makefile.am 11681 2010-12-10 07:56:23Z yeti-dn $
+# @(#) $Id: Makefile.am 13530 2012-06-08 17:47:28Z yeti-dn $
 
 moduledir = $(pkglibdir)/modules
+pygwyutildir = $(pkgdatadir)/pygwy
 
 PYGWY_H_FILES = \
 	$(top_srcdir)/libprocess/arithmetic.h \
@@ -132,44 +133,49 @@
 	$(top_srcdir)/libgwydgets/gwystock.h \
 	$(top_srcdir)/libgwydgets/gwyvectorlayer.h \
 	$(top_srcdir)/libgwydgets/gwyvruler.h \
-   wrap_calls.h	
+   wrap_calls.h
+
+#	$(top_srcdir)/app/gwytool.h
+#	$(top_srcdir)/libgwyddion/gwydebugobjects.h
+#	$(top_srcdir)/libdraw/gwydrawenums.h
+
+#	$(top_srcdir)/libgwymodule/gwymodule-file.h
+#	$(top_srcdir)/libgwymodule/gwymoduleenums.h
 
-#	$(top_srcdir)/app/gwytool.h 
-#	$(top_srcdir)/libgwyddion/gwydebugobjects.h 
-#	$(top_srcdir)/libdraw/gwydrawenums.h 
-
-#	$(top_srcdir)/libgwymodule/gwymodule-file.h 
-#	$(top_srcdir)/libgwymodule/gwymoduleenums.h 
-
-#	$(top_srcdir)/libgwyddion/gwysiunit.h 
-#	$(top_srcdir)/libgwyddion/gwyenum.h 
-#	$(top_srcdir)/libgwyddion/gwyresource.h 
-#	$(top_srcdir)/libgwyddion/gwycontainer.h 
-#	$(top_srcdir)/app/data-browser.h 
-#	$(top_srcdir)/app/undo.h 
+#	$(top_srcdir)/libgwyddion/gwysiunit.h
+#	$(top_srcdir)/libgwyddion/gwyenum.h
+#	$(top_srcdir)/libgwyddion/gwyresource.h
+#	$(top_srcdir)/libgwyddion/gwycontainer.h
+#	$(top_srcdir)/app/data-browser.h
+#	$(top_srcdir)/app/undo.h
 
 
+disabled_sources =
 
 if ENABLE_PYGWY
 pygwy_module = pygwy.la
+gwy_pymodule = gwy.la
 pygwy_sources =
+gwy_sources =
 
-pygwyutildir = $(pkgdatadir)/pygwy
 pygwyutil_DATA = \
 	gwyutils.py
 
 else
-pygwyutildir = 
-pygwyutil_DATA = 
+pygwyutil_DATA =
 pygwy_module =
-pygwy_sources = pygwy.c pygwy-console.c wrap_calls.c
+gwy_pymodule =
+disabled_sources += pygwy.c gwy.c pygwy-console.c wrap_calls.c
 endif
 
 module_LTLIBRARIES = \
 	$(pygwy_module)
 
+pyexec_LTLIBRARIES = \
+	$(gwy_pymodule)
+
 EXTRA_DIST = \
-	$(pygwy_sources) \
+	$(disabled_sources) \
 	$(pygwyutil_DATA) \
 	README.pygwy \
 	pygwy.override \
@@ -223,10 +229,21 @@
 	  | sed -e 's/^void$$/static void/' -e 's/pygwy\.c/pygwywrap\.c/' \
 	        -e '1s#.*#/* This is a 'GENERATED' file */#' >pygwywrap.c
 
-gwy.py: pygwy.defs pygwywrap.c 
+gwy.py: pygwy.defs pygwywrap.c
 	$(PYTHON) ./pygwy-generate-doc.py --codegendir $(PYGTK_CODEGENDIR) >gwy.py
 pygwy-doc: gwy.py
 	$(EPYDOC) -v -o pygwy-doc gwy.py gwyutils.py
+
+gwy_la_SOURCES = gwy.c wrap_calls.c
+gwy_la_CFLAGS = @COMMON_CFLAGS@ @WARNING_NOUNUSED_PAR@ $(PYTHON_INCLUDES) $(PYGTK_CFLAGS)
+gwy_la_LIBADD = \
+	$(top_builddir)/app/libgwyapp2.la \
+	$(top_builddir)/libdraw/libgwydraw2.la \
+	$(top_builddir)/libgwyddion/libgwyddion2.la \
+	$(top_builddir)/libgwydgets/libgwydgets2.la \
+	$(top_builddir)/libgwymodule/libgwymodule2.la \
+	$(top_builddir)/libprocess/libgwyprocess2.la \
+	$(PYTHON_LIBS) $(PYGTK_LIBS) @GTK_LIBS@
 endif
 
 CLEANFILES = gwy.py gwy.pyc gwy.pyo
@@ -235,4 +252,4 @@
 
 clean-local:
 	rm -f core.* *~
-	rm -rf pygwy-doc/	
+	rm -rf pygwy-doc/
diff -Nru gwyddion-2.28/modules/pygwy/Makefile.in gwyddion-2.29/modules/pygwy/Makefile.in
--- gwyddion-2.28/modules/pygwy/Makefile.in	2012-05-18 11:02:06.000000000 +0100
+++ gwyddion-2.29/modules/pygwy/Makefile.in	2012-07-20 16:59:26.000000000 +0100
@@ -15,7 +15,7 @@
 
 @SET_MAKE@
 
-# @(#) $Id: Makefile.am 11681 2010-12-10 07:56:23Z yeti-dn $
+# @(#) $Id: Makefile.am 13530 2012-06-08 17:47:28Z yeti-dn $
 
 
 VPATH = @srcdir@
@@ -37,6 +37,7 @@
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+@ENABLE_PYGWY_FALSE@am__append_1 = pygwy.c gwy.c pygwy-console.c wrap_calls.c
 subdir = modules/pygwy
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -78,26 +79,43 @@
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(moduledir)" "$(DESTDIR)$(pygwyutildir)"
-LTLIBRARIES = $(module_LTLIBRARIES)
-@MODULE_DEPENDENCIES_TRUE@am__DEPENDENCIES_1 =  \
+am__installdirs = "$(DESTDIR)$(moduledir)" "$(DESTDIR)$(pyexecdir)" \
+	"$(DESTDIR)$(pygwyutildir)"
+LTLIBRARIES = $(module_LTLIBRARIES) $(pyexec_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@ENABLE_PYGWY_TRUE@gwy_la_DEPENDENCIES =  \
+@ENABLE_PYGWY_TRUE@	$(top_builddir)/app/libgwyapp2.la \
+@ENABLE_PYGWY_TRUE@	$(top_builddir)/libdraw/libgwydraw2.la \
+@ENABLE_PYGWY_TRUE@	$(top_builddir)/libgwyddion/libgwyddion2.la \
+@ENABLE_PYGWY_TRUE@	$(top_builddir)/libgwydgets/libgwydgets2.la \
+@ENABLE_PYGWY_TRUE@	$(top_builddir)/libgwymodule/libgwymodule2.la \
+@ENABLE_PYGWY_TRUE@	$(top_builddir)/libprocess/libgwyprocess2.la \
+@ENABLE_PYGWY_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am__gwy_la_SOURCES_DIST = gwy.c wrap_calls.c
+@ENABLE_PYGWY_TRUE@am_gwy_la_OBJECTS = gwy_la-gwy.lo \
+@ENABLE_PYGWY_TRUE@	gwy_la-wrap_calls.lo
+gwy_la_OBJECTS = $(am_gwy_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+gwy_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(gwy_la_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+@ENABLE_PYGWY_TRUE@am_gwy_la_rpath = -rpath $(pyexecdir)
+@MODULE_DEPENDENCIES_TRUE@am__DEPENDENCIES_2 =  \
 @MODULE_DEPENDENCIES_TRUE@	$(top_builddir)/app/libgwyapp2.la \
 @MODULE_DEPENDENCIES_TRUE@	$(top_builddir)/libdraw/libgwydraw2.la \
 @MODULE_DEPENDENCIES_TRUE@	$(top_builddir)/libgwyddion/libgwyddion2.la \
 @MODULE_DEPENDENCIES_TRUE@	$(top_builddir)/libgwydgets/libgwydgets2.la \
 @MODULE_DEPENDENCIES_TRUE@	$(top_builddir)/libgwymodule/libgwymodule2.la \
 @MODULE_DEPENDENCIES_TRUE@	$(top_builddir)/libprocess/libgwyprocess2.la
-am__DEPENDENCIES_2 =
-@ENABLE_PYGWY_TRUE@pygwy_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-@ENABLE_PYGWY_TRUE@	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_2)
+@ENABLE_PYGWY_TRUE@pygwy_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+@ENABLE_PYGWY_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 am__pygwy_la_SOURCES_DIST = pygwy.c wrap_calls.c pygwy-console.c
 @ENABLE_PYGWY_TRUE@am_pygwy_la_OBJECTS = pygwy_la-pygwy.lo \
 @ENABLE_PYGWY_TRUE@	pygwy_la-wrap_calls.lo \
 @ENABLE_PYGWY_TRUE@	pygwy_la-pygwy-console.lo
 pygwy_la_OBJECTS = $(am_pygwy_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
 pygwy_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(pygwy_la_CFLAGS) \
 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
@@ -128,8 +146,8 @@
 AM_V_GEN = $(am__v_GEN_$(V))
 am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
 am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(pygwy_la_SOURCES)
-DIST_SOURCES = $(am__pygwy_la_SOURCES_DIST)
+SOURCES = $(gwy_la_SOURCES) $(pygwy_la_SOURCES)
+DIST_SOURCES = $(am__gwy_la_SOURCES_DIST) $(am__pygwy_la_SOURCES_DIST)
 DATA = $(pygwyutil_DATA)
 ETAGS = etags
 CTAGS = ctags
@@ -358,6 +376,7 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 moduledir = $(pkglibdir)/modules
+pygwyutildir = $(pkgdatadir)/pygwy
 PYGWY_H_FILES = \
 	$(top_srcdir)/libprocess/arithmetic.h \
 	$(top_srcdir)/libprocess/cdline.h \
@@ -488,28 +507,29 @@
 	$(top_srcdir)/libgwydgets/gwystock.h \
 	$(top_srcdir)/libgwydgets/gwyvectorlayer.h \
 	$(top_srcdir)/libgwydgets/gwyvruler.h \
-   wrap_calls.h	
+   wrap_calls.h
 
-@ENABLE_PYGWY_FALSE@pygwy_module = 
 
-#	$(top_srcdir)/app/gwytool.h 
-#	$(top_srcdir)/libgwyddion/gwydebugobjects.h 
-#	$(top_srcdir)/libdraw/gwydrawenums.h 
-
-#	$(top_srcdir)/libgwymodule/gwymodule-file.h 
-#	$(top_srcdir)/libgwymodule/gwymoduleenums.h 
-
-#	$(top_srcdir)/libgwyddion/gwysiunit.h 
-#	$(top_srcdir)/libgwyddion/gwyenum.h 
-#	$(top_srcdir)/libgwyddion/gwyresource.h 
-#	$(top_srcdir)/libgwyddion/gwycontainer.h 
-#	$(top_srcdir)/app/data-browser.h 
-#	$(top_srcdir)/app/undo.h 
+#	$(top_srcdir)/app/gwytool.h
+#	$(top_srcdir)/libgwyddion/gwydebugobjects.h
+#	$(top_srcdir)/libdraw/gwydrawenums.h
+
+#	$(top_srcdir)/libgwymodule/gwymodule-file.h
+#	$(top_srcdir)/libgwymodule/gwymoduleenums.h
+
+#	$(top_srcdir)/libgwyddion/gwysiunit.h
+#	$(top_srcdir)/libgwyddion/gwyenum.h
+#	$(top_srcdir)/libgwyddion/gwyresource.h
+#	$(top_srcdir)/libgwyddion/gwycontainer.h
+#	$(top_srcdir)/app/data-browser.h
+#	$(top_srcdir)/app/undo.h
+disabled_sources = $(am__append_1)
+@ENABLE_PYGWY_FALSE@pygwy_module = 
 @ENABLE_PYGWY_TRUE@pygwy_module = pygwy.la
-@ENABLE_PYGWY_FALSE@pygwy_sources = pygwy.c pygwy-console.c wrap_calls.c
+@ENABLE_PYGWY_FALSE@gwy_pymodule = 
+@ENABLE_PYGWY_TRUE@gwy_pymodule = gwy.la
 @ENABLE_PYGWY_TRUE@pygwy_sources = 
-@ENABLE_PYGWY_FALSE@pygwyutildir = 
-@ENABLE_PYGWY_TRUE@pygwyutildir = $(pkgdatadir)/pygwy
+@ENABLE_PYGWY_TRUE@gwy_sources = 
 @ENABLE_PYGWY_FALSE@pygwyutil_DATA = 
 @ENABLE_PYGWY_TRUE@pygwyutil_DATA = \
 @ENABLE_PYGWY_TRUE@	gwyutils.py
@@ -517,8 +537,11 @@
 module_LTLIBRARIES = \
 	$(pygwy_module)
 
+pyexec_LTLIBRARIES = \
+	$(gwy_pymodule)
+
 EXTRA_DIST = \
-	$(pygwy_sources) \
+	$(disabled_sources) \
 	$(pygwyutil_DATA) \
 	README.pygwy \
 	pygwy.override \
@@ -547,6 +570,17 @@
 @ENABLE_PYGWY_TRUE@pygwy_la_SOURCES = pygwy.c wrap_calls.c pygwy-console.c
 @ENABLE_PYGWY_TRUE@pygwy_la_CFLAGS = @COMMON_CFLAGS@ @WARNING_NOUNUSED_PAR@ @GTKSOURCEVIEW_CFLAGS@ $(PYTHON_INCLUDES) $(PYGTK_CFLAGS)
 @ENABLE_PYGWY_TRUE@pygwy_la_LIBADD = $(module_libadd) $(PYTHON_LIBS) $(PYGTK_LIBS) @GTKSOURCEVIEW_LIBS@
+@ENABLE_PYGWY_TRUE@gwy_la_SOURCES = gwy.c wrap_calls.c
+@ENABLE_PYGWY_TRUE@gwy_la_CFLAGS = @COMMON_CFLAGS@ @WARNING_NOUNUSED_PAR@ $(PYTHON_INCLUDES) $(PYGTK_CFLAGS)
+@ENABLE_PYGWY_TRUE@gwy_la_LIBADD = \
+@ENABLE_PYGWY_TRUE@	$(top_builddir)/app/libgwyapp2.la \
+@ENABLE_PYGWY_TRUE@	$(top_builddir)/libdraw/libgwydraw2.la \
+@ENABLE_PYGWY_TRUE@	$(top_builddir)/libgwyddion/libgwyddion2.la \
+@ENABLE_PYGWY_TRUE@	$(top_builddir)/libgwydgets/libgwydgets2.la \
+@ENABLE_PYGWY_TRUE@	$(top_builddir)/libgwymodule/libgwymodule2.la \
+@ENABLE_PYGWY_TRUE@	$(top_builddir)/libprocess/libgwyprocess2.la \
+@ENABLE_PYGWY_TRUE@	$(PYTHON_LIBS) $(PYGTK_LIBS) @GTK_LIBS@
+
 CLEANFILES = gwy.py gwy.pyc gwy.pyo
 DISTCLEANFILES = pygwy.defs pygwywrap.c
 all: $(BUILT_SOURCES)
@@ -615,6 +649,39 @@
 	  echo "rm -f \"$${dir}/so_locations\""; \
 	  rm -f "$${dir}/so_locations"; \
 	done
+install-pyexecLTLIBRARIES: $(pyexec_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(pyexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pyexecdir)"
+	@list='$(pyexec_LTLIBRARIES)'; test -n "$(pyexecdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pyexecdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pyexecdir)"; \
+	}
+
+uninstall-pyexecLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(pyexec_LTLIBRARIES)'; test -n "$(pyexecdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pyexecdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pyexecdir)/$$f"; \
+	done
+
+clean-pyexecLTLIBRARIES:
+	-test -z "$(pyexec_LTLIBRARIES)" || rm -f $(pyexec_LTLIBRARIES)
+	@list='$(pyexec_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+gwy.la: $(gwy_la_OBJECTS) $(gwy_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(gwy_la_LINK) $(am_gwy_la_rpath) $(gwy_la_OBJECTS) $(gwy_la_LIBADD) $(LIBS)
 pygwy.la: $(pygwy_la_OBJECTS) $(pygwy_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(pygwy_la_LINK) $(am_pygwy_la_rpath) $(pygwy_la_OBJECTS) $(pygwy_la_LIBADD) $(LIBS)
 
@@ -624,6 +691,8 @@
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gwy_la-gwy.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gwy_la-wrap_calls.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pygwy_la-pygwy-console.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pygwy_la-pygwy.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pygwy_la-wrap_calls.Plo@am__quote@
@@ -652,6 +721,22 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
 
+gwy_la-gwy.lo: gwy.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gwy_la_CFLAGS) $(CFLAGS) -MT gwy_la-gwy.lo -MD -MP -MF $(DEPDIR)/gwy_la-gwy.Tpo -c -o gwy_la-gwy.lo `test -f 'gwy.c' || echo '$(srcdir)/'`gwy.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gwy_la-gwy.Tpo $(DEPDIR)/gwy_la-gwy.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gwy.c' object='gwy_la-gwy.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gwy_la_CFLAGS) $(CFLAGS) -c -o gwy_la-gwy.lo `test -f 'gwy.c' || echo '$(srcdir)/'`gwy.c
+
+gwy_la-wrap_calls.lo: wrap_calls.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gwy_la_CFLAGS) $(CFLAGS) -MT gwy_la-wrap_calls.lo -MD -MP -MF $(DEPDIR)/gwy_la-wrap_calls.Tpo -c -o gwy_la-wrap_calls.lo `test -f 'wrap_calls.c' || echo '$(srcdir)/'`wrap_calls.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gwy_la-wrap_calls.Tpo $(DEPDIR)/gwy_la-wrap_calls.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='wrap_calls.c' object='gwy_la-wrap_calls.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gwy_la_CFLAGS) $(CFLAGS) -c -o gwy_la-wrap_calls.lo `test -f 'wrap_calls.c' || echo '$(srcdir)/'`wrap_calls.c
+
 pygwy_la-pygwy.lo: pygwy.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pygwy_la_CFLAGS) $(CFLAGS) -MT pygwy_la-pygwy.lo -MD -MP -MF $(DEPDIR)/pygwy_la-pygwy.Tpo -c -o pygwy_la-pygwy.lo `test -f 'pygwy.c' || echo '$(srcdir)/'`pygwy.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pygwy_la-pygwy.Tpo $(DEPDIR)/pygwy_la-pygwy.Plo
@@ -789,7 +874,7 @@
 	$(MAKE) $(AM_MAKEFLAGS) check-am
 all-am: Makefile $(LTLIBRARIES) $(DATA)
 installdirs:
-	for dir in "$(DESTDIR)$(moduledir)" "$(DESTDIR)$(pygwyutildir)"; do \
+	for dir in "$(DESTDIR)$(moduledir)" "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pygwyutildir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: $(BUILT_SOURCES)
@@ -824,7 +909,7 @@
 clean: clean-am
 
 clean-am: clean-generic clean-libtool clean-local \
-	clean-moduleLTLIBRARIES mostlyclean-am
+	clean-moduleLTLIBRARIES clean-pyexecLTLIBRARIES mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -850,7 +935,7 @@
 
 install-dvi-am:
 
-install-exec-am:
+install-exec-am: install-pyexecLTLIBRARIES
 
 install-html: install-html-am
 
@@ -890,25 +975,27 @@
 
 ps-am:
 
-uninstall-am: uninstall-moduleLTLIBRARIES uninstall-pygwyutilDATA
+uninstall-am: uninstall-moduleLTLIBRARIES uninstall-pyexecLTLIBRARIES \
+	uninstall-pygwyutilDATA
 
 .MAKE: all check install install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-local clean-moduleLTLIBRARIES ctags \
-	distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-moduleLTLIBRARIES \
-	install-pdf install-pdf-am install-ps install-ps-am \
+	clean-libtool clean-local clean-moduleLTLIBRARIES \
+	clean-pyexecLTLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man \
+	install-moduleLTLIBRARIES install-pdf install-pdf-am \
+	install-ps install-ps-am install-pyexecLTLIBRARIES \
 	install-pygwyutilDATA install-strip installcheck \
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags uninstall uninstall-am uninstall-moduleLTLIBRARIES \
-	uninstall-pygwyutilDATA
+	uninstall-pyexecLTLIBRARIES uninstall-pygwyutilDATA
 
 
 @ENABLE_PYGWY_TRUE@pygwy.defs: $(PYGWY_H_FILES) Makefile.am pygwy-fix-defs.py
@@ -927,14 +1014,14 @@
 @ENABLE_PYGWY_TRUE@	  | sed -e 's/^void$$/static void/' -e 's/pygwy\.c/pygwywrap\.c/' \
 @ENABLE_PYGWY_TRUE@	        -e '1s#.*#/* This is a 'GENERATED' file */#' >pygwywrap.c
 
-@ENABLE_PYGWY_TRUE@gwy.py: pygwy.defs pygwywrap.c 
+@ENABLE_PYGWY_TRUE@gwy.py: pygwy.defs pygwywrap.c
 @ENABLE_PYGWY_TRUE@	$(PYTHON) ./pygwy-generate-doc.py --codegendir $(PYGTK_CODEGENDIR) >gwy.py
 @ENABLE_PYGWY_TRUE@pygwy-doc: gwy.py
 @ENABLE_PYGWY_TRUE@	$(EPYDOC) -v -o pygwy-doc gwy.py gwyutils.py
 
 clean-local:
 	rm -f core.* *~
-	rm -rf pygwy-doc/	
+	rm -rf pygwy-doc/
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff -Nru gwyddion-2.28/modules/pygwy/pygwy.c gwyddion-2.29/modules/pygwy/pygwy.c
--- gwyddion-2.28/modules/pygwy/pygwy.c	2011-11-23 09:26:55.000000000 +0000
+++ gwyddion-2.29/modules/pygwy/pygwy.c	2012-07-19 21:11:32.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: pygwy.c 13055 2011-11-22 18:20:10Z yeti-dn $
+ *  @(#) $Id: pygwy.c 13582 2012-07-16 06:53:35Z yeti-dn $
  *  Copyright (C) 2004 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -42,6 +42,13 @@
 #include "pygwy-console.h"
 #line 43 "pygwy.c"
 
+#ifdef G_OS_WIN32
+#include 
+#include 
+#define python_version "2.7"
+#define python_key "Software\\Python\\PythonCore\\" python_version "\\InstallPath"
+#endif
+
 typedef struct {
     gchar *name;
     gchar *filename;
@@ -57,6 +64,7 @@
 const gchar pygwy_plugin_dir_name[] = "pygwy";
 
 static gboolean         module_register       (void);
+static gboolean         check_pygtk_availability(void);
 static void             pygwy_proc_run        (GwyContainer *data,
                                                GwyRunType run,
                                                const gchar *name);
@@ -91,7 +99,7 @@
     &module_register,
     N_("Pygwy, the Gwyddion Python wrapper."),
     "Jan Hořák ",
-    "0.1",
+    "0.2",
     "Jan Hořák",
     "2007"
 };
@@ -101,11 +109,80 @@
 static gboolean
 module_register(void)
 {
+    if (!check_pygtk_availability())
+        return;
+
     pygwy_register_plugins();
     pygwy_register_console();
     return TRUE;
 }
 
+/* If python or pygtk is not available it crashes or worse.  Try to figure out
+ * whether it is a good idea to register the module function or not. */
+static gboolean
+check_pygtk_availability(void)
+{
+#ifdef G_OS_WIN32
+    gchar pythondir[256];
+    DWORD size = sizeof(pythondir)-1;
+    HKEY reg_key;
+    gchar *filename;
+    gboolean ok = FALSE;
+
+    gwy_clear(pythondir, sizeof(pythondir));
+    if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT(python_key), 0, KEY_READ,
+                     ®_key) == ERROR_SUCCESS) {
+        if (RegQueryValueEx(reg_key, NULL, NULL, NULL, pythondir, &size) == ERROR_SUCCESS) {
+            ok = TRUE;
+        }
+        RegCloseKey(reg_key);
+    }
+    if (!ok
+        && RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT(python_key), 0, KEY_READ,
+                        ®_key) == ERROR_SUCCESS) {
+        if (RegQueryValueEx(reg_key, NULL, NULL, NULL,
+                            pythondir, &size) == ERROR_SUCCESS)
+            ok = TRUE;
+        RegCloseKey(reg_key);
+    }
+
+    if (!ok) {
+        g_message("Cannot get %s registry key, assuming no python 2.7.",
+                  python_key);
+        return FALSE;
+    }
+
+    filename = g_build_filename(pythondir, "Lib", "site-packages", "gtk-2.0",
+                                "gobject", "__init__.py", NULL);
+    if (!g_file_test(filename, G_FILE_TEST_IS_REGULAR)) {
+        g_message("File %s is not present, assuming no pygobject.", filename);
+        g_free(filename);
+        return FALSE;
+    }
+    g_free(filename);
+
+    filename = g_build_filename(pythondir, "Lib", "site-packages", "gtk-2.0",
+                                "gtk", "__init__.py", NULL);
+    if (!g_file_test(filename, G_FILE_TEST_IS_REGULAR)) {
+        g_message("File %s is not present, assuming no pygtk.", filename);
+        g_free(filename);
+        return FALSE;
+    }
+    g_free(filename);
+
+    filename = g_build_filename(pythondir, "Lib", "site-packages", "cairo",
+                                "__init__.py", NULL);
+    if (!g_file_test(filename, G_FILE_TEST_IS_REGULAR)) {
+        g_message("File %s is not present, assuming no pycairo.", filename);
+        g_free(filename);
+        return FALSE;
+    }
+    g_free(filename);
+#endif
+
+    return TRUE;
+}
+
 
 void
 pygwy_initialize(void)
diff -Nru gwyddion-2.28/modules/pygwy/pygwy-console.c gwyddion-2.29/modules/pygwy/pygwy-console.c
--- gwyddion-2.28/modules/pygwy/pygwy-console.c	2011-07-11 15:40:32.000000000 +0100
+++ gwyddion-2.29/modules/pygwy/pygwy-console.c	2012-07-19 21:11:32.000000000 +0100
@@ -32,9 +32,6 @@
 #include 
 #endif
 
-extern gchar pygwy_plugin_dir_name[];
-
-static PygwyConsoleSetup *s_console_setup = NULL;
 static void       pygwy_on_console_save_as_file      (GtkToolButton *btn, gpointer user_data);
 static void       pygwy_console_run                  (GwyContainer *data,
                                                       GwyRunType run,
@@ -45,6 +42,10 @@
                                                GdkEvent *event,
                                                gpointer user_data);
 
+extern gchar pygwy_plugin_dir_name[];
+
+static PygwyConsoleSetup *s_console_setup = NULL;
+
 void
 pygwy_register_console()
 {
diff -Nru gwyddion-2.28/modules/tools/polynom.c gwyddion-2.29/modules/tools/polynom.c
--- gwyddion-2.28/modules/tools/polynom.c	2011-07-11 15:52:02.000000000 +0100
+++ gwyddion-2.29/modules/tools/polynom.c	2012-07-19 21:11:33.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: polynom.c 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  @(#) $Id: polynom.c 13537 2012-06-11 14:49:58Z yeti-dn $
  *  Copyright (C) 2003-2006 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -92,7 +92,7 @@
     N_("Polynomial line level tool, fits polynomials to X or Y profiles and "
        "subtracts them."),
     "Petr Klapetek ",
-    "2.2",
+    "2.3",
     "David Nečas (Yeti) & Petr Klapetek",
     "2004",
 };
@@ -124,7 +124,7 @@
 
     gobject_class->finalize = gwy_tool_polynom_finalize;
 
-    tool_class->stock_id = GWY_STOCK_POLYNOM;
+    tool_class->stock_id = GWY_STOCK_POLYNOM_LEVEL;
     tool_class->title = _("Polynomial");
     tool_class->tooltip = _("Level X or Y lines with polynomials"),
     tool_class->prefix = "/module/polynom";
diff -Nru gwyddion-2.28/modules/tools/stats.c gwyddion-2.29/modules/tools/stats.c
--- gwyddion-2.28/modules/tools/stats.c	2011-07-11 15:52:02.000000000 +0100
+++ gwyddion-2.29/modules/tools/stats.c	2012-07-19 21:11:33.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  @(#) $Id: stats.c 12576 2011-07-11 14:51:57Z yeti-dn $
+ *  @(#) $Id: stats.c 13517 2012-06-05 09:05:05Z yeti-dn $
  *  Copyright (C) 2003-2008 David Necas (Yeti), Petr Klapetek.
  *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
  *
@@ -59,6 +59,7 @@
     gdouble median;
     gdouble ra;
     gdouble rms;
+    gdouble rms_gw;
     gdouble skew;
     gdouble kurtosis;
     gdouble area;
@@ -110,6 +111,7 @@
     GtkWidget *median;
     GtkWidget *ra;
     GtkWidget *rms;
+    GtkWidget *rms_gw;
     GtkWidget *skew;
     GtkWidget *kurtosis;
     GtkWidget *area;
@@ -179,7 +181,7 @@
     &module_register,
     N_("Statistics tool."),
     "Petr Klapetek ",
-    "2.11",
+    "2.12",
     "David Nečas (Yeti) & Petr Klapetek",
     "2003",
 };
@@ -322,8 +324,9 @@
         { N_("Minimum:"),           G_STRUCT_OFFSET(GwyToolStats, min),      },
         { N_("Maximum:"),           G_STRUCT_OFFSET(GwyToolStats, max),      },
         { N_("Median:"),            G_STRUCT_OFFSET(GwyToolStats, median),   },
-        { N_("Ra (Sa):"),            G_STRUCT_OFFSET(GwyToolStats, ra),       },
-        { N_("Rms (Sq):"),           G_STRUCT_OFFSET(GwyToolStats, rms),      },
+        { N_("Ra (Sa):"),           G_STRUCT_OFFSET(GwyToolStats, ra),       },
+        { N_("Rms (Sq):"),          G_STRUCT_OFFSET(GwyToolStats, rms),      },
+        { N_("Rms (grain-wise):"),  G_STRUCT_OFFSET(GwyToolStats, rms_gw),   },
         { N_("Skew:"),              G_STRUCT_OFFSET(GwyToolStats, skew),     },
         { N_("Kurtosis:"),          G_STRUCT_OFFSET(GwyToolStats, kurtosis), },
         { N_("Surface area:"),      G_STRUCT_OFFSET(GwyToolStats, area),     },
@@ -602,6 +605,7 @@
     if (!plain_tool->data_field) {
         gtk_label_set_text(GTK_LABEL(tool->ra), "");
         gtk_label_set_text(GTK_LABEL(tool->rms), "");
+        gtk_label_set_text(GTK_LABEL(tool->rms_gw), "");
         gtk_label_set_text(GTK_LABEL(tool->skew), "");
         gtk_label_set_text(GTK_LABEL(tool->kurtosis), "");
         gtk_label_set_text(GTK_LABEL(tool->avg), "");
@@ -634,7 +638,6 @@
         update_label_unc(plain_tool->value_format, tool->max, tool->results.max, tool->results.umax);
         update_label_unc(plain_tool->value_format, tool->median, tool->results.median, tool->results.umedian);
         update_label_unc(tool->area_format, tool->projarea, tool->results.projarea, tool->results.uprojarea);
-//        update_label(tool->area_format, tool->projarea, tool->results.projarea);
     } else {
         update_label(plain_tool->value_format, tool->ra, tool->results.ra);
         update_label(plain_tool->value_format, tool->rms, tool->results.rms);
@@ -649,6 +652,8 @@
 
         update_label(tool->area_format, tool->projarea, tool->results.projarea);
     }
+    /* This has no calibration yet. */
+    update_label(plain_tool->value_format, tool->rms_gw, tool->results.rms_gw);
 
     if (tool->same_units)
     {
@@ -749,6 +754,10 @@
                                          isel[0], isel[1], w, h,
                                          &tool->results.min,
                                          &tool->results.max);
+    tool->results.rms_gw
+        = gwy_data_field_area_get_grainwise_rms(plain_tool->data_field,
+                                                mask, masking,
+                                                isel[0], isel[1], w, h);
     tool->results.median
         = gwy_data_field_area_get_median_mask(plain_tool->data_field,
                                               mask, masking,
@@ -803,8 +812,8 @@
                                              &tool->results.umax);
         tool->results.umedian
             = gwy_data_field_area_get_median_uncertainty_mask(plain_tool->data_field, tool->zunc,
-                                                  mask, masking,
-                                                  isel[0], isel[1], w, h);
+                                                              mask, masking,
+                                                              isel[0], isel[1], w, h);
         tool->results.uarea = 0;
          /*   = gwy_data_field_area_get_surface_area_mask_uncertainty(plain_tool->data_field, tool->zunc,
                                                                tool->xunc,
@@ -812,27 +821,21 @@
                                                                mask,masking,
                                                                isel[0], isel[1], w, h);
            TODO							       */
-	if (tool->same_units && !mask) {
-		gwy_data_field_area_get_inclination_uncertainty(plain_tool->data_field,
-				tool->zunc, tool->xunc, tool->yunc,
-				isel[0], isel[1], w, h,
-				&tool->results.utheta,
-				&tool->results.uphi);
-		tool->results.utheta *= 180.0/G_PI;
-		tool->results.uphi *= 180.0/G_PI;
-	}
+        if (tool->same_units && !mask) {
+            gwy_data_field_area_get_inclination_uncertainty(plain_tool->data_field,
+                                                            tool->zunc, tool->xunc, tool->yunc,
+                                                            isel[0], isel[1], w, h,
+                                                            &tool->results.utheta,
+                                                            &tool->results.uphi);
+            tool->results.utheta *= 180.0/G_PI;
+            tool->results.uphi *= 180.0/G_PI;
+        }
 
-        gwy_data_field_resample(tool->xunc, 
-                                oldx, 
-                                oldy,
+        gwy_data_field_resample(tool->xunc, oldx, oldy,
                                 GWY_INTERPOLATION_BILINEAR);
-        gwy_data_field_resample(tool->yunc, 
-                                oldx, 
-                                oldy,
+        gwy_data_field_resample(tool->yunc, oldx, oldy,
                                 GWY_INTERPOLATION_BILINEAR);
-        gwy_data_field_resample(tool->zunc, 
-                                oldx, 
-                                oldy,
+        gwy_data_field_resample(tool->zunc, oldx, oldy,
                                 GWY_INTERPOLATION_BILINEAR);
        }
 
@@ -863,8 +866,8 @@
 
 static void
 update_label_unc(GwySIValueFormat *units,
-             GtkWidget *label,
-             gdouble value, gdouble uncertainty)
+                 GtkWidget *label,
+                 gdouble value, gdouble uncertainty)
 {
     static gchar buffer[64];
 
@@ -982,7 +985,7 @@
     gboolean mask_in_use;
     GString *report;
     gchar *ix, *iy, *iw, *ih, *rx, *ry, *rw, *rh, *muse, *uni;
-    gchar *avg, *min, *max, *median, *rms, *ra, *skew, *kurtosis;
+    gchar *avg, *min, *max, *median, *rms, *rms_gw, *ra, *skew, *kurtosis;
     gchar *area, *projarea, *theta, *phi;
     gchar *key, *retval;
 
@@ -1032,6 +1035,7 @@
     median = fmt_val(median);
     ra = fmt_val(ra);
     rms = fmt_val(rms);
+    rms_gw = fmt_val(rms_gw);
 
     skew = g_strdup_printf("%2.3g", report_data->results.skew);
     kurtosis = g_strdup_printf("%2.3g", report_data->results.kurtosis);
@@ -1069,6 +1073,7 @@
                              "Median:            %s\n"
                              "Ra:                %s\n"
                              "Rms:               %s\n"
+                             "Rms (grain-wise):  %s\n"
                              "Skew:              %s\n"
                              "Kurtosis:          %s\n"
                              "Surface area:      %s\n"
@@ -1078,7 +1083,8 @@
                            iw, ih, ix, iy,
                            rw, rh, rx, ry, uni,
                            muse,
-                           avg, min, max, median, ra, rms, skew, kurtosis,
+                           avg, min, max, median, ra, rms, rms_gw,
+                           skew, kurtosis,
                            area, projarea, theta, phi);
 
     g_free(ix);
@@ -1095,6 +1101,7 @@
     g_free(median);
     g_free(ra);
     g_free(rms);
+    g_free(rms_gw);
     g_free(skew);
     g_free(kurtosis);
     g_free(area);
diff -Nru gwyddion-2.28/NEWS gwyddion-2.29/NEWS
--- gwyddion-2.28/NEWS	2012-05-18 10:41:16.000000000 +0100
+++ gwyddion-2.29/NEWS	2012-07-20 16:14:22.000000000 +0100
@@ -1,3 +1,36 @@
+2.29 (2012-07-20)
+Application:
+- Translations updated: Czech, French, Russian.
+
+Libraries:
+- libgwyprocess: New function to calculate grain-wise rms.
+- libgwymodule: gwy_file_get_data_info() sets its arguments to NULL if no file
+  info is found, fixing a possible crash if newly generated data are saved.
+- libgwyapp: Recent file names are compared canonicalized, fixing repetition
+  of the same file in document history on MS Windows.
+
+Modules:
+- Pixmap: Scalebar ticks and label can be enabled/disabled.
+- Grain statistics: Displays total projected boundary length.
+- Median line correction: Masking is supported.
+- TIA SER: Spectral data import is supported.
+- Statistical quantities: New quantity was added: grain-wise rms.
+- Omicron: Files created by SPIP are recognised and loaded.
+- Nanoscope: Support for old files without @2:Z scale was improved.
+- Object synthesis: A bug causing Critical warning/crash during the generation
+  of non-square data was fixed.
+- Seiko: The guesswork involved in loading of non-square files was somewhat
+  improved.
+- Neural network: Result model size can differ from source, miscallaneous small
+  improvements.
+
+Other:
+- Pygwy is packaged in the Win32 installer (it requires separate Python and
+  PyGTK installation though).
+- Standalone python gwy module is available (experimental).
+- Several icons were improved.
+
+
 2.28 (2012-05-18)
 Application:
 - Translations updated: Czech, French, Russian.
Binary files /tmp/6W43BMtPno/gwyddion-2.28/pixmaps/gwy_3d_base-24.png and /tmp/ug3yy2UQEY/gwyddion-2.29/pixmaps/gwy_3d_base-24.png differ
Binary files /tmp/6W43BMtPno/gwyddion-2.28/pixmaps/gwy_3d_base-24.xcf and /tmp/ug3yy2UQEY/gwyddion-2.29/pixmaps/gwy_3d_base-24.xcf differ
Binary files /tmp/6W43BMtPno/gwyddion-2.28/pixmaps/gwy_level-24.xcf and /tmp/ug3yy2UQEY/gwyddion-2.29/pixmaps/gwy_level-24.xcf differ
Binary files /tmp/6W43BMtPno/gwyddion-2.28/pixmaps/gwy_path_level-24.png and /tmp/ug3yy2UQEY/gwyddion-2.29/pixmaps/gwy_path_level-24.png differ
Binary files /tmp/6W43BMtPno/gwyddion-2.28/pixmaps/gwy_polynom_level-24.png and /tmp/ug3yy2UQEY/gwyddion-2.29/pixmaps/gwy_polynom_level-24.png differ
diff -Nru gwyddion-2.28/pixmaps/Makefile.am gwyddion-2.29/pixmaps/Makefile.am
--- gwyddion-2.28/pixmaps/Makefile.am	2010-12-13 10:04:38.000000000 +0000
+++ gwyddion-2.29/pixmaps/Makefile.am	2012-07-19 21:11:25.000000000 +0100
@@ -1,4 +1,4 @@
-# @(#) $Id: Makefile.am 11681 2010-12-10 07:56:23Z yeti-dn $
+# @(#) $Id: Makefile.am 13536 2012-06-11 14:46:29Z yeti-dn $
 
 pixmapdatadir = $(pkgdatadir)/pixmaps
 icondatadir = $(datadir)/icons/hicolor/48x48/apps
@@ -8,6 +8,7 @@
 # Since 2.7: color_range_auto color_range_full color_range_fixed
 # Since 2.7: color_range_adaptive mask_line
 # Since 2.22: mask_fill_draw mask_fill_erase mask_paint_draw mask_paint_erase
+# Since 2.29: polynom_level
 
 # If you add new stock icons here, add them to a `Since' line above and run
 # ./utils/stockgen.py from the top-level directory to update source code
@@ -103,6 +104,7 @@
 	gwy_path_level-24.png \
 	gwy_pointer_measure-24.png \
 	gwy_polynom-24.png \
+	gwy_polynom_level-24.png \
 	gwy_profile-24.png \
 	gwy_remove_under_mask-24.png \
 	gwy_rotate-24.png \
diff -Nru gwyddion-2.28/pixmaps/Makefile.in gwyddion-2.29/pixmaps/Makefile.in
--- gwyddion-2.28/pixmaps/Makefile.in	2012-05-18 11:02:06.000000000 +0100
+++ gwyddion-2.29/pixmaps/Makefile.in	2012-07-20 16:59:26.000000000 +0100
@@ -15,7 +15,7 @@
 
 @SET_MAKE@
 
-# @(#) $Id: Makefile.am 11681 2010-12-10 07:56:23Z yeti-dn $
+# @(#) $Id: Makefile.am 13536 2012-06-11 14:46:29Z yeti-dn $
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
@@ -320,6 +320,7 @@
 # Since 2.7: color_range_auto color_range_full color_range_fixed
 # Since 2.7: color_range_adaptive mask_line
 # Since 2.22: mask_fill_draw mask_fill_erase mask_paint_draw mask_paint_erase
+# Since 2.29: polynom_level
 
 # If you add new stock icons here, add them to a `Since' line above and run
 # ./utils/stockgen.py from the top-level directory to update source code
@@ -415,6 +416,7 @@
 	gwy_path_level-24.png \
 	gwy_pointer_measure-24.png \
 	gwy_polynom-24.png \
+	gwy_polynom_level-24.png \
 	gwy_profile-24.png \
 	gwy_remove_under_mask-24.png \
 	gwy_rotate-24.png \
Binary files /tmp/6W43BMtPno/gwyddion-2.28/po/cs.gmo and /tmp/ug3yy2UQEY/gwyddion-2.29/po/cs.gmo differ
diff -Nru gwyddion-2.28/po/cs.po gwyddion-2.29/po/cs.po
--- gwyddion-2.28/po/cs.po	2012-05-18 10:44:03.000000000 +0100
+++ gwyddion-2.29/po/cs.po	2012-07-19 21:14:11.000000000 +0100
@@ -1,10 +1,10 @@
-# @(#) $Id: cs.po 13469 2012-05-17 07:45:09Z klapetek $
+# @(#) $Id: cs.po 13608 2012-07-18 09:48:49Z yeti-dn $
 msgid ""
 msgstr ""
 "Project-Id-Version: Gwyddion\n"
 "Report-Msgid-Bugs-To: yeti@gwyddion.net\n"
-"POT-Creation-Date: 2012-05-18 11:44+0200\n"
-"PO-Revision-Date: 2012-05-16 23:43+0200\n"
+"POT-Creation-Date: 2012-07-19 22:14+0200\n"
+"PO-Revision-Date: 2012-07-18 11:48+0200\n"
 "Last-Translator: Petr Klapetek \n"
 "Language-Team: Czech\n"
 "Language: cs\n"
@@ -216,7 +216,7 @@
 
 #: libprocess/cdline.c:564
 msgid "Step height (negative)"
-msgstr "Výšska schodu (záporného)"
+msgstr "Výška schodu (záporného)"
 
 #: libprocess/cdline.c:573
 msgid "Circle (down)"
@@ -303,7 +303,7 @@
 #. * Laplacian background.
 #: libprocess/gwygrainvalue.c:212
 msgid "Laplacian background basis volume"
-msgstr "Objem – základna laplacovské pozadí"
+msgstr "Objem – základna laplaceovské pozadí"
 
 #: libprocess/gwygrainvalue.c:221
 msgid "Projected boundary length"
@@ -623,7 +623,7 @@
 
 #: libprocess/tip.c:235
 msgid "Contact"
-msgstr "Kontatkní"
+msgstr "Kontaktní"
 
 #: libprocess/tip.c:242
 msgid "Noncontact"
@@ -810,7 +810,7 @@
 msgstr "pixelů"
 
 #: libgwydgets/gwy3dwindow.c:1116 modules/file/hdrimage.cc:2149
-#: modules/file/pixmap.c:1030 modules/file/pixmap.c:2989
+#: modules/file/pixmap.c:1036 modules/file/pixmap.c:3024
 #: modules/file/rawfile.c:398 modules/process/angle_dist.c:170
 #: modules/process/calcoefs_new.c:347 modules/process/calibrate.c:296
 #: modules/process/col_synth.c:299 modules/process/curvature.c:602
@@ -823,16 +823,17 @@
 #: modules/process/grain_edge.c:217 modules/process/grain_mark.c:262
 #: modules/process/grain_rem_threshold.c:224 modules/process/grain_wshed.c:182
 #: modules/process/hough.c:175 modules/process/latsim.c:158
-#: modules/process/level.c:253 modules/process/lno_synth.c:436
-#: modules/process/local_contrast.c:126 modules/process/median-bg.c:176
-#: modules/process/neural.c:208 modules/process/noise_synth.c:347
-#: modules/process/obj_synth.c:432 modules/process/pat_synth.c:402
-#: modules/process/pid.c:196 modules/process/polydistort.c:219
-#: modules/process/polylevel.c:376 modules/process/rotate.c:264
-#: modules/process/scale.c:193 modules/process/scars.c:469
-#: modules/process/shade.c:214 modules/process/slope_dist.c:201
-#: modules/process/sphere-revolve.c:215 modules/process/tilt.c:156
-#: modules/process/tip_model.c:170 modules/process/unrotate.c:226
+#: modules/process/level.c:255 modules/process/linecorrect.c:274
+#: modules/process/lno_synth.c:436 modules/process/local_contrast.c:126
+#: modules/process/median-bg.c:176 modules/process/neural.c:203
+#: modules/process/noise_synth.c:347 modules/process/obj_synth.c:432
+#: modules/process/pat_synth.c:402 modules/process/pid.c:196
+#: modules/process/polydistort.c:219 modules/process/polylevel.c:376
+#: modules/process/rotate.c:264 modules/process/scale.c:193
+#: modules/process/scars.c:469 modules/process/shade.c:214
+#: modules/process/slope_dist.c:201 modules/process/sphere-revolve.c:215
+#: modules/process/tilt.c:156 modules/process/tip_model.c:170
+#: modules/process/unrotate.c:226
 msgid "_Reset"
 msgstr "_Obnovit"
 
@@ -1050,7 +1051,7 @@
 
 #: libgwydgets/gwygraphwindow.c:185
 msgid "Measure distances in graph"
-msgstr "Meření vzdáleností v grafu"
+msgstr "Měření vzdáleností v grafu"
 
 #: libgwydgets/gwygraphwindow.c:197
 msgid "Zoom in by mouse selection"
@@ -1155,7 +1156,7 @@
 msgstr "Náhled"
 
 #: libgwymodule/gwymodule-file.c:535 modules/file/err.h:40
-#: modules/file/pixmap.c:746
+#: modules/file/pixmap.c:752
 #, c-format
 msgid "Cannot open file for reading: %s."
 msgstr "Soubor nelze otevřít pro čtení: %s."
@@ -1437,7 +1438,7 @@
 "je neúplná kvůli chybějící dokumentaci, testovacích souborech a/nebo lidí "
 "ochotných pomoci s testováním.\n"
 "\n"
-"Checš-li pomoci zlepšit načítání, kontaktuj prosím autora modulu %s-%s:\n"
+"Chceš-li pomoci zlepšit načítání, kontaktuj prosím autora modulu %s-%s:\n"
 "\n"
 "%s"
 
@@ -1605,51 +1606,51 @@
 msgid "Cannot preview"
 msgstr "Náhled není možný"
 
-#: app/gwyddion.c:132
+#: app/gwyddion.c:133
 msgid "Loading document history"
 msgstr "Načítám historii dokumentů"
 
-#: app/gwyddion.c:137
+#: app/gwyddion.c:138
 msgid "Registering "
 msgstr "Registruji "
 
-#: app/gwyddion.c:138
+#: app/gwyddion.c:139
 msgid "stock items"
 msgstr "standardní ikony"
 
-#: app/gwyddion.c:142
+#: app/gwyddion.c:143
 msgid "color gradients"
 msgstr "barevné gradienty"
 
-#: app/gwyddion.c:144
+#: app/gwyddion.c:145
 msgid "GL materials"
 msgstr "GL materiály"
 
-#: app/gwyddion.c:146
+#: app/gwyddion.c:147
 msgid "grain quantities"
 msgstr "zrnové veličiny"
 
-#: app/gwyddion.c:148
+#: app/gwyddion.c:149
 msgid "calibrations"
 msgstr "kalibrace"
 
-#: app/gwyddion.c:153
+#: app/gwyddion.c:154
 msgid "Loading settings"
 msgstr "Načítám nastavení"
 
-#: app/gwyddion.c:160
+#: app/gwyddion.c:161
 msgid "Registering modules"
 msgstr "Registruji moduly"
 
-#: app/gwyddion.c:182
+#: app/gwyddion.c:183
 msgid "Initializing GUI"
 msgstr "Inicializuji GUI"
 
-#: app/gwyddion.c:391
+#: app/gwyddion.c:392
 msgid "Could not read settings."
 msgstr "Nezdařilo se přečíst nastavení."
 
-#: app/gwyddion.c:394
+#: app/gwyddion.c:395
 #, c-format
 msgid ""
 "Settings file `%s' cannot be read: %s\n"
@@ -1690,7 +1691,7 @@
 #: app/gwymoduleutils-file.c:535
 #, c-format
 msgid "Header line %u lacks key-value separator."
-msgstr "Na řádku %u hlavičky schází odělovač klíče a hodnoty."
+msgstr "Na řádku %u hlavičky schází oddělovač klíče a hodnoty."
 
 #: app/gwymoduleutils-file.c:543
 #, c-format
@@ -1701,7 +1702,7 @@
 #, c-format
 msgid "Header suddenly ended at line %u; end of header marker is missing"
 msgstr ""
-"Hlavička neokčekávaně skončila na řádku %u; chybí značka konce hlavičky."
+"Hlavička neočekávaně skončila na řádku %u; chybí značka konce hlavičky."
 
 #: app/gwymoduleutils.c:197 app/settings.c:130 app/settings.c:141
 #: modules/file/err.h:61
@@ -1880,7 +1881,7 @@
 #: app/tips.c:56
 msgid ""
 "Holding Shift restritcs shapes of selected rectangles to perfect squares."
-msgstr "Podržením Shiftu omezíš tvary vybíraných obdéníků na přesné čtverce."
+msgstr "Podržením Shiftu omezíš tvary vybíraných obdélníků na přesné čtverce."
 
 #: app/tips.c:61
 msgid "Holding Shift restritcs shapes of selected ellipses to perfect circles."
@@ -1901,7 +1902,7 @@
 "not change the underlying data.  All subsequent operations still apply to "
 "the underlying data."
 msgstr ""
-"Presentace dat vytořené funkcemi v Zpracování dat → Presentace nemění "
+"Presentace dat vytvořené funkcemi v Zpracování dat → Presentace nemění "
 "vlastní data. Všechny následné operace stále pracují s původními daty."
 
 #: app/tips.c:78
@@ -1957,7 +1958,7 @@
 "To export the image of a channel to a pixmap graphic format (PNG, TIFF, "
 "JPEG, ...) just save it as this format with File → Save As."
 msgstr ""
-"Obrázek kanálu můžeš exportovat do rastového obrázku (PNG, TIFF, JPEG, ...) "
+"Obrázek kanálu můžeš exportovat do rastrového obrázku (PNG, TIFF, JPEG, ...) "
 "prostě tak, že jej uložíš v tomto formátu pomocí Soubor → Uložit jako."
 
 #: app/tips.c:117
@@ -1980,7 +1981,7 @@
 "→ GL Materials.  The default material is shown in bold face."
 msgstr ""
 "Tvůj oblíbený GL materiál lze nastavit jako výchozí v editoru barevných "
-"gradientů: Úpravy → GL materiáky.  Výchozí materiál se zobrazuje tučně."
+"gradientů: Úpravy → GL materiály.  Výchozí materiál se zobrazuje tučně."
 
 #: app/tips.c:135
 msgid ""
@@ -1992,7 +1993,7 @@
 
 #: app/tips.c:141
 msgid "Each channel has its own metadata."
-msgstr "Každá kanál ma vlastní metadata."
+msgstr "Každá kanál má vlastní metadata."
 
 #: app/tips.c:145
 msgid ""
@@ -2016,7 +2017,7 @@
 
 #: app/tips.c:160
 msgid "Graph axis labels can be edited after by clicking on the label."
-msgstr "Popisky os grafu lze upravovat klinutím na daný popisek."
+msgstr "Popisky os grafu lze upravovat kliknutím na daný popisek."
 
 #: app/tips.c:164
 msgid ""
@@ -2187,7 +2188,7 @@
 
 #: app/tips.c:289
 msgid "Read Value tool displays also the local facet normal."
-msgstr "Nástroj Čtení hodnot zobrazuje také kolmici k lokální polšce."
+msgstr "Nástroj Čtení hodnot zobrazuje také kolmici k lokální plošce."
 
 #: app/tips.c:293
 msgid ""
@@ -2229,7 +2230,7 @@
 "rectangular selection or the intersection of both."
 msgstr ""
 "Nástroj Statistické veličiny umožňuje omezit plochu zájmu pomocí masky, "
-"pravoúhleho výběru nebo kombinace obou."
+"pravoúhlého výběru nebo kombinace obou."
 
 #: app/tips.c:319
 msgid ""
@@ -2278,7 +2279,7 @@
 "selection to the target data."
 msgstr ""
 "Výběry ve Správci výběrů můžeš zkopírovat do jiných dat přetažením výběru ze "
-"seznamu do příšlušného okna."
+"seznamu do příslušného okna."
 
 #: app/tips.c:352
 msgid ""
@@ -2544,7 +2545,7 @@
 #: modules/file/alicona.c:591
 #, c-format
 msgid "Header tag ‘%s’ value is not nul-terminated."
-msgstr "Hodnota tagu ‚%s‘ v hlavičce není ukončna nulovým znakem."
+msgstr "Hodnota tagu ‚%s‘ v hlavičce není ukončena nulovým znakem."
 
 #: modules/file/alicona.c:601
 #, c-format
@@ -2638,12 +2639,12 @@
 msgid "Export Text"
 msgstr "Export jako text"
 
-#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3092
+#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3127
 #: modules/file/rawfile.c:720 modules/file/rawxyz.c:670
 #: modules/process/fft_filter_1d.c:296 modules/process/grain_dist.c:285
 #: modules/process/grain_edge.c:270 modules/process/grain_mark.c:344
 #: modules/process/grain_rem_threshold.c:324 modules/process/grain_wshed.c:278
-#: modules/tools/spotremove.c:319 modules/tools/stats.c:375
+#: modules/tools/spotremove.c:319 modules/tools/stats.c:378
 msgid "Options"
 msgstr "Volby"
 
@@ -2720,10 +2721,10 @@
 
 #: modules/file/burleigh_exp.c:101
 msgid "Burleigh exported data (.txt, .bin)"
-msgstr "Burleight exportovaná data (.txt, .bin)"
+msgstr "Burleigh exportovaná data (.txt, .bin)"
 
 #: modules/file/burleigh_exp.c:225 modules/file/burleigh_exp.c:266
-#: modules/file/nanoscope.c:1098 modules/file/omicron.c:395
+#: modules/file/nanoscope.c:1128 modules/file/omicron.c:397
 #: modules/file/shimadzu.c:404
 msgid "Missing colon in header line."
 msgstr "V řádku hlavičky schází dvojtečka."
@@ -2734,7 +2735,7 @@
 
 #: modules/file/codevfile.c:84
 msgid "Code V interferogram files (.int)"
-msgstr "Soubory s Code V inteferogramy (.int)"
+msgstr "Soubory s Code V interferogramy (.int)"
 
 #: modules/file/createc.c:111
 msgid "Imports Createc data files."
@@ -2752,7 +2753,7 @@
 #: modules/file/createc.c:520 modules/file/matfile.c:596
 #, c-format
 msgid "zlib initialization failed with error %d, cannot decompress data."
-msgstr "Selhala inicialize zlib (s chybovým kódem %d), nelze rozbalit data."
+msgstr "Selhala inicializace zlib (s chybovým kódem %d), nelze rozbalit data."
 
 #: modules/file/createc.c:534
 #, c-format
@@ -2843,7 +2844,7 @@
 
 #: modules/file/dumbfile.c:189 modules/plugin-proxy.c:1283
 msgid "Missing data field width."
-msgstr "Chybí šírka datového pole."
+msgstr "Chybí šířka datového pole."
 
 #: modules/file/dumbfile.c:202 modules/plugin-proxy.c:1296
 msgid "Missing data field height."
@@ -3094,7 +3095,7 @@
 
 #: modules/file/hdf4file.c:650
 msgid "Data descriptor header is truncated."
-msgstr "Hlavička popisu dat je předčasně ukonečená."
+msgstr "Hlavička popisu dat je předčasně ukončená."
 
 #: modules/file/hdf4file.c:660
 msgid "Data descriptor block is truncated."
@@ -3161,11 +3162,11 @@
 msgid "Representable"
 msgstr "Representovatelný"
 
-#: modules/file/hdrimage.cc:478 modules/tools/stats.c:322
+#: modules/file/hdrimage.cc:478 modules/tools/stats.c:324
 msgid "Minimum:"
 msgstr "Minimum:"
 
-#: modules/file/hdrimage.cc:494 modules/tools/stats.c:323
+#: modules/file/hdrimage.cc:494 modules/tools/stats.c:325
 msgid "Maximum:"
 msgstr "Maximum:"
 
@@ -3184,39 +3185,39 @@
 msgstr "OpenEXR datový typ %u je neplatný či nepodporovaný."
 
 #: modules/file/hdrimage.cc:1404 modules/file/hdrimage.cc:1413
-#: modules/file/pixmap.c:1531 modules/file/pixmap.c:1541
+#: modules/file/pixmap.c:1537 modules/file/pixmap.c:1547
 #, c-format
 msgid "libpng initialization error (in %s)"
 msgstr "Chyba při inicializaci knihovny libpng (v %s)"
 
-#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1601
+#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1607
 msgid "libpng error occured"
 msgstr "chyba při použití knihovny libpng"
 
 #. TRANSLATORS: Dialog title; %s is PNG, TIFF, ...
-#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1027
+#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1033
 #, c-format
 msgid "Import %s"
 msgstr "Načtení %s"
 
-#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1054
+#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1060
 msgid "Image Information"
 msgstr "Informace o obrázku"
 
-#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1061
+#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1067
 msgid "Horizontal size:"
 msgstr "Vodorovný rozměr:"
 
 #: modules/file/hdrimage.cc:2182 modules/file/hdrimage.cc:2188
-#: modules/file/pixmap.c:1061 modules/file/pixmap.c:1067
+#: modules/file/pixmap.c:1067 modules/file/pixmap.c:1073
 msgid "px"
 msgstr "px"
 
-#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1067
+#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1073
 msgid "Vertical size:"
 msgstr "Svislý rozměr:"
 
-#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1072
+#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1078
 msgid "Channels:"
 msgstr "Kanály:"
 
@@ -3224,21 +3225,21 @@
 msgid "Pages:"
 msgstr "Strany:"
 
-#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1103
+#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1109
 #: modules/file/rawfile.c:623 modules/file/rawxyz.c:569
 #: modules/process/dimensions.h:465
 msgid "Physical Dimensions"
 msgstr "Fyzické rozměry"
 
-#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1113
-#: modules/file/pixmap.c:3035 modules/file/rawfile.c:632
+#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1119
+#: modules/file/pixmap.c:3070 modules/file/rawfile.c:632
 #: modules/process/crosscor.c:197 modules/process/deposit_synth.c:458
 #: modules/process/dimensions.h:471 modules/process/tip_blind.c:265
 msgid "_Width:"
 msgstr "Šířk_a:"
 
 #: modules/file/hdrimage.cc:2266 modules/file/hdrimage.cc:2331
-#: modules/file/pixmap.c:1135 modules/file/pixmap.c:1190
+#: modules/file/pixmap.c:1141 modules/file/pixmap.c:1196
 #: modules/file/rawfile.c:655 modules/file/rawfile.c:711
 #: modules/process/calcoefs_new.c:384 modules/process/calcoefs_new.c:451
 #: modules/process/calcoefs_simple.c:390 modules/process/calcoefs_simple.c:457
@@ -3248,30 +3249,30 @@
 msgid "verb|Change"
 msgstr "Změnit"
 
-#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1148
+#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1154
 #: modules/file/rawfile.c:668 modules/process/crosscor.c:203
 #: modules/process/dimensions.h:475
 msgid "H_eight:"
 msgstr "_Výška:"
 
-#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1155
+#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1161
 #: modules/file/rawfile.c:675 modules/file/rawxyz.c:550
 msgid "Identical _measures"
 msgstr "Stejná _měřítka"
 
-#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1167
+#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1173
 #: modules/file/rawfile.c:687
 msgid "_Z-scale (per sample unit):"
 msgstr "_Z-škála (na jednotku):"
 
-#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1417
+#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1423
 #: modules/file/rawfile.c:1326 modules/process/calcoefs_new.c:776
 #: modules/process/calcoefs_simple.c:1189 modules/process/calcoefs_view.c:1393
 #: modules/process/calibrate.c:816 modules/process/dimensions.h:193
 msgid "Change Units"
 msgstr "Změnit jednotky"
 
-#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1431
+#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1437
 #: modules/file/rawfile.c:1340 modules/process/calcoefs_new.c:789
 #: modules/process/calcoefs_simple.c:1202 modules/process/calcoefs_view.c:1406
 #: modules/process/calibrate.c:830 modules/process/dimensions.h:206
@@ -3333,7 +3334,7 @@
 
 #: modules/file/igorfile.c:292
 msgid "Only two-dimensional data are supported."
-msgstr "Jsou podporována pouze dvourozměná data."
+msgstr "Jsou podporována pouze dvourozměrná data."
 
 #: modules/file/igorfile.c:304
 #, c-format
@@ -3529,7 +3530,7 @@
 
 #: modules/file/metropro.c:175
 msgid "Imports binary MetroPro (Zygo) data files."
-msgstr "Načístá binární datové soubory MetroPro (Zygo)."
+msgstr "Načítá binární datové soubory MetroPro (Zygo)."
 
 #: modules/file/metropro.c:188
 msgid "MetroPro files (.dat)"
@@ -3582,11 +3583,11 @@
 
 #: modules/file/miffile.c:294
 msgid "File information block is outside the file."
-msgstr "Block informací o souboru se nachází mimo soubor."
+msgstr "Blok informací o souboru se nachází mimo soubor."
 
 #: modules/file/miffile.c:328
 msgid "File information block size is invalid."
-msgstr "Block informací o souboru má neplatnou velikost."
+msgstr "Blok informací o souboru má neplatnou velikost."
 
 #: modules/file/miffile.c:392
 msgid "Unique id record is too short."
@@ -3628,7 +3629,7 @@
 
 #: modules/file/nanoeducator.c:281
 msgid "Imports Nanoeducator data files."
-msgstr "Načítá datové soubory Nanoducator."
+msgstr "Načítá datové soubory Nanoeducator."
 
 #: modules/file/nanoeducator.c:294
 msgid "Nanoeducator files (.mspm, .spm, .stm)"
@@ -3705,7 +3706,7 @@
 msgid "Nanonis SXM files (.sxm)"
 msgstr "Nanonis SXM soubory (.sxm)"
 
-#: modules/file/nanonis.c:163 modules/file/omicron.c:499
+#: modules/file/nanonis.c:163 modules/file/omicron.c:501
 #: modules/file/unisoku.c:265
 msgid "File header ended unexpectedly."
 msgstr "Hlavička souboru neočekávaně skončila."
@@ -3748,35 +3749,35 @@
 msgid "File Scan/Measure.xml is missing in the zip file."
 msgstr "V ZIP souboru schází soubor Scan/Measure.xml."
 
-#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:484
+#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:488
 msgid "Unknown error"
 msgstr "Neznámá chyba"
 
-#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:489
+#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:493
 msgid "End of file"
 msgstr "Konec souboru"
 
-#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:491
+#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:495
 msgid "End of list of files"
 msgstr "Konec seznamu souborů"
 
-#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:493
+#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:497
 msgid "Parameter error"
 msgstr "Chyba parametru"
 
-#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:495
+#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:499
 msgid "Bad zip file"
 msgstr "Špatný zip soubor"
 
-#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:497
+#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:501
 msgid "Internal error"
 msgstr "Vnitřní chyba"
 
-#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:499
+#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:503
 msgid "CRC error"
 msgstr "Chyba CRC"
 
-#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:502
+#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:506
 #, c-format
 msgid "Minizip error while reading the zip file: %s."
 msgstr "Chyba minizipu při načítání zip souboru: %s."
@@ -3824,11 +3825,11 @@
 msgid "Nanoscope III files"
 msgstr "Nanoscope III soubory"
 
-#: modules/file/nanoscope.c:243
+#: modules/file/nanoscope.c:244
 msgid "File is not a Nanoscope file, or it is a unknown subtype."
 msgstr "Soubor není typu Nanoscope nebo je to neznámý podtyp."
 
-#: modules/file/nanoscope.c:250
+#: modules/file/nanoscope.c:251
 msgid ""
 "File has been damaged by change of line endings, resulting in corruption of "
 "the binary part of the file.\n"
@@ -3846,16 +3847,16 @@
 "komprimované složky‘ v některých verzích MS Windows, případně jiným přenosem "
 "souboru, který se pokouší ukládat textové soubory nezávisle na systému."
 
-#: modules/file/nanoscope.c:521 modules/file/nanoscope.c:537
+#: modules/file/nanoscope.c:525 modules/file/nanoscope.c:541
 msgid "Cannot parse `Scan size' field."
 msgstr "Nedaří se analyzovat položku ‚Scan size‘."
 
-#: modules/file/nanoscope.c:1007 modules/file/nrrdfile.c:1013
+#: modules/file/nanoscope.c:1037 modules/file/nrrdfile.c:1013
 #, c-format
 msgid "Garbage after data sample #%u."
 msgstr "Po datovém vzorku č. %u následují nesmysly."
 
-#: modules/file/nanoscope.c:1088
+#: modules/file/nanoscope.c:1118
 msgid "Truncated header line."
 msgstr "Předčasně ukončený řádek hlavičky."
 
@@ -3917,7 +3918,7 @@
 
 #: modules/file/nrrdfile.c:336
 msgid "Only two- and three-dimensional data are supported."
-msgstr "Jsou podporována pouze dvourozměná a trojrozměrná data."
+msgstr "Jsou podporována pouze dvourozměrná a trojrozměrná data."
 
 #: modules/file/nrrdfile.c:357
 msgid "Non-zero lineskip is supported only for uncompressed files."
@@ -3972,47 +3973,60 @@
 #: modules/file/nrrdfile.c:1350
 #, c-format
 msgid "Per-axis header field %s contains too many items."
-msgstr "Položka hlavičky %s pro jednotlivé osy má přiliš mnoho částí."
+msgstr "Položka hlavičky %s pro jednotlivé osy má příliš mnoho částí."
 
 #: modules/file/nrrdfile.c:1359
 #, c-format
 msgid "Per-axis header field %s contains too few items."
-msgstr "Položka hlavičky %s pro jednotlivé osy má přiliš málo částí."
+msgstr "Položka hlavičky %s pro jednotlivé osy má příliš málo částí."
 
-#: modules/file/nt-mdt.c:658
+#: modules/file/nt-mdt.c:694
 msgid "Imports NT-MDT data files."
 msgstr "Načítá datové soubory NT-MDT."
 
-#: modules/file/nt-mdt.c:671
+#: modules/file/nt-mdt.c:707
 msgid "NT-MDT files (.mdt)"
 msgstr "NT-MDT soubory (.mdt)"
 
-#: modules/file/nt-mdt.c:1096
+#: modules/file/nt-mdt.c:1156
 msgid "Frame is too short for Frame Mode."
 msgstr "Rám je příliš krátký pro daný Frame Mode."
 
-#: modules/file/nt-mdt.c:1110
+#: modules/file/nt-mdt.c:1170
 msgid "Frame is too short for dots or data."
 msgstr "Rám je příliš krátký pro body či data."
 
-#: modules/file/nt-mdt.c:1369
+#: modules/file/nt-mdt.c:1429
 #, c-format
 msgid "End of file reached in frame header #%u."
 msgstr "Soubor skončil v hlavičce rámu č. %u."
 
-#: modules/file/nt-mdt.c:1377
+#: modules/file/nt-mdt.c:1437
 #, c-format
 msgid "End of file reached in frame data #%u."
 msgstr "Soubor skončil v datech rámu č. %u."
 
-#: modules/file/nt-mdt.c:1412
+#: modules/file/nt-mdt.c:1472
 #, c-format
 msgid "Frame #%u is too short for scanned data header."
 msgstr "Rám č. %u je příliš krátký pro hlavičku dat skenu."
 
-#: modules/file/nt-mdt.c:2464
-msgid "Raman Image"
-msgstr "Ramanovský obrázek"
+#: modules/file/nt-mdt.c:2794 modules/tools/filter.c:209
+#: modules/tools/icolorange.c:396 modules/tools/linestats.c:154
+msgid "Maximum"
+msgstr "Maximum"
+
+#: modules/file/nt-mdt.c:2795
+msgid "Max. position"
+msgstr "Max. poloha"
+
+#: modules/file/nt-mdt.c:2796
+msgid "Average"
+msgstr "Průměr"
+
+#: modules/file/nt-mdt.c:2809
+msgid "Raman Image Import"
+msgstr "Import ramanovského obrázku"
 
 #: modules/file/oldmda.c:146
 msgid "Imports old NTMDT MDA Spectra files."
@@ -4052,11 +4066,11 @@
 msgid "Omicron files (.par + data)"
 msgstr "Omicron soubory (.par + data)"
 
-#: modules/file/omicron.c:401
+#: modules/file/omicron.c:403
 msgid "Header line starts with a colon."
-msgstr "Řádek hlavičky začíná dvojteckou."
+msgstr "Řádek hlavičky začíná dvojtečkou."
 
-#: modules/file/omicron.c:508
+#: modules/file/omicron.c:510
 msgid "Channel information ended unexpectedly."
 msgstr "Informace o kanálu neočekávaně skončily."
 
@@ -4110,158 +4124,158 @@
 msgid "Truncated data in block %s"
 msgstr "Data v bloku %s jsou uříznutá"
 
-#: modules/file/pixmap.c:350
+#: modules/file/pixmap.c:356
 msgid "All channels"
 msgstr "Všechny kanály"
 
-#: modules/file/pixmap.c:351
+#: modules/file/pixmap.c:357
 msgid "Red"
 msgstr "Červená"
 
-#: modules/file/pixmap.c:352
+#: modules/file/pixmap.c:358
 msgid "Green"
 msgstr "Zelená"
 
-#: modules/file/pixmap.c:353
+#: modules/file/pixmap.c:359
 msgid "Blue"
 msgstr "Modrá"
 
-#: modules/file/pixmap.c:354
+#: modules/file/pixmap.c:360
 msgid "Value (max)"
 msgstr "Hodnota (max)"
 
-#: modules/file/pixmap.c:355
+#: modules/file/pixmap.c:361
 msgid "RGB sum"
 msgstr "RGB součet"
 
-#: modules/file/pixmap.c:356
+#: modules/file/pixmap.c:362
 msgid "Luma"
 msgstr "Luma"
 
-#: modules/file/pixmap.c:357
+#: modules/file/pixmap.c:363
 msgid "Alpha"
 msgstr "Alfa"
 
-#: modules/file/pixmap.c:369
+#: modules/file/pixmap.c:375
 msgid "Portable Network Graphics (.png)"
 msgstr "PNG obrázek (.png)"
 
-#: modules/file/pixmap.c:375
+#: modules/file/pixmap.c:381
 msgid "JPEG (.jpeg,.jpg)"
 msgstr "JPEG obrázek (.jpeg,.jpg)"
 
-#: modules/file/pixmap.c:381
+#: modules/file/pixmap.c:387
 msgid "TIFF (.tiff,.tif)"
 msgstr "TIFF obrázek (.tiff,.tif)"
 
-#: modules/file/pixmap.c:387
+#: modules/file/pixmap.c:393
 msgid "Portable Pixmap (.ppm,.pnm)"
 msgstr "Portable Pixmap (.ppm,.pnm)"
 
-#: modules/file/pixmap.c:393
+#: modules/file/pixmap.c:399
 msgid "Windows or OS2 Bitmap (.bmp)"
 msgstr "Bitmapa Windows či OS2 (.bmp)"
 
-#: modules/file/pixmap.c:399
+#: modules/file/pixmap.c:405
 msgid "TARGA (.tga,.targa)"
 msgstr "TARGA obrázek (.tga,.targa)"
 
-#: modules/file/pixmap.c:412
+#: modules/file/pixmap.c:418
 msgid "Graphics Interchange Format (.gif)"
 msgstr "GIF obrázek (.gif)"
 
-#: modules/file/pixmap.c:416
+#: modules/file/pixmap.c:422
 msgid "JPEG 2000 (.jpx)"
 msgstr "JPEG 2000 obrázek (.jpx)"
 
-#: modules/file/pixmap.c:420
+#: modules/file/pixmap.c:426
 msgid "PCX (.pcx)"
 msgstr "PCX obrázek (.pcx)"
 
-#: modules/file/pixmap.c:424
+#: modules/file/pixmap.c:430
 msgid "X Pixmap (.xpm)"
 msgstr "X Pixmap obrázek (.xpm)"
 
-#: modules/file/pixmap.c:428
+#: modules/file/pixmap.c:434
 msgid "Sun raster image (.ras)"
 msgstr "Rastrový obraz Sun (.ras)"
 
-#: modules/file/pixmap.c:432
+#: modules/file/pixmap.c:438
 msgid "Apple icon (.icns)"
 msgstr "Apple ikona (.icns)"
 
-#: modules/file/pixmap.c:456
+#: modules/file/pixmap.c:462
 msgid ""
 "Renders data into pixmap images and imports data from pixmap images. It "
 "supports the following image formats for export: PNG, JPEG, TIFF, PPM, BMP, "
 "TARGA. Import support relies on GDK and thus may be installation-dependent."
 msgstr ""
 "Exportuje data do rastrových obrázků a importuje data z rastrových obrázků. "
-"Umožňuje export do těchto grafických formátů: PNG, JPEG, TIFF, PPM, BPM, "
+"Umožňuje export do těchto grafických formátů: PNG, JPEG, TIFF, PPM, BMP, "
 "TARGA. Import se spoléhá na GDK a tudíž se jeho možnosti mohou u různých "
 "instalací lišit."
 
-#: modules/file/pixmap.c:740
+#: modules/file/pixmap.c:746
 #, c-format
 msgid "Pixmap has not registered file type `%s'."
 msgstr "Pixmap si nezaregistroval typ souboru ‚%s‘."
 
-#: modules/file/pixmap.c:754
+#: modules/file/pixmap.c:760
 #, c-format
 msgid "Cannot get pixbuf loader: %s."
 msgstr "Nelze získat pixbuf loader: %s."
 
-#: modules/file/pixmap.c:766 modules/file/pixmap.c:778
+#: modules/file/pixmap.c:772 modules/file/pixmap.c:784
 #, c-format
 msgid "Pixbuf loader refused data: %s."
 msgstr "Pixbuf loader odmítl data: %s."
 
-#: modules/file/pixmap.c:1200
+#: modules/file/pixmap.c:1206
 msgid ""
 "Warning: Colorful images cannot be reliably mapped to meaningful values."
 msgstr ""
 "Varování: Barevné obrázky nemohou být bezpečně převedeny na smysluplné "
 "hodnoty."
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "verb|Use"
 msgstr "Použít"
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "as data"
 msgstr "jako data"
 
-#: modules/file/pixmap.c:1688 modules/file/pixmap.c:1716
+#: modules/file/pixmap.c:1694 modules/file/pixmap.c:1722
 #, c-format
 msgid "Pixbuf save failed: %s."
 msgstr "Uložení pixbufu se nezdařilo: %s."
 
-#: modules/file/pixmap.c:2126
+#: modules/file/pixmap.c:2132
 msgid "Image is too large to be stored as TARGA."
 msgstr "Obrázek je příliš velký, než aby šel uložit jako TARGA."
 
-#: modules/file/pixmap.c:2207
+#: modules/file/pixmap.c:2213
 msgid "Data must be displayed in a window for pixmap export."
 msgstr "Pro export obrázku musejí být data zobrazena v okně."
 
-#: modules/file/pixmap.c:2927
+#: modules/file/pixmap.c:2936
 msgid "Change Inset Color"
 msgstr "Změnit barvu vloženého měřítka"
 
-#: modules/file/pixmap.c:2986
+#: modules/file/pixmap.c:3021
 #, c-format
 msgid "Export %s"
 msgstr "Export %s"
 
-#: modules/file/pixmap.c:3017
+#: modules/file/pixmap.c:3052
 msgid "Scaling"
 msgstr "Škálování"
 
-#: modules/file/pixmap.c:3026
+#: modules/file/pixmap.c:3061
 msgid "_Zoom:"
 msgstr "_Zvětšení"
 
-#: modules/file/pixmap.c:3044 modules/process/col_synth.c:400
+#: modules/file/pixmap.c:3079 modules/process/col_synth.c:400
 #: modules/process/grain_mark.c:309 modules/process/grain_rem_threshold.c:280
 #: modules/process/obj_synth.c:573 modules/process/pat_synth.c:889
 #: modules/process/pat_synth.c:1190 modules/process/pat_synth.c:1525
@@ -4269,91 +4283,99 @@
 msgid "_Height:"
 msgstr "_Výška:"
 
-#: modules/file/pixmap.c:3052
+#: modules/file/pixmap.c:3087
 msgid "Font:"
 msgstr "Písmo:"
 
-#: modules/file/pixmap.c:3067
+#: modules/file/pixmap.c:3102
 msgid "Scale text _proportionally"
 msgstr "Škálovat text _proporcionálně"
 
-#: modules/file/pixmap.c:3082
+#: modules/file/pixmap.c:3117
 msgid "_Font size:"
 msgstr "Ve_likost písma"
 
-#: modules/file/pixmap.c:3096
+#: modules/file/pixmap.c:3131
 msgid "Draw _mask"
 msgstr "Nakreslit _masku"
 
-#: modules/file/pixmap.c:3105
+#: modules/file/pixmap.c:3140
 msgid "Draw _selection"
 msgstr "Nakreslit _výběr"
 
-#: modules/file/pixmap.c:3121
+#: modules/file/pixmap.c:3156
 msgid "Grayscale Mode"
 msgstr "Mód stupňů šedi"
 
-#: modules/file/pixmap.c:3125
+#: modules/file/pixmap.c:3160
 msgid "Export as 1_6 bit grayscale"
 msgstr "Exportovat s 16bitovou hloubkou"
 
-#: modules/file/pixmap.c:3151
+#: modules/file/pixmap.c:3186
 msgid "Lateral Scale"
 msgstr "Příčná škála"
 
-#: modules/file/pixmap.c:3158 modules/file/pixmap.c:3253
+#: modules/file/pixmap.c:3193 modules/file/pixmap.c:3308
 msgid "ruler|_None"
 msgstr "Žád_né"
 
-#: modules/file/pixmap.c:3159
+#: modules/file/pixmap.c:3194
 msgid "_Rulers"
 msgstr "_Pravítka"
 
-#: modules/file/pixmap.c:3160
+#: modules/file/pixmap.c:3195
 msgid "_Inset scale bar"
 msgstr "_Vložené měřítko"
 
-#: modules/file/pixmap.c:3165
+#: modules/file/pixmap.c:3200
 msgid "Color:"
 msgstr "Barva:"
 
-#: modules/file/pixmap.c:3181 modules/process/immerse.c:323
+#: modules/file/pixmap.c:3216 modules/process/immerse.c:323
 msgid "Position:"
 msgstr "Poloha:"
 
-#: modules/file/pixmap.c:3186
+#: modules/file/pixmap.c:3221
 msgid "left"
 msgstr "vlevo"
 
-#: modules/file/pixmap.c:3190
+#: modules/file/pixmap.c:3225
 msgid "center"
 msgstr "uprostřed"
 
-#: modules/file/pixmap.c:3194
+#: modules/file/pixmap.c:3229
 msgid "right"
 msgstr "vpravo"
 
-#: modules/file/pixmap.c:3199
+#: modules/file/pixmap.c:3234
 msgid "top"
 msgstr "nahoře"
 
-#: modules/file/pixmap.c:3211
+#: modules/file/pixmap.c:3246
 msgid "bottom"
 msgstr "dole"
 
-#: modules/file/pixmap.c:3222 modules/process/lno_synth.c:1066
+#: modules/file/pixmap.c:3257 modules/process/lno_synth.c:1066
 msgid "_Length:"
 msgstr "_Délka:"
 
-#: modules/file/pixmap.c:3238
+#: modules/file/pixmap.c:3273
 msgid "_Auto"
 msgstr "_Auto"
 
-#: modules/file/pixmap.c:3246
+#: modules/file/pixmap.c:3281
+msgid "Draw _ticks"
+msgstr "Kreslit čárk_y"
+
+#: modules/file/pixmap.c:3291
+msgid "Draw _label"
+msgstr "Kreslit _popisek"
+
+#: modules/file/pixmap.c:3301
 msgid "Value Scale"
 msgstr "Škála hodnot"
 
-#: modules/file/pixmap.c:3254
+#: modules/file/pixmap.c:3309
 msgid "_False color ruler"
 msgstr "Škála _falešných barev"
 
@@ -4393,7 +4415,7 @@
 #: modules/file/psia.c:621
 #, c-format
 msgid "Spectroscopy header is too short (only %lu bytes)."
-msgstr "Hlavička spektroskopíckých dat je příliš krátká (jen %lu bajtů)."
+msgstr "Hlavička spektroskopických dat je příliš krátká (jen %lu bajtů)."
 
 #: modules/file/pt3file.c:290
 msgid "Imports SymPhoTime data files, version 2.0."
@@ -4529,7 +4551,7 @@
 #: modules/process/mark_with.c:211 modules/process/polydistort.c:214
 #: modules/process/scars.c:466 modules/process/synth.h:479
 #: modules/process/tip_model.c:167 modules/tools/linestats.c:420
-#: modules/tools/sfunctions.c:475 modules/tools/stats.c:432
+#: modules/tools/sfunctions.c:475 modules/tools/stats.c:435
 msgid "_Update"
 msgstr "_Aktualizovat"
 
@@ -4881,7 +4903,7 @@
 "Added on the boundaries: %u"
 msgstr ""
 "Bodů načtených ze souboru: %u\n"
-"Sloučených coby příliš blízkẙch: %u\n"
+"Sloučených coby příliš blízkých: %u\n"
 "Přidaných u hranic: %u"
 
 #: modules/file/rawxyz.c:983
@@ -4978,7 +5000,7 @@
 #: modules/file/rhk-spm32.c:388
 #, c-format
 msgid "Invalid data type %d for image data."
-msgstr "Typ dat %d je neplatný pro dvourozměná data."
+msgstr "Typ dat %d je neplatný pro dvourozměrná data."
 
 #: modules/file/rhk-spm32.c:396
 #, c-format
@@ -4995,7 +5017,7 @@
 
 #: modules/file/robotics.c:73
 msgid "Imports Automation & Robotics Dual Lensmapper data files"
-msgstr "Načíta datové soubory Automation & Robotics Dual Lensmapper"
+msgstr "Načítá datové soubory Automation & Robotics Dual Lensmapper"
 
 #: modules/file/robotics.c:86
 msgid "Dual Lensmapper files"
@@ -5049,7 +5071,7 @@
 msgid "Seiko files (.xqb, .xqd, .xqt)"
 msgstr "Seiko soubory (.xqb, .xqd, .xqt)"
 
-#: modules/file/seiko.c:239
+#: modules/file/seiko.c:251
 msgid ""
 "Cannot determine scan dimensions; it seems non-square with an unknown side "
 "ratio."
@@ -5107,7 +5129,7 @@
 
 #: modules/file/sis.c:824
 msgid "Block not a document block."
-msgstr "Block není blok dokumentu."
+msgstr "Blok není blok dokumentu."
 
 #: modules/file/sis.c:833
 msgid "Too short document info."
@@ -5278,11 +5300,11 @@
 msgid "Surf files (.sur)"
 msgstr "Surf soubory (.sur)"
 
-#: modules/file/tiaser.c:166
+#: modules/file/tiaser.c:172
 msgid "Imports FEI Tecnai imaging and analysis (former Emispec) files."
 msgstr "Načítá soubory FEI Tecnai imaging and analysis (dříve Emispec)."
 
-#: modules/file/tiaser.c:179
+#: modules/file/tiaser.c:185
 msgid "FEI TIA (Emispec) data"
 msgstr "FEI TIA (Emispec) data"
 
@@ -5463,10 +5485,10 @@
 #: modules/graph/graph_cd.c:692 modules/graph/graph_fdfit.c:780
 #: modules/graph/graph_fit.c:804 modules/tools/grainmeasure.c:215
 #: modules/tools/readvalue.c:576 modules/tools/readvalue.c:577
-#: modules/tools/roughness.c:957 modules/tools/stats.c:661
-#: modules/tools/stats.c:672 modules/tools/stats.c:673
-#: modules/tools/stats.c:1050 modules/tools/stats.c:1057
-#: modules/tools/stats.c:1059
+#: modules/tools/roughness.c:957 modules/tools/stats.c:666
+#: modules/tools/stats.c:677 modules/tools/stats.c:678
+#: modules/tools/stats.c:1054 modules/tools/stats.c:1061
+#: modules/tools/stats.c:1063
 msgid "N.A."
 msgstr "nelze použít"
 
@@ -5624,7 +5646,7 @@
 
 #: modules/graph/graph_fdfit.c:186
 msgid "Fit a force-distance curve"
-msgstr "Proložit FD křívku"
+msgstr "Proložit FD křivku"
 
 #: modules/graph/graph_fdfit.c:249
 msgid "Fit FD Curve"
@@ -5770,7 +5792,7 @@
 
 #: modules/plugin-proxy.c:736 modules/plugin-proxy.c:837
 msgid "Plugin-proxy must be run as interactive."
-msgstr "Plugin-proxy musí být spustěna interaktivně."
+msgstr "Plugin-proxy musí být spuštěna interaktivně."
 
 #: modules/plugin-proxy.c:742
 #, c-format
@@ -5900,9 +5922,9 @@
 msgid "_Expression:"
 msgstr "_Výraz:"
 
-#: modules/process/arithmetic.c:294
+#: modules/process/arithmetic.c:294 modules/process/neural.c:220
 msgid "Operands"
-msgstr "Oerandy"
+msgstr "Operandy"
 
 #: modules/process/arithmetic.c:299 modules/process/dimensions.h:481
 msgid "Units"
@@ -5943,11 +5965,11 @@
 
 #: modules/process/averaging.c:71
 msgid "/_Correct Data/_Correlation averaging..."
-msgstr "/_Korekce dat/Korelační _průmerování..."
+msgstr "/_Korekce dat/Korelační _průměrování..."
 
 #: modules/process/averaging.c:75
 msgid "Averaging of similar structures"
-msgstr "Průmerování podobných struktur"
+msgstr "Průměrování podobných struktur"
 
 #: modules/process/averaging.c:108
 msgid "Averaged"
@@ -6100,7 +6122,7 @@
 
 #: modules/process/calcoefs_new.c:165
 msgid "Create simple calibration data"
-msgstr "Vytvořit jednodouchá kalibrační data."
+msgstr "Vytvořit jednoduchá kalibrační data."
 
 #: modules/process/calcoefs_new.c:179
 msgid "/Cali_bration/_Create..."
@@ -6179,7 +6201,7 @@
 msgstr "Jednoduchá mapa chyb"
 
 #: modules/process/calcoefs_simple.c:342 modules/process/calcoefs_stage.c:149
-#: modules/process/neural.c:225 modules/process/superresolution.c:159
+#: modules/process/superresolution.c:159
 msgid "Operands:"
 msgstr "O_perandy:"
 
@@ -6422,7 +6444,7 @@
 
 #: modules/process/calibrate.c:145
 msgid "Recalibrates scan lateral dimensions or value range."
-msgstr "Kalibruje podélné rozměry vozrku nebo rozsah hodnot."
+msgstr "Kalibruje podélné rozměry vzorku nebo rozsah hodnot."
 
 #: modules/process/calibrate.c:159
 msgid "/_Basic Operations/_Dimensions and Units..."
@@ -6743,20 +6765,21 @@
 msgstr "Vykreslit _graf"
 
 #: modules/process/curvature.c:684 modules/process/facet-level.c:297
-#: modules/process/level.c:267 modules/process/polylevel.c:495
-#: modules/tools/sfunctions.c:457 modules/tools/stats.c:362
+#: modules/process/level.c:269 modules/process/linecorrect.c:288
+#: modules/process/polylevel.c:495 modules/tools/sfunctions.c:457
+#: modules/tools/stats.c:365
 msgid "Masking Mode"
 msgstr "Maska"
 
-#: modules/process/curvature.c:754 modules/process/grain_dist.c:827
+#: modules/process/curvature.c:754 modules/process/grain_dist.c:835
 #: modules/tools/distance.c:227 modules/tools/roughness.c:824
-#: modules/tools/stats.c:423
+#: modules/tools/stats.c:426
 msgid "Save table to a file"
 msgstr "Uložit tabulku do souboru"
 
-#: modules/process/curvature.c:759 modules/process/grain_dist.c:832
+#: modules/process/curvature.c:759 modules/process/grain_dist.c:840
 #: modules/tools/distance.c:232 modules/tools/roughness.c:829
-#: modules/tools/stats.c:428
+#: modules/tools/stats.c:431
 msgid "Copy table to clipboard"
 msgstr "Zkopírovat tabulku do schránky"
 
@@ -6938,7 +6961,7 @@
 
 #: modules/process/dwt.c:89
 msgid "Compute Discrete Wavelet Transform"
-msgstr "Vypočíst disktérní waveletovou tranformaci"
+msgstr "Vypočíst diskrétní waveletovou transformaci"
 
 #: modules/process/dwt.c:118 modules/process/dwtanisotropy.c:130
 #, c-format
@@ -7029,7 +7052,7 @@
 #: modules/process/edge.c:189
 msgid "Local RMS value based step detection with postprocessing"
 msgstr ""
-"Presentace nespojitostí detekovaných lokální hodnotou RPM s postprocessingem"
+"Presentace nespojitostí detekovaných lokální hodnotou RMS s postprocessingem"
 
 #: modules/process/edge.c:193
 msgid "/_Presentation/_Edge Detection/Local _Nonlinearity"
@@ -7073,7 +7096,7 @@
 
 #: modules/process/edge.c:241
 msgid "/_Presentation/_Edge Detection/_Zero Crossing..."
-msgstr "/_Presentation/Detekce _hran/_Průsečíky nuly..."
+msgstr "/_Presentace/Detekce _hran/_Průsečíky nuly..."
 
 #: modules/process/edge.c:245
 msgid "Zero crossing step detection presentation"
@@ -7177,7 +7200,7 @@
 
 #: modules/process/facet_analysis.c:375
 msgid "Facet plane size:"
-msgstr "Velikot plošky:"
+msgstr "Velikost plošky:"
 
 #: modules/process/facet_analysis.c:400
 msgid "_Tolerance:"
@@ -7874,42 +7897,46 @@
 msgid "Data channel:"
 msgstr "Datový kanál:"
 
-#: modules/process/grain_dist.c:734 modules/process/grain_dist.c:806
+#: modules/process/grain_dist.c:736 modules/process/grain_dist.c:814
 msgid "Grain Statistics"
 msgstr "Statistika zrn"
 
-#: modules/process/grain_dist.c:746
+#: modules/process/grain_dist.c:748
 msgid "Number of grains:"
 msgstr "Počet zrn:"
 
-#: modules/process/grain_dist.c:755
+#: modules/process/grain_dist.c:757
 msgid "Total projected area (abs.):"
 msgstr "Celková kolmá plocha (abs.):"
 
-#: modules/process/grain_dist.c:759
+#: modules/process/grain_dist.c:761
 msgid "Total projected area (rel.):"
 msgstr "Celková kolmá plocha (rel.):"
 
-#: modules/process/grain_dist.c:765
+#: modules/process/grain_dist.c:767
 msgid "Mean grain area:"
 msgstr "Střední plocha zrna:"
 
-#: modules/process/grain_dist.c:771
+#: modules/process/grain_dist.c:773
 msgid "Mean grain size:"
 msgstr "Střední velikost zrna:"
 
-#: modules/process/grain_dist.c:780
+#: modules/process/grain_dist.c:782
 msgid "Total grain volume (zero):"
 msgstr "Celkový objem zrn (nula):"
 
-#: modules/process/grain_dist.c:786
+#: modules/process/grain_dist.c:788
 msgid "Total grain volume (minimum):"
 msgstr "Celkový objem zrn (minimum):"
 
-#: modules/process/grain_dist.c:792
+#: modules/process/grain_dist.c:794
 msgid "Total grain volume (laplacian):"
 msgstr "Celkový objem zrn (laplacian):"
 
+#: modules/process/grain_dist.c:800
+msgid "Total projected boundary length:"
+msgstr "Celková délka projektované hranice:"
+
 #: modules/process/grain_edge.c:106
 msgid "Marks grains by edge detection method."
 msgstr "Označuje zrna pomocí detekce hran."
@@ -8137,7 +8164,7 @@
 
 #: modules/process/immerse.c:799
 msgid "Immersed detail"
-msgstr "Zapuštený detail"
+msgstr "Zapuštěný detail"
 
 #: modules/process/indent_analyze.c:263
 msgid "Do nothing"
@@ -8420,16 +8447,18 @@
 "\n"
 "Indentation - Inner Pile-Up\n"
 msgstr ""
+"\n"
+"Indentace - vnitřní pile-up\n"
 
 #: modules/process/indent_analyze.c:1676
 #, c-format
 msgid "Indentation - Outer Pile-Up\n"
-msgstr ""
+msgstr "Indentace - vnější pile-up\n"
 
 #: modules/process/laplace.c:40
 msgid ""
 "Removes data under mask, interpolating them with Laplace equation solution."
-msgstr "Odstraňuje data pod maskou, interpoluje je řešním Laplaceovy rovnice."
+msgstr "Odstraňuje data pod maskou, interpoluje je řešením Laplaceovy rovnice."
 
 #: modules/process/laplace.c:55
 msgid "/_Correct Data/_Remove Data Under Mask"
@@ -8437,7 +8466,7 @@
 
 #: modules/process/laplace.c:59
 msgid "Interpolate data under mask by solution of Laplace equation"
-msgstr "Interpolace dat pod maskou řešením Laplacovy rovnice"
+msgstr "Interpolace dat pod maskou řešením Laplaceovy rovnice"
 
 #: modules/process/laplace.c:85
 msgid "Laplace correction"
@@ -8532,7 +8561,7 @@
 "Levels individual grains, interpolating the shifts between using Laplacian "
 "interpolation."
 msgstr ""
-"Vyrovnává jednolivá zrna, interpolujíc mezi nimi řešením Laplaceovy rovnice."
+"Vyrovnává jednotlivá zrna, interpolujíc mezi nimi řešením Laplaceovy rovnice."
 
 #: modules/process/level_grains.c:98
 msgid "/_Grains/_Level Grains..."
@@ -8567,50 +8596,54 @@
 msgid "E_xtract background"
 msgstr "_Extrahovat pozadí"
 
-#: modules/process/linecorrect.c:64
+#: modules/process/linecorrect.c:88
 msgid "Corrects line defects (mostly experimental algorithms)."
 msgstr "Opravuje řádkové defekty (převážně experimentální algoritmy)."
 
-#: modules/process/linecorrect.c:78
+#: modules/process/linecorrect.c:102
 msgid "/_Correct Data/M_odus Line Correction"
 msgstr "/_Korekce dat/M_odusové srovnání řádků"
 
-#: modules/process/linecorrect.c:82
+#: modules/process/linecorrect.c:106
 msgid "Correct lines by matching height modus"
 msgstr "Srovnání řádky podle modusu"
 
-#: modules/process/linecorrect.c:85
+#: modules/process/linecorrect.c:109
 msgid "/_Correct Data/M_edian Line Correction"
 msgstr "/_Korekce dat/M_ediánové srovnání řádků"
 
-#: modules/process/linecorrect.c:89
+#: modules/process/linecorrect.c:113
 msgid "Correct lines by matching height median"
 msgstr "Srovnání řádků podle mediánu"
 
-#: modules/process/linecorrect.c:92
+#: modules/process/linecorrect.c:116
 msgid "/_Correct Data/Median Di_fference Line Correction"
 msgstr "/_Korekce dat/Srovnání řádků _rozdílem mediánů"
 
-#: modules/process/linecorrect.c:96
+#: modules/process/linecorrect.c:120
 msgid "Correct lines by zeroing median of differences between neighbor lines"
 msgstr "Srovnání řádků vynulováním mediánů rozdílů mezi sousedními řádky."
 
-#: modules/process/linecorrect.c:100
+#: modules/process/linecorrect.c:124
 msgid "/_Correct Data/Ma_tch Line Correction"
 msgstr "/_Korekce dat/_Segmentové srovnání řádků"
 
-#: modules/process/linecorrect.c:104
+#: modules/process/linecorrect.c:128
 msgid "Correct lines by matching flat segments"
 msgstr "Srovnání řádků podle plochých segmentů"
 
-#: modules/process/linecorrect.c:107
+#: modules/process/linecorrect.c:131
 msgid "/_Correct Data/Ste_p Line Correction"
 msgstr "/_Korekce dat/Srovnání s_chodů v řádcích"
 
-#: modules/process/linecorrect.c:111
+#: modules/process/linecorrect.c:135
 msgid "Correct steps in lines"
 msgstr "Opravuje schody v řádcích"
 
+#: modules/process/linecorrect.c:198
+msgid "Median Line Correction"
+msgstr "Mediánové srovnání řádků"
+
 #: modules/process/lno_synth.c:249 modules/process/noise_synth.c:183
 msgid "distribution|Gaussian"
 msgstr "Gaussovské"
@@ -8969,7 +9002,7 @@
 
 #: modules/process/merge.c:243
 msgid "_Align second operand:"
-msgstr "_Zarovnání druého operandu:"
+msgstr "_Zarovnání druhého operandu:"
 
 #: modules/process/merge.c:250
 msgid "_Boundary treatment:"
@@ -9024,71 +9057,83 @@
 msgid "Immersed detail data"
 msgstr "Zapuštěný detail"
 
-#: modules/process/neural.c:147
+#: modules/process/neural.c:144
 msgid "Neural network SPM data processing"
 msgstr "Zpracování dat pomocí neuronové sítě"
 
-#: modules/process/neural.c:161
-msgid "/M_ultidata/_Neural network..."
-msgstr "/M_ultidata/_Sloučení..."
+#: modules/process/neural.c:158
+msgid "/M_ultidata/_Neural Network..."
+msgstr "/M_ultidata/_Neuronová síť..."
 
-#: modules/process/neural.c:165
+#: modules/process/neural.c:162
 msgid "Neural network AFM data processing"
 msgstr "Zpracování dat pomocí neuronové sítě"
 
-#: modules/process/neural.c:207
-msgid "Neural network"
+#: modules/process/neural.c:202
+msgid "Neural Network"
 msgstr "Neuronová síť"
 
+#: modules/process/neural.c:227
+msgid "Training _model:"
+msgstr "_Model pro trénink:"
+
 #: modules/process/neural.c:233
-msgid "Training model:"
-msgstr "Módel pro trénink:"
+msgid "Training _signal:"
+msgstr "_Signál pro trénink:"
 
-#: modules/process/neural.c:240
-msgid "Training signal:"
-msgstr "Signál pro trénink:"
-
-#: modules/process/neural.c:247
-msgid "Result model:"
-msgstr "Model pro vyhodnocení:"
-
-#: modules/process/neural.c:254
-msgid "Window width:"
-msgstr "Šířka okna:"
-
-#: modules/process/neural.c:260
-msgid "Window height:"
-msgstr "Výška okna:"
-
-#: modules/process/neural.c:266
-msgid "Training steps:"
-msgstr "Kroků tréninku:"
-
-#: modules/process/neural.c:272
-msgid "Hidden nodes:"
-msgstr "Skryté uzly:"
+#: modules/process/neural.c:239
+msgid "Res_ult model:"
+msgstr "Model pro v_yhodnocení:"
 
-#: modules/process/neural.c:364
+#: modules/process/neural.c:244 modules/tools/stats.c:401
+msgid "Parameters"
+msgstr "Parametry"
+
+#: modules/process/neural.c:250
+msgid "Window _width:"
+msgstr "Šířka ok_na:"
+
+#: modules/process/neural.c:256
+msgid "Window h_eight:"
+msgstr "_Výška okna:"
+
+#: modules/process/neural.c:262
+msgid "_Training steps:"
+msgstr "_Kroků tréninku:"
+
+#: modules/process/neural.c:268
+msgid "_Hidden nodes:"
+msgstr "Skryté _uzly:"
+
+#: modules/process/neural.c:360
 msgid "Data not compatible"
 msgstr "Nekompatibilní data"
 
-#: modules/process/neural.c:389 modules/process/pid.c:334
+#: modules/process/neural.c:388 modules/process/pid.c:334
 msgid "Starting..."
 msgstr "Spouštím..."
 
-#: modules/process/neural.c:491
+#: modules/process/neural.c:409
+msgid "Training..."
+msgstr "Trénování..."
+
+#: modules/process/neural.c:451
+msgid "Evaluating..."
+msgstr "Vyhodnocení..."
+
+#: modules/process/neural.c:493
 msgid "Evaluated signal"
 msgstr "Vyhodnocený signál"
 
-#: modules/process/neural.c:497
+#: modules/process/neural.c:499
 msgid "Training error"
 msgstr "Chyba při tréninku"
 
-#: modules/process/neural.c:498
+#: modules/process/neural.c:500
 msgid "error"
 msgstr "Chyba"
 
-#: modules/process/neural.c:504
+#: modules/process/neural.c:506
 msgid "NN training error"
 msgstr "Chyba při tréninku NN"
 
@@ -9149,7 +9194,7 @@
 msgstr "Gaussovky"
 
 #: modules/process/obj_synth.c:284
-msgid "Dougnuts"
+msgid "Doughnuts"
 msgstr "Prstence"
 
 #: modules/process/obj_synth.c:290
@@ -9218,7 +9263,7 @@
 
 #: modules/process/pat_synth.c:240
 msgid "Generates surfaces representing simple patterns (steps, ridges, ...)."
-msgstr "Vytváří povrchy představující jednoduché vzory (schody, křebeny, ...)."
+msgstr "Vytváří povrchy představující jednoduché vzory (schody, hřebeny, ...)."
 
 #: modules/process/pat_synth.c:255
 msgid "/S_ynthetic/_Pattern..."
@@ -9359,7 +9404,7 @@
 
 #: modules/process/polydistort.c:211
 msgid "Distort by Polynomial"
-msgstr "Polynomiální defiromace"
+msgstr "Polynomiální deformace"
 
 #: modules/process/polydistort.c:276 modules/tools/filter.c:208
 #: modules/tools/icolorange.c:385 modules/tools/linestats.c:153
@@ -9468,7 +9513,7 @@
 
 #: modules/process/presentationops.c:96
 msgid "Creates a presentation with logarithmic color scale"
-msgstr "Vytvoření presentace s logaritimickou barevnou škálou"
+msgstr "Vytvoření presentace s logaritmickou barevnou škálou"
 
 #: modules/process/presentationops.c:208
 msgid "Attach Presentation"
@@ -9568,7 +9613,7 @@
 
 #: modules/process/scars.c:449
 msgid "Negative"
-msgstr "Negativné"
+msgstr "Negativní"
 
 #: modules/process/scars.c:450
 msgid "Both"
@@ -9884,7 +9929,7 @@
 
 #: modules/process/tip_blind.c:294
 msgid "Noise suppression t_hreshold:"
-msgstr "Prá_h poltlačení šumu:"
+msgstr "Prá_h potlačení šumu:"
 
 #: modules/process/tip_blind.c:314
 msgid "Use _boundaries"
@@ -9943,7 +9988,7 @@
 msgid ""
 "Tip operations: dilation (convolution), erosion (reconstruction) and "
 "certainty map."
-msgstr "Operace s hrotem SPM: konvoluce, rekonstruce, mapa spolehlivosti."
+msgstr "Operace s hrotem SPM: konvoluce, rekonstrukce, mapa spolehlivosti."
 
 #: modules/process/tipops.c:80
 msgid "/_Tip/_Dilation..."
@@ -10005,7 +10050,7 @@
 #: modules/process/unrotate.c:88
 msgid ""
 "Rotates data to make characteristic directions parallel with x or y axis."
-msgstr "Rotuje data, aby sronval charakteristické směry s osou x či y."
+msgstr "Rotuje data, aby srovnal charakteristické směry s osou x či y."
 
 #: modules/process/unrotate.c:103
 msgid "/_Correct Data/_Unrotate..."
@@ -10037,7 +10082,7 @@
 
 #: modules/process/xydenoise.c:69
 msgid "Denoises measurement on basis of two orthogonal scans."
-msgstr ""
+msgstr "Odšumuje měření na základě dvou kolmých skenů."
 
 #: modules/process/xydenoise.c:83
 msgid "/M_ultidata/_XY denoise..."
@@ -10052,67 +10097,66 @@
 msgstr "XY odšumění"
 
 #: modules/process/xydenoise.c:142
-#, fuzzy
 msgid "Second direction:"
-msgstr "_Druhý směr"
+msgstr "Druhý směr:"
 
 #: modules/process/xydenoise.c:289
 msgid "Denoised"
 msgstr "Odšuměná data"
 
-#: modules/pygwy/pygwy-console.c:53
+#: modules/pygwy/pygwy-console.c:54
 msgid "/Pygwy Console"
 msgstr "/Konsola pygwy"
 
-#: modules/pygwy/pygwy-console.c:57
+#: modules/pygwy/pygwy-console.c:58
 msgid "Python wrapper console"
 msgstr "Konzola rozhraní Pythonu"
 
-#: modules/pygwy/pygwy-console.c:155
+#: modules/pygwy/pygwy-console.c:156
 msgid ">>> Running file content of below textfield\n"
-msgstr ">>> Spouštím obsah extového pole\n"
+msgstr ">>> Spouštím obsah textového pole\n"
 
-#: modules/pygwy/pygwy-console.c:180
+#: modules/pygwy/pygwy-console.c:181
 msgid "Open Python script"
 msgstr "Otevřít skript v Pythonu"
 
-#: modules/pygwy/pygwy-console.c:244
+#: modules/pygwy/pygwy-console.c:245
 msgid "Save Script as"
 msgstr "Uložit skript jako"
 
-#: modules/pygwy/pygwy-console.c:283
+#: modules/pygwy/pygwy-console.c:284
 msgid "Pygwy Console"
 msgstr "Konsola pygwy"
 
-#: modules/pygwy/pygwy-console.c:295
+#: modules/pygwy/pygwy-console.c:296
 msgid "Open script in Python language (Ctrl-O)"
 msgstr "Otevřít skript v jazyce Python (Ctrl-O)"
 
-#: modules/pygwy/pygwy-console.c:297
+#: modules/pygwy/pygwy-console.c:298
 msgid "Save script (Ctrl-S)"
 msgstr "Uložit skript (Ctrl-S)"
 
-#: modules/pygwy/pygwy-console.c:299
+#: modules/pygwy/pygwy-console.c:300
 msgid "Execute script (Ctrl-E)"
 msgstr "Spustit skript (Ctrl-E)"
 
-#: modules/pygwy/pygwy-console.c:377
+#: modules/pygwy/pygwy-console.c:378
 msgid "Command"
 msgstr "Příkaz"
 
-#: pygwy.c:91
+#: pygwy.c:99
 msgid "Pygwy, the Gwyddion Python wrapper."
-msgstr "Pygwy, pythoní rozhraní ke Gwyddionu."
+msgstr "Pygwy, pythonní rozhraní ke Gwyddionu."
 
-#: pygwy.c:443
+#: pygwy.c:520
 msgid "Function written in Python"
 msgstr "Funkce napsaná v Pythonu"
 
-#: pygwy.c:489
+#: pygwy.c:566
 msgid "Graph function written in Python"
 msgstr "Grafová funkce napsaná v Pythonu"
 
-#: pygwy.c:899
+#: pygwy.c:976
 #, c-format
 msgid ""
 "Pygwy plugin: %s (%s)\n"
@@ -10169,11 +10213,6 @@
 msgid "Conservative denoise"
 msgstr "Konzervativní odšumění"
 
-#: modules/tools/filter.c:209 modules/tools/icolorange.c:396
-#: modules/tools/linestats.c:154
-msgid "Maximum"
-msgstr "Maximum"
-
 #: modules/tools/filter.c:210
 msgid "Kuwahara"
 msgstr "Kuwahara"
@@ -10254,7 +10293,7 @@
 "scale should map to, either on data or on height distribution histogram."
 msgstr ""
 "Nástroj interaktivní nastavení barevného rozsahu, umožňuje vybrat rozsah, na "
-"nějž se mapuje barevá škála, na datech či histogramu rozdělení výšky."
+"nějž se mapuje barevná škála, na datech či histogramu rozdělení výšky."
 
 #: modules/tools/icolorange.c:151
 msgid "Color Range"
@@ -10274,7 +10313,7 @@
 
 #: modules/tools/icolorange.c:229
 msgid "Automatic color range with tails cut off"
-msgstr "Automatický barevný rozsah s oseknutými konci"
+msgstr "Automatický barevný rozsah s useknutými konci"
 
 #: modules/tools/icolorange.c:234
 msgid "Adaptive nonlinear color mapping"
@@ -10406,7 +10445,7 @@
 msgstr "Volby"
 
 #: modules/tools/linestats.c:362 modules/tools/sfunctions.c:392
-#: modules/tools/stats.c:381
+#: modules/tools/stats.c:384
 msgid "_Instant updates"
 msgstr "Okamžité aktuali_zace"
 
@@ -10696,7 +10735,7 @@
 
 #: modules/tools/roughness.c:289
 msgid "Roughness average"
-msgstr "Střední drstnost"
+msgstr "Střední drsnost"
 
 #: modules/tools/roughness.c:297
 msgid "Root mean square roughness"
@@ -10847,12 +10886,12 @@
 msgid "Roughness Parameters"
 msgstr "Parametry drsnosti"
 
-#: modules/tools/roughness.c:2041 modules/tools/stats.c:999
+#: modules/tools/roughness.c:2041 modules/tools/stats.c:1002
 #, c-format
 msgid "File:              %s\n"
 msgstr "Soubor:              %s\n"
 
-#: modules/tools/roughness.c:2045 modules/tools/stats.c:1003
+#: modules/tools/roughness.c:2045 modules/tools/stats.c:1006
 #, c-format
 msgid "Data channel:      %s\n"
 msgstr "Datový kanál:        %s\n"
@@ -10982,7 +11021,7 @@
 
 #: modules/tools/spectro.c:173
 msgid "Extract and view point spectroscopy data"
-msgstr "Extrahuje a zobrazuje data bododové spektroskopie"
+msgstr "Extrahuje a zobrazuje data bodové spektroskopie"
 
 #: modules/tools/spectro.c:322
 msgid "_Separate spectra"
@@ -11024,75 +11063,75 @@
 msgid "Fractal interpolation"
 msgstr "Fraktální interpolace"
 
-#: modules/tools/stats.c:180
+#: modules/tools/stats.c:182
 msgid "Statistics tool."
 msgstr "Statistický nástroj."
 
-#: modules/tools/stats.c:217 modules/tools/stats.c:993
+#: modules/tools/stats.c:219 modules/tools/stats.c:996
 msgid "Statistical Quantities"
 msgstr "Statistické veličiny"
 
-#: modules/tools/stats.c:218
+#: modules/tools/stats.c:220
 msgid "Statistical quantities"
 msgstr "Statistické veličiny"
 
-#: modules/tools/stats.c:321
+#: modules/tools/stats.c:323
 msgid "Average value:"
 msgstr "Střední hodnota:"
 
-#: modules/tools/stats.c:324
+#: modules/tools/stats.c:326
 msgid "Median:"
 msgstr "Medián:"
 
-#: modules/tools/stats.c:325
+#: modules/tools/stats.c:327
 msgid "Ra (Sa):"
 msgstr "Ra (Sa):"
 
-#: modules/tools/stats.c:326
+#: modules/tools/stats.c:328
 msgid "Rms (Sq):"
 msgstr "Rms (Sq):"
 
-#: modules/tools/stats.c:327
+#: modules/tools/stats.c:329
+msgid "Rms (grain-wise):"
+msgstr "Rms (po zrnech):"
+
+#: modules/tools/stats.c:330
 msgid "Skew:"
 msgstr "Šikmost:"
 
-#: modules/tools/stats.c:328
+#: modules/tools/stats.c:331
 msgid "Kurtosis:"
 msgstr "Špičatost:"
 
-#: modules/tools/stats.c:329
+#: modules/tools/stats.c:332
 msgid "Surface area:"
 msgstr "Plocha povrchu:"
 
-#: modules/tools/stats.c:330
+#: modules/tools/stats.c:333
 msgid "Projected area:"
 msgstr "Projektovaná plocha:"
 
-#: modules/tools/stats.c:331
+#: modules/tools/stats.c:334
 msgid "Inclination θ:"
 msgstr "θ sklonu:"
 
-#: modules/tools/stats.c:332
+#: modules/tools/stats.c:335
 msgid "Inclination φ:"
 msgstr "φ sklonu:"
 
-#: modules/tools/stats.c:398
-msgid "Parameters"
-msgstr "Parametry"
-
-#: modules/tools/stats.c:929
+#: modules/tools/stats.c:932
 msgid "Save Statistical Quantities"
 msgstr "Uložení statistických hodnot"
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "Yes"
 msgstr "Ano"
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "No"
 msgstr "Ne"
 
-#: modules/tools/stats.c:1062
+#: modules/tools/stats.c:1066
 #, c-format
 msgid ""
 "Selected area:     %s × %s at (%s, %s) px\n"
@@ -11105,6 +11144,7 @@
 "Median:            %s\n"
 "Ra:                %s\n"
 "Rms:               %s\n"
+"Rms (grain-wise):  %s\n"
 "Skew:              %s\n"
 "Kurtosis:          %s\n"
 "Surface area:      %s\n"
@@ -11122,6 +11162,7 @@
 "Medián:              %s\n"
 "Ra:                  %s\n"
 "Rms:                 %s\n"
+"Rms (po zrnech):     %s\n"
 "Šikmost:             %s\n"
 "Špičatost:           %s\n"
 "Plocha povrchu:      %s\n"
Binary files /tmp/6W43BMtPno/gwyddion-2.28/po/de.gmo and /tmp/ug3yy2UQEY/gwyddion-2.29/po/de.gmo differ
diff -Nru gwyddion-2.28/po/de.po gwyddion-2.29/po/de.po
--- gwyddion-2.28/po/de.po	2012-05-18 10:44:03.000000000 +0100
+++ gwyddion-2.29/po/de.po	2012-07-19 21:14:11.000000000 +0100
@@ -6,8 +6,8 @@
 msgstr ""
 "Project-Id-Version: gwyddion\n"
 "Report-Msgid-Bugs-To: yeti@gwyddion.net\n"
-"POT-Creation-Date: 2012-05-18 11:44+0200\n"
-"PO-Revision-Date: 2011-06-05 10:52+0100\n"
+"POT-Creation-Date: 2012-07-19 22:14+0200\n"
+"PO-Revision-Date: 2012-06-28 11:21+0200\n"
 "Last-Translator: Johannes Römer \n"
 "Language-Team: deutsch \n"
 "Language: de\n"
@@ -853,7 +853,7 @@
 msgstr "Pixel"
 
 #: libgwydgets/gwy3dwindow.c:1116 modules/file/hdrimage.cc:2149
-#: modules/file/pixmap.c:1030 modules/file/pixmap.c:2989
+#: modules/file/pixmap.c:1036 modules/file/pixmap.c:3024
 #: modules/file/rawfile.c:398 modules/process/angle_dist.c:170
 #: modules/process/calcoefs_new.c:347 modules/process/calibrate.c:296
 #: modules/process/col_synth.c:299 modules/process/curvature.c:602
@@ -866,16 +866,17 @@
 #: modules/process/grain_edge.c:217 modules/process/grain_mark.c:262
 #: modules/process/grain_rem_threshold.c:224 modules/process/grain_wshed.c:182
 #: modules/process/hough.c:175 modules/process/latsim.c:158
-#: modules/process/level.c:253 modules/process/lno_synth.c:436
-#: modules/process/local_contrast.c:126 modules/process/median-bg.c:176
-#: modules/process/neural.c:208 modules/process/noise_synth.c:347
-#: modules/process/obj_synth.c:432 modules/process/pat_synth.c:402
-#: modules/process/pid.c:196 modules/process/polydistort.c:219
-#: modules/process/polylevel.c:376 modules/process/rotate.c:264
-#: modules/process/scale.c:193 modules/process/scars.c:469
-#: modules/process/shade.c:214 modules/process/slope_dist.c:201
-#: modules/process/sphere-revolve.c:215 modules/process/tilt.c:156
-#: modules/process/tip_model.c:170 modules/process/unrotate.c:226
+#: modules/process/level.c:255 modules/process/linecorrect.c:274
+#: modules/process/lno_synth.c:436 modules/process/local_contrast.c:126
+#: modules/process/median-bg.c:176 modules/process/neural.c:203
+#: modules/process/noise_synth.c:347 modules/process/obj_synth.c:432
+#: modules/process/pat_synth.c:402 modules/process/pid.c:196
+#: modules/process/polydistort.c:219 modules/process/polylevel.c:376
+#: modules/process/rotate.c:264 modules/process/scale.c:193
+#: modules/process/scars.c:469 modules/process/shade.c:214
+#: modules/process/slope_dist.c:201 modules/process/sphere-revolve.c:215
+#: modules/process/tilt.c:156 modules/process/tip_model.c:170
+#: modules/process/unrotate.c:226
 msgid "_Reset"
 msgstr "_Zurücksetzen"
 
@@ -1219,7 +1220,7 @@
 msgstr "Vorschau"
 
 #: libgwymodule/gwymodule-file.c:535 modules/file/err.h:40
-#: modules/file/pixmap.c:746
+#: modules/file/pixmap.c:752
 #, c-format
 msgid "Cannot open file for reading: %s."
 msgstr "Datei kann nicht zum Lesen geöffnet werden: %s"
@@ -1672,54 +1673,54 @@
 msgid "Cannot preview"
 msgstr "Keine Vorschau möglich"
 
-#: app/gwyddion.c:132
+#: app/gwyddion.c:133
 msgid "Loading document history"
 msgstr "Lade Verlauf"
 
-#: app/gwyddion.c:137
+#: app/gwyddion.c:138
 msgid "Registering "
 msgstr "Registriere"
 
-#: app/gwyddion.c:138
+#: app/gwyddion.c:139
 #, fuzzy
 msgid "stock items"
 msgstr "Lagerbestand"
 
-#: app/gwyddion.c:142
+#: app/gwyddion.c:143
 msgid "color gradients"
 msgstr "Farb-Gradienten"
 
-#: app/gwyddion.c:144
+#: app/gwyddion.c:145
 msgid "GL materials"
 msgstr "GL Materialien"
 
-#: app/gwyddion.c:146
+#: app/gwyddion.c:147
 #, fuzzy
 msgid "grain quantities"
 msgstr "Korn-Statistiken"
 
-#: app/gwyddion.c:148
+#: app/gwyddion.c:149
 #, fuzzy
 msgid "calibrations"
 msgstr "Kalibrierungen"
 
-#: app/gwyddion.c:153
+#: app/gwyddion.c:154
 msgid "Loading settings"
 msgstr "Lade Einstellungen"
 
-#: app/gwyddion.c:160
+#: app/gwyddion.c:161
 msgid "Registering modules"
 msgstr "Registriere Module"
 
-#: app/gwyddion.c:182
+#: app/gwyddion.c:183
 msgid "Initializing GUI"
 msgstr "Initialisiere graphische Benutzeroberfläche"
 
-#: app/gwyddion.c:391
+#: app/gwyddion.c:392
 msgid "Could not read settings."
 msgstr "Einstellungen konnten nicht gelesen werden."
 
-#: app/gwyddion.c:394
+#: app/gwyddion.c:395
 #, c-format
 msgid ""
 "Settings file `%s' cannot be read: %s\n"
@@ -2621,12 +2622,12 @@
 msgid "Export Text"
 msgstr "Text exportieren"
 
-#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3092
+#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3127
 #: modules/file/rawfile.c:720 modules/file/rawxyz.c:670
 #: modules/process/fft_filter_1d.c:296 modules/process/grain_dist.c:285
 #: modules/process/grain_edge.c:270 modules/process/grain_mark.c:344
 #: modules/process/grain_rem_threshold.c:324 modules/process/grain_wshed.c:278
-#: modules/tools/spotremove.c:319 modules/tools/stats.c:375
+#: modules/tools/spotremove.c:319 modules/tools/stats.c:378
 msgid "Options"
 msgstr "Optionen"
 
@@ -2707,7 +2708,7 @@
 msgstr ""
 
 #: modules/file/burleigh_exp.c:225 modules/file/burleigh_exp.c:266
-#: modules/file/nanoscope.c:1098 modules/file/omicron.c:395
+#: modules/file/nanoscope.c:1128 modules/file/omicron.c:397
 #: modules/file/shimadzu.c:404
 msgid "Missing colon in header line."
 msgstr ""
@@ -3153,11 +3154,11 @@
 msgid "Representable"
 msgstr ""
 
-#: modules/file/hdrimage.cc:478 modules/tools/stats.c:322
+#: modules/file/hdrimage.cc:478 modules/tools/stats.c:324
 msgid "Minimum:"
 msgstr "Minimum:"
 
-#: modules/file/hdrimage.cc:494 modules/tools/stats.c:323
+#: modules/file/hdrimage.cc:494 modules/tools/stats.c:325
 msgid "Maximum:"
 msgstr "Maximum:"
 
@@ -3176,39 +3177,39 @@
 msgstr "Der Datentyp %d ist ungültig oder wird nicht unterstützt."
 
 #: modules/file/hdrimage.cc:1404 modules/file/hdrimage.cc:1413
-#: modules/file/pixmap.c:1531 modules/file/pixmap.c:1541
+#: modules/file/pixmap.c:1537 modules/file/pixmap.c:1547
 #, c-format
 msgid "libpng initialization error (in %s)"
 msgstr ""
 
-#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1601
+#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1607
 msgid "libpng error occured"
 msgstr ""
 
 #. TRANSLATORS: Dialog title; %s is PNG, TIFF, ...
-#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1027
+#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1033
 #, c-format
 msgid "Import %s"
 msgstr "Importiere %s"
 
-#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1054
+#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1060
 msgid "Image Information"
 msgstr "Bildinformation"
 
-#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1061
+#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1067
 msgid "Horizontal size:"
 msgstr "Horizontale Größe:"
 
 #: modules/file/hdrimage.cc:2182 modules/file/hdrimage.cc:2188
-#: modules/file/pixmap.c:1061 modules/file/pixmap.c:1067
+#: modules/file/pixmap.c:1067 modules/file/pixmap.c:1073
 msgid "px"
 msgstr "px"
 
-#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1067
+#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1073
 msgid "Vertical size:"
 msgstr "Vertikale Größe:"
 
-#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1072
+#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1078
 msgid "Channels:"
 msgstr "Kanäle:"
 
@@ -3216,21 +3217,21 @@
 msgid "Pages:"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1103
+#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1109
 #: modules/file/rawfile.c:623 modules/file/rawxyz.c:569
 #: modules/process/dimensions.h:465
 msgid "Physical Dimensions"
 msgstr "Physische Abmessungen"
 
-#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1113
-#: modules/file/pixmap.c:3035 modules/file/rawfile.c:632
+#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1119
+#: modules/file/pixmap.c:3070 modules/file/rawfile.c:632
 #: modules/process/crosscor.c:197 modules/process/deposit_synth.c:458
 #: modules/process/dimensions.h:471 modules/process/tip_blind.c:265
 msgid "_Width:"
 msgstr "_Breite:"
 
 #: modules/file/hdrimage.cc:2266 modules/file/hdrimage.cc:2331
-#: modules/file/pixmap.c:1135 modules/file/pixmap.c:1190
+#: modules/file/pixmap.c:1141 modules/file/pixmap.c:1196
 #: modules/file/rawfile.c:655 modules/file/rawfile.c:711
 #: modules/process/calcoefs_new.c:384 modules/process/calcoefs_new.c:451
 #: modules/process/calcoefs_simple.c:390 modules/process/calcoefs_simple.c:457
@@ -3240,30 +3241,30 @@
 msgid "verb|Change"
 msgstr "Ändern"
 
-#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1148
+#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1154
 #: modules/file/rawfile.c:668 modules/process/crosscor.c:203
 #: modules/process/dimensions.h:475
 msgid "H_eight:"
 msgstr "H_öhe:"
 
-#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1155
+#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1161
 #: modules/file/rawfile.c:675 modules/file/rawxyz.c:550
 msgid "Identical _measures"
 msgstr "Identische _Maße"
 
-#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1167
+#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1173
 #: modules/file/rawfile.c:687
 msgid "_Z-scale (per sample unit):"
 msgstr "_Z-Skalierung (pro Abtast-Einheit):"
 
-#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1417
+#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1423
 #: modules/file/rawfile.c:1326 modules/process/calcoefs_new.c:776
 #: modules/process/calcoefs_simple.c:1189 modules/process/calcoefs_view.c:1393
 #: modules/process/calibrate.c:816 modules/process/dimensions.h:193
 msgid "Change Units"
 msgstr "Einheiten ändern"
 
-#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1431
+#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1437
 #: modules/file/rawfile.c:1340 modules/process/calcoefs_new.c:789
 #: modules/process/calcoefs_simple.c:1202 modules/process/calcoefs_view.c:1406
 #: modules/process/calibrate.c:830 modules/process/dimensions.h:206
@@ -3697,7 +3698,7 @@
 msgid "Nanonis SXM files (.sxm)"
 msgstr "Nanonis SXM-Dateien (.sxm)"
 
-#: modules/file/nanonis.c:163 modules/file/omicron.c:499
+#: modules/file/nanonis.c:163 modules/file/omicron.c:501
 #: modules/file/unisoku.c:265
 msgid "File header ended unexpectedly."
 msgstr ""
@@ -3740,39 +3741,39 @@
 msgid "File Scan/Measure.xml is missing in the zip file."
 msgstr ""
 
-#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:484
+#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:488
 #, fuzzy
 msgid "Unknown error"
 msgstr "Unbekannte Linie %d"
 
-#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:489
+#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:493
 msgid "End of file"
 msgstr ""
 
-#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:491
+#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:495
 msgid "End of list of files"
 msgstr ""
 
-#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:493
+#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:497
 #, fuzzy
 msgid "Parameter error"
 msgstr "Parameter"
 
-#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:495
+#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:499
 #, fuzzy
 msgid "Bad zip file"
 msgstr "Shimadzu-Dateien"
 
-#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:497
+#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:501
 msgid "Internal error"
 msgstr ""
 
-#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:499
+#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:503
 #, fuzzy
 msgid "CRC error"
 msgstr "X-Fehler %d"
 
-#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:502
+#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:506
 #, c-format
 msgid "Minizip error while reading the zip file: %s."
 msgstr ""
@@ -3821,11 +3822,11 @@
 msgid "Nanoscope III files"
 msgstr "Nanoscope-III-Dateien"
 
-#: modules/file/nanoscope.c:243
+#: modules/file/nanoscope.c:244
 msgid "File is not a Nanoscope file, or it is a unknown subtype."
 msgstr ""
 
-#: modules/file/nanoscope.c:250
+#: modules/file/nanoscope.c:251
 msgid ""
 "File has been damaged by change of line endings, resulting in corruption of "
 "the binary part of the file.\n"
@@ -3836,16 +3837,16 @@
 "transfer that attempts to store text platform-independently."
 msgstr ""
 
-#: modules/file/nanoscope.c:521 modules/file/nanoscope.c:537
+#: modules/file/nanoscope.c:525 modules/file/nanoscope.c:541
 msgid "Cannot parse `Scan size' field."
 msgstr ""
 
-#: modules/file/nanoscope.c:1007 modules/file/nrrdfile.c:1013
+#: modules/file/nanoscope.c:1037 modules/file/nrrdfile.c:1013
 #, c-format
 msgid "Garbage after data sample #%u."
 msgstr ""
 
-#: modules/file/nanoscope.c:1088
+#: modules/file/nanoscope.c:1118
 msgid "Truncated header line."
 msgstr ""
 
@@ -3969,39 +3970,54 @@
 msgid "Per-axis header field %s contains too few items."
 msgstr ""
 
-#: modules/file/nt-mdt.c:658
+#: modules/file/nt-mdt.c:694
 msgid "Imports NT-MDT data files."
 msgstr "Importiert NT-MDT-Dateien."
 
-#: modules/file/nt-mdt.c:671
+#: modules/file/nt-mdt.c:707
 msgid "NT-MDT files (.mdt)"
 msgstr "NT-MDT-Dateien (.mdt)"
 
-#: modules/file/nt-mdt.c:1096
+#: modules/file/nt-mdt.c:1156
 msgid "Frame is too short for Frame Mode."
 msgstr ""
 
-#: modules/file/nt-mdt.c:1110
+#: modules/file/nt-mdt.c:1170
 msgid "Frame is too short for dots or data."
 msgstr ""
 
-#: modules/file/nt-mdt.c:1369
+#: modules/file/nt-mdt.c:1429
 #, c-format
 msgid "End of file reached in frame header #%u."
 msgstr ""
 
-#: modules/file/nt-mdt.c:1377
+#: modules/file/nt-mdt.c:1437
 #, c-format
 msgid "End of file reached in frame data #%u."
 msgstr ""
 
-#: modules/file/nt-mdt.c:1412
+#: modules/file/nt-mdt.c:1472
 #, c-format
 msgid "Frame #%u is too short for scanned data header."
 msgstr ""
 
-#: modules/file/nt-mdt.c:2464
-msgid "Raman Image"
+#: modules/file/nt-mdt.c:2794 modules/tools/filter.c:209
+#: modules/tools/icolorange.c:396 modules/tools/linestats.c:154
+msgid "Maximum"
+msgstr "Maximum"
+
+#: modules/file/nt-mdt.c:2795
+#, fuzzy
+msgid "Max. position"
+msgstr "Maximaler z-Wert"
+
+#: modules/file/nt-mdt.c:2796
+#, fuzzy
+msgid "Average"
+msgstr "_Minimalwert"
+
+#: modules/file/nt-mdt.c:2809
+msgid "Raman Image Import"
 msgstr ""
 
 #: modules/file/oldmda.c:146
@@ -4044,11 +4060,11 @@
 msgid "Omicron files (.par + data)"
 msgstr "Omicron-Dateien (.par + data)"
 
-#: modules/file/omicron.c:401
+#: modules/file/omicron.c:403
 msgid "Header line starts with a colon."
 msgstr ""
 
-#: modules/file/omicron.c:508
+#: modules/file/omicron.c:510
 msgid "Channel information ended unexpectedly."
 msgstr ""
 
@@ -4103,154 +4119,154 @@
 msgid "Truncated data in block %s"
 msgstr ""
 
-#: modules/file/pixmap.c:350
+#: modules/file/pixmap.c:356
 msgid "All channels"
 msgstr "Alle Kanäle"
 
-#: modules/file/pixmap.c:351
+#: modules/file/pixmap.c:357
 msgid "Red"
 msgstr "Rot"
 
-#: modules/file/pixmap.c:352
+#: modules/file/pixmap.c:358
 msgid "Green"
 msgstr "Grün"
 
-#: modules/file/pixmap.c:353
+#: modules/file/pixmap.c:359
 msgid "Blue"
 msgstr "Blau"
 
-#: modules/file/pixmap.c:354
+#: modules/file/pixmap.c:360
 msgid "Value (max)"
 msgstr "Wert (max.)"
 
-#: modules/file/pixmap.c:355
+#: modules/file/pixmap.c:361
 msgid "RGB sum"
 msgstr "RGB-Summe"
 
-#: modules/file/pixmap.c:356
+#: modules/file/pixmap.c:362
 msgid "Luma"
 msgstr ""
 
-#: modules/file/pixmap.c:357
+#: modules/file/pixmap.c:363
 msgid "Alpha"
 msgstr "Alpha"
 
-#: modules/file/pixmap.c:369
+#: modules/file/pixmap.c:375
 msgid "Portable Network Graphics (.png)"
 msgstr "Portable Network Graphics (.png)"
 
-#: modules/file/pixmap.c:375
+#: modules/file/pixmap.c:381
 msgid "JPEG (.jpeg,.jpg)"
 msgstr "JPEG (.jpeg,.jpg)"
 
-#: modules/file/pixmap.c:381
+#: modules/file/pixmap.c:387
 msgid "TIFF (.tiff,.tif)"
 msgstr "TIFF (.tiff,.tif)"
 
-#: modules/file/pixmap.c:387
+#: modules/file/pixmap.c:393
 msgid "Portable Pixmap (.ppm,.pnm)"
 msgstr "Portable Pixmap (.ppm,.pnm)"
 
-#: modules/file/pixmap.c:393
+#: modules/file/pixmap.c:399
 msgid "Windows or OS2 Bitmap (.bmp)"
 msgstr "Windows- oder OS2-Bitmap (.bmp)"
 
-#: modules/file/pixmap.c:399
+#: modules/file/pixmap.c:405
 msgid "TARGA (.tga,.targa)"
 msgstr "TARGA (.tga,.targa)"
 
-#: modules/file/pixmap.c:412
+#: modules/file/pixmap.c:418
 msgid "Graphics Interchange Format (.gif)"
 msgstr "Graphics Interchange Format (.gif)"
 
-#: modules/file/pixmap.c:416
+#: modules/file/pixmap.c:422
 msgid "JPEG 2000 (.jpx)"
 msgstr "JPEG 2000 (.jpx)"
 
-#: modules/file/pixmap.c:420
+#: modules/file/pixmap.c:426
 msgid "PCX (.pcx)"
 msgstr "PCX (.pcx)"
 
-#: modules/file/pixmap.c:424
+#: modules/file/pixmap.c:430
 msgid "X Pixmap (.xpm)"
 msgstr "X Pixmap (.xpm)"
 
-#: modules/file/pixmap.c:428
+#: modules/file/pixmap.c:434
 msgid "Sun raster image (.ras)"
 msgstr "Sun Rastergraphik (.ras)"
 
-#: modules/file/pixmap.c:432
+#: modules/file/pixmap.c:438
 msgid "Apple icon (.icns)"
 msgstr "Apple-Icon (.icns)"
 
-#: modules/file/pixmap.c:456
+#: modules/file/pixmap.c:462
 msgid ""
 "Renders data into pixmap images and imports data from pixmap images. It "
 "supports the following image formats for export: PNG, JPEG, TIFF, PPM, BMP, "
 "TARGA. Import support relies on GDK and thus may be installation-dependent."
 msgstr ""
 
-#: modules/file/pixmap.c:740
+#: modules/file/pixmap.c:746
 #, c-format
 msgid "Pixmap has not registered file type `%s'."
 msgstr ""
 
-#: modules/file/pixmap.c:754
+#: modules/file/pixmap.c:760
 #, c-format
 msgid "Cannot get pixbuf loader: %s."
 msgstr ""
 
-#: modules/file/pixmap.c:766 modules/file/pixmap.c:778
+#: modules/file/pixmap.c:772 modules/file/pixmap.c:784
 #, c-format
 msgid "Pixbuf loader refused data: %s."
 msgstr ""
 
-#: modules/file/pixmap.c:1200
+#: modules/file/pixmap.c:1206
 msgid ""
 "Warning: Colorful images cannot be reliably mapped to meaningful values."
 msgstr ""
 "Achtung: Mehrfarbige Bilder können nicht zuverlässig in sinnvolle Werte "
 "umgerechnet werden."
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "verb|Use"
 msgstr ""
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "as data"
 msgstr "als Daten"
 
-#: modules/file/pixmap.c:1688 modules/file/pixmap.c:1716
+#: modules/file/pixmap.c:1694 modules/file/pixmap.c:1722
 #, c-format
 msgid "Pixbuf save failed: %s."
 msgstr ""
 
-#: modules/file/pixmap.c:2126
+#: modules/file/pixmap.c:2132
 msgid "Image is too large to be stored as TARGA."
 msgstr "Das Bild ist zu groß, um als TARGA gespeichert zu werden."
 
-#: modules/file/pixmap.c:2207
+#: modules/file/pixmap.c:2213
 msgid "Data must be displayed in a window for pixmap export."
 msgstr ""
 
-#: modules/file/pixmap.c:2927
+#: modules/file/pixmap.c:2936
 msgid "Change Inset Color"
 msgstr ""
 
-#: modules/file/pixmap.c:2986
+#: modules/file/pixmap.c:3021
 #, c-format
 msgid "Export %s"
 msgstr ""
 
-#: modules/file/pixmap.c:3017
+#: modules/file/pixmap.c:3052
 msgid "Scaling"
 msgstr ""
 
-#: modules/file/pixmap.c:3026
+#: modules/file/pixmap.c:3061
 msgid "_Zoom:"
 msgstr "_Zoom:"
 
-#: modules/file/pixmap.c:3044 modules/process/col_synth.c:400
+#: modules/file/pixmap.c:3079 modules/process/col_synth.c:400
 #: modules/process/grain_mark.c:309 modules/process/grain_rem_threshold.c:280
 #: modules/process/obj_synth.c:573 modules/process/pat_synth.c:889
 #: modules/process/pat_synth.c:1190 modules/process/pat_synth.c:1525
@@ -4258,97 +4274,107 @@
 msgid "_Height:"
 msgstr "_Höhe:"
 
-#: modules/file/pixmap.c:3052
+#: modules/file/pixmap.c:3087
 #, fuzzy
 msgid "Font:"
 msgstr "Schri_ftgröße:"
 
-#: modules/file/pixmap.c:3067
+#: modules/file/pixmap.c:3102
 msgid "Scale text _proportionally"
 msgstr ""
 
-#: modules/file/pixmap.c:3082
+#: modules/file/pixmap.c:3117
 msgid "_Font size:"
 msgstr "Schri_ftgröße:"
 
-#: modules/file/pixmap.c:3096
+#: modules/file/pixmap.c:3131
 msgid "Draw _mask"
 msgstr "_Maske zeichnen"
 
-#: modules/file/pixmap.c:3105
+#: modules/file/pixmap.c:3140
 msgid "Draw _selection"
 msgstr ""
 
-#: modules/file/pixmap.c:3121
+#: modules/file/pixmap.c:3156
 msgid "Grayscale Mode"
 msgstr ""
 
-#: modules/file/pixmap.c:3125
+#: modules/file/pixmap.c:3160
 msgid "Export as 1_6 bit grayscale"
 msgstr ""
 
-#: modules/file/pixmap.c:3151
+#: modules/file/pixmap.c:3186
 #, fuzzy
 msgid "Lateral Scale"
 msgstr "Laterale Skala"
 
-#: modules/file/pixmap.c:3158 modules/file/pixmap.c:3253
+#: modules/file/pixmap.c:3193 modules/file/pixmap.c:3308
 #, fuzzy
 msgid "ruler|_None"
 msgstr "_Keine"
 
-#: modules/file/pixmap.c:3159
+#: modules/file/pixmap.c:3194
 msgid "_Rulers"
 msgstr ""
 
-#: modules/file/pixmap.c:3160
+#: modules/file/pixmap.c:3195
 msgid "_Inset scale bar"
 msgstr ""
 
-#: modules/file/pixmap.c:3165
+#: modules/file/pixmap.c:3200
 msgid "Color:"
 msgstr "Farbe:"
 
-#: modules/file/pixmap.c:3181 modules/process/immerse.c:323
+#: modules/file/pixmap.c:3216 modules/process/immerse.c:323
 msgid "Position:"
 msgstr "Position:"
 
-#: modules/file/pixmap.c:3186
+#: modules/file/pixmap.c:3221
 #, fuzzy
 msgid "left"
 msgstr "Links"
 
-#: modules/file/pixmap.c:3190
+#: modules/file/pixmap.c:3225
 #, fuzzy
 msgid "center"
 msgstr "Mitte"
 
-#: modules/file/pixmap.c:3194
+#: modules/file/pixmap.c:3229
 #, fuzzy
 msgid "right"
 msgstr "Rechts"
 
-#: modules/file/pixmap.c:3199
+#: modules/file/pixmap.c:3234
 msgid "top"
 msgstr ""
 
-#: modules/file/pixmap.c:3211
+#: modules/file/pixmap.c:3246
 msgid "bottom"
 msgstr ""
 
-#: modules/file/pixmap.c:3222 modules/process/lno_synth.c:1066
+#: modules/file/pixmap.c:3257 modules/process/lno_synth.c:1066
 msgid "_Length:"
 msgstr "_Länge:"
 
-#: modules/file/pixmap.c:3238
+#: modules/file/pixmap.c:3273
 msgid "_Auto"
 msgstr "_Auto"
 
-#: modules/file/pixmap.c:3246
+#: modules/file/pixmap.c:3281
+#, fuzzy
+msgid "Draw _ticks"
+msgstr "_Maske zeichnen"
+
+#: modules/file/pixmap.c:3291
+#, fuzzy
+msgid "Draw _label"
+msgstr "_Beschriftungen anzeigen"
+
+#: modules/file/pixmap.c:3301
 msgid "Value Scale"
 msgstr "Werteskala"
 
-#: modules/file/pixmap.c:3254
+#: modules/file/pixmap.c:3309
 msgid "_False color ruler"
 msgstr ""
 
@@ -4525,7 +4551,7 @@
 #: modules/process/mark_with.c:211 modules/process/polydistort.c:214
 #: modules/process/scars.c:466 modules/process/synth.h:479
 #: modules/process/tip_model.c:167 modules/tools/linestats.c:420
-#: modules/tools/sfunctions.c:475 modules/tools/stats.c:432
+#: modules/tools/sfunctions.c:475 modules/tools/stats.c:435
 msgid "_Update"
 msgstr "A_ktualisieren"
 
@@ -5039,7 +5065,7 @@
 msgid "Seiko files (.xqb, .xqd, .xqt)"
 msgstr "Seiko-Dateien (.xqb, .xqd, .xqt)"
 
-#: modules/file/seiko.c:239
+#: modules/file/seiko.c:251
 msgid ""
 "Cannot determine scan dimensions; it seems non-square with an unknown side "
 "ratio."
@@ -5276,11 +5302,11 @@
 msgid "Surf files (.sur)"
 msgstr "Surf-Dateien (.sur)"
 
-#: modules/file/tiaser.c:166
+#: modules/file/tiaser.c:172
 msgid "Imports FEI Tecnai imaging and analysis (former Emispec) files."
 msgstr ""
 
-#: modules/file/tiaser.c:179
+#: modules/file/tiaser.c:185
 msgid "FEI TIA (Emispec) data"
 msgstr ""
 
@@ -5467,10 +5493,10 @@
 #: modules/graph/graph_cd.c:692 modules/graph/graph_fdfit.c:780
 #: modules/graph/graph_fit.c:804 modules/tools/grainmeasure.c:215
 #: modules/tools/readvalue.c:576 modules/tools/readvalue.c:577
-#: modules/tools/roughness.c:957 modules/tools/stats.c:661
-#: modules/tools/stats.c:672 modules/tools/stats.c:673
-#: modules/tools/stats.c:1050 modules/tools/stats.c:1057
-#: modules/tools/stats.c:1059
+#: modules/tools/roughness.c:957 modules/tools/stats.c:666
+#: modules/tools/stats.c:677 modules/tools/stats.c:678
+#: modules/tools/stats.c:1054 modules/tools/stats.c:1061
+#: modules/tools/stats.c:1063
 msgid "N.A."
 msgstr "N.V."
 
@@ -5929,7 +5955,7 @@
 msgid "_Expression:"
 msgstr "_Ausdruck:"
 
-#: modules/process/arithmetic.c:294
+#: modules/process/arithmetic.c:294 modules/process/neural.c:220
 msgid "Operands"
 msgstr "Operanden"
 
@@ -6215,7 +6241,7 @@
 msgstr ""
 
 #: modules/process/calcoefs_simple.c:342 modules/process/calcoefs_stage.c:149
-#: modules/process/neural.c:225 modules/process/superresolution.c:159
+#: modules/process/superresolution.c:159
 msgid "Operands:"
 msgstr "Operanden:"
 
@@ -6806,20 +6832,21 @@
 msgstr "_Graphen zeichnen"
 
 #: modules/process/curvature.c:684 modules/process/facet-level.c:297
-#: modules/process/level.c:267 modules/process/polylevel.c:495
-#: modules/tools/sfunctions.c:457 modules/tools/stats.c:362
+#: modules/process/level.c:269 modules/process/linecorrect.c:288
+#: modules/process/polylevel.c:495 modules/tools/sfunctions.c:457
+#: modules/tools/stats.c:365
 msgid "Masking Mode"
 msgstr "Maskier-Modus"
 
-#: modules/process/curvature.c:754 modules/process/grain_dist.c:827
+#: modules/process/curvature.c:754 modules/process/grain_dist.c:835
 #: modules/tools/distance.c:227 modules/tools/roughness.c:824
-#: modules/tools/stats.c:423
+#: modules/tools/stats.c:426
 msgid "Save table to a file"
 msgstr "Tabelle in eine Datei speichern"
 
-#: modules/process/curvature.c:759 modules/process/grain_dist.c:832
+#: modules/process/curvature.c:759 modules/process/grain_dist.c:840
 #: modules/tools/distance.c:232 modules/tools/roughness.c:829
-#: modules/tools/stats.c:428
+#: modules/tools/stats.c:431
 msgid "Copy table to clipboard"
 msgstr "Tabelle in die Zwischenablage kopieren"
 
@@ -8008,42 +8035,47 @@
 msgid "Data channel:"
 msgstr ""
 
-#: modules/process/grain_dist.c:734 modules/process/grain_dist.c:806
+#: modules/process/grain_dist.c:736 modules/process/grain_dist.c:814
 msgid "Grain Statistics"
 msgstr "Korn-Statistiken"
 
-#: modules/process/grain_dist.c:746
+#: modules/process/grain_dist.c:748
 msgid "Number of grains:"
 msgstr "Anzahl an Körnern"
 
-#: modules/process/grain_dist.c:755
+#: modules/process/grain_dist.c:757
 msgid "Total projected area (abs.):"
 msgstr "Gesamte projizierte Fläche (abs.):"
 
-#: modules/process/grain_dist.c:759
+#: modules/process/grain_dist.c:761
 msgid "Total projected area (rel.):"
 msgstr "Gesamte projizierte Fläche (rel.):"
 
-#: modules/process/grain_dist.c:765
+#: modules/process/grain_dist.c:767
 msgid "Mean grain area:"
 msgstr "Mittlere Kornfläche:"
 
-#: modules/process/grain_dist.c:771
+#: modules/process/grain_dist.c:773
 msgid "Mean grain size:"
 msgstr "Mittlere Korngröße:"
 
-#: modules/process/grain_dist.c:780
+#: modules/process/grain_dist.c:782
 msgid "Total grain volume (zero):"
 msgstr "Gesamtes Kornvolumen (Nullpunkt):"
 
-#: modules/process/grain_dist.c:786
+#: modules/process/grain_dist.c:788
 msgid "Total grain volume (minimum):"
 msgstr "Gesamtes Kornvolumen (Minimum):"
 
-#: modules/process/grain_dist.c:792
+#: modules/process/grain_dist.c:794
 msgid "Total grain volume (laplacian):"
 msgstr "Gesamtes Kornvolumen (Laplace):"
 
+#: modules/process/grain_dist.c:800
+#, fuzzy
+msgid "Total projected boundary length:"
+msgstr "Projizierte Umrandungslänge"
+
 #: modules/process/grain_edge.c:106
 #, fuzzy
 msgid "Marks grains by edge detection method."
@@ -8738,52 +8770,57 @@
 msgid "E_xtract background"
 msgstr "Untergrund e_xtrahieren"
 
-#: modules/process/linecorrect.c:64
+#: modules/process/linecorrect.c:88
 msgid "Corrects line defects (mostly experimental algorithms)."
 msgstr "Korrigiert  Zeilendefekte (überwiegend experimentelle Algorithmen)"
 
-#: modules/process/linecorrect.c:78
+#: modules/process/linecorrect.c:102
 msgid "/_Correct Data/M_odus Line Correction"
 msgstr "/Ko_rrigieren/M_odus Zeilenkorrektur"
 
-#: modules/process/linecorrect.c:82
+#: modules/process/linecorrect.c:106
 #, fuzzy
 msgid "Correct lines by matching height modus"
 msgstr "Zeilen durch Abgleichen des Höhen-Modus korrigieren"
 
-#: modules/process/linecorrect.c:85
+#: modules/process/linecorrect.c:109
 msgid "/_Correct Data/M_edian Line Correction"
 msgstr "/Ko_rrigieren/_Median Zeilenkorrektur"
 
-#: modules/process/linecorrect.c:89
+#: modules/process/linecorrect.c:113
 msgid "Correct lines by matching height median"
 msgstr "Zeilen durch Abgleichen des Höhen-Medians korrigieren"
 
-#: modules/process/linecorrect.c:92
+#: modules/process/linecorrect.c:116
 #, fuzzy
 msgid "/_Correct Data/Median Di_fference Line Correction"
 msgstr "/Ko_rrigieren/_Median Zeilenkorrektur"
 
-#: modules/process/linecorrect.c:96
+#: modules/process/linecorrect.c:120
 msgid "Correct lines by zeroing median of differences between neighbor lines"
 msgstr ""
 
-#: modules/process/linecorrect.c:100
+#: modules/process/linecorrect.c:124
 msgid "/_Correct Data/Ma_tch Line Correction"
 msgstr "/Ko_rrigieren/E_bene Zeilenkorrektur"
 
-#: modules/process/linecorrect.c:104
+#: modules/process/linecorrect.c:128
 msgid "Correct lines by matching flat segments"
 msgstr "Zeilen durch Abgleichen ebener Segmente korrigieren"
 
-#: modules/process/linecorrect.c:107
+#: modules/process/linecorrect.c:131
 msgid "/_Correct Data/Ste_p Line Correction"
 msgstr "/Ko_rrigieren/_Stufen Zeilenkorrektur"
 
-#: modules/process/linecorrect.c:111
+#: modules/process/linecorrect.c:135
 msgid "Correct steps in lines"
 msgstr "Stufen in Zeilen korrigieren"
 
+#: modules/process/linecorrect.c:198
+#, fuzzy
+msgid "Median Line Correction"
+msgstr "/Ko_rrigieren/_Median Zeilenkorrektur"
+
 #: modules/process/lno_synth.c:249 modules/process/noise_synth.c:183
 msgid "distribution|Gaussian"
 msgstr "Gauß"
@@ -9225,80 +9262,95 @@
 msgid "Immersed detail data"
 msgstr "Eingefügter Detailbild-Datensatz"
 
-#: modules/process/neural.c:147
+#: modules/process/neural.c:144
 msgid "Neural network SPM data processing"
 msgstr ""
 
-#: modules/process/neural.c:161
+#: modules/process/neural.c:158
 #, fuzzy
-msgid "/M_ultidata/_Neural network..."
+msgid "/M_ultidata/_Neural Network..."
 msgstr "/M_ultidaten/Zusa_mmenführen..."
 
-#: modules/process/neural.c:165
+#: modules/process/neural.c:162
 msgid "Neural network AFM data processing"
 msgstr ""
 
-#: modules/process/neural.c:207
-msgid "Neural network"
+#: modules/process/neural.c:202
+msgid "Neural Network"
 msgstr ""
 
-#: modules/process/neural.c:233
+#: modules/process/neural.c:227
 #, fuzzy
-msgid "Training model:"
+msgid "Training _model:"
 msgstr "Fit-Modus"
 
-#: modules/process/neural.c:240
+#: modules/process/neural.c:233
 #, fuzzy
-msgid "Training signal:"
+msgid "Training _signal:"
 msgstr "Finde Minima"
 
-#: modules/process/neural.c:247
+#: modules/process/neural.c:239
 #, fuzzy
-msgid "Result model:"
+msgid "Res_ult model:"
 msgstr "Ergebnis-Auflösung:"
 
-#: modules/process/neural.c:254
+#: modules/process/neural.c:244 modules/tools/stats.c:401
+msgid "Parameters"
+msgstr "Parameter"
+
+#: modules/process/neural.c:250
 #, fuzzy
-msgid "Window width:"
+msgid "Window _width:"
 msgstr "Fenstergröße"
 
-#: modules/process/neural.c:260
+#: modules/process/neural.c:256
 #, fuzzy
-msgid "Window height:"
+msgid "Window h_eight:"
 msgstr "Neue _Höhe:"
 
-#: modules/process/neural.c:266
-msgid "Training steps:"
-msgstr ""
+#: modules/process/neural.c:262
+#, fuzzy
+msgid "_Training steps:"
+msgstr "Fit-Modus"
 
-#: modules/process/neural.c:272
+#: modules/process/neural.c:268
 #, fuzzy
-msgid "Hidden nodes:"
+msgid "_Hidden nodes:"
 msgstr "Versteckt"
 
-#: modules/process/neural.c:364
+#: modules/process/neural.c:360
 msgid "Data not compatible"
 msgstr ""
 
-#: modules/process/neural.c:389 modules/process/pid.c:334
+#: modules/process/neural.c:388 modules/process/pid.c:334
 #, fuzzy
 msgid "Starting..."
 msgstr "Starte"
 
-#: modules/process/neural.c:491
+#: modules/process/neural.c:409
+#, fuzzy
+msgid "Training..."
+msgstr "Korreliere..."
+
+#: modules/process/neural.c:451
+#, fuzzy
+msgid "Evaluating..."
+msgstr "Korreliere..."
+
+#: modules/process/neural.c:493
 msgid "Evaluated signal"
 msgstr ""
 
-#: modules/process/neural.c:497
+#: modules/process/neural.c:499
 msgid "Training error"
 msgstr ""
 
-#: modules/process/neural.c:498
+#: modules/process/neural.c:500
 #, fuzzy
 msgid "error"
 msgstr "Fehler"
 
-#: modules/process/neural.c:504
+#: modules/process/neural.c:506
 msgid "NN training error"
 msgstr ""
 
@@ -9308,7 +9360,7 @@
 
 #: modules/process/noise_synth.c:224
 msgid "/S_ynthetic/_Noise..."
-msgstr "/S_ynthetisch/_Rauschen"
+msgstr "/S_ynthetisch/_Rauschen..."
 
 #: modules/process/noise_synth.c:228
 msgid "Generate surface of uncorrelated noise"
@@ -9365,8 +9417,9 @@
 msgstr "Gauss'sch"
 
 #: modules/process/obj_synth.c:284
-msgid "Dougnuts"
-msgstr ""
+#, fuzzy
+msgid "Doughnuts"
+msgstr "Rauigkeit"
 
 #: modules/process/obj_synth.c:290
 msgid "Generates randomly patterned surfaces by placing objects."
@@ -10314,59 +10367,59 @@
 msgid "Denoised"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:53
+#: modules/pygwy/pygwy-console.c:54
 msgid "/Pygwy Console"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:57
+#: modules/pygwy/pygwy-console.c:58
 msgid "Python wrapper console"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:155
+#: modules/pygwy/pygwy-console.c:156
 msgid ">>> Running file content of below textfield\n"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:180
+#: modules/pygwy/pygwy-console.c:181
 msgid "Open Python script"
 msgstr "Python-Skript öffnen"
 
-#: modules/pygwy/pygwy-console.c:244
+#: modules/pygwy/pygwy-console.c:245
 msgid "Save Script as"
 msgstr "Skript speichern als"
 
-#: modules/pygwy/pygwy-console.c:283
+#: modules/pygwy/pygwy-console.c:284
 msgid "Pygwy Console"
 msgstr "Pygwy-Konsole"
 
-#: modules/pygwy/pygwy-console.c:295
+#: modules/pygwy/pygwy-console.c:296
 msgid "Open script in Python language (Ctrl-O)"
 msgstr "Python-Skript öffnen (Strg-O)"
 
-#: modules/pygwy/pygwy-console.c:297
+#: modules/pygwy/pygwy-console.c:298
 msgid "Save script (Ctrl-S)"
 msgstr "Skript speichern (Strg-S)"
 
-#: modules/pygwy/pygwy-console.c:299
+#: modules/pygwy/pygwy-console.c:300
 msgid "Execute script (Ctrl-E)"
 msgstr "Skript ausführen (Strg-E)"
 
-#: modules/pygwy/pygwy-console.c:377
+#: modules/pygwy/pygwy-console.c:378
 msgid "Command"
 msgstr ""
 
-#: pygwy.c:91
+#: pygwy.c:99
 msgid "Pygwy, the Gwyddion Python wrapper."
 msgstr ""
 
-#: pygwy.c:443
+#: pygwy.c:520
 msgid "Function written in Python"
 msgstr "In Python geschriebene Funktion"
 
-#: pygwy.c:489
+#: pygwy.c:566
 msgid "Graph function written in Python"
 msgstr ""
 
-#: pygwy.c:899
+#: pygwy.c:976
 #, c-format
 msgid ""
 "Pygwy plugin: %s (%s)\n"
@@ -10420,11 +10473,6 @@
 msgid "Conservative denoise"
 msgstr "Konservative Rauschunterdrückung"
 
-#: modules/tools/filter.c:209 modules/tools/icolorange.c:396
-#: modules/tools/linestats.c:154
-msgid "Maximum"
-msgstr "Maximum"
-
 #: modules/tools/filter.c:210
 msgid "Kuwahara"
 msgstr "Kuwahara"
@@ -10655,7 +10703,7 @@
 msgstr "Optionen"
 
 #: modules/tools/linestats.c:362 modules/tools/sfunctions.c:392
-#: modules/tools/stats.c:381
+#: modules/tools/stats.c:384
 msgid "_Instant updates"
 msgstr "_Sofort aktualisieren"
 
@@ -11098,12 +11146,12 @@
 msgid "Roughness Parameters"
 msgstr "Rauigkeits-Parameter"
 
-#: modules/tools/roughness.c:2041 modules/tools/stats.c:999
+#: modules/tools/roughness.c:2041 modules/tools/stats.c:1002
 #, c-format
 msgid "File:              %s\n"
 msgstr "Datei:              %s\n"
 
-#: modules/tools/roughness.c:2045 modules/tools/stats.c:1003
+#: modules/tools/roughness.c:2045 modules/tools/stats.c:1006
 #, c-format
 msgid "Data channel:      %s\n"
 msgstr ""
@@ -11270,75 +11318,75 @@
 msgid "Fractal interpolation"
 msgstr ""
 
-#: modules/tools/stats.c:180
+#: modules/tools/stats.c:182
 msgid "Statistics tool."
 msgstr "Statistik-Werkzeug."
 
-#: modules/tools/stats.c:217 modules/tools/stats.c:993
+#: modules/tools/stats.c:219 modules/tools/stats.c:996
 msgid "Statistical Quantities"
 msgstr "Statistische Größen"
 
-#: modules/tools/stats.c:218
+#: modules/tools/stats.c:220
 msgid "Statistical quantities"
 msgstr "Statistische Größen"
 
-#: modules/tools/stats.c:321
+#: modules/tools/stats.c:323
 msgid "Average value:"
 msgstr ""
 
-#: modules/tools/stats.c:324
+#: modules/tools/stats.c:326
 msgid "Median:"
 msgstr "Median:"
 
-#: modules/tools/stats.c:325
+#: modules/tools/stats.c:327
 msgid "Ra (Sa):"
 msgstr ""
 
-#: modules/tools/stats.c:326
+#: modules/tools/stats.c:328
 msgid "Rms (Sq):"
 msgstr ""
 
-#: modules/tools/stats.c:327
+#: modules/tools/stats.c:329
+msgid "Rms (grain-wise):"
+msgstr ""
+
+#: modules/tools/stats.c:330
 msgid "Skew:"
 msgstr ""
 
-#: modules/tools/stats.c:328
+#: modules/tools/stats.c:331
 msgid "Kurtosis:"
 msgstr "Wölbung:"
 
-#: modules/tools/stats.c:329
+#: modules/tools/stats.c:332
 msgid "Surface area:"
 msgstr "Oberflächen-Flächeninhalt:"
 
-#: modules/tools/stats.c:330
+#: modules/tools/stats.c:333
 msgid "Projected area:"
 msgstr "Projizierte Fläche:"
 
-#: modules/tools/stats.c:331
+#: modules/tools/stats.c:334
 msgid "Inclination θ:"
 msgstr "Neigungswinkel θ:"
 
-#: modules/tools/stats.c:332
+#: modules/tools/stats.c:335
 msgid "Inclination φ:"
 msgstr "Neigungswinkel φ:"
 
-#: modules/tools/stats.c:398
-msgid "Parameters"
-msgstr "Parameter"
-
-#: modules/tools/stats.c:929
+#: modules/tools/stats.c:932
 msgid "Save Statistical Quantities"
 msgstr ""
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "Yes"
 msgstr "Ja"
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "No"
 msgstr "Nein"
 
-#: modules/tools/stats.c:1062
+#: modules/tools/stats.c:1066
 #, c-format
 msgid ""
 "Selected area:     %s × %s at (%s, %s) px\n"
@@ -11351,6 +11399,7 @@
 "Median:            %s\n"
 "Ra:                %s\n"
 "Rms:               %s\n"
+"Rms (grain-wise):  %s\n"
 "Skew:              %s\n"
 "Kurtosis:          %s\n"
 "Surface area:      %s\n"
Binary files /tmp/6W43BMtPno/gwyddion-2.28/po/es.gmo and /tmp/ug3yy2UQEY/gwyddion-2.29/po/es.gmo differ
diff -Nru gwyddion-2.28/po/es.po gwyddion-2.29/po/es.po
--- gwyddion-2.28/po/es.po	2012-05-18 10:44:03.000000000 +0100
+++ gwyddion-2.29/po/es.po	2012-07-19 21:14:11.000000000 +0100
@@ -2,7 +2,7 @@
 msgstr ""
 "Project-Id-Version: gwyddion\n"
 "Report-Msgid-Bugs-To: yeti@gwyddion.net\n"
-"POT-Creation-Date: 2012-05-18 11:44+0200\n"
+"POT-Creation-Date: 2012-07-19 22:14+0200\n"
 "PO-Revision-Date: 2011-12-15 11:46+0100\n"
 "Last-Translator: Andres \n"
 "Language-Team: the gwyiddion team \n"
@@ -810,7 +810,7 @@
 msgstr ""
 
 #: libgwydgets/gwy3dwindow.c:1116 modules/file/hdrimage.cc:2149
-#: modules/file/pixmap.c:1030 modules/file/pixmap.c:2989
+#: modules/file/pixmap.c:1036 modules/file/pixmap.c:3024
 #: modules/file/rawfile.c:398 modules/process/angle_dist.c:170
 #: modules/process/calcoefs_new.c:347 modules/process/calibrate.c:296
 #: modules/process/col_synth.c:299 modules/process/curvature.c:602
@@ -823,16 +823,17 @@
 #: modules/process/grain_edge.c:217 modules/process/grain_mark.c:262
 #: modules/process/grain_rem_threshold.c:224 modules/process/grain_wshed.c:182
 #: modules/process/hough.c:175 modules/process/latsim.c:158
-#: modules/process/level.c:253 modules/process/lno_synth.c:436
-#: modules/process/local_contrast.c:126 modules/process/median-bg.c:176
-#: modules/process/neural.c:208 modules/process/noise_synth.c:347
-#: modules/process/obj_synth.c:432 modules/process/pat_synth.c:402
-#: modules/process/pid.c:196 modules/process/polydistort.c:219
-#: modules/process/polylevel.c:376 modules/process/rotate.c:264
-#: modules/process/scale.c:193 modules/process/scars.c:469
-#: modules/process/shade.c:214 modules/process/slope_dist.c:201
-#: modules/process/sphere-revolve.c:215 modules/process/tilt.c:156
-#: modules/process/tip_model.c:170 modules/process/unrotate.c:226
+#: modules/process/level.c:255 modules/process/linecorrect.c:274
+#: modules/process/lno_synth.c:436 modules/process/local_contrast.c:126
+#: modules/process/median-bg.c:176 modules/process/neural.c:203
+#: modules/process/noise_synth.c:347 modules/process/obj_synth.c:432
+#: modules/process/pat_synth.c:402 modules/process/pid.c:196
+#: modules/process/polydistort.c:219 modules/process/polylevel.c:376
+#: modules/process/rotate.c:264 modules/process/scale.c:193
+#: modules/process/scars.c:469 modules/process/shade.c:214
+#: modules/process/slope_dist.c:201 modules/process/sphere-revolve.c:215
+#: modules/process/tilt.c:156 modules/process/tip_model.c:170
+#: modules/process/unrotate.c:226
 msgid "_Reset"
 msgstr ""
 
@@ -1155,7 +1156,7 @@
 msgstr ""
 
 #: libgwymodule/gwymodule-file.c:535 modules/file/err.h:40
-#: modules/file/pixmap.c:746
+#: modules/file/pixmap.c:752
 #, c-format
 msgid "Cannot open file for reading: %s."
 msgstr "No puedo abrir archivo para lectura: %s."
@@ -1593,51 +1594,51 @@
 msgid "Cannot preview"
 msgstr ""
 
-#: app/gwyddion.c:132
+#: app/gwyddion.c:133
 msgid "Loading document history"
 msgstr ""
 
-#: app/gwyddion.c:137
+#: app/gwyddion.c:138
 msgid "Registering "
 msgstr ""
 
-#: app/gwyddion.c:138
+#: app/gwyddion.c:139
 msgid "stock items"
 msgstr ""
 
-#: app/gwyddion.c:142
+#: app/gwyddion.c:143
 msgid "color gradients"
 msgstr ""
 
-#: app/gwyddion.c:144
+#: app/gwyddion.c:145
 msgid "GL materials"
 msgstr ""
 
-#: app/gwyddion.c:146
+#: app/gwyddion.c:147
 msgid "grain quantities"
 msgstr ""
 
-#: app/gwyddion.c:148
+#: app/gwyddion.c:149
 msgid "calibrations"
 msgstr ""
 
-#: app/gwyddion.c:153
+#: app/gwyddion.c:154
 msgid "Loading settings"
 msgstr ""
 
-#: app/gwyddion.c:160
+#: app/gwyddion.c:161
 msgid "Registering modules"
 msgstr ""
 
-#: app/gwyddion.c:182
+#: app/gwyddion.c:183
 msgid "Initializing GUI"
 msgstr ""
 
-#: app/gwyddion.c:391
+#: app/gwyddion.c:392
 msgid "Could not read settings."
 msgstr ""
 
-#: app/gwyddion.c:394
+#: app/gwyddion.c:395
 #, c-format
 msgid ""
 "Settings file `%s' cannot be read: %s\n"
@@ -2558,12 +2559,12 @@
 msgid "Export Text"
 msgstr ""
 
-#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3092
+#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3127
 #: modules/file/rawfile.c:720 modules/file/rawxyz.c:670
 #: modules/process/fft_filter_1d.c:296 modules/process/grain_dist.c:285
 #: modules/process/grain_edge.c:270 modules/process/grain_mark.c:344
 #: modules/process/grain_rem_threshold.c:324 modules/process/grain_wshed.c:278
-#: modules/tools/spotremove.c:319 modules/tools/stats.c:375
+#: modules/tools/spotremove.c:319 modules/tools/stats.c:378
 msgid "Options"
 msgstr ""
 
@@ -2643,7 +2644,7 @@
 msgstr ""
 
 #: modules/file/burleigh_exp.c:225 modules/file/burleigh_exp.c:266
-#: modules/file/nanoscope.c:1098 modules/file/omicron.c:395
+#: modules/file/nanoscope.c:1128 modules/file/omicron.c:397
 #: modules/file/shimadzu.c:404
 msgid "Missing colon in header line."
 msgstr ""
@@ -3073,11 +3074,11 @@
 msgid "Representable"
 msgstr ""
 
-#: modules/file/hdrimage.cc:478 modules/tools/stats.c:322
+#: modules/file/hdrimage.cc:478 modules/tools/stats.c:324
 msgid "Minimum:"
 msgstr ""
 
-#: modules/file/hdrimage.cc:494 modules/tools/stats.c:323
+#: modules/file/hdrimage.cc:494 modules/tools/stats.c:325
 msgid "Maximum:"
 msgstr ""
 
@@ -3096,41 +3097,41 @@
 msgstr ""
 
 #: modules/file/hdrimage.cc:1404 modules/file/hdrimage.cc:1413
-#: modules/file/pixmap.c:1531 modules/file/pixmap.c:1541
+#: modules/file/pixmap.c:1537 modules/file/pixmap.c:1547
 #, c-format
 msgid "libpng initialization error (in %s)"
 msgstr ""
 
-#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1601
+#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1607
 msgid "libpng error occured"
 msgstr ""
 
 #. TRANSLATORS: Dialog title; %s is PNG, TIFF, ...
-#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1027
+#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1033
 #, c-format
 msgid "Import %s"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1054
+#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1060
 msgid "Image Information"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1061
+#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1067
 #, fuzzy
 msgid "Horizontal size:"
 msgstr "Horizontal"
 
 #: modules/file/hdrimage.cc:2182 modules/file/hdrimage.cc:2188
-#: modules/file/pixmap.c:1061 modules/file/pixmap.c:1067
+#: modules/file/pixmap.c:1067 modules/file/pixmap.c:1073
 msgid "px"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1067
+#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1073
 #, fuzzy
 msgid "Vertical size:"
 msgstr "Vertical"
 
-#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1072
+#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1078
 msgid "Channels:"
 msgstr ""
 
@@ -3138,21 +3139,21 @@
 msgid "Pages:"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1103
+#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1109
 #: modules/file/rawfile.c:623 modules/file/rawxyz.c:569
 #: modules/process/dimensions.h:465
 msgid "Physical Dimensions"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1113
-#: modules/file/pixmap.c:3035 modules/file/rawfile.c:632
+#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1119
+#: modules/file/pixmap.c:3070 modules/file/rawfile.c:632
 #: modules/process/crosscor.c:197 modules/process/deposit_synth.c:458
 #: modules/process/dimensions.h:471 modules/process/tip_blind.c:265
 msgid "_Width:"
 msgstr ""
 
 #: modules/file/hdrimage.cc:2266 modules/file/hdrimage.cc:2331
-#: modules/file/pixmap.c:1135 modules/file/pixmap.c:1190
+#: modules/file/pixmap.c:1141 modules/file/pixmap.c:1196
 #: modules/file/rawfile.c:655 modules/file/rawfile.c:711
 #: modules/process/calcoefs_new.c:384 modules/process/calcoefs_new.c:451
 #: modules/process/calcoefs_simple.c:390 modules/process/calcoefs_simple.c:457
@@ -3162,30 +3163,30 @@
 msgid "verb|Change"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1148
+#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1154
 #: modules/file/rawfile.c:668 modules/process/crosscor.c:203
 #: modules/process/dimensions.h:475
 msgid "H_eight:"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1155
+#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1161
 #: modules/file/rawfile.c:675 modules/file/rawxyz.c:550
 msgid "Identical _measures"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1167
+#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1173
 #: modules/file/rawfile.c:687
 msgid "_Z-scale (per sample unit):"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1417
+#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1423
 #: modules/file/rawfile.c:1326 modules/process/calcoefs_new.c:776
 #: modules/process/calcoefs_simple.c:1189 modules/process/calcoefs_view.c:1393
 #: modules/process/calibrate.c:816 modules/process/dimensions.h:193
 msgid "Change Units"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1431
+#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1437
 #: modules/file/rawfile.c:1340 modules/process/calcoefs_new.c:789
 #: modules/process/calcoefs_simple.c:1202 modules/process/calcoefs_view.c:1406
 #: modules/process/calibrate.c:830 modules/process/dimensions.h:206
@@ -3615,7 +3616,7 @@
 msgid "Nanonis SXM files (.sxm)"
 msgstr ""
 
-#: modules/file/nanonis.c:163 modules/file/omicron.c:499
+#: modules/file/nanonis.c:163 modules/file/omicron.c:501
 #: modules/file/unisoku.c:265
 msgid "File header ended unexpectedly."
 msgstr ""
@@ -3658,35 +3659,35 @@
 msgid "File Scan/Measure.xml is missing in the zip file."
 msgstr ""
 
-#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:484
+#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:488
 msgid "Unknown error"
 msgstr ""
 
-#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:489
+#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:493
 msgid "End of file"
 msgstr ""
 
-#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:491
+#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:495
 msgid "End of list of files"
 msgstr ""
 
-#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:493
+#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:497
 msgid "Parameter error"
 msgstr ""
 
-#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:495
+#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:499
 msgid "Bad zip file"
 msgstr ""
 
-#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:497
+#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:501
 msgid "Internal error"
 msgstr ""
 
-#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:499
+#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:503
 msgid "CRC error"
 msgstr ""
 
-#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:502
+#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:506
 #, c-format
 msgid "Minizip error while reading the zip file: %s."
 msgstr ""
@@ -3734,11 +3735,11 @@
 msgid "Nanoscope III files"
 msgstr ""
 
-#: modules/file/nanoscope.c:243
+#: modules/file/nanoscope.c:244
 msgid "File is not a Nanoscope file, or it is a unknown subtype."
 msgstr ""
 
-#: modules/file/nanoscope.c:250
+#: modules/file/nanoscope.c:251
 msgid ""
 "File has been damaged by change of line endings, resulting in corruption of "
 "the binary part of the file.\n"
@@ -3749,16 +3750,16 @@
 "transfer that attempts to store text platform-independently."
 msgstr ""
 
-#: modules/file/nanoscope.c:521 modules/file/nanoscope.c:537
+#: modules/file/nanoscope.c:525 modules/file/nanoscope.c:541
 msgid "Cannot parse `Scan size' field."
 msgstr ""
 
-#: modules/file/nanoscope.c:1007 modules/file/nrrdfile.c:1013
+#: modules/file/nanoscope.c:1037 modules/file/nrrdfile.c:1013
 #, c-format
 msgid "Garbage after data sample #%u."
 msgstr ""
 
-#: modules/file/nanoscope.c:1088
+#: modules/file/nanoscope.c:1118
 msgid "Truncated header line."
 msgstr ""
 
@@ -3879,39 +3880,53 @@
 msgid "Per-axis header field %s contains too few items."
 msgstr ""
 
-#: modules/file/nt-mdt.c:658
+#: modules/file/nt-mdt.c:694
 msgid "Imports NT-MDT data files."
 msgstr ""
 
-#: modules/file/nt-mdt.c:671
+#: modules/file/nt-mdt.c:707
 msgid "NT-MDT files (.mdt)"
 msgstr ""
 
-#: modules/file/nt-mdt.c:1096
+#: modules/file/nt-mdt.c:1156
 msgid "Frame is too short for Frame Mode."
 msgstr ""
 
-#: modules/file/nt-mdt.c:1110
+#: modules/file/nt-mdt.c:1170
 msgid "Frame is too short for dots or data."
 msgstr ""
 
-#: modules/file/nt-mdt.c:1369
+#: modules/file/nt-mdt.c:1429
 #, c-format
 msgid "End of file reached in frame header #%u."
 msgstr ""
 
-#: modules/file/nt-mdt.c:1377
+#: modules/file/nt-mdt.c:1437
 #, c-format
 msgid "End of file reached in frame data #%u."
 msgstr ""
 
-#: modules/file/nt-mdt.c:1412
+#: modules/file/nt-mdt.c:1472
 #, c-format
 msgid "Frame #%u is too short for scanned data header."
 msgstr ""
 
-#: modules/file/nt-mdt.c:2464
-msgid "Raman Image"
+#: modules/file/nt-mdt.c:2794 modules/tools/filter.c:209
+#: modules/tools/icolorange.c:396 modules/tools/linestats.c:154
+msgid "Maximum"
+msgstr ""
+
+#: modules/file/nt-mdt.c:2795
+#, fuzzy
+msgid "Max. position"
+msgstr "Centro posición x"
+
+#: modules/file/nt-mdt.c:2796
+msgid "Average"
+msgstr ""
+
+#: modules/file/nt-mdt.c:2809
+msgid "Raman Image Import"
 msgstr ""
 
 #: modules/file/oldmda.c:146
@@ -3951,11 +3966,11 @@
 msgid "Omicron files (.par + data)"
 msgstr ""
 
-#: modules/file/omicron.c:401
+#: modules/file/omicron.c:403
 msgid "Header line starts with a colon."
 msgstr ""
 
-#: modules/file/omicron.c:508
+#: modules/file/omicron.c:510
 msgid "Channel information ended unexpectedly."
 msgstr ""
 
@@ -4009,152 +4024,152 @@
 msgid "Truncated data in block %s"
 msgstr ""
 
-#: modules/file/pixmap.c:350
+#: modules/file/pixmap.c:356
 msgid "All channels"
 msgstr ""
 
-#: modules/file/pixmap.c:351
+#: modules/file/pixmap.c:357
 msgid "Red"
 msgstr ""
 
-#: modules/file/pixmap.c:352
+#: modules/file/pixmap.c:358
 msgid "Green"
 msgstr ""
 
-#: modules/file/pixmap.c:353
+#: modules/file/pixmap.c:359
 msgid "Blue"
 msgstr ""
 
-#: modules/file/pixmap.c:354
+#: modules/file/pixmap.c:360
 msgid "Value (max)"
 msgstr ""
 
-#: modules/file/pixmap.c:355
+#: modules/file/pixmap.c:361
 msgid "RGB sum"
 msgstr ""
 
-#: modules/file/pixmap.c:356
+#: modules/file/pixmap.c:362
 msgid "Luma"
 msgstr ""
 
-#: modules/file/pixmap.c:357
+#: modules/file/pixmap.c:363
 msgid "Alpha"
 msgstr ""
 
-#: modules/file/pixmap.c:369
+#: modules/file/pixmap.c:375
 msgid "Portable Network Graphics (.png)"
 msgstr ""
 
-#: modules/file/pixmap.c:375
+#: modules/file/pixmap.c:381
 msgid "JPEG (.jpeg,.jpg)"
 msgstr ""
 
-#: modules/file/pixmap.c:381
+#: modules/file/pixmap.c:387
 msgid "TIFF (.tiff,.tif)"
 msgstr ""
 
-#: modules/file/pixmap.c:387
+#: modules/file/pixmap.c:393
 msgid "Portable Pixmap (.ppm,.pnm)"
 msgstr ""
 
-#: modules/file/pixmap.c:393
+#: modules/file/pixmap.c:399
 msgid "Windows or OS2 Bitmap (.bmp)"
 msgstr ""
 
-#: modules/file/pixmap.c:399
+#: modules/file/pixmap.c:405
 msgid "TARGA (.tga,.targa)"
 msgstr ""
 
-#: modules/file/pixmap.c:412
+#: modules/file/pixmap.c:418
 msgid "Graphics Interchange Format (.gif)"
 msgstr ""
 
-#: modules/file/pixmap.c:416
+#: modules/file/pixmap.c:422
 msgid "JPEG 2000 (.jpx)"
 msgstr ""
 
-#: modules/file/pixmap.c:420
+#: modules/file/pixmap.c:426
 msgid "PCX (.pcx)"
 msgstr ""
 
-#: modules/file/pixmap.c:424
+#: modules/file/pixmap.c:430
 msgid "X Pixmap (.xpm)"
 msgstr ""
 
-#: modules/file/pixmap.c:428
+#: modules/file/pixmap.c:434
 msgid "Sun raster image (.ras)"
 msgstr ""
 
-#: modules/file/pixmap.c:432
+#: modules/file/pixmap.c:438
 msgid "Apple icon (.icns)"
 msgstr ""
 
-#: modules/file/pixmap.c:456
+#: modules/file/pixmap.c:462
 msgid ""
 "Renders data into pixmap images and imports data from pixmap images. It "
 "supports the following image formats for export: PNG, JPEG, TIFF, PPM, BMP, "
 "TARGA. Import support relies on GDK and thus may be installation-dependent."
 msgstr ""
 
-#: modules/file/pixmap.c:740
+#: modules/file/pixmap.c:746
 #, c-format
 msgid "Pixmap has not registered file type `%s'."
 msgstr ""
 
-#: modules/file/pixmap.c:754
+#: modules/file/pixmap.c:760
 #, c-format
 msgid "Cannot get pixbuf loader: %s."
 msgstr ""
 
-#: modules/file/pixmap.c:766 modules/file/pixmap.c:778
+#: modules/file/pixmap.c:772 modules/file/pixmap.c:784
 #, c-format
 msgid "Pixbuf loader refused data: %s."
 msgstr ""
 
-#: modules/file/pixmap.c:1200
+#: modules/file/pixmap.c:1206
 msgid ""
 "Warning: Colorful images cannot be reliably mapped to meaningful values."
 msgstr ""
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "verb|Use"
 msgstr ""
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "as data"
 msgstr ""
 
-#: modules/file/pixmap.c:1688 modules/file/pixmap.c:1716
+#: modules/file/pixmap.c:1694 modules/file/pixmap.c:1722
 #, c-format
 msgid "Pixbuf save failed: %s."
 msgstr ""
 
-#: modules/file/pixmap.c:2126
+#: modules/file/pixmap.c:2132
 msgid "Image is too large to be stored as TARGA."
 msgstr ""
 
-#: modules/file/pixmap.c:2207
+#: modules/file/pixmap.c:2213
 msgid "Data must be displayed in a window for pixmap export."
 msgstr ""
 
-#: modules/file/pixmap.c:2927
+#: modules/file/pixmap.c:2936
 msgid "Change Inset Color"
 msgstr ""
 
-#: modules/file/pixmap.c:2986
+#: modules/file/pixmap.c:3021
 #, c-format
 msgid "Export %s"
 msgstr ""
 
-#: modules/file/pixmap.c:3017
+#: modules/file/pixmap.c:3052
 msgid "Scaling"
 msgstr ""
 
-#: modules/file/pixmap.c:3026
+#: modules/file/pixmap.c:3061
 msgid "_Zoom:"
 msgstr ""
 
-#: modules/file/pixmap.c:3044 modules/process/col_synth.c:400
+#: modules/file/pixmap.c:3079 modules/process/col_synth.c:400
 #: modules/process/grain_mark.c:309 modules/process/grain_rem_threshold.c:280
 #: modules/process/obj_synth.c:573 modules/process/pat_synth.c:889
 #: modules/process/pat_synth.c:1190 modules/process/pat_synth.c:1525
@@ -4162,91 +4177,99 @@
 msgid "_Height:"
 msgstr ""
 
-#: modules/file/pixmap.c:3052
+#: modules/file/pixmap.c:3087
 msgid "Font:"
 msgstr ""
 
-#: modules/file/pixmap.c:3067
+#: modules/file/pixmap.c:3102
 msgid "Scale text _proportionally"
 msgstr ""
 
-#: modules/file/pixmap.c:3082
+#: modules/file/pixmap.c:3117
 msgid "_Font size:"
 msgstr ""
 
-#: modules/file/pixmap.c:3096
+#: modules/file/pixmap.c:3131
 msgid "Draw _mask"
 msgstr ""
 
-#: modules/file/pixmap.c:3105
+#: modules/file/pixmap.c:3140
 msgid "Draw _selection"
 msgstr ""
 
-#: modules/file/pixmap.c:3121
+#: modules/file/pixmap.c:3156
 msgid "Grayscale Mode"
 msgstr ""
 
-#: modules/file/pixmap.c:3125
+#: modules/file/pixmap.c:3160
 msgid "Export as 1_6 bit grayscale"
 msgstr ""
 
-#: modules/file/pixmap.c:3151
+#: modules/file/pixmap.c:3186
 msgid "Lateral Scale"
 msgstr ""
 
-#: modules/file/pixmap.c:3158 modules/file/pixmap.c:3253
+#: modules/file/pixmap.c:3193 modules/file/pixmap.c:3308
 msgid "ruler|_None"
 msgstr ""
 
-#: modules/file/pixmap.c:3159
+#: modules/file/pixmap.c:3194
 msgid "_Rulers"
 msgstr ""
 
-#: modules/file/pixmap.c:3160
+#: modules/file/pixmap.c:3195
 msgid "_Inset scale bar"
 msgstr ""
 
-#: modules/file/pixmap.c:3165
+#: modules/file/pixmap.c:3200
 msgid "Color:"
 msgstr ""
 
-#: modules/file/pixmap.c:3181 modules/process/immerse.c:323
+#: modules/file/pixmap.c:3216 modules/process/immerse.c:323
 msgid "Position:"
 msgstr ""
 
-#: modules/file/pixmap.c:3186
+#: modules/file/pixmap.c:3221
 msgid "left"
 msgstr ""
 
-#: modules/file/pixmap.c:3190
+#: modules/file/pixmap.c:3225
 msgid "center"
 msgstr ""
 
-#: modules/file/pixmap.c:3194
+#: modules/file/pixmap.c:3229
 msgid "right"
 msgstr ""
 
-#: modules/file/pixmap.c:3199
+#: modules/file/pixmap.c:3234
 msgid "top"
 msgstr ""
 
-#: modules/file/pixmap.c:3211
+#: modules/file/pixmap.c:3246
 msgid "bottom"
 msgstr ""
 
-#: modules/file/pixmap.c:3222 modules/process/lno_synth.c:1066
+#: modules/file/pixmap.c:3257 modules/process/lno_synth.c:1066
 msgid "_Length:"
 msgstr ""
 
-#: modules/file/pixmap.c:3238
+#: modules/file/pixmap.c:3273
 msgid "_Auto"
 msgstr ""
 
-#: modules/file/pixmap.c:3246
+#: modules/file/pixmap.c:3281
+msgid "Draw _ticks"
+msgstr ""
+
+#: modules/file/pixmap.c:3291
+msgid "Draw _label"
+msgstr ""
+
+#: modules/file/pixmap.c:3301
 msgid "Value Scale"
 msgstr ""
 
-#: modules/file/pixmap.c:3254
+#: modules/file/pixmap.c:3309
 msgid "_False color ruler"
 msgstr ""
 
@@ -4420,7 +4443,7 @@
 #: modules/process/mark_with.c:211 modules/process/polydistort.c:214
 #: modules/process/scars.c:466 modules/process/synth.h:479
 #: modules/process/tip_model.c:167 modules/tools/linestats.c:420
-#: modules/tools/sfunctions.c:475 modules/tools/stats.c:432
+#: modules/tools/sfunctions.c:475 modules/tools/stats.c:435
 msgid "_Update"
 msgstr ""
 
@@ -4920,7 +4943,7 @@
 msgid "Seiko files (.xqb, .xqd, .xqt)"
 msgstr ""
 
-#: modules/file/seiko.c:239
+#: modules/file/seiko.c:251
 msgid ""
 "Cannot determine scan dimensions; it seems non-square with an unknown side "
 "ratio."
@@ -5148,11 +5171,11 @@
 msgid "Surf files (.sur)"
 msgstr ""
 
-#: modules/file/tiaser.c:166
+#: modules/file/tiaser.c:172
 msgid "Imports FEI Tecnai imaging and analysis (former Emispec) files."
 msgstr ""
 
-#: modules/file/tiaser.c:179
+#: modules/file/tiaser.c:185
 msgid "FEI TIA (Emispec) data"
 msgstr ""
 
@@ -5332,10 +5355,10 @@
 #: modules/graph/graph_cd.c:692 modules/graph/graph_fdfit.c:780
 #: modules/graph/graph_fit.c:804 modules/tools/grainmeasure.c:215
 #: modules/tools/readvalue.c:576 modules/tools/readvalue.c:577
-#: modules/tools/roughness.c:957 modules/tools/stats.c:661
-#: modules/tools/stats.c:672 modules/tools/stats.c:673
-#: modules/tools/stats.c:1050 modules/tools/stats.c:1057
-#: modules/tools/stats.c:1059
+#: modules/tools/roughness.c:957 modules/tools/stats.c:666
+#: modules/tools/stats.c:677 modules/tools/stats.c:678
+#: modules/tools/stats.c:1054 modules/tools/stats.c:1061
+#: modules/tools/stats.c:1063
 msgid "N.A."
 msgstr ""
 
@@ -5766,7 +5789,7 @@
 msgid "_Expression:"
 msgstr ""
 
-#: modules/process/arithmetic.c:294
+#: modules/process/arithmetic.c:294 modules/process/neural.c:220
 msgid "Operands"
 msgstr ""
 
@@ -6043,7 +6066,7 @@
 msgstr ""
 
 #: modules/process/calcoefs_simple.c:342 modules/process/calcoefs_stage.c:149
-#: modules/process/neural.c:225 modules/process/superresolution.c:159
+#: modules/process/superresolution.c:159
 msgid "Operands:"
 msgstr ""
 
@@ -6607,20 +6630,21 @@
 msgstr "_Presenta gráfico"
 
 #: modules/process/curvature.c:684 modules/process/facet-level.c:297
-#: modules/process/level.c:267 modules/process/polylevel.c:495
-#: modules/tools/sfunctions.c:457 modules/tools/stats.c:362
+#: modules/process/level.c:269 modules/process/linecorrect.c:288
+#: modules/process/polylevel.c:495 modules/tools/sfunctions.c:457
+#: modules/tools/stats.c:365
 msgid "Masking Mode"
 msgstr ""
 
-#: modules/process/curvature.c:754 modules/process/grain_dist.c:827
+#: modules/process/curvature.c:754 modules/process/grain_dist.c:835
 #: modules/tools/distance.c:227 modules/tools/roughness.c:824
-#: modules/tools/stats.c:423
+#: modules/tools/stats.c:426
 msgid "Save table to a file"
 msgstr "Guardar tabla a un archivo"
 
-#: modules/process/curvature.c:759 modules/process/grain_dist.c:832
+#: modules/process/curvature.c:759 modules/process/grain_dist.c:840
 #: modules/tools/distance.c:232 modules/tools/roughness.c:829
-#: modules/tools/stats.c:428
+#: modules/tools/stats.c:431
 msgid "Copy table to clipboard"
 msgstr ""
 
@@ -7716,42 +7740,46 @@
 msgid "Data channel:"
 msgstr ""
 
-#: modules/process/grain_dist.c:734 modules/process/grain_dist.c:806
+#: modules/process/grain_dist.c:736 modules/process/grain_dist.c:814
 msgid "Grain Statistics"
 msgstr ""
 
-#: modules/process/grain_dist.c:746
+#: modules/process/grain_dist.c:748
 msgid "Number of grains:"
 msgstr ""
 
-#: modules/process/grain_dist.c:755
+#: modules/process/grain_dist.c:757
 msgid "Total projected area (abs.):"
 msgstr ""
 
-#: modules/process/grain_dist.c:759
+#: modules/process/grain_dist.c:761
 msgid "Total projected area (rel.):"
 msgstr ""
 
-#: modules/process/grain_dist.c:765
+#: modules/process/grain_dist.c:767
 msgid "Mean grain area:"
 msgstr ""
 
-#: modules/process/grain_dist.c:771
+#: modules/process/grain_dist.c:773
 msgid "Mean grain size:"
 msgstr ""
 
-#: modules/process/grain_dist.c:780
+#: modules/process/grain_dist.c:782
 msgid "Total grain volume (zero):"
 msgstr ""
 
-#: modules/process/grain_dist.c:786
+#: modules/process/grain_dist.c:788
 msgid "Total grain volume (minimum):"
 msgstr ""
 
-#: modules/process/grain_dist.c:792
+#: modules/process/grain_dist.c:794
 msgid "Total grain volume (laplacian):"
 msgstr ""
 
+#: modules/process/grain_dist.c:800
+msgid "Total projected boundary length:"
+msgstr ""
+
 #: modules/process/grain_edge.c:106
 msgid "Marks grains by edge detection method."
 msgstr ""
@@ -8405,50 +8433,54 @@
 msgid "E_xtract background"
 msgstr ""
 
-#: modules/process/linecorrect.c:64
+#: modules/process/linecorrect.c:88
 msgid "Corrects line defects (mostly experimental algorithms)."
 msgstr ""
 
-#: modules/process/linecorrect.c:78
+#: modules/process/linecorrect.c:102
 msgid "/_Correct Data/M_odus Line Correction"
 msgstr ""
 
-#: modules/process/linecorrect.c:82
+#: modules/process/linecorrect.c:106
 msgid "Correct lines by matching height modus"
 msgstr ""
 
-#: modules/process/linecorrect.c:85
+#: modules/process/linecorrect.c:109
 msgid "/_Correct Data/M_edian Line Correction"
 msgstr ""
 
-#: modules/process/linecorrect.c:89
+#: modules/process/linecorrect.c:113
 msgid "Correct lines by matching height median"
 msgstr ""
 
-#: modules/process/linecorrect.c:92
+#: modules/process/linecorrect.c:116
 msgid "/_Correct Data/Median Di_fference Line Correction"
 msgstr ""
 
-#: modules/process/linecorrect.c:96
+#: modules/process/linecorrect.c:120
 msgid "Correct lines by zeroing median of differences between neighbor lines"
 msgstr ""
 
-#: modules/process/linecorrect.c:100
+#: modules/process/linecorrect.c:124
 msgid "/_Correct Data/Ma_tch Line Correction"
 msgstr ""
 
-#: modules/process/linecorrect.c:104
+#: modules/process/linecorrect.c:128
 msgid "Correct lines by matching flat segments"
 msgstr ""
 
-#: modules/process/linecorrect.c:107
+#: modules/process/linecorrect.c:131
 msgid "/_Correct Data/Ste_p Line Correction"
 msgstr ""
 
-#: modules/process/linecorrect.c:111
+#: modules/process/linecorrect.c:135
 msgid "Correct steps in lines"
 msgstr ""
 
+#: modules/process/linecorrect.c:198
+msgid "Median Line Correction"
+msgstr ""
+
 #: modules/process/lno_synth.c:249 modules/process/noise_synth.c:183
 msgid "distribution|Gaussian"
 msgstr ""
@@ -8864,76 +8896,91 @@
 msgid "Immersed detail data"
 msgstr ""
 
-#: modules/process/neural.c:147
+#: modules/process/neural.c:144
 msgid "Neural network SPM data processing"
 msgstr ""
 
-#: modules/process/neural.c:161
+#: modules/process/neural.c:158
 #, fuzzy
-msgid "/M_ultidata/_Neural network..."
+msgid "/M_ultidata/_Neural Network..."
 msgstr "/M_ultidatos/_Fusionar..."
 
-#: modules/process/neural.c:165
+#: modules/process/neural.c:162
 msgid "Neural network AFM data processing"
 msgstr ""
 
-#: modules/process/neural.c:207
-msgid "Neural network"
+#: modules/process/neural.c:202
+msgid "Neural Network"
 msgstr ""
 
-#: modules/process/neural.c:233
-msgid "Training model:"
-msgstr ""
+#: modules/process/neural.c:227
+#, fuzzy
+msgid "Training _model:"
+msgstr "Arrastrando basura"
 
-#: modules/process/neural.c:240
+#: modules/process/neural.c:233
 #, fuzzy
-msgid "Training signal:"
+msgid "Training _signal:"
 msgstr "Arrastrando basura"
 
-#: modules/process/neural.c:247
-msgid "Result model:"
+#: modules/process/neural.c:239
+msgid "Res_ult model:"
 msgstr ""
 
-#: modules/process/neural.c:254
+#: modules/process/neural.c:244 modules/tools/stats.c:401
+msgid "Parameters"
+msgstr ""
+
+#: modules/process/neural.c:250
 #, fuzzy
-msgid "Window width:"
+msgid "Window _width:"
 msgstr "Nueva _anchura:"
 
-#: modules/process/neural.c:260
+#: modules/process/neural.c:256
 #, fuzzy
-msgid "Window height:"
+msgid "Window h_eight:"
 msgstr "Nueva _altura"
 
-#: modules/process/neural.c:266
-msgid "Training steps:"
-msgstr ""
+#: modules/process/neural.c:262
+#, fuzzy
+msgid "_Training steps:"
+msgstr "Arrastrando basura"
 
-#: modules/process/neural.c:272
-msgid "Hidden nodes:"
+#: modules/process/neural.c:268
+msgid "_Hidden nodes:"
 msgstr ""
 
-#: modules/process/neural.c:364
+#: modules/process/neural.c:360
 msgid "Data not compatible"
 msgstr ""
 
-#: modules/process/neural.c:389 modules/process/pid.c:334
+#: modules/process/neural.c:388 modules/process/pid.c:334
 msgid "Starting..."
 msgstr ""
 
-#: modules/process/neural.c:491
+#: modules/process/neural.c:409
+#, fuzzy
+msgid "Training..."
+msgstr "Arrastrando basura"
+
+#: modules/process/neural.c:451
+msgid "Evaluating..."
+msgstr ""
+
+#: modules/process/neural.c:493
 msgid "Evaluated signal"
 msgstr ""
 
-#: modules/process/neural.c:497
+#: modules/process/neural.c:499
 #, fuzzy
 msgid "Training error"
 msgstr "Arrastrando basura"
 
-#: modules/process/neural.c:498
+#: modules/process/neural.c:500
 msgid "error"
 msgstr ""
 
-#: modules/process/neural.c:504
+#: modules/process/neural.c:506
 msgid "NN training error"
 msgstr ""
 
@@ -8994,7 +9041,7 @@
 msgstr ""
 
 #: modules/process/obj_synth.c:284
-msgid "Dougnuts"
+msgid "Doughnuts"
 msgstr ""
 
 #: modules/process/obj_synth.c:290
@@ -9907,59 +9954,59 @@
 msgid "Denoised"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:53
+#: modules/pygwy/pygwy-console.c:54
 msgid "/Pygwy Console"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:57
+#: modules/pygwy/pygwy-console.c:58
 msgid "Python wrapper console"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:155
+#: modules/pygwy/pygwy-console.c:156
 msgid ">>> Running file content of below textfield\n"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:180
+#: modules/pygwy/pygwy-console.c:181
 msgid "Open Python script"
 msgstr "Abrir secuencia de comandos Python"
 
-#: modules/pygwy/pygwy-console.c:244
+#: modules/pygwy/pygwy-console.c:245
 msgid "Save Script as"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:283
+#: modules/pygwy/pygwy-console.c:284
 msgid "Pygwy Console"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:295
+#: modules/pygwy/pygwy-console.c:296
 msgid "Open script in Python language (Ctrl-O)"
 msgstr "Abrir secuencia de comandos en el lenguaje Python (Ctrl-O)"
 
-#: modules/pygwy/pygwy-console.c:297
+#: modules/pygwy/pygwy-console.c:298
 msgid "Save script (Ctrl-S)"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:299
+#: modules/pygwy/pygwy-console.c:300
 msgid "Execute script (Ctrl-E)"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:377
+#: modules/pygwy/pygwy-console.c:378
 msgid "Command"
 msgstr ""
 
-#: pygwy.c:91
+#: pygwy.c:99
 msgid "Pygwy, the Gwyddion Python wrapper."
 msgstr ""
 
-#: pygwy.c:443
+#: pygwy.c:520
 msgid "Function written in Python"
 msgstr ""
 
-#: pygwy.c:489
+#: pygwy.c:566
 msgid "Graph function written in Python"
 msgstr "Función gráfica escrita en Python"
 
-#: pygwy.c:899
+#: pygwy.c:976
 #, c-format
 msgid ""
 "Pygwy plugin: %s (%s)\n"
@@ -10012,11 +10059,6 @@
 msgid "Conservative denoise"
 msgstr ""
 
-#: modules/tools/filter.c:209 modules/tools/icolorange.c:396
-#: modules/tools/linestats.c:154
-msgid "Maximum"
-msgstr ""
-
 #: modules/tools/filter.c:210
 msgid "Kuwahara"
 msgstr ""
@@ -10240,7 +10282,7 @@
 msgstr ""
 
 #: modules/tools/linestats.c:362 modules/tools/sfunctions.c:392
-#: modules/tools/stats.c:381
+#: modules/tools/stats.c:384
 msgid "_Instant updates"
 msgstr ""
 
@@ -10676,12 +10718,12 @@
 msgid "Roughness Parameters"
 msgstr ""
 
-#: modules/tools/roughness.c:2041 modules/tools/stats.c:999
+#: modules/tools/roughness.c:2041 modules/tools/stats.c:1002
 #, c-format
 msgid "File:              %s\n"
 msgstr ""
 
-#: modules/tools/roughness.c:2045 modules/tools/stats.c:1003
+#: modules/tools/roughness.c:2045 modules/tools/stats.c:1006
 #, c-format
 msgid "Data channel:      %s\n"
 msgstr ""
@@ -10846,76 +10888,76 @@
 msgid "Fractal interpolation"
 msgstr ""
 
-#: modules/tools/stats.c:180
+#: modules/tools/stats.c:182
 msgid "Statistics tool."
 msgstr ""
 
-#: modules/tools/stats.c:217 modules/tools/stats.c:993
+#: modules/tools/stats.c:219 modules/tools/stats.c:996
 msgid "Statistical Quantities"
 msgstr ""
 
-#: modules/tools/stats.c:218
+#: modules/tools/stats.c:220
 msgid "Statistical quantities"
 msgstr ""
 
-#: modules/tools/stats.c:321
+#: modules/tools/stats.c:323
 msgid "Average value:"
 msgstr ""
 
-#: modules/tools/stats.c:324
+#: modules/tools/stats.c:326
 msgid "Median:"
 msgstr ""
 
-#: modules/tools/stats.c:325
+#: modules/tools/stats.c:327
 msgid "Ra (Sa):"
 msgstr ""
 
-#: modules/tools/stats.c:326
+#: modules/tools/stats.c:328
 msgid "Rms (Sq):"
 msgstr ""
 
-#: modules/tools/stats.c:327
+#: modules/tools/stats.c:329
+msgid "Rms (grain-wise):"
+msgstr ""
+
+#: modules/tools/stats.c:330
 msgid "Skew:"
 msgstr ""
 
-#: modules/tools/stats.c:328
+#: modules/tools/stats.c:331
 msgid "Kurtosis:"
 msgstr ""
 
-#: modules/tools/stats.c:329
+#: modules/tools/stats.c:332
 msgid "Surface area:"
 msgstr ""
 
-#: modules/tools/stats.c:330
+#: modules/tools/stats.c:333
 msgid "Projected area:"
 msgstr ""
 
-#: modules/tools/stats.c:331
+#: modules/tools/stats.c:334
 msgid "Inclination θ:"
 msgstr ""
 
-#: modules/tools/stats.c:332
+#: modules/tools/stats.c:335
 msgid "Inclination φ:"
 msgstr ""
 
-#: modules/tools/stats.c:398
-msgid "Parameters"
-msgstr ""
-
-#: modules/tools/stats.c:929
+#: modules/tools/stats.c:932
 msgid "Save Statistical Quantities"
 msgstr ""
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "Yes"
 msgstr ""
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "No"
 msgstr ""
 
-#: modules/tools/stats.c:1062
-#, c-format
+#: modules/tools/stats.c:1066
+#, fuzzy, c-format
 msgid ""
 "Selected area:     %s × %s at (%s, %s) px\n"
 "                   %s × %s at (%s, %s) %s\n"
@@ -10927,6 +10969,7 @@
 "Median:            %s\n"
 "Ra:                %s\n"
 "Rms:               %s\n"
+"Rms (grain-wise):  %s\n"
 "Skew:              %s\n"
 "Kurtosis:          %s\n"
 "Surface area:      %s\n"
Binary files /tmp/6W43BMtPno/gwyddion-2.28/po/fr.gmo and /tmp/ug3yy2UQEY/gwyddion-2.29/po/fr.gmo differ
diff -Nru gwyddion-2.28/po/fr.po gwyddion-2.29/po/fr.po
--- gwyddion-2.28/po/fr.po	2012-05-18 10:44:03.000000000 +0100
+++ gwyddion-2.29/po/fr.po	2012-07-19 21:14:11.000000000 +0100
@@ -7,8 +7,8 @@
 msgstr ""
 "Project-Id-Version: French localization\n"
 "Report-Msgid-Bugs-To: yeti@gwyddion.net\n"
-"POT-Creation-Date: 2012-05-18 11:44+0200\n"
-"PO-Revision-Date: 2012-05-11 20:04+0100\n"
+"POT-Creation-Date: 2012-07-19 22:14+0200\n"
+"PO-Revision-Date: 2012-07-18 20:18+0100\n"
 "Last-Translator: François RIGUET \n"
 "Language-Team: François RIGUET \n"
 "Language: \n"
@@ -815,7 +815,7 @@
 msgstr "pixels"
 
 #: libgwydgets/gwy3dwindow.c:1116 modules/file/hdrimage.cc:2149
-#: modules/file/pixmap.c:1030 modules/file/pixmap.c:2989
+#: modules/file/pixmap.c:1036 modules/file/pixmap.c:3024
 #: modules/file/rawfile.c:398 modules/process/angle_dist.c:170
 #: modules/process/calcoefs_new.c:347 modules/process/calibrate.c:296
 #: modules/process/col_synth.c:299 modules/process/curvature.c:602
@@ -828,16 +828,17 @@
 #: modules/process/grain_edge.c:217 modules/process/grain_mark.c:262
 #: modules/process/grain_rem_threshold.c:224 modules/process/grain_wshed.c:182
 #: modules/process/hough.c:175 modules/process/latsim.c:158
-#: modules/process/level.c:253 modules/process/lno_synth.c:436
-#: modules/process/local_contrast.c:126 modules/process/median-bg.c:176
-#: modules/process/neural.c:208 modules/process/noise_synth.c:347
-#: modules/process/obj_synth.c:432 modules/process/pat_synth.c:402
-#: modules/process/pid.c:196 modules/process/polydistort.c:219
-#: modules/process/polylevel.c:376 modules/process/rotate.c:264
-#: modules/process/scale.c:193 modules/process/scars.c:469
-#: modules/process/shade.c:214 modules/process/slope_dist.c:201
-#: modules/process/sphere-revolve.c:215 modules/process/tilt.c:156
-#: modules/process/tip_model.c:170 modules/process/unrotate.c:226
+#: modules/process/level.c:255 modules/process/linecorrect.c:274
+#: modules/process/lno_synth.c:436 modules/process/local_contrast.c:126
+#: modules/process/median-bg.c:176 modules/process/neural.c:203
+#: modules/process/noise_synth.c:347 modules/process/obj_synth.c:432
+#: modules/process/pat_synth.c:402 modules/process/pid.c:196
+#: modules/process/polydistort.c:219 modules/process/polylevel.c:376
+#: modules/process/rotate.c:264 modules/process/scale.c:193
+#: modules/process/scars.c:469 modules/process/shade.c:214
+#: modules/process/slope_dist.c:201 modules/process/sphere-revolve.c:215
+#: modules/process/tilt.c:156 modules/process/tip_model.c:170
+#: modules/process/unrotate.c:226
 msgid "_Reset"
 msgstr "_Remise à zéro"
 
@@ -1160,7 +1161,7 @@
 msgstr "Aperçu"
 
 #: libgwymodule/gwymodule-file.c:535 modules/file/err.h:40
-#: modules/file/pixmap.c:746
+#: modules/file/pixmap.c:752
 #, c-format
 msgid "Cannot open file for reading: %s."
 msgstr "Impossible d'ouvrir le fichier pour le lire : %s."
@@ -1612,51 +1613,51 @@
 msgid "Cannot preview"
 msgstr "Impossible de prévisualiser"
 
-#: app/gwyddion.c:132
+#: app/gwyddion.c:133
 msgid "Loading document history"
 msgstr "Chargement de l'historique des documents"
 
-#: app/gwyddion.c:137
+#: app/gwyddion.c:138
 msgid "Registering "
 msgstr "Enregistrement "
 
-#: app/gwyddion.c:138
+#: app/gwyddion.c:139
 msgid "stock items"
 msgstr "éléments stockés"
 
-#: app/gwyddion.c:142
+#: app/gwyddion.c:143
 msgid "color gradients"
 msgstr "gradients"
 
-#: app/gwyddion.c:144
+#: app/gwyddion.c:145
 msgid "GL materials"
 msgstr "Matériaux GL"
 
-#: app/gwyddion.c:146
+#: app/gwyddion.c:147
 msgid "grain quantities"
 msgstr "quantité de grains"
 
-#: app/gwyddion.c:148
+#: app/gwyddion.c:149
 msgid "calibrations"
 msgstr "calibrations"
 
-#: app/gwyddion.c:153
+#: app/gwyddion.c:154
 msgid "Loading settings"
 msgstr "Chargement des réglages"
 
-#: app/gwyddion.c:160
+#: app/gwyddion.c:161
 msgid "Registering modules"
 msgstr "Enregistrement des modules"
 
-#: app/gwyddion.c:182
+#: app/gwyddion.c:183
 msgid "Initializing GUI"
 msgstr "Initialisation de l'interface graphique"
 
-#: app/gwyddion.c:391
+#: app/gwyddion.c:392
 msgid "Could not read settings."
 msgstr "Impossible de lire les réglages."
 
-#: app/gwyddion.c:394
+#: app/gwyddion.c:395
 #, c-format
 msgid ""
 "Settings file `%s' cannot be read: %s\n"
@@ -2671,12 +2672,12 @@
 msgid "Export Text"
 msgstr "Exporter au format texte"
 
-#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3092
+#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3127
 #: modules/file/rawfile.c:720 modules/file/rawxyz.c:670
 #: modules/process/fft_filter_1d.c:296 modules/process/grain_dist.c:285
 #: modules/process/grain_edge.c:270 modules/process/grain_mark.c:344
 #: modules/process/grain_rem_threshold.c:324 modules/process/grain_wshed.c:278
-#: modules/tools/spotremove.c:319 modules/tools/stats.c:375
+#: modules/tools/spotremove.c:319 modules/tools/stats.c:378
 msgid "Options"
 msgstr "Options"
 
@@ -2756,7 +2757,7 @@
 msgstr "Burleigh données exportées (.txt, .bin)"
 
 #: modules/file/burleigh_exp.c:225 modules/file/burleigh_exp.c:266
-#: modules/file/nanoscope.c:1098 modules/file/omicron.c:395
+#: modules/file/nanoscope.c:1128 modules/file/omicron.c:397
 #: modules/file/shimadzu.c:404
 msgid "Missing colon in header line."
 msgstr "Il manque une colonne dans la ligne d'en-tête."
@@ -3203,11 +3204,11 @@
 msgid "Representable"
 msgstr "Représentable"
 
-#: modules/file/hdrimage.cc:478 modules/tools/stats.c:322
+#: modules/file/hdrimage.cc:478 modules/tools/stats.c:324
 msgid "Minimum:"
 msgstr "Minimum :"
 
-#: modules/file/hdrimage.cc:494 modules/tools/stats.c:323
+#: modules/file/hdrimage.cc:494 modules/tools/stats.c:325
 msgid "Maximum:"
 msgstr "Maximum :"
 
@@ -3226,39 +3227,39 @@
 msgstr "Le type de données OpenEXR %u est invalide ou non supportée."
 
 #: modules/file/hdrimage.cc:1404 modules/file/hdrimage.cc:1413
-#: modules/file/pixmap.c:1531 modules/file/pixmap.c:1541
+#: modules/file/pixmap.c:1537 modules/file/pixmap.c:1547
 #, c-format
 msgid "libpng initialization error (in %s)"
 msgstr "Erreur d'initialisation de libpng (dans %s)"
 
-#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1601
+#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1607
 msgid "libpng error occured"
 msgstr "Une erreur s'est produite dans libpng"
 
 #. TRANSLATORS: Dialog title; %s is PNG, TIFF, ...
-#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1027
+#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1033
 #, c-format
 msgid "Import %s"
 msgstr "Importer %s"
 
-#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1054
+#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1060
 msgid "Image Information"
 msgstr "Information sur l'image"
 
-#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1061
+#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1067
 msgid "Horizontal size:"
 msgstr "Taille horizontale :"
 
 #: modules/file/hdrimage.cc:2182 modules/file/hdrimage.cc:2188
-#: modules/file/pixmap.c:1061 modules/file/pixmap.c:1067
+#: modules/file/pixmap.c:1067 modules/file/pixmap.c:1073
 msgid "px"
 msgstr "px"
 
-#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1067
+#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1073
 msgid "Vertical size:"
 msgstr "Taille verticale :"
 
-#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1072
+#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1078
 msgid "Channels:"
 msgstr "Canaux :"
 
@@ -3266,21 +3267,21 @@
 msgid "Pages:"
 msgstr "Pages : "
 
-#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1103
+#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1109
 #: modules/file/rawfile.c:623 modules/file/rawxyz.c:569
 #: modules/process/dimensions.h:465
 msgid "Physical Dimensions"
 msgstr "Dimensions physiques"
 
-#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1113
-#: modules/file/pixmap.c:3035 modules/file/rawfile.c:632
+#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1119
+#: modules/file/pixmap.c:3070 modules/file/rawfile.c:632
 #: modules/process/crosscor.c:197 modules/process/deposit_synth.c:458
 #: modules/process/dimensions.h:471 modules/process/tip_blind.c:265
 msgid "_Width:"
 msgstr "Largeur :"
 
 #: modules/file/hdrimage.cc:2266 modules/file/hdrimage.cc:2331
-#: modules/file/pixmap.c:1135 modules/file/pixmap.c:1190
+#: modules/file/pixmap.c:1141 modules/file/pixmap.c:1196
 #: modules/file/rawfile.c:655 modules/file/rawfile.c:711
 #: modules/process/calcoefs_new.c:384 modules/process/calcoefs_new.c:451
 #: modules/process/calcoefs_simple.c:390 modules/process/calcoefs_simple.c:457
@@ -3290,30 +3291,30 @@
 msgid "verb|Change"
 msgstr "Changer"
 
-#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1148
+#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1154
 #: modules/file/rawfile.c:668 modules/process/crosscor.c:203
 #: modules/process/dimensions.h:475
 msgid "H_eight:"
 msgstr "Hauteur :"
 
-#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1155
+#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1161
 #: modules/file/rawfile.c:675 modules/file/rawxyz.c:550
 msgid "Identical _measures"
 msgstr "_Mesures identiques"
 
-#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1167
+#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1173
 #: modules/file/rawfile.c:687
 msgid "_Z-scale (per sample unit):"
 msgstr "Echelle _Z (par unité d'échantillon) :"
 
-#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1417
+#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1423
 #: modules/file/rawfile.c:1326 modules/process/calcoefs_new.c:776
 #: modules/process/calcoefs_simple.c:1189 modules/process/calcoefs_view.c:1393
 #: modules/process/calibrate.c:816 modules/process/dimensions.h:193
 msgid "Change Units"
 msgstr "Changer les unités"
 
-#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1431
+#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1437
 #: modules/file/rawfile.c:1340 modules/process/calcoefs_new.c:789
 #: modules/process/calcoefs_simple.c:1202 modules/process/calcoefs_view.c:1406
 #: modules/process/calibrate.c:830 modules/process/dimensions.h:206
@@ -3771,7 +3772,7 @@
 msgid "Nanonis SXM files (.sxm)"
 msgstr "Nanonis SXM (.sxm)"
 
-#: modules/file/nanonis.c:163 modules/file/omicron.c:499
+#: modules/file/nanonis.c:163 modules/file/omicron.c:501
 #: modules/file/unisoku.c:265
 msgid "File header ended unexpectedly."
 msgstr "L'en-tête de se termine de manière inattendue."
@@ -3816,35 +3817,35 @@
 msgid "File Scan/Measure.xml is missing in the zip file."
 msgstr "Le fichier Scan/Measure.xml est manquant dans le fichier zip."
 
-#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:484
+#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:488
 msgid "Unknown error"
 msgstr "Erreur inconnue"
 
-#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:489
+#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:493
 msgid "End of file"
 msgstr "Fin de fichier"
 
-#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:491
+#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:495
 msgid "End of list of files"
 msgstr "Fin de la liste des fichiers"
 
-#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:493
+#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:497
 msgid "Parameter error"
 msgstr "Erreur de paramètre"
 
-#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:495
+#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:499
 msgid "Bad zip file"
 msgstr "Fichier zip erroné"
 
-#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:497
+#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:501
 msgid "Internal error"
 msgstr "Erreur interne"
 
-#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:499
+#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:503
 msgid "CRC error"
 msgstr "Erreur CRC"
 
-#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:502
+#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:506
 #, c-format
 msgid "Minizip error while reading the zip file: %s."
 msgstr "Erreur de Minizip lors de la lecture du fichier zip : %s."
@@ -3892,12 +3893,12 @@
 msgid "Nanoscope III files"
 msgstr "Nanoscope III"
 
-#: modules/file/nanoscope.c:243
+#: modules/file/nanoscope.c:244
 msgid "File is not a Nanoscope file, or it is a unknown subtype."
 msgstr ""
 "Le fichier n'est pas un fichier Nanoscope, ou est d'un sous-type inconnu."
 
-#: modules/file/nanoscope.c:250
+#: modules/file/nanoscope.c:251
 msgid ""
 "File has been damaged by change of line endings, resulting in corruption of "
 "the binary part of the file.\n"
@@ -3916,16 +3917,16 @@
 "certaines versions de MS Windows, ou tout autre transfert de fichier qui "
 "essaie d'enregistrer en texte indépendamment de la plateforme."
 
-#: modules/file/nanoscope.c:521 modules/file/nanoscope.c:537
+#: modules/file/nanoscope.c:525 modules/file/nanoscope.c:541
 msgid "Cannot parse `Scan size' field."
 msgstr "Impossible d'analyser le champ `Scan size'."
 
-#: modules/file/nanoscope.c:1007 modules/file/nrrdfile.c:1013
+#: modules/file/nanoscope.c:1037 modules/file/nrrdfile.c:1013
 #, c-format
 msgid "Garbage after data sample #%u."
 msgstr "Données erronées après l'échantillon #%u."
 
-#: modules/file/nanoscope.c:1088
+#: modules/file/nanoscope.c:1118
 msgid "Truncated header line."
 msgstr "Ligne d'en-tête tronquée."
 
@@ -4061,40 +4062,53 @@
 msgid "Per-axis header field %s contains too few items."
 msgstr "Le champ d'en-tête d'axe %s ne contient pas assez d'éléments."
 
-#: modules/file/nt-mdt.c:658
+#: modules/file/nt-mdt.c:694
 msgid "Imports NT-MDT data files."
 msgstr "Importe les fichiers NT-MDT."
 
-#: modules/file/nt-mdt.c:671
+#: modules/file/nt-mdt.c:707
 msgid "NT-MDT files (.mdt)"
 msgstr "NT-MDT (.mdt)"
 
-#: modules/file/nt-mdt.c:1096
+#: modules/file/nt-mdt.c:1156
 msgid "Frame is too short for Frame Mode."
 msgstr "la trame est trop courte pour le mode trame."
 
-#: modules/file/nt-mdt.c:1110
+#: modules/file/nt-mdt.c:1170
 msgid "Frame is too short for dots or data."
 msgstr "la trame est trop courte pour des points ou des données."
 
-#: modules/file/nt-mdt.c:1369
+#: modules/file/nt-mdt.c:1429
 #, c-format
 msgid "End of file reached in frame header #%u."
 msgstr "Fin du fichier atteinte dans l'en-tête #%u."
 
-#: modules/file/nt-mdt.c:1377
+#: modules/file/nt-mdt.c:1437
 #, c-format
 msgid "End of file reached in frame data #%u."
 msgstr "Fin du fichier atteinte dans les données #%u."
 
-#: modules/file/nt-mdt.c:1412
+#: modules/file/nt-mdt.c:1472
 #, c-format
 msgid "Frame #%u is too short for scanned data header."
 msgstr "La trame #%u est trop courte pour l'en-tête des données scannées."
 
-#: modules/file/nt-mdt.c:2464
-msgid "Raman Image"
-msgstr "Image Raman"
+#: modules/file/nt-mdt.c:2794 modules/tools/filter.c:209
+#: modules/tools/icolorange.c:396 modules/tools/linestats.c:154
+msgid "Maximum"
+msgstr "Maximum"
+
+#: modules/file/nt-mdt.c:2795
+msgid "Max. position"
+msgstr "Position max"
+
+#: modules/file/nt-mdt.c:2796
+msgid "Average"
+msgstr "Moyenne"
+
+#: modules/file/nt-mdt.c:2809
+msgid "Raman Image Import"
+msgstr "Import d'image Raman"
 
 #: modules/file/oldmda.c:146
 msgid "Imports old NTMDT MDA Spectra files."
@@ -4134,11 +4148,11 @@
 msgid "Omicron files (.par + data)"
 msgstr "Omicron (.par + données)"
 
-#: modules/file/omicron.c:401
+#: modules/file/omicron.c:403
 msgid "Header line starts with a colon."
 msgstr "La ligne d'en-tête commence par un double point."
 
-#: modules/file/omicron.c:508
+#: modules/file/omicron.c:510
 msgid "Channel information ended unexpectedly."
 msgstr "Les informations sur le canal s'arrêtent de manière inattendue."
 
@@ -4192,87 +4206,87 @@
 msgid "Truncated data in block %s"
 msgstr "Données tronquées dans le bloc %s"
 
-#: modules/file/pixmap.c:350
+#: modules/file/pixmap.c:356
 msgid "All channels"
 msgstr "Tous les canaux"
 
-#: modules/file/pixmap.c:351
+#: modules/file/pixmap.c:357
 msgid "Red"
 msgstr "Rouge"
 
-#: modules/file/pixmap.c:352
+#: modules/file/pixmap.c:358
 msgid "Green"
 msgstr "Vert"
 
-#: modules/file/pixmap.c:353
+#: modules/file/pixmap.c:359
 msgid "Blue"
 msgstr "Bleu"
 
-#: modules/file/pixmap.c:354
+#: modules/file/pixmap.c:360
 msgid "Value (max)"
 msgstr "Valeur (max)"
 
-#: modules/file/pixmap.c:355
+#: modules/file/pixmap.c:361
 msgid "RGB sum"
 msgstr "Somme RVB"
 
-#: modules/file/pixmap.c:356
+#: modules/file/pixmap.c:362
 msgid "Luma"
 msgstr "Luma"
 
-#: modules/file/pixmap.c:357
+#: modules/file/pixmap.c:363
 msgid "Alpha"
 msgstr "Alpha"
 
-#: modules/file/pixmap.c:369
+#: modules/file/pixmap.c:375
 msgid "Portable Network Graphics (.png)"
 msgstr "PNG (.png)"
 
-#: modules/file/pixmap.c:375
+#: modules/file/pixmap.c:381
 msgid "JPEG (.jpeg,.jpg)"
 msgstr "JPEG (.jpeg, .jpg)"
 
-#: modules/file/pixmap.c:381
+#: modules/file/pixmap.c:387
 msgid "TIFF (.tiff,.tif)"
 msgstr "TIFF (.tiff, .tif)"
 
-#: modules/file/pixmap.c:387
+#: modules/file/pixmap.c:393
 msgid "Portable Pixmap (.ppm,.pnm)"
 msgstr "PPM (.ppm, .pnm)"
 
-#: modules/file/pixmap.c:393
+#: modules/file/pixmap.c:399
 msgid "Windows or OS2 Bitmap (.bmp)"
 msgstr "BMP (.bmp)"
 
-#: modules/file/pixmap.c:399
+#: modules/file/pixmap.c:405
 msgid "TARGA (.tga,.targa)"
 msgstr "TARGA (.tga, .targa)"
 
-#: modules/file/pixmap.c:412
+#: modules/file/pixmap.c:418
 msgid "Graphics Interchange Format (.gif)"
 msgstr "GIF (.gif)"
 
-#: modules/file/pixmap.c:416
+#: modules/file/pixmap.c:422
 msgid "JPEG 2000 (.jpx)"
 msgstr "JPEG 2000 (.jpx)"
 
-#: modules/file/pixmap.c:420
+#: modules/file/pixmap.c:426
 msgid "PCX (.pcx)"
 msgstr "PCX (.pcx)"
 
-#: modules/file/pixmap.c:424
+#: modules/file/pixmap.c:430
 msgid "X Pixmap (.xpm)"
 msgstr "XPM (.xpm)"
 
-#: modules/file/pixmap.c:428
+#: modules/file/pixmap.c:434
 msgid "Sun raster image (.ras)"
 msgstr "Sun raster (.ras)"
 
-#: modules/file/pixmap.c:432
+#: modules/file/pixmap.c:438
 msgid "Apple icon (.icns)"
 msgstr "Icône Apple (.icns)"
 
-#: modules/file/pixmap.c:456
+#: modules/file/pixmap.c:462
 msgid ""
 "Renders data into pixmap images and imports data from pixmap images. It "
 "supports the following image formats for export: PNG, JPEG, TIFF, PPM, BMP, "
@@ -4283,69 +4297,69 @@
 "PNG, JPEG, TIFF, PPM, BMP, TARGA. L'import dépend de GDK et peut ainsi "
 "dépendre de l'installation."
 
-#: modules/file/pixmap.c:740
+#: modules/file/pixmap.c:746
 #, c-format
 msgid "Pixmap has not registered file type `%s'."
 msgstr "L'image ne peut enregistrée avec le type de fichier `%s'."
 
-#: modules/file/pixmap.c:754
+#: modules/file/pixmap.c:760
 #, c-format
 msgid "Cannot get pixbuf loader: %s."
 msgstr "Chargeur d'image non disponible : %s."
 
-#: modules/file/pixmap.c:766 modules/file/pixmap.c:778
+#: modules/file/pixmap.c:772 modules/file/pixmap.c:784
 #, c-format
 msgid "Pixbuf loader refused data: %s."
 msgstr "Le chargeur d'image refuse les données : %s."
 
-#: modules/file/pixmap.c:1200
+#: modules/file/pixmap.c:1206
 msgid ""
 "Warning: Colorful images cannot be reliably mapped to meaningful values."
 msgstr ""
 "Attention : des valeurs correctes ne peuvent être appliquées de manière "
 "fiable à des images en couleurs ."
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "verb|Use"
 msgstr "Utiliser"
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "as data"
 msgstr "en tant que données"
 
-#: modules/file/pixmap.c:1688 modules/file/pixmap.c:1716
+#: modules/file/pixmap.c:1694 modules/file/pixmap.c:1722
 #, c-format
 msgid "Pixbuf save failed: %s."
 msgstr "La sauvegarde de l'image à échoué : %s."
 
-#: modules/file/pixmap.c:2126
+#: modules/file/pixmap.c:2132
 msgid "Image is too large to be stored as TARGA."
 msgstr "L'image est trop grande pour être enregistrée au format TARGA"
 
-#: modules/file/pixmap.c:2207
+#: modules/file/pixmap.c:2213
 msgid "Data must be displayed in a window for pixmap export."
 msgstr ""
 "Les données doivent affichées dans une fenêtre pour l'export vers un format "
 "image."
 
-#: modules/file/pixmap.c:2927
+#: modules/file/pixmap.c:2936
 msgid "Change Inset Color"
 msgstr "Changer l'échelle de couleurs"
 
-#: modules/file/pixmap.c:2986
+#: modules/file/pixmap.c:3021
 #, c-format
 msgid "Export %s"
 msgstr "Exporter %s"
 
-#: modules/file/pixmap.c:3017
+#: modules/file/pixmap.c:3052
 msgid "Scaling"
 msgstr "Echelle"
 
-#: modules/file/pixmap.c:3026
+#: modules/file/pixmap.c:3061
 msgid "_Zoom:"
 msgstr "_Zoom :"
 
-#: modules/file/pixmap.c:3044 modules/process/col_synth.c:400
+#: modules/file/pixmap.c:3079 modules/process/col_synth.c:400
 #: modules/process/grain_mark.c:309 modules/process/grain_rem_threshold.c:280
 #: modules/process/obj_synth.c:573 modules/process/pat_synth.c:889
 #: modules/process/pat_synth.c:1190 modules/process/pat_synth.c:1525
@@ -4353,91 +4367,99 @@
 msgid "_Height:"
 msgstr "_Hauteur :"
 
-#: modules/file/pixmap.c:3052
+#: modules/file/pixmap.c:3087
 msgid "Font:"
 msgstr "Police :"
 
-#: modules/file/pixmap.c:3067
+#: modules/file/pixmap.c:3102
 msgid "Scale text _proportionally"
 msgstr "Mettre le texte _proportionnellement à l'échelle"
 
-#: modules/file/pixmap.c:3082
+#: modules/file/pixmap.c:3117
 msgid "_Font size:"
 msgstr "Taille de police :"
 
-#: modules/file/pixmap.c:3096
+#: modules/file/pixmap.c:3131
 msgid "Draw _mask"
 msgstr "Dessiner le _masque"
 
-#: modules/file/pixmap.c:3105
+#: modules/file/pixmap.c:3140
 msgid "Draw _selection"
 msgstr "Dessiner la _sélection"
 
-#: modules/file/pixmap.c:3121
+#: modules/file/pixmap.c:3156
 msgid "Grayscale Mode"
 msgstr "Mode niveaux de gris"
 
-#: modules/file/pixmap.c:3125
+#: modules/file/pixmap.c:3160
 msgid "Export as 1_6 bit grayscale"
 msgstr "Exporter en niveaux de gris 1_6 bits"
 
-#: modules/file/pixmap.c:3151
+#: modules/file/pixmap.c:3186
 msgid "Lateral Scale"
 msgstr "Echelle latérale"
 
-#: modules/file/pixmap.c:3158 modules/file/pixmap.c:3253
+#: modules/file/pixmap.c:3193 modules/file/pixmap.c:3308
 msgid "ruler|_None"
 msgstr "_Aucune"
 
-#: modules/file/pixmap.c:3159
+#: modules/file/pixmap.c:3194
 msgid "_Rulers"
 msgstr "G_raduations"
 
-#: modules/file/pixmap.c:3160
+#: modules/file/pixmap.c:3195
 msgid "_Inset scale bar"
 msgstr "Echelle"
 
-#: modules/file/pixmap.c:3165
+#: modules/file/pixmap.c:3200
 msgid "Color:"
 msgstr "Couleur :"
 
-#: modules/file/pixmap.c:3181 modules/process/immerse.c:323
+#: modules/file/pixmap.c:3216 modules/process/immerse.c:323
 msgid "Position:"
 msgstr "Position :"
 
-#: modules/file/pixmap.c:3186
+#: modules/file/pixmap.c:3221
 msgid "left"
 msgstr "gauche"
 
-#: modules/file/pixmap.c:3190
+#: modules/file/pixmap.c:3225
 msgid "center"
 msgstr "centre"
 
-#: modules/file/pixmap.c:3194
+#: modules/file/pixmap.c:3229
 msgid "right"
 msgstr "droite"
 
-#: modules/file/pixmap.c:3199
+#: modules/file/pixmap.c:3234
 msgid "top"
 msgstr "haut"
 
-#: modules/file/pixmap.c:3211
+#: modules/file/pixmap.c:3246
 msgid "bottom"
 msgstr "bas"
 
-#: modules/file/pixmap.c:3222 modules/process/lno_synth.c:1066
+#: modules/file/pixmap.c:3257 modules/process/lno_synth.c:1066
 msgid "_Length:"
 msgstr "_Longueur :"
 
-#: modules/file/pixmap.c:3238
+#: modules/file/pixmap.c:3273
 msgid "_Auto"
 msgstr "_Auto"
 
-#: modules/file/pixmap.c:3246
+#: modules/file/pixmap.c:3281
+msgid "Draw _ticks"
+msgstr "Afficher les gradua_tions"
+
+#: modules/file/pixmap.c:3291
+msgid "Draw _label"
+msgstr "Dessiner les _labels"
+
+#: modules/file/pixmap.c:3301
 msgid "Value Scale"
 msgstr "Valeur d'échelle"
 
-#: modules/file/pixmap.c:3254
+#: modules/file/pixmap.c:3309
 msgid "_False color ruler"
 msgstr "Echelle de couleurs"
 
@@ -4617,7 +4639,7 @@
 #: modules/process/mark_with.c:211 modules/process/polydistort.c:214
 #: modules/process/scars.c:466 modules/process/synth.h:479
 #: modules/process/tip_model.c:167 modules/tools/linestats.c:420
-#: modules/tools/sfunctions.c:475 modules/tools/stats.c:432
+#: modules/tools/sfunctions.c:475 modules/tools/stats.c:435
 msgid "_Update"
 msgstr "Mise à jour"
 
@@ -5141,7 +5163,7 @@
 msgid "Seiko files (.xqb, .xqd, .xqt)"
 msgstr "Seiko (.xqb, .xqd, .xqt)"
 
-#: modules/file/seiko.c:239
+#: modules/file/seiko.c:251
 msgid ""
 "Cannot determine scan dimensions; it seems non-square with an unknown side "
 "ratio."
@@ -5371,12 +5393,12 @@
 msgid "Surf files (.sur)"
 msgstr "Surf (.sur)"
 
-#: modules/file/tiaser.c:166
+#: modules/file/tiaser.c:172
 msgid "Imports FEI Tecnai imaging and analysis (former Emispec) files."
 msgstr ""
 "Importe les fichiers FEI Tecnai imaging and analysis (anciennement Emispec)"
 
-#: modules/file/tiaser.c:179
+#: modules/file/tiaser.c:185
 msgid "FEI TIA (Emispec) data"
 msgstr "FEI TIA (Emispec) (.tia)"
 
@@ -5558,10 +5580,10 @@
 #: modules/graph/graph_cd.c:692 modules/graph/graph_fdfit.c:780
 #: modules/graph/graph_fit.c:804 modules/tools/grainmeasure.c:215
 #: modules/tools/readvalue.c:576 modules/tools/readvalue.c:577
-#: modules/tools/roughness.c:957 modules/tools/stats.c:661
-#: modules/tools/stats.c:672 modules/tools/stats.c:673
-#: modules/tools/stats.c:1050 modules/tools/stats.c:1057
-#: modules/tools/stats.c:1059
+#: modules/tools/roughness.c:957 modules/tools/stats.c:666
+#: modules/tools/stats.c:677 modules/tools/stats.c:678
+#: modules/tools/stats.c:1054 modules/tools/stats.c:1061
+#: modules/tools/stats.c:1063
 msgid "N.A."
 msgstr "N. A."
 
@@ -5996,7 +6018,7 @@
 msgid "_Expression:"
 msgstr "_Expression :"
 
-#: modules/process/arithmetic.c:294
+#: modules/process/arithmetic.c:294 modules/process/neural.c:220
 msgid "Operands"
 msgstr "Opérandes"
 
@@ -6279,7 +6301,7 @@
 msgstr "Carte d'erreur basique"
 
 #: modules/process/calcoefs_simple.c:342 modules/process/calcoefs_stage.c:149
-#: modules/process/neural.c:225 modules/process/superresolution.c:159
+#: modules/process/superresolution.c:159
 msgid "Operands:"
 msgstr "Opérandes :"
 
@@ -6848,20 +6870,21 @@
 msgstr "Afficher le graphe"
 
 #: modules/process/curvature.c:684 modules/process/facet-level.c:297
-#: modules/process/level.c:267 modules/process/polylevel.c:495
-#: modules/tools/sfunctions.c:457 modules/tools/stats.c:362
+#: modules/process/level.c:269 modules/process/linecorrect.c:288
+#: modules/process/polylevel.c:495 modules/tools/sfunctions.c:457
+#: modules/tools/stats.c:365
 msgid "Masking Mode"
 msgstr "Mode Masque"
 
-#: modules/process/curvature.c:754 modules/process/grain_dist.c:827
+#: modules/process/curvature.c:754 modules/process/grain_dist.c:835
 #: modules/tools/distance.c:227 modules/tools/roughness.c:824
-#: modules/tools/stats.c:423
+#: modules/tools/stats.c:426
 msgid "Save table to a file"
 msgstr "Sauver le tableau"
 
-#: modules/process/curvature.c:759 modules/process/grain_dist.c:832
+#: modules/process/curvature.c:759 modules/process/grain_dist.c:840
 #: modules/tools/distance.c:232 modules/tools/roughness.c:829
-#: modules/tools/stats.c:428
+#: modules/tools/stats.c:431
 msgid "Copy table to clipboard"
 msgstr "Copier la table vers le presse-papier"
 
@@ -6923,9 +6946,8 @@
 msgstr "_Couverture :"
 
 #: modules/process/deposit_synth.c:478
-#, fuzzy
 msgid "_Revise:"
-msgstr "_Réviser :"
+msgstr "_Remanier :"
 
 #: modules/process/deposit_synth.c:705 modules/process/synth.h:518
 msgid "R_andom seed:"
@@ -7617,7 +7639,7 @@
 
 #: modules/process/fft_synth.c:466
 msgid "Enable _Gaussian multiplier"
-msgstr "Activer le multipicateur _Gaussien"
+msgstr "Activer le multiplicateur _Gaussien"
 
 #: modules/process/fft_synth.c:479
 msgid "_Autocorrelation length:"
@@ -7984,42 +8006,46 @@
 msgid "Data channel:"
 msgstr "Canal de données :"
 
-#: modules/process/grain_dist.c:734 modules/process/grain_dist.c:806
+#: modules/process/grain_dist.c:736 modules/process/grain_dist.c:814
 msgid "Grain Statistics"
 msgstr "Statistiques des grains"
 
-#: modules/process/grain_dist.c:746
+#: modules/process/grain_dist.c:748
 msgid "Number of grains:"
 msgstr "Nombre de grains :"
 
-#: modules/process/grain_dist.c:755
+#: modules/process/grain_dist.c:757
 msgid "Total projected area (abs.):"
 msgstr "Surface totale projetée (abs.) :"
 
-#: modules/process/grain_dist.c:759
+#: modules/process/grain_dist.c:761
 msgid "Total projected area (rel.):"
 msgstr "Surface totale projetée (rel.) :"
 
-#: modules/process/grain_dist.c:765
+#: modules/process/grain_dist.c:767
 msgid "Mean grain area:"
 msgstr "Surface de grain moyenne :"
 
-#: modules/process/grain_dist.c:771
+#: modules/process/grain_dist.c:773
 msgid "Mean grain size:"
 msgstr "Taille de grain moyenne :"
 
-#: modules/process/grain_dist.c:780
+#: modules/process/grain_dist.c:782
 msgid "Total grain volume (zero):"
 msgstr "Volume de grain total (base zéro) :"
 
-#: modules/process/grain_dist.c:786
+#: modules/process/grain_dist.c:788
 msgid "Total grain volume (minimum):"
 msgstr "Volume de grain total (base minimum) :"
 
-#: modules/process/grain_dist.c:792
+#: modules/process/grain_dist.c:794
 msgid "Total grain volume (laplacian):"
 msgstr "Volume de grain total (base laplacienne) :"
 
+#: modules/process/grain_dist.c:800
+msgid "Total projected boundary length:"
+msgstr "Périmètre projeté : "
+
 #: modules/process/grain_edge.c:106
 msgid "Marks grains by edge detection method."
 msgstr "Marque les grains par la méthode de détection de bord."
@@ -8571,14 +8597,12 @@
 "Simuler des artefacts de surface pour les canaux de mesure à force latérale"
 
 #: modules/process/latsim.c:134
-#, fuzzy
 msgid "Fw lateral force "
-msgstr "Echelle latérale"
+msgstr "Force latérale aller"
 
 #: modules/process/latsim.c:142
-#, fuzzy
 msgid "Rev lateral force"
-msgstr "Conserver les offsets latéraux"
+msgstr "Force latérale retour"
 
 #: modules/process/latsim.c:157
 msgid "Lateral force simulation"
@@ -8687,53 +8711,57 @@
 msgid "E_xtract background"
 msgstr "E_xtraire l'arrière-plan"
 
-#: modules/process/linecorrect.c:64
+#: modules/process/linecorrect.c:88
 msgid "Corrects line defects (mostly experimental algorithms)."
 msgstr "Corrige les défauts des lignes (algorithmes expérimentaux)."
 
-#: modules/process/linecorrect.c:78
+#: modules/process/linecorrect.c:102
 msgid "/_Correct Data/M_odus Line Correction"
 msgstr "/_Correction des données/Correction des lignes par valeur d_ominante"
 
-#: modules/process/linecorrect.c:82
+#: modules/process/linecorrect.c:106
 msgid "Correct lines by matching height modus"
 msgstr ""
 "Corriger les lignes par correpondance des valeurs dominantes de hauteur"
 
-#: modules/process/linecorrect.c:85
+#: modules/process/linecorrect.c:109
 msgid "/_Correct Data/M_edian Line Correction"
 msgstr "/_Correction des données/Correction des lignes par médiane"
 
-#: modules/process/linecorrect.c:89
+#: modules/process/linecorrect.c:113
 msgid "Correct lines by matching height median"
 msgstr "Corriger les lignes en faisant correspondre la hauteur médiane"
 
-#: modules/process/linecorrect.c:92
+#: modules/process/linecorrect.c:116
 msgid "/_Correct Data/Median Di_fference Line Correction"
 msgstr "/_Correction des données/Correction des lignes par di_fférence médiane"
 
-#: modules/process/linecorrect.c:96
+#: modules/process/linecorrect.c:120
 msgid "Correct lines by zeroing median of differences between neighbor lines"
 msgstr ""
 "Corrige les lignes en annulant la médiane des différences entre deux lignes "
 "voisines"
 
-#: modules/process/linecorrect.c:100
+#: modules/process/linecorrect.c:124
 msgid "/_Correct Data/Ma_tch Line Correction"
 msgstr "/_Correction des données/Correc_tion des lignes par correspondance"
 
-#: modules/process/linecorrect.c:104
+#: modules/process/linecorrect.c:128
 msgid "Correct lines by matching flat segments"
 msgstr "Corriger les lignes en faisant correspondre les segments plats"
 
-#: modules/process/linecorrect.c:107
+#: modules/process/linecorrect.c:131
 msgid "/_Correct Data/Ste_p Line Correction"
 msgstr "/_Correction des données/Correction des sauts dans les lignes"
 
-#: modules/process/linecorrect.c:111
+#: modules/process/linecorrect.c:135
 msgid "Correct steps in lines"
 msgstr "Corriger les sauts dans les lignes"
 
+#: modules/process/linecorrect.c:198
+msgid "Median Line Correction"
+msgstr "Correction des lignes par médiane"
+
 #: modules/process/lno_synth.c:249 modules/process/noise_synth.c:183
 msgid "distribution|Gaussian"
 msgstr "Gaussienne"
@@ -9150,78 +9178,85 @@
 msgid "Immersed detail data"
 msgstr "Données du détail incrusté"
 
-#: modules/process/neural.c:147
+#: modules/process/neural.c:144
 msgid "Neural network SPM data processing"
 msgstr "Réseau neuronal de traitement de données SPM"
 
-#: modules/process/neural.c:161
-msgid "/M_ultidata/_Neural network..."
+#: modules/process/neural.c:158
+msgid "/M_ultidata/_Neural Network..."
 msgstr "/M_ultidonnées/Réseau _neuronal..."
 
-#: modules/process/neural.c:165
+#: modules/process/neural.c:162
 msgid "Neural network AFM data processing"
 msgstr "Réseau neuronal de traitement de données AFM"
 
-#: modules/process/neural.c:207
-msgid "Neural network"
+#: modules/process/neural.c:202
+msgid "Neural Network"
 msgstr "Réseau neuronal"
 
+#: modules/process/neural.c:227
+msgid "Training _model:"
+msgstr "_Modèle d'apprentissage : "
+
 #: modules/process/neural.c:233
-#, fuzzy
-msgid "Training model:"
-msgstr "Mode d'ajustement"
+msgid "Training _signal:"
+msgstr "_Signald'apprentissage : "
 
-#: modules/process/neural.c:240
-#, fuzzy
-msgid "Training signal:"
-msgstr "Il reste des éléments inutiles"
+#: modules/process/neural.c:239
+msgid "Res_ult model:"
+msgstr "Modèle rés_ultant : "
 
-#: modules/process/neural.c:247
-#, fuzzy
-msgid "Result model:"
-msgstr "Résultat de l'échantillonnage"
+#: modules/process/neural.c:244 modules/tools/stats.c:401
+msgid "Parameters"
+msgstr "Paramètres"
 
-#: modules/process/neural.c:254
-msgid "Window width:"
+#: modules/process/neural.c:250
+msgid "Window _width:"
 msgstr "Largeur de fenêtre :"
 
-#: modules/process/neural.c:260
-msgid "Window height:"
+#: modules/process/neural.c:256
+msgid "Window h_eight:"
 msgstr "Hauteur de fenêtre :"
 
-#: modules/process/neural.c:266
-#, fuzzy
-msgid "Training steps:"
-msgstr "Type d'interpolation :"
-
-#: modules/process/neural.c:272
-msgid "Hidden nodes:"
-msgstr "Noeuds cachés : "
+#: modules/process/neural.c:262
+msgid "_Training steps:"
+msgstr "Étapes d'appren_tissage : "
+
+#: modules/process/neural.c:268
+msgid "_Hidden nodes:"
+msgstr "Noeuds cac_hés : "
 
-#: modules/process/neural.c:364
+#: modules/process/neural.c:360
 msgid "Data not compatible"
 msgstr "Données non compatibles"
 
-#: modules/process/neural.c:389 modules/process/pid.c:334
+#: modules/process/neural.c:388 modules/process/pid.c:334
 msgid "Starting..."
 msgstr "Démarrage..."
 
-#: modules/process/neural.c:491
+#: modules/process/neural.c:409
+msgid "Training..."
+msgstr "Apprentissage..."
+
+#: modules/process/neural.c:451
+msgid "Evaluating..."
+msgstr "Evaluation..."
+
+#: modules/process/neural.c:493
 msgid "Evaluated signal"
 msgstr "Signal évalué"
 
-#: modules/process/neural.c:497
-#, fuzzy
+#: modules/process/neural.c:499
 msgid "Training error"
-msgstr "Il reste des éléments inutiles"
+msgstr "Erreur d'apprentissage"
 
-#: modules/process/neural.c:498
+#: modules/process/neural.c:500
 msgid "error"
 msgstr "Erreur"
 
-#: modules/process/neural.c:504
+#: modules/process/neural.c:506
 msgid "NN training error"
-msgstr ""
+msgstr "Erreur d'apprentissage du réseau neuronal"
 
 #: modules/process/noise_synth.c:210
 msgid "Generates uncorrelated random noise."
@@ -9280,7 +9315,7 @@
 msgstr "Gaussiennes"
 
 #: modules/process/obj_synth.c:284
-msgid "Dougnuts"
+msgid "Doughnuts"
 msgstr "Beignets"
 
 #: modules/process/obj_synth.c:290
@@ -9421,22 +9456,20 @@
 msgstr "SImuler les effets de la régulation PID sur la mesure"
 
 #: modules/process/pid.c:157
-#, fuzzy
 msgid "PID FW result"
-msgstr "Résultat de l'ajustement"
+msgstr "PID résultat aller"
 
 #: modules/process/pid.c:165
 msgid "PID FW max. force"
-msgstr ""
+msgstr "PID force maximale aller"
 
 #: modules/process/pid.c:173
-#, fuzzy
 msgid "PID REV result"
-msgstr "Résultat"
+msgstr "PID résultat retour"
 
 #: modules/process/pid.c:181
 msgid "PID REV max. force"
-msgstr ""
+msgstr "PID force maximale retour"
 
 #: modules/process/pid.c:195
 msgid "PID simulation"
@@ -9451,9 +9484,8 @@
 msgstr ""
 
 #: modules/process/pid.c:224
-#, fuzzy
 msgid "_Integration steps:"
-msgstr "Type d'interpolation :"
+msgstr "Passes d'_intégration :"
 
 #: modules/process/pid.c:231
 msgid "_Derivative:"
@@ -9473,7 +9505,7 @@
 
 #: modules/process/pid.c:358
 msgid "Scanning..."
-msgstr ""
+msgstr "Balayage en cours..."
 
 #: modules/process/pid.c:392
 msgid "Computation diverged, try to change parameters"
@@ -10201,59 +10233,59 @@
 msgid "Denoised"
 msgstr "Débruité"
 
-#: modules/pygwy/pygwy-console.c:53
+#: modules/pygwy/pygwy-console.c:54
 msgid "/Pygwy Console"
 msgstr "/Console Pygwy"
 
-#: modules/pygwy/pygwy-console.c:57
+#: modules/pygwy/pygwy-console.c:58
 msgid "Python wrapper console"
 msgstr "Console Python"
 
-#: modules/pygwy/pygwy-console.c:155
+#: modules/pygwy/pygwy-console.c:156
 msgid ">>> Running file content of below textfield\n"
 msgstr ">>> Lancer du contenu du fichier à partir du texte\n"
 
-#: modules/pygwy/pygwy-console.c:180
+#: modules/pygwy/pygwy-console.c:181
 msgid "Open Python script"
 msgstr "Ouvrir un script Python"
 
-#: modules/pygwy/pygwy-console.c:244
+#: modules/pygwy/pygwy-console.c:245
 msgid "Save Script as"
 msgstr "Sauver le script sous"
 
-#: modules/pygwy/pygwy-console.c:283
+#: modules/pygwy/pygwy-console.c:284
 msgid "Pygwy Console"
 msgstr "Console Pygwy"
 
-#: modules/pygwy/pygwy-console.c:295
+#: modules/pygwy/pygwy-console.c:296
 msgid "Open script in Python language (Ctrl-O)"
 msgstr "Ouvrir un script Python (Ctrl-O)"
 
-#: modules/pygwy/pygwy-console.c:297
+#: modules/pygwy/pygwy-console.c:298
 msgid "Save script (Ctrl-S)"
 msgstr "Sauver le script (Ctrl-S)"
 
-#: modules/pygwy/pygwy-console.c:299
+#: modules/pygwy/pygwy-console.c:300
 msgid "Execute script (Ctrl-E)"
 msgstr "Exécuter le script (Ctrl-E)"
 
-#: modules/pygwy/pygwy-console.c:377
+#: modules/pygwy/pygwy-console.c:378
 msgid "Command"
 msgstr "Commande "
 
-#: pygwy.c:91
+#: pygwy.c:99
 msgid "Pygwy, the Gwyddion Python wrapper."
 msgstr "Pygwy, l'interface Python pour Gwyddion"
 
-#: pygwy.c:443
+#: pygwy.c:520
 msgid "Function written in Python"
 msgstr "Fonction écrite en Python"
 
-#: pygwy.c:489
+#: pygwy.c:566
 msgid "Graph function written in Python"
 msgstr "Fonction graphique écrite en Python"
 
-#: pygwy.c:899
+#: pygwy.c:976
 #, c-format
 msgid ""
 "Pygwy plugin: %s (%s)\n"
@@ -10310,11 +10342,6 @@
 msgid "Conservative denoise"
 msgstr "Débruitage conservatif"
 
-#: modules/tools/filter.c:209 modules/tools/icolorange.c:396
-#: modules/tools/linestats.c:154
-msgid "Maximum"
-msgstr "Maximum"
-
 #: modules/tools/filter.c:210
 msgid "Kuwahara"
 msgstr "Kuwahara"
@@ -10550,7 +10577,7 @@
 msgstr "Options"
 
 #: modules/tools/linestats.c:362 modules/tools/sfunctions.c:392
-#: modules/tools/stats.c:381
+#: modules/tools/stats.c:384
 msgid "_Instant updates"
 msgstr "Mises à jour instantanées"
 
@@ -10995,12 +11022,12 @@
 msgid "Roughness Parameters"
 msgstr "Paramètres de rugosité"
 
-#: modules/tools/roughness.c:2041 modules/tools/stats.c:999
+#: modules/tools/roughness.c:2041 modules/tools/stats.c:1002
 #, c-format
 msgid "File:              %s\n"
 msgstr "Fichier :              %s\n"
 
-#: modules/tools/roughness.c:2045 modules/tools/stats.c:1003
+#: modules/tools/roughness.c:2045 modules/tools/stats.c:1006
 #, c-format
 msgid "Data channel:      %s\n"
 msgstr "Canal de données :      %s\n"
@@ -11172,75 +11199,75 @@
 msgid "Fractal interpolation"
 msgstr "Interpolation fractale"
 
-#: modules/tools/stats.c:180
+#: modules/tools/stats.c:182
 msgid "Statistics tool."
 msgstr "Outil statistique."
 
-#: modules/tools/stats.c:217 modules/tools/stats.c:993
+#: modules/tools/stats.c:219 modules/tools/stats.c:996
 msgid "Statistical Quantities"
 msgstr "Statistiques"
 
-#: modules/tools/stats.c:218
+#: modules/tools/stats.c:220
 msgid "Statistical quantities"
 msgstr "Statistiques"
 
-#: modules/tools/stats.c:321
+#: modules/tools/stats.c:323
 msgid "Average value:"
 msgstr "Moyenne :"
 
-#: modules/tools/stats.c:324
+#: modules/tools/stats.c:326
 msgid "Median:"
 msgstr "Médiane :"
 
-#: modules/tools/stats.c:325
+#: modules/tools/stats.c:327
 msgid "Ra (Sa):"
 msgstr "Ra (Sa) :"
 
-#: modules/tools/stats.c:326
+#: modules/tools/stats.c:328
 msgid "Rms (Sq):"
 msgstr "RMS (Sq) :"
 
-#: modules/tools/stats.c:327
+#: modules/tools/stats.c:329
+msgid "Rms (grain-wise):"
+msgstr "RMS (grains) : "
+
+#: modules/tools/stats.c:330
 msgid "Skew:"
 msgstr "Asymétrie :"
 
-#: modules/tools/stats.c:328
+#: modules/tools/stats.c:331
 msgid "Kurtosis:"
 msgstr "Kurtosis :"
 
-#: modules/tools/stats.c:329
+#: modules/tools/stats.c:332
 msgid "Surface area:"
 msgstr "Surface :"
 
-#: modules/tools/stats.c:330
+#: modules/tools/stats.c:333
 msgid "Projected area:"
 msgstr "Surface projetée :"
 
-#: modules/tools/stats.c:331
+#: modules/tools/stats.c:334
 msgid "Inclination θ:"
 msgstr "Inclinaison θ :"
 
-#: modules/tools/stats.c:332
+#: modules/tools/stats.c:335
 msgid "Inclination φ:"
 msgstr "Inclinaison φ :"
 
-#: modules/tools/stats.c:398
-msgid "Parameters"
-msgstr "Paramètres"
-
-#: modules/tools/stats.c:929
+#: modules/tools/stats.c:932
 msgid "Save Statistical Quantities"
 msgstr "Enregistrer les statistiques"
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "Yes"
 msgstr "Oui"
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "No"
 msgstr "Non"
 
-#: modules/tools/stats.c:1062
+#: modules/tools/stats.c:1066
 #, c-format
 msgid ""
 "Selected area:     %s × %s at (%s, %s) px\n"
@@ -11253,6 +11280,7 @@
 "Median:            %s\n"
 "Ra:                %s\n"
 "Rms:               %s\n"
+"Rms (grain-wise):  %s\n"
 "Skew:              %s\n"
 "Kurtosis:          %s\n"
 "Surface area:      %s\n"
@@ -11264,18 +11292,19 @@
 "                    %s × %s at (%s, %s) %s\n"
 "Masque utilisé :    %s\n"
 "\n"
-"Valeur moyenne :    %s\n"
+"Moyenne :           %s\n"
 "Minimum :           %s\n"
 "Maximum :           %s\n"
 "Médiane :           %s\n"
 "Ra :                %s\n"
-"Rms :               %s\n"
+"RMS :               %s\n"
+"RMS (grains) :  %s\n"
 "Asymétrie :         %s\n"
 "Kurtosis :          %s\n"
 "Surface :           %s\n"
 "Surface projetée :  %s\n"
-"Inclinaison θ:      %s\n"
-"Inclinaison φ:      %s\n"
+"Inclinaison θ :      %s\n"
+"Inclinaison φ :      %s\n"
 
 #~ msgid "Gargbage after data sample #%u."
 #~ msgstr "Données erronées après l'échantillon #%u."
diff -Nru gwyddion-2.28/po/gwyddion.pot gwyddion-2.29/po/gwyddion.pot
--- gwyddion-2.28/po/gwyddion.pot	2012-05-18 10:44:03.000000000 +0100
+++ gwyddion-2.29/po/gwyddion.pot	2012-07-19 21:14:11.000000000 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: yeti@gwyddion.net\n"
-"POT-Creation-Date: 2012-05-18 11:44+0200\n"
+"POT-Creation-Date: 2012-07-19 22:14+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME \n"
 "Language-Team: LANGUAGE \n"
@@ -813,7 +813,7 @@
 msgstr ""
 
 #: libgwydgets/gwy3dwindow.c:1116 modules/file/hdrimage.cc:2149
-#: modules/file/pixmap.c:1030 modules/file/pixmap.c:2989
+#: modules/file/pixmap.c:1036 modules/file/pixmap.c:3024
 #: modules/file/rawfile.c:398 modules/process/angle_dist.c:170
 #: modules/process/calcoefs_new.c:347 modules/process/calibrate.c:296
 #: modules/process/col_synth.c:299 modules/process/curvature.c:602
@@ -826,16 +826,17 @@
 #: modules/process/grain_edge.c:217 modules/process/grain_mark.c:262
 #: modules/process/grain_rem_threshold.c:224 modules/process/grain_wshed.c:182
 #: modules/process/hough.c:175 modules/process/latsim.c:158
-#: modules/process/level.c:253 modules/process/lno_synth.c:436
-#: modules/process/local_contrast.c:126 modules/process/median-bg.c:176
-#: modules/process/neural.c:208 modules/process/noise_synth.c:347
-#: modules/process/obj_synth.c:432 modules/process/pat_synth.c:402
-#: modules/process/pid.c:196 modules/process/polydistort.c:219
-#: modules/process/polylevel.c:376 modules/process/rotate.c:264
-#: modules/process/scale.c:193 modules/process/scars.c:469
-#: modules/process/shade.c:214 modules/process/slope_dist.c:201
-#: modules/process/sphere-revolve.c:215 modules/process/tilt.c:156
-#: modules/process/tip_model.c:170 modules/process/unrotate.c:226
+#: modules/process/level.c:255 modules/process/linecorrect.c:274
+#: modules/process/lno_synth.c:436 modules/process/local_contrast.c:126
+#: modules/process/median-bg.c:176 modules/process/neural.c:203
+#: modules/process/noise_synth.c:347 modules/process/obj_synth.c:432
+#: modules/process/pat_synth.c:402 modules/process/pid.c:196
+#: modules/process/polydistort.c:219 modules/process/polylevel.c:376
+#: modules/process/rotate.c:264 modules/process/scale.c:193
+#: modules/process/scars.c:469 modules/process/shade.c:214
+#: modules/process/slope_dist.c:201 modules/process/sphere-revolve.c:215
+#: modules/process/tilt.c:156 modules/process/tip_model.c:170
+#: modules/process/unrotate.c:226
 msgid "_Reset"
 msgstr ""
 
@@ -1158,7 +1159,7 @@
 msgstr ""
 
 #: libgwymodule/gwymodule-file.c:535 modules/file/err.h:40
-#: modules/file/pixmap.c:746
+#: modules/file/pixmap.c:752
 #, c-format
 msgid "Cannot open file for reading: %s."
 msgstr ""
@@ -1588,51 +1589,51 @@
 msgid "Cannot preview"
 msgstr ""
 
-#: app/gwyddion.c:132
+#: app/gwyddion.c:133
 msgid "Loading document history"
 msgstr ""
 
-#: app/gwyddion.c:137
+#: app/gwyddion.c:138
 msgid "Registering "
 msgstr ""
 
-#: app/gwyddion.c:138
+#: app/gwyddion.c:139
 msgid "stock items"
 msgstr ""
 
-#: app/gwyddion.c:142
+#: app/gwyddion.c:143
 msgid "color gradients"
 msgstr ""
 
-#: app/gwyddion.c:144
+#: app/gwyddion.c:145
 msgid "GL materials"
 msgstr ""
 
-#: app/gwyddion.c:146
+#: app/gwyddion.c:147
 msgid "grain quantities"
 msgstr ""
 
-#: app/gwyddion.c:148
+#: app/gwyddion.c:149
 msgid "calibrations"
 msgstr ""
 
-#: app/gwyddion.c:153
+#: app/gwyddion.c:154
 msgid "Loading settings"
 msgstr ""
 
-#: app/gwyddion.c:160
+#: app/gwyddion.c:161
 msgid "Registering modules"
 msgstr ""
 
-#: app/gwyddion.c:182
+#: app/gwyddion.c:183
 msgid "Initializing GUI"
 msgstr ""
 
-#: app/gwyddion.c:391
+#: app/gwyddion.c:392
 msgid "Could not read settings."
 msgstr ""
 
-#: app/gwyddion.c:394
+#: app/gwyddion.c:395
 #, c-format
 msgid ""
 "Settings file `%s' cannot be read: %s\n"
@@ -2520,12 +2521,12 @@
 msgid "Export Text"
 msgstr ""
 
-#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3092
+#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3127
 #: modules/file/rawfile.c:720 modules/file/rawxyz.c:670
 #: modules/process/fft_filter_1d.c:296 modules/process/grain_dist.c:285
 #: modules/process/grain_edge.c:270 modules/process/grain_mark.c:344
 #: modules/process/grain_rem_threshold.c:324 modules/process/grain_wshed.c:278
-#: modules/tools/spotremove.c:319 modules/tools/stats.c:375
+#: modules/tools/spotremove.c:319 modules/tools/stats.c:378
 msgid "Options"
 msgstr ""
 
@@ -2605,7 +2606,7 @@
 msgstr ""
 
 #: modules/file/burleigh_exp.c:225 modules/file/burleigh_exp.c:266
-#: modules/file/nanoscope.c:1098 modules/file/omicron.c:395
+#: modules/file/nanoscope.c:1128 modules/file/omicron.c:397
 #: modules/file/shimadzu.c:404
 msgid "Missing colon in header line."
 msgstr ""
@@ -3034,11 +3035,11 @@
 msgid "Representable"
 msgstr ""
 
-#: modules/file/hdrimage.cc:478 modules/tools/stats.c:322
+#: modules/file/hdrimage.cc:478 modules/tools/stats.c:324
 msgid "Minimum:"
 msgstr ""
 
-#: modules/file/hdrimage.cc:494 modules/tools/stats.c:323
+#: modules/file/hdrimage.cc:494 modules/tools/stats.c:325
 msgid "Maximum:"
 msgstr ""
 
@@ -3057,39 +3058,39 @@
 msgstr ""
 
 #: modules/file/hdrimage.cc:1404 modules/file/hdrimage.cc:1413
-#: modules/file/pixmap.c:1531 modules/file/pixmap.c:1541
+#: modules/file/pixmap.c:1537 modules/file/pixmap.c:1547
 #, c-format
 msgid "libpng initialization error (in %s)"
 msgstr ""
 
-#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1601
+#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1607
 msgid "libpng error occured"
 msgstr ""
 
 #. TRANSLATORS: Dialog title; %s is PNG, TIFF, ...
-#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1027
+#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1033
 #, c-format
 msgid "Import %s"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1054
+#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1060
 msgid "Image Information"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1061
+#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1067
 msgid "Horizontal size:"
 msgstr ""
 
 #: modules/file/hdrimage.cc:2182 modules/file/hdrimage.cc:2188
-#: modules/file/pixmap.c:1061 modules/file/pixmap.c:1067
+#: modules/file/pixmap.c:1067 modules/file/pixmap.c:1073
 msgid "px"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1067
+#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1073
 msgid "Vertical size:"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1072
+#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1078
 msgid "Channels:"
 msgstr ""
 
@@ -3097,21 +3098,21 @@
 msgid "Pages:"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1103
+#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1109
 #: modules/file/rawfile.c:623 modules/file/rawxyz.c:569
 #: modules/process/dimensions.h:465
 msgid "Physical Dimensions"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1113
-#: modules/file/pixmap.c:3035 modules/file/rawfile.c:632
+#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1119
+#: modules/file/pixmap.c:3070 modules/file/rawfile.c:632
 #: modules/process/crosscor.c:197 modules/process/deposit_synth.c:458
 #: modules/process/dimensions.h:471 modules/process/tip_blind.c:265
 msgid "_Width:"
 msgstr ""
 
 #: modules/file/hdrimage.cc:2266 modules/file/hdrimage.cc:2331
-#: modules/file/pixmap.c:1135 modules/file/pixmap.c:1190
+#: modules/file/pixmap.c:1141 modules/file/pixmap.c:1196
 #: modules/file/rawfile.c:655 modules/file/rawfile.c:711
 #: modules/process/calcoefs_new.c:384 modules/process/calcoefs_new.c:451
 #: modules/process/calcoefs_simple.c:390 modules/process/calcoefs_simple.c:457
@@ -3121,30 +3122,30 @@
 msgid "verb|Change"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1148
+#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1154
 #: modules/file/rawfile.c:668 modules/process/crosscor.c:203
 #: modules/process/dimensions.h:475
 msgid "H_eight:"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1155
+#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1161
 #: modules/file/rawfile.c:675 modules/file/rawxyz.c:550
 msgid "Identical _measures"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1167
+#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1173
 #: modules/file/rawfile.c:687
 msgid "_Z-scale (per sample unit):"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1417
+#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1423
 #: modules/file/rawfile.c:1326 modules/process/calcoefs_new.c:776
 #: modules/process/calcoefs_simple.c:1189 modules/process/calcoefs_view.c:1393
 #: modules/process/calibrate.c:816 modules/process/dimensions.h:193
 msgid "Change Units"
 msgstr ""
 
-#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1431
+#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1437
 #: modules/file/rawfile.c:1340 modules/process/calcoefs_new.c:789
 #: modules/process/calcoefs_simple.c:1202 modules/process/calcoefs_view.c:1406
 #: modules/process/calibrate.c:830 modules/process/dimensions.h:206
@@ -3574,7 +3575,7 @@
 msgid "Nanonis SXM files (.sxm)"
 msgstr ""
 
-#: modules/file/nanonis.c:163 modules/file/omicron.c:499
+#: modules/file/nanonis.c:163 modules/file/omicron.c:501
 #: modules/file/unisoku.c:265
 msgid "File header ended unexpectedly."
 msgstr ""
@@ -3617,35 +3618,35 @@
 msgid "File Scan/Measure.xml is missing in the zip file."
 msgstr ""
 
-#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:484
+#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:488
 msgid "Unknown error"
 msgstr ""
 
-#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:489
+#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:493
 msgid "End of file"
 msgstr ""
 
-#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:491
+#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:495
 msgid "End of list of files"
 msgstr ""
 
-#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:493
+#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:497
 msgid "Parameter error"
 msgstr ""
 
-#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:495
+#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:499
 msgid "Bad zip file"
 msgstr ""
 
-#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:497
+#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:501
 msgid "Internal error"
 msgstr ""
 
-#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:499
+#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:503
 msgid "CRC error"
 msgstr ""
 
-#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:502
+#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:506
 #, c-format
 msgid "Minizip error while reading the zip file: %s."
 msgstr ""
@@ -3691,11 +3692,11 @@
 msgid "Nanoscope III files"
 msgstr ""
 
-#: modules/file/nanoscope.c:243
+#: modules/file/nanoscope.c:244
 msgid "File is not a Nanoscope file, or it is a unknown subtype."
 msgstr ""
 
-#: modules/file/nanoscope.c:250
+#: modules/file/nanoscope.c:251
 msgid ""
 "File has been damaged by change of line endings, resulting in corruption of "
 "the binary part of the file.\n"
@@ -3706,16 +3707,16 @@
 "transfer that attempts to store text platform-independently."
 msgstr ""
 
-#: modules/file/nanoscope.c:521 modules/file/nanoscope.c:537
+#: modules/file/nanoscope.c:525 modules/file/nanoscope.c:541
 msgid "Cannot parse `Scan size' field."
 msgstr ""
 
-#: modules/file/nanoscope.c:1007 modules/file/nrrdfile.c:1013
+#: modules/file/nanoscope.c:1037 modules/file/nrrdfile.c:1013
 #, c-format
 msgid "Garbage after data sample #%u."
 msgstr ""
 
-#: modules/file/nanoscope.c:1088
+#: modules/file/nanoscope.c:1118
 msgid "Truncated header line."
 msgstr ""
 
@@ -3836,39 +3837,52 @@
 msgid "Per-axis header field %s contains too few items."
 msgstr ""
 
-#: modules/file/nt-mdt.c:658
+#: modules/file/nt-mdt.c:694
 msgid "Imports NT-MDT data files."
 msgstr ""
 
-#: modules/file/nt-mdt.c:671
+#: modules/file/nt-mdt.c:707
 msgid "NT-MDT files (.mdt)"
 msgstr ""
 
-#: modules/file/nt-mdt.c:1096
+#: modules/file/nt-mdt.c:1156
 msgid "Frame is too short for Frame Mode."
 msgstr ""
 
-#: modules/file/nt-mdt.c:1110
+#: modules/file/nt-mdt.c:1170
 msgid "Frame is too short for dots or data."
 msgstr ""
 
-#: modules/file/nt-mdt.c:1369
+#: modules/file/nt-mdt.c:1429
 #, c-format
 msgid "End of file reached in frame header #%u."
 msgstr ""
 
-#: modules/file/nt-mdt.c:1377
+#: modules/file/nt-mdt.c:1437
 #, c-format
 msgid "End of file reached in frame data #%u."
 msgstr ""
 
-#: modules/file/nt-mdt.c:1412
+#: modules/file/nt-mdt.c:1472
 #, c-format
 msgid "Frame #%u is too short for scanned data header."
 msgstr ""
 
-#: modules/file/nt-mdt.c:2464
-msgid "Raman Image"
+#: modules/file/nt-mdt.c:2794 modules/tools/filter.c:209
+#: modules/tools/icolorange.c:396 modules/tools/linestats.c:154
+msgid "Maximum"
+msgstr ""
+
+#: modules/file/nt-mdt.c:2795
+msgid "Max. position"
+msgstr ""
+
+#: modules/file/nt-mdt.c:2796
+msgid "Average"
+msgstr ""
+
+#: modules/file/nt-mdt.c:2809
+msgid "Raman Image Import"
 msgstr ""
 
 #: modules/file/oldmda.c:146
@@ -3908,11 +3922,11 @@
 msgid "Omicron files (.par + data)"
 msgstr ""
 
-#: modules/file/omicron.c:401
+#: modules/file/omicron.c:403
 msgid "Header line starts with a colon."
 msgstr ""
 
-#: modules/file/omicron.c:508
+#: modules/file/omicron.c:510
 msgid "Channel information ended unexpectedly."
 msgstr ""
 
@@ -3966,152 +3980,152 @@
 msgid "Truncated data in block %s"
 msgstr ""
 
-#: modules/file/pixmap.c:350
+#: modules/file/pixmap.c:356
 msgid "All channels"
 msgstr ""
 
-#: modules/file/pixmap.c:351
+#: modules/file/pixmap.c:357
 msgid "Red"
 msgstr ""
 
-#: modules/file/pixmap.c:352
+#: modules/file/pixmap.c:358
 msgid "Green"
 msgstr ""
 
-#: modules/file/pixmap.c:353
+#: modules/file/pixmap.c:359
 msgid "Blue"
 msgstr ""
 
-#: modules/file/pixmap.c:354
+#: modules/file/pixmap.c:360
 msgid "Value (max)"
 msgstr ""
 
-#: modules/file/pixmap.c:355
+#: modules/file/pixmap.c:361
 msgid "RGB sum"
 msgstr ""
 
-#: modules/file/pixmap.c:356
+#: modules/file/pixmap.c:362
 msgid "Luma"
 msgstr ""
 
-#: modules/file/pixmap.c:357
+#: modules/file/pixmap.c:363
 msgid "Alpha"
 msgstr ""
 
-#: modules/file/pixmap.c:369
+#: modules/file/pixmap.c:375
 msgid "Portable Network Graphics (.png)"
 msgstr ""
 
-#: modules/file/pixmap.c:375
+#: modules/file/pixmap.c:381
 msgid "JPEG (.jpeg,.jpg)"
 msgstr ""
 
-#: modules/file/pixmap.c:381
+#: modules/file/pixmap.c:387
 msgid "TIFF (.tiff,.tif)"
 msgstr ""
 
-#: modules/file/pixmap.c:387
+#: modules/file/pixmap.c:393
 msgid "Portable Pixmap (.ppm,.pnm)"
 msgstr ""
 
-#: modules/file/pixmap.c:393
+#: modules/file/pixmap.c:399
 msgid "Windows or OS2 Bitmap (.bmp)"
 msgstr ""
 
-#: modules/file/pixmap.c:399
+#: modules/file/pixmap.c:405
 msgid "TARGA (.tga,.targa)"
 msgstr ""
 
-#: modules/file/pixmap.c:412
+#: modules/file/pixmap.c:418
 msgid "Graphics Interchange Format (.gif)"
 msgstr ""
 
-#: modules/file/pixmap.c:416
+#: modules/file/pixmap.c:422
 msgid "JPEG 2000 (.jpx)"
 msgstr ""
 
-#: modules/file/pixmap.c:420
+#: modules/file/pixmap.c:426
 msgid "PCX (.pcx)"
 msgstr ""
 
-#: modules/file/pixmap.c:424
+#: modules/file/pixmap.c:430
 msgid "X Pixmap (.xpm)"
 msgstr ""
 
-#: modules/file/pixmap.c:428
+#: modules/file/pixmap.c:434
 msgid "Sun raster image (.ras)"
 msgstr ""
 
-#: modules/file/pixmap.c:432
+#: modules/file/pixmap.c:438
 msgid "Apple icon (.icns)"
 msgstr ""
 
-#: modules/file/pixmap.c:456
+#: modules/file/pixmap.c:462
 msgid ""
 "Renders data into pixmap images and imports data from pixmap images. It "
 "supports the following image formats for export: PNG, JPEG, TIFF, PPM, BMP, "
 "TARGA. Import support relies on GDK and thus may be installation-dependent."
 msgstr ""
 
-#: modules/file/pixmap.c:740
+#: modules/file/pixmap.c:746
 #, c-format
 msgid "Pixmap has not registered file type `%s'."
 msgstr ""
 
-#: modules/file/pixmap.c:754
+#: modules/file/pixmap.c:760
 #, c-format
 msgid "Cannot get pixbuf loader: %s."
 msgstr ""
 
-#: modules/file/pixmap.c:766 modules/file/pixmap.c:778
+#: modules/file/pixmap.c:772 modules/file/pixmap.c:784
 #, c-format
 msgid "Pixbuf loader refused data: %s."
 msgstr ""
 
-#: modules/file/pixmap.c:1200
+#: modules/file/pixmap.c:1206
 msgid ""
 "Warning: Colorful images cannot be reliably mapped to meaningful values."
 msgstr ""
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "verb|Use"
 msgstr ""
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "as data"
 msgstr ""
 
-#: modules/file/pixmap.c:1688 modules/file/pixmap.c:1716
+#: modules/file/pixmap.c:1694 modules/file/pixmap.c:1722
 #, c-format
 msgid "Pixbuf save failed: %s."
 msgstr ""
 
-#: modules/file/pixmap.c:2126
+#: modules/file/pixmap.c:2132
 msgid "Image is too large to be stored as TARGA."
 msgstr ""
 
-#: modules/file/pixmap.c:2207
+#: modules/file/pixmap.c:2213
 msgid "Data must be displayed in a window for pixmap export."
 msgstr ""
 
-#: modules/file/pixmap.c:2927
+#: modules/file/pixmap.c:2936
 msgid "Change Inset Color"
 msgstr ""
 
-#: modules/file/pixmap.c:2986
+#: modules/file/pixmap.c:3021
 #, c-format
 msgid "Export %s"
 msgstr ""
 
-#: modules/file/pixmap.c:3017
+#: modules/file/pixmap.c:3052
 msgid "Scaling"
 msgstr ""
 
-#: modules/file/pixmap.c:3026
+#: modules/file/pixmap.c:3061
 msgid "_Zoom:"
 msgstr ""
 
-#: modules/file/pixmap.c:3044 modules/process/col_synth.c:400
+#: modules/file/pixmap.c:3079 modules/process/col_synth.c:400
 #: modules/process/grain_mark.c:309 modules/process/grain_rem_threshold.c:280
 #: modules/process/obj_synth.c:573 modules/process/pat_synth.c:889
 #: modules/process/pat_synth.c:1190 modules/process/pat_synth.c:1525
@@ -4119,91 +4133,99 @@
 msgid "_Height:"
 msgstr ""
 
-#: modules/file/pixmap.c:3052
+#: modules/file/pixmap.c:3087
 msgid "Font:"
 msgstr ""
 
-#: modules/file/pixmap.c:3067
+#: modules/file/pixmap.c:3102
 msgid "Scale text _proportionally"
 msgstr ""
 
-#: modules/file/pixmap.c:3082
+#: modules/file/pixmap.c:3117
 msgid "_Font size:"
 msgstr ""
 
-#: modules/file/pixmap.c:3096
+#: modules/file/pixmap.c:3131
 msgid "Draw _mask"
 msgstr ""
 
-#: modules/file/pixmap.c:3105
+#: modules/file/pixmap.c:3140
 msgid "Draw _selection"
 msgstr ""
 
-#: modules/file/pixmap.c:3121
+#: modules/file/pixmap.c:3156
 msgid "Grayscale Mode"
 msgstr ""
 
-#: modules/file/pixmap.c:3125
+#: modules/file/pixmap.c:3160
 msgid "Export as 1_6 bit grayscale"
 msgstr ""
 
-#: modules/file/pixmap.c:3151
+#: modules/file/pixmap.c:3186
 msgid "Lateral Scale"
 msgstr ""
 
-#: modules/file/pixmap.c:3158 modules/file/pixmap.c:3253
+#: modules/file/pixmap.c:3193 modules/file/pixmap.c:3308
 msgid "ruler|_None"
 msgstr ""
 
-#: modules/file/pixmap.c:3159
+#: modules/file/pixmap.c:3194
 msgid "_Rulers"
 msgstr ""
 
-#: modules/file/pixmap.c:3160
+#: modules/file/pixmap.c:3195
 msgid "_Inset scale bar"
 msgstr ""
 
-#: modules/file/pixmap.c:3165
+#: modules/file/pixmap.c:3200
 msgid "Color:"
 msgstr ""
 
-#: modules/file/pixmap.c:3181 modules/process/immerse.c:323
+#: modules/file/pixmap.c:3216 modules/process/immerse.c:323
 msgid "Position:"
 msgstr ""
 
-#: modules/file/pixmap.c:3186
+#: modules/file/pixmap.c:3221
 msgid "left"
 msgstr ""
 
-#: modules/file/pixmap.c:3190
+#: modules/file/pixmap.c:3225
 msgid "center"
 msgstr ""
 
-#: modules/file/pixmap.c:3194
+#: modules/file/pixmap.c:3229
 msgid "right"
 msgstr ""
 
-#: modules/file/pixmap.c:3199
+#: modules/file/pixmap.c:3234
 msgid "top"
 msgstr ""
 
-#: modules/file/pixmap.c:3211
+#: modules/file/pixmap.c:3246
 msgid "bottom"
 msgstr ""
 
-#: modules/file/pixmap.c:3222 modules/process/lno_synth.c:1066
+#: modules/file/pixmap.c:3257 modules/process/lno_synth.c:1066
 msgid "_Length:"
 msgstr ""
 
-#: modules/file/pixmap.c:3238
+#: modules/file/pixmap.c:3273
 msgid "_Auto"
 msgstr ""
 
-#: modules/file/pixmap.c:3246
+#: modules/file/pixmap.c:3281
+msgid "Draw _ticks"
+msgstr ""
+
+#: modules/file/pixmap.c:3291
+msgid "Draw _label"
+msgstr ""
+
+#: modules/file/pixmap.c:3301
 msgid "Value Scale"
 msgstr ""
 
-#: modules/file/pixmap.c:3254
+#: modules/file/pixmap.c:3309
 msgid "_False color ruler"
 msgstr ""
 
@@ -4377,7 +4399,7 @@
 #: modules/process/mark_with.c:211 modules/process/polydistort.c:214
 #: modules/process/scars.c:466 modules/process/synth.h:479
 #: modules/process/tip_model.c:167 modules/tools/linestats.c:420
-#: modules/tools/sfunctions.c:475 modules/tools/stats.c:432
+#: modules/tools/sfunctions.c:475 modules/tools/stats.c:435
 msgid "_Update"
 msgstr ""
 
@@ -4877,7 +4899,7 @@
 msgid "Seiko files (.xqb, .xqd, .xqt)"
 msgstr ""
 
-#: modules/file/seiko.c:239
+#: modules/file/seiko.c:251
 msgid ""
 "Cannot determine scan dimensions; it seems non-square with an unknown side "
 "ratio."
@@ -5105,11 +5127,11 @@
 msgid "Surf files (.sur)"
 msgstr ""
 
-#: modules/file/tiaser.c:166
+#: modules/file/tiaser.c:172
 msgid "Imports FEI Tecnai imaging and analysis (former Emispec) files."
 msgstr ""
 
-#: modules/file/tiaser.c:179
+#: modules/file/tiaser.c:185
 msgid "FEI TIA (Emispec) data"
 msgstr ""
 
@@ -5289,10 +5311,10 @@
 #: modules/graph/graph_cd.c:692 modules/graph/graph_fdfit.c:780
 #: modules/graph/graph_fit.c:804 modules/tools/grainmeasure.c:215
 #: modules/tools/readvalue.c:576 modules/tools/readvalue.c:577
-#: modules/tools/roughness.c:957 modules/tools/stats.c:661
-#: modules/tools/stats.c:672 modules/tools/stats.c:673
-#: modules/tools/stats.c:1050 modules/tools/stats.c:1057
-#: modules/tools/stats.c:1059
+#: modules/tools/roughness.c:957 modules/tools/stats.c:666
+#: modules/tools/stats.c:677 modules/tools/stats.c:678
+#: modules/tools/stats.c:1054 modules/tools/stats.c:1061
+#: modules/tools/stats.c:1063
 msgid "N.A."
 msgstr ""
 
@@ -5719,7 +5741,7 @@
 msgid "_Expression:"
 msgstr ""
 
-#: modules/process/arithmetic.c:294
+#: modules/process/arithmetic.c:294 modules/process/neural.c:220
 msgid "Operands"
 msgstr ""
 
@@ -5996,7 +6018,7 @@
 msgstr ""
 
 #: modules/process/calcoefs_simple.c:342 modules/process/calcoefs_stage.c:149
-#: modules/process/neural.c:225 modules/process/superresolution.c:159
+#: modules/process/superresolution.c:159
 msgid "Operands:"
 msgstr ""
 
@@ -6560,20 +6582,21 @@
 msgstr ""
 
 #: modules/process/curvature.c:684 modules/process/facet-level.c:297
-#: modules/process/level.c:267 modules/process/polylevel.c:495
-#: modules/tools/sfunctions.c:457 modules/tools/stats.c:362
+#: modules/process/level.c:269 modules/process/linecorrect.c:288
+#: modules/process/polylevel.c:495 modules/tools/sfunctions.c:457
+#: modules/tools/stats.c:365
 msgid "Masking Mode"
 msgstr ""
 
-#: modules/process/curvature.c:754 modules/process/grain_dist.c:827
+#: modules/process/curvature.c:754 modules/process/grain_dist.c:835
 #: modules/tools/distance.c:227 modules/tools/roughness.c:824
-#: modules/tools/stats.c:423
+#: modules/tools/stats.c:426
 msgid "Save table to a file"
 msgstr ""
 
-#: modules/process/curvature.c:759 modules/process/grain_dist.c:832
+#: modules/process/curvature.c:759 modules/process/grain_dist.c:840
 #: modules/tools/distance.c:232 modules/tools/roughness.c:829
-#: modules/tools/stats.c:428
+#: modules/tools/stats.c:431
 msgid "Copy table to clipboard"
 msgstr ""
 
@@ -7668,42 +7691,46 @@
 msgid "Data channel:"
 msgstr ""
 
-#: modules/process/grain_dist.c:734 modules/process/grain_dist.c:806
+#: modules/process/grain_dist.c:736 modules/process/grain_dist.c:814
 msgid "Grain Statistics"
 msgstr ""
 
-#: modules/process/grain_dist.c:746
+#: modules/process/grain_dist.c:748
 msgid "Number of grains:"
 msgstr ""
 
-#: modules/process/grain_dist.c:755
+#: modules/process/grain_dist.c:757
 msgid "Total projected area (abs.):"
 msgstr ""
 
-#: modules/process/grain_dist.c:759
+#: modules/process/grain_dist.c:761
 msgid "Total projected area (rel.):"
 msgstr ""
 
-#: modules/process/grain_dist.c:765
+#: modules/process/grain_dist.c:767
 msgid "Mean grain area:"
 msgstr ""
 
-#: modules/process/grain_dist.c:771
+#: modules/process/grain_dist.c:773
 msgid "Mean grain size:"
 msgstr ""
 
-#: modules/process/grain_dist.c:780
+#: modules/process/grain_dist.c:782
 msgid "Total grain volume (zero):"
 msgstr ""
 
-#: modules/process/grain_dist.c:786
+#: modules/process/grain_dist.c:788
 msgid "Total grain volume (minimum):"
 msgstr ""
 
-#: modules/process/grain_dist.c:792
+#: modules/process/grain_dist.c:794
 msgid "Total grain volume (laplacian):"
 msgstr ""
 
+#: modules/process/grain_dist.c:800
+msgid "Total projected boundary length:"
+msgstr ""
+
 #: modules/process/grain_edge.c:106
 msgid "Marks grains by edge detection method."
 msgstr ""
@@ -8356,50 +8383,54 @@
 msgid "E_xtract background"
 msgstr ""
 
-#: modules/process/linecorrect.c:64
+#: modules/process/linecorrect.c:88
 msgid "Corrects line defects (mostly experimental algorithms)."
 msgstr ""
 
-#: modules/process/linecorrect.c:78
+#: modules/process/linecorrect.c:102
 msgid "/_Correct Data/M_odus Line Correction"
 msgstr ""
 
-#: modules/process/linecorrect.c:82
+#: modules/process/linecorrect.c:106
 msgid "Correct lines by matching height modus"
 msgstr ""
 
-#: modules/process/linecorrect.c:85
+#: modules/process/linecorrect.c:109
 msgid "/_Correct Data/M_edian Line Correction"
 msgstr ""
 
-#: modules/process/linecorrect.c:89
+#: modules/process/linecorrect.c:113
 msgid "Correct lines by matching height median"
 msgstr ""
 
-#: modules/process/linecorrect.c:92
+#: modules/process/linecorrect.c:116
 msgid "/_Correct Data/Median Di_fference Line Correction"
 msgstr ""
 
-#: modules/process/linecorrect.c:96
+#: modules/process/linecorrect.c:120
 msgid "Correct lines by zeroing median of differences between neighbor lines"
 msgstr ""
 
-#: modules/process/linecorrect.c:100
+#: modules/process/linecorrect.c:124
 msgid "/_Correct Data/Ma_tch Line Correction"
 msgstr ""
 
-#: modules/process/linecorrect.c:104
+#: modules/process/linecorrect.c:128
 msgid "Correct lines by matching flat segments"
 msgstr ""
 
-#: modules/process/linecorrect.c:107
+#: modules/process/linecorrect.c:131
 msgid "/_Correct Data/Ste_p Line Correction"
 msgstr ""
 
-#: modules/process/linecorrect.c:111
+#: modules/process/linecorrect.c:135
 msgid "Correct steps in lines"
 msgstr ""
 
+#: modules/process/linecorrect.c:198
+msgid "Median Line Correction"
+msgstr ""
+
 #: modules/process/lno_synth.c:249 modules/process/noise_synth.c:183
 msgid "distribution|Gaussian"
 msgstr ""
@@ -8813,71 +8844,83 @@
 msgid "Immersed detail data"
 msgstr ""
 
-#: modules/process/neural.c:147
+#: modules/process/neural.c:144
 msgid "Neural network SPM data processing"
 msgstr ""
 
-#: modules/process/neural.c:161
-msgid "/M_ultidata/_Neural network..."
+#: modules/process/neural.c:158
+msgid "/M_ultidata/_Neural Network..."
 msgstr ""
 
-#: modules/process/neural.c:165
+#: modules/process/neural.c:162
 msgid "Neural network AFM data processing"
 msgstr ""
 
-#: modules/process/neural.c:207
-msgid "Neural network"
+#: modules/process/neural.c:202
+msgid "Neural Network"
+msgstr ""
+
+#: modules/process/neural.c:227
+msgid "Training _model:"
 msgstr ""
 
 #: modules/process/neural.c:233
-msgid "Training model:"
+msgid "Training _signal:"
 msgstr ""
 
-#: modules/process/neural.c:240
-msgid "Training signal:"
+#: modules/process/neural.c:239
+msgid "Res_ult model:"
 msgstr ""
 
-#: modules/process/neural.c:247
-msgid "Result model:"
+#: modules/process/neural.c:244 modules/tools/stats.c:401
+msgid "Parameters"
 msgstr ""
 
-#: modules/process/neural.c:254
-msgid "Window width:"
+#: modules/process/neural.c:250
+msgid "Window _width:"
 msgstr ""
 
-#: modules/process/neural.c:260
-msgid "Window height:"
+#: modules/process/neural.c:256
+msgid "Window h_eight:"
 msgstr ""
 
-#: modules/process/neural.c:266
-msgid "Training steps:"
+#: modules/process/neural.c:262
+msgid "_Training steps:"
 msgstr ""
 
-#: modules/process/neural.c:272
-msgid "Hidden nodes:"
+#: modules/process/neural.c:268
+msgid "_Hidden nodes:"
 msgstr ""
 
-#: modules/process/neural.c:364
+#: modules/process/neural.c:360
 msgid "Data not compatible"
 msgstr ""
 
-#: modules/process/neural.c:389 modules/process/pid.c:334
+#: modules/process/neural.c:388 modules/process/pid.c:334
 msgid "Starting..."
 msgstr ""
 
-#: modules/process/neural.c:491
+#: modules/process/neural.c:409
+msgid "Training..."
+msgstr ""
+
+#: modules/process/neural.c:451
+msgid "Evaluating..."
+msgstr ""
+
+#: modules/process/neural.c:493
 msgid "Evaluated signal"
 msgstr ""
 
-#: modules/process/neural.c:497
+#: modules/process/neural.c:499
 msgid "Training error"
 msgstr ""
 
-#: modules/process/neural.c:498
+#: modules/process/neural.c:500
 msgid "error"
 msgstr ""
 
-#: modules/process/neural.c:504
+#: modules/process/neural.c:506
 msgid "NN training error"
 msgstr ""
 
@@ -8938,7 +8981,7 @@
 msgstr ""
 
 #: modules/process/obj_synth.c:284
-msgid "Dougnuts"
+msgid "Doughnuts"
 msgstr ""
 
 #: modules/process/obj_synth.c:290
@@ -9844,59 +9887,59 @@
 msgid "Denoised"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:53
+#: modules/pygwy/pygwy-console.c:54
 msgid "/Pygwy Console"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:57
+#: modules/pygwy/pygwy-console.c:58
 msgid "Python wrapper console"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:155
+#: modules/pygwy/pygwy-console.c:156
 msgid ">>> Running file content of below textfield\n"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:180
+#: modules/pygwy/pygwy-console.c:181
 msgid "Open Python script"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:244
+#: modules/pygwy/pygwy-console.c:245
 msgid "Save Script as"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:283
+#: modules/pygwy/pygwy-console.c:284
 msgid "Pygwy Console"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:295
+#: modules/pygwy/pygwy-console.c:296
 msgid "Open script in Python language (Ctrl-O)"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:297
+#: modules/pygwy/pygwy-console.c:298
 msgid "Save script (Ctrl-S)"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:299
+#: modules/pygwy/pygwy-console.c:300
 msgid "Execute script (Ctrl-E)"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:377
+#: modules/pygwy/pygwy-console.c:378
 msgid "Command"
 msgstr ""
 
-#: pygwy.c:91
+#: pygwy.c:99
 msgid "Pygwy, the Gwyddion Python wrapper."
 msgstr ""
 
-#: pygwy.c:443
+#: pygwy.c:520
 msgid "Function written in Python"
 msgstr ""
 
-#: pygwy.c:489
+#: pygwy.c:566
 msgid "Graph function written in Python"
 msgstr ""
 
-#: pygwy.c:899
+#: pygwy.c:976
 #, c-format
 msgid ""
 "Pygwy plugin: %s (%s)\n"
@@ -9949,11 +9992,6 @@
 msgid "Conservative denoise"
 msgstr ""
 
-#: modules/tools/filter.c:209 modules/tools/icolorange.c:396
-#: modules/tools/linestats.c:154
-msgid "Maximum"
-msgstr ""
-
 #: modules/tools/filter.c:210
 msgid "Kuwahara"
 msgstr ""
@@ -10177,7 +10215,7 @@
 msgstr ""
 
 #: modules/tools/linestats.c:362 modules/tools/sfunctions.c:392
-#: modules/tools/stats.c:381
+#: modules/tools/stats.c:384
 msgid "_Instant updates"
 msgstr ""
 
@@ -10613,12 +10651,12 @@
 msgid "Roughness Parameters"
 msgstr ""
 
-#: modules/tools/roughness.c:2041 modules/tools/stats.c:999
+#: modules/tools/roughness.c:2041 modules/tools/stats.c:1002
 #, c-format
 msgid "File:              %s\n"
 msgstr ""
 
-#: modules/tools/roughness.c:2045 modules/tools/stats.c:1003
+#: modules/tools/roughness.c:2045 modules/tools/stats.c:1006
 #, c-format
 msgid "Data channel:      %s\n"
 msgstr ""
@@ -10783,75 +10821,75 @@
 msgid "Fractal interpolation"
 msgstr ""
 
-#: modules/tools/stats.c:180
+#: modules/tools/stats.c:182
 msgid "Statistics tool."
 msgstr ""
 
-#: modules/tools/stats.c:217 modules/tools/stats.c:993
+#: modules/tools/stats.c:219 modules/tools/stats.c:996
 msgid "Statistical Quantities"
 msgstr ""
 
-#: modules/tools/stats.c:218
+#: modules/tools/stats.c:220
 msgid "Statistical quantities"
 msgstr ""
 
-#: modules/tools/stats.c:321
+#: modules/tools/stats.c:323
 msgid "Average value:"
 msgstr ""
 
-#: modules/tools/stats.c:324
+#: modules/tools/stats.c:326
 msgid "Median:"
 msgstr ""
 
-#: modules/tools/stats.c:325
+#: modules/tools/stats.c:327
 msgid "Ra (Sa):"
 msgstr ""
 
-#: modules/tools/stats.c:326
+#: modules/tools/stats.c:328
 msgid "Rms (Sq):"
 msgstr ""
 
-#: modules/tools/stats.c:327
+#: modules/tools/stats.c:329
+msgid "Rms (grain-wise):"
+msgstr ""
+
+#: modules/tools/stats.c:330
 msgid "Skew:"
 msgstr ""
 
-#: modules/tools/stats.c:328
+#: modules/tools/stats.c:331
 msgid "Kurtosis:"
 msgstr ""
 
-#: modules/tools/stats.c:329
+#: modules/tools/stats.c:332
 msgid "Surface area:"
 msgstr ""
 
-#: modules/tools/stats.c:330
+#: modules/tools/stats.c:333
 msgid "Projected area:"
 msgstr ""
 
-#: modules/tools/stats.c:331
+#: modules/tools/stats.c:334
 msgid "Inclination θ:"
 msgstr ""
 
-#: modules/tools/stats.c:332
+#: modules/tools/stats.c:335
 msgid "Inclination φ:"
 msgstr ""
 
-#: modules/tools/stats.c:398
-msgid "Parameters"
-msgstr ""
-
-#: modules/tools/stats.c:929
+#: modules/tools/stats.c:932
 msgid "Save Statistical Quantities"
 msgstr ""
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "Yes"
 msgstr ""
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "No"
 msgstr ""
 
-#: modules/tools/stats.c:1062
+#: modules/tools/stats.c:1066
 #, c-format
 msgid ""
 "Selected area:     %s × %s at (%s, %s) px\n"
@@ -10864,6 +10902,7 @@
 "Median:            %s\n"
 "Ra:                %s\n"
 "Rms:               %s\n"
+"Rms (grain-wise):  %s\n"
 "Skew:              %s\n"
 "Kurtosis:          %s\n"
 "Surface area:      %s\n"
Binary files /tmp/6W43BMtPno/gwyddion-2.28/po/it.gmo and /tmp/ug3yy2UQEY/gwyddion-2.29/po/it.gmo differ
diff -Nru gwyddion-2.28/po/it.po gwyddion-2.29/po/it.po
--- gwyddion-2.28/po/it.po	2012-05-18 10:44:03.000000000 +0100
+++ gwyddion-2.29/po/it.po	2012-07-19 21:14:11.000000000 +0100
@@ -12,7 +12,7 @@
 msgstr ""
 "Project-Id-Version: it\n"
 "Report-Msgid-Bugs-To: yeti@gwyddion.net\n"
-"POT-Creation-Date: 2012-05-18 11:44+0200\n"
+"POT-Creation-Date: 2012-07-19 22:14+0200\n"
 "PO-Revision-Date: 2011-12-05 21:48+0100\n"
 "Last-Translator: \n"
 "Language-Team: Italian \n"
@@ -818,7 +818,7 @@
 msgstr "pixel"
 
 #: libgwydgets/gwy3dwindow.c:1116 modules/file/hdrimage.cc:2149
-#: modules/file/pixmap.c:1030 modules/file/pixmap.c:2989
+#: modules/file/pixmap.c:1036 modules/file/pixmap.c:3024
 #: modules/file/rawfile.c:398 modules/process/angle_dist.c:170
 #: modules/process/calcoefs_new.c:347 modules/process/calibrate.c:296
 #: modules/process/col_synth.c:299 modules/process/curvature.c:602
@@ -831,16 +831,17 @@
 #: modules/process/grain_edge.c:217 modules/process/grain_mark.c:262
 #: modules/process/grain_rem_threshold.c:224 modules/process/grain_wshed.c:182
 #: modules/process/hough.c:175 modules/process/latsim.c:158
-#: modules/process/level.c:253 modules/process/lno_synth.c:436
-#: modules/process/local_contrast.c:126 modules/process/median-bg.c:176
-#: modules/process/neural.c:208 modules/process/noise_synth.c:347
-#: modules/process/obj_synth.c:432 modules/process/pat_synth.c:402
-#: modules/process/pid.c:196 modules/process/polydistort.c:219
-#: modules/process/polylevel.c:376 modules/process/rotate.c:264
-#: modules/process/scale.c:193 modules/process/scars.c:469
-#: modules/process/shade.c:214 modules/process/slope_dist.c:201
-#: modules/process/sphere-revolve.c:215 modules/process/tilt.c:156
-#: modules/process/tip_model.c:170 modules/process/unrotate.c:226
+#: modules/process/level.c:255 modules/process/linecorrect.c:274
+#: modules/process/lno_synth.c:436 modules/process/local_contrast.c:126
+#: modules/process/median-bg.c:176 modules/process/neural.c:203
+#: modules/process/noise_synth.c:347 modules/process/obj_synth.c:432
+#: modules/process/pat_synth.c:402 modules/process/pid.c:196
+#: modules/process/polydistort.c:219 modules/process/polylevel.c:376
+#: modules/process/rotate.c:264 modules/process/scale.c:193
+#: modules/process/scars.c:469 modules/process/shade.c:214
+#: modules/process/slope_dist.c:201 modules/process/sphere-revolve.c:215
+#: modules/process/tilt.c:156 modules/process/tip_model.c:170
+#: modules/process/unrotate.c:226
 msgid "_Reset"
 msgstr "_Ripristina"
 
@@ -1163,7 +1164,7 @@
 msgstr "Anteprima"
 
 #: libgwymodule/gwymodule-file.c:535 modules/file/err.h:40
-#: modules/file/pixmap.c:746
+#: modules/file/pixmap.c:752
 #, c-format
 msgid "Cannot open file for reading: %s."
 msgstr "Non è possibile aprire il file in lettura: %s."
@@ -1617,51 +1618,51 @@
 msgid "Cannot preview"
 msgstr "Impossibile visualizzare anteprima"
 
-#: app/gwyddion.c:132
+#: app/gwyddion.c:133
 msgid "Loading document history"
 msgstr "Carica cronologia"
 
-#: app/gwyddion.c:137
+#: app/gwyddion.c:138
 msgid "Registering "
 msgstr "Registrazione "
 
-#: app/gwyddion.c:138
+#: app/gwyddion.c:139
 msgid "stock items"
 msgstr ""
 
-#: app/gwyddion.c:142
+#: app/gwyddion.c:143
 msgid "color gradients"
 msgstr "Gradienti colore"
 
-#: app/gwyddion.c:144
+#: app/gwyddion.c:145
 msgid "GL materials"
 msgstr "Materiali GL"
 
-#: app/gwyddion.c:146
+#: app/gwyddion.c:147
 msgid "grain quantities"
 msgstr "Quantità Grani"
 
-#: app/gwyddion.c:148
+#: app/gwyddion.c:149
 msgid "calibrations"
 msgstr "calibrazioni"
 
-#: app/gwyddion.c:153
+#: app/gwyddion.c:154
 msgid "Loading settings"
 msgstr "Caricamento preferenze"
 
-#: app/gwyddion.c:160
+#: app/gwyddion.c:161
 msgid "Registering modules"
 msgstr "Registrazione moduli"
 
-#: app/gwyddion.c:182
+#: app/gwyddion.c:183
 msgid "Initializing GUI"
 msgstr "Inizializzazione GUI"
 
-#: app/gwyddion.c:391
+#: app/gwyddion.c:392
 msgid "Could not read settings."
 msgstr "Impossibile leggere le preferenze."
 
-#: app/gwyddion.c:394
+#: app/gwyddion.c:395
 #, c-format
 msgid ""
 "Settings file `%s' cannot be read: %s\n"
@@ -2665,12 +2666,12 @@
 msgid "Export Text"
 msgstr "Esporta Testo"
 
-#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3092
+#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3127
 #: modules/file/rawfile.c:720 modules/file/rawxyz.c:670
 #: modules/process/fft_filter_1d.c:296 modules/process/grain_dist.c:285
 #: modules/process/grain_edge.c:270 modules/process/grain_mark.c:344
 #: modules/process/grain_rem_threshold.c:324 modules/process/grain_wshed.c:278
-#: modules/tools/spotremove.c:319 modules/tools/stats.c:375
+#: modules/tools/spotremove.c:319 modules/tools/stats.c:378
 msgid "Options"
 msgstr "Opzioni"
 
@@ -2750,7 +2751,7 @@
 msgstr "Dati esportati Burleigh (.txt, .bin)"
 
 #: modules/file/burleigh_exp.c:225 modules/file/burleigh_exp.c:266
-#: modules/file/nanoscope.c:1098 modules/file/omicron.c:395
+#: modules/file/nanoscope.c:1128 modules/file/omicron.c:397
 #: modules/file/shimadzu.c:404
 msgid "Missing colon in header line."
 msgstr "\":\" mancanti nel file intestazione."
@@ -3192,11 +3193,11 @@
 msgid "Representable"
 msgstr "Rappresentabile"
 
-#: modules/file/hdrimage.cc:478 modules/tools/stats.c:322
+#: modules/file/hdrimage.cc:478 modules/tools/stats.c:324
 msgid "Minimum:"
 msgstr "Minimo:"
 
-#: modules/file/hdrimage.cc:494 modules/tools/stats.c:323
+#: modules/file/hdrimage.cc:494 modules/tools/stats.c:325
 msgid "Maximum:"
 msgstr "Massimo:"
 
@@ -3215,39 +3216,39 @@
 msgstr "Il tipo dati OpenEXR %u non è valido o non è supportato."
 
 #: modules/file/hdrimage.cc:1404 modules/file/hdrimage.cc:1413
-#: modules/file/pixmap.c:1531 modules/file/pixmap.c:1541
+#: modules/file/pixmap.c:1537 modules/file/pixmap.c:1547
 #, c-format
 msgid "libpng initialization error (in %s)"
 msgstr "errore inizializzazione libpng (in %s)"
 
-#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1601
+#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1607
 msgid "libpng error occured"
 msgstr "Errore libpng"
 
 #. TRANSLATORS: Dialog title; %s is PNG, TIFF, ...
-#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1027
+#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1033
 #, c-format
 msgid "Import %s"
 msgstr "Importa %s"
 
-#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1054
+#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1060
 msgid "Image Information"
 msgstr "Informazioni immagine"
 
-#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1061
+#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1067
 msgid "Horizontal size:"
 msgstr "Dimensione orizzontale:"
 
 #: modules/file/hdrimage.cc:2182 modules/file/hdrimage.cc:2188
-#: modules/file/pixmap.c:1061 modules/file/pixmap.c:1067
+#: modules/file/pixmap.c:1067 modules/file/pixmap.c:1073
 msgid "px"
 msgstr "px"
 
-#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1067
+#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1073
 msgid "Vertical size:"
 msgstr "Dimensione verticale:"
 
-#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1072
+#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1078
 msgid "Channels:"
 msgstr "Canali:"
 
@@ -3255,21 +3256,21 @@
 msgid "Pages:"
 msgstr "Pagine:"
 
-#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1103
+#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1109
 #: modules/file/rawfile.c:623 modules/file/rawxyz.c:569
 #: modules/process/dimensions.h:465
 msgid "Physical Dimensions"
 msgstr "Dimensioni fisiche"
 
-#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1113
-#: modules/file/pixmap.c:3035 modules/file/rawfile.c:632
+#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1119
+#: modules/file/pixmap.c:3070 modules/file/rawfile.c:632
 #: modules/process/crosscor.c:197 modules/process/deposit_synth.c:458
 #: modules/process/dimensions.h:471 modules/process/tip_blind.c:265
 msgid "_Width:"
 msgstr "Larghezza:"
 
 #: modules/file/hdrimage.cc:2266 modules/file/hdrimage.cc:2331
-#: modules/file/pixmap.c:1135 modules/file/pixmap.c:1190
+#: modules/file/pixmap.c:1141 modules/file/pixmap.c:1196
 #: modules/file/rawfile.c:655 modules/file/rawfile.c:711
 #: modules/process/calcoefs_new.c:384 modules/process/calcoefs_new.c:451
 #: modules/process/calcoefs_simple.c:390 modules/process/calcoefs_simple.c:457
@@ -3279,30 +3280,30 @@
 msgid "verb|Change"
 msgstr "verbo|Cambia"
 
-#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1148
+#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1154
 #: modules/file/rawfile.c:668 modules/process/crosscor.c:203
 #: modules/process/dimensions.h:475
 msgid "H_eight:"
 msgstr "Altezza:"
 
-#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1155
+#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1161
 #: modules/file/rawfile.c:675 modules/file/rawxyz.c:550
 msgid "Identical _measures"
 msgstr "Misure Identiche"
 
-#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1167
+#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1173
 #: modules/file/rawfile.c:687
 msgid "_Z-scale (per sample unit):"
 msgstr "_Scala Z (per unità di campione):"
 
-#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1417
+#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1423
 #: modules/file/rawfile.c:1326 modules/process/calcoefs_new.c:776
 #: modules/process/calcoefs_simple.c:1189 modules/process/calcoefs_view.c:1393
 #: modules/process/calibrate.c:816 modules/process/dimensions.h:193
 msgid "Change Units"
 msgstr "Cambia unità"
 
-#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1431
+#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1437
 #: modules/file/rawfile.c:1340 modules/process/calcoefs_new.c:789
 #: modules/process/calcoefs_simple.c:1202 modules/process/calcoefs_view.c:1406
 #: modules/process/calibrate.c:830 modules/process/dimensions.h:206
@@ -3745,7 +3746,7 @@
 msgid "Nanonis SXM files (.sxm)"
 msgstr "File Nanonis SXM (.sxm)"
 
-#: modules/file/nanonis.c:163 modules/file/omicron.c:499
+#: modules/file/nanonis.c:163 modules/file/omicron.c:501
 #: modules/file/unisoku.c:265
 msgid "File header ended unexpectedly."
 msgstr "Intestazione file terminata inaspettatamente."
@@ -3788,39 +3789,39 @@
 msgid "File Scan/Measure.xml is missing in the zip file."
 msgstr ""
 
-#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:484
+#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:488
 #, fuzzy
 msgid "Unknown error"
 msgstr "Linea %d sconosciuta"
 
-#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:489
+#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:493
 msgid "End of file"
 msgstr ""
 
-#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:491
+#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:495
 msgid "End of list of files"
 msgstr ""
 
-#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:493
+#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:497
 #, fuzzy
 msgid "Parameter error"
 msgstr "Parametro"
 
-#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:495
+#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:499
 #, fuzzy
 msgid "Bad zip file"
 msgstr "File Shimadzu"
 
-#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:497
+#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:501
 msgid "Internal error"
 msgstr ""
 
-#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:499
+#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:503
 #, fuzzy
 msgid "CRC error"
 msgstr "errore X %d"
 
-#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:502
+#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:506
 #, c-format
 msgid "Minizip error while reading the zip file: %s."
 msgstr ""
@@ -3869,11 +3870,11 @@
 msgid "Nanoscope III files"
 msgstr "File Nanoscope III"
 
-#: modules/file/nanoscope.c:243
+#: modules/file/nanoscope.c:244
 msgid "File is not a Nanoscope file, or it is a unknown subtype."
 msgstr "File non di tipo Nanoscope o di sottotipo sconosciuto."
 
-#: modules/file/nanoscope.c:250
+#: modules/file/nanoscope.c:251
 msgid ""
 "File has been damaged by change of line endings, resulting in corruption of "
 "the binary part of the file.\n"
@@ -3892,16 +3893,16 @@
 "versioni di MS Windows o ogni altro modo di trasferimento file che cerchi di "
 "salvare il testo indipendentemente dalla piattaforma."
 
-#: modules/file/nanoscope.c:521 modules/file/nanoscope.c:537
+#: modules/file/nanoscope.c:525 modules/file/nanoscope.c:541
 msgid "Cannot parse `Scan size' field."
 msgstr "Parse impossibile delle dimensioni campo scansione."
 
-#: modules/file/nanoscope.c:1007 modules/file/nrrdfile.c:1013
+#: modules/file/nanoscope.c:1037 modules/file/nrrdfile.c:1013
 #, c-format
 msgid "Garbage after data sample #%u."
 msgstr "Dati invalidi dopo dati campione #%u."
 
-#: modules/file/nanoscope.c:1088
+#: modules/file/nanoscope.c:1118
 msgid "Truncated header line."
 msgstr "Linea intestazione troncata."
 
@@ -4025,39 +4026,55 @@
 msgid "Per-axis header field %s contains too few items."
 msgstr ""
 
-#: modules/file/nt-mdt.c:658
+#: modules/file/nt-mdt.c:694
 msgid "Imports NT-MDT data files."
 msgstr "Importa file dati NT-MDT."
 
-#: modules/file/nt-mdt.c:671
+#: modules/file/nt-mdt.c:707
 msgid "NT-MDT files (.mdt)"
 msgstr "File NT-MDT (.mdt)"
 
-#: modules/file/nt-mdt.c:1096
+#: modules/file/nt-mdt.c:1156
 msgid "Frame is too short for Frame Mode."
 msgstr "Frame troppo corta per modalità frame"
 
-#: modules/file/nt-mdt.c:1110
+#: modules/file/nt-mdt.c:1170
 msgid "Frame is too short for dots or data."
 msgstr "Frame troppo corta per punti o dati."
 
-#: modules/file/nt-mdt.c:1369
+#: modules/file/nt-mdt.c:1429
 #, c-format
 msgid "End of file reached in frame header #%u."
 msgstr "Termine file raggiunto nell'intestazione frame  #%u."
 
-#: modules/file/nt-mdt.c:1377
+#: modules/file/nt-mdt.c:1437
 #, c-format
 msgid "End of file reached in frame data #%u."
 msgstr "Termine file raggiunto in dati frame #%u."
 
-#: modules/file/nt-mdt.c:1412
+#: modules/file/nt-mdt.c:1472
 #, c-format
 msgid "Frame #%u is too short for scanned data header."
 msgstr "Frame #%u troppo corto per intestazione dati scansionati."
 
-#: modules/file/nt-mdt.c:2464
-msgid "Raman Image"
+#: modules/file/nt-mdt.c:2794 modules/tools/filter.c:209
+#: modules/tools/icolorange.c:396 modules/tools/linestats.c:154
+msgid "Maximum"
+msgstr "Massimo"
+
+#: modules/file/nt-mdt.c:2795
+#, fuzzy
+msgid "Max. position"
+msgstr "Centra posizione X "
+
+#: modules/file/nt-mdt.c:2796
+#, fuzzy
+msgid "Average"
+msgstr "Mediati"
+
+#: modules/file/nt-mdt.c:2809
+#, fuzzy
+msgid "Raman Image Import"
 msgstr "Immagine Raman"
 
 #: modules/file/oldmda.c:146
@@ -4099,11 +4116,11 @@
 msgid "Omicron files (.par + data)"
 msgstr "File Omicron (.par + data)"
 
-#: modules/file/omicron.c:401
+#: modules/file/omicron.c:403
 msgid "Header line starts with a colon."
 msgstr "Linea intestazione inizia con \":\""
 
-#: modules/file/omicron.c:508
+#: modules/file/omicron.c:510
 msgid "Channel information ended unexpectedly."
 msgstr "Informazione di canale interrotta inaspettatamente."
 
@@ -4157,87 +4174,87 @@
 msgid "Truncated data in block %s"
 msgstr "Dati troncati nel blocco  %s"
 
-#: modules/file/pixmap.c:350
+#: modules/file/pixmap.c:356
 msgid "All channels"
 msgstr "Tutti i canali"
 
-#: modules/file/pixmap.c:351
+#: modules/file/pixmap.c:357
 msgid "Red"
 msgstr "Rosso"
 
-#: modules/file/pixmap.c:352
+#: modules/file/pixmap.c:358
 msgid "Green"
 msgstr "Verde"
 
-#: modules/file/pixmap.c:353
+#: modules/file/pixmap.c:359
 msgid "Blue"
 msgstr "Blu"
 
-#: modules/file/pixmap.c:354
+#: modules/file/pixmap.c:360
 msgid "Value (max)"
 msgstr "Valore (max)"
 
-#: modules/file/pixmap.c:355
+#: modules/file/pixmap.c:361
 msgid "RGB sum"
 msgstr "Somma RGB"
 
-#: modules/file/pixmap.c:356
+#: modules/file/pixmap.c:362
 msgid "Luma"
 msgstr "Luma"
 
-#: modules/file/pixmap.c:357
+#: modules/file/pixmap.c:363
 msgid "Alpha"
 msgstr "Alpha"
 
-#: modules/file/pixmap.c:369
+#: modules/file/pixmap.c:375
 msgid "Portable Network Graphics (.png)"
 msgstr "Portable Network Graphics (.png)"
 
-#: modules/file/pixmap.c:375
+#: modules/file/pixmap.c:381
 msgid "JPEG (.jpeg,.jpg)"
 msgstr "JPEG (.jpeg,.jpg)"
 
-#: modules/file/pixmap.c:381
+#: modules/file/pixmap.c:387
 msgid "TIFF (.tiff,.tif)"
 msgstr "TIFF (.tiff,.tif)"
 
-#: modules/file/pixmap.c:387
+#: modules/file/pixmap.c:393
 msgid "Portable Pixmap (.ppm,.pnm)"
 msgstr "Portable Pixmap (.ppm,.pnm)"
 
-#: modules/file/pixmap.c:393
+#: modules/file/pixmap.c:399
 msgid "Windows or OS2 Bitmap (.bmp)"
 msgstr "Windows or OS2 Bitmap (.bmp)"
 
-#: modules/file/pixmap.c:399
+#: modules/file/pixmap.c:405
 msgid "TARGA (.tga,.targa)"
 msgstr "TARGA (.tga,.targa)"
 
-#: modules/file/pixmap.c:412
+#: modules/file/pixmap.c:418
 msgid "Graphics Interchange Format (.gif)"
 msgstr "Graphics Interchange Format (.gif)"
 
-#: modules/file/pixmap.c:416
+#: modules/file/pixmap.c:422
 msgid "JPEG 2000 (.jpx)"
 msgstr "JPEG 2000 (.jpx)"
 
-#: modules/file/pixmap.c:420
+#: modules/file/pixmap.c:426
 msgid "PCX (.pcx)"
 msgstr "PCX (.pcx)"
 
-#: modules/file/pixmap.c:424
+#: modules/file/pixmap.c:430
 msgid "X Pixmap (.xpm)"
 msgstr "X Pixmap (.xpm)"
 
-#: modules/file/pixmap.c:428
+#: modules/file/pixmap.c:434
 msgid "Sun raster image (.ras)"
 msgstr "Immagine Sun raster (.ras)"
 
-#: modules/file/pixmap.c:432
+#: modules/file/pixmap.c:438
 msgid "Apple icon (.icns)"
 msgstr "Icona Apple (.icns)"
 
-#: modules/file/pixmap.c:456
+#: modules/file/pixmap.c:462
 msgid ""
 "Renders data into pixmap images and imports data from pixmap images. It "
 "supports the following image formats for export: PNG, JPEG, TIFF, PPM, BMP, "
@@ -4248,69 +4265,69 @@
 "TIFF, PPM, BMP, TARGA. L'importazione si basa su GDK per cui potrebbe "
 "dipendere dal tipo di installazione."
 
-#: modules/file/pixmap.c:740
+#: modules/file/pixmap.c:746
 #, c-format
 msgid "Pixmap has not registered file type `%s'."
 msgstr "Pixmap non ha un file tipo registrato `%s'."
 
-#: modules/file/pixmap.c:754
+#: modules/file/pixmap.c:760
 #, c-format
 msgid "Cannot get pixbuf loader: %s."
 msgstr ""
 
-#: modules/file/pixmap.c:766 modules/file/pixmap.c:778
+#: modules/file/pixmap.c:772 modules/file/pixmap.c:784
 #, c-format
 msgid "Pixbuf loader refused data: %s."
 msgstr ""
 
-#: modules/file/pixmap.c:1200
+#: modules/file/pixmap.c:1206
 msgid ""
 "Warning: Colorful images cannot be reliably mapped to meaningful values."
 msgstr ""
 "Attenzione: Immagini molto colorate non possono essere convertite in modo "
 "affidabile ad una mappatura che abbia valori significativi"
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "verb|Use"
 msgstr "verbo|Usa"
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "as data"
 msgstr "come dati"
 
-#: modules/file/pixmap.c:1688 modules/file/pixmap.c:1716
+#: modules/file/pixmap.c:1694 modules/file/pixmap.c:1722
 #, c-format
 msgid "Pixbuf save failed: %s."
 msgstr "Salvataggio pixbuf fallito: %s."
 
-#: modules/file/pixmap.c:2126
+#: modules/file/pixmap.c:2132
 msgid "Image is too large to be stored as TARGA."
 msgstr "Immagine troppo grande per essere salvata come TARGA."
 
-#: modules/file/pixmap.c:2207
+#: modules/file/pixmap.c:2213
 msgid "Data must be displayed in a window for pixmap export."
 msgstr ""
 "I dati devono essere mostrati in una finestra per esssere esportati come "
 "pixmap"
 
-#: modules/file/pixmap.c:2927
+#: modules/file/pixmap.c:2936
 msgid "Change Inset Color"
 msgstr "Cambia colore "
 
-#: modules/file/pixmap.c:2986
+#: modules/file/pixmap.c:3021
 #, c-format
 msgid "Export %s"
 msgstr "Esporta %s"
 
-#: modules/file/pixmap.c:3017
+#: modules/file/pixmap.c:3052
 msgid "Scaling"
 msgstr "Ridimensionamento"
 
-#: modules/file/pixmap.c:3026
+#: modules/file/pixmap.c:3061
 msgid "_Zoom:"
 msgstr "Ingrandisci:"
 
-#: modules/file/pixmap.c:3044 modules/process/col_synth.c:400
+#: modules/file/pixmap.c:3079 modules/process/col_synth.c:400
 #: modules/process/grain_mark.c:309 modules/process/grain_rem_threshold.c:280
 #: modules/process/obj_synth.c:573 modules/process/pat_synth.c:889
 #: modules/process/pat_synth.c:1190 modules/process/pat_synth.c:1525
@@ -4318,92 +4335,102 @@
 msgid "_Height:"
 msgstr "Altezza:"
 
-#: modules/file/pixmap.c:3052
+#: modules/file/pixmap.c:3087
 #, fuzzy
 msgid "Font:"
 msgstr "_Dimensione carattere:"
 
-#: modules/file/pixmap.c:3067
+#: modules/file/pixmap.c:3102
 msgid "Scale text _proportionally"
 msgstr "Scala testo _in proporzione"
 
-#: modules/file/pixmap.c:3082
+#: modules/file/pixmap.c:3117
 msgid "_Font size:"
 msgstr "_Dimensione carattere:"
 
-#: modules/file/pixmap.c:3096
+#: modules/file/pixmap.c:3131
 msgid "Draw _mask"
 msgstr "Disegna _Maschera"
 
-#: modules/file/pixmap.c:3105
+#: modules/file/pixmap.c:3140
 msgid "Draw _selection"
 msgstr "Disegna _selezione"
 
-#: modules/file/pixmap.c:3121
+#: modules/file/pixmap.c:3156
 msgid "Grayscale Mode"
 msgstr "Modalità Tonalità di Grigi (Grayscale)"
 
-#: modules/file/pixmap.c:3125
+#: modules/file/pixmap.c:3160
 msgid "Export as 1_6 bit grayscale"
 msgstr "Esporta come 1_6 bit grayscale"
 
-#: modules/file/pixmap.c:3151
+#: modules/file/pixmap.c:3186
 msgid "Lateral Scale"
 msgstr "Scala laterale"
 
-#: modules/file/pixmap.c:3158 modules/file/pixmap.c:3253
+#: modules/file/pixmap.c:3193 modules/file/pixmap.c:3308
 msgid "ruler|_None"
 msgstr "righello|_Nessuno"
 
-#: modules/file/pixmap.c:3159
+#: modules/file/pixmap.c:3194
 msgid "_Rulers"
 msgstr "_Righelli"
 
-#: modules/file/pixmap.c:3160
+#: modules/file/pixmap.c:3195
 msgid "_Inset scale bar"
 msgstr "barra scala _incorporata"
 
-#: modules/file/pixmap.c:3165
+#: modules/file/pixmap.c:3200
 msgid "Color:"
 msgstr "Colore:"
 
-#: modules/file/pixmap.c:3181 modules/process/immerse.c:323
+#: modules/file/pixmap.c:3216 modules/process/immerse.c:323
 msgid "Position:"
 msgstr "Posizione:"
 
-#: modules/file/pixmap.c:3186
+#: modules/file/pixmap.c:3221
 msgid "left"
 msgstr "Sinistra"
 
-#: modules/file/pixmap.c:3190
+#: modules/file/pixmap.c:3225
 msgid "center"
 msgstr "Centro"
 
-#: modules/file/pixmap.c:3194
+#: modules/file/pixmap.c:3229
 msgid "right"
 msgstr "Destra"
 
-#: modules/file/pixmap.c:3199
+#: modules/file/pixmap.c:3234
 msgid "top"
 msgstr "Sopra"
 
-#: modules/file/pixmap.c:3211
+#: modules/file/pixmap.c:3246
 msgid "bottom"
 msgstr "sotto"
 
-#: modules/file/pixmap.c:3222 modules/process/lno_synth.c:1066
+#: modules/file/pixmap.c:3257 modules/process/lno_synth.c:1066
 msgid "_Length:"
 msgstr "_Lunghezza:"
 
-#: modules/file/pixmap.c:3238
+#: modules/file/pixmap.c:3273
 msgid "_Auto"
 msgstr "_Auto"
 
-#: modules/file/pixmap.c:3246
+#: modules/file/pixmap.c:3281
+#, fuzzy
+msgid "Draw _ticks"
+msgstr "Disegna _Maschera"
+
+#: modules/file/pixmap.c:3291
+#, fuzzy
+msgid "Draw _label"
+msgstr "Mostra _etichette"
+
+#: modules/file/pixmap.c:3301
 msgid "Value Scale"
 msgstr "Scala valore"
 
-#: modules/file/pixmap.c:3254
+#: modules/file/pixmap.c:3309
 msgid "_False color ruler"
 msgstr "Righello _Falsi colori"
 
@@ -4579,7 +4606,7 @@
 #: modules/process/mark_with.c:211 modules/process/polydistort.c:214
 #: modules/process/scars.c:466 modules/process/synth.h:479
 #: modules/process/tip_model.c:167 modules/tools/linestats.c:420
-#: modules/tools/sfunctions.c:475 modules/tools/stats.c:432
+#: modules/tools/sfunctions.c:475 modules/tools/stats.c:435
 msgid "_Update"
 msgstr "_Aggiorna"
 
@@ -5092,7 +5119,7 @@
 msgid "Seiko files (.xqb, .xqd, .xqt)"
 msgstr "File Seiko (.xqb, .xqd, .xqt) "
 
-#: modules/file/seiko.c:239
+#: modules/file/seiko.c:251
 msgid ""
 "Cannot determine scan dimensions; it seems non-square with an unknown side "
 "ratio."
@@ -5322,11 +5349,11 @@
 msgid "Surf files (.sur)"
 msgstr "File Surf (.sur)"
 
-#: modules/file/tiaser.c:166
+#: modules/file/tiaser.c:172
 msgid "Imports FEI Tecnai imaging and analysis (former Emispec) files."
 msgstr ""
 
-#: modules/file/tiaser.c:179
+#: modules/file/tiaser.c:185
 msgid "FEI TIA (Emispec) data"
 msgstr ""
 
@@ -5510,10 +5537,10 @@
 #: modules/graph/graph_cd.c:692 modules/graph/graph_fdfit.c:780
 #: modules/graph/graph_fit.c:804 modules/tools/grainmeasure.c:215
 #: modules/tools/readvalue.c:576 modules/tools/readvalue.c:577
-#: modules/tools/roughness.c:957 modules/tools/stats.c:661
-#: modules/tools/stats.c:672 modules/tools/stats.c:673
-#: modules/tools/stats.c:1050 modules/tools/stats.c:1057
-#: modules/tools/stats.c:1059
+#: modules/tools/roughness.c:957 modules/tools/stats.c:666
+#: modules/tools/stats.c:677 modules/tools/stats.c:678
+#: modules/tools/stats.c:1054 modules/tools/stats.c:1061
+#: modules/tools/stats.c:1063
 msgid "N.A."
 msgstr "N.A."
 
@@ -5949,7 +5976,7 @@
 msgid "_Expression:"
 msgstr "_Espressione:"
 
-#: modules/process/arithmetic.c:294
+#: modules/process/arithmetic.c:294 modules/process/neural.c:220
 msgid "Operands"
 msgstr "Operandi"
 
@@ -6229,7 +6256,7 @@
 msgstr "Mappa Errore Semplice"
 
 #: modules/process/calcoefs_simple.c:342 modules/process/calcoefs_stage.c:149
-#: modules/process/neural.c:225 modules/process/superresolution.c:159
+#: modules/process/superresolution.c:159
 msgid "Operands:"
 msgstr "Operandi:"
 
@@ -6796,20 +6823,21 @@
 msgstr "_Traccia grafico"
 
 #: modules/process/curvature.c:684 modules/process/facet-level.c:297
-#: modules/process/level.c:267 modules/process/polylevel.c:495
-#: modules/tools/sfunctions.c:457 modules/tools/stats.c:362
+#: modules/process/level.c:269 modules/process/linecorrect.c:288
+#: modules/process/polylevel.c:495 modules/tools/sfunctions.c:457
+#: modules/tools/stats.c:365
 msgid "Masking Mode"
 msgstr "Modalità Maschera"
 
-#: modules/process/curvature.c:754 modules/process/grain_dist.c:827
+#: modules/process/curvature.c:754 modules/process/grain_dist.c:835
 #: modules/tools/distance.c:227 modules/tools/roughness.c:824
-#: modules/tools/stats.c:423
+#: modules/tools/stats.c:426
 msgid "Save table to a file"
 msgstr "Salva tabella in file"
 
-#: modules/process/curvature.c:759 modules/process/grain_dist.c:832
+#: modules/process/curvature.c:759 modules/process/grain_dist.c:840
 #: modules/tools/distance.c:232 modules/tools/roughness.c:829
-#: modules/tools/stats.c:428
+#: modules/tools/stats.c:431
 msgid "Copy table to clipboard"
 msgstr "Copia tabella negli appunti"
 
@@ -7930,42 +7958,47 @@
 msgid "Data channel:"
 msgstr "Canale dati:   "
 
-#: modules/process/grain_dist.c:734 modules/process/grain_dist.c:806
+#: modules/process/grain_dist.c:736 modules/process/grain_dist.c:814
 msgid "Grain Statistics"
 msgstr "Statistiche Grani"
 
-#: modules/process/grain_dist.c:746
+#: modules/process/grain_dist.c:748
 msgid "Number of grains:"
 msgstr "Numero grani:"
 
-#: modules/process/grain_dist.c:755
+#: modules/process/grain_dist.c:757
 msgid "Total projected area (abs.):"
 msgstr "Area proiettata totale (Ass.):"
 
-#: modules/process/grain_dist.c:759
+#: modules/process/grain_dist.c:761
 msgid "Total projected area (rel.):"
 msgstr "Area totale proiettata (rel.):"
 
-#: modules/process/grain_dist.c:765
+#: modules/process/grain_dist.c:767
 msgid "Mean grain area:"
 msgstr "Area media grani:"
 
-#: modules/process/grain_dist.c:771
+#: modules/process/grain_dist.c:773
 msgid "Mean grain size:"
 msgstr "Dimensioni medie grani:"
 
-#: modules/process/grain_dist.c:780
+#: modules/process/grain_dist.c:782
 msgid "Total grain volume (zero):"
 msgstr "Volume totale grani (zero):"
 
-#: modules/process/grain_dist.c:786
+#: modules/process/grain_dist.c:788
 msgid "Total grain volume (minimum):"
 msgstr "Volume totale grani (minimo):"
 
-#: modules/process/grain_dist.c:792
+#: modules/process/grain_dist.c:794
 msgid "Total grain volume (laplacian):"
 msgstr "Volume totale grani (laplaciano):"
 
+#: modules/process/grain_dist.c:800
+#, fuzzy
+msgid "Total projected boundary length:"
+msgstr "Lunghezza contorno proiettato"
+
 #: modules/process/grain_edge.c:106
 msgid "Marks grains by edge detection method."
 msgstr "Segna grani con metodo rivelazione soglia"
@@ -8635,50 +8668,55 @@
 msgid "E_xtract background"
 msgstr "E_strai Sottofondo"
 
-#: modules/process/linecorrect.c:64
+#: modules/process/linecorrect.c:88
 msgid "Corrects line defects (mostly experimental algorithms)."
 msgstr "Corregge i difetti lineari (per lo più algoritmi sperimentali)."
 
-#: modules/process/linecorrect.c:78
+#: modules/process/linecorrect.c:102
 msgid "/_Correct Data/M_odus Line Correction"
 msgstr "/_Correzione Dati/Modalità Correzione lineare"
 
-#: modules/process/linecorrect.c:82
+#: modules/process/linecorrect.c:106
 msgid "Correct lines by matching height modus"
 msgstr "Correzione linee con il metodo dell'accoppiamento delle altezze"
 
-#: modules/process/linecorrect.c:85
+#: modules/process/linecorrect.c:109
 msgid "/_Correct Data/M_edian Line Correction"
 msgstr "/_Correzione Dati/Correzione linea mediana"
 
-#: modules/process/linecorrect.c:89
+#: modules/process/linecorrect.c:113
 msgid "Correct lines by matching height median"
 msgstr "Correzione linee per accoppiamento linea mediana"
 
-#: modules/process/linecorrect.c:92
+#: modules/process/linecorrect.c:116
 msgid "/_Correct Data/Median Di_fference Line Correction"
 msgstr "/_Correzione Dati/Correzione Di_fferenza Linea Mediana"
 
-#: modules/process/linecorrect.c:96
+#: modules/process/linecorrect.c:120
 msgid "Correct lines by zeroing median of differences between neighbor lines"
 msgstr ""
 
-#: modules/process/linecorrect.c:100
+#: modules/process/linecorrect.c:124
 msgid "/_Correct Data/Ma_tch Line Correction"
 msgstr "/_Correzione Dati/Accoppia Correzione lineare"
 
-#: modules/process/linecorrect.c:104
+#: modules/process/linecorrect.c:128
 msgid "Correct lines by matching flat segments"
 msgstr "Correzione linee per accoppiamento segmenti piatti"
 
-#: modules/process/linecorrect.c:107
+#: modules/process/linecorrect.c:131
 msgid "/_Correct Data/Ste_p Line Correction"
 msgstr "/_Correzione Dati/ Correzione Ste_p Line  "
 
-#: modules/process/linecorrect.c:111
+#: modules/process/linecorrect.c:135
 msgid "Correct steps in lines"
 msgstr "Correzione step nelle linee "
 
+#: modules/process/linecorrect.c:198
+#, fuzzy
+msgid "Median Line Correction"
+msgstr "/_Correzione Dati/Correzione linea mediana"
+
 #: modules/process/lno_synth.c:249 modules/process/noise_synth.c:183
 msgid "distribution|Gaussian"
 msgstr "distribuzione|Gaussiana"
@@ -9094,81 +9132,96 @@
 msgid "Immersed detail data"
 msgstr "Dati dettaglio fuso"
 
-#: modules/process/neural.c:147
+#: modules/process/neural.c:144
 msgid "Neural network SPM data processing"
 msgstr ""
 
-#: modules/process/neural.c:161
+#: modules/process/neural.c:158
 #, fuzzy
-msgid "/M_ultidata/_Neural network..."
+msgid "/M_ultidata/_Neural Network..."
 msgstr "/Dati Multipli/_Unione.."
 
-#: modules/process/neural.c:165
+#: modules/process/neural.c:162
 msgid "Neural network AFM data processing"
 msgstr ""
 
-#: modules/process/neural.c:207
-msgid "Neural network"
+#: modules/process/neural.c:202
+msgid "Neural Network"
 msgstr ""
 
-#: modules/process/neural.c:233
+#: modules/process/neural.c:227
 #, fuzzy
-msgid "Training model:"
+msgid "Training _model:"
 msgstr "Modalità del Fit"
 
-#: modules/process/neural.c:240
+#: modules/process/neural.c:233
 #, fuzzy
-msgid "Training signal:"
+msgid "Training _signal:"
 msgstr "Ricerca minimi"
 
-#: modules/process/neural.c:247
+#: modules/process/neural.c:239
 #, fuzzy
-msgid "Result model:"
+msgid "Res_ult model:"
 msgstr "Campionamento risultante"
 
-#: modules/process/neural.c:254
+#: modules/process/neural.c:244 modules/tools/stats.c:401
+msgid "Parameters"
+msgstr "Parametri"
+
+#: modules/process/neural.c:250
 #, fuzzy
-msgid "Window width:"
+msgid "Window _width:"
 msgstr "Dimensioni finestra"
 
-#: modules/process/neural.c:260
+#: modules/process/neural.c:256
 #, fuzzy
-msgid "Window height:"
+msgid "Window h_eight:"
 msgstr "Nuova Altezza:"
 
-#: modules/process/neural.c:266
-msgid "Training steps:"
-msgstr ""
+#: modules/process/neural.c:262
+#, fuzzy
+msgid "_Training steps:"
+msgstr "Modalità del Fit"
 
-#: modules/process/neural.c:272
+#: modules/process/neural.c:268
 #, fuzzy
-msgid "Hidden nodes:"
+msgid "_Hidden nodes:"
 msgstr "Nascosto"
 
-#: modules/process/neural.c:364
+#: modules/process/neural.c:360
 #, fuzzy
 msgid "Data not compatible"
 msgstr "Formato dati"
 
-#: modules/process/neural.c:389 modules/process/pid.c:334
+#: modules/process/neural.c:388 modules/process/pid.c:334
 #, fuzzy
 msgid "Starting..."
 msgstr "Inizio"
 
-#: modules/process/neural.c:491
+#: modules/process/neural.c:409
+#, fuzzy
+msgid "Training..."
+msgstr "Correlazione....."
+
+#: modules/process/neural.c:451
+#, fuzzy
+msgid "Evaluating..."
+msgstr "Correlazione....."
+
+#: modules/process/neural.c:493
 msgid "Evaluated signal"
 msgstr ""
 
-#: modules/process/neural.c:497
+#: modules/process/neural.c:499
 msgid "Training error"
 msgstr ""
 
-#: modules/process/neural.c:498
+#: modules/process/neural.c:500
 #, fuzzy
 msgid "error"
 msgstr "Errore"
 
-#: modules/process/neural.c:504
+#: modules/process/neural.c:506
 msgid "NN training error"
 msgstr ""
 
@@ -9229,8 +9282,9 @@
 msgstr "Gaussiane"
 
 #: modules/process/obj_synth.c:284
-msgid "Dougnuts"
-msgstr ""
+#, fuzzy
+msgid "Doughnuts"
+msgstr "Rugosità"
 
 #: modules/process/obj_synth.c:290
 msgid "Generates randomly patterned surfaces by placing objects."
@@ -10154,59 +10208,59 @@
 msgid "Denoised"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:53
+#: modules/pygwy/pygwy-console.c:54
 msgid "/Pygwy Console"
 msgstr "/Pygwy Console"
 
-#: modules/pygwy/pygwy-console.c:57
+#: modules/pygwy/pygwy-console.c:58
 msgid "Python wrapper console"
 msgstr "Python wrapper console"
 
-#: modules/pygwy/pygwy-console.c:155
+#: modules/pygwy/pygwy-console.c:156
 msgid ">>> Running file content of below textfield\n"
 msgstr ""
 
-#: modules/pygwy/pygwy-console.c:180
+#: modules/pygwy/pygwy-console.c:181
 msgid "Open Python script"
 msgstr "Apri script Python "
 
-#: modules/pygwy/pygwy-console.c:244
+#: modules/pygwy/pygwy-console.c:245
 msgid "Save Script as"
 msgstr "Salva Script come"
 
-#: modules/pygwy/pygwy-console.c:283
+#: modules/pygwy/pygwy-console.c:284
 msgid "Pygwy Console"
 msgstr "Pygwy Console"
 
-#: modules/pygwy/pygwy-console.c:295
+#: modules/pygwy/pygwy-console.c:296
 msgid "Open script in Python language (Ctrl-O)"
 msgstr "Apri script in Python (Ctrl-O)"
 
-#: modules/pygwy/pygwy-console.c:297
+#: modules/pygwy/pygwy-console.c:298
 msgid "Save script (Ctrl-S)"
 msgstr "Salva script (Ctrl-S)"
 
-#: modules/pygwy/pygwy-console.c:299
+#: modules/pygwy/pygwy-console.c:300
 msgid "Execute script (Ctrl-E)"
 msgstr "Esegui script (Ctrl-E)"
 
-#: modules/pygwy/pygwy-console.c:377
+#: modules/pygwy/pygwy-console.c:378
 msgid "Command"
 msgstr ""
 
-#: pygwy.c:91
+#: pygwy.c:99
 msgid "Pygwy, the Gwyddion Python wrapper."
 msgstr ""
 
-#: pygwy.c:443
+#: pygwy.c:520
 msgid "Function written in Python"
 msgstr "Funzione scritta in Python"
 
-#: pygwy.c:489
+#: pygwy.c:566
 msgid "Graph function written in Python"
 msgstr "Funzione grafico scritta in Python"
 
-#: pygwy.c:899
+#: pygwy.c:976
 #, c-format
 msgid ""
 "Pygwy plugin: %s (%s)\n"
@@ -10263,11 +10317,6 @@
 msgid "Conservative denoise"
 msgstr "Denoise conservativo"
 
-#: modules/tools/filter.c:209 modules/tools/icolorange.c:396
-#: modules/tools/linestats.c:154
-msgid "Maximum"
-msgstr "Massimo"
-
 #: modules/tools/filter.c:210
 msgid "Kuwahara"
 msgstr "Kuwahara"
@@ -10502,7 +10551,7 @@
 msgstr "Opzioni"
 
 #: modules/tools/linestats.c:362 modules/tools/sfunctions.c:392
-#: modules/tools/stats.c:381
+#: modules/tools/stats.c:384
 msgid "_Instant updates"
 msgstr "_Aggiornamento immediato"
 
@@ -10944,12 +10993,12 @@
 msgid "Roughness Parameters"
 msgstr "Parametri Rugosità"
 
-#: modules/tools/roughness.c:2041 modules/tools/stats.c:999
+#: modules/tools/roughness.c:2041 modules/tools/stats.c:1002
 #, c-format
 msgid "File:              %s\n"
 msgstr "File:              %s\n"
 
-#: modules/tools/roughness.c:2045 modules/tools/stats.c:1003
+#: modules/tools/roughness.c:2045 modules/tools/stats.c:1006
 #, c-format
 msgid "Data channel:      %s\n"
 msgstr "Canale dati:      %s\n"
@@ -11121,76 +11170,76 @@
 msgid "Fractal interpolation"
 msgstr "Interpolazione frattale"
 
-#: modules/tools/stats.c:180
+#: modules/tools/stats.c:182
 msgid "Statistics tool."
 msgstr "Strumenti statistici"
 
-#: modules/tools/stats.c:217 modules/tools/stats.c:993
+#: modules/tools/stats.c:219 modules/tools/stats.c:996
 msgid "Statistical Quantities"
 msgstr "Quantità statistiche"
 
-#: modules/tools/stats.c:218
+#: modules/tools/stats.c:220
 msgid "Statistical quantities"
 msgstr "Quantità statistiche."
 
-#: modules/tools/stats.c:321
+#: modules/tools/stats.c:323
 msgid "Average value:"
 msgstr "Valore medio:"
 
-#: modules/tools/stats.c:324
+#: modules/tools/stats.c:326
 msgid "Median:"
 msgstr "Mediana:"
 
-#: modules/tools/stats.c:325
+#: modules/tools/stats.c:327
 msgid "Ra (Sa):"
 msgstr "Ra (Sa):"
 
-#: modules/tools/stats.c:326
+#: modules/tools/stats.c:328
 msgid "Rms (Sq):"
 msgstr "Rms (Sq):"
 
-#: modules/tools/stats.c:327
+#: modules/tools/stats.c:329
+msgid "Rms (grain-wise):"
+msgstr ""
+
+#: modules/tools/stats.c:330
 msgid "Skew:"
 msgstr "Skew:"
 
-#: modules/tools/stats.c:328
+#: modules/tools/stats.c:331
 msgid "Kurtosis:"
 msgstr "Curtosi:"
 
-#: modules/tools/stats.c:329
+#: modules/tools/stats.c:332
 msgid "Surface area:"
 msgstr "Area superficie:"
 
-#: modules/tools/stats.c:330
+#: modules/tools/stats.c:333
 msgid "Projected area:"
 msgstr "Proiezione area:"
 
-#: modules/tools/stats.c:331
+#: modules/tools/stats.c:334
 msgid "Inclination θ:"
 msgstr "Inclinazione θ:"
 
-#: modules/tools/stats.c:332
+#: modules/tools/stats.c:335
 msgid "Inclination φ:"
 msgstr "Inclinazione φ:"
 
-#: modules/tools/stats.c:398
-msgid "Parameters"
-msgstr "Parametri"
-
-#: modules/tools/stats.c:929
+#: modules/tools/stats.c:932
 msgid "Save Statistical Quantities"
 msgstr "Salva Quantità Statistiche"
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "Yes"
 msgstr "Si"
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "No"
 msgstr "No"
 
-#: modules/tools/stats.c:1062
-#, c-format
+#: modules/tools/stats.c:1066
+#, fuzzy, c-format
 msgid ""
 "Selected area:     %s × %s at (%s, %s) px\n"
 "                   %s × %s at (%s, %s) %s\n"
@@ -11202,6 +11251,7 @@
 "Median:            %s\n"
 "Ra:                %s\n"
 "Rms:               %s\n"
+"Rms (grain-wise):  %s\n"
 "Skew:              %s\n"
 "Kurtosis:          %s\n"
 "Surface area:      %s\n"
Binary files /tmp/6W43BMtPno/gwyddion-2.28/po/ru.gmo and /tmp/ug3yy2UQEY/gwyddion-2.29/po/ru.gmo differ
diff -Nru gwyddion-2.28/po/ru.po gwyddion-2.29/po/ru.po
--- gwyddion-2.28/po/ru.po	2012-05-18 10:44:03.000000000 +0100
+++ gwyddion-2.29/po/ru.po	2012-07-19 21:14:11.000000000 +0100
@@ -7,8 +7,8 @@
 msgstr ""
 "Project-Id-Version: gwyddion\n"
 "Report-Msgid-Bugs-To: yeti@gwyddion.net\n"
-"POT-Creation-Date: 2012-05-18 11:44+0200\n"
-"PO-Revision-Date: 2012-05-11 12:26+0300\n"
+"POT-Creation-Date: 2012-07-19 22:14+0200\n"
+"PO-Revision-Date: 2012-07-18 08:49+0300\n"
 "Last-Translator: Daniil Bratashov \n"
 "Language-Team: russian \n"
 "Language: \n"
@@ -131,23 +131,23 @@
 
 #: libgwyddion/gwynlfitpreset.c:1189 libprocess/gwyprocessenums.c:100
 msgid "Gaussian"
-msgstr "Гауссова"
+msgstr "Гауссиана"
 
 #: libgwyddion/gwynlfitpreset.c:1205
 msgid "Gaussian (PSDF)"
-msgstr "Гауссова (ФСПМ)"
+msgstr "Гауссиана (ФСПМ)"
 
 #: libgwyddion/gwynlfitpreset.c:1219
 msgid "Gaussian (ACF)"
-msgstr "Гауссова (ФАК)"
+msgstr "Гауссиана (ACF)"
 
 #: libgwyddion/gwynlfitpreset.c:1233
 msgid "Gaussian (HHCF)"
-msgstr "Гауссова (HHCF)"
+msgstr "Гауссиана (HHCF)"
 
 #: libgwyddion/gwynlfitpreset.c:1247
 msgid "Gaussian (RPSDF)"
-msgstr "Гауссова (RPSDF)"
+msgstr "Гауссиана (RPSDF)"
 
 #: libgwyddion/gwynlfitpreset.c:1261
 msgid "Exponential"
@@ -818,7 +818,7 @@
 msgstr "точек"
 
 #: libgwydgets/gwy3dwindow.c:1116 modules/file/hdrimage.cc:2149
-#: modules/file/pixmap.c:1030 modules/file/pixmap.c:2989
+#: modules/file/pixmap.c:1036 modules/file/pixmap.c:3024
 #: modules/file/rawfile.c:398 modules/process/angle_dist.c:170
 #: modules/process/calcoefs_new.c:347 modules/process/calibrate.c:296
 #: modules/process/col_synth.c:299 modules/process/curvature.c:602
@@ -831,16 +831,17 @@
 #: modules/process/grain_edge.c:217 modules/process/grain_mark.c:262
 #: modules/process/grain_rem_threshold.c:224 modules/process/grain_wshed.c:182
 #: modules/process/hough.c:175 modules/process/latsim.c:158
-#: modules/process/level.c:253 modules/process/lno_synth.c:436
-#: modules/process/local_contrast.c:126 modules/process/median-bg.c:176
-#: modules/process/neural.c:208 modules/process/noise_synth.c:347
-#: modules/process/obj_synth.c:432 modules/process/pat_synth.c:402
-#: modules/process/pid.c:196 modules/process/polydistort.c:219
-#: modules/process/polylevel.c:376 modules/process/rotate.c:264
-#: modules/process/scale.c:193 modules/process/scars.c:469
-#: modules/process/shade.c:214 modules/process/slope_dist.c:201
-#: modules/process/sphere-revolve.c:215 modules/process/tilt.c:156
-#: modules/process/tip_model.c:170 modules/process/unrotate.c:226
+#: modules/process/level.c:255 modules/process/linecorrect.c:274
+#: modules/process/lno_synth.c:436 modules/process/local_contrast.c:126
+#: modules/process/median-bg.c:176 modules/process/neural.c:203
+#: modules/process/noise_synth.c:347 modules/process/obj_synth.c:432
+#: modules/process/pat_synth.c:402 modules/process/pid.c:196
+#: modules/process/polydistort.c:219 modules/process/polylevel.c:376
+#: modules/process/rotate.c:264 modules/process/scale.c:193
+#: modules/process/scars.c:469 modules/process/shade.c:214
+#: modules/process/slope_dist.c:201 modules/process/sphere-revolve.c:215
+#: modules/process/tilt.c:156 modules/process/tip_model.c:170
+#: modules/process/unrotate.c:226
 msgid "_Reset"
 msgstr "_Сброс"
 
@@ -1163,7 +1164,7 @@
 msgstr "Предпросмотр"
 
 #: libgwymodule/gwymodule-file.c:535 modules/file/err.h:40
-#: modules/file/pixmap.c:746
+#: modules/file/pixmap.c:752
 #, c-format
 msgid "Cannot open file for reading: %s."
 msgstr "Невозможно открыть файл для чтения: %s."
@@ -1617,51 +1618,51 @@
 msgid "Cannot preview"
 msgstr "Нельзя просмотреть."
 
-#: app/gwyddion.c:132
+#: app/gwyddion.c:133
 msgid "Loading document history"
 msgstr "Загружается список предыдущих документов"
 
-#: app/gwyddion.c:137
+#: app/gwyddion.c:138
 msgid "Registering "
 msgstr "Регистрируем"
 
-#: app/gwyddion.c:138
+#: app/gwyddion.c:139
 msgid "stock items"
 msgstr "основные элементы"
 
-#: app/gwyddion.c:142
+#: app/gwyddion.c:143
 msgid "color gradients"
 msgstr "Цветовые градиенты"
 
-#: app/gwyddion.c:144
+#: app/gwyddion.c:145
 msgid "GL materials"
 msgstr "Материалы GL"
 
-#: app/gwyddion.c:146
+#: app/gwyddion.c:147
 msgid "grain quantities"
 msgstr "величины зёрен"
 
-#: app/gwyddion.c:148
+#: app/gwyddion.c:149
 msgid "calibrations"
 msgstr "калибровки"
 
-#: app/gwyddion.c:153
+#: app/gwyddion.c:154
 msgid "Loading settings"
 msgstr "Загрузка настроек"
 
-#: app/gwyddion.c:160
+#: app/gwyddion.c:161
 msgid "Registering modules"
 msgstr "Регистрация модулей"
 
-#: app/gwyddion.c:182
+#: app/gwyddion.c:183
 msgid "Initializing GUI"
 msgstr "Инициализируется графический интерфейс"
 
-#: app/gwyddion.c:391
+#: app/gwyddion.c:392
 msgid "Could not read settings."
 msgstr "Не удается считать настройки"
 
-#: app/gwyddion.c:394
+#: app/gwyddion.c:395
 #, c-format
 msgid ""
 "Settings file `%s' cannot be read: %s\n"
@@ -2673,12 +2674,12 @@
 msgid "Export Text"
 msgstr "Экспортировать текст"
 
-#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3092
+#: modules/file/asciiexport.c:273 modules/file/pixmap.c:3127
 #: modules/file/rawfile.c:720 modules/file/rawxyz.c:670
 #: modules/process/fft_filter_1d.c:296 modules/process/grain_dist.c:285
 #: modules/process/grain_edge.c:270 modules/process/grain_mark.c:344
 #: modules/process/grain_rem_threshold.c:324 modules/process/grain_wshed.c:278
-#: modules/tools/spotremove.c:319 modules/tools/stats.c:375
+#: modules/tools/spotremove.c:319 modules/tools/stats.c:378
 msgid "Options"
 msgstr "Параметры"
 
@@ -2758,7 +2759,7 @@
 msgstr "Экспортированные данные Burleigh (.txt, .bin)"
 
 #: modules/file/burleigh_exp.c:225 modules/file/burleigh_exp.c:266
-#: modules/file/nanoscope.c:1098 modules/file/omicron.c:395
+#: modules/file/nanoscope.c:1128 modules/file/omicron.c:397
 #: modules/file/shimadzu.c:404
 msgid "Missing colon in header line."
 msgstr "Пропущено двоеточие в строке заголовка."
@@ -3200,11 +3201,11 @@
 msgid "Representable"
 msgstr "Представление"
 
-#: modules/file/hdrimage.cc:478 modules/tools/stats.c:322
+#: modules/file/hdrimage.cc:478 modules/tools/stats.c:324
 msgid "Minimum:"
 msgstr "Минимум:"
 
-#: modules/file/hdrimage.cc:494 modules/tools/stats.c:323
+#: modules/file/hdrimage.cc:494 modules/tools/stats.c:325
 msgid "Maximum:"
 msgstr "Максимум:"
 
@@ -3223,39 +3224,39 @@
 msgstr "Тип данных OpenEXR %u неправилен или не поддерживается."
 
 #: modules/file/hdrimage.cc:1404 modules/file/hdrimage.cc:1413
-#: modules/file/pixmap.c:1531 modules/file/pixmap.c:1541
+#: modules/file/pixmap.c:1537 modules/file/pixmap.c:1547
 #, c-format
 msgid "libpng initialization error (in %s)"
 msgstr "ошибка инициализации libpng (в %s)"
 
-#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1601
+#: modules/file/hdrimage.cc:1422 modules/file/pixmap.c:1607
 msgid "libpng error occured"
 msgstr "Произошла ошибка libpng"
 
 #. TRANSLATORS: Dialog title; %s is PNG, TIFF, ...
-#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1027
+#: modules/file/hdrimage.cc:2146 modules/file/pixmap.c:1033
 #, c-format
 msgid "Import %s"
 msgstr "Импортировать %s"
 
-#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1054
+#: modules/file/hdrimage.cc:2173 modules/file/pixmap.c:1060
 msgid "Image Information"
 msgstr "Информация о изображении"
 
-#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1061
+#: modules/file/hdrimage.cc:2182 modules/file/pixmap.c:1067
 msgid "Horizontal size:"
 msgstr "Горизонтальный размер:"
 
 #: modules/file/hdrimage.cc:2182 modules/file/hdrimage.cc:2188
-#: modules/file/pixmap.c:1061 modules/file/pixmap.c:1067
+#: modules/file/pixmap.c:1067 modules/file/pixmap.c:1073
 msgid "px"
 msgstr "пикс."
 
-#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1067
+#: modules/file/hdrimage.cc:2188 modules/file/pixmap.c:1073
 msgid "Vertical size:"
 msgstr "Вертикальный размер:"
 
-#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1072
+#: modules/file/hdrimage.cc:2193 modules/file/pixmap.c:1078
 msgid "Channels:"
 msgstr "Каналы:"
 
@@ -3263,21 +3264,21 @@
 msgid "Pages:"
 msgstr "Страницы:"
 
-#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1103
+#: modules/file/hdrimage.cc:2226 modules/file/pixmap.c:1109
 #: modules/file/rawfile.c:623 modules/file/rawxyz.c:569
 #: modules/process/dimensions.h:465
 msgid "Physical Dimensions"
 msgstr "Физические размеры"
 
-#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1113
-#: modules/file/pixmap.c:3035 modules/file/rawfile.c:632
+#: modules/file/hdrimage.cc:2240 modules/file/pixmap.c:1119
+#: modules/file/pixmap.c:3070 modules/file/rawfile.c:632
 #: modules/process/crosscor.c:197 modules/process/deposit_synth.c:458
 #: modules/process/dimensions.h:471 modules/process/tip_blind.c:265
 msgid "_Width:"
 msgstr "_Ширина:"
 
 #: modules/file/hdrimage.cc:2266 modules/file/hdrimage.cc:2331
-#: modules/file/pixmap.c:1135 modules/file/pixmap.c:1190
+#: modules/file/pixmap.c:1141 modules/file/pixmap.c:1196
 #: modules/file/rawfile.c:655 modules/file/rawfile.c:711
 #: modules/process/calcoefs_new.c:384 modules/process/calcoefs_new.c:451
 #: modules/process/calcoefs_simple.c:390 modules/process/calcoefs_simple.c:457
@@ -3287,30 +3288,30 @@
 msgid "verb|Change"
 msgstr "Изменить"
 
-#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1148
+#: modules/file/hdrimage.cc:2281 modules/file/pixmap.c:1154
 #: modules/file/rawfile.c:668 modules/process/crosscor.c:203
 #: modules/process/dimensions.h:475
 msgid "H_eight:"
 msgstr "_Высота:"
 
-#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1155
+#: modules/file/hdrimage.cc:2290 modules/file/pixmap.c:1161
 #: modules/file/rawfile.c:675 modules/file/rawxyz.c:550
 msgid "Identical _measures"
 msgstr "Одинаковый _масштаб"
 
-#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1167
+#: modules/file/hdrimage.cc:2304 modules/file/pixmap.c:1173
 #: modules/file/rawfile.c:687
 msgid "_Z-scale (per sample unit):"
 msgstr "Масштаб _Z (на единицу дискретизации):"
 
-#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1417
+#: modules/file/hdrimage.cc:2493 modules/file/pixmap.c:1423
 #: modules/file/rawfile.c:1326 modules/process/calcoefs_new.c:776
 #: modules/process/calcoefs_simple.c:1189 modules/process/calcoefs_view.c:1393
 #: modules/process/calibrate.c:816 modules/process/dimensions.h:193
 msgid "Change Units"
 msgstr "Изменить единицы измерения"
 
-#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1431
+#: modules/file/hdrimage.cc:2507 modules/file/pixmap.c:1437
 #: modules/file/rawfile.c:1340 modules/process/calcoefs_new.c:789
 #: modules/process/calcoefs_simple.c:1202 modules/process/calcoefs_view.c:1406
 #: modules/process/calibrate.c:830 modules/process/dimensions.h:206
@@ -3748,7 +3749,7 @@
 msgid "Nanonis SXM files (.sxm)"
 msgstr "Файлы Nanonis SXM (.sxm)"
 
-#: modules/file/nanonis.c:163 modules/file/omicron.c:499
+#: modules/file/nanonis.c:163 modules/file/omicron.c:501
 #: modules/file/unisoku.c:265
 msgid "File header ended unexpectedly."
 msgstr "Заголовок файла неожиданно завершился."
@@ -3791,35 +3792,35 @@
 msgid "File Scan/Measure.xml is missing in the zip file."
 msgstr "Файл Scan/Measure.xml отсутствует в zip-архиве."
 
-#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:484
+#: modules/file/nanoobserver.c:545 modules/file/nanoscantech.c:488
 msgid "Unknown error"
 msgstr "Неизвестная ошибка"
 
-#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:489
+#: modules/file/nanoobserver.c:550 modules/file/nanoscantech.c:493
 msgid "End of file"
 msgstr "Конец файла"
 
-#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:491
+#: modules/file/nanoobserver.c:552 modules/file/nanoscantech.c:495
 msgid "End of list of files"
 msgstr "Конец списка файлов"
 
-#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:493
+#: modules/file/nanoobserver.c:554 modules/file/nanoscantech.c:497
 msgid "Parameter error"
 msgstr "Ошибка параметра"
 
-#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:495
+#: modules/file/nanoobserver.c:556 modules/file/nanoscantech.c:499
 msgid "Bad zip file"
 msgstr "Плохой файл zip"
 
-#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:497
+#: modules/file/nanoobserver.c:558 modules/file/nanoscantech.c:501
 msgid "Internal error"
 msgstr "Внутренняя ошибка"
 
-#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:499
+#: modules/file/nanoobserver.c:560 modules/file/nanoscantech.c:503
 msgid "CRC error"
 msgstr "Ошибка контрольной суммы"
 
-#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:502
+#: modules/file/nanoobserver.c:563 modules/file/nanoscantech.c:506
 #, c-format
 msgid "Minizip error while reading the zip file: %s."
 msgstr "Ошибка minizip при чтении zip-файла: %s."
@@ -3867,11 +3868,11 @@
 msgid "Nanoscope III files"
 msgstr "Файлы Nanoscope III"
 
-#: modules/file/nanoscope.c:243
+#: modules/file/nanoscope.c:244
 msgid "File is not a Nanoscope file, or it is a unknown subtype."
 msgstr "Файл не является файлом Nanoscope или неизвестного подтипа."
 
-#: modules/file/nanoscope.c:250
+#: modules/file/nanoscope.c:251
 msgid ""
 "File has been damaged by change of line endings, resulting in corruption of "
 "the binary part of the file.\n"
@@ -3890,16 +3891,16 @@
 "MS Windows, или при других способах передачи файла, которые используют "
 "платформо-независимое сохранение текста."
 
-#: modules/file/nanoscope.c:521 modules/file/nanoscope.c:537
+#: modules/file/nanoscope.c:525 modules/file/nanoscope.c:541
 msgid "Cannot parse `Scan size' field."
 msgstr "Не удаётся распознать поле `Scan size'."
 
-#: modules/file/nanoscope.c:1007 modules/file/nrrdfile.c:1013
+#: modules/file/nanoscope.c:1037 modules/file/nrrdfile.c:1013
 #, c-format
 msgid "Garbage after data sample #%u."
 msgstr "Мусор после элемента данных #%u."
 
-#: modules/file/nanoscope.c:1088
+#: modules/file/nanoscope.c:1118
 msgid "Truncated header line."
 msgstr "Обрезанная строка заголовка."
 
@@ -4034,40 +4035,53 @@
 msgid "Per-axis header field %s contains too few items."
 msgstr "Поле %s заголовка оси содержит слишком мало элементов."
 
-#: modules/file/nt-mdt.c:658
+#: modules/file/nt-mdt.c:694
 msgid "Imports NT-MDT data files."
 msgstr "Импорт файлов данных NT-MDT"
 
-#: modules/file/nt-mdt.c:671
+#: modules/file/nt-mdt.c:707
 msgid "NT-MDT files (.mdt)"
 msgstr "Файлы NT-MDT (.mdt)"
 
-#: modules/file/nt-mdt.c:1096
+#: modules/file/nt-mdt.c:1156
 msgid "Frame is too short for Frame Mode."
 msgstr "Фрейм слишком короткий для режима фреймов."
 
-#: modules/file/nt-mdt.c:1110
+#: modules/file/nt-mdt.c:1170
 msgid "Frame is too short for dots or data."
 msgstr "Фрейм слишком короткий для точек или данных."
 
-#: modules/file/nt-mdt.c:1369
+#: modules/file/nt-mdt.c:1429
 #, c-format
 msgid "End of file reached in frame header #%u."
 msgstr "Достигнут конец файла в заголовке фрейма #%u."
 
-#: modules/file/nt-mdt.c:1377
+#: modules/file/nt-mdt.c:1437
 #, c-format
 msgid "End of file reached in frame data #%u."
 msgstr "Достигнут конец файла в данных фрейма #%u."
 
-#: modules/file/nt-mdt.c:1412
+#: modules/file/nt-mdt.c:1472
 #, c-format
 msgid "Frame #%u is too short for scanned data header."
 msgstr "Фрейм #%u слишком короткий чтобы быть заголовком сканированных данных."
 
-#: modules/file/nt-mdt.c:2464
-msgid "Raman Image"
-msgstr "Изображение комбинационного рассеяния"
+#: modules/file/nt-mdt.c:2794 modules/tools/filter.c:209
+#: modules/tools/icolorange.c:396 modules/tools/linestats.c:154
+msgid "Maximum"
+msgstr "Максимум"
+
+#: modules/file/nt-mdt.c:2795
+msgid "Max. position"
+msgstr "Положение максимума"
+
+#: modules/file/nt-mdt.c:2796
+msgid "Average"
+msgstr "Среднее"
+
+#: modules/file/nt-mdt.c:2809
+msgid "Raman Image Import"
+msgstr "Импорт изображений КР"
 
 #: modules/file/oldmda.c:146
 msgid "Imports old NTMDT MDA Spectra files."
@@ -4107,11 +4121,11 @@
 msgid "Omicron files (.par + data)"
 msgstr "Файлы Omicron (.par + данные)"
 
-#: modules/file/omicron.c:401
+#: modules/file/omicron.c:403
 msgid "Header line starts with a colon."
 msgstr "Строка заголовка начинается с двоеточия."
 
-#: modules/file/omicron.c:508
+#: modules/file/omicron.c:510
 msgid "Channel information ended unexpectedly."
 msgstr "Информация о канале неожиданно закончилась."
 
@@ -4165,87 +4179,87 @@
 msgid "Truncated data in block %s"
 msgstr "Неполные данные в блоке %s"
 
-#: modules/file/pixmap.c:350
+#: modules/file/pixmap.c:356
 msgid "All channels"
 msgstr "Все каналы"
 
-#: modules/file/pixmap.c:351
+#: modules/file/pixmap.c:357
 msgid "Red"
 msgstr "Красный"
 
-#: modules/file/pixmap.c:352
+#: modules/file/pixmap.c:358
 msgid "Green"
 msgstr "Зеленый"
 
-#: modules/file/pixmap.c:353
+#: modules/file/pixmap.c:359
 msgid "Blue"
 msgstr "Синий"
 
-#: modules/file/pixmap.c:354
+#: modules/file/pixmap.c:360
 msgid "Value (max)"
 msgstr "Значение (макс.)"
 
-#: modules/file/pixmap.c:355
+#: modules/file/pixmap.c:361
 msgid "RGB sum"
 msgstr "Сумма RGB"
 
-#: modules/file/pixmap.c:356
+#: modules/file/pixmap.c:362
 msgid "Luma"
 msgstr "Яркость"
 
-#: modules/file/pixmap.c:357
+#: modules/file/pixmap.c:363
 msgid "Alpha"
 msgstr "Альфа"
 
-#: modules/file/pixmap.c:369
+#: modules/file/pixmap.c:375
 msgid "Portable Network Graphics (.png)"
 msgstr "Portable Network Graphics (.png)"
 
-#: modules/file/pixmap.c:375
+#: modules/file/pixmap.c:381
 msgid "JPEG (.jpeg,.jpg)"
 msgstr "JPEG (.jpeg,.jpg)"
 
-#: modules/file/pixmap.c:381
+#: modules/file/pixmap.c:387
 msgid "TIFF (.tiff,.tif)"
 msgstr "TIFF (.tiff,.tif)"
 
-#: modules/file/pixmap.c:387
+#: modules/file/pixmap.c:393
 msgid "Portable Pixmap (.ppm,.pnm)"
 msgstr "Portable Pixmap (.ppm,.pnm)"
 
-#: modules/file/pixmap.c:393
+#: modules/file/pixmap.c:399
 msgid "Windows or OS2 Bitmap (.bmp)"
 msgstr "Bitmap из Windows или OS2 (.bmp)"
 
-#: modules/file/pixmap.c:399
+#: modules/file/pixmap.c:405
 msgid "TARGA (.tga,.targa)"
 msgstr "TARGA (.tga,.targa)"
 
-#: modules/file/pixmap.c:412
+#: modules/file/pixmap.c:418
 msgid "Graphics Interchange Format (.gif)"
 msgstr "Graphics Interchange Format (.gif)"
 
-#: modules/file/pixmap.c:416
+#: modules/file/pixmap.c:422
 msgid "JPEG 2000 (.jpx)"
 msgstr "JPEG 2000 (.jpx)"
 
-#: modules/file/pixmap.c:420
+#: modules/file/pixmap.c:426
 msgid "PCX (.pcx)"
 msgstr "PCX (.pcx)"
 
-#: modules/file/pixmap.c:424
+#: modules/file/pixmap.c:430
 msgid "X Pixmap (.xpm)"
 msgstr "X Pixmap (.xpm)"
 
-#: modules/file/pixmap.c:428
+#: modules/file/pixmap.c:434
 msgid "Sun raster image (.ras)"
 msgstr "Растровое изображение Sun (.ras)"
 
-#: modules/file/pixmap.c:432
+#: modules/file/pixmap.c:438
 msgid "Apple icon (.icns)"
 msgstr "Иконка Apple (.icns)"
 
-#: modules/file/pixmap.c:456
+#: modules/file/pixmap.c:462
 msgid ""
 "Renders data into pixmap images and imports data from pixmap images. It "
 "supports the following image formats for export: PNG, JPEG, TIFF, PPM, BMP, "
@@ -4256,68 +4270,68 @@
 "JPEG, TIFF, PPM, BMP, TARGA. Поддержка импорта полагается на GDK и, "
 "вследствие этого, может зависеть от варианта установки."
 
-#: modules/file/pixmap.c:740
+#: modules/file/pixmap.c:746
 #, c-format
 msgid "Pixmap has not registered file type `%s'."
 msgstr ""
 "Модуль импорта изображений не имеет зарегистрированного типа файла `%s'."
 
-#: modules/file/pixmap.c:754
+#: modules/file/pixmap.c:760
 #, c-format
 msgid "Cannot get pixbuf loader: %s."
 msgstr "Не удаётся получить загрузчик pixbuf: %s."
 
-#: modules/file/pixmap.c:766 modules/file/pixmap.c:778
+#: modules/file/pixmap.c:772 modules/file/pixmap.c:784
 #, c-format
 msgid "Pixbuf loader refused data: %s."
 msgstr "Загрузчик pixbuf не принял данные: %s."
 
-#: modules/file/pixmap.c:1200
+#: modules/file/pixmap.c:1206
 msgid ""
 "Warning: Colorful images cannot be reliably mapped to meaningful values."
 msgstr ""
 "Предупреждение: цветные изображения не могут быть надёжно отображены в "
 "значащие что-либо данные."
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "verb|Use"
 msgstr "Использовать"
 
-#: modules/file/pixmap.c:1219
+#: modules/file/pixmap.c:1225
 msgid "as data"
 msgstr "как данные"
 
-#: modules/file/pixmap.c:1688 modules/file/pixmap.c:1716
+#: modules/file/pixmap.c:1694 modules/file/pixmap.c:1722
 #, c-format
 msgid "Pixbuf save failed: %s."
 msgstr "Сохранение pixbuf закончилось неудачно: %s."
 
-#: modules/file/pixmap.c:2126
+#: modules/file/pixmap.c:2132
 msgid "Image is too large to be stored as TARGA."
 msgstr "Изображение слишком велико чтобы сохранить его в формате TARGA."
 
-#: modules/file/pixmap.c:2207
+#: modules/file/pixmap.c:2213
 msgid "Data must be displayed in a window for pixmap export."
 msgstr "Данные должны отображаться в окне для экспорта изображения."
 
-#: modules/file/pixmap.c:2927
+#: modules/file/pixmap.c:2936
 msgid "Change Inset Color"
 msgstr "Изменить цвет отрезка"
 
-#: modules/file/pixmap.c:2986
+#: modules/file/pixmap.c:3021
 #, c-format
 msgid "Export %s"
 msgstr "Экспорт %s"
 
-#: modules/file/pixmap.c:3017
+#: modules/file/pixmap.c:3052
 msgid "Scaling"
 msgstr "Масштабирование"
 
-#: modules/file/pixmap.c:3026
+#: modules/file/pixmap.c:3061
 msgid "_Zoom:"
 msgstr "_Увеличение:"
 
-#: modules/file/pixmap.c:3044 modules/process/col_synth.c:400
+#: modules/file/pixmap.c:3079 modules/process/col_synth.c:400
 #: modules/process/grain_mark.c:309 modules/process/grain_rem_threshold.c:280
 #: modules/process/obj_synth.c:573 modules/process/pat_synth.c:889
 #: modules/process/pat_synth.c:1190 modules/process/pat_synth.c:1525
@@ -4325,91 +4339,99 @@
 msgid "_Height:"
 msgstr "_Высота:"
 
-#: modules/file/pixmap.c:3052
+#: modules/file/pixmap.c:3087
 msgid "Font:"
 msgstr "Шрифт:"
 
-#: modules/file/pixmap.c:3067
+#: modules/file/pixmap.c:3102
 msgid "Scale text _proportionally"
 msgstr "_Пропорциональный масштаб текста"
 
-#: modules/file/pixmap.c:3082
+#: modules/file/pixmap.c:3117
 msgid "_Font size:"
 msgstr "_Размер шрифта:"
 
-#: modules/file/pixmap.c:3096
+#: modules/file/pixmap.c:3131
 msgid "Draw _mask"
 msgstr "Рисовать _маску"
 
-#: modules/file/pixmap.c:3105
+#: modules/file/pixmap.c:3140
 msgid "Draw _selection"
 msgstr "Рисовать в_ыбранную область"
 
-#: modules/file/pixmap.c:3121
+#: modules/file/pixmap.c:3156
 msgid "Grayscale Mode"
 msgstr "Градации серого"
 
-#: modules/file/pixmap.c:3125
+#: modules/file/pixmap.c:3160
 msgid "Export as 1_6 bit grayscale"
 msgstr "Экспортировать как 1_6битное серое"
 
-#: modules/file/pixmap.c:3151
+#: modules/file/pixmap.c:3186
 msgid "Lateral Scale"
 msgstr "Горизонтальный масштаб:"
 
-#: modules/file/pixmap.c:3158 modules/file/pixmap.c:3253
+#: modules/file/pixmap.c:3193 modules/file/pixmap.c:3308
 msgid "ruler|_None"
 msgstr "_Нет"
 
-#: modules/file/pixmap.c:3159
+#: modules/file/pixmap.c:3194
 msgid "_Rulers"
 msgstr "Направл_яющие"
 
-#: modules/file/pixmap.c:3160
+#: modules/file/pixmap.c:3195
 msgid "_Inset scale bar"
 msgstr "В_ложенный масштабный отрезок"
 
-#: modules/file/pixmap.c:3165
+#: modules/file/pixmap.c:3200
 msgid "Color:"
 msgstr "Цвет:"
 
-#: modules/file/pixmap.c:3181 modules/process/immerse.c:323
+#: modules/file/pixmap.c:3216 modules/process/immerse.c:323
 msgid "Position:"
 msgstr "Расположение:"
 
-#: modules/file/pixmap.c:3186
+#: modules/file/pixmap.c:3221
 msgid "left"
 msgstr "слева"
 
-#: modules/file/pixmap.c:3190
+#: modules/file/pixmap.c:3225
 msgid "center"
 msgstr "по центру"
 
-#: modules/file/pixmap.c:3194
+#: modules/file/pixmap.c:3229
 msgid "right"
 msgstr "справа"
 
-#: modules/file/pixmap.c:3199
+#: modules/file/pixmap.c:3234
 msgid "top"
 msgstr "верх"
 
-#: modules/file/pixmap.c:3211
+#: modules/file/pixmap.c:3246
 msgid "bottom"
 msgstr "низ"
 
-#: modules/file/pixmap.c:3222 modules/process/lno_synth.c:1066
+#: modules/file/pixmap.c:3257 modules/process/lno_synth.c:1066
 msgid "_Length:"
 msgstr "_Длина:"
 
-#: modules/file/pixmap.c:3238
+#: modules/file/pixmap.c:3273
 msgid "_Auto"
 msgstr "_Авто"
 
-#: modules/file/pixmap.c:3246
+#: modules/file/pixmap.c:3281
+msgid "Draw _ticks"
+msgstr "Рисовать _засечки"
+
+#: modules/file/pixmap.c:3291
+msgid "Draw _label"
+msgstr "Рисовать подпис_ь"
+
+#: modules/file/pixmap.c:3301
 msgid "Value Scale"
 msgstr "Масштаб значений"
 
-#: modules/file/pixmap.c:3254
+#: modules/file/pixmap.c:3309
 msgid "_False color ruler"
 msgstr "Л_инейка псевдоцвета"
 
@@ -4585,7 +4607,7 @@
 #: modules/process/mark_with.c:211 modules/process/polydistort.c:214
 #: modules/process/scars.c:466 modules/process/synth.h:479
 #: modules/process/tip_model.c:167 modules/tools/linestats.c:420
-#: modules/tools/sfunctions.c:475 modules/tools/stats.c:432
+#: modules/tools/sfunctions.c:475 modules/tools/stats.c:435
 msgid "_Update"
 msgstr "О_бновить"
 
@@ -5109,7 +5131,7 @@
 msgid "Seiko files (.xqb, .xqd, .xqt)"
 msgstr "Файлы Seiko (.xqb, .xqd, .xqt)"
 
-#: modules/file/seiko.c:239
+#: modules/file/seiko.c:251
 msgid ""
 "Cannot determine scan dimensions; it seems non-square with an unknown side "
 "ratio."
@@ -5340,11 +5362,11 @@
 msgid "Surf files (.sur)"
 msgstr "Файлы Surf (.sur)"
 
-#: modules/file/tiaser.c:166
+#: modules/file/tiaser.c:172
 msgid "Imports FEI Tecnai imaging and analysis (former Emispec) files."
 msgstr "Импортирует файлы FEI Tecnai imaging and analysis (бывший Emispec)."
 
-#: modules/file/tiaser.c:179
+#: modules/file/tiaser.c:185
 msgid "FEI TIA (Emispec) data"
 msgstr "Данные FEI TIA (Emispec)"
 
@@ -5528,10 +5550,10 @@
 #: modules/graph/graph_cd.c:692 modules/graph/graph_fdfit.c:780
 #: modules/graph/graph_fit.c:804 modules/tools/grainmeasure.c:215
 #: modules/tools/readvalue.c:576 modules/tools/readvalue.c:577
-#: modules/tools/roughness.c:957 modules/tools/stats.c:661
-#: modules/tools/stats.c:672 modules/tools/stats.c:673
-#: modules/tools/stats.c:1050 modules/tools/stats.c:1057
-#: modules/tools/stats.c:1059
+#: modules/tools/roughness.c:957 modules/tools/stats.c:666
+#: modules/tools/stats.c:677 modules/tools/stats.c:678
+#: modules/tools/stats.c:1054 modules/tools/stats.c:1061
+#: modules/tools/stats.c:1063
 msgid "N.A."
 msgstr "недоступно"
 
@@ -5965,7 +5987,7 @@
 msgid "_Expression:"
 msgstr "_Выражение:"
 
-#: modules/process/arithmetic.c:294
+#: modules/process/arithmetic.c:294 modules/process/neural.c:220
 msgid "Operands"
 msgstr "Операнды"
 
@@ -6246,7 +6268,7 @@
 msgstr "Простая карта ошибок"
 
 #: modules/process/calcoefs_simple.c:342 modules/process/calcoefs_stage.c:149
-#: modules/process/neural.c:225 modules/process/superresolution.c:159
+#: modules/process/superresolution.c:159
 msgid "Operands:"
 msgstr "Операнды:"
 
@@ -6815,20 +6837,21 @@
 msgstr "Строить _график"
 
 #: modules/process/curvature.c:684 modules/process/facet-level.c:297
-#: modules/process/level.c:267 modules/process/polylevel.c:495
-#: modules/tools/sfunctions.c:457 modules/tools/stats.c:362
+#: modules/process/level.c:269 modules/process/linecorrect.c:288
+#: modules/process/polylevel.c:495 modules/tools/sfunctions.c:457
+#: modules/tools/stats.c:365
 msgid "Masking Mode"
 msgstr "Режим использования маски"
 
-#: modules/process/curvature.c:754 modules/process/grain_dist.c:827
+#: modules/process/curvature.c:754 modules/process/grain_dist.c:835
 #: modules/tools/distance.c:227 modules/tools/roughness.c:824
-#: modules/tools/stats.c:423
+#: modules/tools/stats.c:426
 msgid "Save table to a file"
 msgstr "Сохранить таблицу в файл"
 
-#: modules/process/curvature.c:759 modules/process/grain_dist.c:832
+#: modules/process/curvature.c:759 modules/process/grain_dist.c:840
 #: modules/tools/distance.c:232 modules/tools/roughness.c:829
-#: modules/tools/stats.c:428
+#: modules/tools/stats.c:431
 msgid "Copy table to clipboard"
 msgstr "Скопировать таблицу в буфер обмена"
 
@@ -7952,42 +7975,46 @@
 msgid "Data channel:"
 msgstr "Канал данных:"
 
-#: modules/process/grain_dist.c:734 modules/process/grain_dist.c:806
+#: modules/process/grain_dist.c:736 modules/process/grain_dist.c:814
 msgid "Grain Statistics"
 msgstr "Статистика зёрен"
 
-#: modules/process/grain_dist.c:746
+#: modules/process/grain_dist.c:748
 msgid "Number of grains:"
 msgstr "Число зёрен:"
 
-#: modules/process/grain_dist.c:755
+#: modules/process/grain_dist.c:757
 msgid "Total projected area (abs.):"
 msgstr "Общая площадь проекции (абс.):"
 
-#: modules/process/grain_dist.c:759
+#: modules/process/grain_dist.c:761
 msgid "Total projected area (rel.):"
 msgstr "Общая площадь проекции (отн.):"
 
-#: modules/process/grain_dist.c:765
+#: modules/process/grain_dist.c:767
 msgid "Mean grain area:"
 msgstr "Средняя площадь зерна:"
 
-#: modules/process/grain_dist.c:771
+#: modules/process/grain_dist.c:773
 msgid "Mean grain size:"
 msgstr "Средний размер зерна:"
 
-#: modules/process/grain_dist.c:780
+#: modules/process/grain_dist.c:782
 msgid "Total grain volume (zero):"
 msgstr "Общий объём зерна (нуль):"
 
-#: modules/process/grain_dist.c:786
+#: modules/process/grain_dist.c:788
 msgid "Total grain volume (minimum):"
 msgstr "Общий объём зерна (минимум):"
 
-#: modules/process/grain_dist.c:792
+#: modules/process/grain_dist.c:794
 msgid "Total grain volume (laplacian):"
 msgstr "Общий объём зерна (по Лапласу):"
 
+#: modules/process/grain_dist.c:800
+msgid "Total projected boundary length:"
+msgstr "Общая длина проекции границы:"
+
 #: modules/process/grain_edge.c:106
 msgid "Marks grains by edge detection method."
 msgstr "Помечает зёрна алгоритмом нахождения краёв."
@@ -8652,52 +8679,56 @@
 msgid "E_xtract background"
 msgstr "_Извлечь фон"
 
-#: modules/process/linecorrect.c:64
+#: modules/process/linecorrect.c:88
 msgid "Corrects line defects (mostly experimental algorithms)."
 msgstr "Исправление дефектов линий (большая часть алгоритмов экспериментальна)"
 
-#: modules/process/linecorrect.c:78
+#: modules/process/linecorrect.c:102
 msgid "/_Correct Data/M_odus Line Correction"
-msgstr "/Исправить _данные/Линейная коррекция по м_оде"
+msgstr "/Исправить _данные/Коррекция линий по м_оде"
 
-#: modules/process/linecorrect.c:82
+#: modules/process/linecorrect.c:106
 msgid "Correct lines by matching height modus"
 msgstr "Исправить линии выравниванием моды высоты"
 
-#: modules/process/linecorrect.c:85
+#: modules/process/linecorrect.c:109
 msgid "/_Correct Data/M_edian Line Correction"
-msgstr "/Исправить _данные/Линейная коррекция по ср_единному"
+msgstr "/Исправить _данные/Коррекция линий по ср_единному"
 
-#: modules/process/linecorrect.c:89
+#: modules/process/linecorrect.c:113
 msgid "Correct lines by matching height median"
 msgstr "Корректировать линии выравниванием срединного значения высоты"
 
-#: modules/process/linecorrect.c:92
+#: modules/process/linecorrect.c:116
 msgid "/_Correct Data/Median Di_fference Line Correction"
-msgstr "/Исправить _данные/Линейная коррекция по срединному р_азности"
+msgstr "/Исправить _данные/Коррекция линий по срединному р_азности"
 
-#: modules/process/linecorrect.c:96
+#: modules/process/linecorrect.c:120
 msgid "Correct lines by zeroing median of differences between neighbor lines"
 msgstr ""
 "Исправляет линии путём обнуления срединного значения разности между "
 "соседними линиями"
 
-#: modules/process/linecorrect.c:100
+#: modules/process/linecorrect.c:124
 msgid "/_Correct Data/Ma_tch Line Correction"
-msgstr "/Исправить _данные/_Линейная коррекция подбором"
+msgstr "/Исправить _данные/Коррекция _линий подбором"
 
-#: modules/process/linecorrect.c:104
+#: modules/process/linecorrect.c:128
 msgid "Correct lines by matching flat segments"
 msgstr "Исправить линии выравниванием плоских сегментов"
 
-#: modules/process/linecorrect.c:107
+#: modules/process/linecorrect.c:131
 msgid "/_Correct Data/Ste_p Line Correction"
 msgstr "/Исправить _данные/Линейная коррекция _ступенек"
 
-#: modules/process/linecorrect.c:111
+#: modules/process/linecorrect.c:135
 msgid "Correct steps in lines"
 msgstr "Исправить ступеньки в линиях"
 
+#: modules/process/linecorrect.c:198
+msgid "Median Line Correction"
+msgstr "Коррекция линий по срединному"
+
 #: modules/process/lno_synth.c:249 modules/process/noise_synth.c:183
 msgid "distribution|Gaussian"
 msgstr "Гауссово"
@@ -9113,71 +9144,83 @@
 msgid "Immersed detail data"
 msgstr "Данные встроенного изображения с лучшим разрешением"
 
-#: modules/process/neural.c:147
+#: modules/process/neural.c:144
 msgid "Neural network SPM data processing"
 msgstr "Обработка данных СЗМ на основе нейросетей"
 
-#: modules/process/neural.c:161
-msgid "/M_ultidata/_Neural network..."
+#: modules/process/neural.c:158
+msgid "/M_ultidata/_Neural Network..."
 msgstr "/М_ножественные данные/_Нейросеть..."
 
-#: modules/process/neural.c:165
+#: modules/process/neural.c:162
 msgid "Neural network AFM data processing"
 msgstr "Обработка данных АСМ на основе нейросетей"
 
-#: modules/process/neural.c:207
-msgid "Neural network"
+#: modules/process/neural.c:202
+msgid "Neural Network"
 msgstr "Нейросеть"
 
+#: modules/process/neural.c:227
+msgid "Training _model:"
+msgstr "_Модель обучения:"
+
 #: modules/process/neural.c:233
-msgid "Training model:"
-msgstr "Модель обучения:"
+msgid "Training _signal:"
+msgstr "_Сигнал обучения:"
+
+#: modules/process/neural.c:239
+msgid "Res_ult model:"
+msgstr "Модель рез_ультата:"
+
+#: modules/process/neural.c:244 modules/tools/stats.c:401
+msgid "Parameters"
+msgstr "Параметры"
 
-#: modules/process/neural.c:240
-msgid "Training signal:"
-msgstr "Сигнал обучения:"
-
-#: modules/process/neural.c:247
-msgid "Result model:"
-msgstr "Модель результата:"
-
-#: modules/process/neural.c:254
-msgid "Window width:"
-msgstr "Ширина окна:"
-
-#: modules/process/neural.c:260
-msgid "Window height:"
-msgstr "Высота окна:"
-
-#: modules/process/neural.c:266
-msgid "Training steps:"
-msgstr "Шагов тренировки:"
-
-#: modules/process/neural.c:272
-msgid "Hidden nodes:"
-msgstr "Скрытые узлы:"
+#: modules/process/neural.c:250
+msgid "Window _width:"
+msgstr "_Ширина окна:"
+
+#: modules/process/neural.c:256
+msgid "Window h_eight:"
+msgstr "_Высота окна:"
+
+#: modules/process/neural.c:262
+msgid "_Training steps:"
+msgstr "Шагов _тренировки:"
+
+#: modules/process/neural.c:268
+msgid "_Hidden nodes:"
+msgstr "Скр_ытые узлы:"
 
-#: modules/process/neural.c:364
+#: modules/process/neural.c:360
 msgid "Data not compatible"
 msgstr "данные несовместимы"
 
-#: modules/process/neural.c:389 modules/process/pid.c:334
+#: modules/process/neural.c:388 modules/process/pid.c:334
 msgid "Starting..."
 msgstr "Запускается..."
 
-#: modules/process/neural.c:491
+#: modules/process/neural.c:409
+msgid "Training..."
+msgstr "Тренировка..."
+
+#: modules/process/neural.c:451
+msgid "Evaluating..."
+msgstr "Расчёт..."
+
+#: modules/process/neural.c:493
 msgid "Evaluated signal"
 msgstr "Рассчитанный сигнал"
 
-#: modules/process/neural.c:497
+#: modules/process/neural.c:499
 msgid "Training error"
 msgstr "Ошибка обучения"
 
-#: modules/process/neural.c:498
+#: modules/process/neural.c:500
 msgid "error"
 msgstr "ошибка"
 
-#: modules/process/neural.c:504
+#: modules/process/neural.c:506
 msgid "NN training error"
 msgstr "Ошибка обучения нейросети"
 
@@ -9238,7 +9281,7 @@
 msgstr "Гауссианы"
 
 #: modules/process/obj_synth.c:284
-msgid "Dougnuts"
+msgid "Doughnuts"
 msgstr "Бублики"
 
 #: modules/process/obj_synth.c:290
@@ -10157,59 +10200,59 @@
 msgid "Denoised"
 msgstr "Без шума"
 
-#: modules/pygwy/pygwy-console.c:53
+#: modules/pygwy/pygwy-console.c:54
 msgid "/Pygwy Console"
 msgstr "/Консоль Pygwy"
 
-#: modules/pygwy/pygwy-console.c:57
+#: modules/pygwy/pygwy-console.c:58
 msgid "Python wrapper console"
 msgstr "Командная строка оболочки Python"
 
-#: modules/pygwy/pygwy-console.c:155
+#: modules/pygwy/pygwy-console.c:156
 msgid ">>> Running file content of below textfield\n"
 msgstr ">>> Запускается содержимое файла из нижнего текстового поля\n"
 
-#: modules/pygwy/pygwy-console.c:180
+#: modules/pygwy/pygwy-console.c:181
 msgid "Open Python script"
 msgstr "Открыть скрипт Python"
 
-#: modules/pygwy/pygwy-console.c:244
+#: modules/pygwy/pygwy-console.c:245
 msgid "Save Script as"
 msgstr "Сохранить скрипт как"
 
-#: modules/pygwy/pygwy-console.c:283
+#: modules/pygwy/pygwy-console.c:284
 msgid "Pygwy Console"
 msgstr "Консоль Pygwy"
 
-#: modules/pygwy/pygwy-console.c:295
+#: modules/pygwy/pygwy-console.c:296
 msgid "Open script in Python language (Ctrl-O)"
 msgstr "Открыть скрипт на языке Python (Ctrl-O)"
 
-#: modules/pygwy/pygwy-console.c:297
+#: modules/pygwy/pygwy-console.c:298
 msgid "Save script (Ctrl-S)"
 msgstr "Сохранить сценарий (Ctrl-S)"
 
-#: modules/pygwy/pygwy-console.c:299
+#: modules/pygwy/pygwy-console.c:300
 msgid "Execute script (Ctrl-E)"
 msgstr "Выполнить сценарий (Ctrl-E)"
 
-#: modules/pygwy/pygwy-console.c:377
+#: modules/pygwy/pygwy-console.c:378
 msgid "Command"
 msgstr "Команда"
 
-#: pygwy.c:91
+#: pygwy.c:99
 msgid "Pygwy, the Gwyddion Python wrapper."
 msgstr "Pygwy, оболочка Python в Gwyddion."
 
-#: pygwy.c:443
+#: pygwy.c:520
 msgid "Function written in Python"
 msgstr "Функция на языке Python"
 
-#: pygwy.c:489
+#: pygwy.c:566
 msgid "Graph function written in Python"
 msgstr "Графическая функция на языке Python"
 
-#: pygwy.c:899
+#: pygwy.c:976
 #, c-format
 msgid ""
 "Pygwy plugin: %s (%s)\n"
@@ -10266,11 +10309,6 @@
 msgid "Conservative denoise"
 msgstr "Выборочная уборка шума"
 
-#: modules/tools/filter.c:209 modules/tools/icolorange.c:396
-#: modules/tools/linestats.c:154
-msgid "Maximum"
-msgstr "Максимум"
-
 #: modules/tools/filter.c:210
 msgid "Kuwahara"
 msgstr "Кувахара"
@@ -10505,7 +10543,7 @@
 msgstr "Параметры"
 
 #: modules/tools/linestats.c:362 modules/tools/sfunctions.c:392
-#: modules/tools/stats.c:381
+#: modules/tools/stats.c:384
 msgid "_Instant updates"
 msgstr "_Обновлять сразу"
 
@@ -10947,12 +10985,12 @@
 msgid "Roughness Parameters"
 msgstr "Параметры шероховатости"
 
-#: modules/tools/roughness.c:2041 modules/tools/stats.c:999
+#: modules/tools/roughness.c:2041 modules/tools/stats.c:1002
 #, c-format
 msgid "File:              %s\n"
 msgstr "Файл:              %s\n"
 
-#: modules/tools/roughness.c:2045 modules/tools/stats.c:1003
+#: modules/tools/roughness.c:2045 modules/tools/stats.c:1006
 #, c-format
 msgid "Data channel:      %s\n"
 msgstr "Канал данных:      %s\n"
@@ -11124,75 +11162,75 @@
 msgid "Fractal interpolation"
 msgstr "Фрактальная интерполяция"
 
-#: modules/tools/stats.c:180
+#: modules/tools/stats.c:182
 msgid "Statistics tool."
 msgstr "Инструмент статистики."
 
-#: modules/tools/stats.c:217 modules/tools/stats.c:993
+#: modules/tools/stats.c:219 modules/tools/stats.c:996
 msgid "Statistical Quantities"
 msgstr "Статистические величины"
 
-#: modules/tools/stats.c:218
+#: modules/tools/stats.c:220
 msgid "Statistical quantities"
 msgstr "Статистические величины"
 
-#: modules/tools/stats.c:321
+#: modules/tools/stats.c:323
 msgid "Average value:"
 msgstr "Среднее значение:"
 
-#: modules/tools/stats.c:324
+#: modules/tools/stats.c:326
 msgid "Median:"
 msgstr "Срединное значение:"
 
-#: modules/tools/stats.c:325
+#: modules/tools/stats.c:327
 msgid "Ra (Sa):"
 msgstr "Ra (Sa):"
 
-#: modules/tools/stats.c:326
+#: modules/tools/stats.c:328
 msgid "Rms (Sq):"
 msgstr "Rms (Sq):"
 
-#: modules/tools/stats.c:327
+#: modules/tools/stats.c:329
+msgid "Rms (grain-wise):"
+msgstr "Ср. квадр. зёрен:"
+
+#: modules/tools/stats.c:330
 msgid "Skew:"
 msgstr "Асимметрия:"
 
-#: modules/tools/stats.c:328
+#: modules/tools/stats.c:331
 msgid "Kurtosis:"
 msgstr "Эксцесс:"
 
-#: modules/tools/stats.c:329
+#: modules/tools/stats.c:332
 msgid "Surface area:"
 msgstr "Площадь поверхности:"
 
-#: modules/tools/stats.c:330
+#: modules/tools/stats.c:333
 msgid "Projected area:"
 msgstr "Площадь проекции:"
 
-#: modules/tools/stats.c:331
+#: modules/tools/stats.c:334
 msgid "Inclination θ:"
 msgstr "Наклон θ:"
 
-#: modules/tools/stats.c:332
+#: modules/tools/stats.c:335
 msgid "Inclination φ:"
 msgstr "Наклон φ:"
 
-#: modules/tools/stats.c:398
-msgid "Parameters"
-msgstr "Параметры"
-
-#: modules/tools/stats.c:929
+#: modules/tools/stats.c:932
 msgid "Save Statistical Quantities"
 msgstr "Сохранять статистические величины"
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "Yes"
 msgstr "Да"
 
-#: modules/tools/stats.c:1025
+#: modules/tools/stats.c:1028
 msgid "No"
 msgstr "Нет"
 
-#: modules/tools/stats.c:1062
+#: modules/tools/stats.c:1066
 #, c-format
 msgid ""
 "Selected area:     %s × %s at (%s, %s) px\n"
@@ -11205,6 +11243,7 @@
 "Median:            %s\n"
 "Ra:                %s\n"
 "Rms:               %s\n"
+"Rms (grain-wise):  %s\n"
 "Skew:              %s\n"
 "Kurtosis:          %s\n"
 "Surface area:      %s\n"
@@ -11222,6 +11261,7 @@
 "Срединное:            %s\n"
 "Ra:                %s\n"
 "Rms:               %s\n"
+"Rms (зёрен):  %s\n"
 "Асимметрия:              %s\n"
 "Эксцесс:          %s\n"
 "Площадь поверхности:      %s\n"
diff -Nru gwyddion-2.28/README gwyddion-2.29/README
--- gwyddion-2.28/README	2007-10-18 14:06:41.000000000 +0100
+++ gwyddion-2.29/README	2012-07-19 22:17:58.000000000 +0100
@@ -5,8 +5,8 @@
 Web site:         http://gwyddion.net/
 Bug reports:      klapetek@gwyddion.net
 Sourceforge page: http://sourceforge.net/projects/gwyddion/
-Subversion:       https://gwyddion.svn.sourceforge.net/svnroot/gwyddion/
-SVN on-line view: http://gwyddion.svn.sourceforge.net/viewvc/gwyddion/trunk/
+Subversion (RO):  http://svn.code.sf.net/p/gwyddion/code/trunk/gwyddion
+SVN on-line view: https://sourceforge.net/p/gwyddion/code/HEAD/tree/
 Mailing lists:    gwyddion-users@lists.sourceforge.net
                   (http://lists.sourceforge.net/lists/listinfo/gwyddion-users)
                   gwyddion-devel@lists.sourceforge.net
diff -Nru gwyddion-2.28/TODO gwyddion-2.29/TODO
--- gwyddion-2.28/TODO	2011-12-17 11:10:42.000000000 +0000
+++ gwyddion-2.29/TODO	2012-07-19 22:19:49.000000000 +0100
@@ -23,13 +23,13 @@
   module) and upload them
   docbase=$HOME/Projects/Gwyddion/gwyddion/devel-docs ./gendoc.sh
 - tag SVN:
-  svn copy https://gwyddion.svn.sourceforge.net/svnroot/gwyddion/trunk/gwyddion https://gwyddion.svn.sourceforge.net/svnroot/gwyddion/tags/gwyddion-0.0
+  svn copy svn+ssh://yeti-dn@svn.code.sf.net/p/gwyddion/code/trunk/gwyddion svn+ssh://yeti-dn@svn.code.sf.net/p/gwyddion/code/tags/gwyddion-2.29
 - build and upload packages
 - sign packages and upload signatures
-  DISPLAY= gpg2 -u yeti@gwyddion.net -b gwyddion-2.26.tar.gz
+  gpg2 -u yeti@gwyddion.net -b gwyddion-2.28.tar.gz
 - update gwyddion main page
 - publish files on Freshmeat, SourceForge
-  rsync --progress -e ssh gwyddion-2.26.tar.xz yeti-dn,gwyddion@frs.sourceforge.net:/home/frs/project/g/gw/gwyddion/gwyddion/2.26/
+  rsync --progress -e ssh gwyddion-2.28.tar.xz yeti-dn@frs.sourceforge.net:/home/frs/project/gwyddion/gwyddion/2.28/
 - send e-mail to the mailing lists
 - update the list of supported file formats on gwyddion.net and in the user
   guide (at least occasionally)